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 @@
|
|
|
1
|
+
{"version":3,"file":"foreman-store.d.ts","sourceRoot":"","sources":["../../src/threads/foreman-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { DatabaseSync } from "node:sqlite";
|
|
4
|
+
import { getSharedProfileDir } from "../config/index.js";
|
|
5
|
+
/**
|
|
6
|
+
* Owner delivery obligations for Foreman tasks (#2805 stage 3).
|
|
7
|
+
*
|
|
8
|
+
* Repeats are acceptable, a lost final result is not (#1234). The execution
|
|
9
|
+
* layer only guarantees that an event reaches its caller (General); this
|
|
10
|
+
* store is General's own guarantee that the user hears about it.
|
|
11
|
+
*
|
|
12
|
+
* - A dispatch records its reply target, taken by the host from the
|
|
13
|
+
* authenticated inbound message, never from the model, and a short title.
|
|
14
|
+
* - A `result` (succeeded, failed, or a cancel the user did not ask for) or a
|
|
15
|
+
* `question` arriving for the task opens an obligation.
|
|
16
|
+
* - It is satisfied only by a successful `notify_user` that names the task.
|
|
17
|
+
* A result also needs `purpose="completion"`; a question needs only the
|
|
18
|
+
* binding. Text is never matched.
|
|
19
|
+
* - Rejecting the result, adding a requirement or retrying carries the
|
|
20
|
+
* obligation over to the next result: the open one is withdrawn.
|
|
21
|
+
* - When General's turn that handled the event ends without a delivery, or
|
|
22
|
+
* the event waits too long (queue, model backoff, crash), or a restart finds
|
|
23
|
+
* it overdue, the host sends the title/state plus the persisted public
|
|
24
|
+
* question or prepared answer. Internal diagnostics are never substituted.
|
|
25
|
+
* Fallback sends are idempotent per task and event, retried with
|
|
26
|
+
* backoff, and end as `delivery_failed`, visible in task status.
|
|
27
|
+
*
|
|
28
|
+
* Owned by the main process; worker threads reach it over IPC. It is its own
|
|
29
|
+
* file rather than part of executions.db: every step is idempotent (a
|
|
30
|
+
* dispatch is keyed by taskId, an obligation by taskId + eventId), so the
|
|
31
|
+
* order enqueue to General → open → acknowledge the outbox row gives the same
|
|
32
|
+
* at-least-once result as one transaction would.
|
|
33
|
+
*/
|
|
34
|
+
export const DELIVERY_OBLIGATION_TIMEOUT_MS = 5 * 60_000;
|
|
35
|
+
export const MAX_FALLBACK_ATTEMPTS = 5;
|
|
36
|
+
const FALLBACK_RETRY_BASE_MS = 30_000;
|
|
37
|
+
export function foremanStorePath() {
|
|
38
|
+
return path.join(getSharedProfileDir(), "foreman.db");
|
|
39
|
+
}
|
|
40
|
+
export class ForemanStore {
|
|
41
|
+
now;
|
|
42
|
+
db;
|
|
43
|
+
statements;
|
|
44
|
+
closed = false;
|
|
45
|
+
constructor(dbPath = foremanStorePath(), now = () => new Date()) {
|
|
46
|
+
this.now = now;
|
|
47
|
+
fs.mkdirSync(path.dirname(dbPath), { recursive: true });
|
|
48
|
+
if (dbPath !== ":memory:") {
|
|
49
|
+
fs.closeSync(fs.openSync(dbPath, "a", 0o600));
|
|
50
|
+
fs.chmodSync(dbPath, 0o600);
|
|
51
|
+
}
|
|
52
|
+
this.db = new DatabaseSync(dbPath);
|
|
53
|
+
this.db.exec("PRAGMA journal_mode = WAL");
|
|
54
|
+
this.db.exec("PRAGMA busy_timeout = 5000");
|
|
55
|
+
this.db.exec(`
|
|
56
|
+
CREATE TABLE IF NOT EXISTS task_dispatches (
|
|
57
|
+
task_id TEXT PRIMARY KEY,
|
|
58
|
+
thread_id TEXT NOT NULL,
|
|
59
|
+
title TEXT NOT NULL,
|
|
60
|
+
reply_target TEXT NOT NULL,
|
|
61
|
+
sender TEXT NOT NULL,
|
|
62
|
+
worker TEXT,
|
|
63
|
+
workspace TEXT,
|
|
64
|
+
created_at TEXT NOT NULL
|
|
65
|
+
);
|
|
66
|
+
CREATE TABLE IF NOT EXISTS delivery_obligations (
|
|
67
|
+
task_id TEXT NOT NULL,
|
|
68
|
+
event_id TEXT NOT NULL,
|
|
69
|
+
execution_id TEXT NOT NULL,
|
|
70
|
+
kind TEXT NOT NULL,
|
|
71
|
+
status TEXT NOT NULL,
|
|
72
|
+
state TEXT NOT NULL,
|
|
73
|
+
created_at TEXT NOT NULL,
|
|
74
|
+
due_at TEXT NOT NULL,
|
|
75
|
+
attempts INTEGER NOT NULL DEFAULT 0,
|
|
76
|
+
last_error TEXT,
|
|
77
|
+
resolved_at TEXT,
|
|
78
|
+
PRIMARY KEY (task_id, event_id)
|
|
79
|
+
);
|
|
80
|
+
CREATE INDEX IF NOT EXISTS delivery_obligations_due_idx ON delivery_obligations(state, due_at);
|
|
81
|
+
CREATE INDEX IF NOT EXISTS task_dispatches_thread_idx ON task_dispatches(thread_id, created_at);
|
|
82
|
+
CREATE TABLE IF NOT EXISTS task_user_cancels (
|
|
83
|
+
task_id TEXT PRIMARY KEY,
|
|
84
|
+
cancelled_at TEXT NOT NULL
|
|
85
|
+
);
|
|
86
|
+
`);
|
|
87
|
+
const columns = this.db.prepare("PRAGMA table_info(task_dispatches)").all();
|
|
88
|
+
const deliveryColumns = this.db.prepare("PRAGMA table_info(delivery_obligations)").all();
|
|
89
|
+
if (!deliveryColumns.some((column) => column.name === "public_text"))
|
|
90
|
+
this.db.exec("ALTER TABLE delivery_obligations ADD COLUMN public_text TEXT");
|
|
91
|
+
if (!deliveryColumns.some((column) => column.name === "delivery_mode"))
|
|
92
|
+
this.db.exec("ALTER TABLE delivery_obligations ADD COLUMN delivery_mode TEXT");
|
|
93
|
+
if (!columns.some((column) => column.name === "metadata"))
|
|
94
|
+
this.db.exec("ALTER TABLE task_dispatches ADD COLUMN metadata TEXT NOT NULL DEFAULT '{}'");
|
|
95
|
+
this.db.exec(`CREATE TABLE IF NOT EXISTS task_group_cancels (
|
|
96
|
+
task_id TEXT PRIMARY KEY, reason TEXT NOT NULL, by_user INTEGER NOT NULL
|
|
97
|
+
)`);
|
|
98
|
+
const prepare = (sql) => this.db.prepare(sql);
|
|
99
|
+
this.statements = {
|
|
100
|
+
insertDispatch: prepare(`INSERT INTO task_dispatches (task_id, thread_id, title, reply_target, sender, worker, workspace, created_at, metadata)
|
|
101
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(task_id) DO NOTHING`),
|
|
102
|
+
getDispatch: prepare("SELECT * FROM task_dispatches WHERE task_id = ?"),
|
|
103
|
+
dispatchesForThread: prepare("SELECT * FROM task_dispatches WHERE thread_id = ? ORDER BY created_at DESC, rowid DESC LIMIT ?"),
|
|
104
|
+
allForThread: prepare("SELECT * FROM task_dispatches WHERE thread_id = ? ORDER BY created_at DESC, rowid DESC"),
|
|
105
|
+
groupCancels: prepare("SELECT * FROM task_group_cancels"),
|
|
106
|
+
groupCancel: prepare("INSERT OR REPLACE INTO task_group_cancels (task_id, reason, by_user) VALUES (?, ?, ?)"),
|
|
107
|
+
clearGroupCancel: prepare("DELETE FROM task_group_cancels WHERE task_id = ?"),
|
|
108
|
+
markUserCancelled: prepare("INSERT OR IGNORE INTO task_user_cancels (task_id, cancelled_at) VALUES (?, ?)"),
|
|
109
|
+
clearUserCancelled: prepare("DELETE FROM task_user_cancels WHERE task_id = ?"),
|
|
110
|
+
isUserCancelled: prepare("SELECT 1 AS found FROM task_user_cancels WHERE task_id = ?"),
|
|
111
|
+
insertObligation: prepare(`INSERT OR IGNORE INTO delivery_obligations
|
|
112
|
+
(task_id, event_id, execution_id, kind, status, state, created_at, due_at, public_text, delivery_mode)
|
|
113
|
+
VALUES (?, ?, ?, ?, ?, 'pending', ?, ?, ?, ?)`),
|
|
114
|
+
getObligation: prepare("SELECT * FROM delivery_obligations WHERE task_id = ? AND event_id = ?"),
|
|
115
|
+
pendingForTask: prepare(`SELECT * FROM delivery_obligations WHERE task_id = ?
|
|
116
|
+
AND (state IN ('pending', 'delivery_failed') OR (state = 'fallback_sent' AND kind = 'result' AND delivery_mode = 'review')) ORDER BY created_at, rowid`),
|
|
117
|
+
latestForTask: prepare("SELECT * FROM delivery_obligations WHERE task_id = ? ORDER BY created_at DESC, rowid DESC LIMIT 1"),
|
|
118
|
+
due: prepare("SELECT * FROM delivery_obligations WHERE state = 'pending' AND due_at <= ? ORDER BY due_at, rowid LIMIT ?"),
|
|
119
|
+
resolve: prepare(`UPDATE delivery_obligations SET state = ?, resolved_at = ?
|
|
120
|
+
WHERE task_id = ? AND event_id = ? AND state IN ('pending', 'fallback_sent', 'delivery_failed')`),
|
|
121
|
+
makeDue: prepare("UPDATE delivery_obligations SET due_at = ? WHERE task_id = ? AND event_id = ? AND state = 'pending'"),
|
|
122
|
+
retry: prepare(`UPDATE delivery_obligations SET attempts = attempts + 1, last_error = ?, due_at = ?
|
|
123
|
+
WHERE task_id = ? AND event_id = ? AND state = 'pending'`),
|
|
124
|
+
fail: prepare(`UPDATE delivery_obligations SET attempts = attempts + 1, last_error = ?, state = 'delivery_failed', resolved_at = ?
|
|
125
|
+
WHERE task_id = ? AND event_id = ? AND state = 'pending'`),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/** Record a dispatch once; a replayed dispatch keeps the original target and title. */
|
|
129
|
+
recordDispatch(dispatch) {
|
|
130
|
+
this.statements.insertDispatch.run(dispatch.taskId, dispatch.threadId, dispatch.title.slice(0, 200), JSON.stringify(dispatch.replyTarget), dispatch.sender.slice(0, 200), null, dispatch.workspace ?? null, this.timestamp(), JSON.stringify(dispatch.metadata ?? {}));
|
|
131
|
+
const stored = this.dispatch(dispatch.taskId);
|
|
132
|
+
if (!stored)
|
|
133
|
+
throw new Error(`Dispatch for ${dispatch.taskId} was not stored`);
|
|
134
|
+
return stored;
|
|
135
|
+
}
|
|
136
|
+
dispatch(taskId) {
|
|
137
|
+
const row = this.statements.getDispatch.get(taskId);
|
|
138
|
+
return row ? toDispatch(row) : null;
|
|
139
|
+
}
|
|
140
|
+
/** The most recent tasks one General thread dispatched. */
|
|
141
|
+
dispatchesForThread(threadId, limit = 20) {
|
|
142
|
+
return this.statements.dispatchesForThread.all(threadId, limit).map(toDispatch);
|
|
143
|
+
}
|
|
144
|
+
allForThread(threadId) {
|
|
145
|
+
return this.statements.allForThread.all(threadId).map(toDispatch);
|
|
146
|
+
}
|
|
147
|
+
/** Metadata commits before the enclosing execution transaction can publish acceptance. */
|
|
148
|
+
atomic(operation) {
|
|
149
|
+
this.db.exec("BEGIN IMMEDIATE");
|
|
150
|
+
try {
|
|
151
|
+
const value = operation();
|
|
152
|
+
this.db.exec("COMMIT");
|
|
153
|
+
return value;
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
this.db.exec("ROLLBACK");
|
|
157
|
+
throw error;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
requestGroupCancel(taskId, reason, byUser) {
|
|
161
|
+
this.statements.groupCancel.run(taskId, reason, byUser ? 1 : 0);
|
|
162
|
+
}
|
|
163
|
+
groupCancels() {
|
|
164
|
+
return this.statements.groupCancels.all()
|
|
165
|
+
.map((row) => ({ taskId: row.task_id, reason: row.reason, byUser: row.by_user === 1 }));
|
|
166
|
+
}
|
|
167
|
+
clearGroupCancel(taskId) {
|
|
168
|
+
this.statements.clearGroupCancel.run(taskId);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* The user asked to cancel this task: the resulting `cancelled` result owes
|
|
172
|
+
* them nothing. A later retry of the task clears the mark.
|
|
173
|
+
*/
|
|
174
|
+
markUserCancelled(taskId) {
|
|
175
|
+
this.statements.markUserCancelled.run(taskId, this.timestamp());
|
|
176
|
+
}
|
|
177
|
+
clearUserCancelled(taskId) {
|
|
178
|
+
this.statements.clearUserCancelled.run(taskId);
|
|
179
|
+
}
|
|
180
|
+
isUserCancelled(taskId) {
|
|
181
|
+
return this.statements.isUserCancelled.get(taskId) !== undefined;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* An event owed to the user reached General. Idempotent per event. A task
|
|
185
|
+
* without a recorded dispatch has nobody to fall back to, and a cancel the
|
|
186
|
+
* user asked for owes nothing; both open no obligation.
|
|
187
|
+
*/
|
|
188
|
+
open(input) {
|
|
189
|
+
if (input.kind === "result" && input.status === "cancelled"
|
|
190
|
+
&& (input.userInitiated === true || this.isUserCancelled(input.taskId)))
|
|
191
|
+
return null;
|
|
192
|
+
if (!this.dispatch(input.taskId))
|
|
193
|
+
return null;
|
|
194
|
+
const at = this.now();
|
|
195
|
+
this.statements.insertObligation.run(input.taskId, input.eventId, input.executionId, input.kind, input.status, at.toISOString(), new Date(at.getTime() + (input.deliveryMode === "direct" ? 0 : DELIVERY_OBLIGATION_TIMEOUT_MS)).toISOString(), input.publicText?.slice(0, 8_000) ?? null, input.deliveryMode ?? "review");
|
|
196
|
+
return this.get(input.taskId, input.eventId);
|
|
197
|
+
}
|
|
198
|
+
get(taskId, eventId) {
|
|
199
|
+
const row = this.statements.getObligation.get(taskId, eventId);
|
|
200
|
+
return row ? toObligation(row) : null;
|
|
201
|
+
}
|
|
202
|
+
pending(taskId) {
|
|
203
|
+
return this.statements.pendingForTask.all(taskId).map(toObligation);
|
|
204
|
+
}
|
|
205
|
+
latest(taskId) {
|
|
206
|
+
const row = this.statements.latestForTask.get(taskId);
|
|
207
|
+
return row ? toObligation(row) : null;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* A successful notify_user named this task. A result needs the completion
|
|
211
|
+
* purpose; a question is satisfied by any bound send. Returns how many
|
|
212
|
+
* obligations it satisfied.
|
|
213
|
+
*/
|
|
214
|
+
markDelivered(taskId, purpose, eventId) {
|
|
215
|
+
let satisfied = 0;
|
|
216
|
+
for (const obligation of this.pending(taskId)) {
|
|
217
|
+
if (eventId !== undefined && obligation.eventId !== eventId)
|
|
218
|
+
continue;
|
|
219
|
+
if (obligation.kind === "result" && purpose !== "completion")
|
|
220
|
+
continue;
|
|
221
|
+
satisfied += Number(this.statements.resolve.run("delivered", this.timestamp(), taskId, obligation.eventId).changes);
|
|
222
|
+
}
|
|
223
|
+
return satisfied;
|
|
224
|
+
}
|
|
225
|
+
/** General rejected the result, added a requirement or retried: the obligation moves to the next result. */
|
|
226
|
+
withdraw(taskId) {
|
|
227
|
+
let withdrawn = 0;
|
|
228
|
+
for (const obligation of this.pending(taskId)) {
|
|
229
|
+
withdrawn += Number(this.statements.resolve.run("withdrawn", this.timestamp(), taskId, obligation.eventId).changes);
|
|
230
|
+
}
|
|
231
|
+
return withdrawn;
|
|
232
|
+
}
|
|
233
|
+
/** General's turn that handled these events ended: whatever it did not deliver is due now. */
|
|
234
|
+
makeDueNow(taskId, eventIds) {
|
|
235
|
+
const at = this.timestamp();
|
|
236
|
+
for (const eventId of eventIds)
|
|
237
|
+
this.statements.makeDue.run(at, taskId, eventId);
|
|
238
|
+
}
|
|
239
|
+
due(limit = 20) {
|
|
240
|
+
return this.statements.due.all(this.timestamp(), limit).map(toObligation);
|
|
241
|
+
}
|
|
242
|
+
fallbackSent(taskId, eventId) {
|
|
243
|
+
this.statements.resolve.run("fallback_sent", this.timestamp(), taskId, eventId);
|
|
244
|
+
}
|
|
245
|
+
/** Back off and retry; after the last attempt the obligation is `delivery_failed`. */
|
|
246
|
+
fallbackFailed(taskId, eventId, error) {
|
|
247
|
+
const current = this.get(taskId, eventId);
|
|
248
|
+
if (current?.state !== "pending")
|
|
249
|
+
return current;
|
|
250
|
+
const message = error.slice(0, 500);
|
|
251
|
+
if (current.attempts + 1 >= MAX_FALLBACK_ATTEMPTS) {
|
|
252
|
+
this.statements.fail.run(message, this.timestamp(), taskId, eventId);
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
const delay = FALLBACK_RETRY_BASE_MS * 2 ** current.attempts;
|
|
256
|
+
this.statements.retry.run(message, new Date(this.now().getTime() + delay).toISOString(), taskId, eventId);
|
|
257
|
+
}
|
|
258
|
+
return this.get(taskId, eventId);
|
|
259
|
+
}
|
|
260
|
+
close() {
|
|
261
|
+
if (this.closed)
|
|
262
|
+
return;
|
|
263
|
+
this.closed = true;
|
|
264
|
+
this.db.close();
|
|
265
|
+
}
|
|
266
|
+
timestamp() {
|
|
267
|
+
return this.now().toISOString();
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
function toDispatch(row) {
|
|
271
|
+
return {
|
|
272
|
+
taskId: row.task_id,
|
|
273
|
+
threadId: row.thread_id,
|
|
274
|
+
title: row.title,
|
|
275
|
+
replyTarget: JSON.parse(row.reply_target),
|
|
276
|
+
sender: row.sender,
|
|
277
|
+
workspace: row.workspace,
|
|
278
|
+
createdAt: row.created_at,
|
|
279
|
+
metadata: JSON.parse(row.metadata || "{}"),
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
function toObligation(row) {
|
|
283
|
+
return {
|
|
284
|
+
publicText: row.public_text ?? null,
|
|
285
|
+
...(row.delivery_mode === "direct" || row.delivery_mode === "review" ? { deliveryMode: row.delivery_mode } : {}),
|
|
286
|
+
taskId: row.task_id,
|
|
287
|
+
eventId: row.event_id,
|
|
288
|
+
executionId: row.execution_id,
|
|
289
|
+
kind: row.kind,
|
|
290
|
+
status: row.status,
|
|
291
|
+
state: row.state,
|
|
292
|
+
createdAt: row.created_at,
|
|
293
|
+
dueAt: row.due_at,
|
|
294
|
+
attempts: row.attempts,
|
|
295
|
+
lastError: row.last_error,
|
|
296
|
+
resolvedAt: row.resolved_at,
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=foreman-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foreman-store.js","sourceRoot":"","sources":["../../src/threads/foreman-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { VisionClawConfig } from "../config/types.js";
|
|
2
|
+
import type { AdapterTool } from "../tools/adapter-tool.js";
|
|
3
|
+
import type { ExecutionRecord } from "./execution-store.js";
|
|
4
|
+
import { type ActiveWorkerRuntimePolicy } from "./worker-runtime-policy.js";
|
|
5
|
+
/**
|
|
6
|
+
* The generic internal-execution adapter (#2805 1c): local, restricted work
|
|
7
|
+
* submitted through the host's execution protocol, without Fin-App
|
|
8
|
+
* credentials or Lab identity. Its capability tier is the restricted local
|
|
9
|
+
* file/bash workspace; the Foreman tier that inherits the delegating thread's
|
|
10
|
+
* permissions is a later stage.
|
|
11
|
+
*/
|
|
12
|
+
export declare const GENERIC_EXECUTION_THREAD_PREFIX = "exec-";
|
|
13
|
+
export declare function isGenericExecutionThreadId(threadId: string | null | undefined): boolean;
|
|
14
|
+
/** One worker thread per execution; the id is stable across resumes. */
|
|
15
|
+
export declare function genericExecutionThreadId(executionId: string): string;
|
|
16
|
+
export declare function genericExecutionPolicy(readOnly?: boolean): ActiveWorkerRuntimePolicy;
|
|
17
|
+
/** The generic adapter's only tool registration; the host applies all restrictions. */
|
|
18
|
+
export declare const GENERIC_ADAPTER_TOOLS: readonly AdapterTool[];
|
|
19
|
+
export declare function buildGenericExecutionSystemPrompt(config: VisionClawConfig, workspaceCwd: string, readOnly?: boolean): string;
|
|
20
|
+
/** Initial dispatch text: the caller's goal plus any carried-over progress. */
|
|
21
|
+
export declare function buildGenericExecutionMessage(record: ExecutionRecord, unfinishedTools: {
|
|
22
|
+
toolName: string;
|
|
23
|
+
callId: string;
|
|
24
|
+
}[]): string;
|
|
25
|
+
//# sourceMappingURL=generic-execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-execution.d.ts","sourceRoot":"","sources":["../../src/threads/generic-execution.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,4BAA4B,CAAC;AAEpC;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,UAAU,CAAC;AAEvD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEvF;AAED,wEAAwE;AACxE,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAIpE;AAMD,wBAAgB,sBAAsB,CAAC,QAAQ,UAAQ,GAAG,yBAAyB,CAYlF;AAED,uFAAuF;AACvF,eAAO,MAAM,qBAAqB,EAAE,SAAS,WAAW,EAA2B,CAAC;AAEpF,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,MAAM,CAW1H;AAED,+EAA+E;AAC/E,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CA2BrI"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import { executionControlTool } from "../tools/execution-control.js";
|
|
3
|
+
import { WorkerRuntimePolicySchema, } from "./worker-runtime-policy.js";
|
|
4
|
+
/**
|
|
5
|
+
* The generic internal-execution adapter (#2805 1c): local, restricted work
|
|
6
|
+
* submitted through the host's execution protocol, without Fin-App
|
|
7
|
+
* credentials or Lab identity. Its capability tier is the restricted local
|
|
8
|
+
* file/bash workspace; the Foreman tier that inherits the delegating thread's
|
|
9
|
+
* permissions is a later stage.
|
|
10
|
+
*/
|
|
11
|
+
export const GENERIC_EXECUTION_THREAD_PREFIX = "exec-";
|
|
12
|
+
export function isGenericExecutionThreadId(threadId) {
|
|
13
|
+
return typeof threadId === "string" && threadId.startsWith(GENERIC_EXECUTION_THREAD_PREFIX);
|
|
14
|
+
}
|
|
15
|
+
/** One worker thread per execution; the id is stable across resumes. */
|
|
16
|
+
export function genericExecutionThreadId(executionId) {
|
|
17
|
+
const id = `${GENERIC_EXECUTION_THREAD_PREFIX}${executionId.replace(/^exec-/, "")}`.toLowerCase();
|
|
18
|
+
if (!/^[a-z0-9][a-z0-9-]*$/.test(id) || id.length > 128)
|
|
19
|
+
throw new Error("Execution id is not a valid thread id");
|
|
20
|
+
return id;
|
|
21
|
+
}
|
|
22
|
+
const GENERIC_EXECUTION_TOOLS = [
|
|
23
|
+
"read", "write", "edit", "grep", "find", "ls", "bash", "todo_write", "execution_control",
|
|
24
|
+
];
|
|
25
|
+
export function genericExecutionPolicy(readOnly = false) {
|
|
26
|
+
const policy = WorkerRuntimePolicySchema.parse({
|
|
27
|
+
prompt: { trustedOverlay: "" },
|
|
28
|
+
skills: { allowed: [] },
|
|
29
|
+
mcp: { staticServers: {} },
|
|
30
|
+
tools: { allowed: readOnly ? GENERIC_EXECUTION_TOOLS.filter((tool) => !["write", "edit", "bash", "todo_write"].includes(tool)) : GENERIC_EXECUTION_TOOLS },
|
|
31
|
+
channels: { outbound: [] },
|
|
32
|
+
});
|
|
33
|
+
return {
|
|
34
|
+
policy,
|
|
35
|
+
digest: crypto.createHash("sha256").update(JSON.stringify(policy)).digest("hex"),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/** The generic adapter's only tool registration; the host applies all restrictions. */
|
|
39
|
+
export const GENERIC_ADAPTER_TOOLS = [executionControlTool];
|
|
40
|
+
export function buildGenericExecutionSystemPrompt(config, workspaceCwd, readOnly = false) {
|
|
41
|
+
const name = config.agentName || "VisionClaw";
|
|
42
|
+
return `You are ${name}, running one internal background task for a trusted caller inside VisionClaw.
|
|
43
|
+
|
|
44
|
+
- This is not a conversation with the user. You cannot message anyone; your caller receives only what you report.
|
|
45
|
+
- Work only inside ${workspaceCwd}. ${readOnly ? "Use read-only file tools; do not write files or run shell commands." : "Use the file and shell tools you have, and TodoWrite for multi-step work."} Do not read or change files elsewhere.
|
|
46
|
+
- When the task is done, call execution_control with action=result, status=succeeded, a concise summary, and absolute paths of any produced files in artifactRefs.
|
|
47
|
+
- If the task cannot be completed, call execution_control with action=result, status=failed, and an error describing what blocked it.
|
|
48
|
+
- If you cannot continue without the caller's decision, call execution_control with action=question, then end your turn. The task resumes with the answer.
|
|
49
|
+
- Use action=progress for occasional short progress notes on long tasks.
|
|
50
|
+
- Report a result exactly once, then end your turn with no further tool calls.`;
|
|
51
|
+
}
|
|
52
|
+
/** Initial dispatch text: the caller's goal plus any carried-over progress. */
|
|
53
|
+
export function buildGenericExecutionMessage(record, unfinishedTools) {
|
|
54
|
+
const { payload } = record;
|
|
55
|
+
const sections = [`## Task\n${payload.goal}`];
|
|
56
|
+
if (payload.priorExecutionId)
|
|
57
|
+
sections.push("This is an explicit retry of the same Task. Retained inputs are its history; apply the current goal and requirements to those inputs, and verify earlier side effects before repeating operations.");
|
|
58
|
+
if (payload.requirements.length > 0)
|
|
59
|
+
sections.push(`## Requirements\n${payload.requirements.map((item) => `- ${item}`).join("\n")}`);
|
|
60
|
+
if (payload.expectedOutput)
|
|
61
|
+
sections.push(`## Expected output\n${payload.expectedOutput}`);
|
|
62
|
+
if (payload.contextSummary)
|
|
63
|
+
sections.push(`## Context\n${payload.contextSummary}`);
|
|
64
|
+
if (payload.inputRefs.length > 0)
|
|
65
|
+
sections.push(`## Inputs\n${payload.inputRefs.map((item) => `- ${item}`).join("\n")}`);
|
|
66
|
+
const checkpoint = payload.checkpoint;
|
|
67
|
+
if (checkpoint && (checkpoint.done.length > 0 || checkpoint.remaining.length > 0
|
|
68
|
+
|| checkpoint.artifactRefs.length > 0 || checkpoint.uncertainOperations.length > 0)) {
|
|
69
|
+
sections.push([
|
|
70
|
+
"## Progress carried over (do not repeat completed work)",
|
|
71
|
+
...checkpoint.done.map((item) => `- done: ${item}`),
|
|
72
|
+
...checkpoint.remaining.map((item) => `- remaining: ${item}`),
|
|
73
|
+
...checkpoint.artifactRefs.map((item) => `- artifact: ${item}`),
|
|
74
|
+
...checkpoint.uncertainOperations.map((item) => `- outcome unknown, verify before repeating: ${item}`),
|
|
75
|
+
].join("\n"));
|
|
76
|
+
}
|
|
77
|
+
if (record.autoResumeCount > 0) {
|
|
78
|
+
sections.push([
|
|
79
|
+
"## Resumed after an interruption",
|
|
80
|
+
"The previous process for this task stopped before reporting a result. Check the current state first (files, git status, produced artifacts) before continuing. Do not blindly repeat write operations.",
|
|
81
|
+
...unfinishedTools.map((tool) => `- ${tool.toolName} (call ${tool.callId}) started but its outcome is unknown; verify it before repeating it.`),
|
|
82
|
+
].join("\n"));
|
|
83
|
+
}
|
|
84
|
+
return sections.join("\n\n");
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=generic-execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-execution.js","sourceRoot":"","sources":["../../src/threads/generic-execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
* │ ├── skills → <profile>/.claude/skills (symlink)
|
|
22
22
|
* │ └── settings.local.json (file, seeded by claude-settings.ts)
|
|
23
23
|
* ├── session.json (created on first use by session manager)
|
|
24
|
-
* ├── session-mailbox.json (created on first use by mailbox)
|
|
25
24
|
* ├── logs/ (created by logger.init)
|
|
26
25
|
* └── queue.db (created by MessageQueue)
|
|
27
26
|
* ```
|
|
28
27
|
*/
|
|
29
28
|
export declare function initThreadDirectory(options?: {
|
|
30
|
-
|
|
29
|
+
/** Use only copied, allowlisted skills and omit shared memory/browser settings. */
|
|
30
|
+
isolatedExecution?: boolean;
|
|
31
31
|
allowedSkills?: readonly string[];
|
|
32
32
|
/** Test override. Production reads the real home. */
|
|
33
33
|
stockProfileHome?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-thread-dir.d.ts","sourceRoot":"","sources":["../../src/threads/init-thread-dir.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH
|
|
1
|
+
{"version":3,"file":"init-thread-dir.d.ts","sourceRoot":"","sources":["../../src/threads/init-thread-dir.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE;IAC3C,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,IAAI,CA+FZ"}
|
|
@@ -27,7 +27,6 @@ import { logger } from "../logger.js";
|
|
|
27
27
|
* │ ├── skills → <profile>/.claude/skills (symlink)
|
|
28
28
|
* │ └── settings.local.json (file, seeded by claude-settings.ts)
|
|
29
29
|
* ├── session.json (created on first use by session manager)
|
|
30
|
-
* ├── session-mailbox.json (created on first use by mailbox)
|
|
31
30
|
* ├── logs/ (created by logger.init)
|
|
32
31
|
* └── queue.db (created by MessageQueue)
|
|
33
32
|
* ```
|
|
@@ -35,6 +34,7 @@ import { logger } from "../logger.js";
|
|
|
35
34
|
export function initThreadDirectory(options = {}) {
|
|
36
35
|
const threadDir = getConfigDir();
|
|
37
36
|
const sharedDir = getSharedProfileDir();
|
|
37
|
+
const isolated = options.isolatedExecution === true;
|
|
38
38
|
// Ensure the thread dir exists.
|
|
39
39
|
fs.mkdirSync(threadDir, { recursive: true });
|
|
40
40
|
// Ensure .claude/ exists inside thread dir.
|
|
@@ -43,8 +43,8 @@ export function initThreadDirectory(options = {}) {
|
|
|
43
43
|
// Symlink skills → shared profile skills dir.
|
|
44
44
|
const skillsLink = path.join(claudeDir, "skills");
|
|
45
45
|
const skillsTarget = getSkillsDir();
|
|
46
|
-
if (
|
|
47
|
-
//
|
|
46
|
+
if (isolated) {
|
|
47
|
+
// Internal workers never inherit the mutable shared skill tree by symlink.
|
|
48
48
|
if (fs.existsSync(skillsLink)) {
|
|
49
49
|
if (fs.lstatSync(skillsLink).isSymbolicLink())
|
|
50
50
|
fs.unlinkSync(skillsLink);
|
|
@@ -60,7 +60,7 @@ export function initThreadDirectory(options = {}) {
|
|
|
60
60
|
];
|
|
61
61
|
const source = candidates.find((candidate) => fs.existsSync(path.join(candidate, "SKILL.md")));
|
|
62
62
|
if (!source)
|
|
63
|
-
throw new Error(`Allowed
|
|
63
|
+
throw new Error(`Allowed worker skill is unavailable: ${skill}`);
|
|
64
64
|
fs.cpSync(source, path.join(skillsLink, skill), { recursive: true, force: true });
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -95,14 +95,14 @@ export function initThreadDirectory(options = {}) {
|
|
|
95
95
|
// Seed settings.local.json with autoMemoryDirectory pointing to shared
|
|
96
96
|
// profile's claude-auto-memory dir. This creates/updates
|
|
97
97
|
// <thread-dir>/.claude/settings.local.json.
|
|
98
|
-
if (!
|
|
98
|
+
if (!isolated)
|
|
99
99
|
seedClaudeAutoMemorySetting();
|
|
100
100
|
// Fingerprint profile only exists after a fingerprint launch, so link it
|
|
101
101
|
// when the shared dir is already there. The stock profile must be linked
|
|
102
102
|
// even on a fresh host: the launcher passes the path as --user-data-dir
|
|
103
103
|
// without mkdir, and a worker's own path is inside ~/.visionclaw, which
|
|
104
104
|
// snap Chromium cannot create. Make the shared target first, then link.
|
|
105
|
-
if (!
|
|
105
|
+
if (!isolated) {
|
|
106
106
|
const stockTarget = getSharedPlaywrightProfileDir(options.stockProfileHome);
|
|
107
107
|
const stockLink = path.join(threadDir, "playwright-mcp");
|
|
108
108
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-thread-dir.js","sourceRoot":"","sources":["../../src/threads/init-thread-dir.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACpH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC
|
|
1
|
+
{"version":3,"file":"init-thread-dir.js","sourceRoot":"","sources":["../../src/threads/init-thread-dir.ts"],"names":[],"mappings":"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"}
|