@cleocode/core 2026.3.76 → 2026.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +188 -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.d.ts.map +1 -1
- package/dist/agents/agent-schema.js +85 -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 +367 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/caamp/adapter.js +434 -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 +23 -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/cant/approval.js +185 -0
- package/dist/cant/approval.js.map +1 -0
- package/dist/cant/context-builder.js +117 -0
- package/dist/cant/context-builder.js.map +1 -0
- package/dist/cant/discretion.js +116 -0
- package/dist/cant/discretion.js.map +1 -0
- package/dist/cant/index.js +23 -0
- package/dist/cant/index.js.map +1 -0
- package/dist/cant/parallel-runner.js +173 -0
- package/dist/cant/parallel-runner.js.map +1 -0
- package/dist/cant/types.js +11 -0
- package/dist/cant/types.js.map +1 -0
- package/dist/cant/workflow-executor.js +440 -0
- package/dist/cant/workflow-executor.js.map +1 -0
- package/dist/cleo.js +322 -0
- package/dist/cleo.js.map +1 -0
- package/dist/code/index.d.ts +10 -0
- package/dist/code/index.d.ts.map +1 -0
- package/dist/code/outline.d.ts +51 -0
- package/dist/code/outline.d.ts.map +1 -0
- package/dist/code/parser.d.ts +30 -0
- package/dist/code/parser.d.ts.map +1 -0
- package/dist/code/search.d.ts +42 -0
- package/dist/code/search.d.ts.map +1 -0
- package/dist/code/unfold.d.ts +44 -0
- package/dist/code/unfold.d.ts.map +1 -0
- package/dist/codebase-map/analyzers/architecture.js +130 -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 +80 -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.d.ts +9 -0
- package/dist/conduit/conduit-client.d.ts.map +1 -1
- package/dist/conduit/conduit-client.js +94 -0
- package/dist/conduit/conduit-client.js.map +1 -0
- package/dist/conduit/factory.d.ts +3 -1
- package/dist/conduit/factory.d.ts.map +1 -1
- package/dist/conduit/factory.js +35 -0
- package/dist/conduit/factory.js.map +1 -0
- package/dist/conduit/http-transport.d.ts +17 -5
- package/dist/conduit/http-transport.d.ts.map +1 -1
- package/dist/conduit/http-transport.js +165 -0
- package/dist/conduit/http-transport.js.map +1 -0
- package/dist/conduit/index.d.ts +5 -2
- package/dist/conduit/index.d.ts.map +1 -1
- package/dist/conduit/index.js +12 -0
- package/dist/conduit/index.js.map +1 -0
- package/dist/conduit/local-transport.d.ts +91 -0
- package/dist/conduit/local-transport.d.ts.map +1 -0
- package/dist/conduit/sse-transport.d.ts +68 -0
- package/dist/conduit/sse-transport.d.ts.map +1 -0
- package/dist/config/build-config.js +29 -0
- package/dist/config/build-config.js.map +1 -0
- package/dist/config.js +401 -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 +144 -0
- package/dist/crypto/credentials.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 +167 -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.js +28 -0
- package/dist/hooks/handlers/index.js.map +1 -0
- package/dist/hooks/handlers/mcp-hooks.js +147 -0
- package/dist/hooks/handlers/mcp-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/session-hooks.js +104 -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/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.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4605 -3042
- package/dist/index.js.map +4 -4
- package/dist/init.js +723 -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 +343 -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 +5 -2
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +286 -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.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +10 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/retry.js +152 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/lib/tree-sitter-languages.d.ts +29 -0
- package/dist/lib/tree-sitter-languages.d.ts.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 +167 -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 +753 -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/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/mcp/index.js +146 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/memory/auto-extract.js +177 -0
- package/dist/memory/auto-extract.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.js +298 -0
- package/dist/memory/brain-lifecycle.js.map +1 -0
- package/dist/memory/brain-links.d.ts.map +1 -1
- package/dist/memory/brain-links.js +148 -0
- package/dist/memory/brain-links.js.map +1 -0
- package/dist/memory/brain-maintenance.d.ts +13 -0
- package/dist/memory/brain-maintenance.d.ts.map +1 -1
- package/dist/memory/brain-maintenance.js +98 -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-reasoning.js +215 -0
- package/dist/memory/brain-reasoning.js.map +1 -0
- package/dist/memory/brain-retrieval.d.ts.map +1 -1
- package/dist/memory/brain-retrieval.js +526 -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 +519 -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 +148 -0
- package/dist/memory/decisions.js.map +1 -0
- package/dist/memory/embedding-local.js +97 -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 +1030 -0
- package/dist/memory/engine-compat.js.map +1 -0
- package/dist/memory/index.js +773 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/learnings.js +121 -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/patterns.js +122 -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/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 +74 -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/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 +263 -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.d.ts +32 -0
- package/dist/orchestration/hierarchy.d.ts.map +1 -0
- package/dist/orchestration/index.d.ts +1 -0
- package/dist/orchestration/index.d.ts.map +1 -1
- package/dist/orchestration/index.js +286 -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 +524 -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 +337 -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 +129 -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 +1557 -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 +1178 -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 +321 -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 +321 -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 +52 -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/signaldock/claude-code-transport.d.ts +34 -0
- package/dist/signaldock/claude-code-transport.d.ts.map +1 -0
- package/dist/signaldock/claude-code-transport.js +107 -0
- package/dist/signaldock/claude-code-transport.js.map +1 -0
- package/dist/signaldock/factory.d.ts +22 -0
- package/dist/signaldock/factory.d.ts.map +1 -0
- package/dist/signaldock/factory.js +25 -0
- package/dist/signaldock/factory.js.map +1 -0
- package/dist/signaldock/index.d.ts +13 -0
- package/dist/signaldock/index.d.ts.map +1 -0
- package/dist/signaldock/index.js +9 -0
- package/dist/signaldock/index.js.map +1 -0
- package/dist/signaldock/signaldock-transport.d.ts +45 -0
- package/dist/signaldock/signaldock-transport.d.ts.map +1 -0
- package/dist/signaldock/signaldock-transport.js +122 -0
- package/dist/signaldock/signaldock-transport.js.map +1 -0
- package/dist/signaldock/transport.d.ts +49 -0
- package/dist/signaldock/transport.d.ts.map +1 -0
- package/dist/signaldock/transport.js +11 -0
- package/dist/signaldock/transport.js.map +1 -0
- package/dist/signaldock/types.d.ts +88 -0
- package/dist/signaldock/types.d.ts.map +1 -0
- package/dist/signaldock/types.js +11 -0
- package/dist/signaldock/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 +100 -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 +220 -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 +343 -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 +44 -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.d.ts +10 -433
- package/dist/store/agent-registry-accessor.d.ts.map +1 -1
- package/dist/store/agent-registry-accessor.js +169 -0
- package/dist/store/agent-registry-accessor.js.map +1 -0
- package/dist/store/atomic.js +167 -0
- package/dist/store/atomic.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 +397 -0
- package/dist/store/brain-accessor.js.map +1 -0
- package/dist/store/brain-schema.js +215 -0
- package/dist/store/brain-schema.js.map +1 -0
- package/dist/store/brain-sqlite.js +222 -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/converters.js +124 -0
- package/dist/store/converters.js.map +1 -0
- package/dist/store/cross-db-cleanup.d.ts +34 -0
- package/dist/store/cross-db-cleanup.d.ts.map +1 -1
- package/dist/store/cross-db-cleanup.js +169 -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/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 +28 -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/migration-manager.js +151 -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 +62 -0
- package/dist/store/nexus-schema.js.map +1 -0
- package/dist/store/nexus-sqlite.js +217 -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/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.d.ts.map +1 -1
- package/dist/store/signaldock-sqlite.js +178 -0
- package/dist/store/signaldock-sqlite.js.map +1 -0
- package/dist/store/sqlite-backup.js +105 -0
- package/dist/store/sqlite-backup.js.map +1 -0
- package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +784 -0
- package/dist/store/sqlite-data-accessor.js.map +1 -0
- package/dist/store/sqlite.js +465 -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/task-store.d.ts.map +1 -1
- package/dist/store/task-store.js +350 -0
- package/dist/store/task-store.js.map +1 -0
- package/dist/store/tasks-schema.d.ts +0 -224
- package/dist/store/tasks-schema.d.ts.map +1 -1
- package/dist/store/tasks-schema.js +637 -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 +141 -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/health.d.ts +1 -1
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +1089 -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 +99 -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 +661 -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 +211 -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 +154 -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 +171 -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 +52 -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 +89 -0
- package/dist/tasks/relates.js.map +1 -0
- package/dist/tasks/show.js +80 -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 +1340 -0
- package/dist/tasks/task-ops.js.map +1 -0
- package/dist/tasks/update.js +271 -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 +1159 -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 +902 -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 +139 -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/consensus.js +71 -0
- package/dist/validation/protocols/consensus.js.map +1 -0
- package/dist/validation/protocols/contribution.js +59 -0
- package/dist/validation/protocols/contribution.js.map +1 -0
- package/dist/validation/protocols/decomposition.js +59 -0
- package/dist/validation/protocols/decomposition.js.map +1 -0
- package/dist/validation/protocols/implementation.js +59 -0
- package/dist/validation/protocols/implementation.js.map +1 -0
- package/dist/validation/protocols/release-protocol.js +60 -0
- package/dist/validation/protocols/release-protocol.js.map +1 -0
- package/dist/validation/protocols/research.js +77 -0
- package/dist/validation/protocols/research.js.map +1 -0
- package/dist/validation/protocols/specification.js +84 -0
- package/dist/validation/protocols/specification.js.map +1 -0
- package/dist/validation/protocols/testing-protocol.js +70 -0
- package/dist/validation/protocols/testing-protocol.js.map +1 -0
- package/dist/validation/protocols/validation-protocol.js +70 -0
- package/dist/validation/protocols/validation-protocol.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 +17 -7
- package/src/agents/agent-schema.ts +2 -5
- package/src/code/index.ts +10 -0
- package/src/code/outline.ts +214 -0
- package/src/code/parser.ts +299 -0
- package/src/code/search.ts +173 -0
- package/src/code/unfold.ts +204 -0
- package/src/conduit/__tests__/dual-api-e2e.test.ts +212 -0
- package/src/conduit/__tests__/local-credential-flow.test.ts +230 -0
- package/src/conduit/__tests__/local-transport.test.ts +320 -0
- package/src/conduit/__tests__/sse-transport.test.ts +344 -0
- package/src/conduit/conduit-client.ts +9 -0
- package/src/conduit/factory.ts +9 -5
- package/src/conduit/http-transport.ts +76 -15
- package/src/conduit/index.ts +5 -2
- package/src/conduit/local-transport.ts +309 -0
- package/src/conduit/sse-transport.ts +382 -0
- package/src/index.ts +1 -0
- package/src/internal.ts +6 -1
- package/src/lib/index.ts +8 -0
- package/src/lib/tree-sitter-languages.ts +88 -0
- package/src/memory/__tests__/brain-links.test.ts +14 -0
- package/src/memory/__tests__/brain-retrieval.test.ts +10 -0
- package/src/memory/__tests__/session-memory.test.ts +17 -0
- package/src/memory/brain-links.ts +17 -0
- package/src/memory/brain-maintenance.ts +33 -1
- package/src/memory/brain-retrieval.ts +18 -2
- package/src/memory/decisions.ts +18 -2
- package/src/orchestration/hierarchy.ts +202 -0
- package/src/orchestration/index.ts +1 -0
- package/src/store/agent-registry-accessor.ts +284 -108
- package/src/store/cross-db-cleanup.ts +175 -1
- package/src/store/signaldock-sqlite.ts +262 -60
- package/src/store/sqlite-data-accessor.ts +3 -0
- package/src/store/task-store.ts +8 -1
- package/src/store/tasks-schema.ts +3 -38
- package/src/system/__tests__/health.test.ts +2 -2
- package/src/system/health.ts +34 -15
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-reference management between BRAIN memory entries and tasks.
|
|
3
|
+
*
|
|
4
|
+
* Provides linking/unlinking and query functions for relationships
|
|
5
|
+
* between decisions, patterns, learnings and CLEO tasks.
|
|
6
|
+
*
|
|
7
|
+
* @task T5156
|
|
8
|
+
* @epic T5149
|
|
9
|
+
*/
|
|
10
|
+
import { getBrainAccessor } from '../store/brain-accessor.js';
|
|
11
|
+
/**
|
|
12
|
+
* Link a memory entry to a task.
|
|
13
|
+
*
|
|
14
|
+
* @task T5156
|
|
15
|
+
*/
|
|
16
|
+
export async function linkMemoryToTask(projectRoot, memoryType, memoryId, taskId, linkType) {
|
|
17
|
+
if (!memoryId || !taskId) {
|
|
18
|
+
throw new Error('memoryId and taskId are required');
|
|
19
|
+
}
|
|
20
|
+
const accessor = await getBrainAccessor(projectRoot);
|
|
21
|
+
// Check if link already exists
|
|
22
|
+
const existingLinks = await accessor.getLinksForMemory(memoryType, memoryId);
|
|
23
|
+
const duplicate = existingLinks.find((l) => l.taskId === taskId && l.linkType === linkType);
|
|
24
|
+
if (duplicate) {
|
|
25
|
+
return duplicate;
|
|
26
|
+
}
|
|
27
|
+
await accessor.addLink({
|
|
28
|
+
memoryType,
|
|
29
|
+
memoryId,
|
|
30
|
+
taskId,
|
|
31
|
+
linkType,
|
|
32
|
+
});
|
|
33
|
+
// Return the created link
|
|
34
|
+
const links = await accessor.getLinksForMemory(memoryType, memoryId);
|
|
35
|
+
return links.find((l) => l.taskId === taskId && l.linkType === linkType);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Remove a link between a memory entry and a task.
|
|
39
|
+
*
|
|
40
|
+
* @task T5156
|
|
41
|
+
*/
|
|
42
|
+
export async function unlinkMemoryFromTask(projectRoot, memoryType, memoryId, taskId, linkType) {
|
|
43
|
+
const accessor = await getBrainAccessor(projectRoot);
|
|
44
|
+
await accessor.removeLink(memoryType, memoryId, taskId, linkType);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get all memory entries linked to a specific task.
|
|
48
|
+
*
|
|
49
|
+
* @task T5156
|
|
50
|
+
*/
|
|
51
|
+
export async function getTaskLinks(projectRoot, taskId) {
|
|
52
|
+
const accessor = await getBrainAccessor(projectRoot);
|
|
53
|
+
return accessor.getLinksForTask(taskId);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get all tasks linked to a specific memory entry.
|
|
57
|
+
*
|
|
58
|
+
* @task T5156
|
|
59
|
+
*/
|
|
60
|
+
export async function getMemoryLinks(projectRoot, memoryType, memoryId) {
|
|
61
|
+
const accessor = await getBrainAccessor(projectRoot);
|
|
62
|
+
return accessor.getLinksForMemory(memoryType, memoryId);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Batch create multiple links at once.
|
|
66
|
+
*
|
|
67
|
+
* @task T5156
|
|
68
|
+
*/
|
|
69
|
+
export async function bulkLink(projectRoot, links) {
|
|
70
|
+
const accessor = await getBrainAccessor(projectRoot);
|
|
71
|
+
let created = 0;
|
|
72
|
+
let skipped = 0;
|
|
73
|
+
for (const link of links) {
|
|
74
|
+
// Check for duplicate
|
|
75
|
+
const existing = await accessor.getLinksForMemory(link.memoryType, link.memoryId);
|
|
76
|
+
const duplicate = existing.find((l) => l.taskId === link.taskId && l.linkType === link.linkType);
|
|
77
|
+
if (duplicate) {
|
|
78
|
+
skipped++;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
await accessor.addLink({
|
|
82
|
+
memoryType: link.memoryType,
|
|
83
|
+
memoryId: link.memoryId,
|
|
84
|
+
taskId: link.taskId,
|
|
85
|
+
linkType: link.linkType,
|
|
86
|
+
});
|
|
87
|
+
created++;
|
|
88
|
+
}
|
|
89
|
+
return { created, skipped };
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get all decisions linked to a task.
|
|
93
|
+
* Convenience method that fetches full decision rows.
|
|
94
|
+
*
|
|
95
|
+
* @task T5156
|
|
96
|
+
*/
|
|
97
|
+
export async function getLinkedDecisions(projectRoot, taskId) {
|
|
98
|
+
const accessor = await getBrainAccessor(projectRoot);
|
|
99
|
+
const links = await accessor.getLinksForTask(taskId);
|
|
100
|
+
const decisionLinks = links.filter((l) => l.memoryType === 'decision');
|
|
101
|
+
const decisions = [];
|
|
102
|
+
for (const link of decisionLinks) {
|
|
103
|
+
const decision = await accessor.getDecision(link.memoryId);
|
|
104
|
+
if (decision) {
|
|
105
|
+
decisions.push(decision);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return decisions;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get all patterns linked to a task.
|
|
112
|
+
* Convenience method that fetches full pattern rows.
|
|
113
|
+
*
|
|
114
|
+
* @task T5156
|
|
115
|
+
*/
|
|
116
|
+
export async function getLinkedPatterns(projectRoot, taskId) {
|
|
117
|
+
const accessor = await getBrainAccessor(projectRoot);
|
|
118
|
+
const links = await accessor.getLinksForTask(taskId);
|
|
119
|
+
const patternLinks = links.filter((l) => l.memoryType === 'pattern');
|
|
120
|
+
const patterns = [];
|
|
121
|
+
for (const link of patternLinks) {
|
|
122
|
+
const pattern = await accessor.getPattern(link.memoryId);
|
|
123
|
+
if (pattern) {
|
|
124
|
+
patterns.push(pattern);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return patterns;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Get all learnings linked to a task.
|
|
131
|
+
* Convenience method that fetches full learning rows.
|
|
132
|
+
*
|
|
133
|
+
* @task T5156
|
|
134
|
+
*/
|
|
135
|
+
export async function getLinkedLearnings(projectRoot, taskId) {
|
|
136
|
+
const accessor = await getBrainAccessor(projectRoot);
|
|
137
|
+
const links = await accessor.getLinksForTask(taskId);
|
|
138
|
+
const learningLinks = links.filter((l) => l.memoryType === 'learning');
|
|
139
|
+
const learnings = [];
|
|
140
|
+
for (const link of learningLinks) {
|
|
141
|
+
const learning = await accessor.getLearning(link.memoryId);
|
|
142
|
+
if (learning) {
|
|
143
|
+
learnings.push(learning);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return learnings;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=brain-links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-links.js","sourceRoot":"","sources":["../../src/memory/brain-links.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,15 @@ export interface BrainMaintenanceConsolidationResult {
|
|
|
30
30
|
/** Number of original observations archived. */
|
|
31
31
|
removed: number;
|
|
32
32
|
}
|
|
33
|
+
/** Orphaned reference reconciliation step result. */
|
|
34
|
+
export interface BrainMaintenanceReconciliationResult {
|
|
35
|
+
/** Decisions with stale task/epic references fixed. */
|
|
36
|
+
decisionsFixed: number;
|
|
37
|
+
/** Observations with stale session references fixed. */
|
|
38
|
+
observationsFixed: number;
|
|
39
|
+
/** Memory links with stale task references removed. */
|
|
40
|
+
linksRemoved: number;
|
|
41
|
+
}
|
|
33
42
|
/** Embedding backfill step result. */
|
|
34
43
|
export interface BrainMaintenanceEmbeddingsResult {
|
|
35
44
|
/** Observations successfully embedded. */
|
|
@@ -50,6 +59,8 @@ export interface BrainMaintenanceResult {
|
|
|
50
59
|
decay: BrainMaintenanceDecayResult;
|
|
51
60
|
/** Results from the memory consolidation step. */
|
|
52
61
|
consolidation: BrainMaintenanceConsolidationResult;
|
|
62
|
+
/** Results from the cross-DB orphaned reference reconciliation step. */
|
|
63
|
+
reconciliation: BrainMaintenanceReconciliationResult;
|
|
53
64
|
/** Results from the embedding backfill step. */
|
|
54
65
|
embeddings: BrainMaintenanceEmbeddingsResult;
|
|
55
66
|
/** Total wall-clock duration of the maintenance run in milliseconds. */
|
|
@@ -66,6 +77,8 @@ export interface BrainMaintenanceOptions {
|
|
|
66
77
|
skipDecay?: boolean;
|
|
67
78
|
/** Skip the memory consolidation step. Default: false. */
|
|
68
79
|
skipConsolidation?: boolean;
|
|
80
|
+
/** Skip the cross-DB orphaned reference reconciliation step. Default: false. */
|
|
81
|
+
skipReconciliation?: boolean;
|
|
69
82
|
/** Skip the embedding backfill step. Default: false. */
|
|
70
83
|
skipEmbeddings?: boolean;
|
|
71
84
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brain-maintenance.d.ts","sourceRoot":"","sources":["../../src/memory/brain-maintenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"brain-maintenance.d.ts","sourceRoot":"","sources":["../../src/memory/brain-maintenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAUH,oEAAoE;AACpE,MAAM,WAAW,2BAA2B;IAC1C,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,0EAA0E;AAC1E,MAAM,WAAW,mCAAmC;IAClD,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qDAAqD;AACrD,MAAM,WAAW,oCAAoC;IACnD,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,sCAAsC;AACtC,MAAM,WAAW,gCAAgC;IAC/C,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,4CAA4C;IAC5C,KAAK,EAAE,2BAA2B,CAAC;IACnC,kDAAkD;IAClD,aAAa,EAAE,mCAAmC,CAAC;IACnD,wEAAwE;IACxE,cAAc,EAAE,oCAAoC,CAAC;IACrD,gDAAgD;IAChD,UAAU,EAAE,gCAAgC,CAAC;IAC7C,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wDAAwD;IACxD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrE;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,sBAAsB,CAAC,CAuEjC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brain Maintenance Runner
|
|
3
|
+
*
|
|
4
|
+
* Combines temporal decay, memory consolidation, and embedding backfill
|
|
5
|
+
* into a single idempotent maintenance pass. Designed to be run on a
|
|
6
|
+
* schedule or on-demand via `cleo brain maintenance`.
|
|
7
|
+
*
|
|
8
|
+
* Steps run in order:
|
|
9
|
+
* 1. Temporal decay — reduce confidence of stale learnings
|
|
10
|
+
* 2. Consolidation — merge duplicate/similar old observations
|
|
11
|
+
* 3. Embedding backfill — populate vectors for observations without them
|
|
12
|
+
*
|
|
13
|
+
* Each step is individually opt-outable via skip flags, making the
|
|
14
|
+
* operation safe to re-run at any frequency.
|
|
15
|
+
*
|
|
16
|
+
* @task T143
|
|
17
|
+
* @epic T134
|
|
18
|
+
* @why Enable scheduled brain optimization via single command
|
|
19
|
+
* @what Combined maintenance runner with CLI command and progress reporting
|
|
20
|
+
*/
|
|
21
|
+
import { applyTemporalDecay, consolidateMemories } from './brain-lifecycle.js';
|
|
22
|
+
import { populateEmbeddings } from './brain-retrieval.js';
|
|
23
|
+
// ============================================================================
|
|
24
|
+
// Runner
|
|
25
|
+
// ============================================================================
|
|
26
|
+
/**
|
|
27
|
+
* Run a combined brain maintenance pass: decay, consolidation, and embeddings.
|
|
28
|
+
*
|
|
29
|
+
* The three steps always run in the same order:
|
|
30
|
+
* 1. `applyTemporalDecay` — decay stale learning confidence values
|
|
31
|
+
* 2. `consolidateMemories` — merge clustered old observations
|
|
32
|
+
* 3. `populateEmbeddings` — backfill missing vectors
|
|
33
|
+
*
|
|
34
|
+
* Each step is optional via the `skip*` flags. The function is idempotent:
|
|
35
|
+
* re-running it when there is nothing to process returns zero counts.
|
|
36
|
+
*
|
|
37
|
+
* @param projectRoot - Absolute path to the project root (used to locate brain.db)
|
|
38
|
+
* @param options - Optional skip flags and progress callback
|
|
39
|
+
* @returns Aggregated counts from each step plus total wall-clock duration
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* const result = await runBrainMaintenance('/my/project', {
|
|
44
|
+
* onProgress: (step, current, total) => {
|
|
45
|
+
* console.log(`[${step}] ${current}/${total}`);
|
|
46
|
+
* },
|
|
47
|
+
* });
|
|
48
|
+
* console.log(`Done in ${result.duration}ms`);
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @task T143
|
|
52
|
+
* @epic T134
|
|
53
|
+
*/
|
|
54
|
+
export async function runBrainMaintenance(projectRoot, options) {
|
|
55
|
+
const { skipDecay = false, skipConsolidation = false, skipEmbeddings = false, onProgress, } = options ?? {};
|
|
56
|
+
const startTime = Date.now();
|
|
57
|
+
// Default zero values for each step (used when step is skipped).
|
|
58
|
+
const decayResult = { affected: 0 };
|
|
59
|
+
const consolidationResult = { merged: 0, removed: 0 };
|
|
60
|
+
const embeddingsResult = {
|
|
61
|
+
processed: 0,
|
|
62
|
+
skipped: 0,
|
|
63
|
+
errors: 0,
|
|
64
|
+
};
|
|
65
|
+
// Step 1: Temporal decay
|
|
66
|
+
if (!skipDecay) {
|
|
67
|
+
onProgress?.('decay', 0, 1);
|
|
68
|
+
const raw = await applyTemporalDecay(projectRoot);
|
|
69
|
+
decayResult.affected = raw.updated;
|
|
70
|
+
onProgress?.('decay', 1, 1);
|
|
71
|
+
}
|
|
72
|
+
// Step 2: Memory consolidation
|
|
73
|
+
if (!skipConsolidation) {
|
|
74
|
+
onProgress?.('consolidation', 0, 1);
|
|
75
|
+
const raw = await consolidateMemories(projectRoot);
|
|
76
|
+
consolidationResult.merged = raw.merged;
|
|
77
|
+
consolidationResult.removed = raw.archived;
|
|
78
|
+
onProgress?.('consolidation', 1, 1);
|
|
79
|
+
}
|
|
80
|
+
// Step 3: Embedding backfill (with per-item progress relay)
|
|
81
|
+
if (!skipEmbeddings) {
|
|
82
|
+
const raw = await populateEmbeddings(projectRoot, {
|
|
83
|
+
onProgress: (current, total) => {
|
|
84
|
+
onProgress?.('embeddings', current, total);
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
embeddingsResult.processed = raw.processed;
|
|
88
|
+
embeddingsResult.skipped = raw.skipped;
|
|
89
|
+
embeddingsResult.errors = raw.errors;
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
decay: decayResult,
|
|
93
|
+
consolidation: consolidationResult,
|
|
94
|
+
embeddings: embeddingsResult,
|
|
95
|
+
duration: Date.now() - startTime,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=brain-maintenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-maintenance.js","sourceRoot":"","sources":["../../src/memory/brain-maintenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAuE1D,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,OAAiC;IAEjC,MAAM,EACJ,SAAS,GAAG,KAAK,EACjB,iBAAiB,GAAG,KAAK,EACzB,cAAc,GAAG,KAAK,EACtB,UAAU,GACX,GAAG,OAAO,IAAI,EAAE,CAAC;IAElB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,iEAAiE;IACjE,MAAM,WAAW,GAAgC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACjE,MAAM,mBAAmB,GAAwC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC3F,MAAM,gBAAgB,GAAqC;QACzD,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;KACV,CAAC;IAEF,yBAAyB;IACzB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAClD,WAAW,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC;QACnC,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,+BAA+B;IAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,UAAU,EAAE,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACnD,mBAAmB,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACxC,mBAAmB,CAAC,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC3C,UAAU,EAAE,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE;YAChD,UAAU,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;gBAC7B,UAAU,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAC7C,CAAC;SACF,CAAC,CAAC;QACH,gBAAgB,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAC3C,gBAAgB,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QACvC,gBAAgB,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACvC,CAAC;IAED,OAAO;QACL,KAAK,EAAE,WAAW;QAClB,aAAa,EAAE,mBAAmB;QAClC,UAAU,EAAE,gBAAgB;QAC5B,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;KACjC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migrate BRAIN memory from JSONL files to brain.db SQLite tables.
|
|
3
|
+
* Reads .cleo/memory/patterns.jsonl and .cleo/memory/learnings.jsonl
|
|
4
|
+
* and inserts into brain_patterns and brain_learnings tables.
|
|
5
|
+
*
|
|
6
|
+
* Idempotent: checks for existing entries by ID to skip duplicates.
|
|
7
|
+
*
|
|
8
|
+
* @task T5129
|
|
9
|
+
* @epic T5149
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
12
|
+
import { join } from 'node:path';
|
|
13
|
+
import { getBrainAccessor } from '../store/brain-accessor.js';
|
|
14
|
+
/**
|
|
15
|
+
* Read a JSONL file and parse each line as JSON.
|
|
16
|
+
* Returns parsed objects and any parse error messages.
|
|
17
|
+
*/
|
|
18
|
+
function readJsonlFile(filePath) {
|
|
19
|
+
if (!existsSync(filePath)) {
|
|
20
|
+
return { entries: [], errors: [] };
|
|
21
|
+
}
|
|
22
|
+
const content = readFileSync(filePath, 'utf-8').trim();
|
|
23
|
+
if (!content) {
|
|
24
|
+
return { entries: [], errors: [] };
|
|
25
|
+
}
|
|
26
|
+
const entries = [];
|
|
27
|
+
const errors = [];
|
|
28
|
+
for (const line of content.split('\n')) {
|
|
29
|
+
const trimmed = line.trim();
|
|
30
|
+
if (!trimmed)
|
|
31
|
+
continue;
|
|
32
|
+
try {
|
|
33
|
+
entries.push(JSON.parse(trimmed));
|
|
34
|
+
}
|
|
35
|
+
catch (_err) {
|
|
36
|
+
errors.push(`Failed to parse line: ${trimmed.slice(0, 80)}...`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return { entries, errors };
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Migrate BRAIN memory data from JSONL files to brain.db.
|
|
43
|
+
*
|
|
44
|
+
* Reads:
|
|
45
|
+
* - .cleo/memory/patterns.jsonl -> brain_patterns table
|
|
46
|
+
* - .cleo/memory/learnings.jsonl -> brain_learnings table
|
|
47
|
+
*
|
|
48
|
+
* Skips entries where the ID already exists in the database (idempotent).
|
|
49
|
+
*
|
|
50
|
+
* @task T5129
|
|
51
|
+
*/
|
|
52
|
+
export async function migrateBrainData(projectRoot) {
|
|
53
|
+
const accessor = await getBrainAccessor(projectRoot);
|
|
54
|
+
const result = {
|
|
55
|
+
patternsImported: 0,
|
|
56
|
+
learningsImported: 0,
|
|
57
|
+
duplicatesSkipped: 0,
|
|
58
|
+
errors: [],
|
|
59
|
+
};
|
|
60
|
+
// Migrate patterns
|
|
61
|
+
const patternsPath = join(projectRoot, '.cleo', 'memory', 'patterns.jsonl');
|
|
62
|
+
const { entries: patterns, errors: patternErrors } = readJsonlFile(patternsPath);
|
|
63
|
+
result.errors.push(...patternErrors);
|
|
64
|
+
for (const p of patterns) {
|
|
65
|
+
try {
|
|
66
|
+
// Check if already exists
|
|
67
|
+
const existing = await accessor.getPattern(p.id);
|
|
68
|
+
if (existing) {
|
|
69
|
+
result.duplicatesSkipped++;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
const row = {
|
|
73
|
+
id: p.id,
|
|
74
|
+
type: mapPatternType(p.type),
|
|
75
|
+
pattern: p.pattern,
|
|
76
|
+
context: p.context,
|
|
77
|
+
frequency: p.frequency ?? 1,
|
|
78
|
+
successRate: p.successRate ?? null,
|
|
79
|
+
impact: mapImpact(p.impact),
|
|
80
|
+
antiPattern: p.antiPattern ?? null,
|
|
81
|
+
mitigation: p.mitigation ?? null,
|
|
82
|
+
examplesJson: JSON.stringify(p.examples ?? []),
|
|
83
|
+
extractedAt: p.extractedAt ?? new Date().toISOString().replace('T', ' ').slice(0, 19),
|
|
84
|
+
updatedAt: p.updatedAt?.replace('T', ' ').slice(0, 19) ?? null,
|
|
85
|
+
};
|
|
86
|
+
await accessor.addPattern(row);
|
|
87
|
+
result.patternsImported++;
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
result.errors.push(`Pattern ${p.id}: ${err instanceof Error ? err.message : String(err)}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Migrate learnings
|
|
94
|
+
const learningsPath = join(projectRoot, '.cleo', 'memory', 'learnings.jsonl');
|
|
95
|
+
const { entries: learnings, errors: learningErrors } = readJsonlFile(learningsPath);
|
|
96
|
+
result.errors.push(...learningErrors);
|
|
97
|
+
for (const l of learnings) {
|
|
98
|
+
try {
|
|
99
|
+
// Check if already exists
|
|
100
|
+
const existing = await accessor.getLearning(l.id);
|
|
101
|
+
if (existing) {
|
|
102
|
+
result.duplicatesSkipped++;
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
const row = {
|
|
106
|
+
id: l.id,
|
|
107
|
+
insight: l.insight,
|
|
108
|
+
source: l.source,
|
|
109
|
+
confidence: l.confidence,
|
|
110
|
+
actionable: l.actionable ?? false,
|
|
111
|
+
application: l.application ?? null,
|
|
112
|
+
applicableTypesJson: JSON.stringify(l.applicableTypes ?? []),
|
|
113
|
+
createdAt: l.createdAt ?? new Date().toISOString().replace('T', ' ').slice(0, 19),
|
|
114
|
+
updatedAt: l.updatedAt?.replace('T', ' ').slice(0, 19) ?? null,
|
|
115
|
+
};
|
|
116
|
+
await accessor.addLearning(row);
|
|
117
|
+
result.learningsImported++;
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
result.errors.push(`Learning ${l.id}: ${err instanceof Error ? err.message : String(err)}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return result;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Map JSONL pattern type to brain schema enum.
|
|
127
|
+
* Falls back to 'workflow' for unrecognized types.
|
|
128
|
+
*/
|
|
129
|
+
function mapPatternType(type) {
|
|
130
|
+
const valid = ['workflow', 'blocker', 'success', 'failure', 'optimization'];
|
|
131
|
+
if (valid.includes(type)) {
|
|
132
|
+
return type;
|
|
133
|
+
}
|
|
134
|
+
return 'workflow';
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Map JSONL impact level to brain schema enum.
|
|
138
|
+
* Returns null for unrecognized values.
|
|
139
|
+
*/
|
|
140
|
+
function mapImpact(impact) {
|
|
141
|
+
if (!impact)
|
|
142
|
+
return null;
|
|
143
|
+
const valid = ['low', 'medium', 'high'];
|
|
144
|
+
if (valid.includes(impact)) {
|
|
145
|
+
return impact;
|
|
146
|
+
}
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=brain-migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-migration.js","sourceRoot":"","sources":["../../src/memory/brain-migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BRAIN Reasoning — causal trace through task dependency chains.
|
|
3
|
+
*
|
|
4
|
+
* `reasonWhy(taskId)` walks upstream through a task's blocker chain,
|
|
5
|
+
* enriching each node with related brain_decisions. Leaf tasks with
|
|
6
|
+
* no further unresolved blockers are identified as root causes.
|
|
7
|
+
*
|
|
8
|
+
* @task T5390
|
|
9
|
+
* @epic T5149
|
|
10
|
+
*/
|
|
11
|
+
import { getBrainAccessor } from '../store/brain-accessor.js';
|
|
12
|
+
import { getAccessor } from '../store/data-accessor.js';
|
|
13
|
+
import { searchBrain } from './brain-search.js';
|
|
14
|
+
import { searchSimilar } from './brain-similarity.js';
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// Implementation
|
|
17
|
+
// ============================================================================
|
|
18
|
+
const MAX_DEPTH = 10;
|
|
19
|
+
/**
|
|
20
|
+
* Build a causal trace for why a task is blocked.
|
|
21
|
+
*
|
|
22
|
+
* Walks upstream through `depends` fields, collecting unresolved blockers
|
|
23
|
+
* and their associated brain decisions. Leaf blockers (no further unresolved
|
|
24
|
+
* deps) are reported as root causes.
|
|
25
|
+
*/
|
|
26
|
+
export async function reasonWhy(taskId, projectRoot, taskAccessor) {
|
|
27
|
+
const acc = taskAccessor ?? (await getAccessor(projectRoot));
|
|
28
|
+
const { tasks: reasonTasks } = await acc.queryTasks({});
|
|
29
|
+
const taskMap = new Map(reasonTasks.map((t) => [t.id, t]));
|
|
30
|
+
const completedStatuses = new Set(['done', 'cancelled']);
|
|
31
|
+
let accessor = null;
|
|
32
|
+
try {
|
|
33
|
+
accessor = await getBrainAccessor(projectRoot);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// brain.db may not exist — proceed without decisions
|
|
37
|
+
}
|
|
38
|
+
const visited = new Set();
|
|
39
|
+
const blockers = [];
|
|
40
|
+
let maxDepthReached = 0;
|
|
41
|
+
async function walk(id, depth) {
|
|
42
|
+
if (visited.has(id))
|
|
43
|
+
return;
|
|
44
|
+
if (depth > MAX_DEPTH)
|
|
45
|
+
return;
|
|
46
|
+
visited.add(id);
|
|
47
|
+
if (depth > maxDepthReached) {
|
|
48
|
+
maxDepthReached = depth;
|
|
49
|
+
}
|
|
50
|
+
const task = taskMap.get(id);
|
|
51
|
+
if (!task)
|
|
52
|
+
return;
|
|
53
|
+
// Collect unresolved dependencies
|
|
54
|
+
const unresolvedDeps = (task.depends ?? []).filter((depId) => {
|
|
55
|
+
const dep = taskMap.get(depId);
|
|
56
|
+
return dep && !completedStatuses.has(dep.status);
|
|
57
|
+
});
|
|
58
|
+
if (unresolvedDeps.length === 0 && id !== taskId) {
|
|
59
|
+
// This is a leaf blocker — no further unresolved deps
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
for (const depId of unresolvedDeps) {
|
|
63
|
+
if (visited.has(depId))
|
|
64
|
+
continue;
|
|
65
|
+
const dep = taskMap.get(depId);
|
|
66
|
+
// Query brain decisions related to this blocker
|
|
67
|
+
let decisions = [];
|
|
68
|
+
if (accessor) {
|
|
69
|
+
const relatedDecisions = await findDecisionsForTask(accessor, depId);
|
|
70
|
+
decisions = relatedDecisions.map((d) => ({
|
|
71
|
+
id: d.id,
|
|
72
|
+
title: d.decision,
|
|
73
|
+
rationale: d.rationale,
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
blockers.push({
|
|
77
|
+
taskId: depId,
|
|
78
|
+
status: dep.status,
|
|
79
|
+
reason: dep.blockedBy ?? undefined,
|
|
80
|
+
decisions,
|
|
81
|
+
});
|
|
82
|
+
await walk(depId, depth + 1);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
await walk(taskId, 0);
|
|
86
|
+
// Root causes: leaf blockers whose own deps are all resolved or absent
|
|
87
|
+
const blockerIds = new Set(blockers.map((b) => b.taskId));
|
|
88
|
+
const rootCauses = blockers
|
|
89
|
+
.filter((b) => {
|
|
90
|
+
const task = taskMap.get(b.taskId);
|
|
91
|
+
if (!task?.depends?.length)
|
|
92
|
+
return true;
|
|
93
|
+
return task.depends.every((depId) => {
|
|
94
|
+
const dep = taskMap.get(depId);
|
|
95
|
+
return !dep || completedStatuses.has(dep.status) || !blockerIds.has(depId);
|
|
96
|
+
});
|
|
97
|
+
})
|
|
98
|
+
.map((b) => b.taskId);
|
|
99
|
+
return {
|
|
100
|
+
taskId,
|
|
101
|
+
blockers,
|
|
102
|
+
rootCauses,
|
|
103
|
+
depth: maxDepthReached,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Query brain_decisions for a specific task context.
|
|
108
|
+
*/
|
|
109
|
+
async function findDecisionsForTask(accessor, taskId) {
|
|
110
|
+
return accessor.findDecisions({ contextTaskId: taskId });
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Find entries similar to a given brain.db entry.
|
|
114
|
+
*
|
|
115
|
+
* 1. Loads the source entry's text from brain.db.
|
|
116
|
+
* 2. Calls searchSimilar() for vector-based similarity if embeddings exist.
|
|
117
|
+
* 3. Falls back to FTS5 keyword search if no embeddings are available.
|
|
118
|
+
* 4. Filters out the source entry itself.
|
|
119
|
+
*
|
|
120
|
+
* @param entryId - ID of the brain.db entry to find similar entries for
|
|
121
|
+
* @param projectRoot - Project root directory
|
|
122
|
+
* @param limit - Maximum results to return (default 10)
|
|
123
|
+
* @returns Array of similar entries ranked by distance/relevance
|
|
124
|
+
*/
|
|
125
|
+
export async function reasonSimilar(entryId, projectRoot, limit) {
|
|
126
|
+
const maxResults = limit ?? 10;
|
|
127
|
+
// Load the source entry's text — initialize brain.db before accessor use
|
|
128
|
+
const { getBrainDb } = await import('../store/brain-sqlite.js');
|
|
129
|
+
await getBrainDb(projectRoot);
|
|
130
|
+
const accessor = await getBrainAccessor(projectRoot);
|
|
131
|
+
let sourceText = null;
|
|
132
|
+
if (entryId.startsWith('D-') || /^D\d/.test(entryId)) {
|
|
133
|
+
const row = await accessor.getDecision(entryId);
|
|
134
|
+
if (row)
|
|
135
|
+
sourceText = `${row.decision} ${row.rationale}`;
|
|
136
|
+
}
|
|
137
|
+
else if (entryId.startsWith('P-') || /^P\d/.test(entryId)) {
|
|
138
|
+
const row = await accessor.getPattern(entryId);
|
|
139
|
+
if (row)
|
|
140
|
+
sourceText = `${row.pattern} ${row.context}`;
|
|
141
|
+
}
|
|
142
|
+
else if (entryId.startsWith('L-') || /^L\d/.test(entryId)) {
|
|
143
|
+
const row = await accessor.getLearning(entryId);
|
|
144
|
+
if (row)
|
|
145
|
+
sourceText = `${row.insight} ${row.source}`;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
const row = await accessor.getObservation(entryId);
|
|
149
|
+
if (row)
|
|
150
|
+
sourceText = row.narrative ?? row.title;
|
|
151
|
+
}
|
|
152
|
+
if (!sourceText)
|
|
153
|
+
return [];
|
|
154
|
+
// Try vector similarity first
|
|
155
|
+
const vecResults = await searchSimilar(sourceText, projectRoot, maxResults + 1);
|
|
156
|
+
if (vecResults.length > 0) {
|
|
157
|
+
return vecResults.filter((r) => r.id !== entryId).slice(0, maxResults);
|
|
158
|
+
}
|
|
159
|
+
// FTS5 fallback: extract key terms and search
|
|
160
|
+
const terms = sourceText
|
|
161
|
+
.split(/\s+/)
|
|
162
|
+
.filter((t) => t.length > 3)
|
|
163
|
+
.slice(0, 5)
|
|
164
|
+
.join(' ');
|
|
165
|
+
if (!terms)
|
|
166
|
+
return [];
|
|
167
|
+
const ftsResults = await searchBrain(projectRoot, terms, { limit: maxResults + 5 });
|
|
168
|
+
const entries = [];
|
|
169
|
+
for (const d of ftsResults.decisions) {
|
|
170
|
+
if (d.id === entryId)
|
|
171
|
+
continue;
|
|
172
|
+
entries.push({
|
|
173
|
+
id: d.id,
|
|
174
|
+
distance: 0,
|
|
175
|
+
type: 'decision',
|
|
176
|
+
title: d.decision,
|
|
177
|
+
text: `${d.decision} — ${d.rationale}`,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
for (const p of ftsResults.patterns) {
|
|
181
|
+
if (p.id === entryId)
|
|
182
|
+
continue;
|
|
183
|
+
entries.push({
|
|
184
|
+
id: p.id,
|
|
185
|
+
distance: 0,
|
|
186
|
+
type: 'pattern',
|
|
187
|
+
title: p.pattern,
|
|
188
|
+
text: `${p.pattern} — ${p.context}`,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
for (const l of ftsResults.learnings) {
|
|
192
|
+
if (l.id === entryId)
|
|
193
|
+
continue;
|
|
194
|
+
entries.push({
|
|
195
|
+
id: l.id,
|
|
196
|
+
distance: 0,
|
|
197
|
+
type: 'learning',
|
|
198
|
+
title: l.insight,
|
|
199
|
+
text: `${l.insight} (source: ${l.source})`,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
for (const o of ftsResults.observations) {
|
|
203
|
+
if (o.id === entryId)
|
|
204
|
+
continue;
|
|
205
|
+
entries.push({
|
|
206
|
+
id: o.id,
|
|
207
|
+
distance: 0,
|
|
208
|
+
type: 'observation',
|
|
209
|
+
title: o.title,
|
|
210
|
+
text: o.narrative ?? o.title,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
return entries.slice(0, maxResults);
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=brain-reasoning.js.map
|