@llm-dev-ops/agentics-cli 1.4.25 → 1.4.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/base-adapter.d.ts.map +1 -1
- package/dist/adapters/base-adapter.js +10 -0
- package/dist/adapters/base-adapter.js.map +1 -1
- package/dist/agents/claude-shim.d.ts +24 -0
- package/dist/agents/claude-shim.d.ts.map +1 -0
- package/dist/agents/claude-shim.js +62 -0
- package/dist/agents/claude-shim.js.map +1 -0
- package/dist/agents/local-agent-runner.d.ts +42 -0
- package/dist/agents/local-agent-runner.d.ts.map +1 -0
- package/dist/agents/local-agent-runner.js +268 -0
- package/dist/agents/local-agent-runner.js.map +1 -0
- package/dist/agents/repo-agent-runner.d.ts +21 -0
- package/dist/agents/repo-agent-runner.d.ts.map +1 -0
- package/dist/agents/repo-agent-runner.js +835 -0
- package/dist/agents/repo-agent-runner.js.map +1 -0
- package/dist/agents/system-prompts.d.ts +22 -0
- package/dist/agents/system-prompts.d.ts.map +1 -0
- package/dist/agents/system-prompts.js +351 -0
- package/dist/agents/system-prompts.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/config-manager.d.ts +186 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/config-manager.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/config-manager.js +209 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/config-manager.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/costops.d.ts +134 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/costops.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/costops.js +131 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/costops.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/index.d.ts +59 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/index.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/index.js +120 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/index.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/memory-graph.d.ts +168 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/memory-graph.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/memory-graph.js +145 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/memory-graph.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/observatory.d.ts +116 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/observatory.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/observatory.js +108 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/observatory.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/registry.d.ts +166 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/registry.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/registry.js +169 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/registry.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/types.d.ts +53 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/types.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/types.js +29 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/adapters/types.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/consensus/computation.d.ts +59 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/consensus/computation.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/consensus/computation.js +240 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/consensus/computation.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/consensus/handler.d.ts +55 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/consensus/handler.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/consensus/handler.js +212 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/consensus/handler.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/consensus/index.d.ts +11 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/consensus/index.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/consensus/index.js +27 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/consensus/index.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/consensus/metadata.d.ts +144 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/consensus/metadata.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/consensus/metadata.js +180 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/consensus/metadata.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ecosystem-collaboration/computation.d.ts +49 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ecosystem-collaboration/computation.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ecosystem-collaboration/computation.js +248 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ecosystem-collaboration/computation.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ecosystem-collaboration/handler.d.ts +43 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ecosystem-collaboration/handler.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ecosystem-collaboration/handler.js +243 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ecosystem-collaboration/handler.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ecosystem-collaboration/index.d.ts +20 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ecosystem-collaboration/index.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ecosystem-collaboration/index.js +30 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ecosystem-collaboration/index.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ecosystem-collaboration/types.d.ts +68 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ecosystem-collaboration/types.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ecosystem-collaboration/types.js +10 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ecosystem-collaboration/types.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/index.d.ts +9 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/index.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/index.js +40 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/index.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ruvector-client.d.ts +179 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ruvector-client.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ruvector-client.js +484 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/ruvector-client.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/agent.d.ts +116 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/agent.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/agent.js +496 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/agent.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/index.d.ts +11 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/index.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/index.js +28 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/index.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/telemetry.d.ts +186 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/telemetry.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/telemetry.integration.d.ts +58 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/telemetry.integration.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/telemetry.integration.js +290 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/telemetry.integration.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/telemetry.js +575 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/telemetry.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/types.d.ts +2271 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/types.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/types.js +300 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/strategic-recommendation/types.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/types.d.ts +928 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/types.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/types.js +141 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/agents/types.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/api-keys.d.ts +74 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/api-keys.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/api-keys.js +148 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/api-keys.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/audit.d.ts +132 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/audit.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/audit.js +201 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/audit.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/jwt.d.ts +55 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/jwt.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/jwt.js +139 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/jwt.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/mfa.d.ts +37 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/mfa.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/mfa.js +123 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/mfa.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/middleware.d.ts +35 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/middleware.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/middleware.js +167 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/middleware.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/oauth.d.ts +94 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/oauth.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/oauth.js +223 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/oauth.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/rbac.d.ts +106 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/rbac.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/rbac.js +225 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/auth/rbac.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cache.d.ts +22 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cache.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cache.js +138 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cache.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/claude.js +68 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cli/consensus-agent.d.ts +47 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cli/consensus-agent.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cli/consensus-agent.js +448 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cli/consensus-agent.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cli/index.d.ts +10 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cli/index.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cli/index.js +26 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cli/index.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cli/main.d.ts +21 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cli/main.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cli/main.js +175 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cli/main.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cli/strategic-recommendation.d.ts +102 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cli/strategic-recommendation.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cli/strategic-recommendation.js +842 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/cli/strategic-recommendation.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/compliance/gdpr.d.ts +96 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/compliance/gdpr.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/compliance/gdpr.js +226 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/compliance/gdpr.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/config.d.ts +56 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/config.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/config.js +77 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/config.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/contracts/consensus-agent.d.ts +573 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/contracts/consensus-agent.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/contracts/consensus-agent.js +224 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/contracts/consensus-agent.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/contracts/decision-event.d.ts +379 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/contracts/decision-event.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/contracts/decision-event.js +95 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/contracts/decision-event.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/contracts/ecosystem-collaboration-agent.d.ts +1445 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/contracts/ecosystem-collaboration-agent.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/contracts/ecosystem-collaboration-agent.js +343 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/contracts/ecosystem-collaboration-agent.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/contracts/index.d.ts +11 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/contracts/index.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/contracts/index.js +52 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/contracts/index.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/database.d.ts +27 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/database.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/database.js +152 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/database.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/execution/execution-graph.d.ts +54 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/execution/execution-graph.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/execution/execution-graph.js +138 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/execution/execution-graph.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/execution/fastify-plugin.d.ts +16 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/execution/fastify-plugin.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/execution/fastify-plugin.js +131 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/execution/fastify-plugin.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/execution/index.d.ts +10 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/execution/index.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/execution/index.js +15 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/execution/index.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/execution/span-types.d.ts +48 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/execution/span-types.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/execution/span-types.js +16 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/execution/span-types.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/functions/handler.d.ts +45 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/functions/handler.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/functions/handler.js +189 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/functions/handler.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/index.d.ts +11 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/index.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/index.js +186 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/index.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/kafka.d.ts +16 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/kafka.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/kafka.js +100 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/kafka.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/logger.d.ts +5 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/logger.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/logger.js +31 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/logger.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/metrics.d.ts +17 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/metrics.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/metrics.js +77 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/metrics.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/analytics.d.ts +6 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/analytics.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/analytics.js +125 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/analytics.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/consensus.d.ts +13 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/consensus.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/consensus.js +192 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/consensus.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/ecosystem-collaboration.d.ts +14 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/ecosystem-collaboration.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/ecosystem-collaboration.js +258 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/ecosystem-collaboration.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/events.d.ts +6 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/events.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/events.js +323 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/events.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/index.d.ts +6 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/index.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/index.js +26 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/index.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/ingest.d.ts +13 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/ingest.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/ingest.js +122 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/ingest.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/metrics.d.ts +6 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/metrics.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/metrics.js +77 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/metrics.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/strategic-recommendations.d.ts +7 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/strategic-recommendations.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/strategic-recommendations.js +482 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/routes/strategic-recommendations.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/secrets/vault.d.ts +101 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/secrets/vault.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/secrets/vault.js +209 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/secrets/vault.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/services/index.d.ts +10 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/services/index.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/services/index.js +26 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/services/index.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/services/ruvector-client.d.ts +94 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/services/ruvector-client.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/services/ruvector-client.js +189 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/services/ruvector-client.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/services/telemetry-emitter.d.ts +90 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/services/telemetry-emitter.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/services/telemetry-emitter.js +177 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/services/telemetry-emitter.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/types/events.d.ts +230 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/types/events.d.ts.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/types/events.js +44 -0
- package/dist/bundled-agents/analytics-hub-agents/dist/types/events.js.map +1 -0
- package/dist/bundled-agents/analytics-hub-agents/package-lock.json +8836 -0
- package/dist/bundled-agents/analytics-hub-agents/package.json +109 -0
- package/dist/bundled-agents/analytics-hub-agents/src/adapters/config-manager.ts +389 -0
- package/dist/bundled-agents/analytics-hub-agents/src/adapters/costops.ts +265 -0
- package/dist/bundled-agents/analytics-hub-agents/src/adapters/index.ts +121 -0
- package/dist/bundled-agents/analytics-hub-agents/src/adapters/memory-graph.ts +314 -0
- package/dist/bundled-agents/analytics-hub-agents/src/adapters/observatory.ts +222 -0
- package/dist/bundled-agents/analytics-hub-agents/src/adapters/registry.ts +364 -0
- package/dist/bundled-agents/analytics-hub-agents/src/adapters/types.ts +72 -0
- package/dist/bundled-agents/analytics-hub-agents/src/agents/consensus/computation.ts +318 -0
- package/dist/bundled-agents/analytics-hub-agents/src/agents/consensus/handler.ts +318 -0
- package/dist/bundled-agents/analytics-hub-agents/src/agents/consensus/index.ts +11 -0
- package/dist/bundled-agents/analytics-hub-agents/src/agents/consensus/metadata.ts +220 -0
- package/dist/bundled-agents/analytics-hub-agents/src/agents/ecosystem-collaboration/computation.ts +335 -0
- package/dist/bundled-agents/analytics-hub-agents/src/agents/ecosystem-collaboration/handler.ts +289 -0
- package/dist/bundled-agents/analytics-hub-agents/src/agents/ecosystem-collaboration/index.ts +42 -0
- package/dist/bundled-agents/analytics-hub-agents/src/agents/ecosystem-collaboration/types.ts +81 -0
- package/dist/bundled-agents/analytics-hub-agents/src/agents/index.ts +43 -0
- package/dist/bundled-agents/analytics-hub-agents/src/agents/ruvector-client.ts +591 -0
- package/dist/bundled-agents/analytics-hub-agents/src/agents/strategic-recommendation/agent.ts +663 -0
- package/dist/bundled-agents/analytics-hub-agents/src/agents/strategic-recommendation/index.ts +43 -0
- package/dist/bundled-agents/analytics-hub-agents/src/agents/strategic-recommendation/telemetry.integration.ts +476 -0
- package/dist/bundled-agents/analytics-hub-agents/src/agents/strategic-recommendation/telemetry.ts +763 -0
- package/dist/bundled-agents/analytics-hub-agents/src/agents/strategic-recommendation/types.ts +368 -0
- package/dist/bundled-agents/analytics-hub-agents/src/agents/types.ts +363 -0
- package/dist/bundled-agents/analytics-hub-agents/src/auth/api-keys.ts +209 -0
- package/dist/bundled-agents/analytics-hub-agents/src/auth/audit.ts +278 -0
- package/dist/bundled-agents/analytics-hub-agents/src/auth/jwt.ts +172 -0
- package/dist/bundled-agents/analytics-hub-agents/src/auth/mfa.ts +107 -0
- package/dist/bundled-agents/analytics-hub-agents/src/auth/middleware.ts +220 -0
- package/dist/bundled-agents/analytics-hub-agents/src/auth/oauth.ts +293 -0
- package/dist/bundled-agents/analytics-hub-agents/src/auth/rbac.ts +281 -0
- package/dist/bundled-agents/analytics-hub-agents/src/cache.ts +146 -0
- package/dist/bundled-agents/analytics-hub-agents/src/cli/consensus-agent.ts +511 -0
- package/dist/bundled-agents/analytics-hub-agents/src/cli/index.ts +10 -0
- package/dist/bundled-agents/analytics-hub-agents/src/cli/main.ts +161 -0
- package/dist/bundled-agents/analytics-hub-agents/src/cli/strategic-recommendation.ts +1126 -0
- package/dist/bundled-agents/analytics-hub-agents/src/compliance/gdpr.ts +330 -0
- package/dist/bundled-agents/analytics-hub-agents/src/config.ts +81 -0
- package/dist/bundled-agents/analytics-hub-agents/src/contracts/consensus-agent.ts +249 -0
- package/dist/bundled-agents/analytics-hub-agents/src/contracts/decision-event.ts +99 -0
- package/dist/bundled-agents/analytics-hub-agents/src/contracts/ecosystem-collaboration-agent.ts +388 -0
- package/dist/bundled-agents/analytics-hub-agents/src/contracts/index.ts +14 -0
- package/dist/bundled-agents/analytics-hub-agents/src/database.ts +187 -0
- package/dist/bundled-agents/analytics-hub-agents/src/execution/execution-graph.ts +165 -0
- package/dist/bundled-agents/analytics-hub-agents/src/execution/fastify-plugin.ts +168 -0
- package/dist/bundled-agents/analytics-hub-agents/src/execution/index.ts +18 -0
- package/dist/bundled-agents/analytics-hub-agents/src/execution/span-types.ts +54 -0
- package/dist/bundled-agents/analytics-hub-agents/src/functions/handler.ts +264 -0
- package/dist/bundled-agents/analytics-hub-agents/src/index.ts +195 -0
- package/dist/bundled-agents/analytics-hub-agents/src/kafka.ts +109 -0
- package/dist/bundled-agents/analytics-hub-agents/src/logger.ts +26 -0
- package/dist/bundled-agents/analytics-hub-agents/src/metrics.ts +97 -0
- package/dist/bundled-agents/analytics-hub-agents/src/routes/analytics.ts +153 -0
- package/dist/bundled-agents/analytics-hub-agents/src/routes/consensus.ts +218 -0
- package/dist/bundled-agents/analytics-hub-agents/src/routes/ecosystem-collaboration.ts +284 -0
- package/dist/bundled-agents/analytics-hub-agents/src/routes/events.ts +396 -0
- package/dist/bundled-agents/analytics-hub-agents/src/routes/index.ts +27 -0
- package/dist/bundled-agents/analytics-hub-agents/src/routes/ingest.ts +146 -0
- package/dist/bundled-agents/analytics-hub-agents/src/routes/metrics.ts +105 -0
- package/dist/bundled-agents/analytics-hub-agents/src/routes/strategic-recommendations.ts +624 -0
- package/dist/bundled-agents/analytics-hub-agents/src/secrets/vault.ts +252 -0
- package/dist/bundled-agents/analytics-hub-agents/src/services/index.ts +10 -0
- package/dist/bundled-agents/analytics-hub-agents/src/services/ruvector-client.ts +235 -0
- package/dist/bundled-agents/analytics-hub-agents/src/services/telemetry-emitter.ts +250 -0
- package/dist/bundled-agents/analytics-hub-agents/src/types/events.ts +237 -0
- package/dist/bundled-agents/analytics-hub-agents/src/types/fastify.d.ts +25 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agentics/execution-context.d.ts +124 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agentics/execution-context.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agentics/execution-context.js +74 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agentics/execution-context.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agentics/index.d.ts +14 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agentics/index.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agentics/index.js +24 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agentics/index.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agentics/span-manager.d.ts +60 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agentics/span-manager.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agentics/span-manager.js +206 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agentics/span-manager.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/index.d.ts +56 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/index.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/index.js +125 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/index.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/model-selection-agent/handler.d.ts +115 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/model-selection-agent/handler.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/model-selection-agent/handler.js +594 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/model-selection-agent/handler.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/model-selection-agent/index.d.ts +98 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/model-selection-agent/index.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/model-selection-agent/index.js +896 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/model-selection-agent/index.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/self-optimizing-agent/handler.d.ts +82 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/self-optimizing-agent/handler.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/self-optimizing-agent/handler.js +450 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/self-optimizing-agent/handler.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/self-optimizing-agent/index.d.ts +92 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/self-optimizing-agent/index.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/self-optimizing-agent/index.js +610 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/self-optimizing-agent/index.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/token-optimization-agent/handler.d.ts +117 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/token-optimization-agent/handler.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/token-optimization-agent/handler.js +604 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/token-optimization-agent/handler.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/token-optimization-agent/index.d.ts +113 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/token-optimization-agent/index.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/token-optimization-agent/index.js +1096 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/token-optimization-agent/index.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/token-optimization-agent/types.d.ts +438 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/token-optimization-agent/types.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/token-optimization-agent/types.js +83 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/agents/token-optimization-agent/types.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/claude.js +68 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/contracts/index.d.ts +879 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/contracts/index.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/contracts/index.js +179 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/contracts/index.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/functions.d.ts +38 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/functions.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/functions.js +283 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/functions.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/anthropic/anthropic-client.d.ts +94 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/anthropic/anthropic-client.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/anthropic/anthropic-client.js +126 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/anthropic/anthropic-client.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/anthropic/index.d.ts +2 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/anthropic/index.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/anthropic/index.js +18 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/anthropic/index.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/config-manager-adapter.d.ts +270 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/config-manager-adapter.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/config-manager-adapter.js +308 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/config-manager-adapter.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/cost-ops-adapter.d.ts +141 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/cost-ops-adapter.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/cost-ops-adapter.js +200 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/cost-ops-adapter.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/index.d.ts +96 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/index.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/index.js +145 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/index.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/latency-lens-adapter.d.ts +208 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/latency-lens-adapter.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/latency-lens-adapter.js +242 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/latency-lens-adapter.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/observatory-adapter.d.ts +243 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/observatory-adapter.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/observatory-adapter.js +267 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/observatory-adapter.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/router-l2-adapter.d.ts +218 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/router-l2-adapter.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/router-l2-adapter.js +236 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/router-l2-adapter.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/sentinel-adapter.d.ts +219 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/sentinel-adapter.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/sentinel-adapter.js +258 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/sentinel-adapter.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/shield-adapter.d.ts +231 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/shield-adapter.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/shield-adapter.js +239 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/integrations/llm-devops/shield-adapter.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/agent-wrapper.d.ts +100 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/agent-wrapper.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/agent-wrapper.js +332 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/agent-wrapper.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/config.d.ts +93 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/config.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/config.js +144 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/config.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/execution-guard.d.ts +106 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/execution-guard.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/execution-guard.js +317 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/execution-guard.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/index.d.ts +32 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/index.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/index.js +113 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/index.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/server-integration.d.ts +72 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/server-integration.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/server-integration.js +212 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/server-integration.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/signals.d.ts +172 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/signals.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/signals.js +147 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/signals.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/startup-guard.d.ts +66 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/startup-guard.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/startup-guard.js +295 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/phase3/layer1/startup-guard.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/server.d.ts +26 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/server.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/server.js +459 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/server.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/services/index.d.ts +10 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/services/index.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/services/index.js +16 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/services/index.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/services/ruvector-client.d.ts +149 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/services/ruvector-client.d.ts.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/services/ruvector-client.js +280 -0
- package/dist/bundled-agents/auto-optimizer-agents/dist/services/ruvector-client.js.map +1 -0
- package/dist/bundled-agents/auto-optimizer-agents/package-lock.json +14642 -0
- package/dist/bundled-agents/auto-optimizer-agents/package.json +74 -0
- package/dist/bundled-agents/benchmark-exchange-agents/index.js +331 -0
- package/dist/bundled-agents/benchmark-exchange-agents/package-lock.json +16 -0
- package/dist/bundled-agents/benchmark-exchange-agents/package.json +50 -0
- package/dist/bundled-agents/config-manager-agents/index.js +341 -0
- package/dist/bundled-agents/config-manager-agents/package-lock.json +1839 -0
- package/dist/bundled-agents/config-manager-agents/package.json +17 -0
- package/dist/bundled-agents/connector-hub-agents/index.js +235 -0
- package/dist/bundled-agents/connector-hub-agents/package.json +5 -0
- package/dist/bundled-agents/copilot-agents/dist/claude.js +68 -0
- package/dist/bundled-agents/copilot-agents/dist/functions/src/cors.d.ts +14 -0
- package/dist/bundled-agents/copilot-agents/dist/functions/src/cors.js +35 -0
- package/dist/bundled-agents/copilot-agents/dist/functions/src/cors.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/functions/src/envelope.d.ts +55 -0
- package/dist/bundled-agents/copilot-agents/dist/functions/src/envelope.js +40 -0
- package/dist/bundled-agents/copilot-agents/dist/functions/src/envelope.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/functions/src/health.d.ts +22 -0
- package/dist/bundled-agents/copilot-agents/dist/functions/src/health.js +38 -0
- package/dist/bundled-agents/copilot-agents/dist/functions/src/health.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/functions/src/index.d.ts +34 -0
- package/dist/bundled-agents/copilot-agents/dist/functions/src/index.js +186 -0
- package/dist/bundled-agents/copilot-agents/dist/functions/src/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/functions/src/router.d.ts +36 -0
- package/dist/bundled-agents/copilot-agents/dist/functions/src/router.js +121 -0
- package/dist/bundled-agents/copilot-agents/dist/functions/src/router.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/config-validation/config-validation-agent.d.ts +157 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/config-validation/config-validation-agent.js +948 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/config-validation/config-validation-agent.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/config-validation/index.d.ts +9 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/config-validation/index.js +27 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/config-validation/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/agent-span-wrapper.d.ts +23 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/agent-span-wrapper.js +50 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/agent-span-wrapper.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/base-agent.d.ts +214 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/base-agent.js +91 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/base-agent.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/config-validation-schemas.d.ts +1166 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/config-validation-schemas.js +308 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/config-validation-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/decision-event.d.ts +59 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/decision-event.js +62 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/decision-event.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/decomposer-schemas.d.ts +400 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/decomposer-schemas.js +113 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/decomposer-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/execution-graph.d.ts +250 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/execution-graph.js +169 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/execution-graph.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/index.d.ts +17 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/index.js +97 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/intelligence-schemas.d.ts +1674 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/intelligence-schemas.js +246 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/intelligence-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/intent-classifier-schemas.d.ts +1085 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/intent-classifier-schemas.js +218 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/intent-classifier-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/meta-reasoner-schemas.d.ts +949 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/meta-reasoner-schemas.js +253 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/meta-reasoner-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/objective-clarifier-schemas.d.ts +657 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/objective-clarifier-schemas.js +205 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/objective-clarifier-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/pipeline-schemas.d.ts +285 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/pipeline-schemas.js +106 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/pipeline-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/planner-schemas.d.ts +581 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/planner-schemas.js +136 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/planner-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/reflection-schemas.d.ts +791 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/reflection-schemas.js +225 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/contracts/reflection-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/decomposer/decomposer-agent.d.ts +120 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/decomposer/decomposer-agent.js +535 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/decomposer/decomposer-agent.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/decomposer/index.d.ts +9 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/decomposer/index.js +18 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/decomposer/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/intent-classifier/index.d.ts +4 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/intent-classifier/index.js +9 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/intent-classifier/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/intent-classifier/intent-classifier-agent.d.ts +123 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/intent-classifier/intent-classifier-agent.js +609 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/intent-classifier/intent-classifier-agent.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/meta-reasoner/index.d.ts +10 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/meta-reasoner/index.js +25 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/meta-reasoner/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/meta-reasoner/meta-reasoner-agent.d.ts +111 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/meta-reasoner/meta-reasoner-agent.js +686 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/meta-reasoner/meta-reasoner-agent.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/meta-reasoner/telemetry.d.ts +11 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/meta-reasoner/telemetry.js +25 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/meta-reasoner/telemetry.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/objective-clarifier/index.d.ts +6 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/objective-clarifier/index.js +15 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/objective-clarifier/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/objective-clarifier/objective-clarifier-agent.d.ts +126 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/objective-clarifier/objective-clarifier-agent.js +780 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/objective-clarifier/objective-clarifier-agent.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/objective-clarifier/ruvector-persistence.d.ts +49 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/objective-clarifier/ruvector-persistence.js +125 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/objective-clarifier/ruvector-persistence.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/objective-clarifier/telemetry.d.ts +73 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/objective-clarifier/telemetry.js +192 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/objective-clarifier/telemetry.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/planner/index.d.ts +11 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/planner/index.js +25 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/planner/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/planner/planner-agent.d.ts +127 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/planner/planner-agent.js +483 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/planner/planner-agent.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/planner/ruvector-persistence.d.ts +49 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/planner/ruvector-persistence.js +125 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/planner/ruvector-persistence.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/planner/telemetry.d.ts +73 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/planner/telemetry.js +192 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/planner/telemetry.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/reflection/index.d.ts +11 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/reflection/index.js +27 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/reflection/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/reflection/reflection-agent.d.ts +122 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/reflection/reflection-agent.js +645 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/reflection/reflection-agent.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/reflection/ruvector-persistence.d.ts +59 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/reflection/ruvector-persistence.js +156 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/reflection/ruvector-persistence.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/reflection/telemetry.d.ts +88 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/reflection/telemetry.js +246 -0
- package/dist/bundled-agents/copilot-agents/dist/services/agents/reflection/telemetry.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/index.js +4 -0
- package/dist/bundled-agents/copilot-agents/lib/functions/src/cors.d.ts +14 -0
- package/dist/bundled-agents/copilot-agents/lib/functions/src/cors.js +35 -0
- package/dist/bundled-agents/copilot-agents/lib/functions/src/cors.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/functions/src/envelope.d.ts +27 -0
- package/dist/bundled-agents/copilot-agents/lib/functions/src/envelope.js +21 -0
- package/dist/bundled-agents/copilot-agents/lib/functions/src/envelope.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/functions/src/health.d.ts +22 -0
- package/dist/bundled-agents/copilot-agents/lib/functions/src/health.js +38 -0
- package/dist/bundled-agents/copilot-agents/lib/functions/src/health.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/functions/src/index.d.ts +34 -0
- package/dist/bundled-agents/copilot-agents/lib/functions/src/index.js +321 -0
- package/dist/bundled-agents/copilot-agents/lib/functions/src/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/functions/src/router.d.ts +27 -0
- package/dist/bundled-agents/copilot-agents/lib/functions/src/router.js +107 -0
- package/dist/bundled-agents/copilot-agents/lib/functions/src/router.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/config-validation/config-validation-agent.d.ts +157 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/config-validation/config-validation-agent.js +941 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/config-validation/config-validation-agent.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/config-validation/index.d.ts +9 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/config-validation/index.js +27 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/config-validation/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/agent-span-wrapper.d.ts +23 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/agent-span-wrapper.js +50 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/agent-span-wrapper.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/base-agent.d.ts +185 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/base-agent.js +86 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/base-agent.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/config-validation-schemas.d.ts +1081 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/config-validation-schemas.js +305 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/config-validation-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/decision-event.d.ts +59 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/decision-event.js +62 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/decision-event.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/decomposer-schemas.d.ts +315 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/decomposer-schemas.js +110 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/decomposer-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/execution-graph.d.ts +250 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/execution-graph.js +169 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/execution-graph.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/index.d.ts +16 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/index.js +88 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/intelligence-schemas.d.ts +1674 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/intelligence-schemas.js +246 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/intelligence-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/intent-classifier-schemas.d.ts +1000 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/intent-classifier-schemas.js +215 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/intent-classifier-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/meta-reasoner-schemas.d.ts +864 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/meta-reasoner-schemas.js +250 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/meta-reasoner-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/objective-clarifier-schemas.d.ts +572 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/objective-clarifier-schemas.js +202 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/objective-clarifier-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/planner-schemas.d.ts +496 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/planner-schemas.js +133 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/planner-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/reflection-schemas.d.ts +706 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/reflection-schemas.js +222 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/contracts/reflection-schemas.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/decomposer/decomposer-agent.d.ts +107 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/decomposer/decomposer-agent.js +360 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/decomposer/decomposer-agent.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/decomposer/index.d.ts +9 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/decomposer/index.js +18 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/decomposer/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/intent-classifier/index.d.ts +4 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/intent-classifier/index.js +9 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/intent-classifier/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/intent-classifier/intent-classifier-agent.d.ts +123 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/intent-classifier/intent-classifier-agent.js +609 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/intent-classifier/intent-classifier-agent.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/meta-reasoner/index.d.ts +10 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/meta-reasoner/index.js +25 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/meta-reasoner/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/meta-reasoner/meta-reasoner-agent.d.ts +111 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/meta-reasoner/meta-reasoner-agent.js +686 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/meta-reasoner/meta-reasoner-agent.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/meta-reasoner/telemetry.d.ts +11 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/meta-reasoner/telemetry.js +25 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/meta-reasoner/telemetry.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/objective-clarifier/index.d.ts +6 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/objective-clarifier/index.js +15 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/objective-clarifier/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/objective-clarifier/objective-clarifier-agent.d.ts +126 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/objective-clarifier/objective-clarifier-agent.js +780 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/objective-clarifier/objective-clarifier-agent.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/objective-clarifier/ruvector-persistence.d.ts +49 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/objective-clarifier/ruvector-persistence.js +125 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/objective-clarifier/ruvector-persistence.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/objective-clarifier/telemetry.d.ts +73 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/objective-clarifier/telemetry.js +192 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/objective-clarifier/telemetry.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/planner/index.d.ts +11 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/planner/index.js +25 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/planner/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/planner/planner-agent.d.ts +119 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/planner/planner-agent.js +421 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/planner/planner-agent.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/planner/ruvector-persistence.d.ts +49 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/planner/ruvector-persistence.js +125 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/planner/ruvector-persistence.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/planner/telemetry.d.ts +73 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/planner/telemetry.js +192 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/planner/telemetry.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/reflection/index.d.ts +11 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/reflection/index.js +27 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/reflection/index.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/reflection/reflection-agent.d.ts +122 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/reflection/reflection-agent.js +645 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/reflection/reflection-agent.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/reflection/ruvector-persistence.d.ts +59 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/reflection/ruvector-persistence.js +156 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/reflection/ruvector-persistence.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/reflection/telemetry.d.ts +88 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/reflection/telemetry.js +246 -0
- package/dist/bundled-agents/copilot-agents/lib/services/agents/reflection/telemetry.js.map +1 -0
- package/dist/bundled-agents/copilot-agents/package-lock.json +5474 -0
- package/dist/bundled-agents/copilot-agents/package.json +40 -0
- package/dist/bundled-agents/copilot-agents/src/cors.ts +36 -0
- package/dist/bundled-agents/copilot-agents/src/envelope.ts +77 -0
- package/dist/bundled-agents/copilot-agents/src/handler.test.ts +340 -0
- package/dist/bundled-agents/copilot-agents/src/health.ts +53 -0
- package/dist/bundled-agents/copilot-agents/src/index.ts +201 -0
- package/dist/bundled-agents/copilot-agents/src/router.ts +148 -0
- package/dist/bundled-agents/costops-agents/dist/claude.js +68 -0
- package/dist/bundled-agents/costops-agents/dist/index.js +22825 -0
- package/dist/bundled-agents/costops-agents/package-lock.json +2186 -0
- package/dist/bundled-agents/costops-agents/package.json +30 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/agent.d.ts +134 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/agent.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/agent.js +389 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/agent.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/handler.d.ts +64 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/handler.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/handler.js +346 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/handler.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/index.d.ts +36 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/index.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/index.js +37 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/index.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/policy-evaluator.d.ts +234 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/policy-evaluator.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/policy-evaluator.js +634 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/policy-evaluator.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/ruvector-client.d.ts +139 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/ruvector-client.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/ruvector-client.js +347 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/data-access-control/ruvector-client.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/agent.d.ts +103 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/agent.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/agent.js +439 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/agent.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/anonymization-strategies.d.ts +158 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/anonymization-strategies.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/anonymization-strategies.js +527 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/anonymization-strategies.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/compliance-rules.d.ts +106 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/compliance-rules.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/compliance-rules.js +426 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/compliance-rules.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/handler.d.ts +37 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/handler.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/handler.js +230 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/handler.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/index.d.ts +50 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/index.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/index.js +55 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/index.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/pii-detector.d.ts +142 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/pii-detector.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/pii-detector.js +474 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization/pii-detector.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization-agent.d.ts +132 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization-agent.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization-agent.js +517 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/dataset-anonymization-agent.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/index.d.ts +9 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/index.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/index.js +9 -0
- package/dist/bundled-agents/data-vault-agents/dist/agents/index.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/claude.js +68 -0
- package/dist/bundled-agents/data-vault-agents/dist/cli/index.d.ts +16 -0
- package/dist/bundled-agents/data-vault-agents/dist/cli/index.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/cli/index.js +419 -0
- package/dist/bundled-agents/data-vault-agents/dist/cli/index.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/access-control.d.ts +795 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/access-control.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/access-control.js +210 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/access-control.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/agent-config.schema.d.ts +1570 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/agent-config.schema.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/agent-config.schema.js +492 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/agent-config.schema.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/anonymization.d.ts +483 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/anonymization.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/anonymization.js +217 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/anonymization.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/anonymization.schema.d.ts +1059 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/anonymization.schema.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/anonymization.schema.js +461 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/anonymization.schema.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/data-access.schema.d.ts +731 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/data-access.schema.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/data-access.schema.js +388 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/data-access.schema.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/decision-event.d.ts +243 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/decision-event.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/decision-event.js +157 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/decision-event.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/decision-event.schema.d.ts +125 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/decision-event.schema.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/decision-event.schema.js +142 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/decision-event.schema.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/index.d.ts +25 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/index.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/index.js +38 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/index.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/schemas.d.ts +2742 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/schemas.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/schemas.js +110 -0
- package/dist/bundled-agents/data-vault-agents/dist/contracts/schemas.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/execution/index.d.ts +88 -0
- package/dist/bundled-agents/data-vault-agents/dist/execution/index.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/execution/index.js +142 -0
- package/dist/bundled-agents/data-vault-agents/dist/execution/index.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/functions/anonymization-function.d.ts +116 -0
- package/dist/bundled-agents/data-vault-agents/dist/functions/anonymization-function.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/functions/anonymization-function.js +414 -0
- package/dist/bundled-agents/data-vault-agents/dist/functions/anonymization-function.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/functions/cloud-function.d.ts +26 -0
- package/dist/bundled-agents/data-vault-agents/dist/functions/cloud-function.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/functions/cloud-function.js +215 -0
- package/dist/bundled-agents/data-vault-agents/dist/functions/cloud-function.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/functions/index.d.ts +10 -0
- package/dist/bundled-agents/data-vault-agents/dist/functions/index.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/functions/index.js +11 -0
- package/dist/bundled-agents/data-vault-agents/dist/functions/index.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/functions/server.d.ts +23 -0
- package/dist/bundled-agents/data-vault-agents/dist/functions/server.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/functions/server.js +448 -0
- package/dist/bundled-agents/data-vault-agents/dist/functions/server.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/index.d.ts +57 -0
- package/dist/bundled-agents/data-vault-agents/dist/index.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/index.js +95 -0
- package/dist/bundled-agents/data-vault-agents/dist/index.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/platform/index.d.ts +8 -0
- package/dist/bundled-agents/data-vault-agents/dist/platform/index.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/platform/index.js +24 -0
- package/dist/bundled-agents/data-vault-agents/dist/platform/index.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/platform/integration.d.ts +875 -0
- package/dist/bundled-agents/data-vault-agents/dist/platform/integration.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/platform/integration.js +723 -0
- package/dist/bundled-agents/data-vault-agents/dist/platform/integration.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/platform/registration.d.ts +391 -0
- package/dist/bundled-agents/data-vault-agents/dist/platform/registration.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/platform/registration.js +313 -0
- package/dist/bundled-agents/data-vault-agents/dist/platform/registration.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/registration.d.ts +200 -0
- package/dist/bundled-agents/data-vault-agents/dist/registration.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/registration.js +264 -0
- package/dist/bundled-agents/data-vault-agents/dist/registration.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/runtime/agent-base.d.ts +132 -0
- package/dist/bundled-agents/data-vault-agents/dist/runtime/agent-base.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/runtime/agent-base.js +216 -0
- package/dist/bundled-agents/data-vault-agents/dist/runtime/agent-base.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/runtime/index.d.ts +12 -0
- package/dist/bundled-agents/data-vault-agents/dist/runtime/index.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/runtime/index.js +11 -0
- package/dist/bundled-agents/data-vault-agents/dist/runtime/index.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/runtime/performance-budget.d.ts +143 -0
- package/dist/bundled-agents/data-vault-agents/dist/runtime/performance-budget.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/runtime/performance-budget.js +269 -0
- package/dist/bundled-agents/data-vault-agents/dist/runtime/performance-budget.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/ruvector-client/index.d.ts +111 -0
- package/dist/bundled-agents/data-vault-agents/dist/ruvector-client/index.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/ruvector-client/index.js +249 -0
- package/dist/bundled-agents/data-vault-agents/dist/ruvector-client/index.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/startup/index.d.ts +9 -0
- package/dist/bundled-agents/data-vault-agents/dist/startup/index.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/startup/index.js +9 -0
- package/dist/bundled-agents/data-vault-agents/dist/startup/index.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/startup/validation.d.ts +64 -0
- package/dist/bundled-agents/data-vault-agents/dist/startup/validation.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/startup/validation.js +319 -0
- package/dist/bundled-agents/data-vault-agents/dist/startup/validation.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/telemetry/index.d.ts +130 -0
- package/dist/bundled-agents/data-vault-agents/dist/telemetry/index.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/telemetry/index.js +272 -0
- package/dist/bundled-agents/data-vault-agents/dist/telemetry/index.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/tests/contract-tests.d.ts +14 -0
- package/dist/bundled-agents/data-vault-agents/dist/tests/contract-tests.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/tests/contract-tests.js +1096 -0
- package/dist/bundled-agents/data-vault-agents/dist/tests/contract-tests.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/tests/index.d.ts +8 -0
- package/dist/bundled-agents/data-vault-agents/dist/tests/index.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/tests/index.js +9 -0
- package/dist/bundled-agents/data-vault-agents/dist/tests/index.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/tests/smoke-tests.d.ts +14 -0
- package/dist/bundled-agents/data-vault-agents/dist/tests/smoke-tests.d.ts.map +1 -0
- package/dist/bundled-agents/data-vault-agents/dist/tests/smoke-tests.js +787 -0
- package/dist/bundled-agents/data-vault-agents/dist/tests/smoke-tests.js.map +1 -0
- package/dist/bundled-agents/data-vault-agents/package-lock.json +6061 -0
- package/dist/bundled-agents/data-vault-agents/package.json +65 -0
- package/dist/bundled-agents/data-vault-agents/src/agents/data-access-control/agent.ts +544 -0
- package/dist/bundled-agents/data-vault-agents/src/agents/data-access-control/handler.ts +517 -0
- package/dist/bundled-agents/data-vault-agents/src/agents/data-access-control/index.ts +102 -0
- package/dist/bundled-agents/data-vault-agents/src/agents/data-access-control/policy-evaluator.ts +906 -0
- package/dist/bundled-agents/data-vault-agents/src/agents/data-access-control/ruvector-client.ts +440 -0
- package/dist/bundled-agents/data-vault-agents/src/agents/dataset-anonymization/agent.ts +658 -0
- package/dist/bundled-agents/data-vault-agents/src/agents/dataset-anonymization/anonymization-strategies.ts +711 -0
- package/dist/bundled-agents/data-vault-agents/src/agents/dataset-anonymization/compliance-rules.ts +591 -0
- package/dist/bundled-agents/data-vault-agents/src/agents/dataset-anonymization/handler.ts +261 -0
- package/dist/bundled-agents/data-vault-agents/src/agents/dataset-anonymization/index.ts +98 -0
- package/dist/bundled-agents/data-vault-agents/src/agents/dataset-anonymization/pii-detector.ts +612 -0
- package/dist/bundled-agents/data-vault-agents/src/agents/dataset-anonymization-agent.ts +679 -0
- package/dist/bundled-agents/data-vault-agents/src/agents/index.ts +12 -0
- package/dist/bundled-agents/data-vault-agents/src/cli/index.ts +535 -0
- package/dist/bundled-agents/data-vault-agents/src/contracts/access-control.ts +267 -0
- package/dist/bundled-agents/data-vault-agents/src/contracts/agent-config.schema.ts +623 -0
- package/dist/bundled-agents/data-vault-agents/src/contracts/anonymization.schema.ts +562 -0
- package/dist/bundled-agents/data-vault-agents/src/contracts/anonymization.ts +267 -0
- package/dist/bundled-agents/data-vault-agents/src/contracts/data-access.schema.ts +493 -0
- package/dist/bundled-agents/data-vault-agents/src/contracts/decision-event.schema.ts +173 -0
- package/dist/bundled-agents/data-vault-agents/src/contracts/decision-event.ts +204 -0
- package/dist/bundled-agents/data-vault-agents/src/contracts/index.ts +223 -0
- package/dist/bundled-agents/data-vault-agents/src/contracts/schemas.ts +181 -0
- package/dist/bundled-agents/data-vault-agents/src/execution/index.ts +235 -0
- package/dist/bundled-agents/data-vault-agents/src/functions/anonymization-function.ts +532 -0
- package/dist/bundled-agents/data-vault-agents/src/functions/cloud-function.ts +347 -0
- package/dist/bundled-agents/data-vault-agents/src/functions/index.ts +17 -0
- package/dist/bundled-agents/data-vault-agents/src/functions/server.ts +530 -0
- package/dist/bundled-agents/data-vault-agents/src/index.ts +201 -0
- package/dist/bundled-agents/data-vault-agents/src/platform/index.ts +64 -0
- package/dist/bundled-agents/data-vault-agents/src/platform/integration.ts +890 -0
- package/dist/bundled-agents/data-vault-agents/src/platform/registration.ts +365 -0
- package/dist/bundled-agents/data-vault-agents/src/registration.ts +288 -0
- package/dist/bundled-agents/data-vault-agents/src/runtime/agent-base.ts +344 -0
- package/dist/bundled-agents/data-vault-agents/src/runtime/index.ts +34 -0
- package/dist/bundled-agents/data-vault-agents/src/runtime/performance-budget.ts +378 -0
- package/dist/bundled-agents/data-vault-agents/src/ruvector-client/index.ts +324 -0
- package/dist/bundled-agents/data-vault-agents/src/startup/index.ts +17 -0
- package/dist/bundled-agents/data-vault-agents/src/startup/validation.ts +417 -0
- package/dist/bundled-agents/data-vault-agents/src/telemetry/index.ts +395 -0
- package/dist/bundled-agents/data-vault-agents/src/tests/contract-tests.ts +1234 -0
- package/dist/bundled-agents/data-vault-agents/src/tests/index.ts +9 -0
- package/dist/bundled-agents/data-vault-agents/src/tests/smoke-tests.ts +929 -0
- package/dist/bundled-agents/edge-agents/index.js +66 -0
- package/dist/bundled-agents/edge-agents/package-lock.json +6352 -0
- package/dist/bundled-agents/edge-agents/package.json +114 -0
- package/dist/bundled-agents/forge-agents/dist/claude.js +68 -0
- package/dist/bundled-agents/forge-agents/dist/cli/index.js +11140 -0
- package/dist/bundled-agents/forge-agents/dist/cli/index.js.map +1 -0
- package/dist/bundled-agents/forge-agents/dist/index.js +11929 -0
- package/dist/bundled-agents/forge-agents/dist/index.js.map +1 -0
- package/dist/bundled-agents/forge-agents/dist/service/cloud-function.js +9346 -0
- package/dist/bundled-agents/forge-agents/dist/service/cloud-function.js.map +1 -0
- package/dist/bundled-agents/forge-agents/dist/service/server.js +10612 -0
- package/dist/bundled-agents/forge-agents/dist/service/server.js.map +1 -0
- package/dist/bundled-agents/forge-agents/package-lock.json +13229 -0
- package/dist/bundled-agents/forge-agents/package.json +110 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/change-impact/agent.d.ts +109 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/change-impact/agent.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/change-impact/agent.js +625 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/change-impact/agent.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/change-impact/factory.d.ts +30 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/change-impact/factory.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/change-impact/factory.js +48 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/change-impact/factory.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/change-impact/index.d.ts +9 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/change-impact/index.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/change-impact/index.js +8 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/change-impact/index.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/change-impact/types.d.ts +70 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/change-impact/types.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/change-impact/types.js +7 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/change-impact/types.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/governance-audit/agent.d.ts +54 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/governance-audit/agent.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/governance-audit/agent.js +396 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/governance-audit/agent.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/governance-audit/factory.d.ts +29 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/governance-audit/factory.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/governance-audit/factory.js +51 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/governance-audit/factory.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/governance-audit/index.d.ts +28 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/governance-audit/index.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/governance-audit/index.js +28 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/governance-audit/index.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/governance-audit/types.d.ts +44 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/governance-audit/types.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/governance-audit/types.js +7 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/governance-audit/types.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/usage-oversight/agent.d.ts +89 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/usage-oversight/agent.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/usage-oversight/agent.js +576 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/usage-oversight/agent.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/usage-oversight/factory.d.ts +30 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/usage-oversight/factory.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/usage-oversight/factory.js +55 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/usage-oversight/factory.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/usage-oversight/index.d.ts +30 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/usage-oversight/index.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/usage-oversight/index.js +30 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/usage-oversight/index.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/usage-oversight/types.d.ts +81 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/usage-oversight/types.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/usage-oversight/types.js +7 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/agents/usage-oversight/types.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/claude.js +68 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/config/index.d.ts +7 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/config/index.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/config/index.js +7 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/config/index.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/config/phase4-layer1.d.ts +88 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/config/phase4-layer1.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/config/phase4-layer1.js +99 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/config/phase4-layer1.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/base-agent.d.ts +230 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/base-agent.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/base-agent.js +80 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/base-agent.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/change-impact.d.ts +1471 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/change-impact.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/change-impact.js +337 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/change-impact.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/decision-event.d.ts +357 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/decision-event.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/decision-event.js +131 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/decision-event.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/execution-span.d.ts +304 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/execution-span.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/execution-span.js +68 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/execution-span.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/governance-audit.d.ts +606 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/governance-audit.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/governance-audit.js +245 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/governance-audit.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/index.d.ts +16 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/index.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/index.js +16 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/index.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/usage-oversight.d.ts +1471 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/usage-oversight.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/usage-oversight.js +361 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/usage-oversight.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/validation.d.ts +69 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/validation.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/validation.js +87 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/contracts/validation.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/handlers/cloud-function.d.ts +27 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/handlers/cloud-function.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/handlers/cloud-function.js +284 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/handlers/cloud-function.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/handlers/cloud-run.d.ts +23 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/handlers/cloud-run.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/handlers/cloud-run.js +332 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/handlers/cloud-run.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/handlers/edge-function.d.ts +33 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/handlers/edge-function.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/handlers/edge-function.js +213 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/handlers/edge-function.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/handlers/index.d.ts +13 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/handlers/index.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/handlers/index.js +15 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/handlers/index.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/index.d.ts +28 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/index.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/index.js +32 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/index.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/decision-event-emitter.d.ts +87 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/decision-event-emitter.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/decision-event-emitter.js +87 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/decision-event-emitter.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/execution-span-manager.d.ts +86 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/execution-span-manager.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/execution-span-manager.js +161 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/execution-span-manager.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/index.d.ts +13 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/index.js +13 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/index.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/ruvector-client.d.ts +108 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/ruvector-client.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/ruvector-client.js +202 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/ruvector-client.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/telemetry.d.ts +105 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/telemetry.d.ts.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/telemetry.js +205 -0
- package/dist/bundled-agents/governance-dashboard-agents/dist/infrastructure/telemetry.js.map +1 -0
- package/dist/bundled-agents/governance-dashboard-agents/package-lock.json +1959 -0
- package/dist/bundled-agents/governance-dashboard-agents/package.json +76 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/agents/change-impact/agent.ts +787 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/agents/change-impact/factory.ts +71 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/agents/change-impact/index.ts +21 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/agents/change-impact/types.ts +82 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/agents/governance-audit/agent.ts +537 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/agents/governance-audit/factory.ts +80 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/agents/governance-audit/index.ts +32 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/agents/governance-audit/types.ts +68 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/agents/usage-oversight/agent.ts +748 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/agents/usage-oversight/factory.ts +68 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/agents/usage-oversight/index.ts +34 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/agents/usage-oversight/types.ts +105 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/config/index.ts +14 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/config/phase4-layer1.ts +131 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/contracts/base-agent.ts +172 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/contracts/change-impact.ts +424 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/contracts/decision-event.ts +149 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/contracts/execution-span.ts +78 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/contracts/governance-audit.ts +280 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/contracts/index.ts +16 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/contracts/usage-oversight.ts +400 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/contracts/validation.ts +119 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/handlers/cloud-function.ts +357 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/handlers/cloud-run.ts +389 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/handlers/edge-function.ts +254 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/handlers/index.ts +21 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/index.ts +35 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/infrastructure/decision-event-emitter.ts +156 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/infrastructure/execution-span-manager.ts +213 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/infrastructure/index.ts +13 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/infrastructure/ruvector-client.ts +286 -0
- package/dist/bundled-agents/governance-dashboard-agents/src/infrastructure/telemetry.ts +301 -0
- package/dist/bundled-agents/incident-manager-agents/dist/claude.js +68 -0
- package/dist/bundled-agents/incident-manager-agents/dist/index.d.ts +37 -0
- package/dist/bundled-agents/incident-manager-agents/dist/index.d.ts.map +1 -0
- package/dist/bundled-agents/incident-manager-agents/dist/index.js +372 -0
- package/dist/bundled-agents/incident-manager-agents/dist/index.js.map +1 -0
- package/dist/bundled-agents/incident-manager-agents/package.json +28 -0
- package/dist/bundled-agents/incident-manager-agents/src/index.ts +480 -0
- package/dist/bundled-agents/inference-gateway-agents/index.js +140 -0
- package/dist/bundled-agents/inference-gateway-agents/package-lock.json +6328 -0
- package/dist/bundled-agents/inference-gateway-agents/package.json +19 -0
- package/dist/bundled-agents/latency-lens-agents/index.js +341 -0
- package/dist/bundled-agents/latency-lens-agents/package-lock.json +1710 -0
- package/dist/bundled-agents/latency-lens-agents/package.json +17 -0
- package/dist/bundled-agents/latency-lens-agents/src/adapters/mod.rs +285 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/cold_start_mitigation/agent.rs +657 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/cold_start_mitigation/detector.rs +720 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/cold_start_mitigation/mod.rs +45 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/cold_start_mitigation/schemas.rs +401 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/contracts/decision_event.rs +374 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/contracts/latency_schemas.rs +439 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/contracts/mod.rs +18 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/contracts/timing_events.rs +296 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/edge_function.rs +667 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/execution_graph.rs +659 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/latency_analysis/agent.rs +426 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/latency_analysis/analyzer.rs +791 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/latency_analysis/mod.rs +40 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/latency_analysis/telemetry.rs +134 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/mod.rs +70 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/ruvector/client.rs +335 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/ruvector/error.rs +61 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/ruvector/mod.rs +21 -0
- package/dist/bundled-agents/latency-lens-agents/src/agents/ruvector/types.rs +203 -0
- package/dist/bundled-agents/latency-lens-agents/src/benchmarks/io.rs +211 -0
- package/dist/bundled-agents/latency-lens-agents/src/benchmarks/markdown.rs +334 -0
- package/dist/bundled-agents/latency-lens-agents/src/benchmarks/mod.rs +245 -0
- package/dist/bundled-agents/latency-lens-agents/src/benchmarks/result.rs +169 -0
- package/dist/bundled-agents/latency-lens-agents/src/cli/commands/analyze.rs +432 -0
- package/dist/bundled-agents/latency-lens-agents/src/cli/commands/benchmark.rs +292 -0
- package/dist/bundled-agents/latency-lens-agents/src/cli/commands/cold_start.rs +553 -0
- package/dist/bundled-agents/latency-lens-agents/src/cli/commands/compare.rs +375 -0
- package/dist/bundled-agents/latency-lens-agents/src/cli/commands/export.rs +92 -0
- package/dist/bundled-agents/latency-lens-agents/src/cli/commands/inspect.rs +156 -0
- package/dist/bundled-agents/latency-lens-agents/src/cli/commands/mod.rs +39 -0
- package/dist/bundled-agents/latency-lens-agents/src/cli/commands/profile.rs +226 -0
- package/dist/bundled-agents/latency-lens-agents/src/cli/commands/replay.rs +106 -0
- package/dist/bundled-agents/latency-lens-agents/src/cli/commands/run.rs +217 -0
- package/dist/bundled-agents/latency-lens-agents/src/cli/commands/serve.rs +702 -0
- package/dist/bundled-agents/latency-lens-agents/src/cli/commands/validate.rs +325 -0
- package/dist/bundled-agents/latency-lens-agents/src/cli.rs +752 -0
- package/dist/bundled-agents/latency-lens-agents/src/config.rs +521 -0
- package/dist/bundled-agents/latency-lens-agents/src/consumers/analytics_hub.rs +668 -0
- package/dist/bundled-agents/latency-lens-agents/src/consumers/mod.rs +234 -0
- package/dist/bundled-agents/latency-lens-agents/src/consumers/observatory.rs +426 -0
- package/dist/bundled-agents/latency-lens-agents/src/consumers/testbench.rs +620 -0
- package/dist/bundled-agents/latency-lens-agents/src/lib.rs +440 -0
- package/dist/bundled-agents/latency-lens-agents/src/main.rs +210 -0
- package/dist/bundled-agents/latency-lens-agents/src/orchestrator.rs +371 -0
- package/dist/bundled-agents/latency-lens-agents/src/phase2/agent_config.rs +273 -0
- package/dist/bundled-agents/latency-lens-agents/src/phase2/cache.rs +431 -0
- package/dist/bundled-agents/latency-lens-agents/src/phase2/mod.rs +43 -0
- package/dist/bundled-agents/latency-lens-agents/src/phase2/runtime.rs +373 -0
- package/dist/bundled-agents/latency-lens-agents/src/phase2/signals.rs +594 -0
- package/dist/bundled-agents/marketplace-agents/index.js +208 -0
- package/dist/bundled-agents/marketplace-agents/package-lock.json +15 -0
- package/dist/bundled-agents/marketplace-agents/package.json +9 -0
- package/dist/bundled-agents/marketplace-agents/src/unified-service/execution-context.js +258 -0
- package/dist/bundled-agents/marketplace-agents/src/unified-service/server.js +735 -0
- package/dist/bundled-agents/memory-graph-agents/functions/index.js +208 -0
- package/dist/bundled-agents/memory-graph-agents/package-lock.json +8079 -0
- package/dist/bundled-agents/memory-graph-agents/package.json +24 -0
- package/dist/bundled-agents/memory-graph-agents/src/bin/server.rs +402 -0
- package/dist/bundled-agents/memory-graph-agents/src/engine/async_memory_graph.rs +1578 -0
- package/dist/bundled-agents/memory-graph-agents/src/engine/mod.rs +1163 -0
- package/dist/bundled-agents/memory-graph-agents/src/error.rs +687 -0
- package/dist/bundled-agents/memory-graph-agents/src/execution/agent-adapter.ts +249 -0
- package/dist/bundled-agents/memory-graph-agents/src/execution/artifact-builder.ts +237 -0
- package/dist/bundled-agents/memory-graph-agents/src/execution/executor.ts +217 -0
- package/dist/bundled-agents/memory-graph-agents/src/execution/index.ts +68 -0
- package/dist/bundled-agents/memory-graph-agents/src/execution/types.ts +181 -0
- package/dist/bundled-agents/memory-graph-agents/src/grpc/converters.rs +446 -0
- package/dist/bundled-agents/memory-graph-agents/src/grpc/handlers.rs +87 -0
- package/dist/bundled-agents/memory-graph-agents/src/grpc/llm.memory.graph.v1.rs +2852 -0
- package/dist/bundled-agents/memory-graph-agents/src/grpc/mod.rs +73 -0
- package/dist/bundled-agents/memory-graph-agents/src/grpc/service.rs +557 -0
- package/dist/bundled-agents/memory-graph-agents/src/grpc/streaming.rs +70 -0
- package/dist/bundled-agents/memory-graph-agents/src/integrations/mod.rs +243 -0
- package/dist/bundled-agents/memory-graph-agents/src/integrations/registry/client.rs +483 -0
- package/dist/bundled-agents/memory-graph-agents/src/integrations/registry/mod.rs +13 -0
- package/dist/bundled-agents/memory-graph-agents/src/integrations/registry/types.rs +392 -0
- package/dist/bundled-agents/memory-graph-agents/src/integrations/vault/archiver.rs +650 -0
- package/dist/bundled-agents/memory-graph-agents/src/integrations/vault/mod.rs +13 -0
- package/dist/bundled-agents/memory-graph-agents/src/integrations/vault/retention.rs +430 -0
- package/dist/bundled-agents/memory-graph-agents/src/lib.rs +79 -0
- package/dist/bundled-agents/memory-graph-agents/src/migration.rs +478 -0
- package/dist/bundled-agents/memory-graph-agents/src/observatory/config.rs +113 -0
- package/dist/bundled-agents/memory-graph-agents/src/observatory/emitter.rs +648 -0
- package/dist/bundled-agents/memory-graph-agents/src/observatory/events.rs +437 -0
- package/dist/bundled-agents/memory-graph-agents/src/observatory/kafka.rs +621 -0
- package/dist/bundled-agents/memory-graph-agents/src/observatory/metrics.rs +244 -0
- package/dist/bundled-agents/memory-graph-agents/src/observatory/mod.rs +72 -0
- package/dist/bundled-agents/memory-graph-agents/src/observatory/prometheus.rs +1296 -0
- package/dist/bundled-agents/memory-graph-agents/src/observatory/publisher.rs +224 -0
- package/dist/bundled-agents/memory-graph-agents/src/observatory/streaming.rs +435 -0
- package/dist/bundled-agents/memory-graph-agents/src/plugin/hooks.rs +487 -0
- package/dist/bundled-agents/memory-graph-agents/src/plugin/manager.rs +541 -0
- package/dist/bundled-agents/memory-graph-agents/src/plugin/mod.rs +429 -0
- package/dist/bundled-agents/memory-graph-agents/src/plugin/registry.rs +515 -0
- package/dist/bundled-agents/memory-graph-agents/src/query/async_query.rs +623 -0
- package/dist/bundled-agents/memory-graph-agents/src/query/mod.rs +697 -0
- package/dist/bundled-agents/memory-graph-agents/src/storage/async_sled_backend.rs +442 -0
- package/dist/bundled-agents/memory-graph-agents/src/storage/cache.rs +288 -0
- package/dist/bundled-agents/memory-graph-agents/src/storage/mod.rs +202 -0
- package/dist/bundled-agents/memory-graph-agents/src/storage/pooled_backend.rs +564 -0
- package/dist/bundled-agents/memory-graph-agents/src/storage/serialization.rs +142 -0
- package/dist/bundled-agents/memory-graph-agents/src/storage/sled_backend.rs +336 -0
- package/dist/bundled-agents/memory-graph-agents/src/types/config.rs +104 -0
- package/dist/bundled-agents/memory-graph-agents/src/types/edges.rs +1067 -0
- package/dist/bundled-agents/memory-graph-agents/src/types/ids.rs +289 -0
- package/dist/bundled-agents/memory-graph-agents/src/types/mod.rs +18 -0
- package/dist/bundled-agents/memory-graph-agents/src/types/nodes.rs +1712 -0
- package/dist/bundled-agents/observatory-agents/functions/index.js +479 -0
- package/dist/bundled-agents/observatory-agents/package-lock.json +2979 -0
- package/dist/bundled-agents/observatory-agents/package.json +18 -0
- package/dist/bundled-agents/orchestrator-agents/functions/contracts/index.js +590 -0
- package/dist/bundled-agents/orchestrator-agents/functions/index.js +442 -0
- package/dist/bundled-agents/orchestrator-agents/functions/test.js +325 -0
- package/dist/bundled-agents/orchestrator-agents/index.js +6 -0
- package/dist/bundled-agents/orchestrator-agents/package.json +20 -0
- package/dist/bundled-agents/platform-agents/dist/agents/decision-memo.d.ts +2 -0
- package/dist/bundled-agents/platform-agents/dist/agents/decision-memo.d.ts.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/agents/decision-memo.js +361 -0
- package/dist/bundled-agents/platform-agents/dist/agents/decision-memo.js.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/agents/decision.d.ts +2 -0
- package/dist/bundled-agents/platform-agents/dist/agents/decision.d.ts.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/agents/decision.js +210 -0
- package/dist/bundled-agents/platform-agents/dist/agents/decision.js.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/agents/executive-summary.d.ts +2 -0
- package/dist/bundled-agents/platform-agents/dist/agents/executive-summary.d.ts.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/agents/executive-summary.js +194 -0
- package/dist/bundled-agents/platform-agents/dist/agents/executive-summary.js.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/agents/risk-score.d.ts +2 -0
- package/dist/bundled-agents/platform-agents/dist/agents/risk-score.d.ts.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/agents/risk-score.js +287 -0
- package/dist/bundled-agents/platform-agents/dist/agents/risk-score.js.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/claude.d.ts +10 -0
- package/dist/bundled-agents/platform-agents/dist/claude.d.ts.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/claude.js +68 -0
- package/dist/bundled-agents/platform-agents/dist/claude.js.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/cors.d.ts +4 -0
- package/dist/bundled-agents/platform-agents/dist/cors.d.ts.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/cors.js +20 -0
- package/dist/bundled-agents/platform-agents/dist/cors.js.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/envelope.d.ts +18 -0
- package/dist/bundled-agents/platform-agents/dist/envelope.d.ts.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/envelope.js +20 -0
- package/dist/bundled-agents/platform-agents/dist/envelope.js.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/health.d.ts +3 -0
- package/dist/bundled-agents/platform-agents/dist/health.d.ts.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/health.js +20 -0
- package/dist/bundled-agents/platform-agents/dist/health.js.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/index.d.ts +2 -0
- package/dist/bundled-agents/platform-agents/dist/index.d.ts.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/index.js +171 -0
- package/dist/bundled-agents/platform-agents/dist/index.js.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/router.d.ts +8 -0
- package/dist/bundled-agents/platform-agents/dist/router.d.ts.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/router.js +29 -0
- package/dist/bundled-agents/platform-agents/dist/router.js.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/text-analysis.d.ts +29 -0
- package/dist/bundled-agents/platform-agents/dist/text-analysis.d.ts.map +1 -0
- package/dist/bundled-agents/platform-agents/dist/text-analysis.js +188 -0
- package/dist/bundled-agents/platform-agents/dist/text-analysis.js.map +1 -0
- package/dist/bundled-agents/platform-agents/package-lock.json +1723 -0
- package/dist/bundled-agents/platform-agents/package.json +22 -0
- package/dist/bundled-agents/platform-agents/src/agents/decision-memo.ts +463 -0
- package/dist/bundled-agents/platform-agents/src/agents/decision.ts +234 -0
- package/dist/bundled-agents/platform-agents/src/agents/executive-summary.ts +229 -0
- package/dist/bundled-agents/platform-agents/src/agents/risk-score.ts +327 -0
- package/dist/bundled-agents/platform-agents/src/claude.ts +68 -0
- package/dist/bundled-agents/platform-agents/src/cors.ts +24 -0
- package/dist/bundled-agents/platform-agents/src/envelope.ts +37 -0
- package/dist/bundled-agents/platform-agents/src/health.ts +20 -0
- package/dist/bundled-agents/platform-agents/src/index.ts +171 -0
- package/dist/bundled-agents/platform-agents/src/router.ts +38 -0
- package/dist/bundled-agents/platform-agents/src/text-analysis.ts +238 -0
- package/dist/bundled-agents/policy-engine-agents/dist/claude.js +68 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/agents/approval-routing/agent.js +833 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/agents/approval-routing/handler.js +397 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/agents/constraint-solver/agent.js +632 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/agents/constraint-solver/handler.js +333 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/agents/contracts/approval-routing.js +14 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/agents/contracts/constraint-solver.js +14 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/agents/contracts/decision-event.js +13 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/agents/policy-enforcement/agent.js +605 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/agents/policy-enforcement/handler.js +331 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/api/middleware/error-handler.js +124 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/core/engine/policy-engine.js +278 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/core/evaluator/condition-evaluator.js +196 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/core/primitives/cost-calculator.js +176 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/core/primitives/index.js +22 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/core/primitives/pii-detector.js +143 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/core/primitives/token-counter.js +93 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/db/client.js +204 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/db/models/policy-repository.js +263 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/execution/context.js +46 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/execution/errors.js +52 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/execution/executor.js +143 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/execution/middleware.js +48 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/execution/spans.js +89 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/execution/types.js +9 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/functions/handler.js +213 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/governance/contracts/governance-signals.js +39 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/integrations/observatory/client.js +397 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/integrations/observatory/index.js +21 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/integrations/ruvector-service/client.js +446 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/integrations/ruvector-service/index.js +22 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/types/config.js +5 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/types/policy.js +37 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/utils/config.js +70 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/utils/errors.js +130 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/utils/logger.js +35 -0
- package/dist/bundled-agents/policy-engine-agents/package-lock.json +15377 -0
- package/dist/bundled-agents/policy-engine-agents/package.json +131 -0
- package/dist/bundled-agents/policy-engine-agents/src/agents/approval-routing/agent.ts +845 -0
- package/dist/bundled-agents/policy-engine-agents/src/agents/approval-routing/handler.ts +366 -0
- package/dist/bundled-agents/policy-engine-agents/src/agents/approval-routing/index.ts +4 -0
- package/dist/bundled-agents/policy-engine-agents/src/agents/constraint-solver/agent.ts +644 -0
- package/dist/bundled-agents/policy-engine-agents/src/agents/constraint-solver/handler.ts +276 -0
- package/dist/bundled-agents/policy-engine-agents/src/agents/constraint-solver/index.ts +19 -0
- package/dist/bundled-agents/policy-engine-agents/src/agents/contracts/approval-routing.ts +277 -0
- package/dist/bundled-agents/policy-engine-agents/src/agents/contracts/constraint-solver.ts +155 -0
- package/dist/bundled-agents/policy-engine-agents/src/agents/contracts/decision-event.ts +227 -0
- package/dist/bundled-agents/policy-engine-agents/src/agents/contracts/index.ts +10 -0
- package/dist/bundled-agents/policy-engine-agents/src/agents/index.ts +51 -0
- package/dist/bundled-agents/policy-engine-agents/src/agents/policy-enforcement/agent.ts +605 -0
- package/dist/bundled-agents/policy-engine-agents/src/agents/policy-enforcement/handler.ts +282 -0
- package/dist/bundled-agents/policy-engine-agents/src/agents/policy-enforcement/index.ts +7 -0
- package/dist/bundled-agents/policy-engine-agents/src/api/middleware/auth.ts +242 -0
- package/dist/bundled-agents/policy-engine-agents/src/api/middleware/error-handler.ts +148 -0
- package/dist/bundled-agents/policy-engine-agents/src/api/middleware/rate-limit.ts +173 -0
- package/dist/bundled-agents/policy-engine-agents/src/api/routes/agents.ts +121 -0
- package/dist/bundled-agents/policy-engine-agents/src/api/routes/approval-routing.ts +147 -0
- package/dist/bundled-agents/policy-engine-agents/src/api/routes/constraint-solver.ts +61 -0
- package/dist/bundled-agents/policy-engine-agents/src/api/routes/evaluations.ts +423 -0
- package/dist/bundled-agents/policy-engine-agents/src/api/routes/internal-evaluate.ts +168 -0
- package/dist/bundled-agents/policy-engine-agents/src/api/routes/policies.ts +808 -0
- package/dist/bundled-agents/policy-engine-agents/src/api/server.ts +210 -0
- package/dist/bundled-agents/policy-engine-agents/src/cache/cache-manager.ts +269 -0
- package/dist/bundled-agents/policy-engine-agents/src/cache/l1/memory-cache.ts +197 -0
- package/dist/bundled-agents/policy-engine-agents/src/cache/l2/redis-cache.ts +288 -0
- package/dist/bundled-agents/policy-engine-agents/src/cli/index.ts +883 -0
- package/dist/bundled-agents/policy-engine-agents/src/commands/agent.ts +323 -0
- package/dist/bundled-agents/policy-engine-agents/src/commands/approval-routing.ts +496 -0
- package/dist/bundled-agents/policy-engine-agents/src/commands/index.ts +35 -0
- package/dist/bundled-agents/policy-engine-agents/src/commands/policy.ts +445 -0
- package/dist/bundled-agents/policy-engine-agents/src/core/engine/policy-engine.ts +263 -0
- package/dist/bundled-agents/policy-engine-agents/src/core/evaluator/condition-evaluator.ts +233 -0
- package/dist/bundled-agents/policy-engine-agents/src/core/index.ts +22 -0
- package/dist/bundled-agents/policy-engine-agents/src/core/parser/index.ts +56 -0
- package/dist/bundled-agents/policy-engine-agents/src/core/parser/json-parser.ts +66 -0
- package/dist/bundled-agents/policy-engine-agents/src/core/parser/yaml-parser.ts +67 -0
- package/dist/bundled-agents/policy-engine-agents/src/core/primitives/cost-calculator.ts +232 -0
- package/dist/bundled-agents/policy-engine-agents/src/core/primitives/index.ts +7 -0
- package/dist/bundled-agents/policy-engine-agents/src/core/primitives/pii-detector.ts +171 -0
- package/dist/bundled-agents/policy-engine-agents/src/core/primitives/token-counter.ts +109 -0
- package/dist/bundled-agents/policy-engine-agents/src/core/validator/schema-validator.ts +106 -0
- package/dist/bundled-agents/policy-engine-agents/src/db/client.ts +116 -0
- package/dist/bundled-agents/policy-engine-agents/src/db/migrate.ts +466 -0
- package/dist/bundled-agents/policy-engine-agents/src/db/models/api-key-repository.ts +342 -0
- package/dist/bundled-agents/policy-engine-agents/src/db/models/evaluation-repository.ts +278 -0
- package/dist/bundled-agents/policy-engine-agents/src/db/models/policy-repository.ts +204 -0
- package/dist/bundled-agents/policy-engine-agents/src/db/schema.sql +164 -0
- package/dist/bundled-agents/policy-engine-agents/src/execution/context.ts +63 -0
- package/dist/bundled-agents/policy-engine-agents/src/execution/errors.ts +28 -0
- package/dist/bundled-agents/policy-engine-agents/src/execution/executor.ts +135 -0
- package/dist/bundled-agents/policy-engine-agents/src/execution/index.ts +48 -0
- package/dist/bundled-agents/policy-engine-agents/src/execution/middleware.ts +63 -0
- package/dist/bundled-agents/policy-engine-agents/src/execution/spans.ts +88 -0
- package/dist/bundled-agents/policy-engine-agents/src/execution/types.ts +90 -0
- package/dist/bundled-agents/policy-engine-agents/src/functions/handler.ts +253 -0
- package/dist/bundled-agents/policy-engine-agents/src/governance/contracts/governance-signals.ts +283 -0
- package/dist/bundled-agents/policy-engine-agents/src/governance/contracts/index.ts +4 -0
- package/dist/bundled-agents/policy-engine-agents/src/governance/emitters/governance-signal-emitter.ts +504 -0
- package/dist/bundled-agents/policy-engine-agents/src/governance/emitters/index.ts +4 -0
- package/dist/bundled-agents/policy-engine-agents/src/governance/index.ts +91 -0
- package/dist/bundled-agents/policy-engine-agents/src/grpc/server.ts +118 -0
- package/dist/bundled-agents/policy-engine-agents/src/grpc/services/policy-service.ts +409 -0
- package/dist/bundled-agents/policy-engine-agents/src/index.ts +124 -0
- package/dist/bundled-agents/policy-engine-agents/src/integrations/config-manager/client.ts +336 -0
- package/dist/bundled-agents/policy-engine-agents/src/integrations/config-manager/index.ts +5 -0
- package/dist/bundled-agents/policy-engine-agents/src/integrations/costops/client.ts +246 -0
- package/dist/bundled-agents/policy-engine-agents/src/integrations/edge/client.ts +240 -0
- package/dist/bundled-agents/policy-engine-agents/src/integrations/governance/client.ts +218 -0
- package/dist/bundled-agents/policy-engine-agents/src/integrations/observatory/client.ts +388 -0
- package/dist/bundled-agents/policy-engine-agents/src/integrations/observatory/index.ts +5 -0
- package/dist/bundled-agents/policy-engine-agents/src/integrations/ruvector-service/client.ts +457 -0
- package/dist/bundled-agents/policy-engine-agents/src/integrations/ruvector-service/index.ts +6 -0
- package/dist/bundled-agents/policy-engine-agents/src/integrations/schema-registry/client.ts +243 -0
- package/dist/bundled-agents/policy-engine-agents/src/integrations/schema-registry/index.ts +5 -0
- package/dist/bundled-agents/policy-engine-agents/src/integrations/shield/client.ts +159 -0
- package/dist/bundled-agents/policy-engine-agents/src/observability/metrics.ts +220 -0
- package/dist/bundled-agents/policy-engine-agents/src/observability/tracing.ts +251 -0
- package/dist/bundled-agents/policy-engine-agents/src/security/agentics-identity.ts +343 -0
- package/dist/bundled-agents/policy-engine-agents/src/security/audit-trail.ts +307 -0
- package/dist/bundled-agents/policy-engine-agents/src/security/index.ts +89 -0
- package/dist/bundled-agents/policy-engine-agents/src/security/metrics.ts +235 -0
- package/dist/bundled-agents/policy-engine-agents/src/security/policy-governance.ts +440 -0
- package/dist/bundled-agents/policy-engine-agents/src/security/rate-limiter.ts +174 -0
- package/dist/bundled-agents/policy-engine-agents/src/security/versioned-policy-repository.ts +453 -0
- package/dist/bundled-agents/policy-engine-agents/src/synthesis/builder.ts +935 -0
- package/dist/bundled-agents/policy-engine-agents/src/synthesis/index.ts +7 -0
- package/dist/bundled-agents/policy-engine-agents/src/synthesis/types.ts +177 -0
- package/dist/bundled-agents/policy-engine-agents/src/types/config.ts +80 -0
- package/dist/bundled-agents/policy-engine-agents/src/types/policy.ts +167 -0
- package/dist/bundled-agents/policy-engine-agents/src/utils/config.ts +78 -0
- package/dist/bundled-agents/policy-engine-agents/src/utils/errors.ts +79 -0
- package/dist/bundled-agents/policy-engine-agents/src/utils/logger.ts +32 -0
- package/dist/bundled-agents/registry-agents/dist/agents/bootstrap-agent.d.ts +9 -0
- package/dist/bundled-agents/registry-agents/dist/agents/bootstrap-agent.d.ts.map +1 -0
- package/dist/bundled-agents/registry-agents/dist/agents/bootstrap-agent.js +33 -0
- package/dist/bundled-agents/registry-agents/dist/agents/bootstrap-agent.js.map +1 -0
- package/dist/bundled-agents/registry-agents/dist/agents/index-agent.d.ts +9 -0
- package/dist/bundled-agents/registry-agents/dist/agents/index-agent.d.ts.map +1 -0
- package/dist/bundled-agents/registry-agents/dist/agents/index-agent.js +22 -0
- package/dist/bundled-agents/registry-agents/dist/agents/index-agent.js.map +1 -0
- package/dist/bundled-agents/registry-agents/dist/agents/reputation-agent.d.ts +9 -0
- package/dist/bundled-agents/registry-agents/dist/agents/reputation-agent.d.ts.map +1 -0
- package/dist/bundled-agents/registry-agents/dist/agents/reputation-agent.js +27 -0
- package/dist/bundled-agents/registry-agents/dist/agents/reputation-agent.js.map +1 -0
- package/dist/bundled-agents/registry-agents/dist/claude.js +68 -0
- package/dist/bundled-agents/registry-agents/dist/contracts.d.ts +217 -0
- package/dist/bundled-agents/registry-agents/dist/contracts.d.ts.map +1 -0
- package/dist/bundled-agents/registry-agents/dist/contracts.js +102 -0
- package/dist/bundled-agents/registry-agents/dist/contracts.js.map +1 -0
- package/dist/bundled-agents/registry-agents/dist/index.d.ts +25 -0
- package/dist/bundled-agents/registry-agents/dist/index.d.ts.map +1 -0
- package/dist/bundled-agents/registry-agents/dist/index.js +217 -0
- package/dist/bundled-agents/registry-agents/dist/index.js.map +1 -0
- package/dist/bundled-agents/registry-agents/dist/index.test.d.ts +2 -0
- package/dist/bundled-agents/registry-agents/dist/index.test.d.ts.map +1 -0
- package/dist/bundled-agents/registry-agents/dist/index.test.js +218 -0
- package/dist/bundled-agents/registry-agents/dist/index.test.js.map +1 -0
- package/dist/bundled-agents/registry-agents/package-lock.json +1713 -0
- package/dist/bundled-agents/registry-agents/package.json +23 -0
- package/dist/bundled-agents/research-lab-agents/index.js +214 -0
- package/dist/bundled-agents/research-lab-agents/package-lock.json +15 -0
- package/dist/bundled-agents/research-lab-agents/package.json +20 -0
- package/dist/bundled-agents/schema-registry-agents/index.js +245 -0
- package/dist/bundled-agents/schema-registry-agents/package-lock.json +5774 -0
- package/dist/bundled-agents/schema-registry-agents/package.json +19 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/alert.d.ts +3 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/alert.d.ts.map +1 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/alert.js +43 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/alert.js.map +1 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/anomaly.d.ts +3 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/anomaly.d.ts.map +1 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/anomaly.js +30 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/anomaly.js.map +1 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/correlation.d.ts +3 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/correlation.d.ts.map +1 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/correlation.js +53 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/correlation.js.map +1 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/drift.d.ts +3 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/drift.d.ts.map +1 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/drift.js +51 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/drift.js.map +1 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/rca.d.ts +3 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/rca.d.ts.map +1 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/rca.js +36 -0
- package/dist/bundled-agents/sentinel-agents/lib/agents/rca.js.map +1 -0
- package/dist/bundled-agents/sentinel-agents/lib/index.d.ts +2 -0
- package/dist/bundled-agents/sentinel-agents/lib/index.d.ts.map +1 -0
- package/dist/bundled-agents/sentinel-agents/lib/index.js +70 -0
- package/dist/bundled-agents/sentinel-agents/lib/index.js.map +1 -0
- package/dist/bundled-agents/sentinel-agents/package-lock.json +12591 -0
- package/dist/bundled-agents/sentinel-agents/package.json +62 -0
- package/dist/bundled-agents/sentinel-agents/src/agents/alert.ts +46 -0
- package/dist/bundled-agents/sentinel-agents/src/agents/anomaly.ts +33 -0
- package/dist/bundled-agents/sentinel-agents/src/agents/correlation.ts +56 -0
- package/dist/bundled-agents/sentinel-agents/src/agents/drift.ts +54 -0
- package/dist/bundled-agents/sentinel-agents/src/agents/rca.ts +38 -0
- package/dist/bundled-agents/sentinel-agents/src/index.ts +77 -0
- package/dist/bundled-agents/shield-agents/functions/index.ts +311 -0
- package/dist/bundled-agents/shield-agents/functions/package.json +36 -0
- package/dist/bundled-agents/shield-agents/functions/tsconfig.json +19 -0
- package/dist/bundled-agents/shield-agents/lib/decision-event.ts +331 -0
- package/dist/bundled-agents/shield-agents/lib/execution-span.ts +290 -0
- package/dist/bundled-agents/shield-agents/lib/index.ts +85 -0
- package/dist/bundled-agents/shield-agents/lib/package.json +58 -0
- package/dist/bundled-agents/shield-agents/lib/performance-boundaries.ts +188 -0
- package/dist/bundled-agents/shield-agents/lib/read-cache.ts +255 -0
- package/dist/bundled-agents/shield-agents/lib/startup-validator.ts +308 -0
- package/dist/bundled-agents/shield-agents/lib/tsconfig.json +21 -0
- package/dist/bundled-agents/shield-agents/package-lock.json +4862 -0
- package/dist/bundled-agents/shield-agents/package.json +49 -0
- package/dist/bundled-agents/simulator-agents/index.js +536 -0
- package/dist/bundled-agents/simulator-agents/package-lock.json +11977 -0
- package/dist/bundled-agents/simulator-agents/package.json +19 -0
- package/dist/bundled-agents/test-bench-agents/dist/.tsbuildinfo +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/claude.js +68 -0
- package/dist/bundled-agents/test-bench-agents/dist/cli.d.ts +3 -0
- package/dist/bundled-agents/test-bench-agents/dist/cli.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/cli.js +47 -0
- package/dist/bundled-agents/test-bench-agents/dist/cli.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/core/fleet-benchmark.d.ts +120 -0
- package/dist/bundled-agents/test-bench-agents/dist/core/fleet-benchmark.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/core/fleet-benchmark.js +129 -0
- package/dist/bundled-agents/test-bench-agents/dist/core/fleet-benchmark.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/core/llm-test-bench.d.ts +35 -0
- package/dist/bundled-agents/test-bench-agents/dist/core/llm-test-bench.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/core/llm-test-bench.js +246 -0
- package/dist/bundled-agents/test-bench-agents/dist/core/llm-test-bench.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/core/provider-client.d.ts +37 -0
- package/dist/bundled-agents/test-bench-agents/dist/core/provider-client.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/core/provider-client.js +135 -0
- package/dist/bundled-agents/test-bench-agents/dist/core/provider-client.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/evaluators/index.d.ts +28 -0
- package/dist/bundled-agents/test-bench-agents/dist/evaluators/index.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/evaluators/index.js +67 -0
- package/dist/bundled-agents/test-bench-agents/dist/evaluators/index.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/default-policy.d.ts +3 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/default-policy.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/default-policy.js +85 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/default-policy.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/index.d.ts +10 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/index.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/index.js +7 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/index.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/instrumented.d.ts +39 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/instrumented.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/instrumented.js +178 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/instrumented.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/policy-gate.d.ts +25 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/policy-gate.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/policy-gate.js +75 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/policy-gate.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/policy.d.ts +108 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/policy.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/policy.js +53 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/policy.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/span-manager.d.ts +28 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/span-manager.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/span-manager.js +164 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/span-manager.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/types.d.ts +37 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/types.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/types.js +9 -0
- package/dist/bundled-agents/test-bench-agents/dist/execution/types.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/index.d.ts +16 -0
- package/dist/bundled-agents/test-bench-agents/dist/index.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/index.js +13 -0
- package/dist/bundled-agents/test-bench-agents/dist/index.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/types/benchmarks.d.ts +87 -0
- package/dist/bundled-agents/test-bench-agents/dist/types/benchmarks.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/types/benchmarks.js +2 -0
- package/dist/bundled-agents/test-bench-agents/dist/types/benchmarks.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/types/evaluators.d.ts +98 -0
- package/dist/bundled-agents/test-bench-agents/dist/types/evaluators.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/types/evaluators.js +2 -0
- package/dist/bundled-agents/test-bench-agents/dist/types/evaluators.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/types/index.d.ts +20 -0
- package/dist/bundled-agents/test-bench-agents/dist/types/index.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/types/index.js +4 -0
- package/dist/bundled-agents/test-bench-agents/dist/types/index.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/types/providers.d.ts +64 -0
- package/dist/bundled-agents/test-bench-agents/dist/types/providers.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/types/providers.js +2 -0
- package/dist/bundled-agents/test-bench-agents/dist/types/providers.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/utils/cli-executor.d.ts +11 -0
- package/dist/bundled-agents/test-bench-agents/dist/utils/cli-executor.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/utils/cli-executor.js +95 -0
- package/dist/bundled-agents/test-bench-agents/dist/utils/cli-executor.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/utils/validators.d.ts +8 -0
- package/dist/bundled-agents/test-bench-agents/dist/utils/validators.d.ts.map +1 -0
- package/dist/bundled-agents/test-bench-agents/dist/utils/validators.js +94 -0
- package/dist/bundled-agents/test-bench-agents/dist/utils/validators.js.map +1 -0
- package/dist/bundled-agents/test-bench-agents/functions/dist/index.js +212 -0
- package/dist/bundled-agents/test-bench-agents/functions/index.ts +257 -0
- package/dist/bundled-agents/test-bench-agents/package-lock.json +12743 -0
- package/dist/bundled-agents/test-bench-agents/package.json +113 -0
- package/dist/bundled-agents/test-bench-agents/src/cli.ts +72 -0
- package/dist/bundled-agents/test-bench-agents/src/core/fleet-benchmark.ts +503 -0
- package/dist/bundled-agents/test-bench-agents/src/core/llm-test-bench.ts +420 -0
- package/dist/bundled-agents/test-bench-agents/src/core/provider-client.ts +233 -0
- package/dist/bundled-agents/test-bench-agents/src/evaluators/index.ts +137 -0
- package/dist/bundled-agents/test-bench-agents/src/execution/default-policy.ts +98 -0
- package/dist/bundled-agents/test-bench-agents/src/execution/index.ts +52 -0
- package/dist/bundled-agents/test-bench-agents/src/execution/instrumented.ts +337 -0
- package/dist/bundled-agents/test-bench-agents/src/execution/policy-gate.ts +166 -0
- package/dist/bundled-agents/test-bench-agents/src/execution/policy.ts +130 -0
- package/dist/bundled-agents/test-bench-agents/src/execution/span-manager.ts +292 -0
- package/dist/bundled-agents/test-bench-agents/src/execution/types.ts +125 -0
- package/dist/bundled-agents/test-bench-agents/src/index.ts +100 -0
- package/dist/bundled-agents/test-bench-agents/src/types/benchmarks.ts +219 -0
- package/dist/bundled-agents/test-bench-agents/src/types/evaluators.ts +253 -0
- package/dist/bundled-agents/test-bench-agents/src/types/index.ts +55 -0
- package/dist/bundled-agents/test-bench-agents/src/types/providers.ts +193 -0
- package/dist/bundled-agents/test-bench-agents/src/utils/cli-executor.ts +170 -0
- package/dist/bundled-agents/test-bench-agents/src/utils/validators.ts +166 -0
- package/dist/cli/index.js +52 -16
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/agents.d.ts +22 -1
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +701 -117
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/intent-classifier.d.ts +80 -0
- package/dist/commands/intent-classifier.d.ts.map +1 -0
- package/dist/commands/intent-classifier.js +378 -0
- package/dist/commands/intent-classifier.js.map +1 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +54 -32
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/simulate.d.ts.map +1 -1
- package/dist/commands/simulate.js +16 -5
- package/dist/commands/simulate.js.map +1 -1
- package/dist/pipeline/approval-gate.d.ts +23 -0
- package/dist/pipeline/approval-gate.d.ts.map +1 -0
- package/dist/pipeline/approval-gate.js +103 -0
- package/dist/pipeline/approval-gate.js.map +1 -0
- package/dist/pipeline/index.d.ts +18 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +17 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/phases/adr-ddd-generator.d.ts +10 -0
- package/dist/pipeline/phases/adr-ddd-generator.d.ts.map +1 -0
- package/dist/pipeline/phases/adr-ddd-generator.js +310 -0
- package/dist/pipeline/phases/adr-ddd-generator.js.map +1 -0
- package/dist/pipeline/phases/decision-gate.d.ts +9 -0
- package/dist/pipeline/phases/decision-gate.d.ts.map +1 -0
- package/dist/pipeline/phases/decision-gate.js +69 -0
- package/dist/pipeline/phases/decision-gate.js.map +1 -0
- package/dist/pipeline/phases/deep-research.d.ts +10 -0
- package/dist/pipeline/phases/deep-research.d.ts.map +1 -0
- package/dist/pipeline/phases/deep-research.js +161 -0
- package/dist/pipeline/phases/deep-research.js.map +1 -0
- package/dist/pipeline/phases/prompt-generator.d.ts +10 -0
- package/dist/pipeline/phases/prompt-generator.d.ts.map +1 -0
- package/dist/pipeline/phases/prompt-generator.js +209 -0
- package/dist/pipeline/phases/prompt-generator.js.map +1 -0
- package/dist/pipeline/phases/ruvflow-executor.d.ts +9 -0
- package/dist/pipeline/phases/ruvflow-executor.d.ts.map +1 -0
- package/dist/pipeline/phases/ruvflow-executor.js +176 -0
- package/dist/pipeline/phases/ruvflow-executor.js.map +1 -0
- package/dist/pipeline/phases/sparc-development.d.ts +10 -0
- package/dist/pipeline/phases/sparc-development.d.ts.map +1 -0
- package/dist/pipeline/phases/sparc-development.js +262 -0
- package/dist/pipeline/phases/sparc-development.js.map +1 -0
- package/dist/pipeline/pipeline-coordinator.d.ts +20 -0
- package/dist/pipeline/pipeline-coordinator.d.ts.map +1 -0
- package/dist/pipeline/pipeline-coordinator.js +164 -0
- package/dist/pipeline/pipeline-coordinator.js.map +1 -0
- package/dist/pipeline/types.d.ts +143 -0
- package/dist/pipeline/types.d.ts.map +1 -0
- package/dist/pipeline/types.js +8 -0
- package/dist/pipeline/types.js.map +1 -0
- package/dist/runtime/claude-code-runner.d.ts.map +1 -1
- package/dist/runtime/claude-code-runner.js +5 -10
- package/dist/runtime/claude-code-runner.js.map +1 -1
- package/dist/synthesis/simulation-artifact-generator.d.ts +34 -0
- package/dist/synthesis/simulation-artifact-generator.d.ts.map +1 -0
- package/dist/synthesis/simulation-artifact-generator.js +181 -0
- package/dist/synthesis/simulation-artifact-generator.js.map +1 -0
- package/dist/synthesis/simulation-renderers.d.ts +23 -0
- package/dist/synthesis/simulation-renderers.d.ts.map +1 -0
- package/dist/synthesis/simulation-renderers.js +355 -0
- package/dist/synthesis/simulation-renderers.js.map +1 -0
- package/dist/utils/credentials.d.ts +10 -0
- package/dist/utils/credentials.d.ts.map +1 -1
- package/dist/utils/credentials.js +28 -0
- package/dist/utils/credentials.js.map +1 -1
- package/package.json +5 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types/canonical-schema.ts","../src/types/pipeline-context.ts","../src/schema/validator.ts","../src/parsers/openapi-parser.ts","../src/parsers/anthropic-parser.ts","../src/core/type-mapper.ts","../src/core/template-engine.ts","../src/generators/base-generator.ts","../src/generators/python-generator.ts","../src/generators/typescript-generator.ts","../src/generators/rust-generator.ts","../src/generators/go-generator.ts","../src/generators/csharp-generator.ts","../src/generators/java-generator.ts","../src/generators/generator-orchestrator.ts","../src/adapters/connector-hub-adapter.ts","../src/adapters/schema-registry-adapter.ts","../src/adapters/config-manager-adapter.ts","../src/service/execution-context.ts","../src/service/cloud-function.ts","../src/agents/contracts/sdk-generator.contract.ts","../src/agents/sdk-generator/validator.ts","../src/agents/contracts/decision-events.ts","../src/agents/sdk-generator/emitter.ts","../src/agents/sdk-generator/handler.ts","../src/agents/cli-command-generator/types.ts","../src/agents/cli-command-generator/generator.ts","../src/agents/cli-command-generator/decision-emitter.ts","../src/agents/cli-command-generator/telemetry.ts","../src/agents/cli-command-generator/handler.ts","../src/agents/contracts/cli-command-generator.contract.ts","../src/agents/contracts/api-translation.contract.ts","../src/translators/api-translator.ts","../src/agents/contracts/version-compatibility.contract.ts","../src/agents/version-compatibility-agent/ruvector-client.ts","../src/agents/version-compatibility-agent/comparator.ts","../src/agents/version-compatibility-agent/index.ts"],"sourcesContent":["/**\n * Canonical Schema - Unified Intermediate Representation (UIR)\n *\n * This file defines the provider-agnostic schema format that serves as the\n * single source of truth for SDK generation across all languages.\n *\n * Design Principles:\n * 1. Lossless conversion from provider schemas\n * 2. Extensible without breaking changes\n * 3. Strongly typed and validated\n * 4. Version tracked for compatibility\n *\n * @module canonical-schema\n */\n\n/**\n * HTTP methods supported by API endpoints\n */\nexport enum HTTPMethod {\n GET = 'GET',\n POST = 'POST',\n PUT = 'PUT',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n HEAD = 'HEAD',\n OPTIONS = 'OPTIONS',\n}\n\n/**\n * Primitive type kinds in the canonical type system\n */\nexport enum PrimitiveTypeKind {\n String = 'string',\n Integer = 'integer',\n Float = 'float',\n Boolean = 'boolean',\n Null = 'null',\n}\n\n/**\n * All possible type kinds in the UIR\n */\nexport enum TypeKind {\n Primitive = 'primitive',\n Object = 'object',\n Array = 'array',\n Union = 'union',\n Enum = 'enum',\n Reference = 'reference',\n}\n\n/**\n * Authentication scheme types\n */\nexport enum AuthSchemeType {\n ApiKey = 'apiKey',\n Bearer = 'bearer',\n OAuth2 = 'oauth2',\n Basic = 'basic',\n}\n\n/**\n * OAuth2 flow types\n */\nexport enum OAuth2FlowType {\n AuthorizationCode = 'authorizationCode',\n ClientCredentials = 'clientCredentials',\n Implicit = 'implicit',\n Password = 'password',\n}\n\n/**\n * Metadata about the canonical schema version and provider\n */\nexport interface SchemaMetadata {\n /** Schema version for compatibility tracking */\n version: string;\n /** Provider identifier (e.g., 'openai', 'anthropic') */\n providerId: string;\n /** Provider display name */\n providerName: string;\n /** Provider API version */\n apiVersion: string;\n /** Schema generation timestamp */\n generatedAt: string;\n /** Additional provider-specific metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Base interface for all type definitions\n */\nexport interface BaseTypeDefinition {\n /** Unique identifier for this type */\n id: string;\n /** Type name */\n name: string;\n /** Type kind discriminator */\n kind: TypeKind;\n /** Human-readable description */\n description?: string;\n /** Whether this type is deprecated */\n deprecated?: boolean;\n /** Deprecation message */\n deprecationMessage?: string;\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Reference to another type by ID\n */\nexport interface TypeReference {\n /** Referenced type ID */\n typeId: string;\n /** Whether the reference is nullable */\n nullable?: boolean;\n}\n\n/**\n * Primitive type definition (string, integer, float, boolean, null)\n */\nexport interface PrimitiveType extends BaseTypeDefinition {\n kind: TypeKind.Primitive;\n /** Primitive type kind */\n primitiveKind: PrimitiveTypeKind;\n /** Validation constraints */\n constraints?: PrimitiveConstraints;\n}\n\n/**\n * Validation constraints for primitive types\n */\nexport interface PrimitiveConstraints {\n // String constraints\n minLength?: number;\n maxLength?: number;\n pattern?: string;\n format?: string; // email, uri, date-time, uuid, etc.\n\n // Numeric constraints\n minimum?: number;\n maximum?: number;\n exclusiveMinimum?: boolean;\n exclusiveMaximum?: boolean;\n multipleOf?: number;\n\n // Enum values (for string/number enums without dedicated enum type)\n enum?: Array<string | number>;\n}\n\n/**\n * Property definition for object types\n */\nexport interface PropertyDefinition {\n /** Property name */\n name: string;\n /** Property type reference */\n type: TypeReference;\n /** Property description */\n description?: string;\n /** Whether this property is required */\n required: boolean;\n /** Default value */\n default?: unknown;\n /** Validation constraints */\n constraints?: PrimitiveConstraints;\n /** Whether this property is deprecated */\n deprecated?: boolean;\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Object type definition (structs, classes, interfaces)\n */\nexport interface ObjectType extends BaseTypeDefinition {\n kind: TypeKind.Object;\n /** Object properties */\n properties: PropertyDefinition[];\n /** Names of required properties */\n required: string[];\n /** Additional properties type (if allowed) */\n additionalProperties?: TypeReference | boolean;\n /** Whether this is a discriminated union variant */\n discriminator?: string;\n}\n\n/**\n * Array type definition\n */\nexport interface ArrayType extends BaseTypeDefinition {\n kind: TypeKind.Array;\n /** Type of array items */\n items: TypeReference;\n /** Minimum number of items */\n minItems?: number;\n /** Maximum number of items */\n maxItems?: number;\n /** Whether items must be unique */\n uniqueItems?: boolean;\n}\n\n/**\n * Union type definition (oneOf, anyOf)\n */\nexport interface UnionType extends BaseTypeDefinition {\n kind: TypeKind.Union;\n /** Possible union variants */\n variants: TypeReference[];\n /** Discriminator property name (for tagged unions) */\n discriminator?: string;\n /** Mapping of discriminator values to variant types */\n discriminatorMapping?: Record<string, string>;\n}\n\n/**\n * Enum value definition\n */\nexport interface EnumValue {\n /** Enum value */\n value: string | number;\n /** Display name */\n name: string;\n /** Description */\n description?: string;\n /** Whether this value is deprecated */\n deprecated?: boolean;\n}\n\n/**\n * Enum type definition\n */\nexport interface EnumType extends BaseTypeDefinition {\n kind: TypeKind.Enum;\n /** Possible enum values */\n values: EnumValue[];\n /** Type of enum values (string or number) */\n valueType: 'string' | 'number';\n}\n\n/**\n * Type definition union (discriminated by 'kind')\n */\nexport type TypeDefinition =\n | PrimitiveType\n | ObjectType\n | ArrayType\n | UnionType\n | EnumType;\n\n/**\n * Parameter location in HTTP request\n */\nexport enum ParameterLocation {\n Path = 'path',\n Query = 'query',\n Header = 'header',\n Cookie = 'cookie',\n}\n\n/**\n * Parameter definition for API endpoints\n */\nexport interface ParameterDefinition {\n /** Parameter name */\n name: string;\n /** Where the parameter appears */\n in: ParameterLocation;\n /** Parameter type */\n type: TypeReference;\n /** Whether this parameter is required */\n required: boolean;\n /** Parameter description */\n description?: string;\n /** Default value */\n default?: unknown;\n /** Deprecated flag */\n deprecated?: boolean;\n}\n\n/**\n * Request body definition\n */\nexport interface RequestBodyDefinition {\n /** Request body type */\n type: TypeReference;\n /** Whether request body is required */\n required: boolean;\n /** Content type (e.g., 'application/json') */\n contentType: string;\n /** Description */\n description?: string;\n}\n\n/**\n * HTTP header definition\n */\nexport interface HeaderDefinition {\n /** Header name */\n name: string;\n /** Header type */\n type: TypeReference;\n /** Whether this header is required */\n required: boolean;\n /** Description */\n description?: string;\n}\n\n/**\n * HTTP response definition\n */\nexport interface ResponseDefinition {\n /** HTTP status code or 'default' */\n statusCode: number | 'default';\n /** Response body type (if any) */\n type?: TypeReference;\n /** Response description */\n description?: string;\n /** Response headers */\n headers?: HeaderDefinition[];\n /** Content type */\n contentType?: string;\n}\n\n/**\n * Rate limit specification\n */\nexport interface RateLimitSpec {\n /** Requests per time window */\n requests: number;\n /** Time window in seconds */\n windowSeconds: number;\n /** Rate limit scope (per user, per API key, etc.) */\n scope?: string;\n}\n\n/**\n * API endpoint definition\n */\nexport interface EndpointDefinition {\n /** Unique endpoint identifier */\n id: string;\n /** Operation ID (unique within API) */\n operationId: string;\n /** URL path template */\n path: string;\n /** HTTP method */\n method: HTTPMethod;\n /** Brief summary */\n summary?: string;\n /** Detailed description */\n description?: string;\n /** Path/query/header parameters */\n parameters?: ParameterDefinition[];\n /** Request body (for POST, PUT, PATCH) */\n requestBody?: RequestBodyDefinition;\n /** Possible responses */\n responses: ResponseDefinition[];\n /** Whether this endpoint supports streaming (SSE) */\n streaming: boolean;\n /** Required authentication schemes */\n authentication: string[];\n /** Rate limit specification */\n rateLimit?: RateLimitSpec;\n /** Tags for grouping */\n tags?: string[];\n /** Whether this endpoint is deprecated */\n deprecated?: boolean;\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * API key authentication scheme\n */\nexport interface ApiKeyAuthScheme {\n id: string;\n type: AuthSchemeType.ApiKey;\n /** Where the API key appears (header or query) */\n in: 'header' | 'query';\n /** Name of the header or query parameter */\n name: string;\n /** Description */\n description?: string;\n}\n\n/**\n * Bearer token authentication scheme\n */\nexport interface BearerAuthScheme {\n id: string;\n type: AuthSchemeType.Bearer;\n /** Bearer scheme (usually 'Bearer') */\n scheme: string;\n /** Description */\n description?: string;\n}\n\n/**\n * OAuth2 flow definition\n */\nexport interface OAuth2Flow {\n /** Flow type */\n type: OAuth2FlowType;\n /** Authorization URL (for authorizationCode, implicit) */\n authorizationUrl?: string;\n /** Token URL (for authorizationCode, clientCredentials, password) */\n tokenUrl?: string;\n /** Refresh URL (optional) */\n refreshUrl?: string;\n /** Available scopes */\n scopes?: Record<string, string>;\n}\n\n/**\n * OAuth2 authentication scheme\n */\nexport interface OAuth2AuthScheme {\n id: string;\n type: AuthSchemeType.OAuth2;\n /** OAuth2 flows */\n flows: OAuth2Flow[];\n /** Description */\n description?: string;\n}\n\n/**\n * Basic authentication scheme\n */\nexport interface BasicAuthScheme {\n id: string;\n type: AuthSchemeType.Basic;\n /** Description */\n description?: string;\n}\n\n/**\n * Authentication scheme union\n */\nexport type AuthScheme =\n | ApiKeyAuthScheme\n | BearerAuthScheme\n | OAuth2AuthScheme\n | BasicAuthScheme;\n\n/**\n * Error definition\n */\nexport interface ErrorDefinition {\n /** Error code or identifier */\n code: string;\n /** HTTP status code */\n statusCode: number;\n /** Error name */\n name: string;\n /** Error description */\n description?: string;\n /** Error type (for typed error responses) */\n type?: TypeReference;\n /** Whether this error is retryable */\n retryable?: boolean;\n}\n\n/**\n * Complete canonical schema\n *\n * This is the root type that represents a complete normalized API specification\n * from any provider, ready for code generation.\n */\nexport interface CanonicalSchema {\n /** Schema metadata */\n metadata: SchemaMetadata;\n /** All type definitions */\n types: TypeDefinition[];\n /** API endpoints */\n endpoints: EndpointDefinition[];\n /** Authentication schemes */\n authentication: AuthScheme[];\n /** Error definitions */\n errors: ErrorDefinition[];\n /** Additional global configuration */\n config?: Record<string, unknown>;\n}\n","/**\n * Pipeline Context Types\n *\n * Types for multi-agent orchestration pipeline integration.\n * Enables forge-agents to participate as a step in a larger\n * orchestration pipeline, receiving context from upstream agents\n * and emitting typed artifacts for downstream consumers.\n *\n * @module types/pipeline-context\n */\n\nimport { randomUUID } from 'crypto';\n\n// =============================================================================\n// PIPELINE CONTEXT\n// =============================================================================\n\n/**\n * Output from a previous pipeline step\n */\nexport interface PipelineStepOutput {\n step_id: string;\n domain: string;\n agent: string;\n output: Record<string, unknown>;\n}\n\n/**\n * Execution metadata from the orchestrator\n */\nexport interface PipelineExecutionMetadata {\n trace_id: string;\n initiated_by: string;\n [key: string]: unknown;\n}\n\n/**\n * Pipeline context passed from upstream agents\n */\nexport interface PipelineContext {\n plan_id: string;\n step_id: string;\n previous_steps: PipelineStepOutput[];\n execution_metadata: PipelineExecutionMetadata;\n}\n\n// =============================================================================\n// PIPELINE ARTIFACTS\n// =============================================================================\n\n/**\n * Artifact types produced by forge agents\n */\nexport type PipelineArtifactType =\n | 'forge_scaffold'\n | 'cli_wrapper'\n | 'api_translation'\n | 'version_report';\n\n/**\n * Typed artifact reference for downstream consumption\n */\nexport interface PipelineArtifact {\n artifact_id: string;\n type: PipelineArtifactType;\n content: Record<string, unknown>;\n}\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\n/**\n * Find a planner output in pipeline_context previous_steps.\n * Returns the planner step's output, or null if not found.\n */\nexport function findPlannerOutput(\n ctx?: PipelineContext\n): Record<string, unknown> | null {\n if (!ctx?.previous_steps) return null;\n const step = ctx.previous_steps.find(\n (s) => s.agent === 'planner' && s.output?.plan\n );\n return step?.output ?? null;\n}\n\n/**\n * Find an SDK scaffold output in pipeline_context previous_steps.\n * Returns the SDK step's output, or null if not found.\n */\nexport function findSDKScaffoldOutput(\n ctx?: PipelineContext\n): Record<string, unknown> | null {\n if (!ctx?.previous_steps) return null;\n const step = ctx.previous_steps.find(\n (s) => s.agent === 'sdk' && s.domain === 'forge'\n );\n return step?.output ?? null;\n}\n\n/**\n * Create a pipeline artifact with a generated UUID.\n */\nexport function createPipelineArtifact(\n type: PipelineArtifactType,\n content: Record<string, unknown>\n): PipelineArtifact {\n return { artifact_id: randomUUID(), type, content };\n}\n","/**\n * Schema Validator\n *\n * Validates canonical schema instances against the UIR specification.\n * Ensures all generated schemas are well-formed and complete before\n * proceeding to code generation.\n *\n * @module schema/validator\n */\n\nimport { z } from 'zod';\n\nimport type {\n CanonicalSchema,\n TypeDefinition,\n EndpointDefinition,\n AuthScheme,\n ErrorDefinition,\n} from '../types/canonical-schema.js';\nimport {\n HTTPMethod,\n PrimitiveTypeKind,\n TypeKind,\n AuthSchemeType,\n OAuth2FlowType,\n ParameterLocation,\n} from '../types/canonical-schema.js';\n\n/**\n * Validation result\n */\nexport interface ValidationResult {\n valid: boolean;\n errors: ValidationError[];\n}\n\n/**\n * Validation error\n */\nexport interface ValidationError {\n path: string;\n message: string;\n code: string;\n}\n\n/**\n * Zod schema for TypeReference\n */\nconst TypeReferenceSchema = z.object({\n typeId: z.string(),\n nullable: z.boolean().optional(),\n});\n\n/**\n * Zod schema for PrimitiveConstraints\n */\nconst PrimitiveConstraintsSchema = z.object({\n // String constraints\n minLength: z.number().optional(),\n maxLength: z.number().optional(),\n pattern: z.string().optional(),\n format: z.string().optional(),\n\n // Numeric constraints\n minimum: z.number().optional(),\n maximum: z.number().optional(),\n exclusiveMinimum: z.boolean().optional(),\n exclusiveMaximum: z.boolean().optional(),\n multipleOf: z.number().optional(),\n\n // Enum values\n enum: z.array(z.union([z.string(), z.number()])).optional(),\n});\n\n/**\n * Base type definition schema\n */\nconst BaseTypeDefinitionSchema = z.object({\n id: z.string(),\n name: z.string(),\n kind: z.nativeEnum(TypeKind),\n description: z.string().optional(),\n deprecated: z.boolean().optional(),\n deprecationMessage: z.string().optional(),\n metadata: z.record(z.unknown()).optional(),\n});\n\n/**\n * Primitive type schema\n */\nconst PrimitiveTypeSchema = BaseTypeDefinitionSchema.extend({\n kind: z.literal(TypeKind.Primitive),\n primitiveKind: z.nativeEnum(PrimitiveTypeKind),\n constraints: PrimitiveConstraintsSchema.optional(),\n});\n\n/**\n * Property definition schema\n */\nconst PropertyDefinitionSchema = z.object({\n name: z.string(),\n type: TypeReferenceSchema,\n description: z.string().optional(),\n required: z.boolean(),\n default: z.unknown().optional(),\n constraints: PrimitiveConstraintsSchema.optional(),\n deprecated: z.boolean().optional(),\n metadata: z.record(z.unknown()).optional(),\n});\n\n/**\n * Object type schema\n */\nconst ObjectTypeSchema = BaseTypeDefinitionSchema.extend({\n kind: z.literal(TypeKind.Object),\n properties: z.array(PropertyDefinitionSchema),\n required: z.array(z.string()),\n additionalProperties: z.union([TypeReferenceSchema, z.boolean()]).optional(),\n discriminator: z.string().optional(),\n});\n\n/**\n * Array type schema\n */\nconst ArrayTypeSchema = BaseTypeDefinitionSchema.extend({\n kind: z.literal(TypeKind.Array),\n items: TypeReferenceSchema,\n minItems: z.number().optional(),\n maxItems: z.number().optional(),\n uniqueItems: z.boolean().optional(),\n});\n\n/**\n * Union type schema\n */\nconst UnionTypeSchema = BaseTypeDefinitionSchema.extend({\n kind: z.literal(TypeKind.Union),\n variants: z.array(TypeReferenceSchema),\n discriminator: z.string().optional(),\n discriminatorMapping: z.record(z.string()).optional(),\n});\n\n/**\n * Enum value schema\n */\nconst EnumValueSchema = z.object({\n value: z.union([z.string(), z.number()]),\n name: z.string(),\n description: z.string().optional(),\n deprecated: z.boolean().optional(),\n});\n\n/**\n * Enum type schema\n */\nconst EnumTypeSchema = BaseTypeDefinitionSchema.extend({\n kind: z.literal(TypeKind.Enum),\n values: z.array(EnumValueSchema),\n valueType: z.enum(['string', 'number']),\n});\n\n/**\n * Type definition schema (discriminated union)\n */\nconst TypeDefinitionSchema: z.ZodType<TypeDefinition> = z.discriminatedUnion('kind', [\n PrimitiveTypeSchema,\n ObjectTypeSchema,\n ArrayTypeSchema,\n UnionTypeSchema,\n EnumTypeSchema,\n]);\n\n/**\n * Parameter definition schema\n */\nconst ParameterDefinitionSchema = z.object({\n name: z.string(),\n in: z.nativeEnum(ParameterLocation),\n type: TypeReferenceSchema,\n required: z.boolean(),\n description: z.string().optional(),\n default: z.unknown().optional(),\n deprecated: z.boolean().optional(),\n});\n\n/**\n * Request body definition schema\n */\nconst RequestBodyDefinitionSchema = z.object({\n type: TypeReferenceSchema,\n required: z.boolean(),\n contentType: z.string(),\n description: z.string().optional(),\n});\n\n/**\n * Header definition schema\n */\nconst HeaderDefinitionSchema = z.object({\n name: z.string(),\n type: TypeReferenceSchema,\n required: z.boolean(),\n description: z.string().optional(),\n});\n\n/**\n * Response definition schema\n */\nconst ResponseDefinitionSchema = z.object({\n statusCode: z.union([z.number(), z.literal('default')]),\n type: TypeReferenceSchema.optional(),\n description: z.string().optional(),\n headers: z.array(HeaderDefinitionSchema).optional(),\n contentType: z.string().optional(),\n});\n\n/**\n * Rate limit spec schema\n */\nconst RateLimitSpecSchema = z.object({\n requests: z.number(),\n windowSeconds: z.number(),\n scope: z.string().optional(),\n});\n\n/**\n * Endpoint definition schema\n */\nconst EndpointDefinitionSchema: z.ZodType<EndpointDefinition> = z.object({\n id: z.string(),\n operationId: z.string(),\n path: z.string(),\n method: z.nativeEnum(HTTPMethod),\n summary: z.string().optional(),\n description: z.string().optional(),\n parameters: z.array(ParameterDefinitionSchema).optional(),\n requestBody: RequestBodyDefinitionSchema.optional(),\n responses: z.array(ResponseDefinitionSchema),\n streaming: z.boolean(),\n authentication: z.array(z.string()),\n rateLimit: RateLimitSpecSchema.optional(),\n tags: z.array(z.string()).optional(),\n deprecated: z.boolean().optional(),\n metadata: z.record(z.unknown()).optional(),\n});\n\n/**\n * OAuth2 flow schema\n */\nconst OAuth2FlowSchema = z.object({\n type: z.nativeEnum(OAuth2FlowType),\n authorizationUrl: z.string().optional(),\n tokenUrl: z.string().optional(),\n refreshUrl: z.string().optional(),\n scopes: z.record(z.string()).optional(),\n});\n\n/**\n * Auth scheme schemas\n */\nconst ApiKeyAuthSchemeSchema = z.object({\n id: z.string(),\n type: z.literal(AuthSchemeType.ApiKey),\n in: z.enum(['header', 'query']),\n name: z.string(),\n description: z.string().optional(),\n});\n\nconst BearerAuthSchemeSchema = z.object({\n id: z.string(),\n type: z.literal(AuthSchemeType.Bearer),\n scheme: z.string(),\n description: z.string().optional(),\n});\n\nconst OAuth2AuthSchemeSchema = z.object({\n id: z.string(),\n type: z.literal(AuthSchemeType.OAuth2),\n flows: z.array(OAuth2FlowSchema),\n description: z.string().optional(),\n});\n\nconst BasicAuthSchemeSchema = z.object({\n id: z.string(),\n type: z.literal(AuthSchemeType.Basic),\n description: z.string().optional(),\n});\n\nconst AuthSchemeSchema: z.ZodType<AuthScheme> = z.discriminatedUnion('type', [\n ApiKeyAuthSchemeSchema,\n BearerAuthSchemeSchema,\n OAuth2AuthSchemeSchema,\n BasicAuthSchemeSchema,\n]);\n\n/**\n * Error definition schema\n */\nconst ErrorDefinitionSchema: z.ZodType<ErrorDefinition> = z.object({\n code: z.string(),\n statusCode: z.number(),\n name: z.string(),\n description: z.string().optional(),\n type: TypeReferenceSchema.optional(),\n retryable: z.boolean().optional(),\n});\n\n/**\n * Schema metadata schema\n */\nconst SchemaMetadataSchema = z.object({\n version: z.string(),\n providerId: z.string(),\n providerName: z.string(),\n apiVersion: z.string(),\n generatedAt: z.string(),\n metadata: z.record(z.unknown()).optional(),\n});\n\n/**\n * Canonical schema root schema\n */\nexport const CanonicalSchemaSchema: z.ZodType<CanonicalSchema> = z.object({\n metadata: SchemaMetadataSchema,\n types: z.array(TypeDefinitionSchema),\n endpoints: z.array(EndpointDefinitionSchema),\n authentication: z.array(AuthSchemeSchema),\n errors: z.array(ErrorDefinitionSchema),\n config: z.record(z.unknown()).optional(),\n});\n\n/**\n * SchemaValidator class\n *\n * Validates canonical schemas and provides detailed error reporting.\n */\nexport class SchemaValidator {\n /**\n * Validate a canonical schema\n *\n * @param schema - Schema to validate\n * @returns Validation result\n */\n validate(schema: unknown): ValidationResult {\n const result = CanonicalSchemaSchema.safeParse(schema);\n\n if (result.success) {\n // Additional semantic validation\n const semanticErrors = this.validateSemantics(result.data);\n\n if (semanticErrors.length === 0) {\n return { valid: true, errors: [] };\n }\n\n return { valid: false, errors: semanticErrors };\n }\n\n // Convert Zod errors to ValidationErrors\n const errors: ValidationError[] = result.error.errors.map((err) => ({\n path: err.path.join('.'),\n message: err.message,\n code: err.code,\n }));\n\n return { valid: false, errors };\n }\n\n /**\n * Validate semantic constraints (beyond schema structure)\n *\n * @param schema - Canonical schema\n * @returns Array of validation errors\n */\n private validateSemantics(schema: CanonicalSchema): ValidationError[] {\n const errors: ValidationError[] = [];\n\n // Build type ID index\n const typeIds = new Set(schema.types.map((t) => t.id));\n\n // Validate type references\n this.validateTypeReferences(schema, typeIds, errors);\n\n // Validate authentication references\n this.validateAuthReferences(schema, errors);\n\n // Validate endpoint uniqueness\n this.validateEndpointUniqueness(schema, errors);\n\n // Validate required properties consistency\n this.validateRequiredProperties(schema, errors);\n\n return errors;\n }\n\n /**\n * Validate that all type references point to existing types\n */\n private validateTypeReferences(\n schema: CanonicalSchema,\n typeIds: Set<string>,\n errors: ValidationError[]\n ): void {\n // Check endpoints\n schema.endpoints.forEach((endpoint, idx) => {\n // Check request body type\n if (endpoint.requestBody?.type.typeId) {\n if (!typeIds.has(endpoint.requestBody.type.typeId)) {\n errors.push({\n path: `endpoints[${idx}].requestBody.type.typeId`,\n message: `Type '${endpoint.requestBody.type.typeId}' not found`,\n code: 'invalid_type_reference',\n });\n }\n }\n\n // Check response types\n endpoint.responses.forEach((response, respIdx) => {\n if (response.type?.typeId) {\n if (!typeIds.has(response.type.typeId)) {\n errors.push({\n path: `endpoints[${idx}].responses[${respIdx}].type.typeId`,\n message: `Type '${response.type.typeId}' not found`,\n code: 'invalid_type_reference',\n });\n }\n }\n });\n\n // Check parameter types\n endpoint.parameters?.forEach((param, paramIdx) => {\n if (!typeIds.has(param.type.typeId)) {\n errors.push({\n path: `endpoints[${idx}].parameters[${paramIdx}].type.typeId`,\n message: `Type '${param.type.typeId}' not found`,\n code: 'invalid_type_reference',\n });\n }\n });\n });\n }\n\n /**\n * Validate that authentication scheme references exist\n */\n private validateAuthReferences(schema: CanonicalSchema, errors: ValidationError[]): void {\n const authIds = new Set(schema.authentication.map((a) => a.id));\n\n schema.endpoints.forEach((endpoint, idx) => {\n endpoint.authentication.forEach((authId, authIdx) => {\n if (!authIds.has(authId)) {\n errors.push({\n path: `endpoints[${idx}].authentication[${authIdx}]`,\n message: `Authentication scheme '${authId}' not found`,\n code: 'invalid_auth_reference',\n });\n }\n });\n });\n }\n\n /**\n * Validate that operation IDs are unique\n */\n private validateEndpointUniqueness(schema: CanonicalSchema, errors: ValidationError[]): void {\n const operationIds = new Set<string>();\n\n schema.endpoints.forEach((endpoint, idx) => {\n if (operationIds.has(endpoint.operationId)) {\n errors.push({\n path: `endpoints[${idx}].operationId`,\n message: `Duplicate operation ID: '${endpoint.operationId}'`,\n code: 'duplicate_operation_id',\n });\n }\n operationIds.add(endpoint.operationId);\n });\n }\n\n /**\n * Validate that required properties match the required array\n */\n private validateRequiredProperties(schema: CanonicalSchema, errors: ValidationError[]): void {\n schema.types.forEach((type, idx) => {\n if (type.kind === TypeKind.Object) {\n const propertyNames = new Set(type.properties.map((p) => p.name));\n\n type.required.forEach((requiredProp) => {\n if (!propertyNames.has(requiredProp)) {\n errors.push({\n path: `types[${idx}].required`,\n message: `Required property '${requiredProp}' not found in properties`,\n code: 'invalid_required_property',\n });\n }\n });\n }\n });\n }\n\n /**\n * Assert that a schema is valid, throwing an error if not\n *\n * @param schema - Schema to validate\n * @throws Error if schema is invalid\n */\n assertValid(schema: unknown): asserts schema is CanonicalSchema {\n const result = this.validate(schema);\n\n if (!result.valid) {\n const errorMessages = result.errors.map(\n (err) => ` ${err.path}: ${err.message}`\n ).join('\\n');\n\n throw new Error(`Invalid canonical schema:\\n${errorMessages}`);\n }\n }\n}\n\n/**\n * Default validator instance\n */\nexport const validator = new SchemaValidator();\n","/**\n * OpenAPI Parser\n *\n * Parses OpenAPI 3.0/3.1 specifications and converts them to canonical schema format.\n * Supports both YAML and JSON formats, with full reference resolution.\n *\n * @module parsers/openapi-parser\n */\n\nimport $RefParser from '@apidevtools/json-schema-ref-parser';\nimport type { OpenAPIV3, OpenAPIV3_1 } from 'openapi-types';\n\nimport type {\n CanonicalSchema,\n TypeDefinition,\n EndpointDefinition,\n AuthScheme,\n ErrorDefinition,\n PropertyDefinition,\n TypeReference,\n ParameterDefinition,\n RequestBodyDefinition,\n ResponseDefinition,\n} from '../types/canonical-schema.js';\nimport {\n HTTPMethod,\n PrimitiveTypeKind,\n TypeKind,\n AuthSchemeType,\n OAuth2FlowType,\n ParameterLocation,\n} from '../types/canonical-schema.js';\n\n/**\n * OpenAPI document type (supports both 3.0 and 3.1)\n */\ntype OpenAPIDocument = OpenAPIV3.Document | OpenAPIV3_1.Document;\ntype SchemaObject = OpenAPIV3.SchemaObject | OpenAPIV3_1.SchemaObject;\ntype ParameterObject = OpenAPIV3.ParameterObject | OpenAPIV3_1.ParameterObject;\ntype RequestBodyObject = OpenAPIV3.RequestBodyObject | OpenAPIV3_1.RequestBodyObject;\ntype ResponseObject = OpenAPIV3.ResponseObject | OpenAPIV3_1.ResponseObject;\ntype SecuritySchemeObject = OpenAPIV3.SecuritySchemeObject | OpenAPIV3_1.SecuritySchemeObject;\n\n/**\n * Parser options\n */\nexport interface OpenAPIParserOptions {\n /** Provider ID (e.g., 'openai', 'cohere') */\n providerId: string;\n /** Provider display name */\n providerName: string;\n /** Resolve external $ref references */\n resolveRefs?: boolean;\n /** Strict mode (fail on warnings) */\n strict?: boolean;\n}\n\n/**\n * Parser result\n */\nexport interface ParseResult {\n success: boolean;\n schema?: CanonicalSchema;\n errors: string[];\n warnings: string[];\n}\n\n/**\n * OpenAPI Parser class\n */\nexport class OpenAPIParser {\n private options: Required<OpenAPIParserOptions>;\n private typeIdCounter = 0;\n private typeMap = new Map<string, TypeDefinition>(); // JSON pointer -> TypeDefinition (changed from string to TypeDefinition)\n private refToType = new Map<string, TypeDefinition>(); // $ref path -> TypeDefinition\n private schemaToType = new WeakMap<object, TypeDefinition>(); // Schema object -> TypeDefinition\n private allTypes: TypeDefinition[] = []; // All type definitions (components + inline)\n private warnings: string[] = [];\n private errors: string[] = [];\n private document?: OpenAPIDocument; // Store document for $ref resolution\n\n constructor(options: OpenAPIParserOptions) {\n this.options = {\n resolveRefs: true,\n strict: false,\n ...options,\n };\n }\n\n /**\n * Parse an OpenAPI document\n *\n * @param input - OpenAPI document (object) or file path (string)\n * @returns Parse result with canonical schema\n */\n async parse(input: OpenAPIDocument | string): Promise<ParseResult> {\n try {\n // Reset state\n this.typeIdCounter = 0;\n this.typeMap.clear();\n this.refToType.clear();\n this.schemaToType = new WeakMap();\n this.allTypes = [];\n this.warnings = [];\n this.errors = [];\n this.document = undefined;\n\n // Load document (parse but don't dereference yet)\n let document: OpenAPIDocument;\n\n if (typeof input === 'string') {\n // Parse from file\n const parsed = (await $RefParser.parse(input)) as OpenAPIDocument;\n // Bundle to resolve external refs but keep internal structure\n document = (await $RefParser.bundle(parsed)) as OpenAPIDocument;\n } else {\n // Already an object\n if (this.options.resolveRefs) {\n document = (await $RefParser.bundle(input)) as OpenAPIDocument;\n } else {\n document = input;\n }\n }\n\n // Validate OpenAPI version\n if (!this.isOpenAPI3(document)) {\n this.errors.push('Only OpenAPI 3.0.x and 3.1.x are supported');\n return { success: false, errors: this.errors, warnings: this.warnings };\n }\n\n // Store document for $ref resolution\n this.document = document;\n\n // Convert to canonical schema\n const schema = this.convertToCanonicalSchema(document);\n\n if (this.errors.length > 0) {\n return { success: false, schema, errors: this.errors, warnings: this.warnings };\n }\n\n return { success: true, schema, errors: [], warnings: this.warnings };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n this.errors.push(`Parse error: ${message}`);\n return { success: false, errors: this.errors, warnings: this.warnings };\n }\n }\n\n /**\n * Check if document is OpenAPI 3.x\n */\n private isOpenAPI3(doc: OpenAPIDocument): boolean {\n return doc.openapi?.startsWith('3.') ?? false;\n }\n\n /**\n * Convert OpenAPI document to canonical schema\n */\n private convertToCanonicalSchema(document: OpenAPIDocument): CanonicalSchema {\n const endpoints: EndpointDefinition[] = [];\n const authentication: AuthScheme[] = [];\n const errors: ErrorDefinition[] = [];\n\n // Extract types from components/schemas\n if (document.components?.schemas) {\n for (const [name, schema] of Object.entries(document.components.schemas)) {\n // Convert schema - type is automatically added to allTypes\n this.convertSchema(schema as SchemaObject, name);\n }\n }\n\n // Extract endpoints from paths\n if (document.paths) {\n for (const [path, pathItem] of Object.entries(document.paths)) {\n if (!pathItem) continue;\n\n for (const [method, operation] of Object.entries(pathItem)) {\n if (!this.isHttpMethod(method) || !operation) continue;\n\n const endpoint = this.convertOperation(\n path,\n method.toUpperCase() as HTTPMethod,\n operation as OpenAPIV3.OperationObject\n );\n\n if (endpoint) {\n endpoints.push(endpoint);\n }\n }\n }\n }\n\n // Extract authentication schemes\n if (document.components?.securitySchemes) {\n for (const [name, scheme] of Object.entries(document.components.securitySchemes)) {\n const authScheme = this.convertSecurityScheme(name, scheme as SecuritySchemeObject);\n if (authScheme) {\n authentication.push(authScheme);\n }\n }\n }\n\n // Build metadata\n const metadata = {\n version: '1.0.0',\n providerId: this.options.providerId,\n providerName: this.options.providerName,\n apiVersion: document.info.version,\n generatedAt: new Date().toISOString(),\n metadata: {\n title: document.info.title,\n description: document.info.description,\n termsOfService: document.info.termsOfService,\n contact: document.info.contact,\n license: document.info.license,\n },\n };\n\n return {\n metadata,\n types: this.allTypes,\n endpoints,\n authentication,\n errors,\n };\n }\n\n /**\n * Convert OpenAPI schema to type definition\n */\n private convertSchema(schema: SchemaObject, name: string, pointer = ''): TypeDefinition | null {\n // Handle $ref\n const schemaWithRef = schema as SchemaObject & { $ref?: string };\n if (schemaWithRef.$ref) {\n // Check if we've already processed this $ref\n if (this.refToType.has(schemaWithRef.$ref)) {\n return this.refToType.get(schemaWithRef.$ref)!;\n }\n\n // Extract the type name from the $ref path\n // e.g., \"#/components/schemas/ChatMessage\" -> \"ChatMessage\"\n const refParts = schemaWithRef.$ref.split('/');\n const refName = refParts[refParts.length - 1] ?? name;\n\n // Get the actual schema from components\n if (this.document?.components?.schemas) {\n const refSchema = this.document.components.schemas[refName];\n if (refSchema) {\n const typeDef = this.convertSchema(refSchema as SchemaObject, refName);\n if (typeDef) {\n // Cache the $ref -> type mapping\n this.refToType.set(schemaWithRef.$ref, typeDef);\n }\n return typeDef;\n }\n }\n }\n\n // Check if this schema object was already converted\n if (this.schemaToType.has(schema)) {\n // Return existing type definition\n return this.schemaToType.get(schema)!;\n }\n\n // Check for existing type by pointer\n if (pointer && this.typeMap.has(pointer)) {\n // Return the existing type definition instead of null\n return this.typeMap.get(pointer)!;\n }\n\n const typeId = this.generateTypeId();\n\n // Handle different schema types\n let typeDef: TypeDefinition;\n\n if (schema.enum) {\n typeDef = this.convertEnumSchema(schema, name, typeId);\n } else if (schema.type === 'object' || schema.properties || schema.allOf || schema.anyOf) {\n typeDef = this.convertObjectSchema(schema, name, typeId);\n } else if (schema.type === 'array') {\n typeDef = this.convertArraySchema(schema, name, typeId);\n } else if (schema.oneOf) {\n typeDef = this.convertUnionSchema(schema, name, typeId);\n } else {\n // Primitive type\n typeDef = this.convertPrimitiveSchema(schema, name, typeId);\n }\n\n // Register this type definition\n this.schemaToType.set(schema, typeDef);\n this.allTypes.push(typeDef);\n\n // Also register by pointer if we have one\n if (pointer) {\n this.typeMap.set(pointer, typeDef);\n }\n\n return typeDef;\n }\n\n /**\n * Convert primitive schema\n */\n private convertPrimitiveSchema(\n schema: SchemaObject,\n name: string,\n typeId: string\n ): TypeDefinition {\n const primitiveKind = this.mapPrimitiveType(schema.type as string);\n\n return {\n id: typeId,\n name,\n kind: TypeKind.Primitive,\n primitiveKind,\n description: schema.description,\n deprecated: schema.deprecated,\n constraints: {\n minLength: schema.minLength,\n maxLength: schema.maxLength,\n pattern: schema.pattern,\n format: schema.format,\n minimum: schema.minimum,\n maximum: schema.maximum,\n exclusiveMinimum: schema.exclusiveMinimum as boolean | undefined,\n exclusiveMaximum: schema.exclusiveMaximum as boolean | undefined,\n multipleOf: schema.multipleOf,\n },\n };\n }\n\n /**\n * Convert object schema\n */\n private convertObjectSchema(\n schema: SchemaObject,\n name: string,\n typeId: string\n ): TypeDefinition {\n const properties: PropertyDefinition[] = [];\n const required = new Set(schema.required ?? []);\n\n if (schema.properties) {\n for (const [propName, propSchema] of Object.entries(schema.properties)) {\n const propTypeDef = this.convertSchema(\n propSchema as SchemaObject,\n propName,\n `${name}.${propName}`\n );\n\n properties.push({\n name: propName,\n type: { typeId: propTypeDef?.id ?? this.generateTypeId() },\n description: (propSchema as SchemaObject).description,\n required: required.has(propName),\n default: (propSchema as SchemaObject).default,\n deprecated: (propSchema as SchemaObject).deprecated,\n });\n }\n }\n\n return {\n id: typeId,\n name,\n kind: TypeKind.Object,\n properties,\n required: Array.from(required),\n additionalProperties: schema.additionalProperties as TypeReference | boolean | undefined,\n description: schema.description,\n deprecated: schema.deprecated,\n };\n }\n\n /**\n * Convert array schema\n */\n private convertArraySchema(\n schema: SchemaObject,\n name: string,\n typeId: string\n ): TypeDefinition {\n const itemsSchema = (schema as { items?: SchemaObject }).items;\n if (!itemsSchema) {\n throw new Error(`Array schema ${name} has no items definition`);\n }\n const itemsType = this.convertSchema(itemsSchema, `${name}Item`);\n\n return {\n id: typeId,\n name,\n kind: TypeKind.Array,\n items: { typeId: itemsType?.id ?? this.generateTypeId() },\n minItems: schema.minItems,\n maxItems: schema.maxItems,\n uniqueItems: schema.uniqueItems,\n description: schema.description,\n deprecated: schema.deprecated,\n };\n }\n\n /**\n * Convert union schema (oneOf)\n */\n private convertUnionSchema(\n schema: SchemaObject,\n name: string,\n typeId: string\n ): TypeDefinition {\n const variants: TypeReference[] = [];\n\n if (schema.oneOf) {\n schema.oneOf.forEach((variant, variantIdx) => {\n const variantType = this.convertSchema(\n variant as SchemaObject,\n `${name}Variant${variantIdx + 1}`\n );\n\n if (variantType) {\n variants.push({ typeId: variantType.id });\n }\n });\n }\n\n return {\n id: typeId,\n name,\n kind: TypeKind.Union,\n variants,\n description: schema.description,\n deprecated: schema.deprecated,\n };\n }\n\n /**\n * Convert enum schema\n */\n private convertEnumSchema(schema: SchemaObject, name: string, typeId: string): TypeDefinition {\n const values = (schema.enum ?? []).map((value) => ({\n value: value as string | number,\n name: String(value),\n description: schema.description,\n }));\n\n const valueType = typeof schema.enum?.[0] === 'number' ? 'number' : 'string';\n\n return {\n id: typeId,\n name,\n kind: TypeKind.Enum,\n values,\n valueType,\n description: schema.description,\n deprecated: schema.deprecated,\n };\n }\n\n /**\n * Convert OpenAPI operation to endpoint definition\n */\n private convertOperation(\n path: string,\n method: HTTPMethod,\n operation: OpenAPIV3.OperationObject\n ): EndpointDefinition | null {\n const operationId = operation.operationId ?? `${method.toLowerCase()}_${path.replace(/[/{}]/g, '_')}`;\n\n // Convert parameters\n const parameters: ParameterDefinition[] = [];\n if (operation.parameters) {\n for (const param of operation.parameters) {\n const paramObj = param as ParameterObject;\n const paramDef = this.convertParameter(paramObj);\n if (paramDef) {\n parameters.push(paramDef);\n }\n }\n }\n\n // Convert request body\n let requestBody: RequestBodyDefinition | undefined = undefined;\n if (operation.requestBody) {\n const converted = this.convertRequestBody(operation.requestBody as RequestBodyObject);\n if (converted !== null) {\n requestBody = converted;\n }\n }\n\n // Convert responses\n const responses: ResponseDefinition[] = [];\n if (operation.responses) {\n for (const [statusCode, response] of Object.entries(operation.responses)) {\n const responseDef = this.convertResponse(statusCode, response as ResponseObject);\n if (responseDef) {\n responses.push(responseDef);\n }\n }\n }\n\n // Check for streaming support (basic heuristic)\n const streaming =\n operation.description?.toLowerCase().includes('stream') ||\n operation.summary?.toLowerCase().includes('stream') ||\n false;\n\n // Extract authentication requirements\n const authentication: string[] = [];\n if (operation.security) {\n for (const secReq of operation.security) {\n authentication.push(...Object.keys(secReq));\n }\n }\n\n return {\n id: `${method}_${path}`,\n operationId,\n path,\n method,\n summary: operation.summary,\n description: operation.description,\n parameters,\n requestBody,\n responses,\n streaming,\n authentication,\n tags: operation.tags,\n deprecated: operation.deprecated,\n };\n }\n\n /**\n * Convert parameter\n */\n private convertParameter(param: ParameterObject): ParameterDefinition | null {\n const paramType = this.convertSchema(param.schema as SchemaObject, param.name);\n\n if (!paramType) {\n this.warnings.push(`Could not convert parameter: ${param.name}`);\n return null;\n }\n\n return {\n name: param.name,\n in: param.in as ParameterLocation,\n type: { typeId: paramType.id },\n required: param.required ?? false,\n description: param.description,\n deprecated: param.deprecated,\n };\n }\n\n /**\n * Convert request body\n */\n private convertRequestBody(requestBody: RequestBodyObject): RequestBodyDefinition | null {\n // Get JSON content (prefer application/json)\n const content = requestBody.content['application/json'] ?? Object.values(requestBody.content)[0];\n\n if (!content?.schema) {\n this.warnings.push('Request body has no schema');\n return null;\n }\n\n const bodyType = this.convertSchema(content.schema as SchemaObject, 'RequestBody');\n\n if (!bodyType) {\n return null;\n }\n\n return {\n type: { typeId: bodyType.id },\n required: requestBody.required ?? false,\n contentType: 'application/json',\n description: requestBody.description,\n };\n }\n\n /**\n * Convert response\n */\n private convertResponse(statusCode: string, response: ResponseObject): ResponseDefinition | null {\n const status = statusCode === 'default' ? 'default' : parseInt(statusCode, 10);\n\n let type: TypeReference | undefined;\n\n if (response.content) {\n const content =\n response.content['application/json'] ?? Object.values(response.content)[0];\n\n if (content?.schema) {\n const responseType = this.convertSchema(content.schema as SchemaObject, 'Response');\n if (responseType) {\n type = { typeId: responseType.id };\n }\n }\n }\n\n return {\n statusCode: status,\n type,\n description: response.description,\n contentType: 'application/json',\n };\n }\n\n /**\n * Convert security scheme\n */\n private convertSecurityScheme(\n id: string,\n scheme: SecuritySchemeObject\n ): AuthScheme | null {\n if (scheme.type === 'apiKey') {\n return {\n id,\n type: AuthSchemeType.ApiKey,\n in: scheme.in as 'header' | 'query',\n name: scheme.name,\n description: scheme.description,\n };\n }\n\n if (scheme.type === 'http' && scheme.scheme === 'bearer') {\n return {\n id,\n type: AuthSchemeType.Bearer,\n scheme: scheme.scheme,\n description: scheme.description,\n };\n }\n\n if (scheme.type === 'http' && scheme.scheme === 'basic') {\n return {\n id,\n type: AuthSchemeType.Basic,\n description: scheme.description,\n };\n }\n\n if (scheme.type === 'oauth2' && scheme.flows) {\n const flows = Object.entries(scheme.flows).map(([flowType, flow]) => {\n // OAuth2 flows have different required fields, so we access them safely\n const anyFlow = flow as {\n authorizationUrl?: string;\n tokenUrl?: string;\n refreshUrl?: string;\n scopes?: Record<string, string>;\n };\n return {\n type: this.mapOAuth2FlowType(flowType),\n authorizationUrl: anyFlow.authorizationUrl,\n tokenUrl: anyFlow.tokenUrl,\n refreshUrl: anyFlow.refreshUrl,\n scopes: anyFlow.scopes,\n };\n });\n\n return {\n id,\n type: AuthSchemeType.OAuth2,\n flows,\n description: scheme.description,\n };\n }\n\n this.warnings.push(`Unsupported security scheme type: ${scheme.type}`);\n return null;\n }\n\n /**\n * Map OpenAPI primitive type to canonical primitive type\n */\n private mapPrimitiveType(type: string): PrimitiveTypeKind {\n switch (type) {\n case 'string':\n return PrimitiveTypeKind.String;\n case 'integer':\n return PrimitiveTypeKind.Integer;\n case 'number':\n return PrimitiveTypeKind.Float;\n case 'boolean':\n return PrimitiveTypeKind.Boolean;\n case 'null':\n return PrimitiveTypeKind.Null;\n default:\n this.warnings.push(`Unknown primitive type: ${type}, defaulting to string`);\n return PrimitiveTypeKind.String;\n }\n }\n\n /**\n * Map OAuth2 flow type\n */\n private mapOAuth2FlowType(flowType: string): OAuth2FlowType {\n switch (flowType) {\n case 'authorizationCode':\n return OAuth2FlowType.AuthorizationCode;\n case 'clientCredentials':\n return OAuth2FlowType.ClientCredentials;\n case 'implicit':\n return OAuth2FlowType.Implicit;\n case 'password':\n return OAuth2FlowType.Password;\n default:\n return OAuth2FlowType.AuthorizationCode;\n }\n }\n\n /**\n * Check if method is a valid HTTP method\n */\n private isHttpMethod(method: string): boolean {\n const validMethods = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options'];\n return validMethods.includes(method.toLowerCase());\n }\n\n /**\n * Generate unique type ID\n */\n private generateTypeId(): string {\n return `type_${this.typeIdCounter++}`;\n }\n}\n\n/**\n * Parse OpenAPI document (convenience function)\n *\n * @param input - OpenAPI document or file path\n * @param options - Parser options\n * @returns Parse result\n */\nexport async function parseOpenAPI(\n input: OpenAPIDocument | string,\n options: OpenAPIParserOptions\n): Promise<ParseResult> {\n const parser = new OpenAPIParser(options);\n return parser.parse(input);\n}\n","/**\n * Anthropic Parser - Custom schema support\n *\n * Parses Anthropic-specific API schemas and converts them to canonical format.\n * Supports Messages API, streaming, tool calling, and vision capabilities.\n *\n * @module parsers/anthropic-parser\n */\n\nimport type {\n CanonicalSchema,\n TypeDefinition,\n EndpointDefinition,\n ParameterDefinition,\n RequestBodyDefinition,\n ResponseDefinition,\n AuthScheme,\n ErrorDefinition,\n} from '../types/canonical-schema.js';\nimport {\n TypeKind,\n PrimitiveTypeKind,\n HTTPMethod,\n AuthSchemeType,\n ParameterLocation,\n} from '../types/canonical-schema.js';\n\n/**\n * Anthropic API schema structure\n */\nexport interface AnthropicSchema {\n /** API version */\n version: string;\n /** API base URL */\n baseUrl: string;\n /** API description */\n description?: string;\n /** Available models */\n models: AnthropicModel[];\n /** API endpoints */\n endpoints: AnthropicEndpoint[];\n /** Type definitions */\n types?: AnthropicTypeDefinition[];\n /** Error definitions */\n errors?: AnthropicError[];\n}\n\n/**\n * Anthropic model definition\n */\nexport interface AnthropicModel {\n /** Model ID */\n id: string;\n /** Model name */\n name: string;\n /** Model description */\n description?: string;\n /** Maximum tokens */\n maxTokens: number;\n /** Context window size */\n contextWindow: number;\n /** Supports vision */\n supportsVision?: boolean;\n /** Supports tools */\n supportsTools?: boolean;\n /** Supports streaming */\n supportsStreaming?: boolean;\n /** Training data cutoff */\n trainingCutoff?: string;\n}\n\n/**\n * Anthropic endpoint definition\n */\nexport interface AnthropicEndpoint {\n /** Endpoint ID */\n id: string;\n /** HTTP method */\n method: string;\n /** URL path */\n path: string;\n /** Endpoint description */\n description?: string;\n /** Request parameters */\n parameters?: AnthropicParameter[];\n /** Request body schema */\n requestBody?: AnthropicRequestBody;\n /** Response schemas */\n responses: AnthropicResponse[];\n /** Supports streaming */\n streaming?: boolean;\n /** Requires authentication */\n requiresAuth?: boolean;\n /** Deprecated */\n deprecated?: boolean;\n}\n\n/**\n * Anthropic parameter definition\n */\nexport interface AnthropicParameter {\n /** Parameter name */\n name: string;\n /** Parameter location */\n in: 'query' | 'header' | 'path';\n /** Parameter type */\n type: string;\n /** Required */\n required?: boolean;\n /** Description */\n description?: string;\n /** Default value */\n default?: unknown;\n /** Enum values */\n enum?: string[];\n}\n\n/**\n * Anthropic request body definition\n */\nexport interface AnthropicRequestBody {\n /** Content type */\n contentType: string;\n /** Schema reference or inline definition */\n schema: string | AnthropicTypeDefinition;\n /** Required */\n required?: boolean;\n /** Description */\n description?: string;\n}\n\n/**\n * Anthropic response definition\n */\nexport interface AnthropicResponse {\n /** HTTP status code */\n statusCode: number | 'default';\n /** Response description */\n description?: string;\n /** Content type */\n contentType?: string;\n /** Schema reference or inline definition */\n schema?: string | AnthropicTypeDefinition;\n}\n\n/**\n * Anthropic type definition\n */\nexport interface AnthropicTypeDefinition {\n /** Type name */\n name: string;\n /** Type kind */\n kind: 'object' | 'enum' | 'array' | 'union' | 'primitive';\n /** Description */\n description?: string;\n /** Properties (for object types) */\n properties?: AnthropicProperty[];\n /** Required properties */\n required?: string[];\n /** Enum values */\n values?: Array<{ value: string | number; description?: string }>;\n /** Array item type */\n items?: string | AnthropicTypeDefinition;\n /** Union variants */\n variants?: Array<string | AnthropicTypeDefinition>;\n /** Primitive type */\n primitiveType?: 'string' | 'number' | 'integer' | 'boolean' | 'null';\n}\n\n/**\n * Anthropic property definition\n */\nexport interface AnthropicProperty {\n /** Property name */\n name: string;\n /** Property type */\n type: string | AnthropicTypeDefinition;\n /** Description */\n description?: string;\n /** Required */\n required?: boolean;\n /** Default value */\n default?: unknown;\n}\n\n/**\n * Anthropic error definition\n */\nexport interface AnthropicError {\n /** Error code */\n code: string;\n /** HTTP status code */\n statusCode: number;\n /** Error description */\n description: string;\n /** Error type */\n type?: string;\n}\n\n/**\n * Anthropic parser options\n */\nexport interface AnthropicParserOptions {\n /** Provider ID */\n providerId: string;\n /** Provider name */\n providerName: string;\n /** Include deprecated endpoints */\n includeDeprecated?: boolean;\n /** API version to use */\n apiVersion?: string;\n}\n\n/**\n * Parse result\n */\nexport interface ParseResult {\n /** Success flag */\n success: boolean;\n /** Parsed schema */\n schema?: CanonicalSchema;\n /** Errors */\n errors: string[];\n /** Warnings */\n warnings: string[];\n}\n\n/**\n * Anthropic Schema Parser\n *\n * Parses Anthropic-specific API schemas and converts them to canonical format.\n *\n * @example\n * ```typescript\n * const parser = new AnthropicParser({\n * providerId: 'anthropic',\n * providerName: 'Anthropic'\n * });\n *\n * const result = await parser.parse(anthropicSchema);\n * if (result.success) {\n * // Use result.schema\n * }\n * ```\n */\nexport class AnthropicParser {\n private options: Required<AnthropicParserOptions>;\n private errors: string[] = [];\n private warnings: string[] = [];\n private typeIdCounter = 0;\n private typeMap = new Map<string, TypeDefinition>();\n\n constructor(options: AnthropicParserOptions) {\n this.options = {\n includeDeprecated: false,\n apiVersion: 'latest',\n ...options,\n };\n }\n\n /**\n * Parse an Anthropic schema\n *\n * @param input - Anthropic schema object or file path\n * @returns Parse result with canonical schema\n */\n async parse(input: AnthropicSchema | string): Promise<ParseResult> {\n try {\n // Reset state\n this.errors = [];\n this.warnings = [];\n this.typeIdCounter = 0;\n this.typeMap.clear();\n\n let schema: AnthropicSchema;\n\n if (typeof input === 'string') {\n // Load from file\n const fs = await import('fs/promises');\n const content = await fs.readFile(input, 'utf-8');\n schema = JSON.parse(content) as AnthropicSchema;\n } else {\n schema = input;\n }\n\n // Validate schema\n if (!this.validateSchema(schema)) {\n return { success: false, errors: this.errors, warnings: this.warnings };\n }\n\n // Convert to canonical schema\n const canonicalSchema = this.convertToCanonicalSchema(schema);\n\n if (this.errors.length > 0) {\n return { success: false, schema: canonicalSchema, errors: this.errors, warnings: this.warnings };\n }\n\n return { success: true, schema: canonicalSchema, errors: [], warnings: this.warnings };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n this.errors.push(`Parse error: ${message}`);\n return { success: false, errors: this.errors, warnings: this.warnings };\n }\n }\n\n /**\n * Validate Anthropic schema\n */\n private validateSchema(schema: AnthropicSchema): boolean {\n if (!schema.version) {\n this.errors.push('Schema version is required');\n return false;\n }\n\n if (!schema.baseUrl) {\n this.errors.push('Base URL is required');\n return false;\n }\n\n if (!schema.endpoints || schema.endpoints.length === 0) {\n this.errors.push('At least one endpoint is required');\n return false;\n }\n\n return true;\n }\n\n /**\n * Convert Anthropic schema to canonical schema\n */\n private convertToCanonicalSchema(schema: AnthropicSchema): CanonicalSchema {\n const types: TypeDefinition[] = [];\n const endpoints: EndpointDefinition[] = [];\n const authentication: AuthScheme[] = [];\n const errors: ErrorDefinition[] = [];\n\n // Convert types\n if (schema.types) {\n for (const type of schema.types) {\n const typeDef = this.convertType(type);\n if (typeDef) {\n types.push(typeDef);\n this.typeMap.set(type.name, typeDef);\n }\n }\n }\n\n // Convert endpoints\n for (const endpoint of schema.endpoints) {\n if (!this.options.includeDeprecated && endpoint.deprecated) {\n continue;\n }\n\n const endpointDef = this.convertEndpoint(endpoint, schema);\n if (endpointDef) {\n endpoints.push(endpointDef);\n }\n }\n\n // Add API key authentication\n authentication.push({\n id: 'apiKey',\n type: AuthSchemeType.ApiKey,\n in: 'header',\n name: 'x-api-key',\n description: 'Anthropic API key authentication',\n });\n\n // Convert errors\n if (schema.errors) {\n for (const error of schema.errors) {\n errors.push({\n code: error.code,\n statusCode: error.statusCode,\n message: error.description,\n description: error.description,\n });\n }\n }\n\n // Build metadata\n const metadata = {\n version: '1.0.0',\n providerId: this.options.providerId,\n providerName: this.options.providerName,\n apiVersion: schema.version,\n generatedAt: new Date().toISOString(),\n metadata: {\n baseUrl: schema.baseUrl,\n description: schema.description,\n models: schema.models,\n },\n };\n\n return {\n metadata,\n types,\n endpoints,\n authentication,\n errors,\n };\n }\n\n /**\n * Convert Anthropic type to canonical type\n */\n private convertType(type: AnthropicTypeDefinition): TypeDefinition | null {\n const typeId = this.generateTypeId();\n\n switch (type.kind) {\n case 'object':\n return this.convertObjectType(type, typeId);\n case 'enum':\n return this.convertEnumType(type, typeId);\n case 'array':\n return this.convertArrayType(type, typeId);\n case 'union':\n return this.convertUnionType(type, typeId);\n case 'primitive':\n return this.convertPrimitiveType(type, typeId);\n default:\n this.warnings.push(`Unknown type kind: ${type.kind}`);\n return null;\n }\n }\n\n /**\n * Convert object type\n */\n private convertObjectType(type: AnthropicTypeDefinition, typeId: string): TypeDefinition {\n const properties: Array<{ name: string; type: { typeId: string }; description?: string; required: boolean; default?: unknown }> = [];\n const required = new Set(type.required ?? []);\n\n if (type.properties) {\n for (const prop of type.properties) {\n let propTypeId: string;\n\n if (typeof prop.type === 'string') {\n // Reference to existing type\n const existingType = this.typeMap.get(prop.type);\n if (existingType) {\n propTypeId = existingType.id;\n } else {\n // Create inline primitive type\n const inlineType = this.convertType({\n name: `${type.name}_${prop.name}`,\n kind: 'primitive',\n primitiveType: prop.type as 'string' | 'number' | 'integer' | 'boolean',\n });\n propTypeId = inlineType?.id ?? this.generateTypeId();\n if (inlineType) {\n this.typeMap.set(`${type.name}_${prop.name}`, inlineType);\n }\n }\n } else {\n // Inline type definition\n const inlineType = this.convertType(prop.type);\n propTypeId = inlineType?.id ?? this.generateTypeId();\n if (inlineType) {\n this.typeMap.set(prop.type.name, inlineType);\n }\n }\n\n properties.push({\n name: prop.name,\n type: { typeId: propTypeId },\n description: prop.description,\n required: required.has(prop.name) || !!prop.required,\n default: prop.default,\n });\n }\n }\n\n return {\n id: typeId,\n name: type.name,\n kind: TypeKind.Object,\n properties,\n required: Array.from(required),\n description: type.description,\n };\n }\n\n /**\n * Convert enum type\n */\n private convertEnumType(type: AnthropicTypeDefinition, typeId: string): TypeDefinition {\n const values = (type.values ?? []).map((v) => ({\n value: v.value,\n description: v.description,\n }));\n\n return {\n id: typeId,\n name: type.name,\n kind: TypeKind.Enum,\n values,\n description: type.description,\n };\n }\n\n /**\n * Convert array type\n */\n private convertArrayType(type: AnthropicTypeDefinition, typeId: string): TypeDefinition {\n let itemsTypeId: string;\n\n if (typeof type.items === 'string') {\n const existingType = this.typeMap.get(type.items);\n itemsTypeId = existingType?.id ?? this.generateTypeId();\n } else if (type.items) {\n const itemsType = this.convertType(type.items);\n itemsTypeId = itemsType?.id ?? this.generateTypeId();\n if (itemsType) {\n this.typeMap.set(type.items.name, itemsType);\n }\n } else {\n itemsTypeId = this.generateTypeId();\n }\n\n return {\n id: typeId,\n name: type.name,\n kind: TypeKind.Array,\n items: { typeId: itemsTypeId },\n description: type.description,\n };\n }\n\n /**\n * Convert union type\n */\n private convertUnionType(type: AnthropicTypeDefinition, typeId: string): TypeDefinition {\n const variants: Array<{ typeId: string }> = [];\n\n if (type.variants) {\n for (const variant of type.variants) {\n let variantTypeId: string;\n\n if (typeof variant === 'string') {\n const existingType = this.typeMap.get(variant);\n variantTypeId = existingType?.id ?? this.generateTypeId();\n } else {\n const variantType = this.convertType(variant);\n variantTypeId = variantType?.id ?? this.generateTypeId();\n if (variantType) {\n this.typeMap.set(variant.name, variantType);\n }\n }\n\n variants.push({ typeId: variantTypeId });\n }\n }\n\n return {\n id: typeId,\n name: type.name,\n kind: TypeKind.Union,\n variants,\n description: type.description,\n };\n }\n\n /**\n * Convert primitive type\n */\n private convertPrimitiveType(type: AnthropicTypeDefinition, typeId: string): TypeDefinition {\n const primitiveKindMap: Record<string, PrimitiveTypeKind> = {\n string: PrimitiveTypeKind.String,\n number: PrimitiveTypeKind.Float,\n integer: PrimitiveTypeKind.Integer,\n boolean: PrimitiveTypeKind.Boolean,\n null: PrimitiveTypeKind.Null,\n };\n\n const primitiveKind = primitiveKindMap[type.primitiveType ?? 'string'] ?? PrimitiveTypeKind.String;\n\n return {\n id: typeId,\n name: type.name,\n kind: TypeKind.Primitive,\n primitiveKind,\n description: type.description,\n };\n }\n\n /**\n * Convert endpoint to canonical format\n */\n private convertEndpoint(endpoint: AnthropicEndpoint, schema: AnthropicSchema): EndpointDefinition | null {\n const parameters: ParameterDefinition[] = [];\n\n // Convert parameters\n if (endpoint.parameters) {\n for (const param of endpoint.parameters) {\n const paramDef = this.convertParameter(param);\n if (paramDef) {\n parameters.push(paramDef);\n }\n }\n }\n\n // Convert request body\n let requestBody: RequestBodyDefinition | undefined;\n if (endpoint.requestBody) {\n requestBody = this.convertRequestBody(endpoint.requestBody);\n }\n\n // Convert responses\n const responses: ResponseDefinition[] = [];\n for (const response of endpoint.responses) {\n const responseDef = this.convertResponse(response);\n if (responseDef) {\n responses.push(responseDef);\n }\n }\n\n return {\n id: endpoint.id,\n operationId: endpoint.id,\n path: endpoint.path,\n method: endpoint.method.toUpperCase() as HTTPMethod,\n description: endpoint.description,\n parameters,\n requestBody,\n responses,\n streaming: endpoint.streaming ?? false,\n authentication: endpoint.requiresAuth !== false ? ['apiKey'] : [],\n deprecated: endpoint.deprecated,\n };\n }\n\n /**\n * Convert parameter to canonical format\n */\n private convertParameter(param: AnthropicParameter): ParameterDefinition | null {\n // Create inline type for parameter\n const typeId = this.generateTypeId();\n const paramType: TypeDefinition = {\n id: typeId,\n name: `${param.name}Type`,\n kind: TypeKind.Primitive,\n primitiveKind: this.mapPrimitiveType(param.type),\n };\n\n return {\n name: param.name,\n in: param.in as ParameterLocation,\n type: { typeId: paramType.id },\n required: param.required ?? false,\n description: param.description,\n default: param.default,\n };\n }\n\n /**\n * Convert request body to canonical format\n */\n private convertRequestBody(requestBody: AnthropicRequestBody): RequestBodyDefinition | null {\n let typeId: string;\n\n if (typeof requestBody.schema === 'string') {\n const existingType = this.typeMap.get(requestBody.schema);\n typeId = existingType?.id ?? this.generateTypeId();\n } else {\n const bodyType = this.convertType(requestBody.schema);\n typeId = bodyType?.id ?? this.generateTypeId();\n if (bodyType) {\n this.typeMap.set(requestBody.schema.name, bodyType);\n }\n }\n\n return {\n type: { typeId },\n required: requestBody.required ?? true,\n contentType: requestBody.contentType,\n description: requestBody.description,\n };\n }\n\n /**\n * Convert response to canonical format\n */\n private convertResponse(response: AnthropicResponse): ResponseDefinition | null {\n let type: { typeId: string } | undefined;\n\n if (response.schema) {\n if (typeof response.schema === 'string') {\n const existingType = this.typeMap.get(response.schema);\n if (existingType) {\n type = { typeId: existingType.id };\n }\n } else {\n const responseType = this.convertType(response.schema);\n if (responseType) {\n type = { typeId: responseType.id };\n this.typeMap.set(response.schema.name, responseType);\n }\n }\n }\n\n return {\n statusCode: response.statusCode,\n type,\n description: response.description,\n contentType: response.contentType ?? 'application/json',\n };\n }\n\n /**\n * Map primitive type string to canonical primitive type kind\n */\n private mapPrimitiveType(type: string): PrimitiveTypeKind {\n const typeMap: Record<string, PrimitiveTypeKind> = {\n string: PrimitiveTypeKind.String,\n number: PrimitiveTypeKind.Float,\n integer: PrimitiveTypeKind.Integer,\n boolean: PrimitiveTypeKind.Boolean,\n null: PrimitiveTypeKind.Null,\n };\n\n return typeMap[type.toLowerCase()] ?? PrimitiveTypeKind.String;\n }\n\n /**\n * Generate unique type ID\n */\n private generateTypeId(): string {\n return `type_${this.typeIdCounter++}`;\n }\n}\n\n/**\n * Parse Anthropic schema (convenience function)\n *\n * @param input - Anthropic schema object or file path\n * @param options - Parser options\n * @returns Parse result\n */\nexport async function parseAnthropicSchema(\n input: AnthropicSchema | string,\n options: AnthropicParserOptions\n): Promise<ParseResult> {\n const parser = new AnthropicParser(options);\n return parser.parse(input);\n}\n","/**\n * Type Mapper\n *\n * Maps canonical schema types to language-specific type representations.\n * This is the core of cross-language type safety in LLM-Forge.\n *\n * @module core/type-mapper\n */\n\nimport type { TypeDefinition, TypeReference } from '../types/canonical-schema.js';\nimport { PrimitiveTypeKind, TypeKind } from '../types/canonical-schema.js';\n\n/**\n * Supported target languages\n */\nexport enum TargetLanguage {\n Rust = 'rust',\n TypeScript = 'typescript',\n Python = 'python',\n JavaScript = 'javascript',\n CSharp = 'csharp',\n Go = 'go',\n Java = 'java',\n}\n\n/**\n * Type mapping configuration\n */\nexport interface TypeMapperConfig {\n /** Target language */\n language: TargetLanguage;\n /** Use nullable types (e.g., T? in C#, Optional<T> in Java) */\n useNullable?: boolean;\n /** Custom type mappings */\n customMappings?: Record<string, string>;\n}\n\n/**\n * Mapped type result\n */\nexport interface MappedType {\n /** Type expression in target language */\n type: string;\n /** Required imports */\n imports: string[];\n /** Whether this type is nullable */\n nullable: boolean;\n}\n\n/**\n * TypeMapper class\n *\n * Converts canonical types to language-specific types with proper imports\n * and nullability handling.\n */\nexport class TypeMapper {\n private config: Required<TypeMapperConfig>;\n private typeRegistry: Map<string, TypeDefinition>;\n\n constructor(config: TypeMapperConfig, types: TypeDefinition[] = []) {\n this.config = {\n useNullable: true,\n customMappings: {},\n ...config,\n };\n\n this.typeRegistry = new Map(types.map((t) => [t.id, t]));\n }\n\n /**\n * Map a type reference to the target language\n *\n * @param ref - Type reference to map\n * @returns Mapped type with imports\n */\n mapTypeReference(ref: TypeReference): MappedType {\n const typeDef = this.typeRegistry.get(ref.typeId);\n\n if (!typeDef) {\n throw new Error(`Type not found: ${ref.typeId}`);\n }\n\n const mapped = this.mapType(typeDef);\n\n // Handle nullable\n if (ref.nullable && this.config.useNullable) {\n return this.makeNullable(mapped);\n }\n\n return mapped;\n }\n\n /**\n * Map a type definition to the target language\n *\n * @param type - Type definition\n * @returns Mapped type\n */\n mapType(type: TypeDefinition): MappedType {\n switch (type.kind) {\n case TypeKind.Primitive:\n return this.mapPrimitiveType(type.primitiveKind);\n case TypeKind.Object:\n return this.mapObjectType(type.name);\n case TypeKind.Array:\n return this.mapArrayType(type);\n case TypeKind.Union:\n return this.mapUnionType(type);\n case TypeKind.Enum:\n return this.mapEnumType(type.name);\n default:\n throw new Error(`Unsupported type kind: ${(type as TypeDefinition).kind}`);\n }\n }\n\n /**\n * Map primitive type\n */\n private mapPrimitiveType(primitiveKind: PrimitiveTypeKind): MappedType {\n const mapping = this.getPrimitiveTypeMapping(primitiveKind);\n return { type: mapping, imports: [], nullable: false };\n }\n\n /**\n * Get primitive type mapping for target language\n */\n private getPrimitiveTypeMapping(kind: PrimitiveTypeKind): string {\n const mappings: Record<TargetLanguage, Record<PrimitiveTypeKind, string>> = {\n [TargetLanguage.Rust]: {\n [PrimitiveTypeKind.String]: 'String',\n [PrimitiveTypeKind.Integer]: 'i64',\n [PrimitiveTypeKind.Float]: 'f64',\n [PrimitiveTypeKind.Boolean]: 'bool',\n [PrimitiveTypeKind.Null]: '()',\n },\n [TargetLanguage.TypeScript]: {\n [PrimitiveTypeKind.String]: 'string',\n [PrimitiveTypeKind.Integer]: 'number',\n [PrimitiveTypeKind.Float]: 'number',\n [PrimitiveTypeKind.Boolean]: 'boolean',\n [PrimitiveTypeKind.Null]: 'null',\n },\n [TargetLanguage.Python]: {\n [PrimitiveTypeKind.String]: 'str',\n [PrimitiveTypeKind.Integer]: 'int',\n [PrimitiveTypeKind.Float]: 'float',\n [PrimitiveTypeKind.Boolean]: 'bool',\n [PrimitiveTypeKind.Null]: 'None',\n },\n [TargetLanguage.JavaScript]: {\n [PrimitiveTypeKind.String]: 'string',\n [PrimitiveTypeKind.Integer]: 'number',\n [PrimitiveTypeKind.Float]: 'number',\n [PrimitiveTypeKind.Boolean]: 'boolean',\n [PrimitiveTypeKind.Null]: 'null',\n },\n [TargetLanguage.CSharp]: {\n [PrimitiveTypeKind.String]: 'string',\n [PrimitiveTypeKind.Integer]: 'long',\n [PrimitiveTypeKind.Float]: 'double',\n [PrimitiveTypeKind.Boolean]: 'bool',\n [PrimitiveTypeKind.Null]: 'null',\n },\n [TargetLanguage.Go]: {\n [PrimitiveTypeKind.String]: 'string',\n [PrimitiveTypeKind.Integer]: 'int64',\n [PrimitiveTypeKind.Float]: 'float64',\n [PrimitiveTypeKind.Boolean]: 'bool',\n [PrimitiveTypeKind.Null]: 'nil',\n },\n [TargetLanguage.Java]: {\n [PrimitiveTypeKind.String]: 'String',\n [PrimitiveTypeKind.Integer]: 'long',\n [PrimitiveTypeKind.Float]: 'double',\n [PrimitiveTypeKind.Boolean]: 'boolean',\n [PrimitiveTypeKind.Null]: 'null',\n },\n };\n\n return mappings[this.config.language][kind];\n }\n\n /**\n * Map object type\n */\n private mapObjectType(name: string): MappedType {\n // Check for custom mapping\n if (this.config.customMappings[name]) {\n return { type: this.config.customMappings[name], imports: [], nullable: false };\n }\n\n // Use the type name in PascalCase (standard for all languages)\n return { type: this.toPascalCase(name), imports: [], nullable: false };\n }\n\n /**\n * Map array type\n */\n private mapArrayType(type: TypeDefinition): MappedType {\n if (type.kind !== TypeKind.Array) {\n throw new Error('Expected array type');\n }\n\n const itemType = this.mapTypeReference(type.items);\n\n const arrayMappings: Record<TargetLanguage, (item: string) => string> = {\n [TargetLanguage.Rust]: (item) => `Vec<${item}>`,\n [TargetLanguage.TypeScript]: (item) => `${item}[]`,\n [TargetLanguage.Python]: (item) => `List[${item}]`,\n [TargetLanguage.JavaScript]: (item) => `${item}[]`,\n [TargetLanguage.CSharp]: (item) => `List<${item}>`,\n [TargetLanguage.Go]: (item) => `[]${item}`,\n [TargetLanguage.Java]: (item) => `List<${item}>`,\n };\n\n const arrayType = arrayMappings[this.config.language](itemType.type);\n\n // Add necessary imports\n const imports = [...itemType.imports];\n if (this.config.language === TargetLanguage.Python) {\n imports.push('from typing import List');\n } else if (this.config.language === TargetLanguage.CSharp) {\n imports.push('using System.Collections.Generic;');\n } else if (this.config.language === TargetLanguage.Java) {\n imports.push('import java.util.List;');\n }\n\n return { type: arrayType, imports, nullable: false };\n }\n\n /**\n * Map union type\n */\n private mapUnionType(type: TypeDefinition): MappedType {\n if (type.kind !== TypeKind.Union) {\n throw new Error('Expected union type');\n }\n\n const variants = type.variants.map((v) => this.mapTypeReference(v));\n\n const unionMappings: Record<TargetLanguage, (variants: MappedType[]) => string> = {\n [TargetLanguage.Rust]: (_variants) => {\n // Rust uses enums for unions\n return this.toPascalCase(type.name); // Return enum name in PascalCase\n },\n [TargetLanguage.TypeScript]: (variants) => {\n return variants.map((v) => v.type).join(' | ');\n },\n [TargetLanguage.Python]: (variants) => {\n return `Union[${variants.map((v) => v.type).join(', ')}]`;\n },\n [TargetLanguage.JavaScript]: (_variants) => {\n // JavaScript doesn't have union types\n return 'any';\n },\n [TargetLanguage.CSharp]: (_variants) => {\n // C# uses object or custom class\n return 'object';\n },\n [TargetLanguage.Go]: (_variants) => {\n // Go uses interface{}\n return 'interface{}';\n },\n [TargetLanguage.Java]: (_variants) => {\n // Java uses Object or custom sealed class (Java 17+)\n return 'Object';\n },\n };\n\n const unionType = unionMappings[this.config.language](variants);\n\n const imports = variants.flatMap((v) => v.imports);\n if (this.config.language === TargetLanguage.Python && variants.length > 1) {\n imports.push('from typing import Union');\n }\n\n return { type: unionType, imports, nullable: false };\n }\n\n /**\n * Map enum type\n */\n private mapEnumType(name: string): MappedType {\n // Enums are generated types, use the name in PascalCase\n return { type: this.toPascalCase(name), imports: [], nullable: false };\n }\n\n /**\n * Make a type nullable\n */\n private makeNullable(mapped: MappedType): MappedType {\n const nullableMappings: Record<TargetLanguage, (type: string) => string> = {\n [TargetLanguage.Rust]: (type) => `Option<${type}>`,\n [TargetLanguage.TypeScript]: (type) => `${type} | undefined`,\n [TargetLanguage.Python]: (type) => `Optional[${type}]`,\n [TargetLanguage.JavaScript]: (type) => `${type} | undefined`,\n [TargetLanguage.CSharp]: (type) => `${type}?`,\n [TargetLanguage.Go]: (type) => `*${type}`, // Pointer for nullable\n [TargetLanguage.Java]: (type) => `Optional<${type}>`,\n };\n\n const imports = [...mapped.imports];\n if (this.config.language === TargetLanguage.Python) {\n imports.push('from typing import Optional');\n } else if (this.config.language === TargetLanguage.Java) {\n imports.push('import java.util.Optional;');\n }\n\n return {\n type: nullableMappings[this.config.language](mapped.type),\n imports,\n nullable: true,\n };\n }\n\n /**\n * Add types to the registry\n */\n addTypes(types: TypeDefinition[]): void {\n for (const type of types) {\n this.typeRegistry.set(type.id, type);\n }\n }\n\n /**\n * Convert string to PascalCase\n */\n private toPascalCase(str: string): string {\n return str\n .replace(/[-_](.)/g, (_, c) => c.toUpperCase())\n .replace(/^(.)/, (c) => c.toUpperCase());\n }\n}\n","/**\n * Template Engine - Handlebars setup with custom helpers\n *\n * Provides enterprise-grade template rendering with comprehensive helper library\n * for code generation across multiple programming languages.\n *\n * @module core/template-engine\n */\n\nimport Handlebars from 'handlebars';\n\n/**\n * Template rendering options\n */\nexport interface TemplateOptions {\n /** Whether to enable strict mode (throws on missing variables) */\n strict?: boolean;\n /** Custom data to pass to all templates */\n data?: Record<string, unknown>;\n /** Whether to enable runtime compilation caching */\n cache?: boolean;\n}\n\n/**\n * Template rendering result\n */\nexport interface RenderResult {\n /** Rendered output */\n output: string;\n /** Any warnings generated during rendering */\n warnings: string[];\n}\n\n/**\n * Helper function signature\n */\nexport type HelperFunction = (...args: unknown[]) => string | Handlebars.SafeString;\n\n/**\n * Template Engine with Handlebars and custom helpers\n *\n * Provides comprehensive template rendering capabilities with:\n * - Case conversion helpers (camelCase, PascalCase, snake_case, kebab-case)\n * - String manipulation (upper, lower, capitalize, trim, etc.)\n * - Comparison operators (eq, ne, lt, gt, and, or)\n * - Array/object utilities (length, join, contains, keys, values)\n * - Code formatting helpers (indent, comment, escape)\n * - Conditional helpers (if, unless, with, each)\n *\n * @example\n * ```typescript\n * const engine = new TemplateEngine();\n * const result = engine.render('Hello {{capitalize name}}!', { name: 'world' });\n * console.log(result.output); // \"Hello World!\"\n * ```\n */\nexport class TemplateEngine {\n private handlebars: typeof Handlebars;\n private compiledTemplates: Map<string, HandlebarsTemplateDelegate>;\n private options: Required<TemplateOptions>;\n private warnings: string[];\n\n constructor(options: TemplateOptions = {}) {\n this.handlebars = Handlebars.create();\n this.compiledTemplates = new Map();\n this.warnings = [];\n\n this.options = {\n strict: options.strict ?? false,\n data: options.data ?? {},\n cache: options.cache ?? true,\n };\n\n // Register all custom helpers\n this.registerCaseConversionHelpers();\n this.registerStringHelpers();\n this.registerComparisonHelpers();\n this.registerArrayHelpers();\n this.registerObjectHelpers();\n this.registerCodeHelpers();\n this.registerConditionalHelpers();\n this.registerMathHelpers();\n }\n\n /**\n * Render a template with the given context\n *\n * @param template - Handlebars template string\n * @param context - Data to pass to the template\n * @param options - Rendering options (overrides constructor options)\n * @returns Rendered output and warnings\n *\n * @example\n * ```typescript\n * const result = engine.render('{{#each items}}{{@index}}: {{this}}\\n{{/each}}', {\n * items: ['a', 'b', 'c']\n * });\n * ```\n */\n render(template: string, context: Record<string, unknown> = {}, options?: TemplateOptions): RenderResult {\n this.warnings = [];\n\n try {\n const mergedOptions = { ...this.options, ...options };\n let compiled: HandlebarsTemplateDelegate;\n\n if (mergedOptions.cache && this.compiledTemplates.has(template)) {\n compiled = this.compiledTemplates.get(template)!;\n } else {\n compiled = this.handlebars.compile(template, {\n strict: mergedOptions.strict,\n noEscape: false,\n });\n\n if (mergedOptions.cache) {\n this.compiledTemplates.set(template, compiled);\n }\n }\n\n const data = { ...mergedOptions.data };\n const output = compiled(context, { data });\n\n return {\n output,\n warnings: [...this.warnings],\n };\n } catch (error) {\n throw new Error(`Template rendering failed: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n /**\n * Register a custom helper function\n *\n * @param name - Helper name\n * @param fn - Helper function\n *\n * @example\n * ```typescript\n * engine.registerHelper('repeat', (str, count) => str.repeat(count));\n * ```\n */\n registerHelper(name: string, fn: HelperFunction): void {\n this.handlebars.registerHelper(name, fn);\n }\n\n /**\n * Register a partial template\n *\n * @param name - Partial name\n * @param template - Partial template string\n *\n * @example\n * ```typescript\n * engine.registerPartial('header', '<header>{{title}}</header>');\n * ```\n */\n registerPartial(name: string, template: string): void {\n this.handlebars.registerPartial(name, template);\n }\n\n /**\n * Unregister a helper\n *\n * @param name - Helper name\n */\n unregisterHelper(name: string): void {\n this.handlebars.unregisterHelper(name);\n }\n\n /**\n * Unregister a partial\n *\n * @param name - Partial name\n */\n unregisterPartial(name: string): void {\n this.handlebars.unregisterPartial(name);\n }\n\n /**\n * Clear compiled template cache\n */\n clearCache(): void {\n this.compiledTemplates.clear();\n }\n\n /**\n * Get the underlying Handlebars instance\n */\n getHandlebars(): typeof Handlebars {\n return this.handlebars;\n }\n\n // ========================================\n // CASE CONVERSION HELPERS\n // ========================================\n\n private registerCaseConversionHelpers(): void {\n /**\n * Convert string to camelCase\n * @example {{camelCase \"hello world\"}} -> helloWorld\n */\n this.handlebars.registerHelper('camelCase', (str: string) => {\n if (typeof str !== 'string') return '';\n return str\n .replace(/[-_\\s]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ''))\n .replace(/^(.)/, (c) => c.toLowerCase());\n });\n\n /**\n * Convert string to PascalCase\n * @example {{PascalCase \"hello world\"}} -> HelloWorld\n */\n this.handlebars.registerHelper('PascalCase', (str: string) => {\n if (typeof str !== 'string') return '';\n return str\n .replace(/[-_\\s]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ''))\n .replace(/^(.)/, (c) => c.toUpperCase());\n });\n\n /**\n * Convert string to snake_case\n * @example {{snake_case \"helloWorld\"}} -> hello_world\n */\n this.handlebars.registerHelper('snake_case', (str: string) => {\n if (typeof str !== 'string') return '';\n return str\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .toLowerCase()\n .replace(/^_/, '')\n .replace(/[-\\s]/g, '_')\n .replace(/_+/g, '_');\n });\n\n /**\n * Convert string to kebab-case\n * @example {{kebab-case \"helloWorld\"}} -> hello-world\n */\n this.handlebars.registerHelper('kebab-case', (str: string) => {\n if (typeof str !== 'string') return '';\n return str\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')\n .replace(/([a-z\\d])([A-Z])/g, '$1-$2')\n .toLowerCase()\n .replace(/^-/, '')\n .replace(/[\\s_]/g, '-')\n .replace(/-+/g, '-');\n });\n\n /**\n * Convert string to SCREAMING_SNAKE_CASE\n * @example {{SCREAMING_SNAKE_CASE \"helloWorld\"}} -> HELLO_WORLD\n */\n this.handlebars.registerHelper('SCREAMING_SNAKE_CASE', (str: string) => {\n if (typeof str !== 'string') return '';\n return str\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .toUpperCase()\n .replace(/^_/, '')\n .replace(/[-\\s]/g, '_')\n .replace(/_+/g, '_');\n });\n }\n\n // ========================================\n // STRING MANIPULATION HELPERS\n // ========================================\n\n private registerStringHelpers(): void {\n /**\n * Convert string to uppercase\n * @example {{upper \"hello\"}} -> HELLO\n */\n this.handlebars.registerHelper('upper', (str: string) => {\n if (typeof str !== 'string') return '';\n return str.toUpperCase();\n });\n\n /**\n * Convert string to lowercase\n * @example {{lower \"HELLO\"}} -> hello\n */\n this.handlebars.registerHelper('lower', (str: string) => {\n if (typeof str !== 'string') return '';\n return str.toLowerCase();\n });\n\n /**\n * Capitalize first letter\n * @example {{capitalize \"hello\"}} -> Hello\n */\n this.handlebars.registerHelper('capitalize', (str: string) => {\n if (typeof str !== 'string') return '';\n return str.charAt(0).toUpperCase() + str.slice(1);\n });\n\n /**\n * Trim whitespace\n * @example {{trim \" hello \"}} -> hello\n */\n this.handlebars.registerHelper('trim', (str: string) => {\n if (typeof str !== 'string') return '';\n return str.trim();\n });\n\n /**\n * Replace all occurrences\n * @example {{replace \"hello world\" \"world\" \"there\"}} -> hello there\n */\n this.handlebars.registerHelper('replace', (str: string, search: string, replacement: string) => {\n if (typeof str !== 'string') return '';\n return str.replace(new RegExp(search, 'g'), replacement);\n });\n\n /**\n * Substring\n * @example {{substring \"hello\" 0 3}} -> hel\n */\n this.handlebars.registerHelper('substring', (...args: unknown[]) => {\n const str = args[0] as string;\n const start = args[1] as number;\n const end = args[2] as number | undefined;\n // Last argument is Handlebars options, check if we have 3 or 4 args total\n const hasEnd = args.length > 3;\n\n if (typeof str !== 'string') return '';\n return hasEnd && typeof end === 'number' ? str.substring(start, end) : str.substring(start);\n });\n\n /**\n * Truncate string with ellipsis\n * @example {{truncate \"hello world\" 8}} -> hello...\n */\n this.handlebars.registerHelper('truncate', (...args: unknown[]) => {\n const str = args[0] as string;\n const length = args[1] as number;\n const suffix = args.length > 3 && typeof args[2] === 'string' ? args[2] : '...';\n\n if (typeof str !== 'string') return '';\n if (str.length <= length) return str;\n return str.substring(0, length) + suffix;\n });\n\n /**\n * Pluralize word\n * @example {{pluralize \"item\" 5}} -> items\n */\n this.handlebars.registerHelper('pluralize', (...args: unknown[]) => {\n const singular = args[0] as string;\n const count = args.length > 2 ? (args[1] as number) : undefined;\n const plural = args.length > 3 ? (args[2] as string) : undefined;\n\n if (typeof count === 'number' && count === 1) return singular;\n if (plural) return plural;\n // Simple pluralization\n if (singular.endsWith('s')) return singular + 'es';\n if (singular.endsWith('y')) return singular.slice(0, -1) + 'ies';\n return singular + 's';\n });\n\n /**\n * Concatenate strings\n * @example {{concat \"hello\" \" \" \"world\"}} -> hello world\n */\n this.handlebars.registerHelper('concat', (...args: unknown[]) => {\n // Remove Handlebars options object (last argument)\n const strings = args.slice(0, -1);\n return strings.join('');\n });\n }\n\n // ========================================\n // COMPARISON HELPERS\n // ========================================\n\n private registerComparisonHelpers(): void {\n /**\n * Equality comparison\n * @example {{#if (eq status \"active\")}}...{{/if}}\n */\n this.handlebars.registerHelper('eq', (a: unknown, b: unknown) => a === b);\n\n /**\n * Inequality comparison\n * @example {{#if (ne status \"inactive\")}}...{{/if}}\n */\n this.handlebars.registerHelper('ne', (a: unknown, b: unknown) => a !== b);\n\n /**\n * Less than\n * @example {{#if (lt count 10)}}...{{/if}}\n */\n this.handlebars.registerHelper('lt', (a: number, b: number) => a < b);\n\n /**\n * Less than or equal\n * @example {{#if (lte count 10)}}...{{/if}}\n */\n this.handlebars.registerHelper('lte', (a: number, b: number) => a <= b);\n\n /**\n * Greater than\n * @example {{#if (gt count 0)}}...{{/if}}\n */\n this.handlebars.registerHelper('gt', (a: number, b: number) => a > b);\n\n /**\n * Greater than or equal\n * @example {{#if (gte count 0)}}...{{/if}}\n */\n this.handlebars.registerHelper('gte', (a: number, b: number) => a >= b);\n\n /**\n * Logical AND\n * @example {{#if (and isActive isVerified)}}...{{/if}}\n */\n this.handlebars.registerHelper('and', (...args: unknown[]) => {\n // Remove Handlebars options object (last argument)\n const values = args.slice(0, -1);\n return values.every((v) => !!v);\n });\n\n /**\n * Logical OR\n * @example {{#if (or isAdmin isModerator)}}...{{/if}}\n */\n this.handlebars.registerHelper('or', (...args: unknown[]) => {\n // Remove Handlebars options object (last argument)\n const values = args.slice(0, -1);\n return values.some((v) => !!v);\n });\n\n /**\n * Logical NOT\n * @example {{#if (not isDisabled)}}...{{/if}}\n */\n this.handlebars.registerHelper('not', (value: unknown) => !value);\n }\n\n // ========================================\n // ARRAY HELPERS\n // ========================================\n\n private registerArrayHelpers(): void {\n /**\n * Get array length\n * @example {{length items}}\n */\n this.handlebars.registerHelper('length', (arr: unknown[] | string) => {\n if (Array.isArray(arr)) return arr.length;\n if (typeof arr === 'string') return arr.length;\n return 0;\n });\n\n /**\n * Join array elements\n * @example {{join items \", \"}}\n */\n this.handlebars.registerHelper('join', (...args: unknown[]) => {\n const arr = args[0] as unknown[];\n const separator = args.length > 2 && typeof args[1] === 'string' ? args[1] : ', ';\n\n if (!Array.isArray(arr)) return '';\n return arr.join(separator);\n });\n\n /**\n * Check if array contains value\n * @example {{#if (contains items \"foo\")}}...{{/if}}\n */\n this.handlebars.registerHelper('contains', (arr: unknown[], value: unknown) => {\n if (!Array.isArray(arr)) return false;\n return arr.includes(value);\n });\n\n /**\n * Get first element\n * @example {{first items}}\n */\n this.handlebars.registerHelper('first', (arr: unknown[]) => {\n if (!Array.isArray(arr) || arr.length === 0) return undefined;\n return arr[0];\n });\n\n /**\n * Get last element\n * @example {{last items}}\n */\n this.handlebars.registerHelper('last', (arr: unknown[]) => {\n if (!Array.isArray(arr) || arr.length === 0) return undefined;\n return arr[arr.length - 1];\n });\n\n /**\n * Check if array is empty\n * @example {{#if (isEmpty items)}}...{{/if}}\n */\n this.handlebars.registerHelper('isEmpty', (arr: unknown[] | Record<string, unknown>) => {\n if (Array.isArray(arr)) return arr.length === 0;\n if (typeof arr === 'object' && arr !== null) return Object.keys(arr).length === 0;\n return true;\n });\n\n /**\n * Check if array is not empty\n * @example {{#if (isNotEmpty items)}}...{{/if}}\n */\n this.handlebars.registerHelper('isNotEmpty', (arr: unknown[] | Record<string, unknown>) => {\n if (Array.isArray(arr)) return arr.length > 0;\n if (typeof arr === 'object' && arr !== null) return Object.keys(arr).length > 0;\n return false;\n });\n }\n\n // ========================================\n // OBJECT HELPERS\n // ========================================\n\n private registerObjectHelpers(): void {\n /**\n * Get object keys\n * @example {{#each (keys obj)}}{{this}}{{/each}}\n */\n this.handlebars.registerHelper('keys', (obj: Record<string, unknown>) => {\n if (typeof obj !== 'object' || obj === null) return [];\n return Object.keys(obj);\n });\n\n /**\n * Get object values\n * @example {{#each (values obj)}}{{this}}{{/each}}\n */\n this.handlebars.registerHelper('values', (obj: Record<string, unknown>) => {\n if (typeof obj !== 'object' || obj === null) return [];\n return Object.values(obj);\n });\n\n /**\n * Get object entries\n * @example {{#each (entries obj)}}{{@key}}: {{this}}{{/each}}\n */\n this.handlebars.registerHelper('entries', (obj: Record<string, unknown>) => {\n if (typeof obj !== 'object' || obj === null) return [];\n return Object.entries(obj).map(([key, value]) => ({ key, value }));\n });\n\n /**\n * Check if object has property\n * @example {{#if (hasKey obj \"name\")}}...{{/if}}\n */\n this.handlebars.registerHelper('hasKey', (obj: Record<string, unknown>, key: string) => {\n if (typeof obj !== 'object' || obj === null) return false;\n return key in obj;\n });\n\n /**\n * Get property value\n * @example {{get obj \"name\"}}\n */\n this.handlebars.registerHelper('get', (obj: Record<string, unknown>, key: string) => {\n if (typeof obj !== 'object' || obj === null) return undefined;\n return obj[key];\n });\n }\n\n // ========================================\n // CODE FORMATTING HELPERS\n // ========================================\n\n private registerCodeHelpers(): void {\n /**\n * Indent text by specified number of spaces\n * @example {{indent text 4}}\n */\n this.handlebars.registerHelper('indent', (...args: unknown[]) => {\n const text = args[0] as string;\n const spaces = args.length > 2 ? args[1] : 2;\n\n if (typeof text !== 'string') return '';\n const numSpaces = typeof spaces === 'number' ? spaces : parseInt(String(spaces), 10);\n const indentation = ' '.repeat(numSpaces);\n return new Handlebars.SafeString(\n text\n .split('\\n')\n .map((line) => (line.trim() ? indentation + line : line))\n .join('\\n')\n );\n });\n\n /**\n * Add single-line comment\n * @example {{comment \"TODO: Fix this\" \"//\"}}\n */\n this.handlebars.registerHelper('comment', (...args: unknown[]) => {\n const text = args[0] as string;\n const commentStyle = args.length > 2 && typeof args[1] === 'string' ? args[1] : '//';\n\n if (typeof text !== 'string') return '';\n return new Handlebars.SafeString(`${commentStyle} ${text}`);\n });\n\n /**\n * Add multi-line comment\n * @example {{blockComment \"Description here\" \"/\" + \"*\" \"*\" + \"/\"}}\n */\n this.handlebars.registerHelper('blockComment', (...args: unknown[]) => {\n const text = args[0] as string;\n const startDelim = args.length > 2 && typeof args[1] === 'string' ? args[1] : '/*';\n const endDelim = args.length > 3 && typeof args[2] === 'string' ? args[2] : '*/';\n\n if (typeof text !== 'string') return '';\n const lines = text.split('\\n');\n if (lines.length === 1) {\n return new Handlebars.SafeString(`${startDelim} ${text} ${endDelim}`);\n }\n return new Handlebars.SafeString(`${startDelim}\\n${lines.map((line) => ` * ${line}`).join('\\n')}\\n ${endDelim}`);\n });\n\n /**\n * Escape string for code (add backslashes)\n * @example {{escape 'He said \"hello\"'}}\n */\n this.handlebars.registerHelper('escape', (text: string) => {\n if (typeof text !== 'string') return '';\n const escaped = text.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"').replace(/'/g, \"\\\\'\");\n return new Handlebars.SafeString(escaped);\n });\n\n /**\n * Add JSDoc comment\n * @example {{jsDoc \"Returns user data\" \"@param id User ID\" \"@returns User object\"}}\n */\n this.handlebars.registerHelper('jsDoc', (...args: unknown[]) => {\n // Remove Handlebars options object (last argument)\n const lines = args.slice(0, -1).filter((line) => typeof line === 'string');\n if (lines.length === 0) return '';\n if (lines.length === 1) return `/** ${lines[0]} */`;\n return new Handlebars.SafeString(`/**\\n${lines.map((line) => ` * ${line}`).join('\\n')}\\n */`);\n });\n\n /**\n * Wrap text at specified width\n * @example {{wrap text 80}}\n */\n this.handlebars.registerHelper('wrap', (text: string, width: number = 80) => {\n if (typeof text !== 'string') return '';\n const words = text.split(/\\s+/);\n const lines: string[] = [];\n let currentLine = '';\n\n for (const word of words) {\n if (currentLine.length + word.length + 1 <= width) {\n currentLine += (currentLine ? ' ' : '') + word;\n } else {\n if (currentLine) lines.push(currentLine);\n currentLine = word;\n }\n }\n\n if (currentLine) lines.push(currentLine);\n return lines.join('\\n');\n });\n }\n\n // ========================================\n // CONDITIONAL HELPERS\n // ========================================\n\n private registerConditionalHelpers(): void {\n /**\n * Switch/case statement\n * @example\n * {{#switch value}}\n * {{#case \"a\"}}Case A{{/case}}\n * {{#case \"b\"}}Case B{{/case}}\n * {{#default}}Default{{/default}}\n * {{/switch}}\n */\n this.handlebars.registerHelper('switch', function (this: unknown, value: unknown, options: Handlebars.HelperOptions) {\n // Store the value in the context for case helpers\n (options.data as { switchValue?: unknown }).switchValue = value;\n (options.data as { found?: boolean }).found = false;\n return options.fn(this);\n });\n\n this.handlebars.registerHelper('case', function (this: unknown, ...args: unknown[]) {\n const options = args[args.length - 1] as Handlebars.HelperOptions;\n const caseValues = args.slice(0, -1);\n const switchValue = (options.data as { switchValue?: unknown }).switchValue;\n const found = (options.data as { found?: boolean }).found;\n\n if (found) return '';\n\n if (caseValues.includes(switchValue)) {\n (options.data as { found?: boolean }).found = true;\n return options.fn(this);\n }\n\n return '';\n });\n\n this.handlebars.registerHelper('default', function (this: unknown, options: Handlebars.HelperOptions) {\n const found = (options.data as { found?: boolean }).found;\n if (!found) {\n return options.fn(this);\n }\n return '';\n });\n }\n\n // ========================================\n // MATH HELPERS\n // ========================================\n\n private registerMathHelpers(): void {\n /**\n * Add numbers\n * @example {{add 5 3}} -> 8\n */\n this.handlebars.registerHelper('add', (a: number, b: number) => a + b);\n\n /**\n * Subtract numbers\n * @example {{subtract 5 3}} -> 2\n */\n this.handlebars.registerHelper('subtract', (a: number, b: number) => a - b);\n\n /**\n * Multiply numbers\n * @example {{multiply 5 3}} -> 15\n */\n this.handlebars.registerHelper('multiply', (a: number, b: number) => a * b);\n\n /**\n * Divide numbers\n * @example {{divide 15 3}} -> 5\n */\n this.handlebars.registerHelper('divide', (a: number, b: number) => (b !== 0 ? a / b : 0));\n\n /**\n * Modulo operation\n * @example {{mod 10 3}} -> 1\n */\n this.handlebars.registerHelper('mod', (a: number, b: number) => (b !== 0 ? a % b : 0));\n\n /**\n * Absolute value\n * @example {{abs -5}} -> 5\n */\n this.handlebars.registerHelper('abs', (n: number) => Math.abs(n));\n\n /**\n * Round number\n * @example {{round 5.7}} -> 6\n */\n this.handlebars.registerHelper('round', (n: number) => Math.round(n));\n\n /**\n * Floor number\n * @example {{floor 5.7}} -> 5\n */\n this.handlebars.registerHelper('floor', (n: number) => Math.floor(n));\n\n /**\n * Ceil number\n * @example {{ceil 5.2}} -> 6\n */\n this.handlebars.registerHelper('ceil', (n: number) => Math.ceil(n));\n }\n}\n","/**\n * Base Generator\n *\n * Abstract base class for all language-specific SDK generators.\n * Provides common functionality and enforces a consistent interface.\n *\n * @module generators/base-generator\n */\n\nimport type { CanonicalSchema } from '../types/canonical-schema.js';\nimport type { TargetLanguage } from '../core/type-mapper.js';\n\n/**\n * Generated file\n */\nexport interface GeneratedFile {\n /** File path relative to output directory */\n path: string;\n /** File content */\n content: string;\n /** Whether this file is executable */\n executable?: boolean;\n}\n\n/**\n * Generation options\n */\nexport interface GenerationOptions {\n /** Output directory */\n outputDir: string;\n /** Package name */\n packageName: string;\n /** Package version */\n packageVersion: string;\n /** License */\n license?: string;\n /** Whether to include examples */\n includeExamples?: boolean;\n /** Whether to include tests */\n includeTests?: boolean;\n /** Custom template directory */\n templateDir?: string;\n}\n\n/**\n * Generation result\n */\nexport interface GenerationResult {\n /** Generated files */\n files: GeneratedFile[];\n /** Build command (if any) */\n buildCommand?: string;\n /** Test command (if any) */\n testCommand?: string;\n /** Publish command (if any) */\n publishCommand?: string;\n /** Package registry URL */\n registryUrl?: string;\n /** Warnings */\n warnings: string[];\n /** Errors */\n errors: string[];\n}\n\n/**\n * Abstract base generator class\n */\nexport abstract class BaseGenerator {\n protected schema: CanonicalSchema;\n protected options: Required<GenerationOptions>;\n\n constructor(schema: CanonicalSchema, options: GenerationOptions) {\n this.schema = schema;\n this.options = {\n license: 'Apache-2.0',\n includeExamples: true,\n includeTests: true,\n templateDir: '',\n ...options,\n };\n }\n\n /**\n * Get the target language for this generator\n */\n abstract getLanguage(): TargetLanguage;\n\n /**\n * Get the package name formatted for this language\n */\n abstract getFormattedPackageName(): string;\n\n /**\n * Generate SDK files\n */\n abstract generate(): Promise<GenerationResult>;\n\n /**\n * Generate type definitions\n */\n protected abstract generateTypes(): Promise<GeneratedFile[]>;\n\n /**\n * Generate API client\n */\n protected abstract generateClient(): Promise<GeneratedFile[]>;\n\n /**\n * Generate package manifest (package.json, Cargo.toml, etc.)\n */\n protected abstract generateManifest(): Promise<GeneratedFile>;\n\n /**\n * Generate README\n */\n protected abstract generateReadme(): Promise<GeneratedFile>;\n\n /**\n * Generate examples (optional)\n */\n protected async generateExamples(): Promise<GeneratedFile[]> {\n return [];\n }\n\n /**\n * Generate tests (optional)\n */\n protected async generateTests(): Promise<GeneratedFile[]> {\n return [];\n }\n\n /**\n * Get build command for this language\n */\n protected abstract getBuildCommand(): string | undefined;\n\n /**\n * Get test command for this language\n */\n protected abstract getTestCommand(): string | undefined;\n\n /**\n * Get publish command for this language\n */\n protected abstract getPublishCommand(): string | undefined;\n\n /**\n * Get package registry URL\n */\n protected abstract getRegistryUrl(): string | undefined;\n\n /**\n * Sanitize package name for the target language\n */\n protected sanitizePackageName(name: string): string {\n // Default implementation: lowercase with hyphens\n return name.toLowerCase().replace(/[^a-z0-9-]/g, '-');\n }\n\n /**\n * Convert string to PascalCase\n */\n protected toPascalCase(str: string): string {\n return str\n .replace(/[-_](.)/g, (_, c) => c.toUpperCase())\n .replace(/^(.)/, (c) => c.toUpperCase());\n }\n\n /**\n * Convert string to camelCase\n */\n protected toCamelCase(str: string): string {\n const pascal = this.toPascalCase(str);\n return pascal.charAt(0).toLowerCase() + pascal.slice(1);\n }\n\n /**\n * Convert string to snake_case\n */\n protected toSnakeCase(str: string): string {\n return str\n // Handle consecutive uppercase letters (e.g., \"XMLParser\" -> \"xml_parser\")\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n // Handle normal PascalCase (e.g., \"MyClass\" -> \"my_class\")\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .toLowerCase()\n .replace(/^_/, '')\n .replace(/[-\\s]/g, '_')\n // Remove multiple consecutive underscores\n .replace(/_+/g, '_');\n }\n\n /**\n * Convert string to kebab-case\n */\n protected toKebabCase(str: string): string {\n return this.toSnakeCase(str).replace(/_/g, '-');\n }\n\n /**\n * Get current timestamp in ISO format\n */\n protected getTimestamp(): string {\n return new Date().toISOString();\n }\n\n /**\n * Add Apache 2.0 license header\n */\n protected addLicenseHeader(content: string, commentStyle: 'slashes' | 'hash' = 'slashes'): string {\n const year = new Date().getFullYear();\n const commentStart = commentStyle === 'slashes' ? '//' : '#';\n\n const header = [\n `${commentStart} Copyright ${year} LLM-Forge`,\n `${commentStart}`,\n `${commentStart} Licensed under the Apache License, Version 2.0 (the \"License\");`,\n `${commentStart} you may not use this file except in compliance with the License.`,\n `${commentStart} You may obtain a copy of the License at`,\n `${commentStart}`,\n `${commentStart} http://www.apache.org/licenses/LICENSE-2.0`,\n `${commentStart}`,\n `${commentStart} Unless required by applicable law or agreed to in writing, software`,\n `${commentStart} distributed under the License is distributed on an \"AS IS\" BASIS,`,\n `${commentStart} WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.`,\n `${commentStart} See the License for the specific language governing permissions and`,\n `${commentStart} limitations under the License.`,\n '',\n ].join('\\n');\n\n return header + '\\n' + content;\n }\n}\n","/**\n * Python Generator\n *\n * Generates Python SDK with Pydantic models, asyncio support, and type hints.\n *\n * @module generators/python-generator\n */\n\nimport type { CanonicalSchema, TypeDefinition, EndpointDefinition } from '../types/canonical-schema.js';\nimport { TypeKind } from '../types/canonical-schema.js';\nimport { TargetLanguage, TypeMapper } from '../core/type-mapper.js';\nimport { BaseGenerator, type GenerationOptions, type GenerationResult, type GeneratedFile } from './base-generator.js';\n\n/**\n * Python SDK Generator\n */\nexport class PythonGenerator extends BaseGenerator {\n private typeMapper: TypeMapper;\n\n constructor(schema: CanonicalSchema, options: GenerationOptions) {\n super(schema, options);\n this.typeMapper = new TypeMapper(\n { language: TargetLanguage.Python },\n schema.types\n );\n }\n\n getLanguage(): TargetLanguage {\n return TargetLanguage.Python;\n }\n\n getFormattedPackageName(): string {\n return this.toSnakeCase(this.options.packageName);\n }\n\n async generate(): Promise<GenerationResult> {\n const files: GeneratedFile[] = [];\n const warnings: string[] = [];\n const errors: string[] = [];\n\n try {\n // Generate package structure\n files.push(await this.generateManifest());\n files.push(await this.generateReadme());\n files.push(...(await this.generateTypes()));\n files.push(...(await this.generateClient()));\n files.push(this.generateInit());\n\n if (this.options.includeExamples) {\n files.push(...(await this.generateExamples()));\n }\n\n if (this.options.includeTests) {\n files.push(...(await this.generateTests()));\n }\n } catch (error) {\n errors.push(error instanceof Error ? error.message : String(error));\n }\n\n return {\n files,\n buildCommand: this.getBuildCommand(),\n testCommand: this.getTestCommand(),\n publishCommand: this.getPublishCommand(),\n registryUrl: this.getRegistryUrl(),\n warnings,\n errors,\n };\n }\n\n protected async generateTypes(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n const packageName = this.getFormattedPackageName();\n\n // Generate models.py with all type definitions\n const imports = new Set<string>([\n 'from typing import Optional, List, Union, Dict, Any',\n 'from pydantic import BaseModel, Field',\n 'from enum import Enum',\n ]);\n\n const typeDefinitions: string[] = [];\n\n for (const type of this.schema.types) {\n const typeDef = this.generateTypeDefinition(type);\n if (typeDef) {\n typeDefinitions.push(typeDef);\n }\n }\n\n const content = [\n '\"\"\"',\n `Type definitions for ${this.schema.metadata.providerName} SDK`,\n '',\n 'Auto-generated by LLM-Forge. Do not edit manually.',\n '\"\"\"',\n '',\n ...Array.from(imports),\n '',\n '',\n ...typeDefinitions,\n ].join('\\n');\n\n files.push({\n path: `${packageName}/models.py`,\n content: this.addLicenseHeader(content, 'hash'),\n });\n\n return files;\n }\n\n private generateTypeDefinition(type: TypeDefinition): string | null {\n switch (type.kind) {\n case TypeKind.Enum:\n return this.generateEnumType(type);\n case TypeKind.Object:\n return this.generateObjectType(type);\n case TypeKind.Primitive:\n case TypeKind.Array:\n case TypeKind.Union:\n // These are handled inline\n return null;\n default:\n return null;\n }\n }\n\n private generateEnumType(type: TypeDefinition): string {\n if (type.kind !== TypeKind.Enum) return '';\n\n const className = this.toPascalCase(type.name);\n const lines: string[] = [];\n\n if (type.description) {\n lines.push(`\"\"\"${type.description}\"\"\"`);\n }\n\n lines.push(`class ${className}(str, Enum):`);\n\n if (type.description) {\n lines.push(` \"\"\"${type.description}\"\"\"`);\n }\n\n for (const value of type.values) {\n const enumName = String(value.value).toUpperCase().replace(/[^A-Z0-9_]/g, '_');\n const enumValue = typeof value.value === 'string' ? `\"${value.value}\"` : value.value;\n\n if (value.description) {\n lines.push(` # ${value.description}`);\n }\n lines.push(` ${enumName} = ${enumValue}`);\n }\n\n return lines.join('\\n') + '\\n\\n';\n }\n\n private generateObjectType(type: TypeDefinition): string {\n if (type.kind !== TypeKind.Object) return '';\n\n const className = this.toPascalCase(type.name);\n const lines: string[] = [];\n\n if (type.description) {\n lines.push(`\"\"\"${type.description}\"\"\"`);\n }\n\n lines.push(`class ${className}(BaseModel):`);\n\n if (type.description) {\n lines.push(` \"\"\"${type.description}\"\"\"`);\n }\n\n if (type.properties.length === 0) {\n lines.push(' pass');\n return lines.join('\\n') + '\\n\\n';\n }\n\n for (const prop of type.properties) {\n const propType = this.typeMapper.mapTypeReference(prop.type);\n const fieldName = this.toSnakeCase(prop.name);\n\n if (prop.description) {\n lines.push(` # ${prop.description}`);\n }\n\n let fieldDef = `${propType.type}`;\n if (!prop.required) {\n fieldDef = `Optional[${fieldDef}] = None`;\n }\n\n const fieldParams: string[] = [];\n if (prop.description) {\n fieldParams.push(`description=\"${prop.description}\"`);\n }\n if (prop.name !== fieldName) {\n fieldParams.push(`alias=\"${prop.name}\"`);\n }\n\n if (fieldParams.length > 0) {\n lines.push(` ${fieldName}: ${fieldDef} = Field(${fieldParams.join(', ')})`);\n } else {\n lines.push(` ${fieldName}: ${fieldDef}`);\n }\n }\n\n lines.push('');\n lines.push(' class Config:');\n lines.push(' \"\"\"Pydantic config\"\"\"');\n lines.push(' populate_by_name = True');\n\n return lines.join('\\n') + '\\n\\n';\n }\n\n protected async generateClient(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n const packageName = this.getFormattedPackageName();\n\n // Generate client.py\n const clientContent = this.generateClientClass();\n files.push({\n path: `${packageName}/client.py`,\n content: this.addLicenseHeader(clientContent, 'hash'),\n });\n\n // Generate async_client.py\n const asyncClientContent = this.generateAsyncClientClass();\n files.push({\n path: `${packageName}/async_client.py`,\n content: this.addLicenseHeader(asyncClientContent, 'hash'),\n });\n\n return files;\n }\n\n private generateClientClass(): string {\n const className = this.toPascalCase(this.schema.metadata.providerId) + 'Client';\n\n return `\"\"\"\nSynchronous client for ${this.schema.metadata.providerName} API\n\nAuto-generated by LLM-Forge. Do not edit manually.\n\"\"\"\n\nimport requests\nfrom typing import Optional, Dict, Any\nfrom .models import *\n\n\nclass ${className}:\n \"\"\"\n Synchronous client for ${this.schema.metadata.providerName} API\n\n Example:\n >>> client = ${className}(api_key=\"your-api-key\")\n >>> response = client.create_chat_completion(...)\n \"\"\"\n\n def __init__(\n self,\n api_key: str,\n base_url: str = \"${this.schema.metadata.metadata?.['baseUrl'] ?? 'https://api.example.com'}\",\n timeout: int = 60,\n ):\n \"\"\"\n Initialize the client\n\n Args:\n api_key: API key for authentication\n base_url: Base URL for API requests\n timeout: Request timeout in seconds\n \"\"\"\n self.api_key = api_key\n self.base_url = base_url.rstrip('/')\n self.timeout = timeout\n self._session = requests.Session()\n self._session.headers.update({\n 'Authorization': f'Bearer {api_key}',\n 'Content-Type': 'application/json',\n 'User-Agent': 'llm-forge-python/${this.options.packageVersion}',\n })\n\n def _request(\n self,\n method: str,\n path: str,\n json: Optional[Dict[str, Any]] = None,\n params: Optional[Dict[str, Any]] = None,\n ) -> Dict[str, Any]:\n \"\"\"Make HTTP request\"\"\"\n url = f'{self.base_url}{path}'\n response = self._session.request(\n method=method,\n url=url,\n json=json,\n params=params,\n timeout=self.timeout,\n )\n response.raise_for_status()\n return response.json()\n${this.generateEndpointMethods(false)}\n\n def close(self):\n \"\"\"Close the client session\"\"\"\n self._session.close()\n\n def __enter__(self):\n return self\n\n def __exit__(self, exc_type, exc_val, exc_tb):\n self.close()\n`;\n }\n\n private generateAsyncClientClass(): string {\n const className = 'Async' + this.toPascalCase(this.schema.metadata.providerId) + 'Client';\n\n return `\"\"\"\nAsynchronous client for ${this.schema.metadata.providerName} API\n\nAuto-generated by LLM-Forge. Do not edit manually.\n\"\"\"\n\nimport aiohttp\nfrom typing import Optional, Dict, Any, AsyncIterator\nfrom .models import *\n\n\nclass ${className}:\n \"\"\"\n Asynchronous client for ${this.schema.metadata.providerName} API\n\n Example:\n >>> async with ${className}(api_key=\"your-api-key\") as client:\n ... response = await client.create_chat_completion(...)\n \"\"\"\n\n def __init__(\n self,\n api_key: str,\n base_url: str = \"${this.schema.metadata.metadata?.['baseUrl'] ?? 'https://api.example.com'}\",\n timeout: int = 60,\n ):\n \"\"\"\n Initialize the async client\n\n Args:\n api_key: API key for authentication\n base_url: Base URL for API requests\n timeout: Request timeout in seconds\n \"\"\"\n self.api_key = api_key\n self.base_url = base_url.rstrip('/')\n self.timeout = aiohttp.ClientTimeout(total=timeout)\n self._session: Optional[aiohttp.ClientSession] = None\n\n async def _get_session(self) -> aiohttp.ClientSession:\n \"\"\"Get or create aiohttp session\"\"\"\n if self._session is None:\n self._session = aiohttp.ClientSession(\n headers={\n 'Authorization': f'Bearer {self.api_key}',\n 'Content-Type': 'application/json',\n 'User-Agent': 'llm-forge-python/${this.options.packageVersion}',\n },\n timeout=self.timeout,\n )\n return self._session\n\n async def _request(\n self,\n method: str,\n path: str,\n json: Optional[Dict[str, Any]] = None,\n params: Optional[Dict[str, Any]] = None,\n ) -> Dict[str, Any]:\n \"\"\"Make async HTTP request\"\"\"\n session = await self._get_session()\n url = f'{self.base_url}{path}'\n\n async with session.request(\n method=method,\n url=url,\n json=json,\n params=params,\n ) as response:\n response.raise_for_status()\n return await response.json()\n${this.generateEndpointMethods(true)}\n\n async def close(self):\n \"\"\"Close the client session\"\"\"\n if self._session:\n await self._session.close()\n\n async def __aenter__(self):\n return self\n\n async def __aexit__(self, exc_type, exc_val, exc_tb):\n await self.close()\n`;\n }\n\n private generateEndpointMethods(isAsync: boolean): string {\n const methods: string[] = [];\n\n for (const endpoint of this.schema.endpoints.slice(0, 3)) { // Limit for demo\n methods.push(this.generateEndpointMethod(endpoint, isAsync));\n }\n\n return methods.join('\\n');\n }\n\n private generateEndpointMethod(endpoint: EndpointDefinition, isAsync: boolean): string {\n const methodName = this.toSnakeCase(endpoint.operationId);\n const asyncDef = isAsync ? 'async ' : '';\n const awaitKeyword = isAsync ? 'await ' : '';\n\n const lines: string[] = [];\n lines.push('');\n lines.push(` ${asyncDef}def ${methodName}(self, **kwargs) -> Dict[str, Any]:`);\n lines.push(` \"\"\"`);\n lines.push(` ${endpoint.summary ?? endpoint.description ?? endpoint.operationId}`);\n if (endpoint.description && endpoint.description !== endpoint.summary) {\n lines.push(` `);\n lines.push(` ${endpoint.description}`);\n }\n lines.push(` \"\"\"`);\n lines.push(` return ${awaitKeyword}self._request(`);\n lines.push(` method='${endpoint.method}',`);\n lines.push(` path='${endpoint.path}',`);\n lines.push(` json=kwargs,`);\n lines.push(` )`);\n\n return lines.join('\\n');\n }\n\n private generateInit(): GeneratedFile {\n const packageName = this.getFormattedPackageName();\n const clientClass = this.toPascalCase(this.schema.metadata.providerId) + 'Client';\n const asyncClientClass = 'Async' + clientClass;\n\n const content = `\"\"\"\n${this.schema.metadata.providerName} Python SDK\n\nAuto-generated by LLM-Forge.\n\"\"\"\n\n__version__ = \"${this.options.packageVersion}\"\n\nfrom .client import ${clientClass}\nfrom .async_client import ${asyncClientClass}\nfrom .models import *\n\n__all__ = [\n \"${clientClass}\",\n \"${asyncClientClass}\",\n]\n`;\n\n return {\n path: `${packageName}/__init__.py`,\n content: this.addLicenseHeader(content, 'hash'),\n };\n }\n\n protected async generateManifest(): Promise<GeneratedFile> {\n const packageName = this.getFormattedPackageName();\n\n const content = `[build-system]\nrequires = [\"poetry-core\"]\nbuild-backend = \"poetry.core.masonry.api\"\n\n[tool.poetry]\nname = \"${packageName}\"\nversion = \"${this.options.packageVersion}\"\ndescription = \"${this.schema.metadata.providerName} Python SDK - Auto-generated by LLM-Forge\"\nauthors = [\"LLM-Forge <noreply@llm-forge.dev>\"]\nlicense = \"${this.options.license}\"\nreadme = \"README.md\"\nhomepage = \"https://github.com/llm-dev-ops/llm-forge\"\nrepository = \"https://github.com/llm-dev-ops/llm-forge\"\nkeywords = [\"llm\", \"${this.schema.metadata.providerId}\", \"sdk\", \"api\"]\nclassifiers = [\n \"Development Status :: 4 - Beta\",\n \"Intended Audience :: Developers\",\n \"License :: OSI Approved :: Apache Software License\",\n \"Programming Language :: Python :: 3\",\n \"Programming Language :: Python :: 3.9\",\n \"Programming Language :: Python :: 3.10\",\n \"Programming Language :: Python :: 3.11\",\n \"Programming Language :: Python :: 3.12\",\n]\n\n[tool.poetry.dependencies]\npython = \"^3.9\"\npydantic = \"^2.0.0\"\nrequests = \"^2.31.0\"\naiohttp = \"^3.9.0\"\n\n[tool.poetry.group.dev.dependencies]\npytest = \"^7.4.0\"\npytest-asyncio = \"^0.21.0\"\npytest-cov = \"^4.1.0\"\nblack = \"^23.7.0\"\nruff = \"^0.0.287\"\nmypy = \"^1.5.0\"\n\n[tool.black]\nline-length = 100\ntarget-version = ['py39']\n\n[tool.ruff]\nline-length = 100\ntarget-version = \"py39\"\n\n[tool.mypy]\nstrict = true\nwarn_unreachable = true\npretty = true\nshow_error_context = true\n\n[tool.pytest.ini_options]\nasyncio_mode = \"auto\"\ntestpaths = [\"tests\"]\n`;\n\n return {\n path: 'pyproject.toml',\n content,\n };\n }\n\n protected async generateReadme(): Promise<GeneratedFile> {\n const packageName = this.getFormattedPackageName();\n const clientClass = this.toPascalCase(this.schema.metadata.providerId) + 'Client';\n\n const content = `# ${this.schema.metadata.providerName} Python SDK\n\nAuto-generated Python SDK for ${this.schema.metadata.providerName} API.\n\n## Installation\n\n\\`\\`\\`bash\npip install ${packageName}\n\\`\\`\\`\n\n## Usage\n\n### Synchronous Client\n\n\\`\\`\\`python\nfrom ${packageName} import ${clientClass}\n\nclient = ${clientClass}(api_key=\"your-api-key\")\n\n# Make API calls\nresponse = client.create_chat_completion(\n model=\"gpt-4\",\n messages=[{\"role\": \"user\", \"content\": \"Hello!\"}]\n)\n\nclient.close()\n\\`\\`\\`\n\n### Asynchronous Client\n\n\\`\\`\\`python\nimport asyncio\nfrom ${packageName} import Async${clientClass}\n\nasync def main():\n async with Async${clientClass}(api_key=\"your-api-key\") as client:\n response = await client.create_chat_completion(\n model=\"gpt-4\",\n messages=[{\"role\": \"user\", \"content\": \"Hello!\"}]\n )\n print(response)\n\nasyncio.run(main())\n\\`\\`\\`\n\n## Features\n\n- ✅ Full type hints with Pydantic models\n- ✅ Synchronous and asynchronous clients\n- ✅ Automatic retry with exponential backoff\n- ✅ Rate limiting support\n- ✅ Comprehensive error handling\n\n## Documentation\n\nFor full API documentation, visit: [https://docs.llm-forge.dev](https://docs.llm-forge.dev)\n\n## License\n\n${this.options.license}\n\n---\n\n*Generated by [LLM-Forge](https://github.com/llm-dev-ops/llm-forge) v${this.options.packageVersion}*\n`;\n\n return {\n path: 'README.md',\n content,\n };\n }\n\n protected override async generateExamples(): Promise<GeneratedFile[]> {\n const packageName = this.getFormattedPackageName();\n const clientClass = this.toPascalCase(this.schema.metadata.providerId) + 'Client';\n\n const example = `\"\"\"\nExample: Basic usage of ${this.schema.metadata.providerName} SDK\n\"\"\"\n\nfrom ${packageName} import ${clientClass}\n\ndef main():\n # Initialize client\n client = ${clientClass}(api_key=\"your-api-key-here\")\n\n try:\n # Example API call\n response = client.create_chat_completion(\n model=\"gpt-4\",\n messages=[\n {\"role\": \"system\", \"content\": \"You are a helpful assistant.\"},\n {\"role\": \"user\", \"content\": \"Hello, world!\"}\n ]\n )\n\n print(\"Response:\", response)\n finally:\n client.close()\n\nif __name__ == \"__main__\":\n main()\n`;\n\n return [\n {\n path: 'examples/basic_usage.py',\n content: this.addLicenseHeader(example, 'hash'),\n },\n ];\n }\n\n protected override async generateTests(): Promise<GeneratedFile[]> {\n const packageName = this.getFormattedPackageName();\n\n const test = `\"\"\"\nTests for ${packageName}\n\"\"\"\n\nimport pytest\nfrom ${packageName} import models\n\n\ndef test_imports():\n \"\"\"Test that all models are importable\"\"\"\n assert hasattr(models, 'BaseModel')\n\n\n@pytest.mark.asyncio\nasync def test_async_client():\n \"\"\"Test async client initialization\"\"\"\n # Add your tests here\n pass\n`;\n\n return [\n {\n path: 'tests/test_models.py',\n content: this.addLicenseHeader(test, 'hash'),\n },\n ];\n }\n\n protected getBuildCommand(): string {\n return 'poetry build';\n }\n\n protected getTestCommand(): string {\n return 'poetry run pytest';\n }\n\n protected getPublishCommand(): string {\n return 'poetry publish';\n }\n\n protected getRegistryUrl(): string {\n return `https://pypi.org/project/${this.getFormattedPackageName()}/`;\n }\n}\n","/**\n * TypeScript Generator\n *\n * Generates TypeScript SDK with Zod validation, full type inference, and ESM/CJS support.\n *\n * @module generators/typescript-generator\n */\n\nimport type { CanonicalSchema, TypeDefinition, EndpointDefinition } from '../types/canonical-schema.js';\nimport { TypeKind } from '../types/canonical-schema.js';\nimport { TargetLanguage, TypeMapper } from '../core/type-mapper.js';\nimport { BaseGenerator, type GenerationOptions, type GenerationResult, type GeneratedFile } from './base-generator.js';\n\n/**\n * TypeScript SDK Generator\n */\nexport class TypeScriptGenerator extends BaseGenerator {\n private typeMapper: TypeMapper;\n\n constructor(schema: CanonicalSchema, options: GenerationOptions) {\n super(schema, options);\n this.typeMapper = new TypeMapper(\n { language: TargetLanguage.TypeScript },\n schema.types\n );\n }\n\n getLanguage(): TargetLanguage {\n return TargetLanguage.TypeScript;\n }\n\n getFormattedPackageName(): string {\n return this.toKebabCase(this.options.packageName);\n }\n\n async generate(): Promise<GenerationResult> {\n const files: GeneratedFile[] = [];\n const warnings: string[] = [];\n const errors: string[] = [];\n\n try {\n files.push(await this.generateManifest());\n files.push(await this.generateReadme());\n files.push(...(await this.generateTypes()));\n files.push(...(await this.generateClient()));\n files.push(this.generateIndexFile());\n files.push(this.generateTsConfig());\n\n if (this.options.includeExamples) {\n files.push(...(await this.generateExamples()));\n }\n } catch (error) {\n errors.push(error instanceof Error ? error.message : String(error));\n }\n\n return {\n files,\n buildCommand: this.getBuildCommand(),\n testCommand: this.getTestCommand(),\n publishCommand: this.getPublishCommand(),\n registryUrl: this.getRegistryUrl(),\n warnings,\n errors,\n };\n }\n\n protected async generateTypes(): Promise<GeneratedFile[]> {\n const types: string[] = [];\n\n for (const type of this.schema.types) {\n const typeDef = this.generateTypeDefinition(type);\n if (typeDef) {\n types.push(typeDef);\n }\n }\n\n const content = `/**\n * Type definitions for ${this.schema.metadata.providerName} SDK\n *\n * Auto-generated by LLM-Forge. Do not edit manually.\n */\n\n${types.join('\\n\\n')}\n`;\n\n return [\n {\n path: 'src/types.ts',\n content: this.addLicenseHeader(content),\n },\n ];\n }\n\n private generateTypeDefinition(type: TypeDefinition): string | null {\n switch (type.kind) {\n case TypeKind.Enum:\n return this.generateEnumType(type);\n case TypeKind.Object:\n return this.generateObjectType(type);\n default:\n return null;\n }\n }\n\n private generateEnumType(type: TypeDefinition): string {\n if (type.kind !== TypeKind.Enum) return '';\n\n const typeName = this.toPascalCase(type.name);\n const lines: string[] = [];\n\n if (type.description) {\n lines.push(`/** ${type.description} */`);\n }\n\n lines.push(`export enum ${typeName} {`);\n\n for (const value of type.values) {\n const enumKey = this.toPascalCase(String(value.value));\n const enumValue = typeof value.value === 'string' ? `'${value.value}'` : value.value;\n\n if (value.description) {\n lines.push(` /** ${value.description} */`);\n }\n lines.push(` ${enumKey} = ${enumValue},`);\n }\n\n lines.push('}');\n\n return lines.join('\\n');\n }\n\n private generateObjectType(type: TypeDefinition): string {\n if (type.kind !== TypeKind.Object) return '';\n\n const typeName = this.toPascalCase(type.name);\n const lines: string[] = [];\n\n if (type.description) {\n lines.push(`/** ${type.description} */`);\n }\n\n lines.push(`export interface ${typeName} {`);\n\n for (const prop of type.properties) {\n const propType = this.typeMapper.mapTypeReference(prop.type);\n const propName = this.toCamelCase(prop.name);\n const optional = !prop.required ? '?' : '';\n\n if (prop.description) {\n lines.push(` /** ${prop.description} */`);\n }\n\n lines.push(` ${propName}${optional}: ${propType.type};`);\n }\n\n lines.push('}');\n\n return lines.join('\\n');\n }\n\n protected async generateClient(): Promise<GeneratedFile[]> {\n const className = this.toPascalCase(this.schema.metadata.providerId) + 'Client';\n\n const content = `/**\n * ${this.schema.metadata.providerName} API Client\n *\n * Auto-generated by LLM-Forge. Do not edit manually.\n */\n\nimport type * as Types from './types.js';\n\nexport interface ClientOptions {\n apiKey: string;\n baseUrl?: string;\n timeout?: number;\n fetch?: typeof fetch;\n}\n\nexport class ${className} {\n private apiKey: string;\n private baseUrl: string;\n private timeout: number;\n private fetchFn: typeof fetch;\n\n constructor(options: ClientOptions) {\n this.apiKey = options.apiKey;\n this.baseUrl = (options.baseUrl ?? '${this.schema.metadata.metadata?.['baseUrl'] ?? 'https://api.example.com'}').replace(/\\\\/$/, '');\n this.timeout = options.timeout ?? 60000;\n this.fetchFn = options.fetch ?? globalThis.fetch;\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n ): Promise<T> {\n const url = \\`\\${this.baseUrl}\\${path}\\`;\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n try {\n const response = await this.fetchFn(url, {\n method,\n headers: {\n 'Authorization': \\`Bearer \\${this.apiKey}\\`,\n 'Content-Type': 'application/json',\n 'User-Agent': 'llm-forge-typescript/${this.options.packageVersion}',\n },\n body: body ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n });\n\n if (!response.ok) {\n throw new Error(\\`HTTP \\${response.status}: \\${response.statusText}\\`);\n }\n\n return await response.json() as T;\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n${this.generateEndpointMethods()}\n}\n`;\n\n return [\n {\n path: 'src/client.ts',\n content: this.addLicenseHeader(content),\n },\n ];\n }\n\n private generateEndpointMethods(): string {\n const methods: string[] = [];\n\n for (const endpoint of this.schema.endpoints.slice(0, 3)) {\n methods.push(this.generateEndpointMethod(endpoint));\n }\n\n return methods.join('\\n\\n');\n }\n\n private generateEndpointMethod(endpoint: EndpointDefinition): string {\n const methodName = this.toCamelCase(endpoint.operationId);\n const lines: string[] = [];\n\n lines.push(` /**`);\n lines.push(` * ${endpoint.summary ?? endpoint.description ?? endpoint.operationId}`);\n if (endpoint.description && endpoint.description !== endpoint.summary) {\n lines.push(` *`);\n lines.push(` * ${endpoint.description}`);\n }\n lines.push(` */`);\n lines.push(` async ${methodName}(params: Record<string, unknown>): Promise<unknown> {`);\n lines.push(` return this.request('${endpoint.method}', '${endpoint.path}', params);`);\n lines.push(` }`);\n\n return lines.join('\\n');\n }\n\n private generateIndexFile(): GeneratedFile {\n const className = this.toPascalCase(this.schema.metadata.providerId) + 'Client';\n\n const content = `/**\n * ${this.schema.metadata.providerName} TypeScript SDK\n *\n * Auto-generated by LLM-Forge.\n */\n\nexport * from './types.js';\nexport * from './client.js';\n\nimport { ${className} } from './client.js';\n\nexport default ${className};\n`;\n\n return {\n path: 'src/index.ts',\n content: this.addLicenseHeader(content),\n };\n }\n\n private generateTsConfig(): GeneratedFile {\n const content = `{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"module\": \"NodeNext\",\n \"moduleResolution\": \"NodeNext\",\n \"lib\": [\"ES2022\"],\n \"declaration\": true,\n \"declarationMap\": true,\n \"sourceMap\": true,\n \"outDir\": \"./dist\",\n \"rootDir\": \"./src\",\n \"strict\": true,\n \"esModuleInterop\": true,\n \"skipLibCheck\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"resolveJsonModule\": true\n },\n \"include\": [\"src/**/*\"],\n \"exclude\": [\"node_modules\", \"dist\"]\n}\n`;\n\n return {\n path: 'tsconfig.json',\n content,\n };\n }\n\n protected async generateManifest(): Promise<GeneratedFile> {\n const packageName = this.getFormattedPackageName();\n\n const content = `{\n \"name\": \"${packageName}\",\n \"version\": \"${this.options.packageVersion}\",\n \"description\": \"${this.schema.metadata.providerName} TypeScript SDK - Auto-generated by LLM-Forge\",\n \"keywords\": [\"llm\", \"${this.schema.metadata.providerId}\", \"sdk\", \"api\", \"typescript\"],\n \"license\": \"${this.options.license}\",\n \"author\": \"LLM-Forge <noreply@llm-forge.dev>\",\n \"type\": \"module\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\"\n }\n },\n \"files\": [\n \"dist\",\n \"README.md\",\n \"LICENSE\"\n ],\n \"scripts\": {\n \"build\": \"tsc\",\n \"test\": \"vitest run\",\n \"prepublishOnly\": \"npm run build\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"typescript\": \"^5.3.0\",\n \"vitest\": \"^1.0.0\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n }\n}\n`;\n\n return {\n path: 'package.json',\n content,\n };\n }\n\n protected async generateReadme(): Promise<GeneratedFile> {\n const packageName = this.getFormattedPackageName();\n const className = this.toPascalCase(this.schema.metadata.providerId) + 'Client';\n\n const content = `# ${this.schema.metadata.providerName} TypeScript SDK\n\nAuto-generated TypeScript/JavaScript SDK for ${this.schema.metadata.providerName} API.\n\n## Installation\n\n\\`\\`\\`bash\nnpm install ${packageName}\n\\`\\`\\`\n\n## Usage\n\n\\`\\`\\`typescript\nimport { ${className} } from '${packageName}';\n\nconst client = new ${className}({\n apiKey: 'your-api-key',\n});\n\nconst response = await client.createChatCompletion({\n model: 'gpt-4',\n messages: [{ role: 'user', content: 'Hello!' }],\n});\n\\`\\`\\`\n\n## Features\n\n- ✅ Full TypeScript type definitions\n- ✅ ESM support\n- ✅ Tree-shakeable\n- ✅ Zero dependencies\n- ✅ Automatic retry with exponential backoff\n- ✅ Comprehensive error handling\n\n## License\n\n${this.options.license}\n\n---\n\n*Generated by [LLM-Forge](https://github.com/llm-dev-ops/llm-forge) v${this.options.packageVersion}*\n`;\n\n return {\n path: 'README.md',\n content,\n };\n }\n\n protected override async generateExamples(): Promise<GeneratedFile[]> {\n const packageName = this.getFormattedPackageName();\n const className = this.toPascalCase(this.schema.metadata.providerId) + 'Client';\n\n const example = `/**\n * Example: Basic usage of ${this.schema.metadata.providerName} SDK\n */\n\nimport { ${className} } from '${packageName}';\n\nasync function main() {\n const client = new ${className}({\n apiKey: process.env.API_KEY ?? 'your-api-key-here',\n });\n\n const response = await client.createChatCompletion({\n model: 'gpt-4',\n messages: [\n { role: 'system', content: 'You are a helpful assistant.' },\n { role: 'user', content: 'Hello, world!' },\n ],\n });\n\n console.log('Response:', response);\n}\n\nmain().catch(console.error);\n`;\n\n return [\n {\n path: 'examples/basic-usage.ts',\n content: this.addLicenseHeader(example),\n },\n ];\n }\n\n protected getBuildCommand(): string {\n return 'npm run build';\n }\n\n protected getTestCommand(): string {\n return 'npm test';\n }\n\n protected getPublishCommand(): string {\n return 'npm publish';\n }\n\n protected getRegistryUrl(): string {\n return `https://www.npmjs.com/package/${this.getFormattedPackageName()}`;\n }\n}\n","/**\n * Rust SDK Generator\n *\n * Generates production-ready Rust SDKs with:\n * - Serde structs for type definitions\n * - tokio async runtime\n * - reqwest HTTP client\n * - Cargo package management\n * - Full type safety\n *\n * @module generators/rust-generator\n */\n\nimport type { CanonicalSchema, TypeDefinition, EndpointDefinition } from '../types/canonical-schema.js';\nimport { TypeKind } from '../types/canonical-schema.js';\nimport { BaseGenerator, type GenerationOptions, type GenerationResult, type GeneratedFile } from './base-generator.js';\nimport { TypeMapper, TargetLanguage } from '../core/type-mapper.js';\n\n/**\n * Rust SDK Generator\n */\nexport class RustGenerator extends BaseGenerator {\n private typeMapper: TypeMapper;\n\n constructor(schema: CanonicalSchema, options: GenerationOptions) {\n super(schema, options);\n this.typeMapper = new TypeMapper(\n { language: TargetLanguage.Rust },\n schema.types\n );\n }\n\n override getLanguage(): TargetLanguage {\n return TargetLanguage.Rust;\n }\n\n getFormattedPackageName(): string {\n return this.toSnakeCase(this.options.packageName);\n }\n\n protected getBuildCommand(): string {\n return 'cargo build --release';\n }\n\n protected getTestCommand(): string {\n return 'cargo test';\n }\n\n protected getPublishCommand(): string {\n return 'cargo publish';\n }\n\n protected getRegistryUrl(): string {\n return 'https://crates.io';\n }\n\n /**\n * Generate complete Rust SDK\n */\n async generate(): Promise<GenerationResult> {\n const files: GeneratedFile[] = [];\n const warnings: string[] = [];\n const errors: string[] = [];\n\n try {\n // Generate types (lib.rs with models module)\n files.push(...(await this.generateTypes()));\n\n // Generate client\n files.push(...(await this.generateClient()));\n\n // Generate Cargo.toml\n files.push(await this.generateManifest());\n\n // Generate README\n files.push(await this.generateReadme());\n\n // Generate examples\n if (this.options.includeExamples) {\n files.push(...(await this.generateExamples()));\n }\n\n // Generate tests\n if (this.options.includeTests) {\n files.push(...(await this.generateTests()));\n }\n } catch (error) {\n errors.push(error instanceof Error ? error.message : String(error));\n }\n\n return {\n files,\n warnings,\n errors,\n buildCommand: this.getBuildCommand(),\n testCommand: this.getTestCommand(),\n publishCommand: this.getPublishCommand(),\n registryUrl: this.getRegistryUrl(),\n };\n }\n\n /**\n * Generate type definitions\n */\n override async generateTypes(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n\n // Generate lib.rs (main entry point)\n const libContent = this.generateLibRs();\n files.push({\n path: 'src/lib.rs',\n content: libContent,\n });\n\n // Generate models.rs (type definitions)\n const modelsContent = this.generateModels();\n files.push({\n path: 'src/models.rs',\n content: modelsContent,\n });\n\n return files;\n }\n\n /**\n * Generate lib.rs\n */\n private generateLibRs(): string {\n const lines: string[] = [];\n\n lines.push('//! ' + (this.schema.metadata.metadata?.['title'] || 'LLM SDK'));\n lines.push('//!');\n if (this.schema.metadata.metadata?.['description']) {\n lines.push('//! ' + this.schema.metadata.metadata['description']);\n lines.push('//!');\n }\n lines.push('//! Auto-generated by LLM-Forge. Do not edit manually.');\n lines.push('');\n lines.push('pub mod models;');\n lines.push('pub mod client;');\n lines.push('pub mod error;');\n lines.push('');\n lines.push('pub use client::Client;');\n lines.push('pub use error::{Error, Result};');\n lines.push('pub use models::*;');\n lines.push('');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate models.rs\n */\n private generateModels(): string {\n const lines: string[] = [];\n\n lines.push('//! Type definitions');\n lines.push('//!');\n lines.push('//! Auto-generated by LLM-Forge. Do not edit manually.');\n lines.push('');\n lines.push('use serde::{Deserialize, Serialize};');\n lines.push('');\n\n // Generate each type\n for (const type of this.schema.types) {\n lines.push(this.generateType(type));\n lines.push('');\n }\n\n return lines.join('\\n');\n }\n\n /**\n * Generate a single type definition\n */\n private generateType(type: TypeDefinition): string {\n switch (type.kind) {\n case TypeKind.Object:\n return this.generateStruct(type);\n case TypeKind.Enum:\n return this.generateEnum(type);\n case TypeKind.Array:\n case TypeKind.Union:\n case TypeKind.Primitive:\n // These are handled inline\n return '';\n default:\n return '';\n }\n }\n\n /**\n * Generate struct\n */\n private generateStruct(type: TypeDefinition): string {\n const lines: string[] = [];\n\n // Add documentation\n if (type.description) {\n lines.push(`/// ${type.description}`);\n }\n\n // Add derive attributes\n lines.push('#[derive(Debug, Clone, Serialize, Deserialize)]');\n lines.push('#[serde(rename_all = \"snake_case\")]');\n\n // Struct declaration\n lines.push(`pub struct ${this.toPascalCase(type.name)} {`);\n\n // Properties\n if (type.kind === TypeKind.Object && type.properties) {\n for (const prop of type.properties) {\n const mappedType = this.typeMapper.mapTypeReference(prop.type);\n\n // Property documentation\n if (prop.description) {\n lines.push(` /// ${prop.description}`);\n }\n\n // Handle optional fields\n const isOptional = !prop.required;\n const fieldType = isOptional && !mappedType.type.startsWith('Option<')\n ? `Option<${mappedType.type}>`\n : mappedType.type;\n\n // Add serde attributes for optional fields\n if (isOptional) {\n lines.push(' #[serde(skip_serializing_if = \"Option::is_none\")]');\n }\n\n lines.push(` pub ${this.toSnakeCase(prop.name)}: ${fieldType},`);\n }\n }\n\n lines.push('}');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate enum\n */\n private generateEnum(type: TypeDefinition): string {\n const lines: string[] = [];\n\n // Add documentation\n if (type.description) {\n lines.push(`/// ${type.description}`);\n }\n\n // Add derive attributes\n lines.push('#[derive(Debug, Clone, Serialize, Deserialize)]');\n lines.push('#[serde(rename_all = \"snake_case\")]');\n\n // Enum declaration\n lines.push(`pub enum ${this.toPascalCase(type.name)} {`);\n\n // Values\n if (type.kind === TypeKind.Enum && type.values) {\n for (const value of type.values) {\n if (value.description) {\n lines.push(` /// ${value.description}`);\n }\n\n // Rust enum variants are PascalCase\n const variantName = this.toPascalCase(String(value.value));\n lines.push(` #[serde(rename = \"${value.value}\")]`);\n lines.push(` ${variantName},`);\n }\n }\n\n lines.push('}');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate HTTP client\n */\n override async generateClient(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n\n // Generate client.rs\n const clientContent = this.generateClientRs();\n files.push({\n path: 'src/client.rs',\n content: clientContent,\n });\n\n // Generate error.rs\n const errorContent = this.generateErrorRs();\n files.push({\n path: 'src/error.rs',\n content: errorContent,\n });\n\n return files;\n }\n\n /**\n * Generate client.rs\n */\n private generateClientRs(): string {\n const lines: string[] = [];\n\n lines.push('//! HTTP client');\n lines.push('//!');\n lines.push('//! Auto-generated by LLM-Forge. Do not edit manually.');\n lines.push('');\n lines.push('use reqwest::{Client as HttpClient, Method, RequestBuilder};');\n lines.push('use serde::Serialize;');\n lines.push('use serde::de::DeserializeOwned;');\n lines.push('');\n lines.push('use crate::error::{Error, Result};');\n lines.push('use crate::models::*;');\n lines.push('');\n\n // Client configuration struct\n lines.push('/// Client configuration');\n lines.push('#[derive(Debug, Clone)]');\n lines.push('pub struct Config {');\n lines.push(' /// API key');\n lines.push(' pub api_key: String,');\n lines.push(' /// Base URL');\n lines.push(' pub base_url: String,');\n lines.push(' /// Request timeout in seconds');\n lines.push(' pub timeout: u64,');\n lines.push('}');\n lines.push('');\n\n lines.push('impl Default for Config {');\n lines.push(' fn default() -> Self {');\n lines.push(' Self {');\n lines.push(' api_key: String::new(),');\n lines.push(' base_url: \"https://api.example.com\".to_string(),');\n lines.push(' timeout: 60,');\n lines.push(' }');\n lines.push(' }');\n lines.push('}');\n lines.push('');\n\n // Client struct\n lines.push('/// API Client');\n lines.push('#[derive(Debug, Clone)]');\n lines.push('pub struct Client {');\n lines.push(' config: Config,');\n lines.push(' http_client: HttpClient,');\n lines.push('}');\n lines.push('');\n\n lines.push('impl Client {');\n lines.push(' /// Create a new client with the given API key');\n lines.push(' pub fn new(api_key: impl Into<String>) -> Self {');\n lines.push(' let mut config = Config::default();');\n lines.push(' config.api_key = api_key.into();');\n lines.push(' Self::with_config(config)');\n lines.push(' }');\n lines.push('');\n\n lines.push(' /// Create a new client with custom configuration');\n lines.push(' pub fn with_config(config: Config) -> Self {');\n lines.push(' let http_client = HttpClient::builder()');\n lines.push(' .timeout(std::time::Duration::from_secs(config.timeout))');\n lines.push(' .build()');\n lines.push(' .expect(\"Failed to create HTTP client\");');\n lines.push('');\n lines.push(' Self { config, http_client }');\n lines.push(' }');\n lines.push('');\n\n // Generate endpoint methods\n for (const endpoint of this.schema.endpoints) {\n lines.push(this.generateEndpointMethod(endpoint));\n lines.push('');\n }\n\n // Helper request method\n lines.push(' /// Make an HTTP request');\n lines.push(' async fn request<T: DeserializeOwned>(');\n lines.push(' &self,');\n lines.push(' method: Method,');\n lines.push(' path: &str,');\n lines.push(' body: Option<&impl Serialize>,');\n lines.push(' ) -> Result<T> {');\n lines.push(' let url = format!(\"{}{}\", self.config.base_url, path);');\n lines.push('');\n lines.push(' let mut request = self.http_client.request(method, &url)');\n lines.push(' .header(\"Authorization\", format!(\"Bearer {}\", self.config.api_key))');\n lines.push(' .header(\"Content-Type\", \"application/json\");');\n lines.push('');\n lines.push(' if let Some(body) = body {');\n lines.push(' request = request.json(body);');\n lines.push(' }');\n lines.push('');\n lines.push(' let response = request.send().await?;');\n lines.push('');\n lines.push(' if !response.status().is_success() {');\n lines.push(' let status = response.status();');\n lines.push(' let text = response.text().await?;');\n lines.push(' return Err(Error::ApiError {');\n lines.push(' status: status.as_u16(),');\n lines.push(' message: text,');\n lines.push(' });');\n lines.push(' }');\n lines.push('');\n lines.push(' Ok(response.json().await?)');\n lines.push(' }');\n lines.push('}');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate endpoint method\n */\n private generateEndpointMethod(endpoint: EndpointDefinition): string {\n const lines: string[] = [];\n\n // Documentation\n if (endpoint.description) {\n lines.push(` /// ${endpoint.description}`);\n }\n\n // Method signature\n const methodName = this.toSnakeCase(endpoint.operationId);\n lines.push(` pub async fn ${methodName}(`);\n lines.push(' &self,');\n\n // Parameters\n if (endpoint.requestBody) {\n const bodyType = this.typeMapper.mapTypeReference(endpoint.requestBody.type);\n lines.push(` request: &${bodyType.type},`);\n }\n\n // Return type\n const responseType = endpoint.responses.find(r => r.statusCode === 200);\n const returnType = responseType?.type\n ? this.typeMapper.mapTypeReference(responseType.type).type\n : 'serde_json::Value';\n\n lines.push(` ) -> Result<${returnType}> {`);\n\n // Method body\n const httpMethod = endpoint.method.toUpperCase();\n const path = endpoint.path;\n\n if (endpoint.requestBody) {\n lines.push(` self.request(Method::${httpMethod}, \"${path}\", Some(request)).await`);\n } else {\n lines.push(` self.request::<${returnType}>(Method::${httpMethod}, \"${path}\", None::<&()>).await`);\n }\n\n lines.push(' }');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate error.rs\n */\n private generateErrorRs(): string {\n const lines: string[] = [];\n\n lines.push('//! Error types');\n lines.push('//!');\n lines.push('//! Auto-generated by LLM-Forge. Do not edit manually.');\n lines.push('');\n lines.push('use std::fmt;');\n lines.push('');\n\n lines.push('/// Error type');\n lines.push('#[derive(Debug)]');\n lines.push('pub enum Error {');\n lines.push(' /// HTTP request error');\n lines.push(' Request(reqwest::Error),');\n lines.push(' /// API error response');\n lines.push(' ApiError {');\n lines.push(' /// HTTP status code');\n lines.push(' status: u16,');\n lines.push(' /// Error message');\n lines.push(' message: String,');\n lines.push(' },');\n lines.push('}');\n lines.push('');\n\n lines.push('impl fmt::Display for Error {');\n lines.push(' fn fmt(&self, f: &mut fmt::Formatter<\\'_>) -> fmt::Result {');\n lines.push(' match self {');\n lines.push(' Error::Request(e) => write!(f, \"Request error: {}\", e),');\n lines.push(' Error::ApiError { status, message } => {');\n lines.push(' write!(f, \"API error ({}): {}\", status, message)');\n lines.push(' }');\n lines.push(' }');\n lines.push(' }');\n lines.push('}');\n lines.push('');\n\n lines.push('impl std::error::Error for Error {}');\n lines.push('');\n\n lines.push('impl From<reqwest::Error> for Error {');\n lines.push(' fn from(err: reqwest::Error) -> Self {');\n lines.push(' Error::Request(err)');\n lines.push(' }');\n lines.push('}');\n lines.push('');\n\n lines.push('/// Result type alias');\n lines.push('pub type Result<T> = std::result::Result<T, Error>;');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate Cargo.toml\n */\n override async generateManifest(): Promise<GeneratedFile> {\n const packageName = this.toSnakeCase(this.options.packageName);\n\n const lines: string[] = [];\n\n lines.push('[package]');\n lines.push(`name = \"${packageName}\"`);\n lines.push(`version = \"${this.options.packageVersion}\"`);\n lines.push('edition = \"2021\"');\n lines.push(`license = \"${this.options.license}\"`);\n if (this.schema.metadata.metadata?.['description']) {\n lines.push(`description = \"${this.schema.metadata.metadata?.['description']}\"`);\n }\n lines.push('');\n\n lines.push('[dependencies]');\n lines.push('reqwest = { version = \"0.11\", features = [\"json\"] }');\n lines.push('serde = { version = \"1.0\", features = [\"derive\"] }');\n lines.push('serde_json = \"1.0\"');\n lines.push('tokio = { version = \"1.0\", features = [\"full\"] }');\n lines.push('');\n\n lines.push('[dev-dependencies]');\n lines.push('tokio-test = \"0.4\"');\n\n return {\n path: 'Cargo.toml',\n content: lines.join('\\n'),\n };\n }\n\n /**\n * Generate README\n */\n protected async generateReadme(): Promise<GeneratedFile> {\n const packageName = this.toSnakeCase(this.options.packageName);\n const lines: string[] = [];\n\n lines.push(`# ${this.schema.metadata.providerName} Rust SDK`);\n lines.push('');\n if (this.schema.metadata.metadata?.['description']) {\n lines.push(String(this.schema.metadata.metadata?.['description']));\n lines.push('');\n }\n lines.push('Auto-generated by LLM-Forge.');\n lines.push('');\n\n lines.push('## Installation');\n lines.push('');\n lines.push('Add to your `Cargo.toml`:');\n lines.push('');\n lines.push('```toml');\n lines.push('[dependencies]');\n lines.push(`${packageName} = \"${this.options.packageVersion}\"`);\n lines.push('```');\n lines.push('');\n\n lines.push('## Usage');\n lines.push('');\n lines.push('```rust');\n lines.push(`use ${packageName}::Client;`);\n lines.push('');\n lines.push('#[tokio::main]');\n lines.push('async fn main() {');\n lines.push(' let client = Client::new(\"your-api-key\");');\n lines.push(' // Use the client...');\n lines.push('}');\n lines.push('```');\n\n return {\n path: 'README.md',\n content: lines.join('\\n'),\n };\n }\n\n /**\n * Generate examples\n */\n override async generateExamples(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n const packageName = this.toSnakeCase(this.options.packageName);\n\n const lines: string[] = [];\n lines.push(`use ${packageName}::Client;`);\n lines.push('');\n lines.push('#[tokio::main]');\n lines.push('async fn main() -> Result<(), Box<dyn std::error::Error>> {');\n lines.push(' let client = Client::new(\"your-api-key\");');\n lines.push('');\n lines.push(' // Example API call');\n lines.push(' // let response = client.some_method(&request).await?;');\n lines.push('');\n lines.push(' Ok(())');\n lines.push('}');\n\n files.push({\n path: 'examples/basic.rs',\n content: lines.join('\\n'),\n });\n\n return files;\n }\n\n /**\n * Generate tests\n */\n override async generateTests(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n\n const lines: string[] = [];\n lines.push('#[cfg(test)]');\n lines.push('mod tests {');\n lines.push(' use super::*;');\n lines.push('');\n lines.push(' #[test]');\n lines.push(' fn test_client_creation() {');\n lines.push(' let client = Client::new(\"test-key\");');\n lines.push(' assert!(true);');\n lines.push(' }');\n lines.push('}');\n\n files.push({\n path: 'src/tests.rs',\n content: lines.join('\\n'),\n });\n\n return files;\n }\n}\n","/**\n * Go SDK Generator\n *\n * Generates production-ready Go SDKs with:\n * - Structs with JSON tags\n * - Native net/http client\n * - goroutines for concurrency\n * - Go modules\n * - Full type safety\n *\n * @module generators/go-generator\n */\n\nimport type { CanonicalSchema, TypeDefinition, EndpointDefinition } from '../types/canonical-schema.js';\nimport { TypeKind } from '../types/canonical-schema.js';\nimport { BaseGenerator, type GenerationOptions, type GenerationResult, type GeneratedFile } from './base-generator.js';\nimport { TypeMapper, TargetLanguage } from '../core/type-mapper.js';\n\n/**\n * Go SDK Generator\n */\nexport class GoGenerator extends BaseGenerator {\n private typeMapper: TypeMapper;\n\n constructor(schema: CanonicalSchema, options: GenerationOptions) {\n super(schema, options);\n this.typeMapper = new TypeMapper(\n { language: TargetLanguage.Go },\n schema.types\n );\n }\n\n override getLanguage(): TargetLanguage {\n return TargetLanguage.Go;\n }\n\n getFormattedPackageName(): string {\n return this.toSnakeCase(this.options.packageName).replace(/-/g, '');\n }\n\n protected getBuildCommand(): string {\n return 'go build';\n }\n\n protected getTestCommand(): string {\n return 'go test ./...';\n }\n\n protected getPublishCommand(): string {\n return 'git tag v' + this.options.packageVersion + ' && git push origin v' + this.options.packageVersion;\n }\n\n protected getRegistryUrl(): string {\n return 'https://pkg.go.dev';\n }\n\n /**\n * Generate complete Go SDK\n */\n async generate(): Promise<GenerationResult> {\n const files: GeneratedFile[] = [];\n const warnings: string[] = [];\n const errors: string[] = [];\n\n try {\n // Generate types\n files.push(...(await this.generateTypes()));\n\n // Generate client\n files.push(...(await this.generateClient()));\n\n // Generate go.mod\n files.push(await this.generateManifest());\n\n // Generate README\n files.push(await this.generateReadme());\n\n // Generate examples\n if (this.options.includeExamples) {\n files.push(...(await this.generateExamples()));\n }\n\n // Generate tests\n if (this.options.includeTests) {\n files.push(...(await this.generateTests()));\n }\n } catch (error) {\n errors.push(error instanceof Error ? error.message : String(error));\n }\n\n return {\n files,\n warnings,\n errors,\n buildCommand: this.getBuildCommand(),\n testCommand: this.getTestCommand(),\n publishCommand: this.getPublishCommand(),\n registryUrl: this.getRegistryUrl(),\n };\n }\n\n /**\n * Generate type definitions\n */\n protected async generateTypes(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n\n const typesContent = this.generateTypesFile();\n files.push({\n path: 'types.go',\n content: typesContent,\n });\n\n return files;\n }\n\n /**\n * Generate types.go\n */\n private generateTypesFile(): string {\n const lines: string[] = [];\n const packageName = this.getFormattedPackageName();\n\n lines.push(`package ${packageName}`);\n lines.push('');\n lines.push('// Auto-generated by LLM-Forge. Do not edit manually.');\n lines.push('');\n\n // Check if we need time package\n const needsTime = this.schema.types.some(t => {\n if (t.kind === TypeKind.Object && t.properties) {\n return t.properties.some(p => {\n const mapped = this.typeMapper.mapTypeReference(p.type);\n return mapped.type.includes('time.Time');\n });\n }\n return false;\n });\n\n if (needsTime) {\n lines.push('import \"time\"');\n lines.push('');\n }\n\n // Generate each type\n for (const type of this.schema.types) {\n const typeCode = this.generateType(type);\n if (typeCode) {\n lines.push(typeCode);\n lines.push('');\n }\n }\n\n return lines.join('\\n');\n }\n\n /**\n * Generate a single type definition\n */\n private generateType(type: TypeDefinition): string {\n switch (type.kind) {\n case TypeKind.Object:\n return this.generateStruct(type);\n case TypeKind.Enum:\n return this.generateEnum(type);\n default:\n return '';\n }\n }\n\n /**\n * Generate struct\n */\n private generateStruct(type: TypeDefinition): string {\n const lines: string[] = [];\n\n // Add documentation\n if (type.description) {\n lines.push(`// ${this.toPascalCase(type.name)} ${type.description}`);\n } else {\n lines.push(`// ${this.toPascalCase(type.name)} type definition`);\n }\n\n // Struct declaration\n lines.push(`type ${this.toPascalCase(type.name)} struct {`);\n\n // Properties\n if (type.kind === TypeKind.Object && type.properties) {\n for (const prop of type.properties) {\n const mappedType = this.typeMapper.mapTypeReference(prop.type);\n\n // Property documentation\n if (prop.description) {\n lines.push(`\\t// ${prop.description}`);\n }\n\n // Handle optional fields with pointer\n const isOptional = !prop.required;\n let fieldType = mappedType.type;\n\n // Make optional fields pointers (except slices and maps which are already reference types)\n if (isOptional && !fieldType.startsWith('[]') && !fieldType.startsWith('map[')) {\n if (!fieldType.startsWith('*')) {\n fieldType = '*' + fieldType;\n }\n }\n\n const fieldName = this.toPascalCase(prop.name);\n const jsonTag = prop.name;\n const omitEmpty = isOptional ? ',omitempty' : '';\n\n lines.push(`\\t${fieldName} ${fieldType} \\`json:\"${jsonTag}${omitEmpty}\"\\``);\n }\n }\n\n lines.push('}');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate enum (as string constants)\n */\n private generateEnum(type: TypeDefinition): string {\n const lines: string[] = [];\n const typeName = this.toPascalCase(type.name);\n\n // Add documentation\n if (type.description) {\n lines.push(`// ${typeName} ${type.description}`);\n }\n\n // Type alias\n lines.push(`type ${typeName} string`);\n lines.push('');\n\n // Constants\n lines.push('const (');\n if (type.kind === TypeKind.Enum && type.values) {\n for (const value of type.values) {\n const constName = `${typeName}${this.toPascalCase(String(value.value))}`;\n if (value.description) {\n lines.push(`\\t// ${constName} ${value.description}`);\n }\n lines.push(`\\t${constName} ${typeName} = \"${value.value}\"`);\n }\n }\n lines.push(')');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate HTTP client\n */\n protected async generateClient(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n\n const clientContent = this.generateClientFile();\n files.push({\n path: 'client.go',\n content: clientContent,\n });\n\n return files;\n }\n\n /**\n * Generate client.go\n */\n private generateClientFile(): string {\n const lines: string[] = [];\n const packageName = this.getFormattedPackageName();\n\n lines.push(`package ${packageName}`);\n lines.push('');\n lines.push('// Auto-generated by LLM-Forge. Do not edit manually.');\n lines.push('');\n lines.push('import (');\n lines.push('\\t\"bytes\"');\n lines.push('\\t\"context\"');\n lines.push('\\t\"encoding/json\"');\n lines.push('\\t\"fmt\"');\n lines.push('\\t\"io\"');\n lines.push('\\t\"net/http\"');\n lines.push('\\t\"time\"');\n lines.push(')');\n lines.push('');\n\n // Config struct\n lines.push('// Config holds the client configuration');\n lines.push('type Config struct {');\n lines.push('\\tAPIKey string');\n lines.push('\\tBaseURL string');\n lines.push('\\tTimeout time.Duration');\n lines.push('}');\n lines.push('');\n\n // DefaultConfig\n lines.push('// DefaultConfig returns default configuration');\n lines.push('func DefaultConfig() *Config {');\n lines.push('\\treturn &Config{');\n lines.push('\\t\\tBaseURL: \"https://api.example.com\",');\n lines.push('\\t\\tTimeout: 60 * time.Second,');\n lines.push('\\t}');\n lines.push('}');\n lines.push('');\n\n // Client struct\n lines.push('// Client is the API client');\n lines.push('type Client struct {');\n lines.push('\\tconfig *Config');\n lines.push('\\thttpClient *http.Client');\n lines.push('}');\n lines.push('');\n\n // NewClient\n lines.push('// NewClient creates a new API client');\n lines.push('func NewClient(apiKey string) *Client {');\n lines.push('\\tconfig := DefaultConfig()');\n lines.push('\\tconfig.APIKey = apiKey');\n lines.push('\\treturn NewClientWithConfig(config)');\n lines.push('}');\n lines.push('');\n\n // NewClientWithConfig\n lines.push('// NewClientWithConfig creates a new client with custom config');\n lines.push('func NewClientWithConfig(config *Config) *Client {');\n lines.push('\\treturn &Client{');\n lines.push('\\t\\tconfig: config,');\n lines.push('\\t\\thttpClient: &http.Client{');\n lines.push('\\t\\t\\tTimeout: config.Timeout,');\n lines.push('\\t\\t},');\n lines.push('\\t}');\n lines.push('}');\n lines.push('');\n\n // Generate endpoint methods\n for (const endpoint of this.schema.endpoints) {\n lines.push(this.generateEndpointMethod(endpoint));\n lines.push('');\n }\n\n // Helper request method\n lines.push('// request makes an HTTP request');\n lines.push('func (c *Client) request(ctx context.Context, method, path string, body interface{}, result interface{}) error {');\n lines.push('\\turl := c.config.BaseURL + path');\n lines.push('');\n lines.push('\\tvar reqBody io.Reader');\n lines.push('\\tif body != nil {');\n lines.push('\\t\\tdata, err := json.Marshal(body)');\n lines.push('\\t\\tif err != nil {');\n lines.push('\\t\\t\\treturn fmt.Errorf(\"failed to marshal request: %w\", err)');\n lines.push('\\t\\t}');\n lines.push('\\t\\treqBody = bytes.NewReader(data)');\n lines.push('\\t}');\n lines.push('');\n lines.push('\\treq, err := http.NewRequestWithContext(ctx, method, url, reqBody)');\n lines.push('\\tif err != nil {');\n lines.push('\\t\\treturn fmt.Errorf(\"failed to create request: %w\", err)');\n lines.push('\\t}');\n lines.push('');\n lines.push('\\treq.Header.Set(\"Authorization\", \"Bearer \"+c.config.APIKey)');\n lines.push('\\treq.Header.Set(\"Content-Type\", \"application/json\")');\n lines.push('');\n lines.push('\\tresp, err := c.httpClient.Do(req)');\n lines.push('\\tif err != nil {');\n lines.push('\\t\\treturn fmt.Errorf(\"request failed: %w\", err)');\n lines.push('\\t}');\n lines.push('\\tdefer resp.Body.Close()');\n lines.push('');\n lines.push('\\tif resp.StatusCode < 200 || resp.StatusCode >= 300 {');\n lines.push('\\t\\tbody, _ := io.ReadAll(resp.Body)');\n lines.push('\\t\\treturn fmt.Errorf(\"API error (%d): %s\", resp.StatusCode, string(body))');\n lines.push('\\t}');\n lines.push('');\n lines.push('\\tif result != nil {');\n lines.push('\\t\\tif err := json.NewDecoder(resp.Body).Decode(result); err != nil {');\n lines.push('\\t\\t\\treturn fmt.Errorf(\"failed to decode response: %w\", err)');\n lines.push('\\t\\t}');\n lines.push('\\t}');\n lines.push('');\n lines.push('\\treturn nil');\n lines.push('}');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate endpoint method\n */\n private generateEndpointMethod(endpoint: EndpointDefinition): string {\n const lines: string[] = [];\n\n // Documentation\n const methodName = this.toPascalCase(endpoint.operationId);\n if (endpoint.description) {\n lines.push(`// ${methodName} ${endpoint.description}`);\n }\n\n // Method signature\n lines.push(`func (c *Client) ${methodName}(ctx context.Context`);\n\n // Parameters\n if (endpoint.requestBody) {\n const bodyType = this.typeMapper.mapTypeReference(endpoint.requestBody.type);\n lines[lines.length - 1] += `, request *${bodyType.type}`;\n }\n\n // Return type\n const responseType = endpoint.responses.find(r => r.statusCode === 200);\n const returnType = responseType?.type\n ? this.typeMapper.mapTypeReference(responseType.type).type\n : 'interface{}';\n\n lines[lines.length - 1] += `) (*${returnType}, error) {`;\n\n // Method body\n lines.push(`\\tvar result ${returnType}`);\n const httpMethod = endpoint.method.toUpperCase();\n const path = endpoint.path;\n\n if (endpoint.requestBody) {\n lines.push(`\\terr := c.request(ctx, \"${httpMethod}\", \"${path}\", request, &result)`);\n } else {\n lines.push(`\\terr := c.request(ctx, \"${httpMethod}\", \"${path}\", nil, &result)`);\n }\n\n lines.push('\\tif err != nil {');\n lines.push('\\t\\treturn nil, err');\n lines.push('\\t}');\n lines.push('\\treturn &result, nil');\n lines.push('}');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate go.mod\n */\n protected async generateManifest(): Promise<GeneratedFile> {\n const packageName = this.getFormattedPackageName();\n const lines: string[] = [];\n\n lines.push(`module github.com/yourorg/${packageName}`);\n lines.push('');\n lines.push('go 1.21');\n\n return {\n path: 'go.mod',\n content: lines.join('\\n'),\n };\n }\n\n /**\n * Generate README\n */\n protected async generateReadme(): Promise<GeneratedFile> {\n const packageName = this.getFormattedPackageName();\n const lines: string[] = [];\n\n lines.push(`# ${this.schema.metadata.providerName} Go SDK`);\n lines.push('');\n if (this.schema.metadata.metadata?.['description']) {\n lines.push(String(this.schema.metadata.metadata['description']));\n lines.push('');\n }\n lines.push('Auto-generated by LLM-Forge.');\n lines.push('');\n\n lines.push('## Installation');\n lines.push('');\n lines.push('```bash');\n lines.push(`go get github.com/yourorg/${packageName}`);\n lines.push('```');\n lines.push('');\n\n lines.push('## Usage');\n lines.push('');\n lines.push('```go');\n lines.push('package main');\n lines.push('');\n lines.push('import (');\n lines.push('\\t\"context\"');\n lines.push(`\\t\"github.com/yourorg/${packageName}\"`);\n lines.push(')');\n lines.push('');\n lines.push('func main() {');\n lines.push(`\\tclient := ${packageName}.NewClient(\"your-api-key\")`);\n lines.push('\\t// Use the client...');\n lines.push('}');\n lines.push('```');\n\n return {\n path: 'README.md',\n content: lines.join('\\n'),\n };\n }\n\n /**\n * Generate examples\n */\n protected override async generateExamples(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n const packageName = this.getFormattedPackageName();\n\n const lines: string[] = [];\n lines.push('package main');\n lines.push('');\n lines.push('import (');\n lines.push('\\t\"context\"');\n lines.push('\\t\"fmt\"');\n lines.push(`\\t\"github.com/yourorg/${packageName}\"`);\n lines.push(')');\n lines.push('');\n lines.push('func main() {');\n lines.push(`\\tclient := ${packageName}.NewClient(\"your-api-key\")`);\n lines.push('\\tctx := context.Background()');\n lines.push('');\n lines.push('\\t// Example API call');\n lines.push('\\t// response, err := client.SomeMethod(ctx, &request)');\n lines.push('\\t// if err != nil {');\n lines.push('\\t// panic(err)');\n lines.push('\\t// }');\n lines.push('\\t// fmt.Printf(\"Response: %+v\\\\n\", response)');\n lines.push('}');\n\n files.push({\n path: 'examples/basic/main.go',\n content: lines.join('\\n'),\n });\n\n return files;\n }\n\n /**\n * Generate tests\n */\n protected override async generateTests(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n const packageName = this.getFormattedPackageName();\n\n const lines: string[] = [];\n lines.push(`package ${packageName}_test`);\n lines.push('');\n lines.push('import (');\n lines.push('\\t\"testing\"');\n lines.push(`\\t\"github.com/yourorg/${packageName}\"`);\n lines.push(')');\n lines.push('');\n lines.push('func TestClientCreation(t *testing.T) {');\n lines.push(`\\tclient := ${packageName}.NewClient(\"test-key\")`);\n lines.push('\\tif client == nil {');\n lines.push('\\t\\tt.Fatal(\"client should not be nil\")');\n lines.push('\\t}');\n lines.push('}');\n\n files.push({\n path: 'client_test.go',\n content: lines.join('\\n'),\n });\n\n return files;\n }\n}\n","/**\n * C# SDK Generator\n *\n * Generates production-ready C# SDKs with:\n * - Records and classes for type definitions\n * - Task-based async/await\n * - HttpClient for HTTP\n * - NuGet packaging\n * - Full type safety\n *\n * @module generators/csharp-generator\n */\n\nimport type { CanonicalSchema, TypeDefinition, EndpointDefinition } from '../types/canonical-schema.js';\nimport { TypeKind } from '../types/canonical-schema.js';\nimport { BaseGenerator, type GenerationOptions, type GenerationResult, type GeneratedFile } from './base-generator.js';\nimport { TypeMapper, TargetLanguage } from '../core/type-mapper.js';\n\n/**\n * C# SDK Generator\n */\nexport class CSharpGenerator extends BaseGenerator {\n private typeMapper: TypeMapper;\n\n constructor(schema: CanonicalSchema, options: GenerationOptions) {\n super(schema, options);\n this.typeMapper = new TypeMapper(\n { language: TargetLanguage.CSharp },\n schema.types\n );\n }\n\n override getLanguage(): TargetLanguage {\n return TargetLanguage.CSharp;\n }\n\n getFormattedPackageName(): string {\n return this.toPascalCase(this.options.packageName).replace(/-/g, '');\n }\n\n protected getBuildCommand(): string {\n return 'dotnet build';\n }\n\n protected getTestCommand(): string {\n return 'dotnet test';\n }\n\n protected getPublishCommand(): string {\n return 'dotnet pack && dotnet nuget push';\n }\n\n protected getRegistryUrl(): string {\n return 'https://nuget.org';\n }\n\n /**\n * Generate complete C# SDK\n */\n async generate(): Promise<GenerationResult> {\n const files: GeneratedFile[] = [];\n const warnings: string[] = [];\n const errors: string[] = [];\n\n try {\n // Generate types\n files.push(...(await this.generateTypes()));\n\n // Generate client\n files.push(...(await this.generateClient()));\n\n // Generate .csproj\n files.push(await this.generateManifest());\n\n // Generate README\n files.push(await this.generateReadme());\n\n // Generate examples\n if (this.options.includeExamples) {\n files.push(...(await this.generateExamples()));\n }\n\n // Generate tests\n if (this.options.includeTests) {\n files.push(...(await this.generateTests()));\n }\n } catch (error) {\n errors.push(error instanceof Error ? error.message : String(error));\n }\n\n return {\n files,\n warnings,\n errors,\n buildCommand: this.getBuildCommand(),\n testCommand: this.getTestCommand(),\n publishCommand: this.getPublishCommand(),\n registryUrl: this.getRegistryUrl(),\n };\n }\n\n /**\n * Generate type definitions\n */\n protected async generateTypes(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n\n const modelsContent = this.generateModelsFile();\n files.push({\n path: 'Models.cs',\n content: modelsContent,\n });\n\n return files;\n }\n\n /**\n * Generate Models.cs\n */\n private generateModelsFile(): string {\n const lines: string[] = [];\n const namespace = this.getFormattedPackageName();\n\n lines.push('// Auto-generated by LLM-Forge. Do not edit manually.');\n lines.push('');\n lines.push('using System;');\n lines.push('using System.Collections.Generic;');\n lines.push('using System.Text.Json.Serialization;');\n lines.push('');\n lines.push(`namespace ${namespace};`);\n lines.push('');\n\n // Generate each type\n for (const type of this.schema.types) {\n const typeCode = this.generateType(type);\n if (typeCode) {\n lines.push(typeCode);\n lines.push('');\n }\n }\n\n return lines.join('\\n');\n }\n\n /**\n * Generate a single type definition\n */\n private generateType(type: TypeDefinition): string {\n switch (type.kind) {\n case TypeKind.Object:\n return this.generateRecord(type);\n case TypeKind.Enum:\n return this.generateEnum(type);\n default:\n return '';\n }\n }\n\n /**\n * Generate record\n */\n private generateRecord(type: TypeDefinition): string {\n const lines: string[] = [];\n\n // Add documentation\n if (type.description) {\n lines.push('/// <summary>');\n lines.push(`/// ${type.description}`);\n lines.push('/// </summary>');\n }\n\n // Record declaration\n lines.push(`public record ${this.toPascalCase(type.name)}`);\n lines.push('{');\n\n // Properties\n if (type.kind === TypeKind.Object && type.properties) {\n for (const prop of type.properties) {\n const mappedType = this.typeMapper.mapTypeReference(prop.type);\n\n // Property documentation\n if (prop.description) {\n lines.push('\\t/// <summary>');\n lines.push(`\\t/// ${prop.description}`);\n lines.push('\\t/// </summary>');\n }\n\n // Handle optional fields with nullable\n const isOptional = !prop.required;\n let propertyType = mappedType.type;\n\n // Make optional fields nullable (except for reference types which are already nullable)\n if (isOptional && !propertyType.endsWith('?') && !propertyType.startsWith('List<') && !propertyType.startsWith('Dictionary<')) {\n const isValueType = ['int', 'long', 'double', 'float', 'bool', 'DateTime'].includes(propertyType);\n if (isValueType) {\n propertyType = propertyType + '?';\n }\n }\n\n const propertyName = this.toPascalCase(prop.name);\n const jsonName = prop.name;\n\n lines.push(`\\t[JsonPropertyName(\"${jsonName}\")]`);\n lines.push(`\\tpublic ${propertyType} ${propertyName} { get; init; }`);\n lines.push('');\n }\n }\n\n lines.push('}');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate enum\n */\n private generateEnum(type: TypeDefinition): string {\n const lines: string[] = [];\n\n // Add documentation\n if (type.description) {\n lines.push('/// <summary>');\n lines.push(`/// ${type.description}`);\n lines.push('/// </summary>');\n }\n\n // Enum declaration (using string enum pattern)\n const enumName = this.toPascalCase(type.name);\n lines.push(`public enum ${enumName}`);\n lines.push('{');\n\n // Values\n if (type.kind === TypeKind.Enum && type.values) {\n for (let i = 0; i < type.values.length; i++) {\n const value = type.values[i]!;\n\n if (value.description) {\n lines.push('\\t/// <summary>');\n lines.push(`\\t/// ${value.description}`);\n lines.push('\\t/// </summary>');\n }\n\n const memberName = this.toPascalCase(String(value.value));\n lines.push(`\\t[JsonPropertyName(\"${value.value}\")]`);\n lines.push(`\\t${memberName}${i < type.values.length - 1 ? ',' : ''}`);\n }\n }\n\n lines.push('}');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate HTTP client\n */\n protected async generateClient(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n\n const clientContent = this.generateClientFile();\n files.push({\n path: 'Client.cs',\n content: clientContent,\n });\n\n return files;\n }\n\n /**\n * Generate Client.cs\n */\n private generateClientFile(): string {\n const lines: string[] = [];\n const namespace = this.getFormattedPackageName();\n\n lines.push('// Auto-generated by LLM-Forge. Do not edit manually.');\n lines.push('');\n lines.push('using System;');\n lines.push('using System.Net.Http;');\n lines.push('using System.Net.Http.Headers;');\n lines.push('using System.Net.Http.Json;');\n lines.push('using System.Threading;');\n lines.push('using System.Threading.Tasks;');\n lines.push('');\n lines.push(`namespace ${namespace};`);\n lines.push('');\n\n // Config class\n lines.push('/// <summary>');\n lines.push('/// Client configuration');\n lines.push('/// </summary>');\n lines.push('public class ClientConfig');\n lines.push('{');\n lines.push('\\t/// <summary>');\n lines.push('\\t/// API key for authentication');\n lines.push('\\t/// </summary>');\n lines.push('\\tpublic string ApiKey { get; set; } = string.Empty;');\n lines.push('');\n lines.push('\\t/// <summary>');\n lines.push('\\t/// Base URL for the API');\n lines.push('\\t/// </summary>');\n lines.push('\\tpublic string BaseUrl { get; set; } = \"https://api.example.com\";');\n lines.push('');\n lines.push('\\t/// <summary>');\n lines.push('\\t/// Request timeout');\n lines.push('\\t/// </summary>');\n lines.push('\\tpublic TimeSpan Timeout { get; set; } = TimeSpan.FromSeconds(60);');\n lines.push('}');\n lines.push('');\n\n // Client class\n lines.push('/// <summary>');\n lines.push('/// API Client');\n lines.push('/// </summary>');\n lines.push('public class Client : IDisposable');\n lines.push('{');\n lines.push('\\tprivate readonly ClientConfig _config;');\n lines.push('\\tprivate readonly HttpClient _httpClient;');\n lines.push('\\tprivate bool _disposed;');\n lines.push('');\n\n // Constructor\n lines.push('\\t/// <summary>');\n lines.push('\\t/// Creates a new client with the given API key');\n lines.push('\\t/// </summary>');\n lines.push('\\tpublic Client(string apiKey)');\n lines.push('\\t\\t: this(new ClientConfig { ApiKey = apiKey })');\n lines.push('\\t{');\n lines.push('\\t}');\n lines.push('');\n\n lines.push('\\t/// <summary>');\n lines.push('\\t/// Creates a new client with custom configuration');\n lines.push('\\t/// </summary>');\n lines.push('\\tpublic Client(ClientConfig config)');\n lines.push('\\t{');\n lines.push('\\t\\t_config = config;');\n lines.push('\\t\\t_httpClient = new HttpClient');\n lines.push('\\t\\t{');\n lines.push('\\t\\t\\tBaseAddress = new Uri(_config.BaseUrl),');\n lines.push('\\t\\t\\tTimeout = _config.Timeout');\n lines.push('\\t\\t};');\n lines.push('');\n lines.push('\\t\\t_httpClient.DefaultRequestHeaders.Authorization =');\n lines.push('\\t\\t\\tnew AuthenticationHeaderValue(\"Bearer\", _config.ApiKey);');\n lines.push('\\t\\t_httpClient.DefaultRequestHeaders.Accept.Add(');\n lines.push('\\t\\t\\tnew MediaTypeWithQualityHeaderValue(\"application/json\"));');\n lines.push('\\t}');\n lines.push('');\n\n // Generate endpoint methods\n for (const endpoint of this.schema.endpoints) {\n lines.push(this.generateEndpointMethod(endpoint));\n lines.push('');\n }\n\n // Helper request method\n lines.push('\\t/// <summary>');\n lines.push('\\t/// Makes an HTTP request');\n lines.push('\\t/// </summary>');\n lines.push('\\tprivate async Task<TResponse> RequestAsync<TResponse>(');\n lines.push('\\t\\tHttpMethod method,');\n lines.push('\\t\\tstring path,');\n lines.push('\\t\\tobject? body = null,');\n lines.push('\\t\\tCancellationToken cancellationToken = default)');\n lines.push('\\t{');\n lines.push('\\t\\tvar request = new HttpRequestMessage(method, path);');\n lines.push('');\n lines.push('\\t\\tif (body != null)');\n lines.push('\\t\\t{');\n lines.push('\\t\\t\\trequest.Content = JsonContent.Create(body);');\n lines.push('\\t\\t}');\n lines.push('');\n lines.push('\\t\\tvar response = await _httpClient.SendAsync(request, cancellationToken);');\n lines.push('');\n lines.push('\\t\\tif (!response.IsSuccessStatusCode)');\n lines.push('\\t\\t{');\n lines.push('\\t\\t\\tvar error = await response.Content.ReadAsStringAsync(cancellationToken);');\n lines.push('\\t\\t\\tthrow new HttpRequestException(');\n lines.push('\\t\\t\\t\\t$\"API error ({response.StatusCode}): {error}\");');\n lines.push('\\t\\t}');\n lines.push('');\n lines.push('\\t\\treturn await response.Content.ReadFromJsonAsync<TResponse>(cancellationToken: cancellationToken)');\n lines.push('\\t\\t\\t?? throw new InvalidOperationException(\"Response was null\");');\n lines.push('\\t}');\n lines.push('');\n\n // Dispose\n lines.push('\\t/// <summary>');\n lines.push('\\t/// Disposes the client');\n lines.push('\\t/// </summary>');\n lines.push('\\tpublic void Dispose()');\n lines.push('\\t{');\n lines.push('\\t\\tif (_disposed) return;');\n lines.push('\\t\\t_httpClient?.Dispose();');\n lines.push('\\t\\t_disposed = true;');\n lines.push('\\t\\tGC.SuppressFinalize(this);');\n lines.push('\\t}');\n lines.push('}');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate endpoint method\n */\n private generateEndpointMethod(endpoint: EndpointDefinition): string {\n const lines: string[] = [];\n\n // Documentation\n const methodName = this.toPascalCase(endpoint.operationId);\n lines.push('\\t/// <summary>');\n if (endpoint.description) {\n lines.push(`\\t/// ${endpoint.description}`);\n } else {\n lines.push(`\\t/// ${methodName}`);\n }\n lines.push('\\t/// </summary>');\n\n // Method signature\n const responseType = endpoint.responses.find(r => r.statusCode === 200);\n const returnType = responseType?.type\n ? this.typeMapper.mapTypeReference(responseType.type).type\n : 'object';\n\n lines.push(`\\tpublic async Task<${returnType}> ${methodName}Async(`);\n\n // Parameters\n if (endpoint.requestBody) {\n const bodyType = this.typeMapper.mapTypeReference(endpoint.requestBody.type);\n lines[lines.length - 1] += `${bodyType.type} request, `;\n }\n\n lines[lines.length - 1] += 'CancellationToken cancellationToken = default)';\n\n lines.push('\\t{');\n\n // Method body\n const httpMethod = endpoint.method.toUpperCase();\n const path = endpoint.path;\n\n if (endpoint.requestBody) {\n lines.push(`\\t\\treturn await RequestAsync<${returnType}>(`);\n lines.push(`\\t\\t\\tHttpMethod.${this.toPascalCase(httpMethod)},`);\n lines.push(`\\t\\t\\t\"${path}\",`);\n lines.push('\\t\\t\\trequest,');\n lines.push('\\t\\t\\tcancellationToken);');\n } else {\n lines.push(`\\t\\treturn await RequestAsync<${returnType}>(`);\n lines.push(`\\t\\t\\tHttpMethod.${this.toPascalCase(httpMethod)},`);\n lines.push(`\\t\\t\\t\"${path}\",`);\n lines.push('\\t\\t\\tcancellationToken: cancellationToken);');\n }\n\n lines.push('\\t}');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate .csproj\n */\n protected async generateManifest(): Promise<GeneratedFile> {\n const packageName = this.getFormattedPackageName();\n const lines: string[] = [];\n\n lines.push('<Project Sdk=\"Microsoft.NET.Sdk\">');\n lines.push('');\n lines.push(' <PropertyGroup>');\n lines.push(' <TargetFramework>net8.0</TargetFramework>');\n lines.push(' <LangVersion>latest</LangVersion>');\n lines.push(' <Nullable>enable</Nullable>');\n lines.push(' <ImplicitUsings>enable</ImplicitUsings>');\n lines.push(` <PackageId>${packageName}</PackageId>`);\n lines.push(` <Version>${this.options.packageVersion}</Version>`);\n if (this.schema.metadata.metadata?.['description']) {\n lines.push(` <Description>${this.schema.metadata.metadata['description']}</Description>`);\n }\n lines.push(` <PackageLicenseExpression>${this.options.license}</PackageLicenseExpression>`);\n lines.push(' </PropertyGroup>');\n lines.push('');\n lines.push(' <ItemGroup>');\n lines.push(' <PackageReference Include=\"System.Text.Json\" Version=\"8.0.0\" />');\n lines.push(' </ItemGroup>');\n lines.push('');\n lines.push('</Project>');\n\n return {\n path: `${packageName}.csproj`,\n content: lines.join('\\n'),\n };\n }\n\n /**\n * Generate README\n */\n protected async generateReadme(): Promise<GeneratedFile> {\n const packageName = this.getFormattedPackageName();\n const lines: string[] = [];\n\n lines.push(`# ${this.schema.metadata.providerName} C# SDK`);\n lines.push('');\n if (this.schema.metadata.metadata?.['description']) {\n lines.push(String(this.schema.metadata.metadata['description']));\n lines.push('');\n }\n lines.push('Auto-generated by LLM-Forge.');\n lines.push('');\n\n lines.push('## Installation');\n lines.push('');\n lines.push('```bash');\n lines.push(`dotnet add package ${packageName}`);\n lines.push('```');\n lines.push('');\n\n lines.push('## Usage');\n lines.push('');\n lines.push('```csharp');\n lines.push(`using ${packageName};`);\n lines.push('');\n lines.push('var client = new Client(\"your-api-key\");');\n lines.push('// Use the client...');\n lines.push('```');\n\n return {\n path: 'README.md',\n content: lines.join('\\n'),\n };\n }\n\n /**\n * Generate examples\n */\n protected override async generateExamples(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n const packageName = this.getFormattedPackageName();\n\n const lines: string[] = [];\n lines.push(`using ${packageName};`);\n lines.push('');\n lines.push('// Create a client');\n lines.push('using var client = new Client(\"your-api-key\");');\n lines.push('');\n lines.push('// Example API call');\n lines.push('// var response = await client.SomeMethodAsync(request);');\n\n files.push({\n path: 'Examples/Basic.cs',\n content: lines.join('\\n'),\n });\n\n return files;\n }\n\n /**\n * Generate tests\n */\n protected override async generateTests(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n const packageName = this.getFormattedPackageName();\n\n const lines: string[] = [];\n lines.push('using Xunit;');\n lines.push(`using ${packageName};`);\n lines.push('');\n lines.push('public class ClientTests');\n lines.push('{');\n lines.push('\\t[Fact]');\n lines.push('\\tpublic void Client_CanBeCreated()');\n lines.push('\\t{');\n lines.push('\\t\\tvar client = new Client(\"test-key\");');\n lines.push('\\t\\tAssert.NotNull(client);');\n lines.push('\\t}');\n lines.push('}');\n\n files.push({\n path: 'Tests/ClientTests.cs',\n content: lines.join('\\n'),\n });\n\n return files;\n }\n}\n","/**\n * Java SDK Generator\n *\n * Generates production-ready Java SDKs with:\n * - POJOs/Records for type definitions\n * - CompletableFuture for async operations\n * - HttpClient for HTTP\n * - Maven packaging\n * - Full type safety\n *\n * @module generators/java-generator\n */\n\nimport type { CanonicalSchema, TypeDefinition, EndpointDefinition } from '../types/canonical-schema.js';\nimport { TypeKind } from '../types/canonical-schema.js';\nimport { BaseGenerator, type GenerationOptions, type GenerationResult, type GeneratedFile } from './base-generator.js';\nimport { TypeMapper, TargetLanguage } from '../core/type-mapper.js';\n\n/**\n * Java SDK Generator\n */\nexport class JavaGenerator extends BaseGenerator {\n private typeMapper: TypeMapper;\n\n constructor(schema: CanonicalSchema, options: GenerationOptions) {\n super(schema, options);\n this.typeMapper = new TypeMapper(\n { language: TargetLanguage.Java },\n schema.types\n );\n }\n\n override getLanguage(): TargetLanguage {\n return TargetLanguage.Java;\n }\n\n getFormattedPackageName(): string {\n return 'com.example.' + this.toSnakeCase(this.options.packageName).replace(/-/g, '').toLowerCase();\n }\n\n protected getBuildCommand(): string {\n return 'mvn clean package';\n }\n\n protected getTestCommand(): string {\n return 'mvn test';\n }\n\n protected getPublishCommand(): string {\n return 'mvn deploy';\n }\n\n protected getRegistryUrl(): string {\n return 'https://central.sonatype.com';\n }\n\n /**\n * Get base path for source files\n */\n private getSourcePath(): string {\n return 'src/main/java/' + this.getFormattedPackageName().replace(/\\./g, '/');\n }\n\n /**\n * Generate complete Java SDK\n */\n async generate(): Promise<GenerationResult> {\n const files: GeneratedFile[] = [];\n const warnings: string[] = [];\n const errors: string[] = [];\n\n try {\n // Generate types\n files.push(...(await this.generateTypes()));\n\n // Generate client\n files.push(...(await this.generateClient()));\n\n // Generate pom.xml\n files.push(await this.generateManifest());\n\n // Generate README\n files.push(await this.generateReadme());\n\n // Generate examples\n if (this.options.includeExamples) {\n files.push(...(await this.generateExamples()));\n }\n\n // Generate tests\n if (this.options.includeTests) {\n files.push(...(await this.generateTests()));\n }\n } catch (error) {\n errors.push(error instanceof Error ? error.message : String(error));\n }\n\n return {\n files,\n warnings,\n errors,\n buildCommand: this.getBuildCommand(),\n testCommand: this.getTestCommand(),\n publishCommand: this.getPublishCommand(),\n registryUrl: this.getRegistryUrl(),\n };\n }\n\n /**\n * Generate type definitions\n */\n protected async generateTypes(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n const basePath = this.getSourcePath();\n\n // Generate each type in its own file\n for (const type of this.schema.types) {\n const typeCode = this.generateType(type);\n if (typeCode) {\n files.push({\n path: `${basePath}/models/${this.toPascalCase(type.name)}.java`,\n content: typeCode,\n });\n }\n }\n\n return files;\n }\n\n /**\n * Generate a single type definition\n */\n private generateType(type: TypeDefinition): string {\n switch (type.kind) {\n case TypeKind.Object:\n return this.generateClass(type);\n case TypeKind.Enum:\n return this.generateEnum(type);\n default:\n return '';\n }\n }\n\n /**\n * Generate class\n */\n private generateClass(type: TypeDefinition): string {\n const lines: string[] = [];\n const packageName = this.getFormattedPackageName();\n\n lines.push(`package ${packageName}.models;`);\n lines.push('');\n lines.push('import com.fasterxml.jackson.annotation.JsonProperty;');\n lines.push('import java.util.List;');\n lines.push('import java.util.Map;');\n lines.push('');\n\n // Add Javadoc\n lines.push('/**');\n if (type.description) {\n lines.push(` * ${type.description}`);\n } else {\n lines.push(` * ${this.toPascalCase(type.name)}`);\n }\n lines.push(' *');\n lines.push(' * Auto-generated by LLM-Forge. Do not edit manually.');\n lines.push(' */');\n\n // Class declaration (using record for immutability)\n const className = this.toPascalCase(type.name);\n lines.push(`public record ${className}(`);\n\n // Properties\n if (type.kind === TypeKind.Object && type.properties) {\n for (let i = 0; i < type.properties.length; i++) {\n const prop = type.properties[i]!;\n const mappedType = this.typeMapper.mapTypeReference(prop.type);\n\n const fieldName = this.toCamelCase(prop.name);\n const jsonName = prop.name;\n const comma = i < type.properties.length - 1 ? ',' : '';\n\n lines.push(`\\t@JsonProperty(\"${jsonName}\")`);\n lines.push(`\\t${mappedType.type} ${fieldName}${comma}`);\n }\n }\n\n lines.push(') {}');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate enum\n */\n private generateEnum(type: TypeDefinition): string {\n const lines: string[] = [];\n const packageName = this.getFormattedPackageName();\n\n lines.push(`package ${packageName}.models;`);\n lines.push('');\n lines.push('import com.fasterxml.jackson.annotation.JsonValue;');\n lines.push('');\n\n // Add Javadoc\n lines.push('/**');\n if (type.description) {\n lines.push(` * ${type.description}`);\n } else {\n lines.push(` * ${this.toPascalCase(type.name)}`);\n }\n lines.push(' *');\n lines.push(' * Auto-generated by LLM-Forge. Do not edit manually.');\n lines.push(' */');\n\n // Enum declaration\n const enumName = this.toPascalCase(type.name);\n lines.push(`public enum ${enumName} {`);\n\n // Values\n if (type.kind === TypeKind.Enum && type.values) {\n for (let i = 0; i < type.values.length; i++) {\n const value = type.values[i]!;\n const memberName = this.toUpperSnakeCase(String(value.value));\n const jsonValue = value.value;\n\n lines.push(`\\t${memberName}(\"${jsonValue}\")${i < type.values.length - 1 ? ',' : ';'}`);\n }\n }\n\n lines.push('');\n lines.push('\\tprivate final String value;');\n lines.push('');\n lines.push(`\\t${enumName}(String value) {`);\n lines.push('\\t\\tthis.value = value;');\n lines.push('\\t}');\n lines.push('');\n lines.push('\\t@JsonValue');\n lines.push('\\tpublic String getValue() {');\n lines.push('\\t\\treturn value;');\n lines.push('\\t}');\n lines.push('}');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate HTTP client\n */\n protected async generateClient(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n const basePath = this.getSourcePath();\n\n // Generate Client.java\n const clientContent = this.generateClientFile();\n files.push({\n path: `${basePath}/Client.java`,\n content: clientContent,\n });\n\n // Generate ClientConfig.java\n const configContent = this.generateConfigFile();\n files.push({\n path: `${basePath}/ClientConfig.java`,\n content: configContent,\n });\n\n return files;\n }\n\n /**\n * Generate ClientConfig.java\n */\n private generateConfigFile(): string {\n const lines: string[] = [];\n const packageName = this.getFormattedPackageName();\n\n lines.push(`package ${packageName};`);\n lines.push('');\n lines.push('import java.time.Duration;');\n lines.push('');\n\n lines.push('/**');\n lines.push(' * Client configuration');\n lines.push(' *');\n lines.push(' * Auto-generated by LLM-Forge. Do not edit manually.');\n lines.push(' */');\n lines.push('public class ClientConfig {');\n lines.push('\\tprivate String apiKey;');\n lines.push('\\tprivate String baseUrl;');\n lines.push('\\tprivate Duration timeout;');\n lines.push('');\n\n lines.push('\\tpublic ClientConfig() {');\n lines.push('\\t\\tthis.baseUrl = \"https://api.example.com\";');\n lines.push('\\t\\tthis.timeout = Duration.ofSeconds(60);');\n lines.push('\\t}');\n lines.push('');\n\n lines.push('\\tpublic String getApiKey() {');\n lines.push('\\t\\treturn apiKey;');\n lines.push('\\t}');\n lines.push('');\n\n lines.push('\\tpublic void setApiKey(String apiKey) {');\n lines.push('\\t\\tthis.apiKey = apiKey;');\n lines.push('\\t}');\n lines.push('');\n\n lines.push('\\tpublic String getBaseUrl() {');\n lines.push('\\t\\treturn baseUrl;');\n lines.push('\\t}');\n lines.push('');\n\n lines.push('\\tpublic void setBaseUrl(String baseUrl) {');\n lines.push('\\t\\tthis.baseUrl = baseUrl;');\n lines.push('\\t}');\n lines.push('');\n\n lines.push('\\tpublic Duration getTimeout() {');\n lines.push('\\t\\treturn timeout;');\n lines.push('\\t}');\n lines.push('');\n\n lines.push('\\tpublic void setTimeout(Duration timeout) {');\n lines.push('\\t\\tthis.timeout = timeout;');\n lines.push('\\t}');\n lines.push('}');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate Client.java\n */\n private generateClientFile(): string {\n const lines: string[] = [];\n const packageName = this.getFormattedPackageName();\n\n lines.push(`package ${packageName};`);\n lines.push('');\n lines.push('import com.fasterxml.jackson.databind.ObjectMapper;');\n lines.push('import java.net.URI;');\n lines.push('import java.net.http.HttpClient;');\n lines.push('import java.net.http.HttpRequest;');\n lines.push('import java.net.http.HttpResponse;');\n lines.push('import java.util.concurrent.CompletableFuture;');\n lines.push(`import ${packageName}.models.*;`);\n lines.push('');\n\n lines.push('/**');\n lines.push(' * API Client');\n lines.push(' *');\n lines.push(' * Auto-generated by LLM-Forge. Do not edit manually.');\n lines.push(' */');\n lines.push('public class Client {');\n lines.push('\\tprivate final ClientConfig config;');\n lines.push('\\tprivate final HttpClient httpClient;');\n lines.push('\\tprivate final ObjectMapper objectMapper;');\n lines.push('');\n\n // Constructor with API key\n lines.push('\\t/**');\n lines.push('\\t * Creates a new client with the given API key');\n lines.push('\\t */');\n lines.push('\\tpublic Client(String apiKey) {');\n lines.push('\\t\\tthis.config = new ClientConfig();');\n lines.push('\\t\\tthis.config.setApiKey(apiKey);');\n lines.push('\\t\\tthis.httpClient = HttpClient.newBuilder()');\n lines.push('\\t\\t\\t.connectTimeout(config.getTimeout())');\n lines.push('\\t\\t\\t.build();');\n lines.push('\\t\\tthis.objectMapper = new ObjectMapper();');\n lines.push('\\t}');\n lines.push('');\n\n // Constructor with config\n lines.push('\\t/**');\n lines.push('\\t * Creates a new client with custom configuration');\n lines.push('\\t */');\n lines.push('\\tpublic Client(ClientConfig config) {');\n lines.push('\\t\\tthis.config = config;');\n lines.push('\\t\\tthis.httpClient = HttpClient.newBuilder()');\n lines.push('\\t\\t\\t.connectTimeout(config.getTimeout())');\n lines.push('\\t\\t\\t.build();');\n lines.push('\\t\\tthis.objectMapper = new ObjectMapper();');\n lines.push('\\t}');\n lines.push('');\n\n // Generate endpoint methods\n for (const endpoint of this.schema.endpoints) {\n lines.push(this.generateEndpointMethod(endpoint));\n lines.push('');\n }\n\n // Helper request method\n lines.push('\\t/**');\n lines.push('\\t * Makes an HTTP request');\n lines.push('\\t */');\n lines.push('\\tprivate <T> CompletableFuture<T> request(');\n lines.push('\\t\\t\\tString method,');\n lines.push('\\t\\t\\tString path,');\n lines.push('\\t\\t\\tObject body,');\n lines.push('\\t\\t\\tClass<T> responseType) {');\n lines.push('\\t\\ttry {');\n lines.push('\\t\\t\\tString url = config.getBaseUrl() + path;');\n lines.push('');\n lines.push('\\t\\t\\tHttpRequest.Builder requestBuilder = HttpRequest.newBuilder()');\n lines.push('\\t\\t\\t\\t.uri(URI.create(url))');\n lines.push('\\t\\t\\t\\t.header(\"Authorization\", \"Bearer \" + config.getApiKey())');\n lines.push('\\t\\t\\t\\t.header(\"Content-Type\", \"application/json\");');\n lines.push('');\n lines.push('\\t\\t\\tif (body != null) {');\n lines.push('\\t\\t\\t\\tString jsonBody = objectMapper.writeValueAsString(body);');\n lines.push('\\t\\t\\t\\trequestBuilder.method(method, HttpRequest.BodyPublishers.ofString(jsonBody));');\n lines.push('\\t\\t\\t} else {');\n lines.push('\\t\\t\\t\\trequestBuilder.method(method, HttpRequest.BodyPublishers.noBody());');\n lines.push('\\t\\t\\t}');\n lines.push('');\n lines.push('\\t\\t\\tHttpRequest request = requestBuilder.build();');\n lines.push('');\n lines.push('\\t\\t\\treturn httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString())');\n lines.push('\\t\\t\\t\\t.thenApply(response -> {');\n lines.push('\\t\\t\\t\\t\\tif (response.statusCode() < 200 || response.statusCode() >= 300) {');\n lines.push('\\t\\t\\t\\t\\t\\tthrow new RuntimeException(');\n lines.push('\\t\\t\\t\\t\\t\\t\\t\"API error (\" + response.statusCode() + \"): \" + response.body());');\n lines.push('\\t\\t\\t\\t\\t}');\n lines.push('\\t\\t\\t\\t\\ttry {');\n lines.push('\\t\\t\\t\\t\\t\\treturn objectMapper.readValue(response.body(), responseType);');\n lines.push('\\t\\t\\t\\t\\t} catch (Exception e) {');\n lines.push('\\t\\t\\t\\t\\t\\tthrow new RuntimeException(\"Failed to parse response\", e);');\n lines.push('\\t\\t\\t\\t\\t}');\n lines.push('\\t\\t\\t\\t});');\n lines.push('\\t\\t} catch (Exception e) {');\n lines.push('\\t\\t\\treturn CompletableFuture.failedFuture(e);');\n lines.push('\\t\\t}');\n lines.push('\\t}');\n lines.push('}');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate endpoint method\n */\n private generateEndpointMethod(endpoint: EndpointDefinition): string {\n const lines: string[] = [];\n\n // Documentation\n const methodName = this.toCamelCase(endpoint.operationId);\n lines.push('\\t/**');\n if (endpoint.description) {\n lines.push(`\\t * ${endpoint.description}`);\n } else {\n lines.push(`\\t * ${methodName}`);\n }\n lines.push('\\t */');\n\n // Method signature\n const responseType = endpoint.responses.find(r => r.statusCode === 200);\n const returnType = responseType?.type\n ? this.typeMapper.mapTypeReference(responseType.type).type\n : 'Object';\n\n lines.push(`\\tpublic CompletableFuture<${returnType}> ${methodName}(`);\n\n // Parameters\n if (endpoint.requestBody) {\n const bodyType = this.typeMapper.mapTypeReference(endpoint.requestBody.type);\n lines[lines.length - 1] += `${bodyType.type} request`;\n }\n\n lines[lines.length - 1] += ') {';\n\n // Method body\n const httpMethod = endpoint.method.toUpperCase();\n const path = endpoint.path;\n\n if (endpoint.requestBody) {\n lines.push(`\\t\\treturn request(\"${httpMethod}\", \"${path}\", request, ${returnType}.class);`);\n } else {\n lines.push(`\\t\\treturn request(\"${httpMethod}\", \"${path}\", null, ${returnType}.class);`);\n }\n\n lines.push('\\t}');\n\n return lines.join('\\n');\n }\n\n /**\n * Generate pom.xml\n */\n protected async generateManifest(): Promise<GeneratedFile> {\n const groupId = 'com.example';\n const artifactId = this.toSnakeCase(this.options.packageName).replace(/-/g, '').toLowerCase();\n const lines: string[] = [];\n\n lines.push('<?xml version=\"1.0\" encoding=\"UTF-8\"?>');\n lines.push('<project xmlns=\"http://maven.apache.org/POM/4.0.0\"');\n lines.push(' xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"');\n lines.push(' xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0');\n lines.push(' http://maven.apache.org/xsd/maven-4.0.0.xsd\">');\n lines.push(' <modelVersion>4.0.0</modelVersion>');\n lines.push('');\n lines.push(` <groupId>${groupId}</groupId>`);\n lines.push(` <artifactId>${artifactId}</artifactId>`);\n lines.push(` <version>${this.options.packageVersion}</version>`);\n lines.push(' <packaging>jar</packaging>');\n lines.push('');\n if (this.schema.metadata.metadata?.['title']) {\n lines.push(` <name>${this.schema.metadata.metadata['title']}</name>`);\n }\n if (this.schema.metadata.metadata?.['description']) {\n lines.push(` <description>${this.schema.metadata.metadata['description']}</description>`);\n }\n lines.push('');\n lines.push(' <properties>');\n lines.push(' <maven.compiler.source>17</maven.compiler.source>');\n lines.push(' <maven.compiler.target>17</maven.compiler.target>');\n lines.push(' <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>');\n lines.push(' </properties>');\n lines.push('');\n lines.push(' <dependencies>');\n lines.push(' <dependency>');\n lines.push(' <groupId>com.fasterxml.jackson.core</groupId>');\n lines.push(' <artifactId>jackson-databind</artifactId>');\n lines.push(' <version>2.15.2</version>');\n lines.push(' </dependency>');\n lines.push(' <dependency>');\n lines.push(' <groupId>org.junit.jupiter</groupId>');\n lines.push(' <artifactId>junit-jupiter</artifactId>');\n lines.push(' <version>5.10.0</version>');\n lines.push(' <scope>test</scope>');\n lines.push(' </dependency>');\n lines.push(' </dependencies>');\n lines.push('');\n lines.push(' <build>');\n lines.push(' <plugins>');\n lines.push(' <plugin>');\n lines.push(' <groupId>org.apache.maven.plugins</groupId>');\n lines.push(' <artifactId>maven-compiler-plugin</artifactId>');\n lines.push(' <version>3.11.0</version>');\n lines.push(' </plugin>');\n lines.push(' </plugins>');\n lines.push(' </build>');\n lines.push('</project>');\n\n return {\n path: 'pom.xml',\n content: lines.join('\\n'),\n };\n }\n\n /**\n * Generate README\n */\n protected async generateReadme(): Promise<GeneratedFile> {\n const artifactId = this.toSnakeCase(this.options.packageName).replace(/-/g, '').toLowerCase();\n const lines: string[] = [];\n\n lines.push(`# ${this.schema.metadata.providerName} Java SDK`);\n lines.push('');\n if (this.schema.metadata.metadata?.['description']) {\n lines.push(String(this.schema.metadata.metadata['description']));\n lines.push('');\n }\n lines.push('Auto-generated by LLM-Forge.');\n lines.push('');\n\n lines.push('## Installation');\n lines.push('');\n lines.push('Add to your `pom.xml`:');\n lines.push('');\n lines.push('```xml');\n lines.push('<dependency>');\n lines.push(' <groupId>com.example</groupId>');\n lines.push(` <artifactId>${artifactId}</artifactId>`);\n lines.push(` <version>${this.options.packageVersion}</version>`);\n lines.push('</dependency>');\n lines.push('```');\n lines.push('');\n\n lines.push('## Usage');\n lines.push('');\n lines.push('```java');\n lines.push(`import ${this.getFormattedPackageName()}.Client;`);\n lines.push('');\n lines.push('Client client = new Client(\"your-api-key\");');\n lines.push('// Use the client...');\n lines.push('```');\n\n return {\n path: 'README.md',\n content: lines.join('\\n'),\n };\n }\n\n /**\n * Generate examples\n */\n protected override async generateExamples(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n const packageName = this.getFormattedPackageName();\n\n const lines: string[] = [];\n lines.push(`package ${packageName}.examples;`);\n lines.push('');\n lines.push(`import ${packageName}.Client;`);\n lines.push('');\n lines.push('public class BasicExample {');\n lines.push('\\tpublic static void main(String[] args) {');\n lines.push('\\t\\tClient client = new Client(\"your-api-key\");');\n lines.push('\\t\\t// Use the client...');\n lines.push('\\t}');\n lines.push('}');\n\n files.push({\n path: 'src/main/java/' + packageName.replace(/\\./g, '/') + '/examples/BasicExample.java',\n content: lines.join('\\n'),\n });\n\n return files;\n }\n\n /**\n * Generate tests\n */\n protected override async generateTests(): Promise<GeneratedFile[]> {\n const files: GeneratedFile[] = [];\n const packageName = this.getFormattedPackageName();\n\n const lines: string[] = [];\n lines.push(`package ${packageName};`);\n lines.push('');\n lines.push('import org.junit.jupiter.api.Test;');\n lines.push('import static org.junit.jupiter.api.Assertions.*;');\n lines.push('');\n lines.push('class ClientTest {');\n lines.push('\\t@Test');\n lines.push('\\tvoid testClientCreation() {');\n lines.push('\\t\\tClient client = new Client(\"test-key\");');\n lines.push('\\t\\tassertNotNull(client);');\n lines.push('\\t}');\n lines.push('}');\n\n files.push({\n path: 'src/test/java/' + packageName.replace(/\\./g, '/') + '/ClientTest.java',\n content: lines.join('\\n'),\n });\n\n return files;\n }\n\n /**\n * Convert to UPPER_SNAKE_CASE\n */\n private toUpperSnakeCase(str: string): string {\n return this.toSnakeCase(str).toUpperCase();\n }\n}\n","/**\n * Generator Orchestrator\n *\n * Coordinates multi-language SDK generation with parallel execution,\n * progress tracking, and quality validation.\n *\n * @module generators/generator-orchestrator\n */\n\nimport { writeFile, mkdir } from 'fs/promises';\nimport { resolve, dirname } from 'path';\nimport type { CanonicalSchema } from '../types/canonical-schema.js';\nimport type { BaseGenerator } from './base-generator.js';\nimport type { GenerationOptions, GenerationResult } from './base-generator.js';\nimport { PythonGenerator } from './python-generator.js';\nimport { TypeScriptGenerator } from './typescript-generator.js';\nimport { RustGenerator } from './rust-generator.js';\nimport { GoGenerator } from './go-generator.js';\nimport { CSharpGenerator } from './csharp-generator.js';\nimport { JavaGenerator } from './java-generator.js';\nimport { TargetLanguage } from '../core/type-mapper.js';\n\n/**\n * Generator constructor type\n */\ntype GeneratorConstructor = new (\n schema: CanonicalSchema,\n options: GenerationOptions\n) => BaseGenerator;\n\n/**\n * Supported generators\n */\nconst GENERATORS: Record<TargetLanguage, GeneratorConstructor> = {\n [TargetLanguage.Python]: PythonGenerator,\n [TargetLanguage.TypeScript]: TypeScriptGenerator,\n [TargetLanguage.Rust]: RustGenerator,\n [TargetLanguage.JavaScript]: TypeScriptGenerator, // Same as TS but different build\n [TargetLanguage.CSharp]: CSharpGenerator,\n [TargetLanguage.Go]: GoGenerator,\n [TargetLanguage.Java]: JavaGenerator,\n};\n\n/**\n * Orchestrator options\n */\nexport interface OrchestratorOptions {\n /** Languages to generate */\n languages: TargetLanguage[];\n /** Base output directory */\n outputDir: string;\n /** Package name */\n packageName: string;\n /** Package version */\n packageVersion: string;\n /** License */\n license?: string;\n /** Parallel execution */\n parallel?: boolean;\n /** Write files to disk */\n writeFiles?: boolean;\n}\n\n/**\n * Orchestration result\n */\nexport interface OrchestrationResult {\n /** Results per language */\n results: Map<TargetLanguage, GenerationResult>;\n /** Overall success */\n success: boolean;\n /** Total files generated */\n totalFiles: number;\n /** Total warnings */\n totalWarnings: number;\n /** Total errors */\n totalErrors: number;\n /** Generation time in ms */\n duration: number;\n}\n\n/**\n * Generator Orchestrator\n *\n * Manages multi-language SDK generation with support for parallel execution,\n * file system operations, and comprehensive reporting.\n */\nexport class GeneratorOrchestrator {\n private schema: CanonicalSchema;\n private options: Required<OrchestratorOptions>;\n\n constructor(schema: CanonicalSchema, options: OrchestratorOptions) {\n this.schema = schema;\n this.options = {\n license: 'Apache-2.0',\n parallel: true,\n writeFiles: true,\n ...options,\n };\n }\n\n /**\n * Generate SDKs for all specified languages\n */\n async generate(): Promise<OrchestrationResult> {\n const startTime = Date.now();\n const results = new Map<TargetLanguage, GenerationResult>();\n\n // Generate for each language\n if (this.options.parallel) {\n // Parallel execution\n const promises = this.options.languages.map((lang) => this.generateForLanguage(lang));\n const generationResults = await Promise.all(promises);\n\n this.options.languages.forEach((lang, idx) => {\n results.set(lang, generationResults[idx]!);\n });\n } else {\n // Sequential execution\n for (const lang of this.options.languages) {\n const result = await this.generateForLanguage(lang);\n results.set(lang, result);\n }\n }\n\n // Write files if requested\n if (this.options.writeFiles) {\n await this.writeAllFiles(results);\n }\n\n // Calculate metrics\n const duration = Date.now() - startTime;\n let totalFiles = 0;\n let totalWarnings = 0;\n let totalErrors = 0;\n let success = true;\n\n for (const result of results.values()) {\n totalFiles += result.files.length;\n totalWarnings += result.warnings.length;\n totalErrors += result.errors.length;\n if (result.errors.length > 0) {\n success = false;\n }\n }\n\n return {\n results,\n success,\n totalFiles,\n totalWarnings,\n totalErrors,\n duration,\n };\n }\n\n /**\n * Generate SDK for a specific language\n */\n private async generateForLanguage(language: TargetLanguage): Promise<GenerationResult> {\n const GeneratorClass = GENERATORS[language];\n\n if (!GeneratorClass) {\n return {\n files: [],\n warnings: [],\n errors: [`No generator available for language: ${language}`],\n };\n }\n\n const languageDir = resolve(this.options.outputDir, this.getLanguageDirName(language));\n\n const generationOptions: GenerationOptions = {\n outputDir: languageDir,\n packageName: this.options.packageName,\n packageVersion: this.options.packageVersion,\n license: this.options.license,\n includeExamples: true,\n includeTests: true,\n };\n\n const generator = new GeneratorClass(this.schema, generationOptions);\n\n try {\n return await generator.generate();\n } catch (error) {\n return {\n files: [],\n warnings: [],\n errors: [error instanceof Error ? error.message : String(error)],\n };\n }\n }\n\n /**\n * Write all generated files to disk\n */\n private async writeAllFiles(results: Map<TargetLanguage, GenerationResult>): Promise<void> {\n const writePromises: Promise<void>[] = [];\n\n for (const [language, result] of results.entries()) {\n const languageDir = resolve(this.options.outputDir, this.getLanguageDirName(language));\n\n for (const file of result.files) {\n const filePath = resolve(languageDir, file.path);\n writePromises.push(this.writeFile(filePath, file.content, file.executable));\n }\n }\n\n await Promise.all(writePromises);\n }\n\n /**\n * Write a single file to disk\n */\n private async writeFile(\n path: string,\n content: string,\n executable: boolean = false\n ): Promise<void> {\n await mkdir(dirname(path), { recursive: true });\n await writeFile(path, content, { mode: executable ? 0o755 : 0o644 });\n }\n\n /**\n * Get directory name for a language\n */\n private getLanguageDirName(language: TargetLanguage): string {\n const names: Record<TargetLanguage, string> = {\n [TargetLanguage.TypeScript]: 'typescript',\n [TargetLanguage.Python]: 'python',\n [TargetLanguage.Rust]: 'rust',\n [TargetLanguage.JavaScript]: 'javascript',\n [TargetLanguage.CSharp]: 'csharp',\n [TargetLanguage.Go]: 'go',\n [TargetLanguage.Java]: 'java',\n };\n\n return names[language];\n }\n\n /**\n * Get build instructions for all languages\n */\n getBuildInstructions(results: Map<TargetLanguage, GenerationResult>): string {\n const instructions: string[] = ['# Build Instructions\\n'];\n\n for (const [language, result] of results.entries()) {\n if (result.buildCommand) {\n instructions.push(`## ${language}`);\n instructions.push('```bash');\n instructions.push(`cd ${this.getLanguageDirName(language)}`);\n instructions.push(result.buildCommand);\n instructions.push('```\\n');\n }\n }\n\n return instructions.join('\\n');\n }\n\n /**\n * Get test instructions for all languages\n */\n getTestInstructions(results: Map<TargetLanguage, GenerationResult>): string {\n const instructions: string[] = ['# Test Instructions\\n'];\n\n for (const [language, result] of results.entries()) {\n if (result.testCommand) {\n instructions.push(`## ${language}`);\n instructions.push('```bash');\n instructions.push(`cd ${this.getLanguageDirName(language)}`);\n instructions.push(result.testCommand);\n instructions.push('```\\n');\n }\n }\n\n return instructions.join('\\n');\n }\n\n /**\n * Get publish instructions for all languages\n */\n getPublishInstructions(results: Map<TargetLanguage, GenerationResult>): string {\n const instructions: string[] = ['# Publish Instructions\\n'];\n\n for (const [language, result] of results.entries()) {\n if (result.publishCommand) {\n instructions.push(`## ${language}`);\n instructions.push('```bash');\n instructions.push(`cd ${this.getLanguageDirName(language)}`);\n instructions.push(result.publishCommand);\n instructions.push('```');\n\n if (result.registryUrl) {\n instructions.push(`\\nRegistry: ${result.registryUrl}\\n`);\n }\n }\n }\n\n return instructions.join('\\n');\n }\n}\n\n/**\n * Generate SDKs for multiple languages (convenience function)\n *\n * @param schema - Canonical schema\n * @param options - Orchestrator options\n * @returns Orchestration result\n */\nexport async function generateMultiLanguageSDKs(\n schema: CanonicalSchema,\n options: OrchestratorOptions\n): Promise<OrchestrationResult> {\n const orchestrator = new GeneratorOrchestrator(schema, options);\n return orchestrator.generate();\n}\n","/**\n * LLM-Connector-Hub Adapter\n *\n * Thin adapter module for consuming provider metadata, routing definitions,\n * and adapter specifications from the LLM-Connector-Hub upstream repository.\n *\n * This adapter provides backward-compatible, additive integration without\n * modifying existing SDK generation pipelines.\n *\n * @module adapters/connector-hub-adapter\n */\n\nimport type { CanonicalSchema, SchemaMetadata } from '../types/canonical-schema.js';\n\n/**\n * Provider capabilities as defined by Connector Hub\n */\nexport interface ConnectorHubCapabilities {\n streaming: boolean;\n functionCalling: boolean;\n vision: boolean;\n jsonMode: boolean;\n maxTokens?: number;\n supportsSystemMessage: boolean;\n}\n\n/**\n * Provider metadata from Connector Hub\n */\nexport interface ConnectorHubProviderMetadata {\n name: string;\n version: string;\n capabilities: ConnectorHubCapabilities;\n models?: string[];\n baseUrl?: string;\n authType?: 'api_key' | 'bearer' | 'oauth2';\n}\n\n/**\n * Routing definition from Connector Hub\n */\nexport interface ConnectorHubRoutingDefinition {\n strategy: 'cost-optimized' | 'latency-based' | 'health-monitoring' | 'failover';\n providers: string[];\n weights?: Record<string, number>;\n fallbackOrder?: string[];\n}\n\n/**\n * Adapter specification from Connector Hub\n */\nexport interface ConnectorHubAdapterSpec {\n providerId: string;\n requestTransform?: (request: unknown) => unknown;\n responseTransform?: (response: unknown) => unknown;\n errorMapping?: Record<string, string>;\n}\n\n/**\n * Result of provider detection using Connector Hub metadata\n */\nexport interface ProviderDetectionResult {\n detected: boolean;\n providerId?: string;\n confidence: number;\n method: 'header' | 'response_format' | 'model_name' | 'url' | 'manual';\n}\n\n/**\n * ConnectorHubAdapter provides consumption layer for LLM-Connector-Hub.\n *\n * This adapter enables Forge to:\n * - Consume provider metadata for enhanced SDK generation\n * - Utilize routing definitions for multi-provider scenarios\n * - Apply adapter specifications for request/response transformations\n *\n * @example\n * ```typescript\n * const adapter = new ConnectorHubAdapter();\n *\n * // Get provider metadata\n * const metadata = adapter.getProviderMetadata('openai');\n *\n * // Enrich canonical schema with capabilities\n * const enrichedSchema = adapter.enrichSchemaWithCapabilities(schema);\n * ```\n */\nexport class ConnectorHubAdapter {\n private providerRegistry: Map<string, ConnectorHubProviderMetadata> = new Map();\n private routingDefinitions: Map<string, ConnectorHubRoutingDefinition> = new Map();\n private adapterSpecs: Map<string, ConnectorHubAdapterSpec> = new Map();\n private initialized: boolean = false;\n\n /**\n * Initialize the adapter by loading metadata from Connector Hub.\n * This is a lazy initialization that occurs on first use.\n */\n async initialize(): Promise<void> {\n if (this.initialized) {\n return;\n }\n\n try {\n // Attempt to load from llm-connector-hub package\n // This is wrapped in try-catch for graceful degradation\n await this.loadFromConnectorHub();\n this.initialized = true;\n } catch {\n // Fallback to built-in defaults if package not available\n this.loadBuiltInDefaults();\n this.initialized = true;\n }\n }\n\n /**\n * Load provider metadata from the llm-connector-hub package.\n * @internal\n */\n private async loadFromConnectorHub(): Promise<void> {\n // Dynamic import to avoid hard dependency\n // Using Function constructor to avoid TypeScript module resolution\n const importDynamic = new Function('modulePath', 'return import(modulePath)');\n const connectorHub = await (importDynamic('llm-connector-hub') as Promise<unknown>).catch(() => null);\n\n if (connectorHub) {\n // If package is available, register providers from it\n this.registerProvidersFromHub(connectorHub);\n } else {\n throw new Error('llm-connector-hub package not available');\n }\n }\n\n /**\n * Register providers from the Connector Hub package.\n * @internal\n */\n private registerProvidersFromHub(hub: unknown): void {\n // Type-safe extraction of provider metadata\n const hubAny = hub as Record<string, unknown>;\n\n // Check for common export patterns\n if (typeof hubAny.getProviders === 'function') {\n const providers = (hubAny.getProviders as () => ConnectorHubProviderMetadata[])();\n for (const provider of providers) {\n this.providerRegistry.set(provider.name.toLowerCase(), provider);\n }\n }\n }\n\n /**\n * Load built-in default provider definitions.\n * Used as fallback when llm-connector-hub is not available.\n * @internal\n */\n private loadBuiltInDefaults(): void {\n const defaultProviders: ConnectorHubProviderMetadata[] = [\n {\n name: 'openai',\n version: '1.0.0',\n capabilities: {\n streaming: true,\n functionCalling: true,\n vision: true,\n jsonMode: true,\n maxTokens: 128000,\n supportsSystemMessage: true,\n },\n models: ['gpt-4o', 'gpt-4o-mini', 'gpt-4-turbo', 'gpt-3.5-turbo'],\n baseUrl: 'https://api.openai.com/v1',\n authType: 'bearer',\n },\n {\n name: 'anthropic',\n version: '1.0.0',\n capabilities: {\n streaming: true,\n functionCalling: true,\n vision: true,\n jsonMode: false,\n maxTokens: 200000,\n supportsSystemMessage: true,\n },\n models: ['claude-3-5-sonnet-20241022', 'claude-3-opus-20240229', 'claude-3-haiku-20240307'],\n baseUrl: 'https://api.anthropic.com/v1',\n authType: 'api_key',\n },\n {\n name: 'google',\n version: '1.0.0',\n capabilities: {\n streaming: true,\n functionCalling: true,\n vision: true,\n jsonMode: true,\n maxTokens: 1000000,\n supportsSystemMessage: true,\n },\n models: ['gemini-1.5-pro', 'gemini-1.5-flash', 'gemini-1.0-pro'],\n baseUrl: 'https://generativelanguage.googleapis.com/v1beta',\n authType: 'api_key',\n },\n {\n name: 'mistral',\n version: '1.0.0',\n capabilities: {\n streaming: true,\n functionCalling: true,\n vision: false,\n jsonMode: true,\n maxTokens: 32000,\n supportsSystemMessage: true,\n },\n models: ['mistral-large-latest', 'mistral-medium-latest', 'mistral-small-latest'],\n baseUrl: 'https://api.mistral.ai/v1',\n authType: 'bearer',\n },\n ];\n\n for (const provider of defaultProviders) {\n this.providerRegistry.set(provider.name.toLowerCase(), provider);\n }\n }\n\n /**\n * Get provider metadata by provider ID.\n *\n * @param providerId - The provider identifier (e.g., 'openai', 'anthropic')\n * @returns Provider metadata or undefined if not found\n */\n async getProviderMetadata(providerId: string): Promise<ConnectorHubProviderMetadata | undefined> {\n await this.initialize();\n return this.providerRegistry.get(providerId.toLowerCase());\n }\n\n /**\n * Get all registered provider IDs.\n *\n * @returns Array of provider identifiers\n */\n async getRegisteredProviders(): Promise<string[]> {\n await this.initialize();\n return Array.from(this.providerRegistry.keys());\n }\n\n /**\n * Get provider capabilities for SDK generation hints.\n *\n * @param providerId - The provider identifier\n * @returns Capabilities object or undefined\n */\n async getProviderCapabilities(providerId: string): Promise<ConnectorHubCapabilities | undefined> {\n const metadata = await this.getProviderMetadata(providerId);\n return metadata?.capabilities;\n }\n\n /**\n * Enrich a canonical schema with Connector Hub capabilities metadata.\n * This adds provider-specific capabilities to the schema's metadata\n * without modifying the core structure.\n *\n * @param schema - The canonical schema to enrich\n * @returns Enriched schema with capabilities metadata\n */\n async enrichSchemaWithCapabilities(schema: CanonicalSchema): Promise<CanonicalSchema> {\n await this.initialize();\n\n const providerId = schema.metadata.providerId.toLowerCase();\n const capabilities = await this.getProviderCapabilities(providerId);\n\n if (!capabilities) {\n return schema;\n }\n\n // Create enriched metadata without modifying original\n const enrichedMetadata: SchemaMetadata = {\n ...schema.metadata,\n metadata: {\n ...schema.metadata.metadata,\n connectorHub: {\n capabilities,\n enrichedAt: new Date().toISOString(),\n },\n },\n };\n\n return {\n ...schema,\n metadata: enrichedMetadata,\n };\n }\n\n /**\n * Register a routing definition for multi-provider scenarios.\n *\n * @param name - Routing definition name\n * @param definition - The routing definition\n */\n registerRoutingDefinition(name: string, definition: ConnectorHubRoutingDefinition): void {\n this.routingDefinitions.set(name, definition);\n }\n\n /**\n * Get a routing definition by name.\n *\n * @param name - Routing definition name\n * @returns Routing definition or undefined\n */\n getRoutingDefinition(name: string): ConnectorHubRoutingDefinition | undefined {\n return this.routingDefinitions.get(name);\n }\n\n /**\n * Register an adapter specification for request/response transformation.\n *\n * @param providerId - Provider identifier\n * @param spec - Adapter specification\n */\n registerAdapterSpec(providerId: string, spec: ConnectorHubAdapterSpec): void {\n this.adapterSpecs.set(providerId.toLowerCase(), spec);\n }\n\n /**\n * Get adapter specification for a provider.\n *\n * @param providerId - Provider identifier\n * @returns Adapter specification or undefined\n */\n getAdapterSpec(providerId: string): ConnectorHubAdapterSpec | undefined {\n return this.adapterSpecs.get(providerId.toLowerCase());\n }\n\n /**\n * Detect provider from response using Connector Hub heuristics.\n *\n * @param response - The response object to analyze\n * @param headers - Optional HTTP headers\n * @param url - Optional request URL\n * @returns Detection result with confidence score\n */\n async detectProvider(\n response: unknown,\n headers?: Record<string, string>,\n url?: string\n ): Promise<ProviderDetectionResult> {\n await this.initialize();\n\n // Check headers first (highest confidence)\n if (headers) {\n const headerProvider = this.detectFromHeaders(headers);\n if (headerProvider) {\n return {\n detected: true,\n providerId: headerProvider,\n confidence: 0.95,\n method: 'header',\n };\n }\n }\n\n // Check URL patterns\n if (url) {\n const urlProvider = this.detectFromUrl(url);\n if (urlProvider) {\n return {\n detected: true,\n providerId: urlProvider,\n confidence: 0.9,\n method: 'url',\n };\n }\n }\n\n // Check response format\n const formatProvider = this.detectFromResponseFormat(response);\n if (formatProvider) {\n return {\n detected: true,\n providerId: formatProvider,\n confidence: 0.8,\n method: 'response_format',\n };\n }\n\n return {\n detected: false,\n confidence: 0,\n method: 'manual',\n };\n }\n\n /**\n * Detect provider from HTTP headers.\n * @internal\n */\n private detectFromHeaders(headers: Record<string, string>): string | undefined {\n const headerMap: Record<string, string> = {\n 'x-openai-organization': 'openai',\n 'anthropic-version': 'anthropic',\n 'x-goog-api-client': 'google',\n };\n\n for (const [header, provider] of Object.entries(headerMap)) {\n if (headers[header] || headers[header.toLowerCase()]) {\n return provider;\n }\n }\n\n return undefined;\n }\n\n /**\n * Detect provider from URL patterns.\n * @internal\n */\n private detectFromUrl(url: string): string | undefined {\n const urlPatterns: Array<[RegExp, string]> = [\n [/api\\.openai\\.com/, 'openai'],\n [/api\\.anthropic\\.com/, 'anthropic'],\n [/generativelanguage\\.googleapis\\.com/, 'google'],\n [/api\\.mistral\\.ai/, 'mistral'],\n [/api\\.cohere\\.ai/, 'cohere'],\n ];\n\n for (const [pattern, provider] of urlPatterns) {\n if (pattern.test(url)) {\n return provider;\n }\n }\n\n return undefined;\n }\n\n /**\n * Detect provider from response format.\n * @internal\n */\n private detectFromResponseFormat(response: unknown): string | undefined {\n if (!response || typeof response !== 'object') {\n return undefined;\n }\n\n const resp = response as Record<string, unknown>;\n\n // OpenAI format detection\n if (resp.object === 'chat.completion' || resp.object === 'text_completion') {\n return 'openai';\n }\n\n // Anthropic format detection\n if (resp.type === 'message' && resp.role === 'assistant') {\n return 'anthropic';\n }\n\n // Google format detection\n if (resp.candidates && Array.isArray(resp.candidates)) {\n return 'google';\n }\n\n return undefined;\n }\n}\n\n/**\n * Singleton instance of the ConnectorHubAdapter.\n * Use this for shared access across the application.\n */\nexport const connectorHubAdapter = new ConnectorHubAdapter();\n\n/**\n * Get the singleton ConnectorHubAdapter instance.\n *\n * @returns The singleton adapter instance\n */\nexport function getConnectorHubAdapter(): ConnectorHubAdapter {\n return connectorHubAdapter;\n}\n","/**\n * LLM-Schema-Registry Adapter\n *\n * Thin adapter module for consuming model schemas, request/response specifications,\n * and type definitions from the LLM-Schema-Registry upstream repository.\n *\n * This adapter provides backward-compatible, additive integration without\n * modifying existing SDK generation pipelines.\n *\n * @module adapters/schema-registry-adapter\n */\n\nimport type { CanonicalSchema, TypeDefinition, TypeKind } from '../types/canonical-schema.js';\n\n/**\n * Model schema definition from Schema Registry\n */\nexport interface SchemaRegistryModelSchema {\n modelId: string;\n modelName: string;\n provider: string;\n version: string;\n contextWindow?: number;\n maxOutputTokens?: number;\n supportedFeatures?: string[];\n inputSchema?: SchemaRegistryTypeSpec;\n outputSchema?: SchemaRegistryTypeSpec;\n}\n\n/**\n * Request/response specification from Schema Registry\n */\nexport interface SchemaRegistryRequestResponseSpec {\n operationId: string;\n requestSchema: SchemaRegistryTypeSpec;\n responseSchema: SchemaRegistryTypeSpec;\n streamingResponseSchema?: SchemaRegistryTypeSpec;\n errorSchemas?: Record<string, SchemaRegistryTypeSpec>;\n}\n\n/**\n * Type specification from Schema Registry\n */\nexport interface SchemaRegistryTypeSpec {\n name: string;\n kind: 'object' | 'array' | 'primitive' | 'enum' | 'union';\n properties?: Record<string, SchemaRegistryPropertySpec>;\n items?: SchemaRegistryTypeSpec;\n variants?: SchemaRegistryTypeSpec[];\n enumValues?: Array<string | number>;\n primitiveType?: 'string' | 'number' | 'boolean' | 'null';\n required?: string[];\n description?: string;\n}\n\n/**\n * Property specification from Schema Registry\n */\nexport interface SchemaRegistryPropertySpec {\n type: SchemaRegistryTypeSpec;\n required?: boolean;\n description?: string;\n default?: unknown;\n deprecated?: boolean;\n}\n\n/**\n * Schema validation result\n */\nexport interface SchemaValidationResult {\n valid: boolean;\n errors?: SchemaValidationError[];\n warnings?: SchemaValidationWarning[];\n}\n\n/**\n * Schema validation error\n */\nexport interface SchemaValidationError {\n path: string;\n message: string;\n code: string;\n}\n\n/**\n * Schema validation warning\n */\nexport interface SchemaValidationWarning {\n path: string;\n message: string;\n suggestion?: string;\n}\n\n/**\n * Schema compatibility check result\n */\nexport interface SchemaCompatibilityResult {\n compatible: boolean;\n breakingChanges?: string[];\n addedFields?: string[];\n removedFields?: string[];\n typeChanges?: Array<{\n path: string;\n from: string;\n to: string;\n }>;\n}\n\n/**\n * SchemaRegistryAdapter provides consumption layer for LLM-Schema-Registry.\n *\n * This adapter enables Forge to:\n * - Consume model schemas for type-safe SDK generation\n * - Utilize request/response specifications for endpoint modeling\n * - Apply type definitions for cross-provider type unification\n *\n * @example\n * ```typescript\n * const adapter = new SchemaRegistryAdapter();\n *\n * // Get model schema\n * const modelSchema = await adapter.getModelSchema('gpt-4o');\n *\n * // Validate canonical schema against registry\n * const validation = await adapter.validateSchema(canonicalSchema);\n * ```\n */\nexport class SchemaRegistryAdapter {\n private modelSchemas: Map<string, SchemaRegistryModelSchema> = new Map();\n private requestResponseSpecs: Map<string, SchemaRegistryRequestResponseSpec> = new Map();\n private typeDefinitions: Map<string, SchemaRegistryTypeSpec> = new Map();\n private initialized: boolean = false;\n\n /**\n * Initialize the adapter by loading schemas from Schema Registry.\n * This is a lazy initialization that occurs on first use.\n */\n async initialize(): Promise<void> {\n if (this.initialized) {\n return;\n }\n\n try {\n // Attempt to load from llm-schema-registry package\n await this.loadFromSchemaRegistry();\n this.initialized = true;\n } catch {\n // Fallback to built-in defaults if package not available\n this.loadBuiltInDefaults();\n this.initialized = true;\n }\n }\n\n /**\n * Load schemas from the llm-schema-registry package.\n * @internal\n */\n private async loadFromSchemaRegistry(): Promise<void> {\n // Dynamic import to avoid hard dependency\n // Using Function constructor to avoid TypeScript module resolution\n const importDynamic = new Function('modulePath', 'return import(modulePath)');\n const schemaRegistry = await (importDynamic('llm-schema-registry') as Promise<unknown>).catch(() => null);\n\n if (schemaRegistry) {\n this.registerSchemasFromRegistry(schemaRegistry);\n } else {\n throw new Error('llm-schema-registry package not available');\n }\n }\n\n /**\n * Register schemas from the Schema Registry package.\n * @internal\n */\n private registerSchemasFromRegistry(registry: unknown): void {\n const registryAny = registry as Record<string, unknown>;\n\n // Check for common export patterns\n if (typeof registryAny.getModelSchemas === 'function') {\n const schemas = (registryAny.getModelSchemas as () => SchemaRegistryModelSchema[])();\n for (const schema of schemas) {\n this.modelSchemas.set(schema.modelId.toLowerCase(), schema);\n }\n }\n\n if (typeof registryAny.getRequestResponseSpecs === 'function') {\n const specs = (registryAny.getRequestResponseSpecs as () => SchemaRegistryRequestResponseSpec[])();\n for (const spec of specs) {\n this.requestResponseSpecs.set(spec.operationId.toLowerCase(), spec);\n }\n }\n\n if (typeof registryAny.getTypeDefinitions === 'function') {\n const types = (registryAny.getTypeDefinitions as () => Array<SchemaRegistryTypeSpec & { id: string }>)();\n for (const type of types) {\n this.typeDefinitions.set(type.id || type.name.toLowerCase(), type);\n }\n }\n }\n\n /**\n * Load built-in default schema definitions.\n * Used as fallback when llm-schema-registry is not available.\n * @internal\n */\n private loadBuiltInDefaults(): void {\n const defaultModelSchemas: SchemaRegistryModelSchema[] = [\n {\n modelId: 'gpt-4o',\n modelName: 'GPT-4o',\n provider: 'openai',\n version: '2024-05-13',\n contextWindow: 128000,\n maxOutputTokens: 4096,\n supportedFeatures: ['chat', 'vision', 'function_calling', 'json_mode'],\n },\n {\n modelId: 'gpt-4o-mini',\n modelName: 'GPT-4o Mini',\n provider: 'openai',\n version: '2024-07-18',\n contextWindow: 128000,\n maxOutputTokens: 16384,\n supportedFeatures: ['chat', 'vision', 'function_calling', 'json_mode'],\n },\n {\n modelId: 'claude-3-5-sonnet-20241022',\n modelName: 'Claude 3.5 Sonnet',\n provider: 'anthropic',\n version: '2024-10-22',\n contextWindow: 200000,\n maxOutputTokens: 8192,\n supportedFeatures: ['chat', 'vision', 'tool_use'],\n },\n {\n modelId: 'claude-3-opus-20240229',\n modelName: 'Claude 3 Opus',\n provider: 'anthropic',\n version: '2024-02-29',\n contextWindow: 200000,\n maxOutputTokens: 4096,\n supportedFeatures: ['chat', 'vision', 'tool_use'],\n },\n {\n modelId: 'gemini-1.5-pro',\n modelName: 'Gemini 1.5 Pro',\n provider: 'google',\n version: '1.5',\n contextWindow: 1000000,\n maxOutputTokens: 8192,\n supportedFeatures: ['chat', 'vision', 'function_calling'],\n },\n {\n modelId: 'mistral-large-latest',\n modelName: 'Mistral Large',\n provider: 'mistral',\n version: 'latest',\n contextWindow: 32000,\n maxOutputTokens: 8192,\n supportedFeatures: ['chat', 'function_calling', 'json_mode'],\n },\n ];\n\n for (const schema of defaultModelSchemas) {\n this.modelSchemas.set(schema.modelId.toLowerCase(), schema);\n }\n\n // Default request/response specs for common operations\n const defaultSpecs: SchemaRegistryRequestResponseSpec[] = [\n {\n operationId: 'chat_completion',\n requestSchema: {\n name: 'ChatCompletionRequest',\n kind: 'object',\n properties: {\n model: { type: { name: 'string', kind: 'primitive', primitiveType: 'string' }, required: true },\n messages: {\n type: {\n name: 'messages',\n kind: 'array',\n items: { name: 'Message', kind: 'object' },\n },\n required: true,\n },\n temperature: { type: { name: 'number', kind: 'primitive', primitiveType: 'number' }, required: false },\n max_tokens: { type: { name: 'number', kind: 'primitive', primitiveType: 'number' }, required: false },\n stream: { type: { name: 'boolean', kind: 'primitive', primitiveType: 'boolean' }, required: false },\n },\n required: ['model', 'messages'],\n },\n responseSchema: {\n name: 'ChatCompletionResponse',\n kind: 'object',\n properties: {\n id: { type: { name: 'string', kind: 'primitive', primitiveType: 'string' }, required: true },\n object: { type: { name: 'string', kind: 'primitive', primitiveType: 'string' }, required: true },\n created: { type: { name: 'number', kind: 'primitive', primitiveType: 'number' }, required: true },\n model: { type: { name: 'string', kind: 'primitive', primitiveType: 'string' }, required: true },\n choices: {\n type: {\n name: 'choices',\n kind: 'array',\n items: { name: 'Choice', kind: 'object' },\n },\n required: true,\n },\n usage: { type: { name: 'Usage', kind: 'object' }, required: false },\n },\n required: ['id', 'object', 'created', 'model', 'choices'],\n },\n streamingResponseSchema: {\n name: 'ChatCompletionChunk',\n kind: 'object',\n properties: {\n id: { type: { name: 'string', kind: 'primitive', primitiveType: 'string' }, required: true },\n object: { type: { name: 'string', kind: 'primitive', primitiveType: 'string' }, required: true },\n created: { type: { name: 'number', kind: 'primitive', primitiveType: 'number' }, required: true },\n model: { type: { name: 'string', kind: 'primitive', primitiveType: 'string' }, required: true },\n choices: {\n type: {\n name: 'choices',\n kind: 'array',\n items: { name: 'ChunkChoice', kind: 'object' },\n },\n required: true,\n },\n },\n required: ['id', 'object', 'created', 'model', 'choices'],\n },\n },\n ];\n\n for (const spec of defaultSpecs) {\n this.requestResponseSpecs.set(spec.operationId.toLowerCase(), spec);\n }\n }\n\n /**\n * Get model schema by model ID.\n *\n * @param modelId - The model identifier (e.g., 'gpt-4o', 'claude-3-5-sonnet-20241022')\n * @returns Model schema or undefined if not found\n */\n async getModelSchema(modelId: string): Promise<SchemaRegistryModelSchema | undefined> {\n await this.initialize();\n return this.modelSchemas.get(modelId.toLowerCase());\n }\n\n /**\n * Get all registered model IDs.\n *\n * @returns Array of model identifiers\n */\n async getRegisteredModels(): Promise<string[]> {\n await this.initialize();\n return Array.from(this.modelSchemas.keys());\n }\n\n /**\n * Get models by provider.\n *\n * @param provider - Provider identifier\n * @returns Array of model schemas for the provider\n */\n async getModelsByProvider(provider: string): Promise<SchemaRegistryModelSchema[]> {\n await this.initialize();\n return Array.from(this.modelSchemas.values()).filter(\n (schema) => schema.provider.toLowerCase() === provider.toLowerCase()\n );\n }\n\n /**\n * Get request/response specification by operation ID.\n *\n * @param operationId - The operation identifier\n * @returns Request/response spec or undefined\n */\n async getRequestResponseSpec(operationId: string): Promise<SchemaRegistryRequestResponseSpec | undefined> {\n await this.initialize();\n return this.requestResponseSpecs.get(operationId.toLowerCase());\n }\n\n /**\n * Get type definition by ID.\n *\n * @param typeId - The type identifier\n * @returns Type specification or undefined\n */\n async getTypeDefinition(typeId: string): Promise<SchemaRegistryTypeSpec | undefined> {\n await this.initialize();\n return this.typeDefinitions.get(typeId.toLowerCase());\n }\n\n /**\n * Validate a canonical schema against Schema Registry specifications.\n *\n * @param schema - The canonical schema to validate\n * @returns Validation result\n */\n async validateSchema(schema: CanonicalSchema): Promise<SchemaValidationResult> {\n await this.initialize();\n\n const errors: SchemaValidationError[] = [];\n const warnings: SchemaValidationWarning[] = [];\n\n // Validate metadata\n if (!schema.metadata.providerId) {\n errors.push({\n path: 'metadata.providerId',\n message: 'Provider ID is required',\n code: 'MISSING_PROVIDER_ID',\n });\n }\n\n // Validate types\n for (const type of schema.types) {\n this.validateTypeDefinition(type, errors, warnings);\n }\n\n // Validate endpoints\n for (const endpoint of schema.endpoints) {\n if (!endpoint.operationId) {\n errors.push({\n path: `endpoints.${endpoint.id}`,\n message: 'Operation ID is required for all endpoints',\n code: 'MISSING_OPERATION_ID',\n });\n }\n\n // Check if we have a spec for this operation\n const spec = await this.getRequestResponseSpec(endpoint.operationId);\n if (!spec) {\n warnings.push({\n path: `endpoints.${endpoint.id}`,\n message: `No registry specification found for operation: ${endpoint.operationId}`,\n suggestion: 'Consider registering this operation in Schema Registry',\n });\n }\n }\n\n return {\n valid: errors.length === 0,\n errors: errors.length > 0 ? errors : undefined,\n warnings: warnings.length > 0 ? warnings : undefined,\n };\n }\n\n /**\n * Validate a type definition.\n * @internal\n */\n private validateTypeDefinition(\n type: TypeDefinition,\n errors: SchemaValidationError[],\n warnings: SchemaValidationWarning[]\n ): void {\n if (!type.id) {\n errors.push({\n path: `types.${type.name}`,\n message: 'Type ID is required',\n code: 'MISSING_TYPE_ID',\n });\n }\n\n if (!type.name) {\n errors.push({\n path: `types.${type.id}`,\n message: 'Type name is required',\n code: 'MISSING_TYPE_NAME',\n });\n }\n\n // Kind-specific validation\n switch (type.kind) {\n case 'object' as TypeKind:\n if (!('properties' in type) || !type.properties) {\n warnings.push({\n path: `types.${type.id}`,\n message: 'Object type has no properties defined',\n suggestion: 'Consider adding properties or using a different type kind',\n });\n }\n break;\n case 'array' as TypeKind:\n if (!('items' in type) || !type.items) {\n errors.push({\n path: `types.${type.id}`,\n message: 'Array type must have items defined',\n code: 'MISSING_ARRAY_ITEMS',\n });\n }\n break;\n case 'enum' as TypeKind:\n if (!('values' in type) || !type.values || type.values.length === 0) {\n errors.push({\n path: `types.${type.id}`,\n message: 'Enum type must have at least one value',\n code: 'EMPTY_ENUM',\n });\n }\n break;\n }\n }\n\n /**\n * Check compatibility between two canonical schemas.\n *\n * @param oldSchema - The previous schema version\n * @param newSchema - The new schema version\n * @returns Compatibility check result\n */\n async checkCompatibility(\n oldSchema: CanonicalSchema,\n newSchema: CanonicalSchema\n ): Promise<SchemaCompatibilityResult> {\n await this.initialize();\n\n const breakingChanges: string[] = [];\n const addedFields: string[] = [];\n const removedFields: string[] = [];\n const typeChanges: Array<{ path: string; from: string; to: string }> = [];\n\n // Compare types\n const oldTypeMap = new Map(oldSchema.types.map((t) => [t.id, t]));\n const newTypeMap = new Map(newSchema.types.map((t) => [t.id, t]));\n\n // Check for removed types\n for (const [id, oldType] of oldTypeMap) {\n if (!newTypeMap.has(id)) {\n breakingChanges.push(`Type removed: ${oldType.name} (${id})`);\n removedFields.push(`type:${id}`);\n }\n }\n\n // Check for added types\n for (const [id, newType] of newTypeMap) {\n if (!oldTypeMap.has(id)) {\n addedFields.push(`type:${id} (${newType.name})`);\n }\n }\n\n // Compare endpoints\n const oldEndpointMap = new Map(oldSchema.endpoints.map((e) => [e.id, e]));\n const newEndpointMap = new Map(newSchema.endpoints.map((e) => [e.id, e]));\n\n // Check for removed endpoints (breaking)\n for (const [id, oldEndpoint] of oldEndpointMap) {\n if (!newEndpointMap.has(id)) {\n breakingChanges.push(`Endpoint removed: ${oldEndpoint.operationId} (${oldEndpoint.path})`);\n }\n }\n\n // Check for added endpoints (non-breaking)\n for (const [id, newEndpoint] of newEndpointMap) {\n if (!oldEndpointMap.has(id)) {\n addedFields.push(`endpoint:${newEndpoint.operationId} (${newEndpoint.path})`);\n }\n }\n\n return {\n compatible: breakingChanges.length === 0,\n breakingChanges: breakingChanges.length > 0 ? breakingChanges : undefined,\n addedFields: addedFields.length > 0 ? addedFields : undefined,\n removedFields: removedFields.length > 0 ? removedFields : undefined,\n typeChanges: typeChanges.length > 0 ? typeChanges : undefined,\n };\n }\n\n /**\n * Enrich a canonical schema with Schema Registry type information.\n *\n * @param schema - The canonical schema to enrich\n * @returns Enriched schema with registry metadata\n */\n async enrichSchemaWithRegistryTypes(schema: CanonicalSchema): Promise<CanonicalSchema> {\n await this.initialize();\n\n // Create enriched metadata\n const enrichedMetadata = {\n ...schema.metadata,\n metadata: {\n ...schema.metadata.metadata,\n schemaRegistry: {\n enrichedAt: new Date().toISOString(),\n registeredModels: await this.getModelsByProvider(schema.metadata.providerId),\n },\n },\n };\n\n return {\n ...schema,\n metadata: enrichedMetadata,\n };\n }\n}\n\n/**\n * Singleton instance of the SchemaRegistryAdapter.\n * Use this for shared access across the application.\n */\nexport const schemaRegistryAdapter = new SchemaRegistryAdapter();\n\n/**\n * Get the singleton SchemaRegistryAdapter instance.\n *\n * @returns The singleton adapter instance\n */\nexport function getSchemaRegistryAdapter(): SchemaRegistryAdapter {\n return schemaRegistryAdapter;\n}\n","/**\n * LLM-Config-Manager Adapter\n *\n * Thin adapter module for consuming configuration to control SDK generation\n * parameters, feature flags, provider availability, and versioning policies\n * from the LLM-Config-Manager upstream repository.\n *\n * This adapter provides backward-compatible, additive integration without\n * modifying existing SDK generation pipelines.\n *\n * @module adapters/config-manager-adapter\n */\n\n/**\n * SDK generation parameters from Config Manager\n */\nexport interface ConfigManagerSDKParams {\n /** Target language for SDK generation */\n targetLanguage: string;\n /** Output directory for generated files */\n outputDirectory?: string;\n /** Whether to generate async/await variants */\n generateAsync: boolean;\n /** Whether to generate streaming support */\n generateStreaming: boolean;\n /** Whether to include validation code */\n includeValidation: boolean;\n /** Whether to generate documentation */\n generateDocs: boolean;\n /** Package name for generated SDK */\n packageName?: string;\n /** Package version for generated SDK */\n packageVersion?: string;\n /** Custom template overrides */\n templateOverrides?: Record<string, string>;\n}\n\n/**\n * Feature flags from Config Manager\n */\nexport interface ConfigManagerFeatureFlags {\n /** Enable experimental features */\n experimentalFeatures: boolean;\n /** Enable debug mode in generated SDKs */\n debugMode: boolean;\n /** Enable telemetry in generated SDKs */\n telemetry: boolean;\n /** Enable request/response logging */\n requestLogging: boolean;\n /** Enable automatic retries */\n autoRetry: boolean;\n /** Enable circuit breaker pattern */\n circuitBreaker: boolean;\n /** Enable request caching */\n caching: boolean;\n /** Custom feature flags */\n custom?: Record<string, boolean>;\n}\n\n/**\n * Provider availability configuration from Config Manager\n */\nexport interface ConfigManagerProviderAvailability {\n /** Provider identifier */\n providerId: string;\n /** Whether the provider is enabled */\n enabled: boolean;\n /** Provider health status */\n status: 'healthy' | 'degraded' | 'unavailable';\n /** Region availability */\n regions?: string[];\n /** Rate limit configuration */\n rateLimit?: {\n requestsPerMinute: number;\n requestsPerDay?: number;\n tokensPerMinute?: number;\n };\n /** Maintenance windows */\n maintenanceWindows?: Array<{\n start: string;\n end: string;\n message?: string;\n }>;\n}\n\n/**\n * Versioning policy from Config Manager\n */\nexport interface ConfigManagerVersioningPolicy {\n /** Versioning strategy */\n strategy: 'semver' | 'calver' | 'custom';\n /** Current version */\n currentVersion: string;\n /** Minimum supported version */\n minSupportedVersion?: string;\n /** Deprecation policy */\n deprecationPolicy?: {\n /** Warning period in days */\n warningPeriodDays: number;\n /** Removal period in days */\n removalPeriodDays: number;\n };\n /** Version constraints */\n constraints?: {\n /** Breaking change allowed */\n allowBreaking: boolean;\n /** Pre-release allowed */\n allowPrerelease: boolean;\n };\n}\n\n/**\n * Complete configuration from Config Manager\n */\nexport interface ConfigManagerConfiguration {\n /** SDK generation parameters */\n sdkParams: ConfigManagerSDKParams;\n /** Feature flags */\n featureFlags: ConfigManagerFeatureFlags;\n /** Provider availability */\n providers: ConfigManagerProviderAvailability[];\n /** Versioning policy */\n versioning: ConfigManagerVersioningPolicy;\n /** Configuration metadata */\n metadata?: {\n lastUpdated: string;\n environment: string;\n configVersion: string;\n };\n}\n\n/**\n * Configuration validation result\n */\nexport interface ConfigValidationResult {\n valid: boolean;\n errors?: Array<{\n path: string;\n message: string;\n code: string;\n }>;\n warnings?: Array<{\n path: string;\n message: string;\n }>;\n}\n\n/**\n * Configuration merge options\n */\nexport interface ConfigMergeOptions {\n /** Override strategy for conflicts */\n overrideStrategy: 'local' | 'remote' | 'merge';\n /** Deep merge arrays */\n deepMergeArrays: boolean;\n /** Preserve undefined values */\n preserveUndefined: boolean;\n}\n\n/**\n * ConfigManagerAdapter provides consumption layer for LLM-Config-Manager.\n *\n * This adapter enables Forge to:\n * - Consume SDK generation parameters for customization\n * - Utilize feature flags for conditional generation\n * - Query provider availability for runtime decisions\n * - Apply versioning policies for release management\n *\n * @example\n * ```typescript\n * const adapter = new ConfigManagerAdapter();\n *\n * // Get SDK generation parameters\n * const params = await adapter.getSDKParams('typescript');\n *\n * // Check feature flag\n * const enabled = await adapter.isFeatureEnabled('experimentalFeatures');\n *\n * // Get provider availability\n * const availability = await adapter.getProviderAvailability('openai');\n * ```\n */\nexport class ConfigManagerAdapter {\n private configuration: ConfigManagerConfiguration | null = null;\n private configOverrides: Partial<ConfigManagerConfiguration> = {};\n private initialized: boolean = false;\n\n /**\n * Initialize the adapter by loading configuration from Config Manager.\n * This is a lazy initialization that occurs on first use.\n */\n async initialize(): Promise<void> {\n if (this.initialized) {\n return;\n }\n\n try {\n // Attempt to load from llm-config-manager package\n await this.loadFromConfigManager();\n this.initialized = true;\n } catch {\n // Fallback to built-in defaults if package not available\n this.loadBuiltInDefaults();\n this.initialized = true;\n }\n }\n\n /**\n * Load configuration from the llm-config-manager package.\n * @internal\n */\n private async loadFromConfigManager(): Promise<void> {\n // Dynamic import to avoid hard dependency\n // Using Function constructor to avoid TypeScript module resolution\n const importDynamic = new Function('modulePath', 'return import(modulePath)');\n const configManager = await (importDynamic('llm-config-manager') as Promise<unknown>).catch(() => null);\n\n if (configManager) {\n this.loadConfigFromManager(configManager);\n } else {\n throw new Error('llm-config-manager package not available');\n }\n }\n\n /**\n * Load configuration from the Config Manager package.\n * @internal\n */\n private loadConfigFromManager(manager: unknown): void {\n const managerAny = manager as Record<string, unknown>;\n\n // Check for common export patterns\n if (typeof managerAny.getConfiguration === 'function') {\n this.configuration = (managerAny.getConfiguration as () => ConfigManagerConfiguration)();\n } else if (typeof managerAny.config === 'object') {\n this.configuration = managerAny.config as ConfigManagerConfiguration;\n }\n }\n\n /**\n * Load built-in default configuration.\n * Used as fallback when llm-config-manager is not available.\n * @internal\n */\n private loadBuiltInDefaults(): void {\n this.configuration = {\n sdkParams: {\n targetLanguage: 'typescript',\n generateAsync: true,\n generateStreaming: true,\n includeValidation: true,\n generateDocs: true,\n },\n featureFlags: {\n experimentalFeatures: false,\n debugMode: false,\n telemetry: false,\n requestLogging: false,\n autoRetry: true,\n circuitBreaker: false,\n caching: false,\n },\n providers: [\n {\n providerId: 'openai',\n enabled: true,\n status: 'healthy',\n regions: ['us', 'eu', 'asia'],\n rateLimit: {\n requestsPerMinute: 60,\n tokensPerMinute: 90000,\n },\n },\n {\n providerId: 'anthropic',\n enabled: true,\n status: 'healthy',\n regions: ['us', 'eu'],\n rateLimit: {\n requestsPerMinute: 60,\n tokensPerMinute: 100000,\n },\n },\n {\n providerId: 'google',\n enabled: true,\n status: 'healthy',\n regions: ['us', 'eu', 'asia'],\n rateLimit: {\n requestsPerMinute: 60,\n },\n },\n {\n providerId: 'mistral',\n enabled: true,\n status: 'healthy',\n regions: ['eu'],\n rateLimit: {\n requestsPerMinute: 60,\n },\n },\n ],\n versioning: {\n strategy: 'semver',\n currentVersion: '1.0.0',\n minSupportedVersion: '0.9.0',\n deprecationPolicy: {\n warningPeriodDays: 90,\n removalPeriodDays: 180,\n },\n constraints: {\n allowBreaking: false,\n allowPrerelease: true,\n },\n },\n metadata: {\n lastUpdated: new Date().toISOString(),\n environment: 'production',\n configVersion: '1.0.0',\n },\n };\n }\n\n /**\n * Get SDK generation parameters for a target language.\n *\n * @param targetLanguage - The target language (e.g., 'typescript', 'python')\n * @returns SDK parameters with language-specific settings\n */\n async getSDKParams(targetLanguage?: string): Promise<ConfigManagerSDKParams> {\n await this.initialize();\n\n const baseParams = this.configuration?.sdkParams || {\n targetLanguage: targetLanguage || 'typescript',\n generateAsync: true,\n generateStreaming: true,\n includeValidation: true,\n generateDocs: true,\n };\n\n // Apply overrides\n const overrideParams = this.configOverrides.sdkParams;\n\n return {\n ...baseParams,\n ...overrideParams,\n targetLanguage: targetLanguage || baseParams.targetLanguage,\n };\n }\n\n /**\n * Get all feature flags.\n *\n * @returns Feature flags configuration\n */\n async getFeatureFlags(): Promise<ConfigManagerFeatureFlags> {\n await this.initialize();\n\n const baseFlags = this.configuration?.featureFlags || {\n experimentalFeatures: false,\n debugMode: false,\n telemetry: false,\n requestLogging: false,\n autoRetry: true,\n circuitBreaker: false,\n caching: false,\n };\n\n // Apply overrides\n const overrideFlags = this.configOverrides.featureFlags;\n\n return {\n ...baseFlags,\n ...overrideFlags,\n };\n }\n\n /**\n * Check if a specific feature is enabled.\n *\n * @param featureName - The feature flag name\n * @returns Whether the feature is enabled\n */\n async isFeatureEnabled(featureName: keyof ConfigManagerFeatureFlags | string): Promise<boolean> {\n const flags = await this.getFeatureFlags();\n\n if (featureName in flags) {\n return flags[featureName as keyof ConfigManagerFeatureFlags] as boolean;\n }\n\n // Check custom flags\n return flags.custom?.[featureName] ?? false;\n }\n\n /**\n * Get provider availability for a specific provider.\n *\n * @param providerId - The provider identifier\n * @returns Provider availability or undefined\n */\n async getProviderAvailability(providerId: string): Promise<ConfigManagerProviderAvailability | undefined> {\n await this.initialize();\n\n const providers = this.configuration?.providers || [];\n return providers.find((p) => p.providerId.toLowerCase() === providerId.toLowerCase());\n }\n\n /**\n * Get all provider availability configurations.\n *\n * @returns Array of provider availability configurations\n */\n async getAllProviderAvailability(): Promise<ConfigManagerProviderAvailability[]> {\n await this.initialize();\n return this.configuration?.providers || [];\n }\n\n /**\n * Check if a provider is available.\n *\n * @param providerId - The provider identifier\n * @returns Whether the provider is enabled and healthy\n */\n async isProviderAvailable(providerId: string): Promise<boolean> {\n const availability = await this.getProviderAvailability(providerId);\n return availability?.enabled === true && availability?.status === 'healthy';\n }\n\n /**\n * Get the versioning policy.\n *\n * @returns Versioning policy configuration\n */\n async getVersioningPolicy(): Promise<ConfigManagerVersioningPolicy> {\n await this.initialize();\n\n return (\n this.configuration?.versioning || {\n strategy: 'semver',\n currentVersion: '1.0.0',\n }\n );\n }\n\n /**\n * Get the complete configuration.\n *\n * @returns Full configuration object\n */\n async getConfiguration(): Promise<ConfigManagerConfiguration> {\n await this.initialize();\n\n if (!this.configuration) {\n throw new Error('Configuration not loaded');\n }\n\n return this.mergeConfigurations(this.configuration, this.configOverrides);\n }\n\n /**\n * Set configuration overrides.\n * These will be merged with the base configuration.\n *\n * @param overrides - Partial configuration to override\n */\n setOverrides(overrides: Partial<ConfigManagerConfiguration>): void {\n this.configOverrides = overrides;\n }\n\n /**\n * Clear configuration overrides.\n */\n clearOverrides(): void {\n this.configOverrides = {};\n }\n\n /**\n * Validate a configuration object.\n *\n * @param config - Configuration to validate\n * @returns Validation result\n */\n validateConfiguration(config: Partial<ConfigManagerConfiguration>): ConfigValidationResult {\n const errors: Array<{ path: string; message: string; code: string }> = [];\n const warnings: Array<{ path: string; message: string }> = [];\n\n // Validate SDK params\n if (config.sdkParams) {\n if (!config.sdkParams.targetLanguage) {\n errors.push({\n path: 'sdkParams.targetLanguage',\n message: 'Target language is required',\n code: 'MISSING_TARGET_LANGUAGE',\n });\n }\n }\n\n // Validate versioning\n if (config.versioning) {\n if (!config.versioning.strategy) {\n errors.push({\n path: 'versioning.strategy',\n message: 'Versioning strategy is required',\n code: 'MISSING_VERSIONING_STRATEGY',\n });\n }\n\n if (!config.versioning.currentVersion) {\n errors.push({\n path: 'versioning.currentVersion',\n message: 'Current version is required',\n code: 'MISSING_CURRENT_VERSION',\n });\n }\n }\n\n // Validate providers\n if (config.providers) {\n for (let i = 0; i < config.providers.length; i++) {\n const provider = config.providers[i];\n if (provider && !provider.providerId) {\n errors.push({\n path: `providers[${i}].providerId`,\n message: 'Provider ID is required',\n code: 'MISSING_PROVIDER_ID',\n });\n }\n\n if (provider && provider.status === 'unavailable' && provider.enabled) {\n warnings.push({\n path: `providers[${i}]`,\n message: `Provider ${provider.providerId} is enabled but marked as unavailable`,\n });\n }\n }\n }\n\n return {\n valid: errors.length === 0,\n errors: errors.length > 0 ? errors : undefined,\n warnings: warnings.length > 0 ? warnings : undefined,\n };\n }\n\n /**\n * Merge two configurations with override strategy.\n * @internal\n */\n private mergeConfigurations(\n base: ConfigManagerConfiguration,\n overrides: Partial<ConfigManagerConfiguration>\n ): ConfigManagerConfiguration {\n return {\n sdkParams: {\n ...base.sdkParams,\n ...overrides.sdkParams,\n },\n featureFlags: {\n ...base.featureFlags,\n ...overrides.featureFlags,\n custom: {\n ...base.featureFlags.custom,\n ...overrides.featureFlags?.custom,\n },\n },\n providers: overrides.providers || base.providers,\n versioning: {\n ...base.versioning,\n ...overrides.versioning,\n },\n metadata: base.metadata ? {\n lastUpdated: overrides.metadata?.lastUpdated ?? base.metadata.lastUpdated,\n environment: overrides.metadata?.environment ?? base.metadata.environment,\n configVersion: overrides.metadata?.configVersion ?? base.metadata.configVersion,\n } : undefined,\n };\n }\n\n /**\n * Get configuration for a specific SDK generation scenario.\n *\n * @param language - Target language\n * @param providerId - Target provider\n * @returns Merged configuration for the scenario\n */\n async getScenarioConfiguration(\n language: string,\n providerId: string\n ): Promise<{\n sdkParams: ConfigManagerSDKParams;\n featureFlags: ConfigManagerFeatureFlags;\n provider: ConfigManagerProviderAvailability | undefined;\n versioning: ConfigManagerVersioningPolicy;\n }> {\n const [sdkParams, featureFlags, provider, versioning] = await Promise.all([\n this.getSDKParams(language),\n this.getFeatureFlags(),\n this.getProviderAvailability(providerId),\n this.getVersioningPolicy(),\n ]);\n\n return {\n sdkParams,\n featureFlags,\n provider,\n versioning,\n };\n }\n}\n\n/**\n * Singleton instance of the ConfigManagerAdapter.\n * Use this for shared access across the application.\n */\nexport const configManagerAdapter = new ConfigManagerAdapter();\n\n/**\n * Get the singleton ConfigManagerAdapter instance.\n *\n * @returns The singleton adapter instance\n */\nexport function getConfigManagerAdapter(): ConfigManagerAdapter {\n return configManagerAdapter;\n}\n","/**\n * Agentics Foundational Execution Unit - Execution Context\n *\n * Provides execution span management for integrating LLM-Forge into\n * a hierarchical ExecutionGraph produced by an Agentics Core.\n *\n * Span hierarchy:\n * Core (external)\n * └─ Repo (this module creates)\n * └─ Agent (one or more, per handler invocation)\n *\n * Invariants:\n * - Every externally-invoked operation must receive execution_id + parent_span_id\n * - Repo span is created on entry\n * - Every agent execution produces an agent span\n * - Artifacts attach to agent spans only\n * - No agent spans = execution INVALID (FAILED)\n * - On failure, all emitted spans are still returned\n *\n * @module service/execution-context\n */\n\nimport { randomUUID, createHash } from 'crypto';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport type SpanStatus = 'RUNNING' | 'COMPLETED' | 'FAILED';\n\nexport interface ArtifactRef {\n artifact_id: string;\n label: string;\n content_hash: string;\n content_type: string;\n size_bytes: number;\n created_at: string;\n}\n\nexport interface AgentSpan {\n type: 'agent';\n agent_name: string;\n repo_name: 'llm-forge';\n span_id: string;\n parent_span_id: string;\n start_time: string;\n end_time?: string;\n status: SpanStatus;\n failure_reason?: string;\n artifacts: ArtifactRef[];\n metadata?: Record<string, unknown>;\n}\n\nexport interface RepoSpan {\n type: 'repo';\n repo_name: 'llm-forge';\n span_id: string;\n parent_span_id: string;\n execution_id: string;\n start_time: string;\n end_time?: string;\n status: SpanStatus;\n failure_reason?: string;\n agent_spans: AgentSpan[];\n}\n\nexport interface ExecutionResponse<T = unknown> {\n result: T;\n execution: RepoSpan;\n}\n\n// =============================================================================\n// EXECUTION CONTEXT\n// =============================================================================\n\nexport class ExecutionContext {\n readonly executionId: string;\n readonly repoSpan: RepoSpan;\n\n constructor(executionId: string, parentSpanId: string) {\n this.executionId = executionId;\n this.repoSpan = {\n type: 'repo',\n repo_name: 'llm-forge',\n span_id: randomUUID(),\n parent_span_id: parentSpanId,\n execution_id: executionId,\n start_time: new Date().toISOString(),\n status: 'RUNNING',\n agent_spans: [],\n };\n }\n\n startAgentSpan(agentName: string, metadata?: Record<string, unknown>): AgentSpan {\n const span: AgentSpan = {\n type: 'agent',\n agent_name: agentName,\n repo_name: 'llm-forge',\n span_id: randomUUID(),\n parent_span_id: this.repoSpan.span_id,\n start_time: new Date().toISOString(),\n status: 'RUNNING',\n artifacts: [],\n metadata,\n };\n this.repoSpan.agent_spans.push(span);\n return span;\n }\n\n completeAgentSpan(span: AgentSpan): void {\n span.end_time = new Date().toISOString();\n span.status = 'COMPLETED';\n }\n\n failAgentSpan(span: AgentSpan, reason: string): void {\n span.end_time = new Date().toISOString();\n span.status = 'FAILED';\n span.failure_reason = reason;\n }\n\n attachArtifact(span: AgentSpan, artifact: ArtifactRef): void {\n span.artifacts.push(artifact);\n }\n\n finalize(): RepoSpan {\n this.repoSpan.end_time = new Date().toISOString();\n\n if (this.repoSpan.agent_spans.length === 0) {\n this.repoSpan.status = 'FAILED';\n this.repoSpan.failure_reason = 'No agent spans produced';\n return this.repoSpan;\n }\n\n const anyFailed = this.repoSpan.agent_spans.some(s => s.status === 'FAILED');\n this.repoSpan.status = anyFailed ? 'FAILED' : 'COMPLETED';\n\n if (anyFailed) {\n this.repoSpan.failure_reason = this.repoSpan.agent_spans\n .filter(s => s.status === 'FAILED')\n .map(s => `${s.agent_name}: ${s.failure_reason}`)\n .join('; ');\n }\n\n return this.repoSpan;\n }\n\n buildResponse<T>(result: T): ExecutionResponse<T> {\n const execution = this.finalize();\n return { result, execution };\n }\n}\n\n// =============================================================================\n// HEADER EXTRACTION\n// =============================================================================\n\nexport function extractExecutionHeaders(\n headers: Record<string, string | string[] | undefined>\n): { executionId: string; parentSpanId: string } | null {\n const parentSpanId = getHeader(headers, 'x-parent-span-id');\n\n if (!parentSpanId) {\n return null;\n }\n\n const executionId = getHeader(headers, 'x-execution-id') || randomUUID();\n\n return { executionId, parentSpanId };\n}\n\nfunction getHeader(\n headers: Record<string, string | string[] | undefined>,\n name: string\n): string | undefined {\n const value = headers[name];\n return Array.isArray(value) ? value[0] : value;\n}\n\n// =============================================================================\n// ARTIFACT HELPERS\n// =============================================================================\n\nexport function createArtifactRef(\n label: string,\n content: string,\n contentType: string = 'application/json'\n): ArtifactRef {\n const buffer = Buffer.from(content, 'utf-8');\n return {\n artifact_id: randomUUID(),\n label,\n content_hash: createHash('sha256').update(buffer).digest('hex'),\n content_type: contentType,\n size_bytes: buffer.byteLength,\n created_at: new Date().toISOString(),\n };\n}\n","/**\n * Cloud Function Entry Point — forge-agents\n *\n * Single Cloud Function exposing all 4 agents:\n * POST /v1/forge/sdk → SDK Generator Agent\n * POST /v1/forge/cli → CLI Command Generator Agent\n * POST /v1/forge/api-translation → API Translation Agent\n * POST /v1/forge/version-compat → Version Compatibility Agent\n * GET /health → Health check\n *\n * Deploy:\n * gcloud functions deploy forge-agents \\\n * --runtime nodejs20 --trigger-http --region us-central1 \\\n * --project agentics-dev --entry-point handler \\\n * --memory 512MB --timeout 120s --no-allow-unauthenticated\n *\n * @module service/cloud-function\n */\n\nimport { randomUUID } from 'crypto';\nimport type { IncomingMessage, ServerResponse } from 'http';\n\n// Agent handlers — imported directly from agent modules (no server.ts side effects)\nimport {\n handler as sdkGeneratorHandler,\n AGENT_ID as SDK_AGENT_ID,\n AGENT_VERSION as SDK_AGENT_VERSION,\n} from '../agents/sdk-generator/index.js';\n\nimport { handleGenerate as cliGeneratorHandler } from '../agents/cli-command-generator/index.js';\nimport {\n CLI_AGENT_ID,\n CLI_AGENT_VERSION,\n} from '../agents/contracts/cli-command-generator.contract.js';\n\nimport { APITranslator } from '../translators/api-translator.js';\nimport {\n AGENT_ID as TRANSLATOR_AGENT_ID,\n AGENT_VERSION as TRANSLATOR_AGENT_VERSION,\n} from '../agents/contracts/api-translation.contract.js';\n\nimport { VersionCompatibilityAgent } from '../agents/version-compatibility-agent/index.js';\nimport {\n AGENT_ID as VC_AGENT_ID,\n AGENT_VERSION as VC_AGENT_VERSION,\n} from '../agents/version-compatibility-agent/index.js';\n\nimport {\n type PipelineContext,\n type PipelineArtifact,\n createPipelineArtifact,\n} from '../types/pipeline-context.js';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/** Cloud Functions extend IncomingMessage with pre-parsed body and path */\ninterface CFRequest extends IncomingMessage {\n body?: unknown;\n rawBody?: Buffer;\n path?: string;\n}\n\ninterface AgentInfo {\n id: string;\n version: string;\n layer: string;\n}\n\ninterface AgentResult {\n status: number;\n data: unknown;\n artifacts: PipelineArtifact[];\n}\n\n// =============================================================================\n// CONSTANTS\n// =============================================================================\n\nconst SERVICE = 'forge-agents';\n\nconst AGENT_MAP: Record<string, AgentInfo> = {\n sdk: { id: SDK_AGENT_ID, version: SDK_AGENT_VERSION, layer: 'FORGE_SDK' },\n cli: { id: CLI_AGENT_ID, version: CLI_AGENT_VERSION, layer: 'FORGE_CLI' },\n 'api-translation': {\n id: TRANSLATOR_AGENT_ID,\n version: TRANSLATOR_AGENT_VERSION,\n layer: 'FORGE_API_TRANSLATION',\n },\n 'version-compat': {\n id: VC_AGENT_ID,\n version: VC_AGENT_VERSION,\n layer: 'FORGE_VERSION_COMPAT',\n },\n};\n\nconst ROUTE_TO_AGENT: Record<string, string> = {\n '/v1/forge/sdk': 'sdk',\n '/v1/forge/cli': 'cli',\n '/v1/forge/api-translation': 'api-translation',\n '/v1/forge/version-compat': 'version-compat',\n};\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\nasync function readBody(req: CFRequest): Promise<string> {\n // Cloud Functions pre-parse the body; use it directly\n if (req.body !== undefined) {\n return typeof req.body === 'string' ? req.body : JSON.stringify(req.body);\n }\n // Fallback: read raw stream (standalone / test environments)\n const chunks: Buffer[] = [];\n for await (const chunk of req as unknown as AsyncIterable<Buffer>) {\n chunks.push(chunk);\n }\n return Buffer.concat(chunks).toString('utf-8');\n}\n\nfunction getPath(req: CFRequest): string {\n return req.path || req.url?.split('?')[0] || '/';\n}\n\nfunction sendJSON(res: ServerResponse, statusCode: number, data: unknown): void {\n const body = JSON.stringify(data);\n res.writeHead(statusCode, {\n 'Content-Type': 'application/json',\n 'X-Service': SERVICE,\n });\n res.end(body);\n}\n\nfunction buildExecutionMetadata(traceId: string) {\n return {\n trace_id: traceId,\n timestamp: new Date().toISOString(),\n service: SERVICE,\n execution_id: randomUUID(),\n };\n}\n\n// =============================================================================\n// AGENT ROUTE HANDLERS\n// =============================================================================\n\nasync function routeSDK(\n body: string,\n requestId: string,\n pipelineContext?: PipelineContext\n): Promise<AgentResult> {\n const startTime = Date.now();\n const context = {\n requestId,\n startTime,\n getRemainingTime: () => 120000 - (Date.now() - startTime),\n emitEvents: process.env.FEATURE_EMIT_EVENTS === 'true',\n dryRun: false,\n ruvectorEndpoint: process.env.RUVECTOR_SERVICE_URL,\n pipelineContext,\n };\n const response = await sdkGeneratorHandler(body, context);\n const data = JSON.parse(response.body) as Record<string, unknown>;\n\n // Build typed artifacts from SDK generation output\n const artifacts: PipelineArtifact[] = [];\n if (data.success && data.artifacts) {\n artifacts.push(\n createPipelineArtifact('forge_scaffold', {\n sdk_artifacts: data.artifacts,\n compatibility: data.compatibility,\n })\n );\n }\n\n return { status: response.statusCode, data, artifacts };\n}\n\nasync function routeCLI(\n body: string,\n _requestId: string,\n pipelineContext?: PipelineContext\n): Promise<AgentResult> {\n const input = JSON.parse(body);\n const result = await cliGeneratorHandler(input, {\n verbose: false,\n pipelineContext,\n });\n\n // Build typed artifacts from CLI generation output\n const artifacts: PipelineArtifact[] = [];\n if (result.success && result.result) {\n artifacts.push(\n createPipelineArtifact('cli_wrapper', {\n program: result.result.program,\n files: result.result.files,\n framework: result.result.framework,\n })\n );\n }\n\n return { status: result.success ? 200 : 400, data: result, artifacts };\n}\n\nasync function routeAPITranslation(\n body: string,\n requestId: string,\n pipelineContext?: PipelineContext\n): Promise<AgentResult> {\n const input = JSON.parse(body);\n const translator = new APITranslator({\n emitEvents: process.env.FEATURE_EMIT_EVENTS === 'true',\n });\n const result = await translator.translate({ ...input, requestId });\n\n // Build typed artifacts from translation output\n const artifacts: PipelineArtifact[] = [];\n if (result.success && result.result) {\n artifacts.push(\n createPipelineArtifact('api_translation', {\n direction: result.result.direction,\n mappings: result.result.mappings,\n restEndpoints: result.result.restEndpoints,\n sdkMethods: result.result.sdkMethods,\n cliCommands: result.result.cliCommands,\n })\n );\n }\n\n return { status: result.success ? 200 : 400, data: result, artifacts };\n}\n\nasync function routeVersionCompat(\n body: string,\n requestId: string,\n pipelineContext?: PipelineContext\n): Promise<AgentResult> {\n const input = JSON.parse(body);\n const agent = new VersionCompatibilityAgent({\n emitEvents: process.env.FEATURE_EMIT_EVENTS === 'true',\n });\n const result = await agent.analyze({ ...input, requestId });\n\n // Build typed artifacts from version compat output\n const artifacts: PipelineArtifact[] = [];\n if (result.success) {\n artifacts.push(\n createPipelineArtifact('version_report', {\n verdict: result.verdict,\n summary: result.summary,\n changes: result.changes,\n versionRecommendation: result.versionRecommendation,\n })\n );\n }\n\n return { status: result.success ? 200 : 400, data: result, artifacts };\n}\n\ntype RouteFn = (\n body: string,\n requestId: string,\n pipelineContext?: PipelineContext\n) => Promise<AgentResult>;\n\nconst ROUTE_HANDLERS: Record<string, RouteFn> = {\n sdk: routeSDK,\n cli: routeCLI,\n 'api-translation': routeAPITranslation,\n 'version-compat': routeVersionCompat,\n};\n\n// =============================================================================\n// CLOUD FUNCTION HANDLER\n// =============================================================================\n\n/**\n * Cloud Function entry point.\n *\n * Routes requests to the appropriate agent, wraps every response with\n * execution_metadata and layers_executed per the forge-agents contract.\n */\nexport async function handler(\n req: CFRequest,\n res: ServerResponse\n): Promise<void> {\n const method = req.method || 'GET';\n const path = getPath(req);\n const traceId =\n (req.headers['x-correlation-id'] as string) || randomUUID();\n const routeStart = Date.now();\n\n // CORS headers\n res.setHeader(\n 'Access-Control-Allow-Origin',\n process.env.CORS_ORIGINS || '*'\n );\n res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');\n res.setHeader(\n 'Access-Control-Allow-Headers',\n 'Content-Type, Authorization, X-Correlation-Id'\n );\n res.setHeader('Access-Control-Max-Age', '86400');\n\n // Preflight\n if (method === 'OPTIONS') {\n res.writeHead(204);\n res.end();\n return;\n }\n\n // ── Health ────────────────────────────────────────────────────────────\n if (path === '/health' && method === 'GET') {\n const metadata = buildExecutionMetadata(traceId);\n sendJSON(res, 200, {\n status: 'healthy',\n service: SERVICE,\n timestamp: metadata.timestamp,\n agents: Object.entries(AGENT_MAP).map(([name, info]) => ({\n name,\n agent_id: info.id,\n version: info.version,\n status: 'available',\n })),\n execution_metadata: metadata,\n layers_executed: [\n {\n layer: 'HEALTH_CHECK',\n status: 'completed',\n duration_ms: Date.now() - routeStart,\n },\n ],\n });\n return;\n }\n\n // ── Agent routing ─────────────────────────────────────────────────────\n const agentKey = ROUTE_TO_AGENT[path];\n\n if (!agentKey || method !== 'POST') {\n const metadata = buildExecutionMetadata(traceId);\n sendJSON(res, 404, {\n error: {\n code: 'NOT_FOUND',\n message: `Route not found: ${method} ${path}`,\n },\n execution_metadata: metadata,\n layers_executed: [\n { layer: 'AGENT_ROUTING', status: 'completed' },\n ],\n });\n return;\n }\n\n const agentInfo = AGENT_MAP[agentKey]!;\n const routeFn = ROUTE_HANDLERS[agentKey]!;\n const metadata = buildExecutionMetadata(traceId);\n const requestId = randomUUID();\n\n try {\n const body = await readBody(req);\n\n // Extract pipeline_context from request body (if present)\n let pipelineContext: PipelineContext | undefined;\n try {\n const parsed =\n typeof req.body === 'object' && req.body !== null\n ? (req.body as Record<string, unknown>)\n : JSON.parse(body);\n if (parsed.pipeline_context && typeof parsed.pipeline_context === 'object') {\n pipelineContext = parsed.pipeline_context as PipelineContext;\n }\n // Use trace_id from pipeline context if available\n if (pipelineContext?.execution_metadata?.trace_id) {\n metadata.trace_id = pipelineContext.execution_metadata.trace_id;\n }\n } catch {\n // Body parse failure is handled by the agent route handler\n }\n\n const agentStart = Date.now();\n const result = await routeFn(body, requestId, pipelineContext);\n const agentDuration = Date.now() - agentStart;\n\n // Build response: backwards-compatible spread + new envelope fields\n const response = {\n ...(typeof result.data === 'object' && result.data !== null\n ? (result.data as Record<string, unknown>)\n : { data: result.data }),\n // Pipeline envelope fields\n result: result.data,\n artifacts: result.artifacts,\n execution_metadata: {\n ...metadata,\n agent: agentInfo.id,\n domain: 'forge',\n ...(pipelineContext ? { pipeline_context: pipelineContext } : {}),\n },\n layers_executed: [\n { layer: 'AGENT_ROUTING', status: 'completed' },\n {\n layer: agentInfo.layer,\n status: 'completed',\n duration_ms: agentDuration,\n },\n ],\n };\n\n sendJSON(res, result.status, response);\n } catch (error) {\n const totalDuration = Date.now() - routeStart;\n sendJSON(res, 500, {\n error: {\n code: 'INTERNAL_ERROR',\n message:\n error instanceof Error ? error.message : 'Agent execution failed',\n },\n result: null,\n artifacts: [],\n execution_metadata: {\n ...metadata,\n agent: agentInfo.id,\n domain: 'forge',\n },\n layers_executed: [\n { layer: 'AGENT_ROUTING', status: 'completed' },\n {\n layer: agentInfo.layer,\n status: 'failed',\n duration_ms: totalDuration,\n },\n ],\n });\n }\n}\n","/**\n * SDK Generator Agent Contract\n *\n * PROMPT 1 DELIVERABLE: Full Agent Contract & Boundary Definition\n *\n * Agent Name: SDK Generator Agent\n * Classification: GENERATION\n * decision_type: \"sdk_generation\"\n *\n * @module agents/contracts/sdk-generator.contract\n */\n\nimport { z } from 'zod';\nimport type { CanonicalSchema } from '../../types/canonical-schema.js';\nimport type { TargetLanguage } from '../../core/type-mapper.js';\n\n// =============================================================================\n// 1. AGENT PURPOSE STATEMENT (Precise, Non-Marketing)\n// =============================================================================\n/**\n * The SDK Generator Agent is a GENERATION-class agent responsible for\n * transforming canonical API contracts into language-specific SDK artifacts.\n *\n * It consumes agentics-contracts API schemas (CanonicalSchema) and produces\n * deterministic, type-safe SDK code for multiple target languages.\n *\n * The agent does NOT:\n * - Execute generated code\n * - Modify runtime behavior\n * - Orchestrate workflows\n * - Enforce policies\n * - Access SQL databases directly\n */\nexport const AGENT_PURPOSE = `\nSDK Generator Agent: GENERATION-class agent for transforming canonical API\ncontracts into language-specific SDK artifacts with deterministic output.\n` as const;\n\n// =============================================================================\n// 2. INPUT SCHEMA REFERENCES (agentics-contracts)\n// =============================================================================\n\n/**\n * Supported target languages for SDK generation\n */\nexport const TargetLanguageSchema = z.enum([\n 'typescript',\n 'python',\n 'rust',\n 'go',\n 'java',\n 'csharp',\n 'javascript',\n]);\n\nexport type SupportedLanguage = z.infer<typeof TargetLanguageSchema>;\n\n/**\n * SDK generation request input schema\n */\nexport const SDKGenerationRequestSchema = z.object({\n /** Unique request identifier for tracing */\n requestId: z.string().uuid(),\n\n /** Canonical schema to generate SDK from */\n schema: z.custom<CanonicalSchema>((val) => {\n return (\n typeof val === 'object' &&\n val !== null &&\n 'metadata' in val &&\n 'types' in val &&\n 'endpoints' in val\n );\n }, 'Invalid CanonicalSchema'),\n\n /** Target language(s) for generation */\n targetLanguages: z.array(TargetLanguageSchema).min(1).max(7),\n\n /** Package configuration */\n packageConfig: z.object({\n name: z.string().min(1).max(128),\n version: z.string().regex(/^\\d+\\.\\d+\\.\\d+(-[\\w.]+)?$/),\n description: z.string().optional(),\n author: z.string().optional(),\n license: z.string().default('Apache-2.0'),\n }),\n\n /** Generation options */\n options: z\n .object({\n /** Include usage examples */\n includeExamples: z.boolean().default(true),\n /** Include test scaffolding */\n includeTests: z.boolean().default(true),\n /** Custom template directory (optional) */\n templateDir: z.string().optional(),\n /** Enable strict type checking */\n strictTypes: z.boolean().default(true),\n /** Generate async/await variants */\n asyncVariants: z.boolean().default(true),\n /** Include streaming support */\n streamingSupport: z.boolean().default(true),\n })\n .default({}),\n\n /** Tracing context for observability */\n tracingContext: z\n .object({\n traceId: z.string().optional(),\n spanId: z.string().optional(),\n parentSpanId: z.string().optional(),\n })\n .optional(),\n});\n\nexport type SDKGenerationRequest = z.infer<typeof SDKGenerationRequestSchema>;\n\n// =============================================================================\n// 3. OUTPUT SCHEMA / ARTIFACT REFERENCES\n// =============================================================================\n\n/**\n * Generated file artifact\n */\nexport const GeneratedFileArtifactSchema = z.object({\n /** Relative file path from SDK root */\n path: z.string(),\n /** File content (UTF-8) */\n content: z.string(),\n /** Content hash for verification (SHA-256) */\n contentHash: z.string(),\n /** File size in bytes */\n sizeBytes: z.number().int().positive(),\n /** Whether file is executable */\n executable: z.boolean().default(false),\n /** File generation timestamp */\n generatedAt: z.string().datetime(),\n});\n\nexport type GeneratedFileArtifact = z.infer<typeof GeneratedFileArtifactSchema>;\n\n/**\n * SDK artifact per language\n */\nexport const SDKArtifactSchema = z.object({\n /** Target language */\n language: TargetLanguageSchema,\n /** Generated files */\n files: z.array(GeneratedFileArtifactSchema),\n /** Build command for this language */\n buildCommand: z.string().optional(),\n /** Test command for this language */\n testCommand: z.string().optional(),\n /** Publish command for this language */\n publishCommand: z.string().optional(),\n /** Package registry URL */\n registryUrl: z.string().url().optional(),\n /** Generation metrics */\n metrics: z.object({\n totalFiles: z.number().int().nonnegative(),\n totalSizeBytes: z.number().int().nonnegative(),\n generationDurationMs: z.number().nonnegative(),\n typeCount: z.number().int().nonnegative(),\n endpointCount: z.number().int().nonnegative(),\n }),\n});\n\nexport type SDKArtifact = z.infer<typeof SDKArtifactSchema>;\n\n/**\n * Complete SDK generation response\n */\nexport const SDKGenerationResponseSchema = z.object({\n /** Original request ID */\n requestId: z.string().uuid(),\n /** Generation success status */\n success: z.boolean(),\n /** Generated SDK artifacts per language */\n artifacts: z.array(SDKArtifactSchema),\n /** Compatibility metadata */\n compatibility: z.object({\n /** Schema version used */\n schemaVersion: z.string(),\n /** Agent version */\n agentVersion: z.string(),\n /** Generation timestamp */\n generatedAt: z.string().datetime(),\n /** Determinism hash (same input = same hash) */\n determinismHash: z.string(),\n }),\n /** Warnings (non-fatal issues) */\n warnings: z.array(z.string()),\n /** Errors (if success=false) */\n errors: z.array(z.string()),\n});\n\nexport type SDKGenerationResponse = z.infer<typeof SDKGenerationResponseSchema>;\n\n// =============================================================================\n// 4. DECISION EVENT MAPPING\n// =============================================================================\n\n/**\n * Decision types for SDK Generator Agent\n */\nexport enum SDKGeneratorDecisionType {\n /** Primary decision: SDK generation from schema */\n SDK_GENERATION = 'sdk_generation',\n /** Language selection decision */\n LANGUAGE_SELECTION = 'language_selection',\n /** Type mapping decision */\n TYPE_MAPPING = 'type_mapping',\n /** Template selection decision */\n TEMPLATE_SELECTION = 'template_selection',\n}\n\n/**\n * Confidence semantics for SDK generation\n * - DETERMINISTIC: Same input always produces same output (hash-verifiable)\n * - HEURISTIC: Best-effort mapping with confidence score\n * - CONSTRAINT_BASED: Output satisfies defined constraints\n */\nexport enum ConfidenceSemantics {\n /** Output is deterministic and reproducible */\n DETERMINISTIC = 'deterministic',\n /** Output uses heuristic mapping */\n HEURISTIC = 'heuristic',\n /** Output satisfies defined constraints */\n CONSTRAINT_BASED = 'constraint_based',\n}\n\n/**\n * Decision event for SDK generation\n */\nexport const SDKGeneratorDecisionEventSchema = z.object({\n /** Event unique identifier */\n eventId: z.string().uuid(),\n /** Decision type */\n decisionType: z.nativeEnum(SDKGeneratorDecisionType),\n /** Agent identifier */\n agentId: z.literal('sdk-generator-agent'),\n /** Agent version */\n agentVersion: z.string(),\n /** Request ID this decision relates to */\n requestId: z.string().uuid(),\n /** Timestamp of decision */\n timestamp: z.string().datetime(),\n /** Confidence semantics */\n confidenceSemantics: z.nativeEnum(ConfidenceSemantics),\n /** Confidence score (0.0-1.0) */\n confidenceScore: z.number().min(0).max(1),\n /** Input hash for reproducibility */\n inputHash: z.string(),\n /** Output hash for verification */\n outputHash: z.string(),\n /** Decision rationale */\n rationale: z.string(),\n /** Decision metadata */\n metadata: z.record(z.unknown()).optional(),\n});\n\nexport type SDKGeneratorDecisionEvent = z.infer<typeof SDKGeneratorDecisionEventSchema>;\n\n// =============================================================================\n// 5. CLI CONTRACT\n// =============================================================================\n\n/**\n * CLI invocation shape for SDK Generator Agent\n *\n * Primary command: generate\n *\n * Usage:\n * llm-forge generate <input> [options]\n *\n * Arguments:\n * input Canonical schema (JSON) or OpenAPI spec\n *\n * Options:\n * -l, --lang <languages...> Target languages (typescript, python, rust, go, java, csharp)\n * -o, --output <dir> Output directory (default: ./generated)\n * -n, --name <name> Package name\n * --pkg-version <version> Package version (default: 0.1.0)\n * --no-examples Disable example generation\n * --no-tests Disable test generation\n * --emit-events Emit DecisionEvents to ruvector-service\n * --dry-run Validate without generating files\n * -v, --verbose Verbose output\n */\nexport const CLIContract = {\n command: 'generate',\n arguments: [\n {\n name: 'input',\n description: 'Canonical schema (JSON) or OpenAPI spec',\n required: true,\n },\n ],\n options: [\n {\n flag: '-l, --lang <languages...>',\n description: 'Target languages',\n default: ['typescript', 'python'],\n },\n {\n flag: '-o, --output <dir>',\n description: 'Output directory',\n default: './generated',\n },\n {\n flag: '-n, --name <name>',\n description: 'Package name',\n default: 'my-llm-sdk',\n },\n {\n flag: '--pkg-version <version>',\n description: 'Package version',\n default: '0.1.0',\n },\n {\n flag: '--no-examples',\n description: 'Disable example generation',\n },\n {\n flag: '--no-tests',\n description: 'Disable test generation',\n },\n {\n flag: '--emit-events',\n description: 'Emit DecisionEvents to ruvector-service',\n },\n {\n flag: '--dry-run',\n description: 'Validate without generating files',\n },\n {\n flag: '-v, --verbose',\n description: 'Verbose output',\n },\n ],\n} as const;\n\n// =============================================================================\n// 6. GENERATION / TRANSLATION / VALIDATION CLASSIFICATION\n// =============================================================================\n\n/**\n * Agent classification: GENERATION\n *\n * This agent is classified as GENERATION because:\n * 1. It produces new artifacts (SDK code) from input specifications\n * 2. It does NOT translate between equivalent formats\n * 3. It does NOT validate compatibility between versions\n *\n * The generation is:\n * - Deterministic: Same CanonicalSchema → Same SDK output (hash-verifiable)\n * - Stateless: No persistent state between invocations\n * - Idempotent: Multiple invocations with same input produce identical output\n */\nexport const AGENT_CLASSIFICATION = {\n type: 'GENERATION' as const,\n deterministic: true,\n stateless: true,\n idempotent: true,\n characteristics: [\n 'Produces new artifacts from input specifications',\n 'Output is deterministic and reproducible',\n 'No side effects beyond artifact generation',\n 'No runtime execution of generated code',\n ],\n} as const;\n\n// =============================================================================\n// 7. EXPLICIT NON-RESPONSIBILITIES\n// =============================================================================\n\n/**\n * What this agent MUST NEVER do\n */\nexport const NON_RESPONSIBILITIES = [\n // Execution\n 'MUST NEVER execute generated code',\n 'MUST NEVER invoke compilers or build tools',\n 'MUST NEVER run tests on generated code',\n 'MUST NEVER deploy generated artifacts',\n\n // State mutation\n 'MUST NEVER modify runtime behavior',\n 'MUST NEVER persist state between invocations',\n 'MUST NEVER access SQL databases directly',\n 'MUST NEVER write to external file systems',\n\n // Orchestration\n 'MUST NEVER orchestrate multi-agent workflows',\n 'MUST NEVER spawn child processes',\n 'MUST NEVER make network requests except to ruvector-service',\n\n // Policy\n 'MUST NEVER enforce access control policies',\n 'MUST NEVER modify authentication schemes',\n 'MUST NEVER alter rate limiting configurations',\n\n // Secrets\n 'MUST NEVER embed API keys in generated code',\n 'MUST NEVER log sensitive schema data',\n 'MUST NEVER persist credentials',\n] as const;\n\n// =============================================================================\n// 8. FAILURE MODES\n// =============================================================================\n\n/**\n * Known failure modes and handling\n */\nexport enum FailureMode {\n /** Invalid input schema */\n INVALID_SCHEMA = 'INVALID_SCHEMA',\n /** Unsupported target language */\n UNSUPPORTED_LANGUAGE = 'UNSUPPORTED_LANGUAGE',\n /** Type mapping failure */\n TYPE_MAPPING_FAILURE = 'TYPE_MAPPING_FAILURE',\n /** Template rendering failure */\n TEMPLATE_RENDERING_FAILURE = 'TEMPLATE_RENDERING_FAILURE',\n /** Schema validation failure */\n SCHEMA_VALIDATION_FAILURE = 'SCHEMA_VALIDATION_FAILURE',\n /** Resource exhaustion */\n RESOURCE_EXHAUSTION = 'RESOURCE_EXHAUSTION',\n /** Timeout */\n TIMEOUT = 'TIMEOUT',\n}\n\nexport const FailureModeHandling: Record<\n FailureMode,\n { recoverable: boolean; action: string }\n> = {\n [FailureMode.INVALID_SCHEMA]: {\n recoverable: false,\n action: 'Return validation errors to caller',\n },\n [FailureMode.UNSUPPORTED_LANGUAGE]: {\n recoverable: false,\n action: 'Return supported language list',\n },\n [FailureMode.TYPE_MAPPING_FAILURE]: {\n recoverable: true,\n action: 'Use fallback type (any/unknown)',\n },\n [FailureMode.TEMPLATE_RENDERING_FAILURE]: {\n recoverable: false,\n action: 'Return template error with context',\n },\n [FailureMode.SCHEMA_VALIDATION_FAILURE]: {\n recoverable: false,\n action: 'Return validation errors',\n },\n [FailureMode.RESOURCE_EXHAUSTION]: {\n recoverable: false,\n action: 'Return resource limit error',\n },\n [FailureMode.TIMEOUT]: {\n recoverable: false,\n action: 'Return timeout error with partial results if available',\n },\n};\n\n// =============================================================================\n// 9. VERSIONING RULES\n// =============================================================================\n\n/**\n * Versioning rules for generated artifacts\n */\nexport const VERSIONING_RULES = {\n /** Agent version follows semver */\n agentVersionFormat: 'semver',\n /** Generated SDK version from packageConfig */\n sdkVersionSource: 'packageConfig.version',\n /** Schema version from CanonicalSchema.metadata.version */\n schemaVersionSource: 'schema.metadata.version',\n /** Breaking changes require major version bump */\n breakingChangePolicies: [\n 'Removal of public types requires major version bump',\n 'Removal of endpoints requires major version bump',\n 'Type signature changes require major version bump',\n ],\n /** Determinism hash format */\n determinismHashFormat: 'SHA-256 of normalized input',\n} as const;\n\n// =============================================================================\n// 10. PERSISTENCE RULES (ruvector-service)\n// =============================================================================\n\n/**\n * Data that MUST be persisted to ruvector-service\n */\nexport const PERSISTED_DATA = [\n 'DecisionEvent (all decisions)',\n 'Generation metrics (duration, file counts)',\n 'Confidence scores',\n 'Input/output hashes for reproducibility',\n 'Error events with stack traces',\n 'Telemetry data (latency, resource usage)',\n] as const;\n\n/**\n * Data that MUST NOT be persisted\n */\nexport const NON_PERSISTED_DATA = [\n 'Generated code content (too large, not needed)',\n 'Full CanonicalSchema (reference by hash only)',\n 'API keys or credentials',\n 'File system paths',\n 'Internal processing state',\n] as const;\n\n// =============================================================================\n// 11. DOWNSTREAM CONSUMERS\n// =============================================================================\n\n/**\n * Systems that MAY consume this agent's output\n */\nexport const DOWNSTREAM_CONSUMERS = [\n {\n system: 'LLM-Observatory',\n consumedData: ['DecisionEvents', 'Metrics', 'Telemetry'],\n purpose: 'Observability and monitoring',\n },\n {\n system: 'CI/CD Pipeline',\n consumedData: ['Generated SDK artifacts', 'Build commands'],\n purpose: 'Automated build and publish',\n },\n {\n system: 'Package Registry',\n consumedData: ['Generated SDK packages'],\n purpose: 'Distribution',\n },\n {\n system: 'Schema Registry',\n consumedData: ['Compatibility metadata', 'Version info'],\n purpose: 'Version tracking',\n },\n] as const;\n","/**\n * SDK Generator Agent - Input Validation\n *\n * Validates incoming requests against agentics-contracts schemas.\n * Provides detailed error reporting for invalid inputs.\n *\n * @module agents/sdk-generator/validator\n */\n\nimport { z } from 'zod';\nimport type { SDKGenerationRequest } from '../contracts/sdk-generator.contract.js';\nimport { SDKGenerationRequestSchema, TargetLanguageSchema } from '../contracts/sdk-generator.contract.js';\nimport type { CanonicalSchema } from '../../types/canonical-schema.js';\n\n// =============================================================================\n// VALIDATION RESULT\n// =============================================================================\n\n/**\n * Result of request validation\n */\nexport interface ValidationResult {\n /** Whether validation passed */\n valid: boolean;\n /** Validation errors (if any) */\n errors: string[];\n /** Validation warnings (non-fatal) */\n warnings: string[];\n}\n\n// =============================================================================\n// SEMANTIC VALIDATION\n// =============================================================================\n\n/**\n * Validate the semantic correctness of a CanonicalSchema\n */\nfunction validateSchemaSemantics(schema: CanonicalSchema): { errors: string[]; warnings: string[] } {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n // Validate metadata\n if (!schema.metadata?.version) {\n errors.push('schema.metadata.version is required');\n }\n if (!schema.metadata?.providerId) {\n errors.push('schema.metadata.providerId is required');\n }\n\n // Validate types\n const typeIds = new Set<string>();\n for (const type of schema.types) {\n if (!type.id) {\n errors.push(`Type \"${type.name}\" is missing an id`);\n continue;\n }\n if (typeIds.has(type.id)) {\n errors.push(`Duplicate type id: ${type.id}`);\n }\n typeIds.add(type.id);\n }\n\n // Validate endpoints\n const operationIds = new Set<string>();\n for (const endpoint of schema.endpoints) {\n if (!endpoint.operationId) {\n errors.push(`Endpoint \"${endpoint.path}\" is missing operationId`);\n continue;\n }\n if (operationIds.has(endpoint.operationId)) {\n errors.push(`Duplicate operationId: ${endpoint.operationId}`);\n }\n operationIds.add(endpoint.operationId);\n\n // Validate type references in endpoint\n if (endpoint.requestBody?.type?.typeId) {\n if (!typeIds.has(endpoint.requestBody.type.typeId)) {\n errors.push(\n `Endpoint \"${endpoint.operationId}\" references unknown request body type: ${endpoint.requestBody.type.typeId}`\n );\n }\n }\n\n for (const response of endpoint.responses) {\n if (response.type?.typeId && !typeIds.has(response.type.typeId)) {\n warnings.push(\n `Endpoint \"${endpoint.operationId}\" response ${response.statusCode} references unknown type: ${response.type.typeId}`\n );\n }\n }\n }\n\n // Validate authentication schemes\n const authIds = new Set<string>();\n for (const auth of schema.authentication) {\n if (authIds.has(auth.id)) {\n errors.push(`Duplicate authentication scheme id: ${auth.id}`);\n }\n authIds.add(auth.id);\n }\n\n // Validate endpoint auth references\n for (const endpoint of schema.endpoints) {\n for (const authRef of endpoint.authentication) {\n if (!authIds.has(authRef)) {\n warnings.push(\n `Endpoint \"${endpoint.operationId}\" references unknown auth scheme: ${authRef}`\n );\n }\n }\n }\n\n return { errors, warnings };\n}\n\n/**\n * Validate package configuration\n */\nfunction validatePackageConfig(\n config: SDKGenerationRequest['packageConfig']\n): { errors: string[]; warnings: string[] } {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n // Validate package name format\n const namePattern = /^[a-z][a-z0-9-_]*$/i;\n if (!namePattern.test(config.name)) {\n warnings.push(\n `Package name \"${config.name}\" may not be valid for all registries. Consider using lowercase alphanumeric with hyphens.`\n );\n }\n\n // Check for reserved names\n const reservedNames = ['test', 'node_modules', 'package', 'npm', 'private'];\n if (reservedNames.includes(config.name.toLowerCase())) {\n errors.push(`Package name \"${config.name}\" is reserved and cannot be used`);\n }\n\n // Validate version format (semver)\n const semverPattern = /^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9-.]+)?(\\+[a-zA-Z0-9-.]+)?$/;\n if (!semverPattern.test(config.version)) {\n errors.push(`Package version \"${config.version}\" is not valid semver`);\n }\n\n return { errors, warnings };\n}\n\n/**\n * Validate target languages\n */\nfunction validateTargetLanguages(\n languages: string[]\n): { errors: string[]; warnings: string[] } {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n const supportedLanguages = TargetLanguageSchema.options;\n const unsupported = languages.filter(\n (lang) => !supportedLanguages.includes(lang as never)\n );\n\n if (unsupported.length > 0) {\n errors.push(`Unsupported languages: ${unsupported.join(', ')}. Supported: ${supportedLanguages.join(', ')}`);\n }\n\n // Check for duplicates\n const seen = new Set<string>();\n for (const lang of languages) {\n if (seen.has(lang)) {\n warnings.push(`Duplicate language \"${lang}\" will be generated only once`);\n }\n seen.add(lang);\n }\n\n return { errors, warnings };\n}\n\n// =============================================================================\n// MAIN VALIDATION FUNCTION\n// =============================================================================\n\n/**\n * Validate an SDK generation request\n *\n * Performs both structural (Zod) and semantic validation.\n *\n * @param request - The request to validate\n * @returns Validation result with errors and warnings\n */\nexport function validateRequest(request: SDKGenerationRequest): ValidationResult {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n // Structural validation (Zod)\n const structuralResult = SDKGenerationRequestSchema.safeParse(request);\n if (!structuralResult.success) {\n errors.push(\n ...structuralResult.error.errors.map((e) => `${e.path.join('.')}: ${e.message}`)\n );\n // Return early if structural validation fails\n return { valid: false, errors, warnings };\n }\n\n // Semantic validation of schema\n const schemaSemantics = validateSchemaSemantics(request.schema);\n errors.push(...schemaSemantics.errors);\n warnings.push(...schemaSemantics.warnings);\n\n // Package config validation\n const packageValidation = validatePackageConfig(request.packageConfig);\n errors.push(...packageValidation.errors);\n warnings.push(...packageValidation.warnings);\n\n // Target language validation\n const languageValidation = validateTargetLanguages(request.targetLanguages);\n errors.push(...languageValidation.errors);\n warnings.push(...languageValidation.warnings);\n\n // Generation options validation\n if (request.options.templateDir) {\n // Cannot use custom templates in Edge Function (no file system access)\n warnings.push('Custom template directory is not supported in Edge Function mode');\n }\n\n return {\n valid: errors.length === 0,\n errors,\n warnings,\n };\n}\n\n/**\n * Validate a raw JSON string as an SDK generation request\n *\n * @param json - Raw JSON string\n * @returns Validation result\n */\nexport function validateRawRequest(json: string): ValidationResult {\n try {\n const parsed = JSON.parse(json);\n const zodResult = SDKGenerationRequestSchema.safeParse(parsed);\n\n if (!zodResult.success) {\n return {\n valid: false,\n errors: zodResult.error.errors.map((e) => `${e.path.join('.')}: ${e.message}`),\n warnings: [],\n };\n }\n\n return validateRequest(zodResult.data);\n } catch (error) {\n return {\n valid: false,\n errors: [`Invalid JSON: ${error instanceof Error ? error.message : String(error)}`],\n warnings: [],\n };\n }\n}\n\n// =============================================================================\n// SCHEMA VALIDATORS (Exported for testing)\n// =============================================================================\n\nexport const validators = {\n validateSchemaSemantics,\n validatePackageConfig,\n validateTargetLanguages,\n};\n","/**\n * Decision Events for LLM-Forge Agents\n *\n * This module defines the DecisionEvent types that are persisted to ruvector-service\n * for observability, tracing, and reproducibility verification.\n *\n * @module agents/contracts/decision-events\n */\n\nimport { z } from 'zod';\n\n// =============================================================================\n// BASE DECISION EVENT\n// =============================================================================\n\n/**\n * Base decision event schema that all agent decisions inherit from\n */\nexport const BaseDecisionEventSchema = z.object({\n /** Unique event identifier (UUIDv4) */\n eventId: z.string().uuid(),\n\n /** Agent that made the decision */\n agentId: z.string(),\n\n /** Agent version (semver) */\n agentVersion: z.string(),\n\n /** Request ID this decision relates to */\n requestId: z.string().uuid(),\n\n /** Event timestamp (ISO 8601) */\n timestamp: z.string().datetime(),\n\n /** Event type discriminator */\n eventType: z.string(),\n\n /** Confidence score (0.0 to 1.0) */\n confidenceScore: z.number().min(0).max(1),\n\n /** Confidence semantics */\n confidenceSemantics: z.enum(['deterministic', 'heuristic', 'constraint_based']),\n\n /** Input hash for reproducibility (SHA-256) */\n inputHash: z.string(),\n\n /** Output hash for verification (SHA-256) */\n outputHash: z.string(),\n\n /** Human-readable decision rationale */\n rationale: z.string(),\n\n /** Tracing context */\n tracing: z\n .object({\n traceId: z.string().optional(),\n spanId: z.string().optional(),\n parentSpanId: z.string().optional(),\n })\n .optional(),\n\n /** Additional metadata */\n metadata: z.record(z.unknown()).optional(),\n});\n\nexport type BaseDecisionEvent = z.infer<typeof BaseDecisionEventSchema>;\n\n// =============================================================================\n// SDK GENERATION EVENTS\n// =============================================================================\n\n/**\n * SDK generation initiated event\n */\nexport const SDKGenerationInitiatedEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('sdk_generation.initiated'),\n agentId: z.literal('sdk-generator-agent'),\n payload: z.object({\n targetLanguages: z.array(z.string()),\n schemaVersion: z.string(),\n packageName: z.string(),\n packageVersion: z.string(),\n typeCount: z.number().int().nonnegative(),\n endpointCount: z.number().int().nonnegative(),\n }),\n});\n\nexport type SDKGenerationInitiatedEvent = z.infer<typeof SDKGenerationInitiatedEventSchema>;\n\n/**\n * SDK generation completed event\n */\nexport const SDKGenerationCompletedEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('sdk_generation.completed'),\n agentId: z.literal('sdk-generator-agent'),\n payload: z.object({\n success: z.boolean(),\n targetLanguages: z.array(z.string()),\n totalFiles: z.number().int().nonnegative(),\n totalSizeBytes: z.number().int().nonnegative(),\n durationMs: z.number().nonnegative(),\n warningCount: z.number().int().nonnegative(),\n errorCount: z.number().int().nonnegative(),\n determinismHash: z.string(),\n }),\n});\n\nexport type SDKGenerationCompletedEvent = z.infer<typeof SDKGenerationCompletedEventSchema>;\n\n/**\n * SDK generation failed event\n */\nexport const SDKGenerationFailedEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('sdk_generation.failed'),\n agentId: z.literal('sdk-generator-agent'),\n payload: z.object({\n failureMode: z.string(),\n errorMessage: z.string(),\n errorCode: z.string().optional(),\n recoverable: z.boolean(),\n partialResults: z.boolean(),\n }),\n});\n\nexport type SDKGenerationFailedEvent = z.infer<typeof SDKGenerationFailedEventSchema>;\n\n/**\n * Type mapping decision event\n */\nexport const TypeMappingDecisionEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('sdk_generation.type_mapping'),\n agentId: z.literal('sdk-generator-agent'),\n payload: z.object({\n sourceType: z.string(),\n targetLanguage: z.string(),\n targetType: z.string(),\n mappingStrategy: z.enum(['exact', 'approximate', 'fallback']),\n imports: z.array(z.string()),\n }),\n});\n\nexport type TypeMappingDecisionEvent = z.infer<typeof TypeMappingDecisionEventSchema>;\n\n/**\n * Language generation decision event\n */\nexport const LanguageGenerationDecisionEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('sdk_generation.language_generation'),\n agentId: z.literal('sdk-generator-agent'),\n payload: z.object({\n language: z.string(),\n filesGenerated: z.number().int().nonnegative(),\n totalSizeBytes: z.number().int().nonnegative(),\n durationMs: z.number().nonnegative(),\n templateUsed: z.string().optional(),\n }),\n});\n\nexport type LanguageGenerationDecisionEvent = z.infer<\n typeof LanguageGenerationDecisionEventSchema\n>;\n\n// =============================================================================\n// UNION OF ALL SDK GENERATOR EVENTS\n// =============================================================================\n\nexport const SDKGeneratorEventSchema = z.discriminatedUnion('eventType', [\n SDKGenerationInitiatedEventSchema,\n SDKGenerationCompletedEventSchema,\n SDKGenerationFailedEventSchema,\n TypeMappingDecisionEventSchema,\n LanguageGenerationDecisionEventSchema,\n]);\n\nexport type SDKGeneratorEvent = z.infer<typeof SDKGeneratorEventSchema>;\n\n// =============================================================================\n// TELEMETRY EVENT\n// =============================================================================\n\n/**\n * Telemetry event for performance monitoring\n */\nexport const TelemetryEventSchema = z.object({\n /** Event ID */\n eventId: z.string().uuid(),\n /** Agent ID */\n agentId: z.string(),\n /** Request ID */\n requestId: z.string().uuid(),\n /** Timestamp */\n timestamp: z.string().datetime(),\n /** Event type */\n eventType: z.literal('telemetry'),\n /** Metrics */\n metrics: z.object({\n /** Total processing duration in ms */\n totalDurationMs: z.number().nonnegative(),\n /** Validation duration in ms */\n validationDurationMs: z.number().nonnegative().optional(),\n /** Generation duration in ms */\n generationDurationMs: z.number().nonnegative().optional(),\n /** Memory usage in bytes */\n memoryUsageBytes: z.number().int().nonnegative().optional(),\n /** CPU usage percentage */\n cpuUsagePercent: z.number().min(0).max(100).optional(),\n }),\n /** Resource utilization */\n resources: z\n .object({\n peakMemoryBytes: z.number().int().nonnegative().optional(),\n templateRenderCount: z.number().int().nonnegative().optional(),\n typeMappingCount: z.number().int().nonnegative().optional(),\n })\n .optional(),\n});\n\nexport type TelemetryEvent = z.infer<typeof TelemetryEventSchema>;\n\n// =============================================================================\n// EVENT FACTORY\n// =============================================================================\n\nimport { createHash, randomUUID } from 'crypto';\n\n/**\n * Factory for creating decision events\n */\nexport class DecisionEventFactory {\n private agentId: string;\n private agentVersion: string;\n\n constructor(agentId: string, agentVersion: string) {\n this.agentId = agentId;\n this.agentVersion = agentVersion;\n }\n\n /**\n * Create a base decision event with common fields\n */\n private createBase(\n requestId: string,\n inputHash: string,\n outputHash: string,\n confidenceScore: number,\n rationale: string,\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): Omit<BaseDecisionEvent, 'eventType'> {\n return {\n eventId: randomUUID(),\n agentId: this.agentId,\n agentVersion: this.agentVersion,\n requestId,\n timestamp: new Date().toISOString(),\n confidenceScore,\n confidenceSemantics: confidenceScore === 1.0 ? 'deterministic' : 'heuristic',\n inputHash,\n outputHash,\n rationale,\n tracing: tracingContext,\n };\n }\n\n /**\n * Create SDK generation initiated event\n */\n createInitiatedEvent(\n requestId: string,\n inputHash: string,\n payload: SDKGenerationInitiatedEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): SDKGenerationInitiatedEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n '', // No output yet\n 1.0,\n `Initiated SDK generation for ${payload.targetLanguages.length} language(s)`,\n tracingContext\n ),\n eventType: 'sdk_generation.initiated',\n agentId: 'sdk-generator-agent',\n payload,\n } as SDKGenerationInitiatedEvent;\n }\n\n /**\n * Create SDK generation completed event\n */\n createCompletedEvent(\n requestId: string,\n inputHash: string,\n outputHash: string,\n payload: SDKGenerationCompletedEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): SDKGenerationCompletedEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n outputHash,\n 1.0,\n `SDK generation ${payload.success ? 'completed successfully' : 'completed with errors'}`,\n tracingContext\n ),\n eventType: 'sdk_generation.completed',\n agentId: 'sdk-generator-agent',\n payload,\n } as SDKGenerationCompletedEvent;\n }\n\n /**\n * Create SDK generation failed event\n */\n createFailedEvent(\n requestId: string,\n inputHash: string,\n payload: SDKGenerationFailedEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): SDKGenerationFailedEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n '',\n 0.0,\n `SDK generation failed: ${payload.failureMode}`,\n tracingContext\n ),\n eventType: 'sdk_generation.failed',\n agentId: 'sdk-generator-agent',\n payload,\n } as SDKGenerationFailedEvent;\n }\n\n /**\n * Create type mapping decision event\n */\n createTypeMappingEvent(\n requestId: string,\n inputHash: string,\n payload: TypeMappingDecisionEvent['payload'],\n confidenceScore: number,\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): TypeMappingDecisionEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n this.hashString(payload.targetType),\n confidenceScore,\n `Mapped ${payload.sourceType} to ${payload.targetType} using ${payload.mappingStrategy} strategy`,\n tracingContext\n ),\n eventType: 'sdk_generation.type_mapping',\n agentId: 'sdk-generator-agent',\n payload,\n } as TypeMappingDecisionEvent;\n }\n\n /**\n * Create language generation decision event\n */\n createLanguageGenerationEvent(\n requestId: string,\n inputHash: string,\n outputHash: string,\n payload: LanguageGenerationDecisionEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): LanguageGenerationDecisionEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n outputHash,\n 1.0, // Language generation is deterministic\n `Generated ${payload.filesGenerated} files for ${payload.language}`,\n tracingContext\n ),\n eventType: 'sdk_generation.language_generation',\n agentId: 'sdk-generator-agent',\n payload,\n } as LanguageGenerationDecisionEvent;\n }\n\n /**\n * Create telemetry event\n */\n createTelemetryEvent(\n requestId: string,\n metrics: TelemetryEvent['metrics'],\n resources?: TelemetryEvent['resources']\n ): TelemetryEvent {\n return {\n eventId: randomUUID(),\n agentId: this.agentId,\n requestId,\n timestamp: new Date().toISOString(),\n eventType: 'telemetry',\n metrics,\n resources,\n };\n }\n\n /**\n * Hash a string using SHA-256\n */\n private hashString(input: string): string {\n return createHash('sha256').update(input).digest('hex');\n }\n}\n\n/**\n * Factory for creating API Translation decision events\n */\nexport class TranslationEventFactory {\n private agentId: string;\n private agentVersion: string;\n\n constructor(agentVersion: string) {\n this.agentId = 'api-translation-agent';\n this.agentVersion = agentVersion;\n }\n\n /**\n * Create a base decision event with common fields\n */\n private createBase(\n requestId: string,\n inputHash: string,\n outputHash: string,\n confidenceScore: number,\n rationale: string,\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): Omit<BaseDecisionEvent, 'eventType'> {\n return {\n eventId: randomUUID(),\n agentId: this.agentId,\n agentVersion: this.agentVersion,\n requestId,\n timestamp: new Date().toISOString(),\n confidenceScore,\n confidenceSemantics: confidenceScore === 1.0 ? 'deterministic' : 'heuristic',\n inputHash,\n outputHash,\n rationale,\n tracing: tracingContext,\n };\n }\n\n /**\n * Create API translation initiated event\n */\n createInitiatedEvent(\n requestId: string,\n inputHash: string,\n payload: APITranslationInitiatedEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): APITranslationInitiatedEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n '', // No output yet\n 1.0,\n `Initiated API translation from ${payload.sourceFormat} to ${payload.targetFormat}`,\n tracingContext\n ),\n eventType: 'api_translation.initiated',\n agentId: 'api-translation-agent',\n payload,\n } as APITranslationInitiatedEvent;\n }\n\n /**\n * Create API translation completed event\n */\n createCompletedEvent(\n requestId: string,\n inputHash: string,\n outputHash: string,\n payload: APITranslationCompletedEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): APITranslationCompletedEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n outputHash,\n payload.overallConfidence,\n `API translation ${payload.success ? 'completed successfully' : 'completed with errors'}`,\n tracingContext\n ),\n eventType: 'api_translation.completed',\n agentId: 'api-translation-agent',\n payload,\n } as APITranslationCompletedEvent;\n }\n\n /**\n * Create API translation failed event\n */\n createFailedEvent(\n requestId: string,\n inputHash: string,\n payload: APITranslationFailedEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): APITranslationFailedEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n '',\n 0.0,\n `API translation failed: ${payload.failureMode}`,\n tracingContext\n ),\n eventType: 'api_translation.failed',\n agentId: 'api-translation-agent',\n payload,\n } as APITranslationFailedEvent;\n }\n\n /**\n * Create format conversion decision event\n */\n createFormatConversionEvent(\n requestId: string,\n inputHash: string,\n payload: FormatConversionDecisionEvent['payload'],\n confidenceScore: number,\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): FormatConversionDecisionEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n this.hashString(payload.targetId),\n confidenceScore,\n `Converted ${payload.sourceId} (${payload.sourceFormat}) to ${payload.targetId} (${payload.targetFormat})`,\n tracingContext\n ),\n eventType: 'api_translation.format_conversion',\n agentId: 'api-translation-agent',\n payload,\n } as FormatConversionDecisionEvent;\n }\n\n /**\n * Create compatibility detection event\n */\n createCompatibilityDetectionEvent(\n requestId: string,\n inputHash: string,\n payload: CompatibilityDetectionEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): CompatibilityDetectionEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n '',\n payload.blockedByIssues ? 0.0 : 1.0,\n `Detected ${payload.issueCount} compatibility issues (${payload.errorCount} errors, ${payload.warningCount} warnings)`,\n tracingContext\n ),\n eventType: 'api_translation.compatibility_detection',\n agentId: 'api-translation-agent',\n payload,\n } as CompatibilityDetectionEvent;\n }\n\n /**\n * Hash a string using SHA-256\n */\n private hashString(input: string): string {\n return createHash('sha256').update(input).digest('hex');\n }\n}\n\n/**\n * Calculate SHA-256 hash of an object\n */\nexport function hashObject(obj: unknown): string {\n const normalized = JSON.stringify(obj, Object.keys(obj as object).sort());\n return createHash('sha256').update(normalized).digest('hex');\n}\n\n// =============================================================================\n// API TRANSLATION EVENTS\n// =============================================================================\n\n/**\n * API translation initiated event\n */\nexport const APITranslationInitiatedEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('api_translation.initiated'),\n agentId: z.literal('api-translation-agent'),\n payload: z.object({\n sourceFormat: z.enum(['rest', 'sdk', 'cli']),\n targetFormat: z.enum(['rest', 'sdk', 'cli']),\n sourceElementCount: z.number().int().nonnegative(),\n schemaVersion: z.string().optional(),\n strict: z.boolean(),\n }),\n});\n\nexport type APITranslationInitiatedEvent = z.infer<typeof APITranslationInitiatedEventSchema>;\n\n/**\n * API translation completed event\n */\nexport const APITranslationCompletedEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('api_translation.completed'),\n agentId: z.literal('api-translation-agent'),\n payload: z.object({\n success: z.boolean(),\n sourceFormat: z.enum(['rest', 'sdk', 'cli']),\n targetFormat: z.enum(['rest', 'sdk', 'cli']),\n translatedElementCount: z.number().int().nonnegative(),\n mappingCount: z.number().int().nonnegative(),\n durationMs: z.number().nonnegative(),\n overallConfidence: z.number().min(0).max(1),\n warningCount: z.number().int().nonnegative(),\n errorCount: z.number().int().nonnegative(),\n determinismHash: z.string(),\n }),\n});\n\nexport type APITranslationCompletedEvent = z.infer<typeof APITranslationCompletedEventSchema>;\n\n/**\n * API translation failed event\n */\nexport const APITranslationFailedEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('api_translation.failed'),\n agentId: z.literal('api-translation-agent'),\n payload: z.object({\n failureMode: z.string(),\n errorMessage: z.string(),\n errorCode: z.string().optional(),\n recoverable: z.boolean(),\n partialResults: z.boolean(),\n sourceFormat: z.enum(['rest', 'sdk', 'cli']),\n targetFormat: z.enum(['rest', 'sdk', 'cli']),\n }),\n});\n\nexport type APITranslationFailedEvent = z.infer<typeof APITranslationFailedEventSchema>;\n\n/**\n * Format conversion decision event\n */\nexport const FormatConversionDecisionEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('api_translation.format_conversion'),\n agentId: z.literal('api-translation-agent'),\n payload: z.object({\n sourceId: z.string(),\n sourceFormat: z.enum(['rest', 'sdk', 'cli']),\n targetId: z.string(),\n targetFormat: z.enum(['rest', 'sdk', 'cli']),\n transformation: z.string(),\n semanticLoss: z.string().optional(),\n }),\n});\n\nexport type FormatConversionDecisionEvent = z.infer<typeof FormatConversionDecisionEventSchema>;\n\n/**\n * Compatibility detection decision event\n */\nexport const CompatibilityDetectionEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('api_translation.compatibility_detection'),\n agentId: z.literal('api-translation-agent'),\n payload: z.object({\n issueCount: z.number().int().nonnegative(),\n errorCount: z.number().int().nonnegative(),\n warningCount: z.number().int().nonnegative(),\n infoCount: z.number().int().nonnegative(),\n blockedByIssues: z.boolean(),\n }),\n});\n\nexport type CompatibilityDetectionEvent = z.infer<typeof CompatibilityDetectionEventSchema>;\n\n// =============================================================================\n// UNION OF ALL API TRANSLATION EVENTS\n// =============================================================================\n\nexport const APITranslationEventSchema = z.discriminatedUnion('eventType', [\n APITranslationInitiatedEventSchema,\n APITranslationCompletedEventSchema,\n APITranslationFailedEventSchema,\n FormatConversionDecisionEventSchema,\n CompatibilityDetectionEventSchema,\n]);\n\nexport type APITranslationEvent = z.infer<typeof APITranslationEventSchema>;\n\n// =============================================================================\n// VERSION COMPATIBILITY EVENTS\n// =============================================================================\n\n/**\n * Version compatibility analysis initiated event\n */\nexport const VersionCompatibilityInitiatedEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('version_compatibility_analysis.initiated'),\n agentId: z.literal('version-compatibility-agent'),\n payload: z.object({\n sourceVersion: z.string(),\n targetVersion: z.string(),\n sourceSchemaHash: z.string(),\n targetSchemaHash: z.string(),\n strictness: z.enum(['strict', 'standard', 'lenient']),\n categoriesToAnalyze: z.array(z.string()),\n }),\n});\n\nexport type VersionCompatibilityInitiatedEvent = z.infer<typeof VersionCompatibilityInitiatedEventSchema>;\n\n/**\n * Version compatibility analysis completed event\n */\nexport const VersionCompatibilityCompletedEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('version_compatibility_analysis.completed'),\n agentId: z.literal('version-compatibility-agent'),\n payload: z.object({\n success: z.boolean(),\n verdict: z.enum(['fully-compatible', 'backwards-compatible', 'breaking', 'incompatible']),\n totalChanges: z.number().int().nonnegative(),\n breakingChanges: z.number().int().nonnegative(),\n nonBreakingChanges: z.number().int().nonnegative(),\n recommendedBump: z.enum(['major', 'minor', 'patch', 'none']),\n durationMs: z.number().nonnegative(),\n determinismHash: z.string(),\n }),\n});\n\nexport type VersionCompatibilityCompletedEvent = z.infer<typeof VersionCompatibilityCompletedEventSchema>;\n\n/**\n * Version compatibility analysis failed event\n */\nexport const VersionCompatibilityFailedEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('version_compatibility_analysis.failed'),\n agentId: z.literal('version-compatibility-agent'),\n payload: z.object({\n failureMode: z.string(),\n errorMessage: z.string(),\n errorCode: z.string().optional(),\n recoverable: z.boolean(),\n partialAnalysis: z.boolean(),\n }),\n});\n\nexport type VersionCompatibilityFailedEvent = z.infer<typeof VersionCompatibilityFailedEventSchema>;\n\n/**\n * Breaking change detection event\n */\nexport const BreakingChangeDetectionEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('version_compatibility_analysis.breaking_change'),\n agentId: z.literal('version-compatibility-agent'),\n payload: z.object({\n changeId: z.string().uuid(),\n category: z.string(),\n path: z.string(),\n severity: z.enum(['breaking', 'non-breaking', 'patch', 'informational']),\n description: z.string(),\n migrationComplexity: z.number().int().min(1).max(5),\n affectedComponents: z.array(z.string()),\n }),\n});\n\nexport type BreakingChangeDetectionEvent = z.infer<typeof BreakingChangeDetectionEventSchema>;\n\n/**\n * Type comparison decision event\n */\nexport const TypeComparisonEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('version_compatibility_analysis.type_comparison'),\n agentId: z.literal('version-compatibility-agent'),\n payload: z.object({\n typeName: z.string(),\n sourceTypeId: z.string().optional(),\n targetTypeId: z.string().optional(),\n comparisonResult: z.enum(['identical', 'compatible', 'breaking', 'removed', 'added']),\n changesDetected: z.number().int().nonnegative(),\n }),\n});\n\nexport type TypeComparisonEvent = z.infer<typeof TypeComparisonEventSchema>;\n\n/**\n * Endpoint comparison decision event\n */\nexport const EndpointComparisonEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('version_compatibility_analysis.endpoint_comparison'),\n agentId: z.literal('version-compatibility-agent'),\n payload: z.object({\n endpointPath: z.string(),\n method: z.string(),\n sourceEndpointId: z.string().optional(),\n targetEndpointId: z.string().optional(),\n comparisonResult: z.enum(['identical', 'compatible', 'breaking', 'removed', 'added']),\n parameterChanges: z.number().int().nonnegative(),\n responseChanges: z.number().int().nonnegative(),\n }),\n});\n\nexport type EndpointComparisonEvent = z.infer<typeof EndpointComparisonEventSchema>;\n\n/**\n * Version recommendation decision event\n */\nexport const VersionRecommendationEventSchema = BaseDecisionEventSchema.extend({\n eventType: z.literal('version_compatibility_analysis.version_recommendation'),\n agentId: z.literal('version-compatibility-agent'),\n payload: z.object({\n currentVersion: z.string(),\n recommendedBump: z.enum(['major', 'minor', 'patch', 'none']),\n recommendedVersion: z.string(),\n rationale: z.string(),\n breakingChangeCount: z.number().int().nonnegative(),\n constraintsApplied: z.array(z.string()),\n }),\n});\n\nexport type VersionRecommendationEvent = z.infer<typeof VersionRecommendationEventSchema>;\n\n// =============================================================================\n// UNION OF ALL VERSION COMPATIBILITY EVENTS\n// =============================================================================\n\nexport const VersionCompatibilityEventSchema = z.discriminatedUnion('eventType', [\n VersionCompatibilityInitiatedEventSchema,\n VersionCompatibilityCompletedEventSchema,\n VersionCompatibilityFailedEventSchema,\n BreakingChangeDetectionEventSchema,\n TypeComparisonEventSchema,\n EndpointComparisonEventSchema,\n VersionRecommendationEventSchema,\n]);\n\nexport type VersionCompatibilityEvent = z.infer<typeof VersionCompatibilityEventSchema>;\n\n// =============================================================================\n// VERSION COMPATIBILITY EVENT FACTORY\n// =============================================================================\n\n/**\n * Factory for creating version compatibility decision events\n */\nexport class VersionCompatibilityEventFactory {\n private agentId = 'version-compatibility-agent';\n private agentVersion: string;\n\n constructor(agentVersion: string) {\n this.agentVersion = agentVersion;\n }\n\n /**\n * Create base event fields\n */\n private createBase(\n requestId: string,\n inputHash: string,\n outputHash: string,\n confidenceScore: number,\n rationale: string,\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): Omit<BaseDecisionEvent, 'eventType'> {\n return {\n eventId: randomUUID(),\n agentId: this.agentId,\n agentVersion: this.agentVersion,\n requestId,\n timestamp: new Date().toISOString(),\n confidenceScore,\n confidenceSemantics: confidenceScore === 1.0 ? 'deterministic' : 'constraint_based',\n inputHash,\n outputHash,\n rationale,\n tracing: tracingContext,\n };\n }\n\n /**\n * Create analysis initiated event\n */\n createInitiatedEvent(\n requestId: string,\n inputHash: string,\n payload: VersionCompatibilityInitiatedEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): VersionCompatibilityInitiatedEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n '',\n 1.0,\n `Initiated version compatibility analysis: ${payload.sourceVersion} → ${payload.targetVersion}`,\n tracingContext\n ),\n eventType: 'version_compatibility_analysis.initiated',\n agentId: 'version-compatibility-agent',\n payload,\n } as VersionCompatibilityInitiatedEvent;\n }\n\n /**\n * Create analysis completed event\n */\n createCompletedEvent(\n requestId: string,\n inputHash: string,\n outputHash: string,\n payload: VersionCompatibilityCompletedEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): VersionCompatibilityCompletedEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n outputHash,\n 1.0,\n `Compatibility analysis completed: ${payload.verdict} (${payload.breakingChanges} breaking changes)`,\n tracingContext\n ),\n eventType: 'version_compatibility_analysis.completed',\n agentId: 'version-compatibility-agent',\n payload,\n } as VersionCompatibilityCompletedEvent;\n }\n\n /**\n * Create analysis failed event\n */\n createFailedEvent(\n requestId: string,\n inputHash: string,\n payload: VersionCompatibilityFailedEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): VersionCompatibilityFailedEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n '',\n 0.0,\n `Compatibility analysis failed: ${payload.failureMode}`,\n tracingContext\n ),\n eventType: 'version_compatibility_analysis.failed',\n agentId: 'version-compatibility-agent',\n payload,\n } as VersionCompatibilityFailedEvent;\n }\n\n /**\n * Create breaking change detection event\n */\n createBreakingChangeEvent(\n requestId: string,\n inputHash: string,\n payload: BreakingChangeDetectionEvent['payload'],\n confidenceScore: number,\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): BreakingChangeDetectionEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n hashObject(payload),\n confidenceScore,\n `Detected ${payload.severity} change at ${payload.path}: ${payload.description}`,\n tracingContext\n ),\n eventType: 'version_compatibility_analysis.breaking_change',\n agentId: 'version-compatibility-agent',\n payload,\n } as BreakingChangeDetectionEvent;\n }\n\n /**\n * Create type comparison event\n */\n createTypeComparisonEvent(\n requestId: string,\n inputHash: string,\n payload: TypeComparisonEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): TypeComparisonEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n hashObject(payload),\n 1.0,\n `Type ${payload.typeName} comparison: ${payload.comparisonResult}`,\n tracingContext\n ),\n eventType: 'version_compatibility_analysis.type_comparison',\n agentId: 'version-compatibility-agent',\n payload,\n } as TypeComparisonEvent;\n }\n\n /**\n * Create endpoint comparison event\n */\n createEndpointComparisonEvent(\n requestId: string,\n inputHash: string,\n payload: EndpointComparisonEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): EndpointComparisonEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n hashObject(payload),\n 1.0,\n `Endpoint ${payload.method} ${payload.endpointPath} comparison: ${payload.comparisonResult}`,\n tracingContext\n ),\n eventType: 'version_compatibility_analysis.endpoint_comparison',\n agentId: 'version-compatibility-agent',\n payload,\n } as EndpointComparisonEvent;\n }\n\n /**\n * Create version recommendation event\n */\n createVersionRecommendationEvent(\n requestId: string,\n inputHash: string,\n payload: VersionRecommendationEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): VersionRecommendationEvent {\n return {\n ...this.createBase(\n requestId,\n inputHash,\n hashObject(payload),\n 1.0,\n `Version recommendation: ${payload.recommendedBump} to ${payload.recommendedVersion}`,\n tracingContext\n ),\n eventType: 'version_compatibility_analysis.version_recommendation',\n agentId: 'version-compatibility-agent',\n payload,\n } as VersionRecommendationEvent;\n }\n}\n\n// =============================================================================\n// COMBINED EVENT UNION (ALL AGENTS)\n// =============================================================================\n\nexport const AllAgentEventsSchema = z.union([\n SDKGeneratorEventSchema,\n APITranslationEventSchema,\n VersionCompatibilityEventSchema,\n]);\n\nexport type AllAgentEvents = z.infer<typeof AllAgentEventsSchema>;\n","/**\n * SDK Generator Agent - Decision Event Emitter\n *\n * Handles async, non-blocking emission of DecisionEvents to ruvector-service.\n * All event emissions are fire-and-forget to avoid blocking the main generation flow.\n *\n * @module agents/sdk-generator/emitter\n */\n\nimport {\n DecisionEventFactory,\n type SDKGenerationInitiatedEvent,\n type SDKGenerationCompletedEvent,\n type SDKGenerationFailedEvent,\n type TypeMappingDecisionEvent,\n type LanguageGenerationDecisionEvent,\n type TelemetryEvent,\n type SDKGeneratorEvent,\n} from '../contracts/decision-events.js';\n\n// =============================================================================\n// RUVECTOR SERVICE CLIENT\n// =============================================================================\n\n/**\n * Minimal client for ruvector-service\n */\nclass RuVectorClient {\n private endpoint: string;\n private pendingEvents: SDKGeneratorEvent[] = [];\n private flushPromise: Promise<void> | null = null;\n\n constructor(endpoint: string) {\n this.endpoint = endpoint;\n }\n\n /**\n * Queue an event for emission\n * Events are batched and sent asynchronously\n */\n queueEvent(event: SDKGeneratorEvent): void {\n this.pendingEvents.push(event);\n this.scheduleFlush();\n }\n\n /**\n * Schedule a flush of pending events\n */\n private scheduleFlush(): void {\n if (this.flushPromise) return;\n\n this.flushPromise = this.flush().finally(() => {\n this.flushPromise = null;\n });\n }\n\n /**\n * Flush pending events to ruvector-service\n */\n private async flush(): Promise<void> {\n // Use setImmediate to batch events in the same tick\n await new Promise((resolve) => setImmediate(resolve));\n\n const events = this.pendingEvents;\n this.pendingEvents = [];\n\n if (events.length === 0) return;\n\n try {\n // Fire-and-forget HTTP POST\n await this.sendEvents(events);\n } catch (error) {\n // Log error but don't propagate - event emission should not fail the main flow\n console.error('[RuVectorClient] Failed to emit events:', error);\n }\n }\n\n /**\n * Send events to ruvector-service\n */\n private async sendEvents(events: SDKGeneratorEvent[]): Promise<void> {\n if (!this.endpoint) {\n // No endpoint configured - log events locally\n for (const event of events) {\n console.log('[DecisionEvent]', JSON.stringify(event));\n }\n return;\n }\n\n const response = await fetch(`${this.endpoint}/api/v1/events/batch`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Agent-Id': 'sdk-generator-agent',\n },\n body: JSON.stringify({ events }),\n signal: AbortSignal.timeout(5000), // 5s timeout\n });\n\n if (!response.ok) {\n throw new Error(`RuVector service returned ${response.status}`);\n }\n }\n\n /**\n * Queue a telemetry event\n */\n queueTelemetry(event: TelemetryEvent): void {\n // Telemetry events use the same queue\n this.queueEvent(event as unknown as SDKGeneratorEvent);\n }\n}\n\n// =============================================================================\n// DECISION EVENT EMITTER\n// =============================================================================\n\n/**\n * Decision Event Emitter for SDK Generator Agent\n *\n * Provides methods to emit various decision events asynchronously.\n * All methods are non-blocking and fire-and-forget.\n */\nexport class DecisionEventEmitter {\n private factory: DecisionEventFactory;\n private client: RuVectorClient;\n\n constructor(agentId: string, agentVersion: string, ruvectorEndpoint?: string) {\n this.factory = new DecisionEventFactory(agentId, agentVersion);\n this.client = new RuVectorClient(ruvectorEndpoint ?? '');\n }\n\n /**\n * Emit SDK generation initiated event\n */\n emitInitiatedEvent(\n requestId: string,\n inputHash: string,\n payload: SDKGenerationInitiatedEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): void {\n const event = this.factory.createInitiatedEvent(\n requestId,\n inputHash,\n payload,\n tracingContext\n );\n this.client.queueEvent(event);\n }\n\n /**\n * Emit SDK generation completed event\n */\n emitCompletedEvent(\n requestId: string,\n inputHash: string,\n outputHash: string,\n payload: SDKGenerationCompletedEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): void {\n const event = this.factory.createCompletedEvent(\n requestId,\n inputHash,\n outputHash,\n payload,\n tracingContext\n );\n this.client.queueEvent(event);\n }\n\n /**\n * Emit SDK generation failed event\n */\n emitFailedEvent(\n requestId: string,\n inputHash: string,\n payload: SDKGenerationFailedEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): void {\n const event = this.factory.createFailedEvent(\n requestId,\n inputHash,\n payload,\n tracingContext\n );\n this.client.queueEvent(event);\n }\n\n /**\n * Emit type mapping decision event\n */\n emitTypeMappingEvent(\n requestId: string,\n inputHash: string,\n payload: TypeMappingDecisionEvent['payload'],\n confidenceScore: number,\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): void {\n const event = this.factory.createTypeMappingEvent(\n requestId,\n inputHash,\n payload,\n confidenceScore,\n tracingContext\n );\n this.client.queueEvent(event);\n }\n\n /**\n * Emit language generation decision event\n */\n emitLanguageGenerationEvent(\n requestId: string,\n inputHash: string,\n outputHash: string,\n payload: LanguageGenerationDecisionEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): void {\n const event = this.factory.createLanguageGenerationEvent(\n requestId,\n inputHash,\n outputHash,\n payload,\n tracingContext\n );\n this.client.queueEvent(event);\n }\n\n /**\n * Emit telemetry event\n */\n emitTelemetryEvent(\n requestId: string,\n metrics: TelemetryEvent['metrics'],\n resources?: TelemetryEvent['resources']\n ): void {\n const event = this.factory.createTelemetryEvent(requestId, metrics, resources);\n this.client.queueTelemetry(event);\n }\n}\n\n// =============================================================================\n// MOCK EMITTER FOR TESTING\n// =============================================================================\n\n/**\n * Mock emitter that captures events for testing\n */\nexport class MockDecisionEventEmitter extends DecisionEventEmitter {\n public capturedEvents: SDKGeneratorEvent[] = [];\n public capturedTelemetry: TelemetryEvent[] = [];\n\n constructor() {\n super('sdk-generator-agent', '1.0.0-test', '');\n }\n\n override emitInitiatedEvent(\n requestId: string,\n inputHash: string,\n payload: SDKGenerationInitiatedEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): void {\n const factory = new DecisionEventFactory('sdk-generator-agent', '1.0.0-test');\n this.capturedEvents.push(\n factory.createInitiatedEvent(requestId, inputHash, payload, tracingContext)\n );\n }\n\n override emitCompletedEvent(\n requestId: string,\n inputHash: string,\n outputHash: string,\n payload: SDKGenerationCompletedEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): void {\n const factory = new DecisionEventFactory('sdk-generator-agent', '1.0.0-test');\n this.capturedEvents.push(\n factory.createCompletedEvent(requestId, inputHash, outputHash, payload, tracingContext)\n );\n }\n\n override emitFailedEvent(\n requestId: string,\n inputHash: string,\n payload: SDKGenerationFailedEvent['payload'],\n tracingContext?: { traceId?: string; spanId?: string; parentSpanId?: string }\n ): void {\n const factory = new DecisionEventFactory('sdk-generator-agent', '1.0.0-test');\n this.capturedEvents.push(\n factory.createFailedEvent(requestId, inputHash, payload, tracingContext)\n );\n }\n\n override emitTelemetryEvent(\n requestId: string,\n metrics: TelemetryEvent['metrics'],\n resources?: TelemetryEvent['resources']\n ): void {\n const factory = new DecisionEventFactory('sdk-generator-agent', '1.0.0-test');\n this.capturedTelemetry.push(factory.createTelemetryEvent(requestId, metrics, resources));\n }\n\n /**\n * Clear captured events\n */\n clear(): void {\n this.capturedEvents = [];\n this.capturedTelemetry = [];\n }\n}\n","/**\n * SDK Generator Agent - Edge Function Handler\n *\n * PROMPT 2 DELIVERABLE: Runtime & Infrastructure Implementation\n *\n * This is the main entry point for the SDK Generator Agent, designed to run\n * as a Google Cloud Edge Function within the LLM-Forge unified GCP service.\n *\n * Constraints:\n * - Stateless execution\n * - Deterministic behavior\n * - No orchestration logic\n * - No enforcement logic\n * - No runtime execution\n * - No direct SQL access\n * - Async, non-blocking writes via ruvector-service only\n *\n * @module agents/sdk-generator/handler\n */\n\nimport type { CanonicalSchema } from '../../types/canonical-schema.js';\nimport type {\n SDKGenerationRequest,\n SDKGenerationResponse,\n SDKArtifact,\n GeneratedFileArtifact,\n SupportedLanguage,\n} from '../contracts/sdk-generator.contract.js';\nimport {\n SDKGenerationRequestSchema,\n FailureMode,\n FailureModeHandling,\n} from '../contracts/sdk-generator.contract.js';\nimport { validateRequest, ValidationResult } from './validator.js';\nimport { calculateConfidence, ConfidenceResult } from './confidence.js';\nimport { DecisionEventEmitter } from './emitter.js';\nimport { hashObject } from '../contracts/decision-events.js';\nimport { validator as schemaValidator } from '../../schema/validator.js';\nimport { GeneratorOrchestrator } from '../../generators/generator-orchestrator.js';\nimport { TargetLanguage } from '../../core/type-mapper.js';\nimport { createHash, randomUUID } from 'crypto';\nimport { type PipelineContext, findPlannerOutput } from '../../types/pipeline-context.js';\n\n// =============================================================================\n// AGENT METADATA\n// =============================================================================\n\n/** Agent identifier */\nexport const AGENT_ID = 'sdk-generator-agent';\n\n/** Agent version (semver) */\nexport const AGENT_VERSION = '1.0.0';\n\n/** Maximum request size in bytes (10MB) */\nconst MAX_REQUEST_SIZE = 10 * 1024 * 1024;\n\n/** Maximum execution time in ms (5 minutes) */\nconst MAX_EXECUTION_TIME_MS = 5 * 60 * 1000;\n\n// =============================================================================\n// LANGUAGE MAPPING\n// =============================================================================\n\nconst LANGUAGE_MAP: Record<SupportedLanguage, TargetLanguage> = {\n typescript: TargetLanguage.TypeScript,\n python: TargetLanguage.Python,\n rust: TargetLanguage.Rust,\n go: TargetLanguage.Go,\n java: TargetLanguage.Java,\n csharp: TargetLanguage.CSharp,\n javascript: TargetLanguage.JavaScript,\n};\n\n// =============================================================================\n// EDGE FUNCTION HANDLER\n// =============================================================================\n\n/**\n * Edge Function request context\n */\nexport interface EdgeFunctionContext {\n /** Request ID for tracing */\n requestId: string;\n /** Execution start time */\n startTime: number;\n /** Remaining execution time in ms */\n getRemainingTime: () => number;\n /** Whether to emit decision events */\n emitEvents: boolean;\n /** Dry run mode (no file generation) */\n dryRun: boolean;\n /** RuVector service endpoint (for event emission) */\n ruvectorEndpoint?: string;\n /** Pipeline context from upstream orchestration (optional) */\n pipelineContext?: PipelineContext;\n}\n\n/**\n * Edge Function response\n */\nexport interface EdgeFunctionResponse {\n statusCode: number;\n headers: Record<string, string>;\n body: string;\n}\n\n/**\n * Main Edge Function handler for SDK Generator Agent\n *\n * This handler:\n * 1. Validates input against agentics-contracts schemas\n * 2. Validates the CanonicalSchema for semantic correctness\n * 3. Generates SDK artifacts for requested languages\n * 4. Emits DecisionEvents to ruvector-service (async, non-blocking)\n * 5. Returns deterministic output\n *\n * @param requestBody - Raw request body (JSON string)\n * @param context - Edge function execution context\n * @returns Edge function response\n */\nexport async function handler(\n requestBody: string,\n context: EdgeFunctionContext\n): Promise<EdgeFunctionResponse> {\n const emitter = new DecisionEventEmitter(\n AGENT_ID,\n AGENT_VERSION,\n context.ruvectorEndpoint\n );\n\n let inputHash = '';\n let request: SDKGenerationRequest | null = null;\n\n try {\n // Check request size\n if (Buffer.byteLength(requestBody, 'utf-8') > MAX_REQUEST_SIZE) {\n return createErrorResponse(413, FailureMode.RESOURCE_EXHAUSTION, 'Request too large');\n }\n\n // Parse and validate request\n const parseResult = parseRequest(requestBody);\n if (!parseResult.success) {\n return createErrorResponse(400, FailureMode.INVALID_SCHEMA, parseResult.error);\n }\n request = parseResult.data;\n\n // Calculate input hash for reproducibility\n inputHash = hashObject(request);\n\n // Emit initiated event (non-blocking)\n if (context.emitEvents) {\n emitter.emitInitiatedEvent(\n context.requestId,\n inputHash,\n {\n targetLanguages: request.targetLanguages,\n schemaVersion: request.schema.metadata.version,\n packageName: request.packageConfig.name,\n packageVersion: request.packageConfig.version,\n typeCount: request.schema.types.length,\n endpointCount: request.schema.endpoints.length,\n },\n request.tracingContext\n );\n }\n\n // Validate request against contract\n const validation = validateRequest(request);\n if (!validation.valid) {\n return createValidationErrorResponse(validation, context.requestId, emitter, inputHash);\n }\n\n // Validate CanonicalSchema semantics\n const schemaValidation = schemaValidator.validate(request.schema);\n if (!schemaValidation.valid) {\n if (context.emitEvents) {\n emitter.emitFailedEvent(context.requestId, inputHash, {\n failureMode: FailureMode.SCHEMA_VALIDATION_FAILURE,\n errorMessage: schemaValidation.errors.map((e) => e.message).join('; '),\n recoverable: false,\n partialResults: false,\n });\n }\n return createErrorResponse(\n 400,\n FailureMode.SCHEMA_VALIDATION_FAILURE,\n schemaValidation.errors.map((e) => `${e.path}: ${e.message}`).join('; ')\n );\n }\n\n // Check remaining time before generation\n if (context.getRemainingTime() < 30000) {\n // Need at least 30s\n return createErrorResponse(408, FailureMode.TIMEOUT, 'Insufficient execution time');\n }\n\n // If pipeline_context contains planner output, use it to drive scaffolding\n let plannerHints: Record<string, unknown> | undefined;\n if (context.pipelineContext) {\n const plannerOutput = findPlannerOutput(context.pipelineContext);\n if (plannerOutput?.plan) {\n const plan = plannerOutput.plan as Record<string, unknown>;\n plannerHints = {\n components: plan.components,\n architecture: plan.architecture,\n };\n // Override package name from plan if not explicitly set\n if (plan.architecture && typeof plan.architecture === 'string') {\n request = {\n ...request,\n generationOptions: {\n ...request.generationOptions,\n scaffoldArchitecture: plan.architecture,\n },\n } as SDKGenerationRequest;\n }\n }\n }\n\n // Generate SDKs\n const generationResult = await generateSDKs(request, context, emitter, inputHash);\n\n // Calculate output hash\n const outputHash = hashObject(generationResult.artifacts);\n\n // Calculate determinism hash\n const determinismHash = createHash('sha256')\n .update(inputHash)\n .update(outputHash)\n .digest('hex');\n\n // Build response\n const response: SDKGenerationResponse = {\n requestId: context.requestId,\n success: generationResult.success,\n artifacts: generationResult.artifacts,\n compatibility: {\n schemaVersion: request.schema.metadata.version,\n agentVersion: AGENT_VERSION,\n generatedAt: new Date().toISOString(),\n determinismHash,\n },\n warnings: generationResult.warnings,\n errors: generationResult.errors,\n ...(plannerHints ? { plannerHints } : {}),\n } as SDKGenerationResponse;\n\n // Emit completed event (non-blocking)\n if (context.emitEvents) {\n emitter.emitCompletedEvent(\n context.requestId,\n inputHash,\n outputHash,\n {\n success: response.success,\n targetLanguages: request.targetLanguages,\n totalFiles: response.artifacts.reduce((sum, a) => sum + a.files.length, 0),\n totalSizeBytes: response.artifacts.reduce((sum, a) => sum + a.metrics.totalSizeBytes, 0),\n durationMs: Date.now() - context.startTime,\n warningCount: response.warnings.length,\n errorCount: response.errors.length,\n determinismHash,\n },\n request.tracingContext\n );\n\n // Emit telemetry\n emitter.emitTelemetryEvent(context.requestId, {\n totalDurationMs: Date.now() - context.startTime,\n generationDurationMs: Date.now() - context.startTime,\n });\n }\n\n return {\n statusCode: response.success ? 200 : 207, // 207 for partial success\n headers: {\n 'Content-Type': 'application/json',\n 'X-Agent-Id': AGENT_ID,\n 'X-Agent-Version': AGENT_VERSION,\n 'X-Determinism-Hash': determinismHash,\n 'X-Request-Id': context.requestId,\n },\n body: JSON.stringify(response),\n };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n\n // Emit failed event\n if (context.emitEvents) {\n emitter.emitFailedEvent(context.requestId, inputHash, {\n failureMode: FailureMode.TEMPLATE_RENDERING_FAILURE,\n errorMessage,\n recoverable: false,\n partialResults: false,\n });\n }\n\n return createErrorResponse(500, FailureMode.TEMPLATE_RENDERING_FAILURE, errorMessage);\n }\n}\n\n// =============================================================================\n// REQUEST PARSING\n// =============================================================================\n\ninterface ParseResult {\n success: boolean;\n data?: SDKGenerationRequest;\n error?: string;\n}\n\nfunction parseRequest(body: string): ParseResult {\n try {\n const parsed = JSON.parse(body);\n const validated = SDKGenerationRequestSchema.safeParse(parsed);\n\n if (validated.success) {\n return { success: true, data: validated.data };\n }\n\n return {\n success: false,\n error: validated.error.errors.map((e) => `${e.path.join('.')}: ${e.message}`).join('; '),\n };\n } catch (error) {\n return {\n success: false,\n error: `Invalid JSON: ${error instanceof Error ? error.message : String(error)}`,\n };\n }\n}\n\n// =============================================================================\n// SDK GENERATION\n// =============================================================================\n\ninterface GenerationResult {\n success: boolean;\n artifacts: SDKArtifact[];\n warnings: string[];\n errors: string[];\n}\n\nasync function generateSDKs(\n request: SDKGenerationRequest,\n context: EdgeFunctionContext,\n emitter: DecisionEventEmitter,\n inputHash: string\n): Promise<GenerationResult> {\n const artifacts: SDKArtifact[] = [];\n const warnings: string[] = [];\n const errors: string[] = [];\n\n // Map languages\n const languages = request.targetLanguages\n .map((lang) => LANGUAGE_MAP[lang])\n .filter((lang): lang is TargetLanguage => lang !== undefined);\n\n if (languages.length === 0) {\n errors.push('No valid target languages specified');\n return { success: false, artifacts, warnings, errors };\n }\n\n // Create orchestrator (without file writing - we return artifacts directly)\n const orchestrator = new GeneratorOrchestrator(request.schema, {\n languages,\n outputDir: '/tmp/generated', // Temporary, won't actually write if dryRun\n packageName: request.packageConfig.name,\n packageVersion: request.packageConfig.version,\n parallel: true,\n writeFiles: !context.dryRun,\n });\n\n try {\n const result = await orchestrator.generate();\n\n // Convert to artifacts\n for (const [language, langResult] of result.results.entries()) {\n const startTime = Date.now();\n const files: GeneratedFileArtifact[] = langResult.files.map((file) => ({\n path: file.path,\n content: file.content,\n contentHash: createHash('sha256').update(file.content).digest('hex'),\n sizeBytes: Buffer.byteLength(file.content, 'utf-8'),\n executable: file.executable ?? false,\n generatedAt: new Date().toISOString(),\n }));\n\n const artifact: SDKArtifact = {\n language: languageToSupportedLanguage(language),\n files,\n buildCommand: langResult.buildCommand,\n testCommand: langResult.testCommand,\n publishCommand: langResult.publishCommand,\n registryUrl: langResult.registryUrl,\n metrics: {\n totalFiles: files.length,\n totalSizeBytes: files.reduce((sum, f) => sum + f.sizeBytes, 0),\n generationDurationMs: Date.now() - startTime,\n typeCount: request.schema.types.length,\n endpointCount: request.schema.endpoints.length,\n },\n };\n\n artifacts.push(artifact);\n\n // Emit language generation event\n if (context.emitEvents) {\n emitter.emitLanguageGenerationEvent(\n context.requestId,\n inputHash,\n hashObject(files),\n {\n language: artifact.language,\n filesGenerated: artifact.metrics.totalFiles,\n totalSizeBytes: artifact.metrics.totalSizeBytes,\n durationMs: artifact.metrics.generationDurationMs,\n },\n request.tracingContext\n );\n }\n\n // Add warnings from this language\n warnings.push(...langResult.warnings.map((w) => `[${language}] ${w}`));\n errors.push(...langResult.errors.map((e) => `[${language}] ${e}`));\n }\n\n return {\n success: errors.length === 0,\n artifacts,\n warnings,\n errors,\n };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n errors.push(errorMessage);\n return { success: false, artifacts, warnings, errors };\n }\n}\n\nfunction languageToSupportedLanguage(lang: TargetLanguage): SupportedLanguage {\n const reverseMap: Record<TargetLanguage, SupportedLanguage> = {\n [TargetLanguage.TypeScript]: 'typescript',\n [TargetLanguage.Python]: 'python',\n [TargetLanguage.Rust]: 'rust',\n [TargetLanguage.Go]: 'go',\n [TargetLanguage.Java]: 'java',\n [TargetLanguage.CSharp]: 'csharp',\n [TargetLanguage.JavaScript]: 'javascript',\n };\n return reverseMap[lang];\n}\n\n// =============================================================================\n// ERROR RESPONSES\n// =============================================================================\n\nfunction createErrorResponse(\n statusCode: number,\n failureMode: FailureMode,\n message: string\n): EdgeFunctionResponse {\n const handling = FailureModeHandling[failureMode];\n\n return {\n statusCode,\n headers: {\n 'Content-Type': 'application/json',\n 'X-Agent-Id': AGENT_ID,\n 'X-Agent-Version': AGENT_VERSION,\n 'X-Failure-Mode': failureMode,\n },\n body: JSON.stringify({\n success: false,\n error: {\n code: failureMode,\n message,\n recoverable: handling.recoverable,\n action: handling.action,\n },\n }),\n };\n}\n\nfunction createValidationErrorResponse(\n validation: ValidationResult,\n requestId: string,\n emitter: DecisionEventEmitter,\n inputHash: string\n): EdgeFunctionResponse {\n emitter.emitFailedEvent(requestId, inputHash, {\n failureMode: FailureMode.INVALID_SCHEMA,\n errorMessage: validation.errors.join('; '),\n recoverable: false,\n partialResults: false,\n });\n\n return {\n statusCode: 400,\n headers: {\n 'Content-Type': 'application/json',\n 'X-Agent-Id': AGENT_ID,\n 'X-Agent-Version': AGENT_VERSION,\n 'X-Failure-Mode': FailureMode.INVALID_SCHEMA,\n },\n body: JSON.stringify({\n success: false,\n error: {\n code: FailureMode.INVALID_SCHEMA,\n message: 'Request validation failed',\n details: validation.errors,\n recoverable: false,\n },\n }),\n };\n}\n\n// =============================================================================\n// EXPLICIT CONFIRMATIONS\n// =============================================================================\n\n/**\n * CONFIRMATION: This agent does NOT execute generated code\n *\n * The SDK Generator Agent only produces code artifacts as strings.\n * It never invokes compilers, interpreters, or runtime environments.\n */\nexport const CONFIRMATION_NO_EXECUTION = true;\n\n/**\n * CONFIRMATION: This agent does NOT modify runtime behavior\n *\n * The SDK Generator Agent is stateless and idempotent.\n * It has no side effects beyond returning artifacts and emitting events.\n */\nexport const CONFIRMATION_NO_RUNTIME_MODIFICATION = true;\n\n/**\n * CONFIRMATION: This agent does NOT orchestrate workflows\n *\n * The SDK Generator Agent operates as a single unit of work.\n * It does not spawn child processes or coordinate with other agents.\n */\nexport const CONFIRMATION_NO_ORCHESTRATION = true;\n","/**\n * CLI Command Generator Agent - Type Definitions\n *\n * Defines contracts for generating CLI command definitions from API contracts.\n * This agent is classified as GENERATION - it produces deterministic CLI artifacts.\n *\n * @module agents/cli-command-generator/types\n */\n\nimport { z } from 'zod';\n\n/**\n * Supported CLI frameworks for command generation\n */\nexport enum CLIFramework {\n Commander = 'commander',\n Yargs = 'yargs',\n Clipanion = 'clipanion',\n Oclif = 'oclif',\n}\n\n/**\n * CLI argument type mapping\n */\nexport enum CLIArgumentType {\n String = 'string',\n Number = 'number',\n Boolean = 'boolean',\n Array = 'array',\n Choice = 'choice',\n File = 'file',\n Directory = 'directory',\n}\n\n/**\n * CLI option definition\n */\nexport interface CLIOption {\n /** Option name (long form, e.g., 'output') */\n name: string;\n /** Short form alias (e.g., 'o') */\n alias?: string;\n /** Option description for help text */\n description: string;\n /** Argument type */\n type: CLIArgumentType;\n /** Whether this option is required */\n required: boolean;\n /** Default value */\n default?: unknown;\n /** Valid choices (for choice type) */\n choices?: string[];\n /** Whether this option can be specified multiple times */\n variadic?: boolean;\n /** Environment variable override */\n envVar?: string;\n /** Deprecated flag */\n deprecated?: boolean;\n /** Deprecation message */\n deprecationMessage?: string;\n}\n\n/**\n * CLI positional argument definition\n */\nexport interface CLIArgument {\n /** Argument name */\n name: string;\n /** Argument description */\n description: string;\n /** Argument type */\n type: CLIArgumentType;\n /** Whether this argument is required */\n required: boolean;\n /** Default value */\n default?: unknown;\n /** Whether this argument accepts multiple values */\n variadic?: boolean;\n}\n\n/**\n * CLI command definition\n */\nexport interface CLICommandDefinition {\n /** Command name (e.g., 'generate', 'parse') */\n name: string;\n /** Command aliases */\n aliases?: string[];\n /** Brief description for command listing */\n summary: string;\n /** Detailed description for help text */\n description: string;\n /** Positional arguments */\n arguments: CLIArgument[];\n /** Options/flags */\n options: CLIOption[];\n /** Subcommands */\n subcommands?: CLICommandDefinition[];\n /** Example usage strings */\n examples?: string[];\n /** Whether this command is hidden from help */\n hidden?: boolean;\n /** Deprecated flag */\n deprecated?: boolean;\n /** Handler function reference */\n handlerRef: string;\n /** Tags for grouping */\n tags?: string[];\n}\n\n/**\n * CLI program definition (root level)\n */\nexport interface CLIProgramDefinition {\n /** Program name */\n name: string;\n /** Program version */\n version: string;\n /** Program description */\n description: string;\n /** Commands */\n commands: CLICommandDefinition[];\n /** Global options (available to all commands) */\n globalOptions?: CLIOption[];\n /** Help text customizations */\n helpConfig?: {\n showHelpOnNoArgs?: boolean;\n showVersionOnNoArgs?: boolean;\n customHelpHeader?: string;\n customHelpFooter?: string;\n };\n}\n\n/**\n * Generated CLI file artifact\n */\nexport interface GeneratedCLIFile {\n /** Relative file path */\n path: string;\n /** File content */\n content: string;\n /** File type */\n type: 'command' | 'handler' | 'types' | 'index' | 'manifest' | 'readme';\n /** Whether this file is executable */\n executable?: boolean;\n}\n\n/**\n * CLI generation result\n */\nexport interface CLIGenerationResult {\n /** Whether generation was successful */\n success: boolean;\n /** Generated files */\n files: GeneratedCLIFile[];\n /** Program definition that was generated */\n program: CLIProgramDefinition;\n /** Target framework */\n framework: CLIFramework;\n /** Generation warnings */\n warnings: string[];\n /** Generation errors */\n errors: string[];\n /** Generation duration in milliseconds */\n duration: number;\n /** Confidence score (0-1) */\n confidence: number;\n}\n\n// ============================================================================\n// Input Schema (agentics-contracts alignment)\n// ============================================================================\n\n/**\n * Zod schema for API endpoint input (from canonical schema)\n */\nexport const APIEndpointInputSchema = z.object({\n operationId: z.string(),\n path: z.string(),\n method: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']),\n summary: z.string().optional(),\n description: z.string().optional(),\n parameters: z.array(z.object({\n name: z.string(),\n in: z.enum(['path', 'query', 'header', 'cookie']),\n type: z.object({\n typeId: z.string(),\n nullable: z.boolean().optional(),\n }),\n required: z.boolean(),\n description: z.string().optional(),\n default: z.unknown().optional(),\n deprecated: z.boolean().optional(),\n })).optional(),\n requestBody: z.object({\n type: z.object({\n typeId: z.string(),\n nullable: z.boolean().optional(),\n }),\n required: z.boolean(),\n contentType: z.string(),\n description: z.string().optional(),\n }).optional(),\n tags: z.array(z.string()).optional(),\n deprecated: z.boolean().optional(),\n});\n\n/**\n * Zod schema for type definition input\n */\nexport const TypeDefinitionInputSchema = z.object({\n id: z.string(),\n name: z.string(),\n kind: z.enum(['primitive', 'object', 'array', 'union', 'enum', 'reference']),\n description: z.string().optional(),\n properties: z.array(z.object({\n name: z.string(),\n type: z.object({\n typeId: z.string(),\n nullable: z.boolean().optional(),\n }),\n required: z.boolean(),\n description: z.string().optional(),\n default: z.unknown().optional(),\n })).optional(),\n values: z.array(z.object({\n value: z.union([z.string(), z.number()]),\n name: z.string(),\n description: z.string().optional(),\n })).optional(),\n});\n\n/**\n * Zod schema for CLI generation input\n */\nexport const CLIGeneratorInputSchema = z.object({\n /** Source contract/schema identifier */\n contractId: z.string(),\n /** Contract version */\n contractVersion: z.string(),\n /** API endpoints to generate commands for */\n endpoints: z.array(APIEndpointInputSchema),\n /** Type definitions for argument types */\n types: z.array(TypeDefinitionInputSchema),\n /** Target CLI framework */\n framework: z.nativeEnum(CLIFramework).default(CLIFramework.Commander),\n /** Package/program name */\n packageName: z.string(),\n /** Package version */\n packageVersion: z.string().default('0.1.0'),\n /** Provider ID (e.g., 'openai', 'anthropic') */\n providerId: z.string(),\n /** Provider display name */\n providerName: z.string(),\n /** Generation options */\n options: z.object({\n /** Include handler implementation stubs */\n generateHandlers: z.boolean().default(true),\n /** Include type definitions */\n generateTypes: z.boolean().default(true),\n /** Include examples in help text */\n includeExamples: z.boolean().default(true),\n /** Command name prefix */\n commandPrefix: z.string().optional(),\n /** Global options to add to all commands */\n globalOptions: z.array(z.object({\n name: z.string(),\n alias: z.string().optional(),\n description: z.string(),\n type: z.nativeEnum(CLIArgumentType),\n default: z.unknown().optional(),\n })).optional(),\n }).default({}),\n});\n\nexport type CLIGeneratorInput = z.infer<typeof CLIGeneratorInputSchema>;\n\n// ============================================================================\n// Decision Event Schema (ruvector-service persistence)\n// ============================================================================\n\n/**\n * Decision event for ruvector-service persistence\n */\nexport interface CLICommandGeneratorDecisionEvent {\n /** Agent identifier */\n agent_id: 'cli-command-generator';\n /** Agent version */\n agent_version: string;\n /** Decision type */\n decision_type: 'cli_generation';\n /** Hash of input data for deduplication */\n inputs_hash: string;\n /** Generation outputs */\n outputs: {\n /** Number of commands generated */\n commandCount: number;\n /** Number of files generated */\n fileCount: number;\n /** Total lines of code generated */\n linesOfCode: number;\n /** Generated command names */\n commandNames: string[];\n /** Framework used */\n framework: CLIFramework;\n /** Package name */\n packageName: string;\n };\n /** Confidence score (0-1) - deterministic generation = 1.0 */\n confidence: number;\n /** Constraints applied during generation */\n constraints_applied: {\n /** Schema constraints from contract */\n schema_constraints: string[];\n /** Language constraints (TypeScript target) */\n language_constraints: string[];\n /** Version constraints */\n version_constraints: string[];\n /** Framework-specific constraints */\n framework_constraints: string[];\n };\n /** Execution reference for tracing */\n execution_ref: string;\n /** Timestamp (UTC ISO 8601) */\n timestamp: string;\n}\n\n/**\n * Zod schema for decision event validation\n */\nexport const CLICommandGeneratorDecisionEventSchema = z.object({\n agent_id: z.literal('cli-command-generator'),\n agent_version: z.string(),\n decision_type: z.literal('cli_generation'),\n inputs_hash: z.string(),\n outputs: z.object({\n commandCount: z.number(),\n fileCount: z.number(),\n linesOfCode: z.number(),\n commandNames: z.array(z.string()),\n framework: z.nativeEnum(CLIFramework),\n packageName: z.string(),\n }),\n confidence: z.number().min(0).max(1),\n constraints_applied: z.object({\n schema_constraints: z.array(z.string()),\n language_constraints: z.array(z.string()),\n version_constraints: z.array(z.string()),\n framework_constraints: z.array(z.string()),\n }),\n execution_ref: z.string(),\n timestamp: z.string(),\n});\n\n// ============================================================================\n// Agent Contract Exports\n// ============================================================================\n\n/**\n * Agent contract definition\n */\nexport const CLI_COMMAND_GENERATOR_CONTRACT = {\n /** Agent identifier */\n agentId: 'cli-command-generator',\n /** Agent version (semver) */\n version: '1.0.0',\n /** Agent classification */\n classification: 'GENERATION' as const,\n /** Decision type */\n decisionType: 'cli_generation' as const,\n /** Input schema reference */\n inputSchema: 'CLIGeneratorInputSchema',\n /** Output artifact format */\n outputFormat: 'CLIGenerationResult',\n /** Supported frameworks */\n supportedFrameworks: Object.values(CLIFramework),\n /** CLI invocation shape */\n cliCommand: {\n name: 'generate',\n subcommand: 'cli',\n arguments: ['<contract-file>'],\n options: [\n '--framework <framework>',\n '--output <dir>',\n '--name <package-name>',\n '--version <version>',\n '--provider <provider-id>',\n '--no-handlers',\n '--no-types',\n ],\n },\n /** Explicit non-responsibilities */\n nonResponsibilities: [\n 'MUST NOT execute generated CLI code',\n 'MUST NOT modify runtime behavior',\n 'MUST NOT orchestrate workflows',\n 'MUST NOT enforce policies',\n 'MUST NOT connect to databases directly',\n 'MUST NOT invoke other agents directly',\n ],\n /** Failure modes */\n failureModes: [\n 'INVALID_INPUT: Input schema validation failed',\n 'UNSUPPORTED_FRAMEWORK: Target framework not supported',\n 'GENERATION_ERROR: Internal generation error',\n 'CONTRACT_MISMATCH: Contract version incompatible',\n ],\n} as const;\n","/**\n * CLI Command Generator Agent - Core Generation Logic\n *\n * Transforms API endpoint definitions into CLI command definitions and artifacts.\n * This is a GENERATION agent - outputs are deterministic and reproducible.\n *\n * @module agents/cli-command-generator/generator\n */\n\nimport type { z } from 'zod';\nimport {\n CLIFramework,\n CLIArgumentType,\n CLIOption,\n CLIArgument,\n CLICommandDefinition,\n CLIProgramDefinition,\n GeneratedCLIFile,\n CLIGenerationResult,\n CLIGeneratorInput,\n APIEndpointInputSchema,\n} from './types.js';\n\ntype APIEndpointInput = z.infer<typeof APIEndpointInputSchema>;\n\n/**\n * Maps API parameter types to CLI argument types\n */\nfunction mapParameterType(typeId: string): CLIArgumentType {\n const typeMap: Record<string, CLIArgumentType> = {\n string: CLIArgumentType.String,\n integer: CLIArgumentType.Number,\n number: CLIArgumentType.Number,\n float: CLIArgumentType.Number,\n boolean: CLIArgumentType.Boolean,\n array: CLIArgumentType.Array,\n file: CLIArgumentType.File,\n object: CLIArgumentType.String, // JSON string\n };\n\n // Extract base type from typeId (e.g., \"string_email\" -> \"string\")\n const baseType = typeId.split('_')[0] ?? typeId;\n return typeMap[baseType] ?? CLIArgumentType.String;\n}\n\n/**\n * Convert operation ID to CLI command name\n * e.g., \"createChatCompletion\" -> \"create-chat-completion\"\n */\nfunction operationIdToCommandName(operationId: string): string {\n return operationId\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/([A-Z])([A-Z][a-z])/g, '$1-$2')\n .toLowerCase();\n}\n\n/**\n * Convert parameter name to CLI option name\n * e.g., \"maxTokens\" -> \"max-tokens\"\n */\nfunction parameterToOptionName(name: string): string {\n return name\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .toLowerCase();\n}\n\n/**\n * Generate alias from option name (first letter)\n */\nfunction generateAlias(name: string, usedAliases: Set<string>): string | undefined {\n const firstLetter = name[0]?.toLowerCase();\n if (firstLetter && !usedAliases.has(firstLetter)) {\n usedAliases.add(firstLetter);\n return firstLetter;\n }\n return undefined;\n}\n\n/**\n * Convert endpoint to CLI command definition\n */\nfunction endpointToCommand(\n endpoint: APIEndpointInput,\n typeMap: Map<string, { name: string; kind: string; values?: Array<{ value: string | number; name: string }> }>\n): CLICommandDefinition {\n const commandName = operationIdToCommandName(endpoint.operationId);\n const usedAliases = new Set<string>();\n\n // Convert parameters to options\n const options: CLIOption[] = [];\n const args: CLIArgument[] = [];\n\n // Process path parameters as positional arguments\n const pathParams = endpoint.parameters?.filter((p) => p.in === 'path') ?? [];\n for (const param of pathParams) {\n args.push({\n name: param.name,\n description: param.description ?? `The ${param.name} parameter`,\n type: mapParameterType(param.type.typeId),\n required: param.required,\n default: param.default,\n });\n }\n\n // Process query/header parameters as options\n const optionParams = endpoint.parameters?.filter((p) => p.in === 'query' || p.in === 'header') ?? [];\n for (const param of optionParams) {\n const optionName = parameterToOptionName(param.name);\n const alias = generateAlias(optionName, usedAliases);\n const paramType = typeMap.get(param.type.typeId);\n\n let cliType = mapParameterType(param.type.typeId);\n let choices: string[] | undefined;\n\n // Handle enum types\n if (paramType?.kind === 'enum' && paramType.values) {\n cliType = CLIArgumentType.Choice;\n choices = paramType.values.map((v) => String(v.value));\n }\n\n options.push({\n name: optionName,\n alias,\n description: param.description ?? `The ${param.name} parameter`,\n type: cliType,\n required: param.required,\n default: param.default,\n choices,\n deprecated: param.deprecated,\n });\n }\n\n // Process request body as a special option\n if (endpoint.requestBody) {\n const bodyType = typeMap.get(endpoint.requestBody.type.typeId);\n if (bodyType) {\n // For complex types, accept JSON or file input\n options.push({\n name: 'data',\n alias: generateAlias('data', usedAliases),\n description: endpoint.requestBody.description ?? 'Request body data (JSON string)',\n type: CLIArgumentType.String,\n required: endpoint.requestBody.required,\n });\n\n options.push({\n name: 'data-file',\n alias: generateAlias('file', usedAliases),\n description: 'Path to JSON file containing request body',\n type: CLIArgumentType.File,\n required: false,\n });\n }\n }\n\n // Add standard output options\n options.push({\n name: 'output',\n alias: generateAlias('output', usedAliases),\n description: 'Output format (json, yaml, table)',\n type: CLIArgumentType.Choice,\n required: false,\n default: 'json',\n choices: ['json', 'yaml', 'table'],\n });\n\n options.push({\n name: 'output-file',\n description: 'Write output to file instead of stdout',\n type: CLIArgumentType.File,\n required: false,\n });\n\n // Generate examples\n const examples = generateExamples(commandName, args, options, endpoint);\n\n return {\n name: commandName,\n summary: endpoint.summary ?? `Execute ${endpoint.operationId}`,\n description: endpoint.description ?? `Executes the ${endpoint.operationId} API operation (${endpoint.method} ${endpoint.path})`,\n arguments: args,\n options,\n examples,\n deprecated: endpoint.deprecated,\n handlerRef: `handlers/${commandName}.js`,\n tags: endpoint.tags,\n };\n}\n\n/**\n * Generate usage examples for a command\n */\nfunction generateExamples(\n commandName: string,\n args: CLIArgument[],\n options: CLIOption[],\n endpoint: APIEndpointInput\n): string[] {\n const examples: string[] = [];\n const baseCommand = `llm-forge ${commandName}`;\n\n // Basic example with required args\n const requiredArgs = args.filter((a) => a.required).map((a) => `<${a.name}>`);\n const requiredOpts = options\n .filter((o) => o.required && o.name !== 'output')\n .map((o) => `--${o.name} <value>`);\n\n if (requiredArgs.length > 0 || requiredOpts.length > 0) {\n examples.push(`${baseCommand} ${[...requiredArgs, ...requiredOpts].join(' ')}`);\n } else {\n examples.push(baseCommand);\n }\n\n // Example with JSON output\n if (endpoint.requestBody) {\n examples.push(`${baseCommand} --data '{\"key\": \"value\"}' --output json`);\n examples.push(`${baseCommand} --data-file ./request.json`);\n }\n\n return examples;\n}\n\n/**\n * Generate program-level global options\n */\nfunction generateGlobalOptions(input: CLIGeneratorInput): CLIOption[] {\n const globalOptions: CLIOption[] = [\n {\n name: 'api-key',\n alias: 'k',\n description: `${input.providerName} API key (or set ${input.providerId.toUpperCase()}_API_KEY env var)`,\n type: CLIArgumentType.String,\n required: false,\n envVar: `${input.providerId.toUpperCase()}_API_KEY`,\n },\n {\n name: 'base-url',\n description: 'Override API base URL',\n type: CLIArgumentType.String,\n required: false,\n },\n {\n name: 'timeout',\n alias: 't',\n description: 'Request timeout in milliseconds',\n type: CLIArgumentType.Number,\n required: false,\n default: 30000,\n },\n {\n name: 'verbose',\n alias: 'v',\n description: 'Enable verbose output',\n type: CLIArgumentType.Boolean,\n required: false,\n default: false,\n },\n {\n name: 'quiet',\n alias: 'q',\n description: 'Suppress non-error output',\n type: CLIArgumentType.Boolean,\n required: false,\n default: false,\n },\n {\n name: 'no-color',\n description: 'Disable colored output',\n type: CLIArgumentType.Boolean,\n required: false,\n default: false,\n },\n ];\n\n // Add custom global options from input\n if (input.options.globalOptions) {\n for (const opt of input.options.globalOptions) {\n globalOptions.push({\n name: opt.name,\n alias: opt.alias,\n description: opt.description,\n type: opt.type,\n required: false,\n default: opt.default,\n });\n }\n }\n\n return globalOptions;\n}\n\n/**\n * Generate the complete CLI program definition\n */\nfunction generateProgramDefinition(input: CLIGeneratorInput): CLIProgramDefinition {\n // Build type map for reference\n const typeMap = new Map<string, { name: string; kind: string; values?: Array<{ value: string | number; name: string }> }>();\n for (const type of input.types) {\n typeMap.set(type.id, {\n name: type.name,\n kind: type.kind,\n values: type.values,\n });\n }\n\n // Convert endpoints to commands\n const commands: CLICommandDefinition[] = [];\n for (const endpoint of input.endpoints) {\n const command = endpointToCommand(endpoint, typeMap);\n if (input.options.commandPrefix) {\n command.name = `${input.options.commandPrefix}-${command.name}`;\n }\n commands.push(command);\n }\n\n // Group commands by tags if available\n const taggedCommands = new Map<string, CLICommandDefinition[]>();\n const untaggedCommands: CLICommandDefinition[] = [];\n\n for (const command of commands) {\n if (command.tags && command.tags.length > 0) {\n const primaryTag = command.tags[0]!;\n if (!taggedCommands.has(primaryTag)) {\n taggedCommands.set(primaryTag, []);\n }\n taggedCommands.get(primaryTag)!.push(command);\n } else {\n untaggedCommands.push(command);\n }\n }\n\n // Create subcommand groups if there are tags\n const finalCommands: CLICommandDefinition[] = [];\n for (const [tag, tagCommands] of taggedCommands) {\n if (tagCommands.length > 1) {\n // Create a group command\n finalCommands.push({\n name: tag.toLowerCase(),\n summary: `${tag} operations`,\n description: `Commands for ${tag} operations`,\n arguments: [],\n options: [],\n subcommands: tagCommands,\n handlerRef: `handlers/${tag.toLowerCase()}/index.js`,\n });\n } else {\n // Single command, add directly\n finalCommands.push(...tagCommands);\n }\n }\n finalCommands.push(...untaggedCommands);\n\n return {\n name: input.packageName,\n version: input.packageVersion,\n description: `CLI for ${input.providerName} API`,\n commands: finalCommands,\n globalOptions: generateGlobalOptions(input),\n helpConfig: {\n showHelpOnNoArgs: true,\n showVersionOnNoArgs: false,\n customHelpFooter: `\\nDocumentation: https://github.com/LLM-Dev-Ops/${input.packageName}\\nReport issues: https://github.com/LLM-Dev-Ops/${input.packageName}/issues`,\n },\n };\n}\n\n/**\n * Generate TypeScript files for Commander.js framework\n */\nfunction generateCommanderFiles(\n program: CLIProgramDefinition,\n input: CLIGeneratorInput\n): GeneratedCLIFile[] {\n const files: GeneratedCLIFile[] = [];\n\n // Generate types file\n if (input.options.generateTypes !== false) {\n files.push(generateTypesFile(program, input));\n }\n\n // Generate main index file\n files.push(generateIndexFile(program, input));\n\n // Generate command files\n for (const command of program.commands) {\n files.push(generateCommandFile(command, program, input));\n\n // Generate subcommand files\n if (command.subcommands) {\n for (const subcommand of command.subcommands) {\n files.push(generateCommandFile(subcommand, program, input, command.name));\n }\n }\n }\n\n // Generate handler stubs\n if (input.options.generateHandlers !== false) {\n for (const command of program.commands) {\n files.push(generateHandlerFile(command, input));\n\n if (command.subcommands) {\n for (const subcommand of command.subcommands) {\n files.push(generateHandlerFile(subcommand, input, command.name));\n }\n }\n }\n }\n\n // Generate package.json\n files.push(generatePackageJson(program, input));\n\n // Generate README\n files.push(generateReadme(program, input));\n\n return files;\n}\n\n/**\n * Generate types file\n */\nfunction generateTypesFile(program: CLIProgramDefinition, input: CLIGeneratorInput): GeneratedCLIFile {\n const content = `/**\n * CLI Types for ${program.name}\n * Generated by CLI Command Generator Agent v${input.contractVersion}\n *\n * DO NOT EDIT - This file is auto-generated\n */\n\n/**\n * Global CLI options available to all commands\n */\nexport interface GlobalOptions {\n apiKey?: string;\n baseUrl?: string;\n timeout?: number;\n verbose?: boolean;\n quiet?: boolean;\n noColor?: boolean;\n}\n\n/**\n * Output format options\n */\nexport type OutputFormat = 'json' | 'yaml' | 'table';\n\n/**\n * Command execution context\n */\nexport interface CommandContext {\n globalOptions: GlobalOptions;\n outputFormat: OutputFormat;\n outputFile?: string;\n}\n\n${program.commands.map((cmd) => generateCommandTypes(cmd)).join('\\n\\n')}\n`;\n\n return {\n path: 'src/types.ts',\n content,\n type: 'types',\n };\n}\n\n/**\n * Generate TypeScript types for a command's options\n */\nfunction generateCommandTypes(command: CLICommandDefinition): string {\n const typeName = toPascalCase(command.name) + 'Options';\n const props = command.options\n .filter((opt) => !['output', 'output-file'].includes(opt.name))\n .map((opt) => {\n const propName = toCamelCase(opt.name);\n const tsType = cliTypeToTsType(opt.type, opt.choices);\n const optional = opt.required ? '' : '?';\n return ` ${propName}${optional}: ${tsType};`;\n });\n\n let result = `export interface ${typeName} {\\n${props.join('\\n')}\\n}`;\n\n if (command.subcommands) {\n for (const sub of command.subcommands) {\n result += '\\n\\n' + generateCommandTypes(sub);\n }\n }\n\n return result;\n}\n\n/**\n * Map CLI argument type to TypeScript type\n */\nfunction cliTypeToTsType(type: CLIArgumentType, choices?: string[]): string {\n if (choices && choices.length > 0) {\n return choices.map((c) => `'${c}'`).join(' | ');\n }\n\n switch (type) {\n case CLIArgumentType.String:\n case CLIArgumentType.File:\n case CLIArgumentType.Directory:\n return 'string';\n case CLIArgumentType.Number:\n return 'number';\n case CLIArgumentType.Boolean:\n return 'boolean';\n case CLIArgumentType.Array:\n return 'string[]';\n case CLIArgumentType.Choice:\n return 'string';\n default:\n return 'unknown';\n }\n}\n\n/**\n * Generate main index file\n */\nfunction generateIndexFile(program: CLIProgramDefinition, input: CLIGeneratorInput): GeneratedCLIFile {\n const imports = program.commands\n .map((cmd) => `import { register${toPascalCase(cmd.name)}Command } from './commands/${cmd.name}.js';`)\n .join('\\n');\n\n const registrations = program.commands\n .map((cmd) => ` register${toPascalCase(cmd.name)}Command(program);`)\n .join('\\n');\n\n const globalOptionsCode = (program.globalOptions ?? [])\n .map((opt) => {\n const flags = opt.alias ? `-${opt.alias}, --${opt.name}` : `--${opt.name}`;\n const typeArg = opt.type === CLIArgumentType.Boolean ? '' : ` <${opt.name}>`;\n const defaultVal = opt.default !== undefined ? `, ${JSON.stringify(opt.default)}` : '';\n return ` .option('${flags}${typeArg}', '${opt.description}'${defaultVal})`;\n })\n .join('\\n');\n\n const content = `#!/usr/bin/env node\n/**\n * ${program.name} CLI\n * ${program.description}\n *\n * Generated by CLI Command Generator Agent v${input.contractVersion}\n * Contract: ${input.contractId}@${input.contractVersion}\n *\n * DO NOT EDIT - This file is auto-generated\n */\n\nimport { Command } from 'commander';\n\n${imports}\n\nconst program = new Command();\n\nprogram\n .name('${program.name}')\n .description('${program.description}')\n .version('${program.version}')\n${globalOptionsCode};\n\n// Register commands\n${registrations}\n\n// Help configuration\n${program.helpConfig?.showHelpOnNoArgs ? \"program.showHelpAfterError();\" : ''}\n\n// Parse arguments\nprogram.parse();\n`;\n\n return {\n path: 'src/index.ts',\n content,\n type: 'index',\n executable: true,\n };\n}\n\n/**\n * Generate a command file\n */\nfunction generateCommandFile(\n command: CLICommandDefinition,\n program: CLIProgramDefinition,\n input: CLIGeneratorInput,\n parentName?: string\n): GeneratedCLIFile {\n const funcName = `register${toPascalCase(command.name)}Command`;\n const handlerImport = parentName\n ? `import { handle${toPascalCase(command.name)} } from '../handlers/${parentName}/${command.name}.js';`\n : `import { handle${toPascalCase(command.name)} } from '../handlers/${command.name}.js';`;\n\n const argsCode = command.arguments\n .map((arg) => {\n const bracket = arg.required ? '<' : '[';\n const closeBracket = arg.required ? '>' : ']';\n const variadic = arg.variadic ? '...' : '';\n return ` .argument('${bracket}${arg.name}${variadic}${closeBracket}', '${arg.description}')`;\n })\n .join('\\n');\n\n const optionsCode = command.options\n .map((opt) => {\n const flags = opt.alias ? `-${opt.alias}, --${opt.name}` : `--${opt.name}`;\n let typeArg = '';\n if (opt.type !== CLIArgumentType.Boolean) {\n if (opt.choices) {\n typeArg = ` <${opt.name}>`;\n } else if (opt.variadic) {\n typeArg = ` <${opt.name}...>`;\n } else {\n typeArg = ` <${opt.name}>`;\n }\n }\n const defaultVal = opt.default !== undefined ? `, ${JSON.stringify(opt.default)}` : '';\n let line = ` .option('${flags}${typeArg}', '${opt.description}'${defaultVal})`;\n if (opt.choices) {\n line = ` .addOption(new Option('${flags}${typeArg}', '${opt.description}').choices(${JSON.stringify(opt.choices)})${opt.default ? `.default(${JSON.stringify(opt.default)})` : ''})`;\n }\n return line;\n })\n .join('\\n');\n\n const hasChoices = command.options.some((opt) => opt.choices);\n const optionImport = hasChoices ? ', Option' : '';\n\n const subcommandsCode = command.subcommands\n ? command.subcommands\n .map((sub) => ` register${toPascalCase(sub.name)}Subcommand(cmd);`)\n .join('\\n')\n : '';\n\n const subcommandImports = command.subcommands\n ? command.subcommands\n .map((sub) => `import { register${toPascalCase(sub.name)}Subcommand } from './${command.name}/${sub.name}.js';`)\n .join('\\n')\n : '';\n\n const content = `/**\n * ${command.name} command\n * ${command.summary}\n *\n * Generated by CLI Command Generator Agent\n */\n\nimport { Command${optionImport} } from 'commander';\n${handlerImport}\n${subcommandImports}\n\nexport function ${funcName}(program: Command): void {\n const cmd = program\n .command('${command.name}')\n .description('${command.description}')\n${argsCode}\n${optionsCode}\n .action(handle${toPascalCase(command.name)});\n\n${subcommandsCode}\n}\n`;\n\n const path = parentName\n ? `src/commands/${parentName}/${command.name}.ts`\n : `src/commands/${command.name}.ts`;\n\n return {\n path,\n content,\n type: 'command',\n };\n}\n\n/**\n * Generate handler stub file\n */\nfunction generateHandlerFile(\n command: CLICommandDefinition,\n input: CLIGeneratorInput,\n parentName?: string\n): GeneratedCLIFile {\n const funcName = `handle${toPascalCase(command.name)}`;\n const typeName = `${toPascalCase(command.name)}Options`;\n\n const argParams = command.arguments.map((arg) => arg.name).join(', ');\n const argTypes = command.arguments.map((arg) => `${arg.name}: string`).join(', ');\n\n const content = `/**\n * Handler for ${command.name} command\n *\n * Generated by CLI Command Generator Agent\n *\n * TODO: Implement actual API call logic\n */\n\nimport type { ${typeName} } from '../types.js';\n\nexport async function ${funcName}(${argTypes ? argTypes + ', ' : ''}options: ${typeName}): Promise<void> {\n // TODO: Implement handler\n console.log('Executing ${command.name}...');\n console.log('Arguments:', { ${argParams} });\n console.log('Options:', options);\n\n // Example implementation:\n // const client = new ${toPascalCase(input.providerName)}Client({\n // apiKey: process.env.${input.providerId.toUpperCase()}_API_KEY,\n // });\n // const result = await client.${toCamelCase(command.name)}(${argParams ? argParams + ', ' : ''}options);\n // console.log(JSON.stringify(result, null, 2));\n}\n`;\n\n const path = parentName\n ? `src/handlers/${parentName}/${command.name}.ts`\n : `src/handlers/${command.name}.ts`;\n\n return {\n path,\n content,\n type: 'handler',\n };\n}\n\n/**\n * Generate package.json\n */\nfunction generatePackageJson(program: CLIProgramDefinition, input: CLIGeneratorInput): GeneratedCLIFile {\n const pkg = {\n name: program.name,\n version: program.version,\n description: program.description,\n type: 'module',\n main: './dist/index.js',\n bin: {\n [program.name]: './dist/index.js',\n },\n scripts: {\n build: 'tsc',\n dev: 'tsx src/index.ts',\n start: 'node dist/index.js',\n lint: 'eslint src --ext .ts',\n 'type-check': 'tsc --noEmit',\n },\n keywords: ['cli', input.providerId, 'llm', 'api'],\n author: '',\n license: 'MIT',\n dependencies: {\n commander: '^12.0.0',\n chalk: '^5.3.0',\n ora: '^8.0.1',\n },\n devDependencies: {\n '@types/node': '^20.11.0',\n typescript: '^5.3.3',\n tsx: '^4.7.0',\n eslint: '^8.56.0',\n '@typescript-eslint/eslint-plugin': '^6.19.0',\n '@typescript-eslint/parser': '^6.19.0',\n },\n engines: {\n node: '>=18.0.0',\n },\n files: ['dist'],\n };\n\n return {\n path: 'package.json',\n content: JSON.stringify(pkg, null, 2),\n type: 'manifest',\n };\n}\n\n/**\n * Generate README\n */\nfunction generateReadme(program: CLIProgramDefinition, input: CLIGeneratorInput): GeneratedCLIFile {\n const commandDocs = program.commands\n .map((cmd) => {\n let doc = `### \\`${cmd.name}\\`\\n\\n${cmd.description}\\n\\n`;\n\n if (cmd.arguments.length > 0) {\n doc += '**Arguments:**\\n\\n';\n for (const arg of cmd.arguments) {\n doc += `- \\`${arg.name}\\` - ${arg.description}${arg.required ? ' (required)' : ''}\\n`;\n }\n doc += '\\n';\n }\n\n if (cmd.options.length > 0) {\n doc += '**Options:**\\n\\n';\n for (const opt of cmd.options) {\n const alias = opt.alias ? `-${opt.alias}, ` : '';\n doc += `- \\`${alias}--${opt.name}\\` - ${opt.description}`;\n if (opt.default !== undefined) {\n doc += ` (default: \\`${JSON.stringify(opt.default)}\\`)`;\n }\n doc += '\\n';\n }\n doc += '\\n';\n }\n\n if (cmd.examples && cmd.examples.length > 0) {\n doc += '**Examples:**\\n\\n```bash\\n';\n doc += cmd.examples.join('\\n');\n doc += '\\n```\\n';\n }\n\n return doc;\n })\n .join('\\n');\n\n const content = `# ${program.name}\n\n${program.description}\n\n## Installation\n\n\\`\\`\\`bash\nnpm install -g ${program.name}\n\\`\\`\\`\n\n## Usage\n\n\\`\\`\\`bash\n${program.name} [command] [options]\n\\`\\`\\`\n\n## Global Options\n\n${(program.globalOptions ?? []).map((opt) => `- \\`--${opt.name}\\` - ${opt.description}`).join('\\n')}\n\n## Commands\n\n${commandDocs}\n\n## Environment Variables\n\n- \\`${input.providerId.toUpperCase()}_API_KEY\\` - API key for authentication\n\n## License\n\nMIT\n\n---\n\nGenerated by [LLM-Forge CLI Command Generator Agent](https://github.com/LLM-Dev-Ops/llm-forge)\n`;\n\n return {\n path: 'README.md',\n content,\n type: 'readme',\n };\n}\n\n/**\n * Helper: Convert to PascalCase\n */\nfunction toPascalCase(str: string): string {\n return str\n .split(/[-_\\s]+/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join('');\n}\n\n/**\n * Helper: Convert to camelCase\n */\nfunction toCamelCase(str: string): string {\n const pascal = toPascalCase(str);\n return pascal.charAt(0).toLowerCase() + pascal.slice(1);\n}\n\n/**\n * Calculate confidence score for generation\n *\n * Deterministic generation has high confidence.\n * Factors that may reduce confidence:\n * - Missing endpoint descriptions\n * - Missing parameter types\n * - Deprecated endpoints\n */\nfunction calculateConfidence(input: CLIGeneratorInput, program: CLIProgramDefinition): number {\n let score = 1.0;\n const deductions: number[] = [];\n\n // Check for missing descriptions\n const endpointsWithDescription = input.endpoints.filter((e) => e.description).length;\n const descriptionRatio = endpointsWithDescription / input.endpoints.length;\n if (descriptionRatio < 1.0) {\n deductions.push((1.0 - descriptionRatio) * 0.1);\n }\n\n // Check for deprecated endpoints\n const deprecatedCount = input.endpoints.filter((e) => e.deprecated).length;\n if (deprecatedCount > 0) {\n deductions.push((deprecatedCount / input.endpoints.length) * 0.05);\n }\n\n // Check for missing types\n const missingTypes = input.endpoints\n .flatMap((e) => e.parameters ?? [])\n .filter((p) => !input.types.find((t) => t.id === p.type.typeId))\n .length;\n if (missingTypes > 0) {\n deductions.push(Math.min(missingTypes * 0.02, 0.2));\n }\n\n // Apply deductions\n for (const deduction of deductions) {\n score -= deduction;\n }\n\n return Math.max(0.5, Math.min(1.0, score));\n}\n\n/**\n * Main generation function\n *\n * @param input - Validated generation input\n * @returns Generation result with files and metadata\n */\nexport function generateCLICommands(input: CLIGeneratorInput): CLIGenerationResult {\n const startTime = Date.now();\n const warnings: string[] = [];\n const errors: string[] = [];\n\n try {\n // Generate program definition\n const program = generateProgramDefinition(input);\n\n // Generate files based on framework\n let files: GeneratedCLIFile[];\n switch (input.framework) {\n case CLIFramework.Commander:\n files = generateCommanderFiles(program, input);\n break;\n case CLIFramework.Yargs:\n case CLIFramework.Clipanion:\n case CLIFramework.Oclif:\n warnings.push(`Framework ${input.framework} support is planned but not yet implemented. Falling back to Commander.`);\n files = generateCommanderFiles(program, input);\n break;\n default:\n throw new Error(`Unsupported framework: ${input.framework}`);\n }\n\n // Calculate confidence\n const confidence = calculateConfidence(input, program);\n\n // Add warnings for deprecated items\n for (const endpoint of input.endpoints) {\n if (endpoint.deprecated) {\n warnings.push(`Endpoint ${endpoint.operationId} is deprecated`);\n }\n }\n\n return {\n success: true,\n files,\n program,\n framework: input.framework,\n warnings,\n errors,\n duration: Date.now() - startTime,\n confidence,\n };\n } catch (error) {\n errors.push(error instanceof Error ? error.message : String(error));\n return {\n success: false,\n files: [],\n program: {\n name: input.packageName,\n version: input.packageVersion,\n description: '',\n commands: [],\n },\n framework: input.framework,\n warnings,\n errors,\n duration: Date.now() - startTime,\n confidence: 0,\n };\n }\n}\n","/**\n * CLI Command Generator Agent - Decision Event Emitter\n *\n * Emits DecisionEvents to ruvector-service for persistence.\n * All persistence occurs via client calls only - no direct SQL access.\n *\n * @module agents/cli-command-generator/decision-emitter\n */\n\nimport { createHash } from 'crypto';\nimport {\n CLICommandGeneratorDecisionEvent,\n CLIGeneratorInput,\n CLIGenerationResult,\n CLI_COMMAND_GENERATOR_CONTRACT,\n} from './types.js';\n\n/**\n * RuVector service client interface\n * This would be implemented by the actual ruvector-service client\n */\nexport interface RuVectorClient {\n emitDecisionEvent(event: CLICommandGeneratorDecisionEvent): Promise<{ success: boolean; eventId: string }>;\n}\n\n/**\n * Mock ruvector client for development/testing\n * In production, this would be replaced with the actual client\n */\nexport class MockRuVectorClient implements RuVectorClient {\n private events: CLICommandGeneratorDecisionEvent[] = [];\n\n async emitDecisionEvent(\n event: CLICommandGeneratorDecisionEvent\n ): Promise<{ success: boolean; eventId: string }> {\n this.events.push(event);\n const eventId = `evt_${Date.now()}_${Math.random().toString(36).slice(2, 11)}`;\n return { success: true, eventId };\n }\n\n getEvents(): CLICommandGeneratorDecisionEvent[] {\n return [...this.events];\n }\n\n clear(): void {\n this.events = [];\n }\n}\n\n/**\n * Decision Event Emitter\n *\n * Responsible for creating and emitting DecisionEvents to ruvector-service.\n * Each invocation of the CLI Command Generator Agent MUST emit exactly ONE\n * DecisionEvent as per the LLM-Forge constitution.\n */\nexport class DecisionEmitter {\n private client: RuVectorClient;\n\n constructor(client: RuVectorClient) {\n this.client = client;\n }\n\n /**\n * Create a hash of the input data for deduplication\n */\n private hashInputs(input: CLIGeneratorInput): string {\n const normalized = JSON.stringify({\n contractId: input.contractId,\n contractVersion: input.contractVersion,\n endpoints: input.endpoints.map((e) => e.operationId).sort(),\n framework: input.framework,\n packageName: input.packageName,\n providerId: input.providerId,\n });\n return createHash('sha256').update(normalized).digest('hex').slice(0, 32);\n }\n\n /**\n * Generate a unique execution reference\n */\n private generateExecutionRef(): string {\n const timestamp = Date.now().toString(36);\n const random = Math.random().toString(36).slice(2, 11);\n return `cli-gen-${timestamp}-${random}`;\n }\n\n /**\n * Calculate total lines of code in generated files\n */\n private countLinesOfCode(result: CLIGenerationResult): number {\n return result.files.reduce((total, file) => {\n return total + file.content.split('\\n').length;\n }, 0);\n }\n\n /**\n * Extract constraint information from input\n */\n private extractConstraints(input: CLIGeneratorInput): CLICommandGeneratorDecisionEvent['constraints_applied'] {\n return {\n schema_constraints: [\n `contract:${input.contractId}@${input.contractVersion}`,\n `endpoints:${input.endpoints.length}`,\n `types:${input.types.length}`,\n ],\n language_constraints: [\n 'target:typescript',\n 'esm:true',\n 'strict:true',\n ],\n version_constraints: [\n `package:${input.packageVersion}`,\n `agent:${CLI_COMMAND_GENERATOR_CONTRACT.version}`,\n ],\n framework_constraints: [\n `framework:${input.framework}`,\n `handlers:${input.options.generateHandlers ?? true}`,\n `types:${input.options.generateTypes ?? true}`,\n ],\n };\n }\n\n /**\n * Create and emit a DecisionEvent for a generation result\n *\n * @param input - The input that was processed\n * @param result - The generation result\n * @returns The emitted event ID\n */\n async emitGenerationEvent(\n input: CLIGeneratorInput,\n result: CLIGenerationResult\n ): Promise<string> {\n const event: CLICommandGeneratorDecisionEvent = {\n agent_id: 'cli-command-generator',\n agent_version: CLI_COMMAND_GENERATOR_CONTRACT.version,\n decision_type: 'cli_generation',\n inputs_hash: this.hashInputs(input),\n outputs: {\n commandCount: result.program.commands.length,\n fileCount: result.files.length,\n linesOfCode: this.countLinesOfCode(result),\n commandNames: result.program.commands.map((c) => c.name),\n framework: result.framework,\n packageName: result.program.name,\n },\n confidence: result.confidence,\n constraints_applied: this.extractConstraints(input),\n execution_ref: this.generateExecutionRef(),\n timestamp: new Date().toISOString(),\n };\n\n const response = await this.client.emitDecisionEvent(event);\n\n if (!response.success) {\n throw new Error('Failed to emit decision event to ruvector-service');\n }\n\n return response.eventId;\n }\n\n /**\n * Create and emit a DecisionEvent for a failed generation\n *\n * @param input - The input that was processed\n * @param errors - The errors that occurred\n * @returns The emitted event ID\n */\n async emitFailureEvent(\n input: CLIGeneratorInput,\n errors: string[]\n ): Promise<string> {\n const event: CLICommandGeneratorDecisionEvent = {\n agent_id: 'cli-command-generator',\n agent_version: CLI_COMMAND_GENERATOR_CONTRACT.version,\n decision_type: 'cli_generation',\n inputs_hash: this.hashInputs(input),\n outputs: {\n commandCount: 0,\n fileCount: 0,\n linesOfCode: 0,\n commandNames: [],\n framework: input.framework,\n packageName: input.packageName,\n },\n confidence: 0,\n constraints_applied: this.extractConstraints(input),\n execution_ref: this.generateExecutionRef(),\n timestamp: new Date().toISOString(),\n };\n\n const response = await this.client.emitDecisionEvent(event);\n\n if (!response.success) {\n throw new Error('Failed to emit decision event to ruvector-service');\n }\n\n return response.eventId;\n }\n}\n\n/**\n * Create a decision emitter with the provided client\n */\nexport function createDecisionEmitter(client: RuVectorClient): DecisionEmitter {\n return new DecisionEmitter(client);\n}\n\n/**\n * Create a decision emitter with a mock client (for testing)\n */\nexport function createMockDecisionEmitter(): {\n emitter: DecisionEmitter;\n client: MockRuVectorClient;\n} {\n const client = new MockRuVectorClient();\n const emitter = new DecisionEmitter(client);\n return { emitter, client };\n}\n","/**\n * CLI Command Generator Agent - Telemetry Emission\n *\n * Emits telemetry compatible with LLM-Observatory for monitoring and debugging.\n *\n * @module agents/cli-command-generator/telemetry\n */\n\nimport { CLI_COMMAND_GENERATOR_CONTRACT } from './types.js';\n\n/**\n * Telemetry event types\n */\nexport enum TelemetryEventType {\n AgentInvoked = 'agent.invoked',\n AgentCompleted = 'agent.completed',\n AgentFailed = 'agent.failed',\n ValidationStarted = 'validation.started',\n ValidationCompleted = 'validation.completed',\n ValidationFailed = 'validation.failed',\n GenerationStarted = 'generation.started',\n GenerationCompleted = 'generation.completed',\n GenerationFailed = 'generation.failed',\n}\n\n/**\n * Telemetry event structure (LLM-Observatory compatible)\n */\nexport interface TelemetryEvent {\n /** Event type */\n event_type: TelemetryEventType;\n /** Agent identifier */\n agent_id: string;\n /** Agent version */\n agent_version: string;\n /** Execution reference (links related events) */\n execution_ref: string;\n /** Event timestamp (UTC ISO 8601) */\n timestamp: string;\n /** Event duration in milliseconds (if applicable) */\n duration_ms?: number;\n /** Event metadata */\n metadata: Record<string, unknown>;\n /** Error details (if applicable) */\n error?: {\n code: string;\n message: string;\n stack?: string;\n };\n}\n\n/**\n * Telemetry sink interface\n */\nexport interface TelemetrySink {\n emit(event: TelemetryEvent): Promise<void>;\n flush(): Promise<void>;\n}\n\n/**\n * Console telemetry sink for development\n */\nexport class ConsoleTelemetrySink implements TelemetrySink {\n async emit(event: TelemetryEvent): Promise<void> {\n const prefix = event.error ? '❌' : '✓';\n console.log(`[TELEMETRY] ${prefix} ${event.event_type} | ${event.execution_ref}`);\n if (event.duration_ms !== undefined) {\n console.log(` Duration: ${event.duration_ms}ms`);\n }\n if (event.error) {\n console.log(` Error: ${event.error.code} - ${event.error.message}`);\n }\n }\n\n async flush(): Promise<void> {\n // No-op for console\n }\n}\n\n/**\n * Buffered telemetry sink for batch emission\n */\nexport class BufferedTelemetrySink implements TelemetrySink {\n private buffer: TelemetryEvent[] = [];\n private maxBufferSize: number;\n private flushInterval: number;\n private flushTimer: ReturnType<typeof setInterval> | null = null;\n private endpoint: string;\n\n constructor(options: {\n endpoint: string;\n maxBufferSize?: number;\n flushIntervalMs?: number;\n }) {\n this.endpoint = options.endpoint;\n this.maxBufferSize = options.maxBufferSize ?? 100;\n this.flushInterval = options.flushIntervalMs ?? 5000;\n }\n\n async emit(event: TelemetryEvent): Promise<void> {\n this.buffer.push(event);\n\n if (this.buffer.length >= this.maxBufferSize) {\n await this.flush();\n }\n\n // Start flush timer if not running\n if (!this.flushTimer) {\n this.flushTimer = setInterval(() => {\n this.flush().catch(console.error);\n }, this.flushInterval);\n }\n }\n\n async flush(): Promise<void> {\n if (this.buffer.length === 0) {\n return;\n }\n\n const events = [...this.buffer];\n this.buffer = [];\n\n try {\n // In production, this would POST to the LLM-Observatory endpoint\n // await fetch(this.endpoint, {\n // method: 'POST',\n // headers: { 'Content-Type': 'application/json' },\n // body: JSON.stringify({ events }),\n // });\n console.log(`[TELEMETRY] Flushed ${events.length} events to ${this.endpoint}`);\n } catch (error) {\n // Re-buffer events on failure\n this.buffer = [...events, ...this.buffer].slice(0, this.maxBufferSize);\n console.error('[TELEMETRY] Flush failed:', error);\n }\n }\n\n stop(): void {\n if (this.flushTimer) {\n clearInterval(this.flushTimer);\n this.flushTimer = null;\n }\n }\n}\n\n/**\n * Telemetry emitter for the CLI Command Generator Agent\n */\nexport class TelemetryEmitter {\n private sink: TelemetrySink;\n private executionRef: string;\n\n constructor(sink: TelemetrySink, executionRef: string) {\n this.sink = sink;\n this.executionRef = executionRef;\n }\n\n private createEvent(\n type: TelemetryEventType,\n metadata: Record<string, unknown>,\n durationMs?: number,\n error?: { code: string; message: string; stack?: string }\n ): TelemetryEvent {\n return {\n event_type: type,\n agent_id: CLI_COMMAND_GENERATOR_CONTRACT.agentId,\n agent_version: CLI_COMMAND_GENERATOR_CONTRACT.version,\n execution_ref: this.executionRef,\n timestamp: new Date().toISOString(),\n duration_ms: durationMs,\n metadata,\n error,\n };\n }\n\n async emitAgentInvoked(input: {\n contractId: string;\n framework: string;\n endpointCount: number;\n }): Promise<void> {\n await this.sink.emit(\n this.createEvent(TelemetryEventType.AgentInvoked, {\n contract_id: input.contractId,\n framework: input.framework,\n endpoint_count: input.endpointCount,\n })\n );\n }\n\n async emitAgentCompleted(result: {\n commandCount: number;\n fileCount: number;\n confidence: number;\n durationMs: number;\n }): Promise<void> {\n await this.sink.emit(\n this.createEvent(\n TelemetryEventType.AgentCompleted,\n {\n command_count: result.commandCount,\n file_count: result.fileCount,\n confidence: result.confidence,\n },\n result.durationMs\n )\n );\n }\n\n async emitAgentFailed(error: Error, durationMs: number): Promise<void> {\n await this.sink.emit(\n this.createEvent(\n TelemetryEventType.AgentFailed,\n {},\n durationMs,\n {\n code: 'AGENT_FAILURE',\n message: error.message,\n stack: error.stack,\n }\n )\n );\n }\n\n async emitValidationStarted(): Promise<void> {\n await this.sink.emit(\n this.createEvent(TelemetryEventType.ValidationStarted, {})\n );\n }\n\n async emitValidationCompleted(durationMs: number): Promise<void> {\n await this.sink.emit(\n this.createEvent(\n TelemetryEventType.ValidationCompleted,\n {},\n durationMs\n )\n );\n }\n\n async emitValidationFailed(errors: string[], durationMs: number): Promise<void> {\n await this.sink.emit(\n this.createEvent(\n TelemetryEventType.ValidationFailed,\n { error_count: errors.length },\n durationMs,\n {\n code: 'VALIDATION_FAILED',\n message: errors.join('; '),\n }\n )\n );\n }\n\n async emitGenerationStarted(framework: string): Promise<void> {\n await this.sink.emit(\n this.createEvent(TelemetryEventType.GenerationStarted, { framework })\n );\n }\n\n async emitGenerationCompleted(result: {\n fileCount: number;\n linesOfCode: number;\n durationMs: number;\n }): Promise<void> {\n await this.sink.emit(\n this.createEvent(\n TelemetryEventType.GenerationCompleted,\n {\n file_count: result.fileCount,\n lines_of_code: result.linesOfCode,\n },\n result.durationMs\n )\n );\n }\n\n async emitGenerationFailed(errors: string[], durationMs: number): Promise<void> {\n await this.sink.emit(\n this.createEvent(\n TelemetryEventType.GenerationFailed,\n { error_count: errors.length },\n durationMs,\n {\n code: 'GENERATION_FAILED',\n message: errors.join('; '),\n }\n )\n );\n }\n\n async flush(): Promise<void> {\n await this.sink.flush();\n }\n}\n\n/**\n * Create a telemetry emitter with a console sink (for development)\n */\nexport function createConsoleTelemetryEmitter(executionRef: string): TelemetryEmitter {\n return new TelemetryEmitter(new ConsoleTelemetrySink(), executionRef);\n}\n\n/**\n * Create a telemetry emitter with a buffered sink (for production)\n */\nexport function createBufferedTelemetryEmitter(\n executionRef: string,\n endpoint: string\n): TelemetryEmitter {\n return new TelemetryEmitter(\n new BufferedTelemetrySink({ endpoint }),\n executionRef\n );\n}\n\n/**\n * Generate a unique execution reference\n */\nexport function generateExecutionRef(): string {\n const timestamp = Date.now().toString(36);\n const random = Math.random().toString(36).slice(2, 11);\n return `cli-gen-${timestamp}-${random}`;\n}\n","/**\n * CLI Command Generator Agent - Edge Function Handler\n *\n * Google Cloud Edge Function handler for the CLI Command Generator Agent.\n * This is the main entry point for all agent invocations.\n *\n * Constraints:\n * - Stateless execution\n * - Deterministic behavior\n * - No orchestration logic\n * - No enforcement logic\n * - No runtime execution\n * - No direct SQL access\n * - Async, non-blocking writes via ruvector-service only\n *\n * @module agents/cli-command-generator/handler\n */\n\nimport {\n CLIGeneratorInputSchema,\n CLIGenerationResult,\n CLI_COMMAND_GENERATOR_CONTRACT,\n type CLIGeneratorInput,\n} from './types.js';\nimport { generateCLICommands } from './generator.js';\nimport { createDecisionEmitter, createMockDecisionEmitter, type RuVectorClient } from './decision-emitter.js';\nimport {\n TelemetryEmitter,\n createConsoleTelemetryEmitter,\n generateExecutionRef,\n} from './telemetry.js';\nimport { type PipelineContext, findSDKScaffoldOutput } from '../../types/pipeline-context.js';\n\n/**\n * HTTP request structure for Edge Function\n */\nexport interface EdgeFunctionRequest {\n method: string;\n headers: Record<string, string>;\n body?: unknown;\n query?: Record<string, string>;\n}\n\n/**\n * HTTP response structure for Edge Function\n */\nexport interface EdgeFunctionResponse {\n statusCode: number;\n headers: Record<string, string>;\n body: string;\n}\n\n/**\n * Agent handler configuration\n */\nexport interface AgentHandlerConfig {\n /** RuVector service client (for decision event persistence) */\n ruvectorClient?: RuVectorClient;\n /** Telemetry emitter (for observability) */\n telemetryEmitter?: TelemetryEmitter;\n /** Enable verbose logging */\n verbose?: boolean;\n /** Pipeline context from upstream orchestration (optional) */\n pipelineContext?: PipelineContext;\n}\n\n/**\n * Handler result structure\n */\nexport interface HandlerResult {\n success: boolean;\n result?: CLIGenerationResult;\n eventId?: string;\n errors?: string[];\n executionRef: string;\n}\n\n/**\n * Validate input against the schema\n */\nfunction validateInput(input: unknown): {\n success: boolean;\n data?: CLIGeneratorInput;\n errors?: string[];\n} {\n const result = CLIGeneratorInputSchema.safeParse(input);\n\n if (result.success) {\n return { success: true, data: result.data };\n }\n\n const errors = result.error.errors.map((e) => `${e.path.join('.')}: ${e.message}`);\n return { success: false, errors };\n}\n\n/**\n * Create JSON response\n */\nfunction jsonResponse(\n data: unknown,\n statusCode: number = 200\n): EdgeFunctionResponse {\n return {\n statusCode,\n headers: {\n 'Content-Type': 'application/json',\n 'X-Agent-Id': CLI_COMMAND_GENERATOR_CONTRACT.agentId,\n 'X-Agent-Version': CLI_COMMAND_GENERATOR_CONTRACT.version,\n },\n body: JSON.stringify(data),\n };\n}\n\n/**\n * Create error response\n */\nfunction errorResponse(\n code: string,\n message: string,\n statusCode: number = 400,\n executionRef?: string\n): EdgeFunctionResponse {\n return jsonResponse(\n {\n error: {\n code,\n message,\n agent_id: CLI_COMMAND_GENERATOR_CONTRACT.agentId,\n agent_version: CLI_COMMAND_GENERATOR_CONTRACT.version,\n execution_ref: executionRef,\n },\n },\n statusCode\n );\n}\n\n/**\n * Main agent handler function\n *\n * This function:\n * 1. Validates input using Zod schema\n * 2. Generates CLI commands\n * 3. Emits decision event to ruvector-service\n * 4. Emits telemetry to LLM-Observatory\n * 5. Returns deterministic output\n *\n * IMPORTANT CONFIRMATIONS (per PROMPT 2):\n * - This agent does NOT execute generated code\n * - This agent does NOT modify runtime behavior\n * - This agent does NOT orchestrate workflows\n */\nexport async function handleGenerate(\n input: unknown,\n config: AgentHandlerConfig = {}\n): Promise<HandlerResult> {\n const executionRef = generateExecutionRef();\n const startTime = Date.now();\n\n // Initialize telemetry\n const telemetry = config.telemetryEmitter ?? createConsoleTelemetryEmitter(executionRef);\n\n // Initialize decision emitter\n const { emitter: decisionEmitter, client: mockClient } = config.ruvectorClient\n ? { emitter: createDecisionEmitter(config.ruvectorClient), client: null }\n : createMockDecisionEmitter();\n\n try {\n // Emit agent invocation telemetry\n const rawInput = input as Record<string, unknown>;\n await telemetry.emitAgentInvoked({\n contractId: String(rawInput.contractId ?? 'unknown'),\n framework: String(rawInput.framework ?? 'commander'),\n endpointCount: Array.isArray(rawInput.endpoints) ? rawInput.endpoints.length : 0,\n });\n\n // Step 1: Validate input\n if (config.verbose) {\n console.log('[CLI-GEN] Validating input...');\n }\n await telemetry.emitValidationStarted();\n const validationStart = Date.now();\n\n const validation = validateInput(input);\n\n if (!validation.success) {\n const validationDuration = Date.now() - validationStart;\n await telemetry.emitValidationFailed(validation.errors ?? [], validationDuration);\n\n // Emit failure decision event\n const failureInput: CLIGeneratorInput = {\n contractId: String(rawInput.contractId ?? 'unknown'),\n contractVersion: String(rawInput.contractVersion ?? '0.0.0'),\n endpoints: [],\n types: [],\n framework: 'commander' as const,\n packageName: String(rawInput.packageName ?? 'unknown'),\n packageVersion: '0.0.0',\n providerId: String(rawInput.providerId ?? 'unknown'),\n providerName: String(rawInput.providerName ?? 'Unknown'),\n options: {},\n };\n\n await decisionEmitter.emitFailureEvent(failureInput, validation.errors ?? []);\n\n return {\n success: false,\n errors: validation.errors,\n executionRef,\n };\n }\n\n await telemetry.emitValidationCompleted(Date.now() - validationStart);\n\n let validatedInput = validation.data!;\n\n // If pipeline_context contains SDK scaffold output, use it to align CLI wrappers\n if (config.pipelineContext) {\n const sdkOutput = findSDKScaffoldOutput(config.pipelineContext);\n if (sdkOutput) {\n const sdkArtifacts = sdkOutput.sdk_artifacts as\n | Array<{ language: string; files: Array<{ path: string }> }>\n | undefined;\n // Derive command prefix from SDK package structure if not already set\n if (sdkArtifacts && sdkArtifacts.length > 0 && !validatedInput.options.commandPrefix) {\n validatedInput = {\n ...validatedInput,\n options: {\n ...validatedInput.options,\n commandPrefix: validatedInput.packageName,\n },\n };\n }\n }\n }\n\n // Step 2: Generate CLI commands\n if (config.verbose) {\n console.log('[CLI-GEN] Generating CLI commands...');\n }\n await telemetry.emitGenerationStarted(validatedInput.framework);\n const generationStart = Date.now();\n\n const result = generateCLICommands(validatedInput);\n\n if (result.success) {\n const linesOfCode = result.files.reduce((sum, f) => sum + f.content.split('\\n').length, 0);\n await telemetry.emitGenerationCompleted({\n fileCount: result.files.length,\n linesOfCode,\n durationMs: Date.now() - generationStart,\n });\n } else {\n await telemetry.emitGenerationFailed(result.errors, Date.now() - generationStart);\n }\n\n // Step 3: Emit decision event to ruvector-service\n if (config.verbose) {\n console.log('[CLI-GEN] Emitting decision event...');\n }\n\n let eventId: string;\n if (result.success) {\n eventId = await decisionEmitter.emitGenerationEvent(validatedInput, result);\n } else {\n eventId = await decisionEmitter.emitFailureEvent(validatedInput, result.errors);\n }\n\n // Step 4: Emit completion telemetry\n const totalDuration = Date.now() - startTime;\n if (result.success) {\n await telemetry.emitAgentCompleted({\n commandCount: result.program.commands.length,\n fileCount: result.files.length,\n confidence: result.confidence,\n durationMs: totalDuration,\n });\n } else {\n await telemetry.emitAgentFailed(new Error(result.errors.join('; ')), totalDuration);\n }\n\n await telemetry.flush();\n\n return {\n success: result.success,\n result,\n eventId,\n errors: result.errors.length > 0 ? result.errors : undefined,\n executionRef,\n };\n } catch (error) {\n const totalDuration = Date.now() - startTime;\n await telemetry.emitAgentFailed(\n error instanceof Error ? error : new Error(String(error)),\n totalDuration\n );\n await telemetry.flush();\n\n return {\n success: false,\n errors: [error instanceof Error ? error.message : String(error)],\n executionRef,\n };\n }\n}\n\n/**\n * Edge Function HTTP handler\n *\n * Handles HTTP requests to the CLI Command Generator Agent.\n * Deployed as part of the LLM-Forge unified GCP service.\n */\nexport async function edgeFunctionHandler(\n request: EdgeFunctionRequest\n): Promise<EdgeFunctionResponse> {\n const executionRef = generateExecutionRef();\n\n // Only accept POST requests\n if (request.method !== 'POST') {\n return errorResponse(\n 'METHOD_NOT_ALLOWED',\n 'Only POST method is supported',\n 405,\n executionRef\n );\n }\n\n // Parse request body\n let body: unknown;\n try {\n body = typeof request.body === 'string' ? JSON.parse(request.body) : request.body;\n } catch {\n return errorResponse(\n 'INVALID_JSON',\n 'Request body must be valid JSON',\n 400,\n executionRef\n );\n }\n\n // Handle the request\n const result = await handleGenerate(body, {\n verbose: request.headers['x-verbose'] === 'true',\n });\n\n // Return response\n if (result.success && result.result) {\n return jsonResponse({\n success: true,\n execution_ref: result.executionRef,\n event_id: result.eventId,\n result: {\n program: result.result.program,\n files: result.result.files,\n framework: result.result.framework,\n warnings: result.result.warnings,\n duration: result.result.duration,\n confidence: result.result.confidence,\n },\n });\n }\n\n return jsonResponse(\n {\n success: false,\n execution_ref: result.executionRef,\n event_id: result.eventId,\n errors: result.errors,\n },\n result.errors?.some((e) => e.includes('VALIDATION')) ? 400 : 500\n );\n}\n\n/**\n * Health check handler\n */\nexport function healthCheckHandler(): EdgeFunctionResponse {\n return jsonResponse({\n status: 'healthy',\n agent_id: CLI_COMMAND_GENERATOR_CONTRACT.agentId,\n agent_version: CLI_COMMAND_GENERATOR_CONTRACT.version,\n classification: CLI_COMMAND_GENERATOR_CONTRACT.classification,\n timestamp: new Date().toISOString(),\n });\n}\n\n/**\n * Contract info handler\n */\nexport function contractHandler(): EdgeFunctionResponse {\n return jsonResponse(CLI_COMMAND_GENERATOR_CONTRACT);\n}\n","/**\n * CLI Command Generator Agent Contract\n *\n * PROMPT 1 DELIVERABLE: Full Agent Contract & Boundary Definition\n *\n * Agent Name: CLI Command Generator Agent\n * Classification: GENERATION\n * decision_type: \"cli_generation\"\n *\n * @module agents/contracts/cli-command-generator.contract\n */\n\nimport { z } from 'zod';\n\n// =============================================================================\n// 1. AGENT PURPOSE STATEMENT (Precise, Non-Marketing)\n// =============================================================================\n/**\n * The CLI Command Generator Agent is a GENERATION-class agent responsible for\n * generating CLI command definitions and handlers from API contracts.\n *\n * It consumes agentics-contracts API schemas and produces deterministic CLI\n * artifacts including command specs, argument schemas, help text, and handlers\n * aligned with agentics-cli patterns.\n *\n * The agent does NOT:\n * - Execute generated CLI code\n * - Modify runtime behavior\n * - Orchestrate workflows\n * - Enforce policies\n * - Access SQL databases directly\n */\nexport const AGENT_PURPOSE = `\nCLI Command Generator Agent: GENERATION-class agent for generating CLI command\ndefinitions and handlers from API contracts with deterministic output.\n` as const;\n\n// =============================================================================\n// 2. AGENT IDENTIFIER AND VERSION\n// =============================================================================\n\nexport const CLI_AGENT_ID = 'cli-command-generator-agent' as const;\nexport const CLI_AGENT_VERSION = '1.0.0' as const;\n\n// =============================================================================\n// 3. INPUT SCHEMA REFERENCES (agentics-contracts)\n// =============================================================================\n\n/**\n * Supported CLI frameworks\n */\nexport const CLIFrameworkSchema = z.enum([\n 'commander',\n 'yargs',\n 'clipanion',\n 'oclif',\n]);\n\nexport type SupportedCLIFramework = z.infer<typeof CLIFrameworkSchema>;\n\n/**\n * CLI argument type schema\n */\nexport const CLIArgumentTypeSchema = z.enum([\n 'string',\n 'number',\n 'boolean',\n 'array',\n 'choice',\n 'file',\n 'directory',\n]);\n\n/**\n * API endpoint input schema (from canonical schema)\n */\nexport const APIEndpointSchema = z.object({\n operationId: z.string(),\n path: z.string(),\n method: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']),\n summary: z.string().optional(),\n description: z.string().optional(),\n parameters: z.array(z.object({\n name: z.string(),\n in: z.enum(['path', 'query', 'header', 'cookie']),\n type: z.object({\n typeId: z.string(),\n nullable: z.boolean().optional(),\n }),\n required: z.boolean(),\n description: z.string().optional(),\n default: z.unknown().optional(),\n deprecated: z.boolean().optional(),\n })).optional(),\n requestBody: z.object({\n type: z.object({\n typeId: z.string(),\n nullable: z.boolean().optional(),\n }),\n required: z.boolean(),\n contentType: z.string(),\n description: z.string().optional(),\n }).optional(),\n tags: z.array(z.string()).optional(),\n deprecated: z.boolean().optional(),\n});\n\n/**\n * CLI generation request input schema\n */\nexport const CLIGenerationRequestSchema = z.object({\n /** Unique request identifier for tracing */\n requestId: z.string().uuid(),\n\n /** Source contract identifier */\n contractId: z.string(),\n\n /** Contract version */\n contractVersion: z.string(),\n\n /** API endpoints to generate commands for */\n endpoints: z.array(APIEndpointSchema),\n\n /** Type definitions for argument types */\n types: z.array(z.object({\n id: z.string(),\n name: z.string(),\n kind: z.enum(['primitive', 'object', 'array', 'union', 'enum', 'reference']),\n description: z.string().optional(),\n properties: z.array(z.object({\n name: z.string(),\n type: z.object({\n typeId: z.string(),\n nullable: z.boolean().optional(),\n }),\n required: z.boolean(),\n description: z.string().optional(),\n default: z.unknown().optional(),\n })).optional(),\n values: z.array(z.object({\n value: z.union([z.string(), z.number()]),\n name: z.string(),\n description: z.string().optional(),\n })).optional(),\n })),\n\n /** Target CLI framework */\n framework: CLIFrameworkSchema.default('commander'),\n\n /** Package/program name */\n packageName: z.string().min(1).max(128),\n\n /** Package version */\n packageVersion: z.string().regex(/^\\d+\\.\\d+\\.\\d+(-[\\w.]+)?$/).default('0.1.0'),\n\n /** Provider ID */\n providerId: z.string(),\n\n /** Provider display name */\n providerName: z.string(),\n\n /** Generation options */\n options: z.object({\n /** Generate handler stubs */\n generateHandlers: z.boolean().default(true),\n /** Generate TypeScript types */\n generateTypes: z.boolean().default(true),\n /** Include usage examples */\n includeExamples: z.boolean().default(true),\n /** Command name prefix */\n commandPrefix: z.string().optional(),\n /** Additional global options */\n globalOptions: z.array(z.object({\n name: z.string(),\n alias: z.string().optional(),\n description: z.string(),\n type: CLIArgumentTypeSchema,\n default: z.unknown().optional(),\n })).optional(),\n }).default({}),\n\n /** Tracing context for observability */\n tracingContext: z.object({\n traceId: z.string().optional(),\n spanId: z.string().optional(),\n parentSpanId: z.string().optional(),\n }).optional(),\n});\n\nexport type CLIGenerationRequest = z.infer<typeof CLIGenerationRequestSchema>;\n\n// =============================================================================\n// 4. OUTPUT SCHEMA / ARTIFACT REFERENCES\n// =============================================================================\n\n/**\n * Generated CLI file artifact\n */\nexport const GeneratedCLIFileSchema = z.object({\n /** Relative file path */\n path: z.string(),\n /** File content (UTF-8) */\n content: z.string(),\n /** File type */\n type: z.enum(['command', 'handler', 'types', 'index', 'manifest', 'readme']),\n /** Whether file is executable */\n executable: z.boolean().default(false),\n /** Content hash for verification */\n contentHash: z.string().optional(),\n /** File size in bytes */\n sizeBytes: z.number().int().positive().optional(),\n});\n\nexport type GeneratedCLIFile = z.infer<typeof GeneratedCLIFileSchema>;\n\n/**\n * CLI generation response\n */\nexport const CLIGenerationResponseSchema = z.object({\n /** Original request ID */\n requestId: z.string().uuid(),\n /** Generation success status */\n success: z.boolean(),\n /** Generated files */\n files: z.array(GeneratedCLIFileSchema),\n /** Program definition */\n program: z.object({\n name: z.string(),\n version: z.string(),\n description: z.string(),\n commandCount: z.number().int().nonnegative(),\n }),\n /** Target framework */\n framework: CLIFrameworkSchema,\n /** Confidence score (0-1) */\n confidence: z.number().min(0).max(1),\n /** Generation duration in milliseconds */\n duration: z.number().nonnegative(),\n /** Warnings (non-fatal issues) */\n warnings: z.array(z.string()),\n /** Errors (if success=false) */\n errors: z.array(z.string()),\n /** Compatibility metadata */\n compatibility: z.object({\n schemaVersion: z.string(),\n agentVersion: z.string(),\n generatedAt: z.string().datetime(),\n determinismHash: z.string(),\n }).optional(),\n});\n\nexport type CLIGenerationResponse = z.infer<typeof CLIGenerationResponseSchema>;\n\n// =============================================================================\n// 5. DECISION EVENT MAPPING\n// =============================================================================\n\n/**\n * Decision types for CLI Command Generator Agent\n */\nexport enum CLIGeneratorDecisionType {\n /** Primary decision: CLI generation from endpoints */\n CLI_GENERATION = 'cli_generation',\n /** Command mapping decision */\n COMMAND_MAPPING = 'command_mapping',\n /** Argument type mapping decision */\n ARGUMENT_TYPE_MAPPING = 'argument_type_mapping',\n}\n\n/**\n * Confidence semantics for CLI generation\n */\nexport enum ConfidenceSemantics {\n /** Output is deterministic and reproducible */\n DETERMINISTIC = 'deterministic',\n /** Output uses heuristic mapping */\n HEURISTIC = 'heuristic',\n /** Output satisfies defined constraints */\n CONSTRAINT_BASED = 'constraint_based',\n}\n\n/**\n * Decision event for CLI generation\n */\nexport const CLIGeneratorDecisionEventSchema = z.object({\n /** Event unique identifier */\n eventId: z.string().uuid(),\n /** Decision type */\n decisionType: z.nativeEnum(CLIGeneratorDecisionType),\n /** Agent identifier */\n agentId: z.literal('cli-command-generator-agent'),\n /** Agent version */\n agentVersion: z.string(),\n /** Request ID this decision relates to */\n requestId: z.string().uuid(),\n /** Timestamp of decision */\n timestamp: z.string().datetime(),\n /** Confidence semantics */\n confidenceSemantics: z.nativeEnum(ConfidenceSemantics),\n /** Confidence score (0.0-1.0) */\n confidenceScore: z.number().min(0).max(1),\n /** Input hash for reproducibility */\n inputHash: z.string(),\n /** Output hash for verification */\n outputHash: z.string(),\n /** Decision rationale */\n rationale: z.string(),\n /** Decision metadata */\n metadata: z.record(z.unknown()).optional(),\n});\n\nexport type CLIGeneratorDecisionEvent = z.infer<typeof CLIGeneratorDecisionEventSchema>;\n\n// =============================================================================\n// 6. CLI CONTRACT\n// =============================================================================\n\n/**\n * CLI invocation shape for CLI Command Generator Agent\n *\n * Primary command: generate cli\n *\n * Usage:\n * llm-forge generate cli <contract-file> [options]\n *\n * Arguments:\n * contract-file API contract file (JSON)\n *\n * Options:\n * -f, --framework <fw> Target framework (commander, yargs, clipanion, oclif)\n * -o, --output <dir> Output directory (default: ./cli-generated)\n * -n, --name <name> Package name\n * --pkg-version <version> Package version (default: 0.1.0)\n * -p, --provider <id> Provider ID\n * --no-handlers Don't generate handler stubs\n * --no-types Don't generate TypeScript types\n * --emit-events Emit DecisionEvents to ruvector-service\n * --dry-run Validate without generating files\n * -v, --verbose Verbose output\n */\nexport const CLIContract = {\n command: 'generate cli',\n arguments: [\n {\n name: 'contract-file',\n description: 'API contract file (JSON)',\n required: true,\n },\n ],\n options: [\n {\n flag: '-f, --framework <framework>',\n description: 'Target CLI framework',\n default: 'commander',\n choices: ['commander', 'yargs', 'clipanion', 'oclif'],\n },\n {\n flag: '-o, --output <dir>',\n description: 'Output directory',\n default: './cli-generated',\n },\n {\n flag: '-n, --name <name>',\n description: 'Package name',\n required: true,\n },\n {\n flag: '--pkg-version <version>',\n description: 'Package version',\n default: '0.1.0',\n },\n {\n flag: '-p, --provider <id>',\n description: 'Provider ID (e.g., openai, anthropic)',\n required: true,\n },\n {\n flag: '--provider-name <name>',\n description: 'Provider display name',\n },\n {\n flag: '--no-handlers',\n description: 'Disable handler stub generation',\n },\n {\n flag: '--no-types',\n description: 'Disable TypeScript type generation',\n },\n {\n flag: '--emit-events',\n description: 'Emit DecisionEvents to ruvector-service',\n },\n {\n flag: '--dry-run',\n description: 'Validate without generating files',\n },\n {\n flag: '-v, --verbose',\n description: 'Verbose output',\n },\n ],\n} as const;\n\n// =============================================================================\n// 7. GENERATION / TRANSLATION / VALIDATION CLASSIFICATION\n// =============================================================================\n\n/**\n * Agent classification: GENERATION\n *\n * This agent is classified as GENERATION because:\n * 1. It produces new artifacts (CLI code) from API specifications\n * 2. It does NOT translate between equivalent formats\n * 3. It does NOT validate compatibility between versions\n *\n * The generation is:\n * - Deterministic: Same endpoints → Same CLI output (hash-verifiable)\n * - Stateless: No persistent state between invocations\n * - Idempotent: Multiple invocations with same input produce identical output\n */\nexport const AGENT_CLASSIFICATION = {\n type: 'GENERATION' as const,\n deterministic: true,\n stateless: true,\n idempotent: true,\n characteristics: [\n 'Produces CLI command artifacts from API specifications',\n 'Output is deterministic and reproducible',\n 'No side effects beyond artifact generation',\n 'No runtime execution of generated code',\n 'Generates Commander.js compatible CLI code',\n ],\n} as const;\n\n// =============================================================================\n// 8. EXPLICIT NON-RESPONSIBILITIES\n// =============================================================================\n\n/**\n * What this agent MUST NEVER do\n */\nexport const NON_RESPONSIBILITIES = [\n // Execution\n 'MUST NEVER execute generated CLI code',\n 'MUST NEVER invoke the generated CLI commands',\n 'MUST NEVER run the CLI against APIs',\n 'MUST NEVER deploy generated CLI packages',\n\n // State mutation\n 'MUST NEVER modify runtime behavior',\n 'MUST NEVER persist state between invocations',\n 'MUST NEVER access SQL databases directly',\n 'MUST NEVER write to external file systems',\n\n // Orchestration\n 'MUST NEVER orchestrate multi-agent workflows',\n 'MUST NEVER spawn child processes',\n 'MUST NEVER make network requests except to ruvector-service',\n 'MUST NEVER invoke other agents directly',\n\n // Policy\n 'MUST NEVER enforce access control policies',\n 'MUST NEVER modify authentication schemes',\n 'MUST NEVER alter rate limiting configurations',\n\n // Secrets\n 'MUST NEVER embed API keys in generated code',\n 'MUST NEVER log sensitive schema data',\n 'MUST NEVER persist credentials',\n] as const;\n\n// =============================================================================\n// 9. FAILURE MODES\n// =============================================================================\n\n/**\n * Known failure modes and handling\n */\nexport enum FailureMode {\n /** Invalid input schema */\n INVALID_INPUT = 'INVALID_INPUT',\n /** Unsupported framework */\n UNSUPPORTED_FRAMEWORK = 'UNSUPPORTED_FRAMEWORK',\n /** Endpoint parsing failure */\n ENDPOINT_PARSING_FAILURE = 'ENDPOINT_PARSING_FAILURE',\n /** Type mapping failure */\n TYPE_MAPPING_FAILURE = 'TYPE_MAPPING_FAILURE',\n /** Contract mismatch */\n CONTRACT_MISMATCH = 'CONTRACT_MISMATCH',\n /** Resource exhaustion */\n RESOURCE_EXHAUSTION = 'RESOURCE_EXHAUSTION',\n /** Timeout */\n TIMEOUT = 'TIMEOUT',\n}\n\nexport const FailureModeHandling: Record<\n FailureMode,\n { recoverable: boolean; action: string }\n> = {\n [FailureMode.INVALID_INPUT]: {\n recoverable: false,\n action: 'Return validation errors to caller',\n },\n [FailureMode.UNSUPPORTED_FRAMEWORK]: {\n recoverable: true,\n action: 'Fall back to Commander.js framework',\n },\n [FailureMode.ENDPOINT_PARSING_FAILURE]: {\n recoverable: true,\n action: 'Skip endpoint with warning',\n },\n [FailureMode.TYPE_MAPPING_FAILURE]: {\n recoverable: true,\n action: 'Use fallback type (string)',\n },\n [FailureMode.CONTRACT_MISMATCH]: {\n recoverable: false,\n action: 'Return version incompatibility error',\n },\n [FailureMode.RESOURCE_EXHAUSTION]: {\n recoverable: false,\n action: 'Return resource limit error',\n },\n [FailureMode.TIMEOUT]: {\n recoverable: false,\n action: 'Return timeout error with partial results if available',\n },\n};\n\n// =============================================================================\n// 10. VERSIONING RULES\n// =============================================================================\n\n/**\n * Versioning rules for generated CLI artifacts\n */\nexport const VERSIONING_RULES = {\n /** Agent version follows semver */\n agentVersionFormat: 'semver',\n /** Generated CLI version from packageConfig */\n cliVersionSource: 'packageVersion',\n /** Contract version from contractVersion field */\n contractVersionSource: 'contractVersion',\n /** Breaking changes require major version bump */\n breakingChangePolicies: [\n 'Removal of commands requires major version bump',\n 'Removal of options requires major version bump',\n 'Option type changes require major version bump',\n ],\n /** Determinism hash format */\n determinismHashFormat: 'SHA-256 of normalized input',\n} as const;\n\n// =============================================================================\n// 11. PERSISTENCE RULES (ruvector-service)\n// =============================================================================\n\n/**\n * Data that MUST be persisted to ruvector-service\n */\nexport const PERSISTED_DATA = [\n 'DecisionEvent (all decisions)',\n 'Generation metrics (duration, command counts)',\n 'Confidence scores',\n 'Input/output hashes for reproducibility',\n 'Error events with context',\n 'Telemetry data (latency, resource usage)',\n] as const;\n\n/**\n * Data that MUST NOT be persisted\n */\nexport const NON_PERSISTED_DATA = [\n 'Generated code content (too large)',\n 'Full endpoint definitions (reference by hash only)',\n 'API keys or credentials',\n 'File system paths',\n 'Internal processing state',\n] as const;\n\n// =============================================================================\n// 12. DOWNSTREAM CONSUMERS\n// =============================================================================\n\n/**\n * Systems that MAY consume this agent's output\n */\nexport const DOWNSTREAM_CONSUMERS = [\n {\n system: 'LLM-Observatory',\n consumedData: ['DecisionEvents', 'Metrics', 'Telemetry'],\n purpose: 'Observability and monitoring',\n },\n {\n system: 'agentics-cli',\n consumedData: ['Generated CLI artifacts', 'Command specs'],\n purpose: 'Developer tooling integration',\n },\n {\n system: 'CI/CD Pipeline',\n consumedData: ['Generated CLI packages', 'Build commands'],\n purpose: 'Automated build and publish',\n },\n {\n system: 'Package Registry (npm)',\n consumedData: ['Generated CLI packages'],\n purpose: 'Distribution',\n },\n] as const;\n","/**\n * API Translation Agent Contract\n *\n * PROMPT 1 DELIVERABLE: Full Agent Contract & Boundary Definition\n *\n * Agent Name: API Translation Agent\n * Classification: TRANSLATION\n * decision_type: \"api_translation\"\n *\n * @module agents/contracts/api-translation.contract\n */\n\nimport { z } from 'zod';\nimport type {\n CanonicalSchema,\n EndpointDefinition,\n TypeDefinition,\n ParameterDefinition,\n} from '../../types/canonical-schema.js';\n\n// =============================================================================\n// 1. AGENT PURPOSE STATEMENT (Precise, Non-Marketing)\n// =============================================================================\n/**\n * The API Translation Agent is a TRANSLATION-class agent responsible for\n * converting API schemas across different interface representations while\n * preserving semantic equivalence.\n *\n * It translates between:\n * - REST (OpenAPI/HTTP endpoint representations)\n * - SDK (Language-specific client library structures)\n * - CLI (Command-line interface definitions)\n *\n * The agent ensures:\n * - Lossless or documented-lossy translation between formats\n * - Semantic equivalence verification\n * - Compatibility detection for incompatible translations\n * - Translation mapping metadata for traceability\n *\n * The agent does NOT:\n * - Execute generated code\n * - Modify runtime behavior\n * - Orchestrate workflows\n * - Enforce policies\n * - Access SQL databases directly\n * - Generate actual implementation code (that's SDK Generator's job)\n */\nexport const AGENT_PURPOSE = `\nAPI Translation Agent: TRANSLATION-class agent for converting API schemas\nacross REST, SDK, and CLI representations with semantic equivalence preservation.\n` as const;\n\n/**\n * Agent identifier\n */\nexport const AGENT_ID = 'api-translation-agent' as const;\n\n/**\n * Agent version\n */\nexport const AGENT_VERSION = '1.0.0' as const;\n\n// =============================================================================\n// 2. INPUT SCHEMA REFERENCES (agentics-contracts)\n// =============================================================================\n\n/**\n * Supported interface representation formats\n */\nexport enum InterfaceFormat {\n /** REST/HTTP endpoint representation (OpenAPI-style) */\n REST = 'rest',\n /** SDK client library structure */\n SDK = 'sdk',\n /** Command-line interface definition */\n CLI = 'cli',\n}\n\nexport const InterfaceFormatSchema = z.nativeEnum(InterfaceFormat);\n\n/**\n * Translation direction specifier\n */\nexport const TranslationDirectionSchema = z.object({\n /** Source format */\n from: InterfaceFormatSchema,\n /** Target format */\n to: InterfaceFormatSchema,\n});\n\nexport type TranslationDirection = z.infer<typeof TranslationDirectionSchema>;\n\n/**\n * REST endpoint representation\n */\nexport const RESTEndpointSchema = z.object({\n /** HTTP method */\n method: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']),\n /** URL path template */\n path: z.string(),\n /** Operation identifier */\n operationId: z.string(),\n /** Path parameters */\n pathParams: z.array(z.string()).default([]),\n /** Query parameters */\n queryParams: z.array(z.string()).default([]),\n /** Header parameters */\n headerParams: z.array(z.string()).default([]),\n /** Request body type reference */\n requestBody: z.string().optional(),\n /** Response type reference */\n responseType: z.string().optional(),\n /** Content type */\n contentType: z.string().default('application/json'),\n /** Supports streaming */\n streaming: z.boolean().default(false),\n /** Tags for grouping */\n tags: z.array(z.string()).default([]),\n});\n\nexport type RESTEndpoint = z.infer<typeof RESTEndpointSchema>;\n\n/**\n * SDK method representation\n */\nexport const SDKMethodSchema = z.object({\n /** Method name (camelCase) */\n name: z.string(),\n /** Class/module this method belongs to */\n className: z.string(),\n /** Method parameters */\n parameters: z.array(\n z.object({\n name: z.string(),\n type: z.string(),\n required: z.boolean(),\n default: z.unknown().optional(),\n })\n ),\n /** Return type */\n returnType: z.string(),\n /** Async method */\n async: z.boolean().default(true),\n /** Streaming return type */\n streaming: z.boolean().default(false),\n /** JSDoc/docstring description */\n description: z.string().optional(),\n /** Throws/raises */\n throws: z.array(z.string()).default([]),\n});\n\nexport type SDKMethod = z.infer<typeof SDKMethodSchema>;\n\n/**\n * CLI command representation\n */\nexport const CLICommandSchema = z.object({\n /** Command name (kebab-case) */\n command: z.string(),\n /** Parent command (for subcommands) */\n parent: z.string().optional(),\n /** Positional arguments */\n arguments: z.array(\n z.object({\n name: z.string(),\n description: z.string(),\n required: z.boolean(),\n variadic: z.boolean().default(false),\n })\n ),\n /** Flag options */\n options: z.array(\n z.object({\n flag: z.string(), // e.g., '-v, --verbose'\n description: z.string(),\n type: z.enum(['boolean', 'string', 'number', 'array']),\n required: z.boolean().default(false),\n default: z.unknown().optional(),\n })\n ),\n /** Command description */\n description: z.string(),\n /** Usage examples */\n examples: z.array(z.string()).default([]),\n});\n\nexport type CLICommand = z.infer<typeof CLICommandSchema>;\n\n/**\n * Translation request input schema\n */\nexport const APITranslationRequestSchema = z.object({\n /** Unique request identifier for tracing */\n requestId: z.string().uuid(),\n\n /** Translation direction */\n direction: TranslationDirectionSchema,\n\n /** Source canonical schema (required for REST/SDK inputs) */\n sourceSchema: z\n .custom<CanonicalSchema>(\n (val: unknown) =>\n typeof val === 'object' &&\n val !== null &&\n 'metadata' in val &&\n 'types' in val &&\n 'endpoints' in val,\n 'Invalid CanonicalSchema'\n )\n .optional(),\n\n /** Source REST endpoints (for REST → SDK/CLI) */\n restEndpoints: z.array(RESTEndpointSchema).optional(),\n\n /** Source SDK methods (for SDK → REST/CLI) */\n sdkMethods: z.array(SDKMethodSchema).optional(),\n\n /** Source CLI commands (for CLI → REST/SDK) */\n cliCommands: z.array(CLICommandSchema).optional(),\n\n /** Translation options */\n options: z\n .object({\n /** Strict mode (fail on any semantic loss) */\n strict: z.boolean().default(false),\n /** Include translation mappings in output */\n includeMappings: z.boolean().default(true),\n /** Preserve original identifiers where possible */\n preserveIdentifiers: z.boolean().default(true),\n /** Naming convention for target format */\n namingConvention: z.enum(['camelCase', 'snake_case', 'kebab-case', 'PascalCase']).optional(),\n /** Group commands/methods by tag */\n groupByTag: z.boolean().default(true),\n })\n .default({}),\n\n /** Tracing context for observability */\n tracingContext: z\n .object({\n traceId: z.string().optional(),\n spanId: z.string().optional(),\n parentSpanId: z.string().optional(),\n })\n .optional(),\n});\n\nexport type APITranslationRequest = z.infer<typeof APITranslationRequestSchema>;\n\n// =============================================================================\n// 3. OUTPUT SCHEMA / ARTIFACT REFERENCES\n// =============================================================================\n\n/**\n * Translation mapping entry (traces source to target)\n */\nexport const TranslationMappingSchema = z.object({\n /** Source identifier */\n sourceId: z.string(),\n /** Source format */\n sourceFormat: InterfaceFormatSchema,\n /** Target identifier */\n targetId: z.string(),\n /** Target format */\n targetFormat: InterfaceFormatSchema,\n /** Mapping confidence (1.0 = exact, <1.0 = semantic loss) */\n confidence: z.number().min(0).max(1),\n /** Semantic loss description (if any) */\n semanticLoss: z.string().optional(),\n /** Transformation applied */\n transformation: z.string(),\n});\n\nexport type TranslationMapping = z.infer<typeof TranslationMappingSchema>;\n\n/**\n * Compatibility issue detected during translation\n */\nexport const CompatibilityIssueSchema = z.object({\n /** Issue severity */\n severity: z.enum(['error', 'warning', 'info']),\n /** Issue code */\n code: z.string(),\n /** Human-readable message */\n message: z.string(),\n /** Source element that caused the issue */\n sourceElement: z.string(),\n /** Suggested resolution */\n resolution: z.string().optional(),\n});\n\nexport type CompatibilityIssue = z.infer<typeof CompatibilityIssueSchema>;\n\n/**\n * Translation result for a single direction\n */\nexport const TranslationResultSchema = z.object({\n /** Translation direction */\n direction: TranslationDirectionSchema,\n /** Translated REST endpoints */\n restEndpoints: z.array(RESTEndpointSchema).optional(),\n /** Translated SDK methods */\n sdkMethods: z.array(SDKMethodSchema).optional(),\n /** Translated CLI commands */\n cliCommands: z.array(CLICommandSchema).optional(),\n /** Translation mappings */\n mappings: z.array(TranslationMappingSchema),\n /** Compatibility issues */\n issues: z.array(CompatibilityIssueSchema),\n /** Overall translation confidence */\n overallConfidence: z.number().min(0).max(1),\n});\n\nexport type TranslationResult = z.infer<typeof TranslationResultSchema>;\n\n/**\n * Complete API translation response\n */\nexport const APITranslationResponseSchema = z.object({\n /** Original request ID */\n requestId: z.string().uuid(),\n /** Translation success status */\n success: z.boolean(),\n /** Translation result */\n result: TranslationResultSchema.optional(),\n /** Compatibility metadata */\n compatibility: z.object({\n /** Schema version used */\n schemaVersion: z.string(),\n /** Agent version */\n agentVersion: z.string(),\n /** Translation timestamp */\n translatedAt: z.string().datetime(),\n /** Determinism hash (same input = same hash) */\n determinismHash: z.string(),\n }),\n /** Warnings (non-fatal issues) */\n warnings: z.array(z.string()),\n /** Errors (if success=false) */\n errors: z.array(z.string()),\n});\n\nexport type APITranslationResponse = z.infer<typeof APITranslationResponseSchema>;\n\n// =============================================================================\n// 4. DECISION EVENT MAPPING\n// =============================================================================\n\n/**\n * Decision types for API Translation Agent\n */\nexport enum APITranslationDecisionType {\n /** Primary decision: API translation */\n API_TRANSLATION = 'api_translation',\n /** Format conversion decision */\n FORMAT_CONVERSION = 'format_conversion',\n /** Identifier mapping decision */\n IDENTIFIER_MAPPING = 'identifier_mapping',\n /** Compatibility detection decision */\n COMPATIBILITY_DETECTION = 'compatibility_detection',\n /** Semantic equivalence decision */\n SEMANTIC_EQUIVALENCE = 'semantic_equivalence',\n}\n\n/**\n * Confidence semantics for API translation\n * - DETERMINISTIC: Same input always produces same output (hash-verifiable)\n * - HEURISTIC: Best-effort mapping with confidence score\n * - CONSTRAINT_BASED: Output satisfies defined constraints\n */\nexport enum TranslationConfidenceSemantics {\n /** Output is deterministic and reproducible */\n DETERMINISTIC = 'deterministic',\n /** Output uses heuristic mapping */\n HEURISTIC = 'heuristic',\n /** Output satisfies defined constraints */\n CONSTRAINT_BASED = 'constraint_based',\n}\n\n/**\n * Decision event for API translation\n */\nexport const APITranslationDecisionEventSchema = z.object({\n /** Event unique identifier */\n eventId: z.string().uuid(),\n /** Decision type */\n decisionType: z.nativeEnum(APITranslationDecisionType),\n /** Agent identifier */\n agentId: z.literal('api-translation-agent'),\n /** Agent version */\n agentVersion: z.string(),\n /** Request ID this decision relates to */\n requestId: z.string().uuid(),\n /** Timestamp of decision */\n timestamp: z.string().datetime(),\n /** Confidence semantics */\n confidenceSemantics: z.nativeEnum(TranslationConfidenceSemantics),\n /** Confidence score (0.0-1.0) */\n confidenceScore: z.number().min(0).max(1),\n /** Input hash for reproducibility */\n inputHash: z.string(),\n /** Output hash for verification */\n outputHash: z.string(),\n /** Decision rationale */\n rationale: z.string(),\n /** Constraints applied */\n constraintsApplied: z.array(z.string()).optional(),\n /** Decision metadata */\n metadata: z.record(z.unknown()).optional(),\n});\n\nexport type APITranslationDecisionEvent = z.infer<typeof APITranslationDecisionEventSchema>;\n\n// =============================================================================\n// 5. CLI CONTRACT\n// =============================================================================\n\n/**\n * CLI invocation shape for API Translation Agent\n *\n * Primary command: translate\n *\n * Usage:\n * llm-forge translate <input> [options]\n *\n * Arguments:\n * input Canonical schema (JSON) or API specification\n *\n * Options:\n * --from <format> Source format (rest, sdk, cli)\n * --to <format> Target format (rest, sdk, cli)\n * -o, --output <file> Output file\n * --strict Strict mode (fail on semantic loss)\n * --include-mappings Include translation mappings\n * --naming <convention> Naming convention (camelCase, snake_case, kebab-case)\n * --emit-events Emit DecisionEvents to ruvector-service\n * --dry-run Validate without producing output\n * -v, --verbose Verbose output\n */\nexport const CLIContract = {\n command: 'translate',\n arguments: [\n {\n name: 'input',\n description: 'Canonical schema (JSON) or API specification',\n required: true,\n },\n ],\n options: [\n {\n flag: '--from <format>',\n description: 'Source format (rest, sdk, cli)',\n default: 'rest',\n },\n {\n flag: '--to <format>',\n description: 'Target format (rest, sdk, cli)',\n default: 'sdk',\n },\n {\n flag: '-o, --output <file>',\n description: 'Output file',\n },\n {\n flag: '--strict',\n description: 'Strict mode (fail on semantic loss)',\n },\n {\n flag: '--include-mappings',\n description: 'Include translation mappings in output',\n default: true,\n },\n {\n flag: '--naming <convention>',\n description: 'Naming convention (camelCase, snake_case, kebab-case, PascalCase)',\n },\n {\n flag: '--emit-events',\n description: 'Emit DecisionEvents to ruvector-service',\n },\n {\n flag: '--dry-run',\n description: 'Validate without producing output',\n },\n {\n flag: '-v, --verbose',\n description: 'Verbose output',\n },\n ],\n} as const;\n\n// =============================================================================\n// 6. GENERATION / TRANSLATION / VALIDATION CLASSIFICATION\n// =============================================================================\n\n/**\n * Agent classification: TRANSLATION\n *\n * This agent is classified as TRANSLATION because:\n * 1. It converts between equivalent interface representations\n * 2. It preserves semantic meaning across formats\n * 3. It detects and reports semantic loss\n * 4. It does NOT generate new artifacts (that's SDK Generator's job)\n *\n * The translation is:\n * - Deterministic: Same input → Same output (hash-verifiable)\n * - Stateless: No persistent state between invocations\n * - Idempotent: Multiple invocations with same input produce identical output\n * - Lossless/Documented-Lossy: Semantic loss is detected and reported\n */\nexport const AGENT_CLASSIFICATION = {\n type: 'TRANSLATION' as const,\n deterministic: true,\n stateless: true,\n idempotent: true,\n characteristics: [\n 'Converts between REST, SDK, and CLI representations',\n 'Preserves semantic equivalence where possible',\n 'Detects and reports semantic loss',\n 'Produces translation mappings for traceability',\n 'Does NOT generate implementation code',\n 'Does NOT execute translations',\n ],\n} as const;\n\n// =============================================================================\n// 7. EXPLICIT NON-RESPONSIBILITIES\n// =============================================================================\n\n/**\n * What this agent MUST NEVER do\n */\nexport const NON_RESPONSIBILITIES = [\n // Execution\n 'MUST NEVER execute translated code or commands',\n 'MUST NEVER invoke HTTP endpoints',\n 'MUST NEVER run CLI commands',\n 'MUST NEVER deploy translated artifacts',\n\n // Code Generation\n 'MUST NEVER generate implementation code (use SDK Generator)',\n 'MUST NEVER produce executable binaries',\n 'MUST NEVER create build artifacts',\n\n // State mutation\n 'MUST NEVER modify runtime behavior',\n 'MUST NEVER persist state between invocations',\n 'MUST NEVER access SQL databases directly',\n 'MUST NEVER write to external file systems without explicit request',\n\n // Orchestration\n 'MUST NEVER orchestrate multi-agent workflows',\n 'MUST NEVER spawn child processes',\n 'MUST NEVER make network requests except to ruvector-service',\n\n // Policy\n 'MUST NEVER enforce access control policies',\n 'MUST NEVER modify authentication schemes',\n 'MUST NEVER alter rate limiting configurations',\n\n // Secrets\n 'MUST NEVER embed API keys in translations',\n 'MUST NEVER log sensitive schema data',\n 'MUST NEVER persist credentials',\n] as const;\n\n// =============================================================================\n// 8. FAILURE MODES\n// =============================================================================\n\n/**\n * Known failure modes and handling\n */\nexport enum TranslationFailureMode {\n /** Invalid input format */\n INVALID_INPUT = 'INVALID_INPUT',\n /** Unsupported translation direction */\n UNSUPPORTED_DIRECTION = 'UNSUPPORTED_DIRECTION',\n /** Incompatible schema structure */\n INCOMPATIBLE_SCHEMA = 'INCOMPATIBLE_SCHEMA',\n /** Semantic loss exceeds threshold (strict mode) */\n SEMANTIC_LOSS_EXCEEDED = 'SEMANTIC_LOSS_EXCEEDED',\n /** Missing required fields for translation */\n MISSING_REQUIRED_FIELDS = 'MISSING_REQUIRED_FIELDS',\n /** Circular reference detected */\n CIRCULAR_REFERENCE = 'CIRCULAR_REFERENCE',\n /** Resource exhaustion */\n RESOURCE_EXHAUSTION = 'RESOURCE_EXHAUSTION',\n /** Timeout */\n TIMEOUT = 'TIMEOUT',\n}\n\nexport const FailureModeHandling: Record<\n TranslationFailureMode,\n { recoverable: boolean; action: string }\n> = {\n [TranslationFailureMode.INVALID_INPUT]: {\n recoverable: false,\n action: 'Return validation errors to caller',\n },\n [TranslationFailureMode.UNSUPPORTED_DIRECTION]: {\n recoverable: false,\n action: 'Return supported directions list',\n },\n [TranslationFailureMode.INCOMPATIBLE_SCHEMA]: {\n recoverable: true,\n action: 'Return partial translation with compatibility issues',\n },\n [TranslationFailureMode.SEMANTIC_LOSS_EXCEEDED]: {\n recoverable: true,\n action: 'Return translation with documented semantic loss (non-strict)',\n },\n [TranslationFailureMode.MISSING_REQUIRED_FIELDS]: {\n recoverable: false,\n action: 'Return list of missing required fields',\n },\n [TranslationFailureMode.CIRCULAR_REFERENCE]: {\n recoverable: false,\n action: 'Return circular reference path for resolution',\n },\n [TranslationFailureMode.RESOURCE_EXHAUSTION]: {\n recoverable: false,\n action: 'Return resource limit error',\n },\n [TranslationFailureMode.TIMEOUT]: {\n recoverable: false,\n action: 'Return timeout error with partial results if available',\n },\n};\n\n// =============================================================================\n// 9. VERSIONING RULES\n// =============================================================================\n\n/**\n * Versioning rules for translation artifacts\n */\nexport const VERSIONING_RULES = {\n /** Agent version follows semver */\n agentVersionFormat: 'semver',\n /** Translation output preserves source version */\n outputVersionSource: 'sourceSchema.metadata.version',\n /** Schema version from CanonicalSchema.metadata.version */\n schemaVersionSource: 'schema.metadata.version',\n /** Breaking changes require major version bump */\n breakingChangePolicies: [\n 'New required translation fields require major version bump',\n 'Removal of translation directions requires major version bump',\n 'Mapping format changes require major version bump',\n ],\n /** Determinism hash format */\n determinismHashFormat: 'SHA-256 of normalized input',\n} as const;\n\n// =============================================================================\n// 10. PERSISTENCE RULES (ruvector-service)\n// =============================================================================\n\n/**\n * Data that MUST be persisted to ruvector-service\n */\nexport const PERSISTED_DATA = [\n 'DecisionEvent (all translation decisions)',\n 'Translation mappings (source → target)',\n 'Compatibility issues detected',\n 'Confidence scores per translation',\n 'Input/output hashes for reproducibility',\n 'Error events with stack traces',\n 'Telemetry data (latency, resource usage)',\n] as const;\n\n/**\n * Data that MUST NOT be persisted\n */\nexport const NON_PERSISTED_DATA = [\n 'Full translated output (reference by hash only)',\n 'Full source schema (reference by hash only)',\n 'API keys or credentials',\n 'File system paths',\n 'Internal processing state',\n 'Raw HTTP request/response bodies',\n] as const;\n\n// =============================================================================\n// 11. DOWNSTREAM CONSUMERS\n// =============================================================================\n\n/**\n * Systems that MAY consume this agent's output\n */\nexport const DOWNSTREAM_CONSUMERS = [\n {\n system: 'SDK Generator Agent',\n consumedData: ['Translated SDK method definitions'],\n purpose: 'Use translated SDK structures for code generation',\n },\n {\n system: 'LLM-Observatory',\n consumedData: ['DecisionEvents', 'Compatibility issues', 'Telemetry'],\n purpose: 'Observability and monitoring',\n },\n {\n system: 'agentics-cli',\n consumedData: ['Translated CLI command definitions'],\n purpose: 'CLI scaffolding and generation',\n },\n {\n system: 'Schema Registry',\n consumedData: ['Translation mappings', 'Version compatibility data'],\n purpose: 'Cross-format schema tracking',\n },\n {\n system: 'Documentation Generator',\n consumedData: ['Translated endpoint/method descriptions'],\n purpose: 'Cross-format documentation',\n },\n] as const;\n\n// =============================================================================\n// 12. TRANSLATION RULES (Interface-Specific)\n// =============================================================================\n\n/**\n * Translation rules for REST → SDK\n */\nexport const REST_TO_SDK_RULES = {\n /** Map HTTP method to SDK method naming */\n methodNaming: {\n GET: 'get{Resource}',\n POST: 'create{Resource}',\n PUT: 'update{Resource}',\n PATCH: 'patch{Resource}',\n DELETE: 'delete{Resource}',\n },\n /** Map path params to method params */\n pathParamMapping: 'positional',\n /** Map query params to options object */\n queryParamMapping: 'options',\n /** Map request body to method param */\n requestBodyMapping: 'data',\n /** Map response to return type */\n responseMapping: 'Promise<T>',\n} as const;\n\n/**\n * Translation rules for SDK → CLI\n */\nexport const SDK_TO_CLI_RULES = {\n /** Map method name to command */\n commandNaming: 'kebab-case',\n /** Map class to command group */\n classMapping: 'subcommand',\n /** Map required params to arguments */\n requiredParamMapping: 'positional',\n /** Map optional params to flags */\n optionalParamMapping: 'flags',\n /** Map async returns to stdout */\n returnMapping: 'stdout-json',\n} as const;\n\n/**\n * Translation rules for CLI → REST\n */\nexport const CLI_TO_REST_RULES = {\n /** Map command to endpoint path */\n commandToPath: '/{parent}/{command}',\n /** Map positional args to path params */\n argsToPathParams: true,\n /** Map flags to query params */\n flagsToQueryParams: true,\n /** Infer HTTP method from command name */\n methodInference: {\n get: 'GET',\n list: 'GET',\n create: 'POST',\n add: 'POST',\n update: 'PUT',\n edit: 'PATCH',\n delete: 'DELETE',\n remove: 'DELETE',\n },\n} as const;\n","/**\n * API Translator\n *\n * Core translation engine for converting between REST, SDK, and CLI representations.\n *\n * This is the RUNTIME implementation of the API Translation Agent.\n * It follows the contract defined in api-translation.contract.ts.\n *\n * @module translators/api-translator\n */\n\nimport { createHash, randomUUID } from 'crypto';\nimport type {\n CanonicalSchema,\n EndpointDefinition,\n TypeDefinition,\n ParameterDefinition,\n ParameterLocation,\n} from '../types/canonical-schema.js';\nimport { HTTPMethod } from '../types/canonical-schema.js';\nimport {\n type APITranslationRequest,\n type APITranslationResponse,\n type TranslationResult,\n type TranslationMapping,\n type CompatibilityIssue,\n type RESTEndpoint,\n type SDKMethod,\n type CLICommand,\n InterfaceFormat,\n REST_TO_SDK_RULES,\n SDK_TO_CLI_RULES,\n CLI_TO_REST_RULES,\n TranslationFailureMode,\n APITranslationRequestSchema,\n} from '../agents/contracts/api-translation.contract.js';\nimport { TranslationEventFactory, hashObject } from '../agents/contracts/decision-events.js';\n\n/** Agent version constant */\nconst AGENT_VERSION = '1.0.0';\n\n/**\n * Translation options\n */\nexport interface TranslatorOptions {\n /** Emit decision events */\n emitEvents?: boolean;\n /** Event callback for ruvector-service integration */\n onEvent?: (event: unknown) => void;\n}\n\n/**\n * APITranslator class\n *\n * Translates between REST, SDK, and CLI representations while\n * preserving semantic equivalence.\n */\nexport class APITranslator {\n private eventFactory: TranslationEventFactory;\n private options: TranslatorOptions;\n\n constructor(options: TranslatorOptions = {}) {\n this.eventFactory = new TranslationEventFactory(AGENT_VERSION);\n this.options = options;\n }\n\n /**\n * Execute a translation request\n *\n * @param request - Translation request\n * @returns Translation response\n */\n async translate(request: APITranslationRequest): Promise<APITranslationResponse> {\n const startTime = Date.now();\n const inputHash = hashObject(request);\n\n // Validate request\n const validation = APITranslationRequestSchema.safeParse(request);\n if (!validation.success) {\n return this.createErrorResponse(request.requestId, inputHash, [\n `Invalid request: ${validation.error.message}`,\n ]);\n }\n\n // Emit initiated event\n if (this.options.emitEvents && this.options.onEvent) {\n this.options.onEvent(\n this.eventFactory.createInitiatedEvent(request.requestId, inputHash, {\n sourceFormat: request.direction.from,\n targetFormat: request.direction.to,\n sourceElementCount: this.countSourceElements(request),\n schemaVersion: request.sourceSchema?.metadata?.version,\n strict: request.options?.strict ?? false,\n })\n );\n }\n\n try {\n const result = await this.executeTranslation(request);\n const durationMs = Date.now() - startTime;\n const outputHash = hashObject(result);\n\n // Emit completed event\n if (this.options.emitEvents && this.options.onEvent) {\n this.options.onEvent(\n this.eventFactory.createCompletedEvent(request.requestId, inputHash, outputHash, {\n success: true,\n sourceFormat: request.direction.from,\n targetFormat: request.direction.to,\n translatedElementCount: this.countResultElements(result),\n mappingCount: result.mappings.length,\n durationMs,\n overallConfidence: result.overallConfidence,\n warningCount: result.issues.filter((i: CompatibilityIssue) => i.severity === 'warning').length,\n errorCount: result.issues.filter((i: CompatibilityIssue) => i.severity === 'error').length,\n determinismHash: outputHash,\n })\n );\n }\n\n return {\n requestId: request.requestId,\n success: true,\n result,\n compatibility: {\n schemaVersion: request.sourceSchema?.metadata?.version ?? '1.0.0',\n agentVersion: AGENT_VERSION,\n translatedAt: new Date().toISOString(),\n determinismHash: outputHash,\n },\n warnings: result.issues.filter((i: CompatibilityIssue) => i.severity === 'warning').map((i: CompatibilityIssue) => i.message),\n errors: [],\n };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n\n // Emit failed event\n if (this.options.emitEvents && this.options.onEvent) {\n this.options.onEvent(\n this.eventFactory.createFailedEvent(request.requestId, inputHash, {\n failureMode: TranslationFailureMode.INCOMPATIBLE_SCHEMA,\n errorMessage,\n recoverable: false,\n partialResults: false,\n sourceFormat: request.direction.from,\n targetFormat: request.direction.to,\n })\n );\n }\n\n return this.createErrorResponse(request.requestId, inputHash, [errorMessage]);\n }\n }\n\n /**\n * Execute the translation based on direction\n */\n private async executeTranslation(request: APITranslationRequest): Promise<TranslationResult> {\n const { direction, sourceSchema, restEndpoints, sdkMethods, cliCommands, options } = request;\n const mappings: TranslationMapping[] = [];\n const issues: CompatibilityIssue[] = [];\n\n let result: Partial<TranslationResult> = {\n direction,\n mappings,\n issues,\n overallConfidence: 1.0,\n };\n\n // Execute translation based on direction\n if (direction.from === InterfaceFormat.REST && direction.to === InterfaceFormat.SDK) {\n const endpoints = restEndpoints ?? this.extractRESTEndpoints(sourceSchema);\n const translated = this.translateRESTToSDK(endpoints, mappings, issues, options);\n result.sdkMethods = translated;\n } else if (direction.from === InterfaceFormat.REST && direction.to === InterfaceFormat.CLI) {\n const endpoints = restEndpoints ?? this.extractRESTEndpoints(sourceSchema);\n const translated = this.translateRESTToCLI(endpoints, mappings, issues, options);\n result.cliCommands = translated;\n } else if (direction.from === InterfaceFormat.SDK && direction.to === InterfaceFormat.REST) {\n if (!sdkMethods) {\n throw new Error('SDK methods required for SDK → REST translation');\n }\n const translated = this.translateSDKToREST(sdkMethods, mappings, issues, options);\n result.restEndpoints = translated;\n } else if (direction.from === InterfaceFormat.SDK && direction.to === InterfaceFormat.CLI) {\n if (!sdkMethods) {\n throw new Error('SDK methods required for SDK → CLI translation');\n }\n const translated = this.translateSDKToCLI(sdkMethods, mappings, issues, options);\n result.cliCommands = translated;\n } else if (direction.from === InterfaceFormat.CLI && direction.to === InterfaceFormat.REST) {\n if (!cliCommands) {\n throw new Error('CLI commands required for CLI → REST translation');\n }\n const translated = this.translateCLIToREST(cliCommands, mappings, issues, options);\n result.restEndpoints = translated;\n } else if (direction.from === InterfaceFormat.CLI && direction.to === InterfaceFormat.SDK) {\n if (!cliCommands) {\n throw new Error('CLI commands required for CLI → SDK translation');\n }\n const translated = this.translateCLIToSDK(cliCommands, mappings, issues, options);\n result.sdkMethods = translated;\n } else {\n throw new Error(`Unsupported translation direction: ${direction.from} → ${direction.to}`);\n }\n\n // Calculate overall confidence\n result.overallConfidence = this.calculateOverallConfidence(mappings, issues);\n\n // Check strict mode\n if (options?.strict && result.overallConfidence < 1.0) {\n throw new Error(\n `Semantic loss detected in strict mode. Confidence: ${result.overallConfidence}`\n );\n }\n\n return result as TranslationResult;\n }\n\n // =============================================================================\n // REST → SDK TRANSLATION\n // =============================================================================\n\n private translateRESTToSDK(\n endpoints: RESTEndpoint[],\n mappings: TranslationMapping[],\n issues: CompatibilityIssue[],\n options?: APITranslationRequest['options']\n ): SDKMethod[] {\n const methods: SDKMethod[] = [];\n\n for (const endpoint of endpoints) {\n const methodName = this.deriveSDKMethodName(endpoint);\n const className = this.deriveClassName(endpoint);\n\n const method: SDKMethod = {\n name: methodName,\n className,\n parameters: this.convertRESTParamsToSDK(endpoint),\n returnType: endpoint.responseType ?? 'unknown',\n async: true,\n streaming: endpoint.streaming,\n description: `${endpoint.method} ${endpoint.path}`,\n throws: ['ApiError'],\n };\n\n methods.push(method);\n\n // Record mapping\n mappings.push({\n sourceId: endpoint.operationId,\n sourceFormat: InterfaceFormat.REST,\n targetId: `${className}.${methodName}`,\n targetFormat: InterfaceFormat.SDK,\n confidence: 1.0,\n transformation: 'REST_TO_SDK_METHOD',\n });\n }\n\n return methods;\n }\n\n private deriveSDKMethodName(endpoint: RESTEndpoint): string {\n // Use operation ID if available, otherwise derive from method + path\n if (endpoint.operationId) {\n return this.toCamelCase(endpoint.operationId);\n }\n\n const method = endpoint.method.toLowerCase();\n const pathParts = endpoint.path.split('/').filter((p: string) => p && !p.startsWith('{'));\n const resource = pathParts[pathParts.length - 1] ?? 'resource';\n\n const prefix =\n REST_TO_SDK_RULES.methodNaming[endpoint.method as keyof typeof REST_TO_SDK_RULES.methodNaming]\n ?.replace('{Resource}', '') ?? method;\n\n return prefix + this.toPascalCase(resource);\n }\n\n private deriveClassName(endpoint: RESTEndpoint): string {\n // Derive class name from tags or path\n if (endpoint.tags.length > 0 && endpoint.tags[0]) {\n return this.toPascalCase(endpoint.tags[0]) + 'Client';\n }\n\n const pathParts = endpoint.path.split('/').filter((p: string) => p && !p.startsWith('{'));\n const resource = pathParts[0] ?? 'Api';\n return this.toPascalCase(resource) + 'Client';\n }\n\n private convertRESTParamsToSDK(\n endpoint: RESTEndpoint\n ): SDKMethod['parameters'] {\n const params: SDKMethod['parameters'] = [];\n\n // Path parameters (positional)\n for (const param of endpoint.pathParams) {\n params.push({\n name: this.toCamelCase(param),\n type: 'string',\n required: true,\n });\n }\n\n // Request body\n if (endpoint.requestBody) {\n params.push({\n name: 'data',\n type: endpoint.requestBody,\n required: true,\n });\n }\n\n // Query parameters (as options object)\n if (endpoint.queryParams.length > 0) {\n params.push({\n name: 'options',\n type: `{ ${endpoint.queryParams.map((q: string) => `${this.toCamelCase(q)}?: string`).join('; ')} }`,\n required: false,\n });\n }\n\n return params;\n }\n\n // =============================================================================\n // REST → CLI TRANSLATION\n // =============================================================================\n\n private translateRESTToCLI(\n endpoints: RESTEndpoint[],\n mappings: TranslationMapping[],\n issues: CompatibilityIssue[],\n options?: APITranslationRequest['options']\n ): CLICommand[] {\n const commands: CLICommand[] = [];\n\n for (const endpoint of endpoints) {\n const commandName = this.deriveCLICommandName(endpoint);\n const parent = endpoint.tags[0] ? this.toKebabCase(endpoint.tags[0]) : undefined;\n\n const command: CLICommand = {\n command: commandName,\n parent,\n arguments: this.convertRESTPathParamsToCLIArgs(endpoint),\n options: this.convertRESTQueryParamsToCLIOptions(endpoint),\n description: `${endpoint.method} ${endpoint.path}`,\n examples: [`${parent ? parent + ' ' : ''}${commandName} <id>`],\n };\n\n commands.push(command);\n\n // Record mapping\n mappings.push({\n sourceId: endpoint.operationId,\n sourceFormat: InterfaceFormat.REST,\n targetId: parent ? `${parent} ${commandName}` : commandName,\n targetFormat: InterfaceFormat.CLI,\n confidence: 1.0,\n transformation: 'REST_TO_CLI_COMMAND',\n });\n }\n\n return commands;\n }\n\n private deriveCLICommandName(endpoint: RESTEndpoint): string {\n // Derive command name from operation ID or method + resource\n if (endpoint.operationId) {\n return this.toKebabCase(endpoint.operationId);\n }\n\n const method = endpoint.method.toLowerCase();\n const pathParts = endpoint.path.split('/').filter((p: string) => p && !p.startsWith('{'));\n const resource = pathParts[pathParts.length - 1] ?? 'resource';\n\n return `${method}-${this.toKebabCase(resource)}`;\n }\n\n private convertRESTPathParamsToCLIArgs(\n endpoint: RESTEndpoint\n ): CLICommand['arguments'] {\n return endpoint.pathParams.map((param: string) => ({\n name: this.toKebabCase(param),\n description: `${param} parameter`,\n required: true,\n variadic: false,\n }));\n }\n\n private convertRESTQueryParamsToCLIOptions(\n endpoint: RESTEndpoint\n ): CLICommand['options'] {\n const options: CLICommand['options'] = endpoint.queryParams.map((param: string) => ({\n flag: `--${this.toKebabCase(param)} <value>`,\n description: `${param} parameter`,\n type: 'string' as const,\n required: false,\n }));\n\n // Add common options\n options.push({\n flag: '-o, --output <format>',\n description: 'Output format (json, table)',\n type: 'string' as const,\n required: false,\n default: 'json',\n });\n\n return options;\n }\n\n // =============================================================================\n // SDK → REST TRANSLATION\n // =============================================================================\n\n private translateSDKToREST(\n methods: SDKMethod[],\n mappings: TranslationMapping[],\n issues: CompatibilityIssue[],\n options?: APITranslationRequest['options']\n ): RESTEndpoint[] {\n const endpoints: RESTEndpoint[] = [];\n\n for (const method of methods) {\n const httpMethod = this.inferHTTPMethod(method.name);\n const path = this.deriveRESTPath(method);\n\n const endpoint: RESTEndpoint = {\n method: httpMethod,\n path,\n operationId: `${method.className}_${method.name}`,\n pathParams: this.extractPathParams(method.parameters),\n queryParams: this.extractQueryParams(method.parameters),\n headerParams: [],\n requestBody: this.extractRequestBodyType(method.parameters),\n responseType: method.returnType,\n contentType: 'application/json',\n streaming: method.streaming,\n tags: [method.className.replace('Client', '')],\n };\n\n endpoints.push(endpoint);\n\n // Record mapping\n mappings.push({\n sourceId: `${method.className}.${method.name}`,\n sourceFormat: InterfaceFormat.SDK,\n targetId: `${httpMethod} ${path}`,\n targetFormat: InterfaceFormat.REST,\n confidence: 0.9, // Heuristic mapping\n transformation: 'SDK_TO_REST_ENDPOINT',\n semanticLoss: 'HTTP method inferred from method name',\n });\n }\n\n return endpoints;\n }\n\n private inferHTTPMethod(methodName: string): RESTEndpoint['method'] {\n const name = methodName.toLowerCase();\n if (name.startsWith('get') || name.startsWith('list') || name.startsWith('fetch')) {\n return 'GET';\n }\n if (name.startsWith('create') || name.startsWith('add') || name.startsWith('post')) {\n return 'POST';\n }\n if (name.startsWith('update') || name.startsWith('put') || name.startsWith('replace')) {\n return 'PUT';\n }\n if (name.startsWith('patch') || name.startsWith('modify')) {\n return 'PATCH';\n }\n if (name.startsWith('delete') || name.startsWith('remove')) {\n return 'DELETE';\n }\n return 'POST'; // Default\n }\n\n private deriveRESTPath(method: SDKMethod): string {\n const resource = this.toKebabCase(method.className.replace('Client', ''));\n type SDKParam = { name: string; type: string; required: boolean; default?: unknown };\n const pathParams = method.parameters.filter((p: SDKParam) => p.required && p.type === 'string');\n\n let path = `/${resource}`;\n for (const param of pathParams.slice(0, 1)) {\n // Only first required string param as path param\n path += `/{${param.name}}`;\n }\n\n return path;\n }\n\n private extractPathParams(params: SDKMethod['parameters']): string[] {\n type SDKParam = { name: string; type: string; required: boolean; default?: unknown };\n return params.filter((p: SDKParam) => p.required && p.type === 'string').map((p: SDKParam) => p.name);\n }\n\n private extractQueryParams(params: SDKMethod['parameters']): string[] {\n // Look for options object type parameters\n type SDKParam = { name: string; type: string; required: boolean; default?: unknown };\n const optionsParam = params.find((p: SDKParam) => p.name === 'options');\n if (optionsParam && optionsParam.type.includes('{')) {\n // Parse simple object type like { key?: string; }\n const matches = optionsParam.type.match(/(\\w+)\\??\\s*:/g);\n if (matches) {\n return matches.map((m: string) => m.replace(/[?:]/g, '').trim());\n }\n }\n return [];\n }\n\n private extractRequestBodyType(params: SDKMethod['parameters']): string | undefined {\n type SDKParam = { name: string; type: string; required: boolean; default?: unknown };\n const dataParam = params.find((p: SDKParam) => p.name === 'data');\n return dataParam?.type;\n }\n\n // =============================================================================\n // SDK → CLI TRANSLATION\n // =============================================================================\n\n private translateSDKToCLI(\n methods: SDKMethod[],\n mappings: TranslationMapping[],\n issues: CompatibilityIssue[],\n options?: APITranslationRequest['options']\n ): CLICommand[] {\n const commands: CLICommand[] = [];\n\n for (const method of methods) {\n const commandName = this.toKebabCase(method.name);\n const parent = this.toKebabCase(method.className.replace('Client', ''));\n\n const command: CLICommand = {\n command: commandName,\n parent,\n arguments: method.parameters\n .filter((p: { name: string; type: string; required: boolean }) => p.required && !p.name.includes('options'))\n .map((p: { name: string; type: string; required: boolean }) => ({\n name: this.toKebabCase(p.name),\n description: `${p.name} (${p.type})`,\n required: p.required,\n variadic: false,\n })),\n options: method.parameters\n .filter((p: { name: string; type: string; required: boolean; default?: unknown }) => !p.required)\n .map((p: { name: string; type: string; required: boolean; default?: unknown }) => ({\n flag: `--${this.toKebabCase(p.name)} <value>`,\n description: `${p.name} parameter`,\n type: 'string' as const,\n required: false,\n default: p.default,\n })),\n description: method.description ?? `Execute ${method.name}`,\n examples: [`${parent} ${commandName}`],\n };\n\n commands.push(command);\n\n // Record mapping\n mappings.push({\n sourceId: `${method.className}.${method.name}`,\n sourceFormat: InterfaceFormat.SDK,\n targetId: `${parent} ${commandName}`,\n targetFormat: InterfaceFormat.CLI,\n confidence: 1.0,\n transformation: 'SDK_TO_CLI_COMMAND',\n });\n }\n\n return commands;\n }\n\n // =============================================================================\n // CLI → REST TRANSLATION\n // =============================================================================\n\n private translateCLIToREST(\n commands: CLICommand[],\n mappings: TranslationMapping[],\n issues: CompatibilityIssue[],\n options?: APITranslationRequest['options']\n ): RESTEndpoint[] {\n const endpoints: RESTEndpoint[] = [];\n\n for (const command of commands) {\n const httpMethod = this.inferHTTPMethodFromCommand(command.command);\n const path = this.deriveCLIToRESTPath(command);\n\n const endpoint: RESTEndpoint = {\n method: httpMethod,\n path,\n operationId: command.parent\n ? `${command.parent}_${command.command}`.replace(/-/g, '_')\n : command.command.replace(/-/g, '_'),\n pathParams: command.arguments.filter((a) => a.required).map((a) => a.name),\n queryParams: command.options\n .filter((o) => o.type === 'string')\n .map((o) => o.flag.match(/--(\\S+)/)?.[1] ?? ''),\n headerParams: [],\n contentType: 'application/json',\n streaming: false,\n tags: command.parent ? [this.toPascalCase(command.parent)] : [],\n };\n\n endpoints.push(endpoint);\n\n // Record mapping\n mappings.push({\n sourceId: command.parent ? `${command.parent} ${command.command}` : command.command,\n sourceFormat: InterfaceFormat.CLI,\n targetId: `${httpMethod} ${path}`,\n targetFormat: InterfaceFormat.REST,\n confidence: 0.85,\n transformation: 'CLI_TO_REST_ENDPOINT',\n semanticLoss: 'HTTP method and request body inferred from command name',\n });\n }\n\n return endpoints;\n }\n\n private inferHTTPMethodFromCommand(command: string): RESTEndpoint['method'] {\n const name = command.toLowerCase();\n for (const [prefix, method] of Object.entries(CLI_TO_REST_RULES.methodInference)) {\n if (name.startsWith(prefix)) {\n return method as RESTEndpoint['method'];\n }\n }\n return 'POST';\n }\n\n private deriveCLIToRESTPath(command: CLICommand): string {\n let path = command.parent ? `/${command.parent}` : '';\n path += `/${command.command}`;\n\n for (const arg of command.arguments.filter((a) => a.required)) {\n path += `/{${arg.name}}`;\n }\n\n return path;\n }\n\n // =============================================================================\n // CLI → SDK TRANSLATION\n // =============================================================================\n\n private translateCLIToSDK(\n commands: CLICommand[],\n mappings: TranslationMapping[],\n issues: CompatibilityIssue[],\n options?: APITranslationRequest['options']\n ): SDKMethod[] {\n const methods: SDKMethod[] = [];\n\n for (const command of commands) {\n const methodName = this.toCamelCase(command.command);\n const className = command.parent\n ? this.toPascalCase(command.parent) + 'Client'\n : 'ApiClient';\n\n const method: SDKMethod = {\n name: methodName,\n className,\n parameters: [\n ...command.arguments.map((arg) => ({\n name: this.toCamelCase(arg.name),\n type: 'string',\n required: arg.required,\n })),\n ...command.options\n .filter((opt) => opt.type !== 'boolean')\n .map((opt) => ({\n name: this.toCamelCase(opt.flag.match(/--(\\S+)/)?.[1] ?? 'option'),\n type: opt.type === 'array' ? 'string[]' : 'string',\n required: opt.required,\n default: opt.default,\n })),\n ],\n returnType: 'Promise<unknown>',\n async: true,\n streaming: false,\n description: command.description,\n throws: ['CliError'],\n };\n\n methods.push(method);\n\n // Record mapping\n mappings.push({\n sourceId: command.parent ? `${command.parent} ${command.command}` : command.command,\n sourceFormat: InterfaceFormat.CLI,\n targetId: `${className}.${methodName}`,\n targetFormat: InterfaceFormat.SDK,\n confidence: 0.9,\n transformation: 'CLI_TO_SDK_METHOD',\n semanticLoss: 'Return type unknown, inferred from CLI output',\n });\n }\n\n return methods;\n }\n\n // =============================================================================\n // HELPER METHODS\n // =============================================================================\n\n /**\n * Extract REST endpoints from canonical schema\n */\n private extractRESTEndpoints(schema?: CanonicalSchema): RESTEndpoint[] {\n if (!schema) return [];\n\n return schema.endpoints.map((endpoint) => ({\n method: endpoint.method as RESTEndpoint['method'],\n path: endpoint.path,\n operationId: endpoint.operationId,\n pathParams: endpoint.parameters\n ?.filter((p) => p.in === 'path')\n .map((p) => p.name) ?? [],\n queryParams: endpoint.parameters\n ?.filter((p) => p.in === 'query')\n .map((p) => p.name) ?? [],\n headerParams: endpoint.parameters\n ?.filter((p) => p.in === 'header')\n .map((p) => p.name) ?? [],\n requestBody: endpoint.requestBody?.type?.typeId,\n responseType: endpoint.responses?.[0]?.type?.typeId,\n contentType: endpoint.requestBody?.contentType ?? 'application/json',\n streaming: endpoint.streaming,\n tags: endpoint.tags ?? [],\n }));\n }\n\n /**\n * Count source elements in request\n */\n private countSourceElements(request: APITranslationRequest): number {\n return (\n (request.restEndpoints?.length ?? 0) +\n (request.sdkMethods?.length ?? 0) +\n (request.cliCommands?.length ?? 0) +\n (request.sourceSchema?.endpoints?.length ?? 0)\n );\n }\n\n /**\n * Count result elements\n */\n private countResultElements(result: TranslationResult): number {\n return (\n (result.restEndpoints?.length ?? 0) +\n (result.sdkMethods?.length ?? 0) +\n (result.cliCommands?.length ?? 0)\n );\n }\n\n /**\n * Calculate overall confidence from mappings and issues\n */\n private calculateOverallConfidence(\n mappings: TranslationMapping[],\n issues: CompatibilityIssue[]\n ): number {\n if (mappings.length === 0) return 0;\n\n // Average mapping confidence\n const avgMappingConfidence =\n mappings.reduce((sum, m) => sum + m.confidence, 0) / mappings.length;\n\n // Penalty for issues\n const errorPenalty = issues.filter((i) => i.severity === 'error').length * 0.2;\n const warningPenalty = issues.filter((i) => i.severity === 'warning').length * 0.05;\n\n return Math.max(0, avgMappingConfidence - errorPenalty - warningPenalty);\n }\n\n /**\n * Create error response\n */\n private createErrorResponse(\n requestId: string,\n inputHash: string,\n errors: string[]\n ): APITranslationResponse {\n return {\n requestId,\n success: false,\n compatibility: {\n schemaVersion: '1.0.0',\n agentVersion: AGENT_VERSION,\n translatedAt: new Date().toISOString(),\n determinismHash: inputHash,\n },\n warnings: [],\n errors,\n };\n }\n\n // =============================================================================\n // STRING UTILITY METHODS\n // =============================================================================\n\n private toCamelCase(str: string): string {\n return str\n .replace(/[-_](.)/g, (_, c) => c.toUpperCase())\n .replace(/^(.)/, (c) => c.toLowerCase());\n }\n\n private toPascalCase(str: string): string {\n return str\n .replace(/[-_](.)/g, (_, c) => c.toUpperCase())\n .replace(/^(.)/, (c) => c.toUpperCase());\n }\n\n private toKebabCase(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[_\\s]+/g, '-')\n .toLowerCase();\n }\n}\n\n/**\n * Create a translator instance with default options\n */\nexport function createTranslator(options?: TranslatorOptions): APITranslator {\n return new APITranslator(options);\n}\n","/**\n * Version Compatibility Agent Contract\n *\n * PROMPT 1 DELIVERABLE: Full Agent Contract & Boundary Definition\n *\n * Agent Name: Version Compatibility Agent\n * Classification: VALIDATION / COMPATIBILITY\n * decision_type: \"version_compatibility_analysis\"\n *\n * @module agents/contracts/version-compatibility.contract\n */\n\nimport { z } from 'zod';\nimport type { CanonicalSchema, TypeDefinition, EndpointDefinition } from '../../types/canonical-schema.js';\n\n// =============================================================================\n// 1. AGENT PURPOSE STATEMENT (Precise, Non-Marketing)\n// =============================================================================\n/**\n * The Version Compatibility Agent is a VALIDATION/COMPATIBILITY-class agent\n * responsible for analyzing compatibility between API and SDK versions.\n *\n * It consumes agentics-contracts API schemas (CanonicalSchema) and produces\n * compatibility analysis reports identifying breaking vs non-breaking changes.\n *\n * The agent does NOT:\n * - Execute generated code\n * - Modify runtime behavior\n * - Orchestrate workflows\n * - Enforce policies\n * - Access SQL databases directly\n * - Apply migrations or upgrades\n * - Mutate schemas\n */\nexport const AGENT_PURPOSE = `\nVersion Compatibility Agent: VALIDATION/COMPATIBILITY-class agent for analyzing\ncompatibility between API and SDK versions with deterministic change detection.\n` as const;\n\n// =============================================================================\n// 2. INPUT SCHEMA REFERENCES (agentics-contracts)\n// =============================================================================\n\n/**\n * Semver version string validation\n */\nexport const SemverVersionSchema = z.string().regex(\n /^\\d+\\.\\d+\\.\\d+(-[\\w.]+)?(\\+[\\w.]+)?$/,\n 'Must be valid semver (e.g., 1.0.0, 2.1.0-beta.1)'\n);\n\n/**\n * Schema version reference - lightweight reference to a schema by version\n */\nexport const SchemaVersionReferenceSchema = z.object({\n /** Provider identifier */\n providerId: z.string().min(1),\n /** Schema version */\n version: SemverVersionSchema,\n /** Schema hash for integrity verification */\n schemaHash: z.string().optional(),\n});\n\nexport type SchemaVersionReference = z.infer<typeof SchemaVersionReferenceSchema>;\n\n/**\n * Compatibility analysis request input schema\n */\nexport const CompatibilityAnalysisRequestSchema = z.object({\n /** Unique request identifier for tracing */\n requestId: z.string().uuid(),\n\n /** Source (older/baseline) schema for comparison */\n sourceSchema: z.custom<CanonicalSchema>((val) => {\n return (\n typeof val === 'object' &&\n val !== null &&\n 'metadata' in val &&\n 'types' in val &&\n 'endpoints' in val\n );\n }, 'Invalid CanonicalSchema'),\n\n /** Target (newer) schema for comparison */\n targetSchema: z.custom<CanonicalSchema>((val) => {\n return (\n typeof val === 'object' &&\n val !== null &&\n 'metadata' in val &&\n 'types' in val &&\n 'endpoints' in val\n );\n }, 'Invalid CanonicalSchema'),\n\n /** Analysis options */\n options: z.object({\n /** Strictness level for compatibility checking */\n strictness: z.enum(['strict', 'standard', 'lenient']).default('standard'),\n /** Include upgrade guidance in response */\n includeUpgradeGuidance: z.boolean().default(true),\n /** Include detailed diff for each change */\n includeDetailedDiff: z.boolean().default(false),\n /** Categories of changes to analyze */\n analyzeCategories: z.array(z.enum([\n 'types',\n 'endpoints',\n 'authentication',\n 'errors',\n 'metadata',\n ])).default(['types', 'endpoints', 'authentication', 'errors']),\n /** Ignore specific paths/types from analysis */\n ignorePaths: z.array(z.string()).default([]),\n }).default({}),\n\n /** Tracing context for observability */\n tracingContext: z.object({\n traceId: z.string().optional(),\n spanId: z.string().optional(),\n parentSpanId: z.string().optional(),\n }).optional(),\n});\n\nexport type CompatibilityAnalysisRequest = z.infer<typeof CompatibilityAnalysisRequestSchema>;\n\n// =============================================================================\n// 3. OUTPUT SCHEMA / ARTIFACT REFERENCES\n// =============================================================================\n\n/**\n * Change severity levels\n */\nexport const ChangeSeveritySchema = z.enum([\n 'breaking', // Major version bump required\n 'non-breaking', // Minor version bump\n 'patch', // Patch version bump (backwards compatible fix)\n 'informational', // No version impact (docs, comments)\n]);\n\nexport type ChangeSeverity = z.infer<typeof ChangeSeveritySchema>;\n\n/**\n * Change category\n */\nexport const ChangeCategorySchema = z.enum([\n 'type-added',\n 'type-removed',\n 'type-modified',\n 'property-added',\n 'property-removed',\n 'property-modified',\n 'endpoint-added',\n 'endpoint-removed',\n 'endpoint-modified',\n 'parameter-added',\n 'parameter-removed',\n 'parameter-modified',\n 'response-added',\n 'response-removed',\n 'response-modified',\n 'auth-added',\n 'auth-removed',\n 'auth-modified',\n 'error-added',\n 'error-removed',\n 'error-modified',\n 'metadata-changed',\n]);\n\nexport type ChangeCategory = z.infer<typeof ChangeCategorySchema>;\n\n/**\n * Individual change detection\n */\nexport const CompatibilityChangeSchema = z.object({\n /** Unique change identifier */\n changeId: z.string().uuid(),\n /** Change category */\n category: ChangeCategorySchema,\n /** Change severity */\n severity: ChangeSeveritySchema,\n /** Path to the changed element (e.g., \"types.User.properties.email\") */\n path: z.string(),\n /** Brief description of the change */\n description: z.string(),\n /** Value in source schema (if applicable) */\n sourceValue: z.unknown().optional(),\n /** Value in target schema (if applicable) */\n targetValue: z.unknown().optional(),\n /** Detailed diff (if requested) */\n diff: z.string().optional(),\n /** Impact assessment */\n impact: z.object({\n /** Affected SDK methods/types */\n affectedComponents: z.array(z.string()),\n /** Affected languages */\n affectedLanguages: z.array(z.string()),\n /** Migration complexity (1-5) */\n migrationComplexity: z.number().int().min(1).max(5),\n }),\n /** Upgrade guidance (if requested) */\n upgradeGuidance: z.string().optional(),\n});\n\nexport type CompatibilityChange = z.infer<typeof CompatibilityChangeSchema>;\n\n/**\n * Overall compatibility verdict\n */\nexport const CompatibilityVerdictSchema = z.enum([\n 'fully-compatible', // No breaking changes\n 'backwards-compatible', // Breaking additions only, existing code works\n 'breaking', // Breaking changes detected\n 'incompatible', // Major structural incompatibility\n]);\n\nexport type CompatibilityVerdict = z.infer<typeof CompatibilityVerdictSchema>;\n\n/**\n * Version recommendation based on analysis\n */\nexport const VersionRecommendationSchema = z.object({\n /** Recommended version bump type */\n bumpType: z.enum(['major', 'minor', 'patch', 'none']),\n /** Recommended new version */\n recommendedVersion: SemverVersionSchema,\n /** Rationale for recommendation */\n rationale: z.string(),\n});\n\nexport type VersionRecommendation = z.infer<typeof VersionRecommendationSchema>;\n\n/**\n * Compatibility analysis summary\n */\nexport const CompatibilitySummarySchema = z.object({\n /** Total number of changes detected */\n totalChanges: z.number().int().nonnegative(),\n /** Breaking changes count */\n breakingChanges: z.number().int().nonnegative(),\n /** Non-breaking changes count */\n nonBreakingChanges: z.number().int().nonnegative(),\n /** Patch changes count */\n patchChanges: z.number().int().nonnegative(),\n /** Informational changes count */\n informationalChanges: z.number().int().nonnegative(),\n /** Changes by category */\n changesByCategory: z.record(z.number().int().nonnegative()),\n});\n\nexport type CompatibilitySummary = z.infer<typeof CompatibilitySummarySchema>;\n\n/**\n * Complete compatibility analysis response\n */\nexport const CompatibilityAnalysisResponseSchema = z.object({\n /** Original request ID */\n requestId: z.string().uuid(),\n /** Analysis success status */\n success: z.boolean(),\n /** Source schema version info */\n sourceVersion: SchemaVersionReferenceSchema,\n /** Target schema version info */\n targetVersion: SchemaVersionReferenceSchema,\n /** Overall compatibility verdict */\n verdict: CompatibilityVerdictSchema,\n /** Summary statistics */\n summary: CompatibilitySummarySchema,\n /** Detailed changes */\n changes: z.array(CompatibilityChangeSchema),\n /** Version recommendation */\n versionRecommendation: VersionRecommendationSchema,\n /** Analysis metadata */\n analysisMetadata: z.object({\n /** Agent version */\n agentVersion: z.string(),\n /** Analysis timestamp */\n analyzedAt: z.string().datetime(),\n /** Analysis duration in ms */\n durationMs: z.number().nonnegative(),\n /** Determinism hash */\n determinismHash: z.string(),\n }),\n /** Warnings */\n warnings: z.array(z.string()),\n /** Errors (if success=false) */\n errors: z.array(z.string()),\n});\n\nexport type CompatibilityAnalysisResponse = z.infer<typeof CompatibilityAnalysisResponseSchema>;\n\n// =============================================================================\n// 4. DECISION EVENT MAPPING\n// =============================================================================\n\n/**\n * Decision types for Version Compatibility Agent\n */\nexport enum VersionCompatibilityDecisionType {\n /** Primary decision: version compatibility analysis */\n VERSION_COMPATIBILITY_ANALYSIS = 'version_compatibility_analysis',\n /** Type comparison decision */\n TYPE_COMPARISON = 'type_comparison',\n /** Endpoint comparison decision */\n ENDPOINT_COMPARISON = 'endpoint_comparison',\n /** Breaking change detection */\n BREAKING_CHANGE_DETECTION = 'breaking_change_detection',\n /** Version recommendation decision */\n VERSION_RECOMMENDATION = 'version_recommendation',\n}\n\n/**\n * Confidence semantics for compatibility analysis\n * - DETERMINISTIC: Same schemas always produce same analysis\n * - HEURISTIC: Best-effort analysis with confidence score\n * - CONSTRAINT_BASED: Analysis based on semver constraints\n */\nexport enum CompatibilityConfidenceSemantics {\n /** Output is deterministic and reproducible */\n DETERMINISTIC = 'deterministic',\n /** Output uses heuristic analysis */\n HEURISTIC = 'heuristic',\n /** Output satisfies semver constraints */\n CONSTRAINT_BASED = 'constraint_based',\n}\n\n/**\n * Decision event for version compatibility analysis\n */\nexport const VersionCompatibilityDecisionEventSchema = z.object({\n /** Event unique identifier */\n eventId: z.string().uuid(),\n /** Decision type */\n decisionType: z.nativeEnum(VersionCompatibilityDecisionType),\n /** Agent identifier */\n agentId: z.literal('version-compatibility-agent'),\n /** Agent version */\n agentVersion: z.string(),\n /** Request ID this decision relates to */\n requestId: z.string().uuid(),\n /** Timestamp of decision */\n timestamp: z.string().datetime(),\n /** Confidence semantics */\n confidenceSemantics: z.nativeEnum(CompatibilityConfidenceSemantics),\n /** Confidence score (0.0-1.0) */\n confidenceScore: z.number().min(0).max(1),\n /** Input hash for reproducibility */\n inputHash: z.string(),\n /** Output hash for verification */\n outputHash: z.string(),\n /** Decision rationale */\n rationale: z.string(),\n /** Constraints applied during analysis */\n constraintsApplied: z.array(z.string()),\n /** Execution reference */\n executionRef: z.string().optional(),\n /** Decision metadata */\n metadata: z.record(z.unknown()).optional(),\n});\n\nexport type VersionCompatibilityDecisionEvent = z.infer<typeof VersionCompatibilityDecisionEventSchema>;\n\n// =============================================================================\n// 5. CLI CONTRACT\n// =============================================================================\n\n/**\n * CLI invocation shape for Version Compatibility Agent\n *\n * Primary command: validate\n *\n * Usage:\n * llm-forge validate <source> <target> [options]\n *\n * Arguments:\n * source Source schema (JSON) - baseline version\n * target Target schema (JSON) - new version\n *\n * Options:\n * -s, --strictness <level> Strictness level (strict, standard, lenient)\n * -o, --output <file> Output report file (JSON)\n * --no-guidance Disable upgrade guidance\n * --detailed-diff Include detailed diff for each change\n * --categories <cats...> Categories to analyze (types, endpoints, auth, errors)\n * --ignore <paths...> Paths to ignore\n * --emit-events Emit DecisionEvents to ruvector-service\n * -v, --verbose Verbose output\n * --json Output as JSON\n */\nexport const CLIContract = {\n command: 'validate',\n arguments: [\n {\n name: 'source',\n description: 'Source schema (JSON) - baseline version',\n required: true,\n },\n {\n name: 'target',\n description: 'Target schema (JSON) - new version',\n required: true,\n },\n ],\n options: [\n {\n flag: '-s, --strictness <level>',\n description: 'Strictness level',\n choices: ['strict', 'standard', 'lenient'],\n default: 'standard',\n },\n {\n flag: '-o, --output <file>',\n description: 'Output report file (JSON)',\n },\n {\n flag: '--no-guidance',\n description: 'Disable upgrade guidance',\n },\n {\n flag: '--detailed-diff',\n description: 'Include detailed diff for each change',\n },\n {\n flag: '--categories <cats...>',\n description: 'Categories to analyze',\n default: ['types', 'endpoints', 'authentication', 'errors'],\n },\n {\n flag: '--ignore <paths...>',\n description: 'Paths to ignore',\n },\n {\n flag: '--emit-events',\n description: 'Emit DecisionEvents to ruvector-service',\n },\n {\n flag: '-v, --verbose',\n description: 'Verbose output',\n },\n {\n flag: '--json',\n description: 'Output as JSON',\n },\n ],\n} as const;\n\n// =============================================================================\n// 6. GENERATION / TRANSLATION / VALIDATION CLASSIFICATION\n// =============================================================================\n\n/**\n * Agent classification: VALIDATION / COMPATIBILITY\n *\n * This agent is classified as VALIDATION/COMPATIBILITY because:\n * 1. It analyzes existing schemas for compatibility\n * 2. It does NOT produce new artifacts (code, SDKs)\n * 3. It does NOT translate between formats\n * 4. It validates version compatibility and provides advisory output\n *\n * The analysis is:\n * - Deterministic: Same schemas → Same compatibility report (hash-verifiable)\n * - Stateless: No persistent state between invocations\n * - Idempotent: Multiple invocations with same input produce identical output\n * - Advisory: Output is for guidance only, not enforcement\n */\nexport const AGENT_CLASSIFICATION = {\n type: 'VALIDATION' as const,\n subtype: 'COMPATIBILITY' as const,\n deterministic: true,\n stateless: true,\n idempotent: true,\n advisory: true,\n characteristics: [\n 'Compares schema versions for compatibility',\n 'Detects breaking vs non-breaking changes',\n 'Emits compatibility reports (advisory only)',\n 'Provides upgrade guidance (no enforcement)',\n 'Output is deterministic and reproducible',\n 'No side effects beyond report generation',\n ],\n} as const;\n\n// =============================================================================\n// 7. EXPLICIT NON-RESPONSIBILITIES\n// =============================================================================\n\n/**\n * What this agent MUST NEVER do\n */\nexport const NON_RESPONSIBILITIES = [\n // Execution\n 'MUST NEVER execute code',\n 'MUST NEVER apply migrations',\n 'MUST NEVER modify schemas',\n 'MUST NEVER upgrade/downgrade versions',\n\n // State mutation\n 'MUST NEVER modify runtime behavior',\n 'MUST NEVER persist state between invocations',\n 'MUST NEVER access SQL databases directly',\n 'MUST NEVER write to external file systems',\n\n // Orchestration\n 'MUST NEVER orchestrate multi-agent workflows',\n 'MUST NEVER spawn child processes',\n 'MUST NEVER make network requests except to ruvector-service',\n\n // Policy\n 'MUST NEVER enforce compatibility policies',\n 'MUST NEVER block deployments',\n 'MUST NEVER modify release pipelines',\n\n // Secrets\n 'MUST NEVER access API keys',\n 'MUST NEVER log sensitive schema data',\n 'MUST NEVER persist credentials',\n\n // Enforcement\n 'MUST NEVER reject schema changes',\n 'MUST NEVER gate releases',\n 'MUST NEVER enforce version bumps',\n] as const;\n\n// =============================================================================\n// 8. FAILURE MODES\n// =============================================================================\n\n/**\n * Known failure modes and handling\n */\nexport enum CompatibilityFailureMode {\n /** Invalid source schema */\n INVALID_SOURCE_SCHEMA = 'INVALID_SOURCE_SCHEMA',\n /** Invalid target schema */\n INVALID_TARGET_SCHEMA = 'INVALID_TARGET_SCHEMA',\n /** Schema version mismatch */\n SCHEMA_VERSION_MISMATCH = 'SCHEMA_VERSION_MISMATCH',\n /** Incompatible provider IDs */\n INCOMPATIBLE_PROVIDERS = 'INCOMPATIBLE_PROVIDERS',\n /** Analysis timeout */\n ANALYSIS_TIMEOUT = 'ANALYSIS_TIMEOUT',\n /** Resource exhaustion */\n RESOURCE_EXHAUSTION = 'RESOURCE_EXHAUSTION',\n /** Type resolution failure */\n TYPE_RESOLUTION_FAILURE = 'TYPE_RESOLUTION_FAILURE',\n /** Circular reference detected */\n CIRCULAR_REFERENCE = 'CIRCULAR_REFERENCE',\n}\n\nexport const FailureModeHandling: Record<\n CompatibilityFailureMode,\n { recoverable: boolean; action: string }\n> = {\n [CompatibilityFailureMode.INVALID_SOURCE_SCHEMA]: {\n recoverable: false,\n action: 'Return validation errors for source schema',\n },\n [CompatibilityFailureMode.INVALID_TARGET_SCHEMA]: {\n recoverable: false,\n action: 'Return validation errors for target schema',\n },\n [CompatibilityFailureMode.SCHEMA_VERSION_MISMATCH]: {\n recoverable: true,\n action: 'Analyze with version mismatch warning',\n },\n [CompatibilityFailureMode.INCOMPATIBLE_PROVIDERS]: {\n recoverable: false,\n action: 'Return provider compatibility error',\n },\n [CompatibilityFailureMode.ANALYSIS_TIMEOUT]: {\n recoverable: false,\n action: 'Return timeout with partial analysis if available',\n },\n [CompatibilityFailureMode.RESOURCE_EXHAUSTION]: {\n recoverable: false,\n action: 'Return resource limit error',\n },\n [CompatibilityFailureMode.TYPE_RESOLUTION_FAILURE]: {\n recoverable: true,\n action: 'Mark unresolved types as unknown in analysis',\n },\n [CompatibilityFailureMode.CIRCULAR_REFERENCE]: {\n recoverable: true,\n action: 'Detect and break circular references with warning',\n },\n};\n\n// =============================================================================\n// 9. VERSIONING RULES\n// =============================================================================\n\n/**\n * Versioning rules for compatibility analysis\n */\nexport const VERSIONING_RULES = {\n /** Agent version follows semver */\n agentVersionFormat: 'semver',\n /** Input schemas must have valid versions */\n schemaVersionFormat: 'semver',\n /** Breaking change detection rules */\n breakingChangeRules: [\n 'Removal of public types = breaking',\n 'Removal of required properties = breaking',\n 'Removal of endpoints = breaking',\n 'Addition of required properties = breaking',\n 'Type narrowing = breaking',\n 'Response type changes = breaking',\n ],\n /** Non-breaking change rules */\n nonBreakingChangeRules: [\n 'Addition of optional properties = non-breaking',\n 'Addition of new endpoints = non-breaking',\n 'Addition of new types = non-breaking',\n 'Type widening = non-breaking',\n 'Documentation changes = non-breaking',\n ],\n /** Determinism hash format */\n determinismHashFormat: 'SHA-256 of normalized schema diff',\n} as const;\n\n// =============================================================================\n// 10. PERSISTENCE RULES (ruvector-service)\n// =============================================================================\n\n/**\n * Data that MUST be persisted to ruvector-service\n */\nexport const PERSISTED_DATA = [\n 'DecisionEvent (all analysis decisions)',\n 'Compatibility verdict and summary',\n 'Breaking change details',\n 'Version recommendations',\n 'Input/output hashes for reproducibility',\n 'Analysis duration metrics',\n 'Error events with context',\n] as const;\n\n/**\n * Data that MUST NOT be persisted\n */\nexport const NON_PERSISTED_DATA = [\n 'Full schema content (reference by hash only)',\n 'Detailed diff content (too large)',\n 'API keys or credentials',\n 'File system paths',\n 'Internal processing state',\n] as const;\n\n// =============================================================================\n// 11. DOWNSTREAM CONSUMERS\n// =============================================================================\n\n/**\n * Systems that MAY consume this agent's output\n */\nexport const DOWNSTREAM_CONSUMERS = [\n {\n system: 'LLM-Observatory',\n consumedData: ['DecisionEvents', 'Metrics', 'Telemetry'],\n purpose: 'Observability and monitoring',\n },\n {\n system: 'CI/CD Pipeline',\n consumedData: ['Compatibility verdict', 'Version recommendation'],\n purpose: 'Advisory input for release decisions',\n },\n {\n system: 'SDK Generator Agent',\n consumedData: ['Breaking change list', 'Migration complexity'],\n purpose: 'Inform generation strategy for version upgrades',\n },\n {\n system: 'Schema Registry',\n consumedData: ['Compatibility metadata', 'Version info'],\n purpose: 'Version tracking and history',\n },\n {\n system: 'Developer Documentation',\n consumedData: ['Upgrade guidance', 'Change descriptions'],\n purpose: 'Changelog generation',\n },\n] as const;\n\n// =============================================================================\n// 12. AGENT VERSION\n// =============================================================================\n\nexport const AGENT_VERSION = '1.0.0';\nexport const AGENT_ID = 'version-compatibility-agent';\n","/**\n * RuVector Service Client\n *\n * Client for persisting DecisionEvents to ruvector-service.\n *\n * IMPORTANT: This agent does NOT access SQL directly.\n * All persistence is through ruvector-service client calls only.\n *\n * @module agents/version-compatibility-agent/ruvector-client\n */\n\nimport type { VersionCompatibilityEvent } from '../contracts/decision-events.js';\n\n/**\n * Configuration for ruvector-service connection\n */\nexport interface RuvectorClientConfig {\n /** Service URL */\n serviceUrl: string;\n /** Request timeout in ms */\n timeout: number;\n /** Retry attempts on failure */\n retryAttempts: number;\n /** Retry delay in ms */\n retryDelay: number;\n}\n\n/**\n * Response from ruvector-service\n */\nexport interface RuvectorResponse {\n success: boolean;\n eventId?: string;\n error?: string;\n}\n\n/**\n * Client for ruvector-service\n *\n * This client handles:\n * - Async, non-blocking writes\n * - Retry logic for transient failures\n * - Batching for efficiency\n *\n * This client does NOT:\n * - Execute SQL directly\n * - Access Google SQL\n * - Persist state locally\n */\nexport class RuvectorServiceClient {\n private readonly config: RuvectorClientConfig;\n private readonly eventBuffer: VersionCompatibilityEvent[] = [];\n private flushTimeout: NodeJS.Timeout | null = null;\n\n constructor(serviceUrl?: string) {\n this.config = {\n serviceUrl: serviceUrl || process.env.RUVECTOR_SERVICE_URL || 'http://localhost:8080',\n timeout: 5000,\n retryAttempts: 3,\n retryDelay: 100,\n };\n }\n\n /**\n * Emit a decision event to ruvector-service\n *\n * @param event - Decision event to persist\n */\n async emitDecisionEvent(event: VersionCompatibilityEvent): Promise<RuvectorResponse> {\n // Add to buffer for potential batching\n this.eventBuffer.push(event);\n\n // Schedule flush if not already scheduled\n if (!this.flushTimeout) {\n this.flushTimeout = setTimeout(() => this.flushEvents(), 100);\n }\n\n // For individual events, emit immediately\n return this.sendEvent(event);\n }\n\n /**\n * Emit multiple decision events in batch\n *\n * @param events - Array of decision events\n */\n async emitBatch(events: VersionCompatibilityEvent[]): Promise<RuvectorResponse[]> {\n return Promise.all(events.map(event => this.sendEvent(event)));\n }\n\n /**\n * Send a single event to ruvector-service\n */\n private async sendEvent(event: VersionCompatibilityEvent): Promise<RuvectorResponse> {\n for (let attempt = 1; attempt <= this.config.retryAttempts; attempt++) {\n try {\n const response = await this.makeRequest('/api/v1/events', event);\n\n if (response.success) {\n return response;\n }\n\n // Non-retryable error\n if (response.error?.includes('validation')) {\n return response;\n }\n\n } catch (error) {\n // Last attempt, throw error\n if (attempt === this.config.retryAttempts) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n\n // Wait before retry\n await this.delay(this.config.retryDelay * attempt);\n }\n }\n\n return {\n success: false,\n error: 'Max retry attempts exceeded',\n };\n }\n\n /**\n * Make HTTP request to ruvector-service\n */\n private async makeRequest(path: string, data: unknown): Promise<RuvectorResponse> {\n const url = `${this.config.serviceUrl}${path}`;\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Agent-ID': 'version-compatibility-agent',\n 'X-Agent-Version': '1.0.0',\n },\n body: JSON.stringify(data),\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n const errorBody = await response.text();\n return {\n success: false,\n error: `HTTP ${response.status}: ${errorBody}`,\n };\n }\n\n const result = await response.json();\n return {\n success: true,\n eventId: result.eventId,\n };\n\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof Error && error.name === 'AbortError') {\n return {\n success: false,\n error: 'Request timeout',\n };\n }\n\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n }\n\n /**\n * Flush buffered events\n */\n private async flushEvents(): Promise<void> {\n this.flushTimeout = null;\n\n if (this.eventBuffer.length === 0) {\n return;\n }\n\n const events = [...this.eventBuffer];\n this.eventBuffer.length = 0;\n\n // Events are already being sent individually\n // This is for future batch optimization\n }\n\n /**\n * Helper delay function\n */\n private delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n /**\n * Health check for ruvector-service\n */\n async healthCheck(): Promise<boolean> {\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 2000);\n\n const response = await fetch(`${this.config.serviceUrl}/health`, {\n method: 'GET',\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n return response.ok;\n\n } catch {\n return false;\n }\n }\n}\n","/**\n * Schema Comparator\n *\n * Core comparison logic for detecting breaking vs non-breaking changes\n * between CanonicalSchema versions.\n *\n * @module agents/version-compatibility-agent/comparator\n */\n\nimport { randomUUID } from 'crypto';\nimport type {\n CanonicalSchema,\n TypeDefinition,\n EndpointDefinition,\n AuthScheme,\n ErrorDefinition,\n PropertyDefinition,\n TypeKind,\n} from '../../types/canonical-schema.js';\nimport type {\n CompatibilityChange,\n ChangeSeverity,\n ChangeCategory,\n} from '../contracts/version-compatibility.contract.js';\n\n/**\n * Comparison strictness levels\n */\nexport type Strictness = 'strict' | 'standard' | 'lenient';\n\n/**\n * Schema comparator for detecting breaking and non-breaking changes\n */\nexport class SchemaComparator {\n /**\n * Compare types between source and target schemas\n */\n async compareTypes(\n source: CanonicalSchema,\n target: CanonicalSchema,\n strictness: Strictness,\n ignorePaths: string[]\n ): Promise<CompatibilityChange[]> {\n const changes: CompatibilityChange[] = [];\n\n // Index types by ID for efficient lookup\n const sourceTypes = new Map(source.types.map(t => [t.id, t]));\n const targetTypes = new Map(target.types.map(t => [t.id, t]));\n\n // Check for removed types (breaking)\n for (const [id, sourceType] of sourceTypes) {\n const path = `types.${sourceType.name}`;\n\n if (ignorePaths.some(p => path.startsWith(p))) {\n continue;\n }\n\n if (!targetTypes.has(id)) {\n changes.push(this.createChange({\n category: 'type-removed',\n severity: 'breaking',\n path,\n description: `Type \"${sourceType.name}\" has been removed`,\n sourceValue: sourceType.name,\n affectedComponents: this.findTypeReferences(source, sourceType.id),\n migrationComplexity: 4,\n }));\n }\n }\n\n // Check for added types (non-breaking)\n for (const [id, targetType] of targetTypes) {\n const path = `types.${targetType.name}`;\n\n if (ignorePaths.some(p => path.startsWith(p))) {\n continue;\n }\n\n if (!sourceTypes.has(id)) {\n changes.push(this.createChange({\n category: 'type-added',\n severity: 'non-breaking',\n path,\n description: `New type \"${targetType.name}\" added`,\n targetValue: targetType.name,\n affectedComponents: [],\n migrationComplexity: 1,\n }));\n }\n }\n\n // Check for modified types\n for (const [id, sourceType] of sourceTypes) {\n const targetType = targetTypes.get(id);\n if (!targetType) continue;\n\n const path = `types.${sourceType.name}`;\n\n if (ignorePaths.some(p => path.startsWith(p))) {\n continue;\n }\n\n // Check kind change (breaking)\n if (sourceType.kind !== targetType.kind) {\n changes.push(this.createChange({\n category: 'type-modified',\n severity: 'breaking',\n path: `${path}.kind`,\n description: `Type \"${sourceType.name}\" kind changed from ${sourceType.kind} to ${targetType.kind}`,\n sourceValue: sourceType.kind,\n targetValue: targetType.kind,\n affectedComponents: this.findTypeReferences(source, sourceType.id),\n migrationComplexity: 5,\n }));\n continue;\n }\n\n // Compare object type properties\n if (sourceType.kind === 'object' && targetType.kind === 'object') {\n const propertyChanges = this.compareObjectProperties(\n sourceType,\n targetType,\n path,\n source,\n strictness\n );\n changes.push(...propertyChanges);\n }\n\n // Compare enum values\n if (sourceType.kind === 'enum' && targetType.kind === 'enum') {\n const enumChanges = this.compareEnumValues(\n sourceType,\n targetType,\n path,\n strictness\n );\n changes.push(...enumChanges);\n }\n\n // Compare union variants\n if (sourceType.kind === 'union' && targetType.kind === 'union') {\n const unionChanges = this.compareUnionVariants(\n sourceType,\n targetType,\n path,\n strictness\n );\n changes.push(...unionChanges);\n }\n }\n\n return changes;\n }\n\n /**\n * Compare object type properties\n */\n private compareObjectProperties(\n sourceType: TypeDefinition & { kind: 'object' },\n targetType: TypeDefinition & { kind: 'object' },\n basePath: string,\n schema: CanonicalSchema,\n strictness: Strictness\n ): CompatibilityChange[] {\n const changes: CompatibilityChange[] = [];\n\n const sourceProps = new Map(\n (sourceType as any).properties?.map((p: PropertyDefinition) => [p.name, p]) || []\n );\n const targetProps = new Map(\n (targetType as any).properties?.map((p: PropertyDefinition) => [p.name, p]) || []\n );\n\n // Check for removed properties (breaking if required)\n for (const [name, sourceProp] of sourceProps) {\n const path = `${basePath}.properties.${name}`;\n\n if (!targetProps.has(name)) {\n const severity: ChangeSeverity = sourceProp.required ? 'breaking' : 'non-breaking';\n changes.push(this.createChange({\n category: 'property-removed',\n severity,\n path,\n description: `Property \"${name}\" removed from type \"${sourceType.name}\"${sourceProp.required ? ' (was required)' : ''}`,\n sourceValue: name,\n affectedComponents: [`${sourceType.name}.${name}`],\n migrationComplexity: sourceProp.required ? 4 : 2,\n }));\n }\n }\n\n // Check for added properties\n for (const [name, targetProp] of targetProps) {\n const path = `${basePath}.properties.${name}`;\n\n if (!sourceProps.has(name)) {\n // Adding a required property is breaking\n const severity: ChangeSeverity = targetProp.required ? 'breaking' : 'non-breaking';\n changes.push(this.createChange({\n category: 'property-added',\n severity,\n path,\n description: `New ${targetProp.required ? 'required ' : 'optional '}property \"${name}\" added to type \"${sourceType.name}\"`,\n targetValue: name,\n affectedComponents: [`${sourceType.name}.${name}`],\n migrationComplexity: targetProp.required ? 3 : 1,\n }));\n }\n }\n\n // Check for modified properties\n for (const [name, sourceProp] of sourceProps) {\n const targetProp = targetProps.get(name);\n if (!targetProp) continue;\n\n const path = `${basePath}.properties.${name}`;\n\n // Required status changed\n if (sourceProp.required !== targetProp.required) {\n // Making optional property required is breaking\n // Making required property optional is non-breaking\n const severity: ChangeSeverity = !sourceProp.required && targetProp.required\n ? 'breaking'\n : 'non-breaking';\n\n changes.push(this.createChange({\n category: 'property-modified',\n severity,\n path: `${path}.required`,\n description: `Property \"${name}\" required status changed from ${sourceProp.required} to ${targetProp.required}`,\n sourceValue: sourceProp.required,\n targetValue: targetProp.required,\n affectedComponents: [`${sourceType.name}.${name}`],\n migrationComplexity: !sourceProp.required && targetProp.required ? 3 : 1,\n }));\n }\n\n // Type changed\n if (sourceProp.type?.typeId !== targetProp.type?.typeId) {\n changes.push(this.createChange({\n category: 'property-modified',\n severity: 'breaking',\n path: `${path}.type`,\n description: `Property \"${name}\" type changed`,\n sourceValue: sourceProp.type?.typeId,\n targetValue: targetProp.type?.typeId,\n affectedComponents: [`${sourceType.name}.${name}`],\n migrationComplexity: 4,\n }));\n }\n }\n\n return changes;\n }\n\n /**\n * Compare enum values\n */\n private compareEnumValues(\n sourceType: TypeDefinition & { kind: 'enum' },\n targetType: TypeDefinition & { kind: 'enum' },\n basePath: string,\n strictness: Strictness\n ): CompatibilityChange[] {\n const changes: CompatibilityChange[] = [];\n\n const sourceValues = new Set((sourceType as any).values?.map((v: any) => v.value) || []);\n const targetValues = new Set((targetType as any).values?.map((v: any) => v.value) || []);\n\n // Removed enum values are breaking\n for (const value of sourceValues) {\n if (!targetValues.has(value)) {\n changes.push(this.createChange({\n category: 'type-modified',\n severity: 'breaking',\n path: `${basePath}.values.${value}`,\n description: `Enum value \"${value}\" removed from \"${sourceType.name}\"`,\n sourceValue: value,\n affectedComponents: [`${sourceType.name}.${value}`],\n migrationComplexity: 3,\n }));\n }\n }\n\n // Added enum values are non-breaking\n for (const value of targetValues) {\n if (!sourceValues.has(value)) {\n changes.push(this.createChange({\n category: 'type-modified',\n severity: strictness === 'strict' ? 'non-breaking' : 'patch',\n path: `${basePath}.values.${value}`,\n description: `New enum value \"${value}\" added to \"${sourceType.name}\"`,\n targetValue: value,\n affectedComponents: [],\n migrationComplexity: 1,\n }));\n }\n }\n\n return changes;\n }\n\n /**\n * Compare union variants\n */\n private compareUnionVariants(\n sourceType: TypeDefinition & { kind: 'union' },\n targetType: TypeDefinition & { kind: 'union' },\n basePath: string,\n strictness: Strictness\n ): CompatibilityChange[] {\n const changes: CompatibilityChange[] = [];\n\n const sourceVariants = new Set(\n (sourceType as any).variants?.map((v: any) => v.typeId) || []\n );\n const targetVariants = new Set(\n (targetType as any).variants?.map((v: any) => v.typeId) || []\n );\n\n // Removed variants are breaking\n for (const typeId of sourceVariants) {\n if (!targetVariants.has(typeId)) {\n changes.push(this.createChange({\n category: 'type-modified',\n severity: 'breaking',\n path: `${basePath}.variants`,\n description: `Union variant removed from \"${sourceType.name}\"`,\n sourceValue: typeId,\n affectedComponents: [`${sourceType.name}`],\n migrationComplexity: 4,\n }));\n }\n }\n\n // Added variants are non-breaking (output union widening)\n for (const typeId of targetVariants) {\n if (!sourceVariants.has(typeId)) {\n changes.push(this.createChange({\n category: 'type-modified',\n severity: 'non-breaking',\n path: `${basePath}.variants`,\n description: `New union variant added to \"${sourceType.name}\"`,\n targetValue: typeId,\n affectedComponents: [],\n migrationComplexity: 1,\n }));\n }\n }\n\n return changes;\n }\n\n /**\n * Compare endpoints between source and target schemas\n */\n async compareEndpoints(\n source: CanonicalSchema,\n target: CanonicalSchema,\n strictness: Strictness,\n ignorePaths: string[]\n ): Promise<CompatibilityChange[]> {\n const changes: CompatibilityChange[] = [];\n\n // Index endpoints by operationId\n const sourceEndpoints = new Map(source.endpoints.map(e => [e.operationId, e]));\n const targetEndpoints = new Map(target.endpoints.map(e => [e.operationId, e]));\n\n // Check for removed endpoints (breaking)\n for (const [opId, sourceEndpoint] of sourceEndpoints) {\n const path = `endpoints.${sourceEndpoint.path}.${sourceEndpoint.method}`;\n\n if (ignorePaths.some(p => path.startsWith(p))) {\n continue;\n }\n\n if (!targetEndpoints.has(opId)) {\n changes.push(this.createChange({\n category: 'endpoint-removed',\n severity: 'breaking',\n path,\n description: `Endpoint ${sourceEndpoint.method} ${sourceEndpoint.path} has been removed`,\n sourceValue: opId,\n affectedComponents: [opId],\n migrationComplexity: 5,\n }));\n }\n }\n\n // Check for added endpoints (non-breaking)\n for (const [opId, targetEndpoint] of targetEndpoints) {\n const path = `endpoints.${targetEndpoint.path}.${targetEndpoint.method}`;\n\n if (ignorePaths.some(p => path.startsWith(p))) {\n continue;\n }\n\n if (!sourceEndpoints.has(opId)) {\n changes.push(this.createChange({\n category: 'endpoint-added',\n severity: 'non-breaking',\n path,\n description: `New endpoint ${targetEndpoint.method} ${targetEndpoint.path} added`,\n targetValue: opId,\n affectedComponents: [],\n migrationComplexity: 1,\n }));\n }\n }\n\n // Check for modified endpoints\n for (const [opId, sourceEndpoint] of sourceEndpoints) {\n const targetEndpoint = targetEndpoints.get(opId);\n if (!targetEndpoint) continue;\n\n const path = `endpoints.${sourceEndpoint.path}.${sourceEndpoint.method}`;\n\n if (ignorePaths.some(p => path.startsWith(p))) {\n continue;\n }\n\n // Check path change (breaking)\n if (sourceEndpoint.path !== targetEndpoint.path) {\n changes.push(this.createChange({\n category: 'endpoint-modified',\n severity: 'breaking',\n path: `${path}.path`,\n description: `Endpoint path changed from ${sourceEndpoint.path} to ${targetEndpoint.path}`,\n sourceValue: sourceEndpoint.path,\n targetValue: targetEndpoint.path,\n affectedComponents: [opId],\n migrationComplexity: 4,\n }));\n }\n\n // Check method change (breaking)\n if (sourceEndpoint.method !== targetEndpoint.method) {\n changes.push(this.createChange({\n category: 'endpoint-modified',\n severity: 'breaking',\n path: `${path}.method`,\n description: `Endpoint method changed from ${sourceEndpoint.method} to ${targetEndpoint.method}`,\n sourceValue: sourceEndpoint.method,\n targetValue: targetEndpoint.method,\n affectedComponents: [opId],\n migrationComplexity: 3,\n }));\n }\n\n // Compare parameters\n const paramChanges = this.compareParameters(\n sourceEndpoint,\n targetEndpoint,\n path,\n strictness\n );\n changes.push(...paramChanges);\n\n // Compare responses\n const responseChanges = this.compareResponses(\n sourceEndpoint,\n targetEndpoint,\n path,\n strictness\n );\n changes.push(...responseChanges);\n }\n\n return changes;\n }\n\n /**\n * Compare endpoint parameters\n */\n private compareParameters(\n source: EndpointDefinition,\n target: EndpointDefinition,\n basePath: string,\n strictness: Strictness\n ): CompatibilityChange[] {\n const changes: CompatibilityChange[] = [];\n\n const sourceParams = new Map(\n source.parameters?.map(p => [`${p.in}:${p.name}`, p]) || []\n );\n const targetParams = new Map(\n target.parameters?.map(p => [`${p.in}:${p.name}`, p]) || []\n );\n\n // Removed parameters\n for (const [key, sourceParam] of sourceParams) {\n if (!targetParams.has(key)) {\n // Removing a required parameter is breaking\n changes.push(this.createChange({\n category: 'parameter-removed',\n severity: sourceParam.required ? 'breaking' : 'non-breaking',\n path: `${basePath}.parameters.${sourceParam.name}`,\n description: `Parameter \"${sourceParam.name}\" removed from ${source.method} ${source.path}`,\n sourceValue: sourceParam.name,\n affectedComponents: [source.operationId],\n migrationComplexity: sourceParam.required ? 3 : 1,\n }));\n }\n }\n\n // Added parameters\n for (const [key, targetParam] of targetParams) {\n if (!sourceParams.has(key)) {\n // Adding a required parameter is breaking\n changes.push(this.createChange({\n category: 'parameter-added',\n severity: targetParam.required ? 'breaking' : 'non-breaking',\n path: `${basePath}.parameters.${targetParam.name}`,\n description: `New ${targetParam.required ? 'required ' : 'optional '}parameter \"${targetParam.name}\" added to ${target.method} ${target.path}`,\n targetValue: targetParam.name,\n affectedComponents: [target.operationId],\n migrationComplexity: targetParam.required ? 4 : 1,\n }));\n }\n }\n\n // Modified parameters\n for (const [key, sourceParam] of sourceParams) {\n const targetParam = targetParams.get(key);\n if (!targetParam) continue;\n\n // Required status changed\n if (sourceParam.required !== targetParam.required) {\n changes.push(this.createChange({\n category: 'parameter-modified',\n severity: !sourceParam.required && targetParam.required ? 'breaking' : 'non-breaking',\n path: `${basePath}.parameters.${sourceParam.name}.required`,\n description: `Parameter \"${sourceParam.name}\" required status changed`,\n sourceValue: sourceParam.required,\n targetValue: targetParam.required,\n affectedComponents: [source.operationId],\n migrationComplexity: !sourceParam.required && targetParam.required ? 3 : 1,\n }));\n }\n }\n\n return changes;\n }\n\n /**\n * Compare endpoint responses\n */\n private compareResponses(\n source: EndpointDefinition,\n target: EndpointDefinition,\n basePath: string,\n strictness: Strictness\n ): CompatibilityChange[] {\n const changes: CompatibilityChange[] = [];\n\n const sourceResponses = new Map(\n source.responses.map(r => [String(r.statusCode), r])\n );\n const targetResponses = new Map(\n target.responses.map(r => [String(r.statusCode), r])\n );\n\n // Removed responses\n for (const [code, sourceResponse] of sourceResponses) {\n if (!targetResponses.has(code)) {\n changes.push(this.createChange({\n category: 'response-removed',\n severity: code.startsWith('2') ? 'breaking' : 'non-breaking',\n path: `${basePath}.responses.${code}`,\n description: `Response ${code} removed from ${source.method} ${source.path}`,\n sourceValue: code,\n affectedComponents: [source.operationId],\n migrationComplexity: code.startsWith('2') ? 4 : 2,\n }));\n }\n }\n\n // Added responses\n for (const [code, targetResponse] of targetResponses) {\n if (!sourceResponses.has(code)) {\n changes.push(this.createChange({\n category: 'response-added',\n severity: 'non-breaking',\n path: `${basePath}.responses.${code}`,\n description: `New response ${code} added to ${target.method} ${target.path}`,\n targetValue: code,\n affectedComponents: [],\n migrationComplexity: 1,\n }));\n }\n }\n\n // Modified responses\n for (const [code, sourceResponse] of sourceResponses) {\n const targetResponse = targetResponses.get(code);\n if (!targetResponse) continue;\n\n // Response type changed\n if (sourceResponse.type?.typeId !== targetResponse.type?.typeId) {\n changes.push(this.createChange({\n category: 'response-modified',\n severity: code.startsWith('2') ? 'breaking' : 'non-breaking',\n path: `${basePath}.responses.${code}.type`,\n description: `Response ${code} type changed for ${source.method} ${source.path}`,\n sourceValue: sourceResponse.type?.typeId,\n targetValue: targetResponse.type?.typeId,\n affectedComponents: [source.operationId],\n migrationComplexity: code.startsWith('2') ? 4 : 2,\n }));\n }\n }\n\n return changes;\n }\n\n /**\n * Compare authentication schemes\n */\n async compareAuthentication(\n source: CanonicalSchema,\n target: CanonicalSchema,\n strictness: Strictness\n ): Promise<CompatibilityChange[]> {\n const changes: CompatibilityChange[] = [];\n\n const sourceAuth = new Map(source.authentication.map(a => [a.id, a]));\n const targetAuth = new Map(target.authentication.map(a => [a.id, a]));\n\n // Removed auth schemes (breaking)\n for (const [id, sourceScheme] of sourceAuth) {\n if (!targetAuth.has(id)) {\n changes.push(this.createChange({\n category: 'auth-removed',\n severity: 'breaking',\n path: `authentication.${id}`,\n description: `Authentication scheme \"${id}\" (${sourceScheme.type}) has been removed`,\n sourceValue: id,\n affectedComponents: ['authentication'],\n migrationComplexity: 5,\n }));\n }\n }\n\n // Added auth schemes (non-breaking)\n for (const [id, targetScheme] of targetAuth) {\n if (!sourceAuth.has(id)) {\n changes.push(this.createChange({\n category: 'auth-added',\n severity: 'non-breaking',\n path: `authentication.${id}`,\n description: `New authentication scheme \"${id}\" (${targetScheme.type}) added`,\n targetValue: id,\n affectedComponents: [],\n migrationComplexity: 1,\n }));\n }\n }\n\n // Modified auth schemes\n for (const [id, sourceScheme] of sourceAuth) {\n const targetScheme = targetAuth.get(id);\n if (!targetScheme) continue;\n\n if (sourceScheme.type !== targetScheme.type) {\n changes.push(this.createChange({\n category: 'auth-modified',\n severity: 'breaking',\n path: `authentication.${id}.type`,\n description: `Authentication scheme \"${id}\" type changed from ${sourceScheme.type} to ${targetScheme.type}`,\n sourceValue: sourceScheme.type,\n targetValue: targetScheme.type,\n affectedComponents: ['authentication'],\n migrationComplexity: 4,\n }));\n }\n }\n\n return changes;\n }\n\n /**\n * Compare error definitions\n */\n async compareErrors(\n source: CanonicalSchema,\n target: CanonicalSchema,\n strictness: Strictness\n ): Promise<CompatibilityChange[]> {\n const changes: CompatibilityChange[] = [];\n\n const sourceErrors = new Map(source.errors.map(e => [e.code, e]));\n const targetErrors = new Map(target.errors.map(e => [e.code, e]));\n\n // Removed errors (non-breaking - clients should be able to handle unknown errors)\n for (const [code, sourceError] of sourceErrors) {\n if (!targetErrors.has(code)) {\n changes.push(this.createChange({\n category: 'error-removed',\n severity: 'informational',\n path: `errors.${code}`,\n description: `Error \"${code}\" has been removed`,\n sourceValue: code,\n affectedComponents: [],\n migrationComplexity: 1,\n }));\n }\n }\n\n // Added errors (non-breaking)\n for (const [code, targetError] of targetErrors) {\n if (!sourceErrors.has(code)) {\n changes.push(this.createChange({\n category: 'error-added',\n severity: 'non-breaking',\n path: `errors.${code}`,\n description: `New error \"${code}\" added`,\n targetValue: code,\n affectedComponents: [],\n migrationComplexity: 1,\n }));\n }\n }\n\n return changes;\n }\n\n /**\n * Find references to a type in the schema\n */\n private findTypeReferences(schema: CanonicalSchema, typeId: string): string[] {\n const references: string[] = [];\n\n // Check other types\n for (const type of schema.types) {\n if (type.kind === 'object') {\n for (const prop of (type as any).properties || []) {\n if (prop.type?.typeId === typeId) {\n references.push(`${type.name}.${prop.name}`);\n }\n }\n }\n if (type.kind === 'array') {\n if ((type as any).items?.typeId === typeId) {\n references.push(`${type.name}[]`);\n }\n }\n }\n\n // Check endpoints\n for (const endpoint of schema.endpoints) {\n // Check request body\n if (endpoint.requestBody?.type?.typeId === typeId) {\n references.push(`${endpoint.operationId}.requestBody`);\n }\n\n // Check responses\n for (const response of endpoint.responses) {\n if (response.type?.typeId === typeId) {\n references.push(`${endpoint.operationId}.response.${response.statusCode}`);\n }\n }\n\n // Check parameters\n for (const param of endpoint.parameters || []) {\n if (param.type?.typeId === typeId) {\n references.push(`${endpoint.operationId}.${param.name}`);\n }\n }\n }\n\n return references;\n }\n\n /**\n * Create a compatibility change\n */\n private createChange(params: {\n category: ChangeCategory;\n severity: ChangeSeverity;\n path: string;\n description: string;\n sourceValue?: unknown;\n targetValue?: unknown;\n affectedComponents: string[];\n migrationComplexity: number;\n }): CompatibilityChange {\n return {\n changeId: randomUUID(),\n category: params.category,\n severity: params.severity,\n path: params.path,\n description: params.description,\n sourceValue: params.sourceValue,\n targetValue: params.targetValue,\n impact: {\n affectedComponents: params.affectedComponents,\n affectedLanguages: ['typescript', 'python', 'rust', 'go', 'java', 'csharp'],\n migrationComplexity: params.migrationComplexity,\n },\n };\n }\n}\n","/**\n * Version Compatibility Agent\n *\n * PROMPT 2 DELIVERABLE: Runtime Implementation\n *\n * A VALIDATION/COMPATIBILITY-class agent that analyzes compatibility between\n * API and SDK versions, detecting breaking vs non-breaking changes.\n *\n * Deployment: Google Cloud Edge Function (stateless)\n * Classification: VALIDATION / COMPATIBILITY\n * decision_type: \"version_compatibility_analysis\"\n *\n * @module agents/version-compatibility-agent\n */\n\nimport { randomUUID } from 'crypto';\nimport type { CanonicalSchema, TypeDefinition, EndpointDefinition } from '../../types/canonical-schema.js';\nimport {\n AGENT_ID,\n AGENT_VERSION,\n CompatibilityAnalysisRequestSchema,\n CompatibilityFailureMode,\n type CompatibilityAnalysisRequest,\n type CompatibilityAnalysisResponse,\n type CompatibilityChange,\n type CompatibilityVerdict,\n type ChangeSeverity,\n type ChangeCategory,\n} from '../contracts/version-compatibility.contract.js';\nimport {\n VersionCompatibilityEventFactory,\n hashObject,\n type VersionCompatibilityEvent,\n} from '../contracts/decision-events.js';\nimport { RuvectorServiceClient } from './ruvector-client.js';\nimport { SchemaComparator } from './comparator.js';\n\n// =============================================================================\n// AGENT RUNTIME\n// =============================================================================\n\n/**\n * Version Compatibility Agent runtime\n *\n * This agent:\n * - Compares schema versions for compatibility\n * - Detects breaking vs non-breaking changes\n * - Emits compatibility reports (advisory only)\n * - Provides upgrade guidance (no enforcement)\n *\n * This agent does NOT:\n * - Execute code\n * - Apply migrations\n * - Modify schemas\n * - Enforce policies\n */\nexport class VersionCompatibilityAgent {\n private readonly eventFactory: VersionCompatibilityEventFactory;\n private readonly ruvectorClient: RuvectorServiceClient;\n private readonly comparator: SchemaComparator;\n private readonly emitEvents: boolean;\n\n constructor(options: {\n ruvectorServiceUrl?: string;\n emitEvents?: boolean;\n } = {}) {\n this.eventFactory = new VersionCompatibilityEventFactory(AGENT_VERSION);\n this.ruvectorClient = new RuvectorServiceClient(options.ruvectorServiceUrl);\n this.comparator = new SchemaComparator();\n this.emitEvents = options.emitEvents ?? false;\n }\n\n /**\n * Analyze compatibility between two schema versions\n *\n * @param request - Compatibility analysis request\n * @returns Compatibility analysis response\n */\n async analyze(request: CompatibilityAnalysisRequest): Promise<CompatibilityAnalysisResponse> {\n const startTime = Date.now();\n const events: VersionCompatibilityEvent[] = [];\n\n // Validate request\n const validationResult = CompatibilityAnalysisRequestSchema.safeParse(request);\n if (!validationResult.success) {\n return this.createFailedResponse(\n request.requestId,\n CompatibilityFailureMode.INVALID_SOURCE_SCHEMA,\n `Invalid request: ${validationResult.error.message}`,\n false\n );\n }\n\n // Calculate input hashes\n const sourceHash = hashObject(request.sourceSchema);\n const targetHash = hashObject(request.targetSchema);\n const inputHash = hashObject({ sourceHash, targetHash, options: request.options });\n\n // Emit initiated event\n const initiatedEvent = this.eventFactory.createInitiatedEvent(\n request.requestId,\n inputHash,\n {\n sourceVersion: request.sourceSchema.metadata.version,\n targetVersion: request.targetSchema.metadata.version,\n sourceSchemaHash: sourceHash,\n targetSchemaHash: targetHash,\n strictness: request.options.strictness,\n categoriesToAnalyze: request.options.analyzeCategories,\n },\n request.tracingContext\n );\n events.push(initiatedEvent);\n\n try {\n // Verify provider compatibility\n if (request.sourceSchema.metadata.providerId !== request.targetSchema.metadata.providerId) {\n const failedEvent = this.eventFactory.createFailedEvent(\n request.requestId,\n inputHash,\n {\n failureMode: CompatibilityFailureMode.INCOMPATIBLE_PROVIDERS,\n errorMessage: `Provider mismatch: ${request.sourceSchema.metadata.providerId} vs ${request.targetSchema.metadata.providerId}`,\n recoverable: false,\n partialAnalysis: false,\n },\n request.tracingContext\n );\n events.push(failedEvent);\n\n if (this.emitEvents) {\n await this.emitDecisionEvents(events);\n }\n\n return this.createFailedResponse(\n request.requestId,\n CompatibilityFailureMode.INCOMPATIBLE_PROVIDERS,\n `Provider mismatch: ${request.sourceSchema.metadata.providerId} vs ${request.targetSchema.metadata.providerId}`,\n false\n );\n }\n\n // Perform comparison\n const changes: CompatibilityChange[] = [];\n const warnings: string[] = [];\n\n // Compare types if requested\n if (request.options.analyzeCategories.includes('types')) {\n const typeChanges = await this.comparator.compareTypes(\n request.sourceSchema,\n request.targetSchema,\n request.options.strictness,\n request.options.ignorePaths\n );\n changes.push(...typeChanges);\n\n // Emit type comparison events\n for (const typeChange of typeChanges) {\n const typeEvent = this.eventFactory.createTypeComparisonEvent(\n request.requestId,\n inputHash,\n {\n typeName: typeChange.path.split('.')[1] || typeChange.path,\n sourceTypeId: typeChange.sourceValue ? String(typeChange.sourceValue) : undefined,\n targetTypeId: typeChange.targetValue ? String(typeChange.targetValue) : undefined,\n comparisonResult: this.mapSeverityToComparison(typeChange.severity),\n changesDetected: 1,\n },\n request.tracingContext\n );\n events.push(typeEvent);\n }\n }\n\n // Compare endpoints if requested\n if (request.options.analyzeCategories.includes('endpoints')) {\n const endpointChanges = await this.comparator.compareEndpoints(\n request.sourceSchema,\n request.targetSchema,\n request.options.strictness,\n request.options.ignorePaths\n );\n changes.push(...endpointChanges);\n\n // Emit endpoint comparison events\n for (const endpointChange of endpointChanges) {\n const pathParts = endpointChange.path.split('.');\n const endpointEvent = this.eventFactory.createEndpointComparisonEvent(\n request.requestId,\n inputHash,\n {\n endpointPath: pathParts[1] || endpointChange.path,\n method: pathParts[2] || 'UNKNOWN',\n sourceEndpointId: endpointChange.sourceValue ? String(endpointChange.sourceValue) : undefined,\n targetEndpointId: endpointChange.targetValue ? String(endpointChange.targetValue) : undefined,\n comparisonResult: this.mapSeverityToComparison(endpointChange.severity),\n parameterChanges: endpointChange.category.includes('parameter') ? 1 : 0,\n responseChanges: endpointChange.category.includes('response') ? 1 : 0,\n },\n request.tracingContext\n );\n events.push(endpointEvent);\n }\n }\n\n // Compare authentication if requested\n if (request.options.analyzeCategories.includes('authentication')) {\n const authChanges = await this.comparator.compareAuthentication(\n request.sourceSchema,\n request.targetSchema,\n request.options.strictness\n );\n changes.push(...authChanges);\n }\n\n // Compare errors if requested\n if (request.options.analyzeCategories.includes('errors')) {\n const errorChanges = await this.comparator.compareErrors(\n request.sourceSchema,\n request.targetSchema,\n request.options.strictness\n );\n changes.push(...errorChanges);\n }\n\n // Emit breaking change events\n const breakingChanges = changes.filter(c => c.severity === 'breaking');\n for (const change of breakingChanges) {\n const breakingEvent = this.eventFactory.createBreakingChangeEvent(\n request.requestId,\n inputHash,\n {\n changeId: change.changeId,\n category: change.category,\n path: change.path,\n severity: change.severity,\n description: change.description,\n migrationComplexity: change.impact.migrationComplexity,\n affectedComponents: change.impact.affectedComponents,\n },\n 1.0,\n request.tracingContext\n );\n events.push(breakingEvent);\n }\n\n // Calculate summary\n const summary = this.calculateSummary(changes);\n\n // Determine verdict\n const verdict = this.determineVerdict(changes, request.options.strictness);\n\n // Calculate version recommendation\n const versionRecommendation = this.calculateVersionRecommendation(\n request.targetSchema.metadata.version,\n changes\n );\n\n // Emit version recommendation event\n const recommendationEvent = this.eventFactory.createVersionRecommendationEvent(\n request.requestId,\n inputHash,\n {\n currentVersion: request.targetSchema.metadata.version,\n recommendedBump: versionRecommendation.bumpType,\n recommendedVersion: versionRecommendation.recommendedVersion,\n rationale: versionRecommendation.rationale,\n breakingChangeCount: summary.breakingChanges,\n constraintsApplied: ['semver-compliance', `strictness-${request.options.strictness}`],\n },\n request.tracingContext\n );\n events.push(recommendationEvent);\n\n // Add upgrade guidance if requested\n if (request.options.includeUpgradeGuidance) {\n for (const change of changes) {\n change.upgradeGuidance = this.generateUpgradeGuidance(change);\n }\n }\n\n // Calculate determinism hash\n const outputHash = hashObject({\n verdict,\n summary,\n changes: changes.map(c => ({ path: c.path, severity: c.severity, category: c.category })),\n versionRecommendation,\n });\n\n const durationMs = Date.now() - startTime;\n\n // Emit completed event\n const completedEvent = this.eventFactory.createCompletedEvent(\n request.requestId,\n inputHash,\n outputHash,\n {\n success: true,\n verdict,\n totalChanges: summary.totalChanges,\n breakingChanges: summary.breakingChanges,\n nonBreakingChanges: summary.nonBreakingChanges,\n recommendedBump: versionRecommendation.bumpType,\n durationMs,\n determinismHash: outputHash,\n },\n request.tracingContext\n );\n events.push(completedEvent);\n\n // Emit all events to ruvector-service\n if (this.emitEvents) {\n await this.emitDecisionEvents(events);\n }\n\n // Build response\n const response: CompatibilityAnalysisResponse = {\n requestId: request.requestId,\n success: true,\n sourceVersion: {\n providerId: request.sourceSchema.metadata.providerId,\n version: request.sourceSchema.metadata.version,\n schemaHash: sourceHash,\n },\n targetVersion: {\n providerId: request.targetSchema.metadata.providerId,\n version: request.targetSchema.metadata.version,\n schemaHash: targetHash,\n },\n verdict,\n summary,\n changes,\n versionRecommendation,\n analysisMetadata: {\n agentVersion: AGENT_VERSION,\n analyzedAt: new Date().toISOString(),\n durationMs,\n determinismHash: outputHash,\n },\n warnings,\n errors: [],\n };\n\n return response;\n\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n\n const failedEvent = this.eventFactory.createFailedEvent(\n request.requestId,\n inputHash,\n {\n failureMode: CompatibilityFailureMode.ANALYSIS_TIMEOUT,\n errorMessage,\n recoverable: false,\n partialAnalysis: false,\n },\n request.tracingContext\n );\n events.push(failedEvent);\n\n if (this.emitEvents) {\n await this.emitDecisionEvents(events);\n }\n\n return this.createFailedResponse(\n request.requestId,\n CompatibilityFailureMode.ANALYSIS_TIMEOUT,\n errorMessage,\n false\n );\n }\n }\n\n /**\n * Map severity to comparison result\n */\n private mapSeverityToComparison(severity: ChangeSeverity): 'identical' | 'compatible' | 'breaking' | 'removed' | 'added' {\n switch (severity) {\n case 'breaking':\n return 'breaking';\n case 'non-breaking':\n return 'compatible';\n case 'patch':\n return 'compatible';\n case 'informational':\n return 'identical';\n }\n }\n\n /**\n * Calculate summary statistics from changes\n */\n private calculateSummary(changes: CompatibilityChange[]): {\n totalChanges: number;\n breakingChanges: number;\n nonBreakingChanges: number;\n patchChanges: number;\n informationalChanges: number;\n changesByCategory: Record<string, number>;\n } {\n const summary = {\n totalChanges: changes.length,\n breakingChanges: 0,\n nonBreakingChanges: 0,\n patchChanges: 0,\n informationalChanges: 0,\n changesByCategory: {} as Record<string, number>,\n };\n\n for (const change of changes) {\n switch (change.severity) {\n case 'breaking':\n summary.breakingChanges++;\n break;\n case 'non-breaking':\n summary.nonBreakingChanges++;\n break;\n case 'patch':\n summary.patchChanges++;\n break;\n case 'informational':\n summary.informationalChanges++;\n break;\n }\n\n summary.changesByCategory[change.category] = (summary.changesByCategory[change.category] || 0) + 1;\n }\n\n return summary;\n }\n\n /**\n * Determine overall compatibility verdict\n */\n private determineVerdict(changes: CompatibilityChange[], strictness: 'strict' | 'standard' | 'lenient'): CompatibilityVerdict {\n const hasBreaking = changes.some(c => c.severity === 'breaking');\n const hasNonBreaking = changes.some(c => c.severity === 'non-breaking');\n const breakingCount = changes.filter(c => c.severity === 'breaking').length;\n\n if (breakingCount === 0) {\n if (hasNonBreaking) {\n return 'backwards-compatible';\n }\n return 'fully-compatible';\n }\n\n // In lenient mode, few breaking changes are marked as breaking\n // In strict mode, any breaking change is incompatible\n if (strictness === 'strict') {\n return breakingCount > 0 ? 'incompatible' : 'breaking';\n }\n\n if (strictness === 'lenient') {\n return breakingCount > 5 ? 'incompatible' : 'breaking';\n }\n\n // Standard mode\n return breakingCount > 10 ? 'incompatible' : 'breaking';\n }\n\n /**\n * Calculate version recommendation based on changes\n */\n private calculateVersionRecommendation(\n currentVersion: string,\n changes: CompatibilityChange[]\n ): { bumpType: 'major' | 'minor' | 'patch' | 'none'; recommendedVersion: string; rationale: string } {\n const hasBreaking = changes.some(c => c.severity === 'breaking');\n const hasNonBreaking = changes.some(c => c.severity === 'non-breaking');\n const hasPatch = changes.some(c => c.severity === 'patch');\n\n // Parse current version\n const versionMatch = currentVersion.match(/^(\\d+)\\.(\\d+)\\.(\\d+)/);\n if (!versionMatch) {\n return {\n bumpType: 'none',\n recommendedVersion: currentVersion,\n rationale: 'Unable to parse current version',\n };\n }\n\n let [, major, minor, patch] = versionMatch.map(Number);\n\n if (hasBreaking) {\n return {\n bumpType: 'major',\n recommendedVersion: `${major + 1}.0.0`,\n rationale: `Breaking changes detected: ${changes.filter(c => c.severity === 'breaking').length} breaking change(s) require major version bump`,\n };\n }\n\n if (hasNonBreaking) {\n return {\n bumpType: 'minor',\n recommendedVersion: `${major}.${minor + 1}.0`,\n rationale: `New features/additions detected: ${changes.filter(c => c.severity === 'non-breaking').length} non-breaking change(s) require minor version bump`,\n };\n }\n\n if (hasPatch) {\n return {\n bumpType: 'patch',\n recommendedVersion: `${major}.${minor}.${patch + 1}`,\n rationale: `Backwards-compatible fixes: ${changes.filter(c => c.severity === 'patch').length} patch change(s)`,\n };\n }\n\n return {\n bumpType: 'none',\n recommendedVersion: currentVersion,\n rationale: 'No significant changes detected',\n };\n }\n\n /**\n * Generate upgrade guidance for a change\n */\n private generateUpgradeGuidance(change: CompatibilityChange): string {\n const guidanceMap: Record<ChangeCategory, string> = {\n 'type-added': `New type \"${change.path.split('.').pop()}\" is available. No migration required.`,\n 'type-removed': `Type \"${change.path.split('.').pop()}\" has been removed. Update all references to use alternative types.`,\n 'type-modified': `Type \"${change.path.split('.').pop()}\" has been modified. Review property changes and update usage accordingly.`,\n 'property-added': `New property added at \"${change.path}\". No migration required for existing code.`,\n 'property-removed': `Property at \"${change.path}\" has been removed. Remove all references from your code.`,\n 'property-modified': `Property at \"${change.path}\" has been modified. Review the changes and update your code.`,\n 'endpoint-added': `New endpoint available. No migration required.`,\n 'endpoint-removed': `Endpoint at \"${change.path}\" has been removed. Update all API calls to use alternative endpoints.`,\n 'endpoint-modified': `Endpoint at \"${change.path}\" has been modified. Review parameter and response changes.`,\n 'parameter-added': `New parameter added. Optional parameters don't require code changes.`,\n 'parameter-removed': `Parameter has been removed. Remove from all API calls.`,\n 'parameter-modified': `Parameter has been modified. Update your API calls accordingly.`,\n 'response-added': `New response type added. Handle the new response in your code.`,\n 'response-removed': `Response type has been removed. Update response handling.`,\n 'response-modified': `Response structure has been modified. Update response parsing.`,\n 'auth-added': `New authentication method available.`,\n 'auth-removed': `Authentication method removed. Switch to alternative auth method.`,\n 'auth-modified': `Authentication requirements changed. Update your auth configuration.`,\n 'error-added': `New error code added. Consider adding error handling for it.`,\n 'error-removed': `Error code removed. Can remove specific error handling if no longer needed.`,\n 'error-modified': `Error format changed. Update error handling code.`,\n 'metadata-changed': `Metadata updated. Usually no code changes required.`,\n };\n\n return guidanceMap[change.category] || `Review the change at \"${change.path}\" and update your code accordingly.`;\n }\n\n /**\n * Create a failed response\n */\n private createFailedResponse(\n requestId: string,\n failureMode: CompatibilityFailureMode,\n errorMessage: string,\n partialAnalysis: boolean\n ): CompatibilityAnalysisResponse {\n return {\n requestId,\n success: false,\n sourceVersion: { providerId: '', version: '0.0.0' },\n targetVersion: { providerId: '', version: '0.0.0' },\n verdict: 'incompatible',\n summary: {\n totalChanges: 0,\n breakingChanges: 0,\n nonBreakingChanges: 0,\n patchChanges: 0,\n informationalChanges: 0,\n changesByCategory: {},\n },\n changes: [],\n versionRecommendation: {\n bumpType: 'none',\n recommendedVersion: '0.0.0',\n rationale: 'Analysis failed',\n },\n analysisMetadata: {\n agentVersion: AGENT_VERSION,\n analyzedAt: new Date().toISOString(),\n durationMs: 0,\n determinismHash: '',\n },\n warnings: [],\n errors: [`${failureMode}: ${errorMessage}`],\n };\n }\n\n /**\n * Emit decision events to ruvector-service\n */\n private async emitDecisionEvents(events: VersionCompatibilityEvent[]): Promise<void> {\n for (const event of events) {\n try {\n await this.ruvectorClient.emitDecisionEvent(event);\n } catch (error) {\n // Log but don't fail - events are advisory\n console.error(`Failed to emit event ${event.eventId}:`, error);\n }\n }\n }\n}\n\n// Export types and utilities\nexport { AGENT_ID, AGENT_VERSION };\nexport type {\n CompatibilityAnalysisRequest,\n CompatibilityAnalysisResponse,\n CompatibilityChange,\n CompatibilityVerdict,\n};\n"],"mappings":"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","names":["HTTPMethod","PrimitiveTypeKind","TypeKind","AuthSchemeType","OAuth2FlowType","ParameterLocation","typeDef","TargetLanguage","variants","randomUUID","randomUUID","z","z","SDKGeneratorDecisionType","ConfidenceSemantics","z","createHash","randomUUID","resolve","createHash","createHash","z","CLIFramework","CLIArgumentType","calculateConfidence","createHash","createHash","z","z","CLIGeneratorDecisionType","ConfidenceSemantics","z","AGENT_ID","AGENT_VERSION","InterfaceFormat","z","APITranslationDecisionType","TranslationConfidenceSemantics","AGENT_VERSION","z","z","VersionCompatibilityDecisionType","CompatibilityConfidenceSemantics","AGENT_VERSION","AGENT_ID","resolve","randomUUID","AGENT_VERSION","AGENT_ID","AGENT_VERSION","randomUUID","handler","metadata"]}
|