@soleri/core 2.9.0 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agency/agency-manager.d.ts +47 -0
- package/dist/agency/agency-manager.d.ts.map +1 -0
- package/dist/agency/agency-manager.js +281 -0
- package/dist/agency/agency-manager.js.map +1 -0
- package/dist/agency/index.d.ts +3 -0
- package/dist/agency/index.d.ts.map +1 -0
- package/dist/agency/index.js +2 -0
- package/dist/agency/index.js.map +1 -0
- package/dist/agency/types.d.ts +69 -0
- package/dist/agency/types.d.ts.map +1 -0
- package/dist/agency/types.js +5 -0
- package/dist/agency/types.js.map +1 -0
- package/dist/brain/brain.d.ts +0 -1
- package/dist/brain/brain.d.ts.map +1 -1
- package/dist/brain/brain.js +14 -0
- package/dist/brain/brain.js.map +1 -1
- package/dist/brain/intelligence.d.ts +5 -1
- package/dist/brain/intelligence.d.ts.map +1 -1
- package/dist/brain/intelligence.js +83 -0
- package/dist/brain/intelligence.js.map +1 -1
- package/dist/brain/types.d.ts +21 -0
- package/dist/brain/types.d.ts.map +1 -1
- package/dist/chat/agent-loop-types.d.ts +82 -0
- package/dist/chat/agent-loop-types.d.ts.map +1 -0
- package/dist/chat/agent-loop-types.js +8 -0
- package/dist/chat/agent-loop-types.js.map +1 -0
- package/dist/chat/agent-loop.d.ts +19 -0
- package/dist/chat/agent-loop.d.ts.map +1 -0
- package/dist/chat/agent-loop.js +261 -0
- package/dist/chat/agent-loop.js.map +1 -0
- package/dist/chat/auth-manager.d.ts +49 -0
- package/dist/chat/auth-manager.d.ts.map +1 -0
- package/dist/chat/auth-manager.js +152 -0
- package/dist/chat/auth-manager.js.map +1 -0
- package/dist/chat/browser-session.d.ts +86 -0
- package/dist/chat/browser-session.d.ts.map +1 -0
- package/dist/chat/browser-session.js +143 -0
- package/dist/chat/browser-session.js.map +1 -0
- package/dist/chat/cancellation.d.ts +54 -0
- package/dist/chat/cancellation.d.ts.map +1 -0
- package/dist/chat/cancellation.js +80 -0
- package/dist/chat/cancellation.js.map +1 -0
- package/dist/chat/chat-session.d.ts +86 -0
- package/dist/chat/chat-session.d.ts.map +1 -0
- package/dist/chat/chat-session.js +252 -0
- package/dist/chat/chat-session.js.map +1 -0
- package/dist/chat/file-handler.d.ts +63 -0
- package/dist/chat/file-handler.d.ts.map +1 -0
- package/dist/chat/file-handler.js +182 -0
- package/dist/chat/file-handler.js.map +1 -0
- package/dist/chat/fragment-buffer.d.ts +49 -0
- package/dist/chat/fragment-buffer.d.ts.map +1 -0
- package/dist/chat/fragment-buffer.js +130 -0
- package/dist/chat/fragment-buffer.js.map +1 -0
- package/dist/chat/index.d.ts +24 -0
- package/dist/chat/index.d.ts.map +1 -0
- package/dist/chat/index.js +15 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/chat/mcp-bridge.d.ts +60 -0
- package/dist/chat/mcp-bridge.d.ts.map +1 -0
- package/dist/chat/mcp-bridge.js +111 -0
- package/dist/chat/mcp-bridge.js.map +1 -0
- package/dist/chat/notifications.d.ts +82 -0
- package/dist/chat/notifications.d.ts.map +1 -0
- package/dist/chat/notifications.js +119 -0
- package/dist/chat/notifications.js.map +1 -0
- package/dist/chat/output-compressor.d.ts +30 -0
- package/dist/chat/output-compressor.d.ts.map +1 -0
- package/dist/chat/output-compressor.js +95 -0
- package/dist/chat/output-compressor.js.map +1 -0
- package/dist/chat/queue.d.ts +91 -0
- package/dist/chat/queue.d.ts.map +1 -0
- package/dist/chat/queue.js +146 -0
- package/dist/chat/queue.js.map +1 -0
- package/dist/chat/response-chunker.d.ts +29 -0
- package/dist/chat/response-chunker.d.ts.map +1 -0
- package/dist/chat/response-chunker.js +163 -0
- package/dist/chat/response-chunker.js.map +1 -0
- package/dist/chat/self-update.d.ts +62 -0
- package/dist/chat/self-update.d.ts.map +1 -0
- package/dist/chat/self-update.js +90 -0
- package/dist/chat/self-update.js.map +1 -0
- package/dist/chat/types.d.ts +105 -0
- package/dist/chat/types.d.ts.map +1 -0
- package/dist/chat/types.js +8 -0
- package/dist/chat/types.js.map +1 -0
- package/dist/chat/voice.d.ts +39 -0
- package/dist/chat/voice.d.ts.map +1 -0
- package/dist/chat/voice.js +80 -0
- package/dist/chat/voice.js.map +1 -0
- package/dist/claudemd/compose.d.ts +31 -0
- package/dist/claudemd/compose.d.ts.map +1 -0
- package/dist/claudemd/compose.js +105 -0
- package/dist/claudemd/compose.js.map +1 -0
- package/dist/claudemd/index.d.ts +5 -0
- package/dist/claudemd/index.d.ts.map +1 -0
- package/dist/claudemd/index.js +3 -0
- package/dist/claudemd/index.js.map +1 -0
- package/dist/claudemd/inject.d.ts +31 -0
- package/dist/claudemd/inject.d.ts.map +1 -0
- package/dist/claudemd/inject.js +157 -0
- package/dist/claudemd/inject.js.map +1 -0
- package/dist/claudemd/types.d.ts +41 -0
- package/dist/claudemd/types.d.ts.map +1 -0
- package/dist/claudemd/types.js +5 -0
- package/dist/claudemd/types.js.map +1 -0
- package/dist/context/context-engine.d.ts +31 -0
- package/dist/context/context-engine.d.ts.map +1 -0
- package/dist/context/context-engine.js +245 -0
- package/dist/context/context-engine.js.map +1 -0
- package/dist/context/index.d.ts +3 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +2 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/types.d.ts +54 -0
- package/dist/context/types.d.ts.map +1 -0
- package/dist/context/types.js +5 -0
- package/dist/context/types.js.map +1 -0
- package/dist/enforcement/adapters/claude-code.d.ts +18 -0
- package/dist/enforcement/adapters/claude-code.d.ts.map +1 -0
- package/dist/enforcement/adapters/claude-code.js +106 -0
- package/dist/enforcement/adapters/claude-code.js.map +1 -0
- package/dist/enforcement/adapters/index.d.ts +2 -0
- package/dist/enforcement/adapters/index.d.ts.map +1 -0
- package/dist/enforcement/adapters/index.js +2 -0
- package/dist/enforcement/adapters/index.js.map +1 -0
- package/dist/enforcement/index.d.ts +4 -0
- package/dist/enforcement/index.d.ts.map +1 -0
- package/dist/enforcement/index.js +3 -0
- package/dist/enforcement/index.js.map +1 -0
- package/dist/enforcement/registry.d.ts +23 -0
- package/dist/enforcement/registry.d.ts.map +1 -0
- package/dist/enforcement/registry.js +63 -0
- package/dist/enforcement/registry.js.map +1 -0
- package/dist/enforcement/types.d.ts +51 -0
- package/dist/enforcement/types.d.ts.map +1 -0
- package/dist/enforcement/types.js +8 -0
- package/dist/enforcement/types.js.map +1 -0
- package/dist/facades/facade-factory.d.ts +10 -3
- package/dist/facades/facade-factory.d.ts.map +1 -1
- package/dist/facades/facade-factory.js +94 -5
- package/dist/facades/facade-factory.js.map +1 -1
- package/dist/facades/types.d.ts +15 -1
- package/dist/facades/types.d.ts.map +1 -1
- package/dist/facades/types.js +6 -0
- package/dist/facades/types.js.map +1 -1
- package/dist/health/health-registry.d.ts +40 -0
- package/dist/health/health-registry.d.ts.map +1 -0
- package/dist/health/health-registry.js +134 -0
- package/dist/health/health-registry.js.map +1 -0
- package/dist/health/index.d.ts +5 -0
- package/dist/health/index.d.ts.map +1 -0
- package/dist/health/index.js +3 -0
- package/dist/health/index.js.map +1 -0
- package/dist/health/vault-integrity.d.ts +13 -0
- package/dist/health/vault-integrity.d.ts.map +1 -0
- package/dist/health/vault-integrity.js +49 -0
- package/dist/health/vault-integrity.js.map +1 -0
- package/dist/index.d.ts +67 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +51 -3
- package/dist/index.js.map +1 -1
- package/dist/intake/intake-pipeline.d.ts +0 -7
- package/dist/intake/intake-pipeline.d.ts.map +1 -1
- package/dist/intake/intake-pipeline.js +1 -1
- package/dist/intake/intake-pipeline.js.map +1 -1
- package/dist/intelligence/types.d.ts +1 -0
- package/dist/intelligence/types.d.ts.map +1 -1
- package/dist/migrations/index.d.ts +6 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +5 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/migration-runner.d.ts +51 -0
- package/dist/migrations/migration-runner.d.ts.map +1 -0
- package/dist/migrations/migration-runner.js +141 -0
- package/dist/migrations/migration-runner.js.map +1 -0
- package/dist/packs/index.d.ts +10 -0
- package/dist/packs/index.d.ts.map +1 -0
- package/dist/packs/index.js +8 -0
- package/dist/packs/index.js.map +1 -0
- package/dist/packs/lockfile.d.ts +97 -0
- package/dist/packs/lockfile.d.ts.map +1 -0
- package/dist/packs/lockfile.js +129 -0
- package/dist/packs/lockfile.js.map +1 -0
- package/dist/packs/pack-installer.d.ts +41 -0
- package/dist/packs/pack-installer.d.ts.map +1 -0
- package/dist/packs/pack-installer.js +253 -0
- package/dist/packs/pack-installer.js.map +1 -0
- package/dist/packs/resolver.d.ts +51 -0
- package/dist/packs/resolver.d.ts.map +1 -0
- package/dist/packs/resolver.js +195 -0
- package/dist/packs/resolver.js.map +1 -0
- package/dist/packs/types.d.ts +186 -0
- package/dist/packs/types.d.ts.map +1 -0
- package/dist/packs/types.js +69 -0
- package/dist/packs/types.js.map +1 -0
- package/dist/persistence/postgres-provider.d.ts +42 -7
- package/dist/persistence/postgres-provider.d.ts.map +1 -1
- package/dist/persistence/postgres-provider.js +187 -46
- package/dist/persistence/postgres-provider.js.map +1 -1
- package/dist/planning/gap-analysis.d.ts.map +1 -1
- package/dist/planning/gap-analysis.js +3 -1
- package/dist/planning/gap-analysis.js.map +1 -1
- package/dist/playbooks/index.d.ts +2 -0
- package/dist/playbooks/index.d.ts.map +1 -1
- package/dist/playbooks/index.js +2 -0
- package/dist/playbooks/index.js.map +1 -1
- package/dist/playbooks/playbook-executor.d.ts +100 -0
- package/dist/playbooks/playbook-executor.d.ts.map +1 -0
- package/dist/playbooks/playbook-executor.js +207 -0
- package/dist/playbooks/playbook-executor.js.map +1 -0
- package/dist/plugins/index.d.ts +7 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +7 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/plugin-loader.d.ts +28 -0
- package/dist/plugins/plugin-loader.d.ts.map +1 -0
- package/dist/plugins/plugin-loader.js +150 -0
- package/dist/plugins/plugin-loader.js.map +1 -0
- package/dist/plugins/plugin-registry.d.ts +58 -0
- package/dist/plugins/plugin-registry.d.ts.map +1 -0
- package/dist/plugins/plugin-registry.js +157 -0
- package/dist/plugins/plugin-registry.js.map +1 -0
- package/dist/plugins/types.d.ts +180 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +48 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/runtime/admin-extra-ops.d.ts.map +1 -1
- package/dist/runtime/admin-extra-ops.js +181 -8
- package/dist/runtime/admin-extra-ops.js.map +1 -1
- package/dist/runtime/capture-ops.d.ts.map +1 -1
- package/dist/runtime/capture-ops.js +106 -7
- package/dist/runtime/capture-ops.js.map +1 -1
- package/dist/runtime/deprecation.d.ts +33 -0
- package/dist/runtime/deprecation.d.ts.map +1 -0
- package/dist/runtime/deprecation.js +41 -0
- package/dist/runtime/deprecation.js.map +1 -0
- package/dist/runtime/facades/admin-facade.d.ts.map +1 -1
- package/dist/runtime/facades/admin-facade.js +12 -1
- package/dist/runtime/facades/admin-facade.js.map +1 -1
- package/dist/runtime/facades/agency-facade.d.ts +7 -0
- package/dist/runtime/facades/agency-facade.d.ts.map +1 -0
- package/dist/runtime/facades/agency-facade.js +103 -0
- package/dist/runtime/facades/agency-facade.js.map +1 -0
- package/dist/runtime/facades/brain-facade.d.ts.map +1 -1
- package/dist/runtime/facades/brain-facade.js +58 -0
- package/dist/runtime/facades/brain-facade.js.map +1 -1
- package/dist/runtime/facades/chat-facade.d.ts +7 -0
- package/dist/runtime/facades/chat-facade.d.ts.map +1 -0
- package/dist/runtime/facades/chat-facade.js +808 -0
- package/dist/runtime/facades/chat-facade.js.map +1 -0
- package/dist/runtime/facades/context-facade.d.ts +7 -0
- package/dist/runtime/facades/context-facade.d.ts.map +1 -0
- package/dist/runtime/facades/context-facade.js +45 -0
- package/dist/runtime/facades/context-facade.js.map +1 -0
- package/dist/runtime/facades/index.d.ts.map +1 -1
- package/dist/runtime/facades/index.js +18 -0
- package/dist/runtime/facades/index.js.map +1 -1
- package/dist/runtime/facades/vault-facade.d.ts.map +1 -1
- package/dist/runtime/facades/vault-facade.js +247 -1
- package/dist/runtime/facades/vault-facade.js.map +1 -1
- package/dist/runtime/feature-flags.d.ts +18 -0
- package/dist/runtime/feature-flags.d.ts.map +1 -0
- package/dist/runtime/feature-flags.js +90 -0
- package/dist/runtime/feature-flags.js.map +1 -0
- package/dist/runtime/pack-ops.d.ts +9 -0
- package/dist/runtime/pack-ops.d.ts.map +1 -0
- package/dist/runtime/pack-ops.js +76 -0
- package/dist/runtime/pack-ops.js.map +1 -0
- package/dist/runtime/playbook-ops.d.ts +3 -7
- package/dist/runtime/playbook-ops.d.ts.map +1 -1
- package/dist/runtime/playbook-ops.js +101 -10
- package/dist/runtime/playbook-ops.js.map +1 -1
- package/dist/runtime/plugin-ops.d.ts +9 -0
- package/dist/runtime/plugin-ops.d.ts.map +1 -0
- package/dist/runtime/plugin-ops.js +235 -0
- package/dist/runtime/plugin-ops.js.map +1 -0
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +72 -5
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/telemetry-ops.d.ts +10 -0
- package/dist/runtime/telemetry-ops.d.ts.map +1 -0
- package/dist/runtime/telemetry-ops.js +53 -0
- package/dist/runtime/telemetry-ops.js.map +1 -0
- package/dist/runtime/types.d.ts +35 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/vault-sharing-ops.d.ts +13 -0
- package/dist/runtime/vault-sharing-ops.d.ts.map +1 -0
- package/dist/runtime/vault-sharing-ops.js +345 -0
- package/dist/runtime/vault-sharing-ops.js.map +1 -0
- package/dist/streams/index.d.ts +1 -1
- package/dist/streams/index.d.ts.map +1 -1
- package/dist/streams/index.js +1 -1
- package/dist/streams/index.js.map +1 -1
- package/dist/streams/replayable-stream.d.ts +13 -1
- package/dist/streams/replayable-stream.d.ts.map +1 -1
- package/dist/streams/replayable-stream.js +27 -3
- package/dist/streams/replayable-stream.js.map +1 -1
- package/dist/text/similarity.d.ts +0 -1
- package/dist/text/similarity.d.ts.map +1 -1
- package/dist/text/similarity.js +1 -1
- package/dist/text/similarity.js.map +1 -1
- package/dist/transport/http-server.d.ts +56 -0
- package/dist/transport/http-server.d.ts.map +1 -0
- package/dist/transport/http-server.js +210 -0
- package/dist/transport/http-server.js.map +1 -0
- package/dist/transport/index.d.ts +11 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +10 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/lsp-server.d.ts +140 -0
- package/dist/transport/lsp-server.d.ts.map +1 -0
- package/dist/transport/lsp-server.js +239 -0
- package/dist/transport/lsp-server.js.map +1 -0
- package/dist/transport/rate-limiter.d.ts +35 -0
- package/dist/transport/rate-limiter.d.ts.map +1 -0
- package/dist/transport/rate-limiter.js +72 -0
- package/dist/transport/rate-limiter.js.map +1 -0
- package/dist/transport/session-manager.d.ts +49 -0
- package/dist/transport/session-manager.d.ts.map +1 -0
- package/dist/transport/session-manager.js +83 -0
- package/dist/transport/session-manager.js.map +1 -0
- package/dist/transport/token-auth.d.ts +29 -0
- package/dist/transport/token-auth.d.ts.map +1 -0
- package/dist/transport/token-auth.js +84 -0
- package/dist/transport/token-auth.js.map +1 -0
- package/dist/transport/types.d.ts +61 -0
- package/dist/transport/types.d.ts.map +1 -0
- package/dist/transport/types.js +5 -0
- package/dist/transport/types.js.map +1 -0
- package/dist/transport/ws-server.d.ts +78 -0
- package/dist/transport/ws-server.d.ts.map +1 -0
- package/dist/transport/ws-server.js +342 -0
- package/dist/transport/ws-server.js.map +1 -0
- package/dist/vault/git-vault-sync.d.ts +107 -0
- package/dist/vault/git-vault-sync.d.ts.map +1 -0
- package/dist/vault/git-vault-sync.js +251 -0
- package/dist/vault/git-vault-sync.js.map +1 -0
- package/dist/vault/knowledge-review.d.ts +67 -0
- package/dist/vault/knowledge-review.d.ts.map +1 -0
- package/dist/vault/knowledge-review.js +133 -0
- package/dist/vault/knowledge-review.js.map +1 -0
- package/dist/vault/obsidian-sync.d.ts +94 -0
- package/dist/vault/obsidian-sync.d.ts.map +1 -0
- package/dist/vault/obsidian-sync.js +247 -0
- package/dist/vault/obsidian-sync.js.map +1 -0
- package/dist/vault/scope-detector.d.ts +31 -0
- package/dist/vault/scope-detector.d.ts.map +1 -0
- package/dist/vault/scope-detector.js +182 -0
- package/dist/vault/scope-detector.js.map +1 -0
- package/dist/vault/vault-branching.d.ts +71 -0
- package/dist/vault/vault-branching.d.ts.map +1 -0
- package/dist/vault/vault-branching.js +180 -0
- package/dist/vault/vault-branching.js.map +1 -0
- package/dist/vault/vault-manager.d.ts +89 -0
- package/dist/vault/vault-manager.d.ts.map +1 -0
- package/dist/vault/vault-manager.js +199 -0
- package/dist/vault/vault-manager.js.map +1 -0
- package/dist/vault/vault-types.d.ts +30 -0
- package/dist/vault/vault-types.d.ts.map +1 -0
- package/dist/vault/vault-types.js +10 -0
- package/dist/vault/vault-types.js.map +1 -0
- package/dist/vault/vault.d.ts +10 -0
- package/dist/vault/vault.d.ts.map +1 -1
- package/dist/vault/vault.js +36 -3
- package/dist/vault/vault.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/admin-extra-ops.test.ts +31 -11
- package/src/__tests__/agency-manager.test.ts +374 -0
- package/src/__tests__/agent-loop.test.ts +256 -0
- package/src/__tests__/capture-ops.test.ts +275 -0
- package/src/__tests__/chat-differentiators.test.ts +251 -0
- package/src/__tests__/chat-enhanced.test.ts +390 -0
- package/src/__tests__/chat-transport.test.ts +665 -0
- package/src/__tests__/claudemd.test.ts +282 -0
- package/src/__tests__/context-engine.test.ts +256 -0
- package/src/__tests__/core-ops.test.ts +97 -5
- package/src/__tests__/deprecation.test.ts +78 -0
- package/src/__tests__/enforcement.test.ts +153 -0
- package/src/__tests__/facade-factory.test.ts +271 -0
- package/src/__tests__/feature-flags.test.ts +138 -0
- package/src/__tests__/git-vault-sync.test.ts +230 -0
- package/src/__tests__/health-registry.test.ts +173 -0
- package/src/__tests__/knowledge-review.test.ts +104 -0
- package/src/__tests__/lsp-transport.test.ts +442 -0
- package/src/__tests__/migration-runner.test.ts +170 -0
- package/src/__tests__/normalize.test.ts +10 -0
- package/src/__tests__/obsidian-sync.test.ts +354 -0
- package/src/__tests__/pack-lockfile.test.ts +261 -0
- package/src/__tests__/pack-ops.test.ts +146 -0
- package/src/__tests__/pack-system.test.ts +423 -0
- package/src/__tests__/playbook-executor.test.ts +249 -0
- package/src/__tests__/playbook-ops-execution.test.ts +189 -0
- package/src/__tests__/plugin-ops.test.ts +411 -0
- package/src/__tests__/plugin-system.test.ts +509 -0
- package/src/__tests__/postgres-provider.test.ts +64 -6
- package/src/__tests__/replayable-stream.test.ts +112 -1
- package/src/__tests__/scope-detector.test.ts +121 -0
- package/src/__tests__/session-lifecycle.test.ts +259 -0
- package/src/__tests__/transport.test.ts +758 -0
- package/src/__tests__/vault-branching.test.ts +274 -0
- package/src/__tests__/vault-connect.test.ts +179 -0
- package/src/__tests__/vault-integrity.test.ts +71 -0
- package/src/__tests__/vault-manager.test.ts +238 -0
- package/src/__tests__/vault-scaling.test.ts +281 -0
- package/src/__tests__/vault-sharing.test.ts +270 -0
- package/src/__tests__/ws-transport.test.ts +479 -0
- package/src/agency/agency-manager.ts +326 -0
- package/src/agency/index.ts +13 -0
- package/src/agency/types.ts +88 -0
- package/src/brain/brain.ts +15 -11
- package/src/brain/intelligence.ts +103 -0
- package/src/brain/types.ts +26 -0
- package/src/chat/agent-loop-types.ts +99 -0
- package/src/chat/agent-loop.ts +357 -0
- package/src/chat/auth-manager.ts +171 -0
- package/src/chat/browser-session.ts +188 -0
- package/src/chat/cancellation.ts +99 -0
- package/src/chat/chat-session.ts +283 -0
- package/src/chat/file-handler.ts +230 -0
- package/src/chat/fragment-buffer.ts +160 -0
- package/src/chat/index.ts +72 -0
- package/src/chat/mcp-bridge.ts +135 -0
- package/src/chat/notifications.ts +164 -0
- package/src/chat/output-compressor.ts +116 -0
- package/src/chat/queue.ts +208 -0
- package/src/chat/response-chunker.ts +200 -0
- package/src/chat/self-update.ts +117 -0
- package/src/chat/types.ts +126 -0
- package/src/chat/voice.ts +134 -0
- package/src/claudemd/compose.ts +142 -0
- package/src/claudemd/index.ts +17 -0
- package/src/claudemd/inject.ts +170 -0
- package/src/claudemd/types.ts +45 -0
- package/src/context/context-engine.ts +302 -0
- package/src/context/index.ts +11 -0
- package/src/context/types.ts +69 -0
- package/src/enforcement/adapters/claude-code.ts +135 -0
- package/src/enforcement/adapters/index.ts +1 -0
- package/src/enforcement/index.ts +10 -0
- package/src/enforcement/registry.ts +82 -0
- package/src/enforcement/types.ts +56 -0
- package/src/facades/facade-factory.ts +138 -5
- package/src/facades/types.ts +21 -0
- package/src/health/health-registry.ts +165 -0
- package/src/health/index.ts +11 -0
- package/src/health/vault-integrity.ts +66 -0
- package/src/index.ts +294 -2
- package/src/intake/intake-pipeline.ts +1 -1
- package/src/intelligence/types.ts +1 -0
- package/src/migrations/index.ts +6 -0
- package/src/migrations/migration-runner.ts +185 -0
- package/src/packs/index.ts +20 -0
- package/src/packs/lockfile.ts +180 -0
- package/src/packs/pack-installer.ts +289 -0
- package/src/packs/resolver.ts +237 -0
- package/src/packs/types.ts +125 -0
- package/src/persistence/postgres-provider.ts +211 -58
- package/src/planning/gap-analysis.ts +52 -7
- package/src/playbooks/index.ts +11 -0
- package/src/playbooks/playbook-executor.ts +301 -0
- package/src/plugins/index.ts +19 -0
- package/src/plugins/plugin-loader.ts +183 -0
- package/src/plugins/plugin-registry.ts +187 -0
- package/src/plugins/types.ts +119 -0
- package/src/runtime/admin-extra-ops.ts +193 -8
- package/src/runtime/capture-ops.ts +113 -8
- package/src/runtime/deprecation.ts +58 -0
- package/src/runtime/facades/admin-facade.ts +16 -1
- package/src/runtime/facades/agency-facade.ts +111 -0
- package/src/runtime/facades/brain-facade.ts +60 -0
- package/src/runtime/facades/chat-facade.ts +918 -0
- package/src/runtime/facades/context-facade.ts +55 -0
- package/src/runtime/facades/index.ts +22 -1
- package/src/runtime/facades/vault-facade.ts +261 -1
- package/src/runtime/feature-flags.ts +101 -0
- package/src/runtime/pack-ops.ts +85 -0
- package/src/runtime/playbook-ops.ts +113 -9
- package/src/runtime/plugin-ops.ts +258 -0
- package/src/runtime/runtime.ts +84 -5
- package/src/runtime/telemetry-ops.ts +57 -0
- package/src/runtime/types.ts +35 -0
- package/src/runtime/vault-sharing-ops.ts +372 -0
- package/src/streams/index.ts +1 -1
- package/src/streams/replayable-stream.ts +34 -3
- package/src/text/similarity.ts +1 -1
- package/src/transport/http-server.ts +269 -0
- package/src/transport/index.ts +48 -0
- package/src/transport/lsp-server.ts +401 -0
- package/src/transport/rate-limiter.ts +97 -0
- package/src/transport/session-manager.ts +120 -0
- package/src/transport/token-auth.ts +96 -0
- package/src/transport/types.ts +66 -0
- package/src/transport/ws-server.ts +415 -0
- package/src/vault/git-vault-sync.ts +318 -0
- package/src/vault/knowledge-review.ts +221 -0
- package/src/vault/obsidian-sync.ts +346 -0
- package/src/vault/scope-detector.ts +219 -0
- package/src/vault/vault-branching.ts +264 -0
- package/src/vault/vault-manager.ts +237 -0
- package/src/vault/vault-types.ts +50 -0
- package/src/vault/vault.ts +41 -3
- package/src/governance/index.ts +0 -18
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vault Branching — experiment with knowledge changes on named branches
|
|
3
|
+
* before merging to the main vault.
|
|
4
|
+
*
|
|
5
|
+
* Each branch tracks a set of operations (add/modify/remove) against vault entries.
|
|
6
|
+
* On merge, all operations are applied atomically to the main vault.
|
|
7
|
+
* Conflict resolution: branch entry wins (explicit user action to merge).
|
|
8
|
+
*
|
|
9
|
+
* Improved over Salvador: uses PersistenceProvider abstraction, separate
|
|
10
|
+
* metadata table (no sentinel markers), and merge logic built-in.
|
|
11
|
+
*/
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// VAULT BRANCHING
|
|
14
|
+
// =============================================================================
|
|
15
|
+
export class VaultBranching {
|
|
16
|
+
provider;
|
|
17
|
+
vault;
|
|
18
|
+
constructor(vault) {
|
|
19
|
+
this.vault = vault;
|
|
20
|
+
this.provider = vault.getProvider();
|
|
21
|
+
this.initialize();
|
|
22
|
+
}
|
|
23
|
+
initialize() {
|
|
24
|
+
this.provider.execSql(`
|
|
25
|
+
CREATE TABLE IF NOT EXISTS vault_branch_meta (
|
|
26
|
+
name TEXT PRIMARY KEY,
|
|
27
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
28
|
+
merged_at INTEGER
|
|
29
|
+
);
|
|
30
|
+
CREATE TABLE IF NOT EXISTS vault_branch_ops (
|
|
31
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
32
|
+
branch_name TEXT NOT NULL REFERENCES vault_branch_meta(name),
|
|
33
|
+
entry_id TEXT NOT NULL,
|
|
34
|
+
action TEXT NOT NULL CHECK(action IN ('add', 'modify', 'remove')),
|
|
35
|
+
entry_data TEXT,
|
|
36
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
37
|
+
);
|
|
38
|
+
CREATE INDEX IF NOT EXISTS idx_branch_ops_name ON vault_branch_ops(branch_name);
|
|
39
|
+
`);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a new branch. Name must be unique among active (unmerged) branches.
|
|
43
|
+
*/
|
|
44
|
+
branch(name) {
|
|
45
|
+
const existing = this.provider.get('SELECT name, merged_at FROM vault_branch_meta WHERE name = @name', { name });
|
|
46
|
+
if (existing && existing.merged_at === null) {
|
|
47
|
+
throw new Error(`Branch '${name}' already exists`);
|
|
48
|
+
}
|
|
49
|
+
// Allow reuse of merged branch names — delete old record first
|
|
50
|
+
if (existing) {
|
|
51
|
+
this.provider.run('DELETE FROM vault_branch_ops WHERE branch_name = @name', { name });
|
|
52
|
+
this.provider.run('DELETE FROM vault_branch_meta WHERE name = @name', { name });
|
|
53
|
+
}
|
|
54
|
+
this.provider.run('INSERT INTO vault_branch_meta (name) VALUES (@name)', { name });
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Add an operation to a branch.
|
|
59
|
+
* For 'add' and 'modify', entryData is required.
|
|
60
|
+
* For 'remove', entryData is optional.
|
|
61
|
+
*/
|
|
62
|
+
addOperation(branchName, entryId, action, entryData) {
|
|
63
|
+
this.assertActiveBranch(branchName);
|
|
64
|
+
if ((action === 'add' || action === 'modify') && !entryData) {
|
|
65
|
+
throw new Error(`Entry data required for '${action}' action`);
|
|
66
|
+
}
|
|
67
|
+
this.provider.run(`INSERT INTO vault_branch_ops (branch_name, entry_id, action, entry_data)
|
|
68
|
+
VALUES (@branchName, @entryId, @action, @entryData)`, {
|
|
69
|
+
branchName,
|
|
70
|
+
entryId,
|
|
71
|
+
action,
|
|
72
|
+
entryData: entryData ? JSON.stringify(entryData) : null,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* List entries on a branch.
|
|
77
|
+
*/
|
|
78
|
+
listEntries(branchName) {
|
|
79
|
+
const rows = this.provider.all(`SELECT id, branch_name, entry_id, action, entry_data, created_at
|
|
80
|
+
FROM vault_branch_ops WHERE branch_name = @branchName
|
|
81
|
+
ORDER BY created_at ASC`, { branchName });
|
|
82
|
+
return rows.map((r) => ({
|
|
83
|
+
id: r.id,
|
|
84
|
+
branchName: r.branch_name,
|
|
85
|
+
entryId: r.entry_id,
|
|
86
|
+
action: r.action,
|
|
87
|
+
entryData: r.entry_data ? JSON.parse(r.entry_data) : null,
|
|
88
|
+
createdAt: r.created_at,
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* List all branches with summary info.
|
|
93
|
+
*/
|
|
94
|
+
listBranches() {
|
|
95
|
+
const rows = this.provider.all(`SELECT m.name, m.created_at, m.merged_at,
|
|
96
|
+
COALESCE(COUNT(o.id), 0) as entry_count
|
|
97
|
+
FROM vault_branch_meta m
|
|
98
|
+
LEFT JOIN vault_branch_ops o ON o.branch_name = m.name
|
|
99
|
+
GROUP BY m.name
|
|
100
|
+
ORDER BY m.created_at DESC`);
|
|
101
|
+
return rows.map((r) => ({
|
|
102
|
+
name: r.name,
|
|
103
|
+
entryCount: r.entry_count,
|
|
104
|
+
createdAt: r.created_at,
|
|
105
|
+
merged: r.merged_at !== null,
|
|
106
|
+
}));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Merge a branch into the main vault. Applies all operations atomically.
|
|
110
|
+
* Conflict resolution: branch entry wins (the user explicitly chose to merge).
|
|
111
|
+
*/
|
|
112
|
+
merge(branchName) {
|
|
113
|
+
this.assertActiveBranch(branchName);
|
|
114
|
+
const ops = this.listEntries(branchName);
|
|
115
|
+
// Collapse ops: for each entryId, only the last action matters
|
|
116
|
+
const collapsed = new Map();
|
|
117
|
+
for (const op of ops) {
|
|
118
|
+
collapsed.set(op.entryId, op);
|
|
119
|
+
}
|
|
120
|
+
let added = 0;
|
|
121
|
+
let modified = 0;
|
|
122
|
+
let removed = 0;
|
|
123
|
+
this.provider.transaction(() => {
|
|
124
|
+
for (const op of collapsed.values()) {
|
|
125
|
+
switch (op.action) {
|
|
126
|
+
case 'add':
|
|
127
|
+
if (op.entryData) {
|
|
128
|
+
this.vault.add(op.entryData);
|
|
129
|
+
added++;
|
|
130
|
+
}
|
|
131
|
+
break;
|
|
132
|
+
case 'modify':
|
|
133
|
+
if (op.entryData) {
|
|
134
|
+
// Branch wins: upsert via seed (INSERT OR REPLACE)
|
|
135
|
+
this.vault.add(op.entryData);
|
|
136
|
+
modified++;
|
|
137
|
+
}
|
|
138
|
+
break;
|
|
139
|
+
case 'remove':
|
|
140
|
+
this.vault.remove(op.entryId);
|
|
141
|
+
removed++;
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Mark branch as merged
|
|
146
|
+
this.provider.run('UPDATE vault_branch_meta SET merged_at = unixepoch() WHERE name = @branchName', { branchName });
|
|
147
|
+
});
|
|
148
|
+
return {
|
|
149
|
+
merged: true,
|
|
150
|
+
branchName,
|
|
151
|
+
added,
|
|
152
|
+
modified,
|
|
153
|
+
removed,
|
|
154
|
+
total: added + modified + removed,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Delete a branch and all its operations.
|
|
159
|
+
*/
|
|
160
|
+
deleteBranch(branchName) {
|
|
161
|
+
const existing = this.provider.get('SELECT name FROM vault_branch_meta WHERE name = @branchName', { branchName });
|
|
162
|
+
if (!existing)
|
|
163
|
+
return false;
|
|
164
|
+
this.provider.transaction(() => {
|
|
165
|
+
this.provider.run('DELETE FROM vault_branch_ops WHERE branch_name = @branchName', {
|
|
166
|
+
branchName,
|
|
167
|
+
});
|
|
168
|
+
this.provider.run('DELETE FROM vault_branch_meta WHERE name = @branchName', { branchName });
|
|
169
|
+
});
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
172
|
+
assertActiveBranch(name) {
|
|
173
|
+
const branch = this.provider.get('SELECT merged_at FROM vault_branch_meta WHERE name = @name', { name });
|
|
174
|
+
if (!branch)
|
|
175
|
+
throw new Error(`Branch '${name}' does not exist`);
|
|
176
|
+
if (branch.merged_at !== null)
|
|
177
|
+
throw new Error(`Branch '${name}' is already merged`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=vault-branching.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault-branching.js","sourceRoot":"","sources":["../../src/vault/vault-branching.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VaultManager — orchestrates multiple vault instances across tiers.
|
|
3
|
+
*
|
|
4
|
+
* Each tier (agent, project, team) is a separate SQLite database with its own
|
|
5
|
+
* FTS5 index. Search cascades across all connected tiers with priority weighting.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* const mgr = new VaultManager({ agentId: 'my-agent' });
|
|
9
|
+
* mgr.open('agent', '~/.my-agent/vault.db');
|
|
10
|
+
* mgr.open('project', '.soleri/vault.db');
|
|
11
|
+
* const results = mgr.search('pattern name');
|
|
12
|
+
* mgr.close();
|
|
13
|
+
*/
|
|
14
|
+
import { Vault, type SearchResult } from './vault.js';
|
|
15
|
+
import { type VaultTier, type VaultTierInfo, type VaultManagerConfig } from './vault-types.js';
|
|
16
|
+
/** A dynamically connected vault source with a name and priority. */
|
|
17
|
+
export interface ConnectedVault {
|
|
18
|
+
name: string;
|
|
19
|
+
path: string;
|
|
20
|
+
priority: number;
|
|
21
|
+
vault: Vault;
|
|
22
|
+
}
|
|
23
|
+
export declare class VaultManager {
|
|
24
|
+
private vaults;
|
|
25
|
+
private connected;
|
|
26
|
+
private weights;
|
|
27
|
+
private config;
|
|
28
|
+
constructor(config: VaultManagerConfig);
|
|
29
|
+
/**
|
|
30
|
+
* Open a vault for the given tier.
|
|
31
|
+
* If a vault is already open for this tier, it is closed first.
|
|
32
|
+
*/
|
|
33
|
+
open(tier: VaultTier, path: string): Vault;
|
|
34
|
+
/**
|
|
35
|
+
* Get the vault for a specific tier.
|
|
36
|
+
* Throws if not connected.
|
|
37
|
+
*/
|
|
38
|
+
getTier(tier: VaultTier): Vault;
|
|
39
|
+
/**
|
|
40
|
+
* Check if a tier is connected.
|
|
41
|
+
*/
|
|
42
|
+
hasTier(tier: VaultTier): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Disconnect a specific tier.
|
|
45
|
+
*/
|
|
46
|
+
disconnect(tier: VaultTier): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Connect a named vault source with a configurable priority.
|
|
49
|
+
* Throws if a vault with this name is already connected.
|
|
50
|
+
*/
|
|
51
|
+
connect(name: string, path: string, priority?: number): ConnectedVault;
|
|
52
|
+
/**
|
|
53
|
+
* Disconnect a named vault source.
|
|
54
|
+
* Throws if not connected.
|
|
55
|
+
*/
|
|
56
|
+
disconnectNamed(name: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* List all dynamically connected vaults, sorted by priority descending.
|
|
59
|
+
*/
|
|
60
|
+
listConnected(): Array<{
|
|
61
|
+
name: string;
|
|
62
|
+
path: string;
|
|
63
|
+
priority: number;
|
|
64
|
+
}>;
|
|
65
|
+
/**
|
|
66
|
+
* Get a named connected vault.
|
|
67
|
+
*/
|
|
68
|
+
getConnected(name: string): ConnectedVault | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* Search across all connected tiers AND named vaults with priority weighting.
|
|
71
|
+
*
|
|
72
|
+
* Results from each source are weighted by priority,
|
|
73
|
+
* then merged and deduplicated (highest-priority entry wins).
|
|
74
|
+
*/
|
|
75
|
+
search(query: string, limit?: number): SearchResult[];
|
|
76
|
+
/**
|
|
77
|
+
* Get info about all tiers (connected or not).
|
|
78
|
+
*/
|
|
79
|
+
listTiers(): VaultTierInfo[];
|
|
80
|
+
/** Number of connected tiers. */
|
|
81
|
+
get size(): number;
|
|
82
|
+
/** Get the underlying config. */
|
|
83
|
+
getConfig(): VaultManagerConfig;
|
|
84
|
+
/**
|
|
85
|
+
* Close all connected vaults.
|
|
86
|
+
*/
|
|
87
|
+
close(): void;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=vault-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault-manager.d.ts","sourceRoot":"","sources":["../../src/vault/vault-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,kBAAkB,CAAC;AAM1B,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;CACd;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAwD;IACtE,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,kBAAkB;IAQtC;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK;IAY1C;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK;IAQ/B;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAIjC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAUpC;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAM,GAAG,cAAc;IAUnE;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQtC;;OAEG;IACH,aAAa,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAMxE;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAMtD;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,YAAY,EAAE;IA+CjD;;OAEG;IACH,SAAS,IAAI,aAAa,EAAE;IAiB5B,iCAAiC;IACjC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,iCAAiC;IACjC,SAAS,IAAI,kBAAkB;IAI/B;;OAEG;IACH,KAAK,IAAI,IAAI;CAUd"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VaultManager — orchestrates multiple vault instances across tiers.
|
|
3
|
+
*
|
|
4
|
+
* Each tier (agent, project, team) is a separate SQLite database with its own
|
|
5
|
+
* FTS5 index. Search cascades across all connected tiers with priority weighting.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* const mgr = new VaultManager({ agentId: 'my-agent' });
|
|
9
|
+
* mgr.open('agent', '~/.my-agent/vault.db');
|
|
10
|
+
* mgr.open('project', '.soleri/vault.db');
|
|
11
|
+
* const results = mgr.search('pattern name');
|
|
12
|
+
* mgr.close();
|
|
13
|
+
*/
|
|
14
|
+
import { Vault } from './vault.js';
|
|
15
|
+
import { TIER_WEIGHTS, } from './vault-types.js';
|
|
16
|
+
export class VaultManager {
|
|
17
|
+
vaults = new Map();
|
|
18
|
+
connected = new Map();
|
|
19
|
+
weights;
|
|
20
|
+
config;
|
|
21
|
+
constructor(config) {
|
|
22
|
+
this.config = config;
|
|
23
|
+
this.weights = {
|
|
24
|
+
...TIER_WEIGHTS,
|
|
25
|
+
...config.weights,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Open a vault for the given tier.
|
|
30
|
+
* If a vault is already open for this tier, it is closed first.
|
|
31
|
+
*/
|
|
32
|
+
open(tier, path) {
|
|
33
|
+
// Close existing if re-opening
|
|
34
|
+
const existing = this.vaults.get(tier);
|
|
35
|
+
if (existing) {
|
|
36
|
+
existing.vault.close();
|
|
37
|
+
}
|
|
38
|
+
const vault = new Vault(path);
|
|
39
|
+
this.vaults.set(tier, { vault, path });
|
|
40
|
+
return vault;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get the vault for a specific tier.
|
|
44
|
+
* Throws if not connected.
|
|
45
|
+
*/
|
|
46
|
+
getTier(tier) {
|
|
47
|
+
const entry = this.vaults.get(tier);
|
|
48
|
+
if (!entry) {
|
|
49
|
+
throw new Error(`Vault tier '${tier}' is not connected`);
|
|
50
|
+
}
|
|
51
|
+
return entry.vault;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if a tier is connected.
|
|
55
|
+
*/
|
|
56
|
+
hasTier(tier) {
|
|
57
|
+
return this.vaults.has(tier);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Disconnect a specific tier.
|
|
61
|
+
*/
|
|
62
|
+
disconnect(tier) {
|
|
63
|
+
const entry = this.vaults.get(tier);
|
|
64
|
+
if (!entry)
|
|
65
|
+
return false;
|
|
66
|
+
entry.vault.close();
|
|
67
|
+
this.vaults.delete(tier);
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
// ─── Dynamic Named Connections ──────────────────────────────────────
|
|
71
|
+
/**
|
|
72
|
+
* Connect a named vault source with a configurable priority.
|
|
73
|
+
* Throws if a vault with this name is already connected.
|
|
74
|
+
*/
|
|
75
|
+
connect(name, path, priority = 0.5) {
|
|
76
|
+
if (this.connected.has(name)) {
|
|
77
|
+
throw new Error(`Vault '${name}' is already connected`);
|
|
78
|
+
}
|
|
79
|
+
const vault = new Vault(path);
|
|
80
|
+
const entry = { name, path, priority, vault };
|
|
81
|
+
this.connected.set(name, entry);
|
|
82
|
+
return entry;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Disconnect a named vault source.
|
|
86
|
+
* Throws if not connected.
|
|
87
|
+
*/
|
|
88
|
+
disconnectNamed(name) {
|
|
89
|
+
const entry = this.connected.get(name);
|
|
90
|
+
if (!entry)
|
|
91
|
+
return false;
|
|
92
|
+
entry.vault.close();
|
|
93
|
+
this.connected.delete(name);
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* List all dynamically connected vaults, sorted by priority descending.
|
|
98
|
+
*/
|
|
99
|
+
listConnected() {
|
|
100
|
+
return Array.from(this.connected.values())
|
|
101
|
+
.sort((a, b) => b.priority - a.priority)
|
|
102
|
+
.map(({ name, path, priority }) => ({ name, path, priority }));
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get a named connected vault.
|
|
106
|
+
*/
|
|
107
|
+
getConnected(name) {
|
|
108
|
+
return this.connected.get(name);
|
|
109
|
+
}
|
|
110
|
+
// ─── Search ────────────────────────────────────────────────────────
|
|
111
|
+
/**
|
|
112
|
+
* Search across all connected tiers AND named vaults with priority weighting.
|
|
113
|
+
*
|
|
114
|
+
* Results from each source are weighted by priority,
|
|
115
|
+
* then merged and deduplicated (highest-priority entry wins).
|
|
116
|
+
*/
|
|
117
|
+
search(query, limit = 20) {
|
|
118
|
+
const allResults = [];
|
|
119
|
+
// Tier vaults
|
|
120
|
+
for (const [tier, { vault }] of this.vaults) {
|
|
121
|
+
const weight = this.weights[tier];
|
|
122
|
+
const results = vault.search(query);
|
|
123
|
+
for (const r of results) {
|
|
124
|
+
allResults.push({
|
|
125
|
+
...r,
|
|
126
|
+
source: tier,
|
|
127
|
+
weightedScore: r.score * weight,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Named connected vaults
|
|
132
|
+
for (const { name, priority, vault } of this.connected.values()) {
|
|
133
|
+
const results = vault.search(query);
|
|
134
|
+
for (const r of results) {
|
|
135
|
+
allResults.push({
|
|
136
|
+
...r,
|
|
137
|
+
source: name,
|
|
138
|
+
weightedScore: r.score * priority,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Deduplicate: keep highest-weighted version of each entry
|
|
143
|
+
const seen = new Map();
|
|
144
|
+
for (const r of allResults) {
|
|
145
|
+
const existing = seen.get(r.entry.id);
|
|
146
|
+
if (!existing || r.weightedScore > existing.weightedScore) {
|
|
147
|
+
seen.set(r.entry.id, r);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Sort by weighted score descending, take top N
|
|
151
|
+
const merged = Array.from(seen.values());
|
|
152
|
+
merged.sort((a, b) => b.weightedScore - a.weightedScore);
|
|
153
|
+
return merged.slice(0, limit).map((r) => ({
|
|
154
|
+
entry: r.entry,
|
|
155
|
+
score: r.weightedScore,
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get info about all tiers (connected or not).
|
|
160
|
+
*/
|
|
161
|
+
listTiers() {
|
|
162
|
+
const allTiers = ['agent', 'project', 'team'];
|
|
163
|
+
return allTiers.map((tier) => {
|
|
164
|
+
const entry = this.vaults.get(tier);
|
|
165
|
+
if (!entry) {
|
|
166
|
+
return { tier, path: '', connected: false, entryCount: 0 };
|
|
167
|
+
}
|
|
168
|
+
const stats = entry.vault.stats();
|
|
169
|
+
return {
|
|
170
|
+
tier,
|
|
171
|
+
path: entry.path,
|
|
172
|
+
connected: true,
|
|
173
|
+
entryCount: stats.totalEntries,
|
|
174
|
+
};
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/** Number of connected tiers. */
|
|
178
|
+
get size() {
|
|
179
|
+
return this.vaults.size;
|
|
180
|
+
}
|
|
181
|
+
/** Get the underlying config. */
|
|
182
|
+
getConfig() {
|
|
183
|
+
return this.config;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Close all connected vaults.
|
|
187
|
+
*/
|
|
188
|
+
close() {
|
|
189
|
+
for (const { vault } of this.vaults.values()) {
|
|
190
|
+
vault.close();
|
|
191
|
+
}
|
|
192
|
+
this.vaults.clear();
|
|
193
|
+
for (const { vault } of this.connected.values()) {
|
|
194
|
+
vault.close();
|
|
195
|
+
}
|
|
196
|
+
this.connected.clear();
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=vault-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault-manager.js","sourceRoot":"","sources":["../../src/vault/vault-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vault Types — tier definitions and multi-vault configuration.
|
|
3
|
+
*/
|
|
4
|
+
/** Vault tier — determines search priority and default path. */
|
|
5
|
+
export type VaultTier = 'agent' | 'project' | 'team';
|
|
6
|
+
/** Priority weights for search result merging (higher = ranked first). */
|
|
7
|
+
export declare const TIER_WEIGHTS: Record<VaultTier, number>;
|
|
8
|
+
/** Configuration for a single vault tier. */
|
|
9
|
+
export interface VaultTierConfig {
|
|
10
|
+
tier: VaultTier;
|
|
11
|
+
/** Path to the SQLite database file. */
|
|
12
|
+
path: string;
|
|
13
|
+
}
|
|
14
|
+
/** Configuration for VaultManager. */
|
|
15
|
+
export interface VaultManagerConfig {
|
|
16
|
+
/** Agent identifier (used for default path: ~/.{agentId}/vault.db) */
|
|
17
|
+
agentId: string;
|
|
18
|
+
/** Override default paths per tier. */
|
|
19
|
+
tiers?: VaultTierConfig[];
|
|
20
|
+
/** Custom priority weights (overrides TIER_WEIGHTS). */
|
|
21
|
+
weights?: Partial<Record<VaultTier, number>>;
|
|
22
|
+
}
|
|
23
|
+
/** Runtime info about a connected vault tier. */
|
|
24
|
+
export interface VaultTierInfo {
|
|
25
|
+
tier: VaultTier;
|
|
26
|
+
path: string;
|
|
27
|
+
connected: boolean;
|
|
28
|
+
entryCount: number;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=vault-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault-types.d.ts","sourceRoot":"","sources":["../../src/vault/vault-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,gEAAgE;AAChE,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAErD,0EAA0E;AAC1E,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAIlD,CAAC;AAMF,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;IAC1B,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;CAC9C;AAMD,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vault Types — tier definitions and multi-vault configuration.
|
|
3
|
+
*/
|
|
4
|
+
/** Priority weights for search result merging (higher = ranked first). */
|
|
5
|
+
export const TIER_WEIGHTS = {
|
|
6
|
+
agent: 1.0,
|
|
7
|
+
project: 0.8,
|
|
8
|
+
team: 0.6,
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=vault-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault-types.js","sourceRoot":"","sources":["../../src/vault/vault-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,YAAY,GAA8B;IACrD,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,GAAG;CACV,CAAC"}
|
package/dist/vault/vault.d.ts
CHANGED
|
@@ -46,10 +46,20 @@ export declare class Vault {
|
|
|
46
46
|
/** Backward-compatible factory. */
|
|
47
47
|
static createWithSQLite(dbPath?: string): Vault;
|
|
48
48
|
private initialize;
|
|
49
|
+
private migrateTierColumn;
|
|
49
50
|
private migrateTemporalSchema;
|
|
50
51
|
private migrateContentHash;
|
|
51
52
|
private migrateBrainSchema;
|
|
52
53
|
seed(entries: IntelligenceEntry[]): number;
|
|
54
|
+
/**
|
|
55
|
+
* Seed entries with content-hash dedup. Returns per-entry results.
|
|
56
|
+
* Unlike seed(), skips entries whose content already exists in the vault.
|
|
57
|
+
*/
|
|
58
|
+
seedDedup(entries: IntelligenceEntry[]): Array<{
|
|
59
|
+
id: string;
|
|
60
|
+
action: 'inserted' | 'duplicate';
|
|
61
|
+
existingId?: string;
|
|
62
|
+
}>;
|
|
53
63
|
search(query: string, options?: {
|
|
54
64
|
domain?: string;
|
|
55
65
|
type?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../src/vault/vault.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,iBAAiB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AACD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AACD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AACD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,WAAW,CAAsE;IAEzF;;OAEG;gBACS,cAAc,GAAE,mBAAmB,GAAG,MAAmB;IAiBrE,cAAc,CAAC,GAAG,EAAE,OAAO,2BAA2B,EAAE,iBAAiB,GAAG,IAAI;IAIhF,mCAAmC;IACnC,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAE,MAAmB,GAAG,KAAK;IAI3D,OAAO,CAAC,UAAU;
|
|
1
|
+
{"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../src/vault/vault.ts"],"names":[],"mappings":"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"}
|
package/dist/vault/vault.js
CHANGED
|
@@ -138,6 +138,16 @@ export class Vault {
|
|
|
138
138
|
this.migrateBrainSchema();
|
|
139
139
|
this.migrateTemporalSchema();
|
|
140
140
|
this.migrateContentHash();
|
|
141
|
+
this.migrateTierColumn();
|
|
142
|
+
}
|
|
143
|
+
migrateTierColumn() {
|
|
144
|
+
try {
|
|
145
|
+
this.provider.run("ALTER TABLE entries ADD COLUMN tier TEXT DEFAULT 'agent'");
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// Column already exists
|
|
149
|
+
}
|
|
150
|
+
this.provider.execSql('CREATE INDEX IF NOT EXISTS idx_entries_tier ON entries(tier) WHERE tier IS NOT NULL');
|
|
141
151
|
}
|
|
142
152
|
migrateTemporalSchema() {
|
|
143
153
|
try {
|
|
@@ -223,12 +233,12 @@ export class Vault {
|
|
|
223
233
|
}
|
|
224
234
|
seed(entries) {
|
|
225
235
|
const sql = `
|
|
226
|
-
INSERT INTO entries (id,type,domain,title,severity,description,context,example,counter_example,why,tags,applies_to,valid_from,valid_until,content_hash)
|
|
227
|
-
VALUES (@id,@type,@domain,@title,@severity,@description,@context,@example,@counterExample,@why,@tags,@appliesTo,@validFrom,@validUntil,@contentHash)
|
|
236
|
+
INSERT INTO entries (id,type,domain,title,severity,description,context,example,counter_example,why,tags,applies_to,valid_from,valid_until,content_hash,tier)
|
|
237
|
+
VALUES (@id,@type,@domain,@title,@severity,@description,@context,@example,@counterExample,@why,@tags,@appliesTo,@validFrom,@validUntil,@contentHash,@tier)
|
|
228
238
|
ON CONFLICT(id) DO UPDATE SET type=excluded.type,domain=excluded.domain,title=excluded.title,severity=excluded.severity,
|
|
229
239
|
description=excluded.description,context=excluded.context,example=excluded.example,counter_example=excluded.counter_example,
|
|
230
240
|
why=excluded.why,tags=excluded.tags,applies_to=excluded.applies_to,valid_from=excluded.valid_from,valid_until=excluded.valid_until,
|
|
231
|
-
content_hash=excluded.content_hash,updated_at=unixepoch()
|
|
241
|
+
content_hash=excluded.content_hash,tier=excluded.tier,updated_at=unixepoch()
|
|
232
242
|
`;
|
|
233
243
|
return this.provider.transaction(() => {
|
|
234
244
|
let count = 0;
|
|
@@ -249,6 +259,7 @@ export class Vault {
|
|
|
249
259
|
validFrom: entry.validFrom ?? null,
|
|
250
260
|
validUntil: entry.validUntil ?? null,
|
|
251
261
|
contentHash: computeContentHash(entry),
|
|
262
|
+
tier: entry.tier ?? 'agent',
|
|
252
263
|
});
|
|
253
264
|
count++;
|
|
254
265
|
if (this.syncManager) {
|
|
@@ -258,6 +269,27 @@ export class Vault {
|
|
|
258
269
|
return count;
|
|
259
270
|
});
|
|
260
271
|
}
|
|
272
|
+
/**
|
|
273
|
+
* Seed entries with content-hash dedup. Returns per-entry results.
|
|
274
|
+
* Unlike seed(), skips entries whose content already exists in the vault.
|
|
275
|
+
*/
|
|
276
|
+
seedDedup(entries) {
|
|
277
|
+
return this.provider.transaction(() => {
|
|
278
|
+
const results = [];
|
|
279
|
+
for (const entry of entries) {
|
|
280
|
+
const hash = computeContentHash(entry);
|
|
281
|
+
const existing = this.findByContentHash(hash);
|
|
282
|
+
if (existing && existing !== entry.id) {
|
|
283
|
+
results.push({ id: entry.id, action: 'duplicate', existingId: existing });
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
this.seed([entry]);
|
|
287
|
+
results.push({ id: entry.id, action: 'inserted' });
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return results;
|
|
291
|
+
});
|
|
292
|
+
}
|
|
261
293
|
search(query, options) {
|
|
262
294
|
const limit = options?.limit ?? 10;
|
|
263
295
|
const filters = [];
|
|
@@ -833,6 +865,7 @@ function rowToEntry(row) {
|
|
|
833
865
|
why: row.why ?? undefined,
|
|
834
866
|
tags: JSON.parse(row.tags || '[]'),
|
|
835
867
|
appliesTo: JSON.parse(row.applies_to || '[]'),
|
|
868
|
+
tier: row.tier ?? undefined,
|
|
836
869
|
validFrom: row.valid_from ?? undefined,
|
|
837
870
|
validUntil: row.valid_until ?? undefined,
|
|
838
871
|
};
|