visionclaw 0.1.195-beta.0 → 0.1.195-dev.feat-e2e-test-system.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/command-handlers.d.ts.map +1 -1
- package/dist/agent/command-handlers.js +17 -0
- package/dist/agent/command-handlers.js.map +1 -1
- package/dist/builtin-skills/catalog/equity-research/SKILL.md +256 -0
- package/dist/builtin-skills/catalog/financial-modeling/SKILL.md +186 -0
- package/dist/builtin-skills/catalog/investment-banking/SKILL.md +213 -0
- package/dist/builtin-skills/catalog/private-equity/SKILL.md +282 -0
- package/dist/builtin-skills/catalog/wealth-management/SKILL.md +252 -0
- package/dist/channels/interface.d.ts +9 -0
- package/dist/channels/interface.d.ts.map +1 -1
- package/dist/channels/manager.d.ts.map +1 -1
- package/dist/channels/manager.js +3 -0
- package/dist/channels/manager.js.map +1 -1
- package/dist/channels/telegram.d.ts.map +1 -1
- package/dist/channels/telegram.js +7 -1
- package/dist/channels/telegram.js.map +1 -1
- package/dist/config/types.d.ts +6 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +10 -0
- package/dist/config/types.js.map +1 -1
- package/dist/e2e/artifacts.d.ts +8 -0
- package/dist/e2e/artifacts.d.ts.map +1 -0
- package/dist/e2e/artifacts.js +35 -0
- package/dist/e2e/artifacts.js.map +1 -0
- package/dist/e2e/cleanup.d.ts +8 -0
- package/dist/e2e/cleanup.d.ts.map +1 -0
- package/dist/e2e/cleanup.js +108 -0
- package/dist/e2e/cleanup.js.map +1 -0
- package/dist/e2e/cli.d.ts +4 -0
- package/dist/e2e/cli.d.ts.map +1 -0
- package/dist/e2e/cli.js +16 -0
- package/dist/e2e/cli.js.map +1 -0
- package/dist/e2e/index.d.ts +5 -0
- package/dist/e2e/index.d.ts.map +1 -0
- package/dist/e2e/index.js +4 -0
- package/dist/e2e/index.js.map +1 -0
- package/dist/e2e/local-test-server.d.ts +7 -0
- package/dist/e2e/local-test-server.d.ts.map +1 -0
- package/dist/e2e/local-test-server.js +75 -0
- package/dist/e2e/local-test-server.js.map +1 -0
- package/dist/e2e/oauth-setup-store.d.ts +28 -0
- package/dist/e2e/oauth-setup-store.d.ts.map +1 -0
- package/dist/e2e/oauth-setup-store.js +56 -0
- package/dist/e2e/oauth-setup-store.js.map +1 -0
- package/dist/e2e/parser.d.ts +4 -0
- package/dist/e2e/parser.d.ts.map +1 -0
- package/dist/e2e/parser.js +52 -0
- package/dist/e2e/parser.js.map +1 -0
- package/dist/e2e/registry.d.ts +3 -0
- package/dist/e2e/registry.d.ts.map +1 -0
- package/dist/e2e/registry.js +44 -0
- package/dist/e2e/registry.js.map +1 -0
- package/dist/e2e/reporter.d.ts +6 -0
- package/dist/e2e/reporter.d.ts.map +1 -0
- package/dist/e2e/reporter.js +56 -0
- package/dist/e2e/reporter.js.map +1 -0
- package/dist/e2e/runner.d.ts +4 -0
- package/dist/e2e/runner.d.ts.map +1 -0
- package/dist/e2e/runner.js +116 -0
- package/dist/e2e/runner.js.map +1 -0
- package/dist/e2e/setup-google-guest.d.ts +19 -0
- package/dist/e2e/setup-google-guest.d.ts.map +1 -0
- package/dist/e2e/setup-google-guest.js +205 -0
- package/dist/e2e/setup-google-guest.js.map +1 -0
- package/dist/e2e/suite-utils.d.ts +19 -0
- package/dist/e2e/suite-utils.d.ts.map +1 -0
- package/dist/e2e/suite-utils.js +60 -0
- package/dist/e2e/suite-utils.js.map +1 -0
- package/dist/e2e/suites/agent.d.ts +3 -0
- package/dist/e2e/suites/agent.d.ts.map +1 -0
- package/dist/e2e/suites/agent.js +33 -0
- package/dist/e2e/suites/agent.js.map +1 -0
- package/dist/e2e/suites/browser.d.ts +3 -0
- package/dist/e2e/suites/browser.d.ts.map +1 -0
- package/dist/e2e/suites/browser.js +58 -0
- package/dist/e2e/suites/browser.js.map +1 -0
- package/dist/e2e/suites/cua.d.ts +3 -0
- package/dist/e2e/suites/cua.d.ts.map +1 -0
- package/dist/e2e/suites/cua.js +68 -0
- package/dist/e2e/suites/cua.js.map +1 -0
- package/dist/e2e/suites/google.d.ts +3 -0
- package/dist/e2e/suites/google.d.ts.map +1 -0
- package/dist/e2e/suites/google.js +145 -0
- package/dist/e2e/suites/google.js.map +1 -0
- package/dist/e2e/suites/memory.d.ts +3 -0
- package/dist/e2e/suites/memory.d.ts.map +1 -0
- package/dist/e2e/suites/memory.js +50 -0
- package/dist/e2e/suites/memory.js.map +1 -0
- package/dist/e2e/suites/obs.d.ts +3 -0
- package/dist/e2e/suites/obs.d.ts.map +1 -0
- package/dist/e2e/suites/obs.js +29 -0
- package/dist/e2e/suites/obs.js.map +1 -0
- package/dist/e2e/suites/self.d.ts +3 -0
- package/dist/e2e/suites/self.d.ts.map +1 -0
- package/dist/e2e/suites/self.js +65 -0
- package/dist/e2e/suites/self.js.map +1 -0
- package/dist/e2e/suites/upgrade.d.ts +3 -0
- package/dist/e2e/suites/upgrade.d.ts.map +1 -0
- package/dist/e2e/suites/upgrade.js +31 -0
- package/dist/e2e/suites/upgrade.js.map +1 -0
- package/dist/e2e/types.d.ts +91 -0
- package/dist/e2e/types.d.ts.map +1 -0
- package/dist/e2e/types.js +2 -0
- package/dist/e2e/types.js.map +1 -0
- package/dist/index.js.map +1 -1
- package/dist/service/daemon.d.ts +1 -0
- package/dist/service/daemon.d.ts.map +1 -1
- package/dist/service/daemon.js +110 -15
- package/dist/service/daemon.js.map +1 -1
- package/dist/tools/upgrade.d.ts +8 -0
- package/dist/tools/upgrade.d.ts.map +1 -1
- package/dist/tools/upgrade.js +64 -8
- package/dist/tools/upgrade.js.map +1 -1
- package/dist-agent/bundle.cjs +32037 -30064
- package/package.json +1 -1
- 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 -304
- package/dist/agent/engines/claude/session.d.ts.map +0 -1
- package/dist/agent/engines/claude/session.js +0 -1233
- 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-factory.d.ts +0 -5
- package/dist/agent/engines/engine-factory.d.ts.map +0 -1
- package/dist/agent/engines/engine-factory.js +0 -7
- package/dist/agent/engines/engine-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 -19
- package/dist/agent/engines/openai/file-session.d.ts.map +0 -1
- package/dist/agent/engines/openai/file-session.js +0 -78
- 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 -55
- package/dist/agent/engines/openai/session.d.ts.map +0 -1
- package/dist/agent/engines/openai/session.js +0 -447
- package/dist/agent/engines/openai/session.js.map +0 -1
- package/dist/agent/engines/openai/tools.d.ts +0 -15
- package/dist/agent/engines/openai/tools.d.ts.map +0 -1
- package/dist/agent/engines/openai/tools.js +0 -221
- package/dist/agent/engines/openai/tools.js.map +0 -1
- package/dist/agent/engines/pi/session.d.ts +0 -54
- package/dist/agent/engines/pi/session.d.ts.map +0 -1
- package/dist/agent/engines/pi/session.js +0 -397
- package/dist/agent/engines/pi/session.js.map +0 -1
- package/dist/agent/engines/pi/tools.d.ts +0 -19
- package/dist/agent/engines/pi/tools.d.ts.map +0 -1
- package/dist/agent/engines/pi/tools.js +0 -127
- package/dist/agent/engines/pi/tools.js.map +0 -1
- package/dist/agent/engines/session-types.d.ts +0 -153
- 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/model-provider.d.ts +0 -103
- package/dist/agent/model-provider.d.ts.map +0 -1
- package/dist/agent/model-provider.js +0 -540
- package/dist/agent/model-provider.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/realtime/websocket.d.ts +0 -7
- package/dist/realtime/websocket.d.ts.map +0 -1
- package/dist/realtime/websocket.js +0 -65
- package/dist/realtime/websocket.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
- package/dist-agent/realtime/assets/index.html +0 -1058
- package/dist-agent/realtime/assets/samples/alloy.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/ash.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/ballad.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/cedar.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/coral.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/echo.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/marin.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/sage.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/shimmer.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/verse.mp3 +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/e2e/suites/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE3E,MAAM,CAAC,MAAM,UAAU,GAAa;IAClC,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG;YACZ,MAAM,OAAO,CAAC,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,GAAG,EAAE;gBACtE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACzC,MAAM,QAAQ,GACZ,CAAC,QAAQ,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;oBAC9D,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;oBACtD,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;oBACxD,CAAC,QAAQ,KAAK,cAAc,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBACtE,IAAI,CAAC,QAAQ;oBAAE,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,wCAAwC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACnG,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,QAAQ,aAAa,CAAC,CAAC,CAAC;YAChE,CAAC,CAAC;YACF,MAAM,OAAO,CAAC,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,GAAG,EAAE;gBACvE,gBAAgB,EAAE,CAAC;gBACnB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC;YACF,MAAM,OAAO,CAAC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,GAAG,EAAE;gBACtE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC7D,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC,CAAC;gBAC5F,CAAC;gBACD,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,yDAAyD,CAAC,CAAC,CAAC;YAC7F,CAAC,CAAC;SACH,CAAC;QACF,OAAO,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/e2e/suites/browser.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,eAAO,MAAM,YAAY,EAAE,QAkD1B,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { chromium } from "playwright";
|
|
4
|
+
import { ensureBrowser, getCdpEndpoint } from "../../agent/browser-launcher.js";
|
|
5
|
+
import { startLocalTestServer } from "../local-test-server.js";
|
|
6
|
+
import { buildSuiteResult, ok, runTest, skipped } from "../suite-utils.js";
|
|
7
|
+
export const browserSuite = {
|
|
8
|
+
id: "browser",
|
|
9
|
+
name: "Browser",
|
|
10
|
+
run: async (context) => {
|
|
11
|
+
const started = Date.now();
|
|
12
|
+
const localServer = await startLocalTestServer();
|
|
13
|
+
const tests = [];
|
|
14
|
+
try {
|
|
15
|
+
tests.push(await runTest("browser", "browser.ensure_browser", "Ensure browser", async () => {
|
|
16
|
+
await ensureBrowser();
|
|
17
|
+
return ok("Browser ensured");
|
|
18
|
+
}));
|
|
19
|
+
tests.push(await runTest("browser", "browser.local_page", "Local page interaction", async () => {
|
|
20
|
+
const browser = await chromium.connectOverCDP(getCdpEndpoint());
|
|
21
|
+
const contextObj = browser.contexts()[0] ?? await browser.newContext();
|
|
22
|
+
const page = contextObj.pages()[0] ?? await contextObj.newPage();
|
|
23
|
+
await page.goto(`${localServer.baseUrl}/e2e/browser?runId=${context.runId}`);
|
|
24
|
+
await page.fill("#text-input", `VisionClaw E2E ${context.runId}`);
|
|
25
|
+
await page.click("#click-button");
|
|
26
|
+
await page.check("#checkbox");
|
|
27
|
+
const result = await page.locator("#result").textContent();
|
|
28
|
+
if (result !== "checked")
|
|
29
|
+
throw new Error(`Unexpected result: ${result ?? "null"}`);
|
|
30
|
+
return ok("Local page interactions succeeded");
|
|
31
|
+
}));
|
|
32
|
+
tests.push(await runTest("browser", "browser.screenshot", "Screenshot", async () => {
|
|
33
|
+
const browser = await chromium.connectOverCDP(getCdpEndpoint());
|
|
34
|
+
const page = browser.contexts()[0].pages().at(0);
|
|
35
|
+
if (page === undefined)
|
|
36
|
+
return skipped("No Playwright page available");
|
|
37
|
+
const screenshotPath = path.join(context.artifactsDir, "browser-screenshot.png");
|
|
38
|
+
await page.screenshot({ path: screenshotPath });
|
|
39
|
+
if (!fs.existsSync(screenshotPath))
|
|
40
|
+
throw new Error("Screenshot not saved");
|
|
41
|
+
return ok("Screenshot captured", { screenshotPath });
|
|
42
|
+
}));
|
|
43
|
+
if (context.mode === "full") {
|
|
44
|
+
tests.push(await runTest("browser", "browser.network", "Network capture", async () => {
|
|
45
|
+
const resp = await fetch(`${localServer.baseUrl}/api/echo?runId=${context.runId}`);
|
|
46
|
+
if (!resp.ok)
|
|
47
|
+
throw new Error(`Echo endpoint failed: ${resp.status}`);
|
|
48
|
+
return ok("Network request succeeded");
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
await localServer.close();
|
|
54
|
+
}
|
|
55
|
+
return buildSuiteResult("browser", "Browser", started, tests);
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/e2e/suites/browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cua.d.ts","sourceRoot":"","sources":["../../../src/e2e/suites/cua.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,eAAO,MAAM,QAAQ,EAAE,QA2DtB,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { chromium } from "playwright";
|
|
4
|
+
import { ensureBrowser, getCdpEndpoint } from "../../agent/browser-launcher.js";
|
|
5
|
+
import { captureScreen, click, initDisplaySize, isDisplaySizeInitialized, typeText, } from "../../tools/desktop-executor-factory.js";
|
|
6
|
+
import { startLocalTestServer } from "../local-test-server.js";
|
|
7
|
+
import { buildSuiteResult, ok, runTest, skipped, warning } from "../suite-utils.js";
|
|
8
|
+
export const cuaSuite = {
|
|
9
|
+
id: "cua",
|
|
10
|
+
name: "CUA",
|
|
11
|
+
run: async (context) => {
|
|
12
|
+
const started = Date.now();
|
|
13
|
+
const localServer = await startLocalTestServer();
|
|
14
|
+
const tests = [];
|
|
15
|
+
try {
|
|
16
|
+
tests.push(await runTest("cua", "cua.display_size", "Display size", async () => {
|
|
17
|
+
if (!isDisplaySizeInitialized()) {
|
|
18
|
+
try {
|
|
19
|
+
await initDisplaySize();
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
return skipped(`Display size unavailable: ${err instanceof Error ? err.message : String(err)}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return ok("Display size ready");
|
|
26
|
+
}));
|
|
27
|
+
tests.push(await runTest("cua", "cua.screenshot", "Screenshot", async () => {
|
|
28
|
+
const shot = await captureScreen();
|
|
29
|
+
if (!shot.base64)
|
|
30
|
+
throw new Error("Screenshot empty");
|
|
31
|
+
const screenshotPath = path.join(context.artifactsDir, "cua-screenshot.png");
|
|
32
|
+
fs.writeFileSync(screenshotPath, Buffer.from(shot.base64, "base64"));
|
|
33
|
+
return ok("Screenshot captured", { screenshotPath });
|
|
34
|
+
}));
|
|
35
|
+
tests.push(await runTest("cua", "cua.open_local_page", "Open local page", async () => {
|
|
36
|
+
await ensureBrowser();
|
|
37
|
+
const browser = await chromium.connectOverCDP(getCdpEndpoint());
|
|
38
|
+
const contextObj = browser.contexts()[0] ?? await browser.newContext();
|
|
39
|
+
const page = contextObj.pages()[0] ?? await contextObj.newPage();
|
|
40
|
+
await page.goto(`${localServer.baseUrl}/e2e/cua?runId=${context.runId}`);
|
|
41
|
+
return ok("Local CUA page opened");
|
|
42
|
+
}));
|
|
43
|
+
tests.push(await runTest("cua", "cua.click_and_type", "Click and type", async () => {
|
|
44
|
+
if (!isDisplaySizeInitialized()) {
|
|
45
|
+
return skipped("Display size not initialized; grant Accessibility and Screen Recording permissions");
|
|
46
|
+
}
|
|
47
|
+
const browser = await chromium.connectOverCDP(getCdpEndpoint());
|
|
48
|
+
const page = browser.contexts()[0]?.pages().find((p) => p.url().includes("/e2e/cua"));
|
|
49
|
+
if (!page)
|
|
50
|
+
return skipped("CUA test page not open");
|
|
51
|
+
const box = await page.locator("#text-input").boundingBox();
|
|
52
|
+
if (!box)
|
|
53
|
+
return warning("Could not resolve input bounding box");
|
|
54
|
+
await click(Math.round(box.x + box.width / 2), Math.round(box.y + box.height / 2));
|
|
55
|
+
await typeText(`VisionClaw E2E ${context.runId}`);
|
|
56
|
+
const value = await page.inputValue("#text-input");
|
|
57
|
+
if (!value.includes(context.runId))
|
|
58
|
+
throw new Error("Typed value not reflected in page");
|
|
59
|
+
return ok("CUA click/type verified via Playwright");
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
await localServer.close();
|
|
64
|
+
}
|
|
65
|
+
return buildSuiteResult("cua", "CUA", started, tests);
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=cua.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cua.js","sourceRoot":"","sources":["../../../src/e2e/suites/cua.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/e2e/suites/google.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAc,QAAQ,EAAE,MAAM,aAAa,CAAC;AAOxD,eAAO,MAAM,WAAW,EAAE,QAmIzB,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import { GoogleCalendarClient } from "../../calendar/google-calendar.js";
|
|
5
|
+
import { GmailEmailClient } from "../../email/gmail-email.js";
|
|
6
|
+
import { GoogleDriveClient } from "../../drive/google-drive.js";
|
|
7
|
+
import { hasLocalGoogleRefreshToken } from "../../google/token-file.js";
|
|
8
|
+
import { createGuestCalendarClient, loadE2EGuestTokens } from "../setup-google-guest.js";
|
|
9
|
+
import { buildSuiteResult, ok, runTest, skipped, warning } from "../suite-utils.js";
|
|
10
|
+
function guestEmail(context) {
|
|
11
|
+
return context.config.e2e?.google?.meetGuestEmail ?? process.env.E2E_GOOGLE_MEET_GUEST_EMAIL;
|
|
12
|
+
}
|
|
13
|
+
export const googleSuite = {
|
|
14
|
+
id: "google",
|
|
15
|
+
name: "Google Workspace",
|
|
16
|
+
run: async (context) => {
|
|
17
|
+
const started = Date.now();
|
|
18
|
+
const full = context.mode === "full" || context.mode === "google";
|
|
19
|
+
const marker = `VisionClaw E2E ${context.runId}`;
|
|
20
|
+
const tests = [];
|
|
21
|
+
if (!hasLocalGoogleRefreshToken()) {
|
|
22
|
+
tests.push(await runTest("google", "google.auth", "Google auth", () => Promise.resolve(skipped("Google tokens missing"))));
|
|
23
|
+
return buildSuiteResult("google", "Google Workspace", started, tests);
|
|
24
|
+
}
|
|
25
|
+
tests.push(await runTest("google", "google.gmail.list", "Gmail list", async () => {
|
|
26
|
+
const client = new GmailEmailClient(context.config);
|
|
27
|
+
const emails = await client.listEmails({ maxResults: 1 });
|
|
28
|
+
return ok(`Listed ${emails.length} email(s)`);
|
|
29
|
+
}));
|
|
30
|
+
tests.push(await runTest("google", "google.calendar.list", "Calendar list", async () => {
|
|
31
|
+
const client = new GoogleCalendarClient(context.config);
|
|
32
|
+
const now = new Date();
|
|
33
|
+
const events = await client.listUpcomingEvents(now, new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000), 5);
|
|
34
|
+
return ok(`Listed ${events.length} event(s)`);
|
|
35
|
+
}));
|
|
36
|
+
tests.push(await runTest("google", "google.drive.list", "Drive list", async () => {
|
|
37
|
+
const client = new GoogleDriveClient(context.config);
|
|
38
|
+
const files = await client.listFiles({ maxResults: 5 });
|
|
39
|
+
return ok(`Listed ${files.length} file(s)`);
|
|
40
|
+
}));
|
|
41
|
+
if (full) {
|
|
42
|
+
let messageId;
|
|
43
|
+
tests.push(await runTest("google", "google.gmail.send_search_read", "Gmail send/search/read", async () => {
|
|
44
|
+
const client = new GmailEmailClient(context.config);
|
|
45
|
+
const sent = await client.sendEmail({
|
|
46
|
+
to: context.config.gmail,
|
|
47
|
+
subject: marker,
|
|
48
|
+
body: `${marker}\nPlease ignore.`,
|
|
49
|
+
});
|
|
50
|
+
messageId = sent.id;
|
|
51
|
+
if (!messageId)
|
|
52
|
+
throw new Error("Send did not return message id");
|
|
53
|
+
context.addCleanupItem({ type: "gmail_message", id: messageId, suite: "google" });
|
|
54
|
+
const found = await client.listEmails({ query: `subject:"${marker}"`, maxResults: 5 });
|
|
55
|
+
if (found.length === 0)
|
|
56
|
+
throw new Error("Sent email not found");
|
|
57
|
+
const detail = await client.getEmail(found[0].id);
|
|
58
|
+
if (!detail.bodyText?.includes(marker))
|
|
59
|
+
throw new Error("Email body mismatch");
|
|
60
|
+
return ok("Gmail roundtrip succeeded");
|
|
61
|
+
}));
|
|
62
|
+
let eventId;
|
|
63
|
+
let hangoutLink;
|
|
64
|
+
tests.push(await runTest("google", "google.calendar.create_update_delete", "Calendar CRUD", async () => {
|
|
65
|
+
const client = new GoogleCalendarClient(context.config);
|
|
66
|
+
const start = new Date(Date.now() + 10 * 60 * 1000);
|
|
67
|
+
const end = new Date(start.getTime() + 15 * 60 * 1000);
|
|
68
|
+
const created = await client.createEvent({
|
|
69
|
+
summary: marker,
|
|
70
|
+
description: marker,
|
|
71
|
+
start,
|
|
72
|
+
end,
|
|
73
|
+
});
|
|
74
|
+
eventId = created.id ?? undefined;
|
|
75
|
+
if (!eventId)
|
|
76
|
+
throw new Error("Calendar event id missing");
|
|
77
|
+
context.addCleanupItem({ type: "calendar_event", id: eventId, suite: "google" });
|
|
78
|
+
await client.updateEvent(eventId, { summary: `${marker} updated` });
|
|
79
|
+
return ok("Calendar create/update succeeded", { eventId });
|
|
80
|
+
}));
|
|
81
|
+
tests.push(await runTest("google", "google.calendar.guest_can_see_event", "Guest can see meeting", async () => {
|
|
82
|
+
const email = guestEmail(context);
|
|
83
|
+
if (!email)
|
|
84
|
+
return skipped("Guest email not configured");
|
|
85
|
+
if (!loadE2EGuestTokens())
|
|
86
|
+
return skipped("Guest OAuth token missing; run e2e setup google-guest");
|
|
87
|
+
const owner = new GoogleCalendarClient(context.config);
|
|
88
|
+
const start = new Date(Date.now() + 20 * 60 * 1000);
|
|
89
|
+
const end = new Date(start.getTime() + 15 * 60 * 1000);
|
|
90
|
+
const created = await owner.createEvent({
|
|
91
|
+
summary: `${marker} Meeting`,
|
|
92
|
+
description: marker,
|
|
93
|
+
start,
|
|
94
|
+
end,
|
|
95
|
+
attendees: [email],
|
|
96
|
+
});
|
|
97
|
+
eventId = created.id ?? eventId;
|
|
98
|
+
hangoutLink = created.hangoutLink ?? undefined;
|
|
99
|
+
if (eventId)
|
|
100
|
+
context.addCleanupItem({ type: "calendar_event", id: eventId, suite: "google" });
|
|
101
|
+
if (!hangoutLink)
|
|
102
|
+
throw new Error("Meet link not generated");
|
|
103
|
+
const guestCalendar = createGuestCalendarClient(context.config);
|
|
104
|
+
if (!guestCalendar)
|
|
105
|
+
return skipped("Guest calendar client unavailable");
|
|
106
|
+
await new Promise((resolve) => setTimeout(resolve, 3000));
|
|
107
|
+
const res = await guestCalendar.events.list({
|
|
108
|
+
calendarId: "primary",
|
|
109
|
+
timeMin: start.toISOString(),
|
|
110
|
+
timeMax: new Date(end.getTime() + 60 * 60 * 1000).toISOString(),
|
|
111
|
+
q: marker,
|
|
112
|
+
singleEvents: true,
|
|
113
|
+
});
|
|
114
|
+
const guestEvents = res.data.items ?? [];
|
|
115
|
+
if (guestEvents.length === 0)
|
|
116
|
+
throw new Error("Guest cannot see invited event");
|
|
117
|
+
return ok("Guest can see invited event", { eventId, hasMeetLink: !!hangoutLink });
|
|
118
|
+
}));
|
|
119
|
+
tests.push(await runTest("google", "google.meet.guest_can_open_join_page", "Guest Meet page", () => {
|
|
120
|
+
if (!hangoutLink)
|
|
121
|
+
return Promise.resolve(skipped("Meet link unavailable from previous test"));
|
|
122
|
+
const profileDir = context.config.e2e?.google?.meetGuestBrowserProfileDir;
|
|
123
|
+
if (!profileDir)
|
|
124
|
+
return Promise.resolve(warning("Guest browser profile not configured; skipping Meet page verification"));
|
|
125
|
+
return Promise.resolve(warning("Guest browser profile verification not automated in v1"));
|
|
126
|
+
}));
|
|
127
|
+
tests.push(await runTest("google", "google.drive.crud", "Drive CRUD", async () => {
|
|
128
|
+
const client = new GoogleDriveClient(context.config);
|
|
129
|
+
const folder = await client.createFolder({ name: marker });
|
|
130
|
+
const tmpFile = path.join(os.tmpdir(), `${context.runId}.txt`);
|
|
131
|
+
fs.writeFileSync(tmpFile, marker, "utf-8");
|
|
132
|
+
context.addCleanupItem({ type: "local_file", id: tmpFile, suite: "google" });
|
|
133
|
+
context.addCleanupItem({ type: "drive_file", id: folder.id, suite: "google", details: { role: "folder" } });
|
|
134
|
+
const uploaded = await client.uploadFile({ localPath: tmpFile, folderId: folder.id, name: `${marker}.txt` });
|
|
135
|
+
context.addCleanupItem({ type: "drive_file", id: uploaded.id, suite: "google", details: { role: "file" } });
|
|
136
|
+
const listed = await client.listFiles({ query: `name contains '${marker}'` });
|
|
137
|
+
if (listed.length === 0)
|
|
138
|
+
throw new Error("Uploaded file not found");
|
|
139
|
+
return ok("Drive CRUD succeeded");
|
|
140
|
+
}));
|
|
141
|
+
}
|
|
142
|
+
return buildSuiteResult("google", "Google Workspace", started, tests);
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
//# sourceMappingURL=google.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/e2e/suites/google.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/e2e/suites/memory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,eAAO,MAAM,WAAW,EAAE,QA2CzB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { executeMemoryCommand } from "../../tools/memory.js";
|
|
2
|
+
import { buildSuiteResult, ok, runTest } from "../suite-utils.js";
|
|
3
|
+
export const memorySuite = {
|
|
4
|
+
id: "memory",
|
|
5
|
+
name: "Memory",
|
|
6
|
+
run: async (context) => {
|
|
7
|
+
const started = Date.now();
|
|
8
|
+
const memoryPath = `/memories/e2e-${context.runId}.txt`;
|
|
9
|
+
const marker = `VisionClaw E2E ${context.runId}`;
|
|
10
|
+
const tests = [
|
|
11
|
+
await runTest("memory", "memory.create", "Create memory file", () => {
|
|
12
|
+
const result = executeMemoryCommand({ command: "create", path: memoryPath, file_text: marker });
|
|
13
|
+
if (result.isError)
|
|
14
|
+
throw new Error(result.content[0]?.type === "text" ? result.content[0].text : "create failed");
|
|
15
|
+
return Promise.resolve(ok("Memory file created"));
|
|
16
|
+
}),
|
|
17
|
+
await runTest("memory", "memory.view", "View memory file", () => {
|
|
18
|
+
const result = executeMemoryCommand({ command: "view", path: memoryPath });
|
|
19
|
+
const text = result.content[0]?.type === "text" ? result.content[0].text : "";
|
|
20
|
+
if (!text.includes(marker))
|
|
21
|
+
throw new Error("Memory view mismatch");
|
|
22
|
+
return Promise.resolve(ok("Memory view succeeded"));
|
|
23
|
+
}),
|
|
24
|
+
await runTest("memory", "memory.str_replace", "Replace memory content", () => {
|
|
25
|
+
const updated = `${marker} updated`;
|
|
26
|
+
const result = executeMemoryCommand({
|
|
27
|
+
command: "str_replace",
|
|
28
|
+
path: memoryPath,
|
|
29
|
+
old_str: marker,
|
|
30
|
+
new_str: updated,
|
|
31
|
+
});
|
|
32
|
+
if (result.isError)
|
|
33
|
+
throw new Error("str_replace failed");
|
|
34
|
+
const view = executeMemoryCommand({ command: "view", path: memoryPath });
|
|
35
|
+
const text = view.content[0]?.type === "text" ? view.content[0].text : "";
|
|
36
|
+
if (!text.includes("updated"))
|
|
37
|
+
throw new Error("Updated content not found");
|
|
38
|
+
return Promise.resolve(ok("Memory replace succeeded"));
|
|
39
|
+
}),
|
|
40
|
+
await runTest("memory", "memory.delete", "Delete memory file", () => {
|
|
41
|
+
const result = executeMemoryCommand({ command: "delete", path: memoryPath });
|
|
42
|
+
if (result.isError)
|
|
43
|
+
throw new Error("delete failed");
|
|
44
|
+
return Promise.resolve(ok("Memory delete succeeded"));
|
|
45
|
+
}),
|
|
46
|
+
];
|
|
47
|
+
return buildSuiteResult("memory", "Memory", started, tests);
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/e2e/suites/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"obs.d.ts","sourceRoot":"","sources":["../../../src/e2e/suites/obs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,eAAO,MAAM,QAAQ,EAAE,QAuBtB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { startObsServer } from "../../obs/server.js";
|
|
2
|
+
import { buildSuiteResult, ok, runTest } from "../suite-utils.js";
|
|
3
|
+
export const obsSuite = {
|
|
4
|
+
id: "obs",
|
|
5
|
+
name: "Observability",
|
|
6
|
+
run: async (context) => {
|
|
7
|
+
const started = Date.now();
|
|
8
|
+
const tests = [
|
|
9
|
+
await runTest("obs", "obs.local_health", "OBS local health", async () => {
|
|
10
|
+
const server = startObsServer({
|
|
11
|
+
host: "127.0.0.1",
|
|
12
|
+
port: 0,
|
|
13
|
+
config: context.config,
|
|
14
|
+
});
|
|
15
|
+
try {
|
|
16
|
+
const resp = await fetch(`http://127.0.0.1:${server.port}/obs/status`);
|
|
17
|
+
if (!resp.ok)
|
|
18
|
+
throw new Error(`OBS status failed: ${resp.status}`);
|
|
19
|
+
return ok("OBS local health endpoint reachable", { port: server.port });
|
|
20
|
+
}
|
|
21
|
+
finally {
|
|
22
|
+
await server.close();
|
|
23
|
+
}
|
|
24
|
+
}),
|
|
25
|
+
];
|
|
26
|
+
return buildSuiteResult("obs", "Observability", started, tests);
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=obs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"obs.js","sourceRoot":"","sources":["../../../src/e2e/suites/obs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAElE,MAAM,CAAC,MAAM,QAAQ,GAAa;IAChC,EAAE,EAAE,KAAK;IACT,IAAI,EAAE,eAAe;IACrB,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG;YACZ,MAAM,OAAO,CAAC,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,KAAK,IAAI,EAAE;gBACtE,MAAM,MAAM,GAAG,cAAc,CAAC;oBAC5B,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,CAAC;oBACP,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB,CAAC,CAAC;gBACH,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,oBAAoB,MAAM,CAAC,IAAI,aAAa,CAAC,CAAC;oBACvE,IAAI,CAAC,IAAI,CAAC,EAAE;wBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;oBACnE,OAAO,EAAE,CAAC,qCAAqC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC1E,CAAC;wBAAS,CAAC;oBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACvB,CAAC;YACH,CAAC,CAAC;SACH,CAAC;QACF,OAAO,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self.d.ts","sourceRoot":"","sources":["../../../src/e2e/suites/self.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,eAAO,MAAM,SAAS,EAAE,QAoDvB,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import { createToolServer } from "../../tools/index.js";
|
|
3
|
+
import { loadConfig, loadOwnerConfig, getConfigDir, getMemoriesDir, getTokensFile } from "../../config/index.js";
|
|
4
|
+
import { hasLocalGoogleRefreshToken } from "../../google/token-file.js";
|
|
5
|
+
import { isDisplaySizeInitialized } from "../../tools/desktop-executor-factory.js";
|
|
6
|
+
import { ensureBrowser, getCdpEndpoint } from "../../agent/browser-launcher.js";
|
|
7
|
+
import { buildSuiteResult, ok, runTest, skipped } from "../suite-utils.js";
|
|
8
|
+
export const selfSuite = {
|
|
9
|
+
id: "self",
|
|
10
|
+
name: "Self check",
|
|
11
|
+
run: async (context) => {
|
|
12
|
+
const started = Date.now();
|
|
13
|
+
const tests = await Promise.all([
|
|
14
|
+
runTest("self", "self.config_load", "Config load", () => {
|
|
15
|
+
loadConfig();
|
|
16
|
+
return Promise.resolve(ok("Config loaded"));
|
|
17
|
+
}),
|
|
18
|
+
runTest("self", "self.owner_config_load", "Owner config load", () => {
|
|
19
|
+
try {
|
|
20
|
+
loadOwnerConfig();
|
|
21
|
+
return Promise.resolve(ok("Owner config loaded"));
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return Promise.resolve(skipped("Owner config not available"));
|
|
25
|
+
}
|
|
26
|
+
}),
|
|
27
|
+
runTest("self", "self.required_directories", "Required directories", () => {
|
|
28
|
+
for (const dir of [getConfigDir(), getMemoriesDir()]) {
|
|
29
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
30
|
+
fs.accessSync(dir, fs.constants.W_OK);
|
|
31
|
+
}
|
|
32
|
+
return Promise.resolve(ok("Required directories writable"));
|
|
33
|
+
}),
|
|
34
|
+
runTest("self", "self.tool_server", "Tool server construction", () => {
|
|
35
|
+
createToolServer();
|
|
36
|
+
return Promise.resolve(ok("Tool server created"));
|
|
37
|
+
}),
|
|
38
|
+
runTest("self", "self.secrets_presence", "Secrets presence", () => Promise.resolve(ok("Secret presence checked", {
|
|
39
|
+
googleTokens: hasLocalGoogleRefreshToken() ? "present" : "missing",
|
|
40
|
+
anthropicApiKey: context.config.anthropicApiKey ? "present" : "missing",
|
|
41
|
+
telegramBotToken: context.config.channels.telegram?.botToken ? "present" : "missing",
|
|
42
|
+
}))),
|
|
43
|
+
runTest("self", "self.display_size", "Display size status", () => {
|
|
44
|
+
if (isDisplaySizeInitialized())
|
|
45
|
+
return Promise.resolve(ok("Display size initialized"));
|
|
46
|
+
return Promise.resolve(skipped("Display size not initialized; CUA tests may be limited"));
|
|
47
|
+
}),
|
|
48
|
+
runTest("self", "self.chrome_cdp", "Chrome/CDP status", async () => {
|
|
49
|
+
await ensureBrowser();
|
|
50
|
+
const endpoint = getCdpEndpoint();
|
|
51
|
+
const resp = await fetch(`${endpoint}/json/version`).catch(() => null);
|
|
52
|
+
if (resp?.ok)
|
|
53
|
+
return ok("CDP endpoint reachable", { endpoint });
|
|
54
|
+
return skipped("Chrome/CDP not reachable");
|
|
55
|
+
}),
|
|
56
|
+
runTest("self", "self.google_tokens_file", "Google tokens file", () => {
|
|
57
|
+
if (fs.existsSync(getTokensFile()))
|
|
58
|
+
return Promise.resolve(ok("Google tokens file present"));
|
|
59
|
+
return Promise.resolve(skipped("Google tokens file missing"));
|
|
60
|
+
}),
|
|
61
|
+
]);
|
|
62
|
+
return buildSuiteResult("self", "Self check", started, tests);
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=self.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self.js","sourceRoot":"","sources":["../../../src/e2e/suites/self.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/e2e/suites/upgrade.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,eAAO,MAAM,YAAY,EAAE,QAyB1B,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { getCurrentVersion, getNpmVersionByTag } from "../../utils/version-check.js";
|
|
2
|
+
import { resolvePnpmCommand } from "../../tools/upgrade.js";
|
|
3
|
+
import { buildSuiteResult, ok, runTest, skipped } from "../suite-utils.js";
|
|
4
|
+
export const upgradeSuite = {
|
|
5
|
+
id: "upgrade",
|
|
6
|
+
name: "Upgrade",
|
|
7
|
+
run: async (context) => {
|
|
8
|
+
const started = Date.now();
|
|
9
|
+
const tests = [
|
|
10
|
+
await runTest("upgrade", "upgrade.current_version", "Current version", () => Promise.resolve(ok(`Current version ${getCurrentVersion()}`))),
|
|
11
|
+
await runTest("upgrade", "upgrade.npm_metadata", "NPM metadata", async () => ok(`Latest npm version ${await getNpmVersionByTag("latest")}`)),
|
|
12
|
+
await runTest("upgrade", "upgrade.pnpm_preflight", "pnpm preflight", async () => {
|
|
13
|
+
try {
|
|
14
|
+
const pnpm = await resolvePnpmCommand();
|
|
15
|
+
return ok(`pnpm available (${pnpm.version})`);
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
return skipped(err instanceof Error ? err.message : String(err));
|
|
19
|
+
}
|
|
20
|
+
}),
|
|
21
|
+
await runTest("upgrade", "upgrade.apply", "Apply upgrade", () => {
|
|
22
|
+
if (!context.options.includeDestructive) {
|
|
23
|
+
return Promise.resolve(skipped("Upgrade apply skipped unless --include-destructive is set"));
|
|
24
|
+
}
|
|
25
|
+
return Promise.resolve(skipped("Destructive upgrade not executed in automated e2e v1"));
|
|
26
|
+
}),
|
|
27
|
+
];
|
|
28
|
+
return buildSuiteResult("upgrade", "Upgrade", started, tests);
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=upgrade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/e2e/suites/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE3E,MAAM,CAAC,MAAM,YAAY,GAAa;IACpC,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG;YACZ,MAAM,OAAO,CAAC,SAAS,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,mBAAmB,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC;YAC3I,MAAM,OAAO,CAAC,SAAS,EAAE,sBAAsB,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,sBAAsB,MAAM,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC5I,MAAM,OAAO,CAAC,SAAS,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBAC9E,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,kBAAkB,EAAE,CAAC;oBACxC,OAAO,EAAE,CAAC,mBAAmB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;gBAChD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,OAAO,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC,CAAC;YACF,MAAM,OAAO,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,EAAE;gBAC9D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;oBACxC,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,CAAC;gBAC/F,CAAC;gBACD,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,CAAC;YAC1F,CAAC,CAAC;SACH,CAAC;QACF,OAAO,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;CACF,CAAC"}
|