@dcyfr/ai 2.1.3 → 3.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/CHANGELOG.md +81 -0
- package/README.md +75 -10
- package/config/default.json +11 -5
- package/config/default.yaml +13 -5
- package/dist/.tsbuildinfo +1 -0
- package/dist/ai/agents/agent-loader.d.ts.map +1 -1
- package/dist/ai/agents/agent-loader.js +1 -0
- package/dist/ai/agents/agent-loader.js.map +1 -1
- package/dist/ai/agents/agent-registry.d.ts.map +1 -1
- package/dist/ai/agents/agent-registry.js.map +1 -1
- package/dist/ai/agents/agent-router.d.ts +3 -3
- package/dist/ai/agents/agent-router.d.ts.map +1 -1
- package/dist/ai/agents/agent-router.js +6 -7
- package/dist/ai/agents/agent-router.js.map +1 -1
- package/dist/ai/config/schema.js +3 -3
- package/dist/ai/config/schema.js.map +1 -1
- package/dist/ai/core/provider-registry.d.ts.map +1 -1
- package/dist/ai/core/provider-registry.js +47 -16
- package/dist/ai/core/provider-registry.js.map +1 -1
- package/dist/ai/core/telemetry-engine.d.ts.map +1 -1
- package/dist/ai/core/telemetry-engine.js +5 -3
- package/dist/ai/core/telemetry-engine.js.map +1 -1
- package/dist/ai/delegation/capability-bootstrap.js +1 -1
- package/dist/ai/delegation/capability-bootstrap.js.map +1 -1
- package/dist/ai/delegation/contract-manager.d.ts +54 -5
- package/dist/ai/delegation/contract-manager.d.ts.map +1 -1
- package/dist/ai/delegation/contract-manager.js +122 -7
- package/dist/ai/delegation/contract-manager.js.map +1 -1
- package/dist/ai/delegation/feature-flags.d.ts +1 -1
- package/dist/ai/delegation/feature-flags.d.ts.map +1 -1
- package/dist/ai/delegation/feature-flags.js +3 -1
- package/dist/ai/delegation/feature-flags.js.map +1 -1
- package/dist/ai/delegation/index.d.ts +1 -0
- package/dist/ai/delegation/index.d.ts.map +1 -1
- package/dist/ai/delegation/index.js +2 -0
- package/dist/ai/delegation/index.js.map +1 -1
- package/dist/ai/delegation/monitoring.d.ts.map +1 -1
- package/dist/ai/delegation/monitoring.js +1 -0
- package/dist/ai/delegation/monitoring.js.map +1 -1
- package/dist/ai/delegation/session-manager.d.ts +16 -1
- package/dist/ai/delegation/session-manager.d.ts.map +1 -1
- package/dist/ai/delegation/session-manager.js +10 -1
- package/dist/ai/delegation/session-manager.js.map +1 -1
- package/dist/ai/delegation/session-queue.d.ts.map +1 -1
- package/dist/ai/delegation/session-queue.js.map +1 -1
- package/dist/ai/examples/integration-demo.d.ts.map +1 -1
- package/dist/ai/examples/integration-demo.js +1 -0
- package/dist/ai/examples/integration-demo.js.map +1 -1
- package/dist/ai/index.d.ts +7 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +8 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/mcp/mcp-registry.d.ts.map +1 -1
- package/dist/ai/mcp/mcp-registry.js +1 -1
- package/dist/ai/mcp/mcp-registry.js.map +1 -1
- package/dist/ai/mcp/servers/analytics/index.d.ts.map +1 -1
- package/dist/ai/mcp/servers/analytics/index.js +1 -0
- package/dist/ai/mcp/servers/analytics/index.js.map +1 -1
- package/dist/ai/mcp/servers/content-manager/index.d.ts.map +1 -1
- package/dist/ai/mcp/servers/delegation-monitor/index.js +27 -27
- package/dist/ai/mcp/servers/delegation-monitor/index.js.map +1 -1
- package/dist/ai/mcp/servers/design-tokens/index.js +1 -1
- package/dist/ai/mcp/servers/design-tokens/index.js.map +1 -1
- package/dist/ai/mcp/servers/promptintel/index.d.ts.map +1 -1
- package/dist/ai/mcp/servers/promptintel/index.js +2 -1
- package/dist/ai/mcp/servers/promptintel/index.js.map +1 -1
- package/dist/ai/mcp/servers/shared/rate-limiter.d.ts.map +1 -1
- package/dist/ai/mcp/servers/shared/rate-limiter.js +1 -0
- package/dist/ai/mcp/servers/shared/rate-limiter.js.map +1 -1
- package/dist/ai/mcp/servers/shared/redis-client.d.ts.map +1 -1
- package/dist/ai/mcp/servers/shared/redis-client.js +2 -0
- package/dist/ai/mcp/servers/shared/redis-client.js.map +1 -1
- package/dist/ai/mcp/servers/shared/utils.js +12 -18
- package/dist/ai/mcp/servers/shared/utils.js.map +1 -1
- package/dist/ai/memory/dcyfr-memory.d.ts.map +1 -1
- package/dist/ai/memory/dcyfr-memory.js +11 -1
- package/dist/ai/memory/dcyfr-memory.js.map +1 -1
- package/dist/ai/memory/file-memory-adapter.d.ts +103 -0
- package/dist/ai/memory/file-memory-adapter.d.ts.map +1 -0
- package/dist/ai/memory/file-memory-adapter.js +532 -0
- package/dist/ai/memory/file-memory-adapter.js.map +1 -0
- package/dist/ai/memory/index.d.ts +6 -0
- package/dist/ai/memory/index.d.ts.map +1 -1
- package/dist/ai/memory/index.js +6 -0
- package/dist/ai/memory/index.js.map +1 -1
- package/dist/ai/memory/mem0-client.d.ts.map +1 -1
- package/dist/ai/memory/mem0-client.js +5 -2
- package/dist/ai/memory/mem0-client.js.map +1 -1
- package/dist/ai/memory/sqlite-index.d.ts +89 -0
- package/dist/ai/memory/sqlite-index.d.ts.map +1 -0
- package/dist/ai/memory/sqlite-index.js +295 -0
- package/dist/ai/memory/sqlite-index.js.map +1 -0
- package/dist/ai/memory/types.d.ts.map +1 -1
- package/dist/ai/memory/types.js +1 -0
- package/dist/ai/memory/types.js.map +1 -1
- package/dist/ai/memory/working-memory-persistence.d.ts +79 -0
- package/dist/ai/memory/working-memory-persistence.d.ts.map +1 -0
- package/dist/ai/memory/working-memory-persistence.js +220 -0
- package/dist/ai/memory/working-memory-persistence.js.map +1 -0
- package/dist/ai/permissions/attenuation-engine.d.ts.map +1 -1
- package/dist/ai/permissions/attenuation-engine.js.map +1 -1
- package/dist/ai/reputation/reputation-engine.d.ts +4 -0
- package/dist/ai/reputation/reputation-engine.d.ts.map +1 -1
- package/dist/ai/reputation/reputation-engine.js +1 -0
- package/dist/ai/reputation/reputation-engine.js.map +1 -1
- package/dist/ai/runtime/agent-runtime.d.ts.map +1 -1
- package/dist/ai/runtime/agent-runtime.js +9 -5
- package/dist/ai/runtime/agent-runtime.js.map +1 -1
- package/dist/ai/src/batch-processor.d.ts +6 -6
- package/dist/ai/src/batch-processor.d.ts.map +1 -1
- package/dist/ai/src/batch-processor.js +11 -4
- package/dist/ai/src/batch-processor.js.map +1 -1
- package/dist/ai/src/capability-bootstrap.d.ts.map +1 -1
- package/dist/ai/src/capability-bootstrap.js +1 -0
- package/dist/ai/src/capability-bootstrap.js.map +1 -1
- package/dist/ai/src/capability-registry.js +1 -1
- package/dist/ai/src/capability-registry.js.map +1 -1
- package/dist/ai/src/cli/telemetry-dashboard.d.ts +0 -11
- package/dist/ai/src/cli/telemetry-dashboard.d.ts.map +1 -1
- package/dist/ai/src/cli/telemetry-dashboard.js +12 -6
- package/dist/ai/src/cli/telemetry-dashboard.js.map +1 -1
- package/dist/ai/src/compaction/context-compactor.d.ts +149 -0
- package/dist/ai/src/compaction/context-compactor.d.ts.map +1 -0
- package/dist/ai/src/compaction/context-compactor.js +302 -0
- package/dist/ai/src/compaction/context-compactor.js.map +1 -0
- package/dist/ai/src/compaction/index.d.ts +11 -0
- package/dist/ai/src/compaction/index.d.ts.map +1 -0
- package/dist/ai/src/compaction/index.js +11 -0
- package/dist/ai/src/compaction/index.js.map +1 -0
- package/dist/ai/src/compaction/memory-compaction.d.ts +138 -0
- package/dist/ai/src/compaction/memory-compaction.d.ts.map +1 -0
- package/dist/ai/src/compaction/memory-compaction.js +630 -0
- package/dist/ai/src/compaction/memory-compaction.js.map +1 -0
- package/dist/ai/src/container/agent-container-dispatcher.d.ts +154 -0
- package/dist/ai/src/container/agent-container-dispatcher.d.ts.map +1 -0
- package/dist/ai/src/container/agent-container-dispatcher.js +329 -0
- package/dist/ai/src/container/agent-container-dispatcher.js.map +1 -0
- package/dist/ai/src/container/backend-factory.d.ts +89 -0
- package/dist/ai/src/container/backend-factory.d.ts.map +1 -0
- package/dist/ai/src/container/backend-factory.js +169 -0
- package/dist/ai/src/container/backend-factory.js.map +1 -0
- package/dist/ai/src/container/index.d.ts +13 -0
- package/dist/ai/src/container/index.d.ts.map +1 -0
- package/dist/ai/src/container/index.js +13 -0
- package/dist/ai/src/container/index.js.map +1 -0
- package/dist/ai/src/container/kubernetes-backend.d.ts +23 -0
- package/dist/ai/src/container/kubernetes-backend.d.ts.map +1 -0
- package/dist/ai/src/container/kubernetes-backend.js +39 -0
- package/dist/ai/src/container/kubernetes-backend.js.map +1 -0
- package/dist/ai/src/container/local-docker-backend.d.ts +77 -0
- package/dist/ai/src/container/local-docker-backend.d.ts.map +1 -0
- package/dist/ai/src/container/local-docker-backend.js +362 -0
- package/dist/ai/src/container/local-docker-backend.js.map +1 -0
- package/dist/ai/src/container/remote-docker-backend.d.ts +35 -0
- package/dist/ai/src/container/remote-docker-backend.d.ts.map +1 -0
- package/dist/ai/src/container/remote-docker-backend.js +189 -0
- package/dist/ai/src/container/remote-docker-backend.js.map +1 -0
- package/dist/ai/src/container/types.d.ts +270 -0
- package/dist/ai/src/container/types.d.ts.map +1 -0
- package/dist/ai/src/container/types.js +86 -0
- package/dist/ai/src/container/types.js.map +1 -0
- package/dist/ai/src/delegation/feature-flags.d.ts.map +1 -1
- package/dist/ai/src/delegation/feature-flags.js +1 -0
- package/dist/ai/src/delegation/feature-flags.js.map +1 -1
- package/dist/ai/src/delegation/liability-firebreak.d.ts.map +1 -1
- package/dist/ai/src/delegation/liability-firebreak.js +1 -0
- package/dist/ai/src/delegation/liability-firebreak.js.map +1 -1
- package/dist/ai/src/delegation/security-threat-model.d.ts.map +1 -1
- package/dist/ai/src/delegation/security-threat-model.js +1 -1
- package/dist/ai/src/delegation/security-threat-model.js.map +1 -1
- package/dist/ai/src/delegation-capability-integration.d.ts +1 -1
- package/dist/ai/src/delegation-capability-integration.d.ts.map +1 -1
- package/dist/ai/src/delegation-capability-integration.js +2 -7
- package/dist/ai/src/delegation-capability-integration.js.map +1 -1
- package/dist/ai/src/end-to-end-workflow-orchestrator.d.ts.map +1 -1
- package/dist/ai/src/end-to-end-workflow-orchestrator.js +2 -1
- package/dist/ai/src/end-to-end-workflow-orchestrator.js.map +1 -1
- package/dist/ai/src/enhanced-capability-detection.d.ts +1 -1
- package/dist/ai/src/enhanced-capability-detection.d.ts.map +1 -1
- package/dist/ai/src/enhanced-capability-detection.js +1 -1
- package/dist/ai/src/enhanced-capability-detection.js.map +1 -1
- package/dist/ai/src/gateway/index.d.ts +6 -0
- package/dist/ai/src/gateway/index.d.ts.map +1 -0
- package/dist/ai/src/gateway/index.js +6 -0
- package/dist/ai/src/gateway/index.js.map +1 -0
- package/dist/ai/src/gateway/message-gateway.d.ts +296 -0
- package/dist/ai/src/gateway/message-gateway.d.ts.map +1 -0
- package/dist/ai/src/gateway/message-gateway.js +415 -0
- package/dist/ai/src/gateway/message-gateway.js.map +1 -0
- package/dist/ai/src/intelligent-cache-manager.d.ts.map +1 -1
- package/dist/ai/src/intelligent-cache-manager.js +2 -1
- package/dist/ai/src/intelligent-cache-manager.js.map +1 -1
- package/dist/ai/src/mcp/index.d.ts +10 -0
- package/dist/ai/src/mcp/index.d.ts.map +1 -0
- package/dist/ai/src/mcp/index.js +10 -0
- package/dist/ai/src/mcp/index.js.map +1 -0
- package/dist/ai/src/mcp/mcp-tool-bridge.d.ts +186 -0
- package/dist/ai/src/mcp/mcp-tool-bridge.d.ts.map +1 -0
- package/dist/ai/src/mcp/mcp-tool-bridge.js +292 -0
- package/dist/ai/src/mcp/mcp-tool-bridge.js.map +1 -0
- package/dist/ai/src/mcp-auto-configuration.d.ts.map +1 -1
- package/dist/ai/src/mcp-auto-configuration.js +2 -1
- package/dist/ai/src/mcp-auto-configuration.js.map +1 -1
- package/dist/ai/src/performance-profiler.d.ts.map +1 -1
- package/dist/ai/src/performance-profiler.js +1 -0
- package/dist/ai/src/performance-profiler.js.map +1 -1
- package/dist/ai/src/plugins/anomaly/anomaly-detector.d.ts +58 -0
- package/dist/ai/src/plugins/anomaly/anomaly-detector.d.ts.map +1 -0
- package/dist/ai/src/plugins/anomaly/anomaly-detector.js +101 -0
- package/dist/ai/src/plugins/anomaly/anomaly-detector.js.map +1 -0
- package/dist/ai/src/plugins/anomaly/anomaly-monitor.d.ts +145 -0
- package/dist/ai/src/plugins/anomaly/anomaly-monitor.d.ts.map +1 -0
- package/dist/ai/src/plugins/anomaly/anomaly-monitor.js +245 -0
- package/dist/ai/src/plugins/anomaly/anomaly-monitor.js.map +1 -0
- package/dist/ai/src/plugins/anomaly/behavior-baseline.d.ts +79 -0
- package/dist/ai/src/plugins/anomaly/behavior-baseline.d.ts.map +1 -0
- package/dist/ai/src/plugins/anomaly/behavior-baseline.js +161 -0
- package/dist/ai/src/plugins/anomaly/behavior-baseline.js.map +1 -0
- package/dist/ai/src/plugins/anomaly/index.d.ts +15 -0
- package/dist/ai/src/plugins/anomaly/index.d.ts.map +1 -0
- package/dist/ai/src/plugins/anomaly/index.js +12 -0
- package/dist/ai/src/plugins/anomaly/index.js.map +1 -0
- package/dist/ai/src/plugins/anomaly/types.d.ts +150 -0
- package/dist/ai/src/plugins/anomaly/types.d.ts.map +1 -0
- package/dist/ai/src/plugins/anomaly/types.js +68 -0
- package/dist/ai/src/plugins/anomaly/types.js.map +1 -0
- package/dist/ai/src/plugins/certification/certification-manager.d.ts +102 -0
- package/dist/ai/src/plugins/certification/certification-manager.d.ts.map +1 -0
- package/dist/ai/src/plugins/certification/certification-manager.js +321 -0
- package/dist/ai/src/plugins/certification/certification-manager.js.map +1 -0
- package/dist/ai/src/plugins/certification/index.d.ts +12 -0
- package/dist/ai/src/plugins/certification/index.d.ts.map +1 -0
- package/dist/ai/src/plugins/certification/index.js +10 -0
- package/dist/ai/src/plugins/certification/index.js.map +1 -0
- package/dist/ai/src/plugins/certification/types.d.ts +128 -0
- package/dist/ai/src/plugins/certification/types.d.ts.map +1 -0
- package/dist/ai/src/plugins/certification/types.js +201 -0
- package/dist/ai/src/plugins/certification/types.js.map +1 -0
- package/dist/ai/src/plugins/escalation/escalation-trigger.d.ts +155 -0
- package/dist/ai/src/plugins/escalation/escalation-trigger.d.ts.map +1 -0
- package/dist/ai/src/plugins/escalation/escalation-trigger.js +183 -0
- package/dist/ai/src/plugins/escalation/escalation-trigger.js.map +1 -0
- package/dist/ai/src/plugins/escalation/index.d.ts +11 -0
- package/dist/ai/src/plugins/escalation/index.d.ts.map +1 -0
- package/dist/ai/src/plugins/escalation/index.js +10 -0
- package/dist/ai/src/plugins/escalation/index.js.map +1 -0
- package/dist/ai/src/plugins/incidents/incident-response-manager.d.ts +165 -0
- package/dist/ai/src/plugins/incidents/incident-response-manager.d.ts.map +1 -0
- package/dist/ai/src/plugins/incidents/incident-response-manager.js +462 -0
- package/dist/ai/src/plugins/incidents/incident-response-manager.js.map +1 -0
- package/dist/ai/src/plugins/incidents/index.d.ts +8 -0
- package/dist/ai/src/plugins/incidents/index.d.ts.map +1 -0
- package/dist/ai/src/plugins/incidents/index.js +7 -0
- package/dist/ai/src/plugins/incidents/index.js.map +1 -0
- package/dist/ai/src/plugins/incidents/types.d.ts +183 -0
- package/dist/ai/src/plugins/incidents/types.d.ts.map +1 -0
- package/dist/ai/src/plugins/incidents/types.js +55 -0
- package/dist/ai/src/plugins/incidents/types.js.map +1 -0
- package/dist/ai/src/plugins/permissions/index.d.ts +17 -0
- package/dist/ai/src/plugins/permissions/index.d.ts.map +1 -0
- package/dist/ai/src/plugins/permissions/index.js +14 -0
- package/dist/ai/src/plugins/permissions/index.js.map +1 -0
- package/dist/ai/src/plugins/permissions/permission-attenuator.d.ts +29 -0
- package/dist/ai/src/plugins/permissions/permission-attenuator.d.ts.map +1 -0
- package/dist/ai/src/plugins/permissions/permission-attenuator.js +190 -0
- package/dist/ai/src/plugins/permissions/permission-attenuator.js.map +1 -0
- package/dist/ai/src/plugins/permissions/permission-audit-logger.d.ts +72 -0
- package/dist/ai/src/plugins/permissions/permission-audit-logger.d.ts.map +1 -0
- package/dist/ai/src/plugins/permissions/permission-audit-logger.js +176 -0
- package/dist/ai/src/plugins/permissions/permission-audit-logger.js.map +1 -0
- package/dist/ai/src/plugins/permissions/permission-enforcer.d.ts +99 -0
- package/dist/ai/src/plugins/permissions/permission-enforcer.d.ts.map +1 -0
- package/dist/ai/src/plugins/permissions/permission-enforcer.js +151 -0
- package/dist/ai/src/plugins/permissions/permission-enforcer.js.map +1 -0
- package/dist/ai/src/plugins/permissions/plugin-permission-validator.d.ts +39 -0
- package/dist/ai/src/plugins/permissions/plugin-permission-validator.d.ts.map +1 -0
- package/dist/ai/src/plugins/permissions/plugin-permission-validator.js +296 -0
- package/dist/ai/src/plugins/permissions/plugin-permission-validator.js.map +1 -0
- package/dist/ai/src/plugins/permissions/types.d.ts +116 -0
- package/dist/ai/src/plugins/permissions/types.d.ts.map +1 -0
- package/dist/ai/src/plugins/permissions/types.js +36 -0
- package/dist/ai/src/plugins/permissions/types.js.map +1 -0
- package/dist/ai/src/plugins/reputation/index.d.ts +9 -0
- package/dist/ai/src/plugins/reputation/index.d.ts.map +1 -0
- package/dist/ai/src/plugins/reputation/index.js +8 -0
- package/dist/ai/src/plugins/reputation/index.js.map +1 -0
- package/dist/ai/src/plugins/reputation/plugin-reputation-db.d.ts +29 -0
- package/dist/ai/src/plugins/reputation/plugin-reputation-db.d.ts.map +1 -0
- package/dist/ai/src/plugins/reputation/plugin-reputation-db.js +120 -0
- package/dist/ai/src/plugins/reputation/plugin-reputation-db.js.map +1 -0
- package/dist/ai/src/plugins/reputation/plugin-reputation-engine.d.ts +115 -0
- package/dist/ai/src/plugins/reputation/plugin-reputation-engine.d.ts.map +1 -0
- package/dist/ai/src/plugins/reputation/plugin-reputation-engine.js +528 -0
- package/dist/ai/src/plugins/reputation/plugin-reputation-engine.js.map +1 -0
- package/dist/ai/src/plugins/reputation/types.d.ts +149 -0
- package/dist/ai/src/plugins/reputation/types.d.ts.map +1 -0
- package/dist/ai/src/plugins/reputation/types.js +14 -0
- package/dist/ai/src/plugins/reputation/types.js.map +1 -0
- package/dist/ai/src/plugins/reviews/index.d.ts +11 -0
- package/dist/ai/src/plugins/reviews/index.d.ts.map +1 -0
- package/dist/ai/src/plugins/reviews/index.js +10 -0
- package/dist/ai/src/plugins/reviews/index.js.map +1 -0
- package/dist/ai/src/plugins/reviews/plugin-rating-aggregator.d.ts +116 -0
- package/dist/ai/src/plugins/reviews/plugin-rating-aggregator.d.ts.map +1 -0
- package/dist/ai/src/plugins/reviews/plugin-rating-aggregator.js +282 -0
- package/dist/ai/src/plugins/reviews/plugin-rating-aggregator.js.map +1 -0
- package/dist/ai/src/plugins/reviews/types.d.ts +113 -0
- package/dist/ai/src/plugins/reviews/types.d.ts.map +1 -0
- package/dist/ai/src/plugins/reviews/types.js +55 -0
- package/dist/ai/src/plugins/reviews/types.js.map +1 -0
- package/dist/ai/src/plugins/runtime/docker-plugin-runner.d.ts +77 -0
- package/dist/ai/src/plugins/runtime/docker-plugin-runner.d.ts.map +1 -0
- package/dist/ai/src/plugins/runtime/docker-plugin-runner.js +248 -0
- package/dist/ai/src/plugins/runtime/docker-plugin-runner.js.map +1 -0
- package/dist/ai/src/plugins/runtime/gvisor-plugin-runner.d.ts +99 -0
- package/dist/ai/src/plugins/runtime/gvisor-plugin-runner.d.ts.map +1 -0
- package/dist/ai/src/plugins/runtime/gvisor-plugin-runner.js +158 -0
- package/dist/ai/src/plugins/runtime/gvisor-plugin-runner.js.map +1 -0
- package/dist/ai/src/plugins/runtime/index.d.ts +13 -0
- package/dist/ai/src/plugins/runtime/index.d.ts.map +1 -0
- package/dist/ai/src/plugins/runtime/index.js +11 -0
- package/dist/ai/src/plugins/runtime/index.js.map +1 -0
- package/dist/ai/src/plugins/runtime/types.d.ts +143 -0
- package/dist/ai/src/plugins/runtime/types.d.ts.map +1 -0
- package/dist/ai/src/plugins/runtime/types.js +19 -0
- package/dist/ai/src/plugins/runtime/types.js.map +1 -0
- package/dist/ai/src/plugins/runtime/wasm-plugin-runner.d.ts +104 -0
- package/dist/ai/src/plugins/runtime/wasm-plugin-runner.d.ts.map +1 -0
- package/dist/ai/src/plugins/runtime/wasm-plugin-runner.js +307 -0
- package/dist/ai/src/plugins/runtime/wasm-plugin-runner.js.map +1 -0
- package/dist/ai/src/plugins/security/index.d.ts +24 -0
- package/dist/ai/src/plugins/security/index.d.ts.map +1 -0
- package/dist/ai/src/plugins/security/index.js +23 -0
- package/dist/ai/src/plugins/security/index.js.map +1 -0
- package/dist/ai/src/plugins/security/license-checker.d.ts +26 -0
- package/dist/ai/src/plugins/security/license-checker.d.ts.map +1 -0
- package/dist/ai/src/plugins/security/license-checker.js +137 -0
- package/dist/ai/src/plugins/security/license-checker.js.map +1 -0
- package/dist/ai/src/plugins/security/malware-scanner.d.ts +19 -0
- package/dist/ai/src/plugins/security/malware-scanner.d.ts.map +1 -0
- package/dist/ai/src/plugins/security/malware-scanner.js +121 -0
- package/dist/ai/src/plugins/security/malware-scanner.js.map +1 -0
- package/dist/ai/src/plugins/security/plugin-security-scanner.d.ts +36 -0
- package/dist/ai/src/plugins/security/plugin-security-scanner.d.ts.map +1 -0
- package/dist/ai/src/plugins/security/plugin-security-scanner.js +160 -0
- package/dist/ai/src/plugins/security/plugin-security-scanner.js.map +1 -0
- package/dist/ai/src/plugins/security/sbom-generator.d.ts +23 -0
- package/dist/ai/src/plugins/security/sbom-generator.d.ts.map +1 -0
- package/dist/ai/src/plugins/security/sbom-generator.js +115 -0
- package/dist/ai/src/plugins/security/sbom-generator.js.map +1 -0
- package/dist/ai/src/plugins/security/secret-detector.d.ts +19 -0
- package/dist/ai/src/plugins/security/secret-detector.d.ts.map +1 -0
- package/dist/ai/src/plugins/security/secret-detector.js +204 -0
- package/dist/ai/src/plugins/security/secret-detector.js.map +1 -0
- package/dist/ai/src/plugins/security/signature-verifier.d.ts +21 -0
- package/dist/ai/src/plugins/security/signature-verifier.d.ts.map +1 -0
- package/dist/ai/src/plugins/security/signature-verifier.js +75 -0
- package/dist/ai/src/plugins/security/signature-verifier.js.map +1 -0
- package/dist/ai/src/plugins/security/sonarcloud-client.d.ts +20 -0
- package/dist/ai/src/plugins/security/sonarcloud-client.d.ts.map +1 -0
- package/dist/ai/src/plugins/security/sonarcloud-client.js +106 -0
- package/dist/ai/src/plugins/security/sonarcloud-client.js.map +1 -0
- package/dist/ai/src/plugins/security/trust-score.d.ts +58 -0
- package/dist/ai/src/plugins/security/trust-score.d.ts.map +1 -0
- package/dist/ai/src/plugins/security/trust-score.js +173 -0
- package/dist/ai/src/plugins/security/trust-score.js.map +1 -0
- package/dist/ai/src/plugins/security/types.d.ts +220 -0
- package/dist/ai/src/plugins/security/types.d.ts.map +1 -0
- package/dist/ai/src/plugins/security/types.js +12 -0
- package/dist/ai/src/plugins/security/types.js.map +1 -0
- package/dist/ai/src/plugins/security/vulnerability-scanner.d.ts +22 -0
- package/dist/ai/src/plugins/security/vulnerability-scanner.d.ts.map +1 -0
- package/dist/ai/src/plugins/security/vulnerability-scanner.js +109 -0
- package/dist/ai/src/plugins/security/vulnerability-scanner.js.map +1 -0
- package/dist/ai/src/plugins/tlp/index.d.ts +17 -0
- package/dist/ai/src/plugins/tlp/index.d.ts.map +1 -0
- package/dist/ai/src/plugins/tlp/index.js +17 -0
- package/dist/ai/src/plugins/tlp/index.js.map +1 -0
- package/dist/ai/src/plugins/tlp/tlp-classifier.d.ts +55 -0
- package/dist/ai/src/plugins/tlp/tlp-classifier.d.ts.map +1 -0
- package/dist/ai/src/plugins/tlp/tlp-classifier.js +232 -0
- package/dist/ai/src/plugins/tlp/tlp-classifier.js.map +1 -0
- package/dist/ai/src/plugins/tlp/tlp-validator.d.ts +97 -0
- package/dist/ai/src/plugins/tlp/tlp-validator.d.ts.map +1 -0
- package/dist/ai/src/plugins/tlp/tlp-validator.js +120 -0
- package/dist/ai/src/plugins/tlp/tlp-validator.js.map +1 -0
- package/dist/ai/src/plugins/tlp/types.d.ts +84 -0
- package/dist/ai/src/plugins/tlp/types.d.ts.map +1 -0
- package/dist/ai/src/plugins/tlp/types.js +20 -0
- package/dist/ai/src/plugins/tlp/types.js.map +1 -0
- package/dist/ai/src/resource-monitor.d.ts +1 -1
- package/dist/ai/src/resource-monitor.d.ts.map +1 -1
- package/dist/ai/src/resource-monitor.js +4 -3
- package/dist/ai/src/resource-monitor.js.map +1 -1
- package/dist/ai/src/runtime/agent-runtime.d.ts +77 -0
- package/dist/ai/src/runtime/agent-runtime.d.ts.map +1 -1
- package/dist/ai/src/runtime/agent-runtime.js +138 -2
- package/dist/ai/src/runtime/agent-runtime.js.map +1 -1
- package/dist/ai/src/scheduler/agent-scheduler.d.ts +365 -0
- package/dist/ai/src/scheduler/agent-scheduler.d.ts.map +1 -0
- package/dist/ai/src/scheduler/agent-scheduler.js +610 -0
- package/dist/ai/src/scheduler/agent-scheduler.js.map +1 -0
- package/dist/ai/src/scheduler/index.d.ts +6 -0
- package/dist/ai/src/scheduler/index.d.ts.map +1 -0
- package/dist/ai/src/scheduler/index.js +6 -0
- package/dist/ai/src/scheduler/index.js.map +1 -0
- package/dist/ai/src/session/index.d.ts +6 -0
- package/dist/ai/src/session/index.d.ts.map +1 -0
- package/dist/ai/src/session/index.js +6 -0
- package/dist/ai/src/session/index.js.map +1 -0
- package/dist/ai/src/session/session-manager.d.ts +380 -0
- package/dist/ai/src/session/session-manager.d.ts.map +1 -0
- package/dist/ai/src/session/session-manager.js +625 -0
- package/dist/ai/src/session/session-manager.js.map +1 -0
- package/dist/ai/src/skills/index.d.ts +10 -0
- package/dist/ai/src/skills/index.d.ts.map +1 -0
- package/dist/ai/src/skills/index.js +10 -0
- package/dist/ai/src/skills/index.js.map +1 -0
- package/dist/ai/src/skills/skill-registry.d.ts +181 -0
- package/dist/ai/src/skills/skill-registry.d.ts.map +1 -0
- package/dist/ai/src/skills/skill-registry.js +465 -0
- package/dist/ai/src/skills/skill-registry.js.map +1 -0
- package/dist/ai/src/telemetry/delegation-telemetry.d.ts.map +1 -1
- package/dist/ai/src/telemetry/delegation-telemetry.js +1 -0
- package/dist/ai/src/telemetry/delegation-telemetry.js.map +1 -1
- package/dist/ai/src/telemetry/runtime-telemetry-integration.d.ts +1 -1
- package/dist/ai/src/telemetry/runtime-telemetry-integration.d.ts.map +1 -1
- package/dist/ai/src/telemetry/runtime-telemetry-integration.js +3 -2
- package/dist/ai/src/telemetry/runtime-telemetry-integration.js.map +1 -1
- package/dist/ai/src/telemetry/telemetry-utils.d.ts.map +1 -1
- package/dist/ai/src/telemetry/telemetry-utils.js +1 -0
- package/dist/ai/src/telemetry/telemetry-utils.js.map +1 -1
- package/dist/ai/src/types/agent-capabilities.d.ts.map +1 -1
- package/dist/ai/src/types/agent-capabilities.js +1 -0
- package/dist/ai/src/types/agent-capabilities.js.map +1 -1
- package/dist/ai/src/types/delegation-contracts.d.ts +92 -0
- package/dist/ai/src/types/delegation-contracts.d.ts.map +1 -1
- package/dist/ai/src/types/delegation-contracts.js.map +1 -1
- package/dist/ai/src/validation-pipeline-integration.d.ts.map +1 -1
- package/dist/ai/src/validation-pipeline-integration.js +1 -2
- package/dist/ai/src/validation-pipeline-integration.js.map +1 -1
- package/dist/ai/src/verification/multi-modal-formatters.d.ts +1 -1
- package/dist/ai/src/verification/multi-modal-formatters.d.ts.map +1 -1
- package/dist/ai/src/verification/multi-modal-formatters.js +3 -2
- package/dist/ai/src/verification/multi-modal-formatters.js.map +1 -1
- package/dist/ai/src/verification/output-formatter.d.ts +1 -1
- package/dist/ai/src/verification/output-formatter.d.ts.map +1 -1
- package/dist/ai/src/verification/output-formatter.js +2 -1
- package/dist/ai/src/verification/output-formatter.js.map +1 -1
- package/dist/ai/src/verification/parser-integration.d.ts.map +1 -1
- package/dist/ai/src/verification/parser-integration.js.map +1 -1
- package/dist/ai/types/agent-capabilities.d.ts +7 -0
- package/dist/ai/types/agent-capabilities.d.ts.map +1 -1
- package/dist/ai/types/delegation-contracts.d.ts +75 -0
- package/dist/ai/types/delegation-contracts.d.ts.map +1 -1
- package/dist/ai/types/index.d.ts +3 -3
- package/dist/ai/types/index.d.ts.map +1 -1
- package/dist/ai/types/index.js.map +1 -1
- package/dist/ai/types/permission-tokens.d.ts +23 -0
- package/dist/ai/types/permission-tokens.d.ts.map +1 -1
- package/dist/ai/types/permission-tokens.js +65 -1
- package/dist/ai/types/permission-tokens.js.map +1 -1
- package/dist/ai/validation/validation-framework.d.ts.map +1 -1
- package/dist/ai/verification/policy-framework.d.ts +1 -1
- package/dist/ai/verification/policy-framework.d.ts.map +1 -1
- package/dist/ai/verification/policy-framework.js +4 -4
- package/dist/ai/verification/policy-framework.js.map +1 -1
- package/package.json +33 -4
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module compaction/context-compactor
|
|
3
|
+
* @description Context compaction with LLM-powered pre-flush summarization.
|
|
4
|
+
*
|
|
5
|
+
* Implements a three-stage compaction pipeline:
|
|
6
|
+
* 1. Monitor — calculate context utilization
|
|
7
|
+
* 2. Pre-flush — LLM-powered summarization before compaction
|
|
8
|
+
* 3. Compact — remove oldest turns, inject summary
|
|
9
|
+
*
|
|
10
|
+
* @license MIT
|
|
11
|
+
* @copyright DCYFR Labs (https://www.dcyfr.ai)
|
|
12
|
+
*/
|
|
13
|
+
import type { DCYFRMemory } from '../../memory/types.js';
|
|
14
|
+
export interface ContextCompactorConfig {
|
|
15
|
+
/** Context utilization threshold (0-1) to trigger compaction. Default: 0.7 */
|
|
16
|
+
threshold?: number;
|
|
17
|
+
/** Number of recent turns to preserve after compaction. Default: 5 */
|
|
18
|
+
preserveRecentTurns?: number;
|
|
19
|
+
/** Maximum tokens for the summary. Default: 500 */
|
|
20
|
+
maxSummaryTokens?: number;
|
|
21
|
+
/** Token counter function. Default: rough estimate (4 chars = 1 token) */
|
|
22
|
+
tokenCounter?: (text: string) => number;
|
|
23
|
+
/** LLM call function for pre-flush summarization */
|
|
24
|
+
llmCall?: (prompt: string, systemPrompt: string) => Promise<string>;
|
|
25
|
+
/** Memory adapter for persisting pre-flush summaries */
|
|
26
|
+
memory?: DCYFRMemory;
|
|
27
|
+
/** Enable debug logging. Default: false */
|
|
28
|
+
debug?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface ContextMessage {
|
|
31
|
+
role: 'system' | 'user' | 'assistant' | 'tool';
|
|
32
|
+
content: string;
|
|
33
|
+
timestamp?: Date;
|
|
34
|
+
metadata?: Record<string, unknown>;
|
|
35
|
+
}
|
|
36
|
+
export interface AgentContext {
|
|
37
|
+
/** System prompt */
|
|
38
|
+
systemPrompt: string;
|
|
39
|
+
/** Injected skills */
|
|
40
|
+
skills?: string;
|
|
41
|
+
/** Retrieved memories */
|
|
42
|
+
memories?: string;
|
|
43
|
+
/** Conversation turns */
|
|
44
|
+
messages: ContextMessage[];
|
|
45
|
+
/** Tool results from current turn */
|
|
46
|
+
toolResults?: string;
|
|
47
|
+
/** Additional metadata */
|
|
48
|
+
metadata?: Record<string, unknown>;
|
|
49
|
+
}
|
|
50
|
+
export interface ContextUtilization {
|
|
51
|
+
/** Total tokens used */
|
|
52
|
+
totalTokens: number;
|
|
53
|
+
/** Context window size (model maximum) */
|
|
54
|
+
windowSize: number;
|
|
55
|
+
/** Utilization ratio (0-1) */
|
|
56
|
+
utilization: number;
|
|
57
|
+
/** Breakdown by component */
|
|
58
|
+
breakdown: {
|
|
59
|
+
systemPrompt: number;
|
|
60
|
+
skills: number;
|
|
61
|
+
memories: number;
|
|
62
|
+
conversation: number;
|
|
63
|
+
toolResults: number;
|
|
64
|
+
};
|
|
65
|
+
/** Whether compaction is recommended */
|
|
66
|
+
shouldCompact: boolean;
|
|
67
|
+
/** Estimated tokens to free via compaction */
|
|
68
|
+
estimatedSavings: number;
|
|
69
|
+
}
|
|
70
|
+
export interface PreFlushSummary {
|
|
71
|
+
/** Key facts extracted from conversation */
|
|
72
|
+
facts: string[];
|
|
73
|
+
/** Decisions made during conversation */
|
|
74
|
+
decisions: string[];
|
|
75
|
+
/** Outstanding questions or tasks */
|
|
76
|
+
outstandingQuestions: string[];
|
|
77
|
+
/** Conversation summary for injection */
|
|
78
|
+
summary: string;
|
|
79
|
+
/** Timestamp of pre-flush */
|
|
80
|
+
timestamp: Date;
|
|
81
|
+
/** Original turn count before flush */
|
|
82
|
+
originalTurnCount: number;
|
|
83
|
+
}
|
|
84
|
+
export interface CompactionResult {
|
|
85
|
+
/** Whether compaction was performed */
|
|
86
|
+
compacted: boolean;
|
|
87
|
+
/** Tokens before compaction */
|
|
88
|
+
tokensBefore: number;
|
|
89
|
+
/** Tokens after compaction */
|
|
90
|
+
tokensAfter: number;
|
|
91
|
+
/** Tokens saved */
|
|
92
|
+
tokensSaved: number;
|
|
93
|
+
/** Pre-flush summary (if performed) */
|
|
94
|
+
preFlushSummary?: PreFlushSummary;
|
|
95
|
+
/** Error if compaction failed */
|
|
96
|
+
error?: string;
|
|
97
|
+
}
|
|
98
|
+
export declare class ContextCompactor {
|
|
99
|
+
private readonly threshold;
|
|
100
|
+
private readonly preserveRecentTurns;
|
|
101
|
+
private readonly maxSummaryTokens;
|
|
102
|
+
private readonly tokenCounter;
|
|
103
|
+
private readonly llmCall?;
|
|
104
|
+
private readonly memory?;
|
|
105
|
+
private readonly debug;
|
|
106
|
+
private readonly contextWindowSize;
|
|
107
|
+
private lastPreFlushSummary?;
|
|
108
|
+
private preFlushRetryPending;
|
|
109
|
+
constructor(config?: ContextCompactorConfig);
|
|
110
|
+
/**
|
|
111
|
+
* Calculate context utilization and breakdown by component.
|
|
112
|
+
*/
|
|
113
|
+
calculateUtilization(context: AgentContext): ContextUtilization;
|
|
114
|
+
/**
|
|
115
|
+
* Generate an LLM-powered summary before compaction.
|
|
116
|
+
* Extracts facts, decisions, and outstanding questions.
|
|
117
|
+
*/
|
|
118
|
+
preFlush(context: AgentContext): Promise<PreFlushSummary | null>;
|
|
119
|
+
/**
|
|
120
|
+
* Compact the context by removing older turns and injecting a summary.
|
|
121
|
+
*/
|
|
122
|
+
compact(context: AgentContext): Promise<CompactionResult>;
|
|
123
|
+
/**
|
|
124
|
+
* Priority for hook registration.
|
|
125
|
+
* Lower numbers execute first.
|
|
126
|
+
* Security hooks: 0
|
|
127
|
+
* Context compaction: 50
|
|
128
|
+
* User hooks: 100
|
|
129
|
+
*/
|
|
130
|
+
static readonly HOOK_PRIORITY = 50;
|
|
131
|
+
/**
|
|
132
|
+
* Execute compaction as a beforeExecute hook.
|
|
133
|
+
* Returns the potentially modified context.
|
|
134
|
+
*/
|
|
135
|
+
executeAsHook(context: AgentContext): Promise<AgentContext>;
|
|
136
|
+
/**
|
|
137
|
+
* Get the last pre-flush summary (useful for debugging/auditing).
|
|
138
|
+
*/
|
|
139
|
+
getLastPreFlushSummary(): PreFlushSummary | undefined;
|
|
140
|
+
/**
|
|
141
|
+
* Whether a pre-flush retry is pending.
|
|
142
|
+
*/
|
|
143
|
+
isPreFlushRetryPending(): boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Clear the pending retry flag (for testing).
|
|
146
|
+
*/
|
|
147
|
+
clearPreFlushRetryPending(): void;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=context-compactor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-compactor.d.ts","sourceRoot":"","sources":["../../../../packages/ai/src/compaction/context-compactor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module compaction/context-compactor
|
|
3
|
+
* @description Context compaction with LLM-powered pre-flush summarization.
|
|
4
|
+
*
|
|
5
|
+
* Implements a three-stage compaction pipeline:
|
|
6
|
+
* 1. Monitor — calculate context utilization
|
|
7
|
+
* 2. Pre-flush — LLM-powered summarization before compaction
|
|
8
|
+
* 3. Compact — remove oldest turns, inject summary
|
|
9
|
+
*
|
|
10
|
+
* @license MIT
|
|
11
|
+
* @copyright DCYFR Labs (https://www.dcyfr.ai)
|
|
12
|
+
*/
|
|
13
|
+
/* ------------------------------------------------------------------ */
|
|
14
|
+
/* Constants */
|
|
15
|
+
/* ------------------------------------------------------------------ */
|
|
16
|
+
const DEFAULT_MODEL_CONTEXT_WINDOW = 128000; // Claude 3.5 / GPT-4o default
|
|
17
|
+
const PRE_FLUSH_SYSTEM_PROMPT = `You are a context compaction assistant. Your job is to extract key information from a conversation before it is summarized.
|
|
18
|
+
|
|
19
|
+
Extract the following in JSON format:
|
|
20
|
+
{
|
|
21
|
+
"facts": ["fact 1", "fact 2", ...],
|
|
22
|
+
"decisions": ["decision 1", "decision 2", ...],
|
|
23
|
+
"outstandingQuestions": ["question 1", "question 2", ...],
|
|
24
|
+
"summary": "Brief summary of the conversation..."
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
Rules:
|
|
28
|
+
- Facts should be concrete, actionable pieces of information learned
|
|
29
|
+
- Decisions should be choices or conclusions reached during the conversation
|
|
30
|
+
- Outstanding questions should be unresolved queries or pending tasks
|
|
31
|
+
- Summary should be 2-3 sentences capturing the essence of the conversation
|
|
32
|
+
- Be concise — this output will be injected into future context`;
|
|
33
|
+
/* ------------------------------------------------------------------ */
|
|
34
|
+
/* Helpers */
|
|
35
|
+
/* ------------------------------------------------------------------ */
|
|
36
|
+
function defaultTokenCounter(text) {
|
|
37
|
+
// Rough estimate: ~4 characters per token for English text
|
|
38
|
+
return Math.ceil(text.length / 4);
|
|
39
|
+
}
|
|
40
|
+
function countMessageTokens(messages, counter) {
|
|
41
|
+
return messages.reduce((sum, msg) => sum + counter(msg.content), 0);
|
|
42
|
+
}
|
|
43
|
+
function formatConversationForSummary(messages) {
|
|
44
|
+
return messages
|
|
45
|
+
.map((m) => `[${m.role.toUpperCase()}]: ${m.content.slice(0, 1000)}`)
|
|
46
|
+
.join('\n\n');
|
|
47
|
+
}
|
|
48
|
+
function parsePreFlushResponse(response) {
|
|
49
|
+
try {
|
|
50
|
+
// Try to extract JSON from the response
|
|
51
|
+
const jsonMatch = /\{[\s\S]*\}/.exec(response);
|
|
52
|
+
if (jsonMatch) {
|
|
53
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
54
|
+
return {
|
|
55
|
+
facts: Array.isArray(parsed.facts) ? parsed.facts : [],
|
|
56
|
+
decisions: Array.isArray(parsed.decisions) ? parsed.decisions : [],
|
|
57
|
+
outstandingQuestions: Array.isArray(parsed.outstandingQuestions) ? parsed.outstandingQuestions : [],
|
|
58
|
+
summary: typeof parsed.summary === 'string' ? parsed.summary : 'No summary available.',
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// Fall through to default
|
|
64
|
+
}
|
|
65
|
+
// Fallback: treat entire response as summary
|
|
66
|
+
return {
|
|
67
|
+
facts: [],
|
|
68
|
+
decisions: [],
|
|
69
|
+
outstandingQuestions: [],
|
|
70
|
+
summary: response.slice(0, 500),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function buildSummaryInjection(summary) {
|
|
74
|
+
const parts = [
|
|
75
|
+
'<!-- Previous Context Summary -->',
|
|
76
|
+
'',
|
|
77
|
+
`**Summary:** ${summary.summary}`,
|
|
78
|
+
];
|
|
79
|
+
if (summary.facts.length > 0) {
|
|
80
|
+
parts.push('', '**Key Facts:**');
|
|
81
|
+
summary.facts.forEach((f) => parts.push(`- ${f}`));
|
|
82
|
+
}
|
|
83
|
+
if (summary.decisions.length > 0) {
|
|
84
|
+
parts.push('', '**Decisions Made:**');
|
|
85
|
+
summary.decisions.forEach((d) => parts.push(`- ${d}`));
|
|
86
|
+
}
|
|
87
|
+
if (summary.outstandingQuestions.length > 0) {
|
|
88
|
+
parts.push('', '**Outstanding Questions:**');
|
|
89
|
+
summary.outstandingQuestions.forEach((q) => parts.push(`- ${q}`));
|
|
90
|
+
}
|
|
91
|
+
parts.push('', '<!-- End Previous Context Summary -->', '');
|
|
92
|
+
return parts.join('\n');
|
|
93
|
+
}
|
|
94
|
+
/* ------------------------------------------------------------------ */
|
|
95
|
+
/* ContextCompactor */
|
|
96
|
+
/* ------------------------------------------------------------------ */
|
|
97
|
+
export class ContextCompactor {
|
|
98
|
+
threshold;
|
|
99
|
+
preserveRecentTurns;
|
|
100
|
+
maxSummaryTokens;
|
|
101
|
+
tokenCounter;
|
|
102
|
+
llmCall;
|
|
103
|
+
memory;
|
|
104
|
+
debug;
|
|
105
|
+
contextWindowSize;
|
|
106
|
+
lastPreFlushSummary;
|
|
107
|
+
preFlushRetryPending = false;
|
|
108
|
+
constructor(config = {}) {
|
|
109
|
+
this.threshold = config.threshold ?? 0.7;
|
|
110
|
+
this.preserveRecentTurns = config.preserveRecentTurns ?? 5;
|
|
111
|
+
this.maxSummaryTokens = config.maxSummaryTokens ?? 500;
|
|
112
|
+
this.tokenCounter = config.tokenCounter ?? defaultTokenCounter;
|
|
113
|
+
this.llmCall = config.llmCall;
|
|
114
|
+
this.memory = config.memory;
|
|
115
|
+
this.debug = config.debug ?? false;
|
|
116
|
+
this.contextWindowSize = DEFAULT_MODEL_CONTEXT_WINDOW;
|
|
117
|
+
}
|
|
118
|
+
/* ---- Stage 1: Monitor ------------------------------------------ */
|
|
119
|
+
/**
|
|
120
|
+
* Calculate context utilization and breakdown by component.
|
|
121
|
+
*/
|
|
122
|
+
calculateUtilization(context) {
|
|
123
|
+
const systemPromptTokens = this.tokenCounter(context.systemPrompt);
|
|
124
|
+
const skillsTokens = context.skills ? this.tokenCounter(context.skills) : 0;
|
|
125
|
+
const memoriesTokens = context.memories ? this.tokenCounter(context.memories) : 0;
|
|
126
|
+
const conversationTokens = countMessageTokens(context.messages, this.tokenCounter);
|
|
127
|
+
const toolResultsTokens = context.toolResults ? this.tokenCounter(context.toolResults) : 0;
|
|
128
|
+
const totalTokens = systemPromptTokens + skillsTokens + memoriesTokens + conversationTokens + toolResultsTokens;
|
|
129
|
+
const utilization = totalTokens / this.contextWindowSize;
|
|
130
|
+
// Estimate savings: remove all but recent turns, add summary
|
|
131
|
+
const recentTurns = context.messages.slice(-this.preserveRecentTurns);
|
|
132
|
+
const recentTokens = countMessageTokens(recentTurns, this.tokenCounter);
|
|
133
|
+
const estimatedSavings = Math.max(0, conversationTokens - recentTokens - this.maxSummaryTokens);
|
|
134
|
+
return {
|
|
135
|
+
totalTokens,
|
|
136
|
+
windowSize: this.contextWindowSize,
|
|
137
|
+
utilization,
|
|
138
|
+
breakdown: {
|
|
139
|
+
systemPrompt: systemPromptTokens,
|
|
140
|
+
skills: skillsTokens,
|
|
141
|
+
memories: memoriesTokens,
|
|
142
|
+
conversation: conversationTokens,
|
|
143
|
+
toolResults: toolResultsTokens,
|
|
144
|
+
},
|
|
145
|
+
shouldCompact: utilization >= this.threshold,
|
|
146
|
+
estimatedSavings,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/* ---- Stage 2: Pre-Flush ---------------------------------------- */
|
|
150
|
+
/**
|
|
151
|
+
* Generate an LLM-powered summary before compaction.
|
|
152
|
+
* Extracts facts, decisions, and outstanding questions.
|
|
153
|
+
*/
|
|
154
|
+
async preFlush(context) {
|
|
155
|
+
if (!this.llmCall) {
|
|
156
|
+
if (this.debug) {
|
|
157
|
+
console.warn('[ContextCompactor] preFlush skipped: no llmCall configured');
|
|
158
|
+
}
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
const conversationText = formatConversationForSummary(context.messages);
|
|
162
|
+
const prompt = `Analyze this conversation and extract key information:\n\n${conversationText}`;
|
|
163
|
+
try {
|
|
164
|
+
const response = await this.llmCall(prompt, PRE_FLUSH_SYSTEM_PROMPT);
|
|
165
|
+
const parsed = parsePreFlushResponse(response);
|
|
166
|
+
const summary = {
|
|
167
|
+
...parsed,
|
|
168
|
+
timestamp: new Date(),
|
|
169
|
+
originalTurnCount: context.messages.length,
|
|
170
|
+
};
|
|
171
|
+
// Persist to memory if configured
|
|
172
|
+
if (this.memory) {
|
|
173
|
+
await this.memory.addAgentMemory('context-compactor', `preflush-${Date.now()}`, { type: 'preFlushSummary', ...summary });
|
|
174
|
+
}
|
|
175
|
+
this.lastPreFlushSummary = summary;
|
|
176
|
+
this.preFlushRetryPending = false;
|
|
177
|
+
if (this.debug) {
|
|
178
|
+
console.log('[ContextCompactor] preFlush completed:', {
|
|
179
|
+
facts: summary.facts.length,
|
|
180
|
+
decisions: summary.decisions.length,
|
|
181
|
+
outstandingQuestions: summary.outstandingQuestions.length,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
return summary;
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
if (this.debug) {
|
|
188
|
+
console.error('[ContextCompactor] preFlush failed:', error);
|
|
189
|
+
}
|
|
190
|
+
// Mark for retry on next turn (graceful degradation)
|
|
191
|
+
this.preFlushRetryPending = true;
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/* ---- Stage 3: Compact ------------------------------------------ */
|
|
196
|
+
/**
|
|
197
|
+
* Compact the context by removing older turns and injecting a summary.
|
|
198
|
+
*/
|
|
199
|
+
async compact(context) {
|
|
200
|
+
const utilization = this.calculateUtilization(context);
|
|
201
|
+
const tokensBefore = utilization.totalTokens;
|
|
202
|
+
if (!utilization.shouldCompact) {
|
|
203
|
+
return {
|
|
204
|
+
compacted: false,
|
|
205
|
+
tokensBefore,
|
|
206
|
+
tokensAfter: tokensBefore,
|
|
207
|
+
tokensSaved: 0,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
// Stage 2: Pre-flush if we have an LLM
|
|
211
|
+
let preFlushSummary = await this.preFlush(context);
|
|
212
|
+
// Graceful degradation: if pre-flush failed and we have a pending retry, skip compaction this turn
|
|
213
|
+
if (!preFlushSummary && this.preFlushRetryPending && !this.lastPreFlushSummary) {
|
|
214
|
+
if (this.debug) {
|
|
215
|
+
console.warn('[ContextCompactor] compact deferred: waiting for pre-flush retry');
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
compacted: false,
|
|
219
|
+
tokensBefore,
|
|
220
|
+
tokensAfter: tokensBefore,
|
|
221
|
+
tokensSaved: 0,
|
|
222
|
+
error: 'Pre-flush failed, retrying on next turn',
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
// Use last successful summary if current pre-flush failed
|
|
226
|
+
if (!preFlushSummary && this.lastPreFlushSummary) {
|
|
227
|
+
preFlushSummary = this.lastPreFlushSummary;
|
|
228
|
+
}
|
|
229
|
+
// Keep only recent turns
|
|
230
|
+
const recentTurns = context.messages.slice(-this.preserveRecentTurns);
|
|
231
|
+
// Build compacted messages
|
|
232
|
+
const compactedMessages = [];
|
|
233
|
+
// Inject summary as a system-like message if available
|
|
234
|
+
if (preFlushSummary) {
|
|
235
|
+
const summaryContent = buildSummaryInjection(preFlushSummary);
|
|
236
|
+
compactedMessages.push({
|
|
237
|
+
role: 'assistant',
|
|
238
|
+
content: summaryContent,
|
|
239
|
+
timestamp: new Date(),
|
|
240
|
+
metadata: { type: 'context_summary', originalTurnCount: preFlushSummary.originalTurnCount },
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
// Add recent turns
|
|
244
|
+
compactedMessages.push(...recentTurns);
|
|
245
|
+
// Update context in place
|
|
246
|
+
context.messages.length = 0;
|
|
247
|
+
context.messages.push(...compactedMessages);
|
|
248
|
+
// Calculate new token count
|
|
249
|
+
const newUtilization = this.calculateUtilization(context);
|
|
250
|
+
const tokensAfter = newUtilization.totalTokens;
|
|
251
|
+
return {
|
|
252
|
+
compacted: true,
|
|
253
|
+
tokensBefore,
|
|
254
|
+
tokensAfter,
|
|
255
|
+
tokensSaved: tokensBefore - tokensAfter,
|
|
256
|
+
preFlushSummary: preFlushSummary ?? undefined,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
/* ---- Hook interface -------------------------------------------- */
|
|
260
|
+
/**
|
|
261
|
+
* Priority for hook registration.
|
|
262
|
+
* Lower numbers execute first.
|
|
263
|
+
* Security hooks: 0
|
|
264
|
+
* Context compaction: 50
|
|
265
|
+
* User hooks: 100
|
|
266
|
+
*/
|
|
267
|
+
static HOOK_PRIORITY = 50;
|
|
268
|
+
/**
|
|
269
|
+
* Execute compaction as a beforeExecute hook.
|
|
270
|
+
* Returns the potentially modified context.
|
|
271
|
+
*/
|
|
272
|
+
async executeAsHook(context) {
|
|
273
|
+
const result = await this.compact(context);
|
|
274
|
+
if (this.debug && result.compacted) {
|
|
275
|
+
console.log('[ContextCompactor] hook executed:', {
|
|
276
|
+
tokensSaved: result.tokensSaved,
|
|
277
|
+
newUtilization: this.calculateUtilization(context).utilization,
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
return context;
|
|
281
|
+
}
|
|
282
|
+
/* ---- Lifecycle ------------------------------------------------- */
|
|
283
|
+
/**
|
|
284
|
+
* Get the last pre-flush summary (useful for debugging/auditing).
|
|
285
|
+
*/
|
|
286
|
+
getLastPreFlushSummary() {
|
|
287
|
+
return this.lastPreFlushSummary;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Whether a pre-flush retry is pending.
|
|
291
|
+
*/
|
|
292
|
+
isPreFlushRetryPending() {
|
|
293
|
+
return this.preFlushRetryPending;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Clear the pending retry flag (for testing).
|
|
297
|
+
*/
|
|
298
|
+
clearPreFlushRetryPending() {
|
|
299
|
+
this.preFlushRetryPending = false;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=context-compactor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-compactor.js","sourceRoot":"","sources":["../../../../packages/ai/src/compaction/context-compactor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Compaction Module
|
|
3
|
+
*
|
|
4
|
+
* Provides automatic context window management with LLM-powered
|
|
5
|
+
* pre-flush summarization to preserve critical information.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
export { ContextCompactor, type ContextCompactorConfig, type ContextMessage, type AgentContext, type ContextUtilization, type PreFlushSummary, type CompactionResult, } from './context-compactor.js';
|
|
10
|
+
export { MemoryCompaction, type MemoryCompactionConfig, type MemoryEntry, type DeduplicationResult, type ConversationSummaryResult, type FactArchivalResult, } from './memory-compaction.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/ai/src/compaction/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,GACxB,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Compaction Module
|
|
3
|
+
*
|
|
4
|
+
* Provides automatic context window management with LLM-powered
|
|
5
|
+
* pre-flush summarization to preserve critical information.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
export { ContextCompactor, } from './context-compactor.js';
|
|
10
|
+
export { MemoryCompaction, } from './memory-compaction.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/ai/src/compaction/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,gBAAgB,GAOjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gBAAgB,GAMjB,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module compaction/memory-compaction
|
|
3
|
+
* @description Memory compaction utilities for FileMemoryAdapter.
|
|
4
|
+
*
|
|
5
|
+
* Extends context compaction to:
|
|
6
|
+
* 1. Deduplicate entries across file-based and mem0 backends
|
|
7
|
+
* 2. Use hybrid search (BM25 + vector) for dedup when SQLite index available
|
|
8
|
+
* 3. Consolidate conversation files >N days old into monthly summaries
|
|
9
|
+
* 4. Archive contradicted/stale facts instead of deleting
|
|
10
|
+
*
|
|
11
|
+
* @license MIT
|
|
12
|
+
* @copyright DCYFR Labs (https://www.dcyfr.ai)
|
|
13
|
+
*/
|
|
14
|
+
export interface MemoryEntry {
|
|
15
|
+
/** Unique ID */
|
|
16
|
+
id: string;
|
|
17
|
+
/** Memory content */
|
|
18
|
+
content: string;
|
|
19
|
+
/** Source backend: 'file' or 'mem0' */
|
|
20
|
+
source: 'file' | 'mem0';
|
|
21
|
+
/** SHA-256 of content */
|
|
22
|
+
hash: string;
|
|
23
|
+
/** Timestamp */
|
|
24
|
+
timestamp: string;
|
|
25
|
+
/** Topic/category */
|
|
26
|
+
topic?: string;
|
|
27
|
+
/** Owner (userId or agentId) */
|
|
28
|
+
owner?: string;
|
|
29
|
+
/** Additional metadata */
|
|
30
|
+
metadata?: Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
export interface DeduplicationResult {
|
|
33
|
+
/** Total entries before dedup */
|
|
34
|
+
totalBefore: number;
|
|
35
|
+
/** Total entries after dedup */
|
|
36
|
+
totalAfter: number;
|
|
37
|
+
/** Number of duplicates removed */
|
|
38
|
+
duplicatesRemoved: number;
|
|
39
|
+
/** Entries kept (deduplicated) */
|
|
40
|
+
entries: MemoryEntry[];
|
|
41
|
+
/** Duplicate pairs found */
|
|
42
|
+
duplicatePairs: Array<{
|
|
43
|
+
kept: string;
|
|
44
|
+
removed: string;
|
|
45
|
+
similarity: number;
|
|
46
|
+
}>;
|
|
47
|
+
}
|
|
48
|
+
export interface ConversationSummaryResult {
|
|
49
|
+
/** Number of conversation files processed */
|
|
50
|
+
filesProcessed: number;
|
|
51
|
+
/** Number of monthly summaries created */
|
|
52
|
+
summariesCreated: number;
|
|
53
|
+
/** Paths of created summary files */
|
|
54
|
+
summaryPaths: string[];
|
|
55
|
+
/** Paths of archived conversation files */
|
|
56
|
+
archivedPaths: string[];
|
|
57
|
+
}
|
|
58
|
+
export interface FactArchivalResult {
|
|
59
|
+
/** Number of facts evaluated */
|
|
60
|
+
factsEvaluated: number;
|
|
61
|
+
/** Number of stale facts archived */
|
|
62
|
+
factsArchived: number;
|
|
63
|
+
/** Archived facts with reasons */
|
|
64
|
+
archivedFacts: Array<{
|
|
65
|
+
id: string;
|
|
66
|
+
content: string;
|
|
67
|
+
reason: string;
|
|
68
|
+
}>;
|
|
69
|
+
/** Path to archive file */
|
|
70
|
+
archivePath: string;
|
|
71
|
+
}
|
|
72
|
+
export interface MemoryCompactionConfig {
|
|
73
|
+
/** Memory root directory (default: ~/.dcyfr/memory) */
|
|
74
|
+
rootDir: string;
|
|
75
|
+
/** Agent ID for namespacing */
|
|
76
|
+
agentId: string;
|
|
77
|
+
/** BM25 similarity threshold for dedup (0-1). Default: 0.85 */
|
|
78
|
+
dedupThreshold?: number;
|
|
79
|
+
/** Conversation retention period in days. Default: 30 */
|
|
80
|
+
retentionDays?: number;
|
|
81
|
+
/** Optional LLM function for fact contradiction detection */
|
|
82
|
+
llmCall?: (prompt: string, systemPrompt: string) => Promise<string>;
|
|
83
|
+
/** Optional embedding function for vector-based dedup */
|
|
84
|
+
embedFn?: (text: string) => Promise<number[]>;
|
|
85
|
+
/** Enable debug logging */
|
|
86
|
+
debug?: boolean;
|
|
87
|
+
}
|
|
88
|
+
export declare class MemoryCompaction {
|
|
89
|
+
private readonly rootDir;
|
|
90
|
+
private readonly agentId;
|
|
91
|
+
private readonly dedupThreshold;
|
|
92
|
+
private readonly retentionDays;
|
|
93
|
+
private readonly llmCall?;
|
|
94
|
+
private readonly embedFn?;
|
|
95
|
+
private readonly debug;
|
|
96
|
+
constructor(config: MemoryCompactionConfig);
|
|
97
|
+
/**
|
|
98
|
+
* Deduplicate memory entries across file and mem0 backends.
|
|
99
|
+
*
|
|
100
|
+
* Algorithm:
|
|
101
|
+
* 1. Collect all entries from file backend
|
|
102
|
+
* 2. Collect all entries from mem0 backend (if provided)
|
|
103
|
+
* 3. Hash-based exact dedup (O(n))
|
|
104
|
+
* 4. Similarity-based fuzzy dedup (O(n²) but typically small n)
|
|
105
|
+
* 5. Keep file-backend entries over mem0 (file is source of truth)
|
|
106
|
+
*/
|
|
107
|
+
deduplicateEntries(fileEntries: MemoryEntry[], mem0Entries?: MemoryEntry[]): DeduplicationResult;
|
|
108
|
+
/**
|
|
109
|
+
* Enhanced deduplication using vector embeddings when available.
|
|
110
|
+
* Falls back to BM25-only (textSimilarity) when embeddings unavailable.
|
|
111
|
+
*/
|
|
112
|
+
deduplicateWithHybridSearch(entries: MemoryEntry[]): Promise<DeduplicationResult>;
|
|
113
|
+
/**
|
|
114
|
+
* Consolidate conversation files older than retentionDays into monthly summaries.
|
|
115
|
+
*
|
|
116
|
+
* 1. Scan conversations directory for files older than threshold
|
|
117
|
+
* 2. Group by month
|
|
118
|
+
* 3. Generate summary per month (LLM if available, else concatenate)
|
|
119
|
+
* 4. Write summary to summaries directory
|
|
120
|
+
* 5. Move original files to archive
|
|
121
|
+
*/
|
|
122
|
+
compactConversations(): Promise<ConversationSummaryResult>;
|
|
123
|
+
/**
|
|
124
|
+
* Archive stale or contradicted facts to facts-archived.md.
|
|
125
|
+
*
|
|
126
|
+
* Strategy:
|
|
127
|
+
* 1. Read all facts from facts.md
|
|
128
|
+
* 2. Detect contradictions (LLM-powered when available)
|
|
129
|
+
* 3. Move stale/contradicted facts to facts-archived.md
|
|
130
|
+
* 4. Rewrite facts.md without archived entries
|
|
131
|
+
*/
|
|
132
|
+
archiveStaleFacts(): Promise<FactArchivalResult>;
|
|
133
|
+
private _fallbackSummary;
|
|
134
|
+
private _detectContradictions;
|
|
135
|
+
private _detectContradictionsWithLLM;
|
|
136
|
+
private _detectContradictionsHeuristic;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=memory-compaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-compaction.d.ts","sourceRoot":"","sources":["../../../../packages/ai/src/compaction/memory-compaction.ts"],"names":[],"mappings":"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"}
|