@aquex/cmos-mcp 1.0.0
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/CHANGELOG.md +99 -0
- package/LICENSE +15 -0
- package/README.md +250 -0
- package/cmos-seed/README.md +153 -0
- package/cmos-seed/context/master_context.json +27 -0
- package/cmos-seed/context/project_context.json +12 -0
- package/cmos-seed/db/schema.sql +334 -0
- package/cmos-seed/docs/README.md +128 -0
- package/cmos-seed/docs/agents-md-guide.md +253 -0
- package/cmos-seed/docs/build-session-prompt.md +137 -0
- package/cmos-seed/docs/getting-started.md +150 -0
- package/cmos-seed/docs/session-management-guide.md +163 -0
- package/cmos-seed/docs/sqlite-schema-reference.md +188 -0
- package/cmos-seed/foundational-docs/roadmap_template.md +365 -0
- package/cmos-seed/foundational-docs/tech_arch_template.md +331 -0
- package/cmos-seed/templates/PROJECT-README-template.md +110 -0
- package/cmos-seed/templates/agents.md +306 -0
- package/cmos-seed/tiers/build.md +110 -0
- package/cmos-seed/tiers/general.md +112 -0
- package/cmos-seed/tiers/managed.md +118 -0
- package/dist/.build-manifest.json +5 -0
- package/dist/auth/auth-state.d.ts +96 -0
- package/dist/auth/auth-state.d.ts.map +1 -0
- package/dist/auth/auth-state.js +115 -0
- package/dist/auth/auth-state.js.map +1 -0
- package/dist/auth/delivery-ack-cache.d.ts +27 -0
- package/dist/auth/delivery-ack-cache.d.ts.map +1 -0
- package/dist/auth/delivery-ack-cache.js +21 -0
- package/dist/auth/delivery-ack-cache.js.map +1 -0
- package/dist/auth/device-code.d.ts +136 -0
- package/dist/auth/device-code.d.ts.map +1 -0
- package/dist/auth/device-code.js +334 -0
- package/dist/auth/device-code.js.map +1 -0
- package/dist/auth/project-key-capture.d.ts +124 -0
- package/dist/auth/project-key-capture.d.ts.map +1 -0
- package/dist/auth/project-key-capture.js +218 -0
- package/dist/auth/project-key-capture.js.map +1 -0
- package/dist/combination/dependency-resolver.d.ts +69 -0
- package/dist/combination/dependency-resolver.d.ts.map +1 -0
- package/dist/combination/dependency-resolver.js +303 -0
- package/dist/combination/dependency-resolver.js.map +1 -0
- package/dist/combination/merge-strategies.d.ts +87 -0
- package/dist/combination/merge-strategies.d.ts.map +1 -0
- package/dist/combination/merge-strategies.js +210 -0
- package/dist/combination/merge-strategies.js.map +1 -0
- package/dist/combination/pack-combiner.d.ts +84 -0
- package/dist/combination/pack-combiner.d.ts.map +1 -0
- package/dist/combination/pack-combiner.js +288 -0
- package/dist/combination/pack-combiner.js.map +1 -0
- package/dist/combination/types.d.ts +112 -0
- package/dist/combination/types.d.ts.map +1 -0
- package/dist/combination/types.js +39 -0
- package/dist/combination/types.js.map +1 -0
- package/dist/domains/domain-pack-loader.d.ts +148 -0
- package/dist/domains/domain-pack-loader.d.ts.map +1 -0
- package/dist/domains/domain-pack-loader.js +501 -0
- package/dist/domains/domain-pack-loader.js.map +1 -0
- package/dist/domains/types.d.ts +64 -0
- package/dist/domains/types.d.ts.map +1 -0
- package/dist/domains/types.js +10 -0
- package/dist/domains/types.js.map +1 -0
- package/dist/errors/config-error.d.ts +13 -0
- package/dist/errors/config-error.d.ts.map +1 -0
- package/dist/errors/config-error.js +19 -0
- package/dist/errors/config-error.js.map +1 -0
- package/dist/errors/domain-error.d.ts +13 -0
- package/dist/errors/domain-error.d.ts.map +1 -0
- package/dist/errors/domain-error.js +19 -0
- package/dist/errors/domain-error.js.map +1 -0
- package/dist/errors/handler.d.ts +30 -0
- package/dist/errors/handler.d.ts.map +1 -0
- package/dist/errors/handler.js +63 -0
- package/dist/errors/handler.js.map +1 -0
- package/dist/errors/index.d.ts +9 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +25 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/io-error.d.ts +13 -0
- package/dist/errors/io-error.d.ts.map +1 -0
- package/dist/errors/io-error.js +19 -0
- package/dist/errors/io-error.js.map +1 -0
- package/dist/errors/logger.d.ts +21 -0
- package/dist/errors/logger.d.ts.map +1 -0
- package/dist/errors/logger.js +88 -0
- package/dist/errors/logger.js.map +1 -0
- package/dist/errors/mission-error.d.ts +27 -0
- package/dist/errors/mission-error.d.ts.map +1 -0
- package/dist/errors/mission-error.js +76 -0
- package/dist/errors/mission-error.js.map +1 -0
- package/dist/errors/types.d.ts +52 -0
- package/dist/errors/types.d.ts.map +1 -0
- package/dist/errors/types.js +3 -0
- package/dist/errors/types.js.map +1 -0
- package/dist/errors/utils.d.ts +24 -0
- package/dist/errors/utils.d.ts.map +1 -0
- package/dist/errors/utils.js +64 -0
- package/dist/errors/utils.js.map +1 -0
- package/dist/errors/validation-error.d.ts +13 -0
- package/dist/errors/validation-error.d.ts.map +1 -0
- package/dist/errors/validation-error.js +19 -0
- package/dist/errors/validation-error.js.map +1 -0
- package/dist/extraction/template-extractor.d.ts +59 -0
- package/dist/extraction/template-extractor.d.ts.map +1 -0
- package/dist/extraction/template-extractor.js +553 -0
- package/dist/extraction/template-extractor.js.map +1 -0
- package/dist/extraction/types.d.ts +160 -0
- package/dist/extraction/types.d.ts.map +1 -0
- package/dist/extraction/types.js +7 -0
- package/dist/extraction/types.js.map +1 -0
- package/dist/http-server.d.ts +18 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +326 -0
- package/dist/http-server.js.map +1 -0
- package/dist/import-export/hybrid-template-parser.d.ts +44 -0
- package/dist/import-export/hybrid-template-parser.d.ts.map +1 -0
- package/dist/import-export/hybrid-template-parser.js +373 -0
- package/dist/import-export/hybrid-template-parser.js.map +1 -0
- package/dist/import-export/security-validator.d.ts +93 -0
- package/dist/import-export/security-validator.d.ts.map +1 -0
- package/dist/import-export/security-validator.js +441 -0
- package/dist/import-export/security-validator.js.map +1 -0
- package/dist/import-export/template-exporter.d.ts +106 -0
- package/dist/import-export/template-exporter.d.ts.map +1 -0
- package/dist/import-export/template-exporter.js +247 -0
- package/dist/import-export/template-exporter.js.map +1 -0
- package/dist/import-export/template-importer.d.ts +97 -0
- package/dist/import-export/template-importer.d.ts.map +1 -0
- package/dist/import-export/template-importer.js +308 -0
- package/dist/import-export/template-importer.js.map +1 -0
- package/dist/import-export/types.d.ts +118 -0
- package/dist/import-export/types.d.ts.map +1 -0
- package/dist/import-export/types.js +41 -0
- package/dist/import-export/types.js.map +1 -0
- package/dist/index.d.ts +157 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +972 -0
- package/dist/index.js.map +1 -0
- package/dist/intelligence/agentic-controller.d.ts +345 -0
- package/dist/intelligence/agentic-controller.d.ts.map +1 -0
- package/dist/intelligence/agentic-controller.js +1376 -0
- package/dist/intelligence/agentic-controller.js.map +1 -0
- package/dist/intelligence/agentic-observability.d.ts +43 -0
- package/dist/intelligence/agentic-observability.d.ts.map +1 -0
- package/dist/intelligence/agentic-observability.js +62 -0
- package/dist/intelligence/agentic-observability.js.map +1 -0
- package/dist/intelligence/agents-md-loader.d.ts +81 -0
- package/dist/intelligence/agents-md-loader.d.ts.map +1 -0
- package/dist/intelligence/agents-md-loader.js +298 -0
- package/dist/intelligence/agents-md-loader.js.map +1 -0
- package/dist/intelligence/attribution-verification.d.ts +58 -0
- package/dist/intelligence/attribution-verification.d.ts.map +1 -0
- package/dist/intelligence/attribution-verification.js +133 -0
- package/dist/intelligence/attribution-verification.js.map +1 -0
- package/dist/intelligence/boomerang-workflow.d.ts +87 -0
- package/dist/intelligence/boomerang-workflow.d.ts.map +1 -0
- package/dist/intelligence/boomerang-workflow.js +311 -0
- package/dist/intelligence/boomerang-workflow.js.map +1 -0
- package/dist/intelligence/cmos-detector.d.ts +42 -0
- package/dist/intelligence/cmos-detector.d.ts.map +1 -0
- package/dist/intelligence/cmos-detector.js +94 -0
- package/dist/intelligence/cmos-detector.js.map +1 -0
- package/dist/intelligence/cmos-sync.d.ts +101 -0
- package/dist/intelligence/cmos-sync.d.ts.map +1 -0
- package/dist/intelligence/cmos-sync.js +435 -0
- package/dist/intelligence/cmos-sync.js.map +1 -0
- package/dist/intelligence/complexity-scorer.d.ts +111 -0
- package/dist/intelligence/complexity-scorer.d.ts.map +1 -0
- package/dist/intelligence/complexity-scorer.js +299 -0
- package/dist/intelligence/complexity-scorer.js.map +1 -0
- package/dist/intelligence/compression-rules.d.ts +62 -0
- package/dist/intelligence/compression-rules.d.ts.map +1 -0
- package/dist/intelligence/compression-rules.js +303 -0
- package/dist/intelligence/compression-rules.js.map +1 -0
- package/dist/intelligence/content-sanitizer.d.ts +61 -0
- package/dist/intelligence/content-sanitizer.d.ts.map +1 -0
- package/dist/intelligence/content-sanitizer.js +170 -0
- package/dist/intelligence/content-sanitizer.js.map +1 -0
- package/dist/intelligence/context-propagator-v2.d.ts +23 -0
- package/dist/intelligence/context-propagator-v2.d.ts.map +1 -0
- package/dist/intelligence/context-propagator-v2.js +37 -0
- package/dist/intelligence/context-propagator-v2.js.map +1 -0
- package/dist/intelligence/context-propagator-v3.d.ts +46 -0
- package/dist/intelligence/context-propagator-v3.d.ts.map +1 -0
- package/dist/intelligence/context-propagator-v3.js +266 -0
- package/dist/intelligence/context-propagator-v3.js.map +1 -0
- package/dist/intelligence/context-propagator.d.ts +108 -0
- package/dist/intelligence/context-propagator.d.ts.map +1 -0
- package/dist/intelligence/context-propagator.js +283 -0
- package/dist/intelligence/context-propagator.js.map +1 -0
- package/dist/intelligence/context-windows.d.ts +5 -0
- package/dist/intelligence/context-windows.d.ts.map +1 -0
- package/dist/intelligence/context-windows.js +18 -0
- package/dist/intelligence/context-windows.js.map +1 -0
- package/dist/intelligence/credential-store.d.ts +145 -0
- package/dist/intelligence/credential-store.d.ts.map +1 -0
- package/dist/intelligence/credential-store.js +243 -0
- package/dist/intelligence/credential-store.js.map +1 -0
- package/dist/intelligence/dependency-analyzer.d.ts +117 -0
- package/dist/intelligence/dependency-analyzer.d.ts.map +1 -0
- package/dist/intelligence/dependency-analyzer.js +398 -0
- package/dist/intelligence/dependency-analyzer.js.map +1 -0
- package/dist/intelligence/dependency-inferrer.d.ts +68 -0
- package/dist/intelligence/dependency-inferrer.d.ts.map +1 -0
- package/dist/intelligence/dependency-inferrer.js +281 -0
- package/dist/intelligence/dependency-inferrer.js.map +1 -0
- package/dist/intelligence/enhanced-dependency-analyzer.d.ts +25 -0
- package/dist/intelligence/enhanced-dependency-analyzer.d.ts.map +1 -0
- package/dist/intelligence/enhanced-dependency-analyzer.js +207 -0
- package/dist/intelligence/enhanced-dependency-analyzer.js.map +1 -0
- package/dist/intelligence/graph-validator.d.ts +61 -0
- package/dist/intelligence/graph-validator.d.ts.map +1 -0
- package/dist/intelligence/graph-validator.js +212 -0
- package/dist/intelligence/graph-validator.js.map +1 -0
- package/dist/intelligence/lifecycle-analyzer.d.ts +64 -0
- package/dist/intelligence/lifecycle-analyzer.d.ts.map +1 -0
- package/dist/intelligence/lifecycle-analyzer.js +587 -0
- package/dist/intelligence/lifecycle-analyzer.js.map +1 -0
- package/dist/intelligence/mission-history.d.ts +56 -0
- package/dist/intelligence/mission-history.d.ts.map +1 -0
- package/dist/intelligence/mission-history.js +145 -0
- package/dist/intelligence/mission-history.js.map +1 -0
- package/dist/intelligence/mission-outcome-analytics.d.ts +84 -0
- package/dist/intelligence/mission-outcome-analytics.d.ts.map +1 -0
- package/dist/intelligence/mission-outcome-analytics.js +499 -0
- package/dist/intelligence/mission-outcome-analytics.js.map +1 -0
- package/dist/intelligence/mission-splitter.d.ts +148 -0
- package/dist/intelligence/mission-splitter.d.ts.map +1 -0
- package/dist/intelligence/mission-splitter.js +461 -0
- package/dist/intelligence/mission-splitter.js.map +1 -0
- package/dist/intelligence/model-transpilers.d.ts +59 -0
- package/dist/intelligence/model-transpilers.d.ts.map +1 -0
- package/dist/intelligence/model-transpilers.js +185 -0
- package/dist/intelligence/model-transpilers.js.map +1 -0
- package/dist/intelligence/project-registry.d.ts +265 -0
- package/dist/intelligence/project-registry.d.ts.map +1 -0
- package/dist/intelligence/project-registry.js +484 -0
- package/dist/intelligence/project-registry.js.map +1 -0
- package/dist/intelligence/rsip-loop.d.ts +52 -0
- package/dist/intelligence/rsip-loop.d.ts.map +1 -0
- package/dist/intelligence/rsip-loop.js +139 -0
- package/dist/intelligence/rsip-loop.js.map +1 -0
- package/dist/intelligence/sender-context.d.ts +114 -0
- package/dist/intelligence/sender-context.d.ts.map +1 -0
- package/dist/intelligence/sender-context.js +275 -0
- package/dist/intelligence/sender-context.js.map +1 -0
- package/dist/intelligence/sqlite-client.d.ts +144 -0
- package/dist/intelligence/sqlite-client.d.ts.map +1 -0
- package/dist/intelligence/sqlite-client.js +568 -0
- package/dist/intelligence/sqlite-client.js.map +1 -0
- package/dist/intelligence/telemetry.d.ts +44 -0
- package/dist/intelligence/telemetry.d.ts.map +1 -0
- package/dist/intelligence/telemetry.js +106 -0
- package/dist/intelligence/telemetry.js.map +1 -0
- package/dist/intelligence/token-counters.d.ts +69 -0
- package/dist/intelligence/token-counters.d.ts.map +1 -0
- package/dist/intelligence/token-counters.js +197 -0
- package/dist/intelligence/token-counters.js.map +1 -0
- package/dist/intelligence/token-optimizer.d.ts +52 -0
- package/dist/intelligence/token-optimizer.d.ts.map +1 -0
- package/dist/intelligence/token-optimizer.js +205 -0
- package/dist/intelligence/token-optimizer.js.map +1 -0
- package/dist/intelligence/tokenizer-bootstrap.d.ts +54 -0
- package/dist/intelligence/tokenizer-bootstrap.d.ts.map +1 -0
- package/dist/intelligence/tokenizer-bootstrap.js +238 -0
- package/dist/intelligence/tokenizer-bootstrap.js.map +1 -0
- package/dist/intelligence/types.d.ts +117 -0
- package/dist/intelligence/types.d.ts.map +1 -0
- package/dist/intelligence/types.js +8 -0
- package/dist/intelligence/types.js.map +1 -0
- package/dist/intelligence/worker-manifest-loader.d.ts +70 -0
- package/dist/intelligence/worker-manifest-loader.d.ts.map +1 -0
- package/dist/intelligence/worker-manifest-loader.js +387 -0
- package/dist/intelligence/worker-manifest-loader.js.map +1 -0
- package/dist/loaders/yaml-loader.d.ts +99 -0
- package/dist/loaders/yaml-loader.d.ts.map +1 -0
- package/dist/loaders/yaml-loader.js +236 -0
- package/dist/loaders/yaml-loader.js.map +1 -0
- package/dist/merge/deep-merge.d.ts +93 -0
- package/dist/merge/deep-merge.d.ts.map +1 -0
- package/dist/merge/deep-merge.js +168 -0
- package/dist/merge/deep-merge.js.map +1 -0
- package/dist/quality/analyzers/ai-readiness-analyzer.d.ts +35 -0
- package/dist/quality/analyzers/ai-readiness-analyzer.d.ts.map +1 -0
- package/dist/quality/analyzers/ai-readiness-analyzer.js +357 -0
- package/dist/quality/analyzers/ai-readiness-analyzer.js.map +1 -0
- package/dist/quality/analyzers/clarity-analyzer.d.ts +52 -0
- package/dist/quality/analyzers/clarity-analyzer.d.ts.map +1 -0
- package/dist/quality/analyzers/clarity-analyzer.js +405 -0
- package/dist/quality/analyzers/clarity-analyzer.js.map +1 -0
- package/dist/quality/analyzers/completeness-analyzer.d.ts +45 -0
- package/dist/quality/analyzers/completeness-analyzer.d.ts.map +1 -0
- package/dist/quality/analyzers/completeness-analyzer.js +331 -0
- package/dist/quality/analyzers/completeness-analyzer.js.map +1 -0
- package/dist/quality/improvement-engine.d.ts +37 -0
- package/dist/quality/improvement-engine.d.ts.map +1 -0
- package/dist/quality/improvement-engine.js +260 -0
- package/dist/quality/improvement-engine.js.map +1 -0
- package/dist/quality/quality-scorer.d.ts +36 -0
- package/dist/quality/quality-scorer.d.ts.map +1 -0
- package/dist/quality/quality-scorer.js +95 -0
- package/dist/quality/quality-scorer.js.map +1 -0
- package/dist/quality/types.d.ts +92 -0
- package/dist/quality/types.d.ts.map +1 -0
- package/dist/quality/types.js +33 -0
- package/dist/quality/types.js.map +1 -0
- package/dist/registry/registry-parser.d.ts +59 -0
- package/dist/registry/registry-parser.d.ts.map +1 -0
- package/dist/registry/registry-parser.js +161 -0
- package/dist/registry/registry-parser.js.map +1 -0
- package/dist/registry/semver-validator.d.ts +48 -0
- package/dist/registry/semver-validator.d.ts.map +1 -0
- package/dist/registry/semver-validator.js +115 -0
- package/dist/registry/semver-validator.js.map +1 -0
- package/dist/schemas/generic-mission.d.ts +120 -0
- package/dist/schemas/generic-mission.d.ts.map +1 -0
- package/dist/schemas/generic-mission.js +118 -0
- package/dist/schemas/generic-mission.js.map +1 -0
- package/dist/security/workspace-guard.d.ts +10 -0
- package/dist/security/workspace-guard.d.ts.map +1 -0
- package/dist/security/workspace-guard.js +116 -0
- package/dist/security/workspace-guard.js.map +1 -0
- package/dist/server-health.d.ts +73 -0
- package/dist/server-health.d.ts.map +1 -0
- package/dist/server-health.js +181 -0
- package/dist/server-health.js.map +1 -0
- package/dist/tools/analyze-dependencies.d.ts +99 -0
- package/dist/tools/analyze-dependencies.d.ts.map +1 -0
- package/dist/tools/analyze-dependencies.js +329 -0
- package/dist/tools/analyze-dependencies.js.map +1 -0
- package/dist/tools/cmos/agent-feedback.d.ts +25 -0
- package/dist/tools/cmos/agent-feedback.d.ts.map +1 -0
- package/dist/tools/cmos/agent-feedback.js +50 -0
- package/dist/tools/cmos/agent-feedback.js.map +1 -0
- package/dist/tools/cmos/blob-migrations.d.ts +77 -0
- package/dist/tools/cmos/blob-migrations.d.ts.map +1 -0
- package/dist/tools/cmos/blob-migrations.js +210 -0
- package/dist/tools/cmos/blob-migrations.js.map +1 -0
- package/dist/tools/cmos/checkpoint-backfill.d.ts +33 -0
- package/dist/tools/cmos/checkpoint-backfill.d.ts.map +1 -0
- package/dist/tools/cmos/checkpoint-backfill.js +186 -0
- package/dist/tools/cmos/checkpoint-backfill.js.map +1 -0
- package/dist/tools/cmos/client.d.ts +293 -0
- package/dist/tools/cmos/client.d.ts.map +1 -0
- package/dist/tools/cmos/client.js +669 -0
- package/dist/tools/cmos/client.js.map +1 -0
- package/dist/tools/cmos/cmos-agent-onboard.d.ts +344 -0
- package/dist/tools/cmos/cmos-agent-onboard.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-agent-onboard.js +1533 -0
- package/dist/tools/cmos/cmos-agent-onboard.js.map +1 -0
- package/dist/tools/cmos/cmos-auth.d.ts +283 -0
- package/dist/tools/cmos/cmos-auth.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-auth.js +687 -0
- package/dist/tools/cmos/cmos-auth.js.map +1 -0
- package/dist/tools/cmos/cmos-backlog-export.d.ts +142 -0
- package/dist/tools/cmos/cmos-backlog-export.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-backlog-export.js +340 -0
- package/dist/tools/cmos/cmos-backlog-export.js.map +1 -0
- package/dist/tools/cmos/cmos-constraints.d.ts +58 -0
- package/dist/tools/cmos/cmos-constraints.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-constraints.js +227 -0
- package/dist/tools/cmos/cmos-constraints.js.map +1 -0
- package/dist/tools/cmos/cmos-context-condense.d.ts +129 -0
- package/dist/tools/cmos/cmos-context-condense.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-context-condense.js +649 -0
- package/dist/tools/cmos/cmos-context-condense.js.map +1 -0
- package/dist/tools/cmos/cmos-context-history.d.ts +145 -0
- package/dist/tools/cmos/cmos-context-history.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-context-history.js +235 -0
- package/dist/tools/cmos/cmos-context-history.js.map +1 -0
- package/dist/tools/cmos/cmos-context-project-identity.d.ts +34 -0
- package/dist/tools/cmos/cmos-context-project-identity.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-context-project-identity.js +145 -0
- package/dist/tools/cmos/cmos-context-project-identity.js.map +1 -0
- package/dist/tools/cmos/cmos-context-search.d.ts +44 -0
- package/dist/tools/cmos/cmos-context-search.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-context-search.js +79 -0
- package/dist/tools/cmos/cmos-context-search.js.map +1 -0
- package/dist/tools/cmos/cmos-context-snapshot.d.ts +105 -0
- package/dist/tools/cmos/cmos-context-snapshot.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-context-snapshot.js +213 -0
- package/dist/tools/cmos/cmos-context-snapshot.js.map +1 -0
- package/dist/tools/cmos/cmos-context-update.d.ts +193 -0
- package/dist/tools/cmos/cmos-context-update.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-context-update.js +710 -0
- package/dist/tools/cmos/cmos-context-update.js.map +1 -0
- package/dist/tools/cmos/cmos-context-view.d.ts +159 -0
- package/dist/tools/cmos/cmos-context-view.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-context-view.js +531 -0
- package/dist/tools/cmos/cmos-context-view.js.map +1 -0
- package/dist/tools/cmos/cmos-context.d.ts +325 -0
- package/dist/tools/cmos/cmos-context.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-context.js +424 -0
- package/dist/tools/cmos/cmos-context.js.map +1 -0
- package/dist/tools/cmos/cmos-db-backfill.d.ts +119 -0
- package/dist/tools/cmos/cmos-db-backfill.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-db-backfill.js +889 -0
- package/dist/tools/cmos/cmos-db-backfill.js.map +1 -0
- package/dist/tools/cmos/cmos-db-health.d.ts +76 -0
- package/dist/tools/cmos/cmos-db-health.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-db-health.js +226 -0
- package/dist/tools/cmos/cmos-db-health.js.map +1 -0
- package/dist/tools/cmos/cmos-db-restore.d.ts +92 -0
- package/dist/tools/cmos/cmos-db-restore.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-db-restore.js +359 -0
- package/dist/tools/cmos/cmos-db-restore.js.map +1 -0
- package/dist/tools/cmos/cmos-db-snapshot.d.ts +108 -0
- package/dist/tools/cmos/cmos-db-snapshot.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-db-snapshot.js +359 -0
- package/dist/tools/cmos/cmos-db-snapshot.js.map +1 -0
- package/dist/tools/cmos/cmos-db.d.ts +103 -0
- package/dist/tools/cmos/cmos-db.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-db.js +182 -0
- package/dist/tools/cmos/cmos-db.js.map +1 -0
- package/dist/tools/cmos/cmos-decisions-batch-update.d.ts +34 -0
- package/dist/tools/cmos/cmos-decisions-batch-update.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-decisions-batch-update.js +90 -0
- package/dist/tools/cmos/cmos-decisions-batch-update.js.map +1 -0
- package/dist/tools/cmos/cmos-decisions-list.d.ts +134 -0
- package/dist/tools/cmos/cmos-decisions-list.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-decisions-list.js +153 -0
- package/dist/tools/cmos/cmos-decisions-list.js.map +1 -0
- package/dist/tools/cmos/cmos-decisions-review.d.ts +21 -0
- package/dist/tools/cmos/cmos-decisions-review.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-decisions-review.js +83 -0
- package/dist/tools/cmos/cmos-decisions-review.js.map +1 -0
- package/dist/tools/cmos/cmos-decisions-search.d.ts +119 -0
- package/dist/tools/cmos/cmos-decisions-search.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-decisions-search.js +219 -0
- package/dist/tools/cmos/cmos-decisions-search.js.map +1 -0
- package/dist/tools/cmos/cmos-decisions-update.d.ts +34 -0
- package/dist/tools/cmos/cmos-decisions-update.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-decisions-update.js +121 -0
- package/dist/tools/cmos/cmos-decisions-update.js.map +1 -0
- package/dist/tools/cmos/cmos-decisions.d.ts +156 -0
- package/dist/tools/cmos/cmos-decisions.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-decisions.js +223 -0
- package/dist/tools/cmos/cmos-decisions.js.map +1 -0
- package/dist/tools/cmos/cmos-feedback.d.ts +127 -0
- package/dist/tools/cmos/cmos-feedback.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-feedback.js +259 -0
- package/dist/tools/cmos/cmos-feedback.js.map +1 -0
- package/dist/tools/cmos/cmos-learnings-list.d.ts +81 -0
- package/dist/tools/cmos/cmos-learnings-list.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-learnings-list.js +120 -0
- package/dist/tools/cmos/cmos-learnings-list.js.map +1 -0
- package/dist/tools/cmos/cmos-learnings-reaffirm.d.ts +27 -0
- package/dist/tools/cmos/cmos-learnings-reaffirm.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-learnings-reaffirm.js +69 -0
- package/dist/tools/cmos/cmos-learnings-reaffirm.js.map +1 -0
- package/dist/tools/cmos/cmos-learnings-search.d.ts +69 -0
- package/dist/tools/cmos/cmos-learnings-search.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-learnings-search.js +130 -0
- package/dist/tools/cmos/cmos-learnings-search.js.map +1 -0
- package/dist/tools/cmos/cmos-learnings-update.d.ts +52 -0
- package/dist/tools/cmos/cmos-learnings-update.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-learnings-update.js +122 -0
- package/dist/tools/cmos/cmos-learnings-update.js.map +1 -0
- package/dist/tools/cmos/cmos-learnings.d.ts +137 -0
- package/dist/tools/cmos/cmos-learnings.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-learnings.js +197 -0
- package/dist/tools/cmos/cmos-learnings.js.map +1 -0
- package/dist/tools/cmos/cmos-message.d.ts +257 -0
- package/dist/tools/cmos/cmos-message.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-message.js +729 -0
- package/dist/tools/cmos/cmos-message.js.map +1 -0
- package/dist/tools/cmos/cmos-mission-add.d.ts +186 -0
- package/dist/tools/cmos/cmos-mission-add.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-mission-add.js +328 -0
- package/dist/tools/cmos/cmos-mission-add.js.map +1 -0
- package/dist/tools/cmos/cmos-mission-block.d.ts +104 -0
- package/dist/tools/cmos/cmos-mission-block.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-mission-block.js +248 -0
- package/dist/tools/cmos/cmos-mission-block.js.map +1 -0
- package/dist/tools/cmos/cmos-mission-complete.d.ts +127 -0
- package/dist/tools/cmos/cmos-mission-complete.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-mission-complete.js +529 -0
- package/dist/tools/cmos/cmos-mission-complete.js.map +1 -0
- package/dist/tools/cmos/cmos-mission-defer.d.ts +41 -0
- package/dist/tools/cmos/cmos-mission-defer.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-mission-defer.js +169 -0
- package/dist/tools/cmos/cmos-mission-defer.js.map +1 -0
- package/dist/tools/cmos/cmos-mission-depends.d.ts +98 -0
- package/dist/tools/cmos/cmos-mission-depends.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-mission-depends.js +221 -0
- package/dist/tools/cmos/cmos-mission-depends.js.map +1 -0
- package/dist/tools/cmos/cmos-mission-drop.d.ts +36 -0
- package/dist/tools/cmos/cmos-mission-drop.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-mission-drop.js +139 -0
- package/dist/tools/cmos/cmos-mission-drop.js.map +1 -0
- package/dist/tools/cmos/cmos-mission-list.d.ts +127 -0
- package/dist/tools/cmos/cmos-mission-list.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-mission-list.js +277 -0
- package/dist/tools/cmos/cmos-mission-list.js.map +1 -0
- package/dist/tools/cmos/cmos-mission-show.d.ts +115 -0
- package/dist/tools/cmos/cmos-mission-show.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-mission-show.js +278 -0
- package/dist/tools/cmos/cmos-mission-show.js.map +1 -0
- package/dist/tools/cmos/cmos-mission-start.d.ts +94 -0
- package/dist/tools/cmos/cmos-mission-start.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-mission-start.js +347 -0
- package/dist/tools/cmos/cmos-mission-start.js.map +1 -0
- package/dist/tools/cmos/cmos-mission-status.d.ts +152 -0
- package/dist/tools/cmos/cmos-mission-status.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-mission-status.js +420 -0
- package/dist/tools/cmos/cmos-mission-status.js.map +1 -0
- package/dist/tools/cmos/cmos-mission-transition.d.ts +126 -0
- package/dist/tools/cmos/cmos-mission-transition.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-mission-transition.js +222 -0
- package/dist/tools/cmos/cmos-mission-transition.js.map +1 -0
- package/dist/tools/cmos/cmos-mission-unblock.d.ts +102 -0
- package/dist/tools/cmos/cmos-mission-unblock.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-mission-unblock.js +242 -0
- package/dist/tools/cmos/cmos-mission-unblock.js.map +1 -0
- package/dist/tools/cmos/cmos-mission-undepends.d.ts +39 -0
- package/dist/tools/cmos/cmos-mission-undepends.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-mission-undepends.js +94 -0
- package/dist/tools/cmos/cmos-mission-undepends.js.map +1 -0
- package/dist/tools/cmos/cmos-mission-update.d.ts +225 -0
- package/dist/tools/cmos/cmos-mission-update.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-mission-update.js +350 -0
- package/dist/tools/cmos/cmos-mission-update.js.map +1 -0
- package/dist/tools/cmos/cmos-mission.d.ts +300 -0
- package/dist/tools/cmos/cmos-mission.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-mission.js +318 -0
- package/dist/tools/cmos/cmos-mission.js.map +1 -0
- package/dist/tools/cmos/cmos-next-steps.d.ts +57 -0
- package/dist/tools/cmos/cmos-next-steps.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-next-steps.js +154 -0
- package/dist/tools/cmos/cmos-next-steps.js.map +1 -0
- package/dist/tools/cmos/cmos-project-init.d.ts +283 -0
- package/dist/tools/cmos/cmos-project-init.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-project-init.js +502 -0
- package/dist/tools/cmos/cmos-project-init.js.map +1 -0
- package/dist/tools/cmos/cmos-project-list.d.ts +79 -0
- package/dist/tools/cmos/cmos-project-list.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-project-list.js +150 -0
- package/dist/tools/cmos/cmos-project-list.js.map +1 -0
- package/dist/tools/cmos/cmos-project-register.d.ts +90 -0
- package/dist/tools/cmos/cmos-project-register.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-project-register.js +199 -0
- package/dist/tools/cmos/cmos-project-register.js.map +1 -0
- package/dist/tools/cmos/cmos-project-sweep.d.ts +34 -0
- package/dist/tools/cmos/cmos-project-sweep.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-project-sweep.js +210 -0
- package/dist/tools/cmos/cmos-project-sweep.js.map +1 -0
- package/dist/tools/cmos/cmos-project-unregister.d.ts +66 -0
- package/dist/tools/cmos/cmos-project-unregister.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-project-unregister.js +108 -0
- package/dist/tools/cmos/cmos-project-unregister.js.map +1 -0
- package/dist/tools/cmos/cmos-project-update.d.ts +21 -0
- package/dist/tools/cmos/cmos-project-update.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-project-update.js +46 -0
- package/dist/tools/cmos/cmos-project-update.js.map +1 -0
- package/dist/tools/cmos/cmos-project-validate.d.ts +89 -0
- package/dist/tools/cmos/cmos-project-validate.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-project-validate.js +155 -0
- package/dist/tools/cmos/cmos-project-validate.js.map +1 -0
- package/dist/tools/cmos/cmos-project.d.ts +225 -0
- package/dist/tools/cmos/cmos-project.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-project.js +255 -0
- package/dist/tools/cmos/cmos-project.js.map +1 -0
- package/dist/tools/cmos/cmos-resolve-references.d.ts +145 -0
- package/dist/tools/cmos/cmos-resolve-references.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-resolve-references.js +273 -0
- package/dist/tools/cmos/cmos-resolve-references.js.map +1 -0
- package/dist/tools/cmos/cmos-session-capture.d.ts +228 -0
- package/dist/tools/cmos/cmos-session-capture.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-session-capture.js +552 -0
- package/dist/tools/cmos/cmos-session-capture.js.map +1 -0
- package/dist/tools/cmos/cmos-session-complete.d.ts +201 -0
- package/dist/tools/cmos/cmos-session-complete.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-session-complete.js +816 -0
- package/dist/tools/cmos/cmos-session-complete.js.map +1 -0
- package/dist/tools/cmos/cmos-session-list.d.ts +150 -0
- package/dist/tools/cmos/cmos-session-list.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-session-list.js +234 -0
- package/dist/tools/cmos/cmos-session-list.js.map +1 -0
- package/dist/tools/cmos/cmos-session-search.d.ts +176 -0
- package/dist/tools/cmos/cmos-session-search.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-session-search.js +374 -0
- package/dist/tools/cmos/cmos-session-search.js.map +1 -0
- package/dist/tools/cmos/cmos-session-start.d.ts +136 -0
- package/dist/tools/cmos/cmos-session-start.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-session-start.js +305 -0
- package/dist/tools/cmos/cmos-session-start.js.map +1 -0
- package/dist/tools/cmos/cmos-session.d.ts +223 -0
- package/dist/tools/cmos/cmos-session.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-session.js +255 -0
- package/dist/tools/cmos/cmos-session.js.map +1 -0
- package/dist/tools/cmos/cmos-sprint-add.d.ts +114 -0
- package/dist/tools/cmos/cmos-sprint-add.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-sprint-add.js +164 -0
- package/dist/tools/cmos/cmos-sprint-add.js.map +1 -0
- package/dist/tools/cmos/cmos-sprint-analytics.d.ts +66 -0
- package/dist/tools/cmos/cmos-sprint-analytics.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-sprint-analytics.js +289 -0
- package/dist/tools/cmos/cmos-sprint-analytics.js.map +1 -0
- package/dist/tools/cmos/cmos-sprint-carry-forward.d.ts +55 -0
- package/dist/tools/cmos/cmos-sprint-carry-forward.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-sprint-carry-forward.js +271 -0
- package/dist/tools/cmos/cmos-sprint-carry-forward.js.map +1 -0
- package/dist/tools/cmos/cmos-sprint-complete.d.ts +155 -0
- package/dist/tools/cmos/cmos-sprint-complete.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-sprint-complete.js +768 -0
- package/dist/tools/cmos/cmos-sprint-complete.js.map +1 -0
- package/dist/tools/cmos/cmos-sprint-list.d.ts +115 -0
- package/dist/tools/cmos/cmos-sprint-list.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-sprint-list.js +225 -0
- package/dist/tools/cmos/cmos-sprint-list.js.map +1 -0
- package/dist/tools/cmos/cmos-sprint-retro.d.ts +114 -0
- package/dist/tools/cmos/cmos-sprint-retro.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-sprint-retro.js +331 -0
- package/dist/tools/cmos/cmos-sprint-retro.js.map +1 -0
- package/dist/tools/cmos/cmos-sprint-show.d.ts +109 -0
- package/dist/tools/cmos/cmos-sprint-show.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-sprint-show.js +238 -0
- package/dist/tools/cmos/cmos-sprint-show.js.map +1 -0
- package/dist/tools/cmos/cmos-sprint-update.d.ts +150 -0
- package/dist/tools/cmos/cmos-sprint-update.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-sprint-update.js +191 -0
- package/dist/tools/cmos/cmos-sprint-update.js.map +1 -0
- package/dist/tools/cmos/cmos-sprint.d.ts +219 -0
- package/dist/tools/cmos/cmos-sprint.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-sprint.js +304 -0
- package/dist/tools/cmos/cmos-sprint.js.map +1 -0
- package/dist/tools/cmos/cmos-status.d.ts +69 -0
- package/dist/tools/cmos/cmos-status.d.ts.map +1 -0
- package/dist/tools/cmos/cmos-status.js +136 -0
- package/dist/tools/cmos/cmos-status.js.map +1 -0
- package/dist/tools/cmos/context-freshness.d.ts +67 -0
- package/dist/tools/cmos/context-freshness.d.ts.map +1 -0
- package/dist/tools/cmos/context-freshness.js +352 -0
- package/dist/tools/cmos/context-freshness.js.map +1 -0
- package/dist/tools/cmos/context-retention.d.ts +58 -0
- package/dist/tools/cmos/context-retention.d.ts.map +1 -0
- package/dist/tools/cmos/context-retention.js +507 -0
- package/dist/tools/cmos/context-retention.js.map +1 -0
- package/dist/tools/cmos/dashboard-client.d.ts +513 -0
- package/dist/tools/cmos/dashboard-client.d.ts.map +1 -0
- package/dist/tools/cmos/dashboard-client.js +800 -0
- package/dist/tools/cmos/dashboard-client.js.map +1 -0
- package/dist/tools/cmos/decision-memory.d.ts +39 -0
- package/dist/tools/cmos/decision-memory.d.ts.map +1 -0
- package/dist/tools/cmos/decision-memory.js +263 -0
- package/dist/tools/cmos/decision-memory.js.map +1 -0
- package/dist/tools/cmos/errors.d.ts +113 -0
- package/dist/tools/cmos/errors.d.ts.map +1 -0
- package/dist/tools/cmos/errors.js +315 -0
- package/dist/tools/cmos/errors.js.map +1 -0
- package/dist/tools/cmos/fts5-retriever.d.ts +101 -0
- package/dist/tools/cmos/fts5-retriever.d.ts.map +1 -0
- package/dist/tools/cmos/fts5-retriever.js +210 -0
- package/dist/tools/cmos/fts5-retriever.js.map +1 -0
- package/dist/tools/cmos/index.d.ts +1238 -0
- package/dist/tools/cmos/index.d.ts.map +1 -0
- package/dist/tools/cmos/index.js +359 -0
- package/dist/tools/cmos/index.js.map +1 -0
- package/dist/tools/cmos/learning-reaffirm.d.ts +74 -0
- package/dist/tools/cmos/learning-reaffirm.d.ts.map +1 -0
- package/dist/tools/cmos/learning-reaffirm.js +145 -0
- package/dist/tools/cmos/learning-reaffirm.js.map +1 -0
- package/dist/tools/cmos/orphan-detection.d.ts +55 -0
- package/dist/tools/cmos/orphan-detection.d.ts.map +1 -0
- package/dist/tools/cmos/orphan-detection.js +139 -0
- package/dist/tools/cmos/orphan-detection.js.map +1 -0
- package/dist/tools/cmos/owner-resolution.d.ts +21 -0
- package/dist/tools/cmos/owner-resolution.d.ts.map +1 -0
- package/dist/tools/cmos/owner-resolution.js +162 -0
- package/dist/tools/cmos/owner-resolution.js.map +1 -0
- package/dist/tools/cmos/project-identity.d.ts +112 -0
- package/dist/tools/cmos/project-identity.d.ts.map +1 -0
- package/dist/tools/cmos/project-identity.js +261 -0
- package/dist/tools/cmos/project-identity.js.map +1 -0
- package/dist/tools/cmos/relevance-surfacing.d.ts +40 -0
- package/dist/tools/cmos/relevance-surfacing.d.ts.map +1 -0
- package/dist/tools/cmos/relevance-surfacing.js +153 -0
- package/dist/tools/cmos/relevance-surfacing.js.map +1 -0
- package/dist/tools/cmos/schema-migrations.d.ts +157 -0
- package/dist/tools/cmos/schema-migrations.d.ts.map +1 -0
- package/dist/tools/cmos/schema-migrations.js +678 -0
- package/dist/tools/cmos/schema-migrations.js.map +1 -0
- package/dist/tools/cmos/schema.d.ts +76 -0
- package/dist/tools/cmos/schema.d.ts.map +1 -0
- package/dist/tools/cmos/schema.js +462 -0
- package/dist/tools/cmos/schema.js.map +1 -0
- package/dist/tools/cmos/sender-identity.d.ts +87 -0
- package/dist/tools/cmos/sender-identity.d.ts.map +1 -0
- package/dist/tools/cmos/sender-identity.js +207 -0
- package/dist/tools/cmos/sender-identity.js.map +1 -0
- package/dist/tools/cmos/staleness-detection.d.ts +128 -0
- package/dist/tools/cmos/staleness-detection.d.ts.map +1 -0
- package/dist/tools/cmos/staleness-detection.js +381 -0
- package/dist/tools/cmos/staleness-detection.js.map +1 -0
- package/dist/tools/cmos/supersession-detection.d.ts +46 -0
- package/dist/tools/cmos/supersession-detection.d.ts.map +1 -0
- package/dist/tools/cmos/supersession-detection.js +235 -0
- package/dist/tools/cmos/supersession-detection.js.map +1 -0
- package/dist/tools/cmos/sync-event-payloads.d.ts +576 -0
- package/dist/tools/cmos/sync-event-payloads.d.ts.map +1 -0
- package/dist/tools/cmos/sync-event-payloads.js +521 -0
- package/dist/tools/cmos/sync-event-payloads.js.map +1 -0
- package/dist/tools/cmos/sync-health-check.d.ts +43 -0
- package/dist/tools/cmos/sync-health-check.d.ts.map +1 -0
- package/dist/tools/cmos/sync-health-check.js +93 -0
- package/dist/tools/cmos/sync-health-check.js.map +1 -0
- package/dist/tools/cmos/sync-hooks.d.ts +82 -0
- package/dist/tools/cmos/sync-hooks.d.ts.map +1 -0
- package/dist/tools/cmos/sync-hooks.js +162 -0
- package/dist/tools/cmos/sync-hooks.js.map +1 -0
- package/dist/tools/cmos/sync-pusher.d.ts +128 -0
- package/dist/tools/cmos/sync-pusher.d.ts.map +1 -0
- package/dist/tools/cmos/sync-pusher.js +248 -0
- package/dist/tools/cmos/sync-pusher.js.map +1 -0
- package/dist/tools/cmos/sync-queue.d.ts +87 -0
- package/dist/tools/cmos/sync-queue.d.ts.map +1 -0
- package/dist/tools/cmos/sync-queue.js +208 -0
- package/dist/tools/cmos/sync-queue.js.map +1 -0
- package/dist/tools/cmos/tier-config.d.ts +32 -0
- package/dist/tools/cmos/tier-config.d.ts.map +1 -0
- package/dist/tools/cmos/tier-config.js +123 -0
- package/dist/tools/cmos/tier-config.js.map +1 -0
- package/dist/tools/cmos/types.d.ts +164 -0
- package/dist/tools/cmos/types.d.ts.map +1 -0
- package/dist/tools/cmos/types.js +11 -0
- package/dist/tools/cmos/types.js.map +1 -0
- package/dist/tools/combine-packs.d.ts +194 -0
- package/dist/tools/combine-packs.d.ts.map +1 -0
- package/dist/tools/combine-packs.js +283 -0
- package/dist/tools/combine-packs.js.map +1 -0
- package/dist/tools/create-mission.d.ts +192 -0
- package/dist/tools/create-mission.d.ts.map +1 -0
- package/dist/tools/create-mission.js +453 -0
- package/dist/tools/create-mission.js.map +1 -0
- package/dist/tools/export-template.d.ts +175 -0
- package/dist/tools/export-template.d.ts.map +1 -0
- package/dist/tools/export-template.js +212 -0
- package/dist/tools/export-template.js.map +1 -0
- package/dist/tools/extract-template.d.ts +106 -0
- package/dist/tools/extract-template.d.ts.map +1 -0
- package/dist/tools/extract-template.js +322 -0
- package/dist/tools/extract-template.js.map +1 -0
- package/dist/tools/formatters/mission-protocol-json.d.ts +122 -0
- package/dist/tools/formatters/mission-protocol-json.d.ts.map +1 -0
- package/dist/tools/formatters/mission-protocol-json.js +155 -0
- package/dist/tools/formatters/mission-protocol-json.js.map +1 -0
- package/dist/tools/import-template.d.ts +170 -0
- package/dist/tools/import-template.d.ts.map +1 -0
- package/dist/tools/import-template.js +203 -0
- package/dist/tools/import-template.js.map +1 -0
- package/dist/tools/list-domains.d.ts +70 -0
- package/dist/tools/list-domains.d.ts.map +1 -0
- package/dist/tools/list-domains.js +110 -0
- package/dist/tools/list-domains.js.map +1 -0
- package/dist/tools/optimize-tokens.d.ts +190 -0
- package/dist/tools/optimize-tokens.d.ts.map +1 -0
- package/dist/tools/optimize-tokens.js +193 -0
- package/dist/tools/optimize-tokens.js.map +1 -0
- package/dist/tools/score-quality.d.ts +76 -0
- package/dist/tools/score-quality.d.ts.map +1 -0
- package/dist/tools/score-quality.js +191 -0
- package/dist/tools/score-quality.js.map +1 -0
- package/dist/tools/split-mission.d.ts +181 -0
- package/dist/tools/split-mission.d.ts.map +1 -0
- package/dist/tools/split-mission.js +416 -0
- package/dist/tools/split-mission.js.map +1 -0
- package/dist/tools/suggest-splits.d.ts +162 -0
- package/dist/tools/suggest-splits.d.ts.map +1 -0
- package/dist/tools/suggest-splits.js +344 -0
- package/dist/tools/suggest-splits.js.map +1 -0
- package/dist/tools/tool-execution.d.ts +4 -0
- package/dist/tools/tool-execution.d.ts.map +1 -0
- package/dist/tools/tool-execution.js +3 -0
- package/dist/tools/tool-execution.js.map +1 -0
- package/dist/tools/version-template.d.ts +515 -0
- package/dist/tools/version-template.d.ts.map +1 -0
- package/dist/tools/version-template.js +338 -0
- package/dist/tools/version-template.js.map +1 -0
- package/dist/types/errors.d.ts +19 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +52 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/mission-types.d.ts +8 -0
- package/dist/types/mission-types.d.ts.map +1 -0
- package/dist/types/mission-types.js +12 -0
- package/dist/types/mission-types.js.map +1 -0
- package/dist/types/registry.d.ts +55 -0
- package/dist/types/registry.d.ts.map +1 -0
- package/dist/types/registry.js +10 -0
- package/dist/types/registry.js.map +1 -0
- package/dist/types/schemas.d.ts +25 -0
- package/dist/types/schemas.d.ts.map +1 -0
- package/dist/types/schemas.js +6 -0
- package/dist/types/schemas.js.map +1 -0
- package/dist/types/tools.d.ts +22 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +10 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/utils/abort.d.ts +16 -0
- package/dist/utils/abort.d.ts.map +1 -0
- package/dist/utils/abort.js +89 -0
- package/dist/utils/abort.js.map +1 -0
- package/dist/utils/fs.d.ts +14 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +114 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/workspace-io.d.ts +18 -0
- package/dist/utils/workspace-io.d.ts.map +1 -0
- package/dist/utils/workspace-io.js +40 -0
- package/dist/utils/workspace-io.js.map +1 -0
- package/dist/validation/common.d.ts +21 -0
- package/dist/validation/common.d.ts.map +1 -0
- package/dist/validation/common.js +241 -0
- package/dist/validation/common.js.map +1 -0
- package/dist/validation/errors.d.ts +21 -0
- package/dist/validation/errors.d.ts.map +1 -0
- package/dist/validation/errors.js +122 -0
- package/dist/validation/errors.js.map +1 -0
- package/dist/validation/middleware.d.ts +6 -0
- package/dist/validation/middleware.d.ts.map +1 -0
- package/dist/validation/middleware.js +26 -0
- package/dist/validation/middleware.js.map +1 -0
- package/dist/validation/schemas/config-schema.d.ts +25 -0
- package/dist/validation/schemas/config-schema.d.ts.map +1 -0
- package/dist/validation/schemas/config-schema.js +22 -0
- package/dist/validation/schemas/config-schema.js.map +1 -0
- package/dist/validation/schemas/domain-schema.d.ts +129 -0
- package/dist/validation/schemas/domain-schema.d.ts.map +1 -0
- package/dist/validation/schemas/domain-schema.js +28 -0
- package/dist/validation/schemas/domain-schema.js.map +1 -0
- package/dist/validation/schemas/file-path-schema.d.ts +10 -0
- package/dist/validation/schemas/file-path-schema.d.ts.map +1 -0
- package/dist/validation/schemas/file-path-schema.js +29 -0
- package/dist/validation/schemas/file-path-schema.js.map +1 -0
- package/dist/validation/schemas/mission-schema.d.ts +65 -0
- package/dist/validation/schemas/mission-schema.d.ts.map +1 -0
- package/dist/validation/schemas/mission-schema.js +24 -0
- package/dist/validation/schemas/mission-schema.js.map +1 -0
- package/dist/validation/schemas/template-schema.d.ts +364 -0
- package/dist/validation/schemas/template-schema.d.ts.map +1 -0
- package/dist/validation/schemas/template-schema.js +64 -0
- package/dist/validation/schemas/template-schema.js.map +1 -0
- package/dist/versioning/migration-engine.d.ts +82 -0
- package/dist/versioning/migration-engine.d.ts.map +1 -0
- package/dist/versioning/migration-engine.js +352 -0
- package/dist/versioning/migration-engine.js.map +1 -0
- package/dist/versioning/types.d.ts +236 -0
- package/dist/versioning/types.d.ts.map +1 -0
- package/dist/versioning/types.js +57 -0
- package/dist/versioning/types.js.map +1 -0
- package/dist/versioning/version-manager.d.ts +76 -0
- package/dist/versioning/version-manager.d.ts.map +1 -0
- package/dist/versioning/version-manager.js +386 -0
- package/dist/versioning/version-manager.js.map +1 -0
- package/package.json +117 -0
|
@@ -0,0 +1,669 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CmosDatabaseClient - Core database client wrapper for CMOS SQLite operations
|
|
4
|
+
*
|
|
5
|
+
* Provides:
|
|
6
|
+
* - Connection management with auto-close
|
|
7
|
+
* - Standard query patterns (getOne, getMany, execute)
|
|
8
|
+
* - Error translation to structured CmosToolError
|
|
9
|
+
* - Integration with CmosDetector for database path discovery
|
|
10
|
+
*
|
|
11
|
+
* All methods return CmosToolResult<T> for consistent agent-friendly responses.
|
|
12
|
+
*
|
|
13
|
+
* @module tools/cmos/client
|
|
14
|
+
*/
|
|
15
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
16
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
17
|
+
};
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.CmosDatabaseClient = exports.CMOS_PROJECT_ID_ENV = exports.CMOS_PROJECT_ROOT_ENV = exports.ProjectResolutionError = exports.resolveProjectRootPath = exports.resolveProjectRootEnhanced = exports.ProjectRegistry = void 0;
|
|
20
|
+
exports.resolveProjectRoot = resolveProjectRoot;
|
|
21
|
+
exports.withClient = withClient;
|
|
22
|
+
exports.withClientAsync = withClientAsync;
|
|
23
|
+
exports.withMultiClient = withMultiClient;
|
|
24
|
+
exports.isReadAction = isReadAction;
|
|
25
|
+
exports.withClientValidated = withClientValidated;
|
|
26
|
+
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
27
|
+
const cmos_detector_1 = require("../../intelligence/cmos-detector");
|
|
28
|
+
const project_registry_1 = require("../../intelligence/project-registry");
|
|
29
|
+
Object.defineProperty(exports, "ProjectRegistry", { enumerable: true, get: function () { return project_registry_1.ProjectRegistry; } });
|
|
30
|
+
Object.defineProperty(exports, "resolveProjectRootEnhanced", { enumerable: true, get: function () { return project_registry_1.resolveProjectRootEnhanced; } });
|
|
31
|
+
Object.defineProperty(exports, "resolveProjectRootPath", { enumerable: true, get: function () { return project_registry_1.resolveProjectRootPath; } });
|
|
32
|
+
Object.defineProperty(exports, "ProjectResolutionError", { enumerable: true, get: function () { return project_registry_1.ProjectResolutionError; } });
|
|
33
|
+
const errors_1 = require("./errors");
|
|
34
|
+
/**
|
|
35
|
+
* Environment variable for CMOS project root.
|
|
36
|
+
* When set, tools use this as default instead of process.cwd().
|
|
37
|
+
* Useful for Claude Desktop where cwd may not be the project directory.
|
|
38
|
+
*/
|
|
39
|
+
exports.CMOS_PROJECT_ROOT_ENV = 'CMOS_PROJECT_ROOT';
|
|
40
|
+
/**
|
|
41
|
+
* Environment variable for project ID validation.
|
|
42
|
+
* Used together with database self-protection: if database has project_id
|
|
43
|
+
* in metadata, this env var MUST match for mutation operations.
|
|
44
|
+
*/
|
|
45
|
+
exports.CMOS_PROJECT_ID_ENV = 'CMOS_PROJECT_ID';
|
|
46
|
+
/**
|
|
47
|
+
* Resolve the project root directory (synchronous, simple fallback).
|
|
48
|
+
*
|
|
49
|
+
* Priority: explicit param > CMOS_PROJECT_ROOT env var > process.cwd()
|
|
50
|
+
*
|
|
51
|
+
* @deprecated Use resolveProjectRootEnhanced() for full 5-step resolution
|
|
52
|
+
* with auto-discovery and registry fallback. This synchronous version
|
|
53
|
+
* is kept for backward compatibility but doesn't support the registry.
|
|
54
|
+
*
|
|
55
|
+
* @param explicitRoot - Explicitly provided project root
|
|
56
|
+
* @returns Resolved project root path
|
|
57
|
+
*/
|
|
58
|
+
function resolveProjectRoot(explicitRoot) {
|
|
59
|
+
return explicitRoot ?? process.env[exports.CMOS_PROJECT_ROOT_ENV] ?? process.cwd();
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* CmosDatabaseClient - Wrapper around better-sqlite3 for CMOS operations
|
|
63
|
+
*
|
|
64
|
+
* Usage:
|
|
65
|
+
* ```typescript
|
|
66
|
+
* // Create client (auto-detects database)
|
|
67
|
+
* const client = await CmosDatabaseClient.create();
|
|
68
|
+
*
|
|
69
|
+
* // Query operations
|
|
70
|
+
* const missions = await client.getMany<Mission>('SELECT * FROM missions WHERE status = ?', ['In Progress']);
|
|
71
|
+
* const mission = await client.getOne<Mission>('SELECT * FROM missions WHERE id = ?', ['s12-m03']);
|
|
72
|
+
*
|
|
73
|
+
* // Mutation operations
|
|
74
|
+
* const result = await client.execute(
|
|
75
|
+
* 'UPDATE missions SET status = ? WHERE id = ?',
|
|
76
|
+
* ['Completed', 's12-m03']
|
|
77
|
+
* );
|
|
78
|
+
*
|
|
79
|
+
* // Always close when done
|
|
80
|
+
* client.close();
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
class CmosDatabaseClient {
|
|
84
|
+
/**
|
|
85
|
+
* Private constructor - use CmosDatabaseClient.create() instead
|
|
86
|
+
*/
|
|
87
|
+
constructor(dbPath, options = {}) {
|
|
88
|
+
this.db = null;
|
|
89
|
+
this.statementCache = new Map();
|
|
90
|
+
this.dbPath = dbPath;
|
|
91
|
+
this.options = {
|
|
92
|
+
timeout: options.timeout ?? 5000,
|
|
93
|
+
readonly: options.readonly ?? false,
|
|
94
|
+
verbose: options.verbose ?? false,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Create a new CmosDatabaseClient
|
|
99
|
+
*
|
|
100
|
+
* Uses 5-step resolution priority:
|
|
101
|
+
* 1. Explicit dbPath option
|
|
102
|
+
* 2. Explicit projectRoot option
|
|
103
|
+
* 3. CMOS_PROJECT_ROOT environment variable
|
|
104
|
+
* 4. Auto-discover from cwd
|
|
105
|
+
* 5. Registry fallback (default project)
|
|
106
|
+
*
|
|
107
|
+
* @param options - Client options
|
|
108
|
+
* @returns CmosToolResult with the client or an error
|
|
109
|
+
*/
|
|
110
|
+
static async create(options = {}) {
|
|
111
|
+
try {
|
|
112
|
+
let dbPath = options.dbPath;
|
|
113
|
+
// If no explicit dbPath, resolve project root and detect database
|
|
114
|
+
if (!dbPath) {
|
|
115
|
+
let projectRoot;
|
|
116
|
+
// If explicit projectRoot provided, use it directly
|
|
117
|
+
if (options.projectRoot) {
|
|
118
|
+
projectRoot = options.projectRoot;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
// Use enhanced resolution (env → auto-discover → registry → error)
|
|
122
|
+
try {
|
|
123
|
+
const resolution = await (0, project_registry_1.resolveProjectRootEnhanced)(undefined, {
|
|
124
|
+
autoRegister: true,
|
|
125
|
+
silent: true,
|
|
126
|
+
});
|
|
127
|
+
projectRoot = resolution.projectRoot;
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
if (error instanceof project_registry_1.ProjectResolutionError) {
|
|
131
|
+
return (0, errors_1.createError)({
|
|
132
|
+
code: errors_1.CMOS_ERROR_CODES.CMOS_NOT_DETECTED,
|
|
133
|
+
message: error.message,
|
|
134
|
+
suggestion: error.suggestion,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
throw error;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const detector = cmos_detector_1.CmosDetector.getInstance();
|
|
141
|
+
const detection = await detector.detect(projectRoot);
|
|
142
|
+
if (!detection.hasCmosDirectory) {
|
|
143
|
+
return (0, errors_1.createError)(errors_1.CmosErrors.cmosNotDetected(projectRoot));
|
|
144
|
+
}
|
|
145
|
+
if (!detection.hasDatabase || !detection.databasePath) {
|
|
146
|
+
return (0, errors_1.createError)(errors_1.CmosErrors.dbNotFound(detection.cmosDirectory));
|
|
147
|
+
}
|
|
148
|
+
dbPath = detection.databasePath;
|
|
149
|
+
}
|
|
150
|
+
const client = new CmosDatabaseClient(dbPath, options);
|
|
151
|
+
// Test connection
|
|
152
|
+
const connectionResult = client.ensureConnection();
|
|
153
|
+
if (!connectionResult.success) {
|
|
154
|
+
return connectionResult;
|
|
155
|
+
}
|
|
156
|
+
return (0, errors_1.createSuccess)(client);
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
160
|
+
return (0, errors_1.createError)({
|
|
161
|
+
code: errors_1.CMOS_ERROR_CODES.DB_CONNECTION_FAILED,
|
|
162
|
+
message: `Failed to create database client: ${message}`,
|
|
163
|
+
suggestion: 'Check that the cmos/ directory exists and contains db/cmos.sqlite',
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Create a CmosDatabaseClient from a detection result
|
|
169
|
+
*
|
|
170
|
+
* Useful when you've already run detection and want to avoid re-detecting.
|
|
171
|
+
*
|
|
172
|
+
* @param detection - CmosDetectionResult from CmosDetector
|
|
173
|
+
* @param options - Additional client options
|
|
174
|
+
* @returns CmosToolResult with the client or an error
|
|
175
|
+
*/
|
|
176
|
+
static fromDetection(detection, options = {}) {
|
|
177
|
+
if (!detection.hasDatabase || !detection.databasePath) {
|
|
178
|
+
return (0, errors_1.createError)(errors_1.CmosErrors.dbNotFound(detection.cmosDirectory));
|
|
179
|
+
}
|
|
180
|
+
const client = new CmosDatabaseClient(detection.databasePath, options);
|
|
181
|
+
// Test connection
|
|
182
|
+
const connectionResult = client.ensureConnection();
|
|
183
|
+
if (!connectionResult.success) {
|
|
184
|
+
return connectionResult;
|
|
185
|
+
}
|
|
186
|
+
return (0, errors_1.createSuccess)(client);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get the database path
|
|
190
|
+
*/
|
|
191
|
+
get path() {
|
|
192
|
+
return this.dbPath;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Check if the database connection is open
|
|
196
|
+
*/
|
|
197
|
+
get isOpen() {
|
|
198
|
+
return this.db !== null && this.db.open;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Ensure database connection is established
|
|
202
|
+
*
|
|
203
|
+
* @returns CmosToolResult indicating success or connection error
|
|
204
|
+
*/
|
|
205
|
+
ensureConnection() {
|
|
206
|
+
if (this.db && this.db.open) {
|
|
207
|
+
return (0, errors_1.createSuccess)(undefined);
|
|
208
|
+
}
|
|
209
|
+
try {
|
|
210
|
+
this.db = new better_sqlite3_1.default(this.dbPath, {
|
|
211
|
+
readonly: this.options.readonly,
|
|
212
|
+
timeout: this.options.timeout,
|
|
213
|
+
verbose: this.options.verbose ? console.log : undefined,
|
|
214
|
+
});
|
|
215
|
+
// Enable foreign keys for referential integrity
|
|
216
|
+
this.db.pragma('foreign_keys = ON');
|
|
217
|
+
// Enable WAL mode for better concurrent access
|
|
218
|
+
this.db.pragma('journal_mode = WAL');
|
|
219
|
+
return (0, errors_1.createSuccess)(undefined);
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
223
|
+
return (0, errors_1.createError)(errors_1.CmosErrors.dbConnectionFailed(this.dbPath, message));
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Get a single row from the database
|
|
228
|
+
*
|
|
229
|
+
* @param sql - SQL query (should return at most one row)
|
|
230
|
+
* @param params - Query parameters (array for positional, object for named)
|
|
231
|
+
* @returns CmosToolResult with the row or undefined if not found
|
|
232
|
+
*/
|
|
233
|
+
getOne(sql, params) {
|
|
234
|
+
const connectionResult = this.ensureConnection();
|
|
235
|
+
if (!connectionResult.success) {
|
|
236
|
+
return connectionResult;
|
|
237
|
+
}
|
|
238
|
+
try {
|
|
239
|
+
const stmt = this.prepareStatement(sql);
|
|
240
|
+
const row = (params ? stmt.get(params) : stmt.get());
|
|
241
|
+
return (0, errors_1.createSuccess)(row);
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
return this.handleQueryError(error, sql);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Get multiple rows from the database
|
|
249
|
+
*
|
|
250
|
+
* @param sql - SQL query
|
|
251
|
+
* @param params - Query parameters (array for positional, object for named)
|
|
252
|
+
* @returns CmosToolResult with array of rows (empty array if none found)
|
|
253
|
+
*/
|
|
254
|
+
getMany(sql, params) {
|
|
255
|
+
const connectionResult = this.ensureConnection();
|
|
256
|
+
if (!connectionResult.success) {
|
|
257
|
+
return connectionResult;
|
|
258
|
+
}
|
|
259
|
+
try {
|
|
260
|
+
const stmt = this.prepareStatement(sql);
|
|
261
|
+
const rows = (params ? stmt.all(params) : stmt.all());
|
|
262
|
+
return (0, errors_1.createSuccess)(rows);
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
return this.handleQueryError(error, sql);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Execute a mutation query (INSERT, UPDATE, DELETE)
|
|
270
|
+
*
|
|
271
|
+
* @param sql - SQL mutation query
|
|
272
|
+
* @param params - Query parameters (array for positional, object for named)
|
|
273
|
+
* @returns CmosToolResult with mutation result (changes, lastInsertRowid)
|
|
274
|
+
*/
|
|
275
|
+
execute(sql, params) {
|
|
276
|
+
const connectionResult = this.ensureConnection();
|
|
277
|
+
if (!connectionResult.success) {
|
|
278
|
+
return connectionResult;
|
|
279
|
+
}
|
|
280
|
+
try {
|
|
281
|
+
const stmt = this.prepareStatement(sql);
|
|
282
|
+
const result = params ? stmt.run(params) : stmt.run();
|
|
283
|
+
return (0, errors_1.createSuccess)({
|
|
284
|
+
changes: result.changes,
|
|
285
|
+
lastInsertRowid: result.lastInsertRowid,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
return this.handleQueryError(error, sql);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Execute multiple statements in a transaction
|
|
294
|
+
*
|
|
295
|
+
* All statements succeed or all fail (atomic).
|
|
296
|
+
*
|
|
297
|
+
* @param fn - Function that performs database operations
|
|
298
|
+
* @returns CmosToolResult with the function's return value
|
|
299
|
+
*/
|
|
300
|
+
transaction(fn) {
|
|
301
|
+
const connectionResult = this.ensureConnection();
|
|
302
|
+
if (!connectionResult.success) {
|
|
303
|
+
return connectionResult;
|
|
304
|
+
}
|
|
305
|
+
try {
|
|
306
|
+
const db = this.db;
|
|
307
|
+
const transaction = db.transaction(fn);
|
|
308
|
+
const result = transaction();
|
|
309
|
+
return (0, errors_1.createSuccess)(result);
|
|
310
|
+
}
|
|
311
|
+
catch (error) {
|
|
312
|
+
return this.handleQueryError(error, 'TRANSACTION');
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Execute raw SQL (for complex operations like PRAGMA)
|
|
317
|
+
*
|
|
318
|
+
* Use with caution - prefer getOne/getMany/execute for standard queries.
|
|
319
|
+
*
|
|
320
|
+
* @param sql - Raw SQL to execute
|
|
321
|
+
* @returns CmosToolResult indicating success or error
|
|
322
|
+
*/
|
|
323
|
+
raw(sql) {
|
|
324
|
+
const connectionResult = this.ensureConnection();
|
|
325
|
+
if (!connectionResult.success) {
|
|
326
|
+
return connectionResult;
|
|
327
|
+
}
|
|
328
|
+
try {
|
|
329
|
+
this.db.exec(sql);
|
|
330
|
+
return (0, errors_1.createSuccess)(undefined);
|
|
331
|
+
}
|
|
332
|
+
catch (error) {
|
|
333
|
+
return this.handleQueryError(error, sql);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Check database health and return statistics
|
|
338
|
+
*
|
|
339
|
+
* @returns CmosToolResult with database health information
|
|
340
|
+
*/
|
|
341
|
+
health() {
|
|
342
|
+
const connectionResult = this.ensureConnection();
|
|
343
|
+
if (!connectionResult.success) {
|
|
344
|
+
return connectionResult;
|
|
345
|
+
}
|
|
346
|
+
try {
|
|
347
|
+
const db = this.db;
|
|
348
|
+
// Get SQLite version
|
|
349
|
+
const versionRow = db.prepare('SELECT sqlite_version() as version').get();
|
|
350
|
+
// Get table list
|
|
351
|
+
const tables = db
|
|
352
|
+
.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' ORDER BY name")
|
|
353
|
+
.all();
|
|
354
|
+
// Get counts for key tables
|
|
355
|
+
const missionCount = this.safeCount('missions');
|
|
356
|
+
const sessionCount = this.safeCount('sessions');
|
|
357
|
+
const contextCount = this.safeCount('contexts');
|
|
358
|
+
return (0, errors_1.createSuccess)({
|
|
359
|
+
connected: true,
|
|
360
|
+
version: versionRow.version,
|
|
361
|
+
path: this.dbPath,
|
|
362
|
+
tables: tables.map((t) => t.name),
|
|
363
|
+
missionCount,
|
|
364
|
+
sessionCount,
|
|
365
|
+
contextCount,
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
catch (error) {
|
|
369
|
+
return this.handleQueryError(error, 'HEALTH_CHECK');
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Close the database connection
|
|
374
|
+
*
|
|
375
|
+
* Clears the statement cache and releases all resources.
|
|
376
|
+
* Safe to call multiple times.
|
|
377
|
+
*/
|
|
378
|
+
close() {
|
|
379
|
+
this.statementCache.clear();
|
|
380
|
+
if (this.db && this.db.open) {
|
|
381
|
+
this.db.close();
|
|
382
|
+
}
|
|
383
|
+
this.db = null;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Get a prepared statement (cached for performance)
|
|
387
|
+
*/
|
|
388
|
+
prepareStatement(sql) {
|
|
389
|
+
let stmt = this.statementCache.get(sql);
|
|
390
|
+
if (!stmt) {
|
|
391
|
+
stmt = this.db.prepare(sql);
|
|
392
|
+
this.statementCache.set(sql, stmt);
|
|
393
|
+
}
|
|
394
|
+
return stmt;
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Safely count rows in a table
|
|
398
|
+
*/
|
|
399
|
+
safeCount(tableName) {
|
|
400
|
+
try {
|
|
401
|
+
const row = this.db.prepare(`SELECT COUNT(*) as count FROM ${tableName}`).get();
|
|
402
|
+
return row.count;
|
|
403
|
+
}
|
|
404
|
+
catch {
|
|
405
|
+
return 0;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Handle query errors and translate to CmosToolError
|
|
410
|
+
*/
|
|
411
|
+
handleQueryError(error, _sql) {
|
|
412
|
+
const rawMessage = error instanceof Error ? error.message : String(error ?? 'Unknown database error');
|
|
413
|
+
const message = rawMessage.toLowerCase();
|
|
414
|
+
const sqliteCode = typeof error === 'object' &&
|
|
415
|
+
error !== null &&
|
|
416
|
+
'code' in error &&
|
|
417
|
+
typeof error.code === 'string'
|
|
418
|
+
? (error.code ?? '').toUpperCase()
|
|
419
|
+
: '';
|
|
420
|
+
// Check for specific SQLite error patterns
|
|
421
|
+
if (message.includes('no such table')) {
|
|
422
|
+
const tableMatch = rawMessage.match(/no such table:\s*(?:\w+\.)?([\w-]+)/i);
|
|
423
|
+
const tableName = tableMatch?.[1] ?? 'unknown';
|
|
424
|
+
return (0, errors_1.createError)({
|
|
425
|
+
code: errors_1.CMOS_ERROR_CODES.DB_SCHEMA_MISMATCH,
|
|
426
|
+
message: `Table '${tableName}' does not exist`,
|
|
427
|
+
suggestion: 'Ensure the database schema is up to date. Run migrations if needed.',
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
if (message.includes('no such column') || message.includes('has no column named')) {
|
|
431
|
+
const columnMatch = rawMessage.match(/(?:no such column|has no column named):?\s*(?:\w+\.)?([\w-]+)/i);
|
|
432
|
+
const columnName = columnMatch?.[1] ?? 'unknown';
|
|
433
|
+
return (0, errors_1.createError)({
|
|
434
|
+
code: errors_1.CMOS_ERROR_CODES.DB_SCHEMA_MISMATCH,
|
|
435
|
+
message: `Column '${columnName}' does not exist`,
|
|
436
|
+
suggestion: 'Ensure the database schema is up to date. Run migrations if needed.',
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
if (message.includes('unique constraint failed') || sqliteCode.includes('CONSTRAINT_UNIQUE')) {
|
|
440
|
+
const fieldMatch = rawMessage.match(/UNIQUE constraint failed:\s*(\S+)/i);
|
|
441
|
+
const field = fieldMatch?.[1] ?? 'unknown';
|
|
442
|
+
return (0, errors_1.createError)({
|
|
443
|
+
code: errors_1.CMOS_ERROR_CODES.INVALID_PARAMETER,
|
|
444
|
+
message: `Duplicate value for unique field '${field}'`,
|
|
445
|
+
field: field.split('.').pop(),
|
|
446
|
+
suggestion: 'Use a unique value for this field or update the existing record.',
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
if (message.includes('foreign key constraint failed') ||
|
|
450
|
+
sqliteCode.includes('CONSTRAINT_FOREIGNKEY')) {
|
|
451
|
+
return (0, errors_1.createError)({
|
|
452
|
+
code: errors_1.CMOS_ERROR_CODES.INVALID_PARAMETER,
|
|
453
|
+
message: 'Foreign key constraint violation',
|
|
454
|
+
suggestion: 'Ensure referenced records exist before inserting or updating.',
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
if (message.includes('database is locked') || sqliteCode === 'SQLITE_BUSY') {
|
|
458
|
+
return (0, errors_1.createError)({
|
|
459
|
+
code: errors_1.CMOS_ERROR_CODES.DB_CONNECTION_FAILED,
|
|
460
|
+
message: 'Database is locked by another process',
|
|
461
|
+
suggestion: 'Wait and retry, or close other applications using the database.',
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
if (message.includes('sqlite_readonly') || sqliteCode === 'SQLITE_READONLY') {
|
|
465
|
+
return (0, errors_1.createError)({
|
|
466
|
+
code: errors_1.CMOS_ERROR_CODES.DB_CONNECTION_FAILED,
|
|
467
|
+
message: 'Database is opened in read-only mode',
|
|
468
|
+
suggestion: 'Reopen the database with readonly: false to perform mutations.',
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
// Generic query error
|
|
472
|
+
return (0, errors_1.createError)({
|
|
473
|
+
code: errors_1.CMOS_ERROR_CODES.DB_QUERY_FAILED,
|
|
474
|
+
message: `Query failed: ${rawMessage}`,
|
|
475
|
+
suggestion: 'Check the SQL syntax and parameters.',
|
|
476
|
+
});
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Validate project ID matches expected value from environment.
|
|
480
|
+
*
|
|
481
|
+
* Database self-protection: If the database has a project_id in metadata,
|
|
482
|
+
* the CMOS_PROJECT_ID env var MUST be set and match. This prevents
|
|
483
|
+
* cross-project contamination when multiple projects use CMOS.
|
|
484
|
+
*
|
|
485
|
+
* - Database has project_id + env var matches → success
|
|
486
|
+
* - Database has project_id + env var missing → error (protection active)
|
|
487
|
+
* - Database has project_id + env var mismatch → error
|
|
488
|
+
* - Database has no project_id → success (backward compatible)
|
|
489
|
+
*
|
|
490
|
+
* @returns CmosToolResult indicating success or mismatch error
|
|
491
|
+
*/
|
|
492
|
+
validateProjectId() {
|
|
493
|
+
const expectedProjectId = process.env[exports.CMOS_PROJECT_ID_ENV];
|
|
494
|
+
const connectionResult = this.ensureConnection();
|
|
495
|
+
if (!connectionResult.success) {
|
|
496
|
+
return connectionResult;
|
|
497
|
+
}
|
|
498
|
+
try {
|
|
499
|
+
// Read project_id from metadata table
|
|
500
|
+
const stmt = this.db.prepare('SELECT value FROM metadata WHERE key = ?');
|
|
501
|
+
const row = stmt.get('project_id');
|
|
502
|
+
const databaseProjectId = row?.value ?? '';
|
|
503
|
+
// If database has no project_id, skip validation (backward compatible)
|
|
504
|
+
if (!databaseProjectId) {
|
|
505
|
+
return (0, errors_1.createSuccess)(undefined);
|
|
506
|
+
}
|
|
507
|
+
// Database has project_id - enforce validation
|
|
508
|
+
if (!expectedProjectId) {
|
|
509
|
+
return (0, errors_1.createError)({
|
|
510
|
+
code: errors_1.CMOS_ERROR_CODES.PROJECT_ID_MISMATCH,
|
|
511
|
+
message: `This database requires project ID validation. Database project: "${databaseProjectId}"`,
|
|
512
|
+
suggestion: `Set CMOS_PROJECT_ID="${databaseProjectId}" environment variable to write to this database.`,
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
if (databaseProjectId !== expectedProjectId) {
|
|
516
|
+
return (0, errors_1.createError)({
|
|
517
|
+
code: errors_1.CMOS_ERROR_CODES.PROJECT_ID_MISMATCH,
|
|
518
|
+
message: `Project ID mismatch: env has "${expectedProjectId}", database has "${databaseProjectId}"`,
|
|
519
|
+
suggestion: `You may be connected to the wrong database. Set CMOS_PROJECT_ID="${databaseProjectId}" or check your projectRoot.`,
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
return (0, errors_1.createSuccess)(undefined);
|
|
523
|
+
}
|
|
524
|
+
catch (error) {
|
|
525
|
+
// If metadata table doesn't exist, skip validation (old database)
|
|
526
|
+
const message = error instanceof Error ? error.message : String(error ?? '');
|
|
527
|
+
if (/no such table:\s*(?:\w+\.)?metadata/i.test(message)) {
|
|
528
|
+
// No metadata table = old database, skip validation for backward compatibility
|
|
529
|
+
return (0, errors_1.createSuccess)(undefined);
|
|
530
|
+
}
|
|
531
|
+
return this.handleQueryError(error, 'validateProjectId');
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
exports.CmosDatabaseClient = CmosDatabaseClient;
|
|
536
|
+
/**
|
|
537
|
+
* Convenience function to create a client and run a single operation
|
|
538
|
+
*
|
|
539
|
+
* Automatically closes the connection after the operation.
|
|
540
|
+
*
|
|
541
|
+
* @param fn - Function that uses the client
|
|
542
|
+
* @param options - Client options
|
|
543
|
+
* @returns Result of the operation
|
|
544
|
+
*/
|
|
545
|
+
async function withClient(fn, options) {
|
|
546
|
+
const clientResult = await CmosDatabaseClient.create(options);
|
|
547
|
+
if (!clientResult.success || !clientResult.data) {
|
|
548
|
+
return clientResult;
|
|
549
|
+
}
|
|
550
|
+
const client = clientResult.data;
|
|
551
|
+
try {
|
|
552
|
+
return fn(client);
|
|
553
|
+
}
|
|
554
|
+
finally {
|
|
555
|
+
client.close();
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
/**
|
|
559
|
+
* Convenience function for async operations with automatic cleanup
|
|
560
|
+
*
|
|
561
|
+
* @param fn - Async function that uses the client
|
|
562
|
+
* @param options - Client options
|
|
563
|
+
* @returns Result of the operation
|
|
564
|
+
*/
|
|
565
|
+
async function withClientAsync(fn, options) {
|
|
566
|
+
const clientResult = await CmosDatabaseClient.create(options);
|
|
567
|
+
if (!clientResult.success || !clientResult.data) {
|
|
568
|
+
return clientResult;
|
|
569
|
+
}
|
|
570
|
+
const client = clientResult.data;
|
|
571
|
+
try {
|
|
572
|
+
return await fn(client);
|
|
573
|
+
}
|
|
574
|
+
finally {
|
|
575
|
+
client.close();
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
/**
|
|
579
|
+
* Fan-out a read operation across multiple CMOS instances.
|
|
580
|
+
*
|
|
581
|
+
* Runs fn against each projectRoot in parallel. Each result is tagged with
|
|
582
|
+
* resolvedFrom so callers can attribute results to their source instance.
|
|
583
|
+
* Partial failures are included in the result array rather than failing the
|
|
584
|
+
* whole call — the outer success is true as long as the fan-out itself ran.
|
|
585
|
+
*
|
|
586
|
+
* @param fn - Async operation to run against each client
|
|
587
|
+
* @param projectRoots - List of projectRoot paths to fan out across
|
|
588
|
+
* @returns Success result containing one entry per projectRoot
|
|
589
|
+
*/
|
|
590
|
+
async function withMultiClient(fn, projectRoots) {
|
|
591
|
+
const entries = await Promise.all(projectRoots.map(async (root) => {
|
|
592
|
+
const clientResult = await CmosDatabaseClient.create({ projectRoot: root });
|
|
593
|
+
if (!clientResult.success || !clientResult.data) {
|
|
594
|
+
return {
|
|
595
|
+
resolvedFrom: root,
|
|
596
|
+
success: false,
|
|
597
|
+
error: clientResult.error,
|
|
598
|
+
};
|
|
599
|
+
}
|
|
600
|
+
const client = clientResult.data;
|
|
601
|
+
try {
|
|
602
|
+
const result = await fn(client);
|
|
603
|
+
return {
|
|
604
|
+
resolvedFrom: root,
|
|
605
|
+
success: result.success,
|
|
606
|
+
data: result.data,
|
|
607
|
+
error: result.error,
|
|
608
|
+
};
|
|
609
|
+
}
|
|
610
|
+
finally {
|
|
611
|
+
client.close();
|
|
612
|
+
}
|
|
613
|
+
}));
|
|
614
|
+
return (0, errors_1.createSuccess)(entries);
|
|
615
|
+
}
|
|
616
|
+
/**
|
|
617
|
+
* Read-only CMOS actions eligible for projectRoot fan-out.
|
|
618
|
+
*
|
|
619
|
+
* When a caller omits projectRoot on one of these tool+action combinations,
|
|
620
|
+
* the server fans out across all registered instances instead of erroring.
|
|
621
|
+
* Write actions are intentionally absent — they always require an explicit
|
|
622
|
+
* projectRoot to prevent cross-instance contamination.
|
|
623
|
+
*
|
|
624
|
+
* Sprint 55 m01: cmos_sprint(list|show) and cmos_mission(list) were removed
|
|
625
|
+
* from the fan-out set. Their per-project payloads (full mission rosters and
|
|
626
|
+
* sprint_summary rows with decision counts) are large enough that fanning
|
|
627
|
+
* across a populated registry blew the tool-result size cap (~681KB for a
|
|
628
|
+
* single cmos_sprint(show) on the observed 1674-entry registry). The
|
|
629
|
+
* dispatcher now pins these actions to the caller's project via
|
|
630
|
+
* resolveToolSenderContext, the same resolution used by write actions.
|
|
631
|
+
*/
|
|
632
|
+
const READ_ACTIONS = {
|
|
633
|
+
cmos_mission: ['show', 'status'],
|
|
634
|
+
cmos_session: ['list'],
|
|
635
|
+
cmos_context: ['show'],
|
|
636
|
+
};
|
|
637
|
+
/**
|
|
638
|
+
* Return true if toolName+action is a read-only operation eligible for fan-out.
|
|
639
|
+
*
|
|
640
|
+
* cmos_agent_onboard is intentionally excluded — it has single-instance
|
|
641
|
+
* semantics (onboarding one project at a time is correct behavior).
|
|
642
|
+
*
|
|
643
|
+
* @param toolName - MCP tool name (e.g. 'cmos_mission')
|
|
644
|
+
* @param action - Action parameter value (e.g. 'list')
|
|
645
|
+
*/
|
|
646
|
+
function isReadAction(toolName, action) {
|
|
647
|
+
const allowed = READ_ACTIONS[toolName];
|
|
648
|
+
return allowed !== undefined && allowed.includes(action);
|
|
649
|
+
}
|
|
650
|
+
/**
|
|
651
|
+
* Convenience function for mutation operations.
|
|
652
|
+
*
|
|
653
|
+
* NOTE: Project ID validation has been removed. The explicit projectRoot
|
|
654
|
+
* requirement (no cwd fallback) provides sufficient protection against
|
|
655
|
+
* cross-project contamination without requiring env var configuration.
|
|
656
|
+
*
|
|
657
|
+
* This function is now identical to withClient but kept for backward
|
|
658
|
+
* compatibility with existing tool implementations.
|
|
659
|
+
*
|
|
660
|
+
* @param fn - Function that uses the client
|
|
661
|
+
* @param options - Client options
|
|
662
|
+
* @returns Result of the operation
|
|
663
|
+
*/
|
|
664
|
+
async function withClientValidated(fn, options) {
|
|
665
|
+
// Simply delegate to withClient - no additional validation needed
|
|
666
|
+
// since projectRoot is now required (no cwd fallback)
|
|
667
|
+
return withClient(fn, options);
|
|
668
|
+
}
|
|
669
|
+
//# sourceMappingURL=client.js.map
|