visionclaw 0.1.219-dev.codex-issue-2805-worker-runtime.3 → 0.1.219-dev.codex-fix-2941-activity-foreground.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 +16 -0
- package/dist/agent/api-proxy.d.ts.map +1 -1
- package/dist/agent/api-proxy.js +8 -9
- package/dist/agent/api-proxy.js.map +1 -1
- package/dist/agent/browser-launcher.d.ts +0 -3
- package/dist/agent/browser-launcher.d.ts.map +1 -1
- package/dist/agent/browser-launcher.js +43 -101
- package/dist/agent/browser-launcher.js.map +1 -1
- package/dist/agent/coding-conventions.d.ts +3 -2
- package/dist/agent/coding-conventions.d.ts.map +1 -1
- package/dist/agent/coding-conventions.js +8 -7
- package/dist/agent/coding-conventions.js.map +1 -1
- package/dist/agent/command-handlers.d.ts.map +1 -1
- package/dist/agent/command-handlers.js +16 -4
- 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 +3 -9
- 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 +7 -0
- package/dist/agent/context-refresh.js.map +1 -1
- package/dist/agent/context.d.ts.map +1 -1
- package/dist/agent/context.js +8 -6
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/engine-fallback.d.ts +35 -0
- package/dist/agent/engine-fallback.d.ts.map +1 -1
- package/dist/agent/engine-fallback.js +3 -4
- package/dist/agent/engine-fallback.js.map +1 -1
- package/dist/agent/engines/browser-tool-policy.d.ts +1 -12
- package/dist/agent/engines/browser-tool-policy.d.ts.map +1 -1
- package/dist/agent/engines/browser-tool-policy.js +2 -17
- package/dist/agent/engines/browser-tool-policy.js.map +1 -1
- package/dist/agent/engines/claude/session.d.ts +0 -1
- package/dist/agent/engines/claude/session.d.ts.map +1 -1
- package/dist/agent/engines/claude/session.js +36 -21
- package/dist/agent/engines/claude/session.js.map +1 -1
- package/dist/agent/engines/pi/tools.d.ts.map +1 -1
- package/dist/agent/engines/pi/tools.js +10 -2
- package/dist/agent/engines/pi/tools.js.map +1 -1
- package/dist/agent/engines/pi-coding/session.d.ts +0 -3
- package/dist/agent/engines/pi-coding/session.d.ts.map +1 -1
- package/dist/agent/engines/pi-coding/session.js +22 -19
- package/dist/agent/engines/pi-coding/session.js.map +1 -1
- package/dist/agent/engines/session-types.d.ts +0 -6
- package/dist/agent/engines/session-types.d.ts.map +1 -1
- package/dist/agent/external-context/runtime.d.ts.map +1 -1
- package/dist/agent/external-context/runtime.js +14 -15
- package/dist/agent/external-context/runtime.js.map +1 -1
- package/dist/agent/fast-responder.d.ts +20 -4
- package/dist/agent/fast-responder.d.ts.map +1 -1
- package/dist/agent/fast-responder.js +39 -9
- package/dist/agent/fast-responder.js.map +1 -1
- package/dist/agent/interrupt-handler.d.ts +18 -4
- package/dist/agent/interrupt-handler.d.ts.map +1 -1
- package/dist/agent/interrupt-handler.js +284 -49
- 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 +0 -3
- 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 +5 -6
- package/dist/agent/lifecycle-trace.js.map +1 -1
- package/dist/agent/loop.d.ts +1 -4
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +129 -105
- 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 +15 -3
- package/dist/agent/memory-protocol.js.map +1 -1
- package/dist/agent/memory-store.d.ts.map +1 -1
- package/dist/agent/memory-store.js +1 -11
- package/dist/agent/memory-store.js.map +1 -1
- package/dist/agent/model-provider.d.ts +0 -2
- package/dist/agent/model-provider.d.ts.map +1 -1
- package/dist/agent/model-provider.js +25 -31
- package/dist/agent/model-provider.js.map +1 -1
- package/dist/agent/product-identity.d.ts +4 -5
- package/dist/agent/product-identity.d.ts.map +1 -1
- package/dist/agent/product-identity.js +6 -7
- package/dist/agent/product-identity.js.map +1 -1
- package/dist/agent/public-activity.d.ts +1 -1
- package/dist/agent/public-activity.d.ts.map +1 -1
- package/dist/agent/public-activity.js.map +1 -1
- package/dist/agent/reply-watchdog.d.ts +3 -5
- package/dist/agent/reply-watchdog.d.ts.map +1 -1
- package/dist/agent/reply-watchdog.js +4 -6
- package/dist/agent/reply-watchdog.js.map +1 -1
- package/dist/agent/session-manager.d.ts +0 -5
- package/dist/agent/session-manager.d.ts.map +1 -1
- package/dist/agent/session-manager.js +0 -7
- package/dist/agent/session-manager.js.map +1 -1
- package/dist/agent/state.d.ts +0 -7
- package/dist/agent/state.d.ts.map +1 -1
- package/dist/agent/state.js +11 -21
- package/dist/agent/state.js.map +1 -1
- package/dist/agent/stream-handler.d.ts.map +1 -1
- package/dist/agent/stream-handler.js +17 -0
- package/dist/agent/stream-handler.js.map +1 -1
- package/dist/agent/system-prompt.d.ts.map +1 -1
- package/dist/agent/system-prompt.js +6 -10
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/agent/transcript/transcript-indexer.d.ts +28 -0
- package/dist/agent/transcript/transcript-indexer.d.ts.map +1 -1
- package/dist/agent/transcript/transcript-indexer.js +57 -58
- package/dist/agent/transcript/transcript-indexer.js.map +1 -1
- package/dist/agent/usage/usage-report-queue.d.ts.map +1 -1
- package/dist/agent/usage/usage-report-queue.js +52 -53
- package/dist/agent/usage/usage-report-queue.js.map +1 -1
- package/dist/agent/wake-cycle-runner.d.ts +8 -7
- package/dist/agent/wake-cycle-runner.d.ts.map +1 -1
- package/dist/agent/wake-cycle-runner.js +66 -105
- 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 +5 -6
- package/dist/calendar/occurrence-ownership.js.map +1 -1
- package/dist/calendar/scheduler.d.ts.map +1 -1
- package/dist/calendar/scheduler.js +3 -4
- package/dist/calendar/scheduler.js.map +1 -1
- package/dist/channels/interface.d.ts +2 -8
- package/dist/channels/interface.d.ts.map +1 -1
- package/dist/channels/interface.js +1 -8
- package/dist/channels/interface.js.map +1 -1
- package/dist/channels/manager.d.ts.map +1 -1
- package/dist/channels/manager.js +0 -2
- package/dist/channels/manager.js.map +1 -1
- package/dist/channels/qq-status.d.ts.map +1 -1
- package/dist/channels/qq-status.js +1 -0
- package/dist/channels/qq-status.js.map +1 -1
- package/dist/channels/queue.d.ts.map +1 -1
- package/dist/channels/queue.js +0 -8
- package/dist/channels/queue.js.map +1 -1
- package/dist/channels/telegram-status.d.ts.map +1 -1
- package/dist/channels/telegram-status.js +2 -0
- package/dist/channels/telegram-status.js.map +1 -1
- package/dist/channels/tui.d.ts +2 -2
- package/dist/channels/tui.d.ts.map +1 -1
- package/dist/channels/tui.js +2 -7
- package/dist/channels/tui.js.map +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +15 -16
- package/dist/config/index.js.map +1 -1
- package/dist/config/types.d.ts +8 -16
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +24 -13
- package/dist/config/types.js.map +1 -1
- package/dist/email/email-route-store.d.ts.map +1 -1
- package/dist/email/email-route-store.js +5 -6
- package/dist/email/email-route-store.js.map +1 -1
- package/dist/i18n/messages.d.ts +0 -12
- package/dist/i18n/messages.d.ts.map +1 -1
- package/dist/i18n/messages.js +9 -21
- package/dist/i18n/messages.js.map +1 -1
- package/dist/logger.d.ts +0 -2
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +1 -19
- package/dist/logger.js.map +1 -1
- package/dist/threads/active-threads-store.d.ts.map +1 -1
- package/dist/threads/active-threads-store.js +27 -8
- package/dist/threads/active-threads-store.js.map +1 -1
- package/dist/threads/execution-host.d.ts.map +1 -1
- package/dist/threads/execution-host.js +0 -1
- package/dist/threads/execution-host.js.map +1 -1
- package/dist/threads/execution-scheduler.d.ts +0 -4
- package/dist/threads/execution-scheduler.d.ts.map +1 -1
- package/dist/threads/execution-scheduler.js +2 -38
- package/dist/threads/execution-scheduler.js.map +1 -1
- package/dist/threads/execution-store.d.ts +5 -20
- package/dist/threads/execution-store.d.ts.map +1 -1
- package/dist/threads/execution-store.js +8 -45
- package/dist/threads/execution-store.js.map +1 -1
- package/dist/threads/foreground-task.d.ts +6 -10
- package/dist/threads/foreground-task.d.ts.map +1 -1
- package/dist/threads/foreground-task.js +26 -34
- package/dist/threads/foreground-task.js.map +1 -1
- package/dist/threads/foreman-client.d.ts.map +1 -1
- package/dist/threads/foreman-client.js +1 -3
- package/dist/threads/foreman-client.js.map +1 -1
- package/dist/threads/foreman-execution.d.ts +12 -12
- package/dist/threads/foreman-execution.d.ts.map +1 -1
- package/dist/threads/foreman-execution.js +19 -30
- package/dist/threads/foreman-execution.js.map +1 -1
- package/dist/threads/foreman-host.d.ts +2 -17
- package/dist/threads/foreman-host.d.ts.map +1 -1
- package/dist/threads/foreman-host.js +63 -452
- package/dist/threads/foreman-host.js.map +1 -1
- package/dist/threads/foreman-protocol.d.ts +12 -113
- package/dist/threads/foreman-protocol.d.ts.map +1 -1
- package/dist/threads/foreman-protocol.js +15 -41
- package/dist/threads/foreman-protocol.js.map +1 -1
- package/dist/threads/foreman-store.d.ts +10 -44
- package/dist/threads/foreman-store.d.ts.map +1 -1
- package/dist/threads/foreman-store.js +19 -78
- package/dist/threads/foreman-store.js.map +1 -1
- package/dist/threads/generic-execution.d.ts +2 -2
- package/dist/threads/generic-execution.d.ts.map +1 -1
- package/dist/threads/generic-execution.js +6 -9
- package/dist/threads/generic-execution.js.map +1 -1
- package/dist/threads/ipc.d.ts +0 -3
- package/dist/threads/ipc.d.ts.map +1 -1
- package/dist/threads/ipc.js.map +1 -1
- package/dist/threads/relay-adapter.d.ts +2 -0
- package/dist/threads/relay-adapter.d.ts.map +1 -1
- package/dist/threads/relay-adapter.js +7 -1
- package/dist/threads/relay-adapter.js.map +1 -1
- package/dist/threads/supervisor.d.ts +51 -21
- package/dist/threads/supervisor.d.ts.map +1 -1
- package/dist/threads/supervisor.js +449 -160
- package/dist/threads/supervisor.js.map +1 -1
- package/dist/threads/task-contracts.d.ts +194 -0
- package/dist/threads/task-contracts.d.ts.map +1 -0
- package/dist/threads/task-contracts.js +82 -0
- package/dist/threads/task-contracts.js.map +1 -0
- package/dist/threads/task-sidecar.d.ts +145 -0
- package/dist/threads/task-sidecar.d.ts.map +1 -0
- package/dist/threads/task-sidecar.js +311 -0
- package/dist/threads/task-sidecar.js.map +1 -0
- package/dist/threads/task-store.d.ts +172 -0
- package/dist/threads/task-store.d.ts.map +1 -0
- package/dist/threads/task-store.js +599 -0
- package/dist/threads/task-store.js.map +1 -0
- package/dist/threads/thread-activity-controller.d.ts +7 -0
- package/dist/threads/thread-activity-controller.d.ts.map +1 -1
- package/dist/threads/thread-activity-controller.js +52 -2
- package/dist/threads/thread-activity-controller.js.map +1 -1
- package/dist/threads/thread-task-context.d.ts +40 -0
- package/dist/threads/thread-task-context.d.ts.map +1 -0
- package/dist/threads/thread-task-context.js +160 -0
- package/dist/threads/thread-task-context.js.map +1 -0
- package/dist/threads/thread-task-controller.d.ts +122 -0
- package/dist/threads/thread-task-controller.d.ts.map +1 -0
- package/dist/threads/thread-task-controller.js +276 -0
- package/dist/threads/thread-task-controller.js.map +1 -0
- package/dist/threads/thread-task-runtime.d.ts +350 -0
- package/dist/threads/thread-task-runtime.d.ts.map +1 -0
- package/dist/threads/thread-task-runtime.js +896 -0
- package/dist/threads/thread-task-runtime.js.map +1 -0
- package/dist/threads/worker-entry.d.ts.map +1 -1
- package/dist/threads/worker-entry.js +28 -29
- package/dist/threads/worker-entry.js.map +1 -1
- package/dist/threads/worker-execution-runtime.d.ts +2 -3
- package/dist/threads/worker-execution-runtime.d.ts.map +1 -1
- package/dist/threads/worker-execution-runtime.js +2 -5
- package/dist/threads/worker-execution-runtime.js.map +1 -1
- package/dist/tools/delegation.d.ts +2 -75
- package/dist/tools/delegation.d.ts.map +1 -1
- package/dist/tools/delegation.js +29 -63
- package/dist/tools/delegation.js.map +1 -1
- package/dist/tools/email.d.ts +1 -1
- package/dist/tools/execution-control.d.ts +0 -5
- package/dist/tools/execution-control.d.ts.map +1 -1
- package/dist/tools/execution-control.js +2 -9
- package/dist/tools/execution-control.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +6 -2
- 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/notify.d.ts +0 -2
- package/dist/tools/notify.d.ts.map +1 -1
- package/dist/tools/notify.js +5 -21
- package/dist/tools/notify.js.map +1 -1
- package/dist/tools/skill.d.ts +1 -1
- package/dist/tools/thread-tasks.d.ts +23 -0
- package/dist/tools/thread-tasks.d.ts.map +1 -0
- package/dist/tools/thread-tasks.js +122 -0
- package/dist/tools/thread-tasks.js.map +1 -0
- package/dist/tools/totp.d.ts +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 +2 -17
- package/dist/tui/server.js.map +1 -1
- package/dist/utils/restart.d.ts.map +1 -1
- package/dist/utils/restart.js +0 -6
- package/dist/utils/restart.js.map +1 -1
- package/dist-agent/bundle.cjs +2 -2
- package/package.json +1 -1
- package/dist/agent/runtime-context.d.ts +0 -27
- package/dist/agent/runtime-context.d.ts.map +0 -1
- package/dist/agent/runtime-context.js +0 -60
- package/dist/agent/runtime-context.js.map +0 -1
- package/dist/agent/runtime-disclosure-policy.d.ts +0 -6
- package/dist/agent/runtime-disclosure-policy.d.ts.map +0 -1
- package/dist/agent/runtime-disclosure-policy.js +0 -16
- package/dist/agent/runtime-disclosure-policy.js.map +0 -1
- package/dist/conversations/lazy-runtime.d.ts +0 -5
- package/dist/conversations/lazy-runtime.d.ts.map +0 -1
- package/dist/conversations/lazy-runtime.js +0 -12
- package/dist/conversations/lazy-runtime.js.map +0 -1
- package/dist/conversations/runtime.d.ts +0 -17
- package/dist/conversations/runtime.d.ts.map +0 -1
- package/dist/conversations/runtime.js +0 -92
- package/dist/conversations/runtime.js.map +0 -1
- package/dist/conversations/scheduler.d.ts +0 -57
- package/dist/conversations/scheduler.d.ts.map +0 -1
- package/dist/conversations/scheduler.js +0 -175
- package/dist/conversations/scheduler.js.map +0 -1
- package/dist/threads/foreman-business.d.ts +0 -9
- package/dist/threads/foreman-business.d.ts.map +0 -1
- package/dist/threads/foreman-business.js +0 -117
- package/dist/threads/foreman-business.js.map +0 -1
- package/dist/threads/foreman-delivery.d.ts +0 -5
- package/dist/threads/foreman-delivery.d.ts.map +0 -1
- package/dist/threads/foreman-delivery.js +0 -21
- package/dist/threads/foreman-delivery.js.map +0 -1
- package/dist/threads/task-workspace.d.ts +0 -8
- package/dist/threads/task-workspace.d.ts.map +0 -1
- package/dist/threads/task-workspace.js +0 -52
- package/dist/threads/task-workspace.js.map +0 -1
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/** Keep the foreground engine graph off execution-only hosts and test transports. */
|
|
2
|
-
export function createLazyConversationRuntime(options) {
|
|
3
|
-
const runtime = import("./runtime.js").then((module) => module.createConversationRuntime(options));
|
|
4
|
-
return {
|
|
5
|
-
ready: runtime.then((instance) => instance.ready),
|
|
6
|
-
settled: runtime.then((instance) => instance.settled),
|
|
7
|
-
deliver: (message, awareness) => { void runtime.then((instance) => instance.deliver(message, awareness)).catch(() => { }); },
|
|
8
|
-
acknowledge: (reply) => { void runtime.then((instance) => instance.acknowledge(reply)).catch(() => { }); },
|
|
9
|
-
stop: async () => { await runtime.then((instance) => instance.stop()).catch(() => { }); },
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=lazy-runtime.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-runtime.js","sourceRoot":"","sources":["../../src/conversations/lazy-runtime.ts"],"names":[],"mappings":"AAGA,qFAAqF;AACrF,MAAM,UAAU,6BAA6B,CAAC,OAAmC;IAC/E,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC;IACnG,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QACjD,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrD,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAyC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClK,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAyC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChJ,IAAI,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAyC,CAAC,CAAC,CAAC,CAAC,CAAC;KAChI,CAAC;AACJ,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { VisionClawConfig } from "../config/types.js";
|
|
2
|
-
import { type ForemanClient } from "../threads/foreman-protocol.js";
|
|
3
|
-
import type { DesktopRuntimeResolution, BrowserRuntimeResolution } from "../agent/runtime-surface.js";
|
|
4
|
-
import type { ConversationRuntime, ConversationStart } from "./scheduler.js";
|
|
5
|
-
export interface ConversationRuntimeOptions extends ConversationStart {
|
|
6
|
-
config: VisionClawConfig;
|
|
7
|
-
foremanClient: ForemanClient | null;
|
|
8
|
-
desktopRuntimeResolution?: DesktopRuntimeResolution;
|
|
9
|
-
browserRuntimeResolution?: BrowserRuntimeResolution;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* A chat session lives in the host, using its existing durable session/queue
|
|
13
|
-
* directory. No child process is assigned to it. Its tools and continuations
|
|
14
|
-
* execute inside an explicit context, and lifecycle cleanup is local to it.
|
|
15
|
-
*/
|
|
16
|
-
export declare function createConversationRuntime(options: ConversationRuntimeOptions): ConversationRuntime;
|
|
17
|
-
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/conversations/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAU3D,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG1F,OAAO,KAAK,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACtG,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE7E,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;IACnE,MAAM,EAAE,gBAAgB,CAAC;IACzB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACrD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,0BAA0B,GAAG,mBAAmB,CAoElG"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { getProfile, setProfile, setWorkerThreadContext } from "../config/index.js";
|
|
2
|
-
import { RuntimeContext } from "../agent/runtime-context.js";
|
|
3
|
-
import { startAgentLoop } from "../agent/loop.js";
|
|
4
|
-
import { runGracefulShutdown } from "../agent/state.js";
|
|
5
|
-
import { stopRuntimeApiProxy } from "../agent/model-provider.js";
|
|
6
|
-
import { RelayAdapter } from "../threads/relay-adapter.js";
|
|
7
|
-
import { initThreadDirectory } from "../threads/init-thread-dir.js";
|
|
8
|
-
import { readWorkerThreadMeta } from "../threads/thread-meta.js";
|
|
9
|
-
import { installForemanClient } from "../threads/foreman-protocol.js";
|
|
10
|
-
import { setActiveThreadsSnapshot } from "../threads/active-threads-store.js";
|
|
11
|
-
import { logger } from "../logger.js";
|
|
12
|
-
/**
|
|
13
|
-
* A chat session lives in the host, using its existing durable session/queue
|
|
14
|
-
* directory. No child process is assigned to it. Its tools and continuations
|
|
15
|
-
* execute inside an explicit context, and lifecycle cleanup is local to it.
|
|
16
|
-
*/
|
|
17
|
-
export function createConversationRuntime(options) {
|
|
18
|
-
const context = new RuntimeContext(options.conversationId);
|
|
19
|
-
const profile = getProfile();
|
|
20
|
-
const abort = new AbortController();
|
|
21
|
-
let state;
|
|
22
|
-
let session;
|
|
23
|
-
let readyResolve;
|
|
24
|
-
let readyReject;
|
|
25
|
-
const ready = new Promise((resolve, reject) => { readyResolve = resolve; readyReject = reject; });
|
|
26
|
-
const relay = context.run(() => new RelayAdapter(options.emit, options.conversationId, undefined, { config: options.config }));
|
|
27
|
-
const settled = Promise.resolve().then(() => context.run(async () => {
|
|
28
|
-
setProfile(profile);
|
|
29
|
-
setWorkerThreadContext(options.conversationId);
|
|
30
|
-
logger.init();
|
|
31
|
-
logger.setThreadContext(options.conversationId);
|
|
32
|
-
installForemanClient(options.foremanClient);
|
|
33
|
-
initThreadDirectory();
|
|
34
|
-
const config = structuredClone(options.config);
|
|
35
|
-
const meta = readWorkerThreadMeta();
|
|
36
|
-
if (meta?.engineOverride) {
|
|
37
|
-
config.engineOverride = meta.engineOverride;
|
|
38
|
-
config.pinnedModel = meta.pinnedModel;
|
|
39
|
-
}
|
|
40
|
-
try {
|
|
41
|
-
await startAgentLoop(config, {
|
|
42
|
-
workerMode: { threadId: options.conversationId, relay },
|
|
43
|
-
signal: abort.signal,
|
|
44
|
-
acquireConversationTurn: options.acquireTurn,
|
|
45
|
-
desktopRuntimeResolution: options.desktopRuntimeResolution,
|
|
46
|
-
browserRuntimeResolution: options.browserRuntimeResolution,
|
|
47
|
-
onReady: (deps) => {
|
|
48
|
-
state = deps.agentState;
|
|
49
|
-
session = deps.sessionManager;
|
|
50
|
-
readyResolve();
|
|
51
|
-
if (abort.signal.aborted)
|
|
52
|
-
state.wakeMainLoop?.();
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
catch (error) {
|
|
57
|
-
readyReject(error);
|
|
58
|
-
throw error;
|
|
59
|
-
}
|
|
60
|
-
finally {
|
|
61
|
-
try {
|
|
62
|
-
await runGracefulShutdown();
|
|
63
|
-
}
|
|
64
|
-
finally {
|
|
65
|
-
stopRuntimeApiProxy();
|
|
66
|
-
logger.close();
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
})).catch((error) => { readyReject(error); throw error; });
|
|
70
|
-
const stop = async () => {
|
|
71
|
-
abort.abort();
|
|
72
|
-
context.run(() => {
|
|
73
|
-
session?.requestStop();
|
|
74
|
-
state?.wakeMainLoop?.();
|
|
75
|
-
});
|
|
76
|
-
await settled.catch(() => { });
|
|
77
|
-
};
|
|
78
|
-
context.restart = () => { void stop(); };
|
|
79
|
-
return {
|
|
80
|
-
ready,
|
|
81
|
-
settled,
|
|
82
|
-
deliver: (message, awareness) => context.run(() => {
|
|
83
|
-
if (abort.signal.aborted)
|
|
84
|
-
return;
|
|
85
|
-
setActiveThreadsSnapshot(awareness);
|
|
86
|
-
relay.injectMessage(message);
|
|
87
|
-
}),
|
|
88
|
-
acknowledge: (reply) => context.run(() => relay.handleReplyResult(reply)),
|
|
89
|
-
stop,
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=runtime.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/conversations/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import type { CommandMessage } from "../channels/interface.js";
|
|
2
|
-
import type { MessageQueue } from "../channels/queue.js";
|
|
3
|
-
import type { ActiveThreadInfo, IpcReplyResult, WorkerToMainMessage } from "../threads/ipc.js";
|
|
4
|
-
/** A foreground session, not a process or a slot in the background pool. */
|
|
5
|
-
export interface ConversationRuntime {
|
|
6
|
-
readonly ready: Promise<void>;
|
|
7
|
-
readonly settled: Promise<void>;
|
|
8
|
-
deliver(message: CommandMessage, awareness: ActiveThreadInfo[]): void;
|
|
9
|
-
acknowledge(reply: IpcReplyResult): void;
|
|
10
|
-
stop(): Promise<void>;
|
|
11
|
-
}
|
|
12
|
-
export interface ConversationStart {
|
|
13
|
-
conversationId: string;
|
|
14
|
-
emit: (event: WorkerToMainMessage) => void;
|
|
15
|
-
acquireTurn: (signal?: AbortSignal) => Promise<() => void>;
|
|
16
|
-
}
|
|
17
|
-
export type ConversationFactory = (start: ConversationStart) => ConversationRuntime;
|
|
18
|
-
/** A bounded foreground turn pool, independent of background execution slots. */
|
|
19
|
-
export declare class ForegroundTurnPool {
|
|
20
|
-
private readonly capacity;
|
|
21
|
-
private active;
|
|
22
|
-
private readonly waiting;
|
|
23
|
-
constructor(capacity: number);
|
|
24
|
-
acquire(signal?: AbortSignal): Promise<() => void>;
|
|
25
|
-
}
|
|
26
|
-
export interface ConversationSchedulerOptions {
|
|
27
|
-
create: ConversationFactory;
|
|
28
|
-
queue: (conversationId: string) => MessageQueue;
|
|
29
|
-
emit: (conversationId: string, event: WorkerToMainMessage, reply: (result: IpcReplyResult) => void) => void;
|
|
30
|
-
awareness: (conversationId: string) => ActiveThreadInfo[];
|
|
31
|
-
onBusyChange?: () => void;
|
|
32
|
-
maxConcurrentTurns: number;
|
|
33
|
-
idleTtlMs: number;
|
|
34
|
-
}
|
|
35
|
-
/** Durable chat queues own sessions; tasks never own or reserve these slots. */
|
|
36
|
-
export declare class ConversationScheduler {
|
|
37
|
-
private readonly options;
|
|
38
|
-
private readonly conversations;
|
|
39
|
-
private readonly failures;
|
|
40
|
-
private readonly turnPool;
|
|
41
|
-
private stopped;
|
|
42
|
-
constructor(options: ConversationSchedulerOptions);
|
|
43
|
-
acquireTurn(signal?: AbortSignal): Promise<() => void>;
|
|
44
|
-
/** The caller durably enqueues before entering here. */
|
|
45
|
-
accept(conversationId: string, message?: CommandMessage): void;
|
|
46
|
-
private start;
|
|
47
|
-
private status;
|
|
48
|
-
private armIdle;
|
|
49
|
-
stop(id: string): Promise<void>;
|
|
50
|
-
hasBusyConversations(): boolean;
|
|
51
|
-
overview(): (ActiveThreadInfo & {
|
|
52
|
-
pid: null;
|
|
53
|
-
kind: "conversation";
|
|
54
|
-
})[];
|
|
55
|
-
shutdown(): Promise<void>;
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/conversations/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAa,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAI1G,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IACtE,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACzC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC3C,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;CAC5D;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,mBAAmB,CAAC;AAcpF,iFAAiF;AACjF,qBAAa,kBAAkB;IAIjB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAHrC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;gBAEjB,QAAQ,EAAE,MAAM;IAI7C,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;CA2BnD;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,YAAY,CAAC;IAChD,IAAI,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,KAAK,IAAI,CAAC;IAC5G,SAAS,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,gBAAgB,EAAE,CAAC;IAC1D,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gFAAgF;AAChF,qBAAa,qBAAqB;IAMpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmC;IACjE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,OAAO,CAAS;gBAEK,OAAO,EAAE,4BAA4B;IAIlE,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;IAItD,wDAAwD;IACxD,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;IAgB9D,OAAO,CAAC,KAAK;IAwCb,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,OAAO;IAYT,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC,oBAAoB,IAAI,OAAO;IAI/B,QAAQ,IAAI,CAAC,gBAAgB,GAAG;QAAE,GAAG,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC,EAAE;IAOhE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAIhC"}
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
import { bindRuntimeContext } from "../agent/runtime-context.js";
|
|
2
|
-
import { logger } from "../logger.js";
|
|
3
|
-
/** A bounded foreground turn pool, independent of background execution slots. */
|
|
4
|
-
export class ForegroundTurnPool {
|
|
5
|
-
capacity;
|
|
6
|
-
active = 0;
|
|
7
|
-
waiting = [];
|
|
8
|
-
constructor(capacity) {
|
|
9
|
-
this.capacity = capacity;
|
|
10
|
-
if (!Number.isInteger(capacity) || capacity < 1)
|
|
11
|
-
throw new Error("Invalid foreground concurrency");
|
|
12
|
-
}
|
|
13
|
-
acquire(signal) {
|
|
14
|
-
return new Promise((resolve, reject) => {
|
|
15
|
-
const abort = () => {
|
|
16
|
-
const index = this.waiting.indexOf(admit);
|
|
17
|
-
if (index >= 0)
|
|
18
|
-
this.waiting.splice(index, 1);
|
|
19
|
-
reject(new Error("Conversation stopped before its turn started"));
|
|
20
|
-
};
|
|
21
|
-
const admit = () => {
|
|
22
|
-
signal?.removeEventListener("abort", abort);
|
|
23
|
-
if (signal?.aborted) {
|
|
24
|
-
abort();
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
this.active += 1;
|
|
28
|
-
let released = false;
|
|
29
|
-
resolve(() => {
|
|
30
|
-
if (released)
|
|
31
|
-
return;
|
|
32
|
-
released = true;
|
|
33
|
-
this.active -= 1;
|
|
34
|
-
this.waiting.shift()?.();
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
if (signal?.aborted) {
|
|
38
|
-
abort();
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
if (this.active < this.capacity)
|
|
42
|
-
admit();
|
|
43
|
-
else {
|
|
44
|
-
this.waiting.push(admit);
|
|
45
|
-
signal?.addEventListener("abort", abort, { once: true });
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
/** Durable chat queues own sessions; tasks never own or reserve these slots. */
|
|
51
|
-
export class ConversationScheduler {
|
|
52
|
-
options;
|
|
53
|
-
conversations = new Map();
|
|
54
|
-
failures = new Map();
|
|
55
|
-
turnPool;
|
|
56
|
-
stopped = false;
|
|
57
|
-
constructor(options) {
|
|
58
|
-
this.options = options;
|
|
59
|
-
this.turnPool = new ForegroundTurnPool(options.maxConcurrentTurns);
|
|
60
|
-
}
|
|
61
|
-
acquireTurn(signal) {
|
|
62
|
-
return this.turnPool.acquire(signal);
|
|
63
|
-
}
|
|
64
|
-
/** The caller durably enqueues before entering here. */
|
|
65
|
-
accept(conversationId, message) {
|
|
66
|
-
if (this.stopped)
|
|
67
|
-
return;
|
|
68
|
-
if (message)
|
|
69
|
-
this.failures.delete(conversationId);
|
|
70
|
-
let conversation = this.conversations.get(conversationId);
|
|
71
|
-
if (!conversation) {
|
|
72
|
-
if ((this.failures.get(conversationId) ?? 0) >= 3)
|
|
73
|
-
return;
|
|
74
|
-
conversation = this.start(conversationId);
|
|
75
|
-
}
|
|
76
|
-
if (conversation.idleTimer)
|
|
77
|
-
clearTimeout(conversation.idleTimer);
|
|
78
|
-
conversation.idleTimer = null;
|
|
79
|
-
if (message) {
|
|
80
|
-
if (!conversation.ready || conversation.stopping)
|
|
81
|
-
conversation.pending.push(message);
|
|
82
|
-
else
|
|
83
|
-
conversation.runtime.deliver(message, this.options.awareness(conversationId));
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
start(id) {
|
|
87
|
-
const runtime = this.options.create({
|
|
88
|
-
conversationId: id,
|
|
89
|
-
acquireTurn: (signal) => this.acquireTurn(signal),
|
|
90
|
-
emit: bindRuntimeContext((event) => {
|
|
91
|
-
const current = this.conversations.get(id);
|
|
92
|
-
if (!current)
|
|
93
|
-
return;
|
|
94
|
-
if (current.runtime !== runtime)
|
|
95
|
-
return;
|
|
96
|
-
if (event.type === "status")
|
|
97
|
-
this.status(current, event);
|
|
98
|
-
if (event.type === "turn-complete") {
|
|
99
|
-
this.failures.delete(id);
|
|
100
|
-
this.armIdle(current);
|
|
101
|
-
}
|
|
102
|
-
this.options.emit(id, event, (result) => runtime.acknowledge(result));
|
|
103
|
-
}),
|
|
104
|
-
});
|
|
105
|
-
const conversation = {
|
|
106
|
-
id, runtime, ready: false, stopping: false, pending: [], busy: false,
|
|
107
|
-
description: "Starting conversation", lastActivityAt: new Date().toISOString(), idleTimer: null,
|
|
108
|
-
};
|
|
109
|
-
this.conversations.set(id, conversation);
|
|
110
|
-
void runtime.ready.then(bindRuntimeContext(() => {
|
|
111
|
-
if (conversation.stopping || this.stopped)
|
|
112
|
-
return;
|
|
113
|
-
conversation.ready = true;
|
|
114
|
-
const pending = conversation.pending.splice(0);
|
|
115
|
-
for (const message of pending)
|
|
116
|
-
runtime.deliver(message, this.options.awareness(id));
|
|
117
|
-
})).catch(() => { });
|
|
118
|
-
void runtime.settled.catch(bindRuntimeContext((error) => {
|
|
119
|
-
if (conversation.stopping || this.stopped)
|
|
120
|
-
return;
|
|
121
|
-
this.failures.set(id, (this.failures.get(id) ?? 0) + 1);
|
|
122
|
-
logger.warn(`[conversation] ${id} stopped unexpectedly: ${error instanceof Error ? error.message : String(error)}`);
|
|
123
|
-
})).finally(bindRuntimeContext(() => {
|
|
124
|
-
if (conversation.idleTimer)
|
|
125
|
-
clearTimeout(conversation.idleTimer);
|
|
126
|
-
if (this.conversations.get(id) === conversation)
|
|
127
|
-
this.conversations.delete(id);
|
|
128
|
-
this.options.onBusyChange?.();
|
|
129
|
-
if (!this.stopped && this.options.queue(id).hasOutstandingWork())
|
|
130
|
-
this.accept(id);
|
|
131
|
-
}));
|
|
132
|
-
return conversation;
|
|
133
|
-
}
|
|
134
|
-
status(conversation, event) {
|
|
135
|
-
conversation.busy = event.busy;
|
|
136
|
-
conversation.description = event.taskDescription;
|
|
137
|
-
conversation.lastActivityAt = event.lastActivityAt;
|
|
138
|
-
this.options.onBusyChange?.();
|
|
139
|
-
}
|
|
140
|
-
armIdle(conversation) {
|
|
141
|
-
if (conversation.idleTimer)
|
|
142
|
-
clearTimeout(conversation.idleTimer);
|
|
143
|
-
conversation.idleTimer = setTimeout(() => {
|
|
144
|
-
if (conversation.busy || this.options.queue(conversation.id).hasOutstandingWork()) {
|
|
145
|
-
this.armIdle(conversation);
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
void this.stop(conversation.id);
|
|
149
|
-
}, this.options.idleTtlMs);
|
|
150
|
-
conversation.idleTimer.unref();
|
|
151
|
-
}
|
|
152
|
-
async stop(id) {
|
|
153
|
-
const conversation = this.conversations.get(id);
|
|
154
|
-
if (!conversation || conversation.stopping)
|
|
155
|
-
return;
|
|
156
|
-
conversation.stopping = true;
|
|
157
|
-
if (conversation.idleTimer)
|
|
158
|
-
clearTimeout(conversation.idleTimer);
|
|
159
|
-
await conversation.runtime.stop();
|
|
160
|
-
}
|
|
161
|
-
hasBusyConversations() {
|
|
162
|
-
return [...this.conversations.values()].some((item) => !item.ready || item.busy || item.pending.length > 0);
|
|
163
|
-
}
|
|
164
|
-
overview() {
|
|
165
|
-
return [...this.conversations.values()].map((item) => ({
|
|
166
|
-
threadId: item.id, kind: "conversation", pid: null,
|
|
167
|
-
busy: item.busy || item.pending.length > 0, taskDescription: item.description, lastActivityAt: item.lastActivityAt,
|
|
168
|
-
}));
|
|
169
|
-
}
|
|
170
|
-
async shutdown() {
|
|
171
|
-
this.stopped = true;
|
|
172
|
-
await Promise.all([...this.conversations.keys()].map((id) => this.stop(id)));
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
//# sourceMappingURL=scheduler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/conversations/scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { AdapterTool } from "../tools/adapter-tool.js";
|
|
2
|
-
import type { ForemanClient, ForemanCommandResult } from "./foreman-protocol.js";
|
|
3
|
-
/** Same business tools, with only reads admitted. Credentials stay in the host. */
|
|
4
|
-
export declare const FOREMAN_BUSINESS_TOOLS: readonly ["manage_email", "manage_calendar", "manage_drive"];
|
|
5
|
-
export type ForemanBusinessTool = typeof FOREMAN_BUSINESS_TOOLS[number];
|
|
6
|
-
export declare function foremanBusinessTools(client: ForemanClient): AdapterTool[];
|
|
7
|
-
/** Called only after the host validates the live executor and its admission grant. */
|
|
8
|
-
export declare function runForemanBusinessRead(name: ForemanBusinessTool, input: unknown, workspace: string, stillAuthorized?: () => boolean): Promise<ForemanCommandResult>;
|
|
9
|
-
//# sourceMappingURL=foreman-business.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"foreman-business.d.ts","sourceRoot":"","sources":["../../src/threads/foreman-business.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,mFAAmF;AACnF,eAAO,MAAM,sBAAsB,8DAA+D,CAAC;AACnG,MAAM,MAAM,mBAAmB,GAAG,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAmBxE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,EAAE,CAazE;AAaD,sFAAsF;AACtF,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAE,MAAM,OAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAmDrL"}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import os from "node:os";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import { randomUUID } from "node:crypto";
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
import { tool } from "@anthropic-ai/claude-agent-sdk";
|
|
7
|
-
import { manageEmailTool } from "../tools/email.js";
|
|
8
|
-
import { manageCalendarTool } from "../tools/calendar.js";
|
|
9
|
-
import { manageDriveTool } from "../tools/drive.js";
|
|
10
|
-
/** Same business tools, with only reads admitted. Credentials stay in the host. */
|
|
11
|
-
export const FOREMAN_BUSINESS_TOOLS = ["manage_email", "manage_calendar", "manage_drive"];
|
|
12
|
-
const email = z.object(manageEmailTool.inputSchema).pick({
|
|
13
|
-
action: true, label: true, scope: true, unread_only: true, query: true,
|
|
14
|
-
max_results: true, message_id: true, include_body: true, kind: true,
|
|
15
|
-
}).extend({
|
|
16
|
-
action: z.enum(["list", "search", "read", "list_delivery_events"]),
|
|
17
|
-
}).shape;
|
|
18
|
-
const calendar = z.object(manageCalendarTool.inputSchema).pick({
|
|
19
|
-
action: true, start: true, end: true, event_id: true, max_results: true,
|
|
20
|
-
}).extend({
|
|
21
|
-
action: z.enum(["get_event", "list_events", "find_free_time"]),
|
|
22
|
-
}).shape;
|
|
23
|
-
const drive = z.object(manageDriveTool.inputSchema).pick({
|
|
24
|
-
action: true, file_id: true, local_path: true, folder_id: true, query: true, max_results: true,
|
|
25
|
-
}).extend({
|
|
26
|
-
action: z.enum(["list_files", "get_file", "download_file", "list_shares", "list_trash", "get_quota"]),
|
|
27
|
-
}).shape;
|
|
28
|
-
export function foremanBusinessTools(client) {
|
|
29
|
-
const send = async (name, args) => {
|
|
30
|
-
const result = await client.request({ type: "business_read", tool: name, args });
|
|
31
|
-
return { content: [{ type: "text", text: result.text }], ...(result.ok ? {} : { isError: true }) };
|
|
32
|
-
};
|
|
33
|
-
return [
|
|
34
|
-
tool("manage_email", "Read or search the authorized mailbox. Sending and mailbox changes go through General.", email, (args) => send("manage_email", args)),
|
|
35
|
-
tool("manage_calendar", "Read events and find free time in the authorized calendar. Creating invitations or changing events goes through General.", calendar, (args) => send("manage_calendar", args)),
|
|
36
|
-
tool("manage_drive", "Find and read authorized workspace files. Downloads must stay inside this Task's workspace. Uploads, sharing and other remote changes go through General.", drive, (args) => send("manage_drive", args)),
|
|
37
|
-
];
|
|
38
|
-
}
|
|
39
|
-
function downloadDestination(localPath, workspace) {
|
|
40
|
-
if (!localPath || !path.isAbsolute(localPath))
|
|
41
|
-
throw new Error("download_file requires an absolute local_path inside this Task's workspace");
|
|
42
|
-
const root = fs.realpathSync(workspace);
|
|
43
|
-
const parent = fs.realpathSync(path.dirname(localPath));
|
|
44
|
-
if (parent !== root && !parent.startsWith(`${root}${path.sep}`))
|
|
45
|
-
throw new Error("Downloads must stay inside this Task's workspace");
|
|
46
|
-
const destination = path.join(parent, path.basename(localPath));
|
|
47
|
-
const stat = fs.lstatSync(destination, { throwIfNoEntry: false });
|
|
48
|
-
if (stat && (!stat.isFile() || stat.isSymbolicLink()))
|
|
49
|
-
throw new Error("Download target must be a regular file");
|
|
50
|
-
return destination;
|
|
51
|
-
}
|
|
52
|
-
/** Called only after the host validates the live executor and its admission grant. */
|
|
53
|
-
export async function runForemanBusinessRead(name, input, workspace, stillAuthorized = () => true) {
|
|
54
|
-
try {
|
|
55
|
-
if (!stillAuthorized())
|
|
56
|
-
throw new Error("Business-read permission is no longer valid");
|
|
57
|
-
let result;
|
|
58
|
-
switch (name) {
|
|
59
|
-
case "manage_email":
|
|
60
|
-
result = await manageEmailTool.handler(z.object(email).strict().parse(input), {});
|
|
61
|
-
break;
|
|
62
|
-
case "manage_calendar":
|
|
63
|
-
result = await manageCalendarTool.handler(z.object(calendar).strict().parse(input), {});
|
|
64
|
-
break;
|
|
65
|
-
case "manage_drive": {
|
|
66
|
-
const args = z.object(drive).strict().parse(input);
|
|
67
|
-
if (args.action === "download_file") {
|
|
68
|
-
const destination = downloadDestination(args.local_path, workspace);
|
|
69
|
-
// Provider downloads can outlive a cancelled executor. Keep their
|
|
70
|
-
// asynchronous writes outside its workspace until a fenced commit.
|
|
71
|
-
const staging = fs.mkdtempSync(path.join(os.tmpdir(), "vc-business-read-"));
|
|
72
|
-
const downloaded = path.join(staging, "download");
|
|
73
|
-
try {
|
|
74
|
-
result = await manageDriveTool.handler({ ...args, local_path: downloaded }, {});
|
|
75
|
-
if (!result.isError) {
|
|
76
|
-
if (!stillAuthorized())
|
|
77
|
-
throw new Error("The execution stopped or its business-read permission was revoked");
|
|
78
|
-
if (downloadDestination(args.local_path, workspace) !== destination)
|
|
79
|
-
throw new Error("Download destination changed while reading");
|
|
80
|
-
const publishing = path.join(path.dirname(destination), `.download-${randomUUID()}.tmp`);
|
|
81
|
-
try {
|
|
82
|
-
// No await between the permission check and rename: cancel
|
|
83
|
-
// processing and the next writer cannot interleave this commit.
|
|
84
|
-
fs.copyFileSync(downloaded, publishing, fs.constants.COPYFILE_EXCL);
|
|
85
|
-
fs.chmodSync(publishing, 0o600);
|
|
86
|
-
fs.renameSync(publishing, destination);
|
|
87
|
-
}
|
|
88
|
-
finally {
|
|
89
|
-
fs.rmSync(publishing, { force: true });
|
|
90
|
-
}
|
|
91
|
-
result = { ...result, content: result.content.map((item) => item.type === "text"
|
|
92
|
-
? { ...item, text: item.text.replaceAll(downloaded, destination) } : item) };
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
finally {
|
|
96
|
-
fs.rmSync(staging, { recursive: true, force: true });
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
result = await manageDriveTool.handler(args, {});
|
|
101
|
-
}
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
|
-
default: return { ok: false, text: "Unknown business tool" };
|
|
105
|
-
}
|
|
106
|
-
if (!stillAuthorized())
|
|
107
|
-
throw new Error("The execution stopped or its business-read permission was revoked");
|
|
108
|
-
return {
|
|
109
|
-
ok: result.isError !== true,
|
|
110
|
-
text: result.content.filter((item) => item.type === "text").map((item) => item.text).join("\n"),
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
catch (error) {
|
|
114
|
-
return { ok: false, text: `Business read refused: ${error instanceof Error ? error.message : String(error)}` };
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=foreman-business.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"foreman-business.js","sourceRoot":"","sources":["../../src/threads/foreman-business.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { ExecutionEvent } from "./execution-store.js";
|
|
2
|
-
export declare function taskDeliveryMode(event: Pick<ExecutionEvent, "type" | "payload">): "direct" | "review";
|
|
3
|
-
/** Only publication-ready fields enter the delivery fallback, never internal summaries/errors. */
|
|
4
|
-
export declare function publicTaskText(event: Pick<ExecutionEvent, "type" | "payload">): string | null;
|
|
5
|
-
//# sourceMappingURL=foreman-delivery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"foreman-delivery.d.ts","sourceRoot":"","sources":["../../src/threads/foreman-delivery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,QAAQ,GAAG,QAAQ,CAGrG;AAED,kGAAkG;AAClG,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,CAY7F"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export function taskDeliveryMode(event) {
|
|
2
|
-
const data = event.type === "question" ? event.payload : event.payload.data;
|
|
3
|
-
return data && typeof data === "object" && "delivery" in data && data.delivery === "direct" ? "direct" : "review";
|
|
4
|
-
}
|
|
5
|
-
/** Only publication-ready fields enter the delivery fallback, never internal summaries/errors. */
|
|
6
|
-
export function publicTaskText(event) {
|
|
7
|
-
if (event.type === "question") {
|
|
8
|
-
const question = event.payload.text;
|
|
9
|
-
if (typeof question !== "string" || !question.trim())
|
|
10
|
-
return null;
|
|
11
|
-
const choices = Array.isArray(event.payload.choices)
|
|
12
|
-
? event.payload.choices.filter((value) => typeof value === "string").slice(0, 10) : [];
|
|
13
|
-
return [question.slice(0, 4_000), ...choices.map((choice, i) => `${i + 1}. ${choice.slice(0, 200)}`)].join("\n");
|
|
14
|
-
}
|
|
15
|
-
if (event.type !== "result")
|
|
16
|
-
return null;
|
|
17
|
-
const data = event.payload.data;
|
|
18
|
-
const message = data && typeof data === "object" && "userMessage" in data ? data.userMessage : null;
|
|
19
|
-
return typeof message === "string" && message.trim() ? message.trim().slice(0, 8_000) : null;
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=foreman-delivery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"foreman-delivery.js","sourceRoot":"","sources":["../../src/threads/foreman-delivery.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,KAA+C;IAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IAC5E,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpH,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,cAAc,CAAC,KAA+C;IAC5E,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACpC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAClD,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1G,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnH,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IACpG,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/F,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Independent coding Tasks get detached worktrees at one admitted commit.
|
|
3
|
-
* Existing dirty checkouts are never committed, reset or silently omitted.
|
|
4
|
-
* A caller can explicitly choose the shared workspace, which is serialized by
|
|
5
|
-
* the execution ledger. Worktrees remain available with the Task's artifacts.
|
|
6
|
-
*/
|
|
7
|
-
export declare function prepareTaskWorkspace(source: string, taskId: string, mode: "isolated" | "shared" | "read_only", commits: Map<string, string>): Promise<string>;
|
|
8
|
-
//# sourceMappingURL=task-workspace.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task-workspace.d.ts","sourceRoot":"","sources":["../../src/threads/task-workspace.ts"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,WAAW,EACzC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,OAAO,CAAC,MAAM,CAAC,CAgCjB"}
|