visionclaw 0.1.193 → 0.1.194-dev.feat-backup-progress-reporting.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/backup-uploader.d.ts +44 -0
- package/dist/agent/backup-uploader.d.ts.map +1 -0
- package/dist/agent/backup-uploader.js +83 -0
- package/dist/agent/backup-uploader.js.map +1 -0
- package/dist/agent/backup.d.ts +7 -1
- package/dist/agent/backup.d.ts.map +1 -1
- package/dist/agent/backup.js +337 -52
- package/dist/agent/backup.js.map +1 -1
- package/dist/agent/command-handlers.d.ts +2 -0
- package/dist/agent/command-handlers.d.ts.map +1 -1
- package/dist/agent/command-handlers.js +29 -3
- package/dist/agent/command-handlers.js.map +1 -1
- package/dist/agent/context.d.ts +2 -0
- package/dist/agent/context.d.ts.map +1 -1
- package/dist/agent/context.js +11 -1
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/data-collector.d.ts.map +1 -1
- package/dist/agent/data-collector.js +23 -38
- package/dist/agent/data-collector.js.map +1 -1
- package/dist/agent/loop.d.ts +3 -0
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +48 -0
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/message-format.d.ts.map +1 -1
- package/dist/agent/message-format.js +3 -0
- package/dist/agent/message-format.js.map +1 -1
- package/dist/agent/status.d.ts.map +1 -1
- package/dist/agent/status.js +2 -1
- package/dist/agent/status.js.map +1 -1
- package/dist/backup.d.ts +4 -1
- package/dist/backup.d.ts.map +1 -1
- package/dist/backup.js +86 -3
- package/dist/backup.js.map +1 -1
- package/dist/calendar/google-calendar.d.ts +2 -0
- package/dist/calendar/google-calendar.d.ts.map +1 -1
- package/dist/calendar/google-calendar.js +3 -0
- package/dist/calendar/google-calendar.js.map +1 -1
- package/dist/channels/interface.d.ts +9 -0
- package/dist/channels/interface.d.ts.map +1 -1
- package/dist/channels/manager.d.ts +7 -1
- package/dist/channels/manager.d.ts.map +1 -1
- package/dist/channels/manager.js +12 -0
- package/dist/channels/manager.js.map +1 -1
- package/dist/channels/telegram.d.ts.map +1 -1
- package/dist/channels/telegram.js +5 -0
- package/dist/channels/telegram.js.map +1 -1
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +42 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/config/types.d.ts +9 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +6 -0
- package/dist/config/types.js.map +1 -1
- package/dist/drive/google-drive.d.ts +1 -0
- package/dist/drive/google-drive.d.ts.map +1 -1
- package/dist/drive/google-drive.js +5 -0
- package/dist/drive/google-drive.js.map +1 -1
- package/dist/i18n/messages.d.ts +4 -0
- package/dist/i18n/messages.d.ts.map +1 -1
- package/dist/i18n/messages.js +7 -2
- package/dist/i18n/messages.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/obs/server.d.ts +7 -0
- package/dist/obs/server.d.ts.map +1 -1
- package/dist/obs/server.js +22 -0
- package/dist/obs/server.js.map +1 -1
- package/dist/onboarding/bot-profile.d.ts.map +1 -1
- package/dist/onboarding/bot-profile.js +1 -0
- package/dist/onboarding/bot-profile.js.map +1 -1
- package/dist/onboarding/index.d.ts.map +1 -1
- package/dist/onboarding/index.js +5 -0
- package/dist/onboarding/index.js.map +1 -1
- package/dist/onboarding/prepare-mac.d.ts +1 -0
- package/dist/onboarding/prepare-mac.d.ts.map +1 -1
- package/dist/onboarding/prepare-mac.js +32 -15
- package/dist/onboarding/prepare-mac.js.map +1 -1
- package/dist/onboarding/setup-shared.d.ts.map +1 -1
- package/dist/onboarding/setup-shared.js +6 -0
- package/dist/onboarding/setup-shared.js.map +1 -1
- package/dist/onboarding/setup-steps.d.ts.map +1 -1
- package/dist/onboarding/setup-steps.js +8 -0
- package/dist/onboarding/setup-steps.js.map +1 -1
- package/dist/realtime/agent-bridge.d.ts +7 -0
- package/dist/realtime/agent-bridge.d.ts.map +1 -0
- package/dist/realtime/agent-bridge.js +31 -0
- package/dist/realtime/agent-bridge.js.map +1 -0
- package/dist/realtime/assets/index.html +1058 -0
- package/dist/realtime/assets/samples/alloy.mp3 +0 -0
- package/dist/realtime/assets/samples/ash.mp3 +0 -0
- package/dist/realtime/assets/samples/ballad.mp3 +0 -0
- package/dist/realtime/assets/samples/cedar.mp3 +0 -0
- package/dist/realtime/assets/samples/coral.mp3 +0 -0
- package/dist/realtime/assets/samples/echo.mp3 +0 -0
- package/dist/realtime/assets/samples/marin.mp3 +0 -0
- package/dist/realtime/assets/samples/sage.mp3 +0 -0
- package/dist/realtime/assets/samples/shimmer.mp3 +0 -0
- package/dist/realtime/assets/samples/verse.mp3 +0 -0
- package/dist/realtime/context.d.ts +14 -0
- package/dist/realtime/context.d.ts.map +1 -0
- package/dist/realtime/context.js +153 -0
- package/dist/realtime/context.js.map +1 -0
- package/dist/realtime/http-helpers.d.ts +5 -0
- package/dist/realtime/http-helpers.d.ts.map +1 -0
- package/dist/realtime/http-helpers.js +29 -0
- package/dist/realtime/http-helpers.js.map +1 -0
- package/dist/realtime/index.d.ts +62 -0
- package/dist/realtime/index.d.ts.map +1 -0
- package/dist/realtime/index.js +94 -0
- package/dist/realtime/index.js.map +1 -0
- package/dist/realtime/server.d.ts +6 -0
- package/dist/realtime/server.d.ts.map +1 -0
- package/dist/realtime/server.js +476 -0
- package/dist/realtime/server.js.map +1 -0
- package/dist/realtime/telegram-auth.d.ts +2 -0
- package/dist/realtime/telegram-auth.d.ts.map +1 -0
- package/dist/realtime/telegram-auth.js +24 -0
- package/dist/realtime/telegram-auth.js.map +1 -0
- package/dist/realtime/tools.d.ts +829 -0
- package/dist/realtime/tools.d.ts.map +1 -0
- package/dist/realtime/tools.js +630 -0
- package/dist/realtime/tools.js.map +1 -0
- package/dist/realtime/types.d.ts +62 -0
- package/dist/realtime/types.d.ts.map +1 -0
- package/dist/realtime/types.js +3 -0
- package/dist/realtime/types.js.map +1 -0
- package/dist/realtime/voice-summarizer.d.ts +4 -0
- package/dist/realtime/voice-summarizer.d.ts.map +1 -0
- package/dist/realtime/voice-summarizer.js +129 -0
- package/dist/realtime/voice-summarizer.js.map +1 -0
- package/dist/restore.d.ts +5 -0
- package/dist/restore.d.ts.map +1 -1
- package/dist/restore.js +132 -16
- package/dist/restore.js.map +1 -1
- package/dist/tools/email.d.ts +1 -1
- package/dist/tools/memory.d.ts +13 -0
- package/dist/tools/memory.d.ts.map +1 -1
- package/dist/tools/memory.js +43 -43
- package/dist/tools/memory.js.map +1 -1
- package/dist/tools/stock-data.d.ts +16 -0
- package/dist/tools/stock-data.d.ts.map +1 -1
- package/dist/tools/stock-data.js +36 -38
- package/dist/tools/stock-data.js.map +1 -1
- package/dist/tools/web-fetch.d.ts +4 -0
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +95 -23
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tos-storage.d.ts +45 -0
- package/dist/tos-storage.d.ts.map +1 -0
- package/dist/tos-storage.js +134 -0
- package/dist/tos-storage.js.map +1 -0
- package/dist-agent/bundle.cjs +170934 -167547
- package/package.json +3 -2
- package/dist/agent/applied-credential-signature.d.ts +0 -53
- package/dist/agent/applied-credential-signature.d.ts.map +0 -1
- package/dist/agent/applied-credential-signature.js +0 -137
- package/dist/agent/applied-credential-signature.js.map +0 -1
- package/dist/agent/engines/claude/cli-resolver.d.ts +0 -16
- package/dist/agent/engines/claude/cli-resolver.d.ts.map +0 -1
- package/dist/agent/engines/claude/cli-resolver.js +0 -83
- package/dist/agent/engines/claude/cli-resolver.js.map +0 -1
- package/dist/agent/engines/claude/session-browser-policy.d.ts +0 -9
- package/dist/agent/engines/claude/session-browser-policy.d.ts.map +0 -1
- package/dist/agent/engines/claude/session-browser-policy.js +0 -49
- package/dist/agent/engines/claude/session-browser-policy.js.map +0 -1
- package/dist/agent/engines/claude/session.d.ts +0 -291
- package/dist/agent/engines/claude/session.d.ts.map +0 -1
- package/dist/agent/engines/claude/session.js +0 -1177
- package/dist/agent/engines/claude/session.js.map +0 -1
- package/dist/agent/engines/client-factory.d.ts +0 -63
- package/dist/agent/engines/client-factory.d.ts.map +0 -1
- package/dist/agent/engines/client-factory.js +0 -382
- package/dist/agent/engines/client-factory.js.map +0 -1
- package/dist/agent/engines/engine.d.ts +0 -8
- package/dist/agent/engines/engine.d.ts.map +0 -1
- package/dist/agent/engines/engine.js +0 -15
- package/dist/agent/engines/engine.js.map +0 -1
- package/dist/agent/engines/openai/file-session.d.ts +0 -49
- package/dist/agent/engines/openai/file-session.d.ts.map +0 -1
- package/dist/agent/engines/openai/file-session.js +0 -108
- package/dist/agent/engines/openai/file-session.js.map +0 -1
- package/dist/agent/engines/openai/file-tools.d.ts +0 -35
- package/dist/agent/engines/openai/file-tools.d.ts.map +0 -1
- package/dist/agent/engines/openai/file-tools.js +0 -194
- package/dist/agent/engines/openai/file-tools.js.map +0 -1
- package/dist/agent/engines/openai/session.d.ts +0 -190
- package/dist/agent/engines/openai/session.d.ts.map +0 -1
- package/dist/agent/engines/openai/session.js +0 -1066
- package/dist/agent/engines/openai/session.js.map +0 -1
- package/dist/agent/engines/openai/tools.d.ts +0 -13
- package/dist/agent/engines/openai/tools.d.ts.map +0 -1
- package/dist/agent/engines/openai/tools.js +0 -248
- package/dist/agent/engines/openai/tools.js.map +0 -1
- package/dist/agent/engines/session-types.d.ts +0 -146
- package/dist/agent/engines/session-types.d.ts.map +0 -1
- package/dist/agent/engines/session-types.js +0 -2
- package/dist/agent/engines/session-types.js.map +0 -1
- package/dist/agent/engines/system-prompt-log.d.ts +0 -9
- package/dist/agent/engines/system-prompt-log.d.ts.map +0 -1
- package/dist/agent/engines/system-prompt-log.js +0 -46
- package/dist/agent/engines/system-prompt-log.js.map +0 -1
- package/dist/agent/transcript/transcript-backfill.d.ts +0 -54
- package/dist/agent/transcript/transcript-backfill.d.ts.map +0 -1
- package/dist/agent/transcript/transcript-backfill.js +0 -604
- package/dist/agent/transcript/transcript-backfill.js.map +0 -1
- package/dist/agent/transcript/transcript-indexer.d.ts +0 -273
- package/dist/agent/transcript/transcript-indexer.d.ts.map +0 -1
- package/dist/agent/transcript/transcript-indexer.js +0 -1217
- package/dist/agent/transcript/transcript-indexer.js.map +0 -1
- package/dist/agent/transcript/transcript-memory-migrations.d.ts +0 -25
- package/dist/agent/transcript/transcript-memory-migrations.d.ts.map +0 -1
- package/dist/agent/transcript/transcript-memory-migrations.js +0 -87
- package/dist/agent/transcript/transcript-memory-migrations.js.map +0 -1
- package/dist/agent/transcript-memory-migrations.d.ts +0 -25
- package/dist/agent/transcript-memory-migrations.d.ts.map +0 -1
- package/dist/agent/transcript-memory-migrations.js +0 -87
- package/dist/agent/transcript-memory-migrations.js.map +0 -1
- package/dist/agent/tunnel-credential-handler.d.ts +0 -90
- package/dist/agent/tunnel-credential-handler.d.ts.map +0 -1
- package/dist/agent/tunnel-credential-handler.js +0 -162
- package/dist/agent/tunnel-credential-handler.js.map +0 -1
- package/dist/agent/usage/usage-backfill-handler.d.ts +0 -18
- package/dist/agent/usage/usage-backfill-handler.d.ts.map +0 -1
- package/dist/agent/usage/usage-backfill-handler.js +0 -69
- package/dist/agent/usage/usage-backfill-handler.js.map +0 -1
- package/dist/agent/usage/usage-gate.d.ts +0 -25
- package/dist/agent/usage/usage-gate.d.ts.map +0 -1
- package/dist/agent/usage/usage-gate.js +0 -83
- package/dist/agent/usage/usage-gate.js.map +0 -1
- package/dist/agent/usage/usage-handler.d.ts +0 -7
- package/dist/agent/usage/usage-handler.d.ts.map +0 -1
- package/dist/agent/usage/usage-handler.js +0 -28
- package/dist/agent/usage/usage-handler.js.map +0 -1
- package/dist/agent/usage/usage-report-builder.d.ts +0 -26
- package/dist/agent/usage/usage-report-builder.d.ts.map +0 -1
- package/dist/agent/usage/usage-report-builder.js +0 -80
- package/dist/agent/usage/usage-report-builder.js.map +0 -1
- package/dist/agent/usage/usage-report-queue.d.ts +0 -26
- package/dist/agent/usage/usage-report-queue.d.ts.map +0 -1
- package/dist/agent/usage/usage-report-queue.js +0 -199
- package/dist/agent/usage/usage-report-queue.js.map +0 -1
- package/dist/agent/usage/usage-report-types.d.ts +0 -41
- package/dist/agent/usage/usage-report-types.d.ts.map +0 -1
- package/dist/agent/usage/usage-report-types.js +0 -2
- package/dist/agent/usage/usage-report-types.js.map +0 -1
- package/dist/agent/usage/usage-reporter.d.ts +0 -31
- package/dist/agent/usage/usage-reporter.d.ts.map +0 -1
- package/dist/agent/usage/usage-reporter.js +0 -102
- package/dist/agent/usage/usage-reporter.js.map +0 -1
- package/dist/agent/usage-backfill-handler.d.ts +0 -18
- package/dist/agent/usage-backfill-handler.d.ts.map +0 -1
- package/dist/agent/usage-backfill-handler.js +0 -69
- package/dist/agent/usage-backfill-handler.js.map +0 -1
- package/dist/agent/usage-gate.d.ts +0 -25
- package/dist/agent/usage-gate.d.ts.map +0 -1
- package/dist/agent/usage-gate.js +0 -83
- package/dist/agent/usage-gate.js.map +0 -1
- package/dist/agent/usage-report-builder.d.ts +0 -26
- package/dist/agent/usage-report-builder.d.ts.map +0 -1
- package/dist/agent/usage-report-builder.js +0 -80
- package/dist/agent/usage-report-builder.js.map +0 -1
- package/dist/agent/usage-report-queue.d.ts +0 -26
- package/dist/agent/usage-report-queue.d.ts.map +0 -1
- package/dist/agent/usage-report-queue.js +0 -199
- package/dist/agent/usage-report-queue.js.map +0 -1
- package/dist/agent/usage-report-types.d.ts +0 -41
- package/dist/agent/usage-report-types.d.ts.map +0 -1
- package/dist/agent/usage-report-types.js +0 -2
- package/dist/agent/usage-report-types.js.map +0 -1
- package/dist/agent/usage-reporter.d.ts +0 -31
- package/dist/agent/usage-reporter.d.ts.map +0 -1
- package/dist/agent/usage-reporter.js +0 -102
- package/dist/agent/usage-reporter.js.map +0 -1
- package/dist/agent/wake-cycle-tool-tracker.d.ts +0 -39
- package/dist/agent/wake-cycle-tool-tracker.d.ts.map +0 -1
- package/dist/agent/wake-cycle-tool-tracker.js +0 -72
- package/dist/agent/wake-cycle-tool-tracker.js.map +0 -1
- package/dist/billing/payg-handler.d.ts +0 -29
- package/dist/billing/payg-handler.d.ts.map +0 -1
- package/dist/billing/payg-handler.js +0 -92
- package/dist/billing/payg-handler.js.map +0 -1
- package/dist/billing/payment-handler.d.ts +0 -24
- package/dist/billing/payment-handler.d.ts.map +0 -1
- package/dist/billing/payment-handler.js +0 -101
- package/dist/billing/payment-handler.js.map +0 -1
- package/dist/builtin-skills/catalog/phone-adb-automation/SKILL.md +0 -412
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_input.sh +0 -132
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_launch.sh +0 -166
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_screenshot.sh +0 -87
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_security_kbd.py +0 -174
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_setup.sh +0 -274
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_swipe.sh +0 -111
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_tap.sh +0 -87
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_ui_parse.py +0 -176
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_wake_unlock.sh +0 -67
- package/dist/builtin-skills/transcribe-audio/SKILL.md +0 -122
- package/dist/data-processing/convert-demo-cli.d.ts +0 -7
- package/dist/data-processing/convert-demo-cli.d.ts.map +0 -1
- package/dist/data-processing/convert-demo-cli.js +0 -30
- package/dist/data-processing/convert-demo-cli.js.map +0 -1
- package/dist/data-processing/convert-demo.d.ts +0 -26
- package/dist/data-processing/convert-demo.d.ts.map +0 -1
- package/dist/data-processing/convert-demo.js +0 -233
- package/dist/data-processing/convert-demo.js.map +0 -1
- package/dist/obs/rdp/icons/icons/app_windows.svg +0 -4
- package/dist/obs/rdp/icons/icons/clip_get.svg +0 -4
- package/dist/obs/rdp/icons/icons/clip_send.svg +0 -4
- package/dist/obs/rdp/icons/icons/clip_shared.svg +0 -4
- package/dist/obs/rdp/icons/icons/clipboard.svg +0 -4
- package/dist/obs/rdp/icons/icons/clipboard_shared.svg +0 -4
- package/dist/obs/rdp/icons/icons/control.svg +0 -4
- package/dist/obs/rdp/icons/icons/desktop.svg +0 -4
- package/dist/obs/rdp/icons/icons/display.svg +0 -4
- package/dist/obs/rdp/icons/icons/launchpad.svg +0 -4
- package/dist/obs/rdp/icons/icons/mission_control.svg +0 -4
- package/dist/obs/rdp/icons/icons/screenshot.svg +0 -4
- package/dist/obs/rdp/icons/icons/zoom_actual.svg +0 -4
- package/dist/obs/rdp/icons/icons/zoom_fit.svg +0 -4
- package/dist/obs/rdp/icons/icons/zoom_in.svg +0 -4
- package/dist/obs/rdp/icons/icons/zoom_out.svg +0 -4
- package/dist/obs/tunnel-telemetry.d.ts +0 -46
- package/dist/obs/tunnel-telemetry.d.ts.map +0 -1
- package/dist/obs/tunnel-telemetry.js +0 -70
- package/dist/obs/tunnel-telemetry.js.map +0 -1
- package/dist/onboarding/cloudflared-cert.d.ts +0 -15
- package/dist/onboarding/cloudflared-cert.d.ts.map +0 -1
- package/dist/onboarding/cloudflared-cert.js +0 -57
- package/dist/onboarding/cloudflared-cert.js.map +0 -1
- package/dist/onboarding/playwriter-extension.d.ts +0 -19
- package/dist/onboarding/playwriter-extension.d.ts.map +0 -1
- package/dist/onboarding/playwriter-extension.js +0 -246
- package/dist/onboarding/playwriter-extension.js.map +0 -1
- package/dist/service/gbox-tun.d.ts +0 -14
- package/dist/service/gbox-tun.d.ts.map +0 -1
- package/dist/service/gbox-tun.js +0 -315
- package/dist/service/gbox-tun.js.map +0 -1
- package/dist/skills/installed.d.ts +0 -11
- package/dist/skills/installed.d.ts.map +0 -1
- package/dist/skills/installed.js +0 -35
- package/dist/skills/installed.js.map +0 -1
- package/dist/tools/coordinate-resolver.d.ts +0 -30
- package/dist/tools/coordinate-resolver.d.ts.map +0 -1
- package/dist/tools/coordinate-resolver.js +0 -104
- package/dist/tools/coordinate-resolver.js.map +0 -1
- package/dist/utils/playwriter-relay.d.ts +0 -9
- package/dist/utils/playwriter-relay.d.ts.map +0 -1
- package/dist/utils/playwriter-relay.js +0 -77
- package/dist/utils/playwriter-relay.js.map +0 -1
- package/dist/utils/wechat-monitor.d.ts +0 -21
- package/dist/utils/wechat-monitor.d.ts.map +0 -1
- package/dist/utils/wechat-monitor.js +0 -88
- package/dist/utils/wechat-monitor.js.map +0 -1
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { randomUUID } from "node:crypto";
|
|
4
|
-
import { getOpenAISessionsDir } from "../../../config/index.js";
|
|
5
|
-
/**
|
|
6
|
-
* File-backed implementation of the OpenAI Agents SDK `Session` interface.
|
|
7
|
-
*
|
|
8
|
-
* Each session is persisted as a single JSON file named after the session id
|
|
9
|
-
* (e.g. `openai-sessions/<sessionId>.json`). This makes session rollover
|
|
10
|
-
* after compaction trivial: we mint a new id, write the compacted items into
|
|
11
|
-
* a new file, and rename the old file to `<oldId>.compacted-<iso>.json` for
|
|
12
|
-
* archival.
|
|
13
|
-
*
|
|
14
|
-
* The constructor accepts an explicit directory so tests can supply a
|
|
15
|
-
* temporary location without monkey-patching `getOpenAISessionsDir()`.
|
|
16
|
-
*/
|
|
17
|
-
export class OpenAIFileSession {
|
|
18
|
-
dir;
|
|
19
|
-
filePath;
|
|
20
|
-
sessionId;
|
|
21
|
-
items;
|
|
22
|
-
constructor(options = {}) {
|
|
23
|
-
this.dir = options.dir ?? getOpenAISessionsDir();
|
|
24
|
-
this.sessionId = options.sessionId ?? randomUUID();
|
|
25
|
-
this.filePath = path.join(this.dir, `${this.sessionId}.json`);
|
|
26
|
-
const existing = this.load();
|
|
27
|
-
if (existing) {
|
|
28
|
-
// Trust the on-disk file: use its sessionId so the filename and the
|
|
29
|
-
// stored sessionId can never disagree.
|
|
30
|
-
this.sessionId = existing.sessionId;
|
|
31
|
-
this.filePath = path.join(this.dir, `${this.sessionId}.json`);
|
|
32
|
-
this.items = existing.items;
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
this.items = options.seedItems ? structuredClone(options.seedItems) : [];
|
|
36
|
-
this.persist();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
getSessionId() {
|
|
40
|
-
return Promise.resolve(this.sessionId);
|
|
41
|
-
}
|
|
42
|
-
getSessionIdSync() {
|
|
43
|
-
return this.sessionId;
|
|
44
|
-
}
|
|
45
|
-
getFilePath() {
|
|
46
|
-
return this.filePath;
|
|
47
|
-
}
|
|
48
|
-
getDir() {
|
|
49
|
-
return this.dir;
|
|
50
|
-
}
|
|
51
|
-
getAllItemsSync() {
|
|
52
|
-
return structuredClone(this.items);
|
|
53
|
-
}
|
|
54
|
-
getItems(limit) {
|
|
55
|
-
const items = limit && limit > 0 ? this.items.slice(-limit) : this.items;
|
|
56
|
-
return Promise.resolve(structuredClone(items));
|
|
57
|
-
}
|
|
58
|
-
addItems(items) {
|
|
59
|
-
if (items.length === 0) {
|
|
60
|
-
return Promise.resolve();
|
|
61
|
-
}
|
|
62
|
-
this.items.push(...structuredClone(items));
|
|
63
|
-
this.persist();
|
|
64
|
-
return Promise.resolve();
|
|
65
|
-
}
|
|
66
|
-
popItem() {
|
|
67
|
-
const item = this.items.pop();
|
|
68
|
-
this.persist();
|
|
69
|
-
return Promise.resolve(item ? structuredClone(item) : undefined);
|
|
70
|
-
}
|
|
71
|
-
clearSession() {
|
|
72
|
-
this.items = [];
|
|
73
|
-
this.persist();
|
|
74
|
-
return Promise.resolve();
|
|
75
|
-
}
|
|
76
|
-
load() {
|
|
77
|
-
if (!fs.existsSync(this.filePath)) {
|
|
78
|
-
return null;
|
|
79
|
-
}
|
|
80
|
-
try {
|
|
81
|
-
const raw = JSON.parse(fs.readFileSync(this.filePath, "utf-8"));
|
|
82
|
-
if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
|
|
83
|
-
return null;
|
|
84
|
-
}
|
|
85
|
-
const parsed = raw;
|
|
86
|
-
if (!parsed.sessionId || !Array.isArray(parsed.items)) {
|
|
87
|
-
return null;
|
|
88
|
-
}
|
|
89
|
-
return {
|
|
90
|
-
sessionId: parsed.sessionId,
|
|
91
|
-
items: parsed.items,
|
|
92
|
-
updatedAt: typeof parsed.updatedAt === "string" ? parsed.updatedAt : new Date().toISOString(),
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
catch {
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
persist() {
|
|
100
|
-
fs.mkdirSync(path.dirname(this.filePath), { recursive: true });
|
|
101
|
-
fs.writeFileSync(this.filePath, JSON.stringify({
|
|
102
|
-
sessionId: this.sessionId,
|
|
103
|
-
items: this.items,
|
|
104
|
-
updatedAt: new Date().toISOString(),
|
|
105
|
-
}, null, 2), "utf-8");
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=file-session.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-session.js","sourceRoot":"","sources":["../../../../src/agent/engines/openai/file-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local Shell and Editor adapters for the OpenAI Agents SDK's `shellTool`
|
|
3
|
-
* and `applyPatchTool`.
|
|
4
|
-
*
|
|
5
|
-
* VisionClaw runs autonomously and Claude already has broad local tool
|
|
6
|
-
* access, so these adapters intentionally allow broad filesystem scope
|
|
7
|
-
* (bounded only by OS/user permissions). They still apply practical
|
|
8
|
-
* runtime limits (timeout + output truncation) and log every invocation
|
|
9
|
-
* so we have an audit trail.
|
|
10
|
-
*/
|
|
11
|
-
import { type ApplyPatchOperation, type ApplyPatchResult, type Editor, type Shell, type ShellAction, type ShellResult } from "@openai/agents-core";
|
|
12
|
-
/**
|
|
13
|
-
* Local Shell adapter: executes each command sequentially, capturing
|
|
14
|
-
* stdout/stderr with a per-command timeout and output cap.
|
|
15
|
-
*/
|
|
16
|
-
export declare class LocalShell implements Shell {
|
|
17
|
-
run(action: ShellAction): Promise<ShellResult>;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Local Editor adapter: handles `create_file`, `update_file`, and
|
|
21
|
-
* `delete_file` ApplyPatch operations using the SDK's `applyDiff` helper
|
|
22
|
-
* for V4A patch semantics.
|
|
23
|
-
*/
|
|
24
|
-
export declare class LocalEditor implements Editor {
|
|
25
|
-
createFile(operation: Extract<ApplyPatchOperation, {
|
|
26
|
-
type: "create_file";
|
|
27
|
-
}>): Promise<ApplyPatchResult>;
|
|
28
|
-
updateFile(operation: Extract<ApplyPatchOperation, {
|
|
29
|
-
type: "update_file";
|
|
30
|
-
}>): Promise<ApplyPatchResult>;
|
|
31
|
-
deleteFile(operation: Extract<ApplyPatchOperation, {
|
|
32
|
-
type: "delete_file";
|
|
33
|
-
}>): Promise<ApplyPatchResult>;
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=file-tools.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-tools.d.ts","sourceRoot":"","sources":["../../../../src/agent/engines/openai/file-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,WAAW,EAEhB,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAuH7B;;;GAGG;AACH,qBAAa,UAAW,YAAW,KAAK;IAChC,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;CAgBrD;AAED;;;;GAIG;AACH,qBAAa,WAAY,YAAW,MAAM;IAClC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,mBAAmB,EAAE;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoBvG,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,mBAAmB,EAAE;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAcvG,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,mBAAmB,EAAE;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAW9G"}
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local Shell and Editor adapters for the OpenAI Agents SDK's `shellTool`
|
|
3
|
-
* and `applyPatchTool`.
|
|
4
|
-
*
|
|
5
|
-
* VisionClaw runs autonomously and Claude already has broad local tool
|
|
6
|
-
* access, so these adapters intentionally allow broad filesystem scope
|
|
7
|
-
* (bounded only by OS/user permissions). They still apply practical
|
|
8
|
-
* runtime limits (timeout + output truncation) and log every invocation
|
|
9
|
-
* so we have an audit trail.
|
|
10
|
-
*/
|
|
11
|
-
import { spawn } from "node:child_process";
|
|
12
|
-
import fs from "node:fs/promises";
|
|
13
|
-
import path from "node:path";
|
|
14
|
-
import { applyDiff, } from "@openai/agents-core";
|
|
15
|
-
import { logger } from "../../../logger.js";
|
|
16
|
-
/**
|
|
17
|
-
* Hard ceiling for a single shell tool call regardless of what the model
|
|
18
|
-
* requests. Prevents the agent from hanging the turn on a runaway command.
|
|
19
|
-
*/
|
|
20
|
-
const SHELL_DEFAULT_TIMEOUT_MS = 60_000;
|
|
21
|
-
const SHELL_MAX_TIMEOUT_MS = 5 * 60_000;
|
|
22
|
-
/**
|
|
23
|
-
* Hard ceiling on stdout/stderr length per command. Anything beyond this
|
|
24
|
-
* gets a truncation marker so the model is aware. Keeps a runaway command
|
|
25
|
-
* from blowing the context window.
|
|
26
|
-
*/
|
|
27
|
-
const SHELL_DEFAULT_MAX_OUTPUT = 16_000;
|
|
28
|
-
const SHELL_MAX_OUTPUT_HARD = 64_000;
|
|
29
|
-
function clampNumber(value, fallback, max) {
|
|
30
|
-
if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
|
|
31
|
-
return fallback;
|
|
32
|
-
}
|
|
33
|
-
return Math.min(value, max);
|
|
34
|
-
}
|
|
35
|
-
function truncate(text, max) {
|
|
36
|
-
if (text.length <= max)
|
|
37
|
-
return text;
|
|
38
|
-
const head = text.slice(0, max);
|
|
39
|
-
const dropped = text.length - max;
|
|
40
|
-
return `${head}\n…[truncated ${dropped} bytes]`;
|
|
41
|
-
}
|
|
42
|
-
function isFileExistsError(err) {
|
|
43
|
-
return Boolean(err && typeof err === "object" && err.code === "EEXIST");
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Run a single shell command line via `/bin/sh -c <cmd>` and capture its
|
|
47
|
-
* stdout/stderr. Returns the SDK-shaped `ShellOutputResult`.
|
|
48
|
-
*/
|
|
49
|
-
async function runOne(command, timeoutMs, maxOutputLength) {
|
|
50
|
-
return new Promise((resolve) => {
|
|
51
|
-
// `detached: true` puts the child shell in its own process group, so on
|
|
52
|
-
// timeout we can SIGKILL the whole group (`-pid`) and clean up any
|
|
53
|
-
// descendants the model spawned (e.g. backgrounded servers, pipelines).
|
|
54
|
-
const child = spawn("/bin/sh", ["-c", command], {
|
|
55
|
-
cwd: process.cwd(),
|
|
56
|
-
env: process.env,
|
|
57
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
58
|
-
detached: true,
|
|
59
|
-
});
|
|
60
|
-
let stdout = "";
|
|
61
|
-
let stderr = "";
|
|
62
|
-
let timedOut = false;
|
|
63
|
-
const killGroup = () => {
|
|
64
|
-
if (typeof child.pid !== "number") {
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
try {
|
|
68
|
-
// Negative pid => signal the entire process group.
|
|
69
|
-
process.kill(-child.pid, "SIGKILL");
|
|
70
|
-
}
|
|
71
|
-
catch {
|
|
72
|
-
// Group already gone (or never created on this platform). Fall
|
|
73
|
-
// back to killing just the immediate child.
|
|
74
|
-
try {
|
|
75
|
-
child.kill("SIGKILL");
|
|
76
|
-
}
|
|
77
|
-
catch {
|
|
78
|
-
// ignore — process already gone
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
const timer = setTimeout(() => {
|
|
83
|
-
timedOut = true;
|
|
84
|
-
killGroup();
|
|
85
|
-
}, timeoutMs);
|
|
86
|
-
child.stdout.setEncoding("utf-8");
|
|
87
|
-
child.stderr.setEncoding("utf-8");
|
|
88
|
-
child.stdout.on("data", (chunk) => {
|
|
89
|
-
if (stdout.length < maxOutputLength)
|
|
90
|
-
stdout += chunk;
|
|
91
|
-
});
|
|
92
|
-
child.stderr.on("data", (chunk) => {
|
|
93
|
-
if (stderr.length < maxOutputLength)
|
|
94
|
-
stderr += chunk;
|
|
95
|
-
});
|
|
96
|
-
child.on("error", (err) => {
|
|
97
|
-
clearTimeout(timer);
|
|
98
|
-
resolve({
|
|
99
|
-
stdout: truncate(stdout, maxOutputLength),
|
|
100
|
-
stderr: truncate(stderr + (stderr ? "\n" : "") + (err instanceof Error ? err.message : String(err)), maxOutputLength),
|
|
101
|
-
outcome: { type: "exit", exitCode: null },
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
child.on("close", (code, signal) => {
|
|
105
|
-
clearTimeout(timer);
|
|
106
|
-
if (timedOut) {
|
|
107
|
-
resolve({
|
|
108
|
-
stdout: truncate(stdout, maxOutputLength),
|
|
109
|
-
stderr: truncate(stderr + (stderr ? "\n" : "") + `Command timed out after ${timeoutMs}ms (signal=${signal ?? "SIGKILL"})`, maxOutputLength),
|
|
110
|
-
outcome: { type: "timeout" },
|
|
111
|
-
});
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
resolve({
|
|
115
|
-
stdout: truncate(stdout, maxOutputLength),
|
|
116
|
-
stderr: truncate(stderr, maxOutputLength),
|
|
117
|
-
outcome: { type: "exit", exitCode: typeof code === "number" ? code : null },
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Local Shell adapter: executes each command sequentially, capturing
|
|
124
|
-
* stdout/stderr with a per-command timeout and output cap.
|
|
125
|
-
*/
|
|
126
|
-
export class LocalShell {
|
|
127
|
-
async run(action) {
|
|
128
|
-
const timeoutMs = clampNumber(action.timeoutMs, SHELL_DEFAULT_TIMEOUT_MS, SHELL_MAX_TIMEOUT_MS);
|
|
129
|
-
const maxOutputLength = clampNumber(action.maxOutputLength, SHELL_DEFAULT_MAX_OUTPUT, SHELL_MAX_OUTPUT_HARD);
|
|
130
|
-
const output = [];
|
|
131
|
-
for (const command of action.commands) {
|
|
132
|
-
logger.info(`[openai/shell] $ ${command}`);
|
|
133
|
-
const result = await runOne(command, timeoutMs, maxOutputLength);
|
|
134
|
-
const exitCode = result.outcome.type === "exit" ? result.outcome.exitCode : "timeout";
|
|
135
|
-
logger.info(`[openai/shell] exit=${String(exitCode)} stdout=${result.stdout.length}B stderr=${result.stderr.length}B`);
|
|
136
|
-
output.push(result);
|
|
137
|
-
}
|
|
138
|
-
return { output, maxOutputLength };
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Local Editor adapter: handles `create_file`, `update_file`, and
|
|
143
|
-
* `delete_file` ApplyPatch operations using the SDK's `applyDiff` helper
|
|
144
|
-
* for V4A patch semantics.
|
|
145
|
-
*/
|
|
146
|
-
export class LocalEditor {
|
|
147
|
-
async createFile(operation) {
|
|
148
|
-
const target = path.resolve(process.cwd(), operation.path);
|
|
149
|
-
logger.info(`[openai/apply_patch] create ${target}`);
|
|
150
|
-
try {
|
|
151
|
-
await fs.mkdir(path.dirname(target), { recursive: true });
|
|
152
|
-
const content = applyDiff("", operation.diff, "create");
|
|
153
|
-
// `wx` => fail if the file already exists. V4A `create_file` is meant
|
|
154
|
-
// for new files; if the target exists the model should use
|
|
155
|
-
// `update_file` instead so we don't silently clobber data.
|
|
156
|
-
await fs.writeFile(target, content, { encoding: "utf-8", flag: "wx" });
|
|
157
|
-
return { status: "completed", output: `Created ${operation.path}` };
|
|
158
|
-
}
|
|
159
|
-
catch (err) {
|
|
160
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
161
|
-
const detail = isFileExistsError(err)
|
|
162
|
-
? `${operation.path} already exists; use update_file to modify it`
|
|
163
|
-
: message;
|
|
164
|
-
return { status: "failed", output: `Failed to create ${operation.path}: ${detail}` };
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
async updateFile(operation) {
|
|
168
|
-
const target = path.resolve(process.cwd(), operation.path);
|
|
169
|
-
logger.info(`[openai/apply_patch] update ${target}`);
|
|
170
|
-
try {
|
|
171
|
-
const original = await fs.readFile(target, "utf-8");
|
|
172
|
-
const updated = applyDiff(original, operation.diff, "default");
|
|
173
|
-
await fs.writeFile(target, updated, "utf-8");
|
|
174
|
-
return { status: "completed", output: `Updated ${operation.path}` };
|
|
175
|
-
}
|
|
176
|
-
catch (err) {
|
|
177
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
178
|
-
return { status: "failed", output: `Failed to update ${operation.path}: ${message}` };
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
async deleteFile(operation) {
|
|
182
|
-
const target = path.resolve(process.cwd(), operation.path);
|
|
183
|
-
logger.info(`[openai/apply_patch] delete ${target}`);
|
|
184
|
-
try {
|
|
185
|
-
await fs.unlink(target);
|
|
186
|
-
return { status: "completed", output: `Deleted ${operation.path}` };
|
|
187
|
-
}
|
|
188
|
-
catch (err) {
|
|
189
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
190
|
-
return { status: "failed", output: `Failed to delete ${operation.path}: ${message}` };
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
//# sourceMappingURL=file-tools.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-tools.js","sourceRoot":"","sources":["../../../../src/agent/engines/openai/file-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,SAAS,GAQV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;;GAGG;AACH,MAAM,wBAAwB,GAAG,MAAM,CAAC;AACxC,MAAM,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC;AAExC;;;;GAIG;AACH,MAAM,wBAAwB,GAAG,MAAM,CAAC;AACxC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAErC,SAAS,WAAW,CAAC,KAAyB,EAAE,QAAgB,EAAE,GAAW;IAC3E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACvE,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,GAAW;IACzC,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;IAClC,OAAO,GAAG,IAAI,iBAAiB,OAAO,SAAS,CAAC;AAClD,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAY;IACrC,OAAO,OAAO,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAK,GAAyB,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AACjG,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,MAAM,CAAC,OAAe,EAAE,SAAiB,EAAE,eAAuB;IAC/E,OAAO,IAAI,OAAO,CAAoB,CAAC,OAAO,EAAE,EAAE;QAChD,wEAAwE;QACxE,mEAAmE;QACnE,wEAAwE;QACxE,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;YAC9C,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,MAAM,SAAS,GAAG,GAAS,EAAE;YAC3B,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAClC,OAAO;YACT,CAAC;YACD,IAAI,CAAC;gBACH,mDAAmD;gBACnD,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,+DAA+D;gBAC/D,4CAA4C;gBAC5C,IAAI,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxB,CAAC;gBAAC,MAAM,CAAC;oBACP,gCAAgC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,QAAQ,GAAG,IAAI,CAAC;YAChB,SAAS,EAAE,CAAC;QACd,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAClC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAClC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,IAAI,MAAM,CAAC,MAAM,GAAG,eAAe;gBAAE,MAAM,IAAI,KAAK,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,IAAI,MAAM,CAAC,MAAM,GAAG,eAAe;gBAAE,MAAM,IAAI,KAAK,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC;gBACN,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;gBACzC,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC;gBACrH,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;aAC1C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACjC,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC;oBACN,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;oBACzC,MAAM,EAAE,QAAQ,CACd,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,2BAA2B,SAAS,cAAc,MAAM,IAAI,SAAS,GAAG,EACxG,eAAe,CAChB;oBACD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;iBAC7B,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,OAAO,CAAC;gBACN,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;gBACzC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;gBACzC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;aAC5E,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,UAAU;IACrB,KAAK,CAAC,GAAG,CAAC,MAAmB;QAC3B,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,wBAAwB,EAAE,oBAAoB,CAAC,CAAC;QAChG,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,eAAe,EAAE,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;QAE7G,MAAM,MAAM,GAAwB,EAAE,CAAC;QACvC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;YACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YACtF,MAAM,CAAC,IAAI,CACT,uBAAuB,MAAM,CAAC,QAAQ,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAC1G,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACrC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,WAAW;IACtB,KAAK,CAAC,UAAU,CAAC,SAAgE;QAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACxD,sEAAsE;YACtE,2DAA2D;YAC3D,2DAA2D;YAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACvE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACtE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC;gBACnC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,+CAA+C;gBAClE,CAAC,CAAC,OAAO,CAAC;YACZ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,EAAE,CAAC;QACvF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAgE;QAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC/D,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACtE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,EAAE,CAAC;QACxF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAgE;QAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACtE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,EAAE,CAAC;QACxF,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
import { type AgentInputItem, type RunStreamEvent } from "@openai/agents";
|
|
2
|
-
import type { MessageParam } from "@anthropic-ai/sdk/resources";
|
|
3
|
-
import type { SessionMode } from "../../mailbox.js";
|
|
4
|
-
import type { AgentSessionConstructorArgs, AgentSessionLike, AgentStreamMessage, CurrentQueryLike, InjectMessageOptions, SendAndStreamOptions, UsageSnapshot } from "../session-types.js";
|
|
5
|
-
export declare class OpenAIAgentSession implements AgentSessionLike {
|
|
6
|
-
private readonly config;
|
|
7
|
-
private readonly buildSystemPrompt;
|
|
8
|
-
private readonly runtimeSurface;
|
|
9
|
-
private readonly getDualSessionEnabled;
|
|
10
|
-
private readonly getAndroidUseEnabled;
|
|
11
|
-
private dynamicMcpServers;
|
|
12
|
-
private readonly client;
|
|
13
|
-
private readonly runner;
|
|
14
|
-
private readonly underlyingSession;
|
|
15
|
-
private readonly session;
|
|
16
|
-
private abortController;
|
|
17
|
-
private inputClosed;
|
|
18
|
-
private stopRequested;
|
|
19
|
-
private lastUsageSnapshot;
|
|
20
|
-
private currentRun;
|
|
21
|
-
private sessionId;
|
|
22
|
-
private compactInFlight;
|
|
23
|
-
private lastCompactRequestAtMs;
|
|
24
|
-
private pendingInjections;
|
|
25
|
-
private interruptArmed;
|
|
26
|
-
private resumeRequested;
|
|
27
|
-
private finishDetected;
|
|
28
|
-
readonly mode: SessionMode;
|
|
29
|
-
constructor({ config, buildSystemPrompt, runtimeSurface, sessionContext, }: AgentSessionConstructorArgs);
|
|
30
|
-
warmUp(): Promise<void>;
|
|
31
|
-
discardWarmQuery(): void;
|
|
32
|
-
sendAndStream(content: MessageParam["content"], _options?: SendAndStreamOptions): AsyncIterable<AgentStreamMessage>;
|
|
33
|
-
/**
|
|
34
|
-
* Queue `content` as the next turn's input.
|
|
35
|
-
*
|
|
36
|
-
* If a run is active, this also *arms a soft interrupt*: the streaming
|
|
37
|
-
* loop in `streamMessages` watches for a safe SDK boundary (a
|
|
38
|
-
* `tool_output` event — at which point the tool call + tool result are
|
|
39
|
-
* already persisted to the session) and aborts the in-flight run as soon
|
|
40
|
-
* as one arrives. The resume loop then immediately starts a follow-up
|
|
41
|
-
* `runner.run()` with the queued items as input, against the same
|
|
42
|
-
* session, so the model perceives the new user message just like it
|
|
43
|
-
* would in the Claude path.
|
|
44
|
-
*
|
|
45
|
-
* If no run is active, the items sit in the queue until the next
|
|
46
|
-
* `sendAndStream` consumes them (or, if the session is already torn
|
|
47
|
-
* down, are reported as orphans by `hasOrphanedInjections`).
|
|
48
|
-
*
|
|
49
|
-
* Returns `true` whenever the message has been accepted (queued). Returns
|
|
50
|
-
* `false` only when the session is fully closed and no run is or will be
|
|
51
|
-
* active — in that case the caller should re-queue the message for the
|
|
52
|
-
* next wake cycle.
|
|
53
|
-
*/
|
|
54
|
-
injectMessage(content: MessageParam["content"], _options?: InjectMessageOptions): boolean;
|
|
55
|
-
/**
|
|
56
|
-
* Mark the session as no longer accepting fresh `sendAndStream` invocations
|
|
57
|
-
* and stop the resume loop from looping into another `runner.run()`.
|
|
58
|
-
*
|
|
59
|
-
* **We deliberately do NOT clear `pendingInjections` here.**
|
|
60
|
-
*
|
|
61
|
-
* `closeInput()` is called by the stream handler from many places, including
|
|
62
|
-
* mid-stream when it observes the `finish` tool block. At that point the
|
|
63
|
-
* resume loop hasn't yet had a chance to consume any messages that
|
|
64
|
-
* `injectMessage()` queued during the run. Dropping the buffer here would
|
|
65
|
-
* silently lose those user messages — exactly the bug we hit when an
|
|
66
|
-
* interrupt landed during a memory-view turn that ended in `finish`.
|
|
67
|
-
*
|
|
68
|
-
* Instead, leftover messages stay in `pendingInjections` until either:
|
|
69
|
-
* - the resume loop picks them up (when it's still allowed to run), or
|
|
70
|
-
* - the wake-cycle runner sees `hasOrphanedInjections` and re-queues the
|
|
71
|
-
* original `CommandMessage` batch for the next wake cycle.
|
|
72
|
-
*
|
|
73
|
-
* Hard teardowns that really do want the buffer wiped (e.g. `/stop`,
|
|
74
|
-
* watchdog timeout, owner-initiated shutdown) call `requestStop()` which
|
|
75
|
-
* clears it explicitly.
|
|
76
|
-
*/
|
|
77
|
-
/**
|
|
78
|
-
* Mark the session as no longer accepting fresh `sendAndStream` invocations
|
|
79
|
-
* and stop the resume loop from looping into another `runner.run()`.
|
|
80
|
-
*
|
|
81
|
-
* **We deliberately do NOT clear `pendingInjections` here.**
|
|
82
|
-
*
|
|
83
|
-
* `closeInput()` is called by the stream handler from many places, including
|
|
84
|
-
* mid-stream when it observes the `finish` tool block. At that point the
|
|
85
|
-
* resume loop hasn't yet had a chance to consume any messages that
|
|
86
|
-
* `injectMessage()` queued during the run. Dropping the buffer here would
|
|
87
|
-
* silently lose those user messages — exactly the bug we hit when an
|
|
88
|
-
* interrupt landed during a memory-view turn that ended in `finish`.
|
|
89
|
-
*
|
|
90
|
-
* Instead, leftover messages stay in `pendingInjections` until either:
|
|
91
|
-
* - the resume loop picks them up (when it's still allowed to run), or
|
|
92
|
-
* - the wake-cycle runner sees `hasOrphanedInjections` and re-queues the
|
|
93
|
-
* original `CommandMessage` batch for the next wake cycle.
|
|
94
|
-
*
|
|
95
|
-
* Hard teardowns that really do want the buffer wiped (e.g. `/stop`,
|
|
96
|
-
* watchdog timeout, owner-initiated shutdown) call `requestStop()` which
|
|
97
|
-
* clears it explicitly.
|
|
98
|
-
*/
|
|
99
|
-
closeInput(): void;
|
|
100
|
-
/**
|
|
101
|
-
* Signal that the agent has called the `finish` tool. The stream loop
|
|
102
|
-
* will abort the run at the next safe `tool_output` boundary (where
|
|
103
|
-
* `stream.rawResponses` is already populated) instead of waiting for
|
|
104
|
-
* `stream.completed` — which can idle for 30s+ in the OpenAI SDK.
|
|
105
|
-
*/
|
|
106
|
-
signalFinish(): void;
|
|
107
|
-
requestStop(): void;
|
|
108
|
-
clearStop(): void;
|
|
109
|
-
isStopRequested(): boolean;
|
|
110
|
-
/**
|
|
111
|
-
* Update the persisted session ID.
|
|
112
|
-
*
|
|
113
|
-
* Only saves on first capture (null/empty → id). Once set, a different ID
|
|
114
|
-
* from the SDK is ignored — it means the resume failed and the SDK created
|
|
115
|
-
* a throwaway conversation.
|
|
116
|
-
*/
|
|
117
|
-
captureSessionId(id: string | undefined): void;
|
|
118
|
-
captureUsageSnapshot(snapshot: UsageSnapshot): void;
|
|
119
|
-
capturePostCompactionSnapshot(_postCompactionTokens: number): void;
|
|
120
|
-
/**
|
|
121
|
-
* Force the OpenAI Responses API compaction path, archiving the
|
|
122
|
-
* pre-compaction transcript to disk for audit/debugging.
|
|
123
|
-
*
|
|
124
|
-
* **The session id is invariant across compactions**, matching the
|
|
125
|
-
* Claude engine's behavior (see `captureSessionId` in the Claude
|
|
126
|
-
* session — it ignores the SDK's post-`/compact` `session_id` echo
|
|
127
|
-
* because the id "should remain the same"). Keeping it stable means:
|
|
128
|
-
*
|
|
129
|
-
* - `session.json` never needs rewriting on compaction.
|
|
130
|
-
* - The active transcript file path (`<sessionId>.json`) is also
|
|
131
|
-
* stable, so no in-memory references (`this.underlyingSession`,
|
|
132
|
-
* `this.session`) need to be rebuilt.
|
|
133
|
-
* - Only the **contents** of the transcript change; the SDK's
|
|
134
|
-
* `runCompaction` rewrites them in place via clearSession + addItems.
|
|
135
|
-
*
|
|
136
|
-
* Sequence:
|
|
137
|
-
*
|
|
138
|
-
* 1. Snapshot the active session file to
|
|
139
|
-
* `<sessionId>.compacted-<iso>.json` — freezes pre-compaction state.
|
|
140
|
-
* 2. `runCompaction({ force: true })` — the SDK clears the underlying
|
|
141
|
-
* session and writes the compacted item set into the same file.
|
|
142
|
-
*
|
|
143
|
-
* If step 1 fails (e.g. the file doesn't exist yet because no items have
|
|
144
|
-
* been persisted) we still attempt step 2 — losing the archive is
|
|
145
|
-
* preferable to skipping the actual compaction.
|
|
146
|
-
*/
|
|
147
|
-
requestCompaction(): Promise<void>;
|
|
148
|
-
private archivePathForCurrent;
|
|
149
|
-
private buildCompactionSession;
|
|
150
|
-
/**
|
|
151
|
-
* Token-usage-driven compaction trigger, called from the wake-cycle
|
|
152
|
-
* runner on heartbeat.
|
|
153
|
-
*
|
|
154
|
-
* Mirrors Claude's behavior: re-entrancy guard + cooldown + threshold
|
|
155
|
-
* check, then delegates to {@link requestCompaction} which archives
|
|
156
|
-
* and runs the actual SDK compaction. We deliberately do NOT use the
|
|
157
|
-
* SDK's auto-compaction path (`shouldTriggerCompaction`) because it
|
|
158
|
-
* compacts purely by item count and skips the archive — see the
|
|
159
|
-
* comment on {@link buildCompactionSession}.
|
|
160
|
-
*
|
|
161
|
-
* The default threshold (70%) is calibrated for the GPT-5.x 1M-token
|
|
162
|
-
* context window. Lower if you want more aggressive trimming, raise
|
|
163
|
-
* if cross-turn context fidelity matters more than latency.
|
|
164
|
-
*/
|
|
165
|
-
maybeCompact(options?: {
|
|
166
|
-
usedPctThreshold?: number;
|
|
167
|
-
cooldownMs?: number;
|
|
168
|
-
imageThreshold?: number;
|
|
169
|
-
}): Promise<void>;
|
|
170
|
-
getSessionId(): string | null;
|
|
171
|
-
getTranscriptPath(): string | null;
|
|
172
|
-
getTranscriptItems(): AgentInputItem[];
|
|
173
|
-
getUsageSnapshot(): UsageSnapshot | null;
|
|
174
|
-
getCurrentQuery(): CurrentQueryLike | null;
|
|
175
|
-
setDynamicMcpServers(servers: Record<string, Record<string, unknown>>): void;
|
|
176
|
-
getDynamicMcpServers(): Record<string, Record<string, unknown>>;
|
|
177
|
-
get isInputClosed(): boolean;
|
|
178
|
-
/**
|
|
179
|
-
* True when injected messages have been queued but the session is no
|
|
180
|
-
* longer running. The agent loop checks this after `streamMessages`
|
|
181
|
-
* finishes to re-queue messages instead of dropping them. We deliberately
|
|
182
|
-
* ignore `resumeRequested` here: if `pendingInjections` is non-empty and
|
|
183
|
-
* there is no active abortController, the messages are by definition
|
|
184
|
-
* orphaned regardless of any stale resume flag.
|
|
185
|
-
*/
|
|
186
|
-
get hasOrphanedInjections(): boolean;
|
|
187
|
-
private streamMessages;
|
|
188
|
-
}
|
|
189
|
-
export declare function normalizeOpenAIRunEventForTest(event: RunStreamEvent, sessionId: string): AgentStreamMessage | null;
|
|
190
|
-
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/agent/engines/openai/session.ts"],"names":[],"mappings":"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"}
|