@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,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkerAdapter interface definition
|
|
3
|
+
*
|
|
4
|
+
* This is the core pluggable interface that all CLI agent adapters must implement.
|
|
5
|
+
* Adding a new adapter requires only creating a class that satisfies this interface
|
|
6
|
+
* — no modifications to the orchestrator core are needed (NFR11, FR14).
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* class MyCustomAdapter implements WorkerAdapter {
|
|
11
|
+
* readonly id: AgentId = 'my-custom-agent'
|
|
12
|
+
* readonly displayName = 'My Custom Agent'
|
|
13
|
+
* readonly adapterVersion = '1.0.0'
|
|
14
|
+
* // ... implement all 7 methods
|
|
15
|
+
* }
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
import type { AgentId } from '../types.js';
|
|
19
|
+
import type { SpawnCommand, AdapterOptions, AdapterCapabilities, AdapterHealthResult, TaskResult, TokenEstimate, PlanRequest, PlanParseResult, DiscoveryReport } from './types.js';
|
|
20
|
+
/**
|
|
21
|
+
* WorkerAdapter — the interface every CLI agent adapter must implement.
|
|
22
|
+
*
|
|
23
|
+
* Adapters are responsible for:
|
|
24
|
+
* 1. Verifying their CLI binary is installed and responsive (healthCheck)
|
|
25
|
+
* 2. Constructing the spawn command to execute a task (buildCommand)
|
|
26
|
+
* 3. Constructing the spawn command for plan generation (buildPlanningCommand)
|
|
27
|
+
* 4. Parsing task result output from the CLI (parseOutput)
|
|
28
|
+
* 5. Parsing plan result output from the CLI (parsePlanOutput)
|
|
29
|
+
* 6. Estimating token usage for budget tracking (estimateTokens)
|
|
30
|
+
* 7. Reporting their capabilities for routing decisions (getCapabilities)
|
|
31
|
+
*/
|
|
32
|
+
export interface WorkerAdapter {
|
|
33
|
+
/**
|
|
34
|
+
* Unique identifier for this adapter type.
|
|
35
|
+
* Used as the Map key in AdapterRegistry.
|
|
36
|
+
* @example "claude-code"
|
|
37
|
+
*/
|
|
38
|
+
readonly id: AgentId;
|
|
39
|
+
/**
|
|
40
|
+
* Human-readable display name for the adapter.
|
|
41
|
+
* @example "Claude Code"
|
|
42
|
+
*/
|
|
43
|
+
readonly displayName: string;
|
|
44
|
+
/**
|
|
45
|
+
* Semantic version of this adapter implementation.
|
|
46
|
+
* @example "1.0.0"
|
|
47
|
+
*/
|
|
48
|
+
readonly adapterVersion: string;
|
|
49
|
+
/**
|
|
50
|
+
* Verify that the underlying CLI binary is installed, accessible, and
|
|
51
|
+
* able to respond in headless/non-interactive mode.
|
|
52
|
+
*
|
|
53
|
+
* This method must NOT throw — failures should be captured in the returned
|
|
54
|
+
* AdapterHealthResult.
|
|
55
|
+
*
|
|
56
|
+
* @returns A promise resolving to health check details
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const result = await adapter.healthCheck()
|
|
61
|
+
* if (!result.healthy) console.error(result.error)
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
healthCheck(): Promise<AdapterHealthResult>;
|
|
65
|
+
/**
|
|
66
|
+
* Generate the spawn command to execute a coding task.
|
|
67
|
+
*
|
|
68
|
+
* The returned SpawnCommand must set `cwd` to options.worktreePath so the
|
|
69
|
+
* CLI agent operates in the correct git worktree (NFR10).
|
|
70
|
+
*
|
|
71
|
+
* @param prompt Prompt or description of the task to execute
|
|
72
|
+
* @param options Per-invocation execution options
|
|
73
|
+
* @returns SpawnCommand ready to be executed by the orchestrator
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* const cmd = adapter.buildCommand('Fix the failing tests', { worktreePath: '/tmp/wt', billingMode: 'api' })
|
|
78
|
+
* // spawn(cmd.binary, cmd.args, { cwd: cmd.cwd, env: { ...process.env, ...cmd.env } })
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
buildCommand(prompt: string, options: AdapterOptions): SpawnCommand;
|
|
82
|
+
/**
|
|
83
|
+
* Generate the spawn command to invoke the CLI agent for plan generation.
|
|
84
|
+
*
|
|
85
|
+
* @param request Plan request with goal and context
|
|
86
|
+
* @param options Per-invocation execution options
|
|
87
|
+
* @returns SpawnCommand for the planning invocation
|
|
88
|
+
*/
|
|
89
|
+
buildPlanningCommand(request: PlanRequest, options: AdapterOptions): SpawnCommand;
|
|
90
|
+
/**
|
|
91
|
+
* Parse the raw CLI process output into a normalized TaskResult.
|
|
92
|
+
*
|
|
93
|
+
* This method must handle all output variations including:
|
|
94
|
+
* - Valid JSON stdout
|
|
95
|
+
* - Non-JSON stdout (fallback)
|
|
96
|
+
* - Non-zero exit codes
|
|
97
|
+
* - Combined stdout + stderr
|
|
98
|
+
*
|
|
99
|
+
* @param stdout Standard output captured from the CLI process
|
|
100
|
+
* @param stderr Standard error captured from the CLI process
|
|
101
|
+
* @param exitCode Exit code from the CLI process
|
|
102
|
+
* @returns Normalized TaskResult
|
|
103
|
+
*/
|
|
104
|
+
parseOutput(stdout: string, stderr: string, exitCode: number): TaskResult;
|
|
105
|
+
/**
|
|
106
|
+
* Parse the raw CLI output from a planning invocation into a PlanParseResult.
|
|
107
|
+
*
|
|
108
|
+
* @param stdout Standard output from the planning invocation
|
|
109
|
+
* @param stderr Standard error from the planning invocation
|
|
110
|
+
* @param exitCode Exit code from the planning invocation
|
|
111
|
+
* @returns Parsed plan result
|
|
112
|
+
*/
|
|
113
|
+
parsePlanOutput(stdout: string, stderr: string, exitCode: number): PlanParseResult;
|
|
114
|
+
/**
|
|
115
|
+
* Estimate the token count for a given prompt string.
|
|
116
|
+
*
|
|
117
|
+
* Used for pre-execution budget checks. Implementations may use heuristics
|
|
118
|
+
* (e.g., character count / 3) when exact tokenizers are unavailable.
|
|
119
|
+
*
|
|
120
|
+
* @param prompt The prompt text to estimate
|
|
121
|
+
* @returns TokenEstimate with input, output, and total projections
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* const estimate = adapter.estimateTokens('Fix the failing tests in auth.ts')
|
|
126
|
+
* if (estimate.total > budgetCap) throw new BudgetExceededError(...)
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
estimateTokens(prompt: string): TokenEstimate;
|
|
130
|
+
/**
|
|
131
|
+
* Return the capabilities of this adapter's underlying CLI agent.
|
|
132
|
+
*
|
|
133
|
+
* The returned object is used by the orchestrator for:
|
|
134
|
+
* - Routing decisions (which adapter handles which task type)
|
|
135
|
+
* - Plan generation eligibility
|
|
136
|
+
* - Budget mode selection
|
|
137
|
+
*
|
|
138
|
+
* @returns AdapterCapabilities for this agent
|
|
139
|
+
*/
|
|
140
|
+
getCapabilities(): AdapterCapabilities;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* AdapterRegistry — public interface for the adapter registry.
|
|
144
|
+
*
|
|
145
|
+
* Defined here (not in types.ts) to avoid a circular dependency between
|
|
146
|
+
* types.ts and worker-adapter.ts. AdapterRegistry references WorkerAdapter,
|
|
147
|
+
* which is defined in this file, so placing it here keeps the dep graph acyclic.
|
|
148
|
+
*
|
|
149
|
+
* The concrete implementation (AdapterRegistry class) lives in the monolith
|
|
150
|
+
* until Epic 41. This interface exposes only the public method surface.
|
|
151
|
+
*
|
|
152
|
+
* Usage:
|
|
153
|
+
* ```typescript
|
|
154
|
+
* const registry: AdapterRegistry = new ConcreteAdapterRegistry()
|
|
155
|
+
* const report = await registry.discoverAndRegister()
|
|
156
|
+
* const claude = registry.get('claude-code')
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
export interface AdapterRegistry {
|
|
160
|
+
/**
|
|
161
|
+
* Register an adapter by its id.
|
|
162
|
+
* Overwrites any existing adapter with the same id.
|
|
163
|
+
*/
|
|
164
|
+
register(adapter: WorkerAdapter): void;
|
|
165
|
+
/**
|
|
166
|
+
* Retrieve a registered adapter by id.
|
|
167
|
+
* @returns The adapter, or undefined if not registered
|
|
168
|
+
*/
|
|
169
|
+
get(id: AgentId): WorkerAdapter | undefined;
|
|
170
|
+
/**
|
|
171
|
+
* Return all registered adapters as an array.
|
|
172
|
+
*/
|
|
173
|
+
getAll(): WorkerAdapter[];
|
|
174
|
+
/**
|
|
175
|
+
* Return all registered adapters that support plan generation.
|
|
176
|
+
*/
|
|
177
|
+
getPlanningCapable(): WorkerAdapter[];
|
|
178
|
+
/**
|
|
179
|
+
* Instantiate all built-in adapters, run health checks sequentially,
|
|
180
|
+
* and register those that pass.
|
|
181
|
+
*
|
|
182
|
+
* Failed adapters are included in the report but do NOT prevent startup.
|
|
183
|
+
*
|
|
184
|
+
* @returns Discovery report with per-adapter results
|
|
185
|
+
*/
|
|
186
|
+
discoverAndRegister(): Promise<DiscoveryReport>;
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=worker-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/worker-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,WAAW,EACX,eAAe,EACf,eAAe,EAChB,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,aAAa;IAG5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IAEpB;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAE5B;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAI/B;;;;;;;;;;;;;;OAcG;IACH,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAE3C;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,YAAY,CAAA;IAEnE;;;;;;OAMG;IACH,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,YAAY,CAAA;IAEjF;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAA;IAEzE;;;;;;;OAOG;IACH,eAAe,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,eAAe,CAAA;IAElB;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAA;IAE7C;;;;;;;;;OASG;IACH,eAAe,IAAI,mBAAmB,CAAA;CACvC;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAA;IAEtC;;;OAGG;IACH,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAAA;IAE3C;;OAEG;IACH,MAAM,IAAI,aAAa,EAAE,CAAA;IAEzB;;OAEG;IACH,kBAAkB,IAAI,aAAa,EAAE,CAAA;IAErC;;;;;;;OAOG;IACH,mBAAmB,IAAI,OAAO,CAAC,eAAe,CAAC,CAAA;CAChD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkerAdapter interface definition
|
|
3
|
+
*
|
|
4
|
+
* This is the core pluggable interface that all CLI agent adapters must implement.
|
|
5
|
+
* Adding a new adapter requires only creating a class that satisfies this interface
|
|
6
|
+
* — no modifications to the orchestrator core are needed (NFR11, FR14).
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* class MyCustomAdapter implements WorkerAdapter {
|
|
11
|
+
* readonly id: AgentId = 'my-custom-agent'
|
|
12
|
+
* readonly displayName = 'My Custom Agent'
|
|
13
|
+
* readonly adapterVersion = '1.0.0'
|
|
14
|
+
* // ... implement all 7 methods
|
|
15
|
+
* }
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=worker-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-adapter.js","sourceRoot":"","sources":["../../src/adapters/worker-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BudgetTracker — interface and stub for tracking token/cost budgets.
|
|
3
|
+
* Migrated to @substrate-ai/core (Story 41-7)
|
|
4
|
+
*/
|
|
5
|
+
import type { IBaseService } from '../types.js';
|
|
6
|
+
import type { TypedEventBus, CoreEvents } from '../events/index.js';
|
|
7
|
+
import type { ILogger } from '../dispatch/types.js';
|
|
8
|
+
export interface BudgetTracker extends IBaseService {
|
|
9
|
+
}
|
|
10
|
+
export declare class BudgetTrackerImpl implements BudgetTracker {
|
|
11
|
+
private readonly _eventBus;
|
|
12
|
+
private readonly _logger;
|
|
13
|
+
constructor(eventBus: TypedEventBus<CoreEvents>, logger?: ILogger);
|
|
14
|
+
initialize(): Promise<void>;
|
|
15
|
+
shutdown(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export interface BudgetTrackerOptions {
|
|
18
|
+
eventBus: TypedEventBus<CoreEvents>;
|
|
19
|
+
logger?: ILogger;
|
|
20
|
+
}
|
|
21
|
+
export declare function createBudgetTracker(options: BudgetTrackerOptions): BudgetTracker;
|
|
22
|
+
//# sourceMappingURL=budget-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget-tracker.d.ts","sourceRoot":"","sources":["../../src/budget/budget-tracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAMnD,MAAM,WAAW,aAAc,SAAQ,YAAY;CAElD;AAMD,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO;IAK3D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGhC;AAMD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;IACnC,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAEhF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BudgetTracker — interface and stub for tracking token/cost budgets.
|
|
3
|
+
* Migrated to @substrate-ai/core (Story 41-7)
|
|
4
|
+
*/
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
// BudgetTrackerImpl (stub)
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
export class BudgetTrackerImpl {
|
|
9
|
+
_eventBus;
|
|
10
|
+
_logger;
|
|
11
|
+
constructor(eventBus, logger) {
|
|
12
|
+
this._eventBus = eventBus;
|
|
13
|
+
this._logger = logger ?? console;
|
|
14
|
+
}
|
|
15
|
+
async initialize() {
|
|
16
|
+
this._logger.info('BudgetTracker.initialize() — stub');
|
|
17
|
+
// Subscribe to budget events
|
|
18
|
+
this._eventBus.on('budget:warning', ({ taskId, currentSpend, limit }) => {
|
|
19
|
+
this._logger.warn({ taskId, currentSpend, limit }, 'budget:warning');
|
|
20
|
+
});
|
|
21
|
+
this._eventBus.on('budget:exceeded', ({ taskId, spend, limit }) => {
|
|
22
|
+
this._logger.error({ taskId, spend, limit }, 'budget:exceeded');
|
|
23
|
+
});
|
|
24
|
+
// Subscribe to task events for cost tracking
|
|
25
|
+
this._eventBus.on('task:complete', ({ taskId, result }) => {
|
|
26
|
+
this._logger.debug({ taskId, costUsd: result.costUsd }, 'task:complete — accumulate cost');
|
|
27
|
+
});
|
|
28
|
+
this._eventBus.on('task:progress', ({ taskId, tokensUsed }) => {
|
|
29
|
+
this._logger.debug({ taskId, tokensUsed }, 'task:progress — update token usage');
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async shutdown() {
|
|
33
|
+
this._logger.info('BudgetTracker.shutdown() — stub');
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function createBudgetTracker(options) {
|
|
37
|
+
return new BudgetTrackerImpl(options.eventBus, options.logger);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=budget-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget-tracker.js","sourceRoot":"","sources":["../../src/budget/budget-tracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,MAAM,OAAO,iBAAiB;IACX,SAAS,CAA2B;IACpC,OAAO,CAAS;IAEjC,YAAY,QAAmC,EAAE,MAAgB;QAC/D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QACzB,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,OAAO,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;QAEtD,6BAA6B;QAC7B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE;YACtE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAA;QACtE,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YAChE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,iBAAiB,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;QAEF,6CAA6C;QAC7C,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;YACxD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,iCAAiC,CAAC,CAAA;QAC5F,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;YAC5D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,oCAAoC,CAAC,CAAA;QAClF,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;IACtD,CAAC;CACF;AAWD,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;AAChE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Budget module barrel export — @substrate-ai/core (Story 41-7)
|
|
3
|
+
*/
|
|
4
|
+
export type { BudgetTracker, BudgetTrackerOptions } from './budget-tracker.js';
|
|
5
|
+
export { BudgetTrackerImpl, createBudgetTracker } from './budget-tracker.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/budget/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/budget/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfigMigrator — registry and executor of config format migrations (FR63).
|
|
3
|
+
*
|
|
4
|
+
* Migrations are keyed as "N->M" strings (e.g. "1->2") and are applied
|
|
5
|
+
* sequentially when migrating across multiple versions.
|
|
6
|
+
*/
|
|
7
|
+
export interface MigrationResult {
|
|
8
|
+
success: boolean;
|
|
9
|
+
fromVersion: string;
|
|
10
|
+
toVersion: string;
|
|
11
|
+
migratedKeys: string[];
|
|
12
|
+
manualStepsRequired: string[];
|
|
13
|
+
backupPath: string | null;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* ConfigMigrator manages a registry of migration functions and applies them
|
|
17
|
+
* sequentially to upgrade config documents from one format version to another.
|
|
18
|
+
*/
|
|
19
|
+
export declare class ConfigMigrator {
|
|
20
|
+
private readonly migrations;
|
|
21
|
+
/**
|
|
22
|
+
* Register a migration function for the given version key.
|
|
23
|
+
*
|
|
24
|
+
* @param key - Migration key in format "N->M" (e.g. "1->2")
|
|
25
|
+
* @param fn - Migration function that receives the raw config and returns the migrated config
|
|
26
|
+
*/
|
|
27
|
+
register(key: string, fn: (config: unknown) => unknown): void;
|
|
28
|
+
/**
|
|
29
|
+
* Check whether a sequential migration path exists from fromVersion to toVersion.
|
|
30
|
+
*
|
|
31
|
+
* @param fromVersion - Starting version string
|
|
32
|
+
* @param toVersion - Target version string
|
|
33
|
+
* @returns true if every step in the path is registered
|
|
34
|
+
*/
|
|
35
|
+
canMigrate(fromVersion: string, toVersion: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Apply sequential migrations from fromVersion to toVersion.
|
|
38
|
+
*
|
|
39
|
+
* If fromVersion === toVersion, returns a no-op success result.
|
|
40
|
+
* If any intermediate migration is missing, returns success:false.
|
|
41
|
+
*
|
|
42
|
+
* When filePath is provided and migration is needed, a backup is written to
|
|
43
|
+
* `${filePath}.bak.v${fromVersion}` before any transformations are applied.
|
|
44
|
+
*
|
|
45
|
+
* @param config - Raw config object to migrate
|
|
46
|
+
* @param fromVersion - Starting format version string
|
|
47
|
+
* @param toVersion - Target format version string
|
|
48
|
+
* @param filePath - Optional path to the source config file for backup creation
|
|
49
|
+
* @returns Object containing the (possibly migrated) config and a MigrationResult
|
|
50
|
+
*/
|
|
51
|
+
migrate(config: unknown, fromVersion: string, toVersion: string, filePath?: string): {
|
|
52
|
+
config: unknown;
|
|
53
|
+
result: MigrationResult;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/** Singleton instance for use throughout the toolkit */
|
|
57
|
+
export declare const defaultConfigMigrator: ConfigMigrator;
|
|
58
|
+
//# sourceMappingURL=config-migrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-migrator.d.ts","sourceRoot":"","sources":["../../src/config/config-migrator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuD;IAElF;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,GAAG,IAAI;IAI7D;;;;;;OAMG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAgB3D;;;;;;;;;;;;;;OAcG;IACH,OAAO,CACL,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,eAAe,CAAA;KAAE;CA2GhD;AAED,wDAAwD;AACxD,eAAO,MAAM,qBAAqB,gBAAuB,CAAA"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfigMigrator — registry and executor of config format migrations (FR63).
|
|
3
|
+
*
|
|
4
|
+
* Migrations are keyed as "N->M" strings (e.g. "1->2") and are applied
|
|
5
|
+
* sequentially when migrating across multiple versions.
|
|
6
|
+
*/
|
|
7
|
+
import { writeFileSync, readFileSync } from 'fs';
|
|
8
|
+
/**
|
|
9
|
+
* ConfigMigrator manages a registry of migration functions and applies them
|
|
10
|
+
* sequentially to upgrade config documents from one format version to another.
|
|
11
|
+
*/
|
|
12
|
+
export class ConfigMigrator {
|
|
13
|
+
migrations = new Map();
|
|
14
|
+
/**
|
|
15
|
+
* Register a migration function for the given version key.
|
|
16
|
+
*
|
|
17
|
+
* @param key - Migration key in format "N->M" (e.g. "1->2")
|
|
18
|
+
* @param fn - Migration function that receives the raw config and returns the migrated config
|
|
19
|
+
*/
|
|
20
|
+
register(key, fn) {
|
|
21
|
+
this.migrations.set(key, fn);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check whether a sequential migration path exists from fromVersion to toVersion.
|
|
25
|
+
*
|
|
26
|
+
* @param fromVersion - Starting version string
|
|
27
|
+
* @param toVersion - Target version string
|
|
28
|
+
* @returns true if every step in the path is registered
|
|
29
|
+
*/
|
|
30
|
+
canMigrate(fromVersion, toVersion) {
|
|
31
|
+
if (fromVersion === toVersion)
|
|
32
|
+
return true;
|
|
33
|
+
const from = parseInt(fromVersion, 10);
|
|
34
|
+
const to = parseInt(toVersion, 10);
|
|
35
|
+
if (isNaN(from) || isNaN(to) || from >= to)
|
|
36
|
+
return false;
|
|
37
|
+
for (let v = from; v < to; v++) {
|
|
38
|
+
const key = `${String(v)}->${String(v + 1)}`;
|
|
39
|
+
if (!this.migrations.has(key))
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Apply sequential migrations from fromVersion to toVersion.
|
|
46
|
+
*
|
|
47
|
+
* If fromVersion === toVersion, returns a no-op success result.
|
|
48
|
+
* If any intermediate migration is missing, returns success:false.
|
|
49
|
+
*
|
|
50
|
+
* When filePath is provided and migration is needed, a backup is written to
|
|
51
|
+
* `${filePath}.bak.v${fromVersion}` before any transformations are applied.
|
|
52
|
+
*
|
|
53
|
+
* @param config - Raw config object to migrate
|
|
54
|
+
* @param fromVersion - Starting format version string
|
|
55
|
+
* @param toVersion - Target format version string
|
|
56
|
+
* @param filePath - Optional path to the source config file for backup creation
|
|
57
|
+
* @returns Object containing the (possibly migrated) config and a MigrationResult
|
|
58
|
+
*/
|
|
59
|
+
migrate(config, fromVersion, toVersion, filePath) {
|
|
60
|
+
// No-op: same version
|
|
61
|
+
if (fromVersion === toVersion) {
|
|
62
|
+
return {
|
|
63
|
+
config,
|
|
64
|
+
result: {
|
|
65
|
+
success: true,
|
|
66
|
+
fromVersion,
|
|
67
|
+
toVersion,
|
|
68
|
+
migratedKeys: [],
|
|
69
|
+
manualStepsRequired: [],
|
|
70
|
+
backupPath: null,
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
const from = parseInt(fromVersion, 10);
|
|
75
|
+
const to = parseInt(toVersion, 10);
|
|
76
|
+
if (isNaN(from) || isNaN(to) || from >= to) {
|
|
77
|
+
return {
|
|
78
|
+
config,
|
|
79
|
+
result: {
|
|
80
|
+
success: false,
|
|
81
|
+
fromVersion,
|
|
82
|
+
toVersion,
|
|
83
|
+
migratedKeys: [],
|
|
84
|
+
manualStepsRequired: [
|
|
85
|
+
`Cannot migrate from version "${fromVersion}" to "${toVersion}": invalid version range.`,
|
|
86
|
+
],
|
|
87
|
+
backupPath: null,
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
// Check all steps exist first
|
|
92
|
+
for (let v = from; v < to; v++) {
|
|
93
|
+
const key = `${String(v)}->${String(v + 1)}`;
|
|
94
|
+
if (!this.migrations.has(key)) {
|
|
95
|
+
return {
|
|
96
|
+
config,
|
|
97
|
+
result: {
|
|
98
|
+
success: false,
|
|
99
|
+
fromVersion,
|
|
100
|
+
toVersion,
|
|
101
|
+
migratedKeys: [],
|
|
102
|
+
manualStepsRequired: [
|
|
103
|
+
`Missing migration step: "${key}". ` +
|
|
104
|
+
`Cannot automatically migrate from version "${fromVersion}" to "${toVersion}". ` +
|
|
105
|
+
`Please upgrade the toolkit: npm install -g substrate@latest`,
|
|
106
|
+
],
|
|
107
|
+
backupPath: null,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Write backup file before applying any migrations (AC4)
|
|
113
|
+
let backupPath = null;
|
|
114
|
+
if (filePath !== undefined) {
|
|
115
|
+
backupPath = `${filePath}.bak.v${fromVersion}`;
|
|
116
|
+
const originalContent = readFileSync(filePath, 'utf-8');
|
|
117
|
+
writeFileSync(backupPath, originalContent, 'utf-8');
|
|
118
|
+
}
|
|
119
|
+
// Apply migrations sequentially
|
|
120
|
+
let current = config;
|
|
121
|
+
const migratedKeys = [];
|
|
122
|
+
for (let v = from; v < to; v++) {
|
|
123
|
+
const key = `${String(v)}->${String(v + 1)}`;
|
|
124
|
+
const fn = this.migrations.get(key);
|
|
125
|
+
const before = JSON.stringify(current);
|
|
126
|
+
current = fn(current);
|
|
127
|
+
const after = JSON.stringify(current);
|
|
128
|
+
// Detect changed keys by comparing against previous-step output (not original config)
|
|
129
|
+
if (current !== null &&
|
|
130
|
+
typeof current === 'object' &&
|
|
131
|
+
!Array.isArray(current)) {
|
|
132
|
+
const beforeObj = JSON.parse(before);
|
|
133
|
+
const afterObj = JSON.parse(after);
|
|
134
|
+
for (const k of Object.keys(afterObj)) {
|
|
135
|
+
if (JSON.stringify(afterObj[k]) !== JSON.stringify(beforeObj[k])) {
|
|
136
|
+
if (!migratedKeys.includes(k)) {
|
|
137
|
+
migratedKeys.push(k);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
config: current,
|
|
145
|
+
result: {
|
|
146
|
+
success: true,
|
|
147
|
+
fromVersion,
|
|
148
|
+
toVersion,
|
|
149
|
+
migratedKeys,
|
|
150
|
+
manualStepsRequired: [],
|
|
151
|
+
backupPath,
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/** Singleton instance for use throughout the toolkit */
|
|
157
|
+
export const defaultConfigMigrator = new ConfigMigrator();
|
|
158
|
+
//# sourceMappingURL=config-migrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-migrator.js","sourceRoot":"","sources":["../../src/config/config-migrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfigSystem implementation — loads configuration in hierarchy order and
|
|
3
|
+
* exposes get/set/getMasked operations.
|
|
4
|
+
*
|
|
5
|
+
* Hierarchy (lowest → highest priority):
|
|
6
|
+
* built-in defaults
|
|
7
|
+
* → global user config (~/.substrate/config.yaml)
|
|
8
|
+
* → project config (./.substrate/config.yaml)
|
|
9
|
+
* → environment vars (ADT_* prefixed)
|
|
10
|
+
* → CLI flag overrides (passed via ConfigSystemOptions.cliOverrides)
|
|
11
|
+
*
|
|
12
|
+
* No imports from src/ (monolith) — zero monolith dependencies.
|
|
13
|
+
*/
|
|
14
|
+
import { type SubstrateConfig, type ConfigSystem, type ConfigSystemOptions } from './types.js';
|
|
15
|
+
type DeepPartial<T> = {
|
|
16
|
+
[K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];
|
|
17
|
+
};
|
|
18
|
+
export declare function deepMerge<T extends Record<string, unknown>>(base: T, override: DeepPartial<T>): T;
|
|
19
|
+
/**
|
|
20
|
+
* Get a value from a nested object using dot-notation key.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getByPath(obj: unknown, path: string): unknown;
|
|
23
|
+
/**
|
|
24
|
+
* Return a deep clone of `obj` with `path` set to `value`.
|
|
25
|
+
* Creates intermediate objects as needed.
|
|
26
|
+
*/
|
|
27
|
+
export declare function setByPath(obj: Record<string, unknown>, path: string, value: unknown): Record<string, unknown>;
|
|
28
|
+
/**
|
|
29
|
+
* Check whether a config format version is compatible with this toolkit.
|
|
30
|
+
*
|
|
31
|
+
* @param version - Version string to check
|
|
32
|
+
* @returns true if the version is in SUPPORTED_CONFIG_FORMAT_VERSIONS
|
|
33
|
+
*/
|
|
34
|
+
export declare function getVersionCompatibility(version: string): boolean;
|
|
35
|
+
export declare class ConfigSystemImpl implements ConfigSystem {
|
|
36
|
+
private _config;
|
|
37
|
+
private readonly _projectConfigDir;
|
|
38
|
+
private readonly _globalConfigDir;
|
|
39
|
+
private readonly _cliOverrides;
|
|
40
|
+
private readonly _logger;
|
|
41
|
+
constructor(options?: ConfigSystemOptions);
|
|
42
|
+
get isLoaded(): boolean;
|
|
43
|
+
load(): Promise<void>;
|
|
44
|
+
getConfig(): SubstrateConfig;
|
|
45
|
+
get(key: string): unknown;
|
|
46
|
+
set(key: string, value: unknown): Promise<void>;
|
|
47
|
+
getMasked(): SubstrateConfig;
|
|
48
|
+
getConfigFormatVersion(): string;
|
|
49
|
+
isCompatible(version: string): boolean;
|
|
50
|
+
private _fileExists;
|
|
51
|
+
private _loadYamlFile;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create a new ConfigSystem instance.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* const config = createConfigSystem()
|
|
58
|
+
* await config.load()
|
|
59
|
+
* const cfg = config.getConfig()
|
|
60
|
+
*/
|
|
61
|
+
export declare function createConfigSystem(options?: ConfigSystemOptions): ConfigSystem;
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=config-system-impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-system-impl.d.ts","sourceRoot":"","sources":["../../src/config/config-system-impl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH,OAAO,EAKL,KAAK,eAAe,EAEpB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAA;AA2CnB,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChE,CAAA;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzD,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,CAAC,CAqBH;AA6DD;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ7D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBzB;AAMD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEhE;AAMD,qBAAa,gBAAiB,YAAW,YAAY;IACnD,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,GAAE,mBAAwB;IAW7C,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2D3B,SAAS,IAAI,eAAe;IAU5B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKnB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAwDrD,SAAS,IAAI,eAAe;IAK5B,sBAAsB,IAAI,MAAM;IAIhC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;YAQxB,WAAW;YASX,aAAa;CA4D5B;AAMD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAElF"}
|