@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,311 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EfficiencyScorer — computes composite 0-100 efficiency scores for story runs.
|
|
3
|
+
*
|
|
4
|
+
* The composite score combines four sub-scores (Epic 35 — Telemetry Scoring v2):
|
|
5
|
+
* - cacheHitSubScore (weight 25%): how well the story leverages prompt caching
|
|
6
|
+
* - ioRatioSubScore (weight 25%): logarithmic output/freshInput productivity curve
|
|
7
|
+
* - contextManagement (weight 25%): frequency of context spikes
|
|
8
|
+
* - tokenDensitySubScore (weight 25%): output tokens per turn vs task-type baseline
|
|
9
|
+
*
|
|
10
|
+
* Cold-start turns (first turn per dispatch) are excluded from sub-score
|
|
11
|
+
* computation but included in totalTurns for observability (Story 35-3).
|
|
12
|
+
*
|
|
13
|
+
* Architecture constraints:
|
|
14
|
+
* - Constructor injection: accepts ILogger via constructor (defaults to console)
|
|
15
|
+
* - Zero LLM calls — pure statistical computation
|
|
16
|
+
* - No external dependencies beyond types from this module
|
|
17
|
+
*
|
|
18
|
+
* Migrated to @substrate-ai/core in story 41-6b.
|
|
19
|
+
*/
|
|
20
|
+
import { getBaseline } from './task-baselines.js';
|
|
21
|
+
// Sub-score weights (Epic 35 — equal weighting across 4 dimensions)
|
|
22
|
+
const W_CACHE = 0.25;
|
|
23
|
+
const W_IO_RATIO = 0.25;
|
|
24
|
+
const W_CONTEXT = 0.25;
|
|
25
|
+
const W_TOKEN_DENSITY = 0.25;
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
// EfficiencyScorer
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
export class EfficiencyScorer {
|
|
30
|
+
_logger;
|
|
31
|
+
constructor(logger) {
|
|
32
|
+
this._logger = logger ?? console;
|
|
33
|
+
}
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// Public API
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
/**
|
|
38
|
+
* Compute an efficiency score for a story given its turn analyses.
|
|
39
|
+
*
|
|
40
|
+
* Returns a zeroed `EfficiencyScore` immediately when `turns` is empty.
|
|
41
|
+
*
|
|
42
|
+
* @param storyKey - The story identifier (e.g. "27-6")
|
|
43
|
+
* @param turns - Turn analysis records from `TurnAnalyzer.analyze()`
|
|
44
|
+
*/
|
|
45
|
+
score(storyKey, turns) {
|
|
46
|
+
if (turns.length === 0) {
|
|
47
|
+
return {
|
|
48
|
+
storyKey,
|
|
49
|
+
timestamp: Date.now(),
|
|
50
|
+
compositeScore: 0,
|
|
51
|
+
cacheHitSubScore: 0,
|
|
52
|
+
ioRatioSubScore: 0,
|
|
53
|
+
contextManagementSubScore: 0,
|
|
54
|
+
tokenDensitySubScore: 0,
|
|
55
|
+
avgCacheHitRate: 0,
|
|
56
|
+
avgIoRatio: 0,
|
|
57
|
+
contextSpikeCount: 0,
|
|
58
|
+
totalTurns: 0,
|
|
59
|
+
coldStartTurnsExcluded: 0,
|
|
60
|
+
perModelBreakdown: [],
|
|
61
|
+
perSourceBreakdown: [],
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// Story 35-2: Infer task type from turns (unanimous → use type-specific baseline)
|
|
65
|
+
const taskType = this._inferTaskType(turns);
|
|
66
|
+
const baseline = getBaseline(taskType);
|
|
67
|
+
// Story 35-3: Exclude cold-start turns (first turn per dispatchId) from scoring
|
|
68
|
+
const coldStartIds = this._identifyColdStartTurns(turns);
|
|
69
|
+
let scoringTurns = turns.filter((t) => !coldStartIds.has(t.spanId));
|
|
70
|
+
// Fallback: if excluding cold-starts leaves nothing, use all turns
|
|
71
|
+
if (scoringTurns.length === 0)
|
|
72
|
+
scoringTurns = turns;
|
|
73
|
+
const avgCacheHitRate = this._computeAvgCacheHitRate(scoringTurns);
|
|
74
|
+
const avgIoRatio = this._computeAvgIoRatio(scoringTurns);
|
|
75
|
+
const contextSpikeCount = turns.filter((t) => t.isContextSpike).length;
|
|
76
|
+
const totalTurns = turns.length;
|
|
77
|
+
const cacheHitSubScore = this._computeCacheHitSubScore(scoringTurns);
|
|
78
|
+
const ioRatioSubScore = this._computeIoRatioSubScore(scoringTurns, baseline.targetIoRatio);
|
|
79
|
+
const contextManagementSubScore = this._computeContextManagementSubScore(scoringTurns);
|
|
80
|
+
const tokenDensitySubScore = this._computeTokenDensitySubScore(scoringTurns, baseline.expectedOutputPerTurn);
|
|
81
|
+
const compositeScore = Math.round(cacheHitSubScore * W_CACHE +
|
|
82
|
+
ioRatioSubScore * W_IO_RATIO +
|
|
83
|
+
contextManagementSubScore * W_CONTEXT +
|
|
84
|
+
tokenDensitySubScore * W_TOKEN_DENSITY);
|
|
85
|
+
const perModelBreakdown = this._buildPerModelBreakdown(scoringTurns);
|
|
86
|
+
const perSourceBreakdown = this._buildPerSourceBreakdown(scoringTurns, baseline.targetIoRatio, baseline.expectedOutputPerTurn);
|
|
87
|
+
this._logger.info({ storyKey, compositeScore, contextSpikeCount, coldStartTurnsExcluded: coldStartIds.size }, 'Computed efficiency score');
|
|
88
|
+
return {
|
|
89
|
+
storyKey,
|
|
90
|
+
timestamp: Date.now(),
|
|
91
|
+
compositeScore,
|
|
92
|
+
cacheHitSubScore,
|
|
93
|
+
ioRatioSubScore,
|
|
94
|
+
contextManagementSubScore,
|
|
95
|
+
tokenDensitySubScore,
|
|
96
|
+
avgCacheHitRate,
|
|
97
|
+
avgIoRatio,
|
|
98
|
+
contextSpikeCount,
|
|
99
|
+
totalTurns,
|
|
100
|
+
coldStartTurnsExcluded: coldStartIds.size,
|
|
101
|
+
perModelBreakdown,
|
|
102
|
+
perSourceBreakdown,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
// Private: cold-start identification (Story 35-3)
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
/**
|
|
109
|
+
* Identify cold-start turns: the first turn per dispatchId.
|
|
110
|
+
* Returns a set of spanIds that should be excluded from scoring.
|
|
111
|
+
* Only considers turns with a non-empty dispatchId.
|
|
112
|
+
*/
|
|
113
|
+
_identifyColdStartTurns(turns) {
|
|
114
|
+
const coldStarts = new Set();
|
|
115
|
+
const seenDispatches = new Set();
|
|
116
|
+
// Turns are in chronological order (by turnNumber); first seen per dispatch is cold-start
|
|
117
|
+
for (const turn of turns) {
|
|
118
|
+
if (turn.dispatchId !== undefined && turn.dispatchId !== '' && !seenDispatches.has(turn.dispatchId)) {
|
|
119
|
+
seenDispatches.add(turn.dispatchId);
|
|
120
|
+
coldStarts.add(turn.spanId);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return coldStarts;
|
|
124
|
+
}
|
|
125
|
+
// ---------------------------------------------------------------------------
|
|
126
|
+
// Private: task type inference (Story 35-2)
|
|
127
|
+
// ---------------------------------------------------------------------------
|
|
128
|
+
/**
|
|
129
|
+
* Infer the task type from turns. Returns the task type only when all turns
|
|
130
|
+
* with a taskType agree (unanimous). For mixed task types (story-level
|
|
131
|
+
* scoring across dispatches), returns undefined → default baseline.
|
|
132
|
+
*/
|
|
133
|
+
_inferTaskType(turns) {
|
|
134
|
+
const types = new Set();
|
|
135
|
+
for (const turn of turns) {
|
|
136
|
+
if (turn.taskType !== undefined && turn.taskType !== '') {
|
|
137
|
+
types.add(turn.taskType);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return types.size === 1 ? [...types][0] : undefined;
|
|
141
|
+
}
|
|
142
|
+
// ---------------------------------------------------------------------------
|
|
143
|
+
// Private sub-score methods
|
|
144
|
+
// ---------------------------------------------------------------------------
|
|
145
|
+
/**
|
|
146
|
+
* Average cache hit rate across all turns, clamped to [0, 100].
|
|
147
|
+
* Formula: clamp(avgCacheHitRate × 100, 0, 100)
|
|
148
|
+
*/
|
|
149
|
+
_computeCacheHitSubScore(turns) {
|
|
150
|
+
const avg = this._computeAvgCacheHitRate(turns);
|
|
151
|
+
return this._clamp(avg * 100, 0, 100);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* I/O ratio sub-score: logarithmic output/freshInput productivity curve (Story 35-1).
|
|
155
|
+
*
|
|
156
|
+
* Replaces the old binary threshold (>=1 → 100) with a logarithmic curve
|
|
157
|
+
* that provides gradient across the observed range:
|
|
158
|
+
* - score = clamp(log10(ratio) / log10(targetRatio) * 100, 0, 100)
|
|
159
|
+
* - ratio = avg(outputTokens / max(freshInputTokens, 1)) across turns
|
|
160
|
+
* - targetRatio is calibrated per task type (Story 35-2)
|
|
161
|
+
*
|
|
162
|
+
* Examples (TARGET=100): ratio 1→0, 10→50, 50→85, 100→100, 200→100(clamped)
|
|
163
|
+
*/
|
|
164
|
+
_computeIoRatioSubScore(turns, targetRatio) {
|
|
165
|
+
if (turns.length === 0)
|
|
166
|
+
return 0;
|
|
167
|
+
const avg = turns.reduce((acc, t) => {
|
|
168
|
+
const freshInput = Math.max(t.inputTokens, 1); // fresh tokens only, not cached
|
|
169
|
+
return acc + t.outputTokens / freshInput;
|
|
170
|
+
}, 0) / turns.length;
|
|
171
|
+
if (avg <= 0)
|
|
172
|
+
return 0;
|
|
173
|
+
const logTarget = Math.log10(Math.max(targetRatio, 2)); // guard against degenerate target
|
|
174
|
+
const score = (Math.log10(avg) / logTarget) * 100;
|
|
175
|
+
return this._clamp(score, 0, 100);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Context management sub-score: penalizes context spike frequency.
|
|
179
|
+
* Formula: clamp(100 - spikeRatio × 100, 0, 100)
|
|
180
|
+
* where spikeRatio = contextSpikeCount / max(totalTurns, 1)
|
|
181
|
+
*/
|
|
182
|
+
_computeContextManagementSubScore(turns) {
|
|
183
|
+
const totalTurns = Math.max(turns.length, 1);
|
|
184
|
+
const spikeCount = turns.filter((t) => t.isContextSpike).length;
|
|
185
|
+
const spikeRatio = spikeCount / totalTurns;
|
|
186
|
+
return this._clamp(100 - spikeRatio * 100, 0, 100);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Token density sub-score: output tokens per turn vs task-type baseline (Story 35-4).
|
|
190
|
+
*
|
|
191
|
+
* Measures whether the agent is producing useful output or spinning:
|
|
192
|
+
* - score = clamp(avgOutputPerTurn / expectedOutputPerTurn * 100, 0, 100)
|
|
193
|
+
* - expectedOutputPerTurn is calibrated per task type (Story 35-2)
|
|
194
|
+
*
|
|
195
|
+
* Below-baseline dispatches get proportionally lower scores.
|
|
196
|
+
* At-or-above-baseline dispatches score 100.
|
|
197
|
+
*/
|
|
198
|
+
_computeTokenDensitySubScore(turns, expectedOutputPerTurn) {
|
|
199
|
+
if (turns.length === 0)
|
|
200
|
+
return 0;
|
|
201
|
+
const avgOutput = turns.reduce((acc, t) => acc + t.outputTokens, 0) / turns.length;
|
|
202
|
+
const ratio = avgOutput / Math.max(expectedOutputPerTurn, 1);
|
|
203
|
+
return this._clamp(ratio * 100, 0, 100);
|
|
204
|
+
}
|
|
205
|
+
// ---------------------------------------------------------------------------
|
|
206
|
+
// Private average helpers
|
|
207
|
+
// ---------------------------------------------------------------------------
|
|
208
|
+
_computeAvgCacheHitRate(turns) {
|
|
209
|
+
if (turns.length === 0)
|
|
210
|
+
return 0;
|
|
211
|
+
const sum = turns.reduce((acc, t) => acc + t.cacheHitRate, 0);
|
|
212
|
+
return sum / turns.length;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Average I/O ratio: totalInput / max(outputTokens, 1) per turn.
|
|
216
|
+
* Total input = inputTokens (fresh) + cacheReadTokens (cached).
|
|
217
|
+
*/
|
|
218
|
+
_computeAvgIoRatio(turns) {
|
|
219
|
+
if (turns.length === 0)
|
|
220
|
+
return 0;
|
|
221
|
+
const sum = turns.reduce((acc, t) => {
|
|
222
|
+
const totalInput = t.inputTokens + (t.cacheReadTokens ?? 0);
|
|
223
|
+
return acc + totalInput / Math.max(t.outputTokens, 1);
|
|
224
|
+
}, 0);
|
|
225
|
+
return sum / turns.length;
|
|
226
|
+
}
|
|
227
|
+
// ---------------------------------------------------------------------------
|
|
228
|
+
// Per-model breakdown
|
|
229
|
+
// ---------------------------------------------------------------------------
|
|
230
|
+
/**
|
|
231
|
+
* Group turns by model, computing per-group efficiency metrics.
|
|
232
|
+
* Turns with null/undefined model are grouped under "unknown".
|
|
233
|
+
*/
|
|
234
|
+
_buildPerModelBreakdown(turns) {
|
|
235
|
+
const groups = new Map();
|
|
236
|
+
for (const turn of turns) {
|
|
237
|
+
const key = (turn.model != null && turn.model !== '') ? turn.model : 'unknown';
|
|
238
|
+
const existing = groups.get(key);
|
|
239
|
+
if (existing !== undefined) {
|
|
240
|
+
existing.push(turn);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
groups.set(key, [turn]);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
const result = [];
|
|
247
|
+
for (const [model, groupTurns] of groups) {
|
|
248
|
+
const cacheHitRate = groupTurns.reduce((acc, t) => acc + t.cacheHitRate, 0) / groupTurns.length;
|
|
249
|
+
const avgIoRatio = groupTurns.reduce((acc, t) => {
|
|
250
|
+
const totalInput = t.inputTokens + (t.cacheReadTokens ?? 0);
|
|
251
|
+
return acc + totalInput / Math.max(t.outputTokens, 1);
|
|
252
|
+
}, 0) / groupTurns.length;
|
|
253
|
+
const totalCostUsd = groupTurns.reduce((acc, t) => acc + t.costUsd, 0);
|
|
254
|
+
const totalOutputTokens = groupTurns.reduce((acc, t) => acc + t.outputTokens, 0);
|
|
255
|
+
const costPer1KOutputTokens = (totalCostUsd / Math.max(totalOutputTokens, 1)) * 1000;
|
|
256
|
+
result.push({ model, cacheHitRate, avgIoRatio, costPer1KOutputTokens });
|
|
257
|
+
}
|
|
258
|
+
return result;
|
|
259
|
+
}
|
|
260
|
+
// ---------------------------------------------------------------------------
|
|
261
|
+
// Per-source breakdown
|
|
262
|
+
// ---------------------------------------------------------------------------
|
|
263
|
+
/**
|
|
264
|
+
* Group turns by source, computing a per-group composite score using the
|
|
265
|
+
* same formula as the overall score. Sources with zero turns are excluded.
|
|
266
|
+
*/
|
|
267
|
+
_buildPerSourceBreakdown(turns, targetIoRatio, expectedOutputPerTurn) {
|
|
268
|
+
const groups = new Map();
|
|
269
|
+
for (const turn of turns) {
|
|
270
|
+
const key = turn.source;
|
|
271
|
+
const existing = groups.get(key);
|
|
272
|
+
if (existing !== undefined) {
|
|
273
|
+
existing.push(turn);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
groups.set(key, [turn]);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
const result = [];
|
|
280
|
+
for (const [source, groupTurns] of groups) {
|
|
281
|
+
if (groupTurns.length === 0)
|
|
282
|
+
continue;
|
|
283
|
+
const cacheHitSub = this._computeCacheHitSubScore(groupTurns);
|
|
284
|
+
const ioRatioSub = this._computeIoRatioSubScore(groupTurns, targetIoRatio);
|
|
285
|
+
const contextSub = this._computeContextManagementSubScore(groupTurns);
|
|
286
|
+
const tokenDensitySub = this._computeTokenDensitySubScore(groupTurns, expectedOutputPerTurn);
|
|
287
|
+
const compositeScore = Math.round(cacheHitSub * W_CACHE +
|
|
288
|
+
ioRatioSub * W_IO_RATIO +
|
|
289
|
+
contextSub * W_CONTEXT +
|
|
290
|
+
tokenDensitySub * W_TOKEN_DENSITY);
|
|
291
|
+
result.push({ source, compositeScore, turnCount: groupTurns.length });
|
|
292
|
+
}
|
|
293
|
+
return result;
|
|
294
|
+
}
|
|
295
|
+
// ---------------------------------------------------------------------------
|
|
296
|
+
// Utility
|
|
297
|
+
// ---------------------------------------------------------------------------
|
|
298
|
+
_clamp(value, min, max) {
|
|
299
|
+
return Math.max(min, Math.min(max, value));
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
// ---------------------------------------------------------------------------
|
|
303
|
+
// Factory
|
|
304
|
+
// ---------------------------------------------------------------------------
|
|
305
|
+
/**
|
|
306
|
+
* Create an EfficiencyScorer with the given logger.
|
|
307
|
+
*/
|
|
308
|
+
export function createEfficiencyScorer(logger) {
|
|
309
|
+
return new EfficiencyScorer(logger);
|
|
310
|
+
}
|
|
311
|
+
//# sourceMappingURL=efficiency-scorer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"efficiency-scorer.js","sourceRoot":"","sources":["../../src/telemetry/efficiency-scorer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Barrel export for telemetry types, Zod schemas, interfaces, and implementations.
|
|
3
|
+
*
|
|
4
|
+
* Story 40-7 added types/schemas.
|
|
5
|
+
* Story 41-6a adds all implementation modules (BatchBuffer, TelemetryNormalizer,
|
|
6
|
+
* TelemetryPipeline, IngestionServer, and pure utility modules).
|
|
7
|
+
*/
|
|
8
|
+
export * from './types.js';
|
|
9
|
+
export { COST_TABLE, estimateCost, resolveModel } from './cost-table.js';
|
|
10
|
+
export { normalizeTimestamp } from './timestamp-normalizer.js';
|
|
11
|
+
export { detectSource } from './source-detector.js';
|
|
12
|
+
export { extractTokensFromAttributes, extractTokensFromBody, mergeTokenCounts, } from './token-extractor.js';
|
|
13
|
+
export { BatchBuffer } from './batch-buffer.js';
|
|
14
|
+
export type { BatchBufferOptions } from './batch-buffer.js';
|
|
15
|
+
export { TelemetryNormalizer } from './normalizer.js';
|
|
16
|
+
export { TelemetryPipeline } from './telemetry-pipeline.js';
|
|
17
|
+
export type { TelemetryPipelineDeps, ITurnAnalyzer, ILogTurnAnalyzer, ICategorizer, IConsumerAnalyzer, IEfficiencyScorer, } from './telemetry-pipeline.js';
|
|
18
|
+
export { IngestionServer, TelemetryError } from './ingestion-server.js';
|
|
19
|
+
export type { IngestionServerOptions } from './ingestion-server.js';
|
|
20
|
+
export { TurnAnalyzer } from './turn-analyzer.js';
|
|
21
|
+
export { LogTurnAnalyzer } from './log-turn-analyzer.js';
|
|
22
|
+
export { Categorizer } from './categorizer.js';
|
|
23
|
+
export { ConsumerAnalyzer } from './consumer-analyzer.js';
|
|
24
|
+
export { EfficiencyScorer, createEfficiencyScorer } from './efficiency-scorer.js';
|
|
25
|
+
export { Recommender } from './recommender.js';
|
|
26
|
+
export { getBaseline, TASK_BASELINES, DEFAULT_BASELINE } from './task-baselines.js';
|
|
27
|
+
export type { TaskBaseline } from './task-baselines.js';
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,cAAc,YAAY,CAAA;AAG1B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGnD,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAG3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAGrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,YAAY,EACV,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,yBAAyB,CAAA;AAGhC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACvE,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAKnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACnF,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Barrel export for telemetry types, Zod schemas, interfaces, and implementations.
|
|
3
|
+
*
|
|
4
|
+
* Story 40-7 added types/schemas.
|
|
5
|
+
* Story 41-6a adds all implementation modules (BatchBuffer, TelemetryNormalizer,
|
|
6
|
+
* TelemetryPipeline, IngestionServer, and pure utility modules).
|
|
7
|
+
*/
|
|
8
|
+
// Types and Zod schemas (includes OtlpSource, DispatchContext, RawOtlpPayload,
|
|
9
|
+
// ITelemetryPersistence, IRecommender, RecommenderContext, ModelPricing, etc.)
|
|
10
|
+
export * from './types.js';
|
|
11
|
+
// Pure utility modules
|
|
12
|
+
export { COST_TABLE, estimateCost, resolveModel } from './cost-table.js';
|
|
13
|
+
export { normalizeTimestamp } from './timestamp-normalizer.js';
|
|
14
|
+
export { detectSource } from './source-detector.js';
|
|
15
|
+
// OtlpSource is already exported from types.js; source-detector re-exports it
|
|
16
|
+
// but the barrel export from types.js takes precedence.
|
|
17
|
+
export { extractTokensFromAttributes, extractTokensFromBody, mergeTokenCounts, } from './token-extractor.js';
|
|
18
|
+
// BatchBuffer
|
|
19
|
+
export { BatchBuffer } from './batch-buffer.js';
|
|
20
|
+
// TelemetryNormalizer
|
|
21
|
+
export { TelemetryNormalizer } from './normalizer.js';
|
|
22
|
+
// TelemetryPipeline with duck-typed scoring interfaces
|
|
23
|
+
export { TelemetryPipeline } from './telemetry-pipeline.js';
|
|
24
|
+
// IngestionServer
|
|
25
|
+
export { IngestionServer, TelemetryError } from './ingestion-server.js';
|
|
26
|
+
// DispatchContext is already exported from types.js (canonical source);
|
|
27
|
+
// ingestion-server re-exports it but barrel deduplication handles this.
|
|
28
|
+
// Scoring module implementations (story 41-6b)
|
|
29
|
+
export { TurnAnalyzer } from './turn-analyzer.js';
|
|
30
|
+
export { LogTurnAnalyzer } from './log-turn-analyzer.js';
|
|
31
|
+
export { Categorizer } from './categorizer.js';
|
|
32
|
+
export { ConsumerAnalyzer } from './consumer-analyzer.js';
|
|
33
|
+
export { EfficiencyScorer, createEfficiencyScorer } from './efficiency-scorer.js';
|
|
34
|
+
export { Recommender } from './recommender.js';
|
|
35
|
+
// Task baselines (story 41-6b — required by EfficiencyScorer)
|
|
36
|
+
export { getBaseline, TASK_BASELINES, DEFAULT_BASELINE } from './task-baselines.js';
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+EAA+E;AAC/E,+EAA+E;AAC/E,cAAc,YAAY,CAAA;AAE1B,uBAAuB;AACvB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,8EAA8E;AAC9E,wDAAwD;AACxD,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAE7B,cAAc;AACd,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG/C,sBAAsB;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,uDAAuD;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAU3D,kBAAkB;AAClB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEvE,wEAAwE;AACxE,wEAAwE;AAExE,+CAA+C;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,8DAA8D;AAC9D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IngestionServer — local OTLP HTTP/JSON endpoint for Claude Code telemetry.
|
|
3
|
+
*
|
|
4
|
+
* Starts an HTTP server that accepts OTLP-formatted telemetry payloads from
|
|
5
|
+
* Claude Code sub-agents. The server binds to a configurable port (default 4318)
|
|
6
|
+
* and exposes `getOtlpEnvVars()` to retrieve the 5 environment variables that
|
|
7
|
+
* configure Claude Code to export telemetry to this endpoint.
|
|
8
|
+
*
|
|
9
|
+
* When a `TelemetryPipeline` is injected, received payloads are parsed and
|
|
10
|
+
* buffered via `BatchBuffer`, which flushes to the pipeline on size or time
|
|
11
|
+
* triggers. Without a pipeline, the server operates in stub mode (acknowledge
|
|
12
|
+
* and discard), preserving backwards-compatibility.
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* const server = new IngestionServer({ port: 4318 })
|
|
16
|
+
* await server.start()
|
|
17
|
+
* const envVars = server.getOtlpEnvVars() // inject into sub-agents
|
|
18
|
+
* await server.stop()
|
|
19
|
+
*/
|
|
20
|
+
import type { ILogger } from '../dispatch/types.js';
|
|
21
|
+
import type { TelemetryPipeline } from './telemetry-pipeline.js';
|
|
22
|
+
export type { DispatchContext } from './types.js';
|
|
23
|
+
/**
|
|
24
|
+
* Error thrown by IngestionServer for server lifecycle violations.
|
|
25
|
+
* Extends Error with a machine-readable `code` property.
|
|
26
|
+
* (In the monolith, callers may import TelemetryError from the shim which
|
|
27
|
+
* re-exports this class from @substrate-ai/core.)
|
|
28
|
+
*/
|
|
29
|
+
export declare class TelemetryError extends Error {
|
|
30
|
+
readonly code: string;
|
|
31
|
+
constructor(code: string, message: string);
|
|
32
|
+
}
|
|
33
|
+
export interface IngestionServerOptions {
|
|
34
|
+
/** Port to bind to. Pass 0 to let the OS assign a free port (for tests). */
|
|
35
|
+
port?: number;
|
|
36
|
+
/** Optional TelemetryPipeline to process received payloads. */
|
|
37
|
+
pipeline?: TelemetryPipeline;
|
|
38
|
+
/** Override BatchBuffer batch size (default: 100). */
|
|
39
|
+
batchSize?: number;
|
|
40
|
+
/** Override BatchBuffer flush interval in ms (default: 5000). */
|
|
41
|
+
flushIntervalMs?: number;
|
|
42
|
+
/** Optional logger (defaults to console). */
|
|
43
|
+
logger?: ILogger;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Local HTTP server that accepts OTLP payloads from Claude Code sub-agents.
|
|
47
|
+
*
|
|
48
|
+
* Binds to `port` (default 4318). Use port 0 in tests for an OS-assigned port.
|
|
49
|
+
*/
|
|
50
|
+
export declare class IngestionServer {
|
|
51
|
+
private _server;
|
|
52
|
+
private readonly _port;
|
|
53
|
+
private readonly _batchSize;
|
|
54
|
+
private readonly _flushIntervalMs;
|
|
55
|
+
private _buffer;
|
|
56
|
+
private readonly _pendingBatches;
|
|
57
|
+
private readonly _logger;
|
|
58
|
+
constructor(options?: IngestionServerOptions);
|
|
59
|
+
/**
|
|
60
|
+
* Wire a TelemetryPipeline before the server is started.
|
|
61
|
+
* Must be called before start() — has no effect if called after start().
|
|
62
|
+
*/
|
|
63
|
+
setPipeline(pipeline: TelemetryPipeline): void;
|
|
64
|
+
private _initPipeline;
|
|
65
|
+
/**
|
|
66
|
+
* Force-flush buffered OTLP payloads and await all in-flight processBatch() calls.
|
|
67
|
+
* Call this between story dispatches to ensure story N's telemetry (including
|
|
68
|
+
* recommendations) is fully persisted before story N+1 begins.
|
|
69
|
+
*
|
|
70
|
+
* No-op when no TelemetryPipeline is wired.
|
|
71
|
+
*/
|
|
72
|
+
flushAndAwait(): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Start the HTTP ingestion server.
|
|
75
|
+
* Resolves when the server is listening and ready to accept connections.
|
|
76
|
+
* On EADDRINUSE, retries up to 10 consecutive ports before failing.
|
|
77
|
+
*/
|
|
78
|
+
start(): Promise<void>;
|
|
79
|
+
private _tryListen;
|
|
80
|
+
/**
|
|
81
|
+
* Stop the HTTP ingestion server.
|
|
82
|
+
* Drains the batch buffer before closing the HTTP server.
|
|
83
|
+
* Resolves when the server has closed all connections.
|
|
84
|
+
*/
|
|
85
|
+
stop(): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Return the 5 OTLP environment variables to inject into sub-agent processes.
|
|
88
|
+
*
|
|
89
|
+
* @throws {TelemetryError} ERR_TELEMETRY_NOT_STARTED if the server is not started.
|
|
90
|
+
*/
|
|
91
|
+
getOtlpEnvVars(): Record<string, string>;
|
|
92
|
+
/**
|
|
93
|
+
* Substrate resource attributes extracted from an OTLP payload.
|
|
94
|
+
* These are set by ClaudeCodeAdapter via OTEL_RESOURCE_ATTRIBUTES env var.
|
|
95
|
+
*/
|
|
96
|
+
private _extractSubstrateAttributes;
|
|
97
|
+
private _handleRequest;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=ingestion-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingestion-server.d.ts","sourceRoot":"","sources":["../../src/telemetry/ingestion-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAKhE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAMjD;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,IAAI,EAAE,MAAM,CAAA;gBAEhB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAMD,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,iBAAiB,CAAA;IAC5B,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAMD;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2B;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,GAAE,sBAA2B;IAWhD;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAQ9C,OAAO,CAAC,aAAa;IAmBrB;;;;;;OAMG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpC;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B5B,OAAO,CAAC,UAAU;IAyBlB;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B3B;;;;OAIG;IACH,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAsBxC;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAkDnC,OAAO,CAAC,cAAc;CA2DvB"}
|