@cleocode/core 2026.4.58 → 2026.4.59
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/dist/adapters/adapter-registry.js +64 -0
- package/dist/adapters/adapter-registry.js.map +1 -0
- package/dist/adapters/discovery.js +83 -0
- package/dist/adapters/discovery.js.map +1 -0
- package/dist/adapters/index.js +9 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/manager.js +260 -0
- package/dist/adapters/manager.js.map +1 -0
- package/dist/admin/export-tasks.js +171 -0
- package/dist/admin/export-tasks.js.map +1 -0
- package/dist/admin/export.js +103 -0
- package/dist/admin/export.js.map +1 -0
- package/dist/admin/help.js +106 -0
- package/dist/admin/help.js.map +1 -0
- package/dist/admin/import-tasks.js +182 -0
- package/dist/admin/import-tasks.js.map +1 -0
- package/dist/admin/import.js +129 -0
- package/dist/admin/import.js.map +1 -0
- package/dist/admin/index.js +13 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/adrs/find.js +134 -0
- package/dist/adrs/find.js.map +1 -0
- package/dist/adrs/index.js +15 -0
- package/dist/adrs/index.js.map +1 -0
- package/dist/adrs/link-pipeline.js +160 -0
- package/dist/adrs/link-pipeline.js.map +1 -0
- package/dist/adrs/list.js +43 -0
- package/dist/adrs/list.js.map +1 -0
- package/dist/adrs/parse.js +51 -0
- package/dist/adrs/parse.js.map +1 -0
- package/dist/adrs/show.js +22 -0
- package/dist/adrs/show.js.map +1 -0
- package/dist/adrs/sync.js +232 -0
- package/dist/adrs/sync.js.map +1 -0
- package/dist/adrs/types.js +9 -0
- package/dist/adrs/types.js.map +1 -0
- package/dist/adrs/validate.js +57 -0
- package/dist/adrs/validate.js.map +1 -0
- package/dist/agents/agent-registry.js +288 -0
- package/dist/agents/agent-registry.js.map +1 -0
- package/dist/agents/agent-schema.js +82 -0
- package/dist/agents/agent-schema.js.map +1 -0
- package/dist/agents/capacity.js +116 -0
- package/dist/agents/capacity.js.map +1 -0
- package/dist/agents/execution-learning.js +474 -0
- package/dist/agents/execution-learning.js.map +1 -0
- package/dist/agents/health-monitor.js +217 -0
- package/dist/agents/health-monitor.js.map +1 -0
- package/dist/agents/index.js +29 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/registry.js +314 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/retry.js +215 -0
- package/dist/agents/retry.js.map +1 -0
- package/dist/audit-prune.js +94 -0
- package/dist/audit-prune.js.map +1 -0
- package/dist/audit.js +68 -0
- package/dist/audit.js.map +1 -0
- package/dist/backfill/index.js +229 -0
- package/dist/backfill/index.js.map +1 -0
- package/dist/bootstrap.js +435 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/caamp/adapter.js +259 -0
- package/dist/caamp/adapter.js.map +1 -0
- package/dist/caamp/capability-check.js +38 -0
- package/dist/caamp/capability-check.js.map +1 -0
- package/dist/caamp/index.js +21 -0
- package/dist/caamp/index.js.map +1 -0
- package/dist/caamp-init.js +16 -0
- package/dist/caamp-init.js.map +1 -0
- package/dist/cleo.js +322 -0
- package/dist/cleo.js.map +1 -0
- package/dist/code/index.js +14 -0
- package/dist/code/index.js.map +1 -0
- package/dist/code/outline.js +165 -0
- package/dist/code/outline.js.map +1 -0
- package/dist/code/parser.js +420 -0
- package/dist/code/parser.js.map +1 -0
- package/dist/code/search.js +135 -0
- package/dist/code/search.js.map +1 -0
- package/dist/code/unfold.js +155 -0
- package/dist/code/unfold.js.map +1 -0
- package/dist/codebase-map/analyzers/architecture.js +129 -0
- package/dist/codebase-map/analyzers/architecture.js.map +1 -0
- package/dist/codebase-map/analyzers/concerns.js +122 -0
- package/dist/codebase-map/analyzers/concerns.js.map +1 -0
- package/dist/codebase-map/analyzers/conventions.js +149 -0
- package/dist/codebase-map/analyzers/conventions.js.map +1 -0
- package/dist/codebase-map/analyzers/integrations.js +108 -0
- package/dist/codebase-map/analyzers/integrations.js.map +1 -0
- package/dist/codebase-map/analyzers/stack.js +117 -0
- package/dist/codebase-map/analyzers/stack.js.map +1 -0
- package/dist/codebase-map/analyzers/structure.js +137 -0
- package/dist/codebase-map/analyzers/structure.js.map +1 -0
- package/dist/codebase-map/analyzers/testing.js +118 -0
- package/dist/codebase-map/analyzers/testing.js.map +1 -0
- package/dist/codebase-map/index.js +57 -0
- package/dist/codebase-map/index.js.map +1 -0
- package/dist/codebase-map/store.js +122 -0
- package/dist/codebase-map/store.js.map +1 -0
- package/dist/codebase-map/summary.js +152 -0
- package/dist/codebase-map/summary.js.map +1 -0
- package/dist/compliance/index.js +288 -0
- package/dist/compliance/index.js.map +1 -0
- package/dist/compliance/protocol-enforcement.js +332 -0
- package/dist/compliance/protocol-enforcement.js.map +1 -0
- package/dist/compliance/protocol-rules.js +786 -0
- package/dist/compliance/protocol-rules.js.map +1 -0
- package/dist/compliance/protocol-types.js +79 -0
- package/dist/compliance/protocol-types.js.map +1 -0
- package/dist/compliance/store.js +53 -0
- package/dist/compliance/store.js.map +1 -0
- package/dist/conduit/conduit-client.js +107 -0
- package/dist/conduit/conduit-client.js.map +1 -0
- package/dist/conduit/factory.js +55 -0
- package/dist/conduit/factory.js.map +1 -0
- package/dist/conduit/http-transport.js +155 -0
- package/dist/conduit/http-transport.js.map +1 -0
- package/dist/conduit/local-transport.js +255 -0
- package/dist/conduit/local-transport.js.map +1 -0
- package/dist/conduit/sse-transport.js +299 -0
- package/dist/conduit/sse-transport.js.map +1 -0
- package/dist/config/build-config.js +29 -0
- package/dist/config/build-config.js.map +1 -0
- package/dist/config.js +407 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.js +18 -0
- package/dist/constants.js.map +1 -0
- package/dist/context/index.js +137 -0
- package/dist/context/index.js.map +1 -0
- package/dist/crypto/credentials.js +219 -0
- package/dist/crypto/credentials.js.map +1 -0
- package/dist/discovery.js +182 -0
- package/dist/discovery.js.map +1 -0
- package/dist/engine-result.js +12 -0
- package/dist/engine-result.js.map +1 -0
- package/dist/error-catalog.js +404 -0
- package/dist/error-catalog.js.map +1 -0
- package/dist/error-registry.js +393 -0
- package/dist/error-registry.js.map +1 -0
- package/dist/errors.js +173 -0
- package/dist/errors.js.map +1 -0
- package/dist/hooks/handlers/agent-hooks.js +106 -0
- package/dist/hooks/handlers/agent-hooks.js.map +1 -0
- package/dist/hooks/handlers/conduit-hooks.js +229 -0
- package/dist/hooks/handlers/conduit-hooks.js.map +1 -0
- package/dist/hooks/handlers/context-hooks.js +111 -0
- package/dist/hooks/handlers/context-hooks.js.map +1 -0
- package/dist/hooks/handlers/error-hooks.js +52 -0
- package/dist/hooks/handlers/error-hooks.js.map +1 -0
- package/dist/hooks/handlers/file-hooks.js +104 -0
- package/dist/hooks/handlers/file-hooks.js.map +1 -0
- package/dist/hooks/handlers/handler-helpers.js +61 -0
- package/dist/hooks/handlers/handler-helpers.js.map +1 -0
- package/dist/hooks/handlers/index.js +37 -0
- package/dist/hooks/handlers/index.js.map +1 -0
- package/dist/hooks/handlers/intelligence-hooks.js +69 -0
- package/dist/hooks/handlers/intelligence-hooks.js.map +1 -0
- package/dist/hooks/handlers/memory-bridge-refresh.js +42 -0
- package/dist/hooks/handlers/memory-bridge-refresh.js.map +1 -0
- package/dist/hooks/handlers/notification-hooks.js +62 -0
- package/dist/hooks/handlers/notification-hooks.js.map +1 -0
- package/dist/hooks/handlers/session-hooks.js +190 -0
- package/dist/hooks/handlers/session-hooks.js.map +1 -0
- package/dist/hooks/handlers/task-hooks.js +90 -0
- package/dist/hooks/handlers/task-hooks.js.map +1 -0
- package/dist/hooks/handlers/watchdog-hooks.js +162 -0
- package/dist/hooks/handlers/watchdog-hooks.js.map +1 -0
- package/dist/hooks/handlers/work-capture-hooks.js +165 -0
- package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
- package/dist/hooks/index.js +13 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/payload-schemas.js +220 -0
- package/dist/hooks/payload-schemas.js.map +1 -0
- package/dist/hooks/provider-hooks.js +66 -0
- package/dist/hooks/provider-hooks.js.map +1 -0
- package/dist/hooks/registry.js +229 -0
- package/dist/hooks/registry.js.map +1 -0
- package/dist/hooks/types.js +66 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/hooks.js +136 -0
- package/dist/hooks.js.map +1 -0
- package/dist/init.js +959 -0
- package/dist/init.js.map +1 -0
- package/dist/inject/index.js +82 -0
- package/dist/inject/index.js.map +1 -0
- package/dist/injection.js +377 -0
- package/dist/injection.js.map +1 -0
- package/dist/intelligence/adaptive-validation.js +497 -0
- package/dist/intelligence/adaptive-validation.js.map +1 -0
- package/dist/intelligence/impact.js +675 -0
- package/dist/intelligence/impact.js.map +1 -0
- package/dist/intelligence/index.js +22 -0
- package/dist/intelligence/index.js.map +1 -0
- package/dist/intelligence/patterns.js +492 -0
- package/dist/intelligence/patterns.js.map +1 -0
- package/dist/intelligence/prediction.js +499 -0
- package/dist/intelligence/prediction.js.map +1 -0
- package/dist/intelligence/types.js +13 -0
- package/dist/intelligence/types.js.map +1 -0
- package/dist/issue/create.js +121 -0
- package/dist/issue/create.js.map +1 -0
- package/dist/issue/diagnostics.js +59 -0
- package/dist/issue/diagnostics.js.map +1 -0
- package/dist/issue/index.js +10 -0
- package/dist/issue/index.js.map +1 -0
- package/dist/issue/template-parser.js +267 -0
- package/dist/issue/template-parser.js.map +1 -0
- package/dist/json-schema-validator.js +76 -0
- package/dist/json-schema-validator.js.map +1 -0
- package/dist/lib/index.js +11 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/retry.js +152 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/lib/tree-sitter-languages.js +75 -0
- package/dist/lib/tree-sitter-languages.js.map +1 -0
- package/dist/lifecycle/chain-composition.js +152 -0
- package/dist/lifecycle/chain-composition.js.map +1 -0
- package/dist/lifecycle/chain-store.js +246 -0
- package/dist/lifecycle/chain-store.js.map +1 -0
- package/dist/lifecycle/consolidate-rcasd.js +352 -0
- package/dist/lifecycle/consolidate-rcasd.js.map +1 -0
- package/dist/lifecycle/default-chain.js +176 -0
- package/dist/lifecycle/default-chain.js.map +1 -0
- package/dist/lifecycle/evidence.js +180 -0
- package/dist/lifecycle/evidence.js.map +1 -0
- package/dist/lifecycle/frontmatter.js +363 -0
- package/dist/lifecycle/frontmatter.js.map +1 -0
- package/dist/lifecycle/index.js +756 -0
- package/dist/lifecycle/index.js.map +1 -0
- package/dist/lifecycle/pipeline.js +656 -0
- package/dist/lifecycle/pipeline.js.map +1 -0
- package/dist/lifecycle/rcasd-index.js +326 -0
- package/dist/lifecycle/rcasd-index.js.map +1 -0
- package/dist/lifecycle/rcasd-paths.js +220 -0
- package/dist/lifecycle/rcasd-paths.js.map +1 -0
- package/dist/lifecycle/resume.js +864 -0
- package/dist/lifecycle/resume.js.map +1 -0
- package/dist/lifecycle/stage-artifacts.js +94 -0
- package/dist/lifecycle/stage-artifacts.js.map +1 -0
- package/dist/lifecycle/stage-guidance.js +234 -0
- package/dist/lifecycle/stage-guidance.js.map +1 -0
- package/dist/lifecycle/stages.js +534 -0
- package/dist/lifecycle/stages.js.map +1 -0
- package/dist/lifecycle/state-machine.js +516 -0
- package/dist/lifecycle/state-machine.js.map +1 -0
- package/dist/lifecycle/tessera-engine.js +249 -0
- package/dist/lifecycle/tessera-engine.js.map +1 -0
- package/dist/logger.js +140 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory/anthropic-key-resolver.js +105 -0
- package/dist/memory/anthropic-key-resolver.js.map +1 -0
- package/dist/memory/auto-extract.js +77 -0
- package/dist/memory/auto-extract.js.map +1 -0
- package/dist/memory/brain-backfill.js +389 -0
- package/dist/memory/brain-backfill.js.map +1 -0
- package/dist/memory/brain-consolidator.js +294 -0
- package/dist/memory/brain-consolidator.js.map +1 -0
- package/dist/memory/brain-embedding.js +66 -0
- package/dist/memory/brain-embedding.js.map +1 -0
- package/dist/memory/brain-export.js +239 -0
- package/dist/memory/brain-export.js.map +1 -0
- package/dist/memory/brain-lifecycle.js +841 -0
- package/dist/memory/brain-lifecycle.js.map +1 -0
- package/dist/memory/brain-links.js +161 -0
- package/dist/memory/brain-links.js.map +1 -0
- package/dist/memory/brain-maintenance.js +125 -0
- package/dist/memory/brain-maintenance.js.map +1 -0
- package/dist/memory/brain-migration.js +149 -0
- package/dist/memory/brain-migration.js.map +1 -0
- package/dist/memory/brain-purge.js +243 -0
- package/dist/memory/brain-purge.js.map +1 -0
- package/dist/memory/brain-reasoning.js +215 -0
- package/dist/memory/brain-reasoning.js.map +1 -0
- package/dist/memory/brain-retrieval.js +1088 -0
- package/dist/memory/brain-retrieval.js.map +1 -0
- package/dist/memory/brain-row-types.js +10 -0
- package/dist/memory/brain-row-types.js.map +1 -0
- package/dist/memory/brain-search.js +613 -0
- package/dist/memory/brain-search.js.map +1 -0
- package/dist/memory/brain-similarity.js +145 -0
- package/dist/memory/brain-similarity.js.map +1 -0
- package/dist/memory/brain-stdp.js +297 -0
- package/dist/memory/brain-stdp.js.map +1 -0
- package/dist/memory/claude-mem-migration.js +277 -0
- package/dist/memory/claude-mem-migration.js.map +1 -0
- package/dist/memory/decision-cross-link.js +228 -0
- package/dist/memory/decision-cross-link.js.map +1 -0
- package/dist/memory/decisions.js +242 -0
- package/dist/memory/decisions.js.map +1 -0
- package/dist/memory/edge-types.js +31 -0
- package/dist/memory/edge-types.js.map +1 -0
- package/dist/memory/embedding-local.js +102 -0
- package/dist/memory/embedding-local.js.map +1 -0
- package/dist/memory/embedding-queue.js +271 -0
- package/dist/memory/embedding-queue.js.map +1 -0
- package/dist/memory/embedding-worker.js +58 -0
- package/dist/memory/embedding-worker.js.map +1 -0
- package/dist/memory/engine-compat.js +1597 -0
- package/dist/memory/engine-compat.js.map +1 -0
- package/dist/memory/extraction-gate.js +459 -0
- package/dist/memory/extraction-gate.js.map +1 -0
- package/dist/memory/graph-auto-populate.js +148 -0
- package/dist/memory/graph-auto-populate.js.map +1 -0
- package/dist/memory/graph-memory-bridge.js +517 -0
- package/dist/memory/graph-memory-bridge.js.map +1 -0
- package/dist/memory/graph-queries.js +290 -0
- package/dist/memory/graph-queries.js.map +1 -0
- package/dist/memory/index.js +1148 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/learnings.js +197 -0
- package/dist/memory/learnings.js.map +1 -0
- package/dist/memory/llm-extraction.js +425 -0
- package/dist/memory/llm-extraction.js.map +1 -0
- package/dist/memory/memory-bridge.js +382 -0
- package/dist/memory/memory-bridge.js.map +1 -0
- package/dist/memory/mental-model-injection.js +61 -0
- package/dist/memory/mental-model-injection.js.map +1 -0
- package/dist/memory/mental-model-queue.js +211 -0
- package/dist/memory/mental-model-queue.js.map +1 -0
- package/dist/memory/observer-reflector.js +626 -0
- package/dist/memory/observer-reflector.js.map +1 -0
- package/dist/memory/patterns.js +192 -0
- package/dist/memory/patterns.js.map +1 -0
- package/dist/memory/pipeline-manifest-sqlite.js +975 -0
- package/dist/memory/pipeline-manifest-sqlite.js.map +1 -0
- package/dist/memory/quality-feedback.js +449 -0
- package/dist/memory/quality-feedback.js.map +1 -0
- package/dist/memory/quality-scoring.js +182 -0
- package/dist/memory/quality-scoring.js.map +1 -0
- package/dist/memory/session-memory.js +331 -0
- package/dist/memory/session-memory.js.map +1 -0
- package/dist/memory/sleep-consolidation.js +706 -0
- package/dist/memory/sleep-consolidation.js.map +1 -0
- package/dist/memory/temporal-supersession.js +403 -0
- package/dist/memory/temporal-supersession.js.map +1 -0
- package/dist/metrics/ab-test.js +260 -0
- package/dist/metrics/ab-test.js.map +1 -0
- package/dist/metrics/aggregation.js +363 -0
- package/dist/metrics/aggregation.js.map +1 -0
- package/dist/metrics/common.js +64 -0
- package/dist/metrics/common.js.map +1 -0
- package/dist/metrics/enums.js +78 -0
- package/dist/metrics/enums.js.map +1 -0
- package/dist/metrics/index.js +19 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/metrics/model-provider-registry.js +88 -0
- package/dist/metrics/model-provider-registry.js.map +1 -0
- package/dist/metrics/otel-integration.js +263 -0
- package/dist/metrics/otel-integration.js.map +1 -0
- package/dist/metrics/provider-detection.js +103 -0
- package/dist/metrics/provider-detection.js.map +1 -0
- package/dist/metrics/token-estimation.js +253 -0
- package/dist/metrics/token-estimation.js.map +1 -0
- package/dist/metrics/token-service.js +450 -0
- package/dist/metrics/token-service.js.map +1 -0
- package/dist/migration/agent-outputs.js +316 -0
- package/dist/migration/agent-outputs.js.map +1 -0
- package/dist/migration/checksum.js +92 -0
- package/dist/migration/checksum.js.map +1 -0
- package/dist/migration/index.js +282 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/migration/logger.js +360 -0
- package/dist/migration/logger.js.map +1 -0
- package/dist/migration/preflight.js +9 -0
- package/dist/migration/preflight.js.map +1 -0
- package/dist/migration/state.js +421 -0
- package/dist/migration/state.js.map +1 -0
- package/dist/migration/validate.js +241 -0
- package/dist/migration/validate.js.map +1 -0
- package/dist/mvi-helpers.js +73 -0
- package/dist/mvi-helpers.js.map +1 -0
- package/dist/nexus/deps.js +375 -0
- package/dist/nexus/deps.js.map +1 -0
- package/dist/nexus/discover.js +288 -0
- package/dist/nexus/discover.js.map +1 -0
- package/dist/nexus/hash.js +10 -0
- package/dist/nexus/hash.js.map +1 -0
- package/dist/nexus/index.js +40 -0
- package/dist/nexus/index.js.map +1 -0
- package/dist/nexus/migrate-json-to-sqlite.js +115 -0
- package/dist/nexus/migrate-json-to-sqlite.js.map +1 -0
- package/dist/nexus/nexus-bridge.js +321 -0
- package/dist/nexus/nexus-bridge.js.map +1 -0
- package/dist/nexus/permissions.js +105 -0
- package/dist/nexus/permissions.js.map +1 -0
- package/dist/nexus/query.js +175 -0
- package/dist/nexus/query.js.map +1 -0
- package/dist/nexus/registry.js +665 -0
- package/dist/nexus/registry.js.map +1 -0
- package/dist/nexus/sharing/index.js +288 -0
- package/dist/nexus/sharing/index.js.map +1 -0
- package/dist/nexus/transfer-types.js +8 -0
- package/dist/nexus/transfer-types.js.map +1 -0
- package/dist/nexus/transfer.js +271 -0
- package/dist/nexus/transfer.js.map +1 -0
- package/dist/nexus/workspace.js +355 -0
- package/dist/nexus/workspace.js.map +1 -0
- package/dist/observability/index.js +103 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/log-filter.js +63 -0
- package/dist/observability/log-filter.js.map +1 -0
- package/dist/observability/log-parser.js +99 -0
- package/dist/observability/log-parser.js.map +1 -0
- package/dist/observability/log-reader.js +139 -0
- package/dist/observability/log-reader.js.map +1 -0
- package/dist/observability/types.js +19 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/orchestration/analyze.js +107 -0
- package/dist/orchestration/analyze.js.map +1 -0
- package/dist/orchestration/bootstrap.js +132 -0
- package/dist/orchestration/bootstrap.js.map +1 -0
- package/dist/orchestration/context.js +56 -0
- package/dist/orchestration/context.js.map +1 -0
- package/dist/orchestration/critical-path.js +100 -0
- package/dist/orchestration/critical-path.js.map +1 -0
- package/dist/orchestration/hierarchy.js +183 -0
- package/dist/orchestration/hierarchy.js.map +1 -0
- package/dist/orchestration/index.js +287 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/parallel.js +89 -0
- package/dist/orchestration/parallel.js.map +1 -0
- package/dist/orchestration/protocol-validators.js +815 -0
- package/dist/orchestration/protocol-validators.js.map +1 -0
- package/dist/orchestration/skill-ops.js +98 -0
- package/dist/orchestration/skill-ops.js.map +1 -0
- package/dist/orchestration/status.js +107 -0
- package/dist/orchestration/status.js.map +1 -0
- package/dist/orchestration/unblock.js +103 -0
- package/dist/orchestration/unblock.js.map +1 -0
- package/dist/orchestration/validate-spawn.js +67 -0
- package/dist/orchestration/validate-spawn.js.map +1 -0
- package/dist/orchestration/waves.js +86 -0
- package/dist/orchestration/waves.js.map +1 -0
- package/dist/otel/index.js +163 -0
- package/dist/otel/index.js.map +1 -0
- package/dist/output.js +164 -0
- package/dist/output.js.map +1 -0
- package/dist/pagination.js +64 -0
- package/dist/pagination.js.map +1 -0
- package/dist/paths.js +882 -0
- package/dist/paths.js.map +1 -0
- package/dist/phases/deps.js +372 -0
- package/dist/phases/deps.js.map +1 -0
- package/dist/phases/index.js +349 -0
- package/dist/phases/index.js.map +1 -0
- package/dist/pipeline/index.js +10 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/phase.js +45 -0
- package/dist/pipeline/phase.js.map +1 -0
- package/dist/platform.js +211 -0
- package/dist/platform.js.map +1 -0
- package/dist/project-info.js +84 -0
- package/dist/project-info.js.map +1 -0
- package/dist/reconciliation/index.js +10 -0
- package/dist/reconciliation/index.js.map +1 -0
- package/dist/reconciliation/link-store.js +175 -0
- package/dist/reconciliation/link-store.js.map +1 -0
- package/dist/reconciliation/reconciliation-engine.js +298 -0
- package/dist/reconciliation/reconciliation-engine.js.map +1 -0
- package/dist/release/artifacts.js +427 -0
- package/dist/release/artifacts.js.map +1 -0
- package/dist/release/changelog-writer.js +151 -0
- package/dist/release/changelog-writer.js.map +1 -0
- package/dist/release/channel.js +144 -0
- package/dist/release/channel.js.map +1 -0
- package/dist/release/ci.js +166 -0
- package/dist/release/ci.js.map +1 -0
- package/dist/release/github-pr.js +225 -0
- package/dist/release/github-pr.js.map +1 -0
- package/dist/release/guards.js +116 -0
- package/dist/release/guards.js.map +1 -0
- package/dist/release/index.js +22 -0
- package/dist/release/index.js.map +1 -0
- package/dist/release/release-config.js +158 -0
- package/dist/release/release-config.js.map +1 -0
- package/dist/release/release-manifest.js +1019 -0
- package/dist/release/release-manifest.js.map +1 -0
- package/dist/release/version-bump.js +255 -0
- package/dist/release/version-bump.js.map +1 -0
- package/dist/remote/index.js +257 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/repair.js +130 -0
- package/dist/repair.js.map +1 -0
- package/dist/research/index.js +2 -0
- package/dist/research/index.js.map +1 -0
- package/dist/roadmap/index.js +59 -0
- package/dist/roadmap/index.js.map +1 -0
- package/dist/routing/capability-matrix.js +1556 -0
- package/dist/routing/capability-matrix.js.map +1 -0
- package/dist/routing/index.js +9 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/scaffold.js +1937 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/schema-management.js +295 -0
- package/dist/schema-management.js.map +1 -0
- package/dist/security/index.js +9 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/input-sanitization.js +326 -0
- package/dist/security/input-sanitization.js.map +1 -0
- package/dist/sequence/index.js +295 -0
- package/dist/sequence/index.js.map +1 -0
- package/dist/sessions/assumptions.js +54 -0
- package/dist/sessions/assumptions.js.map +1 -0
- package/dist/sessions/briefing.js +377 -0
- package/dist/sessions/briefing.js.map +1 -0
- package/dist/sessions/context-alert.js +222 -0
- package/dist/sessions/context-alert.js.map +1 -0
- package/dist/sessions/context-inject.js +61 -0
- package/dist/sessions/context-inject.js.map +1 -0
- package/dist/sessions/context-monitor.js +98 -0
- package/dist/sessions/context-monitor.js.map +1 -0
- package/dist/sessions/decisions.js +65 -0
- package/dist/sessions/decisions.js.map +1 -0
- package/dist/sessions/find.js +65 -0
- package/dist/sessions/find.js.map +1 -0
- package/dist/sessions/handoff.js +328 -0
- package/dist/sessions/handoff.js.map +1 -0
- package/dist/sessions/hitl-warnings.js +254 -0
- package/dist/sessions/hitl-warnings.js.map +1 -0
- package/dist/sessions/index.js +327 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/session-archive.js +40 -0
- package/dist/sessions/session-archive.js.map +1 -0
- package/dist/sessions/session-cleanup.js +59 -0
- package/dist/sessions/session-cleanup.js.map +1 -0
- package/dist/sessions/session-drift.js +134 -0
- package/dist/sessions/session-drift.js.map +1 -0
- package/dist/sessions/session-enforcement.js +144 -0
- package/dist/sessions/session-enforcement.js.map +1 -0
- package/dist/sessions/session-grade.js +253 -0
- package/dist/sessions/session-grade.js.map +1 -0
- package/dist/sessions/session-history.js +42 -0
- package/dist/sessions/session-history.js.map +1 -0
- package/dist/sessions/session-id.js +81 -0
- package/dist/sessions/session-id.js.map +1 -0
- package/dist/sessions/session-memory-bridge.js +30 -0
- package/dist/sessions/session-memory-bridge.js.map +1 -0
- package/dist/sessions/session-show.js +24 -0
- package/dist/sessions/session-show.js.map +1 -0
- package/dist/sessions/session-stats.js +69 -0
- package/dist/sessions/session-stats.js.map +1 -0
- package/dist/sessions/session-suspend.js +39 -0
- package/dist/sessions/session-suspend.js.map +1 -0
- package/dist/sessions/session-switch.js +51 -0
- package/dist/sessions/session-switch.js.map +1 -0
- package/dist/sessions/session-view.js +76 -0
- package/dist/sessions/session-view.js.map +1 -0
- package/dist/sessions/snapshot.js +213 -0
- package/dist/sessions/snapshot.js.map +1 -0
- package/dist/sessions/statusline-setup.js +85 -0
- package/dist/sessions/statusline-setup.js.map +1 -0
- package/dist/sessions/types.js +8 -0
- package/dist/sessions/types.js.map +1 -0
- package/dist/skills/agents/config.js +94 -0
- package/dist/skills/agents/config.js.map +1 -0
- package/dist/skills/agents/install.js +116 -0
- package/dist/skills/agents/install.js.map +1 -0
- package/dist/skills/agents/registry.js +161 -0
- package/dist/skills/agents/registry.js.map +1 -0
- package/dist/skills/discovery.js +333 -0
- package/dist/skills/discovery.js.map +1 -0
- package/dist/skills/dispatch.js +347 -0
- package/dist/skills/dispatch.js.map +1 -0
- package/dist/skills/dynamic-skill-generator.js +87 -0
- package/dist/skills/dynamic-skill-generator.js.map +1 -0
- package/dist/skills/index.js +44 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/injection/subagent.js +195 -0
- package/dist/skills/injection/subagent.js.map +1 -0
- package/dist/skills/injection/token.js +260 -0
- package/dist/skills/injection/token.js.map +1 -0
- package/dist/skills/install.js +40 -0
- package/dist/skills/install.js.map +1 -0
- package/dist/skills/manifests/contribution.js +175 -0
- package/dist/skills/manifests/contribution.js.map +1 -0
- package/dist/skills/manifests/research.js +281 -0
- package/dist/skills/manifests/research.js.map +1 -0
- package/dist/skills/manifests/resolver.js +146 -0
- package/dist/skills/manifests/resolver.js.map +1 -0
- package/dist/skills/marketplace.js +90 -0
- package/dist/skills/marketplace.js.map +1 -0
- package/dist/skills/orchestrator/spawn.js +178 -0
- package/dist/skills/orchestrator/spawn.js.map +1 -0
- package/dist/skills/orchestrator/startup.js +451 -0
- package/dist/skills/orchestrator/startup.js.map +1 -0
- package/dist/skills/orchestrator/validator.js +301 -0
- package/dist/skills/orchestrator/validator.js.map +1 -0
- package/dist/skills/precedence-integration.js +73 -0
- package/dist/skills/precedence-integration.js.map +1 -0
- package/dist/skills/precedence-types.js +16 -0
- package/dist/skills/precedence-types.js.map +1 -0
- package/dist/skills/routing-table.js +63 -0
- package/dist/skills/routing-table.js.map +1 -0
- package/dist/skills/skill-paths.js +217 -0
- package/dist/skills/skill-paths.js.map +1 -0
- package/dist/skills/test-utility.js +55 -0
- package/dist/skills/test-utility.js.map +1 -0
- package/dist/skills/types.js +118 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/skills/validation.js +183 -0
- package/dist/skills/validation.js.map +1 -0
- package/dist/skills/version.js +57 -0
- package/dist/skills/version.js.map +1 -0
- package/dist/snapshot/index.js +188 -0
- package/dist/snapshot/index.js.map +1 -0
- package/dist/spawn/adapter-registry.js +246 -0
- package/dist/spawn/adapter-registry.js.map +1 -0
- package/dist/spawn/index.js +10 -0
- package/dist/spawn/index.js.map +1 -0
- package/dist/stats/index.js +350 -0
- package/dist/stats/index.js.map +1 -0
- package/dist/stats/workflow-telemetry.js +400 -0
- package/dist/stats/workflow-telemetry.js.map +1 -0
- package/dist/sticky/archive.js +47 -0
- package/dist/sticky/archive.js.map +1 -0
- package/dist/sticky/convert.js +235 -0
- package/dist/sticky/convert.js.map +1 -0
- package/dist/sticky/create.js +48 -0
- package/dist/sticky/create.js.map +1 -0
- package/dist/sticky/id.js +35 -0
- package/dist/sticky/id.js.map +1 -0
- package/dist/sticky/index.js +16 -0
- package/dist/sticky/index.js.map +1 -0
- package/dist/sticky/list.js +57 -0
- package/dist/sticky/list.js.map +1 -0
- package/dist/sticky/purge.js +45 -0
- package/dist/sticky/purge.js.map +1 -0
- package/dist/sticky/show.js +42 -0
- package/dist/sticky/show.js.map +1 -0
- package/dist/sticky/types.js +10 -0
- package/dist/sticky/types.js.map +1 -0
- package/dist/store/agent-registry-accessor.js +886 -0
- package/dist/store/agent-registry-accessor.js.map +1 -0
- package/dist/store/api-key-kdf.js +84 -0
- package/dist/store/api-key-kdf.js.map +1 -0
- package/dist/store/atomic.js +167 -0
- package/dist/store/atomic.js.map +1 -0
- package/dist/store/backup-crypto.js +184 -0
- package/dist/store/backup-crypto.js.map +1 -0
- package/dist/store/backup-pack.js +581 -0
- package/dist/store/backup-pack.js.map +1 -0
- package/dist/store/backup-unpack.js +449 -0
- package/dist/store/backup-unpack.js.map +1 -0
- package/dist/store/backup.js +94 -0
- package/dist/store/backup.js.map +1 -0
- package/dist/store/brain-accessor.js +429 -0
- package/dist/store/brain-accessor.js.map +1 -0
- package/dist/store/brain-schema.js +628 -0
- package/dist/store/brain-schema.js.map +1 -0
- package/dist/store/brain-sqlite.js +320 -0
- package/dist/store/brain-sqlite.js.map +1 -0
- package/dist/store/cache.js +168 -0
- package/dist/store/cache.js.map +1 -0
- package/dist/store/chain-schema.js +51 -0
- package/dist/store/chain-schema.js.map +1 -0
- package/dist/store/cleanup-legacy.js +171 -0
- package/dist/store/cleanup-legacy.js.map +1 -0
- package/dist/store/conduit-sqlite.js +570 -0
- package/dist/store/conduit-sqlite.js.map +1 -0
- package/dist/store/converters.js +124 -0
- package/dist/store/converters.js.map +1 -0
- package/dist/store/cross-db-cleanup.js +319 -0
- package/dist/store/cross-db-cleanup.js.map +1 -0
- package/dist/store/data-accessor.js +26 -0
- package/dist/store/data-accessor.js.map +1 -0
- package/dist/store/data-safety-central.js +269 -0
- package/dist/store/data-safety-central.js.map +1 -0
- package/dist/store/data-safety.js +274 -0
- package/dist/store/data-safety.js.map +1 -0
- package/dist/store/db-helpers.js +241 -0
- package/dist/store/db-helpers.js.map +1 -0
- package/dist/store/export.js +155 -0
- package/dist/store/export.js.map +1 -0
- package/dist/store/file-utils.js +270 -0
- package/dist/store/file-utils.js.map +1 -0
- package/dist/store/git-checkpoint.js +365 -0
- package/dist/store/git-checkpoint.js.map +1 -0
- package/dist/store/global-salt.js +147 -0
- package/dist/store/global-salt.js.map +1 -0
- package/dist/store/import-logging.js +139 -0
- package/dist/store/import-logging.js.map +1 -0
- package/dist/store/import-remap.js +145 -0
- package/dist/store/import-remap.js.map +1 -0
- package/dist/store/import-sort.js +121 -0
- package/dist/store/import-sort.js.map +1 -0
- package/dist/store/index.js +29 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/json.js +208 -0
- package/dist/store/json.js.map +1 -0
- package/dist/store/lifecycle-store.js +249 -0
- package/dist/store/lifecycle-store.js.map +1 -0
- package/dist/store/lock.js +70 -0
- package/dist/store/lock.js.map +1 -0
- package/dist/store/migrate-signaldock-to-conduit.js +562 -0
- package/dist/store/migrate-signaldock-to-conduit.js.map +1 -0
- package/dist/store/migration-manager.js +403 -0
- package/dist/store/migration-manager.js.map +1 -0
- package/dist/store/migration-sqlite.js +676 -0
- package/dist/store/migration-sqlite.js.map +1 -0
- package/dist/store/nexus-schema.js +277 -0
- package/dist/store/nexus-schema.js.map +1 -0
- package/dist/store/nexus-sqlite.js +242 -0
- package/dist/store/nexus-sqlite.js.map +1 -0
- package/dist/store/nexus-validation-schemas.js +40 -0
- package/dist/store/nexus-validation-schemas.js.map +1 -0
- package/dist/store/parsers.js +37 -0
- package/dist/store/parsers.js.map +1 -0
- package/dist/store/project-detect.js +457 -0
- package/dist/store/project-detect.js.map +1 -0
- package/dist/store/provider.js +101 -0
- package/dist/store/provider.js.map +1 -0
- package/dist/store/regenerators.js +207 -0
- package/dist/store/regenerators.js.map +1 -0
- package/dist/store/restore-conflict-report.js +206 -0
- package/dist/store/restore-conflict-report.js.map +1 -0
- package/dist/store/restore-json-merge.js +454 -0
- package/dist/store/restore-json-merge.js.map +1 -0
- package/dist/store/safety-data-accessor.js +257 -0
- package/dist/store/safety-data-accessor.js.map +1 -0
- package/dist/store/schema.js +7 -0
- package/dist/store/schema.js.map +1 -0
- package/dist/store/session-store.js +219 -0
- package/dist/store/session-store.js.map +1 -0
- package/dist/store/signaldock-sqlite.js +550 -0
- package/dist/store/signaldock-sqlite.js.map +1 -0
- package/dist/store/sqlite-backup.js +498 -0
- package/dist/store/sqlite-backup.js.map +1 -0
- package/dist/store/sqlite-data-accessor.js +788 -0
- package/dist/store/sqlite-data-accessor.js.map +1 -0
- package/dist/store/sqlite.js +483 -0
- package/dist/store/sqlite.js.map +1 -0
- package/dist/store/status-registry.js +8 -0
- package/dist/store/status-registry.js.map +1 -0
- package/dist/store/t310-readiness.js +115 -0
- package/dist/store/t310-readiness.js.map +1 -0
- package/dist/store/task-store.js +358 -0
- package/dist/store/task-store.js.map +1 -0
- package/dist/store/tasks-schema.js +610 -0
- package/dist/store/tasks-schema.js.map +1 -0
- package/dist/store/typed-query.js +15 -0
- package/dist/store/typed-query.js.map +1 -0
- package/dist/store/validation-schemas.js +278 -0
- package/dist/store/validation-schemas.js.map +1 -0
- package/dist/system/archive-analytics.js +277 -0
- package/dist/system/archive-analytics.js.map +1 -0
- package/dist/system/archive-stats.js +64 -0
- package/dist/system/archive-stats.js.map +1 -0
- package/dist/system/audit.js +145 -0
- package/dist/system/audit.js.map +1 -0
- package/dist/system/backup.js +280 -0
- package/dist/system/backup.js.map +1 -0
- package/dist/system/cleanup.js +134 -0
- package/dist/system/cleanup.js.map +1 -0
- package/dist/system/dependencies.js +466 -0
- package/dist/system/dependencies.js.map +1 -0
- package/dist/system/health.js +1207 -0
- package/dist/system/health.js.map +1 -0
- package/dist/system/index.js +18 -0
- package/dist/system/index.js.map +1 -0
- package/dist/system/inject-generate.js +122 -0
- package/dist/system/inject-generate.js.map +1 -0
- package/dist/system/labels.js +38 -0
- package/dist/system/labels.js.map +1 -0
- package/dist/system/metrics.js +61 -0
- package/dist/system/metrics.js.map +1 -0
- package/dist/system/migrate.js +43 -0
- package/dist/system/migrate.js.map +1 -0
- package/dist/system/platform-paths.js +80 -0
- package/dist/system/platform-paths.js.map +1 -0
- package/dist/system/runtime.js +161 -0
- package/dist/system/runtime.js.map +1 -0
- package/dist/system/safestop.js +89 -0
- package/dist/system/safestop.js.map +1 -0
- package/dist/system/storage-preflight.js +123 -0
- package/dist/system/storage-preflight.js.map +1 -0
- package/dist/task-work/index.js +159 -0
- package/dist/task-work/index.js.map +1 -0
- package/dist/tasks/add.js +837 -0
- package/dist/tasks/add.js.map +1 -0
- package/dist/tasks/analyze.js +85 -0
- package/dist/tasks/analyze.js.map +1 -0
- package/dist/tasks/archive.js +90 -0
- package/dist/tasks/archive.js.map +1 -0
- package/dist/tasks/atomicity.js +83 -0
- package/dist/tasks/atomicity.js.map +1 -0
- package/dist/tasks/cancel-ops.js +83 -0
- package/dist/tasks/cancel-ops.js.map +1 -0
- package/dist/tasks/complete.js +252 -0
- package/dist/tasks/complete.js.map +1 -0
- package/dist/tasks/crossref-extract.js +73 -0
- package/dist/tasks/crossref-extract.js.map +1 -0
- package/dist/tasks/delete-preview.js +192 -0
- package/dist/tasks/delete-preview.js.map +1 -0
- package/dist/tasks/delete.js +120 -0
- package/dist/tasks/delete.js.map +1 -0
- package/dist/tasks/deletion-strategy.js +200 -0
- package/dist/tasks/deletion-strategy.js.map +1 -0
- package/dist/tasks/dependency-check.js +278 -0
- package/dist/tasks/dependency-check.js.map +1 -0
- package/dist/tasks/deps-ready.js +32 -0
- package/dist/tasks/deps-ready.js.map +1 -0
- package/dist/tasks/enforcement.js +86 -0
- package/dist/tasks/enforcement.js.map +1 -0
- package/dist/tasks/epic-enforcement.js +294 -0
- package/dist/tasks/epic-enforcement.js.map +1 -0
- package/dist/tasks/find.js +163 -0
- package/dist/tasks/find.js.map +1 -0
- package/dist/tasks/graph-cache.js +127 -0
- package/dist/tasks/graph-cache.js.map +1 -0
- package/dist/tasks/graph-ops.js +173 -0
- package/dist/tasks/graph-ops.js.map +1 -0
- package/dist/tasks/graph-rag.js +328 -0
- package/dist/tasks/graph-rag.js.map +1 -0
- package/dist/tasks/hierarchy-policy.js +149 -0
- package/dist/tasks/hierarchy-policy.js.map +1 -0
- package/dist/tasks/hierarchy.js +185 -0
- package/dist/tasks/hierarchy.js.map +1 -0
- package/dist/tasks/id-generator.js +65 -0
- package/dist/tasks/id-generator.js.map +1 -0
- package/dist/tasks/index.js +14 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/labels.js +55 -0
- package/dist/tasks/labels.js.map +1 -0
- package/dist/tasks/list.js +75 -0
- package/dist/tasks/list.js.map +1 -0
- package/dist/tasks/phase-tracking.js +133 -0
- package/dist/tasks/phase-tracking.js.map +1 -0
- package/dist/tasks/pipeline-stage.js +248 -0
- package/dist/tasks/pipeline-stage.js.map +1 -0
- package/dist/tasks/plan.js +268 -0
- package/dist/tasks/plan.js.map +1 -0
- package/dist/tasks/relates.js +101 -0
- package/dist/tasks/relates.js.map +1 -0
- package/dist/tasks/show.js +83 -0
- package/dist/tasks/show.js.map +1 -0
- package/dist/tasks/size-weighting.js +86 -0
- package/dist/tasks/size-weighting.js.map +1 -0
- package/dist/tasks/staleness.js +86 -0
- package/dist/tasks/staleness.js.map +1 -0
- package/dist/tasks/task-ops.js +1741 -0
- package/dist/tasks/task-ops.js.map +1 -0
- package/dist/tasks/update.js +303 -0
- package/dist/tasks/update.js.map +1 -0
- package/dist/telemetry/index.js +249 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/schema.js +60 -0
- package/dist/telemetry/schema.js.map +1 -0
- package/dist/telemetry/sqlite.js +111 -0
- package/dist/telemetry/sqlite.js.map +1 -0
- package/dist/templates/index.js +10 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/parser.js +254 -0
- package/dist/templates/parser.js.map +1 -0
- package/dist/ui/aliases.js +153 -0
- package/dist/ui/aliases.js.map +1 -0
- package/dist/ui/changelog.js +184 -0
- package/dist/ui/changelog.js.map +1 -0
- package/dist/ui/command-registry.js +168 -0
- package/dist/ui/command-registry.js.map +1 -0
- package/dist/ui/flags.js +94 -0
- package/dist/ui/flags.js.map +1 -0
- package/dist/ui/index.js +24 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/upgrade.js +1387 -0
- package/dist/upgrade.js.map +1 -0
- package/dist/validation/chain-validation.js +146 -0
- package/dist/validation/chain-validation.js.map +1 -0
- package/dist/validation/compliance.js +155 -0
- package/dist/validation/compliance.js.map +1 -0
- package/dist/validation/docs-sync.js +212 -0
- package/dist/validation/docs-sync.js.map +1 -0
- package/dist/validation/doctor/checks.js +1069 -0
- package/dist/validation/doctor/checks.js.map +1 -0
- package/dist/validation/doctor/index.js +9 -0
- package/dist/validation/doctor/index.js.map +1 -0
- package/dist/validation/doctor/project-cache.js +160 -0
- package/dist/validation/doctor/project-cache.js.map +1 -0
- package/dist/validation/doctor/utils.js +155 -0
- package/dist/validation/doctor/utils.js.map +1 -0
- package/dist/validation/engine.js +914 -0
- package/dist/validation/engine.js.map +1 -0
- package/dist/validation/gap-check.js +175 -0
- package/dist/validation/gap-check.js.map +1 -0
- package/dist/validation/index.js +40 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/manifest.js +237 -0
- package/dist/validation/manifest.js.map +1 -0
- package/dist/validation/operation-gate-validators.js +724 -0
- package/dist/validation/operation-gate-validators.js.map +1 -0
- package/dist/validation/operation-verification-gates.js +532 -0
- package/dist/validation/operation-verification-gates.js.map +1 -0
- package/dist/validation/param-utils.js +141 -0
- package/dist/validation/param-utils.js.map +1 -0
- package/dist/validation/protocol-common.js +300 -0
- package/dist/validation/protocol-common.js.map +1 -0
- package/dist/validation/protocols/_shared.js +82 -0
- package/dist/validation/protocols/_shared.js.map +1 -0
- package/dist/validation/protocols/architecture-decision.js +31 -0
- package/dist/validation/protocols/architecture-decision.js.map +1 -0
- package/dist/validation/protocols/artifact-publish.js +28 -0
- package/dist/validation/protocols/artifact-publish.js.map +1 -0
- package/dist/validation/protocols/consensus.js +41 -0
- package/dist/validation/protocols/consensus.js.map +1 -0
- package/dist/validation/protocols/contribution.js +27 -0
- package/dist/validation/protocols/contribution.js.map +1 -0
- package/dist/validation/protocols/decomposition.js +28 -0
- package/dist/validation/protocols/decomposition.js.map +1 -0
- package/dist/validation/protocols/implementation.js +24 -0
- package/dist/validation/protocols/implementation.js.map +1 -0
- package/dist/validation/protocols/provenance.js +29 -0
- package/dist/validation/protocols/provenance.js.map +1 -0
- package/dist/validation/protocols/release.js +29 -0
- package/dist/validation/protocols/release.js.map +1 -0
- package/dist/validation/protocols/research.js +24 -0
- package/dist/validation/protocols/research.js.map +1 -0
- package/dist/validation/protocols/specification.js +27 -0
- package/dist/validation/protocols/specification.js.map +1 -0
- package/dist/validation/protocols/testing.js +30 -0
- package/dist/validation/protocols/testing.js.map +1 -0
- package/dist/validation/protocols/validation.js +30 -0
- package/dist/validation/protocols/validation.js.map +1 -0
- package/dist/validation/schema-integrity.js +170 -0
- package/dist/validation/schema-integrity.js.map +1 -0
- package/dist/validation/schema-validator.js +176 -0
- package/dist/validation/schema-validator.js.map +1 -0
- package/dist/validation/validate-ops.js +937 -0
- package/dist/validation/validate-ops.js.map +1 -0
- package/dist/validation/validation-rules.js +226 -0
- package/dist/validation/validation-rules.js.map +1 -0
- package/dist/validation/verification.js +321 -0
- package/dist/validation/verification.js.map +1 -0
- package/package.json +8 -8
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Bridge Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates .cleo/memory-bridge.md from brain.db content. This file is
|
|
5
|
+
* @-referenced by CLEO-INJECTION.md so that any provider (Claude Code,
|
|
6
|
+
* OpenCode, Cursor, etc.) automatically loads project memory context.
|
|
7
|
+
*
|
|
8
|
+
* Content assembly:
|
|
9
|
+
* - Last session handoff summary
|
|
10
|
+
* - High-confidence learnings
|
|
11
|
+
* - Active patterns (follow + avoid)
|
|
12
|
+
* - Recent decisions
|
|
13
|
+
* - Recent observations
|
|
14
|
+
*
|
|
15
|
+
* Regeneration triggers:
|
|
16
|
+
* - session.end
|
|
17
|
+
* - tasks.complete
|
|
18
|
+
* - memory.observe (high-confidence observations only)
|
|
19
|
+
* - Manual: cleo refresh-memory
|
|
20
|
+
*
|
|
21
|
+
* @task T5240
|
|
22
|
+
* @epic T5149
|
|
23
|
+
*/
|
|
24
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
25
|
+
import { join } from 'node:path';
|
|
26
|
+
import { getLastHandoff } from '../sessions/handoff.js';
|
|
27
|
+
/** Default configuration. */
|
|
28
|
+
const DEFAULT_CONFIG = {
|
|
29
|
+
maxObservations: 10,
|
|
30
|
+
maxLearnings: 8,
|
|
31
|
+
maxPatterns: 8,
|
|
32
|
+
maxDecisions: 5,
|
|
33
|
+
includeHandoff: true,
|
|
34
|
+
includeAntiPatterns: true,
|
|
35
|
+
};
|
|
36
|
+
// ============================================================================
|
|
37
|
+
// Memory Decay Configuration (T028)
|
|
38
|
+
// ============================================================================
|
|
39
|
+
/**
|
|
40
|
+
* Confidence decay for old memories.
|
|
41
|
+
*
|
|
42
|
+
* effectiveConfidence = confidence * decayRate ^ (ageDays / halfLifeDays)
|
|
43
|
+
*
|
|
44
|
+
* With defaults: confidence halves every 90 days.
|
|
45
|
+
* A 0.9-confidence learning that is 180 days old has effective confidence:
|
|
46
|
+
* 0.9 * 0.5^(180/90) = 0.9 * 0.25 = 0.225 → would be filtered out (< 0.6 threshold).
|
|
47
|
+
*
|
|
48
|
+
* Memories with an `updated_at` timestamp use that instead of `created_at`,
|
|
49
|
+
* so referenced/updated memories decay more slowly.
|
|
50
|
+
*/
|
|
51
|
+
const DECAY_RATE = 0.5;
|
|
52
|
+
const DECAY_HALF_LIFE_DAYS = 90;
|
|
53
|
+
const DECAY_MIN_CONFIDENCE_THRESHOLD = 0.6;
|
|
54
|
+
/** Type-safe wrapper for StatementSync.all(). */
|
|
55
|
+
function typedAll(db, sql, ...params) {
|
|
56
|
+
return db.prepare(sql).all(...params);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Generate memory bridge content from brain.db.
|
|
60
|
+
* Returns the markdown string (does not write to disk).
|
|
61
|
+
*/
|
|
62
|
+
export async function generateMemoryBridgeContent(projectRoot, config) {
|
|
63
|
+
const cfg = { ...DEFAULT_CONFIG, ...config };
|
|
64
|
+
// Ensure brain.db is initialized
|
|
65
|
+
const { getBrainDb, getBrainNativeDb } = await import('../store/brain-sqlite.js');
|
|
66
|
+
await getBrainDb(projectRoot);
|
|
67
|
+
const nativeDb = getBrainNativeDb();
|
|
68
|
+
if (!nativeDb) {
|
|
69
|
+
return buildEmptyBridge();
|
|
70
|
+
}
|
|
71
|
+
const lines = [
|
|
72
|
+
'# CLEO Memory Bridge',
|
|
73
|
+
'',
|
|
74
|
+
`> Auto-generated at ${new Date().toISOString().slice(0, 19)}`,
|
|
75
|
+
'> Do not edit manually. Regenerate with `cleo refresh-memory`.',
|
|
76
|
+
'',
|
|
77
|
+
];
|
|
78
|
+
// --- Last session handoff ---
|
|
79
|
+
if (cfg.includeHandoff) {
|
|
80
|
+
const handoffData = await getLastHandoffSafe(projectRoot);
|
|
81
|
+
if (handoffData) {
|
|
82
|
+
const h = handoffData.handoff;
|
|
83
|
+
lines.push('## Last Session');
|
|
84
|
+
lines.push('');
|
|
85
|
+
lines.push(`- **Session**: ${handoffData.sessionId}`);
|
|
86
|
+
if (h.lastTask) {
|
|
87
|
+
lines.push(`- **Last focused task**: ${h.lastTask}`);
|
|
88
|
+
}
|
|
89
|
+
if (h.tasksCompleted.length > 0) {
|
|
90
|
+
lines.push(`- **Completed**: ${h.tasksCompleted.join(', ')}`);
|
|
91
|
+
}
|
|
92
|
+
if (h.nextSuggested.length > 0) {
|
|
93
|
+
lines.push(`- **Next suggested**: ${h.nextSuggested.join(', ')}`);
|
|
94
|
+
}
|
|
95
|
+
if (h.openBlockers.length > 0) {
|
|
96
|
+
lines.push(`- **Open blockers**: ${h.openBlockers.join(', ')}`);
|
|
97
|
+
}
|
|
98
|
+
if (h.note) {
|
|
99
|
+
lines.push(`- **Note**: ${h.note}`);
|
|
100
|
+
}
|
|
101
|
+
lines.push('');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// --- Decisions ---
|
|
105
|
+
const decisions = queryRecentDecisions(nativeDb, cfg.maxDecisions);
|
|
106
|
+
if (decisions.length > 0) {
|
|
107
|
+
lines.push('## Recent Decisions');
|
|
108
|
+
lines.push('');
|
|
109
|
+
for (const d of decisions) {
|
|
110
|
+
const date = (d.created_at ?? '').slice(0, 10);
|
|
111
|
+
lines.push(`- [${d.id}] ${d.decision.slice(0, 300)} (${date})`);
|
|
112
|
+
}
|
|
113
|
+
lines.push('');
|
|
114
|
+
}
|
|
115
|
+
// --- Learnings ---
|
|
116
|
+
const learnings = queryHighConfidenceLearnings(nativeDb, cfg.maxLearnings);
|
|
117
|
+
if (learnings.length > 0) {
|
|
118
|
+
lines.push('## Key Learnings');
|
|
119
|
+
lines.push('');
|
|
120
|
+
for (const l of learnings) {
|
|
121
|
+
lines.push(`- [${l.id}] ${l.insight.slice(0, 400)} (confidence: ${l.confidence})`);
|
|
122
|
+
}
|
|
123
|
+
lines.push('');
|
|
124
|
+
}
|
|
125
|
+
// --- Patterns to Follow (success, workflow, optimization) ---
|
|
126
|
+
const followPatterns = queryUsefulPatterns(nativeDb, 'follow', cfg.maxPatterns);
|
|
127
|
+
if (followPatterns.length > 0) {
|
|
128
|
+
lines.push('## Patterns to Follow');
|
|
129
|
+
lines.push('');
|
|
130
|
+
for (const p of followPatterns) {
|
|
131
|
+
lines.push(`- [${p.id}] ${p.pattern.slice(0, 300)} (${p.type})`);
|
|
132
|
+
}
|
|
133
|
+
lines.push('');
|
|
134
|
+
}
|
|
135
|
+
// --- Anti-Patterns to Avoid (failure, blocker) ---
|
|
136
|
+
if (cfg.includeAntiPatterns) {
|
|
137
|
+
const avoidPatterns = queryUsefulPatterns(nativeDb, 'avoid', cfg.maxPatterns);
|
|
138
|
+
if (avoidPatterns.length > 0) {
|
|
139
|
+
lines.push('## Anti-Patterns to Avoid');
|
|
140
|
+
lines.push('');
|
|
141
|
+
for (const p of avoidPatterns) {
|
|
142
|
+
lines.push(`- [${p.id}] AVOID: ${p.pattern.slice(0, 300)}`);
|
|
143
|
+
}
|
|
144
|
+
lines.push('');
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// --- Recent observations ---
|
|
148
|
+
const observations = queryRecentObservations(nativeDb, cfg.maxObservations);
|
|
149
|
+
if (observations.length > 0) {
|
|
150
|
+
lines.push('## Recent Observations');
|
|
151
|
+
lines.push('');
|
|
152
|
+
for (const o of observations) {
|
|
153
|
+
const date = (o.created_at ?? '').slice(0, 10);
|
|
154
|
+
lines.push(`- [${o.id}] ${date}: ${o.title.slice(0, 200)}`);
|
|
155
|
+
}
|
|
156
|
+
lines.push('');
|
|
157
|
+
}
|
|
158
|
+
return lines.join('\n');
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Write memory bridge content to .cleo/memory-bridge.md.
|
|
162
|
+
*/
|
|
163
|
+
export async function writeMemoryBridge(projectRoot, config) {
|
|
164
|
+
const cleoDir = join(projectRoot, '.cleo');
|
|
165
|
+
const bridgePath = join(cleoDir, 'memory-bridge.md');
|
|
166
|
+
try {
|
|
167
|
+
const content = await generateMemoryBridgeContent(projectRoot, config);
|
|
168
|
+
if (!existsSync(cleoDir)) {
|
|
169
|
+
mkdirSync(cleoDir, { recursive: true });
|
|
170
|
+
}
|
|
171
|
+
// Only write if content changed (avoid unnecessary git noise)
|
|
172
|
+
if (existsSync(bridgePath)) {
|
|
173
|
+
const existing = readFileSync(bridgePath, 'utf-8');
|
|
174
|
+
// Compare without the timestamp line
|
|
175
|
+
const stripTimestamp = (s) => s.replace(/^> Auto-generated at .*/m, '');
|
|
176
|
+
if (stripTimestamp(existing) === stripTimestamp(content)) {
|
|
177
|
+
return { path: bridgePath, written: false };
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
writeFileSync(bridgePath, content, 'utf-8');
|
|
181
|
+
return { path: bridgePath, written: true };
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
console.error('[CLEO] Failed to write memory bridge:', err instanceof Error ? err.message : String(err));
|
|
185
|
+
return { path: bridgePath, written: false };
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Best-effort refresh: call from session.end, tasks.complete, or memory.observe.
|
|
190
|
+
* Never throws.
|
|
191
|
+
*
|
|
192
|
+
* @param projectRoot - Absolute path to the project root.
|
|
193
|
+
* @param scope - Optional session scope for context-aware generation (T139).
|
|
194
|
+
* @param currentTaskId - Optional current task ID for scoped context (T139).
|
|
195
|
+
*/
|
|
196
|
+
export async function refreshMemoryBridge(projectRoot, scope, currentTaskId) {
|
|
197
|
+
try {
|
|
198
|
+
const { loadConfig } = await import('../config.js');
|
|
199
|
+
const config = await loadConfig(projectRoot);
|
|
200
|
+
if (config.brain?.memoryBridge?.contextAware && scope) {
|
|
201
|
+
await generateContextAwareContent(projectRoot, scope, currentTaskId);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
await writeMemoryBridge(projectRoot);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
console.error('[CLEO] Memory bridge refresh failed:', err instanceof Error ? err.message : String(err));
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Generate context-aware memory bridge content and write to disk.
|
|
213
|
+
*
|
|
214
|
+
* When `brain.memoryBridge.contextAware` is true and a scope is available,
|
|
215
|
+
* uses hybridSearch() to surface memories relevant to the current scope,
|
|
216
|
+
* then enforces the `brain.memoryBridge.maxTokens` budget.
|
|
217
|
+
*
|
|
218
|
+
* Falls back to standard generation if hybrid search is unavailable.
|
|
219
|
+
* Never throws.
|
|
220
|
+
*
|
|
221
|
+
* @param projectRoot - Absolute path to the project root.
|
|
222
|
+
* @param scope - Session scope string (e.g. 'global', 'epic:T###').
|
|
223
|
+
* @param currentTaskId - Optional current task ID for narrower scoping.
|
|
224
|
+
* @task T139 @epic T134
|
|
225
|
+
*/
|
|
226
|
+
export async function generateContextAwareContent(projectRoot, scope, currentTaskId) {
|
|
227
|
+
try {
|
|
228
|
+
const { loadConfig } = await import('../config.js');
|
|
229
|
+
const config = await loadConfig(projectRoot);
|
|
230
|
+
const maxTokens = config.brain?.memoryBridge?.maxTokens ?? 2000;
|
|
231
|
+
// Build a search query from scope + currentTaskId
|
|
232
|
+
const query = currentTaskId ? `${scope} ${currentTaskId}` : scope;
|
|
233
|
+
let contextSections = [];
|
|
234
|
+
try {
|
|
235
|
+
const { hybridSearch } = await import('./brain-search.js');
|
|
236
|
+
const hits = await hybridSearch(query, projectRoot, { limit: 10 });
|
|
237
|
+
if (hits && hits.length > 0) {
|
|
238
|
+
contextSections = hits
|
|
239
|
+
.slice(0, 5)
|
|
240
|
+
.map((h) => `- [${h.id}] ${h.title ?? h.text?.slice(0, 120) ?? ''}`);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
// Hybrid search unavailable — fall back to standard generation
|
|
245
|
+
await writeMemoryBridge(projectRoot);
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
// Build content with token budget enforcement (rough estimate: 4 chars/token)
|
|
249
|
+
const charsPerToken = 4;
|
|
250
|
+
const budgetChars = maxTokens * charsPerToken;
|
|
251
|
+
const cleoDir = join(projectRoot, '.cleo');
|
|
252
|
+
const bridgePath = join(cleoDir, 'memory-bridge.md');
|
|
253
|
+
const headerLines = [
|
|
254
|
+
'# CLEO Memory Bridge',
|
|
255
|
+
'',
|
|
256
|
+
`> Auto-generated at ${new Date().toISOString().slice(0, 19)} (context-aware: ${scope})`,
|
|
257
|
+
'> Do not edit manually. Regenerate with `cleo refresh-memory`.',
|
|
258
|
+
'',
|
|
259
|
+
];
|
|
260
|
+
const contextBlock = contextSections.length > 0 ? ['## Relevant Context', '', ...contextSections, ''] : [];
|
|
261
|
+
// Append standard content but enforce token budget
|
|
262
|
+
const standardContent = await generateMemoryBridgeContent(projectRoot);
|
|
263
|
+
const combined = [...headerLines, ...contextBlock].join('\n');
|
|
264
|
+
const remainingChars = budgetChars - combined.length;
|
|
265
|
+
const finalContent = remainingChars > 200 ? combined + '\n' + standardContent.slice(0, remainingChars) : combined;
|
|
266
|
+
if (!existsSync(cleoDir)) {
|
|
267
|
+
mkdirSync(cleoDir, { recursive: true });
|
|
268
|
+
}
|
|
269
|
+
writeFileSync(bridgePath, finalContent, 'utf-8');
|
|
270
|
+
}
|
|
271
|
+
catch {
|
|
272
|
+
// Best-effort — fall through to standard generation
|
|
273
|
+
try {
|
|
274
|
+
await writeMemoryBridge(projectRoot);
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
// Ignore
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// ============================================================================
|
|
282
|
+
// Query helpers
|
|
283
|
+
// ============================================================================
|
|
284
|
+
/** Wrapper around getLastHandoff that never throws. */
|
|
285
|
+
async function getLastHandoffSafe(projectRoot) {
|
|
286
|
+
try {
|
|
287
|
+
return await getLastHandoff(projectRoot);
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
function queryRecentDecisions(db, limit) {
|
|
294
|
+
try {
|
|
295
|
+
return typedAll(db, 'SELECT id, decision, created_at FROM brain_decisions ORDER BY created_at DESC LIMIT ?', limit);
|
|
296
|
+
}
|
|
297
|
+
catch {
|
|
298
|
+
return [];
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
function queryHighConfidenceLearnings(db, limit) {
|
|
302
|
+
try {
|
|
303
|
+
// Fetch more than needed so we can apply decay filtering client-side.
|
|
304
|
+
// We fetch 3x the limit to account for entries that will be filtered out.
|
|
305
|
+
const candidates = typedAll(db, `SELECT id, insight, confidence, created_at, updated_at FROM brain_learnings
|
|
306
|
+
WHERE CAST(confidence AS REAL) >= 0.3
|
|
307
|
+
AND insight NOT LIKE 'Completed:%'
|
|
308
|
+
ORDER BY confidence DESC, created_at DESC
|
|
309
|
+
LIMIT ?`, limit * 3);
|
|
310
|
+
// Apply confidence decay based on age (T028).
|
|
311
|
+
// Uses updated_at if available (referenced memories decay slower),
|
|
312
|
+
// otherwise falls back to created_at.
|
|
313
|
+
const now = Date.now();
|
|
314
|
+
const MS_PER_DAY = 86_400_000;
|
|
315
|
+
return candidates
|
|
316
|
+
.map((row) => {
|
|
317
|
+
const referenceDate = row.updated_at || row.created_at;
|
|
318
|
+
const ageDays = Math.max(0, (now - new Date(referenceDate).getTime()) / MS_PER_DAY);
|
|
319
|
+
const rawConfidence = parseFloat(row.confidence) || 0;
|
|
320
|
+
const effectiveConfidence = rawConfidence * DECAY_RATE ** (ageDays / DECAY_HALF_LIFE_DAYS);
|
|
321
|
+
return { ...row, effectiveConfidence };
|
|
322
|
+
})
|
|
323
|
+
.filter((row) => row.effectiveConfidence >= DECAY_MIN_CONFIDENCE_THRESHOLD)
|
|
324
|
+
.sort((a, b) => b.effectiveConfidence - a.effectiveConfidence)
|
|
325
|
+
.slice(0, limit)
|
|
326
|
+
.map(({ effectiveConfidence, ...row }) => ({
|
|
327
|
+
...row,
|
|
328
|
+
// Override displayed confidence with effective value for transparency
|
|
329
|
+
confidence: effectiveConfidence.toFixed(2),
|
|
330
|
+
}));
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
return [];
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
function queryUsefulPatterns(db, mode, limit) {
|
|
337
|
+
try {
|
|
338
|
+
const typeFilter = mode === 'follow'
|
|
339
|
+
? "type IN ('success', 'workflow', 'optimization')"
|
|
340
|
+
: "type IN ('failure', 'blocker')";
|
|
341
|
+
return typedAll(db, `SELECT id, pattern, type, impact, extracted_at FROM brain_patterns
|
|
342
|
+
WHERE ${typeFilter}
|
|
343
|
+
AND pattern NOT LIKE 'Recurring label%'
|
|
344
|
+
AND pattern NOT LIKE 'Test pattern%'
|
|
345
|
+
AND pattern NOT LIKE 'test'
|
|
346
|
+
AND pattern NOT LIKE 'Audit probe:%'
|
|
347
|
+
AND LENGTH(pattern) > 20
|
|
348
|
+
ORDER BY extracted_at DESC
|
|
349
|
+
LIMIT ?`, limit);
|
|
350
|
+
}
|
|
351
|
+
catch {
|
|
352
|
+
return [];
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
function queryRecentObservations(db, limit) {
|
|
356
|
+
try {
|
|
357
|
+
return typedAll(db, `SELECT id, title, type, created_at FROM brain_observations
|
|
358
|
+
WHERE type != 'change'
|
|
359
|
+
AND title NOT LIKE 'File changed:%'
|
|
360
|
+
AND title NOT LIKE 'Task start:%'
|
|
361
|
+
AND title NOT LIKE 'Task complete:%'
|
|
362
|
+
AND title NOT LIKE '[hook]%'
|
|
363
|
+
ORDER BY created_at DESC LIMIT ?`, limit);
|
|
364
|
+
}
|
|
365
|
+
catch {
|
|
366
|
+
return [];
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
// ============================================================================
|
|
370
|
+
// Helpers
|
|
371
|
+
// ============================================================================
|
|
372
|
+
function buildEmptyBridge() {
|
|
373
|
+
return [
|
|
374
|
+
'# CLEO Memory Bridge',
|
|
375
|
+
'',
|
|
376
|
+
`> Auto-generated at ${new Date().toISOString().slice(0, 19)}`,
|
|
377
|
+
'',
|
|
378
|
+
'No brain.db data available yet. Observations will appear here as you work.',
|
|
379
|
+
'',
|
|
380
|
+
].join('\n');
|
|
381
|
+
}
|
|
382
|
+
//# sourceMappingURL=memory-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-bridge.js","sourceRoot":"","sources":["../../src/memory/memory-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helpers for validate-on-load mental-model injection.
|
|
3
|
+
*
|
|
4
|
+
* These helpers are used by:
|
|
5
|
+
* - The Pi CANT bridge (cleo-cant-bridge.ts) to build the system-prompt block
|
|
6
|
+
* - T421 empirical tests to assert on preamble content without a real Pi runtime
|
|
7
|
+
*
|
|
8
|
+
* No I/O. Safe to call in tests without a real DB or Pi extension context.
|
|
9
|
+
*
|
|
10
|
+
* @task T420
|
|
11
|
+
* @epic T377
|
|
12
|
+
* @wave W8
|
|
13
|
+
*/
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Constants
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Preamble text injected into the Pi system prompt when an agent has a
|
|
19
|
+
* `mental_model:` CANT block. The agent MUST re-evaluate each observation
|
|
20
|
+
* against the current project state before acting.
|
|
21
|
+
*
|
|
22
|
+
* Exported so empirical tests (T421) can assert on its presence.
|
|
23
|
+
*/
|
|
24
|
+
export const VALIDATE_ON_LOAD_PREAMBLE = '===== MENTAL MODEL (validate-on-load) =====\n' +
|
|
25
|
+
'These are your prior observations, patterns, and learnings for this project.\n' +
|
|
26
|
+
'Before acting, you MUST re-evaluate each entry against current project state.\n' +
|
|
27
|
+
'If an entry is stale, note it and proceed with fresh understanding.';
|
|
28
|
+
// ============================================================================
|
|
29
|
+
// Pure helpers
|
|
30
|
+
// ============================================================================
|
|
31
|
+
/**
|
|
32
|
+
* Build the validate-on-load mental-model injection string.
|
|
33
|
+
*
|
|
34
|
+
* Pure function — no I/O, safe to call in tests without a real DB.
|
|
35
|
+
*
|
|
36
|
+
* @param agentName - Name of the spawned agent (used in the header line).
|
|
37
|
+
* @param observations - Prior mental-model observations to list.
|
|
38
|
+
* @returns System-prompt block containing the preamble and numbered observations,
|
|
39
|
+
* or an empty string when `observations` is empty.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* const block = buildMentalModelInjection('my-agent', [
|
|
44
|
+
* { id: 'O-abc1', type: 'discovery', title: 'Auth uses JWT', date: '2026-04-08' },
|
|
45
|
+
* ]);
|
|
46
|
+
* // block contains VALIDATE_ON_LOAD_PREAMBLE + numbered list
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export function buildMentalModelInjection(agentName, observations) {
|
|
50
|
+
if (observations.length === 0)
|
|
51
|
+
return '';
|
|
52
|
+
const lines = ['', `// Agent: ${agentName}`, VALIDATE_ON_LOAD_PREAMBLE, ''];
|
|
53
|
+
for (let i = 0; i < observations.length; i++) {
|
|
54
|
+
const obs = observations[i];
|
|
55
|
+
const datePart = obs.date ? ` [${obs.date}]` : '';
|
|
56
|
+
lines.push(`${i + 1}. [${obs.id}] (${obs.type})${datePart}: ${obs.title}`);
|
|
57
|
+
}
|
|
58
|
+
lines.push('===== END MENTAL MODEL =====');
|
|
59
|
+
return lines.join('\n');
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=mental-model-injection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mental-model-injection.js","sourceRoot":"","sources":["../../src/memory/mental-model-injection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAkBH,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GACpC,+CAA+C;IAC/C,gFAAgF;IAChF,iFAAiF;IACjF,qEAAqE,CAAC;AAExE,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,yBAAyB,CACvC,SAAiB,EACjB,YAAsC;IAEtC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEzC,MAAM,KAAK,GAAa,CAAC,EAAE,EAAE,aAAa,SAAS,EAAE,EAAE,yBAAyB,EAAE,EAAE,CAAC,CAAC;IAEtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,IAAI,QAAQ,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAE3C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Async reinforcement queue for non-blocking mental-model writes.
|
|
3
|
+
*
|
|
4
|
+
* ULTRAPLAN L5 compliance: observations tagged with an `agent` provenance and a
|
|
5
|
+
* mental-model-relevant type ('discovery', 'change', 'feature', 'decision') are
|
|
6
|
+
* routed through this queue instead of writing synchronously to brain.db. This
|
|
7
|
+
* decouples the hot path (agent execution) from I/O latency.
|
|
8
|
+
*
|
|
9
|
+
* The queue is drained to brain.db either:
|
|
10
|
+
* 1. Periodically — every {@link FLUSH_INTERVAL_MS} milliseconds via a timer.
|
|
11
|
+
* 2. On high watermark — when the queue exceeds {@link FLUSH_WATERMARK} entries.
|
|
12
|
+
* 3. On process exit — SIGINT, SIGTERM, and 'exit' hooks perform a best-effort
|
|
13
|
+
* synchronous flush so no observations are lost.
|
|
14
|
+
*
|
|
15
|
+
* Observations without an `agent` field continue to use the existing synchronous
|
|
16
|
+
* path in observeBrain() and are never routed here.
|
|
17
|
+
*
|
|
18
|
+
* @task T383/T419
|
|
19
|
+
* @epic T377
|
|
20
|
+
*/
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// Constants
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
/** Drain interval in milliseconds. */
|
|
25
|
+
const FLUSH_INTERVAL_MS = 5_000;
|
|
26
|
+
/** Drain when queue exceeds this many entries, regardless of timer. */
|
|
27
|
+
const FLUSH_WATERMARK = 50;
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Observation types that route through the mental-model queue.
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
/**
|
|
32
|
+
* Observation types that are considered mental-model relevant and therefore
|
|
33
|
+
* eligible for async queuing when produced by a named agent.
|
|
34
|
+
*/
|
|
35
|
+
const MENTAL_MODEL_TYPES = new Set([
|
|
36
|
+
'discovery',
|
|
37
|
+
'change',
|
|
38
|
+
'feature',
|
|
39
|
+
'decision',
|
|
40
|
+
'bugfix',
|
|
41
|
+
'refactor',
|
|
42
|
+
]);
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
// Queue implementation
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
/** In-memory queue of pending mental-model observations. */
|
|
47
|
+
const _queue = [];
|
|
48
|
+
/** Whether a flush is currently in progress (prevents re-entrant flushes). */
|
|
49
|
+
let _flushing = false;
|
|
50
|
+
/** Whether process-exit hooks have been registered. */
|
|
51
|
+
let _hooksRegistered = false;
|
|
52
|
+
/** Handle for the periodic flush timer (undefined = no active timer). */
|
|
53
|
+
let _timer;
|
|
54
|
+
/**
|
|
55
|
+
* Drain the queue synchronously where possible, or fall back to async writes.
|
|
56
|
+
* Returns when all observations in the current batch have been persisted.
|
|
57
|
+
*/
|
|
58
|
+
async function drainQueue() {
|
|
59
|
+
if (_queue.length === 0)
|
|
60
|
+
return 0;
|
|
61
|
+
// Snapshot current batch and clear the queue
|
|
62
|
+
const batch = _queue.splice(0, _queue.length);
|
|
63
|
+
let count = 0;
|
|
64
|
+
// Import observeBrain lazily to avoid circular dependencies at module load
|
|
65
|
+
const { observeBrain } = await import('./brain-retrieval.js');
|
|
66
|
+
for (const entry of batch) {
|
|
67
|
+
try {
|
|
68
|
+
const result = await observeBrain(entry.projectRoot, entry.params);
|
|
69
|
+
entry.resolve(result);
|
|
70
|
+
count++;
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
74
|
+
entry.reject(error);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return count;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Best-effort synchronous exit flush.
|
|
81
|
+
* Used in 'exit' event handler where async I/O is not guaranteed.
|
|
82
|
+
* Falls back to fire-and-forget if the environment does not support
|
|
83
|
+
* synchronous-style promises (i.e., in environments where the event
|
|
84
|
+
* loop may already be draining).
|
|
85
|
+
*/
|
|
86
|
+
function exitFlush() {
|
|
87
|
+
if (_queue.length === 0)
|
|
88
|
+
return;
|
|
89
|
+
// We can't reliably await in a synchronous exit handler. The best we
|
|
90
|
+
// can do is trigger the drain and hope the pending writes complete.
|
|
91
|
+
drainQueue().catch(() => {
|
|
92
|
+
// Silently swallow — process is terminating anyway
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Register process-exit hooks once.
|
|
97
|
+
* Ensures that no observations are silently dropped on graceful shutdown.
|
|
98
|
+
*/
|
|
99
|
+
function registerExitHooks() {
|
|
100
|
+
if (_hooksRegistered)
|
|
101
|
+
return;
|
|
102
|
+
_hooksRegistered = true;
|
|
103
|
+
process.on('exit', exitFlush);
|
|
104
|
+
process.once('SIGINT', () => {
|
|
105
|
+
drainQueue()
|
|
106
|
+
.catch(() => {
|
|
107
|
+
/* best-effort */
|
|
108
|
+
})
|
|
109
|
+
.finally(() => {
|
|
110
|
+
process.exit(130); // 128 + SIGINT
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
process.once('SIGTERM', () => {
|
|
114
|
+
drainQueue()
|
|
115
|
+
.catch(() => {
|
|
116
|
+
/* best-effort */
|
|
117
|
+
})
|
|
118
|
+
.finally(() => {
|
|
119
|
+
process.exit(143); // 128 + SIGTERM
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Start the periodic flush timer if it isn't already running.
|
|
125
|
+
*/
|
|
126
|
+
function ensureTimer() {
|
|
127
|
+
if (_timer !== undefined)
|
|
128
|
+
return;
|
|
129
|
+
_timer = setInterval(() => {
|
|
130
|
+
if (_queue.length === 0)
|
|
131
|
+
return;
|
|
132
|
+
if (_flushing)
|
|
133
|
+
return;
|
|
134
|
+
_flushing = true;
|
|
135
|
+
drainQueue()
|
|
136
|
+
.catch(() => {
|
|
137
|
+
/* best-effort */
|
|
138
|
+
})
|
|
139
|
+
.finally(() => {
|
|
140
|
+
_flushing = false;
|
|
141
|
+
});
|
|
142
|
+
}, FLUSH_INTERVAL_MS);
|
|
143
|
+
// Unref so the timer doesn't prevent process exit when queue is idle
|
|
144
|
+
if (typeof _timer.unref === 'function') {
|
|
145
|
+
_timer.unref();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// ---------------------------------------------------------------------------
|
|
149
|
+
// Public singleton
|
|
150
|
+
// ---------------------------------------------------------------------------
|
|
151
|
+
/**
|
|
152
|
+
* Mental-model queue singleton.
|
|
153
|
+
*
|
|
154
|
+
* Use this instead of calling observeBrain() directly when writing agent-tagged
|
|
155
|
+
* observations that should be queued for async persistence (ULTRAPLAN L5).
|
|
156
|
+
*/
|
|
157
|
+
export const mentalModelQueue = {
|
|
158
|
+
enqueue(projectRoot, params) {
|
|
159
|
+
registerExitHooks();
|
|
160
|
+
ensureTimer();
|
|
161
|
+
return new Promise((resolve, reject) => {
|
|
162
|
+
_queue.push({ projectRoot, params, resolve, reject });
|
|
163
|
+
// High-watermark flush
|
|
164
|
+
if (_queue.length >= FLUSH_WATERMARK && !_flushing) {
|
|
165
|
+
_flushing = true;
|
|
166
|
+
drainQueue()
|
|
167
|
+
.catch(() => {
|
|
168
|
+
/* best-effort */
|
|
169
|
+
})
|
|
170
|
+
.finally(() => {
|
|
171
|
+
_flushing = false;
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
},
|
|
176
|
+
async flush() {
|
|
177
|
+
if (_flushing) {
|
|
178
|
+
// Wait for the current flush to settle then flush again
|
|
179
|
+
await new Promise((r) => setTimeout(r, 50));
|
|
180
|
+
}
|
|
181
|
+
_flushing = true;
|
|
182
|
+
try {
|
|
183
|
+
return await drainQueue();
|
|
184
|
+
}
|
|
185
|
+
finally {
|
|
186
|
+
_flushing = false;
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
size() {
|
|
190
|
+
return _queue.length;
|
|
191
|
+
},
|
|
192
|
+
};
|
|
193
|
+
// ---------------------------------------------------------------------------
|
|
194
|
+
// Helpers
|
|
195
|
+
// ---------------------------------------------------------------------------
|
|
196
|
+
/**
|
|
197
|
+
* Determine whether an observation should be routed through the mental-model
|
|
198
|
+
* queue rather than written synchronously.
|
|
199
|
+
*
|
|
200
|
+
* Returns `true` when the observation has a non-empty `agent` field AND a
|
|
201
|
+
* mental-model-relevant type.
|
|
202
|
+
*
|
|
203
|
+
* @param params - Observation parameters to evaluate.
|
|
204
|
+
*/
|
|
205
|
+
export function isMentalModelObservation(params) {
|
|
206
|
+
if (!params.agent)
|
|
207
|
+
return false;
|
|
208
|
+
const type = params.type ?? 'discovery';
|
|
209
|
+
return MENTAL_MODEL_TYPES.has(type);
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=mental-model-queue.js.map
|