Full optimization cycle: Protocol (15 files): - 4-layer SSOT architecture for agent prompts & skills - Anti-Corruption Protocol consolidated from 5 duplicates - Tag-to-tier permissiveness matrix (all @tags allowed at all tiers) Axiom config: - complexity_rules: all 22+ tags available on C1-C5 - contract_type_overrides: removed (was narrowing per-type) - 18 new tags added, LAYER enum expanded (Infra, Frontend, Atom, etc.) - RELATION predicates expanded (USES, CONTAINS, BELONGS_TO, etc.) Code fixes: - 2216 @TAG: normalized to @TAG (colon→space) - 518 [DEF] blocks migrated to #region/#endregion (37 files) - VERIFIES→BINDS_TO, :Class/:Function suffixes removed, paths→IDs - 1173-line _external_stubs.py deleted (EXT: handled natively) - Batch EXT: reference audit (240 targets: 132 external, 99 internal, 9 fix) - QA regression check: 0 regressions across all checks Infrastructure: - DuckDB rebuild stabilized (appender API, INSERT OR IGNORE) - Anchor regex fix (parent-child BINDS_TO now resolves) - EXT:*/DTO:/NEED_CONTEXT: regex fixed in validator - 34MB Doxygen API portal (3194 contract pages)
62 lines
2.2 KiB
Python
62 lines
2.2 KiB
Python
# #region TranslatePlugin [C:2] [TYPE Module] [SEMANTICS clickhouse, translate, sql, dashboard, dialect]
|
|
# @BRIEF TranslatePlugin skeleton for cross-dialect SQL and dashboard translation.
|
|
# @LAYER Domain
|
|
# @RELATION INHERITS -> [PluginBase]
|
|
# @RATIONALE Separate plugin avoids bloating LLMAnalysisPlugin beyond fractal limit (<400 lines).
|
|
# @REJECTED Extending LLMAnalysisPlugin would conflate two distinct feature domains.
|
|
|
|
from typing import Any
|
|
|
|
from ...core.plugin_base import PluginBase
|
|
|
|
|
|
# #region TranslatePlugin [TYPE Class]
|
|
# @BRIEF Plugin for translating SQL queries and dashboard definitions across database dialects.
|
|
# @RELATION IMPLEMENTS -> [PluginBase]
|
|
class TranslatePlugin(PluginBase):
|
|
@property
|
|
def id(self) -> str:
|
|
return "translate"
|
|
|
|
@property
|
|
def name(self) -> str:
|
|
return "LLM Table Translation"
|
|
|
|
@property
|
|
def description(self) -> str:
|
|
return "Cross-dialect SQL and dashboard translation using LLMs."
|
|
|
|
@property
|
|
def version(self) -> str:
|
|
return "1.0.0"
|
|
|
|
def get_schema(self) -> dict[str, Any]:
|
|
return {
|
|
"type": "object",
|
|
"properties": {
|
|
"source_dialect": {
|
|
"type": "string",
|
|
"title": "Source Dialect",
|
|
"description": "Source database dialect (e.g. PostgreSQL, ClickHouse)",
|
|
},
|
|
"target_dialect": {
|
|
"type": "string",
|
|
"title": "Target Dialect",
|
|
"description": "Target database dialect (e.g. PostgreSQL, ClickHouse)",
|
|
},
|
|
"job_id": {
|
|
"type": "string",
|
|
"title": "Translation Job ID",
|
|
"description": "Existing translation job to execute",
|
|
},
|
|
},
|
|
"required": ["job_id"],
|
|
}
|
|
|
|
async def execute(self, params: dict[str, Any], context: Any | None = None):
|
|
"""Execute a translation job — implementation deferred to later phases."""
|
|
raise NotImplementedError("TranslatePlugin.execute not yet implemented")
|
|
# #endregion TranslatePlugin
|
|
|
|
# #endregion TranslatePlugin
|