visionclaw 0.1.219-beta.0 → 0.1.219-dev.codex-issue-2805-worker-runtime.2
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 +4 -18
- package/dist/agent/interrupt-handler.d.ts.map +1 -1
- package/dist/agent/interrupt-handler.js +52 -283
- 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 +9 -3
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +288 -157
- 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/reply-watchdog.d.ts +5 -3
- package/dist/agent/reply-watchdog.d.ts.map +1 -1
- package/dist/agent/reply-watchdog.js +6 -4
- package/dist/agent/reply-watchdog.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,257 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { writeJsonAtomically } from "../utils/atomic-json.js";
|
|
5
|
+
/**
|
|
6
|
+
* Task-level budget for one internal execution (#2805 step 1b).
|
|
7
|
+
*
|
|
8
|
+
* The accumulated usage is authoritative: it is saved after every counted
|
|
9
|
+
* event and restored when the same execution resumes, so a new query, a
|
|
10
|
+
* session rebuild or a worker restart never resets it. SDK limits remain only
|
|
11
|
+
* as an extra guard.
|
|
12
|
+
*
|
|
13
|
+
* Counting boundaries are mapped per engine (Pi `turn_start`, Claude
|
|
14
|
+
* `message_start`): one model attempt is counted once, however many stream
|
|
15
|
+
* chunks it produces, and failed attempts count too. Tool calls are counted
|
|
16
|
+
* when they reach the execution boundary, each call in a batch separately,
|
|
17
|
+
* failed calls included. Once the budget is exhausted no further tool may
|
|
18
|
+
* start; the meter latches and asks its host to stop.
|
|
19
|
+
*
|
|
20
|
+
* For a host-scheduled execution the host keeps the authoritative copy: the
|
|
21
|
+
* worker reports every change over IPC and restarts from the host's copy, so
|
|
22
|
+
* deleting or editing the local file cannot hand the task a fresh budget.
|
|
23
|
+
*/
|
|
24
|
+
export const EXECUTION_BUDGET_FILE = "execution-budget.json";
|
|
25
|
+
const UsageSchema = z.object({
|
|
26
|
+
executionId: z.string().min(1),
|
|
27
|
+
/** First admission, ISO-8601. Execution time accumulates from here. */
|
|
28
|
+
startedAt: z.string(),
|
|
29
|
+
modelAttempts: z.number().int().nonnegative(),
|
|
30
|
+
failedModelAttempts: z.number().int().nonnegative(),
|
|
31
|
+
toolCalls: z.number().int().nonnegative(),
|
|
32
|
+
failedToolCalls: z.number().int().nonnegative(),
|
|
33
|
+
/** Execution time banked by previous worker processes. */
|
|
34
|
+
elapsedMs: z.number().int().nonnegative(),
|
|
35
|
+
inputTokens: z.number().int().nonnegative(),
|
|
36
|
+
outputTokens: z.number().int().nonnegative(),
|
|
37
|
+
stopReason: z.string().nullable(),
|
|
38
|
+
}).strict();
|
|
39
|
+
export class ExecutionBudgetExhaustedError extends Error {
|
|
40
|
+
constructor(message) {
|
|
41
|
+
super(message);
|
|
42
|
+
this.name = "ExecutionBudgetExhaustedError";
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export class ExecutionBudgetMeter {
|
|
46
|
+
limits;
|
|
47
|
+
filePath;
|
|
48
|
+
now;
|
|
49
|
+
onSave;
|
|
50
|
+
usage;
|
|
51
|
+
/** Wall-clock start of this process's share of the execution time. */
|
|
52
|
+
processStartMs;
|
|
53
|
+
stopListeners = new Set();
|
|
54
|
+
deadline = null;
|
|
55
|
+
constructor(limits, filePath, usage, now, onSave) {
|
|
56
|
+
this.limits = limits;
|
|
57
|
+
this.filePath = filePath;
|
|
58
|
+
this.now = now;
|
|
59
|
+
this.onSave = onSave;
|
|
60
|
+
this.usage = usage;
|
|
61
|
+
this.processStartMs = now();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Restore this execution's accumulated usage, or start it fresh. With a
|
|
65
|
+
* host copy (`options.hostUsage`), that copy is authoritative and the local
|
|
66
|
+
* file can only raise it. Usage recorded for a different execution id is
|
|
67
|
+
* never carried over. A fresh handoff starts with `options.toolCalls`, the
|
|
68
|
+
* calls General already spent on this task, so delegation does not refill it.
|
|
69
|
+
*/
|
|
70
|
+
static open(dir, executionId, limits, now = Date.now, options = {}) {
|
|
71
|
+
const filePath = path.join(dir, EXECUTION_BUDGET_FILE);
|
|
72
|
+
const hostUsage = options.hostUsage ? readHostUsage(options.hostUsage) : null;
|
|
73
|
+
let usage = null;
|
|
74
|
+
if (fs.existsSync(filePath)) {
|
|
75
|
+
let parsed = null;
|
|
76
|
+
try {
|
|
77
|
+
parsed = UsageSchema.safeParse(JSON.parse(fs.readFileSync(filePath, "utf8")));
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
parsed = null;
|
|
81
|
+
}
|
|
82
|
+
// A corrupt record must not hand a resumed execution a fresh budget,
|
|
83
|
+
// unless the host still holds the real one.
|
|
84
|
+
if (!parsed?.success && !hostUsage)
|
|
85
|
+
throw new Error("Execution budget record is unreadable; refusing to reset it");
|
|
86
|
+
if (parsed?.success && parsed.data.executionId === executionId)
|
|
87
|
+
usage = parsed.data;
|
|
88
|
+
}
|
|
89
|
+
const base = usage ?? {
|
|
90
|
+
executionId,
|
|
91
|
+
startedAt: new Date(now()).toISOString(),
|
|
92
|
+
modelAttempts: 0,
|
|
93
|
+
failedModelAttempts: 0,
|
|
94
|
+
toolCalls: Math.max(0, Math.trunc(options.toolCalls ?? 0)),
|
|
95
|
+
failedToolCalls: 0,
|
|
96
|
+
elapsedMs: 0,
|
|
97
|
+
inputTokens: 0,
|
|
98
|
+
outputTokens: 0,
|
|
99
|
+
stopReason: null,
|
|
100
|
+
};
|
|
101
|
+
const meter = new ExecutionBudgetMeter(limits, filePath, hostUsage ? mergeUsage(base, hostUsage) : base, now, options.onSave ?? null);
|
|
102
|
+
meter.save();
|
|
103
|
+
return meter;
|
|
104
|
+
}
|
|
105
|
+
get stopReason() {
|
|
106
|
+
return this.usage.stopReason;
|
|
107
|
+
}
|
|
108
|
+
/** Execution time including earlier processes; stops advancing once stopped. */
|
|
109
|
+
elapsedMs() {
|
|
110
|
+
return this.usage.elapsedMs + (this.now() - this.processStartMs);
|
|
111
|
+
}
|
|
112
|
+
report() {
|
|
113
|
+
return { ...this.usage, elapsedMs: this.elapsedMs(), costUsd: null };
|
|
114
|
+
}
|
|
115
|
+
/** Called with the reason once, when the budget is exhausted. */
|
|
116
|
+
onStop(listener) {
|
|
117
|
+
this.stopListeners.add(listener);
|
|
118
|
+
return () => this.stopListeners.delete(listener);
|
|
119
|
+
}
|
|
120
|
+
/** Arm the execution-time deadline. Returns a disarm function. */
|
|
121
|
+
armDeadline() {
|
|
122
|
+
this.disarmDeadline();
|
|
123
|
+
const remaining = this.limits.maxDurationMs - this.elapsedMs();
|
|
124
|
+
if (remaining <= 0) {
|
|
125
|
+
this.exhaust(`Execution time budget exhausted (${this.limits.maxDurationMs} ms)`);
|
|
126
|
+
return () => undefined;
|
|
127
|
+
}
|
|
128
|
+
this.deadline = setTimeout(() => {
|
|
129
|
+
this.exhaust(`Execution time budget exhausted (${this.limits.maxDurationMs} ms)`);
|
|
130
|
+
}, remaining);
|
|
131
|
+
this.deadline.unref();
|
|
132
|
+
return () => this.disarmDeadline();
|
|
133
|
+
}
|
|
134
|
+
/** Throw before starting new work once the budget is exhausted. */
|
|
135
|
+
assertRunning() {
|
|
136
|
+
if (!this.usage.stopReason && this.elapsedMs() >= this.limits.maxDurationMs) {
|
|
137
|
+
this.exhaust(`Execution time budget exhausted (${this.limits.maxDurationMs} ms)`);
|
|
138
|
+
}
|
|
139
|
+
if (this.usage.stopReason)
|
|
140
|
+
throw new ExecutionBudgetExhaustedError(this.usage.stopReason);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Count one model attempt at the engine's attempt boundary. An attempt that
|
|
144
|
+
* was observed is counted even past the limit (Claude reports it only once
|
|
145
|
+
* the request is out); the meter then latches. Engines call
|
|
146
|
+
* {@link stopBeforeNextAttempt} first, so the limit is not overrun on the
|
|
147
|
+
* normal tool-use path.
|
|
148
|
+
*/
|
|
149
|
+
beginModelAttempt() {
|
|
150
|
+
this.assertRunning();
|
|
151
|
+
this.usage.modelAttempts += 1;
|
|
152
|
+
if (this.usage.modelAttempts > this.limits.maxModelAttempts) {
|
|
153
|
+
this.exhaust(`Execution model-attempt budget exhausted (${this.limits.maxModelAttempts} attempts)`);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
this.save();
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Called where an engine is about to send its next model request (Claude:
|
|
160
|
+
* after a tool batch). Returns the stop reason when no attempt is left, so
|
|
161
|
+
* the engine can stop before the request is sent instead of after.
|
|
162
|
+
*/
|
|
163
|
+
stopBeforeNextAttempt() {
|
|
164
|
+
if (!this.usage.stopReason && this.usage.modelAttempts >= this.limits.maxModelAttempts) {
|
|
165
|
+
this.exhaust(`Execution model-attempt budget exhausted (${this.limits.maxModelAttempts} attempts)`);
|
|
166
|
+
}
|
|
167
|
+
return this.usage.stopReason;
|
|
168
|
+
}
|
|
169
|
+
/** A counted attempt ended in an error; it still consumed budget. */
|
|
170
|
+
recordFailedModelAttempt() {
|
|
171
|
+
this.usage.failedModelAttempts += 1;
|
|
172
|
+
this.save();
|
|
173
|
+
}
|
|
174
|
+
/** Token usage as reported by the engine. Observational, not a hard budget. */
|
|
175
|
+
recordTokens(inputTokens, outputTokens) {
|
|
176
|
+
if (inputTokens <= 0 && outputTokens <= 0)
|
|
177
|
+
return;
|
|
178
|
+
this.usage.inputTokens += Math.max(0, inputTokens);
|
|
179
|
+
this.usage.outputTokens += Math.max(0, outputTokens);
|
|
180
|
+
this.save();
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Admit one tool call at the execution boundary. Returns a refusal reason
|
|
184
|
+
* when the call must not run; the refused call is still counted.
|
|
185
|
+
*/
|
|
186
|
+
beforeToolCall() {
|
|
187
|
+
try {
|
|
188
|
+
this.assertRunning();
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
return error instanceof Error ? error.message : String(error);
|
|
192
|
+
}
|
|
193
|
+
this.usage.toolCalls += 1;
|
|
194
|
+
if (this.usage.toolCalls > this.limits.maxToolCalls) {
|
|
195
|
+
this.exhaust(`Execution tool-call budget exhausted (${this.limits.maxToolCalls} calls)`);
|
|
196
|
+
return this.usage.stopReason;
|
|
197
|
+
}
|
|
198
|
+
this.save();
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
recordToolFailure() {
|
|
202
|
+
this.usage.failedToolCalls += 1;
|
|
203
|
+
this.save();
|
|
204
|
+
}
|
|
205
|
+
/** Bank this process's share of the execution time before it exits. */
|
|
206
|
+
close() {
|
|
207
|
+
this.disarmDeadline();
|
|
208
|
+
this.usage.elapsedMs = this.elapsedMs();
|
|
209
|
+
this.processStartMs = this.now();
|
|
210
|
+
this.save();
|
|
211
|
+
}
|
|
212
|
+
exhaust(reason) {
|
|
213
|
+
if (this.usage.stopReason)
|
|
214
|
+
return;
|
|
215
|
+
this.usage.stopReason = reason;
|
|
216
|
+
this.disarmDeadline();
|
|
217
|
+
this.save();
|
|
218
|
+
for (const listener of this.stopListeners)
|
|
219
|
+
listener(reason);
|
|
220
|
+
}
|
|
221
|
+
disarmDeadline() {
|
|
222
|
+
if (this.deadline)
|
|
223
|
+
clearTimeout(this.deadline);
|
|
224
|
+
this.deadline = null;
|
|
225
|
+
}
|
|
226
|
+
save() {
|
|
227
|
+
const snapshot = { ...this.usage, elapsedMs: this.elapsedMs() };
|
|
228
|
+
writeJsonAtomically(this.filePath, snapshot);
|
|
229
|
+
this.onSave?.(snapshot);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
const COUNTERS = [
|
|
233
|
+
"modelAttempts", "failedModelAttempts", "toolCalls", "failedToolCalls", "elapsedMs", "inputTokens", "outputTokens",
|
|
234
|
+
];
|
|
235
|
+
/** The host's copy may be partial (e.g. only a stop reason set by its deadline). */
|
|
236
|
+
function readHostUsage(raw) {
|
|
237
|
+
const usage = {};
|
|
238
|
+
for (const key of COUNTERS) {
|
|
239
|
+
const value = raw[key];
|
|
240
|
+
if (typeof value === "number" && Number.isInteger(value) && value >= 0)
|
|
241
|
+
usage[key] = value;
|
|
242
|
+
}
|
|
243
|
+
if (typeof raw.startedAt === "string")
|
|
244
|
+
usage.startedAt = raw.startedAt;
|
|
245
|
+
if (typeof raw.stopReason === "string")
|
|
246
|
+
usage.stopReason = raw.stopReason;
|
|
247
|
+
return usage;
|
|
248
|
+
}
|
|
249
|
+
/** Counters only grow; a stop reason, once set, stays. */
|
|
250
|
+
function mergeUsage(local, host) {
|
|
251
|
+
const merged = { ...local, startedAt: host.startedAt ?? local.startedAt };
|
|
252
|
+
for (const key of COUNTERS)
|
|
253
|
+
merged[key] = Math.max(local[key], host[key] ?? 0);
|
|
254
|
+
merged.stopReason = host.stopReason ?? local.stopReason;
|
|
255
|
+
return merged;
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=execution-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-budget.js","sourceRoot":"","sources":["../../src/threads/execution-budget.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ExecutionCaller, ExecutionStore } from "./execution-store.js";
|
|
2
|
+
import type { IpcExecutionReport } from "./ipc.js";
|
|
3
|
+
import type { ExecutionScheduler } from "./execution-scheduler.js";
|
|
4
|
+
/**
|
|
5
|
+
* Host-side handling of a worker's execution reports (#2805 1c).
|
|
6
|
+
*
|
|
7
|
+
* Every report is checked against the executor generation the host started
|
|
8
|
+
* for that worker; the payload's own claims of identity are not trusted. A
|
|
9
|
+
* report from a replaced or unknown worker is dropped.
|
|
10
|
+
*/
|
|
11
|
+
export declare function applyExecutionReport(store: ExecutionStore, scheduler: ExecutionScheduler, expected: {
|
|
12
|
+
executionId: string;
|
|
13
|
+
generation: number;
|
|
14
|
+
}, report: IpcExecutionReport): void;
|
|
15
|
+
/** Callers recognized by the generic execution entry; others have their own adapters. */
|
|
16
|
+
export declare function isGenericExecutionCaller(caller: ExecutionCaller): boolean;
|
|
17
|
+
//# sourceMappingURL=execution-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-host.d.ts","sourceRoot":"","sources":["../../src/threads/execution-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGnE;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EACrD,MAAM,EAAE,kBAAkB,GACzB,IAAI,CAiDN;AAED,yFAAyF;AACzF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAEzE"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { logger } from "../logger.js";
|
|
2
|
+
/**
|
|
3
|
+
* Host-side handling of a worker's execution reports (#2805 1c).
|
|
4
|
+
*
|
|
5
|
+
* Every report is checked against the executor generation the host started
|
|
6
|
+
* for that worker; the payload's own claims of identity are not trusted. A
|
|
7
|
+
* report from a replaced or unknown worker is dropped.
|
|
8
|
+
*/
|
|
9
|
+
export function applyExecutionReport(store, scheduler, expected, report) {
|
|
10
|
+
if (report.executionId !== expected.executionId) {
|
|
11
|
+
logger.warn(`[execution] Dropping a report for ${report.executionId} from the executor of ${expected.executionId}`);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const { executionId, generation } = expected;
|
|
15
|
+
switch (report.type) {
|
|
16
|
+
case "execution-result": {
|
|
17
|
+
const outcome = store.completeExecution(executionId, generation, {
|
|
18
|
+
status: report.status,
|
|
19
|
+
processedInputSeq: report.processedInputSeq,
|
|
20
|
+
...(report.summary ? { summary: report.summary } : {}),
|
|
21
|
+
...(report.data ? { data: report.data } : {}),
|
|
22
|
+
...(report.artifactRefs ? { artifactRefs: report.artifactRefs } : {}),
|
|
23
|
+
...(report.error ? { error: report.error } : {}),
|
|
24
|
+
...(report.usage ? { usage: report.usage } : {}),
|
|
25
|
+
});
|
|
26
|
+
if ("rejected" in outcome) {
|
|
27
|
+
logger.warn(`[execution] Result for ${executionId} rejected: ${outcome.rejected}`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
// The result is recorded; it is published only after the executor stops.
|
|
31
|
+
scheduler.requestStop(executionId, "result_reported");
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
case "execution-progress":
|
|
35
|
+
store.recordProgress(executionId, generation, { summary: report.summary });
|
|
36
|
+
return;
|
|
37
|
+
case "execution-question": {
|
|
38
|
+
const questionId = store.askQuestion(executionId, generation, {
|
|
39
|
+
text: report.text, ...(report.choices ? { choices: report.choices } : {}),
|
|
40
|
+
...(report.delivery === "direct" ? { delivery: "direct" } : {}),
|
|
41
|
+
});
|
|
42
|
+
// The question is durable; release the executor while it waits.
|
|
43
|
+
if (questionId)
|
|
44
|
+
scheduler.requestStop(executionId, "waiting_input");
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
case "execution-input-applied":
|
|
48
|
+
store.markInputApplied(executionId, generation, report.inputSeq);
|
|
49
|
+
return;
|
|
50
|
+
case "execution-tool":
|
|
51
|
+
if (report.phase === "started")
|
|
52
|
+
store.toolCallStarted(executionId, report.callId, report.toolName);
|
|
53
|
+
else
|
|
54
|
+
store.toolCallFinished(executionId, report.callId);
|
|
55
|
+
return;
|
|
56
|
+
case "execution-usage":
|
|
57
|
+
// The host's copy is authoritative; counters only grow.
|
|
58
|
+
store.recordUsage(executionId, generation, report.usage);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/** Callers recognized by the generic execution entry; others have their own adapters. */
|
|
63
|
+
export function isGenericExecutionCaller(caller) {
|
|
64
|
+
return caller.kind === "tui" || caller.kind === "general";
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=execution-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-host.js","sourceRoot":"","sources":["../../src/threads/execution-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import type { ExecutionCaller, ExecutionEvent, ExecutionRecord, ExecutionStore } from "./execution-store.js";
|
|
2
|
+
import { type ExecutorGroupStatus } from "./process-group.js";
|
|
3
|
+
/** Same cap as the supervisor's crash budget for thread workers. */
|
|
4
|
+
export declare const MAX_AUTO_RESUMES = 3;
|
|
5
|
+
/**
|
|
6
|
+
* Whether an interrupted running execution is resumed under the same
|
|
7
|
+
* executionId. Lab creates a new run instead; Nightly continues from its own
|
|
8
|
+
* watermark. Owner-delegated work (General/TUI) resumes.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resumesAfterInterruption(caller: ExecutionCaller): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* How an executor ended, as observed by the host.
|
|
13
|
+
* - `exited`: the worker exited by itself with code 0.
|
|
14
|
+
* - `crashed`: any other exit the host did not ask for.
|
|
15
|
+
* - `host_stop`: the host asked it to stop (cancel, result, question, deadline).
|
|
16
|
+
* - `host_shutdown`: the host itself is shutting down; not the task's fault.
|
|
17
|
+
* - `host_restart`: found after a host restart, executor gone or killed.
|
|
18
|
+
* - `refused`: the worker refused to start (bad snapshot or record); a retry
|
|
19
|
+
* would fail the same way.
|
|
20
|
+
*/
|
|
21
|
+
export type ExecutorExit = "exited" | "crashed" | "host_stop" | "host_shutdown" | "host_restart" | "refused";
|
|
22
|
+
export interface ExecutionDeliveryHandler {
|
|
23
|
+
/**
|
|
24
|
+
* Deliver an event to its caller. Resolve true only once the event is in
|
|
25
|
+
* the caller's own durable record; false (or a throw) retries later.
|
|
26
|
+
*/
|
|
27
|
+
deliverExecutionEvent(event: ExecutionEvent, caller: ExecutionCaller): Promise<boolean>;
|
|
28
|
+
}
|
|
29
|
+
export interface ExecutionHost {
|
|
30
|
+
/**
|
|
31
|
+
* Free worker slots for this record, shared with thread workers. While
|
|
32
|
+
* maintenance holds admission only its own registered execution gets one.
|
|
33
|
+
*/
|
|
34
|
+
availableSlots(record: ExecutionRecord): number;
|
|
35
|
+
/** Fork a worker for this execution and return its process identity. */
|
|
36
|
+
spawn(record: ExecutionRecord): {
|
|
37
|
+
pid: number;
|
|
38
|
+
processStart: string;
|
|
39
|
+
};
|
|
40
|
+
/** Ask the execution's worker to stop; the host force-kills after its grace period. */
|
|
41
|
+
stop(executionId: string, reason: string): void;
|
|
42
|
+
/** The execution's frozen time budget, read from its verified snapshot; null if unknown. */
|
|
43
|
+
timeBudgetMs?(record: ExecutionRecord): number | null;
|
|
44
|
+
}
|
|
45
|
+
export interface ExecutionSchedulerOptions {
|
|
46
|
+
store: ExecutionStore;
|
|
47
|
+
host: ExecutionHost;
|
|
48
|
+
delivery: ExecutionDeliveryHandler;
|
|
49
|
+
/** Test seam: is any member of a recorded executor's process group still alive? */
|
|
50
|
+
groupStatus?: (pgid: number, processStart: string) => ExecutorGroupStatus;
|
|
51
|
+
/** Test seam: force-kill a previous host's executor group and wait for it to empty. */
|
|
52
|
+
killGroupAndWait?: (pgid: number, processStart: string, timeoutMs: number) => Promise<boolean>;
|
|
53
|
+
/** Stop groups the executor's shells recorded outside its own group. */
|
|
54
|
+
stopRegisteredGroups?: (executionId: string, timeoutMs: number) => Promise<boolean>;
|
|
55
|
+
/** Test seam: backoff schedule for proving a previous executor stopped. */
|
|
56
|
+
staleRecheckDelaysMs?: readonly number[];
|
|
57
|
+
/** Test seam: grace added to an execution's time budget before the host stops it. */
|
|
58
|
+
hostDeadlineGraceMs?: number;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Host-side scheduler for internal executions (#2805 steps 1c/1d).
|
|
62
|
+
*
|
|
63
|
+
* It owns no processes itself: the supervisor forks and stops workers. The
|
|
64
|
+
* scheduler decides what to admit, records the writer generation, and
|
|
65
|
+
* resolves every worker exit through `confirmStopped`, so a terminal state is
|
|
66
|
+
* published, and the next writer admitted, only after the previous executor
|
|
67
|
+
* is known to be stopped.
|
|
68
|
+
*/
|
|
69
|
+
export declare class ExecutionScheduler {
|
|
70
|
+
private lastAdmittedGroup;
|
|
71
|
+
private readonly store;
|
|
72
|
+
private readonly host;
|
|
73
|
+
private readonly delivery;
|
|
74
|
+
private readonly groupStatus;
|
|
75
|
+
private readonly killGroupAndWait;
|
|
76
|
+
private readonly stopRegisteredGroups;
|
|
77
|
+
private readonly staleRecheckDelaysMs;
|
|
78
|
+
private readonly hostDeadlineGraceMs;
|
|
79
|
+
/** executionId → generation of the executor this host started. */
|
|
80
|
+
private readonly running;
|
|
81
|
+
/** Executions whose stop this host requested; their exit is not a crash. */
|
|
82
|
+
private readonly stopRequested;
|
|
83
|
+
/** Host-side deadlines: a hung worker cannot outlive its time budget. */
|
|
84
|
+
private readonly deadlines;
|
|
85
|
+
/** Executions whose previous executor is not yet proven stopped → attempts so far. */
|
|
86
|
+
private readonly unverified;
|
|
87
|
+
private readonly recheckTimers;
|
|
88
|
+
private admissionTimer;
|
|
89
|
+
private outboxTimer;
|
|
90
|
+
private delivering;
|
|
91
|
+
private started;
|
|
92
|
+
private stopped;
|
|
93
|
+
constructor(options: ExecutionSchedulerOptions);
|
|
94
|
+
/** Recover executions left by a previous host, then start admission and delivery. */
|
|
95
|
+
start(): void;
|
|
96
|
+
/**
|
|
97
|
+
* Stop scheduling. Running executors are stopped by the host's shutdown;
|
|
98
|
+
* their exits still resolve here (`hostStopping`), so an interrupted
|
|
99
|
+
* execution is queued for the next host to resume. An executor whose group
|
|
100
|
+
* cannot be emptied stays recorded, and the next host proves it stopped
|
|
101
|
+
* first.
|
|
102
|
+
*/
|
|
103
|
+
stop(): void;
|
|
104
|
+
private isStopped;
|
|
105
|
+
get activeCount(): number;
|
|
106
|
+
isRunning(executionId: string): boolean;
|
|
107
|
+
/**
|
|
108
|
+
* Work that maintenance must not start alongside: a running executor of
|
|
109
|
+
* any caller, an executor whose stop is not yet proven, or queued work of
|
|
110
|
+
* a caller other than maintenance itself.
|
|
111
|
+
*/
|
|
112
|
+
hasOutstandingWork(): boolean;
|
|
113
|
+
/** Whether this execution's previous executor is still unproven stopped. */
|
|
114
|
+
isUnverified(executionId: string): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Keep an execution blocked until its recorded executor group is proven
|
|
117
|
+
* gone, retrying with backoff and telling the caller. Used for survivors of
|
|
118
|
+
* a stop and for executors left by a previous host.
|
|
119
|
+
*/
|
|
120
|
+
blockUntilStopped(executionId: string): void;
|
|
121
|
+
/** Called after a submit, an answer, or a freed slot. Admission is coalesced. */
|
|
122
|
+
requestAdmission(): void;
|
|
123
|
+
/** Stop the executor if this host runs one; its exit is then expected, not a crash. */
|
|
124
|
+
requestStop(executionId: string, reason: string): void;
|
|
125
|
+
/**
|
|
126
|
+
* Called with the exit of every execution worker the host forked, after
|
|
127
|
+
* the host tried to empty its process group. `hostStopping` marks an exit
|
|
128
|
+
* caused by this host shutting down: an interrupted execution is queued
|
|
129
|
+
* for the next host to resume. `groupStopped: false` means members of the
|
|
130
|
+
* group survived the kill; the execution stays blocked until they are
|
|
131
|
+
* proven gone (by the next host, when this one is shutting down).
|
|
132
|
+
*/
|
|
133
|
+
handleWorkerExit(executionId: string, code: number | null, signal: NodeJS.Signals | null, options?: {
|
|
134
|
+
hostStopping?: boolean;
|
|
135
|
+
groupStopped?: boolean;
|
|
136
|
+
}): void;
|
|
137
|
+
/**
|
|
138
|
+
* The executor for `generation` is stopped. Publish its reported result,
|
|
139
|
+
* keep a waiting question open, confirm a cancel, or decide between an
|
|
140
|
+
* automatic resume and a failure for an interrupted run.
|
|
141
|
+
*/
|
|
142
|
+
private resolveStoppedExecutor;
|
|
143
|
+
private admitQueued;
|
|
144
|
+
private groupOf;
|
|
145
|
+
/** Round-robin across root Tasks, preserving FIFO order within each Task. */
|
|
146
|
+
private fairQueued;
|
|
147
|
+
/**
|
|
148
|
+
* The worker enforces its own time budget; this is the host's backstop for
|
|
149
|
+
* a worker that hangs and never reaches that check.
|
|
150
|
+
*/
|
|
151
|
+
private armHostDeadline;
|
|
152
|
+
/**
|
|
153
|
+
* A previous host may have died with executors still recorded. Prove each
|
|
154
|
+
* one stopped (or stop it) before anything else may write for it; while
|
|
155
|
+
* that cannot be proven, keep the execution blocked, tell the caller, and
|
|
156
|
+
* keep trying with backoff.
|
|
157
|
+
*/
|
|
158
|
+
private recoverAfterRestart;
|
|
159
|
+
private proveStaleExecutorStopped;
|
|
160
|
+
private deliverOutbox;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=execution-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-scheduler.d.ts","sourceRoot":"","sources":["../../src/threads/execution-scheduler.ts"],"names":[],"mappings":"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"}
|