@substrate-ai/core 0.19.54
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/README.md +55 -0
- package/dist/__tests__/adapter.test.d.ts +12 -0
- package/dist/__tests__/adapter.test.d.ts.map +1 -0
- package/dist/__tests__/adapter.test.js +259 -0
- package/dist/__tests__/adapter.test.js.map +1 -0
- package/dist/__tests__/event-bus.test.d.ts +14 -0
- package/dist/__tests__/event-bus.test.d.ts.map +1 -0
- package/dist/__tests__/event-bus.test.js +199 -0
- package/dist/__tests__/event-bus.test.js.map +1 -0
- package/dist/__tests__/output-quality.test.d.ts +8 -0
- package/dist/__tests__/output-quality.test.d.ts.map +1 -0
- package/dist/__tests__/output-quality.test.js +166 -0
- package/dist/__tests__/output-quality.test.js.map +1 -0
- package/dist/__tests__/schema-suffix.test.d.ts +9 -0
- package/dist/__tests__/schema-suffix.test.d.ts.map +1 -0
- package/dist/__tests__/schema-suffix.test.js +126 -0
- package/dist/__tests__/schema-suffix.test.js.map +1 -0
- package/dist/__tests__/yaml-parser.test.d.ts +18 -0
- package/dist/__tests__/yaml-parser.test.d.ts.map +1 -0
- package/dist/__tests__/yaml-parser.test.js +475 -0
- package/dist/__tests__/yaml-parser.test.js.map +1 -0
- package/dist/__type-checks__.d.ts +11 -0
- package/dist/__type-checks__.d.ts.map +1 -0
- package/dist/__type-checks__.js +19 -0
- package/dist/__type-checks__.js.map +1 -0
- package/dist/adapters/__tests__/adapter-output-normalizer.test.d.ts +12 -0
- package/dist/adapters/__tests__/adapter-output-normalizer.test.d.ts.map +1 -0
- package/dist/adapters/__tests__/adapter-output-normalizer.test.js +193 -0
- package/dist/adapters/__tests__/adapter-output-normalizer.test.js.map +1 -0
- package/dist/adapters/adapter-format-error.d.ts +35 -0
- package/dist/adapters/adapter-format-error.d.ts.map +1 -0
- package/dist/adapters/adapter-format-error.js +38 -0
- package/dist/adapters/adapter-format-error.js.map +1 -0
- package/dist/adapters/adapter-output-normalizer.d.ts +50 -0
- package/dist/adapters/adapter-output-normalizer.d.ts.map +1 -0
- package/dist/adapters/adapter-output-normalizer.js +233 -0
- package/dist/adapters/adapter-output-normalizer.js.map +1 -0
- package/dist/adapters/adapter-registry.d.ts +50 -0
- package/dist/adapters/adapter-registry.d.ts.map +1 -0
- package/dist/adapters/adapter-registry.js +101 -0
- package/dist/adapters/adapter-registry.js.map +1 -0
- package/dist/adapters/claude-adapter.d.ts +59 -0
- package/dist/adapters/claude-adapter.d.ts.map +1 -0
- package/dist/adapters/claude-adapter.js +367 -0
- package/dist/adapters/claude-adapter.js.map +1 -0
- package/dist/adapters/codex-adapter.d.ts +64 -0
- package/dist/adapters/codex-adapter.d.ts.map +1 -0
- package/dist/adapters/codex-adapter.js +263 -0
- package/dist/adapters/codex-adapter.js.map +1 -0
- package/dist/adapters/gemini-adapter.d.ts +57 -0
- package/dist/adapters/gemini-adapter.d.ts.map +1 -0
- package/dist/adapters/gemini-adapter.js +311 -0
- package/dist/adapters/gemini-adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +10 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +14 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/schemas.d.ts +137 -0
- package/dist/adapters/schemas.d.ts.map +1 -0
- package/dist/adapters/schemas.js +140 -0
- package/dist/adapters/schemas.js.map +1 -0
- package/dist/adapters/types.d.ts +245 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +6 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/adapters/worker-adapter.d.ts +188 -0
- package/dist/adapters/worker-adapter.d.ts.map +1 -0
- package/dist/adapters/worker-adapter.js +19 -0
- package/dist/adapters/worker-adapter.js.map +1 -0
- package/dist/budget/budget-tracker.d.ts +22 -0
- package/dist/budget/budget-tracker.d.ts.map +1 -0
- package/dist/budget/budget-tracker.js +39 -0
- package/dist/budget/budget-tracker.js.map +1 -0
- package/dist/budget/index.d.ts +6 -0
- package/dist/budget/index.d.ts.map +1 -0
- package/dist/budget/index.js +5 -0
- package/dist/budget/index.js.map +1 -0
- package/dist/config/config-migrator.d.ts +58 -0
- package/dist/config/config-migrator.d.ts.map +1 -0
- package/dist/config/config-migrator.js +158 -0
- package/dist/config/config-migrator.js.map +1 -0
- package/dist/config/config-system-impl.d.ts +63 -0
- package/dist/config/config-system-impl.d.ts.map +1 -0
- package/dist/config/config-system-impl.js +364 -0
- package/dist/config/config-system-impl.js.map +1 -0
- package/dist/config/config-watcher.d.ts +59 -0
- package/dist/config/config-watcher.d.ts.map +1 -0
- package/dist/config/config-watcher.js +137 -0
- package/dist/config/config-watcher.js.map +1 -0
- package/dist/config/defaults.d.ts +13 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +62 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/errors.d.ts +25 -0
- package/dist/config/errors.d.ts.map +1 -0
- package/dist/config/errors.js +49 -0
- package/dist/config/errors.js.map +1 -0
- package/dist/config/index.d.ts +19 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +39 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/types.d.ts +456 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +174 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/version-utils.d.ts +39 -0
- package/dist/config/version-utils.d.ts.map +1 -0
- package/dist/config/version-utils.js +66 -0
- package/dist/config/version-utils.js.map +1 -0
- package/dist/context/index.d.ts +2 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +2 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/types.d.ts +113 -0
- package/dist/context/types.d.ts.map +1 -0
- package/dist/context/types.js +59 -0
- package/dist/context/types.js.map +1 -0
- package/dist/cost-tracker/cost-tracker-impl.d.ts +51 -0
- package/dist/cost-tracker/cost-tracker-impl.d.ts.map +1 -0
- package/dist/cost-tracker/cost-tracker-impl.js +85 -0
- package/dist/cost-tracker/cost-tracker-impl.js.map +1 -0
- package/dist/cost-tracker/cost-tracker-subscriber.d.ts +31 -0
- package/dist/cost-tracker/cost-tracker-subscriber.d.ts.map +1 -0
- package/dist/cost-tracker/cost-tracker-subscriber.js +116 -0
- package/dist/cost-tracker/cost-tracker-subscriber.js.map +1 -0
- package/dist/cost-tracker/index.d.ts +11 -0
- package/dist/cost-tracker/index.d.ts.map +1 -0
- package/dist/cost-tracker/index.js +7 -0
- package/dist/cost-tracker/index.js.map +1 -0
- package/dist/cost-tracker/token-rates.d.ts +25 -0
- package/dist/cost-tracker/token-rates.d.ts.map +1 -0
- package/dist/cost-tracker/token-rates.js +99 -0
- package/dist/cost-tracker/token-rates.js.map +1 -0
- package/dist/cost-tracker/types.d.ts +6 -0
- package/dist/cost-tracker/types.d.ts.map +1 -0
- package/dist/cost-tracker/types.js +2 -0
- package/dist/cost-tracker/types.js.map +1 -0
- package/dist/dispatch/dispatcher-impl.d.ts +92 -0
- package/dist/dispatch/dispatcher-impl.d.ts.map +1 -0
- package/dist/dispatch/dispatcher-impl.js +847 -0
- package/dist/dispatch/dispatcher-impl.js.map +1 -0
- package/dist/dispatch/index.d.ts +15 -0
- package/dist/dispatch/index.d.ts.map +1 -0
- package/dist/dispatch/index.js +14 -0
- package/dist/dispatch/index.js.map +1 -0
- package/dist/dispatch/interface-change-detector.d.ts +46 -0
- package/dist/dispatch/interface-change-detector.d.ts.map +1 -0
- package/dist/dispatch/interface-change-detector.js +135 -0
- package/dist/dispatch/interface-change-detector.js.map +1 -0
- package/dist/dispatch/output-quality.d.ts +43 -0
- package/dist/dispatch/output-quality.d.ts.map +1 -0
- package/dist/dispatch/output-quality.js +148 -0
- package/dist/dispatch/output-quality.js.map +1 -0
- package/dist/dispatch/types.d.ts +271 -0
- package/dist/dispatch/types.d.ts.map +1 -0
- package/dist/dispatch/types.js +76 -0
- package/dist/dispatch/types.js.map +1 -0
- package/dist/dispatch/yaml-parser.d.ts +40 -0
- package/dist/dispatch/yaml-parser.d.ts.map +1 -0
- package/dist/dispatch/yaml-parser.js +323 -0
- package/dist/dispatch/yaml-parser.js.map +1 -0
- package/dist/events/core-events.d.ts +288 -0
- package/dist/events/core-events.d.ts.map +1 -0
- package/dist/events/core-events.js +10 -0
- package/dist/events/core-events.js.map +1 -0
- package/dist/events/event-bus.d.ts +55 -0
- package/dist/events/event-bus.d.ts.map +1 -0
- package/dist/events/event-bus.js +52 -0
- package/dist/events/event-bus.js.map +1 -0
- package/dist/events/index.d.ts +9 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +6 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/types.d.ts +21 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +8 -0
- package/dist/events/types.js.map +1 -0
- package/dist/git/git-manager.d.ts +31 -0
- package/dist/git/git-manager.d.ts.map +1 -0
- package/dist/git/git-manager.js +46 -0
- package/dist/git/git-manager.js.map +1 -0
- package/dist/git/git-utils.d.ts +166 -0
- package/dist/git/git-utils.d.ts.map +1 -0
- package/dist/git/git-utils.js +347 -0
- package/dist/git/git-utils.js.map +1 -0
- package/dist/git/git-worktree-manager-impl.d.ts +58 -0
- package/dist/git/git-worktree-manager-impl.d.ts.map +1 -0
- package/dist/git/git-worktree-manager-impl.js +336 -0
- package/dist/git/git-worktree-manager-impl.js.map +1 -0
- package/dist/git/git-worktree-manager.d.ts +122 -0
- package/dist/git/git-worktree-manager.d.ts.map +1 -0
- package/dist/git/git-worktree-manager.js +14 -0
- package/dist/git/git-worktree-manager.js.map +1 -0
- package/dist/git/index.d.ts +11 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +8 -0
- package/dist/git/index.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/client.d.ts +42 -0
- package/dist/llm/client.d.ts.map +1 -0
- package/dist/llm/client.js +27 -0
- package/dist/llm/client.js.map +1 -0
- package/dist/monitor/index.d.ts +15 -0
- package/dist/monitor/index.d.ts.map +1 -0
- package/dist/monitor/index.js +9 -0
- package/dist/monitor/index.js.map +1 -0
- package/dist/monitor/monitor-agent-impl.d.ts +56 -0
- package/dist/monitor/monitor-agent-impl.d.ts.map +1 -0
- package/dist/monitor/monitor-agent-impl.js +178 -0
- package/dist/monitor/monitor-agent-impl.js.map +1 -0
- package/dist/monitor/monitor-agent.d.ts +36 -0
- package/dist/monitor/monitor-agent.d.ts.map +1 -0
- package/dist/monitor/monitor-agent.js +6 -0
- package/dist/monitor/monitor-agent.js.map +1 -0
- package/dist/monitor/performance-aggregates.d.ts +41 -0
- package/dist/monitor/performance-aggregates.d.ts.map +1 -0
- package/dist/monitor/performance-aggregates.js +6 -0
- package/dist/monitor/performance-aggregates.js.map +1 -0
- package/dist/monitor/recommendation-engine.d.ts +27 -0
- package/dist/monitor/recommendation-engine.d.ts.map +1 -0
- package/dist/monitor/recommendation-engine.js +140 -0
- package/dist/monitor/recommendation-engine.js.map +1 -0
- package/dist/monitor/recommendation-types.d.ts +30 -0
- package/dist/monitor/recommendation-types.d.ts.map +1 -0
- package/dist/monitor/recommendation-types.js +43 -0
- package/dist/monitor/recommendation-types.js.map +1 -0
- package/dist/monitor/report-generator.d.ts +48 -0
- package/dist/monitor/report-generator.d.ts.map +1 -0
- package/dist/monitor/report-generator.js +123 -0
- package/dist/monitor/report-generator.js.map +1 -0
- package/dist/monitor/task-type-classifier.d.ts +19 -0
- package/dist/monitor/task-type-classifier.d.ts.map +1 -0
- package/dist/monitor/task-type-classifier.js +68 -0
- package/dist/monitor/task-type-classifier.js.map +1 -0
- package/dist/persistence/adapter.d.ts +4 -0
- package/dist/persistence/adapter.d.ts.map +1 -0
- package/dist/persistence/adapter.js +56 -0
- package/dist/persistence/adapter.js.map +1 -0
- package/dist/persistence/cost-types.d.ts +87 -0
- package/dist/persistence/cost-types.d.ts.map +1 -0
- package/dist/persistence/cost-types.js +14 -0
- package/dist/persistence/cost-types.js.map +1 -0
- package/dist/persistence/dolt-adapter-transaction.test.d.ts +10 -0
- package/dist/persistence/dolt-adapter-transaction.test.d.ts.map +1 -0
- package/dist/persistence/dolt-adapter-transaction.test.js +359 -0
- package/dist/persistence/dolt-adapter-transaction.test.js.map +1 -0
- package/dist/persistence/dolt-adapter.d.ts +77 -0
- package/dist/persistence/dolt-adapter.d.ts.map +1 -0
- package/dist/persistence/dolt-adapter.js +98 -0
- package/dist/persistence/dolt-adapter.js.map +1 -0
- package/dist/persistence/dolt-client.d.ts +69 -0
- package/dist/persistence/dolt-client.d.ts.map +1 -0
- package/dist/persistence/dolt-client.js +278 -0
- package/dist/persistence/dolt-client.js.map +1 -0
- package/dist/persistence/dolt-errors.d.ts +10 -0
- package/dist/persistence/dolt-errors.d.ts.map +1 -0
- package/dist/persistence/dolt-errors.js +15 -0
- package/dist/persistence/dolt-errors.js.map +1 -0
- package/dist/persistence/dolt-init.d.ts +64 -0
- package/dist/persistence/dolt-init.d.ts.map +1 -0
- package/dist/persistence/dolt-init.js +233 -0
- package/dist/persistence/dolt-init.js.map +1 -0
- package/dist/persistence/index.d.ts +23 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +23 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/memory-adapter.d.ts +156 -0
- package/dist/persistence/memory-adapter.d.ts.map +1 -0
- package/dist/persistence/memory-adapter.js +1167 -0
- package/dist/persistence/memory-adapter.js.map +1 -0
- package/dist/persistence/monitor-database.d.ts +113 -0
- package/dist/persistence/monitor-database.d.ts.map +1 -0
- package/dist/persistence/monitor-database.js +345 -0
- package/dist/persistence/monitor-database.js.map +1 -0
- package/dist/persistence/queries/amendments.d.ts +91 -0
- package/dist/persistence/queries/amendments.d.ts.map +1 -0
- package/dist/persistence/queries/amendments.js +185 -0
- package/dist/persistence/queries/amendments.js.map +1 -0
- package/dist/persistence/queries/cost.d.ts +130 -0
- package/dist/persistence/queries/cost.d.ts.map +1 -0
- package/dist/persistence/queries/cost.js +384 -0
- package/dist/persistence/queries/cost.js.map +1 -0
- package/dist/persistence/queries/decisions.d.ts +131 -0
- package/dist/persistence/queries/decisions.d.ts.map +1 -0
- package/dist/persistence/queries/decisions.js +339 -0
- package/dist/persistence/queries/decisions.js.map +1 -0
- package/dist/persistence/queries/metrics.d.ts +155 -0
- package/dist/persistence/queries/metrics.d.ts.map +1 -0
- package/dist/persistence/queries/metrics.js +237 -0
- package/dist/persistence/queries/metrics.js.map +1 -0
- package/dist/persistence/queries/retry-escalated.d.ts +35 -0
- package/dist/persistence/queries/retry-escalated.d.ts.map +1 -0
- package/dist/persistence/queries/retry-escalated.js +83 -0
- package/dist/persistence/queries/retry-escalated.js.map +1 -0
- package/dist/persistence/schema-version.d.ts +89 -0
- package/dist/persistence/schema-version.d.ts.map +1 -0
- package/dist/persistence/schema-version.js +67 -0
- package/dist/persistence/schema-version.js.map +1 -0
- package/dist/persistence/schema.d.ts +26 -0
- package/dist/persistence/schema.d.ts.map +1 -0
- package/dist/persistence/schema.js +509 -0
- package/dist/persistence/schema.js.map +1 -0
- package/dist/persistence/schemas/decisions.d.ts +176 -0
- package/dist/persistence/schemas/decisions.d.ts.map +1 -0
- package/dist/persistence/schemas/decisions.js +139 -0
- package/dist/persistence/schemas/decisions.js.map +1 -0
- package/dist/persistence/schemas/operational.d.ts +194 -0
- package/dist/persistence/schemas/operational.d.ts.map +1 -0
- package/dist/persistence/schemas/operational.js +197 -0
- package/dist/persistence/schemas/operational.js.map +1 -0
- package/dist/persistence/types.d.ts +98 -0
- package/dist/persistence/types.d.ts.map +1 -0
- package/dist/persistence/types.js +22 -0
- package/dist/persistence/types.js.map +1 -0
- package/dist/quality-gates/index.d.ts +2 -0
- package/dist/quality-gates/index.d.ts.map +1 -0
- package/dist/quality-gates/index.js +2 -0
- package/dist/quality-gates/index.js.map +1 -0
- package/dist/quality-gates/types.d.ts +106 -0
- package/dist/quality-gates/types.d.ts.map +1 -0
- package/dist/quality-gates/types.js +5 -0
- package/dist/quality-gates/types.js.map +1 -0
- package/dist/routing/index.d.ts +19 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +32 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/routing/model-routing-config.d.ts +75 -0
- package/dist/routing/model-routing-config.d.ts.map +1 -0
- package/dist/routing/model-routing-config.js +110 -0
- package/dist/routing/model-routing-config.js.map +1 -0
- package/dist/routing/model-routing-resolver.d.ts +48 -0
- package/dist/routing/model-routing-resolver.d.ts.map +1 -0
- package/dist/routing/model-routing-resolver.js +105 -0
- package/dist/routing/model-routing-resolver.js.map +1 -0
- package/dist/routing/model-tier.d.ts +21 -0
- package/dist/routing/model-tier.d.ts.map +1 -0
- package/dist/routing/model-tier.js +34 -0
- package/dist/routing/model-tier.js.map +1 -0
- package/dist/routing/provider-status.d.ts +99 -0
- package/dist/routing/provider-status.d.ts.map +1 -0
- package/dist/routing/provider-status.js +163 -0
- package/dist/routing/provider-status.js.map +1 -0
- package/dist/routing/routing-decision.d.ts +127 -0
- package/dist/routing/routing-decision.d.ts.map +1 -0
- package/dist/routing/routing-decision.js +111 -0
- package/dist/routing/routing-decision.js.map +1 -0
- package/dist/routing/routing-engine-impl.d.ts +132 -0
- package/dist/routing/routing-engine-impl.d.ts.map +1 -0
- package/dist/routing/routing-engine-impl.js +450 -0
- package/dist/routing/routing-engine-impl.js.map +1 -0
- package/dist/routing/routing-engine.d.ts +83 -0
- package/dist/routing/routing-engine.d.ts.map +1 -0
- package/dist/routing/routing-engine.js +24 -0
- package/dist/routing/routing-engine.js.map +1 -0
- package/dist/routing/routing-policy.d.ts +138 -0
- package/dist/routing/routing-policy.d.ts.map +1 -0
- package/dist/routing/routing-policy.js +159 -0
- package/dist/routing/routing-policy.js.map +1 -0
- package/dist/routing/routing-recommender.d.ts +60 -0
- package/dist/routing/routing-recommender.d.ts.map +1 -0
- package/dist/routing/routing-recommender.js +209 -0
- package/dist/routing/routing-recommender.js.map +1 -0
- package/dist/routing/routing-telemetry.d.ts +36 -0
- package/dist/routing/routing-telemetry.d.ts.map +1 -0
- package/dist/routing/routing-telemetry.js +39 -0
- package/dist/routing/routing-telemetry.js.map +1 -0
- package/dist/routing/routing-token-accumulator.d.ts +68 -0
- package/dist/routing/routing-token-accumulator.d.ts.map +1 -0
- package/dist/routing/routing-token-accumulator.js +111 -0
- package/dist/routing/routing-token-accumulator.js.map +1 -0
- package/dist/routing/routing-tuner.d.ts +69 -0
- package/dist/routing/routing-tuner.d.ts.map +1 -0
- package/dist/routing/routing-tuner.js +217 -0
- package/dist/routing/routing-tuner.js.map +1 -0
- package/dist/routing/types.d.ts +152 -0
- package/dist/routing/types.d.ts.map +1 -0
- package/dist/routing/types.js +13 -0
- package/dist/routing/types.js.map +1 -0
- package/dist/supervisor/analysis.d.ts +178 -0
- package/dist/supervisor/analysis.d.ts.map +1 -0
- package/dist/supervisor/analysis.js +420 -0
- package/dist/supervisor/analysis.js.map +1 -0
- package/dist/supervisor/experimenter.d.ts +118 -0
- package/dist/supervisor/experimenter.d.ts.map +1 -0
- package/dist/supervisor/experimenter.js +493 -0
- package/dist/supervisor/experimenter.js.map +1 -0
- package/dist/supervisor/index.d.ts +13 -0
- package/dist/supervisor/index.d.ts.map +1 -0
- package/dist/supervisor/index.js +11 -0
- package/dist/supervisor/index.js.map +1 -0
- package/dist/telemetry/batch-buffer.d.ts +53 -0
- package/dist/telemetry/batch-buffer.d.ts.map +1 -0
- package/dist/telemetry/batch-buffer.js +83 -0
- package/dist/telemetry/batch-buffer.js.map +1 -0
- package/dist/telemetry/categorizer.d.ts +65 -0
- package/dist/telemetry/categorizer.d.ts.map +1 -0
- package/dist/telemetry/categorizer.js +338 -0
- package/dist/telemetry/categorizer.js.map +1 -0
- package/dist/telemetry/consumer-analyzer.d.ts +53 -0
- package/dist/telemetry/consumer-analyzer.d.ts.map +1 -0
- package/dist/telemetry/consumer-analyzer.js +182 -0
- package/dist/telemetry/consumer-analyzer.js.map +1 -0
- package/dist/telemetry/cost-table.d.ts +36 -0
- package/dist/telemetry/cost-table.d.ts.map +1 -0
- package/dist/telemetry/cost-table.js +127 -0
- package/dist/telemetry/cost-table.js.map +1 -0
- package/dist/telemetry/efficiency-scorer.d.ts +103 -0
- package/dist/telemetry/efficiency-scorer.d.ts.map +1 -0
- package/dist/telemetry/efficiency-scorer.js +311 -0
- package/dist/telemetry/efficiency-scorer.js.map +1 -0
- package/dist/telemetry/index.d.ts +28 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +37 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/ingestion-server.d.ts +99 -0
- package/dist/telemetry/ingestion-server.d.ts.map +1 -0
- package/dist/telemetry/ingestion-server.js +315 -0
- package/dist/telemetry/ingestion-server.js.map +1 -0
- package/dist/telemetry/log-turn-analyzer.d.ts +35 -0
- package/dist/telemetry/log-turn-analyzer.d.ts.map +1 -0
- package/dist/telemetry/log-turn-analyzer.js +132 -0
- package/dist/telemetry/log-turn-analyzer.js.map +1 -0
- package/dist/telemetry/normalizer.d.ts +43 -0
- package/dist/telemetry/normalizer.d.ts.map +1 -0
- package/dist/telemetry/normalizer.js +320 -0
- package/dist/telemetry/normalizer.js.map +1 -0
- package/dist/telemetry/recommender.d.ts +116 -0
- package/dist/telemetry/recommender.d.ts.map +1 -0
- package/dist/telemetry/recommender.js +532 -0
- package/dist/telemetry/recommender.js.map +1 -0
- package/dist/telemetry/source-detector.d.ts +19 -0
- package/dist/telemetry/source-detector.d.ts.map +1 -0
- package/dist/telemetry/source-detector.js +73 -0
- package/dist/telemetry/source-detector.js.map +1 -0
- package/dist/telemetry/task-baselines.d.ts +30 -0
- package/dist/telemetry/task-baselines.d.ts.map +1 -0
- package/dist/telemetry/task-baselines.js +44 -0
- package/dist/telemetry/task-baselines.js.map +1 -0
- package/dist/telemetry/telemetry-pipeline.d.ts +122 -0
- package/dist/telemetry/telemetry-pipeline.d.ts.map +1 -0
- package/dist/telemetry/telemetry-pipeline.js +349 -0
- package/dist/telemetry/telemetry-pipeline.js.map +1 -0
- package/dist/telemetry/timestamp-normalizer.d.ts +32 -0
- package/dist/telemetry/timestamp-normalizer.d.ts.map +1 -0
- package/dist/telemetry/timestamp-normalizer.js +133 -0
- package/dist/telemetry/timestamp-normalizer.js.map +1 -0
- package/dist/telemetry/token-extractor.d.ts +57 -0
- package/dist/telemetry/token-extractor.d.ts.map +1 -0
- package/dist/telemetry/token-extractor.js +200 -0
- package/dist/telemetry/token-extractor.js.map +1 -0
- package/dist/telemetry/turn-analyzer.d.ts +34 -0
- package/dist/telemetry/turn-analyzer.d.ts.map +1 -0
- package/dist/telemetry/turn-analyzer.js +101 -0
- package/dist/telemetry/turn-analyzer.js.map +1 -0
- package/dist/telemetry/types.d.ts +456 -0
- package/dist/telemetry/types.d.ts.map +1 -0
- package/dist/telemetry/types.js +186 -0
- package/dist/telemetry/types.js.map +1 -0
- package/dist/types.d.ts +80 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/version-manager/index.d.ts +11 -0
- package/dist/version-manager/index.d.ts.map +1 -0
- package/dist/version-manager/index.js +8 -0
- package/dist/version-manager/index.js.map +1 -0
- package/dist/version-manager/update-checker.d.ts +44 -0
- package/dist/version-manager/update-checker.d.ts.map +1 -0
- package/dist/version-manager/update-checker.js +171 -0
- package/dist/version-manager/update-checker.js.map +1 -0
- package/dist/version-manager/version-cache.d.ts +42 -0
- package/dist/version-manager/version-cache.d.ts.map +1 -0
- package/dist/version-manager/version-cache.js +69 -0
- package/dist/version-manager/version-cache.js.map +1 -0
- package/dist/version-manager/version-manager-impl.d.ts +81 -0
- package/dist/version-manager/version-manager-impl.d.ts.map +1 -0
- package/dist/version-manager/version-manager-impl.js +223 -0
- package/dist/version-manager/version-manager-impl.js.map +1 -0
- package/dist/version-manager/version-manager.d.ts +70 -0
- package/dist/version-manager/version-manager.d.ts.map +1 -0
- package/dist/version-manager/version-manager.js +8 -0
- package/dist/version-manager/version-manager.js.map +1 -0
- package/package.json +27 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RoutingDecision — type definition and factory for routing decisions.
|
|
3
|
+
*
|
|
4
|
+
* A RoutingDecision is the output of the RoutingEngine.routeTask() method.
|
|
5
|
+
* It captures which agent was selected, the billing mode, and the rationale
|
|
6
|
+
* for the routing choice (NFR7 — audit trail for cost tracking).
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Advisory recommendation from monitor agent.
|
|
10
|
+
* Defined locally to avoid importing the monitor module into core.
|
|
11
|
+
*
|
|
12
|
+
* The core fields mirror the monitor module's concrete Recommendation type
|
|
13
|
+
* (all required) so that:
|
|
14
|
+
* 1. monitor.Recommendation is structurally assignable to MonitorRecommendation ✓
|
|
15
|
+
* 2. MonitorRecommendation is structurally assignable to monitor.Recommendation ✓
|
|
16
|
+
* (extra optional fields `model` and `rationale` are permitted by structural typing)
|
|
17
|
+
*
|
|
18
|
+
* This bidirectional compatibility prevents TypeScript errors when callers store
|
|
19
|
+
* `decision.monitorRecommendation` in a Recommendation-typed variable (AC2, Story 41-4).
|
|
20
|
+
*/
|
|
21
|
+
export interface MonitorRecommendation {
|
|
22
|
+
task_type: string;
|
|
23
|
+
current_agent: string;
|
|
24
|
+
recommended_agent: string;
|
|
25
|
+
reason: string;
|
|
26
|
+
/** Confidence tier — 'low', 'medium', or 'high' */
|
|
27
|
+
confidence: 'low' | 'medium' | 'high';
|
|
28
|
+
current_success_rate: number;
|
|
29
|
+
recommended_success_rate: number;
|
|
30
|
+
current_avg_tokens: number;
|
|
31
|
+
recommended_avg_tokens: number;
|
|
32
|
+
improvement_percentage: number;
|
|
33
|
+
sample_size_current: number;
|
|
34
|
+
sample_size_recommended: number;
|
|
35
|
+
/** Optional model override suggestion (used in some contexts) */
|
|
36
|
+
model?: string;
|
|
37
|
+
rationale?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The result of a routing decision for a task.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* {
|
|
44
|
+
* taskId: 'task-1',
|
|
45
|
+
* agent: 'claude',
|
|
46
|
+
* billingMode: 'subscription',
|
|
47
|
+
* rationale: 'Subscription-first: Claude subscription available, tokens within limit',
|
|
48
|
+
* fallbackChain: ['claude', 'codex'],
|
|
49
|
+
* }
|
|
50
|
+
*/
|
|
51
|
+
export interface RoutingDecision {
|
|
52
|
+
/** Task identifier this decision was made for */
|
|
53
|
+
taskId: string;
|
|
54
|
+
/** Selected CLI agent name (e.g., 'claude', 'codex', 'gemini') */
|
|
55
|
+
agent: string;
|
|
56
|
+
/** Billing mode for this routing decision */
|
|
57
|
+
billingMode: 'subscription' | 'api' | 'unavailable';
|
|
58
|
+
/** Optional model preference if specified in routing policy */
|
|
59
|
+
model?: string;
|
|
60
|
+
/** Human-readable rationale for the routing choice (required for NFR7 audit) */
|
|
61
|
+
rationale: string;
|
|
62
|
+
/** Agents tried in order during fallback chain evaluation */
|
|
63
|
+
fallbackChain?: string[];
|
|
64
|
+
/** Estimated cost in USD for this task (if known) */
|
|
65
|
+
estimatedCostUsd?: number;
|
|
66
|
+
/** Rate limit state at time of decision */
|
|
67
|
+
rateLimit?: {
|
|
68
|
+
tokensUsedInWindow: number;
|
|
69
|
+
limit: number;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Advisory recommendation from monitor agent (AC5, Story 8.6).
|
|
73
|
+
* Present when use_monitor_recommendations=true and a recommendation is available.
|
|
74
|
+
* This is informational only — routing policy always takes precedence.
|
|
75
|
+
*/
|
|
76
|
+
monitorRecommendation?: MonitorRecommendation;
|
|
77
|
+
/**
|
|
78
|
+
* Whether the monitor agent was consulted for this routing decision (AC5).
|
|
79
|
+
* True when use_monitor_recommendations=true, regardless of whether a
|
|
80
|
+
* recommendation was available.
|
|
81
|
+
*/
|
|
82
|
+
monitorInfluenced: boolean;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Builder for constructing RoutingDecision objects with a fluent API.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* const decision = makeRoutingDecision('task-1')
|
|
89
|
+
* .withAgent('claude', 'subscription')
|
|
90
|
+
* .withRationale('Subscription-first: Claude subscription available')
|
|
91
|
+
* .withFallbackChain(['claude', 'codex'])
|
|
92
|
+
* .build()
|
|
93
|
+
*/
|
|
94
|
+
export declare class RoutingDecisionBuilder {
|
|
95
|
+
private readonly _taskId;
|
|
96
|
+
private _agent;
|
|
97
|
+
private _billingMode;
|
|
98
|
+
private _model?;
|
|
99
|
+
private _rationale;
|
|
100
|
+
private _fallbackChain?;
|
|
101
|
+
private _estimatedCostUsd?;
|
|
102
|
+
private _rateLimit?;
|
|
103
|
+
private _monitorRecommendation?;
|
|
104
|
+
private _monitorInfluenced;
|
|
105
|
+
constructor(taskId: string);
|
|
106
|
+
withAgent(agent: string, billingMode: 'subscription' | 'api' | 'unavailable'): this;
|
|
107
|
+
withModel(model: string): this;
|
|
108
|
+
withRationale(rationale: string): this;
|
|
109
|
+
withFallbackChain(chain: string[]): this;
|
|
110
|
+
withEstimatedCost(costUsd: number): this;
|
|
111
|
+
withRateLimit(tokensUsedInWindow: number, limit: number): this;
|
|
112
|
+
withMonitorRecommendation(recommendation: MonitorRecommendation): this;
|
|
113
|
+
withMonitorInfluenced(influenced: boolean): this;
|
|
114
|
+
unavailable(rationale: string): this;
|
|
115
|
+
build(): RoutingDecision;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Create a new RoutingDecisionBuilder for the given taskId.
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* const decision = makeRoutingDecision(task.id)
|
|
122
|
+
* .withAgent('claude', 'subscription')
|
|
123
|
+
* .withRationale('Subscription-first: tokens within limit')
|
|
124
|
+
* .build()
|
|
125
|
+
*/
|
|
126
|
+
export declare function makeRoutingDecision(taskId: string): RoutingDecisionBuilder;
|
|
127
|
+
//# sourceMappingURL=routing-decision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing-decision.d.ts","sourceRoot":"","sources":["../../src/routing/routing-decision.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,mDAAmD;IACnD,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;IACrC,oBAAoB,EAAE,MAAM,CAAA;IAC5B,wBAAwB,EAAE,MAAM,CAAA;IAChC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,sBAAsB,EAAE,MAAM,CAAA;IAC9B,sBAAsB,EAAE,MAAM,CAAA;IAC9B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,uBAAuB,EAAE,MAAM,CAAA;IAC/B,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAA;IACd,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAA;IACb,6CAA6C;IAC7C,WAAW,EAAE,cAAc,GAAG,KAAK,GAAG,aAAa,CAAA;IACnD,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAA;IACjB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,2CAA2C;IAC3C,SAAS,CAAC,EAAE;QAAE,kBAAkB,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACzD;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C;;;;OAIG;IACH,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAMD;;;;;;;;;GASG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,YAAY,CAAwD;IAC5E,OAAO,CAAC,MAAM,CAAC,CAAQ;IACvB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,iBAAiB,CAAC,CAAQ;IAClC,OAAO,CAAC,UAAU,CAAC,CAA+C;IAClE,OAAO,CAAC,sBAAsB,CAAC,CAAuB;IACtD,OAAO,CAAC,kBAAkB,CAAQ;gBAEtB,MAAM,EAAE,MAAM;IAI1B,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,GAAG,KAAK,GAAG,aAAa,GAAG,IAAI;IAMnF,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKtC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAKxC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKxC,aAAa,CAAC,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9D,yBAAyB,CAAC,cAAc,EAAE,qBAAqB,GAAG,IAAI;IAMtE,qBAAqB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAKhD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAOpC,KAAK,IAAI,eAAe;CAezB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB,CAE1E"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RoutingDecision — type definition and factory for routing decisions.
|
|
3
|
+
*
|
|
4
|
+
* A RoutingDecision is the output of the RoutingEngine.routeTask() method.
|
|
5
|
+
* It captures which agent was selected, the billing mode, and the rationale
|
|
6
|
+
* for the routing choice (NFR7 — audit trail for cost tracking).
|
|
7
|
+
*/
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// RoutingDecisionBuilder
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
/**
|
|
12
|
+
* Builder for constructing RoutingDecision objects with a fluent API.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* const decision = makeRoutingDecision('task-1')
|
|
16
|
+
* .withAgent('claude', 'subscription')
|
|
17
|
+
* .withRationale('Subscription-first: Claude subscription available')
|
|
18
|
+
* .withFallbackChain(['claude', 'codex'])
|
|
19
|
+
* .build()
|
|
20
|
+
*/
|
|
21
|
+
export class RoutingDecisionBuilder {
|
|
22
|
+
_taskId;
|
|
23
|
+
_agent = '';
|
|
24
|
+
_billingMode = 'unavailable';
|
|
25
|
+
_model;
|
|
26
|
+
_rationale = '';
|
|
27
|
+
_fallbackChain;
|
|
28
|
+
_estimatedCostUsd;
|
|
29
|
+
_rateLimit;
|
|
30
|
+
_monitorRecommendation;
|
|
31
|
+
_monitorInfluenced = false;
|
|
32
|
+
constructor(taskId) {
|
|
33
|
+
this._taskId = taskId;
|
|
34
|
+
}
|
|
35
|
+
withAgent(agent, billingMode) {
|
|
36
|
+
this._agent = agent;
|
|
37
|
+
this._billingMode = billingMode;
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
withModel(model) {
|
|
41
|
+
this._model = model;
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
withRationale(rationale) {
|
|
45
|
+
this._rationale = rationale;
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
withFallbackChain(chain) {
|
|
49
|
+
this._fallbackChain = chain;
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
withEstimatedCost(costUsd) {
|
|
53
|
+
this._estimatedCostUsd = costUsd;
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
withRateLimit(tokensUsedInWindow, limit) {
|
|
57
|
+
this._rateLimit = { tokensUsedInWindow, limit };
|
|
58
|
+
return this;
|
|
59
|
+
}
|
|
60
|
+
withMonitorRecommendation(recommendation) {
|
|
61
|
+
this._monitorRecommendation = recommendation;
|
|
62
|
+
this._monitorInfluenced = true;
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
withMonitorInfluenced(influenced) {
|
|
66
|
+
this._monitorInfluenced = influenced;
|
|
67
|
+
return this;
|
|
68
|
+
}
|
|
69
|
+
unavailable(rationale) {
|
|
70
|
+
this._billingMode = 'unavailable';
|
|
71
|
+
this._agent = 'none';
|
|
72
|
+
this._rationale = rationale;
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
build() {
|
|
76
|
+
const decision = {
|
|
77
|
+
taskId: this._taskId,
|
|
78
|
+
agent: this._agent,
|
|
79
|
+
billingMode: this._billingMode,
|
|
80
|
+
rationale: this._rationale,
|
|
81
|
+
monitorInfluenced: this._monitorInfluenced,
|
|
82
|
+
};
|
|
83
|
+
if (this._model !== undefined)
|
|
84
|
+
decision.model = this._model;
|
|
85
|
+
if (this._fallbackChain !== undefined)
|
|
86
|
+
decision.fallbackChain = this._fallbackChain;
|
|
87
|
+
if (this._estimatedCostUsd !== undefined)
|
|
88
|
+
decision.estimatedCostUsd = this._estimatedCostUsd;
|
|
89
|
+
if (this._rateLimit !== undefined)
|
|
90
|
+
decision.rateLimit = this._rateLimit;
|
|
91
|
+
if (this._monitorRecommendation !== undefined)
|
|
92
|
+
decision.monitorRecommendation = this._monitorRecommendation;
|
|
93
|
+
return decision;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
// Factory function
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
/**
|
|
100
|
+
* Create a new RoutingDecisionBuilder for the given taskId.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* const decision = makeRoutingDecision(task.id)
|
|
104
|
+
* .withAgent('claude', 'subscription')
|
|
105
|
+
* .withRationale('Subscription-first: tokens within limit')
|
|
106
|
+
* .build()
|
|
107
|
+
*/
|
|
108
|
+
export function makeRoutingDecision(taskId) {
|
|
109
|
+
return new RoutingDecisionBuilder(taskId);
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=routing-decision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing-decision.js","sourceRoot":"","sources":["../../src/routing/routing-decision.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAqFH,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,OAAO,sBAAsB;IAChB,OAAO,CAAQ;IACxB,MAAM,GAAG,EAAE,CAAA;IACX,YAAY,GAA2C,aAAa,CAAA;IACpE,MAAM,CAAS;IACf,UAAU,GAAG,EAAE,CAAA;IACf,cAAc,CAAW;IACzB,iBAAiB,CAAS;IAC1B,UAAU,CAAgD;IAC1D,sBAAsB,CAAwB;IAC9C,kBAAkB,GAAG,KAAK,CAAA;IAElC,YAAY,MAAc;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAED,SAAS,CAAC,KAAa,EAAE,WAAmD;QAC1E,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAA;QAC/B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,aAAa,CAAC,SAAiB;QAC7B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAC3B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,iBAAiB,CAAC,KAAe;QAC/B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;QAC3B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,iBAAiB,CAAC,OAAe;QAC/B,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAA;QAChC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,aAAa,CAAC,kBAA0B,EAAE,KAAa;QACrD,IAAI,CAAC,UAAU,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAA;QAC/C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,yBAAyB,CAAC,cAAqC;QAC7D,IAAI,CAAC,sBAAsB,GAAG,cAAc,CAAA;QAC5C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAA;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,qBAAqB,CAAC,UAAmB;QACvC,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAA;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,WAAW,CAAC,SAAiB;QAC3B,IAAI,CAAC,YAAY,GAAG,aAAa,CAAA;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAC3B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,MAAM,QAAQ,GAAoB;YAChC,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;SAC3C,CAAA;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;QAC3D,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;YAAE,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAA;QACnF,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS;YAAE,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAA;QAC5F,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAA;QACvE,IAAI,IAAI,CAAC,sBAAsB,KAAK,SAAS;YAAE,QAAQ,CAAC,qBAAqB,GAAG,IAAI,CAAC,sBAAsB,CAAA;QAC3G,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,OAAO,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAA;AAC3C,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RoutingEngineImpl — full implementation of the RoutingEngine.
|
|
3
|
+
*
|
|
4
|
+
* Responsibilities:
|
|
5
|
+
* 1. Load and validate routing policy on initialization
|
|
6
|
+
* 2. Subscribe to task:ready events and make routing decisions
|
|
7
|
+
* 3. Emit task:routed events with full RoutingDecision
|
|
8
|
+
* 4. Subscribe to task:complete events to update rate limit tracking
|
|
9
|
+
* 5. Emit provider:unavailable when rate limits are exhausted
|
|
10
|
+
* 6. Support hot-reload via reloadPolicy()
|
|
11
|
+
*
|
|
12
|
+
* Architecture constraints:
|
|
13
|
+
* - ADR-004: Stateless except for rate limit tracking in-memory
|
|
14
|
+
* - ADR-008: Subscription-first policy is mandatory
|
|
15
|
+
* - FR22, FR23, FR25: Subscription routing toggles per provider
|
|
16
|
+
* - FR29: Rate limit management
|
|
17
|
+
* - FR38: Hot-reload without daemon restart
|
|
18
|
+
* - NFR7: Routing decision rationale in all decisions
|
|
19
|
+
*/
|
|
20
|
+
import type { TypedEventBus } from '../events/event-bus.js';
|
|
21
|
+
import type { CoreEvents } from '../events/core-events.js';
|
|
22
|
+
import type { IAdapterRegistry, ILogger } from '../dispatch/types.js';
|
|
23
|
+
import { type ProviderStatus } from './provider-status.js';
|
|
24
|
+
import { type RoutingDecision } from './routing-decision.js';
|
|
25
|
+
import type { RoutingEngine, RoutingTask } from './routing-engine.js';
|
|
26
|
+
import type { IConfigSystem, IMonitorAgent } from './types.js';
|
|
27
|
+
export declare class RoutingEngineImpl implements RoutingEngine {
|
|
28
|
+
private readonly _eventBus;
|
|
29
|
+
private readonly _configSystem;
|
|
30
|
+
private readonly _adapterRegistry;
|
|
31
|
+
private readonly _logger;
|
|
32
|
+
private _policy;
|
|
33
|
+
private _policyPath;
|
|
34
|
+
private readonly _statusTracker;
|
|
35
|
+
/** Optional monitor agent for advisory recommendations (AC5) */
|
|
36
|
+
private _monitorAgent;
|
|
37
|
+
/** Whether to consult monitor for recommendations (AC6) */
|
|
38
|
+
private _useMonitorRecommendations;
|
|
39
|
+
/** Bound references for event listener management */
|
|
40
|
+
private readonly _onTaskReady;
|
|
41
|
+
private readonly _onTaskComplete;
|
|
42
|
+
private readonly _onConfigReloaded;
|
|
43
|
+
constructor(eventBus: TypedEventBus<CoreEvents>, configSystem?: IConfigSystem | null, adapterRegistry?: IAdapterRegistry | null, logger?: ILogger);
|
|
44
|
+
initialize(): Promise<void>;
|
|
45
|
+
shutdown(): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Set the monitor agent for advisory recommendations (AC5).
|
|
48
|
+
* Called externally when use_monitor_recommendations=true.
|
|
49
|
+
*/
|
|
50
|
+
setMonitorAgent(monitorAgent: IMonitorAgent, useRecommendations?: boolean): void;
|
|
51
|
+
/**
|
|
52
|
+
* Make a routing decision for a task.
|
|
53
|
+
*
|
|
54
|
+
* Implements the subscription-first algorithm from Architecture Section 8:
|
|
55
|
+
* 1. Check if task has explicit agent assignment
|
|
56
|
+
* 2. Determine preferred agents from routing policy (task type → preferred_agents)
|
|
57
|
+
* 3. For each preferred agent, evaluate subscription-first logic:
|
|
58
|
+
* a. If subscription_routing=true AND capacity available AND rate limit OK → subscription
|
|
59
|
+
* b. Else if API billing enabled AND API key configured → API
|
|
60
|
+
* c. Else try next fallback agent
|
|
61
|
+
* 4. If no agent available → return unavailable decision
|
|
62
|
+
* 5. (Advisory) If monitor agent available, attach recommendation (AC5)
|
|
63
|
+
*/
|
|
64
|
+
routeTask(task: RoutingTask): RoutingDecision;
|
|
65
|
+
/**
|
|
66
|
+
* Get the current status of a provider.
|
|
67
|
+
*/
|
|
68
|
+
getProviderStatus(providerName: string): ProviderStatus | null;
|
|
69
|
+
/**
|
|
70
|
+
* Record token usage for rate limit tracking after task completion.
|
|
71
|
+
*/
|
|
72
|
+
updateRateLimit(provider: string, tokensUsed: number): void;
|
|
73
|
+
/**
|
|
74
|
+
* Hot-reload the routing policy from disk without daemon restart (FR38).
|
|
75
|
+
*/
|
|
76
|
+
reloadPolicy(): Promise<void>;
|
|
77
|
+
private _handleTaskReady;
|
|
78
|
+
private _handleTaskComplete;
|
|
79
|
+
private _handleConfigReloaded;
|
|
80
|
+
/**
|
|
81
|
+
* Evaluate a single agent using the subscription-first algorithm.
|
|
82
|
+
* Returns { agent, billingMode, model } if available, null if not.
|
|
83
|
+
*/
|
|
84
|
+
private _evaluateAgent;
|
|
85
|
+
/**
|
|
86
|
+
* Build a human-readable rationale for the routing decision (NFR7).
|
|
87
|
+
*/
|
|
88
|
+
private _buildRationale;
|
|
89
|
+
/**
|
|
90
|
+
* Route a task without a loaded routing policy.
|
|
91
|
+
* Uses the first available adapter in the registry.
|
|
92
|
+
* Monitor recommendations are still consulted when use_monitor_recommendations=true (AC1, AC4).
|
|
93
|
+
*/
|
|
94
|
+
private _routeWithoutPolicy;
|
|
95
|
+
/**
|
|
96
|
+
* Attach advisory monitor recommendation to a routing decision builder (AC5, AC7).
|
|
97
|
+
* Only attaches when use_monitor_recommendations=true and a recommendation
|
|
98
|
+
* is available for the task type with confidence >= "medium".
|
|
99
|
+
* Explicit routing policy always takes precedence (AC5).
|
|
100
|
+
*
|
|
101
|
+
* When the monitor recommends a different agent than the policy-selected agent,
|
|
102
|
+
* a debug log is emitted to record the override (AC7).
|
|
103
|
+
*/
|
|
104
|
+
private _attachMonitorRecommendation;
|
|
105
|
+
/**
|
|
106
|
+
* Initialize provider tracking from the loaded routing policy.
|
|
107
|
+
*/
|
|
108
|
+
private _initializeProviderTracking;
|
|
109
|
+
}
|
|
110
|
+
export interface RoutingEngineImplOptions {
|
|
111
|
+
eventBus: TypedEventBus<CoreEvents>;
|
|
112
|
+
configSystem?: IConfigSystem | null;
|
|
113
|
+
adapterRegistry?: IAdapterRegistry | null;
|
|
114
|
+
/** Optional monitor agent for advisory recommendations (AC5) */
|
|
115
|
+
monitorAgent?: IMonitorAgent | null;
|
|
116
|
+
/** Whether to use monitor recommendations (AC6, default: false) */
|
|
117
|
+
useMonitorRecommendations?: boolean;
|
|
118
|
+
/** Optional logger (defaults to console) */
|
|
119
|
+
logger?: ILogger;
|
|
120
|
+
}
|
|
121
|
+
export declare function createRoutingEngineImpl(options: RoutingEngineImplOptions): RoutingEngineImpl;
|
|
122
|
+
/**
|
|
123
|
+
* Create a new RoutingEngine instance using the decoupled core types.
|
|
124
|
+
* This is the primary factory for external consumers of @substrate-ai/core.
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* const engine = createRoutingEngine({ eventBus, adapterRegistry })
|
|
128
|
+
* await engine.initialize()
|
|
129
|
+
* const decision = engine.routeTask({ id: 'task-1', type: 'dev-story' })
|
|
130
|
+
*/
|
|
131
|
+
export declare function createRoutingEngine(options: RoutingEngineImplOptions): RoutingEngine;
|
|
132
|
+
//# sourceMappingURL=routing-engine-impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing-engine-impl.d.ts","sourceRoot":"","sources":["../../src/routing/routing-engine-impl.ts"],"names":[],"mappings":"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"}
|