@soleri/core 9.0.4 → 9.3.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/data/flows/build.flow.yaml +8 -9
- package/data/flows/deliver.flow.yaml +9 -10
- package/data/flows/design.flow.yaml +3 -4
- package/data/flows/enhance.flow.yaml +5 -6
- package/data/flows/explore.flow.yaml +3 -4
- package/data/flows/fix.flow.yaml +5 -6
- package/data/flows/plan.flow.yaml +4 -5
- package/data/flows/review.flow.yaml +3 -4
- package/dist/brain/intelligence.d.ts +27 -0
- package/dist/brain/intelligence.d.ts.map +1 -1
- package/dist/brain/intelligence.js +160 -14
- package/dist/brain/intelligence.js.map +1 -1
- package/dist/brain/learning-radar.d.ts +4 -0
- package/dist/brain/learning-radar.d.ts.map +1 -1
- package/dist/brain/learning-radar.js +20 -1
- package/dist/brain/learning-radar.js.map +1 -1
- package/dist/brain/strength-scorer.d.ts +31 -0
- package/dist/brain/strength-scorer.d.ts.map +1 -0
- package/dist/brain/strength-scorer.js +264 -0
- package/dist/brain/strength-scorer.js.map +1 -0
- package/dist/chat/agent-loop.d.ts.map +1 -1
- package/dist/chat/agent-loop.js +2 -0
- package/dist/chat/agent-loop.js.map +1 -1
- package/dist/chat/notifications.d.ts.map +1 -1
- package/dist/chat/notifications.js +2 -0
- package/dist/chat/notifications.js.map +1 -1
- package/dist/claudemd/compose.js +1 -1
- package/dist/claudemd/compose.js.map +1 -1
- package/dist/control/intent-router.d.ts.map +1 -1
- package/dist/control/intent-router.js +12 -4
- package/dist/control/intent-router.js.map +1 -1
- package/dist/curator/contradiction-detector.d.ts +27 -0
- package/dist/curator/contradiction-detector.d.ts.map +1 -0
- package/dist/curator/contradiction-detector.js +62 -0
- package/dist/curator/contradiction-detector.js.map +1 -0
- package/dist/curator/curator.d.ts +3 -4
- package/dist/curator/curator.d.ts.map +1 -1
- package/dist/curator/curator.js +94 -453
- package/dist/curator/curator.js.map +1 -1
- package/dist/curator/duplicate-detector.d.ts +14 -0
- package/dist/curator/duplicate-detector.d.ts.map +1 -0
- package/dist/curator/duplicate-detector.js +77 -0
- package/dist/curator/duplicate-detector.js.map +1 -0
- package/dist/curator/health-audit.d.ts +15 -0
- package/dist/curator/health-audit.d.ts.map +1 -0
- package/dist/curator/health-audit.js +97 -0
- package/dist/curator/health-audit.js.map +1 -0
- package/dist/curator/metadata-enricher.d.ts +17 -0
- package/dist/curator/metadata-enricher.d.ts.map +1 -0
- package/dist/curator/metadata-enricher.js +60 -0
- package/dist/curator/metadata-enricher.js.map +1 -0
- package/dist/curator/schema.d.ts +7 -0
- package/dist/curator/schema.d.ts.map +1 -0
- package/dist/curator/schema.js +62 -0
- package/dist/curator/schema.js.map +1 -0
- package/dist/curator/tag-manager.d.ts +36 -0
- package/dist/curator/tag-manager.d.ts.map +1 -0
- package/dist/curator/tag-manager.js +78 -0
- package/dist/curator/tag-manager.js.map +1 -0
- package/dist/engine/bin/soleri-engine.js +24 -3
- package/dist/engine/bin/soleri-engine.js.map +1 -1
- package/dist/engine/core-ops.d.ts.map +1 -1
- package/dist/engine/core-ops.js +23 -8
- package/dist/engine/core-ops.js.map +1 -1
- package/dist/engine/module-manifest.d.ts.map +1 -1
- package/dist/engine/module-manifest.js +42 -2
- package/dist/engine/module-manifest.js.map +1 -1
- package/dist/engine/register-engine.d.ts.map +1 -1
- package/dist/engine/register-engine.js +50 -2
- package/dist/engine/register-engine.js.map +1 -1
- package/dist/errors/retry.d.ts.map +1 -1
- package/dist/errors/retry.js +2 -0
- package/dist/errors/retry.js.map +1 -1
- package/dist/facades/types.d.ts +1 -1
- package/dist/flows/chain-types.d.ts +18 -18
- package/dist/flows/gate-evaluator.d.ts.map +1 -1
- package/dist/flows/gate-evaluator.js +22 -0
- package/dist/flows/gate-evaluator.js.map +1 -1
- package/dist/flows/types.d.ts +157 -28
- package/dist/flows/types.d.ts.map +1 -1
- package/dist/flows/types.js +4 -0
- package/dist/flows/types.js.map +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/intake/intake-pipeline.d.ts.map +1 -1
- package/dist/intake/intake-pipeline.js +1 -0
- package/dist/intake/intake-pipeline.js.map +1 -1
- package/dist/intake/text-ingester.d.ts.map +1 -1
- package/dist/intake/text-ingester.js +2 -0
- package/dist/intake/text-ingester.js.map +1 -1
- package/dist/llm/key-pool.d.ts +1 -1
- package/dist/llm/key-pool.d.ts.map +1 -1
- package/dist/llm/key-pool.js +3 -4
- package/dist/llm/key-pool.js.map +1 -1
- package/dist/llm/utils.d.ts.map +1 -1
- package/dist/llm/utils.js +2 -0
- package/dist/llm/utils.js.map +1 -1
- package/dist/migrations/migration-runner.test-helpers.d.ts +13 -0
- package/dist/migrations/migration-runner.test-helpers.d.ts.map +1 -0
- package/dist/migrations/migration-runner.test-helpers.js +47 -0
- package/dist/migrations/migration-runner.test-helpers.js.map +1 -0
- package/dist/operator/operator-profile.d.ts +44 -0
- package/dist/operator/operator-profile.d.ts.map +1 -0
- package/dist/operator/operator-profile.js +383 -0
- package/dist/operator/operator-profile.js.map +1 -0
- package/dist/operator/operator-signals.d.ts +45 -0
- package/dist/operator/operator-signals.d.ts.map +1 -0
- package/dist/operator/operator-signals.js +228 -0
- package/dist/operator/operator-signals.js.map +1 -0
- package/dist/operator/operator-types.d.ts +360 -0
- package/dist/operator/operator-types.d.ts.map +1 -0
- package/dist/operator/operator-types.js +24 -0
- package/dist/operator/operator-types.js.map +1 -0
- package/dist/packs/types.d.ts +27 -27
- package/dist/paths.d.ts +40 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +98 -0
- package/dist/paths.js.map +1 -0
- package/dist/persistence/index.d.ts +1 -1
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +1 -1
- package/dist/persistence/index.js.map +1 -1
- package/dist/persistence/sqlite-provider.d.ts +2 -0
- package/dist/persistence/sqlite-provider.d.ts.map +1 -1
- package/dist/persistence/sqlite-provider.js +8 -5
- package/dist/persistence/sqlite-provider.js.map +1 -1
- package/dist/planning/evidence-collector.d.ts +13 -1
- package/dist/planning/evidence-collector.d.ts.map +1 -1
- package/dist/planning/evidence-collector.js +33 -0
- package/dist/planning/evidence-collector.js.map +1 -1
- package/dist/planning/gap-analysis.d.ts +5 -4
- package/dist/planning/gap-analysis.d.ts.map +1 -1
- package/dist/planning/gap-analysis.js +7 -341
- package/dist/planning/gap-analysis.js.map +1 -1
- package/dist/planning/gap-passes.d.ts +19 -0
- package/dist/planning/gap-passes.d.ts.map +1 -0
- package/dist/planning/gap-passes.js +174 -0
- package/dist/planning/gap-passes.js.map +1 -0
- package/dist/planning/gap-patterns.d.ts +29 -0
- package/dist/planning/gap-patterns.d.ts.map +1 -0
- package/dist/planning/gap-patterns.js +175 -0
- package/dist/planning/gap-patterns.js.map +1 -0
- package/dist/planning/gap-types.d.ts +1 -1
- package/dist/planning/gap-types.d.ts.map +1 -1
- package/dist/planning/gap-types.js +1 -0
- package/dist/planning/gap-types.js.map +1 -1
- package/dist/planning/github-projection.d.ts +122 -0
- package/dist/planning/github-projection.d.ts.map +1 -0
- package/dist/planning/github-projection.js +313 -0
- package/dist/planning/github-projection.js.map +1 -0
- package/dist/planning/impact-analyzer.d.ts +26 -0
- package/dist/planning/impact-analyzer.d.ts.map +1 -0
- package/dist/planning/impact-analyzer.js +201 -0
- package/dist/planning/impact-analyzer.js.map +1 -0
- package/dist/planning/plan-lifecycle.d.ts +136 -0
- package/dist/planning/plan-lifecycle.d.ts.map +1 -0
- package/dist/planning/plan-lifecycle.js +309 -0
- package/dist/planning/plan-lifecycle.js.map +1 -0
- package/dist/planning/planner-types.d.ts +202 -0
- package/dist/planning/planner-types.d.ts.map +1 -0
- package/dist/planning/planner-types.js +6 -0
- package/dist/planning/planner-types.js.map +1 -0
- package/dist/planning/planner.d.ts +31 -383
- package/dist/planning/planner.d.ts.map +1 -1
- package/dist/planning/planner.js +151 -832
- package/dist/planning/planner.js.map +1 -1
- package/dist/planning/rationalization-detector.d.ts +32 -0
- package/dist/planning/rationalization-detector.d.ts.map +1 -0
- package/dist/planning/rationalization-detector.js +89 -0
- package/dist/planning/rationalization-detector.js.map +1 -0
- package/dist/planning/reconciliation-engine.d.ts +47 -0
- package/dist/planning/reconciliation-engine.d.ts.map +1 -0
- package/dist/planning/reconciliation-engine.js +128 -0
- package/dist/planning/reconciliation-engine.js.map +1 -0
- package/dist/planning/task-verifier.d.ts +85 -0
- package/dist/planning/task-verifier.d.ts.map +1 -0
- package/dist/planning/task-verifier.js +235 -0
- package/dist/planning/task-verifier.js.map +1 -0
- package/dist/plugins/types.d.ts +4 -4
- package/dist/runtime/admin-ops.d.ts +2 -2
- package/dist/runtime/admin-ops.d.ts.map +1 -1
- package/dist/runtime/admin-ops.js +44 -17
- package/dist/runtime/admin-ops.js.map +1 -1
- package/dist/runtime/admin-setup-ops.d.ts.map +1 -1
- package/dist/runtime/admin-setup-ops.js +22 -46
- package/dist/runtime/admin-setup-ops.js.map +1 -1
- package/dist/runtime/archive-ops.d.ts +10 -0
- package/dist/runtime/archive-ops.d.ts.map +1 -0
- package/dist/runtime/archive-ops.js +310 -0
- package/dist/runtime/archive-ops.js.map +1 -0
- package/dist/runtime/branching-ops.d.ts +12 -0
- package/dist/runtime/branching-ops.d.ts.map +1 -0
- package/dist/runtime/branching-ops.js +100 -0
- package/dist/runtime/branching-ops.js.map +1 -0
- package/dist/runtime/capture-ops.d.ts.map +1 -1
- package/dist/runtime/capture-ops.js +42 -7
- package/dist/runtime/capture-ops.js.map +1 -1
- package/dist/runtime/claude-md-helpers.js +1 -1
- package/dist/runtime/claude-md-helpers.js.map +1 -1
- package/dist/runtime/context-health.d.ts +31 -0
- package/dist/runtime/context-health.d.ts.map +1 -0
- package/dist/runtime/context-health.js +57 -0
- package/dist/runtime/context-health.js.map +1 -0
- package/dist/runtime/facades/archive-facade.d.ts +10 -0
- package/dist/runtime/facades/archive-facade.d.ts.map +1 -0
- package/dist/runtime/facades/archive-facade.js +11 -0
- package/dist/runtime/facades/archive-facade.js.map +1 -0
- package/dist/runtime/facades/brain-facade.d.ts.map +1 -1
- package/dist/runtime/facades/brain-facade.js +2 -0
- package/dist/runtime/facades/brain-facade.js.map +1 -1
- package/dist/runtime/facades/branching-facade.d.ts +7 -0
- package/dist/runtime/facades/branching-facade.d.ts.map +1 -0
- package/dist/runtime/facades/branching-facade.js +8 -0
- package/dist/runtime/facades/branching-facade.js.map +1 -0
- package/dist/runtime/facades/chat-facade.d.ts +7 -0
- package/dist/runtime/facades/chat-facade.d.ts.map +1 -1
- package/dist/runtime/facades/chat-facade.js +15 -800
- package/dist/runtime/facades/chat-facade.js.map +1 -1
- package/dist/runtime/facades/chat-service-ops.d.ts +9 -0
- package/dist/runtime/facades/chat-service-ops.d.ts.map +1 -0
- package/dist/runtime/facades/chat-service-ops.js +332 -0
- package/dist/runtime/facades/chat-service-ops.js.map +1 -0
- package/dist/runtime/facades/chat-session-ops.d.ts +8 -0
- package/dist/runtime/facades/chat-session-ops.d.ts.map +1 -0
- package/dist/runtime/facades/chat-session-ops.js +136 -0
- package/dist/runtime/facades/chat-session-ops.js.map +1 -0
- package/dist/runtime/facades/chat-state.d.ts +31 -0
- package/dist/runtime/facades/chat-state.d.ts.map +1 -0
- package/dist/runtime/facades/chat-state.js +32 -0
- package/dist/runtime/facades/chat-state.js.map +1 -0
- package/dist/runtime/facades/chat-transport-ops.d.ts +9 -0
- package/dist/runtime/facades/chat-transport-ops.d.ts.map +1 -0
- package/dist/runtime/facades/chat-transport-ops.js +337 -0
- package/dist/runtime/facades/chat-transport-ops.js.map +1 -0
- package/dist/runtime/facades/control-facade.d.ts.map +1 -1
- package/dist/runtime/facades/control-facade.js +4 -1
- package/dist/runtime/facades/control-facade.js.map +1 -1
- package/dist/runtime/facades/index.d.ts.map +1 -1
- package/dist/runtime/facades/index.js +48 -0
- package/dist/runtime/facades/index.js.map +1 -1
- package/dist/runtime/facades/intake-facade.d.ts +9 -0
- package/dist/runtime/facades/intake-facade.d.ts.map +1 -0
- package/dist/runtime/facades/intake-facade.js +11 -0
- package/dist/runtime/facades/intake-facade.js.map +1 -0
- package/dist/runtime/facades/links-facade.d.ts +9 -0
- package/dist/runtime/facades/links-facade.d.ts.map +1 -0
- package/dist/runtime/facades/links-facade.js +10 -0
- package/dist/runtime/facades/links-facade.js.map +1 -0
- package/dist/runtime/facades/memory-facade.d.ts.map +1 -1
- package/dist/runtime/facades/memory-facade.js +75 -6
- package/dist/runtime/facades/memory-facade.js.map +1 -1
- package/dist/runtime/facades/operator-facade.d.ts +8 -0
- package/dist/runtime/facades/operator-facade.d.ts.map +1 -0
- package/dist/runtime/facades/operator-facade.js +220 -0
- package/dist/runtime/facades/operator-facade.js.map +1 -0
- package/dist/runtime/facades/orchestrate-facade.js +3 -3
- package/dist/runtime/facades/orchestrate-facade.js.map +1 -1
- package/dist/runtime/facades/plan-facade.d.ts.map +1 -1
- package/dist/runtime/facades/plan-facade.js +42 -6
- package/dist/runtime/facades/plan-facade.js.map +1 -1
- package/dist/runtime/facades/review-facade.d.ts +7 -0
- package/dist/runtime/facades/review-facade.d.ts.map +1 -0
- package/dist/runtime/facades/review-facade.js +8 -0
- package/dist/runtime/facades/review-facade.js.map +1 -0
- package/dist/runtime/facades/sync-facade.d.ts +7 -0
- package/dist/runtime/facades/sync-facade.d.ts.map +1 -0
- package/dist/runtime/facades/sync-facade.js +8 -0
- package/dist/runtime/facades/sync-facade.js.map +1 -0
- package/dist/runtime/facades/tier-facade.d.ts +7 -0
- package/dist/runtime/facades/tier-facade.d.ts.map +1 -0
- package/dist/runtime/facades/tier-facade.js +8 -0
- package/dist/runtime/facades/tier-facade.js.map +1 -0
- package/dist/runtime/facades/vault-facade.d.ts +12 -1
- package/dist/runtime/facades/vault-facade.d.ts.map +1 -1
- package/dist/runtime/facades/vault-facade.js +55 -251
- package/dist/runtime/facades/vault-facade.js.map +1 -1
- package/dist/runtime/github-integration.d.ts +49 -0
- package/dist/runtime/github-integration.d.ts.map +1 -0
- package/dist/runtime/github-integration.js +120 -0
- package/dist/runtime/github-integration.js.map +1 -0
- package/dist/runtime/grading-ops.js +1 -1
- package/dist/runtime/grading-ops.js.map +1 -1
- package/dist/runtime/memory-extra-ops.d.ts.map +1 -1
- package/dist/runtime/memory-extra-ops.js +6 -2
- package/dist/runtime/memory-extra-ops.js.map +1 -1
- package/dist/runtime/orchestrate-ops.d.ts.map +1 -1
- package/dist/runtime/orchestrate-ops.js +386 -37
- package/dist/runtime/orchestrate-ops.js.map +1 -1
- package/dist/runtime/planning-extra-ops.d.ts.map +1 -1
- package/dist/runtime/planning-extra-ops.js +69 -4
- package/dist/runtime/planning-extra-ops.js.map +1 -1
- package/dist/runtime/review-ops.d.ts +10 -0
- package/dist/runtime/review-ops.d.ts.map +1 -0
- package/dist/runtime/review-ops.js +97 -0
- package/dist/runtime/review-ops.js.map +1 -0
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +29 -12
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/session-briefing.d.ts +3 -0
- package/dist/runtime/session-briefing.d.ts.map +1 -1
- package/dist/runtime/session-briefing.js +72 -1
- package/dist/runtime/session-briefing.js.map +1 -1
- package/dist/runtime/sync-ops.d.ts +12 -0
- package/dist/runtime/sync-ops.d.ts.map +1 -0
- package/dist/runtime/sync-ops.js +288 -0
- package/dist/runtime/sync-ops.js.map +1 -0
- package/dist/runtime/tier-ops.d.ts +13 -0
- package/dist/runtime/tier-ops.d.ts.map +1 -0
- package/dist/runtime/tier-ops.js +110 -0
- package/dist/runtime/tier-ops.js.map +1 -0
- package/dist/runtime/types.d.ts +10 -4
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/vault-extra-ops.d.ts +5 -4
- package/dist/runtime/vault-extra-ops.d.ts.map +1 -1
- package/dist/runtime/vault-extra-ops.js +5 -300
- package/dist/runtime/vault-extra-ops.js.map +1 -1
- package/dist/runtime/vault-sharing-ops.d.ts +4 -4
- package/dist/runtime/vault-sharing-ops.d.ts.map +1 -1
- package/dist/runtime/vault-sharing-ops.js +5 -300
- package/dist/runtime/vault-sharing-ops.js.map +1 -1
- package/dist/skills/sync-skills.d.ts +27 -0
- package/dist/skills/sync-skills.d.ts.map +1 -0
- package/dist/skills/sync-skills.js +81 -0
- package/dist/skills/sync-skills.js.map +1 -0
- package/dist/update-check.d.ts +14 -0
- package/dist/update-check.d.ts.map +1 -0
- package/dist/update-check.js +96 -0
- package/dist/update-check.js.map +1 -0
- package/dist/vault/linking.d.ts +10 -12
- package/dist/vault/linking.d.ts.map +1 -1
- package/dist/vault/linking.js +140 -161
- package/dist/vault/linking.js.map +1 -1
- package/dist/vault/vault-entries.d.ts +69 -0
- package/dist/vault/vault-entries.d.ts.map +1 -0
- package/dist/vault/vault-entries.js +299 -0
- package/dist/vault/vault-entries.js.map +1 -0
- package/dist/vault/vault-interfaces.d.ts +153 -0
- package/dist/vault/vault-interfaces.d.ts.map +1 -0
- package/dist/vault/vault-interfaces.js +2 -0
- package/dist/vault/vault-interfaces.js.map +1 -0
- package/dist/vault/vault-maintenance.d.ts +40 -0
- package/dist/vault/vault-maintenance.d.ts.map +1 -0
- package/dist/vault/vault-maintenance.js +146 -0
- package/dist/vault/vault-maintenance.js.map +1 -0
- package/dist/vault/vault-markdown-sync.d.ts +22 -0
- package/dist/vault/vault-markdown-sync.d.ts.map +1 -0
- package/dist/vault/vault-markdown-sync.js +143 -0
- package/dist/vault/vault-markdown-sync.js.map +1 -0
- package/dist/vault/vault-memories.d.ts +61 -0
- package/dist/vault/vault-memories.d.ts.map +1 -0
- package/dist/vault/vault-memories.js +242 -0
- package/dist/vault/vault-memories.js.map +1 -0
- package/dist/vault/vault-schema.d.ts +9 -0
- package/dist/vault/vault-schema.d.ts.map +1 -0
- package/dist/vault/vault-schema.js +205 -0
- package/dist/vault/vault-schema.js.map +1 -0
- package/dist/vault/vault.d.ts +29 -81
- package/dist/vault/vault.d.ts.map +1 -1
- package/dist/vault/vault.js +82 -931
- package/dist/vault/vault.js.map +1 -1
- package/package.json +7 -7
- package/src/agency/agency-manager.test.ts +620 -0
- package/src/agency/default-rules.test.ts +236 -0
- package/src/{__tests__ → brain}/brain-intelligence.test.ts +37 -14
- package/src/{__tests__ → brain}/brain.test.ts +1 -1
- package/src/brain/intelligence.ts +196 -15
- package/src/brain/learning-radar.ts +22 -1
- package/src/{__tests__ → brain}/second-brain-features.test.ts +4 -4
- package/src/{__tests__ → brain}/session-lifecycle.test.ts +2 -2
- package/src/capabilities/chain-mapping.test.ts +66 -0
- package/src/capabilities/registry.test.ts +359 -0
- package/src/chat/agent-loop.test.ts +384 -0
- package/src/chat/agent-loop.ts +2 -0
- package/src/{__tests__ → chat}/chat-differentiators.test.ts +3 -3
- package/src/{__tests__ → chat}/chat-enhanced.test.ts +4 -4
- package/src/{__tests__ → chat}/chat-transport.test.ts +6 -6
- package/src/chat/mcp-bridge.test.ts +178 -0
- package/src/chat/notifications.ts +2 -0
- package/src/chat/output-compressor.test.ts +164 -0
- package/src/claudemd/compose.test.ts +178 -0
- package/src/claudemd/compose.ts +1 -1
- package/src/claudemd/inject.test.ts +201 -0
- package/src/context/context-engine.test.ts +506 -0
- package/src/control/identity-manager.test.ts +305 -0
- package/src/control/intent-router.test.ts +360 -0
- package/src/control/intent-router.ts +13 -4
- package/src/curator/classifier.test.ts +110 -0
- package/src/curator/contradiction-detector.test.ts +205 -0
- package/src/curator/contradiction-detector.ts +87 -0
- package/src/{__tests__ → curator}/curator-pipeline-e2e.test.ts +10 -10
- package/src/{__tests__ → curator}/curator.test.ts +77 -1
- package/src/curator/curator.ts +160 -600
- package/src/curator/duplicate-detector.test.ts +245 -0
- package/src/curator/duplicate-detector.ts +103 -0
- package/src/curator/health-audit.ts +126 -0
- package/src/curator/metadata-enricher.ts +84 -0
- package/src/curator/quality-gate.test.ts +175 -0
- package/src/curator/schema.ts +65 -0
- package/src/curator/tag-manager.test.ts +173 -0
- package/src/curator/tag-manager.ts +109 -0
- package/src/domain-packs/inject-rules.test.ts +117 -0
- package/src/domain-packs/knowledge-installer.test.ts +163 -0
- package/src/domain-packs/loader.test.ts +86 -0
- package/src/domain-packs/pack-runtime.test.ts +140 -0
- package/src/domain-packs/skills-installer.test.ts +135 -0
- package/src/domain-packs/token-resolver.test.ts +148 -0
- package/src/domain-packs/types.test.ts +144 -0
- package/src/enforcement/adapters/claude-code.test.ts +216 -0
- package/src/enforcement/registry.test.ts +258 -0
- package/src/engine/bin/soleri-engine.ts +30 -4
- package/src/engine/core-ops.test.ts +254 -0
- package/src/engine/core-ops.ts +25 -8
- package/src/engine/module-manifest.test.ts +125 -0
- package/src/engine/module-manifest.ts +42 -2
- package/src/engine/register-engine.test.ts +235 -0
- package/src/engine/register-engine.ts +50 -3
- package/src/errors/classify.test.ts +203 -0
- package/src/errors/retry.test.ts +153 -0
- package/src/errors/retry.ts +2 -0
- package/src/errors/types.test.ts +108 -0
- package/src/events/event-bus.test.ts +149 -0
- package/src/extensions/middleware.test.ts +234 -0
- package/src/facades/facade-factory.test.ts +470 -0
- package/src/flows/chain-runner.test.ts +273 -0
- package/src/flows/context-router.test.ts +52 -0
- package/src/flows/dispatch-registry.test.ts +128 -0
- package/src/flows/epilogue.test.ts +113 -0
- package/src/flows/executor.test.ts +263 -0
- package/src/flows/gate-evaluator.test.ts +200 -0
- package/src/flows/gate-evaluator.ts +23 -0
- package/src/flows/types.ts +4 -0
- package/src/governance/governance.test.ts +842 -0
- package/src/{__tests__ → health}/health-registry.test.ts +75 -55
- package/src/health/vault-integrity.test.ts +110 -0
- package/src/index.ts +92 -0
- package/src/intake/content-classifier.test.ts +279 -0
- package/src/intake/dedup-gate.test.ts +147 -0
- package/src/intake/intake-pipeline.test.ts +508 -0
- package/src/intake/intake-pipeline.ts +1 -0
- package/src/intake/text-ingester.test.ts +200 -0
- package/src/intake/text-ingester.ts +2 -0
- package/src/llm/key-pool.test.ts +234 -0
- package/src/llm/key-pool.ts +3 -4
- package/src/llm/llm-client.test.ts +342 -0
- package/src/llm/oauth-discovery.test.ts +180 -0
- package/src/llm/utils.test.ts +371 -0
- package/src/llm/utils.ts +2 -0
- package/src/{__tests__ → logging}/logger.test.ts +44 -62
- package/src/loop/loop-manager.test.ts +515 -0
- package/src/migrations/migration-runner.edge-cases.test.ts +314 -0
- package/src/migrations/migration-runner.test-helpers.ts +64 -0
- package/src/migrations/migration-runner.test.ts +385 -0
- package/src/operator/auto-signal-pipeline.test.ts +207 -0
- package/src/operator/operator-profile-extended.test.ts +330 -0
- package/src/operator/operator-profile.test.ts +332 -0
- package/src/operator/operator-profile.ts +485 -0
- package/src/operator/operator-signals-extended.test.ts +257 -0
- package/src/operator/operator-signals.test.ts +277 -0
- package/src/operator/operator-signals.ts +262 -0
- package/src/operator/operator-types.ts +444 -0
- package/src/operator/prompts/hook-precompact-operator-dispatch.md +98 -0
- package/src/operator/prompts/subagent-soft-signal-extractor.md +130 -0
- package/src/operator/prompts/subagent-synthesis-cognition.md +190 -0
- package/src/operator/prompts/subagent-synthesis-communication.md +146 -0
- package/src/operator/prompts/subagent-synthesis-technical.md +170 -0
- package/src/operator/prompts/subagent-synthesis-trust.md +149 -0
- package/src/{__tests__ → packs}/pack-lockfile.test.ts +3 -3
- package/src/{__tests__ → packs}/pack-system.test.ts +2 -2
- package/src/paths.ts +115 -0
- package/src/persistence/index.ts +1 -1
- package/src/persistence/sqlite-provider.test.ts +540 -0
- package/src/persistence/sqlite-provider.ts +8 -5
- package/src/persona/defaults.test.ts +55 -0
- package/src/persona/loader.test.ts +67 -0
- package/src/persona/prompt-generator.test.ts +127 -0
- package/src/planning/evidence-collector.test.ts +515 -0
- package/src/planning/evidence-collector.ts +47 -0
- package/src/planning/gap-analysis-alternatives.test.ts +199 -0
- package/src/planning/gap-analysis.ts +21 -636
- package/src/planning/gap-passes.test.ts +554 -0
- package/src/planning/gap-passes.ts +367 -0
- package/src/planning/gap-patterns.test.ts +394 -0
- package/src/planning/gap-patterns.ts +317 -0
- package/src/planning/gap-types.ts +4 -1
- package/src/planning/github-projection.test.ts +182 -0
- package/src/planning/github-projection.ts +446 -0
- package/src/planning/impact-analyzer.test.ts +167 -0
- package/src/planning/impact-analyzer.ts +251 -0
- package/src/planning/plan-lifecycle.test.ts +379 -0
- package/src/planning/plan-lifecycle.ts +377 -0
- package/src/planning/planner-types.ts +215 -0
- package/src/{__tests__ → planning}/planner.test.ts +179 -15
- package/src/planning/planner.ts +221 -1112
- package/src/planning/rationalization-detector.test.ts +156 -0
- package/src/planning/rationalization-detector.ts +136 -0
- package/src/planning/reconciliation-engine.test.ts +158 -0
- package/src/planning/reconciliation-engine.ts +161 -0
- package/src/planning/task-verifier.test.ts +267 -0
- package/src/planning/task-verifier.ts +309 -0
- package/src/planning/verification-protocol.test.ts +201 -0
- package/src/playbooks/generic/generic-playbooks.test.ts +438 -0
- package/src/playbooks/index.test.ts +77 -0
- package/src/playbooks/playbook-executor.test.ts +253 -0
- package/src/playbooks/playbook-registry.test.ts +232 -0
- package/src/playbooks/playbook-seeder.test.ts +153 -0
- package/src/plugins/plugin-loader.test.ts +217 -0
- package/src/plugins/plugin-registry.test.ts +284 -0
- package/src/project/project-registry.test.ts +439 -0
- package/src/prompts/parser.test.ts +100 -0
- package/src/prompts/template-manager.test.ts +112 -0
- package/src/{__tests__ → queue}/async-infrastructure.test.ts +3 -3
- package/src/queue/job-queue.test.ts +327 -0
- package/src/queue/pipeline-runner.test.ts +209 -0
- package/src/runtime/admin-extra-ops.test.ts +513 -0
- package/src/runtime/admin-ops.test.ts +255 -0
- package/src/runtime/admin-ops.ts +45 -17
- package/src/runtime/admin-setup-ops.test.ts +327 -0
- package/src/runtime/admin-setup-ops.ts +26 -42
- package/src/runtime/archive-ops.test.ts +272 -0
- package/src/runtime/archive-ops.ts +347 -0
- package/src/runtime/branching-ops.test.ts +144 -0
- package/src/runtime/branching-ops.ts +107 -0
- package/src/runtime/capture-ops.test.ts +419 -0
- package/src/runtime/capture-ops.ts +50 -8
- package/src/runtime/chain-ops.test.ts +159 -0
- package/src/runtime/claude-md-helpers.test.ts +189 -0
- package/src/runtime/claude-md-helpers.ts +1 -1
- package/src/runtime/context-health.test.ts +76 -0
- package/src/runtime/context-health.ts +83 -0
- package/src/runtime/curator-extra-ops.test.ts +204 -0
- package/src/runtime/deprecation.test.ts +98 -0
- package/src/runtime/domain-ops.test.ts +278 -0
- package/src/runtime/facades/admin-facade.test.ts +330 -0
- package/src/runtime/facades/agency-facade.test.ts +278 -0
- package/src/runtime/facades/archive-facade.test.ts +308 -0
- package/src/runtime/facades/archive-facade.ts +14 -0
- package/src/runtime/facades/brain-facade.test.ts +818 -0
- package/src/runtime/facades/brain-facade.ts +2 -0
- package/src/runtime/facades/branching-facade.test.ts +43 -0
- package/src/runtime/facades/branching-facade.ts +11 -0
- package/src/runtime/facades/chat-facade.test.ts +219 -0
- package/src/runtime/facades/chat-facade.ts +15 -906
- package/src/runtime/facades/chat-service-ops.test.ts +381 -0
- package/src/runtime/facades/chat-service-ops.ts +376 -0
- package/src/runtime/facades/chat-session-ops.test.ts +212 -0
- package/src/runtime/facades/chat-session-ops.ts +146 -0
- package/src/runtime/facades/chat-state.ts +60 -0
- package/src/runtime/facades/chat-transport-ops.test.ts +336 -0
- package/src/runtime/facades/chat-transport-ops.ts +379 -0
- package/src/runtime/facades/context-facade.test.ts +123 -0
- package/src/runtime/facades/control-facade.test.ts +436 -0
- package/src/runtime/facades/control-facade.ts +6 -1
- package/src/runtime/facades/curator-facade.test.ts +303 -0
- package/src/runtime/facades/index.ts +48 -0
- package/src/runtime/facades/intake-facade.test.ts +215 -0
- package/src/runtime/facades/intake-facade.ts +14 -0
- package/src/runtime/facades/links-facade.test.ts +203 -0
- package/src/runtime/facades/links-facade.ts +13 -0
- package/src/runtime/facades/loop-facade.test.ts +262 -0
- package/src/runtime/facades/memory-facade.test.ts +283 -0
- package/src/runtime/facades/memory-facade.ts +78 -6
- package/src/runtime/facades/operator-facade.test.ts +221 -0
- package/src/runtime/facades/operator-facade.ts +244 -0
- package/src/runtime/facades/orchestrate-facade.test.ts +191 -0
- package/src/runtime/facades/orchestrate-facade.ts +3 -3
- package/src/runtime/facades/plan-facade.test.ts +283 -0
- package/src/runtime/facades/plan-facade.ts +47 -6
- package/src/runtime/facades/review-facade.test.ts +82 -0
- package/src/runtime/facades/review-facade.ts +11 -0
- package/src/runtime/facades/sync-facade.test.ts +113 -0
- package/src/runtime/facades/sync-facade.ts +11 -0
- package/src/runtime/facades/tier-facade.test.ts +47 -0
- package/src/runtime/facades/tier-facade.ts +11 -0
- package/src/runtime/facades/vault-facade.test.ts +563 -0
- package/src/runtime/facades/vault-facade.ts +66 -265
- package/src/runtime/feature-flags.test.ts +140 -0
- package/src/runtime/github-integration.test.ts +89 -0
- package/src/runtime/github-integration.ts +162 -0
- package/src/runtime/grading-ops.test.ts +172 -0
- package/src/runtime/grading-ops.ts +1 -1
- package/src/runtime/intake-ops.test.ts +261 -0
- package/src/runtime/loop-ops.test.ts +248 -0
- package/src/runtime/memory-cross-project-ops.test.ts +188 -0
- package/src/runtime/memory-extra-ops.test.ts +453 -0
- package/src/runtime/memory-extra-ops.ts +6 -2
- package/src/runtime/orchestrate-ops.test.ts +302 -0
- package/src/runtime/orchestrate-ops.ts +461 -45
- package/src/runtime/pack-ops.test.ts +175 -0
- package/src/runtime/planning-extra-ops.test.ts +593 -0
- package/src/runtime/planning-extra-ops.ts +74 -4
- package/src/{__tests__ → runtime}/playbook-ops-execution.test.ts +3 -3
- package/src/runtime/playbook-ops.test.ts +285 -0
- package/src/runtime/plugin-ops.test.ts +259 -0
- package/src/runtime/project-ops.test.ts +255 -0
- package/src/runtime/review-ops.test.ts +142 -0
- package/src/runtime/review-ops.ts +99 -0
- package/src/runtime/runtime.test.ts +363 -0
- package/src/runtime/runtime.ts +41 -12
- package/src/runtime/session-briefing.test.ts +431 -0
- package/src/runtime/session-briefing.ts +86 -1
- package/src/runtime/sync-ops.test.ts +212 -0
- package/src/runtime/sync-ops.ts +325 -0
- package/src/runtime/telemetry-ops.test.ts +157 -0
- package/src/runtime/tier-ops.test.ts +159 -0
- package/src/runtime/tier-ops.ts +119 -0
- package/src/runtime/types.ts +10 -4
- package/src/runtime/vault-extra-ops.test.ts +270 -0
- package/src/runtime/vault-extra-ops.ts +5 -332
- package/src/runtime/vault-linking-ops.test.ts +237 -0
- package/src/runtime/vault-sharing-ops.test.ts +127 -0
- package/src/runtime/vault-sharing-ops.ts +5 -329
- package/src/skills/sync-skills.ts +98 -0
- package/src/streams/normalize.test.ts +95 -0
- package/src/streams/replayable-stream.test.ts +166 -0
- package/src/telemetry/telemetry.test.ts +143 -0
- package/src/transport/http-server.test.ts +394 -0
- package/src/transport/lsp-server.test.ts +458 -0
- package/src/transport/rate-limiter.test.ts +126 -0
- package/src/transport/session-manager.test.ts +133 -0
- package/src/transport/token-auth.test.ts +136 -0
- package/src/transport/ws-server.test.ts +297 -0
- package/src/update-check.ts +111 -0
- package/src/vault/__tests__/vault-characterization.test.ts +579 -0
- package/src/vault/content-hash.test.ts +78 -0
- package/src/vault/git-vault-sync.test.ts +234 -0
- package/src/vault/knowledge-review.test.ts +269 -0
- package/src/vault/linking.test.ts +391 -0
- package/src/vault/linking.ts +188 -181
- package/src/vault/obsidian-sync.test.ts +345 -0
- package/src/vault/playbook.test.ts +152 -0
- package/src/vault/scope-detector.test.ts +185 -0
- package/src/vault/vault-branching.test.ts +252 -0
- package/src/{__tests__ → vault}/vault-connect.test.ts +1 -1
- package/src/vault/vault-entries.ts +426 -0
- package/src/vault/vault-maintenance.ts +200 -0
- package/src/vault/vault-manager.test.ts +206 -0
- package/src/vault/vault-markdown-sync.test.ts +203 -0
- package/src/vault/vault-markdown-sync.ts +163 -0
- package/src/vault/vault-memories.ts +339 -0
- package/src/{__tests__ → vault}/vault-scaling.test.ts +1 -1
- package/src/vault/vault-schema.ts +238 -0
- package/src/{__tests__ → vault}/vault-sharing.test.ts +4 -4
- package/src/{__tests__ → vault}/vault.test.ts +2 -2
- package/src/vault/vault.ts +87 -1123
- package/dist/cognee/client.d.ts +0 -43
- package/dist/cognee/client.d.ts.map +0 -1
- package/dist/cognee/client.js +0 -375
- package/dist/cognee/client.js.map +0 -1
- package/dist/cognee/sync-manager.d.ts +0 -153
- package/dist/cognee/sync-manager.d.ts.map +0 -1
- package/dist/cognee/sync-manager.js +0 -390
- package/dist/cognee/sync-manager.js.map +0 -1
- package/dist/cognee/types.d.ts +0 -62
- package/dist/cognee/types.d.ts.map +0 -1
- package/dist/cognee/types.js +0 -3
- package/dist/cognee/types.js.map +0 -1
- package/dist/governance/index.d.ts +0 -3
- package/dist/governance/index.d.ts.map +0 -1
- package/dist/governance/index.js +0 -2
- package/dist/governance/index.js.map +0 -1
- package/dist/health/doctor-checks.d.ts +0 -15
- package/dist/health/doctor-checks.d.ts.map +0 -1
- package/dist/health/doctor-checks.js +0 -98
- package/dist/health/doctor-checks.js.map +0 -1
- package/dist/persistence/postgres-provider.d.ts +0 -81
- package/dist/persistence/postgres-provider.d.ts.map +0 -1
- package/dist/persistence/postgres-provider.js +0 -256
- package/dist/persistence/postgres-provider.js.map +0 -1
- package/dist/runtime/cognee-sync-ops.d.ts +0 -12
- package/dist/runtime/cognee-sync-ops.d.ts.map +0 -1
- package/dist/runtime/cognee-sync-ops.js +0 -93
- package/dist/runtime/cognee-sync-ops.js.map +0 -1
- package/dist/runtime/core-ops.d.ts +0 -23
- package/dist/runtime/core-ops.d.ts.map +0 -1
- package/dist/runtime/core-ops.js +0 -1296
- package/dist/runtime/core-ops.js.map +0 -1
- package/dist/runtime/facades/cognee-facade.d.ts +0 -8
- package/dist/runtime/facades/cognee-facade.d.ts.map +0 -1
- package/dist/runtime/facades/cognee-facade.js +0 -156
- package/dist/runtime/facades/cognee-facade.js.map +0 -1
- package/src/__tests__/admin-extra-ops.test.ts +0 -484
- package/src/__tests__/admin-ops.test.ts +0 -268
- package/src/__tests__/admin-setup-ops.test.ts +0 -355
- package/src/__tests__/agency-manager.test.ts +0 -374
- package/src/__tests__/agent-loop.test.ts +0 -256
- package/src/__tests__/capture-ops.test.ts +0 -784
- package/src/__tests__/claudemd.test.ts +0 -282
- package/src/__tests__/content-hash.test.ts +0 -60
- package/src/__tests__/context-engine.test.ts +0 -251
- package/src/__tests__/core-ops.test.ts +0 -550
- package/src/__tests__/curator-extra-ops.test.ts +0 -383
- package/src/__tests__/deprecation.test.ts +0 -78
- package/src/__tests__/domain-ops.test.ts +0 -226
- package/src/__tests__/domain-packs.test.ts +0 -421
- package/src/__tests__/enforcement.test.ts +0 -153
- package/src/__tests__/errors.test.ts +0 -388
- package/src/__tests__/extensions.test.ts +0 -233
- package/src/__tests__/facade-factory.test.ts +0 -271
- package/src/__tests__/feature-flags.test.ts +0 -137
- package/src/__tests__/flows.test.ts +0 -604
- package/src/__tests__/git-vault-sync.test.ts +0 -230
- package/src/__tests__/governance.test.ts +0 -522
- package/src/__tests__/grading-ops.test.ts +0 -361
- package/src/__tests__/identity-manager.test.ts +0 -243
- package/src/__tests__/intake-pipeline.test.ts +0 -162
- package/src/__tests__/intent-router.test.ts +0 -222
- package/src/__tests__/knowledge-review.test.ts +0 -104
- package/src/__tests__/llm-client.test.ts +0 -69
- package/src/__tests__/llm.test.ts +0 -556
- package/src/__tests__/loader.test.ts +0 -176
- package/src/__tests__/loop-ops.test.ts +0 -469
- package/src/__tests__/lsp-transport.test.ts +0 -442
- package/src/__tests__/memory-cross-project-ops.test.ts +0 -248
- package/src/__tests__/memory-extra-ops.test.ts +0 -352
- package/src/__tests__/migration-runner.test.ts +0 -170
- package/src/__tests__/module-manifest-drift.test.ts +0 -59
- package/src/__tests__/normalize.test.ts +0 -85
- package/src/__tests__/obsidian-sync.test.ts +0 -354
- package/src/__tests__/orchestrate-ops.test.ts +0 -289
- package/src/__tests__/pack-ops.test.ts +0 -146
- package/src/__tests__/persistence.test.ts +0 -291
- package/src/__tests__/planning-extra-ops.test.ts +0 -706
- package/src/__tests__/playbook-executor.test.ts +0 -249
- package/src/__tests__/playbook-registry.test.ts +0 -326
- package/src/__tests__/playbook-seeder.test.ts +0 -163
- package/src/__tests__/playbook.test.ts +0 -389
- package/src/__tests__/plugin-ops.test.ts +0 -411
- package/src/__tests__/plugin-system.test.ts +0 -509
- package/src/__tests__/project-ops.test.ts +0 -381
- package/src/__tests__/replayable-stream.test.ts +0 -177
- package/src/__tests__/runtime.test.ts +0 -95
- package/src/__tests__/scope-detector.test.ts +0 -121
- package/src/__tests__/template-manager.test.ts +0 -222
- package/src/__tests__/token-resolver.test.ts +0 -79
- package/src/__tests__/transport.test.ts +0 -758
- package/src/__tests__/vault-branching.test.ts +0 -274
- package/src/__tests__/vault-extra-ops.test.ts +0 -482
- package/src/__tests__/vault-integrity.test.ts +0 -71
- package/src/__tests__/vault-manager.test.ts +0 -238
- package/src/__tests__/ws-transport.test.ts +0 -479
- package/src/engine/index.ts +0 -21
- package/src/persona/index.ts +0 -9
|
@@ -6,8 +6,7 @@ name: Build Component
|
|
|
6
6
|
description: >
|
|
7
7
|
Full component build workflow: search vault for patterns, check for duplicates,
|
|
8
8
|
gather architecture guidance, get component workflow, then validate the result.
|
|
9
|
-
version:
|
|
10
|
-
|
|
9
|
+
version: '1.0.0'
|
|
11
10
|
on-missing-capability:
|
|
12
11
|
default: skip-with-warning
|
|
13
12
|
blocking: [vault.search]
|
|
@@ -44,10 +43,10 @@ steps:
|
|
|
44
43
|
- duplicate-check-result
|
|
45
44
|
gate:
|
|
46
45
|
type: GATE
|
|
47
|
-
condition:
|
|
46
|
+
condition: 'count == 0'
|
|
48
47
|
on-false:
|
|
49
48
|
action: STOP
|
|
50
|
-
message:
|
|
49
|
+
message: 'Duplicate component detected. Review existing component before building a new one.'
|
|
51
50
|
|
|
52
51
|
- id: get-design-recommendation
|
|
53
52
|
name: Get Design Recommendation
|
|
@@ -98,7 +97,7 @@ steps:
|
|
|
98
97
|
on-false:
|
|
99
98
|
action: BRANCH
|
|
100
99
|
goto: get-workflow
|
|
101
|
-
message:
|
|
100
|
+
message: 'Validation score below threshold. Re-run workflow.'
|
|
102
101
|
|
|
103
102
|
scoring:
|
|
104
103
|
weights:
|
|
@@ -107,17 +106,17 @@ scoring:
|
|
|
107
106
|
architecture: 0.15
|
|
108
107
|
workflow: 0.20
|
|
109
108
|
validation: 0.40
|
|
110
|
-
formula:
|
|
109
|
+
formula: 'weighted-sum'
|
|
111
110
|
|
|
112
111
|
on-error:
|
|
113
112
|
default:
|
|
114
113
|
action: STOP
|
|
115
|
-
message:
|
|
116
|
-
recovery:
|
|
114
|
+
message: 'Build flow encountered an error.'
|
|
115
|
+
recovery: 'Retry from the failed step.'
|
|
117
116
|
max-retries: 2
|
|
118
117
|
escalation:
|
|
119
118
|
action: STOP
|
|
120
|
-
message:
|
|
119
|
+
message: 'Build flow failed after retries. Escalate to user.'
|
|
121
120
|
|
|
122
121
|
metadata:
|
|
123
122
|
author: soleri
|
|
@@ -6,8 +6,7 @@ name: Deliver Feature
|
|
|
6
6
|
description: >
|
|
7
7
|
Feature delivery workflow: validate code quality, check test coverage,
|
|
8
8
|
assess performance, then execute the delivery workflow.
|
|
9
|
-
version:
|
|
10
|
-
|
|
9
|
+
version: '1.0.0'
|
|
11
10
|
on-missing-capability:
|
|
12
11
|
default: skip-with-warning
|
|
13
12
|
blocking: [vault.search]
|
|
@@ -35,10 +34,10 @@ steps:
|
|
|
35
34
|
- code-validation-result
|
|
36
35
|
gate:
|
|
37
36
|
type: GATE
|
|
38
|
-
condition:
|
|
37
|
+
condition: 'pass == true'
|
|
39
38
|
on-false:
|
|
40
39
|
action: STOP
|
|
41
|
-
message:
|
|
40
|
+
message: 'Code validation failed. Fix issues before delivery.'
|
|
42
41
|
|
|
43
42
|
- id: check-testing
|
|
44
43
|
name: Check Test Coverage
|
|
@@ -50,10 +49,10 @@ steps:
|
|
|
50
49
|
- test-results
|
|
51
50
|
gate:
|
|
52
51
|
type: GATE
|
|
53
|
-
condition:
|
|
52
|
+
condition: 'coverage >= 80'
|
|
54
53
|
on-false:
|
|
55
54
|
action: STOP
|
|
56
|
-
message:
|
|
55
|
+
message: 'Test coverage below threshold. Add tests before delivery.'
|
|
57
56
|
|
|
58
57
|
- id: check-performance
|
|
59
58
|
name: Check Performance
|
|
@@ -82,7 +81,7 @@ steps:
|
|
|
82
81
|
C: 75
|
|
83
82
|
on-false:
|
|
84
83
|
action: STOP
|
|
85
|
-
message:
|
|
84
|
+
message: 'Delivery score below threshold. Address issues before shipping.'
|
|
86
85
|
|
|
87
86
|
scoring:
|
|
88
87
|
weights:
|
|
@@ -90,16 +89,16 @@ scoring:
|
|
|
90
89
|
testing: 0.25
|
|
91
90
|
performance: 0.20
|
|
92
91
|
delivery: 0.25
|
|
93
|
-
formula:
|
|
92
|
+
formula: 'weighted-sum'
|
|
94
93
|
|
|
95
94
|
on-error:
|
|
96
95
|
default:
|
|
97
96
|
action: STOP
|
|
98
|
-
message:
|
|
97
|
+
message: 'Delivery flow encountered an error. Do not proceed.'
|
|
99
98
|
max-retries: 1
|
|
100
99
|
escalation:
|
|
101
100
|
action: STOP
|
|
102
|
-
message:
|
|
101
|
+
message: 'Delivery flow failed. Manual review required.'
|
|
103
102
|
|
|
104
103
|
metadata:
|
|
105
104
|
author: soleri
|
|
@@ -7,8 +7,7 @@ description: >
|
|
|
7
7
|
Design workflow: search vault for existing design patterns, query Cognee knowledge graph
|
|
8
8
|
for curated design intelligence, then provide a full design system recommendation
|
|
9
9
|
(style + palette + typography + landing pattern + anti-patterns).
|
|
10
|
-
version:
|
|
11
|
-
|
|
10
|
+
version: '1.0.0'
|
|
12
11
|
on-missing-capability:
|
|
13
12
|
default: skip-with-warning
|
|
14
13
|
blocking: [vault.search]
|
|
@@ -89,12 +88,12 @@ scoring:
|
|
|
89
88
|
design-system: 0.40
|
|
90
89
|
stack-guidelines: 0.15
|
|
91
90
|
brain-recommend: 0.20
|
|
92
|
-
formula:
|
|
91
|
+
formula: 'weighted-sum'
|
|
93
92
|
|
|
94
93
|
on-error:
|
|
95
94
|
default:
|
|
96
95
|
action: CONTINUE
|
|
97
|
-
message:
|
|
96
|
+
message: 'Design recommendation step encountered an error. Continuing with available data.'
|
|
98
97
|
max-retries: 1
|
|
99
98
|
|
|
100
99
|
metadata:
|
|
@@ -6,8 +6,7 @@ name: Enhance Feature
|
|
|
6
6
|
description: >
|
|
7
7
|
Feature enhancement workflow: search vault for improvement patterns,
|
|
8
8
|
gather architecture guidance, then validate the enhancement.
|
|
9
|
-
version:
|
|
10
|
-
|
|
9
|
+
version: '1.0.0'
|
|
11
10
|
on-missing-capability:
|
|
12
11
|
default: skip-with-warning
|
|
13
12
|
blocking: [vault.search]
|
|
@@ -65,20 +64,20 @@ steps:
|
|
|
65
64
|
on-false:
|
|
66
65
|
action: BRANCH
|
|
67
66
|
goto: get-architecture
|
|
68
|
-
message:
|
|
67
|
+
message: 'Enhancement validation below threshold. Revisit architecture guidance.'
|
|
69
68
|
|
|
70
69
|
scoring:
|
|
71
70
|
weights:
|
|
72
71
|
vault-search: 0.20
|
|
73
72
|
architecture: 0.30
|
|
74
73
|
validation: 0.50
|
|
75
|
-
formula:
|
|
74
|
+
formula: 'weighted-sum'
|
|
76
75
|
|
|
77
76
|
on-error:
|
|
78
77
|
default:
|
|
79
78
|
action: STOP
|
|
80
|
-
message:
|
|
81
|
-
recovery:
|
|
79
|
+
message: 'Enhancement flow encountered an error.'
|
|
80
|
+
recovery: 'Retry from the failed step.'
|
|
82
81
|
max-retries: 2
|
|
83
82
|
|
|
84
83
|
metadata:
|
|
@@ -6,8 +6,7 @@ name: Explore Knowledge
|
|
|
6
6
|
description: >
|
|
7
7
|
Knowledge exploration workflow: search vault patterns, cross-project memory,
|
|
8
8
|
brain pattern strengths, and playbooks to surface all relevant knowledge.
|
|
9
|
-
version:
|
|
10
|
-
|
|
9
|
+
version: '1.0.0'
|
|
11
10
|
on-missing-capability:
|
|
12
11
|
default: skip-with-warning
|
|
13
12
|
blocking: [vault.search]
|
|
@@ -67,12 +66,12 @@ scoring:
|
|
|
67
66
|
memory-search: 0.25
|
|
68
67
|
brain-check: 0.25
|
|
69
68
|
playbook-check: 0.20
|
|
70
|
-
formula:
|
|
69
|
+
formula: 'weighted-sum'
|
|
71
70
|
|
|
72
71
|
on-error:
|
|
73
72
|
default:
|
|
74
73
|
action: CONTINUE
|
|
75
|
-
message:
|
|
74
|
+
message: 'Exploration step failed; continuing with remaining sources.'
|
|
76
75
|
max-retries: 1
|
|
77
76
|
|
|
78
77
|
metadata:
|
package/data/flows/fix.flow.yaml
CHANGED
|
@@ -6,8 +6,7 @@ name: Fix Issue
|
|
|
6
6
|
description: >
|
|
7
7
|
Issue fix workflow: search for known anti-patterns, gather error patterns
|
|
8
8
|
in parallel, then validate the fix.
|
|
9
|
-
version:
|
|
10
|
-
|
|
9
|
+
version: '1.0.0'
|
|
11
10
|
on-missing-capability:
|
|
12
11
|
default: skip-with-warning
|
|
13
12
|
blocking: [vault.search]
|
|
@@ -65,20 +64,20 @@ steps:
|
|
|
65
64
|
on-false:
|
|
66
65
|
action: BRANCH
|
|
67
66
|
goto: search-anti-patterns
|
|
68
|
-
message:
|
|
67
|
+
message: 'Fix validation below threshold. Re-examine anti-patterns.'
|
|
69
68
|
|
|
70
69
|
scoring:
|
|
71
70
|
weights:
|
|
72
71
|
anti-pattern-search: 0.25
|
|
73
72
|
error-patterns: 0.25
|
|
74
73
|
validation: 0.50
|
|
75
|
-
formula:
|
|
74
|
+
formula: 'weighted-sum'
|
|
76
75
|
|
|
77
76
|
on-error:
|
|
78
77
|
default:
|
|
79
78
|
action: STOP
|
|
80
|
-
message:
|
|
81
|
-
recovery:
|
|
79
|
+
message: 'Fix flow encountered an error.'
|
|
80
|
+
recovery: 'Retry from the failed step.'
|
|
82
81
|
max-retries: 2
|
|
83
82
|
|
|
84
83
|
metadata:
|
|
@@ -6,8 +6,7 @@ name: Plan Feature
|
|
|
6
6
|
description: >
|
|
7
7
|
Feature planning workflow: search vault for prior art, brainstorm design
|
|
8
8
|
approaches, then create a structured plan with a checkpoint gate for approval.
|
|
9
|
-
version:
|
|
10
|
-
|
|
9
|
+
version: '1.0.0'
|
|
11
10
|
on-missing-capability:
|
|
12
11
|
default: skip-with-warning
|
|
13
12
|
blocking: [vault.search]
|
|
@@ -63,19 +62,19 @@ steps:
|
|
|
63
62
|
on-false:
|
|
64
63
|
action: BRANCH
|
|
65
64
|
goto: brainstorm
|
|
66
|
-
message:
|
|
65
|
+
message: 'Plan did not meet quality threshold. Re-brainstorm.'
|
|
67
66
|
|
|
68
67
|
scoring:
|
|
69
68
|
weights:
|
|
70
69
|
vault-search: 0.20
|
|
71
70
|
brainstorm: 0.30
|
|
72
71
|
plan-creation: 0.50
|
|
73
|
-
formula:
|
|
72
|
+
formula: 'weighted-sum'
|
|
74
73
|
|
|
75
74
|
on-error:
|
|
76
75
|
default:
|
|
77
76
|
action: STOP
|
|
78
|
-
message:
|
|
77
|
+
message: 'Planning flow encountered an error.'
|
|
79
78
|
max-retries: 1
|
|
80
79
|
|
|
81
80
|
metadata:
|
|
@@ -6,8 +6,7 @@ name: Code Review
|
|
|
6
6
|
description: >
|
|
7
7
|
Code review workflow: validate component code, check design rules and
|
|
8
8
|
accessibility in parallel, then produce a consolidated review report.
|
|
9
|
-
version:
|
|
10
|
-
|
|
9
|
+
version: '1.0.0'
|
|
11
10
|
on-missing-capability:
|
|
12
11
|
default: skip-with-warning
|
|
13
12
|
blocking: [vault.search]
|
|
@@ -73,12 +72,12 @@ scoring:
|
|
|
73
72
|
rules-check: 0.25
|
|
74
73
|
accessibility: 0.25
|
|
75
74
|
report: 0.20
|
|
76
|
-
formula:
|
|
75
|
+
formula: 'weighted-sum'
|
|
77
76
|
|
|
78
77
|
on-error:
|
|
79
78
|
default:
|
|
80
79
|
action: CONTINUE
|
|
81
|
-
message:
|
|
80
|
+
message: 'Review step failed; continuing with remaining checks.'
|
|
82
81
|
max-retries: 1
|
|
83
82
|
|
|
84
83
|
metadata:
|
|
@@ -7,25 +7,52 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import type { Vault } from '../vault/vault.js';
|
|
9
9
|
import type { Brain } from './brain.js';
|
|
10
|
+
import type { OperatorProfileStore } from '../operator/operator-profile.js';
|
|
10
11
|
import type { PatternStrength, StrengthsQuery, BrainSession, SessionLifecycleInput, SessionListQuery, SessionQuality, SessionReplay, KnowledgeProposal, ExtractionResult, GlobalPattern, DomainProfile, BuildIntelligenceResult, BrainIntelligenceStats, SessionContext, BrainExportData, BrainImportResult } from './types.js';
|
|
11
12
|
export declare class BrainIntelligence {
|
|
12
13
|
private vault;
|
|
13
14
|
private brain;
|
|
14
15
|
private provider;
|
|
16
|
+
private operatorProfile;
|
|
15
17
|
constructor(vault: Vault, brain: Brain);
|
|
18
|
+
/** Wire operator profile for automatic signal extraction. */
|
|
19
|
+
setOperatorProfile(profile: OperatorProfileStore): void;
|
|
16
20
|
private initializeTables;
|
|
17
21
|
lifecycle(input: SessionLifecycleInput): BrainSession;
|
|
18
22
|
/**
|
|
19
23
|
* Attempt auto-extraction after session end if the session has enough signal.
|
|
20
24
|
* Gate: at least 1 tool used OR 1 file modified OR a plan was associated.
|
|
21
25
|
* Silently skips if already extracted or insufficient data.
|
|
26
|
+
*
|
|
27
|
+
* After extraction, auto-promotes high-confidence proposals (>= 0.8) via
|
|
28
|
+
* enrichAndCapture() (which has built-in dedup). Proposals between 0.4-0.8
|
|
29
|
+
* are queued as pending. Below 0.4 are logged only.
|
|
30
|
+
*
|
|
31
|
+
* Also tracks completed sessions and auto-builds intelligence every N sessions.
|
|
22
32
|
*/
|
|
23
33
|
private autoExtractIfReady;
|
|
34
|
+
/**
|
|
35
|
+
* Auto-promote high-confidence proposals via enrichAndCapture().
|
|
36
|
+
* Dedup in enrichAndCapture() handles novelty gating:
|
|
37
|
+
* - TF-IDF similarity >= 0.8 → blocked (near-duplicate)
|
|
38
|
+
* - Content-hash match → blocked (exact duplicate)
|
|
39
|
+
*/
|
|
40
|
+
private autoPromoteProposals;
|
|
41
|
+
/**
|
|
42
|
+
* Track completed sessions and auto-trigger buildIntelligence() every N sessions.
|
|
43
|
+
*/
|
|
44
|
+
private maybeAutoBuildIntelligence;
|
|
45
|
+
/**
|
|
46
|
+
* Auto-rebuild intelligence after N feedback entries accumulate.
|
|
47
|
+
* Called from facade after record_feedback / brain_feedback ops.
|
|
48
|
+
*/
|
|
49
|
+
maybeAutoBuildOnFeedback(): void;
|
|
24
50
|
getSessionContext(limit?: number): SessionContext;
|
|
25
51
|
archiveSessions(olderThanDays?: number): {
|
|
26
52
|
archived: number;
|
|
27
53
|
};
|
|
28
54
|
getSessionById(id: string): BrainSession | null;
|
|
55
|
+
getSessionByPlanId(planId: string): BrainSession | null;
|
|
29
56
|
listSessions(query?: SessionListQuery): BrainSession[];
|
|
30
57
|
computeSessionQuality(sessionId: string): SessionQuality;
|
|
31
58
|
replaySession(sessionId: string): SessionReplay;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intelligence.d.ts","sourceRoot":"","sources":["../../src/brain/intelligence.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,YAAY,EACZ,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,iBAAiB,EAClB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"intelligence.d.ts","sourceRoot":"","sources":["../../src/brain/intelligence.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* takes Vault + Brain as constructor deps.
|
|
7
7
|
*/
|
|
8
8
|
import { randomUUID } from 'node:crypto';
|
|
9
|
+
import { extractFromBrainStrengths } from '../operator/operator-signals.js';
|
|
9
10
|
// ─── Constants ──────────────────────────────────────────────────────
|
|
10
11
|
const USAGE_MAX = 10;
|
|
11
12
|
const SPREAD_MAX = 5;
|
|
@@ -14,17 +15,26 @@ const EXTRACTION_TOOL_THRESHOLD = 3;
|
|
|
14
15
|
const EXTRACTION_FILE_THRESHOLD = 3;
|
|
15
16
|
const EXTRACTION_LONG_SESSION_MINUTES = 30;
|
|
16
17
|
const EXTRACTION_HIGH_FEEDBACK_RATIO = 0.8;
|
|
18
|
+
const AUTO_PROMOTE_THRESHOLD = 0.8;
|
|
19
|
+
const AUTO_PROMOTE_PENDING_MIN = 0.4;
|
|
20
|
+
const AUTO_BUILD_INTELLIGENCE_EVERY_N_SESSIONS = 3;
|
|
21
|
+
const AUTO_BUILD_INTELLIGENCE_EVERY_N_FEEDBACK = 5;
|
|
17
22
|
// ─── Class ──────────────────────────────────────────────────────────
|
|
18
23
|
export class BrainIntelligence {
|
|
19
24
|
vault;
|
|
20
25
|
brain;
|
|
21
26
|
provider;
|
|
27
|
+
operatorProfile = null;
|
|
22
28
|
constructor(vault, brain) {
|
|
23
29
|
this.vault = vault;
|
|
24
30
|
this.brain = brain;
|
|
25
31
|
this.provider = vault.getProvider();
|
|
26
32
|
this.initializeTables();
|
|
27
33
|
}
|
|
34
|
+
/** Wire operator profile for automatic signal extraction. */
|
|
35
|
+
setOperatorProfile(profile) {
|
|
36
|
+
this.operatorProfile = profile;
|
|
37
|
+
}
|
|
28
38
|
// ─── Table Initialization ─────────────────────────────────────────
|
|
29
39
|
initializeTables() {
|
|
30
40
|
this.provider.execSql(`
|
|
@@ -87,6 +97,12 @@ export class BrainIntelligence {
|
|
|
87
97
|
last_activity TEXT NOT NULL DEFAULT (datetime('now')),
|
|
88
98
|
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
89
99
|
);
|
|
100
|
+
|
|
101
|
+
CREATE TABLE IF NOT EXISTS brain_metadata (
|
|
102
|
+
key TEXT PRIMARY KEY,
|
|
103
|
+
value TEXT NOT NULL,
|
|
104
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
105
|
+
);
|
|
90
106
|
`);
|
|
91
107
|
}
|
|
92
108
|
// ─── Session Lifecycle ────────────────────────────────────────────
|
|
@@ -137,6 +153,12 @@ export class BrainIntelligence {
|
|
|
137
153
|
* Attempt auto-extraction after session end if the session has enough signal.
|
|
138
154
|
* Gate: at least 1 tool used OR 1 file modified OR a plan was associated.
|
|
139
155
|
* Silently skips if already extracted or insufficient data.
|
|
156
|
+
*
|
|
157
|
+
* After extraction, auto-promotes high-confidence proposals (>= 0.8) via
|
|
158
|
+
* enrichAndCapture() (which has built-in dedup). Proposals between 0.4-0.8
|
|
159
|
+
* are queued as pending. Below 0.4 are logged only.
|
|
160
|
+
*
|
|
161
|
+
* Also tracks completed sessions and auto-builds intelligence every N sessions.
|
|
140
162
|
*/
|
|
141
163
|
autoExtractIfReady(session) {
|
|
142
164
|
if (!session.endedAt)
|
|
@@ -147,12 +169,105 @@ export class BrainIntelligence {
|
|
|
147
169
|
if (!hasSignal)
|
|
148
170
|
return;
|
|
149
171
|
try {
|
|
150
|
-
this.extractKnowledge(session.id);
|
|
172
|
+
const result = this.extractKnowledge(session.id);
|
|
173
|
+
this.autoPromoteProposals(result.proposals);
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
// Non-critical — don't break session end
|
|
177
|
+
}
|
|
178
|
+
// Auto-build intelligence after N completed plan sessions
|
|
179
|
+
if (session.planOutcome === 'completed') {
|
|
180
|
+
this.maybeAutoBuildIntelligence();
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Auto-promote high-confidence proposals via enrichAndCapture().
|
|
185
|
+
* Dedup in enrichAndCapture() handles novelty gating:
|
|
186
|
+
* - TF-IDF similarity >= 0.8 → blocked (near-duplicate)
|
|
187
|
+
* - Content-hash match → blocked (exact duplicate)
|
|
188
|
+
*/
|
|
189
|
+
autoPromoteProposals(proposals) {
|
|
190
|
+
for (const p of proposals) {
|
|
191
|
+
if (p.confidence >= AUTO_PROMOTE_THRESHOLD) {
|
|
192
|
+
// High confidence — auto-promote through dedup pipeline
|
|
193
|
+
try {
|
|
194
|
+
const vaultType = p.type === 'anti-pattern' ? 'anti-pattern' : 'pattern';
|
|
195
|
+
const result = this.brain.enrichAndCapture({
|
|
196
|
+
id: `proposal-${p.id}`,
|
|
197
|
+
type: vaultType,
|
|
198
|
+
domain: 'brain-intelligence',
|
|
199
|
+
title: p.title,
|
|
200
|
+
severity: 'suggestion',
|
|
201
|
+
description: p.description,
|
|
202
|
+
tags: ['auto-extracted', 'auto-promoted', p.rule],
|
|
203
|
+
});
|
|
204
|
+
if (result.captured) {
|
|
205
|
+
this.provider.run('UPDATE brain_proposals SET promoted = 1 WHERE id = ?', [p.id]);
|
|
206
|
+
}
|
|
207
|
+
// If blocked by dedup, leave as unpromoted — that's correct behavior
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
// Non-critical — proposal stays as pending
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
else if (p.confidence < AUTO_PROMOTE_PENDING_MIN) {
|
|
214
|
+
// Low confidence — mark as not surfaceable (promoted = false is already default)
|
|
215
|
+
// Just log, don't surface in briefings
|
|
216
|
+
}
|
|
217
|
+
// Medium confidence (0.4-0.8) — stays as pending, surfaced in briefing
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Track completed sessions and auto-trigger buildIntelligence() every N sessions.
|
|
222
|
+
*/
|
|
223
|
+
maybeAutoBuildIntelligence() {
|
|
224
|
+
try {
|
|
225
|
+
const row = this.provider.get("SELECT value FROM brain_metadata WHERE key = 'sessions_since_last_build'");
|
|
226
|
+
const current = row ? parseInt(row.value, 10) : 0;
|
|
227
|
+
const next = current + 1;
|
|
228
|
+
if (next >= AUTO_BUILD_INTELLIGENCE_EVERY_N_SESSIONS) {
|
|
229
|
+
this.buildIntelligence();
|
|
230
|
+
this.provider.run(`INSERT OR REPLACE INTO brain_metadata (key, value, updated_at)
|
|
231
|
+
VALUES ('sessions_since_last_build', '0', datetime('now'))`);
|
|
232
|
+
// Reset feedback counter too — avoid double-trigger
|
|
233
|
+
this.provider.run(`INSERT OR REPLACE INTO brain_metadata (key, value, updated_at)
|
|
234
|
+
VALUES ('feedback_since_last_build', '0', datetime('now'))`);
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
this.provider.run(`INSERT OR REPLACE INTO brain_metadata (key, value, updated_at)
|
|
238
|
+
VALUES ('sessions_since_last_build', ?, datetime('now'))`, [String(next)]);
|
|
239
|
+
}
|
|
151
240
|
}
|
|
152
241
|
catch {
|
|
153
242
|
// Non-critical — don't break session end
|
|
154
243
|
}
|
|
155
244
|
}
|
|
245
|
+
/**
|
|
246
|
+
* Auto-rebuild intelligence after N feedback entries accumulate.
|
|
247
|
+
* Called from facade after record_feedback / brain_feedback ops.
|
|
248
|
+
*/
|
|
249
|
+
maybeAutoBuildOnFeedback() {
|
|
250
|
+
try {
|
|
251
|
+
const row = this.provider.get("SELECT value FROM brain_metadata WHERE key = 'feedback_since_last_build'");
|
|
252
|
+
const current = row ? parseInt(row.value, 10) : 0;
|
|
253
|
+
const next = current + 1;
|
|
254
|
+
if (next >= AUTO_BUILD_INTELLIGENCE_EVERY_N_FEEDBACK) {
|
|
255
|
+
this.buildIntelligence();
|
|
256
|
+
this.provider.run(`INSERT OR REPLACE INTO brain_metadata (key, value, updated_at)
|
|
257
|
+
VALUES ('feedback_since_last_build', '0', datetime('now'))`);
|
|
258
|
+
// Reset session counter too — avoid double-trigger
|
|
259
|
+
this.provider.run(`INSERT OR REPLACE INTO brain_metadata (key, value, updated_at)
|
|
260
|
+
VALUES ('sessions_since_last_build', '0', datetime('now'))`);
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
this.provider.run(`INSERT OR REPLACE INTO brain_metadata (key, value, updated_at)
|
|
264
|
+
VALUES ('feedback_since_last_build', ?, datetime('now'))`, [String(next)]);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
// Non-critical — don't block feedback recording
|
|
269
|
+
}
|
|
270
|
+
}
|
|
156
271
|
getSessionContext(limit = 10) {
|
|
157
272
|
const rows = this.provider.all('SELECT * FROM brain_sessions ORDER BY started_at DESC LIMIT ?', [limit]);
|
|
158
273
|
const sessions = rows.map((r) => this.rowToSession(r));
|
|
@@ -185,6 +300,12 @@ export class BrainIntelligence {
|
|
|
185
300
|
getSessionById(id) {
|
|
186
301
|
return this.getSession(id);
|
|
187
302
|
}
|
|
303
|
+
getSessionByPlanId(planId) {
|
|
304
|
+
const row = this.provider.get('SELECT * FROM brain_sessions WHERE plan_id = ? ORDER BY started_at DESC LIMIT 1', [planId]);
|
|
305
|
+
if (!row)
|
|
306
|
+
return null;
|
|
307
|
+
return this.rowToSession(row);
|
|
308
|
+
}
|
|
188
309
|
listSessions(query) {
|
|
189
310
|
const conditions = [];
|
|
190
311
|
const values = [];
|
|
@@ -438,35 +559,48 @@ export class BrainIntelligence {
|
|
|
438
559
|
}));
|
|
439
560
|
}
|
|
440
561
|
}
|
|
441
|
-
// Rule 2: Multi-file edits (3+ files)
|
|
562
|
+
// Rule 2: Multi-file edits (3+ files sharing a common parent directory)
|
|
442
563
|
if (session.filesModified.length >= EXTRACTION_FILE_THRESHOLD) {
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
564
|
+
// Group files by parent directory to filter noise
|
|
565
|
+
const dirGroups = new Map();
|
|
566
|
+
for (const f of session.filesModified) {
|
|
567
|
+
const dir = f.includes('/') ? f.slice(0, f.lastIndexOf('/')) : '.';
|
|
568
|
+
const list = dirGroups.get(dir) ?? [];
|
|
569
|
+
list.push(f);
|
|
570
|
+
dirGroups.set(dir, list);
|
|
571
|
+
}
|
|
572
|
+
// Only fire if at least 3 files share a common parent directory
|
|
573
|
+
const significantDirs = [...dirGroups.entries()].filter(([, files]) => files.length >= EXTRACTION_FILE_THRESHOLD);
|
|
574
|
+
if (significantDirs.length > 0) {
|
|
575
|
+
const [topDir, topFiles] = significantDirs.sort((a, b) => b[1].length - a[1].length)[0];
|
|
576
|
+
rulesApplied.push('multi_file_edit');
|
|
577
|
+
proposals.push(this.createProposal(sessionId, 'multi_file_edit', 'pattern', {
|
|
578
|
+
title: `Multi-file change pattern in ${topDir} (${topFiles.length} files)`,
|
|
579
|
+
description: `Session modified ${topFiles.length} files in ${topDir}: ${topFiles.slice(0, 5).join(', ')}${topFiles.length > 5 ? '...' : ''}. This may indicate an architectural pattern.`,
|
|
580
|
+
confidence: Math.min(0.8, 0.4 + topFiles.length * 0.05),
|
|
581
|
+
}));
|
|
582
|
+
}
|
|
449
583
|
}
|
|
450
|
-
// Rule 3: Long session (>30min)
|
|
584
|
+
// Rule 3: Long session (>30min) — neutral observation, not anti-pattern
|
|
451
585
|
if (session.endedAt && session.startedAt) {
|
|
452
586
|
const durationMs = new Date(session.endedAt).getTime() - new Date(session.startedAt).getTime();
|
|
453
587
|
const durationMin = durationMs / 60000;
|
|
454
588
|
if (durationMin > EXTRACTION_LONG_SESSION_MINUTES) {
|
|
455
589
|
rulesApplied.push('long_session');
|
|
456
|
-
proposals.push(this.createProposal(sessionId, 'long_session', '
|
|
590
|
+
proposals.push(this.createProposal(sessionId, 'long_session', 'pattern', {
|
|
457
591
|
title: `Long session (${Math.round(durationMin)} minutes)`,
|
|
458
|
-
description: `Session lasted ${Math.round(durationMin)} minutes.
|
|
459
|
-
confidence: 0.
|
|
592
|
+
description: `Session lasted ${Math.round(durationMin)} minutes. Deep work session — review if this duration was productive or indicates a need for better tooling.`,
|
|
593
|
+
confidence: 0.3,
|
|
460
594
|
}));
|
|
461
595
|
}
|
|
462
596
|
}
|
|
463
|
-
// Rule 4: Plan completed
|
|
597
|
+
// Rule 4: Plan completed — moderate confidence to avoid auto-promoting generic entries
|
|
464
598
|
if (session.planId && session.planOutcome === 'completed') {
|
|
465
599
|
rulesApplied.push('plan_completed');
|
|
466
600
|
proposals.push(this.createProposal(sessionId, 'plan_completed', 'workflow', {
|
|
467
601
|
title: `Successful plan: ${session.planId}`,
|
|
468
602
|
description: `Plan ${session.planId} completed successfully. This workflow can be reused for similar tasks.`,
|
|
469
|
-
confidence: 0.
|
|
603
|
+
confidence: 0.65,
|
|
470
604
|
}));
|
|
471
605
|
}
|
|
472
606
|
// Rule 5: Plan abandoned
|
|
@@ -612,6 +746,18 @@ export class BrainIntelligence {
|
|
|
612
746
|
const globalPatterns = this.buildGlobalRegistry(strengths);
|
|
613
747
|
// Step 3: Build domain profiles
|
|
614
748
|
const domainProfiles = this.buildDomainProfiles(strengths);
|
|
749
|
+
// Step 4: Extract operator signals from domain expertise
|
|
750
|
+
try {
|
|
751
|
+
if (this.operatorProfile && strengths.length > 0) {
|
|
752
|
+
const signals = extractFromBrainStrengths(strengths);
|
|
753
|
+
if (signals.length > 0) {
|
|
754
|
+
this.operatorProfile.accumulateSignals(signals);
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
catch {
|
|
759
|
+
// Signal extraction must never break intelligence pipeline
|
|
760
|
+
}
|
|
615
761
|
return {
|
|
616
762
|
strengthsComputed: strengths.length,
|
|
617
763
|
globalPatterns,
|