visionclaw 0.1.219-beta.0 → 0.1.219-dev.codex-issue-2805-worker-runtime.1
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/api-proxy.d.ts +0 -16
- package/dist/agent/api-proxy.d.ts.map +1 -1
- package/dist/agent/api-proxy.js +9 -8
- package/dist/agent/api-proxy.js.map +1 -1
- package/dist/agent/browser-launcher.d.ts +3 -0
- package/dist/agent/browser-launcher.d.ts.map +1 -1
- package/dist/agent/browser-launcher.js +101 -43
- package/dist/agent/browser-launcher.js.map +1 -1
- package/dist/agent/coding-conventions.d.ts +8 -0
- package/dist/agent/coding-conventions.d.ts.map +1 -0
- package/dist/agent/coding-conventions.js +19 -0
- package/dist/agent/coding-conventions.js.map +1 -0
- package/dist/agent/command-handlers.d.ts.map +1 -1
- package/dist/agent/command-handlers.js +4 -16
- package/dist/agent/command-handlers.js.map +1 -1
- package/dist/agent/context-action-restart-fallback.d.ts.map +1 -1
- package/dist/agent/context-action-restart-fallback.js +9 -3
- package/dist/agent/context-action-restart-fallback.js.map +1 -1
- package/dist/agent/context-refresh.d.ts.map +1 -1
- package/dist/agent/context-refresh.js +0 -7
- package/dist/agent/context-refresh.js.map +1 -1
- package/dist/agent/context.d.ts +2 -4
- package/dist/agent/context.d.ts.map +1 -1
- package/dist/agent/context.js +12 -21
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/engine-fallback.d.ts +0 -35
- package/dist/agent/engine-fallback.d.ts.map +1 -1
- package/dist/agent/engine-fallback.js +4 -3
- package/dist/agent/engine-fallback.js.map +1 -1
- package/dist/agent/engine-switch.d.ts +19 -38
- package/dist/agent/engine-switch.d.ts.map +1 -1
- package/dist/agent/engine-switch.js +46 -111
- package/dist/agent/engine-switch.js.map +1 -1
- package/dist/agent/engines/browser-tool-policy.d.ts +12 -1
- package/dist/agent/engines/browser-tool-policy.d.ts.map +1 -1
- package/dist/agent/engines/browser-tool-policy.js +17 -2
- package/dist/agent/engines/browser-tool-policy.js.map +1 -1
- package/dist/agent/engines/claude/executor-shell-groups.d.ts +11 -0
- package/dist/agent/engines/claude/executor-shell-groups.d.ts.map +1 -0
- package/dist/agent/engines/claude/executor-shell-groups.js +22 -0
- package/dist/agent/engines/claude/executor-shell-groups.js.map +1 -0
- package/dist/agent/engines/claude/session.d.ts +13 -4
- package/dist/agent/engines/claude/session.d.ts.map +1 -1
- package/dist/agent/engines/claude/session.js +165 -84
- package/dist/agent/engines/claude/session.js.map +1 -1
- package/dist/agent/engines/pi/shared/usage.d.ts +6 -8
- package/dist/agent/engines/pi/shared/usage.d.ts.map +1 -1
- package/dist/agent/engines/pi/shared/usage.js +24 -7
- package/dist/agent/engines/pi/shared/usage.js.map +1 -1
- package/dist/agent/engines/pi/tools.d.ts +3 -10
- package/dist/agent/engines/pi/tools.d.ts.map +1 -1
- package/dist/agent/engines/pi/tools.js +6 -20
- package/dist/agent/engines/pi/tools.js.map +1 -1
- package/dist/agent/engines/pi-coding/executor-shell.d.ts +4 -0
- package/dist/agent/engines/pi-coding/executor-shell.d.ts.map +1 -0
- package/dist/agent/engines/pi-coding/executor-shell.js +175 -0
- package/dist/agent/engines/pi-coding/executor-shell.js.map +1 -0
- package/dist/agent/engines/pi-coding/session.d.ts +4 -4
- package/dist/agent/engines/pi-coding/session.d.ts.map +1 -1
- package/dist/agent/engines/pi-coding/session.js +118 -66
- package/dist/agent/engines/pi-coding/session.js.map +1 -1
- package/dist/agent/engines/pi-coding/tools.d.ts +2 -5
- package/dist/agent/engines/pi-coding/tools.d.ts.map +1 -1
- package/dist/agent/engines/pi-coding/tools.js +7 -5
- package/dist/agent/engines/pi-coding/tools.js.map +1 -1
- package/dist/agent/engines/session-types.d.ts +8 -8
- package/dist/agent/engines/session-types.d.ts.map +1 -1
- package/dist/agent/external-context/interrupt.d.ts +0 -2
- package/dist/agent/external-context/interrupt.d.ts.map +1 -1
- package/dist/agent/external-context/interrupt.js +0 -1
- package/dist/agent/external-context/interrupt.js.map +1 -1
- package/dist/agent/external-context/registry.d.ts +0 -2
- package/dist/agent/external-context/registry.d.ts.map +1 -1
- package/dist/agent/external-context/registry.js +2 -4
- package/dist/agent/external-context/registry.js.map +1 -1
- package/dist/agent/external-context/runtime.d.ts.map +1 -1
- package/dist/agent/external-context/runtime.js +15 -14
- package/dist/agent/external-context/runtime.js.map +1 -1
- package/dist/agent/external-context/types.d.ts +0 -2
- package/dist/agent/external-context/types.d.ts.map +1 -1
- package/dist/agent/fast-responder.d.ts +4 -20
- package/dist/agent/fast-responder.d.ts.map +1 -1
- package/dist/agent/fast-responder.js +28 -42
- package/dist/agent/fast-responder.js.map +1 -1
- package/dist/agent/interrupt-handler.d.ts +0 -6
- package/dist/agent/interrupt-handler.d.ts.map +1 -1
- package/dist/agent/interrupt-handler.js +5 -47
- package/dist/agent/interrupt-handler.js.map +1 -1
- package/dist/agent/lab-run-system-prompt.d.ts.map +1 -1
- package/dist/agent/lab-run-system-prompt.js +4 -1
- package/dist/agent/lab-run-system-prompt.js.map +1 -1
- package/dist/agent/lifecycle-trace.d.ts.map +1 -1
- package/dist/agent/lifecycle-trace.js +6 -5
- package/dist/agent/lifecycle-trace.js.map +1 -1
- package/dist/agent/loop.d.ts +8 -2
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +287 -156
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/memory-protocol.d.ts +2 -2
- package/dist/agent/memory-protocol.d.ts.map +1 -1
- package/dist/agent/memory-protocol.js +3 -15
- package/dist/agent/memory-protocol.js.map +1 -1
- package/dist/agent/memory-store.d.ts +58 -0
- package/dist/agent/memory-store.d.ts.map +1 -0
- package/dist/agent/memory-store.js +152 -0
- package/dist/agent/memory-store.js.map +1 -0
- package/dist/agent/model-provider.d.ts +18 -5
- package/dist/agent/model-provider.d.ts.map +1 -1
- package/dist/agent/model-provider.js +58 -18
- package/dist/agent/model-provider.js.map +1 -1
- package/dist/agent/nightly-maintenance/dreaming-batch.d.ts +184 -0
- package/dist/agent/nightly-maintenance/dreaming-batch.d.ts.map +1 -0
- package/dist/agent/nightly-maintenance/dreaming-batch.js +192 -0
- package/dist/agent/nightly-maintenance/dreaming-batch.js.map +1 -0
- package/dist/agent/nightly-maintenance/dreaming-files.d.ts +48 -0
- package/dist/agent/nightly-maintenance/dreaming-files.d.ts.map +1 -0
- package/dist/agent/nightly-maintenance/dreaming-files.js +109 -0
- package/dist/agent/nightly-maintenance/dreaming-files.js.map +1 -0
- package/dist/agent/nightly-maintenance/dreaming-ledger.d.ts +62 -0
- package/dist/agent/nightly-maintenance/dreaming-ledger.d.ts.map +1 -0
- package/dist/agent/nightly-maintenance/dreaming-ledger.js +146 -0
- package/dist/agent/nightly-maintenance/dreaming-ledger.js.map +1 -0
- package/dist/agent/nightly-maintenance/dreaming-planner.d.ts +86 -0
- package/dist/agent/nightly-maintenance/dreaming-planner.d.ts.map +1 -0
- package/dist/agent/nightly-maintenance/dreaming-planner.js +304 -0
- package/dist/agent/nightly-maintenance/dreaming-planner.js.map +1 -0
- package/dist/agent/nightly-maintenance/dreaming-runner.d.ts +93 -0
- package/dist/agent/nightly-maintenance/dreaming-runner.d.ts.map +1 -0
- package/dist/agent/nightly-maintenance/dreaming-runner.js +156 -0
- package/dist/agent/nightly-maintenance/dreaming-runner.js.map +1 -0
- package/dist/agent/nightly-maintenance/dreaming-sources.d.ts +115 -0
- package/dist/agent/nightly-maintenance/dreaming-sources.d.ts.map +1 -0
- package/dist/agent/nightly-maintenance/dreaming-sources.js +270 -0
- package/dist/agent/nightly-maintenance/dreaming-sources.js.map +1 -0
- package/dist/agent/nightly-maintenance/index.d.ts +28 -8
- package/dist/agent/nightly-maintenance/index.d.ts.map +1 -1
- package/dist/agent/nightly-maintenance/index.js +42 -15
- package/dist/agent/nightly-maintenance/index.js.map +1 -1
- package/dist/agent/nightly-maintenance/skill-learning-gate.js +1 -1
- package/dist/agent/nightly-maintenance/skill-learning-gate.js.map +1 -1
- package/dist/agent/nightly-maintenance/vocabulary-processor.d.ts +1 -1
- package/dist/agent/nightly-maintenance/vocabulary-processor.d.ts.map +1 -1
- package/dist/agent/product-identity.d.ts +5 -4
- package/dist/agent/product-identity.d.ts.map +1 -1
- package/dist/agent/product-identity.js +7 -6
- package/dist/agent/product-identity.js.map +1 -1
- package/dist/agent/public-activity.js +1 -1
- package/dist/agent/public-activity.js.map +1 -1
- package/dist/agent/runtime-context.d.ts +27 -0
- package/dist/agent/runtime-context.d.ts.map +1 -0
- package/dist/agent/runtime-context.js +60 -0
- package/dist/agent/runtime-context.js.map +1 -0
- package/dist/agent/runtime-disclosure-policy.d.ts +6 -0
- package/dist/agent/runtime-disclosure-policy.d.ts.map +1 -0
- package/dist/agent/runtime-disclosure-policy.js +16 -0
- package/dist/agent/runtime-disclosure-policy.js.map +1 -0
- package/dist/agent/runtime-surface.d.ts +15 -4
- package/dist/agent/runtime-surface.d.ts.map +1 -1
- package/dist/agent/runtime-surface.js +0 -1
- package/dist/agent/runtime-surface.js.map +1 -1
- package/dist/agent/session-manager.d.ts +30 -126
- package/dist/agent/session-manager.d.ts.map +1 -1
- package/dist/agent/session-manager.js +60 -484
- package/dist/agent/session-manager.js.map +1 -1
- package/dist/agent/state.d.ts +42 -2
- package/dist/agent/state.d.ts.map +1 -1
- package/dist/agent/state.js +21 -11
- package/dist/agent/state.js.map +1 -1
- package/dist/agent/stream-handler.d.ts +6 -13
- package/dist/agent/stream-handler.d.ts.map +1 -1
- package/dist/agent/stream-handler.js +8 -62
- package/dist/agent/stream-handler.js.map +1 -1
- package/dist/agent/system-prompt.d.ts +2 -0
- package/dist/agent/system-prompt.d.ts.map +1 -1
- package/dist/agent/system-prompt.js +21 -20
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/agent/tool-usage.d.ts.map +1 -1
- package/dist/agent/tool-usage.js +0 -1
- package/dist/agent/tool-usage.js.map +1 -1
- package/dist/agent/transcript/transcript-backfill.js +3 -3
- package/dist/agent/transcript/transcript-backfill.js.map +1 -1
- package/dist/agent/transcript/transcript-indexer.d.ts +3 -31
- package/dist/agent/transcript/transcript-indexer.d.ts.map +1 -1
- package/dist/agent/transcript/transcript-indexer.js +58 -57
- package/dist/agent/transcript/transcript-indexer.js.map +1 -1
- package/dist/agent/transcript-parsers/trivial-tools.d.ts.map +1 -1
- package/dist/agent/transcript-parsers/trivial-tools.js +0 -2
- package/dist/agent/transcript-parsers/trivial-tools.js.map +1 -1
- package/dist/agent/transcript-parsers/types.d.ts +1 -1
- package/dist/agent/transcript-summarizer.d.ts +14 -0
- package/dist/agent/transcript-summarizer.d.ts.map +1 -1
- package/dist/agent/transcript-summarizer.js +69 -45
- package/dist/agent/transcript-summarizer.js.map +1 -1
- package/dist/agent/usage/usage-report-queue.d.ts.map +1 -1
- package/dist/agent/usage/usage-report-queue.js +53 -52
- package/dist/agent/usage/usage-report-queue.js.map +1 -1
- package/dist/agent/usage/usage-report-types.d.ts +1 -1
- package/dist/agent/usage/usage-report-types.d.ts.map +1 -1
- package/dist/agent/vocabulary-glossary.d.ts +3 -3
- package/dist/agent/wake-cycle-runner.d.ts +14 -17
- package/dist/agent/wake-cycle-runner.d.ts.map +1 -1
- package/dist/agent/wake-cycle-runner.js +121 -290
- package/dist/agent/wake-cycle-runner.js.map +1 -1
- package/dist/builtin-skills/owner-manual/SKILL.md +2 -2
- package/dist/calendar/occurrence-ownership.d.ts.map +1 -1
- package/dist/calendar/occurrence-ownership.js +6 -5
- package/dist/calendar/occurrence-ownership.js.map +1 -1
- package/dist/calendar/scheduler.d.ts.map +1 -1
- package/dist/calendar/scheduler.js +4 -3
- package/dist/calendar/scheduler.js.map +1 -1
- package/dist/channels/interface.d.ts +8 -2
- package/dist/channels/interface.d.ts.map +1 -1
- package/dist/channels/interface.js +8 -1
- package/dist/channels/interface.js.map +1 -1
- package/dist/channels/manager.d.ts.map +1 -1
- package/dist/channels/manager.js +5 -1
- package/dist/channels/manager.js.map +1 -1
- package/dist/channels/queue.d.ts.map +1 -1
- package/dist/channels/queue.js +8 -0
- package/dist/channels/queue.js.map +1 -1
- package/dist/channels/tui.d.ts +14 -1
- package/dist/channels/tui.d.ts.map +1 -1
- package/dist/channels/tui.js +64 -2
- package/dist/channels/tui.js.map +1 -1
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +22 -53
- package/dist/cli/index.js.map +1 -1
- package/dist/config/index.d.ts +13 -7
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +51 -64
- package/dist/config/index.js.map +1 -1
- package/dist/config/types.d.ts +28 -7
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +22 -20
- package/dist/config/types.js.map +1 -1
- package/dist/conversations/lazy-runtime.d.ts +5 -0
- package/dist/conversations/lazy-runtime.d.ts.map +1 -0
- package/dist/conversations/lazy-runtime.js +12 -0
- package/dist/conversations/lazy-runtime.js.map +1 -0
- package/dist/conversations/runtime.d.ts +17 -0
- package/dist/conversations/runtime.d.ts.map +1 -0
- package/dist/conversations/runtime.js +92 -0
- package/dist/conversations/runtime.js.map +1 -0
- package/dist/conversations/scheduler.d.ts +57 -0
- package/dist/conversations/scheduler.d.ts.map +1 -0
- package/dist/conversations/scheduler.js +175 -0
- package/dist/conversations/scheduler.js.map +1 -0
- package/dist/data-processing/pipeline.d.ts +0 -2
- package/dist/data-processing/pipeline.d.ts.map +1 -1
- package/dist/data-processing/pipeline.js +19 -24
- package/dist/data-processing/pipeline.js.map +1 -1
- package/dist/data-processing/restructure.d.ts +0 -2
- package/dist/data-processing/restructure.d.ts.map +1 -1
- package/dist/data-processing/restructure.js +6 -9
- package/dist/data-processing/restructure.js.map +1 -1
- package/dist/data-processing/types.d.ts +2 -9
- package/dist/data-processing/types.d.ts.map +1 -1
- package/dist/data-processing/types.js +2 -13
- package/dist/data-processing/types.js.map +1 -1
- package/dist/email/email-route-store.d.ts.map +1 -1
- package/dist/email/email-route-store.js +6 -5
- package/dist/email/email-route-store.js.map +1 -1
- package/dist/i18n/messages.d.ts +26 -2
- package/dist/i18n/messages.d.ts.map +1 -1
- package/dist/i18n/messages.js +30 -5
- package/dist/i18n/messages.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +11 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +49 -1
- package/dist/logger.js.map +1 -1
- package/dist/obs/mini-app/status.d.ts.map +1 -1
- package/dist/obs/mini-app/status.js +0 -1
- package/dist/obs/mini-app/status.js.map +1 -1
- package/dist/onboarding/onboarding-service-client.d.ts +1 -0
- package/dist/onboarding/onboarding-service-client.d.ts.map +1 -1
- package/dist/onboarding/onboarding-service-client.js.map +1 -1
- package/dist/onboarding/remote-set-owner.d.ts.map +1 -1
- package/dist/onboarding/remote-set-owner.js +0 -1
- package/dist/onboarding/remote-set-owner.js.map +1 -1
- package/dist/onboarding/set-owner.d.ts +1 -1
- package/dist/onboarding/set-owner.d.ts.map +1 -1
- package/dist/onboarding/set-owner.js +3 -6
- package/dist/onboarding/set-owner.js.map +1 -1
- package/dist/reconfigure.d.ts.map +1 -1
- package/dist/reconfigure.js +1 -32
- package/dist/reconfigure.js.map +1 -1
- package/dist/reset.d.ts.map +1 -1
- package/dist/reset.js +3 -1
- package/dist/reset.js.map +1 -1
- package/dist/threads/active-threads-store.d.ts.map +1 -1
- package/dist/threads/active-threads-store.js +8 -27
- package/dist/threads/active-threads-store.js.map +1 -1
- package/dist/threads/dreaming-execution.d.ts +10 -0
- package/dist/threads/dreaming-execution.d.ts.map +1 -0
- package/dist/threads/dreaming-execution.js +78 -0
- package/dist/threads/dreaming-execution.js.map +1 -0
- package/dist/threads/execution-authority.d.ts +43 -0
- package/dist/threads/execution-authority.d.ts.map +1 -0
- package/dist/threads/execution-authority.js +75 -0
- package/dist/threads/execution-authority.js.map +1 -0
- package/dist/threads/execution-budget.d.ts +107 -0
- package/dist/threads/execution-budget.d.ts.map +1 -0
- package/dist/threads/execution-budget.js +257 -0
- package/dist/threads/execution-budget.js.map +1 -0
- package/dist/threads/execution-host.d.ts +17 -0
- package/dist/threads/execution-host.d.ts.map +1 -0
- package/dist/threads/execution-host.js +66 -0
- package/dist/threads/execution-host.js.map +1 -0
- package/dist/threads/execution-scheduler.d.ts +162 -0
- package/dist/threads/execution-scheduler.d.ts.map +1 -0
- package/dist/threads/execution-scheduler.js +413 -0
- package/dist/threads/execution-scheduler.js.map +1 -0
- package/dist/threads/execution-snapshot.d.ts +91 -0
- package/dist/threads/execution-snapshot.d.ts.map +1 -0
- package/dist/threads/execution-snapshot.js +146 -0
- package/dist/threads/execution-snapshot.js.map +1 -0
- package/dist/threads/execution-store.d.ts +374 -0
- package/dist/threads/execution-store.d.ts.map +1 -0
- package/dist/threads/execution-store.js +910 -0
- package/dist/threads/execution-store.js.map +1 -0
- package/dist/threads/execution-thread-error.d.ts +9 -0
- package/dist/threads/execution-thread-error.d.ts.map +1 -0
- package/dist/threads/execution-thread-error.js +12 -0
- package/dist/threads/execution-thread-error.js.map +1 -0
- package/dist/threads/executor-exit.d.ts +18 -0
- package/dist/threads/executor-exit.d.ts.map +1 -0
- package/dist/threads/executor-exit.js +21 -0
- package/dist/threads/executor-exit.js.map +1 -0
- package/dist/threads/foreground-task.d.ts +91 -0
- package/dist/threads/foreground-task.d.ts.map +1 -0
- package/dist/threads/foreground-task.js +191 -0
- package/dist/threads/foreground-task.js.map +1 -0
- package/dist/threads/foreman-business.d.ts +9 -0
- package/dist/threads/foreman-business.d.ts.map +1 -0
- package/dist/threads/foreman-business.js +117 -0
- package/dist/threads/foreman-business.js.map +1 -0
- package/dist/threads/foreman-client.d.ts +18 -0
- package/dist/threads/foreman-client.d.ts.map +1 -0
- package/dist/threads/foreman-client.js +51 -0
- package/dist/threads/foreman-client.js.map +1 -0
- package/dist/threads/foreman-delivery.d.ts +5 -0
- package/dist/threads/foreman-delivery.d.ts.map +1 -0
- package/dist/threads/foreman-delivery.js +21 -0
- package/dist/threads/foreman-delivery.js.map +1 -0
- package/dist/threads/foreman-execution.d.ts +32 -0
- package/dist/threads/foreman-execution.d.ts.map +1 -0
- package/dist/threads/foreman-execution.js +90 -0
- package/dist/threads/foreman-execution.js.map +1 -0
- package/dist/threads/foreman-host.d.ts +77 -0
- package/dist/threads/foreman-host.d.ts.map +1 -0
- package/dist/threads/foreman-host.js +891 -0
- package/dist/threads/foreman-host.js.map +1 -0
- package/dist/threads/foreman-protocol.d.ts +242 -0
- package/dist/threads/foreman-protocol.d.ts.map +1 -0
- package/dist/threads/foreman-protocol.js +116 -0
- package/dist/threads/foreman-protocol.js.map +1 -0
- package/dist/threads/foreman-store.d.ts +151 -0
- package/dist/threads/foreman-store.d.ts.map +1 -0
- package/dist/threads/foreman-store.js +299 -0
- package/dist/threads/foreman-store.js.map +1 -0
- package/dist/threads/generic-execution.d.ts +25 -0
- package/dist/threads/generic-execution.d.ts.map +1 -0
- package/dist/threads/generic-execution.js +86 -0
- package/dist/threads/generic-execution.js.map +1 -0
- package/dist/threads/init-thread-dir.d.ts +2 -2
- package/dist/threads/init-thread-dir.d.ts.map +1 -1
- package/dist/threads/init-thread-dir.js +6 -6
- package/dist/threads/init-thread-dir.js.map +1 -1
- package/dist/threads/ipc.d.ts +108 -2
- package/dist/threads/ipc.d.ts.map +1 -1
- package/dist/threads/ipc.js +14 -2
- package/dist/threads/ipc.js.map +1 -1
- package/dist/threads/lab-run-thread.d.ts +3 -5
- package/dist/threads/lab-run-thread.d.ts.map +1 -1
- package/dist/threads/lab-run-thread.js +3 -5
- package/dist/threads/lab-run-thread.js.map +1 -1
- package/dist/threads/lab-runtime-policy.d.ts +26 -21
- package/dist/threads/lab-runtime-policy.d.ts.map +1 -1
- package/dist/threads/lab-runtime-policy.js +31 -126
- package/dist/threads/lab-runtime-policy.js.map +1 -1
- package/dist/threads/process-group.d.ts +41 -0
- package/dist/threads/process-group.d.ts.map +1 -0
- package/dist/threads/process-group.js +161 -0
- package/dist/threads/process-group.js.map +1 -0
- package/dist/threads/relay-adapter.d.ts +8 -0
- package/dist/threads/relay-adapter.d.ts.map +1 -1
- package/dist/threads/relay-adapter.js +26 -1
- package/dist/threads/relay-adapter.js.map +1 -1
- package/dist/threads/supervisor.d.ts +191 -57
- package/dist/threads/supervisor.d.ts.map +1 -1
- package/dist/threads/supervisor.js +766 -427
- package/dist/threads/supervisor.js.map +1 -1
- package/dist/threads/task-workspace.d.ts +8 -0
- package/dist/threads/task-workspace.d.ts.map +1 -0
- package/dist/threads/task-workspace.js +52 -0
- package/dist/threads/task-workspace.js.map +1 -0
- package/dist/threads/worker-entry.d.ts.map +1 -1
- package/dist/threads/worker-entry.js +314 -34
- package/dist/threads/worker-entry.js.map +1 -1
- package/dist/threads/worker-execution-runtime.d.ts +75 -0
- package/dist/threads/worker-execution-runtime.d.ts.map +1 -0
- package/dist/threads/worker-execution-runtime.js +142 -0
- package/dist/threads/worker-execution-runtime.js.map +1 -0
- package/dist/threads/worker-execution.d.ts +35 -0
- package/dist/threads/worker-execution.d.ts.map +1 -0
- package/dist/threads/worker-execution.js +2 -0
- package/dist/threads/worker-execution.js.map +1 -0
- package/dist/threads/worker-runtime-policy.d.ts +42 -0
- package/dist/threads/worker-runtime-policy.d.ts.map +1 -0
- package/dist/threads/worker-runtime-policy.js +98 -0
- package/dist/threads/worker-runtime-policy.js.map +1 -0
- package/dist/tools/adapter-tool.d.ts +12 -0
- package/dist/tools/adapter-tool.d.ts.map +1 -0
- package/dist/tools/adapter-tool.js +2 -0
- package/dist/tools/adapter-tool.js.map +1 -0
- package/dist/tools/data-service.d.ts +2 -2
- package/dist/tools/delegation.d.ts +121 -0
- package/dist/tools/delegation.d.ts.map +1 -0
- package/dist/tools/delegation.js +106 -0
- package/dist/tools/delegation.js.map +1 -0
- package/dist/tools/dream-memory.d.ts +122 -0
- package/dist/tools/dream-memory.d.ts.map +1 -0
- package/dist/tools/dream-memory.js +513 -0
- package/dist/tools/dream-memory.js.map +1 -0
- package/dist/tools/email.d.ts +1 -1
- package/dist/tools/execution-control.d.ts +31 -0
- package/dist/tools/execution-control.d.ts.map +1 -0
- package/dist/tools/execution-control.js +71 -0
- package/dist/tools/execution-control.js.map +1 -0
- package/dist/tools/index.d.ts +5 -7
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +7 -13
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mcp-manager.d.ts +1 -1
- package/dist/tools/memory.d.ts +1 -1
- package/dist/tools/memory.d.ts.map +1 -1
- package/dist/tools/memory.js +69 -45
- package/dist/tools/memory.js.map +1 -1
- package/dist/tools/notify.d.ts +5 -0
- package/dist/tools/notify.d.ts.map +1 -1
- package/dist/tools/notify.js +45 -10
- package/dist/tools/notify.js.map +1 -1
- package/dist/tools/skill.d.ts +1 -1
- package/dist/tools/totp.d.ts +1 -1
- package/dist/tui/client.d.ts +1 -16
- package/dist/tui/client.d.ts.map +1 -1
- package/dist/tui/client.js +0 -4
- package/dist/tui/client.js.map +1 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +0 -41
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/protocol.d.ts +2 -1
- package/dist/tui/protocol.d.ts.map +1 -1
- package/dist/tui/protocol.js +2 -1
- package/dist/tui/protocol.js.map +1 -1
- package/dist/tui/renderer.d.ts.map +1 -1
- package/dist/tui/renderer.js +0 -5
- package/dist/tui/renderer.js.map +1 -1
- package/dist/tui/request-store.d.ts +1 -1
- package/dist/tui/request-store.d.ts.map +1 -1
- package/dist/tui/request-store.js +2 -2
- package/dist/tui/request-store.js.map +1 -1
- package/dist/tui/server.d.ts.map +1 -1
- package/dist/tui/server.js +137 -25
- package/dist/tui/server.js.map +1 -1
- package/dist/utils/claude-transcripts.d.ts +6 -0
- package/dist/utils/claude-transcripts.d.ts.map +1 -1
- package/dist/utils/claude-transcripts.js +8 -2
- package/dist/utils/claude-transcripts.js.map +1 -1
- package/dist/utils/restart.d.ts.map +1 -1
- package/dist/utils/restart.js +6 -0
- package/dist/utils/restart.js.map +1 -1
- package/dist-agent/bundle.cjs +2 -2
- package/package.json +1 -1
- package/dist/agent/mailbox.d.ts +0 -50
- package/dist/agent/mailbox.d.ts.map +0 -1
- package/dist/agent/mailbox.js +0 -124
- package/dist/agent/mailbox.js.map +0 -1
- package/dist/agent/nightly-maintenance/memory-dreaming-sweep.d.ts +0 -77
- package/dist/agent/nightly-maintenance/memory-dreaming-sweep.d.ts.map +0 -1
- package/dist/agent/nightly-maintenance/memory-dreaming-sweep.js +0 -158
- package/dist/agent/nightly-maintenance/memory-dreaming-sweep.js.map +0 -1
- package/dist/agent/nightly-maintenance/memory-dreaming.d.ts +0 -116
- package/dist/agent/nightly-maintenance/memory-dreaming.d.ts.map +0 -1
- package/dist/agent/nightly-maintenance/memory-dreaming.js +0 -458
- package/dist/agent/nightly-maintenance/memory-dreaming.js.map +0 -1
- package/dist/threads/task-contracts.d.ts +0 -194
- package/dist/threads/task-contracts.d.ts.map +0 -1
- package/dist/threads/task-contracts.js +0 -82
- package/dist/threads/task-contracts.js.map +0 -1
- package/dist/threads/task-sidecar.d.ts +0 -145
- package/dist/threads/task-sidecar.d.ts.map +0 -1
- package/dist/threads/task-sidecar.js +0 -311
- package/dist/threads/task-sidecar.js.map +0 -1
- package/dist/threads/task-store.d.ts +0 -172
- package/dist/threads/task-store.d.ts.map +0 -1
- package/dist/threads/task-store.js +0 -599
- package/dist/threads/task-store.js.map +0 -1
- package/dist/threads/thread-task-context.d.ts +0 -40
- package/dist/threads/thread-task-context.d.ts.map +0 -1
- package/dist/threads/thread-task-context.js +0 -160
- package/dist/threads/thread-task-context.js.map +0 -1
- package/dist/threads/thread-task-controller.d.ts +0 -122
- package/dist/threads/thread-task-controller.d.ts.map +0 -1
- package/dist/threads/thread-task-controller.js +0 -276
- package/dist/threads/thread-task-controller.js.map +0 -1
- package/dist/threads/thread-task-runtime.d.ts +0 -354
- package/dist/threads/thread-task-runtime.d.ts.map +0 -1
- package/dist/threads/thread-task-runtime.js +0 -917
- package/dist/threads/thread-task-runtime.js.map +0 -1
- package/dist/tools/switch-session.d.ts +0 -15
- package/dist/tools/switch-session.d.ts.map +0 -1
- package/dist/tools/switch-session.js +0 -88
- package/dist/tools/switch-session.js.map +0 -1
- package/dist/tools/thread-tasks.d.ts +0 -23
- package/dist/tools/thread-tasks.d.ts.map +0 -1
- package/dist/tools/thread-tasks.js +0 -122
- package/dist/tools/thread-tasks.js.map +0 -1
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The maintenance host's side of Dreaming (#2805 stage 2): plan one bounded
|
|
3
|
+
* batch, submit it as an internal execution, and apply its outcome.
|
|
4
|
+
*
|
|
5
|
+
* Runs in the main process only. It is the only writer of the Dreaming
|
|
6
|
+
* ledger, the batch files and the vocabulary glossary; the worker edits
|
|
7
|
+
* memory through `dream_memory` and reports everything else.
|
|
8
|
+
*
|
|
9
|
+
* Ingestion and consolidation are separate queues with separate progress:
|
|
10
|
+
* - ingestion takes the oldest pending slice of one transcript session and
|
|
11
|
+
* advances that session's watermark only for `ingested` or `no_new_facts`;
|
|
12
|
+
* - consolidation reviews a few memory files and records the hash each was
|
|
13
|
+
* reviewed at; a file changes or new files appear → it is due again.
|
|
14
|
+
* A failed, cancelled or unfinished batch keeps its inputs and defers them to
|
|
15
|
+
* the next local day.
|
|
16
|
+
*/
|
|
17
|
+
import { randomUUID } from "node:crypto";
|
|
18
|
+
import fs from "node:fs";
|
|
19
|
+
import { contentHash } from "../memory-store.js";
|
|
20
|
+
import { getMemoriesDir } from "../../config/index.js";
|
|
21
|
+
import { logger } from "../../logger.js";
|
|
22
|
+
import { processVocabularyCandidates } from "./vocabulary-processor.js";
|
|
23
|
+
import { DreamingReportDataSchema, listDreamingBatchIds, readDreamEdits, readDreamingBatch, removeDreamingBatch, writeDreamingBatch, DREAMING_BATCH_VERSION, } from "./dreaming-batch.js";
|
|
24
|
+
import { dreamingStores, listMemoryFiles } from "./dreaming-files.js";
|
|
25
|
+
import { deferToNextDay, isDeferred, pruneDreamingRecords, readDreamingLedger, readLegacyDreamWatermarks, updateDreamingLedger, writeDreamingLedger, } from "./dreaming-ledger.js";
|
|
26
|
+
import { buildSlice, discoverTranscriptSources, DREAM_FIRST_INGESTION_WINDOW_MS, DREAM_MIN_SLICE_RECORDS, DREAM_SMALL_SLICE_MAX_AGE_MS, pendingStart, readSourceRecords, } from "./dreaming-sources.js";
|
|
27
|
+
/** Files per review batch, and the total bytes a review batch may cover. */
|
|
28
|
+
const REVIEW_MAX_FILES = 6;
|
|
29
|
+
const REVIEW_MAX_BYTES = 96_000;
|
|
30
|
+
/** One file larger than this is reviewed alone; pagination keeps every page bounded. */
|
|
31
|
+
const REVIEW_LARGE_FILE_BYTES = 64_000;
|
|
32
|
+
function localDate(now) {
|
|
33
|
+
const pad = (value) => String(value).padStart(2, "0");
|
|
34
|
+
return `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}`;
|
|
35
|
+
}
|
|
36
|
+
export class DreamingPlanner {
|
|
37
|
+
options;
|
|
38
|
+
legacyWatermarks = null;
|
|
39
|
+
constructor(options) {
|
|
40
|
+
this.options = options;
|
|
41
|
+
}
|
|
42
|
+
/** Once per night: bound the local edit log and backups. */
|
|
43
|
+
startNight() {
|
|
44
|
+
pruneDreamingRecords(this.now(), this.memoriesDir);
|
|
45
|
+
}
|
|
46
|
+
now() { return this.options.now?.() ?? new Date(); }
|
|
47
|
+
get memoriesDir() { return this.options.memoriesDir ?? getMemoriesDir(); }
|
|
48
|
+
stores() {
|
|
49
|
+
return dreamingStores({ memoriesDir: this.options.memoriesDir, autoMemoryDir: this.options.autoMemoryDir });
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The next batch for `localDay`, written to disk, or null when both queues
|
|
53
|
+
* are empty for tonight. Ingestion goes first: new facts are what tidying
|
|
54
|
+
* should be informed by.
|
|
55
|
+
*/
|
|
56
|
+
planNext(localDay) {
|
|
57
|
+
const ledger = readDreamingLedger(this.memoriesDir);
|
|
58
|
+
this.legacyWatermarks ??= readLegacyDreamWatermarks(this.memoriesDir);
|
|
59
|
+
const ingestion = this.planIngestion(ledger, localDay);
|
|
60
|
+
// Sources registered or moved past noise while planning are saved even when no batch results.
|
|
61
|
+
if (ingestion.ledgerChanged)
|
|
62
|
+
writeDreamingLedger(ledger, this.memoriesDir);
|
|
63
|
+
const batch = ingestion.batch ?? this.planConsolidation(ledger, localDay);
|
|
64
|
+
if (batch)
|
|
65
|
+
writeDreamingBatch(batch, this.memoriesDir);
|
|
66
|
+
return batch;
|
|
67
|
+
}
|
|
68
|
+
newBatch(kind, localDay) {
|
|
69
|
+
const now = this.now();
|
|
70
|
+
return {
|
|
71
|
+
version: DREAMING_BATCH_VERSION,
|
|
72
|
+
batchId: `dream-${randomUUID()}`,
|
|
73
|
+
kind,
|
|
74
|
+
localDay,
|
|
75
|
+
localDate: localDate(now),
|
|
76
|
+
createdAt: now.toISOString(),
|
|
77
|
+
vocabularyLearning: this.options.vocabularyLearning() && Boolean(this.options.ownerPublicId()),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The oldest pending slice among transcript sessions not deferred tonight.
|
|
82
|
+
* A session seen for the first time is registered with a fixed cutoff, so
|
|
83
|
+
* a later night continues from the same point instead of a moving window.
|
|
84
|
+
*/
|
|
85
|
+
planIngestion(ledger, localDay) {
|
|
86
|
+
const nowMs = this.now().getTime();
|
|
87
|
+
let ledgerChanged = false;
|
|
88
|
+
const sources = discoverTranscriptSources(this.options.threadIds())
|
|
89
|
+
.filter((source) => !isDeferred(ledger, source.sourceKey, localDay))
|
|
90
|
+
.sort((a, b) => a.newestMtimeMs - b.newestMtimeMs);
|
|
91
|
+
for (const source of sources) {
|
|
92
|
+
let watermark = ledger.ingestion[source.sourceKey];
|
|
93
|
+
if (!watermark) {
|
|
94
|
+
if (nowMs - source.newestMtimeMs > DREAM_FIRST_INGESTION_WINDOW_MS)
|
|
95
|
+
continue;
|
|
96
|
+
// After an upgrade, history the single-pass Dreaming already covered is not read again.
|
|
97
|
+
const legacy = Math.max(0, ...source.files.map((file) => this.legacyWatermarks?.get(file) ?? 0));
|
|
98
|
+
watermark = {
|
|
99
|
+
record: null, timestamp: null, sourceMtimeMs: null,
|
|
100
|
+
cutoffMs: Math.max(nowMs - DREAM_FIRST_INGESTION_WINDOW_MS, legacy),
|
|
101
|
+
};
|
|
102
|
+
ledger.ingestion[source.sourceKey] = watermark;
|
|
103
|
+
ledgerChanged = true;
|
|
104
|
+
}
|
|
105
|
+
// Files unchanged since the last fully consumed slice: skip without reading them.
|
|
106
|
+
if (watermark.sourceMtimeMs !== null && source.newestMtimeMs <= watermark.sourceMtimeMs)
|
|
107
|
+
continue;
|
|
108
|
+
const records = readSourceRecords(source);
|
|
109
|
+
const cursor = pendingStart(records, watermark);
|
|
110
|
+
if (cursor.index >= records.length)
|
|
111
|
+
continue;
|
|
112
|
+
const slice = buildSlice(records, cursor.index, source.sourceKey, cursor.offset, cursor.textHash);
|
|
113
|
+
if (!slice.lastRecord)
|
|
114
|
+
continue;
|
|
115
|
+
if (slice.recordCount === 0) {
|
|
116
|
+
// Only records without content (compaction markers, metadata): move past them.
|
|
117
|
+
ledger.ingestion[source.sourceKey] = {
|
|
118
|
+
...watermark,
|
|
119
|
+
record: slice.lastRecord.key,
|
|
120
|
+
recordOffset: slice.lastRecordOffset,
|
|
121
|
+
recordTextHash: slice.lastRecordTextHash ?? undefined,
|
|
122
|
+
timestamp: slice.lastRecord.timestamp,
|
|
123
|
+
sourceMtimeMs: slice.more ? null : source.newestMtimeMs,
|
|
124
|
+
};
|
|
125
|
+
ledgerChanged = true;
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
const newestMs = slice.newestTimestamp ? Date.parse(slice.newestTimestamp) : source.newestMtimeMs;
|
|
129
|
+
// A continuation is the tail of a record already admitted to a batch;
|
|
130
|
+
// delaying it as "small recent input" would leave the watermark parked
|
|
131
|
+
// in the middle of that record until the age threshold elapsed.
|
|
132
|
+
if (slice.recordCount < DREAM_MIN_SLICE_RECORDS && !slice.more && cursor.offset === 0 && nowMs - newestMs < DREAM_SMALL_SLICE_MAX_AGE_MS)
|
|
133
|
+
continue;
|
|
134
|
+
return {
|
|
135
|
+
ledgerChanged,
|
|
136
|
+
batch: {
|
|
137
|
+
...this.newBatch("ingestion", localDay),
|
|
138
|
+
slice: {
|
|
139
|
+
sourceKey: source.sourceKey,
|
|
140
|
+
label: source.label,
|
|
141
|
+
toRecord: slice.lastRecord.key,
|
|
142
|
+
...(slice.lastRecordOffset > 0 ? { toRecordOffset: slice.lastRecordOffset } : {}),
|
|
143
|
+
...(slice.lastRecordOffset > 0 && slice.lastRecordTextHash
|
|
144
|
+
? { toRecordTextHash: slice.lastRecordTextHash }
|
|
145
|
+
: {}),
|
|
146
|
+
toTimestamp: slice.lastRecord.timestamp,
|
|
147
|
+
recordCount: slice.recordCount,
|
|
148
|
+
text: slice.text,
|
|
149
|
+
more: slice.more,
|
|
150
|
+
sourceMtimeMs: source.newestMtimeMs,
|
|
151
|
+
},
|
|
152
|
+
files: [],
|
|
153
|
+
sources: slice.sources,
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
return { batch: null, ledgerChanged };
|
|
158
|
+
}
|
|
159
|
+
planConsolidation(ledger, localDay) {
|
|
160
|
+
const due = listMemoryFiles(this.stores())
|
|
161
|
+
.filter((file) => !isDeferred(ledger, file.virtualPath, localDay))
|
|
162
|
+
.map((file) => ({ ...file, hash: this.hashOf(file.fullPath) }))
|
|
163
|
+
.filter((file) => file.hash !== null
|
|
164
|
+
&& ledger.consolidation[file.virtualPath]?.hash !== file.hash)
|
|
165
|
+
// Recently changed files first: that is where new facts just landed.
|
|
166
|
+
.sort((a, b) => b.mtimeMs - a.mtimeMs);
|
|
167
|
+
if (due.length === 0)
|
|
168
|
+
return null;
|
|
169
|
+
const files = [];
|
|
170
|
+
let bytes = 0;
|
|
171
|
+
for (const file of due) {
|
|
172
|
+
if (files.length > 0 && (files.length >= REVIEW_MAX_FILES || bytes + file.size > REVIEW_MAX_BYTES || file.size > REVIEW_LARGE_FILE_BYTES))
|
|
173
|
+
continue;
|
|
174
|
+
files.push({ path: file.virtualPath, hash: file.hash, size: file.size });
|
|
175
|
+
bytes += file.size;
|
|
176
|
+
if (file.size > REVIEW_LARGE_FILE_BYTES)
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
return { ...this.newBatch("consolidation", localDay), files, sources: {} };
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Apply a finished batch execution to the ledger and the glossary, then
|
|
183
|
+
* remove the batch file. Idempotent: a batch already applied is gone and
|
|
184
|
+
* returns null. `result` is the execution's terminal result; null when the
|
|
185
|
+
* execution never reached the store.
|
|
186
|
+
*/
|
|
187
|
+
applyResult(batchId, result, options = {}) {
|
|
188
|
+
const batch = readDreamingBatch(batchId, this.memoriesDir);
|
|
189
|
+
if (!batch)
|
|
190
|
+
return null;
|
|
191
|
+
// A report committed before a cancel still describes work that was done.
|
|
192
|
+
const parsed = result?.data === undefined ? null : DreamingReportDataSchema.safeParse(result.data);
|
|
193
|
+
const report = parsed?.success ? parsed.data : null;
|
|
194
|
+
const status = result?.status ?? "failed";
|
|
195
|
+
const edits = readDreamEdits(batchId, batch.localDate, this.memoriesDir).filter((edit) => edit.result === "committed");
|
|
196
|
+
const editedPaths = [...new Set(edits.map((edit) => edit.path))];
|
|
197
|
+
// A cancel retries tonight only when it was a preemption (or nothing ran);
|
|
198
|
+
// a batch the host cancelled for overrunning waits for the next night.
|
|
199
|
+
const retryTonight = status === "cancelled" && options.retryTonight !== false;
|
|
200
|
+
let outcome = "failed";
|
|
201
|
+
updateDreamingLedger((ledger) => {
|
|
202
|
+
outcome = batch.kind === "ingestion"
|
|
203
|
+
? this.applyIngestion(ledger, batch, report, status, editedPaths.length, retryTonight)
|
|
204
|
+
: this.applyConsolidation(ledger, batch, report, status, editedPaths.length, retryTonight);
|
|
205
|
+
}, this.memoriesDir);
|
|
206
|
+
let vocabularyMutated = false;
|
|
207
|
+
const ownerPublicId = this.options.ownerPublicId();
|
|
208
|
+
if (report && batch.vocabularyLearning && ownerPublicId && report.vocabularyCandidates.length > 0) {
|
|
209
|
+
try {
|
|
210
|
+
vocabularyMutated = processVocabularyCandidates(ownerPublicId, report.vocabularyCandidates, this.memoriesDir, new Map(Object.entries(batch.sources)));
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
// Vocabulary never blocks memory progress; the message may quote a term, so log only its kind.
|
|
214
|
+
logger.warn(`[dreaming] Vocabulary processing failed: ${error instanceof Error ? error.name : "error"}`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
removeDreamingBatch(batchId, this.memoriesDir);
|
|
218
|
+
const summary = {
|
|
219
|
+
batchId,
|
|
220
|
+
kind: batch.kind,
|
|
221
|
+
outcome,
|
|
222
|
+
committedEdits: edits.length,
|
|
223
|
+
editedPaths,
|
|
224
|
+
vocabularyAccepted: report?.vocabularyCandidates.length ?? 0,
|
|
225
|
+
vocabularyRejected: report?.rejectedVocabulary ?? 0,
|
|
226
|
+
vocabularyMutated,
|
|
227
|
+
};
|
|
228
|
+
logger.system(`[dreaming] Batch ${batchId} kind=${batch.kind} outcome=${outcome} edits=${edits.length} files=${editedPaths.length} ` +
|
|
229
|
+
`vocabulary=${summary.vocabularyAccepted} accepted, ${summary.vocabularyRejected} rejected`);
|
|
230
|
+
return summary;
|
|
231
|
+
}
|
|
232
|
+
/** The watermark moves only for an explicit ingested or no_new_facts report. */
|
|
233
|
+
applyIngestion(ledger, batch, report, status, editedFiles, retryTonight) {
|
|
234
|
+
const slice = batch.slice;
|
|
235
|
+
if (!slice)
|
|
236
|
+
return "failed";
|
|
237
|
+
const ingestion = report?.ingestion?.status;
|
|
238
|
+
if (ingestion === "ingested" || ingestion === "no_new_facts") {
|
|
239
|
+
ledger.ingestion[slice.sourceKey] = {
|
|
240
|
+
record: slice.toRecord,
|
|
241
|
+
recordOffset: slice.toRecordOffset ?? 0,
|
|
242
|
+
recordTextHash: slice.toRecordOffset ? slice.toRecordTextHash : undefined,
|
|
243
|
+
timestamp: slice.toTimestamp,
|
|
244
|
+
cutoffMs: ledger.ingestion[slice.sourceKey]?.cutoffMs ?? 0,
|
|
245
|
+
// Records written while the batch ran are newer than this mtime and are still read.
|
|
246
|
+
sourceMtimeMs: slice.more ? null : slice.sourceMtimeMs,
|
|
247
|
+
};
|
|
248
|
+
return ingestion === "ingested" ? "completed" : "no_new_facts";
|
|
249
|
+
}
|
|
250
|
+
// A preempted batch retries tonight. Anything else keeps its input for the
|
|
251
|
+
// next night, which reads the latest memory and the same records.
|
|
252
|
+
if (retryTonight)
|
|
253
|
+
return "cancelled";
|
|
254
|
+
deferToNextDay(ledger, slice.sourceKey, batch.localDay);
|
|
255
|
+
if (status === "cancelled")
|
|
256
|
+
return "cancelled";
|
|
257
|
+
return ingestion === "not_done" || editedFiles > 0 ? "partial" : "failed";
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Reviewed files record the hash they were reviewed at; the rest wait for
|
|
261
|
+
* the next night. Only a review the worker attests (it viewed the whole
|
|
262
|
+
* file) counts, and a file changed after its review is due again.
|
|
263
|
+
*/
|
|
264
|
+
applyConsolidation(ledger, batch, report, status, editedFiles, retryTonight) {
|
|
265
|
+
const entries = new Map((report?.files ?? []).map((file) => [file.path, file]));
|
|
266
|
+
// The worker's hash proves what it viewed, but the owner or another
|
|
267
|
+
// writer may have changed the file after the report was emitted and
|
|
268
|
+
// before the host applied it. Never mark that newer content reviewed.
|
|
269
|
+
const current = new Map(listMemoryFiles(this.stores()).map((file) => [file.virtualPath, file.fullPath]));
|
|
270
|
+
let reviewed = 0;
|
|
271
|
+
for (const file of batch.files) {
|
|
272
|
+
const entry = entries.get(file.path);
|
|
273
|
+
const fullPath = current.get(file.path);
|
|
274
|
+
const currentHash = fullPath ? this.hashOf(fullPath) : null;
|
|
275
|
+
if ((entry?.status === "tidied" || entry?.status === "unchanged") && entry.hash && entry.hash === currentHash) {
|
|
276
|
+
ledger.consolidation[file.path] = { hash: entry.hash, reviewedAt: this.now().toISOString() };
|
|
277
|
+
reviewed += 1;
|
|
278
|
+
}
|
|
279
|
+
else if (!retryTonight) {
|
|
280
|
+
deferToNextDay(ledger, file.path, batch.localDay);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
if (status === "cancelled")
|
|
284
|
+
return "cancelled";
|
|
285
|
+
if (reviewed === batch.files.length)
|
|
286
|
+
return "completed";
|
|
287
|
+
if (reviewed > 0 || editedFiles > 0)
|
|
288
|
+
return "partial";
|
|
289
|
+
return report ? "partial" : "failed";
|
|
290
|
+
}
|
|
291
|
+
hashOf(fullPath) {
|
|
292
|
+
try {
|
|
293
|
+
return contentHash(fs.readFileSync(fullPath, "utf8"));
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
return null;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/** Batch files left by a host that stopped before applying them. */
|
|
300
|
+
pendingBatchIds() {
|
|
301
|
+
return listDreamingBatchIds(this.memoriesDir);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=dreaming-planner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dreaming-planner.js","sourceRoot":"","sources":["../../../src/agent/nightly-maintenance/dreaming-planner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runs Dreaming one batch at a time as a maintenance execution (#2805 stage 2).
|
|
3
|
+
*
|
|
4
|
+
* Each `runBatch` call plans one bounded batch, submits it through the
|
|
5
|
+
* supervisor's trusted maintenance entry, waits until its executor is
|
|
6
|
+
* confirmed stopped, and applies the outcome. The step owner holds worker
|
|
7
|
+
* admission throughout, so no other writer starts next to the batch, and the
|
|
8
|
+
* hold is released only after the stop is confirmed.
|
|
9
|
+
*
|
|
10
|
+
* Preemption: owner input during a batch cancels it. The cancel becomes final
|
|
11
|
+
* only once the executor exits; edits already committed stay, the input is
|
|
12
|
+
* kept, and a later step continues from the unchanged watermark.
|
|
13
|
+
*/
|
|
14
|
+
import { type ExecutionRecord } from "../../threads/execution-store.js";
|
|
15
|
+
import { DEFAULT_DREAMING_BATCH_BUDGET } from "./dreaming-batch.js";
|
|
16
|
+
import type { DreamingBatchSummary, DreamingPlanner } from "./dreaming-planner.js";
|
|
17
|
+
/** The supervisor's maintenance entry, as Dreaming uses it. */
|
|
18
|
+
export interface MaintenanceExecutionHost {
|
|
19
|
+
submitMaintenanceExecution(input: {
|
|
20
|
+
taskId: string;
|
|
21
|
+
payload: {
|
|
22
|
+
goal: string;
|
|
23
|
+
inputRefs: string[];
|
|
24
|
+
title: string;
|
|
25
|
+
};
|
|
26
|
+
budget: typeof DEFAULT_DREAMING_BATCH_BUDGET;
|
|
27
|
+
}): ExecutionRecord;
|
|
28
|
+
cancelMaintenanceExecution(reason: string): void;
|
|
29
|
+
cancelStaleMaintenanceExecution(executionId: string): ExecutionRecord | null;
|
|
30
|
+
getExecutionRecord(executionId: string): ExecutionRecord | null;
|
|
31
|
+
latestExecutionForTask(taskId: string): ExecutionRecord | null;
|
|
32
|
+
discardMaintenanceExecutionContent(executionId: string): void;
|
|
33
|
+
}
|
|
34
|
+
export type DreamingStepResult = {
|
|
35
|
+
kind: "idle";
|
|
36
|
+
} | {
|
|
37
|
+
kind: "batch";
|
|
38
|
+
summary: DreamingBatchSummary | null;
|
|
39
|
+
}
|
|
40
|
+
/** Preempted: the step gives way; nothing is retried until the next maintenance tick. */
|
|
41
|
+
| {
|
|
42
|
+
kind: "yielded";
|
|
43
|
+
summary: DreamingBatchSummary | null;
|
|
44
|
+
} | {
|
|
45
|
+
kind: "blocked";
|
|
46
|
+
reason: string;
|
|
47
|
+
};
|
|
48
|
+
export declare class DreamingRunner {
|
|
49
|
+
private readonly planner;
|
|
50
|
+
private readonly host;
|
|
51
|
+
private readonly options;
|
|
52
|
+
private current;
|
|
53
|
+
private preempted;
|
|
54
|
+
/** Why the current batch was cancelled, if it was. */
|
|
55
|
+
private cancelCause;
|
|
56
|
+
constructor(planner: DreamingPlanner, host: MaintenanceExecutionHost, options?: {
|
|
57
|
+
pollMs?: number;
|
|
58
|
+
});
|
|
59
|
+
/** A batch is executing under this runner. */
|
|
60
|
+
get active(): boolean;
|
|
61
|
+
/** Once per night, before the first batch. */
|
|
62
|
+
startNight(): void;
|
|
63
|
+
/** A maintenance step acquired admission; earlier preemptions are spent. */
|
|
64
|
+
beginStep(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Owner input arrived: cancel the running batch, or keep this step from
|
|
67
|
+
* starting one. The cancel completes only after the executor stops.
|
|
68
|
+
*/
|
|
69
|
+
preempt(reason?: string): void;
|
|
70
|
+
/**
|
|
71
|
+
* Finish batches a previous host left behind. A batch whose execution
|
|
72
|
+
* already ended is applied; one still queued is cancelled first. A batch
|
|
73
|
+
* whose executor is not yet confirmed stopped blocks Dreaming until it is.
|
|
74
|
+
*/
|
|
75
|
+
recoverLeftovers(): {
|
|
76
|
+
blocked: boolean;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Plan and run one batch for `localDay`. Resolves after the batch's
|
|
80
|
+
* executor is confirmed stopped and its outcome is applied.
|
|
81
|
+
*/
|
|
82
|
+
runBatch(localDay: number): Promise<DreamingStepResult>;
|
|
83
|
+
/**
|
|
84
|
+
* Terminal state is written only after the host confirmed the executor
|
|
85
|
+
* stopped. The worker enforces its own budget; past `limitMs` the host
|
|
86
|
+
* cancels as a backstop and keeps waiting for the confirmed stop.
|
|
87
|
+
*/
|
|
88
|
+
private waitForTerminal;
|
|
89
|
+
private cancelCauseOf;
|
|
90
|
+
/** Whether the step should stop starting new batches. */
|
|
91
|
+
get wasPreempted(): boolean;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=dreaming-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dreaming-runner.d.ts","sourceRoot":"","sources":["../../../src/agent/nightly-maintenance/dreaming-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAA4B,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAClG,OAAO,EAAE,6BAA6B,EAAwC,MAAM,qBAAqB,CAAC;AAC1G,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEnF,+DAA+D;AAC/D,MAAM,WAAW,wBAAwB;IACvC,0BAA0B,CAAC,KAAK,EAAE;QAChC,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,EAAE,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9D,MAAM,EAAE,OAAO,6BAA6B,CAAC;KAC9C,GAAG,eAAe,CAAC;IACpB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,+BAA+B,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC;IAC7E,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC;IAChE,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC;IAC/D,kCAAkC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/D;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAA;CAAE;AACzD,yFAAyF;GACvF;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAQxC,qBAAa,cAAc;IAOvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAR1B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,SAAS,CAAS;IAC1B,sDAAsD;IACtD,OAAO,CAAC,WAAW,CAAsC;gBAGtC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,wBAAwB,EAC9B,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO;IAGpD,8CAA8C;IAC9C,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,8CAA8C;IAC9C,UAAU,IAAI,IAAI;IAIlB,4EAA4E;IAC5E,SAAS,IAAI,IAAI;IAIjB;;;OAGG;IACH,OAAO,CAAC,MAAM,SAAgB,GAAG,IAAI;IAOrC;;;;OAIG;IACH,gBAAgB,IAAI;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;IAexC;;;OAGG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAiC7D;;;;OAIG;YACW,eAAe;IAiB7B,OAAO,CAAC,aAAa;IAIrB,yDAAyD;IACzD,IAAI,YAAY,IAAI,OAAO,CAE1B;CACF"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runs Dreaming one batch at a time as a maintenance execution (#2805 stage 2).
|
|
3
|
+
*
|
|
4
|
+
* Each `runBatch` call plans one bounded batch, submits it through the
|
|
5
|
+
* supervisor's trusted maintenance entry, waits until its executor is
|
|
6
|
+
* confirmed stopped, and applies the outcome. The step owner holds worker
|
|
7
|
+
* admission throughout, so no other writer starts next to the batch, and the
|
|
8
|
+
* hold is released only after the stop is confirmed.
|
|
9
|
+
*
|
|
10
|
+
* Preemption: owner input during a batch cancels it. The cancel becomes final
|
|
11
|
+
* only once the executor exits; edits already committed stay, the input is
|
|
12
|
+
* kept, and a later step continues from the unchanged watermark.
|
|
13
|
+
*/
|
|
14
|
+
import { logger } from "../../logger.js";
|
|
15
|
+
import { isTerminalExecutionState } from "../../threads/execution-store.js";
|
|
16
|
+
import { DEFAULT_DREAMING_BATCH_BUDGET, dreamingBatchRef } from "./dreaming-batch.js";
|
|
17
|
+
const POLL_MS = 250;
|
|
18
|
+
/** Host backstop beyond the worker's own time budget: startup plus the stop grace. */
|
|
19
|
+
const OVERRUN_GRACE_MS = 2 * 60_000;
|
|
20
|
+
/** A batch that never reached an executor: its inputs are kept and retried tonight. */
|
|
21
|
+
const NOT_STARTED = { status: "cancelled" };
|
|
22
|
+
export class DreamingRunner {
|
|
23
|
+
planner;
|
|
24
|
+
host;
|
|
25
|
+
options;
|
|
26
|
+
current = null;
|
|
27
|
+
preempted = false;
|
|
28
|
+
/** Why the current batch was cancelled, if it was. */
|
|
29
|
+
cancelCause = null;
|
|
30
|
+
constructor(planner, host, options = {}) {
|
|
31
|
+
this.planner = planner;
|
|
32
|
+
this.host = host;
|
|
33
|
+
this.options = options;
|
|
34
|
+
}
|
|
35
|
+
/** A batch is executing under this runner. */
|
|
36
|
+
get active() {
|
|
37
|
+
return this.current !== null;
|
|
38
|
+
}
|
|
39
|
+
/** Once per night, before the first batch. */
|
|
40
|
+
startNight() {
|
|
41
|
+
this.planner.startNight();
|
|
42
|
+
}
|
|
43
|
+
/** A maintenance step acquired admission; earlier preemptions are spent. */
|
|
44
|
+
beginStep() {
|
|
45
|
+
this.preempted = false;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Owner input arrived: cancel the running batch, or keep this step from
|
|
49
|
+
* starting one. The cancel completes only after the executor stops.
|
|
50
|
+
*/
|
|
51
|
+
preempt(reason = "owner input") {
|
|
52
|
+
this.preempted = true;
|
|
53
|
+
if (!this.current)
|
|
54
|
+
return;
|
|
55
|
+
this.cancelCause ??= "preempt";
|
|
56
|
+
this.host.cancelMaintenanceExecution(reason);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Finish batches a previous host left behind. A batch whose execution
|
|
60
|
+
* already ended is applied; one still queued is cancelled first. A batch
|
|
61
|
+
* whose executor is not yet confirmed stopped blocks Dreaming until it is.
|
|
62
|
+
*/
|
|
63
|
+
recoverLeftovers() {
|
|
64
|
+
for (const batchId of this.planner.pendingBatchIds()) {
|
|
65
|
+
let record = this.host.latestExecutionForTask(batchId);
|
|
66
|
+
if (record?.state === "queued")
|
|
67
|
+
record = this.host.cancelStaleMaintenanceExecution(record.executionId);
|
|
68
|
+
if (record && !isTerminalExecutionState(record.state)) {
|
|
69
|
+
logger.warn(`[dreaming] Batch ${batchId} from a previous run has not stopped (state=${record.state}); waiting`);
|
|
70
|
+
return { blocked: true };
|
|
71
|
+
}
|
|
72
|
+
// No record: the host stopped between planning and submitting; nothing ran.
|
|
73
|
+
this.planner.applyResult(batchId, record?.result ?? NOT_STARTED);
|
|
74
|
+
if (record)
|
|
75
|
+
this.host.discardMaintenanceExecutionContent(record.executionId);
|
|
76
|
+
}
|
|
77
|
+
return { blocked: false };
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Plan and run one batch for `localDay`. Resolves after the batch's
|
|
81
|
+
* executor is confirmed stopped and its outcome is applied.
|
|
82
|
+
*/
|
|
83
|
+
async runBatch(localDay) {
|
|
84
|
+
if (this.recoverLeftovers().blocked)
|
|
85
|
+
return { kind: "blocked", reason: "previous batch not stopped" };
|
|
86
|
+
if (this.preempted)
|
|
87
|
+
return { kind: "yielded", summary: null };
|
|
88
|
+
const batch = this.planner.planNext(localDay);
|
|
89
|
+
if (!batch)
|
|
90
|
+
return { kind: "idle" };
|
|
91
|
+
let record;
|
|
92
|
+
try {
|
|
93
|
+
record = this.host.submitMaintenanceExecution({
|
|
94
|
+
taskId: batch.batchId,
|
|
95
|
+
payload: { goal: goalFor(batch), inputRefs: [dreamingBatchRef(batch.batchId)], title: "Memory dreaming" },
|
|
96
|
+
budget: DEFAULT_DREAMING_BATCH_BUDGET,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
// Nothing ran; the batch keeps its inputs and is planned again later.
|
|
101
|
+
this.planner.applyResult(batch.batchId, NOT_STARTED);
|
|
102
|
+
return { kind: "blocked", reason: error instanceof Error ? error.message : String(error) };
|
|
103
|
+
}
|
|
104
|
+
// From here a preemption cancels this execution (see preempt()).
|
|
105
|
+
this.current = record.executionId;
|
|
106
|
+
this.cancelCause = null;
|
|
107
|
+
try {
|
|
108
|
+
const finished = await this.waitForTerminal(record.executionId, DEFAULT_DREAMING_BATCH_BUDGET.maxDurationMs + OVERRUN_GRACE_MS);
|
|
109
|
+
// Set by preempt() or the overrun backstop while the batch ran.
|
|
110
|
+
const cause = this.cancelCauseOf();
|
|
111
|
+
const summary = this.planner.applyResult(batch.batchId, finished.result, { retryTonight: cause !== "overrun" });
|
|
112
|
+
this.host.discardMaintenanceExecutionContent(record.executionId);
|
|
113
|
+
return { kind: cause === "preempt" ? "yielded" : "batch", summary };
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
this.current = null;
|
|
117
|
+
this.cancelCause = null;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Terminal state is written only after the host confirmed the executor
|
|
122
|
+
* stopped. The worker enforces its own budget; past `limitMs` the host
|
|
123
|
+
* cancels as a backstop and keeps waiting for the confirmed stop.
|
|
124
|
+
*/
|
|
125
|
+
async waitForTerminal(executionId, limitMs) {
|
|
126
|
+
const deadline = Date.now() + limitMs;
|
|
127
|
+
let overrunCancelled = false;
|
|
128
|
+
for (;;) {
|
|
129
|
+
const record = this.host.getExecutionRecord(executionId);
|
|
130
|
+
if (!record)
|
|
131
|
+
throw new Error(`Maintenance execution ${executionId} disappeared`);
|
|
132
|
+
if (isTerminalExecutionState(record.state))
|
|
133
|
+
return record;
|
|
134
|
+
if (!overrunCancelled && Date.now() >= deadline) {
|
|
135
|
+
overrunCancelled = true;
|
|
136
|
+
logger.warn(`[dreaming] Batch execution ${executionId} overran its time budget; cancelling`);
|
|
137
|
+
this.cancelCause ??= "overrun";
|
|
138
|
+
this.host.cancelMaintenanceExecution("batch overran its time budget");
|
|
139
|
+
}
|
|
140
|
+
await new Promise((resolve) => setTimeout(resolve, this.options.pollMs ?? POLL_MS));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
cancelCauseOf() {
|
|
144
|
+
return this.cancelCause;
|
|
145
|
+
}
|
|
146
|
+
/** Whether the step should stop starting new batches. */
|
|
147
|
+
get wasPreempted() {
|
|
148
|
+
return this.preempted;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
function goalFor(batch) {
|
|
152
|
+
return batch.kind === "ingestion"
|
|
153
|
+
? "Ingest new conversation records into memory (Dreaming batch)"
|
|
154
|
+
: "Review and tidy memory files (Dreaming batch)";
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=dreaming-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dreaming-runner.js","sourceRoot":"","sources":["../../../src/agent/nightly-maintenance/dreaming-runner.ts"],"names":[],"mappings":"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"}
|