qlogicagent 2.13.4 → 2.13.5
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/agent/agent.d.ts +48 -0
- package/dist/agent/agent.js +197 -0
- package/dist/agent/memory-recall-context.d.ts +18 -0
- package/dist/agent/memory-recall-context.js +139 -0
- package/dist/agent/memory-recall-context.test.d.ts +1 -0
- package/dist/agent/memory-recall-context.test.js +58 -0
- package/dist/agent/memory-recall-injection.d.ts +34 -0
- package/dist/agent/memory-recall-injection.js +66 -0
- package/dist/agent/runtime-vars.d.ts +48 -0
- package/dist/agent/runtime-vars.js +54 -0
- package/dist/agent/tool-access.d.ts +1 -0
- package/dist/agent/tool-access.js +1 -0
- package/dist/agent/tool-loop/artifact-events.d.ts +17 -0
- package/dist/agent/tool-loop/artifact-events.js +75 -0
- package/dist/agent/tool-loop/budget-continuation-policy.d.ts +22 -0
- package/dist/agent/tool-loop/budget-continuation-policy.js +44 -0
- package/dist/agent/tool-loop/completion-action-policy.d.ts +19 -0
- package/dist/agent/tool-loop/completion-action-policy.js +68 -0
- package/dist/agent/tool-loop/completion-action-policy.test.d.ts +1 -0
- package/dist/agent/tool-loop/completion-action-policy.test.js +77 -0
- package/dist/agent/tool-loop/completion-stop-policy.d.ts +19 -0
- package/dist/agent/tool-loop/completion-stop-policy.js +31 -0
- package/dist/agent/tool-loop/compression-pipeline.d.ts +44 -0
- package/dist/agent/tool-loop/compression-pipeline.js +68 -0
- package/dist/agent/tool-loop/loop-helpers.d.ts +15 -0
- package/dist/agent/tool-loop/loop-helpers.js +86 -0
- package/dist/agent/tool-loop/recovery-helpers.d.ts +18 -0
- package/dist/agent/tool-loop/recovery-helpers.js +42 -0
- package/dist/agent/tool-loop/single-round.d.ts +2 -0
- package/dist/agent/tool-loop/single-round.js +43 -0
- package/dist/agent/tool-loop/skill-instruction-policy.d.ts +7 -0
- package/dist/agent/tool-loop/skill-instruction-policy.js +18 -0
- package/dist/agent/tool-loop/stream-error-recovery.d.ts +59 -0
- package/dist/agent/tool-loop/stream-error-recovery.js +93 -0
- package/dist/agent/tool-loop/tool-failure-policy.d.ts +22 -0
- package/dist/agent/tool-loop/tool-failure-policy.js +46 -0
- package/dist/agent/tool-loop/tool-result-events.d.ts +11 -0
- package/dist/agent/tool-loop/tool-result-events.js +59 -0
- package/dist/agent/tool-loop/tool-result-events.test.d.ts +1 -0
- package/dist/agent/tool-loop/tool-result-events.test.js +30 -0
- package/dist/agent/tool-loop.contract.test.d.ts +1 -0
- package/dist/agent/tool-loop.contract.test.js +254 -0
- package/dist/agent/tool-loop.d.ts +121 -0
- package/dist/agent/tool-loop.js +1017 -0
- package/dist/agent/tool-loop.policy-architecture.test.d.ts +1 -0
- package/dist/agent/tool-loop.policy-architecture.test.js +21 -0
- package/dist/agent/tool-loop.states.test.d.ts +1 -0
- package/dist/agent/tool-loop.states.test.js +211 -0
- package/dist/agent/tunable-defaults.d.ts +1 -0
- package/dist/agent/tunable-defaults.js +1 -0
- package/dist/agent/types.d.ts +311 -0
- package/dist/agent/types.js +8 -0
- package/dist/cli/acp-commands.d.ts +32 -0
- package/dist/cli/acp-commands.js +145 -0
- package/dist/cli/acp-commands.test.d.ts +1 -0
- package/dist/cli/acp-commands.test.js +89 -0
- package/dist/cli/acp-extended-handlers.d.ts +69 -0
- package/dist/cli/acp-extended-handlers.js +484 -0
- package/dist/cli/acp-extended-handlers.product-confirm.test.d.ts +1 -0
- package/dist/cli/acp-extended-handlers.product-confirm.test.js +56 -0
- package/dist/cli/acp-extended-handlers.product-project.test.d.ts +1 -0
- package/dist/cli/acp-extended-handlers.product-project.test.js +66 -0
- package/dist/cli/acp-extended-handlers.solo-project.test.d.ts +1 -0
- package/dist/cli/acp-extended-handlers.solo-project.test.js +51 -0
- package/dist/cli/acp-extended-handlers.specchat.test.d.ts +1 -0
- package/dist/cli/acp-extended-handlers.specchat.test.js +62 -0
- package/dist/cli/acp-extended-handlers.workflowchat.test.d.ts +1 -0
- package/dist/cli/acp-extended-handlers.workflowchat.test.js +49 -0
- package/dist/cli/acp-extended-host-adapter.d.ts +29 -0
- package/dist/cli/acp-extended-host-adapter.js +40 -0
- package/dist/cli/acp-extended-host-adapter.test.d.ts +1 -0
- package/dist/cli/acp-extended-host-adapter.test.js +63 -0
- package/dist/cli/acp-message-router.d.ts +8 -0
- package/dist/cli/acp-message-router.js +40 -0
- package/dist/cli/acp-message-router.test.d.ts +1 -0
- package/dist/cli/acp-message-router.test.js +30 -0
- package/dist/cli/acp-session-handlers.d.ts +41 -0
- package/dist/cli/acp-session-handlers.js +304 -0
- package/dist/cli/acp-session-handlers.test.d.ts +1 -0
- package/dist/cli/acp-session-handlers.test.js +346 -0
- package/dist/cli/acp-session-host.d.ts +48 -0
- package/dist/cli/acp-session-host.js +1 -0
- package/dist/cli/agent-config-coordinator.d.ts +16 -0
- package/dist/cli/agent-config-coordinator.js +56 -0
- package/dist/cli/agent-config-coordinator.test.d.ts +1 -0
- package/dist/cli/agent-config-coordinator.test.js +51 -0
- package/dist/cli/agent-config-runtime.d.ts +11 -0
- package/dist/cli/agent-config-runtime.js +4 -0
- package/dist/cli/agent-runner-factory.d.ts +2 -0
- package/dist/cli/agent-runner-factory.js +11 -0
- package/dist/cli/agent-runtime-bootstrap.d.ts +67 -0
- package/dist/cli/agent-runtime-bootstrap.js +104 -0
- package/dist/cli/agent-runtime-ports-adapter.d.ts +2 -0
- package/dist/cli/agent-runtime-ports-adapter.js +22 -0
- package/dist/cli/agent-runtime-session-state.d.ts +24 -0
- package/dist/cli/agent-runtime-session-state.js +51 -0
- package/dist/cli/agent-status-notifier.d.ts +11 -0
- package/dist/cli/agent-status-notifier.js +26 -0
- package/dist/cli/agent-status-notifier.test.d.ts +1 -0
- package/dist/cli/agent-status-notifier.test.js +33 -0
- package/dist/cli/base-tool-bootstrap.d.ts +16 -0
- package/dist/cli/base-tool-bootstrap.js +20 -0
- package/dist/cli/cli-acp-request-handler.d.ts +11 -0
- package/dist/cli/cli-acp-request-handler.js +61 -0
- package/dist/cli/cli-acp-request-handler.test.d.ts +1 -0
- package/dist/cli/cli-acp-request-handler.test.js +58 -0
- package/dist/cli/cli-agent-builder.d.ts +35 -0
- package/dist/cli/cli-agent-builder.js +33 -0
- package/dist/cli/community-resource-installer.d.ts +30 -0
- package/dist/cli/community-resource-installer.js +66 -0
- package/dist/cli/community-resource-installer.test.d.ts +1 -0
- package/dist/cli/community-resource-installer.test.js +175 -0
- package/dist/cli/community-skill-installer.d.ts +12 -0
- package/dist/cli/community-skill-installer.js +220 -0
- package/dist/cli/community-skill-installer.test.d.ts +1 -0
- package/dist/cli/community-skill-installer.test.js +179 -0
- package/dist/cli/community-workflow-installer.d.ts +29 -0
- package/dist/cli/community-workflow-installer.js +69 -0
- package/dist/cli/conversation-context.d.ts +30 -0
- package/dist/cli/conversation-context.js +69 -0
- package/dist/cli/conversation-context.test.d.ts +1 -0
- package/dist/cli/conversation-context.test.js +61 -0
- package/dist/cli/core-tool-coordinator.d.ts +41 -0
- package/dist/cli/core-tool-coordinator.js +55 -0
- package/dist/cli/core-tools/agent-tool-bootstrap.d.ts +12 -0
- package/dist/cli/core-tools/agent-tool-bootstrap.js +5 -0
- package/dist/cli/core-tools/agent-tool-service.background.test.d.ts +1 -0
- package/dist/cli/core-tools/agent-tool-service.background.test.js +212 -0
- package/dist/cli/core-tools/agent-tool-service.d.ts +36 -0
- package/dist/cli/core-tools/agent-tool-service.js +152 -0
- package/dist/cli/core-tools/checkpoint-tool-bootstrap.d.ts +9 -0
- package/dist/cli/core-tools/checkpoint-tool-bootstrap.js +8 -0
- package/dist/cli/core-tools/checkpoint-tool-service.d.ts +7 -0
- package/dist/cli/core-tools/checkpoint-tool-service.js +5 -0
- package/dist/cli/core-tools/config-tool-bootstrap.d.ts +5 -0
- package/dist/cli/core-tools/config-tool-bootstrap.js +5 -0
- package/dist/cli/core-tools/config-tool-service.d.ts +11 -0
- package/dist/cli/core-tools/config-tool-service.js +86 -0
- package/dist/cli/core-tools/config-tool-service.test.d.ts +1 -0
- package/dist/cli/core-tools/config-tool-service.test.js +69 -0
- package/dist/cli/core-tools/cron-tool-bootstrap.d.ts +8 -0
- package/dist/cli/core-tools/cron-tool-bootstrap.js +8 -0
- package/dist/cli/core-tools/cron-workflow-service.d.ts +7 -0
- package/dist/cli/core-tools/cron-workflow-service.js +206 -0
- package/dist/cli/core-tools/cron-workflow-service.test.d.ts +1 -0
- package/dist/cli/core-tools/cron-workflow-service.test.js +78 -0
- package/dist/cli/core-tools/fork-system-prompt.d.ts +45 -0
- package/dist/cli/core-tools/fork-system-prompt.js +66 -0
- package/dist/cli/core-tools/fork-system-prompt.test.d.ts +1 -0
- package/dist/cli/core-tools/fork-system-prompt.test.js +77 -0
- package/dist/cli/core-tools/monitor-tool-bootstrap.d.ts +7 -0
- package/dist/cli/core-tools/monitor-tool-bootstrap.js +8 -0
- package/dist/cli/core-tools/monitor-tool-service.d.ts +6 -0
- package/dist/cli/core-tools/monitor-tool-service.js +74 -0
- package/dist/cli/core-tools/registry.d.ts +8 -0
- package/dist/cli/core-tools/registry.js +60 -0
- package/dist/cli/core-tools/session-tool-manifest.d.ts +12 -0
- package/dist/cli/core-tools/session-tool-manifest.js +19 -0
- package/dist/cli/core-tools/team-registry.d.ts +62 -0
- package/dist/cli/core-tools/team-registry.js +85 -0
- package/dist/cli/core-tools/team-registry.test.d.ts +1 -0
- package/dist/cli/core-tools/team-registry.test.js +79 -0
- package/dist/cli/core-tools/team-tool-bootstrap.d.ts +11 -0
- package/dist/cli/core-tools/team-tool-bootstrap.js +8 -0
- package/dist/cli/core-tools/team-tool-service.d.ts +43 -0
- package/dist/cli/core-tools/team-tool-service.js +326 -0
- package/dist/cli/core-tools/team-tool-service.test.d.ts +1 -0
- package/dist/cli/core-tools/team-tool-service.test.js +48 -0
- package/dist/cli/credential-vault.d.ts +62 -0
- package/dist/cli/credential-vault.js +190 -0
- package/dist/cli/credential-vault.test.d.ts +6 -0
- package/dist/cli/credential-vault.test.js +130 -0
- package/dist/cli/default-project-bootstrap.d.ts +8 -0
- package/dist/cli/default-project-bootstrap.js +39 -0
- package/dist/cli/dev-tool-bootstrap.d.ts +8 -0
- package/dist/cli/dev-tool-bootstrap.js +19 -0
- package/dist/cli/dev-tools/dev-tool-bootstrap-service.d.ts +6 -0
- package/dist/cli/dev-tools/dev-tool-bootstrap-service.js +6 -0
- package/dist/cli/dev-tools/dev-tool-registry.d.ts +6 -0
- package/dist/cli/dev-tools/dev-tool-registry.js +7 -0
- package/dist/cli/dev-tools/lsp-tool-service.d.ts +5 -0
- package/dist/cli/dev-tools/lsp-tool-service.js +30 -0
- package/dist/cli/dev-tools/lsp-tool-service.test.d.ts +1 -0
- package/dist/cli/dev-tools/lsp-tool-service.test.js +14 -0
- package/dist/cli/dream-host-adapter.d.ts +23 -0
- package/dist/cli/dream-host-adapter.js +33 -0
- package/dist/cli/gateway-rpc-connection.d.ts +50 -0
- package/dist/cli/gateway-rpc-connection.js +133 -0
- package/dist/cli/handlers/agents-handler.d.ts +51 -0
- package/dist/cli/handlers/agents-handler.js +769 -0
- package/dist/cli/handlers/community-handler.d.ts +39 -0
- package/dist/cli/handlers/community-handler.js +671 -0
- package/dist/cli/handlers/community-handler.test.d.ts +1 -0
- package/dist/cli/handlers/community-handler.test.js +1602 -0
- package/dist/cli/handlers/config-handler.d.ts +28 -0
- package/dist/cli/handlers/config-handler.js +438 -0
- package/dist/cli/handlers/config-handler.test.d.ts +1 -0
- package/dist/cli/handlers/config-handler.test.js +140 -0
- package/dist/cli/handlers/config-handler.tools-list.test.d.ts +1 -0
- package/dist/cli/handlers/config-handler.tools-list.test.js +93 -0
- package/dist/cli/handlers/control-handler.d.ts +23 -0
- package/dist/cli/handlers/control-handler.js +88 -0
- package/dist/cli/handlers/dream-handler.d.ts +31 -0
- package/dist/cli/handlers/dream-handler.js +235 -0
- package/dist/cli/handlers/files-handler.d.ts +22 -0
- package/dist/cli/handlers/files-handler.instructions.test.d.ts +1 -0
- package/dist/cli/handlers/files-handler.instructions.test.js +127 -0
- package/dist/cli/handlers/files-handler.js +593 -0
- package/dist/cli/handlers/media-handler.d.ts +19 -0
- package/dist/cli/handlers/media-handler.js +212 -0
- package/dist/cli/handlers/media-handler.test.d.ts +1 -0
- package/dist/cli/handlers/media-handler.test.js +107 -0
- package/dist/cli/handlers/memory-handler.d.ts +61 -0
- package/dist/cli/handlers/memory-handler.js +792 -0
- package/dist/cli/handlers/pet-confirm-handler.d.ts +7 -0
- package/dist/cli/handlers/pet-confirm-handler.js +6 -0
- package/dist/cli/handlers/pet-handler.d.ts +47 -0
- package/dist/cli/handlers/pet-handler.js +455 -0
- package/dist/cli/handlers/pet-handler.test.d.ts +1 -0
- package/dist/cli/handlers/pet-handler.test.js +620 -0
- package/dist/cli/handlers/product-handler.d.ts +37 -0
- package/dist/cli/handlers/product-handler.js +393 -0
- package/dist/cli/handlers/project-handler.d.ts +28 -0
- package/dist/cli/handlers/project-handler.js +421 -0
- package/dist/cli/handlers/session-handler.channel.test.d.ts +1 -0
- package/dist/cli/handlers/session-handler.channel.test.js +157 -0
- package/dist/cli/handlers/session-handler.d.ts +58 -0
- package/dist/cli/handlers/session-handler.delete.test.d.ts +1 -0
- package/dist/cli/handlers/session-handler.delete.test.js +38 -0
- package/dist/cli/handlers/session-handler.js +833 -0
- package/dist/cli/handlers/session-handler.resume.test.d.ts +1 -0
- package/dist/cli/handlers/session-handler.resume.test.js +66 -0
- package/dist/cli/handlers/settings-handler.d.ts +19 -0
- package/dist/cli/handlers/settings-handler.js +710 -0
- package/dist/cli/handlers/settings-handler.remote-catalog.test.d.ts +1 -0
- package/dist/cli/handlers/settings-handler.remote-catalog.test.js +1247 -0
- package/dist/cli/handlers/skills-handler.d.ts +29 -0
- package/dist/cli/handlers/skills-handler.js +368 -0
- package/dist/cli/handlers/skills-handler.profile.test.d.ts +1 -0
- package/dist/cli/handlers/skills-handler.profile.test.js +70 -0
- package/dist/cli/handlers/solo-handler.d.ts +38 -0
- package/dist/cli/handlers/solo-handler.js +351 -0
- package/dist/cli/handlers/turn-handler.d.ts +52 -0
- package/dist/cli/handlers/turn-handler.js +574 -0
- package/dist/cli/handlers/turn-handler.test.d.ts +1 -0
- package/dist/cli/handlers/turn-handler.test.js +22 -0
- package/dist/cli/handlers/workflow-handler.d.ts +181 -0
- package/dist/cli/handlers/workflow-handler.events.test.d.ts +1 -0
- package/dist/cli/handlers/workflow-handler.events.test.js +113 -0
- package/dist/cli/handlers/workflow-handler.js +1449 -0
- package/dist/cli/handlers/workflow-handler.multiroot.test.d.ts +12 -0
- package/dist/cli/handlers/workflow-handler.multiroot.test.js +745 -0
- package/dist/cli/idle-dream-coordinator.d.ts +47 -0
- package/dist/cli/idle-dream-coordinator.js +126 -0
- package/dist/cli/idle-dream-coordinator.test.d.ts +1 -0
- package/dist/cli/idle-dream-coordinator.test.js +125 -0
- package/dist/cli/main.d.ts +15 -0
- package/dist/cli/main.js +112 -0
- package/dist/cli/mcp-bootstrap.d.ts +20 -0
- package/dist/cli/mcp-bootstrap.js +66 -0
- package/dist/cli/mcp-plugin-bootstrap.d.ts +2 -0
- package/dist/cli/mcp-plugin-bootstrap.js +2 -0
- package/dist/cli/mcp-plugin-bootstrap.test.d.ts +1 -0
- package/dist/cli/mcp-plugin-bootstrap.test.js +38 -0
- package/dist/cli/mcp-tool-proxy.d.ts +7 -0
- package/dist/cli/mcp-tool-proxy.js +15 -0
- package/dist/cli/media-capability-schema.d.ts +49 -0
- package/dist/cli/media-capability-schema.js +384 -0
- package/dist/cli/media-capability-schema.test.d.ts +1 -0
- package/dist/cli/media-capability-schema.test.js +103 -0
- package/dist/cli/media-file-api-service.d.ts +73 -0
- package/dist/cli/media-file-api-service.js +143 -0
- package/dist/cli/media-file-api-service.test.d.ts +1 -0
- package/dist/cli/media-file-api-service.test.js +119 -0
- package/dist/cli/media-file-tool-service.d.ts +13 -0
- package/dist/cli/media-file-tool-service.js +63 -0
- package/dist/cli/media-runtime-capability.test.d.ts +1 -0
- package/dist/cli/media-runtime-capability.test.js +106 -0
- package/dist/cli/media-runtime-facade.d.ts +51 -0
- package/dist/cli/media-runtime-facade.js +389 -0
- package/dist/cli/media-runtime-facade.test.d.ts +1 -0
- package/dist/cli/media-runtime-facade.test.js +42 -0
- package/dist/cli/memory-candidate-service.d.ts +83 -0
- package/dist/cli/memory-candidate-service.js +341 -0
- package/dist/cli/memory-coordinator.d.ts +37 -0
- package/dist/cli/memory-coordinator.js +85 -0
- package/dist/cli/memory-coordinator.test.d.ts +1 -0
- package/dist/cli/memory-coordinator.test.js +78 -0
- package/dist/cli/memory-multimodal.test.d.ts +1 -0
- package/dist/cli/memory-multimodal.test.js +137 -0
- package/dist/cli/model-client-resolver.d.ts +31 -0
- package/dist/cli/model-client-resolver.js +173 -0
- package/dist/cli/model-client-resolver.test.d.ts +1 -0
- package/dist/cli/model-client-resolver.test.js +105 -0
- package/dist/cli/multi-agent-handler-host.d.ts +27 -0
- package/dist/cli/multi-agent-handler-host.js +55 -0
- package/dist/cli/multi-agent-handler-host.test.d.ts +1 -0
- package/dist/cli/multi-agent-handler-host.test.js +63 -0
- package/dist/cli/multi-agent-state-coordinator.d.ts +11 -0
- package/dist/cli/multi-agent-state-coordinator.js +7 -0
- package/dist/cli/permission-approval-bridge.d.ts +15 -0
- package/dist/cli/permission-approval-bridge.js +66 -0
- package/dist/cli/permission-approval-bridge.test.d.ts +1 -0
- package/dist/cli/permission-approval-bridge.test.js +100 -0
- package/dist/cli/permission-bootstrap.d.ts +40 -0
- package/dist/cli/permission-bootstrap.js +58 -0
- package/dist/cli/permission-bootstrap.test.d.ts +1 -0
- package/dist/cli/permission-bootstrap.test.js +129 -0
- package/dist/cli/permission-runtime-service.d.ts +9 -0
- package/dist/cli/permission-runtime-service.js +11 -0
- package/dist/cli/permission-settings-store.d.ts +1 -0
- package/dist/cli/permission-settings-store.js +3 -0
- package/dist/cli/permission-settings-store.test.d.ts +1 -0
- package/dist/cli/permission-settings-store.test.js +65 -0
- package/dist/cli/pet-confirm-coordinator.d.ts +20 -0
- package/dist/cli/pet-confirm-coordinator.js +32 -0
- package/dist/cli/pet-confirm-coordinator.test.d.ts +1 -0
- package/dist/cli/pet-confirm-coordinator.test.js +34 -0
- package/dist/cli/pet-runtime.d.ts +55 -0
- package/dist/cli/pet-runtime.js +220 -0
- package/dist/cli/pet-runtime.test.d.ts +1 -0
- package/dist/cli/pet-runtime.test.js +46 -0
- package/dist/cli/plugin-bootstrap.d.ts +15 -0
- package/dist/cli/plugin-bootstrap.js +63 -0
- package/dist/cli/product-coordinator.d.ts +34 -0
- package/dist/cli/product-coordinator.js +124 -0
- package/dist/cli/product-coordinator.test.d.ts +1 -0
- package/dist/cli/product-coordinator.test.js +51 -0
- package/dist/cli/project-command-service.d.ts +28 -0
- package/dist/cli/project-command-service.js +99 -0
- package/dist/cli/project-context.d.ts +1 -0
- package/dist/cli/project-context.js +4 -0
- package/dist/cli/project-memory-store-factory.d.ts +2 -0
- package/dist/cli/project-memory-store-factory.js +11 -0
- package/dist/cli/project-template-seeder.d.ts +5 -0
- package/dist/cli/project-template-seeder.js +43 -0
- package/dist/cli/provider-core-facade.d.ts +31 -0
- package/dist/cli/provider-core-facade.js +51 -0
- package/dist/cli/provider-core-facade.test.d.ts +1 -0
- package/dist/cli/provider-core-facade.test.js +9 -0
- package/dist/cli/resolved-agent-cache.d.ts +47 -0
- package/dist/cli/resolved-agent-cache.js +38 -0
- package/dist/cli/rpc-registry.community.test.d.ts +1 -0
- package/dist/cli/rpc-registry.community.test.js +45 -0
- package/dist/cli/rpc-registry.d.ts +62 -0
- package/dist/cli/rpc-registry.js +243 -0
- package/dist/cli/runtime-dependency-catalog.d.ts +56 -0
- package/dist/cli/runtime-dependency-catalog.js +110 -0
- package/dist/cli/runtime-hook-bootstrap.d.ts +38 -0
- package/dist/cli/runtime-hook-bootstrap.js +71 -0
- package/dist/cli/runtime-watcher-bootstrap.d.ts +15 -0
- package/dist/cli/runtime-watcher-bootstrap.js +30 -0
- package/dist/cli/session-context.d.ts +32 -0
- package/dist/cli/session-context.js +15 -0
- package/dist/cli/session-coordinator.d.ts +22 -0
- package/dist/cli/session-coordinator.js +47 -0
- package/dist/cli/session-coordinator.test.d.ts +1 -0
- package/dist/cli/session-coordinator.test.js +61 -0
- package/dist/cli/session-history-coordinator.d.ts +8 -0
- package/dist/cli/session-history-coordinator.js +57 -0
- package/dist/cli/session-history-coordinator.test.d.ts +1 -0
- package/dist/cli/session-history-coordinator.test.js +39 -0
- package/dist/cli/session-query-service.d.ts +24 -0
- package/dist/cli/session-query-service.js +57 -0
- package/dist/cli/skill-meta-subturn-service.d.ts +26 -0
- package/dist/cli/skill-meta-subturn-service.js +93 -0
- package/dist/cli/skill-meta-tool-bootstrap.d.ts +34 -0
- package/dist/cli/skill-meta-tool-bootstrap.js +295 -0
- package/dist/cli/skill-meta-tool-bootstrap.test.d.ts +1 -0
- package/dist/cli/skill-meta-tool-bootstrap.test.js +42 -0
- package/dist/cli/skill-supporting-file.test.d.ts +1 -0
- package/dist/cli/skill-supporting-file.test.js +97 -0
- package/dist/cli/skills-query-service.d.ts +29 -0
- package/dist/cli/skills-query-service.js +38 -0
- package/dist/cli/stdio-acp-protocol-coordinator.d.ts +18 -0
- package/dist/cli/stdio-acp-protocol-coordinator.js +33 -0
- package/dist/cli/stdio-acp-request-host.d.ts +28 -0
- package/dist/cli/stdio-acp-request-host.js +82 -0
- package/dist/cli/stdio-acp-request-host.test.d.ts +1 -0
- package/dist/cli/stdio-acp-request-host.test.js +61 -0
- package/dist/cli/stdio-agent-session-bootstrap.d.ts +80 -0
- package/dist/cli/stdio-agent-session-bootstrap.js +74 -0
- package/dist/cli/stdio-rpc-handler-hosts.d.ts +50 -0
- package/dist/cli/stdio-rpc-handler-hosts.js +135 -0
- package/dist/cli/stdio-rpc-handler-hosts.test.d.ts +1 -0
- package/dist/cli/stdio-rpc-handler-hosts.test.js +10 -0
- package/dist/cli/stdio-runtime-bootstrap.d.ts +16 -0
- package/dist/cli/stdio-runtime-bootstrap.js +17 -0
- package/dist/cli/stdio-runtime-services.d.ts +36 -0
- package/dist/cli/stdio-runtime-services.js +53 -0
- package/dist/cli/stdio-server.architecture.test.d.ts +1 -0
- package/dist/cli/stdio-server.architecture.test.js +18 -0
- package/dist/cli/stdio-server.contract.test.d.ts +1 -0
- package/dist/cli/stdio-server.contract.test.js +96 -0
- package/dist/cli/stdio-server.d.ts +211 -0
- package/dist/cli/stdio-server.js +731 -0
- package/dist/cli/stdio-session-runtime-coordinator.d.ts +19 -0
- package/dist/cli/stdio-session-runtime-coordinator.js +21 -0
- package/dist/cli/test-support/tool-catalog-fixture.d.ts +3 -0
- package/dist/cli/test-support/tool-catalog-fixture.js +98 -0
- package/dist/cli/tool-bootstrap-core-registration.d.ts +30 -0
- package/dist/cli/tool-bootstrap-core-registration.js +555 -0
- package/dist/cli/tool-bootstrap-media-registration.d.ts +8 -0
- package/dist/cli/tool-bootstrap-media-registration.js +348 -0
- package/dist/cli/tool-bootstrap-paths.d.ts +7 -0
- package/dist/cli/tool-bootstrap-paths.js +17 -0
- package/dist/cli/tool-bootstrap-providers.d.ts +3 -0
- package/dist/cli/tool-bootstrap-providers.js +10 -0
- package/dist/cli/tool-bootstrap-web-registration.d.ts +13 -0
- package/dist/cli/tool-bootstrap-web-registration.js +144 -0
- package/dist/cli/tool-bootstrap-workflow-registration.d.ts +7 -0
- package/dist/cli/tool-bootstrap-workflow-registration.js +65 -0
- package/dist/cli/tool-bootstrap.background-exec.test.d.ts +1 -0
- package/dist/cli/tool-bootstrap.background-exec.test.js +83 -0
- package/dist/cli/tool-bootstrap.cwd.test.d.ts +1 -0
- package/dist/cli/tool-bootstrap.cwd.test.js +37 -0
- package/dist/cli/tool-bootstrap.d.ts +63 -0
- package/dist/cli/tool-bootstrap.instructions.test.d.ts +1 -0
- package/dist/cli/tool-bootstrap.instructions.test.js +37 -0
- package/dist/cli/tool-bootstrap.js +255 -0
- package/dist/cli/tool-bootstrap.media-provider-alias.test.d.ts +1 -0
- package/dist/cli/tool-bootstrap.media-provider-alias.test.js +90 -0
- package/dist/cli/tool-bootstrap.test.d.ts +1 -0
- package/dist/cli/tool-bootstrap.test.js +94 -0
- package/dist/cli/tool-catalog.d.ts +4 -0
- package/dist/cli/tool-catalog.js +14 -0
- package/dist/cli/tool-invoker-factory.d.ts +12 -0
- package/dist/cli/tool-invoker-factory.js +45 -0
- package/dist/cli/tool-registration-modules.contract.test.d.ts +1 -0
- package/dist/cli/tool-registration-modules.contract.test.js +75 -0
- package/dist/cli/tool-registry-adapter.d.ts +5 -0
- package/dist/cli/tool-registry-adapter.js +27 -0
- package/dist/cli/tool-result-processor.d.ts +14 -0
- package/dist/cli/tool-result-processor.js +83 -0
- package/dist/cli/tool-result-processor.test.d.ts +1 -0
- package/dist/cli/tool-result-processor.test.js +69 -0
- package/dist/cli/transport.d.ts +30 -0
- package/dist/cli/transport.js +68 -0
- package/dist/cli/tunable-store.d.ts +26 -0
- package/dist/cli/tunable-store.js +105 -0
- package/dist/cli/turn-ask-user-setup.d.ts +24 -0
- package/dist/cli/turn-ask-user-setup.js +46 -0
- package/dist/cli/turn-ask-user-setup.test.d.ts +1 -0
- package/dist/cli/turn-ask-user-setup.test.js +39 -0
- package/dist/cli/turn-core.d.ts +57 -0
- package/dist/cli/turn-core.js +58 -0
- package/dist/cli/turn-event-forwarder.d.ts +10 -0
- package/dist/cli/turn-event-forwarder.js +136 -0
- package/dist/cli/turn-lifecycle.d.ts +19 -0
- package/dist/cli/turn-lifecycle.js +53 -0
- package/dist/cli/turn-lifecycle.test.d.ts +1 -0
- package/dist/cli/turn-lifecycle.test.js +32 -0
- package/dist/cli/turn-media-setup.d.ts +19 -0
- package/dist/cli/turn-media-setup.js +71 -0
- package/dist/cli/turn-media-setup.test.d.ts +1 -0
- package/dist/cli/turn-media-setup.test.js +280 -0
- package/dist/cli/turn-permission-sync.d.ts +6 -0
- package/dist/cli/turn-permission-sync.js +7 -0
- package/dist/cli/turn-permission-sync.test.d.ts +1 -0
- package/dist/cli/turn-permission-sync.test.js +20 -0
- package/dist/cli/turn-project-router.d.ts +22 -0
- package/dist/cli/turn-project-router.js +141 -0
- package/dist/cli/turn-project-router.test.d.ts +1 -0
- package/dist/cli/turn-project-router.test.js +79 -0
- package/dist/cli/turn-skill-autopersist.d.ts +47 -0
- package/dist/cli/turn-skill-autopersist.js +262 -0
- package/dist/cli/turn-skill-autopersist.test.d.ts +1 -0
- package/dist/cli/turn-skill-autopersist.test.js +222 -0
- package/dist/cli/turn-suggestion-generator.d.ts +15 -0
- package/dist/cli/turn-suggestion-generator.js +34 -0
- package/dist/cli/workflow-host-adapter.d.ts +29 -0
- package/dist/cli/workflow-host-adapter.js +15 -0
- package/dist/cli/workflow-host-adapter.test.d.ts +1 -0
- package/dist/cli/workflow-host-adapter.test.js +35 -0
- package/dist/config/config.d.ts +17 -0
- package/dist/config/config.js +21 -0
- package/dist/contracts/fire-hook.d.ts +14 -0
- package/dist/contracts/fire-hook.js +14 -0
- package/dist/contracts/fire-hook.test.d.ts +1 -0
- package/dist/contracts/fire-hook.test.js +34 -0
- package/dist/contracts/hooks.d.ts +186 -0
- package/dist/contracts/hooks.js +7 -0
- package/dist/contracts/index.d.ts +4 -0
- package/dist/contracts/index.js +4 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +15 -1269
- package/dist/orchestration/agent-instance.d.ts +84 -0
- package/dist/orchestration/agent-instance.js +535 -0
- package/dist/orchestration/context/context-collapse.d.ts +58 -0
- package/dist/orchestration/context/context-collapse.js +134 -0
- package/dist/orchestration/context/reactive-compact.d.ts +73 -0
- package/dist/orchestration/context/reactive-compact.js +78 -0
- package/dist/orchestration/context/turn-loop-guard.d.ts +86 -0
- package/dist/orchestration/context/turn-loop-guard.js +100 -0
- package/dist/orchestration/dag-scheduler.d.ts +167 -0
- package/dist/orchestration/dag-scheduler.js +546 -0
- package/dist/orchestration/error-handling/error-classification.d.ts +3 -0
- package/dist/orchestration/error-handling/error-classification.js +35 -0
- package/dist/orchestration/error-handling/failover-classification.d.ts +8 -0
- package/dist/orchestration/error-handling/failover-classification.js +381 -0
- package/dist/orchestration/error-handling/retry-loop.d.ts +69 -0
- package/dist/orchestration/error-handling/retry-loop.js +96 -0
- package/dist/orchestration/index.d.ts +15 -0
- package/dist/orchestration/index.js +18 -0
- package/dist/orchestration/product-budget.d.ts +56 -0
- package/dist/orchestration/product-budget.js +112 -0
- package/dist/orchestration/product-checkpoint.d.ts +46 -0
- package/dist/orchestration/product-checkpoint.js +74 -0
- package/dist/orchestration/product-dag-mutation-applier.d.ts +10 -0
- package/dist/orchestration/product-dag-mutation-applier.js +91 -0
- package/dist/orchestration/product-persistence.d.ts +35 -0
- package/dist/orchestration/product-persistence.js +55 -0
- package/dist/orchestration/product-planner.d.ts +146 -0
- package/dist/orchestration/product-planner.js +379 -0
- package/dist/orchestration/product-run-coordinator.d.ts +31 -0
- package/dist/orchestration/product-run-coordinator.js +31 -0
- package/dist/orchestration/product-worktree.d.ts +12 -0
- package/dist/orchestration/product-worktree.js +69 -0
- package/dist/orchestration/skill-improvement.d.ts +129 -0
- package/dist/orchestration/skill-improvement.js +243 -0
- package/dist/orchestration/solo-evaluator.d.ts +124 -0
- package/dist/orchestration/solo-evaluator.js +611 -0
- package/dist/orchestration/solo-persistence.d.ts +48 -0
- package/dist/orchestration/solo-persistence.js +67 -0
- package/dist/orchestration/solo-spec-builder.d.ts +48 -0
- package/dist/orchestration/solo-spec-builder.js +139 -0
- package/dist/orchestration/subagent/agent-registry.d.ts +46 -0
- package/dist/orchestration/subagent/agent-registry.js +129 -0
- package/dist/orchestration/subagent/fork-subagent.d.ts +100 -0
- package/dist/orchestration/subagent/fork-subagent.js +101 -0
- package/dist/orchestration/subagent/task-types.d.ts +1 -0
- package/dist/orchestration/subagent/task-types.js +1 -0
- package/dist/orchestration/tool-cascade.d.ts +49 -0
- package/dist/orchestration/tool-cascade.js +86 -0
- package/dist/orchestration/tool-loop/conversation-repair.d.ts +61 -0
- package/dist/orchestration/tool-loop/conversation-repair.js +429 -0
- package/dist/orchestration/tool-loop/tool-choice-policy.d.ts +54 -0
- package/dist/orchestration/tool-loop/tool-choice-policy.js +164 -0
- package/dist/orchestration/tool-loop/tool-loop-state.d.ts +50 -0
- package/dist/orchestration/tool-loop/tool-loop-state.js +133 -0
- package/dist/orchestration/tool-loop/tool-schema.d.ts +46 -0
- package/dist/orchestration/tool-loop/tool-schema.js +208 -0
- package/dist/orchestration/workflow/budget-permission-gate.d.ts +85 -0
- package/dist/orchestration/workflow/budget-permission-gate.js +134 -0
- package/dist/orchestration/workflow/builtin-executors.d.ts +18 -0
- package/dist/orchestration/workflow/builtin-executors.js +191 -0
- package/dist/orchestration/workflow/capability-catalog.d.ts +64 -0
- package/dist/orchestration/workflow/capability-catalog.js +166 -0
- package/dist/orchestration/workflow/cron-schedule.d.ts +37 -0
- package/dist/orchestration/workflow/cron-schedule.js +199 -0
- package/dist/orchestration/workflow/data-item.d.ts +39 -0
- package/dist/orchestration/workflow/data-item.js +52 -0
- package/dist/orchestration/workflow/expression.d.ts +60 -0
- package/dist/orchestration/workflow/expression.js +474 -0
- package/dist/orchestration/workflow/host-executors.d.ts +15 -0
- package/dist/orchestration/workflow/host-executors.js +207 -0
- package/dist/orchestration/workflow/n8n-expression.d.ts +48 -0
- package/dist/orchestration/workflow/n8n-expression.js +95 -0
- package/dist/orchestration/workflow/n8n-import.d.ts +68 -0
- package/dist/orchestration/workflow/n8n-import.js +319 -0
- package/dist/orchestration/workflow/node-registry.d.ts +19 -0
- package/dist/orchestration/workflow/node-registry.js +45 -0
- package/dist/orchestration/workflow/node-schema.d.ts +232 -0
- package/dist/orchestration/workflow/node-schema.js +29 -0
- package/dist/orchestration/workflow/qla-executor-host.d.ts +77 -0
- package/dist/orchestration/workflow/qla-executor-host.js +124 -0
- package/dist/orchestration/workflow/run-checkpoint-store.d.ts +53 -0
- package/dist/orchestration/workflow/run-checkpoint-store.js +59 -0
- package/dist/orchestration/workflow/run-history-store.d.ts +65 -0
- package/dist/orchestration/workflow/run-history-store.js +104 -0
- package/dist/orchestration/workflow/trigger-validation.d.ts +22 -0
- package/dist/orchestration/workflow/trigger-validation.js +241 -0
- package/dist/orchestration/workflow/workflow-audit-store.d.ts +31 -0
- package/dist/orchestration/workflow/workflow-audit-store.js +55 -0
- package/dist/orchestration/workflow/workflow-bundle.d.ts +65 -0
- package/dist/orchestration/workflow/workflow-bundle.js +168 -0
- package/dist/orchestration/workflow/workflow-controller.d.ts +219 -0
- package/dist/orchestration/workflow/workflow-controller.js +522 -0
- package/dist/orchestration/workflow/workflow-patch.d.ts +116 -0
- package/dist/orchestration/workflow/workflow-patch.js +369 -0
- package/dist/orchestration/workflow/workflow-render.d.ts +41 -0
- package/dist/orchestration/workflow/workflow-render.js +108 -0
- package/dist/orchestration/workflow/workflow-runtime.d.ts +171 -0
- package/dist/orchestration/workflow/workflow-runtime.js +474 -0
- package/dist/orchestration/workflow/workflow-scheduler.d.ts +111 -0
- package/dist/orchestration/workflow/workflow-scheduler.js +230 -0
- package/dist/orchestration/workflow/workflow-service.d.ts +14 -0
- package/dist/orchestration/workflow/workflow-service.js +18 -0
- package/dist/orchestration/workflow/workflow-store.d.ts +81 -0
- package/dist/orchestration/workflow/workflow-store.js +123 -0
- package/dist/orchestration/workflow/workflow-trigger.d.ts +35 -0
- package/dist/orchestration/workflow/workflow-trigger.js +1 -0
- package/dist/orchestration/workflow-chat-builder.d.ts +57 -0
- package/dist/orchestration/workflow-chat-builder.js +202 -0
- package/dist/permissions.d.ts +2 -0
- package/dist/permissions.js +1 -1
- package/dist/permissions.public-api.test.d.ts +1 -0
- package/dist/permissions.public-api.test.js +32 -0
- package/dist/pet-contracts.d.ts +1 -0
- package/dist/pet-contracts.js +1 -1
- package/dist/protocol/index.d.ts +7 -0
- package/dist/protocol/index.js +7 -0
- package/dist/protocol/methods.d.ts +1190 -0
- package/dist/protocol/methods.js +110 -0
- package/dist/protocol/notifications.d.ts +9 -0
- package/dist/protocol/notifications.js +9 -0
- package/dist/protocol/wire/acp-agent-management.d.ts +456 -0
- package/dist/protocol/wire/acp-agent-management.js +7 -0
- package/dist/protocol/wire/acp-protocol.d.ts +369 -0
- package/dist/protocol/wire/acp-protocol.js +120 -0
- package/dist/protocol/wire/agent-events.d.ts +32 -0
- package/dist/protocol/wire/agent-events.js +113 -0
- package/dist/protocol/wire/agent-methods.d.ts +564 -0
- package/dist/protocol/wire/agent-methods.js +11 -0
- package/dist/protocol/wire/agent-rpc.d.ts +100 -0
- package/dist/protocol/wire/agent-rpc.js +72 -0
- package/dist/protocol/wire/capability-manifest.d.ts +112 -0
- package/dist/protocol/wire/capability-manifest.js +149 -0
- package/dist/protocol/wire/capability-transport.d.ts +207 -0
- package/dist/protocol/wire/capability-transport.js +1 -0
- package/dist/protocol/wire/channel-ingress.d.ts +29 -0
- package/dist/protocol/wire/channel-ingress.js +1 -0
- package/dist/protocol/wire/channel.d.ts +89 -0
- package/dist/protocol/wire/channel.js +1 -0
- package/dist/protocol/wire/chat-types.d.ts +106 -0
- package/dist/protocol/wire/chat-types.js +7 -0
- package/dist/protocol/wire/checkpoint-runtime.d.ts +61 -0
- package/dist/protocol/wire/checkpoint-runtime.js +499 -0
- package/dist/protocol/wire/checkpoint.d.ts +72 -0
- package/dist/protocol/wire/checkpoint.js +12 -0
- package/dist/protocol/wire/execution.d.ts +391 -0
- package/dist/protocol/wire/execution.js +1 -0
- package/dist/protocol/wire/gateway-contract.d.ts +61 -0
- package/dist/protocol/wire/gateway-contract.js +236 -0
- package/dist/protocol/wire/gateway-contract.test.d.ts +1 -0
- package/dist/protocol/wire/gateway-contract.test.js +123 -0
- package/dist/protocol/wire/gateway-rpc.d.ts +652 -0
- package/dist/protocol/wire/gateway-rpc.js +58 -0
- package/dist/protocol/wire/gateway.d.ts +62 -0
- package/dist/protocol/wire/gateway.js +1 -0
- package/dist/protocol/wire/hook-protocol.d.ts +37 -0
- package/dist/protocol/wire/hook-protocol.js +2 -0
- package/dist/protocol/wire/index.d.ts +28 -0
- package/dist/protocol/wire/index.js +27 -0
- package/dist/protocol/wire/memory-provider-lifecycle.d.ts +82 -0
- package/dist/protocol/wire/memory-provider-lifecycle.js +24 -0
- package/dist/protocol/wire/notification-payloads.d.ts +918 -0
- package/dist/protocol/wire/notification-payloads.js +13 -0
- package/dist/protocol/wire/pet-contracts.d.ts +76 -0
- package/dist/protocol/wire/pet-contracts.js +23 -0
- package/dist/protocol/wire/provider-runtime-contract.d.ts +66 -0
- package/dist/protocol/wire/provider-runtime-contract.js +23 -0
- package/dist/protocol/wire/provider-runtime-core.d.ts +147 -0
- package/dist/protocol/wire/provider-runtime-core.js +488 -0
- package/dist/protocol/wire/provider-runtime-io.d.ts +20 -0
- package/dist/protocol/wire/provider-runtime-io.js +57 -0
- package/dist/protocol/wire/resource-manifest.d.ts +68 -0
- package/dist/protocol/wire/resource-manifest.js +174 -0
- package/dist/protocol/wire/session.d.ts +32 -0
- package/dist/protocol/wire/session.js +1 -0
- package/dist/protocol/wire/thread-protocol.d.ts +145 -0
- package/dist/protocol/wire/thread-protocol.js +13 -0
- package/dist/protocol/wire/transport.d.ts +57 -0
- package/dist/protocol/wire/transport.js +1 -0
- package/dist/protocol/wire/turn.d.ts +208 -0
- package/dist/protocol/wire/turn.js +1 -0
- package/dist/protocol/wire/web-capability.d.ts +54 -0
- package/dist/protocol/wire/web-capability.js +52 -0
- package/dist/runtime/community/community-consent-client.d.ts +142 -0
- package/dist/runtime/community/community-consent-client.js +381 -0
- package/dist/runtime/community/community-consent-client.test.d.ts +1 -0
- package/dist/runtime/community/community-consent-client.test.js +491 -0
- package/dist/runtime/community/community-desensitization-red-team-cli.d.ts +7 -0
- package/dist/runtime/community/community-desensitization-red-team-cli.js +43 -0
- package/dist/runtime/community/community-desensitization-red-team-cli.test.d.ts +1 -0
- package/dist/runtime/community/community-desensitization-red-team-cli.test.js +23 -0
- package/dist/runtime/community/community-desensitization.d.ts +29 -0
- package/dist/runtime/community/community-desensitization.js +81 -0
- package/dist/runtime/community/community-desensitization.test.d.ts +1 -0
- package/dist/runtime/community/community-desensitization.test.js +43 -0
- package/dist/runtime/community/community-discovery-cache.d.ts +24 -0
- package/dist/runtime/community/community-discovery-cache.js +52 -0
- package/dist/runtime/community/community-discovery-coordinator.d.ts +33 -0
- package/dist/runtime/community/community-discovery-coordinator.js +84 -0
- package/dist/runtime/community/community-discovery-coordinator.test.d.ts +1 -0
- package/dist/runtime/community/community-discovery-coordinator.test.js +97 -0
- package/dist/runtime/community/community-pet-publisher.d.ts +30 -0
- package/dist/runtime/community/community-pet-publisher.js +53 -0
- package/dist/runtime/community/community-pet-publisher.test.d.ts +1 -0
- package/dist/runtime/community/community-pet-publisher.test.js +53 -0
- package/dist/runtime/community/community-signal-reporter.d.ts +33 -0
- package/dist/runtime/community/community-signal-reporter.js +85 -0
- package/dist/runtime/community/community-signal-reporter.test.d.ts +1 -0
- package/dist/runtime/community/community-signal-reporter.test.js +100 -0
- package/dist/runtime/community/community-telemetry-metadata.d.ts +4 -0
- package/dist/runtime/community/community-telemetry-metadata.js +42 -0
- package/dist/runtime/community/community-telemetry-recorder.d.ts +6 -0
- package/dist/runtime/community/community-telemetry-recorder.js +31 -0
- package/dist/runtime/community/community-telemetry-types.d.ts +1 -0
- package/dist/runtime/community/community-telemetry-types.js +1 -0
- package/dist/runtime/config/tunable-defaults.d.ts +255 -0
- package/dist/runtime/config/tunable-defaults.js +293 -0
- package/dist/runtime/context/context-compression-strategies.d.ts +301 -0
- package/dist/runtime/context/context-compression-strategies.js +860 -0
- package/dist/runtime/execution/dream-agent.d.ts +260 -0
- package/dist/runtime/execution/dream-agent.js +974 -0
- package/dist/runtime/execution/dream-category-context.d.ts +47 -0
- package/dist/runtime/execution/dream-category-context.js +226 -0
- package/dist/runtime/execution/dream-lock.test.d.ts +1 -0
- package/dist/runtime/execution/dream-lock.test.js +54 -0
- package/dist/runtime/execution/fork-context.d.ts +14 -0
- package/dist/runtime/execution/fork-context.js +20 -0
- package/dist/runtime/execution/fork-context.test.d.ts +1 -0
- package/dist/runtime/execution/fork-context.test.js +101 -0
- package/dist/runtime/execution/forked-agent.d.ts +111 -0
- package/dist/runtime/execution/forked-agent.js +172 -0
- package/dist/runtime/execution/index.d.ts +7 -0
- package/dist/runtime/execution/index.js +8 -0
- package/dist/runtime/execution/memory-decay.d.ts +69 -0
- package/dist/runtime/execution/memory-decay.js +80 -0
- package/dist/runtime/execution/progress-tracker.d.ts +78 -0
- package/dist/runtime/execution/progress-tracker.js +107 -0
- package/dist/runtime/execution/streaming-tool-executor.d.ts +102 -0
- package/dist/runtime/execution/streaming-tool-executor.js +345 -0
- package/dist/runtime/execution/streaming-tool-executor.test.d.ts +1 -0
- package/dist/runtime/execution/streaming-tool-executor.test.js +49 -0
- package/dist/runtime/execution/tool-eligibility.d.ts +36 -0
- package/dist/runtime/execution/tool-eligibility.js +94 -0
- package/dist/runtime/execution/tool-eligibility.test.d.ts +1 -0
- package/dist/runtime/execution/tool-eligibility.test.js +96 -0
- package/dist/runtime/execution/tool-result-storage.d.ts +87 -0
- package/dist/runtime/execution/tool-result-storage.js +274 -0
- package/dist/runtime/hooks/context-compression.d.ts +61 -0
- package/dist/runtime/hooks/context-compression.js +334 -0
- package/dist/runtime/hooks/hook-registry.d.ts +12 -0
- package/dist/runtime/hooks/hook-registry.js +61 -0
- package/dist/runtime/hooks/hook-registry.test.d.ts +1 -0
- package/dist/runtime/hooks/hook-registry.test.js +51 -0
- package/dist/runtime/hooks/index.d.ts +4 -0
- package/dist/runtime/hooks/index.js +5 -0
- package/dist/runtime/hooks/memory-hooks.d.ts +75 -0
- package/dist/runtime/hooks/memory-hooks.js +356 -0
- package/dist/runtime/hooks/skill-recall-hooks.d.ts +37 -0
- package/dist/runtime/hooks/skill-recall-hooks.js +263 -0
- package/dist/runtime/hooks/skill-recall-hooks.test.d.ts +1 -0
- package/dist/runtime/hooks/skill-recall-hooks.test.js +52 -0
- package/dist/runtime/index.d.ts +5 -0
- package/dist/runtime/index.js +13 -0
- package/dist/runtime/infra/acp-detector.d.ts +133 -0
- package/dist/runtime/infra/acp-detector.js +862 -0
- package/dist/runtime/infra/acp-detector.test.d.ts +1 -0
- package/dist/runtime/infra/acp-detector.test.js +164 -0
- package/dist/runtime/infra/acp-host-handler.d.ts +31 -0
- package/dist/runtime/infra/acp-host-handler.js +123 -0
- package/dist/runtime/infra/acp-host-handler.test.d.ts +1 -0
- package/dist/runtime/infra/acp-host-handler.test.js +64 -0
- package/dist/runtime/infra/acp-protocol-adapter.d.ts +146 -0
- package/dist/runtime/infra/acp-protocol-adapter.js +382 -0
- package/dist/runtime/infra/acp-protocol-adapter.test.d.ts +1 -0
- package/dist/runtime/infra/acp-protocol-adapter.test.js +180 -0
- package/dist/runtime/infra/acp-usage-tracker.d.ts +46 -0
- package/dist/runtime/infra/acp-usage-tracker.js +92 -0
- package/dist/runtime/infra/agent-catalog.test.d.ts +1 -0
- package/dist/runtime/infra/agent-catalog.test.js +174 -0
- package/dist/runtime/infra/agent-config-store.d.ts +30 -0
- package/dist/runtime/infra/agent-config-store.js +115 -0
- package/dist/runtime/infra/agent-install-runner.d.ts +57 -0
- package/dist/runtime/infra/agent-install-runner.js +123 -0
- package/dist/runtime/infra/agent-install-runner.test.d.ts +1 -0
- package/dist/runtime/infra/agent-install-runner.test.js +103 -0
- package/dist/runtime/infra/agent-paths.d.ts +67 -0
- package/dist/runtime/infra/agent-paths.js +167 -0
- package/dist/runtime/infra/agent-paths.test.d.ts +1 -0
- package/dist/runtime/infra/agent-paths.test.js +49 -0
- package/dist/runtime/infra/agent-process.d.ts +299 -0
- package/dist/runtime/infra/agent-process.js +1318 -0
- package/dist/runtime/infra/background-tasks.d.ts +115 -0
- package/dist/runtime/infra/background-tasks.js +249 -0
- package/dist/runtime/infra/background-tasks.test.d.ts +1 -0
- package/dist/runtime/infra/background-tasks.test.js +242 -0
- package/dist/runtime/infra/checkpoint-backend.d.ts +8 -0
- package/dist/runtime/infra/checkpoint-backend.js +110 -0
- package/dist/runtime/infra/cleanup-registry.d.ts +23 -0
- package/dist/runtime/infra/cleanup-registry.js +34 -0
- package/dist/runtime/infra/default-path-service.d.ts +33 -0
- package/dist/runtime/infra/default-path-service.js +76 -0
- package/dist/runtime/infra/default-path-service.test.d.ts +1 -0
- package/dist/runtime/infra/default-path-service.test.js +31 -0
- package/dist/runtime/infra/disk-storage.d.ts +20 -0
- package/dist/runtime/infra/disk-storage.js +64 -0
- package/dist/runtime/infra/external-agent-approvals.d.ts +41 -0
- package/dist/runtime/infra/external-agent-approvals.js +101 -0
- package/dist/runtime/infra/external-agent-approvals.test.d.ts +1 -0
- package/dist/runtime/infra/external-agent-approvals.test.js +99 -0
- package/dist/runtime/infra/external-agent-pool.d.ts +54 -0
- package/dist/runtime/infra/external-agent-pool.js +0 -0
- package/dist/runtime/infra/external-agent-pool.test.d.ts +1 -0
- package/dist/runtime/infra/external-agent-pool.test.js +102 -0
- package/dist/runtime/infra/file-watcher.d.ts +72 -0
- package/dist/runtime/infra/file-watcher.js +154 -0
- package/dist/runtime/infra/index.d.ts +19 -0
- package/dist/runtime/infra/index.js +19 -0
- package/dist/runtime/infra/key-injection.test.d.ts +1 -0
- package/dist/runtime/infra/key-injection.test.js +88 -0
- package/dist/runtime/infra/key-pool.d.ts +122 -0
- package/dist/runtime/infra/key-pool.js +378 -0
- package/dist/runtime/infra/key-pool.test.d.ts +1 -0
- package/dist/runtime/infra/key-pool.test.js +36 -0
- package/dist/runtime/infra/llmrouter-catalog.d.ts +84 -0
- package/dist/runtime/infra/llmrouter-catalog.js +287 -0
- package/dist/runtime/infra/llmrouter-catalog.test.d.ts +1 -0
- package/dist/runtime/infra/llmrouter-catalog.test.js +80 -0
- package/dist/runtime/infra/llmrouter-zero-config.test.d.ts +1 -0
- package/dist/runtime/infra/llmrouter-zero-config.test.js +64 -0
- package/dist/runtime/infra/mcp-bridge.d.ts +166 -0
- package/dist/runtime/infra/mcp-bridge.js +161 -0
- package/dist/runtime/infra/media-persistence.d.ts +87 -0
- package/dist/runtime/infra/media-persistence.js +278 -0
- package/dist/runtime/infra/migrate-project-skills.d.ts +21 -0
- package/dist/runtime/infra/migrate-project-skills.js +131 -0
- package/dist/runtime/infra/migrate-project-skills.test.d.ts +1 -0
- package/dist/runtime/infra/migrate-project-skills.test.js +69 -0
- package/dist/runtime/infra/model-id-translator.d.ts +22 -0
- package/dist/runtime/infra/model-id-translator.js +74 -0
- package/dist/runtime/infra/model-registry.d.ts +148 -0
- package/dist/runtime/infra/model-registry.js +529 -0
- package/dist/runtime/infra/model-registry.test.d.ts +1 -0
- package/dist/runtime/infra/model-registry.test.js +253 -0
- package/dist/runtime/infra/process-config-port.d.ts +2 -0
- package/dist/runtime/infra/process-config-port.js +5 -0
- package/dist/runtime/infra/profile-storage.test.d.ts +1 -0
- package/dist/runtime/infra/profile-storage.test.js +41 -0
- package/dist/runtime/infra/project-instructions-store.d.ts +30 -0
- package/dist/runtime/infra/project-instructions-store.js +124 -0
- package/dist/runtime/infra/project-skill-manifest.d.ts +32 -0
- package/dist/runtime/infra/project-skill-manifest.js +160 -0
- package/dist/runtime/infra/project-skill-manifest.test.d.ts +1 -0
- package/dist/runtime/infra/project-skill-manifest.test.js +42 -0
- package/dist/runtime/infra/project-store.d.ts +48 -0
- package/dist/runtime/infra/project-store.js +284 -0
- package/dist/runtime/infra/secure-storage.d.ts +81 -0
- package/dist/runtime/infra/secure-storage.js +117 -0
- package/dist/runtime/infra/skill-injector.d.ts +59 -0
- package/dist/runtime/infra/skill-injector.js +155 -0
- package/dist/runtime/infra/skill-injector.test.d.ts +1 -0
- package/dist/runtime/infra/skill-injector.test.js +9 -0
- package/dist/runtime/infra/skill-resolver.d.ts +51 -0
- package/dist/runtime/infra/skill-resolver.js +109 -0
- package/dist/runtime/infra/skill-resolver.test.d.ts +1 -0
- package/dist/runtime/infra/skill-resolver.test.js +72 -0
- package/dist/runtime/infra/task-runtime.d.ts +71 -0
- package/dist/runtime/infra/task-runtime.js +181 -0
- package/dist/runtime/infra/token-budget.d.ts +92 -0
- package/dist/runtime/infra/token-budget.js +170 -0
- package/dist/runtime/infra/worktree-backend.d.ts +86 -0
- package/dist/runtime/infra/worktree-backend.js +522 -0
- package/dist/runtime/memory/categories.d.ts +5 -0
- package/dist/runtime/memory/categories.js +4 -0
- package/dist/runtime/memory/find-relevant-memories.d.ts +70 -0
- package/dist/runtime/memory/find-relevant-memories.js +270 -0
- package/dist/runtime/memory/implicit-extraction.d.ts +58 -0
- package/dist/runtime/memory/implicit-extraction.js +187 -0
- package/dist/runtime/memory/recall-category-filter.d.ts +54 -0
- package/dist/runtime/memory/recall-category-filter.js +215 -0
- package/dist/runtime/permission-model.d.ts +19 -0
- package/dist/runtime/permission-model.js +24 -0
- package/dist/runtime/permission-model.test.d.ts +1 -0
- package/dist/runtime/permission-model.test.js +32 -0
- package/dist/runtime/pet/hatch-pet-runner.d.ts +18 -0
- package/dist/runtime/pet/hatch-pet-runner.js +120 -0
- package/dist/runtime/pet/hatch-pet-runner.test.d.ts +1 -0
- package/dist/runtime/pet/hatch-pet-runner.test.js +28 -0
- package/dist/runtime/pet/index.d.ts +18 -0
- package/dist/runtime/pet/index.js +9 -0
- package/dist/runtime/pet/pet-community-assets.d.ts +13 -0
- package/dist/runtime/pet/pet-community-assets.js +106 -0
- package/dist/runtime/pet/pet-file-loader.d.ts +5 -0
- package/dist/runtime/pet/pet-file-loader.js +11 -0
- package/dist/runtime/pet/pet-growth-engine.d.ts +2 -0
- package/dist/runtime/pet/pet-growth-engine.js +1 -0
- package/dist/runtime/pet/pet-profile-service.d.ts +91 -0
- package/dist/runtime/pet/pet-profile-service.js +296 -0
- package/dist/runtime/pet/pet-profile-service.test.d.ts +1 -0
- package/dist/runtime/pet/pet-profile-service.test.js +171 -0
- package/dist/runtime/pet/pet-reaction-engine.d.ts +11 -0
- package/dist/runtime/pet/pet-reaction-engine.js +11 -0
- package/dist/runtime/pet/pet-reaction-engine.test.d.ts +1 -0
- package/dist/runtime/pet/pet-reaction-engine.test.js +12 -0
- package/dist/runtime/pet/pet-soul-service.d.ts +21 -0
- package/dist/runtime/pet/pet-soul-service.js +63 -0
- package/dist/runtime/pet/pet-soul-service.test.d.ts +1 -0
- package/dist/runtime/pet/pet-soul-service.test.js +115 -0
- package/dist/runtime/pet/pet-types.d.ts +1 -0
- package/dist/runtime/pet/pet-types.js +1 -0
- package/dist/runtime/pet/petdex-asset.d.ts +32 -0
- package/dist/runtime/pet/petdex-asset.js +242 -0
- package/dist/runtime/pet/petdex-asset.test.d.ts +1 -0
- package/dist/runtime/pet/petdex-asset.test.js +257 -0
- package/dist/runtime/pet/petdex-forge-service.d.ts +19 -0
- package/dist/runtime/pet/petdex-forge-service.js +820 -0
- package/dist/runtime/pet/petdex-forge-service.test.d.ts +1 -0
- package/dist/runtime/pet/petdex-forge-service.test.js +142 -0
- package/dist/runtime/ports/agent-execution-contracts.d.ts +182 -0
- package/dist/runtime/ports/agent-execution-contracts.js +1 -0
- package/dist/runtime/ports/agent-runtime-ports.d.ts +76 -0
- package/dist/runtime/ports/agent-runtime-ports.js +1 -0
- package/dist/runtime/ports/checkpoint-contracts.d.ts +19 -0
- package/dist/runtime/ports/checkpoint-contracts.js +1 -0
- package/dist/runtime/ports/config-port.d.ts +4 -0
- package/dist/runtime/ports/config-port.js +5 -0
- package/dist/runtime/ports/index.d.ts +19 -0
- package/dist/runtime/ports/index.js +5 -0
- package/dist/runtime/ports/memory-provider.d.ts +181 -0
- package/dist/runtime/ports/memory-provider.js +1 -0
- package/dist/runtime/ports/memory-recall-source.d.ts +3 -0
- package/dist/runtime/ports/memory-recall-source.js +1 -0
- package/dist/runtime/ports/memory-writer.d.ts +21 -0
- package/dist/runtime/ports/memory-writer.js +1 -0
- package/dist/runtime/ports/model-transport-contracts.d.ts +125 -0
- package/dist/runtime/ports/model-transport-contracts.js +9 -0
- package/dist/runtime/ports/path-service.d.ts +31 -0
- package/dist/runtime/ports/path-service.js +1 -0
- package/dist/runtime/ports/permission-contracts.d.ts +128 -0
- package/dist/runtime/ports/permission-contracts.js +5 -0
- package/dist/runtime/ports/project-memory-store.d.ts +44 -0
- package/dist/runtime/ports/project-memory-store.js +1 -0
- package/dist/runtime/ports/source-provider.d.ts +39 -0
- package/dist/runtime/ports/source-provider.js +4 -0
- package/dist/runtime/ports/tool-call-contracts.d.ts +16 -0
- package/dist/runtime/ports/tool-call-contracts.js +13 -0
- package/dist/runtime/ports/tool-contracts.d.ts +87 -0
- package/dist/runtime/ports/tool-contracts.js +3 -0
- package/dist/runtime/ports/tool-risk.d.ts +7 -0
- package/dist/runtime/ports/tool-risk.js +16 -0
- package/dist/runtime/ports/web-search-contracts.d.ts +21 -0
- package/dist/runtime/ports/web-search-contracts.js +1 -0
- package/dist/runtime/ports/worktree-contracts.d.ts +22 -0
- package/dist/runtime/ports/worktree-contracts.js +1 -0
- package/dist/runtime/prompt/environment-context.d.ts +60 -0
- package/dist/runtime/prompt/environment-context.js +410 -0
- package/dist/runtime/prompt/environment-context.test.d.ts +1 -0
- package/dist/runtime/prompt/environment-context.test.js +75 -0
- package/dist/runtime/prompt/fresh-workspace-evidence.d.ts +21 -0
- package/dist/runtime/prompt/fresh-workspace-evidence.js +224 -0
- package/dist/runtime/prompt/fresh-workspace-evidence.test.d.ts +1 -0
- package/dist/runtime/prompt/fresh-workspace-evidence.test.js +163 -0
- package/dist/runtime/prompt/index.d.ts +5 -0
- package/dist/runtime/prompt/index.js +6 -0
- package/dist/runtime/prompt/instruction-loader.d.ts +70 -0
- package/dist/runtime/prompt/instruction-loader.js +515 -0
- package/dist/runtime/prompt/instruction-loader.test.d.ts +1 -0
- package/dist/runtime/prompt/instruction-loader.test.js +64 -0
- package/dist/runtime/prompt/prompt-policy.d.ts +12 -0
- package/dist/runtime/prompt/prompt-policy.js +40 -0
- package/dist/runtime/prompt/system-prompt-sections.d.ts +65 -0
- package/dist/runtime/prompt/system-prompt-sections.js +93 -0
- package/dist/runtime/prompt/task-domain.d.ts +82 -0
- package/dist/runtime/prompt/task-domain.js +248 -0
- package/dist/runtime/sandbox/index.d.ts +2 -0
- package/dist/runtime/sandbox/index.js +2 -0
- package/dist/runtime/sandbox/skill-sandbox.d.ts +53 -0
- package/dist/runtime/sandbox/skill-sandbox.js +93 -0
- package/dist/runtime/sandbox/skill-sandbox.test.d.ts +1 -0
- package/dist/runtime/sandbox/skill-sandbox.test.js +172 -0
- package/dist/runtime/sandbox/windows-skill-sandbox.d.ts +78 -0
- package/dist/runtime/sandbox/windows-skill-sandbox.js +128 -0
- package/dist/runtime/session/group-session-split.d.ts +38 -0
- package/dist/runtime/session/group-session-split.js +99 -0
- package/dist/runtime/session/index.d.ts +4 -0
- package/dist/runtime/session/index.js +5 -0
- package/dist/runtime/session/session-catalog.d.ts +4 -0
- package/dist/runtime/session/session-catalog.js +59 -0
- package/dist/runtime/session/session-locator.d.ts +26 -0
- package/dist/runtime/session/session-locator.js +91 -0
- package/dist/runtime/session/session-locator.test.d.ts +1 -0
- package/dist/runtime/session/session-locator.test.js +59 -0
- package/dist/runtime/session/session-metadata-store.d.ts +8 -0
- package/dist/runtime/session/session-metadata-store.js +167 -0
- package/dist/runtime/session/session-paths.d.ts +9 -0
- package/dist/runtime/session/session-paths.js +27 -0
- package/dist/runtime/session/session-persistence.d.ts +16 -0
- package/dist/runtime/session/session-persistence.js +16 -0
- package/dist/runtime/session/session-persistence.test.d.ts +1 -0
- package/dist/runtime/session/session-persistence.test.js +237 -0
- package/dist/runtime/session/session-resume.d.ts +4 -0
- package/dist/runtime/session/session-resume.js +60 -0
- package/dist/runtime/session/session-schema.d.ts +10 -0
- package/dist/runtime/session/session-schema.js +35 -0
- package/dist/runtime/session/session-state.d.ts +96 -0
- package/dist/runtime/session/session-state.js +180 -0
- package/dist/runtime/session/session-summary.d.ts +5 -0
- package/dist/runtime/session/session-summary.js +67 -0
- package/dist/runtime/session/session-transcript-store.d.ts +13 -0
- package/dist/runtime/session/session-transcript-store.js +109 -0
- package/dist/runtime/session/session-types.d.ts +77 -0
- package/dist/runtime/session/session-types.js +1 -0
- package/dist/runtime/session/session-write-queue.d.ts +2 -0
- package/dist/runtime/session/session-write-queue.js +48 -0
- package/dist/runtime/tasks/task-types.d.ts +166 -0
- package/dist/runtime/tasks/task-types.js +64 -0
- package/dist/server/search-svc.d.ts +1 -0
- package/dist/server/search-svc.js +113 -0
- package/dist/skills/index.d.ts +6 -0
- package/dist/skills/index.js +5 -0
- package/dist/skills/mcp/index.d.ts +1 -0
- package/dist/skills/mcp/index.js +3 -0
- package/dist/skills/mcp/mcp-manager.d.ts +75 -0
- package/dist/skills/mcp/mcp-manager.js +358 -0
- package/dist/skills/mcp/mcp-tool-metadata.d.ts +18 -0
- package/dist/skills/mcp/mcp-tool-metadata.js +48 -0
- package/dist/skills/memory/categories.d.ts +1 -0
- package/dist/skills/memory/categories.js +1 -0
- package/dist/skills/memory/find-relevant-memories.d.ts +1 -0
- package/dist/skills/memory/find-relevant-memories.js +1 -0
- package/dist/skills/memory/implicit-extraction.d.ts +1 -0
- package/dist/skills/memory/implicit-extraction.js +1 -0
- package/dist/skills/memory/local-embedding.d.ts +80 -0
- package/dist/skills/memory/local-embedding.js +210 -0
- package/dist/skills/memory/local-memory-provider.d.ts +257 -0
- package/dist/skills/memory/local-memory-provider.js +486 -0
- package/dist/skills/memory/local-store-records.d.ts +184 -0
- package/dist/skills/memory/local-store-records.js +1 -0
- package/dist/skills/memory/local-store.d.ts +479 -0
- package/dist/skills/memory/local-store.js +1022 -0
- package/dist/skills/memory/memdir.d.ts +93 -0
- package/dist/skills/memory/memdir.js +530 -0
- package/dist/skills/memory/memory-attachment-store.d.ts +62 -0
- package/dist/skills/memory/memory-attachment-store.js +0 -0
- package/dist/skills/memory/memory-consolidation.d.ts +43 -0
- package/dist/skills/memory/memory-consolidation.js +462 -0
- package/dist/skills/memory/memory-db-path.d.ts +13 -0
- package/dist/skills/memory/memory-db-path.js +27 -0
- package/dist/skills/memory/memory-embedding-config.d.ts +31 -0
- package/dist/skills/memory/memory-embedding-config.js +66 -0
- package/dist/skills/memory/memory-provider-factory.d.ts +33 -0
- package/dist/skills/memory/memory-provider-factory.js +79 -0
- package/dist/skills/memory/memory-tool.d.ts +85 -0
- package/dist/skills/memory/memory-tool.js +326 -0
- package/dist/skills/memory/memory-vector-utils.d.ts +2 -0
- package/dist/skills/memory/memory-vector-utils.js +19 -0
- package/dist/skills/memory/recall-category-filter.d.ts +1 -0
- package/dist/skills/memory/recall-category-filter.js +1 -0
- package/dist/skills/memory/sqlite-memory-mappers.d.ts +6 -0
- package/dist/skills/memory/sqlite-memory-mappers.js +104 -0
- package/dist/skills/memory/sqlite-memory-schema.d.ts +3 -0
- package/dist/skills/memory/sqlite-memory-schema.js +152 -0
- package/dist/skills/permissions/bash-classifier.d.ts +30 -0
- package/dist/skills/permissions/bash-classifier.js +174 -0
- package/dist/skills/permissions/classifier-cache.d.ts +51 -0
- package/dist/skills/permissions/classifier-cache.js +103 -0
- package/dist/skills/permissions/community-sandbox-policy.d.ts +3 -0
- package/dist/skills/permissions/community-sandbox-policy.js +233 -0
- package/dist/skills/permissions/community-sandbox-red-team-cli.d.ts +7 -0
- package/dist/skills/permissions/community-sandbox-red-team-cli.js +43 -0
- package/dist/skills/permissions/community-sandbox-red-team.d.ts +32 -0
- package/dist/skills/permissions/community-sandbox-red-team.js +221 -0
- package/dist/skills/permissions/denial-audit-log.d.ts +52 -0
- package/dist/skills/permissions/denial-audit-log.js +80 -0
- package/dist/skills/permissions/denial-tracking.d.ts +42 -0
- package/dist/skills/permissions/denial-tracking.js +60 -0
- package/dist/skills/permissions/group-security-policy.d.ts +15 -0
- package/dist/skills/permissions/group-security-policy.js +60 -0
- package/dist/skills/permissions/hook-runner.d.ts +120 -0
- package/dist/skills/permissions/hook-runner.js +545 -0
- package/dist/skills/permissions/index.d.ts +13 -0
- package/dist/skills/permissions/index.js +8 -0
- package/dist/skills/permissions/operation-classifier.d.ts +43 -0
- package/dist/skills/permissions/operation-classifier.js +251 -0
- package/dist/skills/permissions/permission-classifier.d.ts +41 -0
- package/dist/skills/permissions/permission-classifier.js +186 -0
- package/dist/skills/permissions/rule-engine.d.ts +49 -0
- package/dist/skills/permissions/rule-engine.js +285 -0
- package/dist/skills/permissions/settings-watcher.d.ts +19 -0
- package/dist/skills/permissions/settings-watcher.js +121 -0
- package/dist/skills/permissions/types.d.ts +2 -0
- package/dist/skills/permissions/types.js +1 -0
- package/dist/skills/plugins/index.d.ts +2 -0
- package/dist/skills/plugins/index.js +3 -0
- package/dist/skills/plugins/plugin-api.d.ts +38 -0
- package/dist/skills/plugins/plugin-api.js +18 -0
- package/dist/skills/plugins/plugin-loader.d.ts +57 -0
- package/dist/skills/plugins/plugin-loader.js +254 -0
- package/dist/skills/plugins/plugin-marketplace.d.ts +61 -0
- package/dist/skills/plugins/plugin-marketplace.js +229 -0
- package/dist/skills/portable-tool.d.ts +165 -0
- package/dist/skills/portable-tool.js +34 -0
- package/dist/skills/skill-system/skill-frontmatter.d.ts +19 -0
- package/dist/skills/skill-system/skill-frontmatter.js +344 -0
- package/dist/skills/skill-system/skill-guard.d.ts +23 -0
- package/dist/skills/skill-system/skill-guard.js +229 -0
- package/dist/skills/skill-system/skill-lifecycle.d.ts +93 -0
- package/dist/skills/skill-system/skill-lifecycle.js +236 -0
- package/dist/skills/skill-system/skill-source.d.ts +38 -0
- package/dist/skills/skill-system/skill-source.js +75 -0
- package/dist/skills/skill-system/skill-types.d.ts +140 -0
- package/dist/skills/skill-system/skill-types.js +6 -0
- package/dist/skills/skill-system/skill-validation.d.ts +29 -0
- package/dist/skills/skill-system/skill-validation.js +154 -0
- package/dist/skills/tool-access.d.ts +30 -0
- package/dist/skills/tool-access.js +58 -0
- package/dist/skills/tools/agent-tool.d.ts +102 -0
- package/dist/skills/tools/agent-tool.js +159 -0
- package/dist/skills/tools/ask-user-tool.d.ts +80 -0
- package/dist/skills/tools/ask-user-tool.js +121 -0
- package/dist/skills/tools/brief-tool.d.ts +74 -0
- package/dist/skills/tools/brief-tool.js +95 -0
- package/dist/skills/tools/browser-tool.d.ts +114 -0
- package/dist/skills/tools/browser-tool.js +160 -0
- package/dist/skills/tools/checkpoint-tool.d.ts +66 -0
- package/dist/skills/tools/checkpoint-tool.js +102 -0
- package/dist/skills/tools/config-tool.d.ts +61 -0
- package/dist/skills/tools/config-tool.js +123 -0
- package/dist/skills/tools/cron-tool.d.ts +96 -0
- package/dist/skills/tools/cron-tool.js +165 -0
- package/dist/skills/tools/edit-tool.d.ts +43 -0
- package/dist/skills/tools/edit-tool.js +72 -0
- package/dist/skills/tools/exec-tool.d.ts +117 -0
- package/dist/skills/tools/exec-tool.js +354 -0
- package/dist/skills/tools/file-management-tool.d.ts +90 -0
- package/dist/skills/tools/file-management-tool.js +166 -0
- package/dist/skills/tools/image-generate-tool.d.ts +74 -0
- package/dist/skills/tools/image-generate-tool.js +91 -0
- package/dist/skills/tools/instructions-tool.d.ts +65 -0
- package/dist/skills/tools/instructions-tool.js +209 -0
- package/dist/skills/tools/lsp-tool.d.ts +153 -0
- package/dist/skills/tools/lsp-tool.js +230 -0
- package/dist/skills/tools/media-cancel-tool.d.ts +30 -0
- package/dist/skills/tools/media-cancel-tool.js +46 -0
- package/dist/skills/tools/monitor-tool.d.ts +113 -0
- package/dist/skills/tools/monitor-tool.js +129 -0
- package/dist/skills/tools/music-generate-tool.d.ts +80 -0
- package/dist/skills/tools/music-generate-tool.js +98 -0
- package/dist/skills/tools/notebook-edit-tool.d.ts +15 -0
- package/dist/skills/tools/notebook-edit-tool.js +206 -0
- package/dist/skills/tools/patch-tool.d.ts +52 -0
- package/dist/skills/tools/patch-tool.js +556 -0
- package/dist/skills/tools/petdex-create-tool.d.ts +47 -0
- package/dist/skills/tools/petdex-create-tool.js +95 -0
- package/dist/skills/tools/plan-mode-tool.d.ts +98 -0
- package/dist/skills/tools/plan-mode-tool.js +164 -0
- package/dist/skills/tools/read-tool.d.ts +51 -0
- package/dist/skills/tools/read-tool.js +88 -0
- package/dist/skills/tools/search-tool.d.ts +112 -0
- package/dist/skills/tools/search-tool.js +226 -0
- package/dist/skills/tools/shell/bash-provider.d.ts +26 -0
- package/dist/skills/tools/shell/bash-provider.js +125 -0
- package/dist/skills/tools/shell/command-classification.d.ts +44 -0
- package/dist/skills/tools/shell/command-classification.js +119 -0
- package/dist/skills/tools/shell/command-semantics.d.ts +14 -0
- package/dist/skills/tools/shell/command-semantics.js +87 -0
- package/dist/skills/tools/shell/destructive-command-warning.d.ts +10 -0
- package/dist/skills/tools/shell/destructive-command-warning.js +80 -0
- package/dist/skills/tools/shell/exec-permissions.d.ts +52 -0
- package/dist/skills/tools/shell/exec-permissions.js +277 -0
- package/dist/skills/tools/shell/index.d.ts +18 -0
- package/dist/skills/tools/shell/index.js +18 -0
- package/dist/skills/tools/shell/powershell-provider.d.ts +15 -0
- package/dist/skills/tools/shell/powershell-provider.js +80 -0
- package/dist/skills/tools/shell/sandbox/helper-resolver.d.ts +7 -0
- package/dist/skills/tools/shell/sandbox/helper-resolver.js +20 -0
- package/dist/skills/tools/shell/sandbox/landlock-argv.d.ts +6 -0
- package/dist/skills/tools/shell/sandbox/landlock-argv.js +13 -0
- package/dist/skills/tools/shell/sandbox/platform.d.ts +3 -0
- package/dist/skills/tools/shell/sandbox/platform.js +13 -0
- package/dist/skills/tools/shell/sandbox/sandbox-launcher.d.ts +15 -0
- package/dist/skills/tools/shell/sandbox/sandbox-launcher.js +59 -0
- package/dist/skills/tools/shell/sandbox/sandbox-scope.d.ts +6 -0
- package/dist/skills/tools/shell/sandbox/sandbox-scope.js +17 -0
- package/dist/skills/tools/shell/sandbox/sandbox-types.d.ts +47 -0
- package/dist/skills/tools/shell/sandbox/sandbox-types.js +1 -0
- package/dist/skills/tools/shell/sandbox/seatbelt-profile.d.ts +6 -0
- package/dist/skills/tools/shell/sandbox/seatbelt-profile.js +28 -0
- package/dist/skills/tools/shell/shell-command.d.ts +54 -0
- package/dist/skills/tools/shell/shell-command.js +347 -0
- package/dist/skills/tools/shell/shell-exec.d.ts +38 -0
- package/dist/skills/tools/shell/shell-exec.js +202 -0
- package/dist/skills/tools/shell/shell-provider.d.ts +85 -0
- package/dist/skills/tools/shell/shell-provider.js +38 -0
- package/dist/skills/tools/shell/subprocess-env.d.ts +6 -0
- package/dist/skills/tools/shell/subprocess-env.js +87 -0
- package/dist/skills/tools/shell/task-output.d.ts +44 -0
- package/dist/skills/tools/shell/task-output.js +137 -0
- package/dist/skills/tools/skill-tool.d.ts +106 -0
- package/dist/skills/tools/skill-tool.js +265 -0
- package/dist/skills/tools/sleep-tool.d.ts +49 -0
- package/dist/skills/tools/sleep-tool.js +81 -0
- package/dist/skills/tools/structured-output-tool.d.ts +116 -0
- package/dist/skills/tools/structured-output-tool.js +176 -0
- package/dist/skills/tools/stt-tool.d.ts +33 -0
- package/dist/skills/tools/stt-tool.js +58 -0
- package/dist/skills/tools/task-tool.d.ts +125 -0
- package/dist/skills/tools/task-tool.js +390 -0
- package/dist/skills/tools/team-tool.d.ts +156 -0
- package/dist/skills/tools/team-tool.js +173 -0
- package/dist/skills/tools/three-d-generate-tool.d.ts +46 -0
- package/dist/skills/tools/three-d-generate-tool.js +66 -0
- package/dist/skills/tools/tool-search-tool.d.ts +62 -0
- package/dist/skills/tools/tool-search-tool.js +187 -0
- package/dist/skills/tools/tts-tool.d.ts +50 -0
- package/dist/skills/tools/tts-tool.js +58 -0
- package/dist/skills/tools/video-edit-tool.d.ts +72 -0
- package/dist/skills/tools/video-edit-tool.js +84 -0
- package/dist/skills/tools/video-generate-tool.d.ts +162 -0
- package/dist/skills/tools/video-generate-tool.js +178 -0
- package/dist/skills/tools/video-merge-tool.d.ts +105 -0
- package/dist/skills/tools/video-merge-tool.js +95 -0
- package/dist/skills/tools/video-upscale-tool.d.ts +45 -0
- package/dist/skills/tools/video-upscale-tool.js +57 -0
- package/dist/skills/tools/voice-clone-tool.d.ts +40 -0
- package/dist/skills/tools/voice-clone-tool.js +58 -0
- package/dist/skills/tools/web-answer-tool.d.ts +27 -0
- package/dist/skills/tools/web-answer-tool.js +124 -0
- package/dist/skills/tools/web-fetch-tool.d.ts +80 -0
- package/dist/skills/tools/web-fetch-tool.js +95 -0
- package/dist/skills/tools/web-research-tool.d.ts +48 -0
- package/dist/skills/tools/web-research-tool.js +254 -0
- package/dist/skills/tools/web-search-tool.d.ts +46 -0
- package/dist/skills/tools/web-search-tool.js +95 -0
- package/dist/skills/tools/workflow-tool.d.ts +45 -0
- package/dist/skills/tools/workflow-tool.js +113 -0
- package/dist/skills/tools/worktree-tool.d.ts +69 -0
- package/dist/skills/tools/worktree-tool.js +147 -0
- package/dist/skills/tools/write-tool.d.ts +45 -0
- package/dist/skills/tools/write-tool.js +83 -0
- package/dist/skills/tools.d.ts +45 -0
- package/dist/skills/tools.js +165 -0
- package/dist/skills/web-search/brave-source.d.ts +2 -0
- package/dist/skills/web-search/brave-source.js +36 -0
- package/dist/skills/web-search/crawl4ai-extractor.d.ts +15 -0
- package/dist/skills/web-search/crawl4ai-extractor.js +92 -0
- package/dist/skills/web-search/embedding-rerank.d.ts +13 -0
- package/dist/skills/web-search/embedding-rerank.js +44 -0
- package/dist/skills/web-search/exa-source.d.ts +2 -0
- package/dist/skills/web-search/exa-source.js +43 -0
- package/dist/skills/web-search/multi-source-backend.d.ts +23 -0
- package/dist/skills/web-search/multi-source-backend.js +99 -0
- package/dist/skills/web-search/redis-source-cache.d.ts +6 -0
- package/dist/skills/web-search/redis-source-cache.js +44 -0
- package/dist/skills/web-search/search-svc-source.d.ts +4 -0
- package/dist/skills/web-search/search-svc-source.js +64 -0
- package/dist/skills/web-search/searxng-source.d.ts +2 -0
- package/dist/skills/web-search/searxng-source.js +91 -0
- package/dist/skills/web-search/serper-source.d.ts +2 -0
- package/dist/skills/web-search/serper-source.js +33 -0
- package/dist/skills/web-search/source-factory.d.ts +5 -0
- package/dist/skills/web-search/source-factory.js +15 -0
- package/dist/skills/web-search/stability.d.ts +26 -0
- package/dist/skills/web-search/stability.js +57 -0
- package/dist/transport/acp-event-emitter.d.ts +21 -0
- package/dist/transport/acp-event-emitter.js +142 -0
- package/dist/transport/acp-event-emitter.test.d.ts +1 -0
- package/dist/transport/acp-event-emitter.test.js +87 -0
- package/dist/transport/acp-server.d.ts +169 -0
- package/dist/transport/acp-server.js +480 -0
- package/dist/transport/acp-server.test.d.ts +1 -0
- package/dist/transport/acp-server.test.js +230 -0
- package/dist/transport/index.d.ts +7 -0
- package/dist/transport/index.js +5 -0
- package/dist/transport/io-transport.d.ts +19 -0
- package/dist/transport/io-transport.js +8 -0
- package/package.json +2 -2
|
@@ -0,0 +1,974 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dream Sub-agent — CC autoDream parity.
|
|
3
|
+
*
|
|
4
|
+
* Memory consolidation runs as a restricted sub-agent:
|
|
5
|
+
* - Read-only tool access (bash: ls/grep/cat/find/stat/wc/head/tail)
|
|
6
|
+
* - File writes restricted to memory directory
|
|
7
|
+
* - 4-phase system prompt: Orient → Gather → Consolidate → Prune
|
|
8
|
+
* - Trigger gates: time (24h) + session count (5)
|
|
9
|
+
* - PID-based consolidation lock
|
|
10
|
+
*
|
|
11
|
+
* Reference: claude-code src/services/autoDream/
|
|
12
|
+
*/
|
|
13
|
+
import { readFile, writeFile, stat, unlink, mkdir } from "node:fs/promises";
|
|
14
|
+
import { join, resolve, isAbsolute, normalize } from "node:path";
|
|
15
|
+
import { randomUUID } from "node:crypto";
|
|
16
|
+
import { runForkedAgent } from "./forked-agent.js";
|
|
17
|
+
import { scanCategoryManifest, formatCategoryContextBlock } from "./dream-category-context.js";
|
|
18
|
+
// ── Defaults ────────────────────────────────────────────────
|
|
19
|
+
const DEFAULT_TRIGGER = {
|
|
20
|
+
minHours: 24,
|
|
21
|
+
minSessions: 5,
|
|
22
|
+
minTurnsInSession: 20,
|
|
23
|
+
scanIntervalMs: 600_000, // 10 min
|
|
24
|
+
};
|
|
25
|
+
// Liveness lock: held only WHILE a dream runs. Separate from the gate marker
|
|
26
|
+
// below, so reclaiming a dead lock never corrupts the "last consolidated" time.
|
|
27
|
+
const LOCK_FILE = ".consolidate-lock";
|
|
28
|
+
// Hard run ceiling: a real dream completes in minutes. If the lock mtime is
|
|
29
|
+
// older than this, the holder is presumed dead (crash / PID reuse) and the lock
|
|
30
|
+
// is reclaimable regardless of the recorded PID. A running dream heartbeats the
|
|
31
|
+
// lock mtime, so a legitimate long dream is NOT reclaimed.
|
|
32
|
+
const MAX_DREAM_RUN_MS = 15 * 60 * 1000;
|
|
33
|
+
// Heartbeat cadence — keeps a live dream's lock fresh well within MAX_DREAM_RUN_MS.
|
|
34
|
+
const LOCK_HEARTBEAT_MS = 60 * 1000;
|
|
35
|
+
// Gate marker: mtime = time of the last SUCCESSFUL consolidation. Drives the
|
|
36
|
+
// 24h/session trigger gates. Only markConsolidationComplete touches it.
|
|
37
|
+
const LAST_CONSOLIDATED_FILE = ".last-consolidated";
|
|
38
|
+
const ENTRYPOINT_NAME = "CLAUDE.md";
|
|
39
|
+
const MAX_ENTRYPOINT_LINES = 100;
|
|
40
|
+
// ── Read-only command detection (CC BashTool.isReadOnly parity) ──
|
|
41
|
+
const READ_ONLY_COMMANDS = new Set([
|
|
42
|
+
"ls", "find", "grep", "cat", "stat", "wc", "head", "tail",
|
|
43
|
+
"file", "which", "whereis", "type", "echo", "printf", "test",
|
|
44
|
+
"diff", "sort", "uniq", "tr", "cut", "awk", "sed", // sed -n only
|
|
45
|
+
"du", "df", "date", "pwd", "hostname", "uname",
|
|
46
|
+
"git", // read-only git subcommands checked separately
|
|
47
|
+
]);
|
|
48
|
+
const GIT_READ_ONLY_SUBCOMMANDS = new Set([
|
|
49
|
+
"log", "show", "diff", "status", "branch", "tag", "remote",
|
|
50
|
+
"rev-parse", "rev-list", "ls-files", "ls-tree", "describe",
|
|
51
|
+
"blame", "shortlog", "name-rev", "cat-file",
|
|
52
|
+
]);
|
|
53
|
+
/** Dangerous patterns that indicate a write operation. */
|
|
54
|
+
const WRITE_INDICATORS = /[|>&]|>>|>\s|rm\s|mv\s|cp\s|chmod\s|chown\s|mkdir\s|touch\s/;
|
|
55
|
+
/**
|
|
56
|
+
* Check if a bash command string is read-only.
|
|
57
|
+
* Conservative: denies anything with pipes, redirects, or unknown commands.
|
|
58
|
+
*/
|
|
59
|
+
function isReadOnlyBashCommand(command) {
|
|
60
|
+
const trimmed = command.trim();
|
|
61
|
+
// Deny empty
|
|
62
|
+
if (!trimmed)
|
|
63
|
+
return false;
|
|
64
|
+
// Deny anything with obvious write indicators
|
|
65
|
+
if (WRITE_INDICATORS.test(trimmed))
|
|
66
|
+
return false;
|
|
67
|
+
// Parse first word as the command
|
|
68
|
+
const parts = trimmed.split(/\s+/);
|
|
69
|
+
const cmd = parts[0]?.replace(/^(\/usr\/bin\/|\/bin\/|\/usr\/local\/bin\/)/, "") ?? "";
|
|
70
|
+
if (!READ_ONLY_COMMANDS.has(cmd))
|
|
71
|
+
return false;
|
|
72
|
+
// Special case: git needs subcommand check
|
|
73
|
+
if (cmd === "git") {
|
|
74
|
+
const subCmd = parts[1];
|
|
75
|
+
if (!subCmd || !GIT_READ_ONLY_SUBCOMMANDS.has(subCmd))
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
async function persistDreamSummaryArtifact(params) {
|
|
81
|
+
await mkdir(params.memoryRoot, { recursive: true });
|
|
82
|
+
const summaryPath = join(params.memoryRoot, "fact-dream-summary.md");
|
|
83
|
+
let finalContent;
|
|
84
|
+
for (const event of params.events) {
|
|
85
|
+
if (event.type !== "end")
|
|
86
|
+
continue;
|
|
87
|
+
const content = event.content.trim();
|
|
88
|
+
if (content.length > 0)
|
|
89
|
+
finalContent = content;
|
|
90
|
+
}
|
|
91
|
+
const touched = [...new Set(params.filesTouched)];
|
|
92
|
+
const lines = [
|
|
93
|
+
"# Dream Consolidation Summary",
|
|
94
|
+
"",
|
|
95
|
+
`- completedAt: ${new Date().toISOString()}`,
|
|
96
|
+
`- sessionsReviewed: ${params.sessionsReviewed}`,
|
|
97
|
+
`- durationMs: ${params.durationMs}`,
|
|
98
|
+
"",
|
|
99
|
+
"## Agent Summary",
|
|
100
|
+
"",
|
|
101
|
+
finalContent || "Dream completed without a textual model summary.",
|
|
102
|
+
...(params.sessionDigest ? [
|
|
103
|
+
"",
|
|
104
|
+
"## Recent Session Digest",
|
|
105
|
+
"",
|
|
106
|
+
params.sessionDigest,
|
|
107
|
+
] : []),
|
|
108
|
+
"",
|
|
109
|
+
"## Files Touched",
|
|
110
|
+
"",
|
|
111
|
+
...(touched.length > 0 ? touched.map((file) => `- ${file}`) : ["- none"]),
|
|
112
|
+
"",
|
|
113
|
+
];
|
|
114
|
+
await writeFile(summaryPath, lines.join("\n"), "utf8");
|
|
115
|
+
return summaryPath;
|
|
116
|
+
}
|
|
117
|
+
function safeSessionId(sessionId) {
|
|
118
|
+
return sessionId.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
119
|
+
}
|
|
120
|
+
async function readSessionDigest(transcriptDir, sessionIds) {
|
|
121
|
+
const sections = [];
|
|
122
|
+
for (const sessionId of sessionIds.slice(0, 8)) {
|
|
123
|
+
const transcriptPath = join(transcriptDir, safeSessionId(sessionId), "transcript.jsonl");
|
|
124
|
+
let raw = "";
|
|
125
|
+
try {
|
|
126
|
+
raw = await readFile(transcriptPath, "utf8");
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
const entries = [];
|
|
132
|
+
for (const line of raw.trim().split(/\r?\n/).slice(-24)) {
|
|
133
|
+
try {
|
|
134
|
+
const record = JSON.parse(line);
|
|
135
|
+
if (typeof record.content !== "string" || record.content.trim().length === 0)
|
|
136
|
+
continue;
|
|
137
|
+
const role = typeof record.role === "string" ? record.role : "message";
|
|
138
|
+
entries.push(`${role}: ${record.content.replace(/\s+/g, " ").slice(0, 900)}`);
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (entries.length > 0) {
|
|
145
|
+
sections.push(`### Session ${sessionId}\n${entries.join("\n")}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return sections.join("\n\n").slice(0, 16_000);
|
|
149
|
+
}
|
|
150
|
+
// ── Tool restriction (CC createAutoMemCanUseTool parity) ────
|
|
151
|
+
/**
|
|
152
|
+
* Check if a tool invocation is allowed during dream consolidation.
|
|
153
|
+
*
|
|
154
|
+
* Allowed:
|
|
155
|
+
* - read_file, grep, glob, search — unrestricted read-only tools
|
|
156
|
+
* - bash — only read-only commands (ls, grep, cat, find, stat, wc, head, tail)
|
|
157
|
+
* - file_edit, file_write — only within memoryRoot
|
|
158
|
+
* - Everything else — denied
|
|
159
|
+
*/
|
|
160
|
+
export function canUseDreamTool(memoryRoot, restriction) {
|
|
161
|
+
const { toolName, input } = restriction;
|
|
162
|
+
// Always-allow: read-only tools (qlogicagent canonical names)
|
|
163
|
+
const readOnlyTools = new Set([
|
|
164
|
+
"read", "search",
|
|
165
|
+
// LLM tool name variants (models may emit these instead of canonical names)
|
|
166
|
+
"read_file", "grep", "glob", "list_dir", "file_read", "Grep", "Glob",
|
|
167
|
+
]);
|
|
168
|
+
if (readOnlyTools.has(toolName)) {
|
|
169
|
+
return { allowed: true };
|
|
170
|
+
}
|
|
171
|
+
// QMemory tools: allowed during dream (hippocampus bridge)
|
|
172
|
+
const qmemoryTools = new Set([
|
|
173
|
+
"qmemory_search", "qmemory_store", "qmemory_feedback", "qmemory_temporal", "qmemory_profile",
|
|
174
|
+
]);
|
|
175
|
+
if (qmemoryTools.has(toolName)) {
|
|
176
|
+
return { allowed: true };
|
|
177
|
+
}
|
|
178
|
+
// Shell exec: only read-only commands (qlogicagent name: "exec")
|
|
179
|
+
if (toolName === "exec" || toolName === "bash" || toolName === "execute_command" || toolName === "Bash") {
|
|
180
|
+
const command = (input.command ?? input.cmd ?? "");
|
|
181
|
+
if (isReadOnlyBashCommand(command)) {
|
|
182
|
+
return { allowed: true };
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
allowed: false,
|
|
186
|
+
reason: "Only read-only shell commands are permitted during dream consolidation "
|
|
187
|
+
+ "(ls, find, grep, cat, stat, wc, head, tail, and similar)",
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
// File write/edit/patch: only within memory directory (qlogicagent names: "write", "edit", "patch")
|
|
191
|
+
if (toolName === "write" || toolName === "edit" || toolName === "patch"
|
|
192
|
+
|| toolName === "file_edit" || toolName === "file_write" || toolName === "FileEdit" || toolName === "FileWrite") {
|
|
193
|
+
const filePath = (input.file_path ?? input.path ?? input.filePath ?? "");
|
|
194
|
+
if (typeof filePath === "string" && isWithinMemoryDir(filePath, memoryRoot)) {
|
|
195
|
+
return { allowed: true };
|
|
196
|
+
}
|
|
197
|
+
return {
|
|
198
|
+
allowed: false,
|
|
199
|
+
reason: `File writes are only allowed within the memory directory: ${memoryRoot}`,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
// Everything else: denied
|
|
203
|
+
return {
|
|
204
|
+
allowed: false,
|
|
205
|
+
reason: `Tool "${toolName}" is not permitted during dream consolidation. `
|
|
206
|
+
+ "Only read, search, read-only exec, and memory-scoped write/edit/patch are allowed.",
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
function isWithinMemoryDir(filePath, memoryRoot) {
|
|
210
|
+
const absPath = isAbsolute(filePath) ? filePath : resolve(filePath);
|
|
211
|
+
const absMemory = isAbsolute(memoryRoot) ? memoryRoot : resolve(memoryRoot);
|
|
212
|
+
const normalized = normalize(absPath);
|
|
213
|
+
const normalizedRoot = normalize(absMemory);
|
|
214
|
+
return normalized.startsWith(normalizedRoot);
|
|
215
|
+
}
|
|
216
|
+
// ── Consolidation Prompt (CC 4-phase parity) ────────────────
|
|
217
|
+
/**
|
|
218
|
+
* Build the 4-phase memory consolidation prompt.
|
|
219
|
+
*
|
|
220
|
+
* Adapted from CC's consolidationPrompt.ts with our project context.
|
|
221
|
+
* P5: Enhanced with category-aware merge rules from write gate taxonomy.
|
|
222
|
+
*/
|
|
223
|
+
export function buildConsolidationPrompt(memoryRoot, transcriptDir, sessionIds, opts) {
|
|
224
|
+
const qmemorySection = opts?.hasQMemory ? `
|
|
225
|
+
|
|
226
|
+
## Phase 2.5 — Long-term memory triage (QMemory)
|
|
227
|
+
|
|
228
|
+
You have access to the long-term memory service via these tools:
|
|
229
|
+
- \`qmemory_search\` — recall existing long-term memories (check before storing duplicates)
|
|
230
|
+
- \`qmemory_store\` — submit a low-priority candidate to the memory consolidation pipeline
|
|
231
|
+
- \`qmemory_feedback\` — mark recalled memories as outdated/wrong/useful
|
|
232
|
+
|
|
233
|
+
For each insight worth long-term persistence:
|
|
234
|
+
1. Search QMemory first to check for duplicates or contradictions
|
|
235
|
+
2. If a contradiction is found, use qmemory_feedback to mark the old memory as "outdated"
|
|
236
|
+
3. Submit the corrected/new candidate via qmemory_store; the consolidator decides whether it becomes an active claim, a merge, or a conflict
|
|
237
|
+
|
|
238
|
+
Classify memories into:
|
|
239
|
+
- **Project memory** → write to local memoryRoot/*.md (fast KV access, project-scoped)
|
|
240
|
+
- **User long-term memory** → submit via qmemory_store (semantic search, persists across projects; not a direct final write)
|
|
241
|
+
- **Noise** → discard (do not store)
|
|
242
|
+
|
|
243
|
+
Examples of user long-term memories: preferences, personal facts, recurring patterns, important decisions.
|
|
244
|
+
Examples of project memories: architecture decisions, file conventions, build patterns, known issues.
|
|
245
|
+
` : "";
|
|
246
|
+
return `# Dream: Memory Consolidation
|
|
247
|
+
|
|
248
|
+
You are performing a dream — a reflective pass over your memory files. Synthesize what you've learned recently into durable, well-organized memories so that future sessions can orient quickly.
|
|
249
|
+
|
|
250
|
+
Memory directory: \`${memoryRoot}\`
|
|
251
|
+
If the directory doesn't exist yet, create it with the necessary structure.
|
|
252
|
+
|
|
253
|
+
Session transcripts: \`${transcriptDir}\` (large JSONL files — grep narrowly, don't read whole files)
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Phase 1 — Orient
|
|
258
|
+
|
|
259
|
+
- \`ls\` the memory directory to see what already exists
|
|
260
|
+
- Read \`${ENTRYPOINT_NAME}\` to understand the current index
|
|
261
|
+
- Skim existing topic files so you improve them rather than creating duplicates
|
|
262
|
+
- If \`logs/\` or \`sessions/\` subdirectories exist, review recent entries there
|
|
263
|
+
|
|
264
|
+
## Phase 2 — Gather recent signal
|
|
265
|
+
|
|
266
|
+
Look for new information worth persisting. Sources in rough priority order:
|
|
267
|
+
|
|
268
|
+
1. **Session logs** if present — these are the append-only stream
|
|
269
|
+
2. **Existing memories that drifted** — facts that contradict something in the codebase now
|
|
270
|
+
3. **Transcript search** — if you need specific context, grep the JSONL transcripts for narrow terms:
|
|
271
|
+
\`grep -rn "<narrow term>" ${transcriptDir}/include="*.jsonl" | tail -50\`
|
|
272
|
+
|
|
273
|
+
Don't exhaustively read transcripts. Look only for things you already suspect matter.
|
|
274
|
+
${qmemorySection}${opts?.categoryContext ?? ""}${opts?.temporalContext ?? ""}${opts?.profileContext ?? ""}${opts?.sessionDigest ? `## Recent Session Digest
|
|
275
|
+
|
|
276
|
+
The runtime already extracted this bounded digest from project transcripts. Treat it as primary evidence for consolidation:
|
|
277
|
+
|
|
278
|
+
${opts.sessionDigest}
|
|
279
|
+
|
|
280
|
+
` : ""}
|
|
281
|
+
## Phase 2.8 — User Profile Update
|
|
282
|
+
|
|
283
|
+
Analyze recent sessions for user preferences, habits, and personal context. Use two mechanisms:
|
|
284
|
+
|
|
285
|
+
**Structured profile** (key-value, queryable): Use \`qmemory_profile\` with action "set" for discrete facts:
|
|
286
|
+
- \`qmemory_profile(action="set", key="communication_style", value="concise, no fluff")\`
|
|
287
|
+
- \`qmemory_profile(action="set", key="tech_stack", value="TypeScript, Node.js, Electron, SQLite")\`
|
|
288
|
+
- \`qmemory_profile(action="set", key="work_schedule", value="late night coder, Asia/Shanghai")\`
|
|
289
|
+
- \`qmemory_profile(action="set", key="project_context", value="AI desktop assistant monorepo")\`
|
|
290
|
+
|
|
291
|
+
**Narrative memory candidates** (semantic search): Use \`qmemory_store\` with source "profile-extraction" for richer observations:
|
|
292
|
+
- "User strongly dislikes over-engineering and unnecessary abstractions"
|
|
293
|
+
- "User requires all code changes to compile before committing"
|
|
294
|
+
|
|
295
|
+
Profile extraction rules:
|
|
296
|
+
1. Read the existing profile first: \`qmemory_profile(action="get")\`
|
|
297
|
+
2. Only update if you observe NEW or CHANGED information (don't duplicate)
|
|
298
|
+
3. If an existing profile entry contradicts current behavior, update it
|
|
299
|
+
4. Be specific and factual — avoid vague entries like "user is smart"
|
|
300
|
+
5. Categories for profile keys: communication_style, tech_stack, work_schedule, project_context, coding_preferences, tools_used
|
|
301
|
+
|
|
302
|
+
## Phase 3 — Consolidate
|
|
303
|
+
|
|
304
|
+
For each thing worth remembering, write or update a memory file at the top level of the memory directory.
|
|
305
|
+
|
|
306
|
+
Focus on:
|
|
307
|
+
- Merging new signal into existing topic files rather than creating near-duplicates
|
|
308
|
+
- Converting relative dates ("yesterday", "last week") to absolute dates so they remain interpretable after time passes
|
|
309
|
+
- Deleting contradicted facts — if today's investigation disproves an old memory, fix it at the source
|
|
310
|
+
|
|
311
|
+
## Phase 4 — Prune and index
|
|
312
|
+
|
|
313
|
+
Update \`${ENTRYPOINT_NAME}\` so it stays under ${MAX_ENTRYPOINT_LINES} lines AND under ~25KB. It's an **index**, not a dump — each entry should be one line under ~150 characters: \`- [Title](file.md) — one-line hook\`. Never write memory content directly into it.
|
|
314
|
+
|
|
315
|
+
- Remove pointers to memories that are now stale, wrong, or superseded
|
|
316
|
+
- Demote verbose entries: if an index line is over ~200 chars, it's carrying content that belongs in the topic file — shorten the line, move the detail
|
|
317
|
+
- Add pointers to newly important memories
|
|
318
|
+
- Resolve contradictions — if two files disagree, fix the wrong one
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
**Tool constraints for this run:** Bash is restricted to read-only commands (\`ls\`, \`find\`, \`grep\`, \`cat\`, \`stat\`, \`wc\`, \`head\`, \`tail\`, and similar). Anything that writes, redirects to a file, or modifies state will be denied. Plan your exploration with this in mind — no need to probe.
|
|
323
|
+
|
|
324
|
+
Sessions since last consolidation (${sessionIds.length}):
|
|
325
|
+
${sessionIds.map(id => `- ${id}`).join("\n")}
|
|
326
|
+
|
|
327
|
+
Return a brief summary of what you consolidated, updated, or pruned. If nothing changed (memories are already tight), say so.`;
|
|
328
|
+
}
|
|
329
|
+
// ── Trigger Gate Logic (CC autoDream parity) ─────────────────
|
|
330
|
+
let lastSessionScanAt = 0;
|
|
331
|
+
/**
|
|
332
|
+
* Check whether dream consolidation should run.
|
|
333
|
+
*
|
|
334
|
+
* Gate order (cheapest first):
|
|
335
|
+
* 1. Time gate — hours since lastConsolidatedAt >= minHours
|
|
336
|
+
* 2. Scan throttle — 10-minute interval to suppress redundant scans
|
|
337
|
+
* 3. Session gate — session count since lastConsolidatedAt >= minSessions
|
|
338
|
+
*
|
|
339
|
+
* @returns Session IDs to review, or null if gates failed.
|
|
340
|
+
*/
|
|
341
|
+
export async function shouldTriggerDream(ctx, config = {}) {
|
|
342
|
+
const cfg = { ...DEFAULT_TRIGGER, ...config };
|
|
343
|
+
// Read last consolidation timestamp from lock file mtime
|
|
344
|
+
let lastAt;
|
|
345
|
+
try {
|
|
346
|
+
lastAt = await readLastConsolidatedAt(ctx.memoryRoot);
|
|
347
|
+
}
|
|
348
|
+
catch {
|
|
349
|
+
// No lock file = never consolidated = trigger
|
|
350
|
+
lastAt = 0;
|
|
351
|
+
}
|
|
352
|
+
// ── Time gate (required for all trigger paths) ──
|
|
353
|
+
const hoursSince = (Date.now() - lastAt) / 3_600_000;
|
|
354
|
+
if (!cfg.force && hoursSince < cfg.minHours)
|
|
355
|
+
return null;
|
|
356
|
+
// ── Scan throttle ──
|
|
357
|
+
const sinceScanMs = Date.now() - lastSessionScanAt;
|
|
358
|
+
if (!cfg.force && sinceScanMs < cfg.scanIntervalMs)
|
|
359
|
+
return null;
|
|
360
|
+
lastSessionScanAt = Date.now();
|
|
361
|
+
// ── Session gate (with turn-count alternative for single-session users) ──
|
|
362
|
+
let sessionIds;
|
|
363
|
+
try {
|
|
364
|
+
sessionIds = await ctx.listSessionsSince(lastAt);
|
|
365
|
+
}
|
|
366
|
+
catch {
|
|
367
|
+
return null;
|
|
368
|
+
}
|
|
369
|
+
// Exclude current session
|
|
370
|
+
sessionIds = sessionIds.filter(id => id !== ctx.currentSessionId);
|
|
371
|
+
// Gate: pass if EITHER enough sessions OR enough turns in current session
|
|
372
|
+
const sessionGatePass = sessionIds.length >= cfg.minSessions;
|
|
373
|
+
const turnGatePass = (ctx.currentSessionTurnCount ?? 0) >= cfg.minTurnsInSession;
|
|
374
|
+
if (!cfg.force && !sessionGatePass && !turnGatePass)
|
|
375
|
+
return null;
|
|
376
|
+
// If triggered by turn count (single-session user), include current session for review
|
|
377
|
+
if (!sessionGatePass && turnGatePass) {
|
|
378
|
+
sessionIds = [ctx.currentSessionId];
|
|
379
|
+
}
|
|
380
|
+
return { sessionIds };
|
|
381
|
+
}
|
|
382
|
+
// ── Consolidation Lock (CC consolidationLock parity) ─────────
|
|
383
|
+
async function readLastConsolidatedAt(memoryRoot) {
|
|
384
|
+
// Gate marker is the source of truth for "last successful consolidation".
|
|
385
|
+
try {
|
|
386
|
+
const s = await stat(join(memoryRoot, LAST_CONSOLIDATED_FILE));
|
|
387
|
+
return s.mtimeMs;
|
|
388
|
+
}
|
|
389
|
+
catch {
|
|
390
|
+
// Legacy fallback: pre-split installs recorded last-consolidated as the lock
|
|
391
|
+
// mtime. Read it once so the gate doesn't suddenly think it never ran.
|
|
392
|
+
const s = await stat(join(memoryRoot, LOCK_FILE));
|
|
393
|
+
return s.mtimeMs;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
function isProcessRunning(pid) {
|
|
397
|
+
try {
|
|
398
|
+
process.kill(pid, 0);
|
|
399
|
+
return true;
|
|
400
|
+
}
|
|
401
|
+
catch {
|
|
402
|
+
return false;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Attempt to acquire the consolidation liveness lock.
|
|
407
|
+
*
|
|
408
|
+
* A held lock is "live" only if its mtime is fresh (< MAX_DREAM_RUN_MS) AND the
|
|
409
|
+
* recorded PID is alive. A stale mtime reclaims unconditionally — this defends
|
|
410
|
+
* against a crashed holder whose PID was reused by an unrelated process (the old
|
|
411
|
+
* pure-PID check would falsely see it as alive and deadlock for up to an hour).
|
|
412
|
+
*
|
|
413
|
+
* @returns 0 on acquisition, or null if blocked by a live holder.
|
|
414
|
+
*/
|
|
415
|
+
export async function tryAcquireConsolidationLock(memoryRoot) {
|
|
416
|
+
const lockPath = join(memoryRoot, LOCK_FILE);
|
|
417
|
+
let mtimeMs;
|
|
418
|
+
let holderPid;
|
|
419
|
+
try {
|
|
420
|
+
const [s, raw] = await Promise.all([stat(lockPath), readFile(lockPath, "utf8")]);
|
|
421
|
+
mtimeMs = s.mtimeMs;
|
|
422
|
+
const parsed = parseInt(raw.trim(), 10);
|
|
423
|
+
holderPid = Number.isFinite(parsed) ? parsed : undefined;
|
|
424
|
+
}
|
|
425
|
+
catch {
|
|
426
|
+
// ENOENT — no prior lock, proceed
|
|
427
|
+
}
|
|
428
|
+
const fresh = mtimeMs !== undefined && Date.now() - mtimeMs < MAX_DREAM_RUN_MS;
|
|
429
|
+
if (fresh && holderPid !== undefined && isProcessRunning(holderPid)) {
|
|
430
|
+
return null; // Blocked by a live, heart-beating holder
|
|
431
|
+
}
|
|
432
|
+
await mkdir(memoryRoot, { recursive: true });
|
|
433
|
+
await writeFile(lockPath, String(process.pid));
|
|
434
|
+
// Verify we own the lock (race guard)
|
|
435
|
+
try {
|
|
436
|
+
const verify = await readFile(lockPath, "utf8");
|
|
437
|
+
if (parseInt(verify.trim(), 10) !== process.pid)
|
|
438
|
+
return null;
|
|
439
|
+
}
|
|
440
|
+
catch {
|
|
441
|
+
return null;
|
|
442
|
+
}
|
|
443
|
+
return 0;
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Refresh the lock mtime so a long-but-legitimate dream is not reclaimed.
|
|
447
|
+
* Called periodically by the dream runner. No-op if we no longer own the lock.
|
|
448
|
+
*/
|
|
449
|
+
export async function heartbeatConsolidationLock(memoryRoot) {
|
|
450
|
+
const lockPath = join(memoryRoot, LOCK_FILE);
|
|
451
|
+
try {
|
|
452
|
+
const raw = await readFile(lockPath, "utf8");
|
|
453
|
+
if (parseInt(raw.trim(), 10) !== process.pid)
|
|
454
|
+
return; // not ours anymore
|
|
455
|
+
const now = Date.now() / 1000;
|
|
456
|
+
const { utimes } = await import("node:fs/promises");
|
|
457
|
+
await utimes(lockPath, now, now);
|
|
458
|
+
}
|
|
459
|
+
catch {
|
|
460
|
+
// Best-effort — a missed heartbeat only risks early reclaim near the ceiling.
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
/** Release the liveness lock explicitly (on failure, abort, or shutdown). */
|
|
464
|
+
export async function releaseConsolidationLock(memoryRoot) {
|
|
465
|
+
try {
|
|
466
|
+
await unlink(join(memoryRoot, LOCK_FILE));
|
|
467
|
+
}
|
|
468
|
+
catch {
|
|
469
|
+
// Already gone.
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Rollback after a FAILED dream run: release the lock. The gate marker is NOT
|
|
474
|
+
* touched (only success advances it), so a failed run never delays the next gate.
|
|
475
|
+
* `_priorMtime` is retained for call-site compatibility and ignored.
|
|
476
|
+
*/
|
|
477
|
+
export async function rollbackConsolidationLock(memoryRoot, _priorMtime) {
|
|
478
|
+
await releaseConsolidationLock(memoryRoot);
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Record a SUCCESSFUL consolidation: advance the gate marker (mtime = now) and
|
|
482
|
+
* release the liveness lock.
|
|
483
|
+
*/
|
|
484
|
+
export async function markConsolidationComplete(memoryRoot) {
|
|
485
|
+
// Advance the gate marker (its mtime = last successful consolidation)...
|
|
486
|
+
await mkdir(memoryRoot, { recursive: true });
|
|
487
|
+
await writeFile(join(memoryRoot, LAST_CONSOLIDATED_FILE), String(Date.now()));
|
|
488
|
+
// ...and release the liveness lock so the next dream can acquire it.
|
|
489
|
+
await releaseConsolidationLock(memoryRoot);
|
|
490
|
+
}
|
|
491
|
+
// ── Dream Task State Helpers ─────────────────────────────────
|
|
492
|
+
/** Create initial DreamTaskState. */
|
|
493
|
+
export function createDreamTaskState(opts) {
|
|
494
|
+
return {
|
|
495
|
+
taskId: `dream-${randomUUID().slice(0, 8)}`,
|
|
496
|
+
type: "dream",
|
|
497
|
+
label: "Memory consolidation",
|
|
498
|
+
permissionRole: "worker",
|
|
499
|
+
isolation: "shared",
|
|
500
|
+
lifecycle: "running",
|
|
501
|
+
depth: 1,
|
|
502
|
+
maxTurns: 0, // CC parity: dream runs to completion, no turn cap (0 = unlimited)
|
|
503
|
+
tokenBudget: 0, // Dreams use their own budget
|
|
504
|
+
startedAt: Date.now(),
|
|
505
|
+
parentTaskId: opts.parentTaskId,
|
|
506
|
+
sessionId: opts.sessionId,
|
|
507
|
+
phase: "starting",
|
|
508
|
+
sessionsReviewing: opts.sessionsReviewing,
|
|
509
|
+
filesTouched: [],
|
|
510
|
+
turns: [],
|
|
511
|
+
priorLockMtime: opts.priorLockMtime,
|
|
512
|
+
};
|
|
513
|
+
}
|
|
514
|
+
/** Add a turn to the dream state. */
|
|
515
|
+
export function addDreamTurn(state, turn, touchedPaths) {
|
|
516
|
+
const seen = new Set(state.filesTouched);
|
|
517
|
+
const newTouched = touchedPaths.filter(p => !seen.has(p));
|
|
518
|
+
// Skip no-op updates
|
|
519
|
+
if (turn.text === "" && turn.toolUseCount === 0 && newTouched.length === 0) {
|
|
520
|
+
return state;
|
|
521
|
+
}
|
|
522
|
+
return {
|
|
523
|
+
...state,
|
|
524
|
+
phase: newTouched.length > 0 ? "updating" : state.phase,
|
|
525
|
+
filesTouched: newTouched.length > 0
|
|
526
|
+
? [...state.filesTouched, ...newTouched]
|
|
527
|
+
: state.filesTouched,
|
|
528
|
+
turns: [...state.turns, turn],
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
/** Mark dream as completed. */
|
|
532
|
+
export function completeDreamState(state) {
|
|
533
|
+
return {
|
|
534
|
+
...state,
|
|
535
|
+
lifecycle: "completed",
|
|
536
|
+
phase: "completed",
|
|
537
|
+
endedAt: Date.now(),
|
|
538
|
+
};
|
|
539
|
+
}
|
|
540
|
+
/** Mark dream as failed. */
|
|
541
|
+
export function failDreamState(state) {
|
|
542
|
+
return {
|
|
543
|
+
...state,
|
|
544
|
+
lifecycle: "failed",
|
|
545
|
+
phase: "failed",
|
|
546
|
+
endedAt: Date.now(),
|
|
547
|
+
};
|
|
548
|
+
}
|
|
549
|
+
// ── Orchestrator ─────────────────────────────────────────────
|
|
550
|
+
/**
|
|
551
|
+
* Full dream orchestration entry point.
|
|
552
|
+
*
|
|
553
|
+
* This coordinates the entire dream lifecycle:
|
|
554
|
+
* 1. Check trigger gates
|
|
555
|
+
* 2. Acquire consolidation lock
|
|
556
|
+
* 3. Build consolidation prompt
|
|
557
|
+
* 4. Return dream context for the caller to run through agent loop
|
|
558
|
+
*
|
|
559
|
+
* The caller (stdio-server) is responsible for:
|
|
560
|
+
* - Running the prompt through the agent's tool loop
|
|
561
|
+
* - Applying canUseDreamTool() restrictions via tool.before_invoke hook
|
|
562
|
+
* - Calling markConsolidationComplete() on success
|
|
563
|
+
* - Calling rollbackConsolidationLock() on failure
|
|
564
|
+
*/
|
|
565
|
+
export async function prepareDreamRun(ctx, config = {}) {
|
|
566
|
+
const cfg = { ...DEFAULT_TRIGGER, ...config };
|
|
567
|
+
// ── Gate check ──
|
|
568
|
+
const gateResult = await shouldTriggerDream(ctx, cfg);
|
|
569
|
+
if (!gateResult)
|
|
570
|
+
return null;
|
|
571
|
+
// ── Acquire lock ──
|
|
572
|
+
// Both forced (on-demand) and idle dreams acquire the liveness lock — force
|
|
573
|
+
// bypasses the trigger GATES (handled in shouldTriggerDream), not the lock,
|
|
574
|
+
// so two dreams never consolidate the same memory concurrently.
|
|
575
|
+
const acquired = await tryAcquireConsolidationLock(ctx.memoryRoot);
|
|
576
|
+
if (acquired === null)
|
|
577
|
+
return null; // Blocked by a live dream
|
|
578
|
+
const priorMtime = 0;
|
|
579
|
+
// ── Build prompt ──
|
|
580
|
+
const prompt = buildConsolidationPrompt(ctx.memoryRoot, ctx.transcriptDir, gateResult.sessionIds);
|
|
581
|
+
// ── Create task state ──
|
|
582
|
+
const taskState = createDreamTaskState({
|
|
583
|
+
sessionId: ctx.currentSessionId,
|
|
584
|
+
sessionsReviewing: gateResult.sessionIds.length,
|
|
585
|
+
priorLockMtime: priorMtime,
|
|
586
|
+
});
|
|
587
|
+
return {
|
|
588
|
+
prompt,
|
|
589
|
+
taskState,
|
|
590
|
+
sessionIds: gateResult.sessionIds,
|
|
591
|
+
};
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* Run a complete dream consolidation using an isolated forked agent.
|
|
595
|
+
*
|
|
596
|
+
* CC parity: This uses runForkedAgent() for true isolation instead of
|
|
597
|
+
* hook-based tool restriction on the shared agent loop. The dream runs
|
|
598
|
+
* in its own message history with its own AbortController.
|
|
599
|
+
*
|
|
600
|
+
* Full lifecycle:
|
|
601
|
+
* 1. Check trigger gates
|
|
602
|
+
* 2. Acquire consolidation lock
|
|
603
|
+
* 3. Build consolidation prompt
|
|
604
|
+
* 4. Fork sub-agent with restricted tools
|
|
605
|
+
* 5. Run to completion
|
|
606
|
+
* 6. Mark consolidation complete (or rollback on failure)
|
|
607
|
+
*/
|
|
608
|
+
export async function runDream(deps) {
|
|
609
|
+
const startTime = Date.now();
|
|
610
|
+
// ── Prepare (gates + lock + prompt) ──
|
|
611
|
+
const prepared = await prepareDreamRun(deps.context, deps.triggerConfig);
|
|
612
|
+
if (!prepared) {
|
|
613
|
+
return {
|
|
614
|
+
ok: true,
|
|
615
|
+
sessionsReviewed: 0,
|
|
616
|
+
filesTouched: [],
|
|
617
|
+
turns: [],
|
|
618
|
+
durationMs: Date.now() - startTime,
|
|
619
|
+
};
|
|
620
|
+
}
|
|
621
|
+
const { taskState, sessionIds } = prepared;
|
|
622
|
+
// Register in the unified task store so dream lifecycle is observable
|
|
623
|
+
// (task.updated notifications + task tool queries).
|
|
624
|
+
deps.taskStore?.registerTask(taskState);
|
|
625
|
+
const settleDreamTask = (ok, output, error) => {
|
|
626
|
+
deps.taskStore?.updateTask(taskState.taskId, (t) => ({
|
|
627
|
+
...t,
|
|
628
|
+
lifecycle: ok ? "completed" : "failed",
|
|
629
|
+
phase: ok ? "completed" : "failed",
|
|
630
|
+
output,
|
|
631
|
+
error,
|
|
632
|
+
endedAt: Date.now(),
|
|
633
|
+
}));
|
|
634
|
+
};
|
|
635
|
+
// P5: Scan category manifest for category-aware merge rules
|
|
636
|
+
let categoryContext = "";
|
|
637
|
+
try {
|
|
638
|
+
const manifest = await scanCategoryManifest(deps.context.memoryRoot);
|
|
639
|
+
if (manifest.totalFiles > 0) {
|
|
640
|
+
categoryContext = formatCategoryContextBlock(manifest);
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
catch {
|
|
644
|
+
// Non-fatal: dream proceeds without category context
|
|
645
|
+
}
|
|
646
|
+
// Rebuild prompt with memory awareness + category context + temporal context
|
|
647
|
+
const hasMemory = !!(deps.memoryProvider && deps.memoryUserId);
|
|
648
|
+
// ── Temporal context: inject recent activity summary into Dream ──
|
|
649
|
+
let temporalContext = "";
|
|
650
|
+
if (hasMemory && deps.memoryProvider?.getActivitySummary) {
|
|
651
|
+
try {
|
|
652
|
+
const summary = deps.memoryProvider.getActivitySummary(deps.memoryUserId, 7);
|
|
653
|
+
if (summary.dailyCounts.length > 0) {
|
|
654
|
+
const lines = ["## Recent Memory Activity (last 7 days)"];
|
|
655
|
+
lines.push("");
|
|
656
|
+
for (const day of summary.dailyCounts) {
|
|
657
|
+
lines.push(`- ${day.date}: ${day.count} memories recorded`);
|
|
658
|
+
}
|
|
659
|
+
if (summary.highlights.length > 0) {
|
|
660
|
+
lines.push("");
|
|
661
|
+
lines.push("**High-importance entries:**");
|
|
662
|
+
for (const h of summary.highlights.slice(0, 10)) {
|
|
663
|
+
lines.push(`- [${h.category}] ${h.text.slice(0, 100)}${h.text.length > 100 ? "..." : ""} (${h.date})`);
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
temporalContext = "\n" + lines.join("\n") + "\n";
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
catch {
|
|
670
|
+
// Non-fatal
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
// ── User Profile context: inject known preferences for continuity ──
|
|
674
|
+
let profileContext = "";
|
|
675
|
+
if (hasMemory && deps.memoryProvider?.getAllProfiles) {
|
|
676
|
+
try {
|
|
677
|
+
const profiles = deps.memoryProvider.getAllProfiles(deps.memoryUserId);
|
|
678
|
+
const entries = Object.entries(profiles);
|
|
679
|
+
if (entries.length > 0) {
|
|
680
|
+
const lines = ["## Known User Profile"];
|
|
681
|
+
lines.push("");
|
|
682
|
+
for (const [key, value] of entries.slice(0, 20)) {
|
|
683
|
+
lines.push(`- **${key}**: ${value}`);
|
|
684
|
+
}
|
|
685
|
+
profileContext = "\n" + lines.join("\n") + "\n";
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
catch {
|
|
689
|
+
// Non-fatal
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
let sessionDigest = "";
|
|
693
|
+
try {
|
|
694
|
+
sessionDigest = await readSessionDigest(deps.context.transcriptDir, sessionIds);
|
|
695
|
+
}
|
|
696
|
+
catch {
|
|
697
|
+
sessionDigest = "";
|
|
698
|
+
}
|
|
699
|
+
const prompt = buildConsolidationPrompt(deps.context.memoryRoot, deps.context.transcriptDir, sessionIds, {
|
|
700
|
+
hasQMemory: hasMemory,
|
|
701
|
+
categoryContext: categoryContext || undefined,
|
|
702
|
+
temporalContext: temporalContext || undefined,
|
|
703
|
+
profileContext: profileContext || undefined,
|
|
704
|
+
sessionDigest: sessionDigest || undefined,
|
|
705
|
+
});
|
|
706
|
+
deps.log.info(`[dream] starting consolidation — ${sessionIds.length} sessions, ` +
|
|
707
|
+
`memoryRoot=${deps.context.memoryRoot}` +
|
|
708
|
+
(hasMemory ? ", memory=enabled" : ""));
|
|
709
|
+
// Fire subagent.started hook
|
|
710
|
+
deps.hooks?.invoke("subagent.started", {
|
|
711
|
+
sessionId: deps.context.currentSessionId,
|
|
712
|
+
turnId: taskState.taskId,
|
|
713
|
+
subagentId: taskState.taskId,
|
|
714
|
+
agentType: "dream",
|
|
715
|
+
}).catch(() => { });
|
|
716
|
+
// ── Build tool restriction function ──
|
|
717
|
+
const canUse = (toolName, input) => canUseDreamTool(deps.context.memoryRoot, { toolName, input });
|
|
718
|
+
// ── Memory virtual tools (injected when provider present) ──
|
|
719
|
+
const qmemoryToolDefs = hasMemory ? [
|
|
720
|
+
{
|
|
721
|
+
type: "function",
|
|
722
|
+
function: {
|
|
723
|
+
name: "qmemory_search",
|
|
724
|
+
description: "Search the user's long-term memory (QMemory). Returns relevant memories sorted by relevance.",
|
|
725
|
+
parameters: {
|
|
726
|
+
type: "object",
|
|
727
|
+
properties: {
|
|
728
|
+
query: { type: "string", description: "Semantic search query" },
|
|
729
|
+
limit: { type: "number", description: "Max results (default: 10)" },
|
|
730
|
+
},
|
|
731
|
+
required: ["query"],
|
|
732
|
+
},
|
|
733
|
+
},
|
|
734
|
+
},
|
|
735
|
+
{
|
|
736
|
+
type: "function",
|
|
737
|
+
function: {
|
|
738
|
+
name: "qmemory_store",
|
|
739
|
+
description: "Submit a low-priority candidate to the memory consolidation pipeline. Use for user preferences, facts, and cross-project knowledge; it may merge, conflict, or wait for confirmation.",
|
|
740
|
+
parameters: {
|
|
741
|
+
type: "object",
|
|
742
|
+
properties: {
|
|
743
|
+
text: { type: "string", description: "The candidate memory text to submit" },
|
|
744
|
+
source: { type: "string", description: "Source label (e.g. 'dream-consolidation')" },
|
|
745
|
+
},
|
|
746
|
+
required: ["text"],
|
|
747
|
+
},
|
|
748
|
+
},
|
|
749
|
+
},
|
|
750
|
+
{
|
|
751
|
+
type: "function",
|
|
752
|
+
function: {
|
|
753
|
+
name: "qmemory_feedback",
|
|
754
|
+
description: "Submit feedback on recalled memories (e.g. mark as outdated or wrong).",
|
|
755
|
+
parameters: {
|
|
756
|
+
type: "object",
|
|
757
|
+
properties: {
|
|
758
|
+
memoryIds: { type: "array", items: { type: "string" }, description: "IDs of memories to give feedback on" },
|
|
759
|
+
signal: { type: "string", enum: ["useful", "irrelevant", "outdated", "wrong"], description: "Feedback signal" },
|
|
760
|
+
},
|
|
761
|
+
required: ["memoryIds", "signal"],
|
|
762
|
+
},
|
|
763
|
+
},
|
|
764
|
+
},
|
|
765
|
+
{
|
|
766
|
+
type: "function",
|
|
767
|
+
function: {
|
|
768
|
+
name: "qmemory_temporal",
|
|
769
|
+
description: "Query memories by time range. Use for temporal synthesis ('what happened last week', 'recent decisions').",
|
|
770
|
+
parameters: {
|
|
771
|
+
type: "object",
|
|
772
|
+
properties: {
|
|
773
|
+
days: { type: "number", description: "Look back N days from today (default: 7)" },
|
|
774
|
+
category: { type: "string", description: "Filter by category (optional)" },
|
|
775
|
+
},
|
|
776
|
+
},
|
|
777
|
+
},
|
|
778
|
+
},
|
|
779
|
+
{
|
|
780
|
+
type: "function",
|
|
781
|
+
function: {
|
|
782
|
+
name: "qmemory_profile",
|
|
783
|
+
description: "Read or write user profile entries. Use 'get' to read all, 'set' to update a key.",
|
|
784
|
+
parameters: {
|
|
785
|
+
type: "object",
|
|
786
|
+
properties: {
|
|
787
|
+
action: { type: "string", enum: ["get", "set"], description: "Action to perform" },
|
|
788
|
+
key: { type: "string", description: "Profile key (required for 'set')" },
|
|
789
|
+
value: { type: "string", description: "Profile value (required for 'set')" },
|
|
790
|
+
},
|
|
791
|
+
required: ["action"],
|
|
792
|
+
},
|
|
793
|
+
},
|
|
794
|
+
},
|
|
795
|
+
] : [];
|
|
796
|
+
// ── Wrap tool invoker to handle memory tool calls ──
|
|
797
|
+
const wrappedToolInvoker = hasMemory
|
|
798
|
+
? {
|
|
799
|
+
invoke: async (turnId, name, args, signal) => {
|
|
800
|
+
const provider = deps.memoryProvider;
|
|
801
|
+
const userId = deps.memoryUserId;
|
|
802
|
+
if (name === "qmemory_search") {
|
|
803
|
+
const { query, limit } = JSON.parse(args);
|
|
804
|
+
const results = await provider.search(query, userId, { limit: limit ?? 10 });
|
|
805
|
+
return { result: JSON.stringify(results) };
|
|
806
|
+
}
|
|
807
|
+
if (name === "qmemory_store") {
|
|
808
|
+
if (!provider.proposeExtracted)
|
|
809
|
+
return { result: "", error: "memory proposals are not supported" };
|
|
810
|
+
const { text, source } = JSON.parse(args);
|
|
811
|
+
const result = await provider.proposeExtracted([{ text, category: "insight", importance: 0.45 }], userId, {
|
|
812
|
+
sessionId: deps.context.currentSessionId,
|
|
813
|
+
source: source ?? "dream-consolidation",
|
|
814
|
+
});
|
|
815
|
+
return { result: JSON.stringify(result) };
|
|
816
|
+
}
|
|
817
|
+
if (name === "qmemory_feedback") {
|
|
818
|
+
if (!provider.feedback)
|
|
819
|
+
return { result: "Feedback noted (no handler)." };
|
|
820
|
+
const { memoryIds, signal } = JSON.parse(args);
|
|
821
|
+
const result = await provider.feedback(memoryIds, signal);
|
|
822
|
+
return { result: `Feedback applied to ${result.affected} memories.` };
|
|
823
|
+
}
|
|
824
|
+
if (name === "qmemory_temporal") {
|
|
825
|
+
if (!provider.synthesizeTimeline)
|
|
826
|
+
return { result: "Temporal synthesis not available." };
|
|
827
|
+
const { days, category } = JSON.parse(args);
|
|
828
|
+
const lookbackDays = days ?? 7;
|
|
829
|
+
const startMs = Date.now() - lookbackDays * 86_400_000;
|
|
830
|
+
const timeline = provider.synthesizeTimeline(userId, startMs, Date.now());
|
|
831
|
+
return { result: timeline };
|
|
832
|
+
}
|
|
833
|
+
if (name === "qmemory_profile") {
|
|
834
|
+
const { action, key, value } = JSON.parse(args);
|
|
835
|
+
if (action === "get") {
|
|
836
|
+
if (!provider.getAllProfiles)
|
|
837
|
+
return { result: "{}" };
|
|
838
|
+
const profiles = provider.getAllProfiles(userId);
|
|
839
|
+
return { result: JSON.stringify(profiles) };
|
|
840
|
+
}
|
|
841
|
+
if (action === "set" && key && value) {
|
|
842
|
+
if (!provider.setProfile)
|
|
843
|
+
return { result: "Profile write not available." };
|
|
844
|
+
provider.setProfile(userId, key, value);
|
|
845
|
+
return { result: `Profile updated: ${key} = ${value}` };
|
|
846
|
+
}
|
|
847
|
+
return { result: "Invalid profile action. Use 'get' or 'set' with key/value." };
|
|
848
|
+
}
|
|
849
|
+
return deps.toolInvoker.invoke(turnId, name, args, signal);
|
|
850
|
+
},
|
|
851
|
+
}
|
|
852
|
+
: deps.toolInvoker;
|
|
853
|
+
// Filter tools to only those allowed by canUseDreamTool.
|
|
854
|
+
// This dramatically reduces token count — the full manifest has dozens of
|
|
855
|
+
// tools (video, image, tts, team, cron...) irrelevant to dream.
|
|
856
|
+
const DREAM_ALLOWED_TOOLS = new Set([
|
|
857
|
+
"read", "write", "edit", "patch", "exec", "search",
|
|
858
|
+
"qmemory_search", "qmemory_store", "qmemory_feedback", "qmemory_temporal", "qmemory_profile",
|
|
859
|
+
]);
|
|
860
|
+
const filteredTools = deps.tools.filter((t) => DREAM_ALLOWED_TOOLS.has(t.function.name));
|
|
861
|
+
const allTools = [...filteredTools, ...qmemoryToolDefs];
|
|
862
|
+
// Heartbeat the liveness lock while the dream runs so a legitimately long
|
|
863
|
+
// consolidation isn't reclaimed at the MAX_DREAM_RUN_MS ceiling.
|
|
864
|
+
const heartbeat = setInterval(() => {
|
|
865
|
+
void heartbeatConsolidationLock(deps.context.memoryRoot);
|
|
866
|
+
}, LOCK_HEARTBEAT_MS);
|
|
867
|
+
heartbeat.unref?.();
|
|
868
|
+
try {
|
|
869
|
+
// ── Run forked agent ──
|
|
870
|
+
const result = await runForkedAgent({
|
|
871
|
+
promptMessages: [
|
|
872
|
+
{ role: "user", content: "Begin memory consolidation." },
|
|
873
|
+
],
|
|
874
|
+
systemPrompt: prompt,
|
|
875
|
+
tools: allTools,
|
|
876
|
+
canUseTool: canUse,
|
|
877
|
+
transport: deps.transport,
|
|
878
|
+
toolInvoker: wrappedToolInvoker,
|
|
879
|
+
createAgentRunner: deps.createAgentRunner,
|
|
880
|
+
apiKey: deps.apiKey,
|
|
881
|
+
model: deps.model,
|
|
882
|
+
log: deps.log,
|
|
883
|
+
// Do NOT pass parent hooks — the parent's PermissionChecker hook would
|
|
884
|
+
// send tool.approval.request notifications that no host can respond to
|
|
885
|
+
// (dream runs autonomously). Security is enforced by canUseDreamTool.
|
|
886
|
+
hooks: undefined,
|
|
887
|
+
forkLabel: "dream-consolidation",
|
|
888
|
+
// Safety cap: dream typically completes in <10 rounds. Cap at 15 to
|
|
889
|
+
// prevent runaway loops with slower models while still allowing
|
|
890
|
+
// thorough consolidation.
|
|
891
|
+
maxTurns: 15,
|
|
892
|
+
parentSignal: deps.parentSignal,
|
|
893
|
+
skipTranscript: true,
|
|
894
|
+
});
|
|
895
|
+
// ── Extract touched files from events ──
|
|
896
|
+
const filesTouched = [];
|
|
897
|
+
for (const event of result.events) {
|
|
898
|
+
if (event.type === "tool_call") {
|
|
899
|
+
try {
|
|
900
|
+
const args = JSON.parse(event.arguments);
|
|
901
|
+
const path = (args.file_path ?? args.path ?? args.filePath);
|
|
902
|
+
if (path && isWithinMemoryDir(path, deps.context.memoryRoot)) {
|
|
903
|
+
filesTouched.push(path);
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
catch { /* ignore */ }
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
// ── Mark complete or rollback ──
|
|
910
|
+
if (result.ok) {
|
|
911
|
+
const summaryPath = await persistDreamSummaryArtifact({
|
|
912
|
+
memoryRoot: deps.context.memoryRoot,
|
|
913
|
+
sessionsReviewed: sessionIds.length,
|
|
914
|
+
durationMs: result.durationMs,
|
|
915
|
+
events: result.events,
|
|
916
|
+
filesTouched,
|
|
917
|
+
sessionDigest: sessionDigest || undefined,
|
|
918
|
+
});
|
|
919
|
+
filesTouched.push(summaryPath);
|
|
920
|
+
await markConsolidationComplete(deps.context.memoryRoot);
|
|
921
|
+
deps.log.info(`[dream] consolidation complete — ${filesTouched.length} files touched, ` +
|
|
922
|
+
`${result.durationMs}ms`);
|
|
923
|
+
}
|
|
924
|
+
else {
|
|
925
|
+
await rollbackConsolidationLock(deps.context.memoryRoot, taskState.priorLockMtime);
|
|
926
|
+
deps.log.warn(`[dream] consolidation failed: ${result.error}`);
|
|
927
|
+
}
|
|
928
|
+
// Fire subagent.stopped hook
|
|
929
|
+
deps.hooks?.invoke("subagent.stopped", {
|
|
930
|
+
sessionId: deps.context.currentSessionId,
|
|
931
|
+
turnId: taskState.taskId,
|
|
932
|
+
subagentId: taskState.taskId,
|
|
933
|
+
agentType: "dream",
|
|
934
|
+
reason: result.ok ? "normal" : "error",
|
|
935
|
+
error: result.error,
|
|
936
|
+
}).catch(() => { });
|
|
937
|
+
const uniqueFiles = [...new Set(filesTouched)];
|
|
938
|
+
settleDreamTask(result.ok, `Reviewed ${sessionIds.length} sessions, touched ${uniqueFiles.length} memory files.`, result.error);
|
|
939
|
+
return {
|
|
940
|
+
ok: result.ok,
|
|
941
|
+
sessionsReviewed: sessionIds.length,
|
|
942
|
+
filesTouched: uniqueFiles,
|
|
943
|
+
turns: [], // Turns are tracked internally by the forked agent
|
|
944
|
+
durationMs: Date.now() - startTime,
|
|
945
|
+
error: result.error,
|
|
946
|
+
};
|
|
947
|
+
}
|
|
948
|
+
catch (err) {
|
|
949
|
+
// Rollback lock on crash
|
|
950
|
+
await rollbackConsolidationLock(deps.context.memoryRoot, taskState.priorLockMtime).catch(() => { });
|
|
951
|
+
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
952
|
+
deps.log.warn(`[dream] consolidation error: ${errorMsg}`);
|
|
953
|
+
deps.hooks?.invoke("subagent.stopped", {
|
|
954
|
+
sessionId: deps.context.currentSessionId,
|
|
955
|
+
turnId: taskState.taskId,
|
|
956
|
+
subagentId: taskState.taskId,
|
|
957
|
+
agentType: "dream",
|
|
958
|
+
reason: "error",
|
|
959
|
+
error: errorMsg,
|
|
960
|
+
}).catch(() => { });
|
|
961
|
+
settleDreamTask(false, "", errorMsg);
|
|
962
|
+
return {
|
|
963
|
+
ok: false,
|
|
964
|
+
sessionsReviewed: 0,
|
|
965
|
+
filesTouched: [],
|
|
966
|
+
turns: [],
|
|
967
|
+
durationMs: Date.now() - startTime,
|
|
968
|
+
error: errorMsg,
|
|
969
|
+
};
|
|
970
|
+
}
|
|
971
|
+
finally {
|
|
972
|
+
clearInterval(heartbeat);
|
|
973
|
+
}
|
|
974
|
+
}
|