@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,364 @@
|
|
|
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 { readFile, writeFile, mkdir, access } from 'fs/promises';
|
|
15
|
+
import { join, resolve } from 'path';
|
|
16
|
+
import { homedir } from 'os';
|
|
17
|
+
import yaml from 'js-yaml';
|
|
18
|
+
import { ConfigError, ConfigIncompatibleFormatError } from './errors.js';
|
|
19
|
+
import { SubstrateConfigSchema, PartialSubstrateConfigSchema, CURRENT_CONFIG_FORMAT_VERSION, SUPPORTED_CONFIG_FORMAT_VERSIONS, } from './types.js';
|
|
20
|
+
import { isVersionSupported, formatUnsupportedVersionError } from './version-utils.js';
|
|
21
|
+
import { defaultConfigMigrator } from './config-migrator.js';
|
|
22
|
+
import { DEFAULT_CONFIG } from './defaults.js';
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// Credential masking (inlined from src/cli/utils/masking.ts to avoid monolith import)
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
const MASKED_VALUE = '***';
|
|
27
|
+
const CREDENTIAL_FIELDS = new Set([
|
|
28
|
+
'api_key',
|
|
29
|
+
'apiKey',
|
|
30
|
+
'api_key_env',
|
|
31
|
+
'api_key_value',
|
|
32
|
+
'token',
|
|
33
|
+
'secret',
|
|
34
|
+
'password',
|
|
35
|
+
]);
|
|
36
|
+
function deepMask(value) {
|
|
37
|
+
if (value === null || value === undefined)
|
|
38
|
+
return value;
|
|
39
|
+
if (Array.isArray(value))
|
|
40
|
+
return value.map(deepMask);
|
|
41
|
+
if (typeof value === 'object') {
|
|
42
|
+
const obj = value;
|
|
43
|
+
const masked = {};
|
|
44
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
45
|
+
if (CREDENTIAL_FIELDS.has(k)) {
|
|
46
|
+
masked[k] = MASKED_VALUE;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
masked[k] = deepMask(v);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return masked;
|
|
53
|
+
}
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
export function deepMerge(base, override) {
|
|
57
|
+
const result = { ...base };
|
|
58
|
+
for (const [key, val] of Object.entries(override)) {
|
|
59
|
+
if (val !== null &&
|
|
60
|
+
val !== undefined &&
|
|
61
|
+
typeof val === 'object' &&
|
|
62
|
+
!Array.isArray(val) &&
|
|
63
|
+
typeof result[key] === 'object' &&
|
|
64
|
+
result[key] !== null &&
|
|
65
|
+
!Array.isArray(result[key])) {
|
|
66
|
+
result[key] = deepMerge(result[key], val);
|
|
67
|
+
}
|
|
68
|
+
else if (val !== undefined) {
|
|
69
|
+
result[key] = val;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
// ---------------------------------------------------------------------------
|
|
75
|
+
// Environment variable resolution
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
/**
|
|
78
|
+
* Map of ADT_ environment variable names to config paths.
|
|
79
|
+
* Only overrides scalar values; does not support nested structures via env.
|
|
80
|
+
*/
|
|
81
|
+
const ENV_VAR_MAP = {
|
|
82
|
+
ADT_LOG_LEVEL: 'global.log_level',
|
|
83
|
+
ADT_MAX_CONCURRENT_TASKS: 'global.max_concurrent_tasks',
|
|
84
|
+
ADT_BUDGET_CAP_TOKENS: 'global.budget_cap_tokens',
|
|
85
|
+
ADT_BUDGET_CAP_USD: 'global.budget_cap_usd',
|
|
86
|
+
ADT_WORKSPACE_DIR: 'global.workspace_dir',
|
|
87
|
+
ADT_CLAUDE_ENABLED: 'providers.claude.enabled',
|
|
88
|
+
ADT_CODEX_ENABLED: 'providers.codex.enabled',
|
|
89
|
+
ADT_GEMINI_ENABLED: 'providers.gemini.enabled',
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Read relevant environment variables and return a partial config overlay.
|
|
93
|
+
*/
|
|
94
|
+
function readEnvOverrides(logger) {
|
|
95
|
+
const overrides = {};
|
|
96
|
+
for (const [envKey, configPath] of Object.entries(ENV_VAR_MAP)) {
|
|
97
|
+
const rawValue = process.env[envKey];
|
|
98
|
+
if (rawValue === undefined)
|
|
99
|
+
continue;
|
|
100
|
+
const parts = configPath.split('.');
|
|
101
|
+
let cursor = overrides;
|
|
102
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
103
|
+
const part = parts[i] ?? '';
|
|
104
|
+
if (cursor[part] === undefined)
|
|
105
|
+
cursor[part] = {};
|
|
106
|
+
cursor = cursor[part];
|
|
107
|
+
}
|
|
108
|
+
const lastKey = parts[parts.length - 1] ?? '';
|
|
109
|
+
// Coerce to appropriate type
|
|
110
|
+
if (rawValue === 'true')
|
|
111
|
+
cursor[lastKey] = true;
|
|
112
|
+
else if (rawValue === 'false')
|
|
113
|
+
cursor[lastKey] = false;
|
|
114
|
+
else if (/^\d+$/.test(rawValue))
|
|
115
|
+
cursor[lastKey] = parseInt(rawValue, 10);
|
|
116
|
+
else if (/^\d*\.\d+$/.test(rawValue))
|
|
117
|
+
cursor[lastKey] = parseFloat(rawValue);
|
|
118
|
+
else
|
|
119
|
+
cursor[lastKey] = rawValue;
|
|
120
|
+
}
|
|
121
|
+
// Validate the env overrides as partial config
|
|
122
|
+
const parsed = PartialSubstrateConfigSchema.safeParse(overrides);
|
|
123
|
+
if (!parsed.success) {
|
|
124
|
+
logger.warn({ errors: parsed.error.issues }, 'Invalid environment variable overrides ignored');
|
|
125
|
+
return {};
|
|
126
|
+
}
|
|
127
|
+
return parsed.data;
|
|
128
|
+
}
|
|
129
|
+
// ---------------------------------------------------------------------------
|
|
130
|
+
// Dot-notation key accessor / setter
|
|
131
|
+
// ---------------------------------------------------------------------------
|
|
132
|
+
/**
|
|
133
|
+
* Get a value from a nested object using dot-notation key.
|
|
134
|
+
*/
|
|
135
|
+
export function getByPath(obj, path) {
|
|
136
|
+
const parts = path.split('.');
|
|
137
|
+
let cursor = obj;
|
|
138
|
+
for (const part of parts) {
|
|
139
|
+
if (cursor === null || cursor === undefined || typeof cursor !== 'object')
|
|
140
|
+
return undefined;
|
|
141
|
+
cursor = cursor[part];
|
|
142
|
+
}
|
|
143
|
+
return cursor;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Return a deep clone of `obj` with `path` set to `value`.
|
|
147
|
+
* Creates intermediate objects as needed.
|
|
148
|
+
*/
|
|
149
|
+
export function setByPath(obj, path, value) {
|
|
150
|
+
const parts = path.split('.');
|
|
151
|
+
const result = { ...obj };
|
|
152
|
+
let cursor = result;
|
|
153
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
154
|
+
const part = parts[i] ?? '';
|
|
155
|
+
const existing = cursor[part];
|
|
156
|
+
if (existing === null || existing === undefined || typeof existing !== 'object') {
|
|
157
|
+
cursor[part] = {};
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
cursor[part] = { ...existing };
|
|
161
|
+
}
|
|
162
|
+
cursor = cursor[part];
|
|
163
|
+
}
|
|
164
|
+
const lastKey = parts[parts.length - 1] ?? '';
|
|
165
|
+
cursor[lastKey] = value;
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
// ---------------------------------------------------------------------------
|
|
169
|
+
// getVersionCompatibility — utility exported from core
|
|
170
|
+
// ---------------------------------------------------------------------------
|
|
171
|
+
/**
|
|
172
|
+
* Check whether a config format version is compatible with this toolkit.
|
|
173
|
+
*
|
|
174
|
+
* @param version - Version string to check
|
|
175
|
+
* @returns true if the version is in SUPPORTED_CONFIG_FORMAT_VERSIONS
|
|
176
|
+
*/
|
|
177
|
+
export function getVersionCompatibility(version) {
|
|
178
|
+
return isVersionSupported(version, SUPPORTED_CONFIG_FORMAT_VERSIONS);
|
|
179
|
+
}
|
|
180
|
+
// ---------------------------------------------------------------------------
|
|
181
|
+
// ConfigSystemImpl
|
|
182
|
+
// ---------------------------------------------------------------------------
|
|
183
|
+
export class ConfigSystemImpl {
|
|
184
|
+
_config = null;
|
|
185
|
+
_projectConfigDir;
|
|
186
|
+
_globalConfigDir;
|
|
187
|
+
_cliOverrides;
|
|
188
|
+
_logger;
|
|
189
|
+
constructor(options = {}) {
|
|
190
|
+
this._projectConfigDir = options.projectConfigDir
|
|
191
|
+
? resolve(options.projectConfigDir)
|
|
192
|
+
: resolve(process.cwd(), '.substrate');
|
|
193
|
+
this._globalConfigDir = options.globalConfigDir
|
|
194
|
+
? resolve(options.globalConfigDir)
|
|
195
|
+
: resolve(homedir(), '.substrate');
|
|
196
|
+
this._cliOverrides = options.cliOverrides ?? {};
|
|
197
|
+
this._logger = options.logger ?? console;
|
|
198
|
+
}
|
|
199
|
+
get isLoaded() {
|
|
200
|
+
return this._config !== null;
|
|
201
|
+
}
|
|
202
|
+
async load() {
|
|
203
|
+
// 1. Start with built-in defaults
|
|
204
|
+
let merged = structuredClone(DEFAULT_CONFIG);
|
|
205
|
+
// 2. Apply global user config if present
|
|
206
|
+
const globalConfig = await this._loadYamlFile(join(this._globalConfigDir, 'config.yaml'));
|
|
207
|
+
if (globalConfig !== null) {
|
|
208
|
+
merged = deepMerge(merged, globalConfig);
|
|
209
|
+
}
|
|
210
|
+
// 3. Apply project config if present
|
|
211
|
+
const projectConfig = await this._loadYamlFile(join(this._projectConfigDir, 'config.yaml'));
|
|
212
|
+
if (projectConfig !== null) {
|
|
213
|
+
merged = deepMerge(merged, projectConfig);
|
|
214
|
+
}
|
|
215
|
+
// 4. Apply environment variable overrides
|
|
216
|
+
const envOverrides = readEnvOverrides(this._logger);
|
|
217
|
+
if (Object.keys(envOverrides).length > 0) {
|
|
218
|
+
merged = deepMerge(merged, envOverrides);
|
|
219
|
+
}
|
|
220
|
+
// 5. Apply CLI flag overrides
|
|
221
|
+
if (Object.keys(this._cliOverrides).length > 0) {
|
|
222
|
+
merged = deepMerge(merged, this._cliOverrides);
|
|
223
|
+
}
|
|
224
|
+
// 6. Validate the merged config
|
|
225
|
+
const result = SubstrateConfigSchema.safeParse(merged);
|
|
226
|
+
if (!result.success) {
|
|
227
|
+
const issues = result.error.issues
|
|
228
|
+
.map((issue) => ` • ${issue.path.join('.')}: ${issue.message}`)
|
|
229
|
+
.join('\n');
|
|
230
|
+
throw new ConfigError(`Configuration validation failed:\n${issues}`, { issues: result.error.issues });
|
|
231
|
+
}
|
|
232
|
+
this._config = result.data;
|
|
233
|
+
this._logger.debug('Configuration loaded successfully');
|
|
234
|
+
}
|
|
235
|
+
getConfig() {
|
|
236
|
+
if (this._config === null) {
|
|
237
|
+
throw new ConfigError('Configuration has not been loaded. Call load() before getConfig().', {});
|
|
238
|
+
}
|
|
239
|
+
return this._config;
|
|
240
|
+
}
|
|
241
|
+
get(key) {
|
|
242
|
+
const config = this.getConfig();
|
|
243
|
+
return getByPath(config, key);
|
|
244
|
+
}
|
|
245
|
+
async set(key, value) {
|
|
246
|
+
// Validate key exists in schema by checking current merged config path
|
|
247
|
+
const current = this.getConfig();
|
|
248
|
+
const existing = getByPath(current, key);
|
|
249
|
+
// Reject unknown keys — the key must resolve to something in the merged config
|
|
250
|
+
if (existing === undefined) {
|
|
251
|
+
throw new ConfigError(`Unknown config key: ${key}`, { key });
|
|
252
|
+
}
|
|
253
|
+
// Key path must resolve to a non-object (scalar) — we don't allow replacing whole sections
|
|
254
|
+
if (typeof existing === 'object' &&
|
|
255
|
+
existing !== null) {
|
|
256
|
+
throw new ConfigError(`Cannot set object key "${key}" — use a more specific dot-notation path`, { key });
|
|
257
|
+
}
|
|
258
|
+
// Load the raw project config file (or start fresh)
|
|
259
|
+
let projectConfigRaw = {};
|
|
260
|
+
const projectConfigPath = join(this._projectConfigDir, 'config.yaml');
|
|
261
|
+
const existingYaml = await this._loadYamlFile(projectConfigPath);
|
|
262
|
+
if (existingYaml !== null) {
|
|
263
|
+
projectConfigRaw = existingYaml;
|
|
264
|
+
}
|
|
265
|
+
// Apply the change
|
|
266
|
+
const updated = setByPath(projectConfigRaw, key, value);
|
|
267
|
+
// Validate the partial update
|
|
268
|
+
const partial = PartialSubstrateConfigSchema.safeParse(updated);
|
|
269
|
+
if (!partial.success) {
|
|
270
|
+
const issues = partial.error.issues
|
|
271
|
+
.map((i) => ` • ${i.path.join('.')}: ${i.message}`)
|
|
272
|
+
.join('\n');
|
|
273
|
+
throw new ConfigError(`Invalid value for "${key}":\n${issues}`, { key, value, issues: partial.error.issues });
|
|
274
|
+
}
|
|
275
|
+
// Write back and reload
|
|
276
|
+
await mkdir(this._projectConfigDir, { recursive: true });
|
|
277
|
+
const yamlStr = yaml.dump(updated);
|
|
278
|
+
await writeFile(projectConfigPath, yamlStr, 'utf-8');
|
|
279
|
+
// Reload to get the updated merged config
|
|
280
|
+
await this.load();
|
|
281
|
+
}
|
|
282
|
+
getMasked() {
|
|
283
|
+
const config = this.getConfig();
|
|
284
|
+
return deepMask(config);
|
|
285
|
+
}
|
|
286
|
+
getConfigFormatVersion() {
|
|
287
|
+
return CURRENT_CONFIG_FORMAT_VERSION;
|
|
288
|
+
}
|
|
289
|
+
isCompatible(version) {
|
|
290
|
+
return SUPPORTED_CONFIG_FORMAT_VERSIONS.includes(version);
|
|
291
|
+
}
|
|
292
|
+
// ---------------------------------------------------------------------------
|
|
293
|
+
// Private helpers
|
|
294
|
+
// ---------------------------------------------------------------------------
|
|
295
|
+
async _fileExists(filePath) {
|
|
296
|
+
try {
|
|
297
|
+
await access(filePath);
|
|
298
|
+
return true;
|
|
299
|
+
}
|
|
300
|
+
catch {
|
|
301
|
+
return false;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
async _loadYamlFile(filePath) {
|
|
305
|
+
if (!(await this._fileExists(filePath)))
|
|
306
|
+
return null;
|
|
307
|
+
try {
|
|
308
|
+
const raw = await readFile(filePath, 'utf-8');
|
|
309
|
+
let parsed = yaml.load(raw);
|
|
310
|
+
// Pre-check config_format_version and attempt auto-migration before Zod runs (AC4, AC5)
|
|
311
|
+
if (parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)) {
|
|
312
|
+
const rawObj = parsed;
|
|
313
|
+
const version = rawObj['config_format_version'];
|
|
314
|
+
if (version !== undefined && typeof version === 'string' && !isVersionSupported(version, SUPPORTED_CONFIG_FORMAT_VERSIONS)) {
|
|
315
|
+
// Attempt auto-migration if a migration path exists (FR63)
|
|
316
|
+
if (defaultConfigMigrator.canMigrate(version, CURRENT_CONFIG_FORMAT_VERSION)) {
|
|
317
|
+
const migrationOutput = defaultConfigMigrator.migrate(rawObj, version, CURRENT_CONFIG_FORMAT_VERSION, filePath);
|
|
318
|
+
if (migrationOutput.result.success) {
|
|
319
|
+
this._logger.info({ from: version, to: CURRENT_CONFIG_FORMAT_VERSION, backup: migrationOutput.result.backupPath }, 'Config auto-migrated successfully');
|
|
320
|
+
parsed = migrationOutput.config;
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
throw new ConfigIncompatibleFormatError(`Config migration failed: ${migrationOutput.result.manualStepsRequired.join('; ')}`, { filePath, version });
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
throw new ConfigIncompatibleFormatError(formatUnsupportedVersionError('config', version, SUPPORTED_CONFIG_FORMAT_VERSIONS), { filePath });
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
const result = PartialSubstrateConfigSchema.safeParse(parsed);
|
|
332
|
+
if (!result.success) {
|
|
333
|
+
const issues = result.error.issues
|
|
334
|
+
.map((i) => ` • ${i.path.join('.')}: ${i.message}`)
|
|
335
|
+
.join('\n');
|
|
336
|
+
throw new ConfigError(`Invalid config file at ${filePath}:\n${issues}`, { filePath, issues: result.error.issues });
|
|
337
|
+
}
|
|
338
|
+
return result.data;
|
|
339
|
+
}
|
|
340
|
+
catch (err) {
|
|
341
|
+
if (err instanceof ConfigError)
|
|
342
|
+
throw err;
|
|
343
|
+
if (err instanceof ConfigIncompatibleFormatError)
|
|
344
|
+
throw err;
|
|
345
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
346
|
+
throw new ConfigError(`Failed to read config file at ${filePath}: ${message}`, { filePath });
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
// ---------------------------------------------------------------------------
|
|
351
|
+
// Factory function
|
|
352
|
+
// ---------------------------------------------------------------------------
|
|
353
|
+
/**
|
|
354
|
+
* Create a new ConfigSystem instance.
|
|
355
|
+
*
|
|
356
|
+
* @example
|
|
357
|
+
* const config = createConfigSystem()
|
|
358
|
+
* await config.load()
|
|
359
|
+
* const cfg = config.getConfig()
|
|
360
|
+
*/
|
|
361
|
+
export function createConfigSystem(options = {}) {
|
|
362
|
+
return new ConfigSystemImpl(options);
|
|
363
|
+
}
|
|
364
|
+
//# sourceMappingURL=config-system-impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-system-impl.js","sourceRoot":"","sources":["../../src/config/config-system-impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfigWatcher — file watcher for hot-reloading substrate.config.yaml.
|
|
3
|
+
*
|
|
4
|
+
* Responsibilities (Story 5.6):
|
|
5
|
+
* - Watch the config file using Node.js fs.watch
|
|
6
|
+
* - Debounce rapid file change events (default 300ms)
|
|
7
|
+
* - Validate the new config using the Zod schema
|
|
8
|
+
* - Call onReload with the parsed config on success
|
|
9
|
+
* - Call onError with validation/parse errors on failure
|
|
10
|
+
* - Clean up file handles on stop()
|
|
11
|
+
*
|
|
12
|
+
* Architecture constraints:
|
|
13
|
+
* - No imports from src/ (monolith) — zero monolith dependencies
|
|
14
|
+
* - ESM imports: ALL imports use .js extension
|
|
15
|
+
*/
|
|
16
|
+
import type { ILogger } from '../dispatch/types.js';
|
|
17
|
+
import { type SubstrateConfig } from './types.js';
|
|
18
|
+
export interface ConfigWatcherOptions {
|
|
19
|
+
/** Absolute path to the config file to watch */
|
|
20
|
+
configPath: string;
|
|
21
|
+
/** Called with the new validated config when the file changes successfully */
|
|
22
|
+
onReload: (newConfig: SubstrateConfig) => void;
|
|
23
|
+
/** Called when validation or parsing fails */
|
|
24
|
+
onError: (err: Error) => void;
|
|
25
|
+
/** Debounce delay in milliseconds (default: 300) */
|
|
26
|
+
debounceMs?: number;
|
|
27
|
+
/**
|
|
28
|
+
* Logger instance. Defaults to console if not provided.
|
|
29
|
+
*/
|
|
30
|
+
logger?: ILogger;
|
|
31
|
+
}
|
|
32
|
+
export interface ConfigWatcher {
|
|
33
|
+
/** Start watching the config file */
|
|
34
|
+
start(): void;
|
|
35
|
+
/** Stop watching and clean up resources */
|
|
36
|
+
stop(): void;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Recursively flatten a nested object into dot-notation key/value pairs.
|
|
40
|
+
* Arrays are treated as leaf values (not recursed into).
|
|
41
|
+
*/
|
|
42
|
+
export declare function flattenObject(obj: Record<string, unknown>, prefix?: string): Record<string, unknown>;
|
|
43
|
+
/**
|
|
44
|
+
* Compute the set of dot-notation keys that differ between two configs.
|
|
45
|
+
*
|
|
46
|
+
* @param prev - Previous config
|
|
47
|
+
* @param next - New config
|
|
48
|
+
* @returns Array of dot-notation paths that changed (e.g., 'global.max_concurrent_tasks')
|
|
49
|
+
*/
|
|
50
|
+
export declare function computeChangedKeys(prev: SubstrateConfig, next: SubstrateConfig): string[];
|
|
51
|
+
/**
|
|
52
|
+
* Create a config file watcher that detects changes and reloads the config.
|
|
53
|
+
*
|
|
54
|
+
* AC1: Registers file watcher on configPath with persistent=false
|
|
55
|
+
* AC2: Debounces events, reads+parses+validates on change
|
|
56
|
+
* AC3: Calls onError for invalid config without calling onReload
|
|
57
|
+
*/
|
|
58
|
+
export declare function createConfigWatcher(options: ConfigWatcherOptions): ConfigWatcher;
|
|
59
|
+
//# sourceMappingURL=config-watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-watcher.d.ts","sourceRoot":"","sources":["../../src/config/config-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAA;AAMxE,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,QAAQ,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAA;IAC9C,8CAA8C;IAC9C,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;IAC7B,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,KAAK,IAAI,IAAI,CAAA;IACb,2CAA2C;IAC3C,IAAI,IAAI,IAAI,CAAA;CACb;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,SAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUhG;AAMD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM,EAAE,CAKzF;AAMD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAkFhF"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfigWatcher — file watcher for hot-reloading substrate.config.yaml.
|
|
3
|
+
*
|
|
4
|
+
* Responsibilities (Story 5.6):
|
|
5
|
+
* - Watch the config file using Node.js fs.watch
|
|
6
|
+
* - Debounce rapid file change events (default 300ms)
|
|
7
|
+
* - Validate the new config using the Zod schema
|
|
8
|
+
* - Call onReload with the parsed config on success
|
|
9
|
+
* - Call onError with validation/parse errors on failure
|
|
10
|
+
* - Clean up file handles on stop()
|
|
11
|
+
*
|
|
12
|
+
* Architecture constraints:
|
|
13
|
+
* - No imports from src/ (monolith) — zero monolith dependencies
|
|
14
|
+
* - ESM imports: ALL imports use .js extension
|
|
15
|
+
*/
|
|
16
|
+
import { watch, readFile, existsSync } from 'node:fs';
|
|
17
|
+
import yaml from 'js-yaml';
|
|
18
|
+
import { SubstrateConfigSchema } from './types.js';
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// flattenObject — deep-flatten for changed-keys computation
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
/**
|
|
23
|
+
* Recursively flatten a nested object into dot-notation key/value pairs.
|
|
24
|
+
* Arrays are treated as leaf values (not recursed into).
|
|
25
|
+
*/
|
|
26
|
+
export function flattenObject(obj, prefix = '') {
|
|
27
|
+
return Object.entries(obj).reduce((acc, [key, val]) => {
|
|
28
|
+
const fullKey = prefix ? `${prefix}.${key}` : key;
|
|
29
|
+
if (val !== null && typeof val === 'object' && !Array.isArray(val)) {
|
|
30
|
+
Object.assign(acc, flattenObject(val, fullKey));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
acc[fullKey] = val;
|
|
34
|
+
}
|
|
35
|
+
return acc;
|
|
36
|
+
}, {});
|
|
37
|
+
}
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
// computeChangedKeys
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
/**
|
|
42
|
+
* Compute the set of dot-notation keys that differ between two configs.
|
|
43
|
+
*
|
|
44
|
+
* @param prev - Previous config
|
|
45
|
+
* @param next - New config
|
|
46
|
+
* @returns Array of dot-notation paths that changed (e.g., 'global.max_concurrent_tasks')
|
|
47
|
+
*/
|
|
48
|
+
export function computeChangedKeys(prev, next) {
|
|
49
|
+
const prevFlat = flattenObject(prev);
|
|
50
|
+
const nextFlat = flattenObject(next);
|
|
51
|
+
const allKeys = new Set([...Object.keys(prevFlat), ...Object.keys(nextFlat)]);
|
|
52
|
+
return [...allKeys].filter((k) => prevFlat[k] !== nextFlat[k]);
|
|
53
|
+
}
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
// createConfigWatcher
|
|
56
|
+
// ---------------------------------------------------------------------------
|
|
57
|
+
/**
|
|
58
|
+
* Create a config file watcher that detects changes and reloads the config.
|
|
59
|
+
*
|
|
60
|
+
* AC1: Registers file watcher on configPath with persistent=false
|
|
61
|
+
* AC2: Debounces events, reads+parses+validates on change
|
|
62
|
+
* AC3: Calls onError for invalid config without calling onReload
|
|
63
|
+
*/
|
|
64
|
+
export function createConfigWatcher(options) {
|
|
65
|
+
const { configPath, onReload, onError, debounceMs = 300 } = options;
|
|
66
|
+
const logger = options.logger ?? console;
|
|
67
|
+
let watcher = null;
|
|
68
|
+
let debounceTimer = null;
|
|
69
|
+
const handleChange = () => {
|
|
70
|
+
// Debounce: cancel any pending reload
|
|
71
|
+
if (debounceTimer !== null) {
|
|
72
|
+
clearTimeout(debounceTimer);
|
|
73
|
+
debounceTimer = null;
|
|
74
|
+
}
|
|
75
|
+
debounceTimer = setTimeout(() => {
|
|
76
|
+
debounceTimer = null;
|
|
77
|
+
readFile(configPath, 'utf-8', (readErr, raw) => {
|
|
78
|
+
if (readErr !== null) {
|
|
79
|
+
logger.error({ err: readErr, configPath }, 'Config reload failed: could not read file');
|
|
80
|
+
onError(readErr);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
const parsed = yaml.load(raw);
|
|
85
|
+
const result = SubstrateConfigSchema.safeParse(parsed);
|
|
86
|
+
if (!result.success) {
|
|
87
|
+
const message = result.error.issues
|
|
88
|
+
.map((e) => `${e.path.join('.')}: ${e.message}`)
|
|
89
|
+
.join('; ');
|
|
90
|
+
const err = new Error(`Config validation failed: ${message}. Continuing with previous config.`);
|
|
91
|
+
logger.error({ configPath, details: message }, 'Config reload failed: schema validation error. Continuing with previous config.');
|
|
92
|
+
onError(err);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
onReload(result.data);
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
99
|
+
logger.error({ err: error, configPath }, 'Config reload failed: YAML parse error. Continuing with previous config.');
|
|
100
|
+
onError(error);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
}, debounceMs);
|
|
104
|
+
};
|
|
105
|
+
return {
|
|
106
|
+
start() {
|
|
107
|
+
if (watcher !== null) {
|
|
108
|
+
logger.warn({ configPath }, 'ConfigWatcher.start() called but watcher already running');
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (!existsSync(configPath)) {
|
|
112
|
+
logger.info({ configPath }, 'Config file not found, hot-reload disabled');
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
logger.info({ configPath }, 'Config watcher active: watching substrate.config.yaml');
|
|
116
|
+
watcher = watch(configPath, { persistent: false }, (_eventType, _filename) => {
|
|
117
|
+
handleChange();
|
|
118
|
+
});
|
|
119
|
+
watcher.on('error', (err) => {
|
|
120
|
+
logger.error({ err, configPath }, 'Config watcher error');
|
|
121
|
+
onError(err);
|
|
122
|
+
});
|
|
123
|
+
},
|
|
124
|
+
stop() {
|
|
125
|
+
if (debounceTimer !== null) {
|
|
126
|
+
clearTimeout(debounceTimer);
|
|
127
|
+
debounceTimer = null;
|
|
128
|
+
}
|
|
129
|
+
if (watcher !== null) {
|
|
130
|
+
watcher.close();
|
|
131
|
+
watcher = null;
|
|
132
|
+
logger.info({ configPath }, 'Config watcher stopped');
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=config-watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-watcher.js","sourceRoot":"","sources":["../../src/config/config-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAErD,OAAO,IAAI,MAAM,SAAS,CAAA;AAE1B,OAAO,EAAE,qBAAqB,EAAwB,MAAM,YAAY,CAAA;AA4BxE,8EAA8E;AAC9E,4DAA4D;AAC5D,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAA4B,EAAE,MAAM,GAAG,EAAE;IACrE,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;QACpD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;QACjD,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACnE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,GAA8B,EAAE,OAAO,CAAC,CAAC,CAAA;QAC5E,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAA;QACpB,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAA6B,CAAC,CAAA;AACnC,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAqB,EAAE,IAAqB;IAC7E,MAAM,QAAQ,GAAG,aAAa,CAAC,IAA0C,CAAC,CAAA;IAC1E,MAAM,QAAQ,GAAG,aAAa,CAAC,IAA0C,CAAC,CAAA;IAC1E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC7E,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAChE,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,GAAG,GAAG,EAAE,GAAG,OAAO,CAAA;IACnE,MAAM,MAAM,GAAY,OAAO,CAAC,MAAM,IAAI,OAAO,CAAA;IAEjD,IAAI,OAAO,GAAqB,IAAI,CAAA;IACpC,IAAI,aAAa,GAAyC,IAAI,CAAA;IAE9D,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,sCAAsC;QACtC,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,YAAY,CAAC,aAAa,CAAC,CAAA;YAC3B,aAAa,GAAG,IAAI,CAAA;QACtB,CAAC;QAED,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,aAAa,GAAG,IAAI,CAAA;YACpB,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;gBAC7C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACrB,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,2CAA2C,CAAC,CAAA;oBACvF,OAAO,CAAC,OAAO,CAAC,CAAA;oBAChB,OAAM;gBACR,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBAC7B,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;oBACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBACpB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;6BAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;6BAC/C,IAAI,CAAC,IAAI,CAAC,CAAA;wBACb,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,6BAA6B,OAAO,oCAAoC,CAAC,CAAA;wBAC/F,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,iFAAiF,CAAC,CAAA;wBACjI,OAAO,CAAC,GAAG,CAAC,CAAA;wBACZ,OAAM;oBACR,CAAC;oBACD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBACvB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;oBACjE,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,0EAA0E,CAAC,CAAA;oBACpH,OAAO,CAAC,KAAK,CAAC,CAAA;gBAChB,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,EAAE,UAAU,CAAC,CAAA;IAChB,CAAC,CAAA;IAED,OAAO;QACL,KAAK;YACH,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,0DAA0D,CAAC,CAAA;gBACvF,OAAM;YACR,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,4CAA4C,CAAC,CAAA;gBACzE,OAAM;YACR,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,uDAAuD,CAAC,CAAA;YAEpF,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE;gBAC3E,YAAY,EAAE,CAAA;YAChB,CAAC,CAAC,CAAA;YAEF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC1B,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,sBAAsB,CAAC,CAAA;gBACzD,OAAO,CAAC,GAAG,CAAC,CAAA;YACd,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,IAAI;YACF,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBAC3B,YAAY,CAAC,aAAa,CAAC,CAAA;gBAC3B,aAAa,GAAG,IAAI,CAAA;YACtB,CAAC;YAED,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,CAAC,KAAK,EAAE,CAAA;gBACf,OAAO,GAAG,IAAI,CAAA;gBACd,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,wBAAwB,CAAC,CAAA;YACvD,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in default values for the Substrate configuration system.
|
|
3
|
+
*
|
|
4
|
+
* These are the lowest-priority defaults; they are overridden by:
|
|
5
|
+
* global config → project config → environment variables → CLI flags
|
|
6
|
+
*/
|
|
7
|
+
import type { SubstrateConfig, ProviderConfig, GlobalSettings } from './types.js';
|
|
8
|
+
export declare const DEFAULT_CLAUDE_PROVIDER: ProviderConfig;
|
|
9
|
+
export declare const DEFAULT_CODEX_PROVIDER: ProviderConfig;
|
|
10
|
+
export declare const DEFAULT_GEMINI_PROVIDER: ProviderConfig;
|
|
11
|
+
export declare const DEFAULT_GLOBAL_SETTINGS: GlobalSettings;
|
|
12
|
+
export declare const DEFAULT_CONFIG: SubstrateConfig;
|
|
13
|
+
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACf,MAAM,YAAY,CAAA;AAMnB,eAAO,MAAM,uBAAuB,EAAE,cAWrC,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,cAMpC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,cAMrC,CAAA;AAMD,eAAO,MAAM,uBAAuB,EAAE,cAKrC,CAAA;AAMD,eAAO,MAAM,cAAc,EAAE,eAa5B,CAAA"}
|