@cleocode/core 2026.4.30 → 2026.4.35
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.d.ts +35 -0
- package/dist/bootstrap.d.ts.map +1 -1
- 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.d.ts +8 -4
- package/dist/code/index.d.ts.map +1 -1
- 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.d.ts +22 -9
- package/dist/code/parser.d.ts.map +1 -1
- 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 +52 -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/index.js +15 -0
- package/dist/conduit/index.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 +400 -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/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.d.ts +4 -0
- package/dist/hooks/handlers/index.d.ts.map +1 -1
- package/dist/hooks/handlers/index.js +34 -0
- package/dist/hooks/handlers/index.js.map +1 -0
- package/dist/hooks/handlers/intelligence-hooks.d.ts +26 -0
- package/dist/hooks/handlers/intelligence-hooks.d.ts.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.d.ts +27 -4
- package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/session-hooks.js +157 -0
- package/dist/hooks/handlers/session-hooks.js.map +1 -0
- package/dist/hooks/handlers/task-hooks.js +65 -0
- package/dist/hooks/handlers/task-hooks.js.map +1 -0
- package/dist/hooks/handlers/watchdog-hooks.d.ts +49 -0
- package/dist/hooks/handlers/watchdog-hooks.d.ts.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.d.ts +6 -6
- 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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8765 -6253
- package/dist/index.js.map +4 -4
- package/dist/init.js +920 -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.d.ts +13 -1
- package/dist/injection.d.ts.map +1 -1
- 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/internal.d.ts +18 -10
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +320 -0
- package/dist/internal.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.d.ts +11 -7
- package/dist/lib/tree-sitter-languages.d.ts.map +1 -1
- 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/auto-extract.d.ts +27 -15
- package/dist/memory/auto-extract.d.ts.map +1 -1
- package/dist/memory/auto-extract.js +96 -0
- package/dist/memory/auto-extract.js.map +1 -0
- package/dist/memory/brain-backfill.d.ts +59 -0
- package/dist/memory/brain-backfill.d.ts.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.d.ts +48 -0
- package/dist/memory/brain-consolidator.d.ts.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-lifecycle.d.ts +83 -2
- package/dist/memory/brain-lifecycle.d.ts.map +1 -1
- package/dist/memory/brain-lifecycle.js +807 -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 +114 -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.d.ts +51 -0
- package/dist/memory/brain-purge.d.ts.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.d.ts +69 -1
- package/dist/memory/brain-retrieval.d.ts.map +1 -1
- package/dist/memory/brain-retrieval.js +912 -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.d.ts.map +1 -1
- package/dist/memory/brain-search.js +528 -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/claude-mem-migration.js +277 -0
- package/dist/memory/claude-mem-migration.js.map +1 -0
- package/dist/memory/decisions.d.ts.map +1 -1
- package/dist/memory/decisions.js +218 -0
- package/dist/memory/decisions.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.d.ts +71 -0
- package/dist/memory/engine-compat.d.ts.map +1 -1
- package/dist/memory/engine-compat.js +1564 -0
- package/dist/memory/engine-compat.js.map +1 -0
- package/dist/memory/extraction-gate.d.ts +139 -0
- package/dist/memory/extraction-gate.d.ts.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.d.ts +65 -0
- package/dist/memory/graph-auto-populate.d.ts.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-queries.d.ts +127 -0
- package/dist/memory/graph-queries.d.ts.map +1 -0
- package/dist/memory/graph-queries.js +290 -0
- package/dist/memory/graph-queries.js.map +1 -0
- package/dist/memory/index.d.ts +2 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +1144 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/learnings.d.ts +16 -0
- package/dist/memory/learnings.d.ts.map +1 -1
- package/dist/memory/learnings.js +178 -0
- package/dist/memory/learnings.js.map +1 -0
- package/dist/memory/memory-bridge.js +370 -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/patterns.d.ts +26 -4
- package/dist/memory/patterns.d.ts.map +1 -1
- package/dist/memory/patterns.js +174 -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-scoring.d.ts +127 -0
- package/dist/memory/quality-scoring.d.ts.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/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.d.ts +51 -0
- package/dist/nexus/nexus-bridge.d.ts.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 +584 -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.d.ts +18 -0
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +1798 -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.d.ts +16 -10
- package/dist/sessions/session-memory-bridge.d.ts.map +1 -1
- 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.d.ts.map +1 -1
- 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.d.ts +7 -0
- package/dist/store/brain-accessor.d.ts.map +1 -1
- package/dist/store/brain-accessor.js +429 -0
- package/dist/store/brain-accessor.js.map +1 -0
- package/dist/store/brain-schema.d.ts +712 -45
- package/dist/store/brain-schema.d.ts.map +1 -1
- package/dist/store/brain-schema.js +549 -0
- package/dist/store/brain-schema.js.map +1 -0
- package/dist/store/brain-sqlite.d.ts.map +1 -1
- package/dist/store/brain-sqlite.js +257 -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 +224 -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.d.ts +5 -1
- package/dist/store/migration-manager.d.ts.map +1 -1
- package/dist/store/migration-manager.js +288 -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.d.ts +480 -2
- package/dist/store/nexus-schema.d.ts.map +1 -1
- package/dist/store/nexus-schema.js +268 -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 +787 -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.d.ts +10 -10
- 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.d.ts +50 -34
- package/dist/store/validation-schemas.d.ts.map +1 -1
- 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.d.ts +43 -0
- package/dist/system/dependencies.d.ts.map +1 -0
- package/dist/system/dependencies.js +466 -0
- package/dist/system/dependencies.js.map +1 -0
- package/dist/system/health.d.ts +3 -0
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +1206 -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.d.ts.map +1 -1
- package/dist/tasks/complete.js +229 -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.d.ts.map +1 -1
- 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/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 +1148 -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/migrations/drizzle-brain/20260411000001_t528-graph-schema-expansion/migration.sql +47 -0
- package/migrations/drizzle-brain/20260412000001_t531-quality-score-typed-tables/migration.sql +23 -0
- package/migrations/drizzle-brain/20260413000001_t549-tiered-typed-memory/migration.sql +195 -0
- package/migrations/drizzle-nexus/20260412000001_t529-nexus-graph-tables/migration.sql +49 -0
- package/package.json +19 -19
- package/src/bootstrap.ts +124 -0
- package/src/code/index.ts +20 -4
- package/src/code/parser.ts +310 -110
- package/src/hooks/handlers/__tests__/hook-automation-e2e.test.ts +19 -45
- package/src/hooks/handlers/__tests__/session-hooks.test.ts +42 -54
- package/src/hooks/handlers/index.ts +6 -0
- package/src/hooks/handlers/intelligence-hooks.ts +80 -0
- package/src/hooks/handlers/session-hooks.ts +52 -33
- package/src/hooks/handlers/watchdog-hooks.ts +187 -0
- package/src/index.ts +14 -0
- package/src/injection.ts +41 -2
- package/src/internal.ts +68 -9
- package/src/lib/tree-sitter-languages.ts +11 -7
- package/src/memory/__tests__/auto-extract.test.ts +20 -82
- package/src/memory/__tests__/embedding-pipeline.test.ts +389 -0
- package/src/memory/auto-extract.ts +34 -120
- package/src/memory/brain-backfill.ts +471 -0
- package/src/memory/brain-consolidator.ts +344 -0
- package/src/memory/brain-lifecycle.ts +636 -2
- package/src/memory/brain-purge.ts +315 -0
- package/src/memory/brain-retrieval.ts +486 -2
- package/src/memory/brain-search.ts +61 -10
- package/src/memory/decisions.ts +96 -3
- package/src/memory/engine-compat.ts +177 -11
- package/src/memory/extraction-gate.ts +574 -0
- package/src/memory/graph-auto-populate.ts +173 -0
- package/src/memory/graph-queries.ts +424 -0
- package/src/memory/index.ts +6 -2
- package/src/memory/learnings.ts +87 -7
- package/src/memory/patterns.ts +95 -13
- package/src/memory/quality-scoring.ts +257 -0
- package/src/nexus/nexus-bridge.ts +444 -0
- package/src/scaffold.ts +42 -0
- package/src/sessions/__tests__/session-memory-bridge.test.ts +27 -49
- package/src/sessions/session-memory-bridge.ts +19 -47
- package/src/stats/index.ts +11 -3
- package/src/store/__tests__/brain-accessor-pageindex.test.ts +93 -22
- package/src/store/brain-accessor.ts +48 -2
- package/src/store/brain-schema.ts +403 -13
- package/src/store/brain-sqlite.ts +90 -0
- package/src/store/migration-manager.ts +83 -12
- package/src/store/nexus-schema.ts +257 -3
- package/src/system/dependencies.ts +534 -0
- package/src/system/health.ts +143 -22
- package/src/tasks/complete.ts +40 -0
- package/src/tasks/graph-ops.ts +1 -0
- package/src/tasks/task-ops.ts +1 -1
- package/templates/CLEO-INJECTION.md +15 -0
|
@@ -1,77 +1,65 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const mocks = vi.hoisted(() => ({
|
|
4
|
+
maybeRefreshMemoryBridge: vi.fn(),
|
|
5
|
+
gradeSession: vi.fn(),
|
|
6
|
+
loadConfig: vi.fn(),
|
|
7
|
+
}));
|
|
8
|
+
|
|
9
|
+
vi.mock('../memory-bridge-refresh.js', () => ({
|
|
10
|
+
maybeRefreshMemoryBridge: mocks.maybeRefreshMemoryBridge,
|
|
11
|
+
}));
|
|
12
|
+
|
|
13
|
+
vi.mock('../../../sessions/session-grade.js', () => ({
|
|
14
|
+
gradeSession: mocks.gradeSession,
|
|
15
|
+
}));
|
|
4
16
|
|
|
5
|
-
vi.mock('../../../
|
|
6
|
-
|
|
17
|
+
vi.mock('../../../config.js', () => ({
|
|
18
|
+
loadConfig: mocks.loadConfig,
|
|
7
19
|
}));
|
|
8
20
|
|
|
9
21
|
import { handleSessionEnd, handleSessionStart } from '../session-hooks.js';
|
|
10
22
|
|
|
11
23
|
describe('session hook handlers', () => {
|
|
12
24
|
beforeEach(() => {
|
|
13
|
-
|
|
25
|
+
mocks.maybeRefreshMemoryBridge.mockReset();
|
|
26
|
+
mocks.maybeRefreshMemoryBridge.mockResolvedValue(undefined);
|
|
27
|
+
mocks.gradeSession.mockResolvedValue(undefined);
|
|
28
|
+
mocks.loadConfig.mockResolvedValue({ brain: { autoCapture: false } });
|
|
14
29
|
});
|
|
15
30
|
|
|
16
|
-
it('
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
31
|
+
it('handleSessionStart refreshes the memory bridge', async () => {
|
|
32
|
+
await handleSessionStart('/tmp/project', {
|
|
33
|
+
sessionId: 'ses-1',
|
|
34
|
+
timestamp: '2026-03-04T00:00:00.000Z',
|
|
35
|
+
name: 'Test Session',
|
|
36
|
+
scope: 'T5306',
|
|
37
|
+
});
|
|
20
38
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
sessionId: 'ses-1',
|
|
24
|
-
timestamp: '2026-03-04T00:00:00.000Z',
|
|
25
|
-
name: 'Test Session',
|
|
26
|
-
scope: 'T5306',
|
|
27
|
-
}),
|
|
28
|
-
).resolves.toBeUndefined();
|
|
39
|
+
expect(mocks.maybeRefreshMemoryBridge).toHaveBeenCalledTimes(1);
|
|
40
|
+
expect(mocks.maybeRefreshMemoryBridge).toHaveBeenCalledWith('/tmp/project');
|
|
29
41
|
});
|
|
30
42
|
|
|
31
|
-
it('
|
|
32
|
-
|
|
43
|
+
it('handleSessionEnd refreshes the memory bridge', async () => {
|
|
44
|
+
await handleSessionEnd('/tmp/project', {
|
|
45
|
+
sessionId: 'ses-2',
|
|
46
|
+
timestamp: '2026-03-04T00:30:00.000Z',
|
|
47
|
+
duration: 1800,
|
|
48
|
+
tasksCompleted: ['T5306', 'T5307'],
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
expect(mocks.maybeRefreshMemoryBridge).toHaveBeenCalledTimes(1);
|
|
52
|
+
expect(mocks.maybeRefreshMemoryBridge).toHaveBeenCalledWith('/tmp/project');
|
|
53
|
+
});
|
|
33
54
|
|
|
55
|
+
it('handleSessionEnd resolves normally with no tasks', async () => {
|
|
34
56
|
await expect(
|
|
35
57
|
handleSessionEnd('/tmp/project', {
|
|
36
|
-
sessionId: 'ses-
|
|
58
|
+
sessionId: 'ses-3',
|
|
37
59
|
timestamp: '2026-03-04T00:30:00.000Z',
|
|
38
|
-
duration:
|
|
60
|
+
duration: 900,
|
|
39
61
|
tasksCompleted: [],
|
|
40
62
|
}),
|
|
41
63
|
).resolves.toBeUndefined();
|
|
42
64
|
});
|
|
43
|
-
|
|
44
|
-
it('rethrows non-schema errors', async () => {
|
|
45
|
-
observeBrainMock.mockRejectedValue(new Error('database is locked'));
|
|
46
|
-
|
|
47
|
-
await expect(
|
|
48
|
-
handleSessionStart('/tmp/project', {
|
|
49
|
-
sessionId: 'ses-1',
|
|
50
|
-
timestamp: '2026-03-04T00:00:00.000Z',
|
|
51
|
-
name: 'Test Session',
|
|
52
|
-
scope: 'T5306',
|
|
53
|
-
}),
|
|
54
|
-
).rejects.toThrow('database is locked');
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
it('records session context when observe succeeds', async () => {
|
|
58
|
-
observeBrainMock.mockResolvedValue(undefined);
|
|
59
|
-
|
|
60
|
-
await handleSessionEnd('/tmp/project', {
|
|
61
|
-
sessionId: 'ses-2',
|
|
62
|
-
timestamp: '2026-03-04T00:45:00.000Z',
|
|
63
|
-
duration: 2700,
|
|
64
|
-
tasksCompleted: ['T5306', 'T5307'],
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
expect(observeBrainMock).toHaveBeenCalledTimes(1);
|
|
68
|
-
expect(observeBrainMock).toHaveBeenCalledWith(
|
|
69
|
-
'/tmp/project',
|
|
70
|
-
expect.objectContaining({
|
|
71
|
-
title: 'Session end: ses-2',
|
|
72
|
-
type: 'change',
|
|
73
|
-
sourceSessionId: 'ses-2',
|
|
74
|
-
}),
|
|
75
|
-
);
|
|
76
|
-
});
|
|
77
65
|
});
|
|
@@ -17,13 +17,19 @@ import './notification-hooks.js';
|
|
|
17
17
|
import './work-capture-hooks.js';
|
|
18
18
|
import './agent-hooks.js';
|
|
19
19
|
import './context-hooks.js';
|
|
20
|
+
import './watchdog-hooks.js';
|
|
21
|
+
// T549 Wave 5-D/E: Intelligence hooks (best-effort risk detection on task start)
|
|
22
|
+
import './intelligence-hooks.js';
|
|
20
23
|
|
|
21
24
|
export { handleSubagentStart, handleSubagentStop } from './agent-hooks.js';
|
|
22
25
|
export { handlePostCompact, handlePreCompact } from './context-hooks.js';
|
|
23
26
|
export { handleError } from './error-hooks.js';
|
|
24
27
|
export { handleFileChange } from './file-hooks.js';
|
|
28
|
+
// T549 Wave 5-D/E: Intelligence hook exports
|
|
29
|
+
export { handleTaskStartIntelligence } from './intelligence-hooks.js';
|
|
25
30
|
export { handleSystemNotification } from './notification-hooks.js';
|
|
26
31
|
// Re-export handler functions for explicit use
|
|
27
32
|
export { handleSessionEnd, handleSessionStart } from './session-hooks.js';
|
|
28
33
|
export { handleToolComplete, handleToolStart } from './task-hooks.js';
|
|
34
|
+
export { handleWatchdogStart, handleWatchdogStop } from './watchdog-hooks.js';
|
|
29
35
|
export { handleWorkPromptSubmit, handleWorkResponseComplete } from './work-capture-hooks.js';
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intelligence Hook Handlers — Wave 5-D/E of T549
|
|
3
|
+
*
|
|
4
|
+
* Best-effort intelligence side-effects wired into task lifecycle events.
|
|
5
|
+
*
|
|
6
|
+
* On task start → calculate risk; if riskScore exceeds the HIGH threshold
|
|
7
|
+
* (≥ 0.8), store a warning observation so future agents see it.
|
|
8
|
+
*
|
|
9
|
+
* All handlers are fire-and-forget: failures MUST NOT propagate or block the
|
|
10
|
+
* operation that triggered them.
|
|
11
|
+
*
|
|
12
|
+
* @task T549
|
|
13
|
+
* @epic T549
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { hooks } from '../registry.js';
|
|
17
|
+
import type { PreToolUsePayload } from '../types.js';
|
|
18
|
+
|
|
19
|
+
// Risk thresholds — mirror RISK_THRESHOLDS in intelligence/prediction.ts
|
|
20
|
+
const RISK_HIGH = 0.8;
|
|
21
|
+
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Task Start — Risk Detection
|
|
24
|
+
// ============================================================================
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Handle task start: calculate risk and store a warning observation if the
|
|
28
|
+
* riskScore is at or above the HIGH threshold (≥ 0.8).
|
|
29
|
+
*
|
|
30
|
+
* Uses deferred imports so this module can be imported in environments where
|
|
31
|
+
* not all transitive dependencies (brain.db, tasks.db) are present.
|
|
32
|
+
*
|
|
33
|
+
* Best-effort: any error is silently swallowed.
|
|
34
|
+
*/
|
|
35
|
+
export async function handleTaskStartIntelligence(
|
|
36
|
+
projectRoot: string,
|
|
37
|
+
payload: PreToolUsePayload,
|
|
38
|
+
): Promise<void> {
|
|
39
|
+
try {
|
|
40
|
+
// Deferred relative imports — avoids circular dependency issues and keeps
|
|
41
|
+
// this module loadable in environments where brain.db is not initialised.
|
|
42
|
+
const { getAccessor } = await import('../../store/data-accessor.js');
|
|
43
|
+
const { getBrainAccessor } = await import('../../store/brain-accessor.js');
|
|
44
|
+
const { calculateTaskRisk } = await import('../../intelligence/prediction.js');
|
|
45
|
+
const { observeBrain } = await import('../../memory/brain-retrieval.js');
|
|
46
|
+
|
|
47
|
+
const [accessor, brain] = await Promise.all([
|
|
48
|
+
getAccessor(projectRoot),
|
|
49
|
+
getBrainAccessor(projectRoot),
|
|
50
|
+
]);
|
|
51
|
+
|
|
52
|
+
const risk = await calculateTaskRisk(payload.taskId, accessor, brain);
|
|
53
|
+
|
|
54
|
+
if (risk.riskScore >= RISK_HIGH) {
|
|
55
|
+
const level = risk.riskScore >= 0.95 ? 'critical' : 'high';
|
|
56
|
+
const factorNames = risk.factors.map((f) => f.name).join(', ');
|
|
57
|
+
await observeBrain(projectRoot, {
|
|
58
|
+
text: `Risk alert for ${payload.taskId} (score ${risk.riskScore.toFixed(2)}): ${factorNames}. ${risk.recommendation}`,
|
|
59
|
+
title: `Task risk: ${level} — ${payload.taskId}`,
|
|
60
|
+
type: 'discovery',
|
|
61
|
+
sourceType: 'agent',
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
} catch {
|
|
65
|
+
// Best-effort — never block task start
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// ============================================================================
|
|
70
|
+
// Registration
|
|
71
|
+
// ============================================================================
|
|
72
|
+
|
|
73
|
+
hooks.register({
|
|
74
|
+
id: 'intelligence-task-start',
|
|
75
|
+
event: 'PreToolUse',
|
|
76
|
+
handler: handleTaskStartIntelligence,
|
|
77
|
+
// Priority 50: runs after brain-tool-start (100) so the task observation is
|
|
78
|
+
// already persisted before we assess risk.
|
|
79
|
+
priority: 50,
|
|
80
|
+
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Session Hook Handlers - Phase 2D of T5237
|
|
3
3
|
*
|
|
4
|
-
* Handlers that capture session lifecycle events
|
|
4
|
+
* Handlers that capture session lifecycle events.
|
|
5
5
|
* Auto-registers on module load.
|
|
6
6
|
*
|
|
7
7
|
* T138: Triggers memory bridge refresh on session start and end.
|
|
@@ -10,65 +10,45 @@
|
|
|
10
10
|
* T5158: Auto-snapshots SQLite databases (tasks.db + brain.db) via
|
|
11
11
|
* VACUUM INTO on SessionEnd to preserve a recovery point now that
|
|
12
12
|
* the databases are no longer tracked in project git (ADR-013).
|
|
13
|
+
* T527: Removed duplicate session observeBrain writes — session data already
|
|
14
|
+
* lives in the sessions table; writing it again to brain_observations
|
|
15
|
+
* was pure noise.
|
|
16
|
+
* T549 Wave 3-E: Fire-and-forget sleep-time consolidation on session end.
|
|
17
|
+
* Runs after backup (priority 5) so brain.db snapshot is captured first.
|
|
13
18
|
*/
|
|
14
19
|
|
|
15
20
|
import { hooks } from '../registry.js';
|
|
16
21
|
import type { SessionEndPayload, SessionStartPayload } from '../types.js';
|
|
17
|
-
import { isMissingBrainSchemaError } from './handler-helpers.js';
|
|
18
22
|
import { maybeRefreshMemoryBridge } from './memory-bridge-refresh.js';
|
|
19
23
|
|
|
20
24
|
/**
|
|
21
|
-
* Handle SessionStart -
|
|
25
|
+
* Handle SessionStart - refresh memory bridge on session start.
|
|
22
26
|
*
|
|
23
27
|
* T138: Refresh memory bridge on session start.
|
|
24
28
|
* T139: Regenerate bridge with session scope context.
|
|
29
|
+
* T527: Removed duplicate observeBrain write — session data is already
|
|
30
|
+
* persisted in the sessions table.
|
|
25
31
|
*/
|
|
26
32
|
export async function handleSessionStart(
|
|
27
33
|
projectRoot: string,
|
|
28
|
-
|
|
34
|
+
_payload: SessionStartPayload,
|
|
29
35
|
): Promise<void> {
|
|
30
|
-
const { observeBrain } = await import('../../memory/brain-retrieval.js');
|
|
31
|
-
|
|
32
|
-
try {
|
|
33
|
-
await observeBrain(projectRoot, {
|
|
34
|
-
text: `Session started: ${payload.name}\nScope: ${JSON.stringify(payload.scope)}\nAgent: ${payload.agent || 'unknown'}`,
|
|
35
|
-
title: `Session start: ${payload.name}`,
|
|
36
|
-
type: 'discovery',
|
|
37
|
-
sourceSessionId: payload.sessionId,
|
|
38
|
-
sourceType: 'agent',
|
|
39
|
-
});
|
|
40
|
-
} catch (err) {
|
|
41
|
-
if (!isMissingBrainSchemaError(err)) throw err;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
36
|
// T138/T139: Refresh memory bridge after session starts (best-effort)
|
|
45
37
|
await maybeRefreshMemoryBridge(projectRoot);
|
|
46
38
|
}
|
|
47
39
|
|
|
48
40
|
/**
|
|
49
|
-
* Handle SessionEnd -
|
|
41
|
+
* Handle SessionEnd - run post-session tasks and refresh memory bridge.
|
|
50
42
|
*
|
|
51
43
|
* T138: Refresh memory bridge after session ends.
|
|
52
44
|
* T144: Extract transcript observations via cross-provider adapter.
|
|
45
|
+
* T527: Removed duplicate observeBrain write — session data is already
|
|
46
|
+
* persisted in the sessions table.
|
|
53
47
|
*/
|
|
54
48
|
export async function handleSessionEnd(
|
|
55
49
|
projectRoot: string,
|
|
56
50
|
payload: SessionEndPayload,
|
|
57
51
|
): Promise<void> {
|
|
58
|
-
const { observeBrain } = await import('../../memory/brain-retrieval.js');
|
|
59
|
-
|
|
60
|
-
try {
|
|
61
|
-
await observeBrain(projectRoot, {
|
|
62
|
-
text: `Session ended: ${payload.sessionId}\nDuration: ${payload.duration}s\nTasks completed: ${payload.tasksCompleted.join(', ') || 'none'}`,
|
|
63
|
-
title: `Session end: ${payload.sessionId}`,
|
|
64
|
-
type: 'change',
|
|
65
|
-
sourceSessionId: payload.sessionId,
|
|
66
|
-
sourceType: 'agent',
|
|
67
|
-
});
|
|
68
|
-
} catch (err) {
|
|
69
|
-
if (!isMissingBrainSchemaError(err)) throw err;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
52
|
// Auto-grade session and feed insights to brain.db (best-effort)
|
|
73
53
|
try {
|
|
74
54
|
const { gradeSession } = await import('../../sessions/session-grade.js');
|
|
@@ -131,6 +111,36 @@ export async function handleSessionEndBackup(
|
|
|
131
111
|
}
|
|
132
112
|
}
|
|
133
113
|
|
|
114
|
+
/**
|
|
115
|
+
* Handle SessionEnd — fire-and-forget sleep-time memory consolidation.
|
|
116
|
+
*
|
|
117
|
+
* T549 Wave 3-E: Runs the full consolidation pipeline (dedup, quality recompute,
|
|
118
|
+
* tier promotion, contradiction detection, soft eviction, graph strengthening,
|
|
119
|
+
* summary generation) in the background after the session backup has completed.
|
|
120
|
+
*
|
|
121
|
+
* Uses setImmediate to yield control so the session end flow completes before
|
|
122
|
+
* consolidation begins. Consolidation errors are caught and logged to console.warn
|
|
123
|
+
* — they MUST NOT block session end or throw to callers.
|
|
124
|
+
*
|
|
125
|
+
* Priority 5 ensures this runs last (after backup at priority 10).
|
|
126
|
+
*/
|
|
127
|
+
export async function handleSessionEndConsolidation(
|
|
128
|
+
projectRoot: string,
|
|
129
|
+
_payload: SessionEndPayload,
|
|
130
|
+
): Promise<void> {
|
|
131
|
+
// Schedule consolidation to run after the current event loop turn.
|
|
132
|
+
// This ensures the session end response reaches the caller before
|
|
133
|
+
// consolidation begins, matching the "sleep-time compute" pattern.
|
|
134
|
+
setImmediate(async () => {
|
|
135
|
+
try {
|
|
136
|
+
const { runConsolidation } = await import('../../memory/brain-lifecycle.js');
|
|
137
|
+
await runConsolidation(projectRoot);
|
|
138
|
+
} catch (err) {
|
|
139
|
+
console.warn('[consolidation] Session-end consolidation failed:', err);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
|
|
134
144
|
// Register handlers on module load
|
|
135
145
|
hooks.register({
|
|
136
146
|
id: 'brain-session-start',
|
|
@@ -155,3 +165,12 @@ hooks.register({
|
|
|
155
165
|
handler: handleSessionEndBackup,
|
|
156
166
|
priority: 10,
|
|
157
167
|
});
|
|
168
|
+
|
|
169
|
+
// Priority 5 runs AFTER backup (priority 10) — consolidation is purely
|
|
170
|
+
// additive and should not delay the backup point-in-time snapshot.
|
|
171
|
+
hooks.register({
|
|
172
|
+
id: 'consolidation-session-end',
|
|
173
|
+
event: 'SessionEnd',
|
|
174
|
+
handler: handleSessionEndConsolidation,
|
|
175
|
+
priority: 5,
|
|
176
|
+
});
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Watchdog Scheduler Hook Handlers
|
|
3
|
+
*
|
|
4
|
+
* Starts a periodic health-check timer when a session begins and stops it when
|
|
5
|
+
* the session ends. One watchdog per project root, enforced by a module-level
|
|
6
|
+
* Map keyed on the resolved project root.
|
|
7
|
+
*
|
|
8
|
+
* Each 60-second tick:
|
|
9
|
+
* 1. Detects agents with a stale heartbeat (> STALE_THRESHOLD_MS)
|
|
10
|
+
* 2. Records each crash as a learning event in brain.db
|
|
11
|
+
* 3. Attempts recovery (status reset to 'starting') for all crashed agents
|
|
12
|
+
* 4. Fires the `onPatrol` hook for observability
|
|
13
|
+
*
|
|
14
|
+
* Best-effort contract: the watchdog NEVER crashes or throws. Any tick failure
|
|
15
|
+
* is swallowed so the timer continues. Any error in the start/stop handlers is
|
|
16
|
+
* also swallowed so it never blocks session operations.
|
|
17
|
+
*
|
|
18
|
+
* Gated behind `brain.autoCapture` config — the watchdog does NOT start unless
|
|
19
|
+
* auto-capture is enabled.
|
|
20
|
+
*
|
|
21
|
+
* Auto-registers on module load.
|
|
22
|
+
*
|
|
23
|
+
* @task T549
|
|
24
|
+
* @epic T5149
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
import { hooks } from '../registry.js';
|
|
28
|
+
import type { OnPatrolPayload, SessionEndPayload, SessionStartPayload } from '../types.js';
|
|
29
|
+
import { isAutoCaptureEnabled, isMissingBrainSchemaError } from './handler-helpers.js';
|
|
30
|
+
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// Module-level watchdog state
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
|
|
35
|
+
/** One active timer per project root (resolved path). */
|
|
36
|
+
const activeWatchdogs = new Map<string, ReturnType<typeof setInterval>>();
|
|
37
|
+
|
|
38
|
+
/** Interval between watchdog ticks in milliseconds. */
|
|
39
|
+
const WATCHDOG_INTERVAL_MS = 60_000;
|
|
40
|
+
|
|
41
|
+
// ---------------------------------------------------------------------------
|
|
42
|
+
// Watchdog tick
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Execute one watchdog patrol tick.
|
|
47
|
+
*
|
|
48
|
+
* Steps:
|
|
49
|
+
* 1. detectCrashedAgents — find and mark stale agents as 'crashed'
|
|
50
|
+
* 2. processAgentLifecycleEvent — write failure events to brain.db for each
|
|
51
|
+
* 3. recoverCrashedAgents — reset crashed agents to 'starting'
|
|
52
|
+
* 4. hooks.dispatch('onPatrol') — emit observability event
|
|
53
|
+
*
|
|
54
|
+
* Any thrown error is caught and logged as a warning; the timer continues.
|
|
55
|
+
*
|
|
56
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
57
|
+
*/
|
|
58
|
+
async function runWatchdogTick(projectRoot: string): Promise<void> {
|
|
59
|
+
try {
|
|
60
|
+
const { detectCrashedAgents, STALE_THRESHOLD_MS } = await import(
|
|
61
|
+
'../../agents/health-monitor.js'
|
|
62
|
+
);
|
|
63
|
+
const { recoverCrashedAgents } = await import('../../agents/retry.js');
|
|
64
|
+
const { processAgentLifecycleEvent } = await import('../../agents/execution-learning.js');
|
|
65
|
+
|
|
66
|
+
// Step 1: Detect and mark crashed agents
|
|
67
|
+
const crashed = await detectCrashedAgents(STALE_THRESHOLD_MS, projectRoot);
|
|
68
|
+
|
|
69
|
+
// Step 2: Record each crash as a brain learning event
|
|
70
|
+
for (const agent of crashed) {
|
|
71
|
+
try {
|
|
72
|
+
await processAgentLifecycleEvent(
|
|
73
|
+
{
|
|
74
|
+
agentId: agent.id,
|
|
75
|
+
agentType:
|
|
76
|
+
(agent.agentType as import('../../agents/agent-schema.js').AgentType) ?? 'custom',
|
|
77
|
+
taskId: agent.taskId ?? 'unknown',
|
|
78
|
+
taskType: 'unknown',
|
|
79
|
+
outcome: 'failure',
|
|
80
|
+
errorMessage: 'Heartbeat timeout — agent presumed crashed',
|
|
81
|
+
errorType: 'retriable',
|
|
82
|
+
sessionId: agent.sessionId ?? undefined,
|
|
83
|
+
},
|
|
84
|
+
projectRoot,
|
|
85
|
+
);
|
|
86
|
+
} catch (err) {
|
|
87
|
+
if (!isMissingBrainSchemaError(err)) {
|
|
88
|
+
console.warn('[watchdog] Failed to record agent crash event:', err);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Step 3: Attempt recovery for all crashed agents
|
|
94
|
+
if (crashed.length > 0) {
|
|
95
|
+
await recoverCrashedAgents(STALE_THRESHOLD_MS, projectRoot);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Step 4: Fire onPatrol for observability
|
|
99
|
+
const patrolPayload: OnPatrolPayload = {
|
|
100
|
+
timestamp: new Date().toISOString(),
|
|
101
|
+
watcherId: 'health-watchdog',
|
|
102
|
+
patrolType: 'health',
|
|
103
|
+
scope: `crashed=${crashed.length}`,
|
|
104
|
+
};
|
|
105
|
+
await hooks.dispatch('onPatrol', projectRoot, patrolPayload);
|
|
106
|
+
} catch (err) {
|
|
107
|
+
// Best-effort — never crash the watchdog timer
|
|
108
|
+
console.warn('[watchdog] Tick failed:', err);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// ---------------------------------------------------------------------------
|
|
113
|
+
// Lifecycle handlers
|
|
114
|
+
// ---------------------------------------------------------------------------
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Handle SessionStart — start the watchdog timer for this project root.
|
|
118
|
+
*
|
|
119
|
+
* Idempotent: if a watchdog is already running for this root (e.g. a second
|
|
120
|
+
* session in the same process), the existing timer is reused.
|
|
121
|
+
*
|
|
122
|
+
* Gated behind `brain.autoCapture` — watchdog does not start unless auto-capture
|
|
123
|
+
* is enabled. This aligns with all other brain-capture hooks.
|
|
124
|
+
*
|
|
125
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
126
|
+
* @param _payload - SessionStart payload (unused).
|
|
127
|
+
*/
|
|
128
|
+
export async function handleWatchdogStart(
|
|
129
|
+
projectRoot: string,
|
|
130
|
+
_payload: SessionStartPayload,
|
|
131
|
+
): Promise<void> {
|
|
132
|
+
try {
|
|
133
|
+
if (!(await isAutoCaptureEnabled(projectRoot))) return;
|
|
134
|
+
|
|
135
|
+
// Idempotency guard — one watchdog per project root
|
|
136
|
+
if (activeWatchdogs.has(projectRoot)) return;
|
|
137
|
+
|
|
138
|
+
const timer = setInterval(() => {
|
|
139
|
+
void runWatchdogTick(projectRoot);
|
|
140
|
+
}, WATCHDOG_INTERVAL_MS);
|
|
141
|
+
|
|
142
|
+
activeWatchdogs.set(projectRoot, timer);
|
|
143
|
+
} catch {
|
|
144
|
+
// Never block session start on watchdog errors
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Handle SessionEnd — stop the watchdog timer for this project root.
|
|
150
|
+
*
|
|
151
|
+
* Safe to call when no watchdog is running (no-op).
|
|
152
|
+
*
|
|
153
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
154
|
+
* @param _payload - SessionEnd payload (unused).
|
|
155
|
+
*/
|
|
156
|
+
export async function handleWatchdogStop(
|
|
157
|
+
projectRoot: string,
|
|
158
|
+
_payload: SessionEndPayload,
|
|
159
|
+
): Promise<void> {
|
|
160
|
+
try {
|
|
161
|
+
const timer = activeWatchdogs.get(projectRoot);
|
|
162
|
+
if (timer) {
|
|
163
|
+
clearInterval(timer);
|
|
164
|
+
activeWatchdogs.delete(projectRoot);
|
|
165
|
+
}
|
|
166
|
+
} catch {
|
|
167
|
+
// Never block session end on watchdog errors
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// ---------------------------------------------------------------------------
|
|
172
|
+
// Auto-registration
|
|
173
|
+
// ---------------------------------------------------------------------------
|
|
174
|
+
|
|
175
|
+
hooks.register({
|
|
176
|
+
id: 'watchdog-session-start',
|
|
177
|
+
event: 'SessionStart',
|
|
178
|
+
handler: handleWatchdogStart,
|
|
179
|
+
priority: 50,
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
hooks.register({
|
|
183
|
+
id: 'watchdog-session-end',
|
|
184
|
+
event: 'SessionEnd',
|
|
185
|
+
handler: handleWatchdogStop,
|
|
186
|
+
priority: 50,
|
|
187
|
+
});
|
package/src/index.ts
CHANGED
|
@@ -299,6 +299,20 @@ export {
|
|
|
299
299
|
timelineBrain,
|
|
300
300
|
} from './memory/brain-retrieval.js';
|
|
301
301
|
export { searchBrain } from './memory/brain-search.js';
|
|
302
|
+
export type {
|
|
303
|
+
DecisionQualityInput,
|
|
304
|
+
LearningQualityInput,
|
|
305
|
+
ObservationQualityInput,
|
|
306
|
+
PatternQualityInput,
|
|
307
|
+
} from './memory/quality-scoring.js';
|
|
308
|
+
// Quality scoring (T531) — exported for backfill (T530) and future hooks
|
|
309
|
+
export {
|
|
310
|
+
computeDecisionQuality,
|
|
311
|
+
computeLearningQuality,
|
|
312
|
+
computeObservationQuality,
|
|
313
|
+
computePatternQuality,
|
|
314
|
+
QUALITY_SCORE_THRESHOLD,
|
|
315
|
+
} from './memory/quality-scoring.js';
|
|
302
316
|
// Migration (flat re-exports for backward compatibility)
|
|
303
317
|
export {
|
|
304
318
|
compareSemver,
|
package/src/injection.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
import { execFileSync } from 'node:child_process';
|
|
18
18
|
import { existsSync, readFileSync } from 'node:fs';
|
|
19
|
-
import { mkdir, rm, writeFile } from 'node:fs/promises';
|
|
19
|
+
import { mkdir, readFile, rm, writeFile } from 'node:fs/promises';
|
|
20
20
|
import { homedir } from 'node:os';
|
|
21
21
|
import { basename, join } from 'node:path';
|
|
22
22
|
import { getAgentsHome, getCleoHome, getCleoTemplatesTildePath } from './paths.js';
|
|
@@ -68,6 +68,32 @@ async function removeStaleAgentInjection(projectRoot: string): Promise<boolean>
|
|
|
68
68
|
return true;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
/**
|
|
72
|
+
* Strip hardcoded `<!-- gitnexus:start -->...<!-- gitnexus:end -->` blocks
|
|
73
|
+
* from AGENTS.md. These blocks are replaced by the `@.cleo/nexus-bridge.md`
|
|
74
|
+
* reference which contains auto-generated code intelligence content (T552).
|
|
75
|
+
*
|
|
76
|
+
* Also strips any other known vendor marker blocks using the same pattern
|
|
77
|
+
* (e.g. `<!-- gitnexus:start -->...<!-- gitnexus:end -->`).
|
|
78
|
+
*
|
|
79
|
+
* @param filePath - Absolute path to the file to strip
|
|
80
|
+
* @returns True if the file was modified, false otherwise
|
|
81
|
+
*/
|
|
82
|
+
export async function stripGitNexusBlocks(filePath: string): Promise<boolean> {
|
|
83
|
+
if (!existsSync(filePath)) return false;
|
|
84
|
+
const content = await readFile(filePath, 'utf8');
|
|
85
|
+
// Strip <!-- gitnexus:start --> ... <!-- gitnexus:end --> blocks (case-insensitive markers)
|
|
86
|
+
const stripped = content.replace(
|
|
87
|
+
/\n?<!--\s*gitnexus:start\s*-->[\s\S]*?<!--\s*gitnexus:end\s*-->\n?/gi,
|
|
88
|
+
'',
|
|
89
|
+
);
|
|
90
|
+
if (stripped !== content) {
|
|
91
|
+
await writeFile(filePath, stripped, 'utf8');
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
|
|
71
97
|
// ── Ensure injection ─────────────────────────────────────────────────
|
|
72
98
|
|
|
73
99
|
/**
|
|
@@ -78,7 +104,7 @@ async function removeStaleAgentInjection(projectRoot: string): Promise<boolean>
|
|
|
78
104
|
*
|
|
79
105
|
* Target architecture:
|
|
80
106
|
* CLAUDE.md/GEMINI.md -> @AGENTS.md (via injectAll)
|
|
81
|
-
* AGENTS.md -> @~/.agents/AGENTS.md + @.cleo/project-context.json + @.cleo/memory-bridge.md
|
|
107
|
+
* AGENTS.md -> @~/.agents/AGENTS.md + @.cleo/project-context.json + @.cleo/memory-bridge.md + @.cleo/nexus-bridge.md
|
|
82
108
|
*
|
|
83
109
|
* @task T4682
|
|
84
110
|
*/
|
|
@@ -114,6 +140,13 @@ export async function ensureInjection(projectRoot: string): Promise<ScaffoldResu
|
|
|
114
140
|
actions.push('removed deprecated AGENT-INJECTION.md');
|
|
115
141
|
}
|
|
116
142
|
|
|
143
|
+
// Step 0b: Strip hardcoded gitnexus blocks from AGENTS.md (T552)
|
|
144
|
+
// These are replaced by the @.cleo/nexus-bridge.md reference.
|
|
145
|
+
const removedGitNexus = await stripGitNexusBlocks(join(projectRoot, 'AGENTS.md'));
|
|
146
|
+
if (removedGitNexus) {
|
|
147
|
+
actions.push('removed hardcoded gitnexus block from AGENTS.md');
|
|
148
|
+
}
|
|
149
|
+
|
|
117
150
|
// Step 1: Inject @AGENTS.md into all provider instruction files
|
|
118
151
|
const injectionContent = buildInjectionContent({ references: ['@AGENTS.md'] });
|
|
119
152
|
const results = await injectAll(providers, projectRoot, 'project', injectionContent);
|
|
@@ -140,6 +173,12 @@ export async function ensureInjection(projectRoot: string): Promise<ScaffoldResu
|
|
|
140
173
|
agentsMdLines.push('@.cleo/memory-bridge.md');
|
|
141
174
|
}
|
|
142
175
|
|
|
176
|
+
// Nexus bridge: auto-generated code intelligence summary (T552)
|
|
177
|
+
const nexusBridgePath = join(projectRoot, '.cleo', 'nexus-bridge.md');
|
|
178
|
+
if (existsSync(nexusBridgePath)) {
|
|
179
|
+
agentsMdLines.push('@.cleo/nexus-bridge.md');
|
|
180
|
+
}
|
|
181
|
+
|
|
143
182
|
// Contributor project warning (ADR-029): inject dev-channel guidance when
|
|
144
183
|
// this project IS the CLEO source repo, so agents use cleo-dev not @latest.
|
|
145
184
|
const contributorBlock = buildContributorInjectionBlock(projectRoot);
|