@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,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DoltDatabaseAdapter — wraps a DoltClientLike and exposes it through the
|
|
3
|
+
* unified async DatabaseAdapter interface.
|
|
4
|
+
*
|
|
5
|
+
* Uses a duck-typed DoltClientLike interface to avoid cross-package imports.
|
|
6
|
+
* All SQL operations are delegated to the client, which connects via mysql2
|
|
7
|
+
* unix socket (primary) or dolt CLI (fallback).
|
|
8
|
+
* Transactions delegate atomicity enforcement to DoltClientLike.transact().
|
|
9
|
+
*/
|
|
10
|
+
export class DoltDatabaseAdapter {
|
|
11
|
+
backendType = 'dolt';
|
|
12
|
+
_client;
|
|
13
|
+
/**
|
|
14
|
+
* Create a DoltDatabaseAdapter wrapping the supplied DoltClientLike.
|
|
15
|
+
* The caller should construct the client with the correct `repoPath`
|
|
16
|
+
* before passing it here; `connect()` is called lazily by DoltClient.
|
|
17
|
+
*/
|
|
18
|
+
constructor(client) {
|
|
19
|
+
this._client = client;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Execute a SQL query and return all result rows as typed objects.
|
|
23
|
+
*
|
|
24
|
+
* Delegates to `DoltClientLike.query<T>()` which supports both mysql2
|
|
25
|
+
* pool mode and CLI fallback.
|
|
26
|
+
*/
|
|
27
|
+
async query(sql, params) {
|
|
28
|
+
return this._client.query(sql, params);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Execute a SQL statement with no return value (DDL or DML).
|
|
32
|
+
*
|
|
33
|
+
* Delegates to `DoltClientLike.query()` and discards the result rows.
|
|
34
|
+
*/
|
|
35
|
+
async exec(sql) {
|
|
36
|
+
await this._client.query(sql, undefined);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Execute a function within an explicit SQL transaction.
|
|
40
|
+
*
|
|
41
|
+
* Delegates atomicity enforcement to `DoltClientLike.transact()`:
|
|
42
|
+
* - Pool mode: acquires a dedicated connection, issues BEGIN/COMMIT on that
|
|
43
|
+
* connection, preventing query scatter across the pool.
|
|
44
|
+
* - CLI mode: collects all SQL statements and executes them as a single
|
|
45
|
+
* `dolt sql -q "BEGIN; ...; COMMIT"` invocation.
|
|
46
|
+
*
|
|
47
|
+
* The `fn` callback receives a transaction-scoped `DatabaseAdapter` whose
|
|
48
|
+
* `query()` and `exec()` are bound to the connection-bound query lambda.
|
|
49
|
+
* Nested `transaction()` calls on the scoped adapter are pass-through
|
|
50
|
+
* (no nested BEGIN).
|
|
51
|
+
*/
|
|
52
|
+
async transaction(fn) {
|
|
53
|
+
return this._client.transact(async (txQuery) => {
|
|
54
|
+
// Build a transaction-scoped adapter that routes queries through the
|
|
55
|
+
// connection-bound txQuery lambda provided by transact().
|
|
56
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
57
|
+
const self = this;
|
|
58
|
+
const txAdapter = {
|
|
59
|
+
backendType: this.backendType,
|
|
60
|
+
query: txQuery,
|
|
61
|
+
exec: async (sql) => {
|
|
62
|
+
await txQuery(sql, undefined);
|
|
63
|
+
},
|
|
64
|
+
// Nested transaction() calls are pass-through — no nested BEGIN.
|
|
65
|
+
transaction: async (innerFn) => innerFn(txAdapter),
|
|
66
|
+
close: async () => { },
|
|
67
|
+
queryReadyStories: () => self.queryReadyStories(),
|
|
68
|
+
};
|
|
69
|
+
return fn(txAdapter);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Close the underlying DoltClient connection pool.
|
|
74
|
+
*/
|
|
75
|
+
async close() {
|
|
76
|
+
await this._client.close();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Query story keys from the `ready_stories` SQL view.
|
|
80
|
+
*
|
|
81
|
+
* Returns story keys whose status is `planned` or `ready` and whose
|
|
82
|
+
* hard dependencies are all `complete` in the work graph.
|
|
83
|
+
*
|
|
84
|
+
* On any SQL error (e.g., view not yet created by story 31-1 schema,
|
|
85
|
+
* or empty stories table), returns `[]` so the caller falls through to
|
|
86
|
+
* the legacy discovery chain.
|
|
87
|
+
*/
|
|
88
|
+
async queryReadyStories() {
|
|
89
|
+
try {
|
|
90
|
+
const rows = await this._client.query('SELECT `key` FROM ready_stories ORDER BY `key` ASC', undefined);
|
|
91
|
+
return rows.map((r) => r.key);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return [];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=dolt-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dolt-adapter.js","sourceRoot":"","sources":["../../src/persistence/dolt-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAoBH,MAAM,OAAO,mBAAmB;IACrB,WAAW,GAAG,MAAe,CAAA;IACrB,OAAO,CAAgB;IAExC;;;;OAIG;IACH,YAAY,MAAsB;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAc,GAAW,EAAE,MAAkB;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAI,GAAG,EAAE,MAAM,CAAC,CAAA;IAC3C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,GAAW;QACpB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IAC1C,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,WAAW,CAAI,EAA4C;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC7C,qEAAqE;YACrE,0DAA0D;YAC1D,4DAA4D;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAA;YACjB,MAAM,SAAS,GAAoB;gBACjC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,KAAK,EAAE,GAAW,EAAiB,EAAE;oBACzC,MAAM,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;gBAC/B,CAAC;gBACD,iEAAiE;gBACjE,WAAW,EAAE,KAAK,EAAK,OAAiD,EAAc,EAAE,CACtF,OAAO,CAAC,SAAS,CAAC;gBACpB,KAAK,EAAE,KAAK,IAAmB,EAAE,GAAE,CAAC;gBACpC,iBAAiB,EAAE,GAAsB,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE;aACrE,CAAA;YACD,OAAO,EAAE,CAAC,SAAS,CAAC,CAAA;QACtB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IAC5B,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CACnC,oDAAoD,EACpD,SAAS,CACV,CAAA;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { ILogger } from '../dispatch/types.js';
|
|
2
|
+
export interface DoltClientOptions {
|
|
3
|
+
repoPath: string;
|
|
4
|
+
socketPath?: string;
|
|
5
|
+
logger?: ILogger;
|
|
6
|
+
}
|
|
7
|
+
export declare class DoltClient {
|
|
8
|
+
readonly repoPath: string;
|
|
9
|
+
readonly socketPath: string;
|
|
10
|
+
private _pool;
|
|
11
|
+
private _useCliMode;
|
|
12
|
+
private _connected;
|
|
13
|
+
private readonly _log;
|
|
14
|
+
/** Promise-chain mutex that serializes all CLI operations to prevent concurrent noms manifest access */
|
|
15
|
+
private _cliMutex;
|
|
16
|
+
constructor(options: DoltClientOptions);
|
|
17
|
+
connect(): Promise<void>;
|
|
18
|
+
query<T>(sql: string, params?: unknown[], branch?: string): Promise<T[]>;
|
|
19
|
+
/**
|
|
20
|
+
* Execute a function within an explicit SQL transaction, enforcing
|
|
21
|
+
* atomicity in both pool mode and CLI mode.
|
|
22
|
+
*
|
|
23
|
+
* Pool mode: acquires a dedicated connection from the pool, executes
|
|
24
|
+
* BEGIN/COMMIT on that connection, and passes a connection-bound query
|
|
25
|
+
* lambda to `fn`. Connection is released in a `finally` block.
|
|
26
|
+
*
|
|
27
|
+
* CLI mode: collects all SQL statements issued within `fn()` via a
|
|
28
|
+
* statement-collecting query lambda (returns [] immediately), then
|
|
29
|
+
* executes the combined batch as a single `dolt sql -q "BEGIN; ...; COMMIT"`
|
|
30
|
+
* invocation via `_withCliLock()`. This ensures atomicity for pure-write
|
|
31
|
+
* transactions. NOTE: read-then-write patterns within `fn()` are not
|
|
32
|
+
* supported in CLI mode — SELECT queries always return [] in the collector.
|
|
33
|
+
* See Dev Notes in story 53-14 for documented call-site exceptions.
|
|
34
|
+
*/
|
|
35
|
+
transact<T>(fn: (query: <R>(sql: string, params?: unknown[]) => Promise<R[]>) => Promise<T>): Promise<T>;
|
|
36
|
+
private _queryPool;
|
|
37
|
+
/**
|
|
38
|
+
* Acquire an exclusive CLI lock. Dolt CLI takes an exclusive lock on the noms
|
|
39
|
+
* manifest, so concurrent `dolt sql -q` / `dolt <subcommand>` processes
|
|
40
|
+
* produce "cannot update manifest: database is read only" errors.
|
|
41
|
+
* Serialize all CLI operations through a single promise chain.
|
|
42
|
+
*/
|
|
43
|
+
private _withCliLock;
|
|
44
|
+
/**
|
|
45
|
+
* Substitute `?` placeholders in a SQL string with properly escaped literal
|
|
46
|
+
* values from the `params` array. Used by both `_queryCli` and the CLI
|
|
47
|
+
* `transact` path to produce a fully-resolved SQL string for shell execution.
|
|
48
|
+
*/
|
|
49
|
+
private _resolveParams;
|
|
50
|
+
private _queryCli;
|
|
51
|
+
/**
|
|
52
|
+
* Execute a raw Dolt CLI command (e.g. `dolt diff main...story/26-1 --stat`)
|
|
53
|
+
* and return the stdout as a string.
|
|
54
|
+
*
|
|
55
|
+
* This is distinct from `query()` which runs SQL. Use `exec()` for Dolt
|
|
56
|
+
* sub-commands like `diff`, `log`, `branch`, etc.
|
|
57
|
+
*/
|
|
58
|
+
exec(command: string): Promise<string>;
|
|
59
|
+
/**
|
|
60
|
+
* Execute a Dolt CLI command with pre-split arguments.
|
|
61
|
+
*
|
|
62
|
+
* Use this instead of `exec()` when arguments contain spaces (e.g. commit
|
|
63
|
+
* messages) to avoid whitespace-splitting issues.
|
|
64
|
+
*/
|
|
65
|
+
execArgs(args: string[]): Promise<string>;
|
|
66
|
+
close(): Promise<void>;
|
|
67
|
+
}
|
|
68
|
+
export declare function createDoltClient(options: DoltClientOptions): DoltClient;
|
|
69
|
+
//# sourceMappingURL=dolt-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dolt-client.d.ts","sourceRoot":"","sources":["../../src/persistence/dolt-client.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AA2BnD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,qBAAa,UAAU;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,wGAAwG;IACxG,OAAO,CAAC,SAAS,CAAmC;gBAExC,OAAO,EAAE,iBAAiB;IAMhC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBxB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAU9E;;;;;;;;;;;;;;;OAeG;IACG,QAAQ,CAAC,CAAC,EACd,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAC9E,OAAO,CAAC,CAAC,CAAC;YA0DC,UAAU;IAwBxB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAOpB;;;;OAIG;IACH,OAAO,CAAC,cAAc;YAWR,SAAS;IAyBvB;;;;;;OAMG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO5C;;;;;OAKG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAYzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAEvE"}
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DoltClient — low-level SQL client for Dolt repositories.
|
|
3
|
+
* Connects via mysql2 unix socket (primary) or falls back to dolt CLI.
|
|
4
|
+
* Extracted to @substrate-ai/core so downstream packages can import it.
|
|
5
|
+
*/
|
|
6
|
+
import { execFile as execFileCb } from 'node:child_process';
|
|
7
|
+
import { access } from 'node:fs/promises';
|
|
8
|
+
import { DoltQueryError } from './dolt-errors.js';
|
|
9
|
+
/**
|
|
10
|
+
* Promise-wrapper around execFile that always resolves to { stdout, stderr }.
|
|
11
|
+
* Using an explicit wrapper rather than promisify() avoids the util.promisify.custom
|
|
12
|
+
* symbol complexity when mocking in tests.
|
|
13
|
+
*/
|
|
14
|
+
function runExecFile(cmd, args, opts) {
|
|
15
|
+
return new Promise((resolve, reject) => {
|
|
16
|
+
execFileCb(cmd, args, { ...opts, maxBuffer: 10 * 1024 * 1024 }, (err, stdout, stderr) => {
|
|
17
|
+
if (err) {
|
|
18
|
+
reject(err);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
resolve({ stdout, stderr });
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const noopLogger = {
|
|
27
|
+
debug: () => { },
|
|
28
|
+
info: () => { },
|
|
29
|
+
warn: () => { },
|
|
30
|
+
error: () => { },
|
|
31
|
+
};
|
|
32
|
+
export class DoltClient {
|
|
33
|
+
repoPath;
|
|
34
|
+
socketPath;
|
|
35
|
+
_pool = null;
|
|
36
|
+
_useCliMode = false;
|
|
37
|
+
_connected = false;
|
|
38
|
+
_log;
|
|
39
|
+
/** Promise-chain mutex that serializes all CLI operations to prevent concurrent noms manifest access */
|
|
40
|
+
_cliMutex = Promise.resolve();
|
|
41
|
+
constructor(options) {
|
|
42
|
+
this.repoPath = options.repoPath;
|
|
43
|
+
this.socketPath = options.socketPath ?? `${options.repoPath}/.dolt/dolt.sock`;
|
|
44
|
+
this._log = options.logger ?? noopLogger;
|
|
45
|
+
}
|
|
46
|
+
async connect() {
|
|
47
|
+
// Probe unix socket
|
|
48
|
+
try {
|
|
49
|
+
await access(this.socketPath);
|
|
50
|
+
// Socket exists — try mysql2
|
|
51
|
+
const mysql = await import('mysql2/promise');
|
|
52
|
+
this._pool = mysql.createPool({
|
|
53
|
+
socketPath: this.socketPath,
|
|
54
|
+
user: 'root',
|
|
55
|
+
database: 'doltdb',
|
|
56
|
+
waitForConnections: true,
|
|
57
|
+
connectionLimit: 5,
|
|
58
|
+
});
|
|
59
|
+
this._useCliMode = false;
|
|
60
|
+
this._log.debug('Connected via unix socket: %s', this.socketPath);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// Socket absent or inaccessible — use CLI fallback
|
|
64
|
+
this._useCliMode = true;
|
|
65
|
+
this._log.debug('Unix socket not available, using CLI fallback for %s', this.repoPath);
|
|
66
|
+
}
|
|
67
|
+
this._connected = true;
|
|
68
|
+
}
|
|
69
|
+
async query(sql, params, branch) {
|
|
70
|
+
if (!this._connected) {
|
|
71
|
+
await this.connect();
|
|
72
|
+
}
|
|
73
|
+
if (this._useCliMode) {
|
|
74
|
+
return this._queryCli(sql, params, branch);
|
|
75
|
+
}
|
|
76
|
+
return this._queryPool(sql, params, branch);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Execute a function within an explicit SQL transaction, enforcing
|
|
80
|
+
* atomicity in both pool mode and CLI mode.
|
|
81
|
+
*
|
|
82
|
+
* Pool mode: acquires a dedicated connection from the pool, executes
|
|
83
|
+
* BEGIN/COMMIT on that connection, and passes a connection-bound query
|
|
84
|
+
* lambda to `fn`. Connection is released in a `finally` block.
|
|
85
|
+
*
|
|
86
|
+
* CLI mode: collects all SQL statements issued within `fn()` via a
|
|
87
|
+
* statement-collecting query lambda (returns [] immediately), then
|
|
88
|
+
* executes the combined batch as a single `dolt sql -q "BEGIN; ...; COMMIT"`
|
|
89
|
+
* invocation via `_withCliLock()`. This ensures atomicity for pure-write
|
|
90
|
+
* transactions. NOTE: read-then-write patterns within `fn()` are not
|
|
91
|
+
* supported in CLI mode — SELECT queries always return [] in the collector.
|
|
92
|
+
* See Dev Notes in story 53-14 for documented call-site exceptions.
|
|
93
|
+
*/
|
|
94
|
+
async transact(fn) {
|
|
95
|
+
if (!this._connected) {
|
|
96
|
+
await this.connect();
|
|
97
|
+
}
|
|
98
|
+
if (!this._useCliMode) {
|
|
99
|
+
// Pool mode: acquire a dedicated connection so all queries in the
|
|
100
|
+
// transaction use the same session/connection (no scatter across pool).
|
|
101
|
+
const conn = await this._pool.getConnection();
|
|
102
|
+
try {
|
|
103
|
+
await conn.execute('BEGIN');
|
|
104
|
+
const txQuery = async (sql, params) => {
|
|
105
|
+
try {
|
|
106
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
107
|
+
const [rows] = await conn.execute(sql, params);
|
|
108
|
+
return rows;
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
throw new DoltQueryError(sql, err instanceof Error ? err.message : String(err));
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
const result = await fn(txQuery);
|
|
115
|
+
await conn.execute('COMMIT');
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
try {
|
|
120
|
+
await conn.execute('ROLLBACK');
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// ignore rollback error
|
|
124
|
+
}
|
|
125
|
+
throw err;
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
conn.release();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
// CLI mode: collect all SQL statements issued within fn(), then
|
|
133
|
+
// execute them as a single batched dolt sql invocation.
|
|
134
|
+
const statements = [];
|
|
135
|
+
const txQuery = async (sql, params) => {
|
|
136
|
+
statements.push(this._resolveParams(sql, params));
|
|
137
|
+
return [];
|
|
138
|
+
};
|
|
139
|
+
const result = await fn(txQuery);
|
|
140
|
+
if (statements.length > 0) {
|
|
141
|
+
const batchSql = `BEGIN; ${statements.join('; ')}; COMMIT`;
|
|
142
|
+
await this._withCliLock(async () => {
|
|
143
|
+
try {
|
|
144
|
+
await runExecFile('dolt', ['sql', '-q', batchSql, '--result-format', 'json'], {
|
|
145
|
+
cwd: this.repoPath,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
throw new DoltQueryError(batchSql, err instanceof Error ? err.message : String(err));
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
return result;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
async _queryPool(sql, params, branch) {
|
|
157
|
+
try {
|
|
158
|
+
if (branch !== undefined && branch !== 'main') {
|
|
159
|
+
// For branch-targeting, acquire a dedicated connection and switch the database context.
|
|
160
|
+
// Dolt server mode supports `database/branch` as a database selector via USE statement.
|
|
161
|
+
const conn = await this._pool.getConnection();
|
|
162
|
+
try {
|
|
163
|
+
await conn.execute(`USE \`substrate/${branch}\``);
|
|
164
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
165
|
+
const [rows] = await conn.execute(sql, params);
|
|
166
|
+
return rows;
|
|
167
|
+
}
|
|
168
|
+
finally {
|
|
169
|
+
conn.release();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
173
|
+
const [rows] = await this._pool.execute(sql, params);
|
|
174
|
+
return rows;
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
178
|
+
throw new DoltQueryError(sql, detail);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Acquire an exclusive CLI lock. Dolt CLI takes an exclusive lock on the noms
|
|
183
|
+
* manifest, so concurrent `dolt sql -q` / `dolt <subcommand>` processes
|
|
184
|
+
* produce "cannot update manifest: database is read only" errors.
|
|
185
|
+
* Serialize all CLI operations through a single promise chain.
|
|
186
|
+
*/
|
|
187
|
+
_withCliLock(fn) {
|
|
188
|
+
const prev = this._cliMutex;
|
|
189
|
+
let release;
|
|
190
|
+
this._cliMutex = new Promise((resolve) => { release = resolve; });
|
|
191
|
+
return prev.then(fn).finally(() => release());
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Substitute `?` placeholders in a SQL string with properly escaped literal
|
|
195
|
+
* values from the `params` array. Used by both `_queryCli` and the CLI
|
|
196
|
+
* `transact` path to produce a fully-resolved SQL string for shell execution.
|
|
197
|
+
*/
|
|
198
|
+
_resolveParams(sql, params) {
|
|
199
|
+
if (!params || params.length === 0)
|
|
200
|
+
return sql;
|
|
201
|
+
let i = 0;
|
|
202
|
+
return sql.replace(/\?/g, () => {
|
|
203
|
+
const val = params[i++];
|
|
204
|
+
if (val === null || val === undefined)
|
|
205
|
+
return 'NULL';
|
|
206
|
+
if (typeof val === 'number')
|
|
207
|
+
return String(val);
|
|
208
|
+
return `'${String(val).replace(/'/g, "''")}'`;
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
async _queryCli(sql, params, branch) {
|
|
212
|
+
// Substitute params with escaped literals using the shared helper
|
|
213
|
+
const finalSql = this._resolveParams(sql, params);
|
|
214
|
+
return this._withCliLock(async () => {
|
|
215
|
+
try {
|
|
216
|
+
// Dolt CLI has no branch flag for `dolt sql`. Prepend DOLT_CHECKOUT
|
|
217
|
+
// to switch branches when needed. Multi-statement output produces one
|
|
218
|
+
// JSON object per line — parse the last line for the actual result.
|
|
219
|
+
const branchPrefix = branch
|
|
220
|
+
? `CALL DOLT_CHECKOUT('${branch.replace(/'/g, "''")}'); `
|
|
221
|
+
: '';
|
|
222
|
+
const args = ['sql', '-q', branchPrefix + finalSql, '--result-format', 'json'];
|
|
223
|
+
const { stdout } = await runExecFile('dolt', args, { cwd: this.repoPath });
|
|
224
|
+
// When branch prefix is used, stdout has multiple JSON lines; take the last one
|
|
225
|
+
const lines = (stdout || '').trim().split('\n').filter(Boolean);
|
|
226
|
+
const lastLine = lines.length > 0 ? lines[lines.length - 1] : '{"rows":[]}';
|
|
227
|
+
const parsed = JSON.parse(lastLine);
|
|
228
|
+
return (parsed.rows ?? []);
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
232
|
+
throw new DoltQueryError(finalSql, detail);
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Execute a raw Dolt CLI command (e.g. `dolt diff main...story/26-1 --stat`)
|
|
238
|
+
* and return the stdout as a string.
|
|
239
|
+
*
|
|
240
|
+
* This is distinct from `query()` which runs SQL. Use `exec()` for Dolt
|
|
241
|
+
* sub-commands like `diff`, `log`, `branch`, etc.
|
|
242
|
+
*/
|
|
243
|
+
async exec(command) {
|
|
244
|
+
const parts = command.trim().split(/\s+/);
|
|
245
|
+
// If the command starts with 'dolt', strip it; otherwise pass all parts as args
|
|
246
|
+
const cmdArgs = parts[0] === 'dolt' ? parts.slice(1) : parts;
|
|
247
|
+
return this.execArgs(cmdArgs);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Execute a Dolt CLI command with pre-split arguments.
|
|
251
|
+
*
|
|
252
|
+
* Use this instead of `exec()` when arguments contain spaces (e.g. commit
|
|
253
|
+
* messages) to avoid whitespace-splitting issues.
|
|
254
|
+
*/
|
|
255
|
+
async execArgs(args) {
|
|
256
|
+
return this._withCliLock(async () => {
|
|
257
|
+
try {
|
|
258
|
+
const { stdout } = await runExecFile('dolt', args, { cwd: this.repoPath });
|
|
259
|
+
return stdout;
|
|
260
|
+
}
|
|
261
|
+
catch (err) {
|
|
262
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
263
|
+
throw new DoltQueryError(args.join(' '), detail);
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
async close() {
|
|
268
|
+
if (this._pool) {
|
|
269
|
+
await this._pool.end();
|
|
270
|
+
this._pool = null;
|
|
271
|
+
}
|
|
272
|
+
this._connected = false;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
export function createDoltClient(options) {
|
|
276
|
+
return new DoltClient(options);
|
|
277
|
+
}
|
|
278
|
+
//# sourceMappingURL=dolt-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dolt-client.js","sourceRoot":"","sources":["../../src/persistence/dolt-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed Dolt error classes for low-level persistence operations.
|
|
3
|
+
* Extracted here so downstream packages can import from @substrate-ai/core.
|
|
4
|
+
*/
|
|
5
|
+
export declare class DoltQueryError extends Error {
|
|
6
|
+
sql: string;
|
|
7
|
+
detail: string;
|
|
8
|
+
constructor(sql: string, detail: string);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=dolt-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dolt-errors.d.ts","sourceRoot":"","sources":["../../src/persistence/dolt-errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,cAAe,SAAQ,KAAK;IACvC,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;gBAEF,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAMxC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed Dolt error classes for low-level persistence operations.
|
|
3
|
+
* Extracted here so downstream packages can import from @substrate-ai/core.
|
|
4
|
+
*/
|
|
5
|
+
export class DoltQueryError extends Error {
|
|
6
|
+
sql;
|
|
7
|
+
detail;
|
|
8
|
+
constructor(sql, detail) {
|
|
9
|
+
super(`Dolt query failed: ${detail}`);
|
|
10
|
+
this.name = 'DoltQueryError';
|
|
11
|
+
this.sql = sql;
|
|
12
|
+
this.detail = detail;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=dolt-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dolt-errors.js","sourceRoot":"","sources":["../../src/persistence/dolt-errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,GAAG,CAAQ;IACX,MAAM,CAAQ;IAEd,YAAY,GAAW,EAAE,MAAc;QACrC,KAAK,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAA;QACrC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAA;QAC5B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dolt initialization logic for the Substrate state layer.
|
|
3
|
+
*
|
|
4
|
+
* Provides `initializeDolt()` which creates and seeds a Dolt repository
|
|
5
|
+
* using only the Dolt CLI — no mysql2 dependency is required at this stage.
|
|
6
|
+
* Extracted to @substrate-ai/core so downstream packages can import it.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Configuration for `initializeDolt()`.
|
|
10
|
+
*/
|
|
11
|
+
export interface DoltInitConfig {
|
|
12
|
+
/** Absolute path to the project root. */
|
|
13
|
+
projectRoot: string;
|
|
14
|
+
/**
|
|
15
|
+
* Path where the Dolt repository will be created.
|
|
16
|
+
* Defaults to `<projectRoot>/.substrate/state/`.
|
|
17
|
+
*/
|
|
18
|
+
statePath?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Path to the `schema.sql` DDL file. REQUIRED — caller must provide an
|
|
21
|
+
* absolute path (e.g. via fileURLToPath(new URL('./schema.sql', import.meta.url))).
|
|
22
|
+
*/
|
|
23
|
+
schemaPath: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Thrown when the `dolt` binary cannot be found in PATH.
|
|
27
|
+
*/
|
|
28
|
+
export declare class DoltNotInstalled extends Error {
|
|
29
|
+
constructor();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Thrown when a Dolt CLI command exits with a non-zero status code.
|
|
33
|
+
*/
|
|
34
|
+
export declare class DoltInitError extends Error {
|
|
35
|
+
constructor(args: string[], exitCode: number, stderr: string);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Verify that the `dolt` binary is installed and accessible.
|
|
39
|
+
*
|
|
40
|
+
* @throws {DoltNotInstalled} If the binary is not found in PATH.
|
|
41
|
+
*/
|
|
42
|
+
export declare function checkDoltInstalled(): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Run a Dolt CLI command in the given working directory.
|
|
45
|
+
*
|
|
46
|
+
* @param args - Arguments to pass to `dolt` (e.g. `['init']`).
|
|
47
|
+
* @param cwd - Working directory for the command.
|
|
48
|
+
* @throws {DoltInitError} If the command exits with a non-zero code.
|
|
49
|
+
*/
|
|
50
|
+
export declare function runDoltCommand(args: string[], cwd: string): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Initialize a Dolt repository for Substrate state storage.
|
|
53
|
+
*
|
|
54
|
+
* This function is idempotent: running it a second time on an already-
|
|
55
|
+
* initialized repository is safe — `dolt init` is skipped, existing tables
|
|
56
|
+
* are not re-created (IF NOT EXISTS guards), and the schema version row is
|
|
57
|
+
* not duplicated (INSERT IGNORE).
|
|
58
|
+
*
|
|
59
|
+
* @param config - Initialization configuration. `schemaPath` is required.
|
|
60
|
+
* @throws {DoltNotInstalled} If the `dolt` binary is not in PATH.
|
|
61
|
+
* @throws {DoltInitError} If any Dolt CLI command fails.
|
|
62
|
+
*/
|
|
63
|
+
export declare function initializeDolt(config: DoltInitConfig): Promise<void>;
|
|
64
|
+
//# sourceMappingURL=dolt-init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dolt-init.d.ts","sourceRoot":"","sources":["../../src/persistence/dolt-init.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAA;CACnB;AAMD;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;;CAO1C;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAM7D;AAMD;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgCxD;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB/E;AAwDD;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAoD1E"}
|