@cleocode/core 2026.4.31 → 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.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 +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 +16 -0
- 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.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.js +3828 -2167
- 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 +8 -3
- 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.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.js +96 -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.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.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.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.js +148 -0
- package/dist/memory/graph-auto-populate.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.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 +14 -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 +24 -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 +42 -5
- package/dist/memory/quality-scoring.d.ts.map +1 -1
- 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.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.js +429 -0
- package/dist/store/brain-accessor.js.map +1 -0
- package/dist/store/brain-schema.d.ts +496 -3
- 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.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 +1 -1
- 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 +6 -6
- 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.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.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 +8 -8
- package/src/hooks/handlers/index.ts +6 -0
- package/src/hooks/handlers/intelligence-hooks.ts +80 -0
- package/src/hooks/handlers/session-hooks.ts +41 -0
- package/src/hooks/handlers/watchdog-hooks.ts +187 -0
- package/src/injection.ts +41 -2
- package/src/internal.ts +31 -2
- package/src/memory/brain-consolidator.ts +344 -0
- package/src/memory/brain-lifecycle.ts +636 -2
- package/src/memory/brain-retrieval.ts +445 -2
- package/src/memory/brain-search.ts +38 -4
- package/src/memory/decisions.ts +21 -1
- package/src/memory/engine-compat.ts +9 -11
- package/src/memory/extraction-gate.ts +574 -0
- package/src/memory/index.ts +6 -2
- package/src/memory/learnings.ts +33 -1
- package/src/memory/patterns.ts +30 -1
- package/src/memory/quality-scoring.ts +93 -9
- package/src/nexus/nexus-bridge.ts +444 -0
- package/src/scaffold.ts +42 -0
- package/src/stats/index.ts +11 -3
- package/src/store/brain-schema.ts +238 -0
- package/src/store/brain-sqlite.ts +55 -0
- package/src/store/migration-manager.ts +83 -12
- package/src/system/health.ts +17 -0
- package/src/tasks/graph-ops.ts +1 -0
- package/src/tasks/task-ops.ts +1 -1
- package/templates/CLEO-INJECTION.md +15 -0
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
* T527: Removed duplicate session observeBrain writes — session data already
|
|
14
14
|
* lives in the sessions table; writing it again to brain_observations
|
|
15
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.
|
|
16
18
|
*/
|
|
17
19
|
import type { SessionEndPayload, SessionStartPayload } from '../types.js';
|
|
18
20
|
/**
|
|
@@ -51,4 +53,18 @@ export declare function handleSessionEnd(projectRoot: string, payload: SessionEn
|
|
|
51
53
|
* `vi.mock` time.
|
|
52
54
|
*/
|
|
53
55
|
export declare function handleSessionEndBackup(projectRoot: string, _payload: SessionEndPayload): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Handle SessionEnd — fire-and-forget sleep-time memory consolidation.
|
|
58
|
+
*
|
|
59
|
+
* T549 Wave 3-E: Runs the full consolidation pipeline (dedup, quality recompute,
|
|
60
|
+
* tier promotion, contradiction detection, soft eviction, graph strengthening,
|
|
61
|
+
* summary generation) in the background after the session backup has completed.
|
|
62
|
+
*
|
|
63
|
+
* Uses setImmediate to yield control so the session end flow completes before
|
|
64
|
+
* consolidation begins. Consolidation errors are caught and logged to console.warn
|
|
65
|
+
* — they MUST NOT block session end or throw to callers.
|
|
66
|
+
*
|
|
67
|
+
* Priority 5 ensures this runs last (after backup at priority 10).
|
|
68
|
+
*/
|
|
69
|
+
export declare function handleSessionEndConsolidation(projectRoot: string, _payload: SessionEndPayload): Promise<void>;
|
|
54
70
|
//# sourceMappingURL=session-hooks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-hooks.d.ts","sourceRoot":"","sources":["../../../src/hooks/handlers/session-hooks.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session-hooks.d.ts","sourceRoot":"","sources":["../../../src/hooks/handlers/session-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAG1E;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,6BAA6B,CACjD,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAYf"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Hook Handlers - Phase 2D of T5237
|
|
3
|
+
*
|
|
4
|
+
* Handlers that capture session lifecycle events.
|
|
5
|
+
* Auto-registers on module load.
|
|
6
|
+
*
|
|
7
|
+
* T138: Triggers memory bridge refresh on session start and end.
|
|
8
|
+
* T139: Regenerates bridge with session scope on start.
|
|
9
|
+
* T144: Extracts transcript observations on session end.
|
|
10
|
+
* T5158: Auto-snapshots SQLite databases (tasks.db + brain.db) via
|
|
11
|
+
* VACUUM INTO on SessionEnd to preserve a recovery point now that
|
|
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.
|
|
18
|
+
*/
|
|
19
|
+
import { hooks } from '../registry.js';
|
|
20
|
+
import { maybeRefreshMemoryBridge } from './memory-bridge-refresh.js';
|
|
21
|
+
/**
|
|
22
|
+
* Handle SessionStart - refresh memory bridge on session start.
|
|
23
|
+
*
|
|
24
|
+
* T138: Refresh memory bridge on session start.
|
|
25
|
+
* T139: Regenerate bridge with session scope context.
|
|
26
|
+
* T527: Removed duplicate observeBrain write — session data is already
|
|
27
|
+
* persisted in the sessions table.
|
|
28
|
+
*/
|
|
29
|
+
export async function handleSessionStart(projectRoot, _payload) {
|
|
30
|
+
// T138/T139: Refresh memory bridge after session starts (best-effort)
|
|
31
|
+
await maybeRefreshMemoryBridge(projectRoot);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Handle SessionEnd - run post-session tasks and refresh memory bridge.
|
|
35
|
+
*
|
|
36
|
+
* T138: Refresh memory bridge after session ends.
|
|
37
|
+
* T144: Extract transcript observations via cross-provider adapter.
|
|
38
|
+
* T527: Removed duplicate observeBrain write — session data is already
|
|
39
|
+
* persisted in the sessions table.
|
|
40
|
+
*/
|
|
41
|
+
export async function handleSessionEnd(projectRoot, payload) {
|
|
42
|
+
// Auto-grade session and feed insights to brain.db (best-effort)
|
|
43
|
+
try {
|
|
44
|
+
const { gradeSession } = await import('../../sessions/session-grade.js');
|
|
45
|
+
await gradeSession(payload.sessionId, projectRoot);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Grading must never block session end
|
|
49
|
+
}
|
|
50
|
+
// T144: Cross-provider transcript extraction (best-effort)
|
|
51
|
+
try {
|
|
52
|
+
const { loadConfig } = await import('../../config.js');
|
|
53
|
+
const config = await loadConfig(projectRoot);
|
|
54
|
+
if (config.brain?.autoCapture) {
|
|
55
|
+
const { AdapterManager } = await import('../../adapters/index.js');
|
|
56
|
+
const manager = AdapterManager.getInstance(projectRoot);
|
|
57
|
+
const activeAdapter = manager.getActive();
|
|
58
|
+
const hookProvider = activeAdapter?.hooks;
|
|
59
|
+
if (hookProvider && typeof hookProvider.getTranscript === 'function') {
|
|
60
|
+
const transcript = await hookProvider.getTranscript(payload.sessionId, projectRoot);
|
|
61
|
+
if (transcript) {
|
|
62
|
+
const { extractFromTranscript } = await import('../../memory/auto-extract.js');
|
|
63
|
+
await extractFromTranscript(projectRoot, payload.sessionId, transcript);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// Graceful no-op: transcript extraction must never block session end
|
|
70
|
+
}
|
|
71
|
+
// T138: Refresh memory bridge after session ends (best-effort)
|
|
72
|
+
await maybeRefreshMemoryBridge(projectRoot);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Handle SessionEnd - snapshot SQLite databases to `.cleo/backups/sqlite/`.
|
|
76
|
+
*
|
|
77
|
+
* ADR-013 / T5158: `.cleo/tasks.db` and `.cleo/brain.db` are NOT tracked in
|
|
78
|
+
* project git, so we need an out-of-band recovery mechanism. This handler
|
|
79
|
+
* calls `vacuumIntoBackupAll` with `force: true` at every session end to
|
|
80
|
+
* guarantee a fresh point-in-time snapshot of both databases.
|
|
81
|
+
*
|
|
82
|
+
* Rotation (MAX_SNAPSHOTS = 10 per database) is handled inside
|
|
83
|
+
* `sqlite-backup.ts`. Failures here are non-fatal: a backup error must
|
|
84
|
+
* never block session end.
|
|
85
|
+
*
|
|
86
|
+
* The `vacuumIntoBackupAll` import is deferred to call time so tests that
|
|
87
|
+
* auto-load session-hooks (e.g. via `handlers/index.ts`) do not have to
|
|
88
|
+
* mock every transitive dependency of `sqlite-backup.ts` at hoisted
|
|
89
|
+
* `vi.mock` time.
|
|
90
|
+
*/
|
|
91
|
+
export async function handleSessionEndBackup(projectRoot, _payload) {
|
|
92
|
+
try {
|
|
93
|
+
const { vacuumIntoBackupAll } = await import('../../store/sqlite-backup.js');
|
|
94
|
+
await vacuumIntoBackupAll({ cwd: projectRoot, force: true });
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
// Backup failures are best-effort — never block session end on them.
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Handle SessionEnd — fire-and-forget sleep-time memory consolidation.
|
|
102
|
+
*
|
|
103
|
+
* T549 Wave 3-E: Runs the full consolidation pipeline (dedup, quality recompute,
|
|
104
|
+
* tier promotion, contradiction detection, soft eviction, graph strengthening,
|
|
105
|
+
* summary generation) in the background after the session backup has completed.
|
|
106
|
+
*
|
|
107
|
+
* Uses setImmediate to yield control so the session end flow completes before
|
|
108
|
+
* consolidation begins. Consolidation errors are caught and logged to console.warn
|
|
109
|
+
* — they MUST NOT block session end or throw to callers.
|
|
110
|
+
*
|
|
111
|
+
* Priority 5 ensures this runs last (after backup at priority 10).
|
|
112
|
+
*/
|
|
113
|
+
export async function handleSessionEndConsolidation(projectRoot, _payload) {
|
|
114
|
+
// Schedule consolidation to run after the current event loop turn.
|
|
115
|
+
// This ensures the session end response reaches the caller before
|
|
116
|
+
// consolidation begins, matching the "sleep-time compute" pattern.
|
|
117
|
+
setImmediate(async () => {
|
|
118
|
+
try {
|
|
119
|
+
const { runConsolidation } = await import('../../memory/brain-lifecycle.js');
|
|
120
|
+
await runConsolidation(projectRoot);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
console.warn('[consolidation] Session-end consolidation failed:', err);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
// Register handlers on module load
|
|
128
|
+
hooks.register({
|
|
129
|
+
id: 'brain-session-start',
|
|
130
|
+
event: 'SessionStart',
|
|
131
|
+
handler: handleSessionStart,
|
|
132
|
+
priority: 100,
|
|
133
|
+
});
|
|
134
|
+
hooks.register({
|
|
135
|
+
id: 'brain-session-end',
|
|
136
|
+
event: 'SessionEnd',
|
|
137
|
+
handler: handleSessionEnd,
|
|
138
|
+
priority: 100,
|
|
139
|
+
});
|
|
140
|
+
// Lower priority (10) runs AFTER the brain/memory-bridge handlers so the
|
|
141
|
+
// snapshot captures the most up-to-date brain.db state including the
|
|
142
|
+
// SessionEnd observation just written by handleSessionEnd above.
|
|
143
|
+
hooks.register({
|
|
144
|
+
id: 'backup-session-end',
|
|
145
|
+
event: 'SessionEnd',
|
|
146
|
+
handler: handleSessionEndBackup,
|
|
147
|
+
priority: 10,
|
|
148
|
+
});
|
|
149
|
+
// Priority 5 runs AFTER backup (priority 10) — consolidation is purely
|
|
150
|
+
// additive and should not delay the backup point-in-time snapshot.
|
|
151
|
+
hooks.register({
|
|
152
|
+
id: 'consolidation-session-end',
|
|
153
|
+
event: 'SessionEnd',
|
|
154
|
+
handler: handleSessionEndConsolidation,
|
|
155
|
+
priority: 5,
|
|
156
|
+
});
|
|
157
|
+
//# sourceMappingURL=session-hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-hooks.js","sourceRoot":"","sources":["../../../src/hooks/handlers/session-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Hook Handlers - Phase 2D of T5237
|
|
3
|
+
*
|
|
4
|
+
* Handlers that capture task lifecycle events to BRAIN via memory.observe.
|
|
5
|
+
* Auto-registers on module load.
|
|
6
|
+
*
|
|
7
|
+
* T138: Triggers memory bridge refresh after task completion.
|
|
8
|
+
*/
|
|
9
|
+
import { hooks } from '../registry.js';
|
|
10
|
+
import { isMissingBrainSchemaError } from './handler-helpers.js';
|
|
11
|
+
import { maybeRefreshMemoryBridge } from './memory-bridge-refresh.js';
|
|
12
|
+
/**
|
|
13
|
+
* Handle PreToolUse (maps to task.start in CLEO, canonical: was onToolStart)
|
|
14
|
+
*/
|
|
15
|
+
export async function handleToolStart(projectRoot, payload) {
|
|
16
|
+
const { observeBrain } = await import('../../memory/brain-retrieval.js');
|
|
17
|
+
try {
|
|
18
|
+
await observeBrain(projectRoot, {
|
|
19
|
+
text: `Started work on ${payload.taskId}: ${payload.taskTitle}`,
|
|
20
|
+
title: `Task start: ${payload.taskId}`,
|
|
21
|
+
type: 'change',
|
|
22
|
+
sourceType: 'agent',
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
if (!isMissingBrainSchemaError(err))
|
|
27
|
+
throw err;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Handle PostToolUse (maps to task.complete in CLEO, canonical: was onToolComplete)
|
|
32
|
+
*
|
|
33
|
+
* T138: Refresh memory bridge after task completion.
|
|
34
|
+
*/
|
|
35
|
+
export async function handleToolComplete(projectRoot, payload) {
|
|
36
|
+
const { observeBrain } = await import('../../memory/brain-retrieval.js');
|
|
37
|
+
try {
|
|
38
|
+
await observeBrain(projectRoot, {
|
|
39
|
+
text: `Task ${payload.taskId} completed with status: ${payload.status}`,
|
|
40
|
+
title: `Task complete: ${payload.taskId}`,
|
|
41
|
+
type: 'change',
|
|
42
|
+
sourceType: 'agent',
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
if (!isMissingBrainSchemaError(err))
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
49
|
+
// T138: Refresh memory bridge after task completes (best-effort)
|
|
50
|
+
await maybeRefreshMemoryBridge(projectRoot);
|
|
51
|
+
}
|
|
52
|
+
// Register handlers
|
|
53
|
+
hooks.register({
|
|
54
|
+
id: 'brain-tool-start',
|
|
55
|
+
event: 'PreToolUse',
|
|
56
|
+
handler: handleToolStart,
|
|
57
|
+
priority: 100,
|
|
58
|
+
});
|
|
59
|
+
hooks.register({
|
|
60
|
+
id: 'brain-tool-complete',
|
|
61
|
+
event: 'PostToolUse',
|
|
62
|
+
handler: handleToolComplete,
|
|
63
|
+
priority: 100,
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=task-hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-hooks.js","sourceRoot":"","sources":["../../../src/hooks/handlers/task-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB,EACnB,OAA0B;IAE1B,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAEzE,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,WAAW,EAAE;YAC9B,IAAI,EAAE,mBAAmB,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,SAAS,EAAE;YAC/D,KAAK,EAAE,eAAe,OAAO,CAAC,MAAM,EAAE;YACtC,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,OAAO;SACpB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC;YAAE,MAAM,GAAG,CAAC;IACjD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAAmB,EACnB,OAA2B;IAE3B,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAEzE,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,WAAW,EAAE;YAC9B,IAAI,EAAE,QAAQ,OAAO,CAAC,MAAM,2BAA2B,OAAO,CAAC,MAAM,EAAE;YACvE,KAAK,EAAE,kBAAkB,OAAO,CAAC,MAAM,EAAE;YACzC,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,OAAO;SACpB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC;YAAE,MAAM,GAAG,CAAC;IACjD,CAAC;IAED,iEAAiE;IACjE,MAAM,wBAAwB,CAAC,WAAW,CAAC,CAAC;AAC9C,CAAC;AAED,oBAAoB;AACpB,KAAK,CAAC,QAAQ,CAAC;IACb,EAAE,EAAE,kBAAkB;IACtB,KAAK,EAAE,YAAY;IACnB,OAAO,EAAE,eAAe;IACxB,QAAQ,EAAE,GAAG;CACd,CAAC,CAAC;AAEH,KAAK,CAAC,QAAQ,CAAC;IACb,EAAE,EAAE,qBAAqB;IACzB,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,kBAAkB;IAC3B,QAAQ,EAAE,GAAG;CACd,CAAC,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
import type { SessionEndPayload, SessionStartPayload } from '../types.js';
|
|
27
|
+
/**
|
|
28
|
+
* Handle SessionStart — start the watchdog timer for this project root.
|
|
29
|
+
*
|
|
30
|
+
* Idempotent: if a watchdog is already running for this root (e.g. a second
|
|
31
|
+
* session in the same process), the existing timer is reused.
|
|
32
|
+
*
|
|
33
|
+
* Gated behind `brain.autoCapture` — watchdog does not start unless auto-capture
|
|
34
|
+
* is enabled. This aligns with all other brain-capture hooks.
|
|
35
|
+
*
|
|
36
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
37
|
+
* @param _payload - SessionStart payload (unused).
|
|
38
|
+
*/
|
|
39
|
+
export declare function handleWatchdogStart(projectRoot: string, _payload: SessionStartPayload): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Handle SessionEnd — stop the watchdog timer for this project root.
|
|
42
|
+
*
|
|
43
|
+
* Safe to call when no watchdog is running (no-op).
|
|
44
|
+
*
|
|
45
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
46
|
+
* @param _payload - SessionEnd payload (unused).
|
|
47
|
+
*/
|
|
48
|
+
export declare function handleWatchdogStop(projectRoot: string, _payload: SessionEndPayload): Promise<void>;
|
|
49
|
+
//# sourceMappingURL=watchdog-hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watchdog-hooks.d.ts","sourceRoot":"","sources":["../../../src/hooks/handlers/watchdog-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,KAAK,EAAmB,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAwF3F;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAUf"}
|
|
@@ -0,0 +1,162 @@
|
|
|
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
|
+
import { hooks } from '../registry.js';
|
|
27
|
+
import { isAutoCaptureEnabled, isMissingBrainSchemaError } from './handler-helpers.js';
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Module-level watchdog state
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
/** One active timer per project root (resolved path). */
|
|
32
|
+
const activeWatchdogs = new Map();
|
|
33
|
+
/** Interval between watchdog ticks in milliseconds. */
|
|
34
|
+
const WATCHDOG_INTERVAL_MS = 60_000;
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
// Watchdog tick
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
/**
|
|
39
|
+
* Execute one watchdog patrol tick.
|
|
40
|
+
*
|
|
41
|
+
* Steps:
|
|
42
|
+
* 1. detectCrashedAgents — find and mark stale agents as 'crashed'
|
|
43
|
+
* 2. processAgentLifecycleEvent — write failure events to brain.db for each
|
|
44
|
+
* 3. recoverCrashedAgents — reset crashed agents to 'starting'
|
|
45
|
+
* 4. hooks.dispatch('onPatrol') — emit observability event
|
|
46
|
+
*
|
|
47
|
+
* Any thrown error is caught and logged as a warning; the timer continues.
|
|
48
|
+
*
|
|
49
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
50
|
+
*/
|
|
51
|
+
async function runWatchdogTick(projectRoot) {
|
|
52
|
+
try {
|
|
53
|
+
const { detectCrashedAgents, STALE_THRESHOLD_MS } = await import('../../agents/health-monitor.js');
|
|
54
|
+
const { recoverCrashedAgents } = await import('../../agents/retry.js');
|
|
55
|
+
const { processAgentLifecycleEvent } = await import('../../agents/execution-learning.js');
|
|
56
|
+
// Step 1: Detect and mark crashed agents
|
|
57
|
+
const crashed = await detectCrashedAgents(STALE_THRESHOLD_MS, projectRoot);
|
|
58
|
+
// Step 2: Record each crash as a brain learning event
|
|
59
|
+
for (const agent of crashed) {
|
|
60
|
+
try {
|
|
61
|
+
await processAgentLifecycleEvent({
|
|
62
|
+
agentId: agent.id,
|
|
63
|
+
agentType: agent.agentType ?? 'custom',
|
|
64
|
+
taskId: agent.taskId ?? 'unknown',
|
|
65
|
+
taskType: 'unknown',
|
|
66
|
+
outcome: 'failure',
|
|
67
|
+
errorMessage: 'Heartbeat timeout — agent presumed crashed',
|
|
68
|
+
errorType: 'retriable',
|
|
69
|
+
sessionId: agent.sessionId ?? undefined,
|
|
70
|
+
}, projectRoot);
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
if (!isMissingBrainSchemaError(err)) {
|
|
74
|
+
console.warn('[watchdog] Failed to record agent crash event:', err);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Step 3: Attempt recovery for all crashed agents
|
|
79
|
+
if (crashed.length > 0) {
|
|
80
|
+
await recoverCrashedAgents(STALE_THRESHOLD_MS, projectRoot);
|
|
81
|
+
}
|
|
82
|
+
// Step 4: Fire onPatrol for observability
|
|
83
|
+
const patrolPayload = {
|
|
84
|
+
timestamp: new Date().toISOString(),
|
|
85
|
+
watcherId: 'health-watchdog',
|
|
86
|
+
patrolType: 'health',
|
|
87
|
+
scope: `crashed=${crashed.length}`,
|
|
88
|
+
};
|
|
89
|
+
await hooks.dispatch('onPatrol', projectRoot, patrolPayload);
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
// Best-effort — never crash the watchdog timer
|
|
93
|
+
console.warn('[watchdog] Tick failed:', err);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
// Lifecycle handlers
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
/**
|
|
100
|
+
* Handle SessionStart — start the watchdog timer for this project root.
|
|
101
|
+
*
|
|
102
|
+
* Idempotent: if a watchdog is already running for this root (e.g. a second
|
|
103
|
+
* session in the same process), the existing timer is reused.
|
|
104
|
+
*
|
|
105
|
+
* Gated behind `brain.autoCapture` — watchdog does not start unless auto-capture
|
|
106
|
+
* is enabled. This aligns with all other brain-capture hooks.
|
|
107
|
+
*
|
|
108
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
109
|
+
* @param _payload - SessionStart payload (unused).
|
|
110
|
+
*/
|
|
111
|
+
export async function handleWatchdogStart(projectRoot, _payload) {
|
|
112
|
+
try {
|
|
113
|
+
if (!(await isAutoCaptureEnabled(projectRoot)))
|
|
114
|
+
return;
|
|
115
|
+
// Idempotency guard — one watchdog per project root
|
|
116
|
+
if (activeWatchdogs.has(projectRoot))
|
|
117
|
+
return;
|
|
118
|
+
const timer = setInterval(() => {
|
|
119
|
+
void runWatchdogTick(projectRoot);
|
|
120
|
+
}, WATCHDOG_INTERVAL_MS);
|
|
121
|
+
activeWatchdogs.set(projectRoot, timer);
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
// Never block session start on watchdog errors
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Handle SessionEnd — stop the watchdog timer for this project root.
|
|
129
|
+
*
|
|
130
|
+
* Safe to call when no watchdog is running (no-op).
|
|
131
|
+
*
|
|
132
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
133
|
+
* @param _payload - SessionEnd payload (unused).
|
|
134
|
+
*/
|
|
135
|
+
export async function handleWatchdogStop(projectRoot, _payload) {
|
|
136
|
+
try {
|
|
137
|
+
const timer = activeWatchdogs.get(projectRoot);
|
|
138
|
+
if (timer) {
|
|
139
|
+
clearInterval(timer);
|
|
140
|
+
activeWatchdogs.delete(projectRoot);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Never block session end on watchdog errors
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// ---------------------------------------------------------------------------
|
|
148
|
+
// Auto-registration
|
|
149
|
+
// ---------------------------------------------------------------------------
|
|
150
|
+
hooks.register({
|
|
151
|
+
id: 'watchdog-session-start',
|
|
152
|
+
event: 'SessionStart',
|
|
153
|
+
handler: handleWatchdogStart,
|
|
154
|
+
priority: 50,
|
|
155
|
+
});
|
|
156
|
+
hooks.register({
|
|
157
|
+
id: 'watchdog-session-end',
|
|
158
|
+
event: 'SessionEnd',
|
|
159
|
+
handler: handleWatchdogStop,
|
|
160
|
+
priority: 50,
|
|
161
|
+
});
|
|
162
|
+
//# sourceMappingURL=watchdog-hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watchdog-hooks.js","sourceRoot":"","sources":["../../../src/hooks/handlers/watchdog-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Active-Work Capture Hook Handlers
|
|
3
|
+
*
|
|
4
|
+
* Captures dispatch mutation events to BRAIN during active work, closing
|
|
5
|
+
* the gap between lifecycle-only capture (session end, task complete) and
|
|
6
|
+
* continuous capture. Only WRITE operations that represent meaningful work
|
|
7
|
+
* are captured — reads and operations already handled by lifecycle hooks
|
|
8
|
+
* are skipped to avoid flooding brain.db.
|
|
9
|
+
*
|
|
10
|
+
* Disabled by default. Enable via:
|
|
11
|
+
* - Config: brain.captureWork = true (checked first)
|
|
12
|
+
* - Env: CLEO_BRAIN_CAPTURE_WORK=true (overrides config)
|
|
13
|
+
*
|
|
14
|
+
* Auto-registers on module load.
|
|
15
|
+
*
|
|
16
|
+
* @task T142
|
|
17
|
+
*/
|
|
18
|
+
import { hooks } from '../registry.js';
|
|
19
|
+
import { isMissingBrainSchemaError } from './handler-helpers.js';
|
|
20
|
+
/**
|
|
21
|
+
* Check whether active-work capture is enabled.
|
|
22
|
+
*
|
|
23
|
+
* Resolution order (first truthy wins):
|
|
24
|
+
* 1. CLEO_BRAIN_CAPTURE_WORK env var (explicit override)
|
|
25
|
+
* 2. brain.captureWork project config value
|
|
26
|
+
*
|
|
27
|
+
* Defaults to false when neither is set.
|
|
28
|
+
*/
|
|
29
|
+
async function isWorkCaptureEnabled(projectRoot) {
|
|
30
|
+
const envOverride = process.env['CLEO_BRAIN_CAPTURE_WORK'];
|
|
31
|
+
if (envOverride !== undefined) {
|
|
32
|
+
return envOverride === 'true';
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
const { loadConfig } = await import('../../config.js');
|
|
36
|
+
const config = await loadConfig(projectRoot);
|
|
37
|
+
return config.brain?.captureWork ?? false;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
// Smart-filter: which mutations to capture
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
/**
|
|
47
|
+
* Mutations that represent novel work not already captured by lifecycle hooks.
|
|
48
|
+
*
|
|
49
|
+
* Excluded (already captured elsewhere):
|
|
50
|
+
* - tasks.complete → task-hooks.ts (PostToolUse)
|
|
51
|
+
* - session.start → session-hooks.ts (SessionStart)
|
|
52
|
+
* - session.end → session-hooks.ts (SessionEnd)
|
|
53
|
+
* - memory.brain.observe → observeBrain itself writes to brain; self-loop
|
|
54
|
+
*
|
|
55
|
+
* All query gateway operations are excluded by the gateway check before
|
|
56
|
+
* this set is consulted.
|
|
57
|
+
*/
|
|
58
|
+
const CAPTURE_OPERATIONS = new Set([
|
|
59
|
+
'tasks.add',
|
|
60
|
+
'tasks.update',
|
|
61
|
+
'tasks.move',
|
|
62
|
+
'tasks.link',
|
|
63
|
+
'tasks.unlink',
|
|
64
|
+
'tasks.label',
|
|
65
|
+
'tasks.unlabel',
|
|
66
|
+
'tasks.note',
|
|
67
|
+
]);
|
|
68
|
+
/**
|
|
69
|
+
* Determine whether a mutate operation should be captured.
|
|
70
|
+
*
|
|
71
|
+
* Only `mutate` gateway operations in CAPTURE_OPERATIONS are captured.
|
|
72
|
+
* All `query` gateway calls are skipped (reads produce no novel work).
|
|
73
|
+
*
|
|
74
|
+
* @param gateway - 'query' or 'mutate'
|
|
75
|
+
* @param domain - e.g. 'tasks'
|
|
76
|
+
* @param operation - e.g. 'add'
|
|
77
|
+
*/
|
|
78
|
+
function shouldCapture(gateway, domain, operation) {
|
|
79
|
+
if (gateway !== 'mutate')
|
|
80
|
+
return false;
|
|
81
|
+
const key = `${domain}.${operation}`;
|
|
82
|
+
return CAPTURE_OPERATIONS.has(key);
|
|
83
|
+
}
|
|
84
|
+
// ---------------------------------------------------------------------------
|
|
85
|
+
// Handlers
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
/**
|
|
88
|
+
* Handle PromptSubmit — log incoming mutation intents to BRAIN.
|
|
89
|
+
*
|
|
90
|
+
* Only fires for mutate operations in CAPTURE_OPERATIONS.
|
|
91
|
+
* Gated behind brain.captureWork config (or CLEO_BRAIN_CAPTURE_WORK env).
|
|
92
|
+
*
|
|
93
|
+
* @param projectRoot - Absolute path to the project root
|
|
94
|
+
* @param payload - PromptSubmit event payload
|
|
95
|
+
*/
|
|
96
|
+
export async function handleWorkPromptSubmit(projectRoot, payload) {
|
|
97
|
+
if (!shouldCapture(payload.gateway, payload.domain, payload.operation))
|
|
98
|
+
return;
|
|
99
|
+
if (!(await isWorkCaptureEnabled(projectRoot)))
|
|
100
|
+
return;
|
|
101
|
+
const { observeBrain } = await import('../../memory/brain-retrieval.js');
|
|
102
|
+
try {
|
|
103
|
+
await observeBrain(projectRoot, {
|
|
104
|
+
text: `Dispatch intent: ${payload.gateway}:${payload.domain}.${payload.operation}${payload.source ? ` (from ${payload.source})` : ''}`,
|
|
105
|
+
title: `Work intent: ${payload.domain}.${payload.operation}`,
|
|
106
|
+
type: 'discovery',
|
|
107
|
+
sourceType: 'agent',
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
if (!isMissingBrainSchemaError(err))
|
|
112
|
+
throw err;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Handle ResponseComplete — capture completed mutations to BRAIN.
|
|
117
|
+
*
|
|
118
|
+
* Only fires for successful mutate operations in CAPTURE_OPERATIONS.
|
|
119
|
+
* Failures are skipped — the intent was already captured by handleWorkPromptSubmit.
|
|
120
|
+
* Gated behind brain.captureWork config (or CLEO_BRAIN_CAPTURE_WORK env).
|
|
121
|
+
*
|
|
122
|
+
* @param projectRoot - Absolute path to the project root
|
|
123
|
+
* @param payload - ResponseComplete event payload
|
|
124
|
+
*/
|
|
125
|
+
export async function handleWorkResponseComplete(projectRoot, payload) {
|
|
126
|
+
if (!shouldCapture(payload.gateway, payload.domain, payload.operation))
|
|
127
|
+
return;
|
|
128
|
+
// Only capture successful completions — failures are noise
|
|
129
|
+
if (!payload.success)
|
|
130
|
+
return;
|
|
131
|
+
if (!(await isWorkCaptureEnabled(projectRoot)))
|
|
132
|
+
return;
|
|
133
|
+
const { observeBrain } = await import('../../memory/brain-retrieval.js');
|
|
134
|
+
try {
|
|
135
|
+
const durationNote = payload.durationMs != null ? ` (${payload.durationMs}ms)` : '';
|
|
136
|
+
await observeBrain(projectRoot, {
|
|
137
|
+
text: `Dispatch complete: ${payload.gateway}:${payload.domain}.${payload.operation}${durationNote}`,
|
|
138
|
+
title: `Work done: ${payload.domain}.${payload.operation}`,
|
|
139
|
+
type: 'change',
|
|
140
|
+
sourceType: 'agent',
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
if (!isMissingBrainSchemaError(err))
|
|
145
|
+
throw err;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// ---------------------------------------------------------------------------
|
|
149
|
+
// Auto-registration
|
|
150
|
+
// ---------------------------------------------------------------------------
|
|
151
|
+
// Register at lower priority (90) than lifecycle hooks (100) so lifecycle
|
|
152
|
+
// handlers always run first.
|
|
153
|
+
hooks.register({
|
|
154
|
+
id: 'work-capture-prompt-submit',
|
|
155
|
+
event: 'PromptSubmit',
|
|
156
|
+
handler: handleWorkPromptSubmit,
|
|
157
|
+
priority: 90,
|
|
158
|
+
});
|
|
159
|
+
hooks.register({
|
|
160
|
+
id: 'work-capture-response-complete',
|
|
161
|
+
event: 'ResponseComplete',
|
|
162
|
+
handler: handleWorkResponseComplete,
|
|
163
|
+
priority: 90,
|
|
164
|
+
});
|
|
165
|
+
//# sourceMappingURL=work-capture-hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-capture-hooks.js","sourceRoot":"","sources":["../../../src/hooks/handlers/work-capture-hooks.ts"],"names":[],"mappings":"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"}
|