@cleocode/core 2026.4.58 → 2026.4.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/adapter-registry.js +64 -0
- package/dist/adapters/adapter-registry.js.map +1 -0
- package/dist/adapters/discovery.js +83 -0
- package/dist/adapters/discovery.js.map +1 -0
- package/dist/adapters/index.js +9 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/manager.js +260 -0
- package/dist/adapters/manager.js.map +1 -0
- package/dist/admin/export-tasks.js +171 -0
- package/dist/admin/export-tasks.js.map +1 -0
- package/dist/admin/export.js +103 -0
- package/dist/admin/export.js.map +1 -0
- package/dist/admin/help.js +106 -0
- package/dist/admin/help.js.map +1 -0
- package/dist/admin/import-tasks.js +182 -0
- package/dist/admin/import-tasks.js.map +1 -0
- package/dist/admin/import.js +129 -0
- package/dist/admin/import.js.map +1 -0
- package/dist/admin/index.js +13 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/adrs/find.js +134 -0
- package/dist/adrs/find.js.map +1 -0
- package/dist/adrs/index.js +15 -0
- package/dist/adrs/index.js.map +1 -0
- package/dist/adrs/link-pipeline.js +160 -0
- package/dist/adrs/link-pipeline.js.map +1 -0
- package/dist/adrs/list.js +43 -0
- package/dist/adrs/list.js.map +1 -0
- package/dist/adrs/parse.js +51 -0
- package/dist/adrs/parse.js.map +1 -0
- package/dist/adrs/show.js +22 -0
- package/dist/adrs/show.js.map +1 -0
- package/dist/adrs/sync.js +232 -0
- package/dist/adrs/sync.js.map +1 -0
- package/dist/adrs/types.js +9 -0
- package/dist/adrs/types.js.map +1 -0
- package/dist/adrs/validate.js +57 -0
- package/dist/adrs/validate.js.map +1 -0
- package/dist/agents/agent-registry.js +288 -0
- package/dist/agents/agent-registry.js.map +1 -0
- package/dist/agents/agent-schema.js +82 -0
- package/dist/agents/agent-schema.js.map +1 -0
- package/dist/agents/capacity.js +116 -0
- package/dist/agents/capacity.js.map +1 -0
- package/dist/agents/execution-learning.js +474 -0
- package/dist/agents/execution-learning.js.map +1 -0
- package/dist/agents/health-monitor.js +217 -0
- package/dist/agents/health-monitor.js.map +1 -0
- package/dist/agents/index.js +29 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/registry.js +314 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/retry.js +215 -0
- package/dist/agents/retry.js.map +1 -0
- package/dist/audit-prune.js +94 -0
- package/dist/audit-prune.js.map +1 -0
- package/dist/audit.js +68 -0
- package/dist/audit.js.map +1 -0
- package/dist/backfill/index.js +229 -0
- package/dist/backfill/index.js.map +1 -0
- package/dist/bootstrap.js +435 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/caamp/adapter.js +259 -0
- package/dist/caamp/adapter.js.map +1 -0
- package/dist/caamp/capability-check.js +38 -0
- package/dist/caamp/capability-check.js.map +1 -0
- package/dist/caamp/index.js +21 -0
- package/dist/caamp/index.js.map +1 -0
- package/dist/caamp-init.js +16 -0
- package/dist/caamp-init.js.map +1 -0
- package/dist/cleo.js +322 -0
- package/dist/cleo.js.map +1 -0
- package/dist/code/index.js +14 -0
- package/dist/code/index.js.map +1 -0
- package/dist/code/outline.js +165 -0
- package/dist/code/outline.js.map +1 -0
- package/dist/code/parser.js +420 -0
- package/dist/code/parser.js.map +1 -0
- package/dist/code/search.js +135 -0
- package/dist/code/search.js.map +1 -0
- package/dist/code/unfold.js +155 -0
- package/dist/code/unfold.js.map +1 -0
- package/dist/codebase-map/analyzers/architecture.js +129 -0
- package/dist/codebase-map/analyzers/architecture.js.map +1 -0
- package/dist/codebase-map/analyzers/concerns.js +122 -0
- package/dist/codebase-map/analyzers/concerns.js.map +1 -0
- package/dist/codebase-map/analyzers/conventions.js +149 -0
- package/dist/codebase-map/analyzers/conventions.js.map +1 -0
- package/dist/codebase-map/analyzers/integrations.js +108 -0
- package/dist/codebase-map/analyzers/integrations.js.map +1 -0
- package/dist/codebase-map/analyzers/stack.js +117 -0
- package/dist/codebase-map/analyzers/stack.js.map +1 -0
- package/dist/codebase-map/analyzers/structure.js +137 -0
- package/dist/codebase-map/analyzers/structure.js.map +1 -0
- package/dist/codebase-map/analyzers/testing.js +118 -0
- package/dist/codebase-map/analyzers/testing.js.map +1 -0
- package/dist/codebase-map/index.js +57 -0
- package/dist/codebase-map/index.js.map +1 -0
- package/dist/codebase-map/store.js +122 -0
- package/dist/codebase-map/store.js.map +1 -0
- package/dist/codebase-map/summary.js +152 -0
- package/dist/codebase-map/summary.js.map +1 -0
- package/dist/compliance/index.js +288 -0
- package/dist/compliance/index.js.map +1 -0
- package/dist/compliance/protocol-enforcement.js +332 -0
- package/dist/compliance/protocol-enforcement.js.map +1 -0
- package/dist/compliance/protocol-rules.js +786 -0
- package/dist/compliance/protocol-rules.js.map +1 -0
- package/dist/compliance/protocol-types.js +79 -0
- package/dist/compliance/protocol-types.js.map +1 -0
- package/dist/compliance/store.js +53 -0
- package/dist/compliance/store.js.map +1 -0
- package/dist/conduit/conduit-client.js +107 -0
- package/dist/conduit/conduit-client.js.map +1 -0
- package/dist/conduit/factory.js +55 -0
- package/dist/conduit/factory.js.map +1 -0
- package/dist/conduit/http-transport.js +155 -0
- package/dist/conduit/http-transport.js.map +1 -0
- package/dist/conduit/local-transport.js +255 -0
- package/dist/conduit/local-transport.js.map +1 -0
- package/dist/conduit/sse-transport.js +299 -0
- package/dist/conduit/sse-transport.js.map +1 -0
- package/dist/config/build-config.js +29 -0
- package/dist/config/build-config.js.map +1 -0
- package/dist/config.js +407 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.js +18 -0
- package/dist/constants.js.map +1 -0
- package/dist/context/index.js +137 -0
- package/dist/context/index.js.map +1 -0
- package/dist/crypto/credentials.js +219 -0
- package/dist/crypto/credentials.js.map +1 -0
- package/dist/discovery.js +182 -0
- package/dist/discovery.js.map +1 -0
- package/dist/engine-result.js +12 -0
- package/dist/engine-result.js.map +1 -0
- package/dist/error-catalog.js +404 -0
- package/dist/error-catalog.js.map +1 -0
- package/dist/error-registry.js +393 -0
- package/dist/error-registry.js.map +1 -0
- package/dist/errors.js +173 -0
- package/dist/errors.js.map +1 -0
- package/dist/hooks/handlers/agent-hooks.js +106 -0
- package/dist/hooks/handlers/agent-hooks.js.map +1 -0
- package/dist/hooks/handlers/conduit-hooks.js +229 -0
- package/dist/hooks/handlers/conduit-hooks.js.map +1 -0
- package/dist/hooks/handlers/context-hooks.js +111 -0
- package/dist/hooks/handlers/context-hooks.js.map +1 -0
- package/dist/hooks/handlers/error-hooks.js +52 -0
- package/dist/hooks/handlers/error-hooks.js.map +1 -0
- package/dist/hooks/handlers/file-hooks.js +104 -0
- package/dist/hooks/handlers/file-hooks.js.map +1 -0
- package/dist/hooks/handlers/handler-helpers.js +61 -0
- package/dist/hooks/handlers/handler-helpers.js.map +1 -0
- package/dist/hooks/handlers/index.js +37 -0
- package/dist/hooks/handlers/index.js.map +1 -0
- package/dist/hooks/handlers/intelligence-hooks.js +69 -0
- package/dist/hooks/handlers/intelligence-hooks.js.map +1 -0
- package/dist/hooks/handlers/memory-bridge-refresh.js +42 -0
- package/dist/hooks/handlers/memory-bridge-refresh.js.map +1 -0
- package/dist/hooks/handlers/notification-hooks.js +62 -0
- package/dist/hooks/handlers/notification-hooks.js.map +1 -0
- package/dist/hooks/handlers/session-hooks.js +190 -0
- package/dist/hooks/handlers/session-hooks.js.map +1 -0
- package/dist/hooks/handlers/task-hooks.js +90 -0
- package/dist/hooks/handlers/task-hooks.js.map +1 -0
- package/dist/hooks/handlers/watchdog-hooks.js +162 -0
- package/dist/hooks/handlers/watchdog-hooks.js.map +1 -0
- package/dist/hooks/handlers/work-capture-hooks.js +165 -0
- package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
- package/dist/hooks/index.js +13 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/payload-schemas.js +220 -0
- package/dist/hooks/payload-schemas.js.map +1 -0
- package/dist/hooks/provider-hooks.js +66 -0
- package/dist/hooks/provider-hooks.js.map +1 -0
- package/dist/hooks/registry.js +229 -0
- package/dist/hooks/registry.js.map +1 -0
- package/dist/hooks/types.js +66 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/hooks.js +136 -0
- package/dist/hooks.js.map +1 -0
- package/dist/init.js +959 -0
- package/dist/init.js.map +1 -0
- package/dist/inject/index.js +82 -0
- package/dist/inject/index.js.map +1 -0
- package/dist/injection.js +377 -0
- package/dist/injection.js.map +1 -0
- package/dist/intelligence/adaptive-validation.js +497 -0
- package/dist/intelligence/adaptive-validation.js.map +1 -0
- package/dist/intelligence/impact.js +675 -0
- package/dist/intelligence/impact.js.map +1 -0
- package/dist/intelligence/index.js +22 -0
- package/dist/intelligence/index.js.map +1 -0
- package/dist/intelligence/patterns.js +492 -0
- package/dist/intelligence/patterns.js.map +1 -0
- package/dist/intelligence/prediction.js +499 -0
- package/dist/intelligence/prediction.js.map +1 -0
- package/dist/intelligence/types.js +13 -0
- package/dist/intelligence/types.js.map +1 -0
- package/dist/issue/create.js +121 -0
- package/dist/issue/create.js.map +1 -0
- package/dist/issue/diagnostics.js +59 -0
- package/dist/issue/diagnostics.js.map +1 -0
- package/dist/issue/index.js +10 -0
- package/dist/issue/index.js.map +1 -0
- package/dist/issue/template-parser.js +267 -0
- package/dist/issue/template-parser.js.map +1 -0
- package/dist/json-schema-validator.js +76 -0
- package/dist/json-schema-validator.js.map +1 -0
- package/dist/lib/index.js +11 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/retry.js +152 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/lib/tree-sitter-languages.js +75 -0
- package/dist/lib/tree-sitter-languages.js.map +1 -0
- package/dist/lifecycle/chain-composition.js +152 -0
- package/dist/lifecycle/chain-composition.js.map +1 -0
- package/dist/lifecycle/chain-store.js +246 -0
- package/dist/lifecycle/chain-store.js.map +1 -0
- package/dist/lifecycle/consolidate-rcasd.js +352 -0
- package/dist/lifecycle/consolidate-rcasd.js.map +1 -0
- package/dist/lifecycle/default-chain.js +176 -0
- package/dist/lifecycle/default-chain.js.map +1 -0
- package/dist/lifecycle/evidence.js +180 -0
- package/dist/lifecycle/evidence.js.map +1 -0
- package/dist/lifecycle/frontmatter.js +363 -0
- package/dist/lifecycle/frontmatter.js.map +1 -0
- package/dist/lifecycle/index.js +756 -0
- package/dist/lifecycle/index.js.map +1 -0
- package/dist/lifecycle/pipeline.js +656 -0
- package/dist/lifecycle/pipeline.js.map +1 -0
- package/dist/lifecycle/rcasd-index.js +326 -0
- package/dist/lifecycle/rcasd-index.js.map +1 -0
- package/dist/lifecycle/rcasd-paths.js +220 -0
- package/dist/lifecycle/rcasd-paths.js.map +1 -0
- package/dist/lifecycle/resume.js +864 -0
- package/dist/lifecycle/resume.js.map +1 -0
- package/dist/lifecycle/stage-artifacts.js +94 -0
- package/dist/lifecycle/stage-artifacts.js.map +1 -0
- package/dist/lifecycle/stage-guidance.js +234 -0
- package/dist/lifecycle/stage-guidance.js.map +1 -0
- package/dist/lifecycle/stages.js +534 -0
- package/dist/lifecycle/stages.js.map +1 -0
- package/dist/lifecycle/state-machine.js +516 -0
- package/dist/lifecycle/state-machine.js.map +1 -0
- package/dist/lifecycle/tessera-engine.js +249 -0
- package/dist/lifecycle/tessera-engine.js.map +1 -0
- package/dist/logger.js +140 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory/anthropic-key-resolver.js +105 -0
- package/dist/memory/anthropic-key-resolver.js.map +1 -0
- package/dist/memory/auto-extract.js +77 -0
- package/dist/memory/auto-extract.js.map +1 -0
- package/dist/memory/brain-backfill.js +389 -0
- package/dist/memory/brain-backfill.js.map +1 -0
- package/dist/memory/brain-consolidator.js +294 -0
- package/dist/memory/brain-consolidator.js.map +1 -0
- package/dist/memory/brain-embedding.js +66 -0
- package/dist/memory/brain-embedding.js.map +1 -0
- package/dist/memory/brain-export.js +239 -0
- package/dist/memory/brain-export.js.map +1 -0
- package/dist/memory/brain-lifecycle.js +841 -0
- package/dist/memory/brain-lifecycle.js.map +1 -0
- package/dist/memory/brain-links.js +161 -0
- package/dist/memory/brain-links.js.map +1 -0
- package/dist/memory/brain-maintenance.js +125 -0
- package/dist/memory/brain-maintenance.js.map +1 -0
- package/dist/memory/brain-migration.js +149 -0
- package/dist/memory/brain-migration.js.map +1 -0
- package/dist/memory/brain-purge.js +243 -0
- package/dist/memory/brain-purge.js.map +1 -0
- package/dist/memory/brain-reasoning.js +215 -0
- package/dist/memory/brain-reasoning.js.map +1 -0
- package/dist/memory/brain-retrieval.js +1088 -0
- package/dist/memory/brain-retrieval.js.map +1 -0
- package/dist/memory/brain-row-types.js +10 -0
- package/dist/memory/brain-row-types.js.map +1 -0
- package/dist/memory/brain-search.js +613 -0
- package/dist/memory/brain-search.js.map +1 -0
- package/dist/memory/brain-similarity.js +145 -0
- package/dist/memory/brain-similarity.js.map +1 -0
- package/dist/memory/brain-stdp.js +297 -0
- package/dist/memory/brain-stdp.js.map +1 -0
- package/dist/memory/claude-mem-migration.js +277 -0
- package/dist/memory/claude-mem-migration.js.map +1 -0
- package/dist/memory/decision-cross-link.js +228 -0
- package/dist/memory/decision-cross-link.js.map +1 -0
- package/dist/memory/decisions.js +242 -0
- package/dist/memory/decisions.js.map +1 -0
- package/dist/memory/edge-types.js +31 -0
- package/dist/memory/edge-types.js.map +1 -0
- package/dist/memory/embedding-local.js +102 -0
- package/dist/memory/embedding-local.js.map +1 -0
- package/dist/memory/embedding-queue.js +271 -0
- package/dist/memory/embedding-queue.js.map +1 -0
- package/dist/memory/embedding-worker.js +58 -0
- package/dist/memory/embedding-worker.js.map +1 -0
- package/dist/memory/engine-compat.js +1597 -0
- package/dist/memory/engine-compat.js.map +1 -0
- package/dist/memory/extraction-gate.js +459 -0
- package/dist/memory/extraction-gate.js.map +1 -0
- package/dist/memory/graph-auto-populate.js +148 -0
- package/dist/memory/graph-auto-populate.js.map +1 -0
- package/dist/memory/graph-memory-bridge.js +517 -0
- package/dist/memory/graph-memory-bridge.js.map +1 -0
- package/dist/memory/graph-queries.js +290 -0
- package/dist/memory/graph-queries.js.map +1 -0
- package/dist/memory/index.js +1148 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/learnings.js +197 -0
- package/dist/memory/learnings.js.map +1 -0
- package/dist/memory/llm-extraction.js +425 -0
- package/dist/memory/llm-extraction.js.map +1 -0
- package/dist/memory/memory-bridge.js +382 -0
- package/dist/memory/memory-bridge.js.map +1 -0
- package/dist/memory/mental-model-injection.js +61 -0
- package/dist/memory/mental-model-injection.js.map +1 -0
- package/dist/memory/mental-model-queue.js +211 -0
- package/dist/memory/mental-model-queue.js.map +1 -0
- package/dist/memory/observer-reflector.js +626 -0
- package/dist/memory/observer-reflector.js.map +1 -0
- package/dist/memory/patterns.js +192 -0
- package/dist/memory/patterns.js.map +1 -0
- package/dist/memory/pipeline-manifest-sqlite.js +975 -0
- package/dist/memory/pipeline-manifest-sqlite.js.map +1 -0
- package/dist/memory/quality-feedback.js +449 -0
- package/dist/memory/quality-feedback.js.map +1 -0
- package/dist/memory/quality-scoring.js +182 -0
- package/dist/memory/quality-scoring.js.map +1 -0
- package/dist/memory/session-memory.js +331 -0
- package/dist/memory/session-memory.js.map +1 -0
- package/dist/memory/sleep-consolidation.js +706 -0
- package/dist/memory/sleep-consolidation.js.map +1 -0
- package/dist/memory/temporal-supersession.js +403 -0
- package/dist/memory/temporal-supersession.js.map +1 -0
- package/dist/metrics/ab-test.js +260 -0
- package/dist/metrics/ab-test.js.map +1 -0
- package/dist/metrics/aggregation.js +363 -0
- package/dist/metrics/aggregation.js.map +1 -0
- package/dist/metrics/common.js +64 -0
- package/dist/metrics/common.js.map +1 -0
- package/dist/metrics/enums.js +78 -0
- package/dist/metrics/enums.js.map +1 -0
- package/dist/metrics/index.js +19 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/metrics/model-provider-registry.js +88 -0
- package/dist/metrics/model-provider-registry.js.map +1 -0
- package/dist/metrics/otel-integration.js +263 -0
- package/dist/metrics/otel-integration.js.map +1 -0
- package/dist/metrics/provider-detection.js +103 -0
- package/dist/metrics/provider-detection.js.map +1 -0
- package/dist/metrics/token-estimation.js +253 -0
- package/dist/metrics/token-estimation.js.map +1 -0
- package/dist/metrics/token-service.js +450 -0
- package/dist/metrics/token-service.js.map +1 -0
- package/dist/migration/agent-outputs.js +316 -0
- package/dist/migration/agent-outputs.js.map +1 -0
- package/dist/migration/checksum.js +92 -0
- package/dist/migration/checksum.js.map +1 -0
- package/dist/migration/index.js +282 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/migration/logger.js +360 -0
- package/dist/migration/logger.js.map +1 -0
- package/dist/migration/preflight.js +9 -0
- package/dist/migration/preflight.js.map +1 -0
- package/dist/migration/state.js +421 -0
- package/dist/migration/state.js.map +1 -0
- package/dist/migration/validate.js +241 -0
- package/dist/migration/validate.js.map +1 -0
- package/dist/mvi-helpers.js +73 -0
- package/dist/mvi-helpers.js.map +1 -0
- package/dist/nexus/deps.js +375 -0
- package/dist/nexus/deps.js.map +1 -0
- package/dist/nexus/discover.js +288 -0
- package/dist/nexus/discover.js.map +1 -0
- package/dist/nexus/hash.js +10 -0
- package/dist/nexus/hash.js.map +1 -0
- package/dist/nexus/index.js +40 -0
- package/dist/nexus/index.js.map +1 -0
- package/dist/nexus/migrate-json-to-sqlite.js +115 -0
- package/dist/nexus/migrate-json-to-sqlite.js.map +1 -0
- package/dist/nexus/nexus-bridge.js +321 -0
- package/dist/nexus/nexus-bridge.js.map +1 -0
- package/dist/nexus/permissions.js +105 -0
- package/dist/nexus/permissions.js.map +1 -0
- package/dist/nexus/query.js +175 -0
- package/dist/nexus/query.js.map +1 -0
- package/dist/nexus/registry.js +665 -0
- package/dist/nexus/registry.js.map +1 -0
- package/dist/nexus/sharing/index.js +288 -0
- package/dist/nexus/sharing/index.js.map +1 -0
- package/dist/nexus/transfer-types.js +8 -0
- package/dist/nexus/transfer-types.js.map +1 -0
- package/dist/nexus/transfer.js +271 -0
- package/dist/nexus/transfer.js.map +1 -0
- package/dist/nexus/workspace.js +355 -0
- package/dist/nexus/workspace.js.map +1 -0
- package/dist/observability/index.js +103 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/log-filter.js +63 -0
- package/dist/observability/log-filter.js.map +1 -0
- package/dist/observability/log-parser.js +99 -0
- package/dist/observability/log-parser.js.map +1 -0
- package/dist/observability/log-reader.js +139 -0
- package/dist/observability/log-reader.js.map +1 -0
- package/dist/observability/types.js +19 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/orchestration/analyze.js +107 -0
- package/dist/orchestration/analyze.js.map +1 -0
- package/dist/orchestration/bootstrap.js +132 -0
- package/dist/orchestration/bootstrap.js.map +1 -0
- package/dist/orchestration/context.js +56 -0
- package/dist/orchestration/context.js.map +1 -0
- package/dist/orchestration/critical-path.js +100 -0
- package/dist/orchestration/critical-path.js.map +1 -0
- package/dist/orchestration/hierarchy.js +183 -0
- package/dist/orchestration/hierarchy.js.map +1 -0
- package/dist/orchestration/index.js +287 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/parallel.js +89 -0
- package/dist/orchestration/parallel.js.map +1 -0
- package/dist/orchestration/protocol-validators.js +815 -0
- package/dist/orchestration/protocol-validators.js.map +1 -0
- package/dist/orchestration/skill-ops.js +98 -0
- package/dist/orchestration/skill-ops.js.map +1 -0
- package/dist/orchestration/status.js +107 -0
- package/dist/orchestration/status.js.map +1 -0
- package/dist/orchestration/unblock.js +103 -0
- package/dist/orchestration/unblock.js.map +1 -0
- package/dist/orchestration/validate-spawn.js +67 -0
- package/dist/orchestration/validate-spawn.js.map +1 -0
- package/dist/orchestration/waves.js +86 -0
- package/dist/orchestration/waves.js.map +1 -0
- package/dist/otel/index.js +163 -0
- package/dist/otel/index.js.map +1 -0
- package/dist/output.js +164 -0
- package/dist/output.js.map +1 -0
- package/dist/pagination.js +64 -0
- package/dist/pagination.js.map +1 -0
- package/dist/paths.js +882 -0
- package/dist/paths.js.map +1 -0
- package/dist/phases/deps.js +372 -0
- package/dist/phases/deps.js.map +1 -0
- package/dist/phases/index.js +349 -0
- package/dist/phases/index.js.map +1 -0
- package/dist/pipeline/index.js +10 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/phase.js +45 -0
- package/dist/pipeline/phase.js.map +1 -0
- package/dist/platform.js +211 -0
- package/dist/platform.js.map +1 -0
- package/dist/project-info.js +84 -0
- package/dist/project-info.js.map +1 -0
- package/dist/reconciliation/index.js +10 -0
- package/dist/reconciliation/index.js.map +1 -0
- package/dist/reconciliation/link-store.js +175 -0
- package/dist/reconciliation/link-store.js.map +1 -0
- package/dist/reconciliation/reconciliation-engine.js +298 -0
- package/dist/reconciliation/reconciliation-engine.js.map +1 -0
- package/dist/release/artifacts.js +427 -0
- package/dist/release/artifacts.js.map +1 -0
- package/dist/release/changelog-writer.js +151 -0
- package/dist/release/changelog-writer.js.map +1 -0
- package/dist/release/channel.js +144 -0
- package/dist/release/channel.js.map +1 -0
- package/dist/release/ci.js +166 -0
- package/dist/release/ci.js.map +1 -0
- package/dist/release/github-pr.js +225 -0
- package/dist/release/github-pr.js.map +1 -0
- package/dist/release/guards.js +116 -0
- package/dist/release/guards.js.map +1 -0
- package/dist/release/index.js +22 -0
- package/dist/release/index.js.map +1 -0
- package/dist/release/release-config.js +158 -0
- package/dist/release/release-config.js.map +1 -0
- package/dist/release/release-manifest.js +1019 -0
- package/dist/release/release-manifest.js.map +1 -0
- package/dist/release/version-bump.js +255 -0
- package/dist/release/version-bump.js.map +1 -0
- package/dist/remote/index.js +257 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/repair.js +130 -0
- package/dist/repair.js.map +1 -0
- package/dist/research/index.js +2 -0
- package/dist/research/index.js.map +1 -0
- package/dist/roadmap/index.js +59 -0
- package/dist/roadmap/index.js.map +1 -0
- package/dist/routing/capability-matrix.js +1556 -0
- package/dist/routing/capability-matrix.js.map +1 -0
- package/dist/routing/index.js +9 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/scaffold.js +1937 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/schema-management.js +295 -0
- package/dist/schema-management.js.map +1 -0
- package/dist/security/index.js +9 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/input-sanitization.js +326 -0
- package/dist/security/input-sanitization.js.map +1 -0
- package/dist/sequence/index.js +295 -0
- package/dist/sequence/index.js.map +1 -0
- package/dist/sessions/assumptions.js +54 -0
- package/dist/sessions/assumptions.js.map +1 -0
- package/dist/sessions/briefing.js +377 -0
- package/dist/sessions/briefing.js.map +1 -0
- package/dist/sessions/context-alert.js +222 -0
- package/dist/sessions/context-alert.js.map +1 -0
- package/dist/sessions/context-inject.js +61 -0
- package/dist/sessions/context-inject.js.map +1 -0
- package/dist/sessions/context-monitor.js +98 -0
- package/dist/sessions/context-monitor.js.map +1 -0
- package/dist/sessions/decisions.js +65 -0
- package/dist/sessions/decisions.js.map +1 -0
- package/dist/sessions/find.js +65 -0
- package/dist/sessions/find.js.map +1 -0
- package/dist/sessions/handoff.js +328 -0
- package/dist/sessions/handoff.js.map +1 -0
- package/dist/sessions/hitl-warnings.js +254 -0
- package/dist/sessions/hitl-warnings.js.map +1 -0
- package/dist/sessions/index.js +327 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/session-archive.js +40 -0
- package/dist/sessions/session-archive.js.map +1 -0
- package/dist/sessions/session-cleanup.js +59 -0
- package/dist/sessions/session-cleanup.js.map +1 -0
- package/dist/sessions/session-drift.js +134 -0
- package/dist/sessions/session-drift.js.map +1 -0
- package/dist/sessions/session-enforcement.js +144 -0
- package/dist/sessions/session-enforcement.js.map +1 -0
- package/dist/sessions/session-grade.js +253 -0
- package/dist/sessions/session-grade.js.map +1 -0
- package/dist/sessions/session-history.js +42 -0
- package/dist/sessions/session-history.js.map +1 -0
- package/dist/sessions/session-id.js +81 -0
- package/dist/sessions/session-id.js.map +1 -0
- package/dist/sessions/session-memory-bridge.js +30 -0
- package/dist/sessions/session-memory-bridge.js.map +1 -0
- package/dist/sessions/session-show.js +24 -0
- package/dist/sessions/session-show.js.map +1 -0
- package/dist/sessions/session-stats.js +69 -0
- package/dist/sessions/session-stats.js.map +1 -0
- package/dist/sessions/session-suspend.js +39 -0
- package/dist/sessions/session-suspend.js.map +1 -0
- package/dist/sessions/session-switch.js +51 -0
- package/dist/sessions/session-switch.js.map +1 -0
- package/dist/sessions/session-view.js +76 -0
- package/dist/sessions/session-view.js.map +1 -0
- package/dist/sessions/snapshot.js +213 -0
- package/dist/sessions/snapshot.js.map +1 -0
- package/dist/sessions/statusline-setup.js +85 -0
- package/dist/sessions/statusline-setup.js.map +1 -0
- package/dist/sessions/types.js +8 -0
- package/dist/sessions/types.js.map +1 -0
- package/dist/skills/agents/config.js +94 -0
- package/dist/skills/agents/config.js.map +1 -0
- package/dist/skills/agents/install.js +116 -0
- package/dist/skills/agents/install.js.map +1 -0
- package/dist/skills/agents/registry.js +161 -0
- package/dist/skills/agents/registry.js.map +1 -0
- package/dist/skills/discovery.js +333 -0
- package/dist/skills/discovery.js.map +1 -0
- package/dist/skills/dispatch.js +347 -0
- package/dist/skills/dispatch.js.map +1 -0
- package/dist/skills/dynamic-skill-generator.js +87 -0
- package/dist/skills/dynamic-skill-generator.js.map +1 -0
- package/dist/skills/index.js +44 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/injection/subagent.js +195 -0
- package/dist/skills/injection/subagent.js.map +1 -0
- package/dist/skills/injection/token.js +260 -0
- package/dist/skills/injection/token.js.map +1 -0
- package/dist/skills/install.js +40 -0
- package/dist/skills/install.js.map +1 -0
- package/dist/skills/manifests/contribution.js +175 -0
- package/dist/skills/manifests/contribution.js.map +1 -0
- package/dist/skills/manifests/research.js +281 -0
- package/dist/skills/manifests/research.js.map +1 -0
- package/dist/skills/manifests/resolver.js +146 -0
- package/dist/skills/manifests/resolver.js.map +1 -0
- package/dist/skills/marketplace.js +90 -0
- package/dist/skills/marketplace.js.map +1 -0
- package/dist/skills/orchestrator/spawn.js +178 -0
- package/dist/skills/orchestrator/spawn.js.map +1 -0
- package/dist/skills/orchestrator/startup.js +451 -0
- package/dist/skills/orchestrator/startup.js.map +1 -0
- package/dist/skills/orchestrator/validator.js +301 -0
- package/dist/skills/orchestrator/validator.js.map +1 -0
- package/dist/skills/precedence-integration.js +73 -0
- package/dist/skills/precedence-integration.js.map +1 -0
- package/dist/skills/precedence-types.js +16 -0
- package/dist/skills/precedence-types.js.map +1 -0
- package/dist/skills/routing-table.js +63 -0
- package/dist/skills/routing-table.js.map +1 -0
- package/dist/skills/skill-paths.js +217 -0
- package/dist/skills/skill-paths.js.map +1 -0
- package/dist/skills/test-utility.js +55 -0
- package/dist/skills/test-utility.js.map +1 -0
- package/dist/skills/types.js +118 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/skills/validation.js +183 -0
- package/dist/skills/validation.js.map +1 -0
- package/dist/skills/version.js +57 -0
- package/dist/skills/version.js.map +1 -0
- package/dist/snapshot/index.js +188 -0
- package/dist/snapshot/index.js.map +1 -0
- package/dist/spawn/adapter-registry.js +246 -0
- package/dist/spawn/adapter-registry.js.map +1 -0
- package/dist/spawn/index.js +10 -0
- package/dist/spawn/index.js.map +1 -0
- package/dist/stats/index.js +350 -0
- package/dist/stats/index.js.map +1 -0
- package/dist/stats/workflow-telemetry.js +400 -0
- package/dist/stats/workflow-telemetry.js.map +1 -0
- package/dist/sticky/archive.js +47 -0
- package/dist/sticky/archive.js.map +1 -0
- package/dist/sticky/convert.js +235 -0
- package/dist/sticky/convert.js.map +1 -0
- package/dist/sticky/create.js +48 -0
- package/dist/sticky/create.js.map +1 -0
- package/dist/sticky/id.js +35 -0
- package/dist/sticky/id.js.map +1 -0
- package/dist/sticky/index.js +16 -0
- package/dist/sticky/index.js.map +1 -0
- package/dist/sticky/list.js +57 -0
- package/dist/sticky/list.js.map +1 -0
- package/dist/sticky/purge.js +45 -0
- package/dist/sticky/purge.js.map +1 -0
- package/dist/sticky/show.js +42 -0
- package/dist/sticky/show.js.map +1 -0
- package/dist/sticky/types.js +10 -0
- package/dist/sticky/types.js.map +1 -0
- package/dist/store/agent-registry-accessor.js +886 -0
- package/dist/store/agent-registry-accessor.js.map +1 -0
- package/dist/store/api-key-kdf.js +84 -0
- package/dist/store/api-key-kdf.js.map +1 -0
- package/dist/store/atomic.js +167 -0
- package/dist/store/atomic.js.map +1 -0
- package/dist/store/backup-crypto.js +184 -0
- package/dist/store/backup-crypto.js.map +1 -0
- package/dist/store/backup-pack.js +581 -0
- package/dist/store/backup-pack.js.map +1 -0
- package/dist/store/backup-unpack.js +449 -0
- package/dist/store/backup-unpack.js.map +1 -0
- package/dist/store/backup.js +94 -0
- package/dist/store/backup.js.map +1 -0
- package/dist/store/brain-accessor.js +429 -0
- package/dist/store/brain-accessor.js.map +1 -0
- package/dist/store/brain-schema.js +628 -0
- package/dist/store/brain-schema.js.map +1 -0
- package/dist/store/brain-sqlite.js +320 -0
- package/dist/store/brain-sqlite.js.map +1 -0
- package/dist/store/cache.js +168 -0
- package/dist/store/cache.js.map +1 -0
- package/dist/store/chain-schema.js +51 -0
- package/dist/store/chain-schema.js.map +1 -0
- package/dist/store/cleanup-legacy.js +171 -0
- package/dist/store/cleanup-legacy.js.map +1 -0
- package/dist/store/conduit-sqlite.js +570 -0
- package/dist/store/conduit-sqlite.js.map +1 -0
- package/dist/store/converters.js +124 -0
- package/dist/store/converters.js.map +1 -0
- package/dist/store/cross-db-cleanup.js +319 -0
- package/dist/store/cross-db-cleanup.js.map +1 -0
- package/dist/store/data-accessor.js +26 -0
- package/dist/store/data-accessor.js.map +1 -0
- package/dist/store/data-safety-central.js +269 -0
- package/dist/store/data-safety-central.js.map +1 -0
- package/dist/store/data-safety.js +274 -0
- package/dist/store/data-safety.js.map +1 -0
- package/dist/store/db-helpers.js +241 -0
- package/dist/store/db-helpers.js.map +1 -0
- package/dist/store/export.js +155 -0
- package/dist/store/export.js.map +1 -0
- package/dist/store/file-utils.js +270 -0
- package/dist/store/file-utils.js.map +1 -0
- package/dist/store/git-checkpoint.js +365 -0
- package/dist/store/git-checkpoint.js.map +1 -0
- package/dist/store/global-salt.js +147 -0
- package/dist/store/global-salt.js.map +1 -0
- package/dist/store/import-logging.js +139 -0
- package/dist/store/import-logging.js.map +1 -0
- package/dist/store/import-remap.js +145 -0
- package/dist/store/import-remap.js.map +1 -0
- package/dist/store/import-sort.js +121 -0
- package/dist/store/import-sort.js.map +1 -0
- package/dist/store/index.js +29 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/json.js +208 -0
- package/dist/store/json.js.map +1 -0
- package/dist/store/lifecycle-store.js +249 -0
- package/dist/store/lifecycle-store.js.map +1 -0
- package/dist/store/lock.js +70 -0
- package/dist/store/lock.js.map +1 -0
- package/dist/store/migrate-signaldock-to-conduit.js +562 -0
- package/dist/store/migrate-signaldock-to-conduit.js.map +1 -0
- package/dist/store/migration-manager.js +403 -0
- package/dist/store/migration-manager.js.map +1 -0
- package/dist/store/migration-sqlite.js +676 -0
- package/dist/store/migration-sqlite.js.map +1 -0
- package/dist/store/nexus-schema.js +277 -0
- package/dist/store/nexus-schema.js.map +1 -0
- package/dist/store/nexus-sqlite.js +242 -0
- package/dist/store/nexus-sqlite.js.map +1 -0
- package/dist/store/nexus-validation-schemas.js +40 -0
- package/dist/store/nexus-validation-schemas.js.map +1 -0
- package/dist/store/parsers.js +37 -0
- package/dist/store/parsers.js.map +1 -0
- package/dist/store/project-detect.js +457 -0
- package/dist/store/project-detect.js.map +1 -0
- package/dist/store/provider.js +101 -0
- package/dist/store/provider.js.map +1 -0
- package/dist/store/regenerators.js +207 -0
- package/dist/store/regenerators.js.map +1 -0
- package/dist/store/restore-conflict-report.js +206 -0
- package/dist/store/restore-conflict-report.js.map +1 -0
- package/dist/store/restore-json-merge.js +454 -0
- package/dist/store/restore-json-merge.js.map +1 -0
- package/dist/store/safety-data-accessor.js +257 -0
- package/dist/store/safety-data-accessor.js.map +1 -0
- package/dist/store/schema.js +7 -0
- package/dist/store/schema.js.map +1 -0
- package/dist/store/session-store.js +219 -0
- package/dist/store/session-store.js.map +1 -0
- package/dist/store/signaldock-sqlite.js +550 -0
- package/dist/store/signaldock-sqlite.js.map +1 -0
- package/dist/store/sqlite-backup.js +498 -0
- package/dist/store/sqlite-backup.js.map +1 -0
- package/dist/store/sqlite-data-accessor.js +788 -0
- package/dist/store/sqlite-data-accessor.js.map +1 -0
- package/dist/store/sqlite.js +483 -0
- package/dist/store/sqlite.js.map +1 -0
- package/dist/store/status-registry.js +8 -0
- package/dist/store/status-registry.js.map +1 -0
- package/dist/store/t310-readiness.js +115 -0
- package/dist/store/t310-readiness.js.map +1 -0
- package/dist/store/task-store.js +358 -0
- package/dist/store/task-store.js.map +1 -0
- package/dist/store/tasks-schema.js +610 -0
- package/dist/store/tasks-schema.js.map +1 -0
- package/dist/store/typed-query.js +15 -0
- package/dist/store/typed-query.js.map +1 -0
- package/dist/store/validation-schemas.js +278 -0
- package/dist/store/validation-schemas.js.map +1 -0
- package/dist/system/archive-analytics.js +277 -0
- package/dist/system/archive-analytics.js.map +1 -0
- package/dist/system/archive-stats.js +64 -0
- package/dist/system/archive-stats.js.map +1 -0
- package/dist/system/audit.js +145 -0
- package/dist/system/audit.js.map +1 -0
- package/dist/system/backup.js +280 -0
- package/dist/system/backup.js.map +1 -0
- package/dist/system/cleanup.js +134 -0
- package/dist/system/cleanup.js.map +1 -0
- package/dist/system/dependencies.js +466 -0
- package/dist/system/dependencies.js.map +1 -0
- package/dist/system/health.js +1207 -0
- package/dist/system/health.js.map +1 -0
- package/dist/system/index.js +18 -0
- package/dist/system/index.js.map +1 -0
- package/dist/system/inject-generate.js +122 -0
- package/dist/system/inject-generate.js.map +1 -0
- package/dist/system/labels.js +38 -0
- package/dist/system/labels.js.map +1 -0
- package/dist/system/metrics.js +61 -0
- package/dist/system/metrics.js.map +1 -0
- package/dist/system/migrate.js +43 -0
- package/dist/system/migrate.js.map +1 -0
- package/dist/system/platform-paths.js +80 -0
- package/dist/system/platform-paths.js.map +1 -0
- package/dist/system/runtime.js +161 -0
- package/dist/system/runtime.js.map +1 -0
- package/dist/system/safestop.js +89 -0
- package/dist/system/safestop.js.map +1 -0
- package/dist/system/storage-preflight.js +123 -0
- package/dist/system/storage-preflight.js.map +1 -0
- package/dist/task-work/index.js +159 -0
- package/dist/task-work/index.js.map +1 -0
- package/dist/tasks/add.js +837 -0
- package/dist/tasks/add.js.map +1 -0
- package/dist/tasks/analyze.js +85 -0
- package/dist/tasks/analyze.js.map +1 -0
- package/dist/tasks/archive.js +90 -0
- package/dist/tasks/archive.js.map +1 -0
- package/dist/tasks/atomicity.js +83 -0
- package/dist/tasks/atomicity.js.map +1 -0
- package/dist/tasks/cancel-ops.js +83 -0
- package/dist/tasks/cancel-ops.js.map +1 -0
- package/dist/tasks/complete.js +252 -0
- package/dist/tasks/complete.js.map +1 -0
- package/dist/tasks/crossref-extract.js +73 -0
- package/dist/tasks/crossref-extract.js.map +1 -0
- package/dist/tasks/delete-preview.js +192 -0
- package/dist/tasks/delete-preview.js.map +1 -0
- package/dist/tasks/delete.js +120 -0
- package/dist/tasks/delete.js.map +1 -0
- package/dist/tasks/deletion-strategy.js +200 -0
- package/dist/tasks/deletion-strategy.js.map +1 -0
- package/dist/tasks/dependency-check.js +278 -0
- package/dist/tasks/dependency-check.js.map +1 -0
- package/dist/tasks/deps-ready.js +32 -0
- package/dist/tasks/deps-ready.js.map +1 -0
- package/dist/tasks/enforcement.js +86 -0
- package/dist/tasks/enforcement.js.map +1 -0
- package/dist/tasks/epic-enforcement.js +294 -0
- package/dist/tasks/epic-enforcement.js.map +1 -0
- package/dist/tasks/find.js +163 -0
- package/dist/tasks/find.js.map +1 -0
- package/dist/tasks/graph-cache.js +127 -0
- package/dist/tasks/graph-cache.js.map +1 -0
- package/dist/tasks/graph-ops.js +173 -0
- package/dist/tasks/graph-ops.js.map +1 -0
- package/dist/tasks/graph-rag.js +328 -0
- package/dist/tasks/graph-rag.js.map +1 -0
- package/dist/tasks/hierarchy-policy.js +149 -0
- package/dist/tasks/hierarchy-policy.js.map +1 -0
- package/dist/tasks/hierarchy.js +185 -0
- package/dist/tasks/hierarchy.js.map +1 -0
- package/dist/tasks/id-generator.js +65 -0
- package/dist/tasks/id-generator.js.map +1 -0
- package/dist/tasks/index.js +14 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/labels.js +55 -0
- package/dist/tasks/labels.js.map +1 -0
- package/dist/tasks/list.js +75 -0
- package/dist/tasks/list.js.map +1 -0
- package/dist/tasks/phase-tracking.js +133 -0
- package/dist/tasks/phase-tracking.js.map +1 -0
- package/dist/tasks/pipeline-stage.js +248 -0
- package/dist/tasks/pipeline-stage.js.map +1 -0
- package/dist/tasks/plan.js +268 -0
- package/dist/tasks/plan.js.map +1 -0
- package/dist/tasks/relates.js +101 -0
- package/dist/tasks/relates.js.map +1 -0
- package/dist/tasks/show.js +83 -0
- package/dist/tasks/show.js.map +1 -0
- package/dist/tasks/size-weighting.js +86 -0
- package/dist/tasks/size-weighting.js.map +1 -0
- package/dist/tasks/staleness.js +86 -0
- package/dist/tasks/staleness.js.map +1 -0
- package/dist/tasks/task-ops.js +1741 -0
- package/dist/tasks/task-ops.js.map +1 -0
- package/dist/tasks/update.js +303 -0
- package/dist/tasks/update.js.map +1 -0
- package/dist/telemetry/index.js +249 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/schema.js +60 -0
- package/dist/telemetry/schema.js.map +1 -0
- package/dist/telemetry/sqlite.js +111 -0
- package/dist/telemetry/sqlite.js.map +1 -0
- package/dist/templates/index.js +10 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/parser.js +254 -0
- package/dist/templates/parser.js.map +1 -0
- package/dist/ui/aliases.js +153 -0
- package/dist/ui/aliases.js.map +1 -0
- package/dist/ui/changelog.js +184 -0
- package/dist/ui/changelog.js.map +1 -0
- package/dist/ui/command-registry.js +168 -0
- package/dist/ui/command-registry.js.map +1 -0
- package/dist/ui/flags.js +94 -0
- package/dist/ui/flags.js.map +1 -0
- package/dist/ui/index.js +24 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/upgrade.js +1387 -0
- package/dist/upgrade.js.map +1 -0
- package/dist/validation/chain-validation.js +146 -0
- package/dist/validation/chain-validation.js.map +1 -0
- package/dist/validation/compliance.js +155 -0
- package/dist/validation/compliance.js.map +1 -0
- package/dist/validation/docs-sync.js +212 -0
- package/dist/validation/docs-sync.js.map +1 -0
- package/dist/validation/doctor/checks.js +1069 -0
- package/dist/validation/doctor/checks.js.map +1 -0
- package/dist/validation/doctor/index.js +9 -0
- package/dist/validation/doctor/index.js.map +1 -0
- package/dist/validation/doctor/project-cache.js +160 -0
- package/dist/validation/doctor/project-cache.js.map +1 -0
- package/dist/validation/doctor/utils.js +155 -0
- package/dist/validation/doctor/utils.js.map +1 -0
- package/dist/validation/engine.js +914 -0
- package/dist/validation/engine.js.map +1 -0
- package/dist/validation/gap-check.js +175 -0
- package/dist/validation/gap-check.js.map +1 -0
- package/dist/validation/index.js +40 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/manifest.js +237 -0
- package/dist/validation/manifest.js.map +1 -0
- package/dist/validation/operation-gate-validators.js +724 -0
- package/dist/validation/operation-gate-validators.js.map +1 -0
- package/dist/validation/operation-verification-gates.js +532 -0
- package/dist/validation/operation-verification-gates.js.map +1 -0
- package/dist/validation/param-utils.js +141 -0
- package/dist/validation/param-utils.js.map +1 -0
- package/dist/validation/protocol-common.js +300 -0
- package/dist/validation/protocol-common.js.map +1 -0
- package/dist/validation/protocols/_shared.js +82 -0
- package/dist/validation/protocols/_shared.js.map +1 -0
- package/dist/validation/protocols/architecture-decision.js +31 -0
- package/dist/validation/protocols/architecture-decision.js.map +1 -0
- package/dist/validation/protocols/artifact-publish.js +28 -0
- package/dist/validation/protocols/artifact-publish.js.map +1 -0
- package/dist/validation/protocols/consensus.js +41 -0
- package/dist/validation/protocols/consensus.js.map +1 -0
- package/dist/validation/protocols/contribution.js +27 -0
- package/dist/validation/protocols/contribution.js.map +1 -0
- package/dist/validation/protocols/decomposition.js +28 -0
- package/dist/validation/protocols/decomposition.js.map +1 -0
- package/dist/validation/protocols/implementation.js +24 -0
- package/dist/validation/protocols/implementation.js.map +1 -0
- package/dist/validation/protocols/provenance.js +29 -0
- package/dist/validation/protocols/provenance.js.map +1 -0
- package/dist/validation/protocols/release.js +29 -0
- package/dist/validation/protocols/release.js.map +1 -0
- package/dist/validation/protocols/research.js +24 -0
- package/dist/validation/protocols/research.js.map +1 -0
- package/dist/validation/protocols/specification.js +27 -0
- package/dist/validation/protocols/specification.js.map +1 -0
- package/dist/validation/protocols/testing.js +30 -0
- package/dist/validation/protocols/testing.js.map +1 -0
- package/dist/validation/protocols/validation.js +30 -0
- package/dist/validation/protocols/validation.js.map +1 -0
- package/dist/validation/schema-integrity.js +170 -0
- package/dist/validation/schema-integrity.js.map +1 -0
- package/dist/validation/schema-validator.js +176 -0
- package/dist/validation/schema-validator.js.map +1 -0
- package/dist/validation/validate-ops.js +937 -0
- package/dist/validation/validate-ops.js.map +1 -0
- package/dist/validation/validation-rules.js +226 -0
- package/dist/validation/validation-rules.js.map +1 -0
- package/dist/validation/verification.js +321 -0
- package/dist/validation/verification.js.map +1 -0
- package/package.json +8 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mental-model-queue.js","sourceRoot":"","sources":["../../src/memory/mental-model-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,626 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Observer/Reflector — LLM-driven session compression for CLEO BRAIN.
|
|
3
|
+
*
|
|
4
|
+
* Implements the Mastra-style two-agent compression pattern that achieves
|
|
5
|
+
* 3-6x context compression on text and 5-40x on tool-call-heavy workloads.
|
|
6
|
+
*
|
|
7
|
+
* ## Architecture
|
|
8
|
+
*
|
|
9
|
+
* **Observer** (runs after each task or when observation count ≥ threshold):
|
|
10
|
+
* - Takes raw brain observations from the current session
|
|
11
|
+
* - Produces 3-5 dense, dated, prioritized observation notes (≤ 300 chars each)
|
|
12
|
+
* - Compresses verbose tool outputs into 1-line summaries
|
|
13
|
+
* - Stored as brain_observations with source='observer-compressed'
|
|
14
|
+
* - Linked to original observation IDs via brain_memory_links table
|
|
15
|
+
*
|
|
16
|
+
* **Reflector** (runs at session end when observation count ≥ threshold):
|
|
17
|
+
* - Takes accumulated observation notes from the current session
|
|
18
|
+
* - Restructures: combines related items, identifies cross-cutting patterns,
|
|
19
|
+
* drops superseded observations
|
|
20
|
+
* - Outputs stored as brain_patterns and brain_learnings via existing store fns
|
|
21
|
+
* - Source tagged as 'reflector-synthesized'
|
|
22
|
+
*
|
|
23
|
+
* ## LLM Backend
|
|
24
|
+
*
|
|
25
|
+
* Calls the Anthropic Messages API directly via native fetch (no SDK dep).
|
|
26
|
+
* Uses the cheapest available model (`claude-haiku-4-5` or env override).
|
|
27
|
+
* When `ANTHROPIC_API_KEY` is not set, both functions silently no-op — the
|
|
28
|
+
* rest of the memory pipeline still runs normally.
|
|
29
|
+
*
|
|
30
|
+
* ## Configuration
|
|
31
|
+
*
|
|
32
|
+
* Add to `config.json` under `brain.observer`:
|
|
33
|
+
* ```json
|
|
34
|
+
* {
|
|
35
|
+
* "brain": {
|
|
36
|
+
* "observer": {
|
|
37
|
+
* "enabled": true,
|
|
38
|
+
* "threshold": 10
|
|
39
|
+
* },
|
|
40
|
+
* "reflector": {
|
|
41
|
+
* "enabled": true
|
|
42
|
+
* }
|
|
43
|
+
* }
|
|
44
|
+
* }
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @task T554
|
|
48
|
+
* @epic T549
|
|
49
|
+
* @see .cleo/agent-outputs/R-llm-memory-systems-research.md §7 (Observer/Reflector Pattern)
|
|
50
|
+
*/
|
|
51
|
+
import { randomBytes } from 'node:crypto';
|
|
52
|
+
import { getBrainNativeDb } from '../store/brain-sqlite.js';
|
|
53
|
+
import { addGraphEdge } from './graph-auto-populate.js';
|
|
54
|
+
import { storeLearning } from './learnings.js';
|
|
55
|
+
import { storePattern } from './patterns.js';
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// Constants
|
|
58
|
+
// ============================================================================
|
|
59
|
+
/** Default model used for observer/reflector LLM calls. */
|
|
60
|
+
const DEFAULT_MODEL = 'claude-haiku-4-5';
|
|
61
|
+
/** Maximum tokens for LLM response. Enough for 5 structured observations. */
|
|
62
|
+
const MAX_RESPONSE_TOKENS = 1024;
|
|
63
|
+
/** Default threshold: trigger observer after this many session observations. */
|
|
64
|
+
const DEFAULT_OBSERVER_THRESHOLD = 10;
|
|
65
|
+
/** Maximum observations passed to observer in a single batch. */
|
|
66
|
+
const OBSERVER_BATCH_LIMIT = 30;
|
|
67
|
+
/** Source tag written to brain_observations for observer-compressed entries. */
|
|
68
|
+
const OBSERVER_SOURCE = 'observer-compressed';
|
|
69
|
+
/** Source tag written to brain_patterns / brain_learnings for reflector outputs. */
|
|
70
|
+
const REFLECTOR_SOURCE = 'reflector-synthesized';
|
|
71
|
+
/**
|
|
72
|
+
* Load observer configuration for the project.
|
|
73
|
+
* Falls back to defaults on any error (enabled=true, threshold=10).
|
|
74
|
+
*/
|
|
75
|
+
async function loadObserverConfig(projectRoot) {
|
|
76
|
+
try {
|
|
77
|
+
const { loadConfig } = await import('../config.js');
|
|
78
|
+
const config = await loadConfig(projectRoot);
|
|
79
|
+
// Config type does not yet include observer/reflector — use dynamic cast
|
|
80
|
+
const brain = config.brain;
|
|
81
|
+
const observer = brain?.['observer'];
|
|
82
|
+
return {
|
|
83
|
+
enabled: observer?.['enabled'] !== false,
|
|
84
|
+
threshold: typeof observer?.['threshold'] === 'number'
|
|
85
|
+
? observer['threshold']
|
|
86
|
+
: DEFAULT_OBSERVER_THRESHOLD,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return { enabled: true, threshold: DEFAULT_OBSERVER_THRESHOLD };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Load reflector configuration for the project.
|
|
95
|
+
* Falls back to defaults on any error (enabled=true).
|
|
96
|
+
*/
|
|
97
|
+
async function loadReflectorConfig(projectRoot) {
|
|
98
|
+
try {
|
|
99
|
+
const { loadConfig } = await import('../config.js');
|
|
100
|
+
const config = await loadConfig(projectRoot);
|
|
101
|
+
const brain = config.brain;
|
|
102
|
+
const reflector = brain?.['reflector'];
|
|
103
|
+
return {
|
|
104
|
+
enabled: reflector?.['enabled'] !== false,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return { enabled: true };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Call the Anthropic Messages API via native fetch.
|
|
113
|
+
*
|
|
114
|
+
* Uses `ANTHROPIC_API_KEY` from the environment. Returns null when the key is
|
|
115
|
+
* not set or when the API call fails (caller handles graceful degradation).
|
|
116
|
+
*
|
|
117
|
+
* @param systemPrompt - System instruction for the LLM.
|
|
118
|
+
* @param userContent - User message content.
|
|
119
|
+
* @returns The assistant response text, or null on failure.
|
|
120
|
+
*/
|
|
121
|
+
async function callAnthropicLlm(systemPrompt, userContent) {
|
|
122
|
+
const { resolveAnthropicApiKey } = await import('./anthropic-key-resolver.js');
|
|
123
|
+
const apiKey = resolveAnthropicApiKey();
|
|
124
|
+
if (!apiKey) {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
const model = process.env['CLEO_OBSERVER_MODEL'] ?? DEFAULT_MODEL;
|
|
128
|
+
try {
|
|
129
|
+
const response = await fetch('https://api.anthropic.com/v1/messages', {
|
|
130
|
+
method: 'POST',
|
|
131
|
+
headers: {
|
|
132
|
+
'Content-Type': 'application/json',
|
|
133
|
+
'x-api-key': apiKey,
|
|
134
|
+
'anthropic-version': '2023-06-01',
|
|
135
|
+
},
|
|
136
|
+
body: JSON.stringify({
|
|
137
|
+
model,
|
|
138
|
+
max_tokens: MAX_RESPONSE_TOKENS,
|
|
139
|
+
system: systemPrompt,
|
|
140
|
+
messages: [{ role: 'user', content: userContent }],
|
|
141
|
+
}),
|
|
142
|
+
});
|
|
143
|
+
if (!response.ok) {
|
|
144
|
+
const body = await response.text().catch(() => '');
|
|
145
|
+
console.warn(`[observer-reflector] Anthropic API error ${response.status}: ${body.slice(0, 200)}`);
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
const data = (await response.json());
|
|
149
|
+
const textBlock = data.content.find((b) => b.type === 'text');
|
|
150
|
+
return textBlock?.text ?? null;
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
154
|
+
console.warn(`[observer-reflector] LLM call failed: ${msg}`);
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// ============================================================================
|
|
159
|
+
// JSON parse helper
|
|
160
|
+
// ============================================================================
|
|
161
|
+
/**
|
|
162
|
+
* Attempt to parse the LLM response as JSON. Strips markdown code fences
|
|
163
|
+
* (```json ... ```) before parsing. Returns null on parse failure.
|
|
164
|
+
*/
|
|
165
|
+
function parseJsonResponse(text) {
|
|
166
|
+
try {
|
|
167
|
+
// Strip markdown code fences if present
|
|
168
|
+
const cleaned = text
|
|
169
|
+
.replace(/^```(?:json)?\s*/m, '')
|
|
170
|
+
.replace(/\s*```\s*$/m, '')
|
|
171
|
+
.trim();
|
|
172
|
+
return JSON.parse(cleaned);
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// ============================================================================
|
|
179
|
+
// Database helpers
|
|
180
|
+
// ============================================================================
|
|
181
|
+
/**
|
|
182
|
+
* Query recent brain_observations for a session.
|
|
183
|
+
*
|
|
184
|
+
* Returns up to `limit` observations (most recent first) that:
|
|
185
|
+
* - Were created within the current session (`source_session_id = sessionId`)
|
|
186
|
+
* - Are not already observer-compressed (`source_type != 'observer-compressed'`)
|
|
187
|
+
* - Have not been soft-evicted (`invalid_at IS NULL`)
|
|
188
|
+
*
|
|
189
|
+
* Falls back to all uncompressed observations from the last 24 hours when
|
|
190
|
+
* sessionId is not provided or yields fewer than 2 results.
|
|
191
|
+
*/
|
|
192
|
+
function fetchSessionObservations(sessionId, limit) {
|
|
193
|
+
const nativeDb = getBrainNativeDb();
|
|
194
|
+
if (!nativeDb)
|
|
195
|
+
return [];
|
|
196
|
+
try {
|
|
197
|
+
if (sessionId) {
|
|
198
|
+
const rows = nativeDb
|
|
199
|
+
.prepare(`
|
|
200
|
+
SELECT id, type, title, narrative, created_at, source_session_id
|
|
201
|
+
FROM brain_observations
|
|
202
|
+
WHERE source_session_id = ?
|
|
203
|
+
AND (source_type IS NULL OR source_type != ?)
|
|
204
|
+
AND invalid_at IS NULL
|
|
205
|
+
ORDER BY created_at DESC
|
|
206
|
+
LIMIT ?
|
|
207
|
+
`)
|
|
208
|
+
.all(sessionId, OBSERVER_SOURCE, limit);
|
|
209
|
+
if (rows.length >= 2)
|
|
210
|
+
return rows;
|
|
211
|
+
}
|
|
212
|
+
// Fallback: recent uncompressed observations from the last 24 hours
|
|
213
|
+
const cutoff = new Date(Date.now() - 24 * 60 * 60 * 1000)
|
|
214
|
+
.toISOString()
|
|
215
|
+
.replace('T', ' ')
|
|
216
|
+
.slice(0, 19);
|
|
217
|
+
return nativeDb
|
|
218
|
+
.prepare(`
|
|
219
|
+
SELECT id, type, title, narrative, created_at, source_session_id
|
|
220
|
+
FROM brain_observations
|
|
221
|
+
WHERE created_at >= ?
|
|
222
|
+
AND (source_type IS NULL OR source_type != ?)
|
|
223
|
+
AND invalid_at IS NULL
|
|
224
|
+
ORDER BY created_at DESC
|
|
225
|
+
LIMIT ?
|
|
226
|
+
`)
|
|
227
|
+
.all(cutoff, OBSERVER_SOURCE, limit);
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
return [];
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Count uncompressed observations for a session.
|
|
235
|
+
* Used to check the trigger threshold before running the observer.
|
|
236
|
+
*/
|
|
237
|
+
function countSessionObservations(sessionId) {
|
|
238
|
+
const nativeDb = getBrainNativeDb();
|
|
239
|
+
if (!nativeDb)
|
|
240
|
+
return 0;
|
|
241
|
+
try {
|
|
242
|
+
if (sessionId) {
|
|
243
|
+
const row = nativeDb
|
|
244
|
+
.prepare(`
|
|
245
|
+
SELECT COUNT(*) as cnt
|
|
246
|
+
FROM brain_observations
|
|
247
|
+
WHERE source_session_id = ?
|
|
248
|
+
AND (source_type IS NULL OR source_type != ?)
|
|
249
|
+
AND invalid_at IS NULL
|
|
250
|
+
`)
|
|
251
|
+
.get(sessionId, OBSERVER_SOURCE);
|
|
252
|
+
if (row && row.cnt > 0)
|
|
253
|
+
return row.cnt;
|
|
254
|
+
}
|
|
255
|
+
const cutoff = new Date(Date.now() - 24 * 60 * 60 * 1000)
|
|
256
|
+
.toISOString()
|
|
257
|
+
.replace('T', ' ')
|
|
258
|
+
.slice(0, 19);
|
|
259
|
+
const row = nativeDb
|
|
260
|
+
.prepare(`
|
|
261
|
+
SELECT COUNT(*) as cnt
|
|
262
|
+
FROM brain_observations
|
|
263
|
+
WHERE created_at >= ?
|
|
264
|
+
AND (source_type IS NULL OR source_type != ?)
|
|
265
|
+
AND invalid_at IS NULL
|
|
266
|
+
`)
|
|
267
|
+
.get(cutoff, OBSERVER_SOURCE);
|
|
268
|
+
return row?.cnt ?? 0;
|
|
269
|
+
}
|
|
270
|
+
catch {
|
|
271
|
+
return 0;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Store a compressed observer note as a brain_observation entry.
|
|
276
|
+
*
|
|
277
|
+
* Uses source_type = 'observer-compressed' so it is excluded from
|
|
278
|
+
* future observer input batches (no infinite compression loops).
|
|
279
|
+
*
|
|
280
|
+
* @returns ID of the stored entry, or null on failure.
|
|
281
|
+
*/
|
|
282
|
+
function storeObserverNote(projectRoot, note, sessionId) {
|
|
283
|
+
const nativeDb = getBrainNativeDb();
|
|
284
|
+
if (!nativeDb)
|
|
285
|
+
return null;
|
|
286
|
+
try {
|
|
287
|
+
const id = `O-${randomBytes(4).toString('hex')}`;
|
|
288
|
+
const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
289
|
+
const title = `[Observer p${note.priority}] ${note.observation.slice(0, 80)}`;
|
|
290
|
+
const narrative = `${note.observation} (compressed from: ${note.source_ids.join(', ')})`;
|
|
291
|
+
nativeDb
|
|
292
|
+
.prepare(`
|
|
293
|
+
INSERT INTO brain_observations
|
|
294
|
+
(id, type, title, narrative, source_type, source_session_id, quality_score,
|
|
295
|
+
memory_tier, created_at)
|
|
296
|
+
VALUES (?, 'change', ?, ?, ?, ?, ?, 'short', ?)
|
|
297
|
+
`)
|
|
298
|
+
.run(id, title, narrative, OBSERVER_SOURCE, sessionId ?? null,
|
|
299
|
+
// Quality: priority 1 = highest quality (1.0), priority 5 = lowest (0.6)
|
|
300
|
+
Math.max(0.6, 1.0 - (note.priority - 1) * 0.1), now);
|
|
301
|
+
// Link compressed note to its source observation IDs via graph edges
|
|
302
|
+
// (best-effort, non-blocking)
|
|
303
|
+
for (const sourceId of note.source_ids) {
|
|
304
|
+
addGraphEdge(projectRoot, `observation:${id}`, `observation:${sourceId}`, 'supersedes', 0.9, 'observer-reflector').catch(() => undefined);
|
|
305
|
+
}
|
|
306
|
+
return id;
|
|
307
|
+
}
|
|
308
|
+
catch (err) {
|
|
309
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
310
|
+
console.warn(`[observer-reflector] Failed to store observer note: ${msg}`);
|
|
311
|
+
return null;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Mark observations as superseded by the reflector.
|
|
316
|
+
* Sets invalid_at so they are excluded from future queries.
|
|
317
|
+
*/
|
|
318
|
+
function markSuperseded(ids) {
|
|
319
|
+
if (ids.length === 0)
|
|
320
|
+
return;
|
|
321
|
+
const nativeDb = getBrainNativeDb();
|
|
322
|
+
if (!nativeDb)
|
|
323
|
+
return;
|
|
324
|
+
const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
325
|
+
try {
|
|
326
|
+
// SQLite placeholder limit is 999; process in safe batches
|
|
327
|
+
const BATCH = 100;
|
|
328
|
+
for (let i = 0; i < ids.length; i += BATCH) {
|
|
329
|
+
const batch = ids.slice(i, i + BATCH);
|
|
330
|
+
const placeholders = batch.map(() => '?').join(',');
|
|
331
|
+
nativeDb
|
|
332
|
+
.prepare(`UPDATE brain_observations
|
|
333
|
+
SET invalid_at = ?, updated_at = ?
|
|
334
|
+
WHERE id IN (${placeholders}) AND invalid_at IS NULL`)
|
|
335
|
+
.run(now, now, ...batch);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
catch {
|
|
339
|
+
/* best-effort */
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
// ============================================================================
|
|
343
|
+
// Observer
|
|
344
|
+
// ============================================================================
|
|
345
|
+
/** System prompt for the Observer LLM call. */
|
|
346
|
+
const OBSERVER_SYSTEM_PROMPT = `You are compressing AI coding session activity into dense observation notes.
|
|
347
|
+
Input: recent observations and tool outputs from a CLEO agent coding session.
|
|
348
|
+
Output: 3-5 dated, prioritized observation notes (each ≤300 chars).
|
|
349
|
+
Focus on: state changes, decisions, errors, completed work.
|
|
350
|
+
Drop: verbose tool output, repetition, transient state.
|
|
351
|
+
Format: JSON array of objects with keys:
|
|
352
|
+
- date: ISO date string (YYYY-MM-DD)
|
|
353
|
+
- priority: integer 1-5 (1=architectural decision, 2=implementation choice, 3=constraint/bug, 4=routine action, 5=noise)
|
|
354
|
+
- observation: string ≤300 chars — capture DECISION+RATIONALE not the discussion
|
|
355
|
+
- source_ids: array of original observation IDs that this note compresses
|
|
356
|
+
|
|
357
|
+
Rules:
|
|
358
|
+
- For tool calls: capture the outcome, not the invocation
|
|
359
|
+
- For file reads: capture what was LEARNED, not what was read
|
|
360
|
+
- For errors: capture the ROOT CAUSE, not the stack trace
|
|
361
|
+
- Prefer priority 1-2 items; include priority 4-5 only if significant count
|
|
362
|
+
- ONLY return valid JSON array, no markdown fences or extra text`;
|
|
363
|
+
/**
|
|
364
|
+
* Run the Observer on current session observations.
|
|
365
|
+
*
|
|
366
|
+
* Triggered when:
|
|
367
|
+
* 1. `brain.observer.enabled` is true (default)
|
|
368
|
+
* 2. Uncompressed observation count ≥ `brain.observer.threshold` (default: 10)
|
|
369
|
+
* 3. `ANTHROPIC_API_KEY` is set in the environment
|
|
370
|
+
*
|
|
371
|
+
* Steps:
|
|
372
|
+
* 1. Fetch up to OBSERVER_BATCH_LIMIT recent uncompressed observations
|
|
373
|
+
* 2. Call Anthropic LLM with Observer prompt
|
|
374
|
+
* 3. Parse response as ObserverNote[]
|
|
375
|
+
* 4. Store each note as brain_observation with source='observer-compressed'
|
|
376
|
+
* 5. Add graph edges linking compressed notes → source observation IDs
|
|
377
|
+
*
|
|
378
|
+
* Always best-effort — errors are caught and logged, never thrown.
|
|
379
|
+
*
|
|
380
|
+
* @param projectRoot - Absolute path to project root.
|
|
381
|
+
* @param sessionId - Current CLEO session ID (used to scope observation query).
|
|
382
|
+
* @returns ObserverResult with counts and note details.
|
|
383
|
+
*/
|
|
384
|
+
export async function runObserver(projectRoot, sessionId) {
|
|
385
|
+
const empty = { ran: false, stored: 0, compressedIds: [], notes: [] };
|
|
386
|
+
// Gate 1: API key must be present
|
|
387
|
+
const { resolveAnthropicApiKey: resolveKey } = await import('./anthropic-key-resolver.js');
|
|
388
|
+
if (!resolveKey())
|
|
389
|
+
return empty;
|
|
390
|
+
// Gate 2: Configuration must allow observer
|
|
391
|
+
const cfg = await loadObserverConfig(projectRoot);
|
|
392
|
+
if (!cfg.enabled)
|
|
393
|
+
return empty;
|
|
394
|
+
// Gate 3: Ensure brain.db is initialized
|
|
395
|
+
try {
|
|
396
|
+
const { getBrainDb } = await import('../store/brain-sqlite.js');
|
|
397
|
+
await getBrainDb(projectRoot);
|
|
398
|
+
}
|
|
399
|
+
catch {
|
|
400
|
+
return empty;
|
|
401
|
+
}
|
|
402
|
+
// Gate 4: Threshold check
|
|
403
|
+
const count = countSessionObservations(sessionId);
|
|
404
|
+
if (count < cfg.threshold)
|
|
405
|
+
return empty;
|
|
406
|
+
// Fetch input observations
|
|
407
|
+
const observations = fetchSessionObservations(sessionId, OBSERVER_BATCH_LIMIT);
|
|
408
|
+
if (observations.length < 2)
|
|
409
|
+
return empty;
|
|
410
|
+
// Build the user message: list of observation records
|
|
411
|
+
const observationList = observations
|
|
412
|
+
.map((obs) => `[${obs.id}] ${obs.created_at ?? 'unknown'}: ${obs.title ?? ''} — ${(obs.narrative ?? '').slice(0, 200)}`)
|
|
413
|
+
.join('\n');
|
|
414
|
+
const userContent = `Recent observations to compress (${observations.length} entries):\n\n${observationList}`;
|
|
415
|
+
// Call LLM
|
|
416
|
+
const rawResponse = await callAnthropicLlm(OBSERVER_SYSTEM_PROMPT, userContent);
|
|
417
|
+
if (!rawResponse)
|
|
418
|
+
return empty;
|
|
419
|
+
// Parse response
|
|
420
|
+
const notes = parseJsonResponse(rawResponse);
|
|
421
|
+
if (!notes || !Array.isArray(notes) || notes.length === 0) {
|
|
422
|
+
console.warn('[observer-reflector] Observer: failed to parse LLM response as ObserverNote[]');
|
|
423
|
+
return empty;
|
|
424
|
+
}
|
|
425
|
+
// Validate and store notes
|
|
426
|
+
let stored = 0;
|
|
427
|
+
const compressedIds = [];
|
|
428
|
+
for (const note of notes) {
|
|
429
|
+
// Basic structural validation
|
|
430
|
+
if (typeof note.observation !== 'string' ||
|
|
431
|
+
!note.observation ||
|
|
432
|
+
!Array.isArray(note.source_ids)) {
|
|
433
|
+
continue;
|
|
434
|
+
}
|
|
435
|
+
const id = storeObserverNote(projectRoot, note, sessionId);
|
|
436
|
+
if (id !== null) {
|
|
437
|
+
stored++;
|
|
438
|
+
compressedIds.push(...note.source_ids);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
return {
|
|
442
|
+
ran: true,
|
|
443
|
+
stored,
|
|
444
|
+
compressedIds: [...new Set(compressedIds)],
|
|
445
|
+
notes,
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
// ============================================================================
|
|
449
|
+
// Reflector
|
|
450
|
+
// ============================================================================
|
|
451
|
+
/** System prompt for the Reflector LLM call. */
|
|
452
|
+
const REFLECTOR_SYSTEM_PROMPT = `You are restructuring accumulated observations from a coding agent session into durable knowledge.
|
|
453
|
+
Input: observation notes from the session (both raw and observer-compressed).
|
|
454
|
+
Output: extracted patterns + learnings.
|
|
455
|
+
|
|
456
|
+
Rules:
|
|
457
|
+
- Combine related observations into single insights
|
|
458
|
+
- Identify cross-cutting patterns (3+ similar events)
|
|
459
|
+
- Drop observations superseded by later ones (list their IDs in "superseded")
|
|
460
|
+
- Preserve ALL architectural decisions and their rationale
|
|
461
|
+
- Preserve ALL discovered constraints and bugs with root causes
|
|
462
|
+
- Add cross-cutting insights that emerge from the full picture
|
|
463
|
+
|
|
464
|
+
Format: JSON object with keys:
|
|
465
|
+
- patterns: array of { pattern: string (≤300 chars), context: string (≤150 chars) }
|
|
466
|
+
- learnings: array of { insight: string (≤300 chars), confidence: number 0.0-1.0 }
|
|
467
|
+
- superseded: array of observation IDs (strings) that are now redundant
|
|
468
|
+
|
|
469
|
+
ONLY return valid JSON, no markdown fences or extra text.
|
|
470
|
+
Maximum 5 patterns, 5 learnings. Quality over quantity.`;
|
|
471
|
+
/**
|
|
472
|
+
* Run the Reflector on accumulated session observation notes.
|
|
473
|
+
*
|
|
474
|
+
* Triggered at session end when:
|
|
475
|
+
* 1. `brain.reflector.enabled` is true (default)
|
|
476
|
+
* 2. Sufficient observations exist to reflect on (≥ 3)
|
|
477
|
+
* 3. `ANTHROPIC_API_KEY` is set in the environment
|
|
478
|
+
*
|
|
479
|
+
* Steps:
|
|
480
|
+
* 1. Fetch recent observations (raw + observer-compressed) for the session
|
|
481
|
+
* 2. Call Anthropic LLM with Reflector prompt
|
|
482
|
+
* 3. Parse response as { patterns, learnings, superseded }
|
|
483
|
+
* 4. Store patterns via storePattern()
|
|
484
|
+
* 5. Store learnings via storeLearning()
|
|
485
|
+
* 6. Mark superseded observations as invalid (soft-evict)
|
|
486
|
+
*
|
|
487
|
+
* Always best-effort — errors are caught and logged, never thrown.
|
|
488
|
+
*
|
|
489
|
+
* @param projectRoot - Absolute path to project root.
|
|
490
|
+
* @param sessionId - Current CLEO session ID.
|
|
491
|
+
* @returns ReflectorResult with counts.
|
|
492
|
+
*/
|
|
493
|
+
export async function runReflector(projectRoot, sessionId) {
|
|
494
|
+
const empty = {
|
|
495
|
+
ran: false,
|
|
496
|
+
patternsStored: 0,
|
|
497
|
+
learningsStored: 0,
|
|
498
|
+
supersededIds: [],
|
|
499
|
+
};
|
|
500
|
+
// Gate 1: API key must be present
|
|
501
|
+
const { resolveAnthropicApiKey: resolveKey } = await import('./anthropic-key-resolver.js');
|
|
502
|
+
if (!resolveKey())
|
|
503
|
+
return empty;
|
|
504
|
+
// Gate 2: Configuration must allow reflector
|
|
505
|
+
const cfg = await loadReflectorConfig(projectRoot);
|
|
506
|
+
if (!cfg.enabled)
|
|
507
|
+
return empty;
|
|
508
|
+
// Gate 3: Ensure brain.db is initialized
|
|
509
|
+
try {
|
|
510
|
+
const { getBrainDb } = await import('../store/brain-sqlite.js');
|
|
511
|
+
await getBrainDb(projectRoot);
|
|
512
|
+
}
|
|
513
|
+
catch {
|
|
514
|
+
return empty;
|
|
515
|
+
}
|
|
516
|
+
// Fetch ALL recent session observations (both raw and compressed)
|
|
517
|
+
// for reflector to synthesize across
|
|
518
|
+
const nativeDb = getBrainNativeDb();
|
|
519
|
+
if (!nativeDb)
|
|
520
|
+
return empty;
|
|
521
|
+
let observations = [];
|
|
522
|
+
try {
|
|
523
|
+
const cutoff = new Date(Date.now() - 48 * 60 * 60 * 1000)
|
|
524
|
+
.toISOString()
|
|
525
|
+
.replace('T', ' ')
|
|
526
|
+
.slice(0, 19);
|
|
527
|
+
if (sessionId) {
|
|
528
|
+
observations = nativeDb
|
|
529
|
+
.prepare(`
|
|
530
|
+
SELECT id, type, title, narrative, created_at, source_type
|
|
531
|
+
FROM brain_observations
|
|
532
|
+
WHERE source_session_id = ?
|
|
533
|
+
AND invalid_at IS NULL
|
|
534
|
+
ORDER BY created_at DESC
|
|
535
|
+
LIMIT 50
|
|
536
|
+
`)
|
|
537
|
+
.all(sessionId);
|
|
538
|
+
}
|
|
539
|
+
if (observations.length < 3) {
|
|
540
|
+
// Fallback: last 48 hours
|
|
541
|
+
observations = nativeDb
|
|
542
|
+
.prepare(`
|
|
543
|
+
SELECT id, type, title, narrative, created_at, source_type
|
|
544
|
+
FROM brain_observations
|
|
545
|
+
WHERE created_at >= ?
|
|
546
|
+
AND invalid_at IS NULL
|
|
547
|
+
ORDER BY created_at DESC
|
|
548
|
+
LIMIT 50
|
|
549
|
+
`)
|
|
550
|
+
.all(cutoff);
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
catch {
|
|
554
|
+
return empty;
|
|
555
|
+
}
|
|
556
|
+
if (observations.length < 3)
|
|
557
|
+
return empty;
|
|
558
|
+
// Build user message
|
|
559
|
+
const obsList = observations
|
|
560
|
+
.map((obs) => `[${obs.id}] (${obs.source_type ?? 'raw'}): ${obs.title ?? ''} — ${(obs.narrative ?? '').slice(0, 200)}`)
|
|
561
|
+
.join('\n');
|
|
562
|
+
const userContent = `Session observations to synthesize (${observations.length} entries):\n\n${obsList}`;
|
|
563
|
+
// Call LLM
|
|
564
|
+
const rawResponse = await callAnthropicLlm(REFLECTOR_SYSTEM_PROMPT, userContent);
|
|
565
|
+
if (!rawResponse)
|
|
566
|
+
return empty;
|
|
567
|
+
// Parse response
|
|
568
|
+
const output = parseJsonResponse(rawResponse);
|
|
569
|
+
if (!output || typeof output !== 'object') {
|
|
570
|
+
console.warn('[observer-reflector] Reflector: failed to parse LLM response');
|
|
571
|
+
return empty;
|
|
572
|
+
}
|
|
573
|
+
let patternsStored = 0;
|
|
574
|
+
let learningsStored = 0;
|
|
575
|
+
// Store patterns
|
|
576
|
+
if (Array.isArray(output.patterns)) {
|
|
577
|
+
for (const p of output.patterns) {
|
|
578
|
+
if (typeof p.pattern !== 'string' || !p.pattern)
|
|
579
|
+
continue;
|
|
580
|
+
try {
|
|
581
|
+
await storePattern(projectRoot, {
|
|
582
|
+
type: 'workflow',
|
|
583
|
+
pattern: p.pattern.slice(0, 500),
|
|
584
|
+
context: (p.context ?? '').slice(0, 200),
|
|
585
|
+
source: REFLECTOR_SOURCE,
|
|
586
|
+
});
|
|
587
|
+
patternsStored++;
|
|
588
|
+
}
|
|
589
|
+
catch {
|
|
590
|
+
/* best-effort */
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
// Store learnings
|
|
595
|
+
if (Array.isArray(output.learnings)) {
|
|
596
|
+
for (const l of output.learnings) {
|
|
597
|
+
if (typeof l.insight !== 'string' || !l.insight)
|
|
598
|
+
continue;
|
|
599
|
+
const confidence = typeof l.confidence === 'number' ? Math.max(0.1, Math.min(1.0, l.confidence)) : 0.7;
|
|
600
|
+
try {
|
|
601
|
+
await storeLearning(projectRoot, {
|
|
602
|
+
insight: l.insight.slice(0, 500),
|
|
603
|
+
source: REFLECTOR_SOURCE,
|
|
604
|
+
confidence,
|
|
605
|
+
actionable: confidence >= 0.7,
|
|
606
|
+
});
|
|
607
|
+
learningsStored++;
|
|
608
|
+
}
|
|
609
|
+
catch {
|
|
610
|
+
/* best-effort */
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
// Mark superseded observations
|
|
615
|
+
const supersededIds = Array.isArray(output.superseded)
|
|
616
|
+
? output.superseded.filter((id) => typeof id === 'string')
|
|
617
|
+
: [];
|
|
618
|
+
markSuperseded(supersededIds);
|
|
619
|
+
return {
|
|
620
|
+
ran: true,
|
|
621
|
+
patternsStored,
|
|
622
|
+
learningsStored,
|
|
623
|
+
supersededIds,
|
|
624
|
+
};
|
|
625
|
+
}
|
|
626
|
+
//# sourceMappingURL=observer-reflector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observer-reflector.js","sourceRoot":"","sources":["../../src/memory/observer-reflector.ts"],"names":[],"mappings":"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"}
|