@soleri/core 2.12.0 → 8.0.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 +128 -0
- package/data/flows/deliver.flow.yaml +110 -0
- package/data/flows/design.flow.yaml +108 -0
- package/data/flows/enhance.flow.yaml +90 -0
- package/data/flows/explore.flow.yaml +84 -0
- package/data/flows/fix.flow.yaml +90 -0
- package/data/flows/plan.flow.yaml +87 -0
- package/data/flows/review.flow.yaml +90 -0
- package/dist/agency/agency-manager.d.ts +27 -1
- package/dist/agency/agency-manager.d.ts.map +1 -1
- package/dist/agency/agency-manager.js +180 -9
- package/dist/agency/agency-manager.js.map +1 -1
- package/dist/agency/default-rules.d.ts +7 -0
- package/dist/agency/default-rules.d.ts.map +1 -0
- package/dist/agency/default-rules.js +79 -0
- package/dist/agency/default-rules.js.map +1 -0
- package/dist/agency/types.d.ts +48 -0
- package/dist/agency/types.d.ts.map +1 -1
- package/dist/brain/brain.d.ts +17 -2
- package/dist/brain/brain.d.ts.map +1 -1
- package/dist/brain/brain.js +118 -8
- package/dist/brain/brain.js.map +1 -1
- package/dist/brain/intelligence.d.ts.map +1 -1
- package/dist/brain/intelligence.js +16 -2
- package/dist/brain/intelligence.js.map +1 -1
- package/dist/brain/knowledge-synthesizer.d.ts +37 -0
- package/dist/brain/knowledge-synthesizer.d.ts.map +1 -0
- package/dist/brain/knowledge-synthesizer.js +161 -0
- package/dist/brain/knowledge-synthesizer.js.map +1 -0
- package/dist/brain/learning-radar.d.ts +96 -0
- package/dist/brain/learning-radar.d.ts.map +1 -0
- package/dist/brain/learning-radar.js +202 -0
- package/dist/brain/learning-radar.js.map +1 -0
- package/dist/brain/types.d.ts +15 -0
- package/dist/brain/types.d.ts.map +1 -1
- package/dist/capabilities/chain-mapping.d.ts +21 -0
- package/dist/capabilities/chain-mapping.d.ts.map +1 -0
- package/dist/capabilities/chain-mapping.js +86 -0
- package/dist/capabilities/chain-mapping.js.map +1 -0
- package/dist/capabilities/index.d.ts +10 -0
- package/dist/capabilities/index.d.ts.map +1 -0
- package/dist/capabilities/index.js +8 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/capabilities/registry.d.ts +95 -0
- package/dist/capabilities/registry.d.ts.map +1 -0
- package/dist/capabilities/registry.js +227 -0
- package/dist/capabilities/registry.js.map +1 -0
- package/dist/capabilities/types.d.ts +106 -0
- package/dist/capabilities/types.d.ts.map +1 -0
- package/dist/capabilities/types.js +12 -0
- package/dist/capabilities/types.js.map +1 -0
- package/dist/context/context-engine.d.ts.map +1 -1
- package/dist/context/context-engine.js +82 -17
- package/dist/context/context-engine.js.map +1 -1
- package/dist/context/types.d.ts +5 -0
- package/dist/context/types.d.ts.map +1 -1
- package/dist/control/intent-router.d.ts +12 -1
- package/dist/control/intent-router.d.ts.map +1 -1
- package/dist/control/intent-router.js +126 -2
- package/dist/control/intent-router.js.map +1 -1
- package/dist/control/types.d.ts +17 -0
- package/dist/control/types.d.ts.map +1 -1
- package/dist/curator/classifier.d.ts +18 -0
- package/dist/curator/classifier.d.ts.map +1 -0
- package/dist/curator/classifier.js +61 -0
- package/dist/curator/classifier.js.map +1 -0
- package/dist/curator/quality-gate.d.ts +29 -0
- package/dist/curator/quality-gate.d.ts.map +1 -0
- package/dist/curator/quality-gate.js +88 -0
- package/dist/curator/quality-gate.js.map +1 -0
- package/dist/domain-packs/index.d.ts +8 -0
- package/dist/domain-packs/index.d.ts.map +1 -0
- package/dist/domain-packs/index.js +8 -0
- package/dist/domain-packs/index.js.map +1 -0
- package/dist/domain-packs/inject-rules.d.ts +24 -0
- package/dist/domain-packs/inject-rules.d.ts.map +1 -0
- package/dist/domain-packs/inject-rules.js +65 -0
- package/dist/domain-packs/inject-rules.js.map +1 -0
- package/dist/domain-packs/knowledge-installer.d.ts +27 -0
- package/dist/domain-packs/knowledge-installer.d.ts.map +1 -0
- package/dist/domain-packs/knowledge-installer.js +89 -0
- package/dist/domain-packs/knowledge-installer.js.map +1 -0
- package/dist/domain-packs/loader.d.ts +28 -0
- package/dist/domain-packs/loader.d.ts.map +1 -0
- package/dist/domain-packs/loader.js +105 -0
- package/dist/domain-packs/loader.js.map +1 -0
- package/dist/domain-packs/pack-runtime.d.ts +80 -0
- package/dist/domain-packs/pack-runtime.d.ts.map +1 -0
- package/dist/domain-packs/pack-runtime.js +36 -0
- package/dist/domain-packs/pack-runtime.js.map +1 -0
- package/dist/domain-packs/skills-installer.d.ts +21 -0
- package/dist/domain-packs/skills-installer.d.ts.map +1 -0
- package/dist/domain-packs/skills-installer.js +38 -0
- package/dist/domain-packs/skills-installer.js.map +1 -0
- package/dist/domain-packs/token-resolver.d.ts +37 -0
- package/dist/domain-packs/token-resolver.d.ts.map +1 -0
- package/dist/domain-packs/token-resolver.js +109 -0
- package/dist/domain-packs/token-resolver.js.map +1 -0
- package/dist/domain-packs/types.d.ts +91 -0
- package/dist/domain-packs/types.d.ts.map +1 -0
- package/dist/domain-packs/types.js +122 -0
- package/dist/domain-packs/types.js.map +1 -0
- package/dist/engine/bin/soleri-engine.d.ts +12 -0
- package/dist/engine/bin/soleri-engine.d.ts.map +1 -0
- package/dist/engine/bin/soleri-engine.js +184 -0
- package/dist/engine/bin/soleri-engine.js.map +1 -0
- package/dist/engine/core-ops.d.ts +27 -0
- package/dist/engine/core-ops.d.ts.map +1 -0
- package/dist/engine/core-ops.js +159 -0
- package/dist/engine/core-ops.js.map +1 -0
- package/dist/engine/index.d.ts +19 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +17 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/engine/register-engine.d.ts +54 -0
- package/dist/engine/register-engine.d.ts.map +1 -0
- package/dist/engine/register-engine.js +270 -0
- package/dist/engine/register-engine.js.map +1 -0
- package/dist/engine/test-helpers.d.ts +30 -0
- package/dist/engine/test-helpers.d.ts.map +1 -0
- package/dist/engine/test-helpers.js +59 -0
- package/dist/engine/test-helpers.js.map +1 -0
- package/dist/events/event-bus.d.ts +30 -0
- package/dist/events/event-bus.d.ts.map +1 -0
- package/dist/events/event-bus.js +51 -0
- package/dist/events/event-bus.js.map +1 -0
- package/dist/flows/chain-runner.d.ts +46 -0
- package/dist/flows/chain-runner.d.ts.map +1 -0
- package/dist/flows/chain-runner.js +271 -0
- package/dist/flows/chain-runner.js.map +1 -0
- package/dist/flows/chain-types.d.ts +103 -0
- package/dist/flows/chain-types.d.ts.map +1 -0
- package/dist/flows/chain-types.js +23 -0
- package/dist/flows/chain-types.js.map +1 -0
- package/dist/flows/context-router.d.ts +39 -0
- package/dist/flows/context-router.d.ts.map +1 -0
- package/dist/flows/context-router.js +206 -0
- package/dist/flows/context-router.js.map +1 -0
- package/dist/flows/dispatch-registry.d.ts +24 -0
- package/dist/flows/dispatch-registry.d.ts.map +1 -0
- package/dist/flows/dispatch-registry.js +70 -0
- package/dist/flows/dispatch-registry.js.map +1 -0
- package/dist/flows/epilogue.d.ts +24 -0
- package/dist/flows/epilogue.d.ts.map +1 -0
- package/dist/flows/epilogue.js +52 -0
- package/dist/flows/epilogue.js.map +1 -0
- package/dist/flows/executor.d.ts +25 -0
- package/dist/flows/executor.d.ts.map +1 -0
- package/dist/flows/executor.js +153 -0
- package/dist/flows/executor.js.map +1 -0
- package/dist/flows/gate-evaluator.d.ts +26 -0
- package/dist/flows/gate-evaluator.d.ts.map +1 -0
- package/dist/flows/gate-evaluator.js +162 -0
- package/dist/flows/gate-evaluator.js.map +1 -0
- package/dist/flows/index.d.ts +14 -0
- package/dist/flows/index.d.ts.map +1 -0
- package/dist/flows/index.js +20 -0
- package/dist/flows/index.js.map +1 -0
- package/dist/flows/loader.d.ts +17 -0
- package/dist/flows/loader.d.ts.map +1 -0
- package/dist/flows/loader.js +61 -0
- package/dist/flows/loader.js.map +1 -0
- package/dist/flows/plan-builder.d.ts +40 -0
- package/dist/flows/plan-builder.d.ts.map +1 -0
- package/dist/flows/plan-builder.js +213 -0
- package/dist/flows/plan-builder.js.map +1 -0
- package/dist/flows/probes.d.ts +11 -0
- package/dist/flows/probes.d.ts.map +1 -0
- package/dist/flows/probes.js +62 -0
- package/dist/flows/probes.js.map +1 -0
- package/dist/flows/types.d.ts +950 -0
- package/dist/flows/types.d.ts.map +1 -0
- package/dist/flows/types.js +105 -0
- package/dist/flows/types.js.map +1 -0
- package/dist/health/doctor-checks.d.ts +15 -0
- package/dist/health/doctor-checks.d.ts.map +1 -0
- package/dist/health/doctor-checks.js +98 -0
- package/dist/health/doctor-checks.js.map +1 -0
- package/dist/index.d.ts +11 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/intake/text-ingester.d.ts +52 -0
- package/dist/intake/text-ingester.d.ts.map +1 -0
- package/dist/intake/text-ingester.js +181 -0
- package/dist/intake/text-ingester.js.map +1 -0
- package/dist/intelligence/loader.d.ts +19 -0
- package/dist/intelligence/loader.d.ts.map +1 -1
- package/dist/intelligence/loader.js +35 -0
- package/dist/intelligence/loader.js.map +1 -1
- package/dist/intelligence/types.d.ts +1 -0
- package/dist/intelligence/types.d.ts.map +1 -1
- package/dist/llm/llm-client.d.ts.map +1 -1
- package/dist/llm/llm-client.js +37 -1
- package/dist/llm/llm-client.js.map +1 -1
- package/dist/llm/oauth-discovery.d.ts +26 -0
- package/dist/llm/oauth-discovery.d.ts.map +1 -0
- package/dist/llm/oauth-discovery.js +149 -0
- package/dist/llm/oauth-discovery.js.map +1 -0
- package/dist/packs/types.d.ts +58 -19
- package/dist/packs/types.d.ts.map +1 -1
- package/dist/packs/types.js +14 -0
- package/dist/packs/types.js.map +1 -1
- package/dist/planning/evidence-collector.d.ts +41 -0
- package/dist/planning/evidence-collector.d.ts.map +1 -0
- package/dist/planning/evidence-collector.js +194 -0
- package/dist/planning/evidence-collector.js.map +1 -0
- package/dist/planning/planner.d.ts +4 -0
- package/dist/planning/planner.d.ts.map +1 -1
- package/dist/planning/planner.js +11 -0
- package/dist/planning/planner.js.map +1 -1
- package/dist/playbooks/generic/onboarding.d.ts +9 -0
- package/dist/playbooks/generic/onboarding.d.ts.map +1 -0
- package/dist/playbooks/generic/onboarding.js +74 -0
- package/dist/playbooks/generic/onboarding.js.map +1 -0
- package/dist/playbooks/playbook-registry.d.ts.map +1 -1
- package/dist/playbooks/playbook-registry.js +2 -0
- package/dist/playbooks/playbook-registry.js.map +1 -1
- package/dist/queue/job-queue.d.ts +92 -0
- package/dist/queue/job-queue.d.ts.map +1 -0
- package/dist/queue/job-queue.js +180 -0
- package/dist/queue/job-queue.js.map +1 -0
- package/dist/queue/pipeline-runner.d.ts +62 -0
- package/dist/queue/pipeline-runner.d.ts.map +1 -0
- package/dist/queue/pipeline-runner.js +126 -0
- package/dist/queue/pipeline-runner.js.map +1 -0
- package/dist/runtime/admin-extra-ops.d.ts.map +1 -1
- package/dist/runtime/admin-extra-ops.js +15 -9
- package/dist/runtime/admin-extra-ops.js.map +1 -1
- package/dist/runtime/admin-ops.js +4 -4
- package/dist/runtime/admin-ops.js.map +1 -1
- package/dist/runtime/admin-setup-ops.d.ts +20 -0
- package/dist/runtime/admin-setup-ops.d.ts.map +1 -0
- package/dist/runtime/admin-setup-ops.js +583 -0
- package/dist/runtime/admin-setup-ops.js.map +1 -0
- package/dist/runtime/capture-ops.d.ts.map +1 -1
- package/dist/runtime/capture-ops.js +33 -1
- package/dist/runtime/capture-ops.js.map +1 -1
- package/dist/runtime/chain-ops.d.ts +9 -0
- package/dist/runtime/chain-ops.d.ts.map +1 -0
- package/dist/runtime/chain-ops.js +107 -0
- package/dist/runtime/chain-ops.js.map +1 -0
- package/dist/runtime/claude-md-helpers.d.ts +65 -0
- package/dist/runtime/claude-md-helpers.d.ts.map +1 -0
- package/dist/runtime/claude-md-helpers.js +173 -0
- package/dist/runtime/claude-md-helpers.js.map +1 -0
- package/dist/runtime/curator-extra-ops.d.ts +3 -2
- package/dist/runtime/curator-extra-ops.d.ts.map +1 -1
- package/dist/runtime/curator-extra-ops.js +81 -3
- package/dist/runtime/curator-extra-ops.js.map +1 -1
- package/dist/runtime/domain-ops.d.ts +21 -5
- package/dist/runtime/domain-ops.d.ts.map +1 -1
- package/dist/runtime/domain-ops.js +64 -6
- package/dist/runtime/domain-ops.js.map +1 -1
- package/dist/runtime/facades/admin-facade.d.ts.map +1 -1
- package/dist/runtime/facades/admin-facade.js +4 -0
- package/dist/runtime/facades/admin-facade.js.map +1 -1
- package/dist/runtime/facades/agency-facade.d.ts.map +1 -1
- package/dist/runtime/facades/agency-facade.js +64 -0
- package/dist/runtime/facades/agency-facade.js.map +1 -1
- package/dist/runtime/facades/brain-facade.d.ts.map +1 -1
- package/dist/runtime/facades/brain-facade.js +122 -1
- package/dist/runtime/facades/brain-facade.js.map +1 -1
- package/dist/runtime/facades/cognee-facade.d.ts.map +1 -1
- package/dist/runtime/facades/cognee-facade.js +3 -1
- package/dist/runtime/facades/cognee-facade.js.map +1 -1
- package/dist/runtime/facades/control-facade.d.ts.map +1 -1
- package/dist/runtime/facades/control-facade.js +42 -0
- 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 +10 -6
- package/dist/runtime/facades/index.js.map +1 -1
- package/dist/runtime/facades/memory-facade.d.ts.map +1 -1
- package/dist/runtime/facades/memory-facade.js +20 -2
- package/dist/runtime/facades/memory-facade.js.map +1 -1
- package/dist/runtime/facades/plan-facade.d.ts.map +1 -1
- package/dist/runtime/facades/plan-facade.js +2 -0
- package/dist/runtime/facades/plan-facade.js.map +1 -1
- package/dist/runtime/facades/vault-facade.d.ts.map +1 -1
- package/dist/runtime/facades/vault-facade.js +27 -5
- package/dist/runtime/facades/vault-facade.js.map +1 -1
- package/dist/runtime/intake-ops.d.ts +7 -5
- package/dist/runtime/intake-ops.d.ts.map +1 -1
- package/dist/runtime/intake-ops.js +98 -5
- package/dist/runtime/intake-ops.js.map +1 -1
- package/dist/runtime/memory-extra-ops.d.ts +6 -3
- package/dist/runtime/memory-extra-ops.d.ts.map +1 -1
- package/dist/runtime/memory-extra-ops.js +292 -4
- package/dist/runtime/memory-extra-ops.js.map +1 -1
- package/dist/runtime/orchestrate-ops.d.ts +8 -7
- package/dist/runtime/orchestrate-ops.d.ts.map +1 -1
- package/dist/runtime/orchestrate-ops.js +217 -61
- 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 +85 -0
- package/dist/runtime/planning-extra-ops.js.map +1 -1
- package/dist/runtime/playbook-ops.js +1 -1
- package/dist/runtime/playbook-ops.js.map +1 -1
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +165 -18
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/session-briefing.d.ts +23 -0
- package/dist/runtime/session-briefing.d.ts.map +1 -0
- package/dist/runtime/session-briefing.js +140 -0
- package/dist/runtime/session-briefing.js.map +1 -0
- package/dist/runtime/types.d.ts +29 -2
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/vault-linking-ops.d.ts +13 -0
- package/dist/runtime/vault-linking-ops.d.ts.map +1 -0
- package/dist/runtime/vault-linking-ops.js +365 -0
- package/dist/runtime/vault-linking-ops.js.map +1 -0
- package/dist/vault/linking.d.ts +46 -0
- package/dist/vault/linking.d.ts.map +1 -0
- package/dist/vault/linking.js +275 -0
- package/dist/vault/linking.js.map +1 -0
- package/dist/vault/vault-types.d.ts +37 -0
- package/dist/vault/vault-types.d.ts.map +1 -1
- package/dist/vault/vault.d.ts +37 -0
- package/dist/vault/vault.d.ts.map +1 -1
- package/dist/vault/vault.js +152 -9
- package/dist/vault/vault.js.map +1 -1
- package/package.json +4 -1
- package/src/__tests__/admin-extra-ops.test.ts +1 -1
- package/src/__tests__/admin-ops.test.ts +2 -1
- package/src/__tests__/admin-setup-ops.test.ts +355 -0
- package/src/__tests__/async-infrastructure.test.ts +307 -0
- package/src/__tests__/cognee-client-gaps.test.ts +474 -0
- package/src/__tests__/cognee-hybrid-search.test.ts +492 -0
- package/src/__tests__/cognee-sync-manager-deep.test.ts +654 -0
- package/src/__tests__/cognee-sync-manager.test.ts +1 -0
- package/src/__tests__/core-ops.test.ts +9 -61
- package/src/__tests__/curator-extra-ops.test.ts +6 -2
- package/src/__tests__/curator-pipeline-e2e.test.ts +358 -0
- package/src/__tests__/domain-packs.test.ts +421 -0
- package/src/__tests__/flows.test.ts +604 -0
- package/src/__tests__/memory-extra-ops.test.ts +2 -2
- package/src/__tests__/planning-extra-ops.test.ts +2 -2
- package/src/__tests__/playbook-registry.test.ts +2 -2
- package/src/__tests__/playbook-seeder.test.ts +8 -8
- package/src/__tests__/playbook.test.ts +5 -5
- package/src/__tests__/second-brain-features.test.ts +583 -0
- package/src/__tests__/token-resolver.test.ts +79 -0
- package/src/agency/agency-manager.ts +217 -9
- package/src/agency/default-rules.ts +83 -0
- package/src/agency/types.ts +61 -0
- package/src/brain/brain.ts +110 -8
- package/src/brain/intelligence.ts +21 -2
- package/src/brain/knowledge-synthesizer.ts +218 -0
- package/src/brain/learning-radar.ts +340 -0
- package/src/brain/types.ts +16 -0
- package/src/capabilities/chain-mapping.ts +93 -0
- package/src/capabilities/index.ts +21 -0
- package/src/capabilities/registry.ts +290 -0
- package/src/capabilities/types.ts +143 -0
- package/src/context/context-engine.ts +114 -15
- package/src/context/types.ts +5 -0
- package/src/control/intent-router.ts +153 -2
- package/src/control/types.ts +10 -0
- package/src/curator/classifier.ts +88 -0
- package/src/curator/quality-gate.ts +129 -0
- package/src/domain-packs/index.ts +27 -0
- package/src/domain-packs/inject-rules.ts +74 -0
- package/src/domain-packs/knowledge-installer.ts +116 -0
- package/src/domain-packs/loader.ts +124 -0
- package/src/domain-packs/pack-runtime.ts +99 -0
- package/src/domain-packs/skills-installer.ts +56 -0
- package/src/domain-packs/token-resolver.ts +126 -0
- package/src/domain-packs/types.ts +229 -0
- package/src/engine/__tests__/register-engine.test.ts +104 -0
- package/src/engine/bin/soleri-engine.ts +218 -0
- package/src/engine/core-ops.ts +178 -0
- package/src/engine/index.ts +19 -0
- package/src/engine/register-engine.ts +385 -0
- package/src/engine/test-helpers.ts +83 -0
- package/src/events/event-bus.ts +58 -0
- package/src/flows/chain-runner.ts +369 -0
- package/src/flows/chain-types.ts +57 -0
- package/src/flows/context-router.ts +257 -0
- package/src/flows/dispatch-registry.ts +80 -0
- package/src/flows/epilogue.ts +65 -0
- package/src/flows/executor.ts +182 -0
- package/src/flows/gate-evaluator.ts +171 -0
- package/src/flows/index.ts +52 -0
- package/src/flows/loader.ts +63 -0
- package/src/flows/plan-builder.ts +250 -0
- package/src/flows/probes.ts +70 -0
- package/src/flows/types.ts +217 -0
- package/src/health/doctor-checks.ts +115 -0
- package/src/index.ts +68 -1
- package/src/intake/text-ingester.ts +234 -0
- package/src/intelligence/loader.ts +38 -0
- package/src/intelligence/types.ts +1 -0
- package/src/llm/llm-client.ts +38 -1
- package/src/llm/oauth-discovery.ts +169 -0
- package/src/packs/types.ts +19 -0
- package/src/planning/evidence-collector.ts +247 -0
- package/src/planning/planner.ts +11 -0
- package/src/playbooks/generic/onboarding.ts +79 -0
- package/src/playbooks/playbook-registry.ts +2 -0
- package/src/queue/job-queue.ts +281 -0
- package/src/queue/pipeline-runner.ts +149 -0
- package/src/runtime/admin-extra-ops.ts +14 -8
- package/src/runtime/admin-ops.ts +4 -4
- package/src/runtime/admin-setup-ops.ts +664 -0
- package/src/runtime/capture-ops.ts +40 -1
- package/src/runtime/chain-ops.ts +121 -0
- package/src/runtime/claude-md-helpers.ts +236 -0
- package/src/runtime/curator-extra-ops.ts +86 -3
- package/src/runtime/domain-ops.ts +71 -5
- package/src/runtime/facades/admin-facade.ts +4 -0
- package/src/runtime/facades/agency-facade.ts +68 -0
- package/src/runtime/facades/brain-facade.ts +142 -1
- package/src/runtime/facades/cognee-facade.ts +3 -1
- package/src/runtime/facades/control-facade.ts +45 -0
- package/src/runtime/facades/index.ts +12 -6
- package/src/runtime/facades/memory-facade.ts +20 -2
- package/src/runtime/facades/plan-facade.ts +2 -0
- package/src/runtime/facades/vault-facade.ts +30 -5
- package/src/runtime/intake-ops.ts +107 -5
- package/src/runtime/memory-extra-ops.ts +312 -4
- package/src/runtime/orchestrate-ops.ts +261 -65
- package/src/runtime/planning-extra-ops.ts +94 -0
- package/src/runtime/playbook-ops.ts +1 -1
- package/src/runtime/runtime.ts +164 -19
- package/src/runtime/session-briefing.ts +161 -0
- package/src/runtime/types.ts +29 -2
- package/src/runtime/vault-linking-ops.ts +452 -0
- package/src/vault/linking.ts +333 -0
- package/src/vault/vault-types.ts +46 -0
- package/src/vault/vault.ts +173 -11
package/src/runtime/runtime.ts
CHANGED
|
@@ -19,10 +19,12 @@ import { LoopManager } from '../loop/loop-manager.js';
|
|
|
19
19
|
import { IdentityManager } from '../control/identity-manager.js';
|
|
20
20
|
import { IntentRouter } from '../control/intent-router.js';
|
|
21
21
|
import { KeyPool, loadKeyPoolConfig } from '../llm/key-pool.js';
|
|
22
|
+
import { discoverAnthropicToken } from '../llm/oauth-discovery.js';
|
|
22
23
|
import { loadIntelligenceData } from '../intelligence/loader.js';
|
|
23
24
|
import { LLMClient } from '../llm/llm-client.js';
|
|
24
25
|
import { CogneeSyncManager } from '../cognee/sync-manager.js';
|
|
25
26
|
import { IntakePipeline } from '../intake/intake-pipeline.js';
|
|
27
|
+
import { TextIngester } from '../intake/text-ingester.js';
|
|
26
28
|
import { Telemetry } from '../telemetry/telemetry.js';
|
|
27
29
|
import { ProjectRegistry } from '../project/project-registry.js';
|
|
28
30
|
import { TemplateManager } from '../prompts/template-manager.js';
|
|
@@ -39,6 +41,14 @@ import { VaultBranching } from '../vault/vault-branching.js';
|
|
|
39
41
|
import { ContextEngine } from '../context/context-engine.js';
|
|
40
42
|
import { AgencyManager } from '../agency/agency-manager.js';
|
|
41
43
|
import { KnowledgeReview } from '../vault/knowledge-review.js';
|
|
44
|
+
import { LinkManager } from '../vault/linking.js';
|
|
45
|
+
import { LearningRadar } from '../brain/learning-radar.js';
|
|
46
|
+
import { KnowledgeSynthesizer } from '../brain/knowledge-synthesizer.js';
|
|
47
|
+
import { ChainRunner } from '../flows/chain-runner.js';
|
|
48
|
+
import { JobQueue } from '../queue/job-queue.js';
|
|
49
|
+
import { PipelineRunner } from '../queue/pipeline-runner.js';
|
|
50
|
+
import { evaluateQuality } from '../curator/quality-gate.js';
|
|
51
|
+
import { classifyEntry } from '../curator/classifier.js';
|
|
42
52
|
import type { AgentRuntimeConfig, AgentRuntime } from './types.js';
|
|
43
53
|
|
|
44
54
|
/**
|
|
@@ -85,21 +95,25 @@ export function createAgentRuntime(config: AgentRuntimeConfig): AgentRuntime {
|
|
|
85
95
|
// Planner — multi-step task tracking
|
|
86
96
|
const planner = new Planner(plansPath);
|
|
87
97
|
|
|
88
|
-
// Cognee — vector search client (graceful degradation if Cognee is down)
|
|
89
|
-
|
|
90
|
-
if (
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
98
|
+
// Cognee — vector search client (opt-in, graceful degradation if Cognee is down)
|
|
99
|
+
let cognee: CogneeClient | null = null;
|
|
100
|
+
if (config.cognee) {
|
|
101
|
+
const cogneePartial: Partial<import('../cognee/types.js').CogneeConfig> = { dataset: agentId };
|
|
102
|
+
if (process.env.COGNEE_BASE_URL) cogneePartial.baseUrl = process.env.COGNEE_BASE_URL;
|
|
103
|
+
if (process.env.COGNEE_API_TOKEN) cogneePartial.apiToken = process.env.COGNEE_API_TOKEN;
|
|
104
|
+
if (process.env.COGNEE_DATASET) cogneePartial.dataset = process.env.COGNEE_DATASET;
|
|
105
|
+
cognee = new CogneeClient(cogneePartial);
|
|
106
|
+
}
|
|
94
107
|
|
|
95
108
|
// Brain — intelligence layer (TF-IDF scoring, auto-tagging, dedup)
|
|
96
|
-
|
|
109
|
+
// Pass vaultManager so intelligentSearch queries all connected sources (not just agent tier)
|
|
110
|
+
const brain = new Brain(vault, cognee ?? undefined, vaultManager);
|
|
97
111
|
|
|
98
112
|
// Brain Intelligence — pattern strengths, session knowledge, intelligence pipeline
|
|
99
113
|
const brainIntelligence = new BrainIntelligence(vault, brain);
|
|
100
114
|
|
|
101
115
|
// Curator — vault self-maintenance (dedup, contradictions, grooming, health)
|
|
102
|
-
const curator = new Curator(vault, cognee);
|
|
116
|
+
const curator = new Curator(vault, cognee ?? undefined);
|
|
103
117
|
|
|
104
118
|
// Governance — policy engine + proposal tracker for gated knowledge capture
|
|
105
119
|
const governance = new Governance(vault);
|
|
@@ -127,21 +141,35 @@ export function createAgentRuntime(config: AgentRuntimeConfig): AgentRuntime {
|
|
|
127
141
|
}
|
|
128
142
|
|
|
129
143
|
// LLM key pools and client
|
|
144
|
+
// Try OAuth token discovery for Anthropic (Claude Code subscription → free API access)
|
|
130
145
|
const keyPoolFiles = loadKeyPoolConfig(agentId);
|
|
146
|
+
const oauthToken = discoverAnthropicToken();
|
|
147
|
+
const anthropicConfig = keyPoolFiles.anthropic;
|
|
148
|
+
if (oauthToken && anthropicConfig.keys.length === 0) {
|
|
149
|
+
anthropicConfig.keys.push(oauthToken);
|
|
150
|
+
}
|
|
131
151
|
const openaiKeyPool = new KeyPool(keyPoolFiles.openai);
|
|
132
|
-
const anthropicKeyPool = new KeyPool(
|
|
152
|
+
const anthropicKeyPool = new KeyPool(anthropicConfig);
|
|
133
153
|
const llmClient = new LLMClient(openaiKeyPool, anthropicKeyPool, agentId);
|
|
134
154
|
|
|
135
|
-
// Cognee Sync Manager — queue-based dirty tracking with offline resilience
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
155
|
+
// Cognee Sync Manager — queue-based dirty tracking with offline resilience (only when Cognee enabled)
|
|
156
|
+
let syncManager: CogneeSyncManager | null = null;
|
|
157
|
+
if (cognee) {
|
|
158
|
+
syncManager = new CogneeSyncManager(
|
|
159
|
+
vault.getProvider(),
|
|
160
|
+
cognee,
|
|
161
|
+
process.env.COGNEE_DATASET ?? agentId,
|
|
162
|
+
);
|
|
163
|
+
vault.setSyncManager(syncManager);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Link Manager — Zettelkasten auto-linking on vault ingestion
|
|
167
|
+
const linkManager = new LinkManager(vault.getProvider());
|
|
168
|
+
vault.setLinkManager(linkManager, { enabled: true, maxLinks: 3 });
|
|
142
169
|
|
|
143
170
|
// Intake Pipeline — PDF/book ingestion with LLM classification
|
|
144
171
|
const intakePipeline = new IntakePipeline(vault.getProvider(), vault, llmClient);
|
|
172
|
+
const textIngester = new TextIngester(vault, llmClient);
|
|
145
173
|
|
|
146
174
|
// Playbook Executor — in-memory step-by-step workflow sessions
|
|
147
175
|
const playbookExecutor = new PlaybookExecutor();
|
|
@@ -168,7 +196,10 @@ export function createAgentRuntime(config: AgentRuntimeConfig): AgentRuntime {
|
|
|
168
196
|
const health = new HealthRegistry();
|
|
169
197
|
health.register('vault', 'healthy');
|
|
170
198
|
health.register('brain', 'healthy');
|
|
171
|
-
health.register(
|
|
199
|
+
health.register(
|
|
200
|
+
'cognee',
|
|
201
|
+
cognee ? (cognee.getStatus()?.available ? 'healthy' : 'degraded') : 'down',
|
|
202
|
+
);
|
|
172
203
|
health.register(
|
|
173
204
|
'llm',
|
|
174
205
|
llmClient.isAvailable().openai || llmClient.isAvailable().anthropic ? 'healthy' : 'degraded',
|
|
@@ -208,6 +239,7 @@ export function createAgentRuntime(config: AgentRuntimeConfig): AgentRuntime {
|
|
|
208
239
|
templateManager,
|
|
209
240
|
syncManager,
|
|
210
241
|
intakePipeline,
|
|
242
|
+
textIngester,
|
|
211
243
|
authPolicy: { mode: 'permissive', callerLevel: 'admin' },
|
|
212
244
|
flags: new FeatureFlags(join(agentHome, 'flags.json')),
|
|
213
245
|
health,
|
|
@@ -219,10 +251,123 @@ export function createAgentRuntime(config: AgentRuntimeConfig): AgentRuntime {
|
|
|
219
251
|
contextEngine,
|
|
220
252
|
agencyManager,
|
|
221
253
|
knowledgeReview,
|
|
254
|
+
linkManager,
|
|
255
|
+
learningRadar: new LearningRadar(vault, brain),
|
|
256
|
+
knowledgeSynthesizer: new KnowledgeSynthesizer(brain, llmClient),
|
|
257
|
+
chainRunner: new ChainRunner(vault.getProvider()),
|
|
258
|
+
jobQueue: new JobQueue(vault.getProvider()),
|
|
259
|
+
pipelineRunner: (() => {
|
|
260
|
+
const jq = new JobQueue(vault.getProvider());
|
|
261
|
+
const pr = new PipelineRunner(jq);
|
|
262
|
+
// Register default job handlers for curator pipeline
|
|
263
|
+
pr.registerHandler('tag-normalize', async (job) => {
|
|
264
|
+
const entry = vault.get(job.entryId ?? '');
|
|
265
|
+
if (!entry) return { skipped: true, reason: 'entry not found' };
|
|
266
|
+
const result = curator.normalizeTag(entry.tags[0] ?? '');
|
|
267
|
+
return result;
|
|
268
|
+
});
|
|
269
|
+
pr.registerHandler('dedup-check', async (job) => {
|
|
270
|
+
const entry = vault.get(job.entryId ?? '');
|
|
271
|
+
if (!entry) return { skipped: true, reason: 'entry not found' };
|
|
272
|
+
return curator.detectDuplicates(entry.id);
|
|
273
|
+
});
|
|
274
|
+
pr.registerHandler('auto-link', async (job) => {
|
|
275
|
+
if (linkManager) {
|
|
276
|
+
const suggestions = linkManager.suggestLinks(job.entryId ?? '', 3);
|
|
277
|
+
for (const s of suggestions) {
|
|
278
|
+
linkManager.addLink(
|
|
279
|
+
job.entryId ?? '',
|
|
280
|
+
s.entryId,
|
|
281
|
+
s.suggestedType,
|
|
282
|
+
`pipeline: ${s.reason}`,
|
|
283
|
+
);
|
|
284
|
+
}
|
|
285
|
+
return { linked: suggestions.length };
|
|
286
|
+
}
|
|
287
|
+
return { skipped: true, reason: 'link manager not available' };
|
|
288
|
+
});
|
|
289
|
+
pr.registerHandler('quality-gate', async (job) => {
|
|
290
|
+
const entry = vault.get(job.entryId ?? '');
|
|
291
|
+
if (!entry) return { skipped: true, reason: 'entry not found' };
|
|
292
|
+
return evaluateQuality(entry, llmClient);
|
|
293
|
+
});
|
|
294
|
+
pr.registerHandler('classify', async (job) => {
|
|
295
|
+
const entry = vault.get(job.entryId ?? '');
|
|
296
|
+
if (!entry) return { skipped: true, reason: 'entry not found' };
|
|
297
|
+
return classifyEntry(entry, llmClient);
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
// ─── 9 additional handlers for full Salvador parity (#216) ────
|
|
301
|
+
pr.registerHandler('enrich-frontmatter', async (job) => {
|
|
302
|
+
const entry = vault.get(job.entryId ?? '');
|
|
303
|
+
if (!entry) return { skipped: true, reason: 'entry not found' };
|
|
304
|
+
return curator.enrichMetadata(entry.id);
|
|
305
|
+
});
|
|
306
|
+
pr.registerHandler('detect-staleness', async (job) => {
|
|
307
|
+
const entry = vault.get(job.entryId ?? '');
|
|
308
|
+
if (!entry) return { skipped: true, reason: 'entry not found' };
|
|
309
|
+
// Check if entry is older than 90 days (using validFrom or fallback to 0)
|
|
310
|
+
const entryTimestamp = (entry.validFrom ?? 0) * 1000 || Date.now();
|
|
311
|
+
const ageMs = Date.now() - entryTimestamp;
|
|
312
|
+
const staleDays = 90;
|
|
313
|
+
const isStale = ageMs > staleDays * 86400000;
|
|
314
|
+
return { stale: isStale, ageDays: Math.floor(ageMs / 86400000), entryId: entry.id };
|
|
315
|
+
});
|
|
316
|
+
pr.registerHandler('detect-duplicate', async (job) => {
|
|
317
|
+
const entry = vault.get(job.entryId ?? '');
|
|
318
|
+
if (!entry) return { skipped: true, reason: 'entry not found' };
|
|
319
|
+
return curator.detectDuplicates(entry.id);
|
|
320
|
+
});
|
|
321
|
+
pr.registerHandler('detect-contradiction', async (job) => {
|
|
322
|
+
const entry = vault.get(job.entryId ?? '');
|
|
323
|
+
if (!entry) return { skipped: true, reason: 'entry not found' };
|
|
324
|
+
const contradictions = curator.detectContradictions(0.4);
|
|
325
|
+
const relevant = contradictions.filter(
|
|
326
|
+
(c) => c.patternId === job.entryId || c.antipatternId === job.entryId,
|
|
327
|
+
);
|
|
328
|
+
return { found: relevant.length, contradictions: relevant };
|
|
329
|
+
});
|
|
330
|
+
pr.registerHandler('consolidate-duplicates', async (_job) => {
|
|
331
|
+
return curator.consolidate({ dryRun: false, staleDaysThreshold: 90 });
|
|
332
|
+
});
|
|
333
|
+
pr.registerHandler('archive-stale', async (_job) => {
|
|
334
|
+
// Run consolidation with stale detection
|
|
335
|
+
const result = curator.consolidate({ dryRun: false, staleDaysThreshold: 90 });
|
|
336
|
+
return { archived: result.staleEntries.length, result };
|
|
337
|
+
});
|
|
338
|
+
pr.registerHandler('cognee-ingest', async (job) => {
|
|
339
|
+
if (!cognee) return { skipped: true, reason: 'cognee not available' };
|
|
340
|
+
const entry = vault.get(job.entryId ?? '');
|
|
341
|
+
if (!entry) return { skipped: true, reason: 'entry not found' };
|
|
342
|
+
try {
|
|
343
|
+
const result = await cognee.addEntries([entry]);
|
|
344
|
+
return { ingested: result.added };
|
|
345
|
+
} catch {
|
|
346
|
+
return { skipped: true, reason: 'cognee ingestion failed' };
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
pr.registerHandler('cognee-cognify', async (_job) => {
|
|
350
|
+
if (!cognee) return { skipped: true, reason: 'cognee not available' };
|
|
351
|
+
try {
|
|
352
|
+
const result = await cognee.cognify();
|
|
353
|
+
return result;
|
|
354
|
+
} catch {
|
|
355
|
+
return { skipped: true, reason: 'cognee cognify failed' };
|
|
356
|
+
}
|
|
357
|
+
});
|
|
358
|
+
pr.registerHandler('verify-searchable', async (job) => {
|
|
359
|
+
const entry = vault.get(job.entryId ?? '');
|
|
360
|
+
if (!entry) return { skipped: true, reason: 'entry not found' };
|
|
361
|
+
const searchResults = vault.search(entry.title, { limit: 1 });
|
|
362
|
+
const found = searchResults.some((r) => r.entry.id === entry.id);
|
|
363
|
+
return { searchable: found, entryId: entry.id };
|
|
364
|
+
});
|
|
365
|
+
return pr;
|
|
366
|
+
})(),
|
|
222
367
|
createdAt: Date.now(),
|
|
223
368
|
close: () => {
|
|
224
|
-
syncManager
|
|
225
|
-
cognee
|
|
369
|
+
syncManager?.close();
|
|
370
|
+
cognee?.resetPendingCognify();
|
|
226
371
|
vaultManager.close();
|
|
227
372
|
},
|
|
228
373
|
};
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Briefing — proactive context loading on session start.
|
|
3
|
+
*
|
|
4
|
+
* Gathers data from all subsystems (sessions, plans, vault, brain, curator)
|
|
5
|
+
* and produces a concise, structured briefing for the agent.
|
|
6
|
+
*
|
|
7
|
+
* Design: gather all data in parallel, skip sections with nothing to report.
|
|
8
|
+
* Target: < 15 lines of output, < 3 seconds latency.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
import type { OpDefinition } from '../facades/types.js';
|
|
13
|
+
import type { AgentRuntime } from './types.js';
|
|
14
|
+
|
|
15
|
+
export interface BriefingSection {
|
|
16
|
+
label: string;
|
|
17
|
+
content: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface SessionBriefing {
|
|
21
|
+
sections: BriefingSection[];
|
|
22
|
+
generatedAt: number;
|
|
23
|
+
/** Total entries consulted across all data sources. */
|
|
24
|
+
dataPointsConsulted: number;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function createSessionBriefingOps(runtime: AgentRuntime): OpDefinition[] {
|
|
28
|
+
const { brainIntelligence, planner, vault, curator } = runtime;
|
|
29
|
+
|
|
30
|
+
return [
|
|
31
|
+
{
|
|
32
|
+
name: 'session_briefing',
|
|
33
|
+
description:
|
|
34
|
+
'Proactive session briefing — gathers last session, active plans, recent vault captures, brain recommendations, and stale knowledge warnings into a concise summary.',
|
|
35
|
+
auth: 'read',
|
|
36
|
+
schema: z.object({
|
|
37
|
+
maxSections: z.number().optional().default(6).describe('Max sections to include'),
|
|
38
|
+
recencyHours: z.number().optional().default(48).describe('Look back window in hours'),
|
|
39
|
+
}),
|
|
40
|
+
handler: async (params) => {
|
|
41
|
+
const maxSections = params.maxSections as number;
|
|
42
|
+
const sections: BriefingSection[] = [];
|
|
43
|
+
let dataPoints = 0;
|
|
44
|
+
|
|
45
|
+
// 1. Last session
|
|
46
|
+
try {
|
|
47
|
+
const sessions = brainIntelligence.listSessions({ limit: 1, active: false });
|
|
48
|
+
dataPoints += sessions.length;
|
|
49
|
+
if (sessions.length > 0) {
|
|
50
|
+
const last = sessions[0];
|
|
51
|
+
const ago = formatTimeAgo(last.endedAt ? new Date(last.endedAt).getTime() : Date.now());
|
|
52
|
+
const domain = last.domain ? ` [${last.domain}]` : '';
|
|
53
|
+
const context = last.context ? `: ${last.context.slice(0, 80)}` : '';
|
|
54
|
+
const tools = last.toolsUsed.length > 0 ? `, used ${last.toolsUsed.length} tools` : '';
|
|
55
|
+
const files =
|
|
56
|
+
last.filesModified.length > 0 ? `, modified ${last.filesModified.length} files` : '';
|
|
57
|
+
sections.push({
|
|
58
|
+
label: 'Last session',
|
|
59
|
+
content: `(${ago})${domain}${context}${tools}${files}`,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
} catch {
|
|
63
|
+
// Session data unavailable — skip
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// 2. Active plans
|
|
67
|
+
try {
|
|
68
|
+
const plans = planner.list();
|
|
69
|
+
const active = plans.filter(
|
|
70
|
+
(p) =>
|
|
71
|
+
p.status === 'executing' ||
|
|
72
|
+
p.status === 'approved' ||
|
|
73
|
+
p.status === 'reconciling' ||
|
|
74
|
+
p.status === 'validating',
|
|
75
|
+
);
|
|
76
|
+
dataPoints += plans.length;
|
|
77
|
+
if (active.length > 0) {
|
|
78
|
+
const summaries = active.map((p) => {
|
|
79
|
+
const tasksDone = p.tasks.filter((t) => t.status === 'completed').length;
|
|
80
|
+
return `${p.objective?.slice(0, 40) || p.id} (${p.status}, ${tasksDone}/${p.tasks.length} tasks)`;
|
|
81
|
+
});
|
|
82
|
+
sections.push({
|
|
83
|
+
label: active.length === 1 ? 'Active plan' : `Active plans (${active.length})`,
|
|
84
|
+
content: summaries.join('; '),
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
} catch {
|
|
88
|
+
// Planner unavailable — skip
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// 3. Recent vault captures
|
|
92
|
+
try {
|
|
93
|
+
const recent = vault.getRecent(10);
|
|
94
|
+
dataPoints += recent.length;
|
|
95
|
+
if (recent.length > 0) {
|
|
96
|
+
const count = Math.min(recent.length, 5);
|
|
97
|
+
const titles = recent.slice(0, 3).map((e) => e.title.slice(0, 50));
|
|
98
|
+
sections.push({
|
|
99
|
+
label: 'Recent captures',
|
|
100
|
+
content: `${count} entries — ${titles.join(', ')}${count > 3 ? '...' : ''}`,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
} catch {
|
|
104
|
+
// Vault unavailable — skip
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// 4. Brain recommendations
|
|
108
|
+
try {
|
|
109
|
+
const recs = brainIntelligence.recommend({ limit: 3 });
|
|
110
|
+
dataPoints += recs.length;
|
|
111
|
+
if (recs.length > 0) {
|
|
112
|
+
const items = recs.map((r) => `"${r.pattern}" (strength: ${r.strength.toFixed(2)})`);
|
|
113
|
+
sections.push({
|
|
114
|
+
label: 'Brain recommends',
|
|
115
|
+
content: items.join(', '),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
} catch {
|
|
119
|
+
// Brain unavailable — skip
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// 5. Stale knowledge / health warnings
|
|
123
|
+
try {
|
|
124
|
+
const health = curator.healthAudit();
|
|
125
|
+
dataPoints += 1;
|
|
126
|
+
const warnings: string[] = [];
|
|
127
|
+
if (health.score < 70) {
|
|
128
|
+
warnings.push(`vault health: ${health.score}/100`);
|
|
129
|
+
}
|
|
130
|
+
if (health.recommendations && health.recommendations.length > 0) {
|
|
131
|
+
warnings.push(health.recommendations[0]);
|
|
132
|
+
}
|
|
133
|
+
if (warnings.length > 0) {
|
|
134
|
+
sections.push({
|
|
135
|
+
label: 'Attention',
|
|
136
|
+
content: warnings.join('. '),
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
} catch {
|
|
140
|
+
// Curator unavailable — skip
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
return {
|
|
144
|
+
sections: sections.slice(0, maxSections),
|
|
145
|
+
generatedAt: Date.now(),
|
|
146
|
+
dataPointsConsulted: dataPoints,
|
|
147
|
+
} satisfies SessionBriefing;
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
];
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function formatTimeAgo(timestamp: number): string {
|
|
154
|
+
const diff = Date.now() - timestamp;
|
|
155
|
+
const minutes = Math.floor(diff / 60000);
|
|
156
|
+
if (minutes < 60) return `${minutes}m ago`;
|
|
157
|
+
const hours = Math.floor(minutes / 60);
|
|
158
|
+
if (hours < 24) return `${hours}h ago`;
|
|
159
|
+
const days = Math.floor(hours / 24);
|
|
160
|
+
return `${days}d ago`;
|
|
161
|
+
}
|
package/src/runtime/types.ts
CHANGED
|
@@ -28,6 +28,13 @@ import type { VaultBranching } from '../vault/vault-branching.js';
|
|
|
28
28
|
import type { ContextEngine } from '../context/context-engine.js';
|
|
29
29
|
import type { AgencyManager } from '../agency/agency-manager.js';
|
|
30
30
|
import type { KnowledgeReview } from '../vault/knowledge-review.js';
|
|
31
|
+
import type { LinkManager } from '../vault/linking.js';
|
|
32
|
+
import type { LearningRadar } from '../brain/learning-radar.js';
|
|
33
|
+
import type { TextIngester } from '../intake/text-ingester.js';
|
|
34
|
+
import type { KnowledgeSynthesizer } from '../brain/knowledge-synthesizer.js';
|
|
35
|
+
import type { ChainRunner } from '../flows/chain-runner.js';
|
|
36
|
+
import type { JobQueue } from '../queue/job-queue.js';
|
|
37
|
+
import type { PipelineRunner } from '../queue/pipeline-runner.js';
|
|
31
38
|
|
|
32
39
|
/**
|
|
33
40
|
* Configuration for creating an agent runtime.
|
|
@@ -48,6 +55,10 @@ export interface AgentRuntimeConfig {
|
|
|
48
55
|
logLevel?: LogLevel;
|
|
49
56
|
/** Path to shared global vault. Default: ~/.soleri/vault.db */
|
|
50
57
|
sharedVaultPath?: string;
|
|
58
|
+
/** Enable Cognee vector search integration. Default: false (opt-in). */
|
|
59
|
+
cognee?: boolean;
|
|
60
|
+
/** Path to the agent's root directory (containing agent.yaml, instructions/, etc.). Optional — set by engine binary. */
|
|
61
|
+
agentDir?: string;
|
|
51
62
|
}
|
|
52
63
|
|
|
53
64
|
/**
|
|
@@ -63,7 +74,8 @@ export interface AgentRuntime {
|
|
|
63
74
|
planner: Planner;
|
|
64
75
|
curator: Curator;
|
|
65
76
|
governance: Governance;
|
|
66
|
-
|
|
77
|
+
/** Cognee vector search client. Null when Cognee integration is disabled. */
|
|
78
|
+
cognee: CogneeClient | null;
|
|
67
79
|
loop: LoopManager;
|
|
68
80
|
identityManager: IdentityManager;
|
|
69
81
|
intentRouter: IntentRouter;
|
|
@@ -72,7 +84,8 @@ export interface AgentRuntime {
|
|
|
72
84
|
telemetry: Telemetry;
|
|
73
85
|
projectRegistry: ProjectRegistry;
|
|
74
86
|
templateManager: TemplateManager;
|
|
75
|
-
|
|
87
|
+
/** Cognee sync manager. Null when Cognee integration is disabled. */
|
|
88
|
+
syncManager: CogneeSyncManager | null;
|
|
76
89
|
intakePipeline: IntakePipeline;
|
|
77
90
|
/** Mutable auth policy — controls facade dispatch enforcement. */
|
|
78
91
|
authPolicy: AuthPolicy;
|
|
@@ -96,6 +109,20 @@ export interface AgentRuntime {
|
|
|
96
109
|
agencyManager: AgencyManager;
|
|
97
110
|
/** Knowledge review — team review workflows (submit/approve/reject). */
|
|
98
111
|
knowledgeReview: KnowledgeReview;
|
|
112
|
+
/** Link manager — Zettelkasten bidirectional linking with auto-link on ingestion. */
|
|
113
|
+
linkManager: LinkManager;
|
|
114
|
+
/** Learning radar — automatic pattern detection from session signals. */
|
|
115
|
+
learningRadar: LearningRadar;
|
|
116
|
+
/** Text ingester — ingest articles, transcripts, and plain text into vault. */
|
|
117
|
+
textIngester: TextIngester;
|
|
118
|
+
/** Knowledge synthesizer — turn vault knowledge into briefs, outlines, posts. */
|
|
119
|
+
knowledgeSynthesizer: KnowledgeSynthesizer;
|
|
120
|
+
/** Chain runner — composable multi-step workflows with data flow and gates. */
|
|
121
|
+
chainRunner: ChainRunner;
|
|
122
|
+
/** Job queue — SQLite-backed async job processing with DAG dependencies. */
|
|
123
|
+
jobQueue: JobQueue;
|
|
124
|
+
/** Pipeline runner — background polling loop for job execution. */
|
|
125
|
+
pipelineRunner: PipelineRunner;
|
|
99
126
|
/** Timestamp (ms since epoch) when this runtime was created. */
|
|
100
127
|
createdAt: number;
|
|
101
128
|
/** Close the vault database connection. Call on shutdown. */
|