@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
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core types for Substrate
|
|
3
|
+
* Shared type definitions used across all modules
|
|
4
|
+
*/
|
|
5
|
+
/** Unique identifier for a task in the DAG */
|
|
6
|
+
export type TaskId = string;
|
|
7
|
+
/** Unique identifier for a worker/agent instance */
|
|
8
|
+
export type WorkerId = string;
|
|
9
|
+
/** Unique identifier for a registered agent type */
|
|
10
|
+
export type AgentId = string;
|
|
11
|
+
/** Status of an individual task */
|
|
12
|
+
export type TaskStatus = 'pending' | 'ready' | 'queued' | 'running' | 'completed' | 'failed' | 'cancelled' | 'blocked';
|
|
13
|
+
/** Status of an orchestration session */
|
|
14
|
+
export type SessionStatus = 'initializing' | 'running' | 'paused' | 'completed' | 'failed' | 'cancelled';
|
|
15
|
+
/** Billing mode for a worker/agent */
|
|
16
|
+
export type BillingMode = 'subscription' | 'api' | 'free';
|
|
17
|
+
/** Severity level for errors and log messages */
|
|
18
|
+
export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
|
|
19
|
+
/** Task priority level */
|
|
20
|
+
export type TaskPriority = 'low' | 'normal' | 'high' | 'critical';
|
|
21
|
+
/** Agent capability descriptor */
|
|
22
|
+
export interface AgentCapability {
|
|
23
|
+
name: string;
|
|
24
|
+
version: string;
|
|
25
|
+
supportedTaskTypes: string[];
|
|
26
|
+
billingMode: BillingMode;
|
|
27
|
+
maxConcurrency: number;
|
|
28
|
+
}
|
|
29
|
+
/** Task graph node definition */
|
|
30
|
+
export interface TaskNode {
|
|
31
|
+
id: TaskId;
|
|
32
|
+
title: string;
|
|
33
|
+
description: string;
|
|
34
|
+
agentId?: AgentId;
|
|
35
|
+
status: TaskStatus;
|
|
36
|
+
priority: TaskPriority;
|
|
37
|
+
dependencies: TaskId[];
|
|
38
|
+
metadata: Record<string, unknown>;
|
|
39
|
+
createdAt: Date;
|
|
40
|
+
startedAt?: Date;
|
|
41
|
+
completedAt?: Date;
|
|
42
|
+
}
|
|
43
|
+
/** Session configuration */
|
|
44
|
+
export interface SessionConfig {
|
|
45
|
+
id: string;
|
|
46
|
+
name: string;
|
|
47
|
+
projectRoot: string;
|
|
48
|
+
taskGraphPath: string;
|
|
49
|
+
maxConcurrency: number;
|
|
50
|
+
budgetCap?: number;
|
|
51
|
+
billingMode: BillingMode;
|
|
52
|
+
}
|
|
53
|
+
/** Cost tracking record */
|
|
54
|
+
export interface CostRecord {
|
|
55
|
+
taskId: TaskId;
|
|
56
|
+
agentId: AgentId;
|
|
57
|
+
sessionId: string;
|
|
58
|
+
tokens: number;
|
|
59
|
+
estimatedCost: number;
|
|
60
|
+
billingMode: BillingMode;
|
|
61
|
+
timestamp: Date;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Lifecycle interface for all orchestrator services/modules in @substrate-ai/core.
|
|
65
|
+
* Mirrors BaseService from src/core/di.ts but lives in core to avoid monolith imports.
|
|
66
|
+
* Every module that participates in graceful startup/shutdown must implement this.
|
|
67
|
+
*/
|
|
68
|
+
export interface IBaseService {
|
|
69
|
+
/**
|
|
70
|
+
* Initialize the service — set up connections, subscribe to events, etc.
|
|
71
|
+
* Called after all services are constructed but before the orchestrator is ready.
|
|
72
|
+
*/
|
|
73
|
+
initialize(): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Tear down the service gracefully.
|
|
76
|
+
* Called during orchestrator shutdown in reverse dependency order.
|
|
77
|
+
*/
|
|
78
|
+
shutdown(): Promise<void>;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8CAA8C;AAC9C,MAAM,MAAM,MAAM,GAAG,MAAM,CAAA;AAE3B,oDAAoD;AACpD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAA;AAE7B,oDAAoD;AACpD,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAE5B,mCAAmC;AACnC,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,OAAO,GACP,QAAQ,GACR,SAAS,GACT,WAAW,GACX,QAAQ,GACR,WAAW,GACX,SAAS,CAAA;AAEb,yCAAyC;AACzC,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,SAAS,GACT,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,WAAW,CAAA;AAEf,sCAAsC;AACtC,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,KAAK,GAAG,MAAM,CAAA;AAEzD,iDAAiD;AACjD,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAE9E,0BAA0B;AAC1B,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;AAEjE,kCAAkC;AAClC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B,WAAW,EAAE,WAAW,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,iCAAiC;AACjC,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,UAAU,CAAA;IAClB,QAAQ,EAAE,YAAY,CAAA;IACtB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,WAAW,CAAC,EAAE,IAAI,CAAA;CACnB;AAED,4BAA4B;AAC5B,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,WAAW,CAAA;CACzB;AAED,2BAA2B;AAC3B,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,IAAI,CAAA;CAChB;AAMD;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3B;;;OAGG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @substrate-ai/core version-manager barrel export.
|
|
3
|
+
* Re-exports all version management types and implementations.
|
|
4
|
+
*/
|
|
5
|
+
export type { VersionManager, VersionCheckResult, UpgradePreview } from './version-manager.js';
|
|
6
|
+
export { VersionManagerImpl, createVersionManager } from './version-manager-impl.js';
|
|
7
|
+
export type { VersionManagerDeps } from './version-manager-impl.js';
|
|
8
|
+
export { UpdateChecker, UpdateCheckError } from './update-checker.js';
|
|
9
|
+
export { VersionCache } from './version-cache.js';
|
|
10
|
+
export type { VersionCacheEntry } from './version-cache.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/version-manager/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC9F,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AACpF,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @substrate-ai/core version-manager barrel export.
|
|
3
|
+
* Re-exports all version management types and implementations.
|
|
4
|
+
*/
|
|
5
|
+
export { VersionManagerImpl, createVersionManager } from './version-manager-impl.js';
|
|
6
|
+
export { UpdateChecker, UpdateCheckError } from './update-checker.js';
|
|
7
|
+
export { VersionCache } from './version-cache.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/version-manager/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAEpF,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UpdateChecker — queries the npm registry for the latest package version.
|
|
3
|
+
*
|
|
4
|
+
* Uses Node.js built-in `https` module (no extra HTTP dependency).
|
|
5
|
+
* Uses `semver` for major-version comparison (AC7, AC8).
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Thrown when an update check fails due to network error, timeout, or bad response.
|
|
9
|
+
*/
|
|
10
|
+
export declare class UpdateCheckError extends Error {
|
|
11
|
+
readonly name = "UpdateCheckError";
|
|
12
|
+
constructor(message: string);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Queries the npm registry to determine the latest published version of a package.
|
|
16
|
+
*/
|
|
17
|
+
export declare class UpdateChecker {
|
|
18
|
+
private readonly timeoutMs;
|
|
19
|
+
constructor(timeoutMs?: number);
|
|
20
|
+
/**
|
|
21
|
+
* Fetch the latest published version of a package from the npm registry.
|
|
22
|
+
*
|
|
23
|
+
* @param packageName - npm package name (e.g. 'substrate')
|
|
24
|
+
* @returns The latest version string (semver)
|
|
25
|
+
* @throws {UpdateCheckError} on timeout, network error, non-200 HTTP status, or parse failure
|
|
26
|
+
*/
|
|
27
|
+
fetchLatestVersion(packageName: string): Promise<string>;
|
|
28
|
+
/**
|
|
29
|
+
* Determine whether upgrading from currentVersion to latestVersion is a breaking (major) change.
|
|
30
|
+
*
|
|
31
|
+
* @param currentVersion - The currently installed version (semver string)
|
|
32
|
+
* @param latestVersion - The available latest version (semver string)
|
|
33
|
+
* @returns true if the major version increases; false if either version is invalid
|
|
34
|
+
*/
|
|
35
|
+
isBreaking(currentVersion: string, latestVersion: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Return a changelog URL for the given version.
|
|
38
|
+
*
|
|
39
|
+
* @param latestVersion - The version to link to
|
|
40
|
+
* @returns A URL string pointing to the GitHub release page
|
|
41
|
+
*/
|
|
42
|
+
getChangelog(latestVersion: string): string;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=update-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../src/version-manager/update-checker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,SAAkB,IAAI,sBAAqB;gBAE/B,OAAO,EAAE,MAAM;CAK5B;AAMD;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;gBAEtB,SAAS,SAAO;IAI5B;;;;;;OAMG;IACH,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqGxD;;;;;;OAMG;IACH,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO;IAWlE;;;;;OAKG;IACH,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;CAG5C"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UpdateChecker — queries the npm registry for the latest package version.
|
|
3
|
+
*
|
|
4
|
+
* Uses Node.js built-in `https` module (no extra HTTP dependency).
|
|
5
|
+
* Uses `semver` for major-version comparison (AC7, AC8).
|
|
6
|
+
*/
|
|
7
|
+
import https from 'node:https';
|
|
8
|
+
import * as semver from 'semver';
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// Error class
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
/**
|
|
13
|
+
* Thrown when an update check fails due to network error, timeout, or bad response.
|
|
14
|
+
*/
|
|
15
|
+
export class UpdateCheckError extends Error {
|
|
16
|
+
name = 'UpdateCheckError';
|
|
17
|
+
constructor(message) {
|
|
18
|
+
super(message);
|
|
19
|
+
// Restore prototype chain
|
|
20
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// UpdateChecker class
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
/**
|
|
27
|
+
* Queries the npm registry to determine the latest published version of a package.
|
|
28
|
+
*/
|
|
29
|
+
export class UpdateChecker {
|
|
30
|
+
timeoutMs;
|
|
31
|
+
constructor(timeoutMs = 5000) {
|
|
32
|
+
this.timeoutMs = timeoutMs;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Fetch the latest published version of a package from the npm registry.
|
|
36
|
+
*
|
|
37
|
+
* @param packageName - npm package name (e.g. 'substrate')
|
|
38
|
+
* @returns The latest version string (semver)
|
|
39
|
+
* @throws {UpdateCheckError} on timeout, network error, non-200 HTTP status, or parse failure
|
|
40
|
+
*/
|
|
41
|
+
fetchLatestVersion(packageName) {
|
|
42
|
+
return new Promise((resolve, reject) => {
|
|
43
|
+
const url = `https://registry.npmjs.org/${packageName}/latest`;
|
|
44
|
+
let settled = false;
|
|
45
|
+
const safeReject = (err) => {
|
|
46
|
+
if (!settled) {
|
|
47
|
+
settled = true;
|
|
48
|
+
clearTimeout(timer);
|
|
49
|
+
reject(err);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const safeResolve = (value) => {
|
|
53
|
+
if (!settled) {
|
|
54
|
+
settled = true;
|
|
55
|
+
clearTimeout(timer);
|
|
56
|
+
resolve(value);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
// Use setTimeout + req.destroy() to implement the timeout, since the
|
|
60
|
+
// https.get legacy callback API does not accept an AbortSignal directly.
|
|
61
|
+
// eslint-disable-next-line prefer-const
|
|
62
|
+
let req;
|
|
63
|
+
const timer = setTimeout(() => {
|
|
64
|
+
req.destroy();
|
|
65
|
+
safeReject(new UpdateCheckError(`Update check timed out after ${this.timeoutMs}ms`));
|
|
66
|
+
}, this.timeoutMs);
|
|
67
|
+
const followRedirect = (location, hopsLeft) => {
|
|
68
|
+
const redirectReq = https.get(location, (redirectRes) => {
|
|
69
|
+
// Handle up to 2 redirect hops
|
|
70
|
+
if (redirectRes.statusCode !== undefined &&
|
|
71
|
+
redirectRes.statusCode >= 300 &&
|
|
72
|
+
redirectRes.statusCode < 400 &&
|
|
73
|
+
redirectRes.headers.location &&
|
|
74
|
+
hopsLeft > 0) {
|
|
75
|
+
redirectRes.resume();
|
|
76
|
+
followRedirect(redirectRes.headers.location, hopsLeft - 1);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (redirectRes.statusCode !== 200) {
|
|
80
|
+
redirectRes.resume();
|
|
81
|
+
safeReject(new UpdateCheckError(`npm registry returned HTTP ${String(redirectRes.statusCode)} for ${packageName}`));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
collectBody(redirectRes, safeResolve, safeReject);
|
|
85
|
+
});
|
|
86
|
+
redirectReq.on('error', (err) => {
|
|
87
|
+
safeReject(new UpdateCheckError(`Update check network error: ${err.message}`));
|
|
88
|
+
});
|
|
89
|
+
// Apply the same timeout to redirect requests
|
|
90
|
+
redirectReq.setTimeout(this.timeoutMs, () => {
|
|
91
|
+
redirectReq.destroy();
|
|
92
|
+
safeReject(new UpdateCheckError(`Update check timed out after ${this.timeoutMs}ms`));
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
req = https.get(url, (res) => {
|
|
96
|
+
// Handle redirects
|
|
97
|
+
if (res.statusCode !== undefined &&
|
|
98
|
+
res.statusCode >= 300 &&
|
|
99
|
+
res.statusCode < 400 &&
|
|
100
|
+
res.headers.location) {
|
|
101
|
+
res.resume();
|
|
102
|
+
// Follow up to 2 redirect hops
|
|
103
|
+
followRedirect(res.headers.location, 1);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (res.statusCode !== 200) {
|
|
107
|
+
res.resume();
|
|
108
|
+
safeReject(new UpdateCheckError(`npm registry returned HTTP ${String(res.statusCode)} for ${packageName}`));
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
collectBody(res, safeResolve, safeReject);
|
|
112
|
+
});
|
|
113
|
+
req.on('error', (err) => {
|
|
114
|
+
// When req.destroy() is called on timeout, this fires with the destroy error.
|
|
115
|
+
// safeReject handles the settled check to avoid double-rejection.
|
|
116
|
+
safeReject(new UpdateCheckError(`Update check network error: ${err.message}`));
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Determine whether upgrading from currentVersion to latestVersion is a breaking (major) change.
|
|
122
|
+
*
|
|
123
|
+
* @param currentVersion - The currently installed version (semver string)
|
|
124
|
+
* @param latestVersion - The available latest version (semver string)
|
|
125
|
+
* @returns true if the major version increases; false if either version is invalid
|
|
126
|
+
*/
|
|
127
|
+
isBreaking(currentVersion, latestVersion) {
|
|
128
|
+
if (!semver.valid(currentVersion) || !semver.valid(latestVersion)) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
const currentMajor = semver.major(currentVersion);
|
|
132
|
+
const latestMajor = semver.major(latestVersion);
|
|
133
|
+
return latestMajor > currentMajor;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Return a changelog URL for the given version.
|
|
137
|
+
*
|
|
138
|
+
* @param latestVersion - The version to link to
|
|
139
|
+
* @returns A URL string pointing to the GitHub release page
|
|
140
|
+
*/
|
|
141
|
+
getChangelog(latestVersion) {
|
|
142
|
+
return `See https://github.com/johnplanow/substrate/releases/tag/v${latestVersion}`;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
// Helpers
|
|
147
|
+
// ---------------------------------------------------------------------------
|
|
148
|
+
function collectBody(res, resolve, reject) {
|
|
149
|
+
const chunks = [];
|
|
150
|
+
res.on('data', (chunk) => {
|
|
151
|
+
chunks.push(chunk);
|
|
152
|
+
});
|
|
153
|
+
res.on('end', () => {
|
|
154
|
+
try {
|
|
155
|
+
const body = Buffer.concat(chunks).toString('utf-8');
|
|
156
|
+
const data = JSON.parse(body);
|
|
157
|
+
if (typeof data.version !== 'string' || data.version.length === 0) {
|
|
158
|
+
reject(new UpdateCheckError('npm registry response missing version field'));
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
resolve(data.version);
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
reject(new UpdateCheckError('Failed to parse npm registry response'));
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
res.on('error', (err) => {
|
|
168
|
+
reject(new UpdateCheckError(`Response stream error: ${err.message}`));
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=update-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/version-manager/update-checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VersionCache — reads and writes the update-check result cache file.
|
|
3
|
+
*
|
|
4
|
+
* Cache is stored at ~/.substrate/update-cache.json (global, across all projects).
|
|
5
|
+
* TTL defaults to 24 hours. (AC4)
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Serialized cache entry stored in update-cache.json.
|
|
9
|
+
*/
|
|
10
|
+
export interface VersionCacheEntry {
|
|
11
|
+
/** ISO 8601 timestamp of the last successful check */
|
|
12
|
+
lastChecked: string;
|
|
13
|
+
/** Latest version returned by the npm registry */
|
|
14
|
+
latestVersion: string;
|
|
15
|
+
/** The installed version at the time of the check */
|
|
16
|
+
currentVersion: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Manages reading and writing the version check result cache.
|
|
20
|
+
*
|
|
21
|
+
* Write errors are silently swallowed so that a read-only home directory
|
|
22
|
+
* never breaks CLI execution.
|
|
23
|
+
*/
|
|
24
|
+
export declare class VersionCache {
|
|
25
|
+
private readonly cachePath;
|
|
26
|
+
private readonly ttlMs;
|
|
27
|
+
constructor(cachePath?: string, ttlMs?: number);
|
|
28
|
+
/**
|
|
29
|
+
* Read the cache file. Returns null if the file is missing, unreadable, or expired.
|
|
30
|
+
*/
|
|
31
|
+
read(): VersionCacheEntry | null;
|
|
32
|
+
/**
|
|
33
|
+
* Write a cache entry to disk. Creates the parent directory if needed.
|
|
34
|
+
* Silently swallows any write errors.
|
|
35
|
+
*/
|
|
36
|
+
write(entry: VersionCacheEntry): void;
|
|
37
|
+
/**
|
|
38
|
+
* Check whether a cache entry has expired according to the configured TTL.
|
|
39
|
+
*/
|
|
40
|
+
isExpired(entry: VersionCacheEntry): boolean;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=version-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-cache.d.ts","sourceRoot":"","sources":["../../src/version-manager/version-cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAA;IACnB,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAA;IACrB,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAA;CACvB;AAMD;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAG5B,SAAS,GAAE,MAAmE,EAC9E,KAAK,GAAE,MAA4B;IAMrC;;OAEG;IACH,IAAI,IAAI,iBAAiB,GAAG,IAAI;IAuBhC;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IASrC;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO;CAI7C"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VersionCache — reads and writes the update-check result cache file.
|
|
3
|
+
*
|
|
4
|
+
* Cache is stored at ~/.substrate/update-cache.json (global, across all projects).
|
|
5
|
+
* TTL defaults to 24 hours. (AC4)
|
|
6
|
+
*/
|
|
7
|
+
import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
8
|
+
import { dirname } from 'node:path';
|
|
9
|
+
import os from 'node:os';
|
|
10
|
+
import path from 'node:path';
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// VersionCache class
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
/**
|
|
15
|
+
* Manages reading and writing the version check result cache.
|
|
16
|
+
*
|
|
17
|
+
* Write errors are silently swallowed so that a read-only home directory
|
|
18
|
+
* never breaks CLI execution.
|
|
19
|
+
*/
|
|
20
|
+
export class VersionCache {
|
|
21
|
+
cachePath;
|
|
22
|
+
ttlMs;
|
|
23
|
+
constructor(cachePath = path.join(os.homedir(), '.substrate', 'update-cache.json'), ttlMs = 24 * 60 * 60 * 1000) {
|
|
24
|
+
this.cachePath = cachePath;
|
|
25
|
+
this.ttlMs = ttlMs;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Read the cache file. Returns null if the file is missing, unreadable, or expired.
|
|
29
|
+
*/
|
|
30
|
+
read() {
|
|
31
|
+
try {
|
|
32
|
+
const raw = readFileSync(this.cachePath, 'utf-8');
|
|
33
|
+
const entry = JSON.parse(raw);
|
|
34
|
+
if (typeof entry.lastChecked !== 'string' ||
|
|
35
|
+
typeof entry.latestVersion !== 'string' ||
|
|
36
|
+
typeof entry.currentVersion !== 'string') {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
if (this.isExpired(entry)) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
return entry;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Write a cache entry to disk. Creates the parent directory if needed.
|
|
50
|
+
* Silently swallows any write errors.
|
|
51
|
+
*/
|
|
52
|
+
write(entry) {
|
|
53
|
+
try {
|
|
54
|
+
mkdirSync(dirname(this.cachePath), { recursive: true });
|
|
55
|
+
writeFileSync(this.cachePath, JSON.stringify(entry, null, 2), 'utf-8');
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Silently swallow write errors — a missing cache is handled gracefully
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Check whether a cache entry has expired according to the configured TTL.
|
|
63
|
+
*/
|
|
64
|
+
isExpired(entry) {
|
|
65
|
+
const age = Date.now() - new Date(entry.lastChecked).getTime();
|
|
66
|
+
return age > this.ttlMs;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=version-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-cache.js","sourceRoot":"","sources":["../../src/version-manager/version-cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAkB5B,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,OAAO,YAAY;IACN,SAAS,CAAQ;IACjB,KAAK,CAAQ;IAE9B,YACE,YAAoB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAC9E,QAAgB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QAEnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAsB,CAAA;YAElD,IACE,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;gBACrC,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ;gBACvC,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,EACxC,CAAC;gBACD,OAAO,IAAI,CAAA;YACb,CAAC;YAED,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAA;YACb,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAwB;QAC5B,IAAI,CAAC;YACH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACvD,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;QAC1E,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAwB;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAA;QAC9D,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VersionManagerImpl — concrete implementation of the VersionManager interface.
|
|
3
|
+
*
|
|
4
|
+
* Handles update checks with caching, upgrade previews, and config migration delegation.
|
|
5
|
+
* (AC6, FR62, FR64)
|
|
6
|
+
*/
|
|
7
|
+
import type { VersionManager, VersionCheckResult, UpgradePreview } from './version-manager.js';
|
|
8
|
+
import { UpdateChecker } from './update-checker.js';
|
|
9
|
+
import { VersionCache } from './version-cache.js';
|
|
10
|
+
import type { MigrationResult } from '../config/index.js';
|
|
11
|
+
export interface VersionManagerDeps {
|
|
12
|
+
cache?: VersionCache;
|
|
13
|
+
updateChecker?: UpdateChecker;
|
|
14
|
+
/**
|
|
15
|
+
* Whether the update_check config setting is enabled.
|
|
16
|
+
* Pass `false` when `global.update_check` is explicitly set to `false` in config.
|
|
17
|
+
* Defaults to `true` (checks enabled).
|
|
18
|
+
*/
|
|
19
|
+
updateCheckEnabled?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Concrete implementation of VersionManager.
|
|
23
|
+
*
|
|
24
|
+
* @param deps - Optional overrides for cache and updateChecker (for testing)
|
|
25
|
+
*/
|
|
26
|
+
export declare class VersionManagerImpl implements VersionManager {
|
|
27
|
+
private readonly cache;
|
|
28
|
+
private readonly updateChecker;
|
|
29
|
+
private readonly updateCheckEnabled;
|
|
30
|
+
constructor(deps?: VersionManagerDeps);
|
|
31
|
+
/**
|
|
32
|
+
* Read the current package version from the bundled package.json.
|
|
33
|
+
* Tries multiple relative paths because the bundler may place this chunk
|
|
34
|
+
* at different depths (e.g. dist/version-manager-impl-xxx.js vs
|
|
35
|
+
* src/modules/version-manager/version-manager-impl.ts).
|
|
36
|
+
* Falls back to '0.0.0' if the file is unreadable.
|
|
37
|
+
*/
|
|
38
|
+
getCurrentVersion(): string;
|
|
39
|
+
/**
|
|
40
|
+
* Check whether a newer version is available on npm.
|
|
41
|
+
*
|
|
42
|
+
* Respects:
|
|
43
|
+
* 1. update_check config setting (AC5)
|
|
44
|
+
* 2. SUBSTRATE_NO_UPDATE_CHECK env var
|
|
45
|
+
* 3. Cache TTL (24h by default), unless forceRefresh is true
|
|
46
|
+
*
|
|
47
|
+
* Returns updateAvailable: false without a network call when checks are disabled
|
|
48
|
+
* or the cache is fresh (and forceRefresh is not set).
|
|
49
|
+
*
|
|
50
|
+
* @param forceRefresh - When true, skips the cache and always makes a fresh network request.
|
|
51
|
+
*/
|
|
52
|
+
checkForUpdates(forceRefresh?: boolean): Promise<VersionCheckResult>;
|
|
53
|
+
/**
|
|
54
|
+
* Return an upgrade preview for the given target version.
|
|
55
|
+
*/
|
|
56
|
+
getUpgradePreview(targetVersion: string): UpgradePreview;
|
|
57
|
+
/**
|
|
58
|
+
* Migrate the project configuration from one format version to another.
|
|
59
|
+
* Delegates to the shared defaultConfigMigrator singleton.
|
|
60
|
+
* Loads the actual config from the project config file so migration functions receive real data.
|
|
61
|
+
*/
|
|
62
|
+
migrateConfiguration(fromVersion: string, toVersion: string): MigrationResult;
|
|
63
|
+
/**
|
|
64
|
+
* Migrate a task graph file from one format version to another.
|
|
65
|
+
* Delegates to the shared defaultConfigMigrator singleton.
|
|
66
|
+
*/
|
|
67
|
+
migrateTaskGraphFormat(fromVersion: string, toVersion: string, filePath: string): MigrationResult;
|
|
68
|
+
/**
|
|
69
|
+
* Check whether the given config format version is supported by this toolkit.
|
|
70
|
+
*/
|
|
71
|
+
isConfigCompatible(configVersion: string): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Check whether the given task graph format version is supported by this toolkit.
|
|
74
|
+
*/
|
|
75
|
+
isTaskGraphCompatible(graphVersion: string): boolean;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Create a new VersionManager instance with optional dependency overrides.
|
|
79
|
+
*/
|
|
80
|
+
export declare function createVersionManager(deps?: VersionManagerDeps): VersionManager;
|
|
81
|
+
//# sourceMappingURL=version-manager-impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-manager-impl.d.ts","sourceRoot":"","sources":["../../src/version-manager/version-manager-impl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC9F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAWzD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAMD;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;gBAEhC,IAAI,GAAE,kBAAuB;IAMzC;;;;;;OAMG;IACH,iBAAiB,IAAI,MAAM;IA0B3B;;;;;;;;;;;;OAYG;IACG,eAAe,CAAC,YAAY,UAAQ,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwExE;;OAEG;IACH,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc;IAkBxD;;;;OAIG;IACH,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe;IAsB7E;;;OAGG;IACH,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe;IAKjG;;OAEG;IACH,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAIlD;;OAEG;IACH,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;CAGrD;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,kBAAuB,GAAG,cAAc,CAElF"}
|