@xopcai/xopc 0.0.250 → 0.0.252
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/README.md +8 -5
- package/README.zh-CN.md +8 -5
- package/dist/browser-ext/dist/background.js +358 -768
- package/dist/browser-ext/manifest.json +1 -2
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{activity-store-DfBjTSo9.js → activity-store-w3eq3YpP.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BN6FJXkJ.js → agent-avatar-dicebear-k039rbUz.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-C7rZH1A2.js → agent-defaults-settings-panel-D4J4oq8p.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-CgGaoo4z.js → agents-Bmth_bSQ.js} +1 -1
- package/dist/gateway/static/root/assets/{api-zxpcJfgj.js → api-2joIfbrH.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-D2gMshuS.js → app-management-settings-panel-ByJ4kiD0.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-wMu0jSKx.js → appearance-settings-BK2Jga-B.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-B3ky7cWU.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-u6EE3JV8.js → archive-plugin-DMDKtYpi.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-DbJurnv-.js → attachment-load-B764Ql3Z.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-Ew_e5HDn.js → automations-page-D-sO8CZe.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-Ds5-_-9z.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-DtDFNfPM.js → binary-plugins-fxtzYRpv.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-CnAwmabq.js → block-editor-Bcjtvckh.js} +50 -50
- package/dist/gateway/static/root/assets/browser-automation-inputs-BSmnusjD.js +1 -0
- package/dist/gateway/static/root/assets/browser-automations-page-DC_OQIBk.js +3 -0
- package/dist/gateway/static/root/assets/browser-settings-page-C1FojyG6.js +3 -0
- package/dist/gateway/static/root/assets/capabilities-settings-panel-Bs59UCut.js +7 -0
- package/dist/gateway/static/root/assets/channels-settings-CM9vNmoo.js +1 -0
- package/dist/gateway/static/root/assets/{channels-status-swr-CX-yWwLD.js → channels-status-swr-BuWjIG_a.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-CryTDNdD.js → chat-terminal-dock-5SevEo_I.js} +2 -2
- package/dist/gateway/static/root/assets/connectors-page-BPZ44D-V.js +2 -0
- package/dist/gateway/static/root/assets/{cron-expression-ji5aWrjG.js → cron-expression-DtsfalBM.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-Dro_w3eX.js → date-picker-tDEQV5TP.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-Ce19KKnX.js → dependency-picker-HhNwg0Y2.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-DsSi-3uZ.js → desktop-pet-acU4Li-C.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-8WQ4woJy.js → desktop-pet-settings-R84AR0Pe.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-CgvEBfLZ.js → extension-debug-page-CrLlRkSN.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DkznBbMj.js → extension-page-BH5lmZXE.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-BOjhchK2.js → extension-settings-page-BscjNAd1.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-CMNbl0FZ.js → gateway-config-swr-9HidFZUd.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-settings-BxLcW6ij.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-CR7Xg8As.js → gateway-startup-retry-DRCPXONr.js} +1 -1
- package/dist/gateway/static/root/assets/heartbeat-settings-K5Zhl2rx.js +1 -0
- package/dist/gateway/static/root/assets/home-page-CZAg9RBv.js +1 -0
- package/dist/gateway/static/root/assets/{image-generation-api-C5mn73ca.js → image-generation-api-CR6Kle8H.js} +1 -1
- package/dist/gateway/static/root/assets/index-D4Ykja-U.js +72 -0
- package/dist/gateway/static/root/assets/index-zIJ3AXgR.css +2 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BYhfzsqe.js → keyboard-shortcuts-settings-B1QR49-7.js} +1 -1
- package/dist/gateway/static/root/assets/languages-5WaOu0Lf.js +2 -0
- package/dist/gateway/static/root/assets/local-app-workbench-page-wicoV-ti.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-vBlknU7C.js → local-apps-page-C74It-T8.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-CF4erhjB.js → locale-store-BfZGZKSs.js} +1 -1
- package/dist/gateway/static/root/assets/logs-page-xX-7S49A.js +2 -0
- package/dist/gateway/static/root/assets/{management-settings-Dnx6mSNe.js → management-settings-1kNnYL97.js} +1 -1
- package/dist/gateway/static/root/assets/markdown-editor-BjMTIM-m.js +1 -0
- package/dist/gateway/static/root/assets/{markdown-view-CQvzsE24.js → markdown-view-DjiwT28p.js} +2 -2
- package/dist/gateway/static/root/assets/{media-plugins-DrMYeHe7.js → media-plugins-B5c0AoS1.js} +1 -1
- package/dist/gateway/static/root/assets/messages-DaIwVWar.js +3 -0
- package/dist/gateway/static/root/assets/{mobile-pairing-wizard-AKgGy3Kx.js → mobile-pairing-wizard-CsIZqK51.js} +1 -1
- package/dist/gateway/static/root/assets/note-detail-panel-CfWxopl4.js +5 -0
- package/dist/gateway/static/root/assets/notes-page-CYN-LCHJ.js +8 -0
- package/dist/gateway/static/root/assets/{page-tabs-CX9T71by.js → page-tabs-CqJN6Ljz.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-DvEHoimN.js → preview-open-alternatives-DqRIGxf4.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-COcr_NUJ.js → product-open-page-DE2nPE_K.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-B5G3LzDq.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-CuVK2mKu.js +1 -0
- package/dist/gateway/static/root/assets/{registry-api-BsRBlji7.js → registry-api-Bpy8XX-5.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-Dnd73xWt.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-CQ13P-mS.js → runtime-tools-settings-panel-Bb4b74-P.js} +2 -2
- package/dist/gateway/static/root/assets/{schema-form-BUVyTpZj.js → schema-form-DoPU5j3J.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-XL4LyKZe.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-0ForzDSS.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-DVY-8_B9.js → settings-form-section-Ci-9WajJ.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-CdiVYyTl.js → settings-page-CL_2F95D.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-DVws6XZc.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-C88YLKm4.js → share-preview-page-XUA3oKQX.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-BwDvcacF.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-BJjrATqE.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-DLir1nM0.js → skills-page-sXXAZDc9.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-BMZAfS3G.js → skills-page.utils-DD79Bl1I.js} +1 -1
- package/dist/gateway/static/root/assets/source-workspace-editor-CVWzt0oT.js +1 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-BM8ivYan.js → system-settings-panel-BEH64qBV.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-0jxMi75O.js +1 -0
- package/dist/gateway/static/root/assets/{theme-store-BOgkc_9D.js → theme-store-CISSxU1c.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-DemxChjo.js → tunnel-api-DrKDhnJm.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-CV3Ui5hu.js → use-autosave-CPYePL-Q.js} +1 -1
- package/dist/gateway/static/root/assets/user-model-page-B6zLDfDl.js +2 -0
- package/dist/gateway/static/root/assets/{vendor-codemirror--gTq3YAI.js → vendor-codemirror-Qdcjid65.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-CUoCi4Sq.js → voice-api-key-field-DKqzrCXx.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-C-ryeIxj.js → voice-config-api-e9xWjwBX.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-BhDlkCMB.js → work-discovery-overlay-kTQug6bq.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-D8CcPc_C.js → workflow-run-setup-panel-m9SKj_GT.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-Bcd1XqP7.js +5 -0
- package/dist/gateway/static/root/index.html +10 -10
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/new-session.js +9 -0
- package/dist/src/agent/agent-manager.d.ts +2 -1
- package/dist/src/agent/agent-manager.js +2 -1
- package/dist/src/agent/coding/repository-instructions.js +2 -2
- package/dist/src/agent/coding/workspace-revision.js +2 -2
- package/dist/src/agent/commands/command-isolation.js +2 -2
- package/dist/src/agent/external-tools/composio-provider.d.ts +1 -0
- package/dist/src/agent/external-tools/composio-provider.js +64 -34
- package/dist/src/agent/external-tools/search-error.js +5 -3
- package/dist/src/agent/service.js +2 -1
- package/dist/src/agent/service.types.d.ts +2 -1
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +4 -0
- package/dist/src/agent/tool-manuals/browser.d.ts +1 -1
- package/dist/src/agent/tool-manuals/browser.js +15 -226
- package/dist/src/agent/tools/browser/tool/browser-use-tool.d.ts +4 -21
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js +48 -165
- package/dist/src/agent/tools/browser/tool/schemas.d.ts +203 -16
- package/dist/src/agent/tools/browser/tool/schemas.js +146 -16
- package/dist/src/agent/tools/browser-automation-tool.d.ts +121 -0
- package/dist/src/agent/tools/browser-automation-tool.js +197 -0
- package/dist/src/agent/tools/factory.d.ts +6 -9
- package/dist/src/agent/tools/factory.js +28 -55
- package/dist/src/agent/tools/index.d.ts +2 -2
- package/dist/src/agent/tools/index.js +3 -3
- package/dist/src/agent/tools/review-workspace.js +2 -2
- package/dist/src/auth/oauth/xopc-cloud.js +3 -1
- package/dist/src/automations/domain/defaults.js +1 -1
- package/dist/src/automations/domain/types.d.ts +5 -5
- package/dist/src/automations/domain/validation.d.ts +12 -12
- package/dist/src/automations/domain/validation.js +3 -3
- package/dist/src/automations/draft/automation-draft-validator.d.ts +3 -3
- package/dist/src/automations/draft/automation-draft-validator.js +1 -1
- package/dist/src/automations/service/action-executor.d.ts +1 -1
- package/dist/src/automations/service/action-executor.js +7 -7
- package/dist/src/browser/{recipes → automations}/index.d.ts +1 -0
- package/dist/src/browser/automations/index.js +4 -0
- package/dist/src/browser/automations/repository.d.ts +13 -0
- package/dist/src/browser/automations/repository.js +60 -0
- package/dist/src/browser/automations/runner.d.ts +17 -0
- package/dist/src/browser/automations/runner.js +173 -0
- package/dist/src/browser/automations/runtime-service.d.ts +6 -0
- package/dist/src/browser/automations/runtime-service.js +37 -0
- package/dist/src/browser/automations/schema.d.ts +144 -0
- package/dist/src/browser/automations/schema.js +135 -0
- package/dist/src/browser/automations/service.d.ts +146 -0
- package/dist/src/browser/automations/service.js +168 -0
- package/dist/src/browser/automations/types.d.ts +90 -0
- package/dist/src/browser/cache-dir-policy.d.ts +1 -1
- package/dist/src/browser/cache-dir-policy.js +1 -4
- package/dist/src/browser/drivers/browser-driver.d.ts +17 -0
- package/dist/src/browser/drivers/create-driver.d.ts +3 -0
- package/dist/src/browser/drivers/create-driver.js +84 -0
- package/dist/src/browser/drivers/extension-driver.d.ts +20 -0
- package/dist/src/browser/drivers/extension-driver.js +47 -0
- package/dist/src/browser/drivers/playwright-driver.d.ts +38 -0
- package/dist/src/browser/drivers/playwright-driver.js +406 -0
- package/dist/src/browser/index.d.ts +10 -15
- package/dist/src/browser/index.js +10 -15
- package/dist/src/browser/install-lock.d.ts +1 -2
- package/dist/src/browser/install-lock.js +3 -9
- package/dist/src/browser/install-progress.d.ts +1 -1
- package/dist/src/browser/observation/format.d.ts +2 -0
- package/dist/src/browser/observation/format.js +26 -0
- package/dist/src/browser/policy/approval-store.d.ts +17 -0
- package/dist/src/browser/policy/approval-store.js +62 -0
- package/dist/src/browser/policy/browser-policy.d.ts +3 -0
- package/dist/src/browser/policy/browser-policy.js +27 -0
- package/dist/src/browser/providers/browser-ext-install.d.ts +1 -1
- package/dist/src/browser/providers/browser-ext-install.js +3 -5
- package/dist/src/browser/providers/browser-use.js +1 -1
- package/dist/src/browser/providers/browserbase.js +1 -1
- package/dist/src/browser/providers/extension-ws-acquire.d.ts +1 -4
- package/dist/src/browser/providers/extension-ws-acquire.js +1 -13
- package/dist/src/browser/providers/extension.d.ts +3 -22
- package/dist/src/browser/providers/extension.js +7 -15
- package/dist/src/browser/providers/index.d.ts +2 -2
- package/dist/src/browser/providers/index.js +3 -3
- package/dist/src/browser/providers/types.d.ts +0 -94
- package/dist/src/browser/readiness.d.ts +4 -22
- package/dist/src/browser/readiness.js +55 -118
- package/dist/src/browser/runtime/browser-runtime.d.ts +30 -0
- package/dist/src/browser/runtime/browser-runtime.js +362 -0
- package/dist/src/browser/url-policy.d.ts +3 -3
- package/dist/src/browser/url-policy.js +7 -6
- package/dist/src/browser/verification/expectation.d.ts +2 -0
- package/dist/src/browser/verification/expectation.js +17 -0
- package/dist/src/cli/command-loaders.js +1 -0
- package/dist/src/cli/command-manifest.js +5 -1
- package/dist/src/cli/commands/browser-cli-helpers.d.ts +0 -6
- package/dist/src/cli/commands/browser-cli-helpers.js +11 -144
- package/dist/src/cli/commands/browser.d.ts +0 -5
- package/dist/src/cli/commands/browser.js +11 -152
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/doctor/checks/node-version.js +25 -9
- package/dist/src/cli/commands/platform.d.ts +1 -0
- package/dist/src/cli/commands/platform.js +111 -0
- package/dist/src/config/loader.js +9 -3
- package/dist/src/config/schema.d.ts +131 -84
- package/dist/src/config/schema.js +112 -59
- package/dist/src/connectors/composio-sessions.js +1 -3
- package/dist/src/extensions/marketplace.js +4 -0
- package/dist/src/files/file-service.js +139 -14
- package/dist/src/gateway/hono/lib/config-payload.d.ts +12 -26
- package/dist/src/gateway/hono/lib/config-payload.js +10 -39
- package/dist/src/gateway/hono/routes/browser-automations.d.ts +3 -0
- package/dist/src/gateway/hono/routes/browser-automations.js +77 -0
- package/dist/src/gateway/hono/routes/browser-install.js +0 -32
- package/dist/src/gateway/hono/routes/browser.d.ts +0 -17
- package/dist/src/gateway/hono/routes/browser.js +46 -568
- package/dist/src/gateway/hono/routes/config-patch/misc.js +8 -1
- package/dist/src/gateway/hono/routes/config.js +0 -11
- package/dist/src/gateway/hono/routes/lazy-bundles.js +5 -5
- package/dist/src/gateway/service.d.ts +4 -6
- package/dist/src/gateway/service.js +20 -23
- package/dist/src/platform/client.d.ts +121 -0
- package/dist/src/platform/client.js +108 -0
- package/dist/src/platform/contracts.d.ts +194 -0
- package/dist/src/platform/contracts.js +150 -0
- package/dist/src/platform/index.d.ts +4 -0
- package/dist/src/platform/index.js +9 -0
- package/dist/src/platform/resolution.d.ts +4 -0
- package/dist/src/platform/resolution.js +16 -0
- package/dist/src/platform/worker.d.ts +6 -0
- package/dist/src/platform/worker.js +75 -0
- package/dist/src/providers/xopc-cloud-config.js +3 -1
- package/dist/src/session/session-context-for-llm.js +41 -1
- package/dist/src/share/hosted-session-share.js +3 -1
- package/dist/src/share/share-thumbnail.js +1 -1
- package/dist/src/storage/sqlite/migrations/153_browser_control_v2.sql +45 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/storage/sqlite/schema.sql +16 -20
- package/dist/src/tasks/home-query-service.js +1 -1
- package/dist/src/tunnel/env.js +3 -1
- package/dist/src/voice/realtime/agentEngine.js +0 -1
- package/package.json +7 -7
- package/dist/gateway/static/root/assets/apps-page-KF1Gnv36.js +0 -1
- package/dist/gateway/static/root/assets/automations-workspace-Ch-ldu35.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-DtVhsHJW.js +0 -8
- package/dist/gateway/static/root/assets/browser-workflow-inputs-BX1-uM9L.js +0 -1
- package/dist/gateway/static/root/assets/browser-workflows-page-CcbUOWDF.js +0 -3
- package/dist/gateway/static/root/assets/capabilities-settings-panel--sXeylhe.js +0 -7
- package/dist/gateway/static/root/assets/channels-settings-AXSBDujZ.js +0 -1
- package/dist/gateway/static/root/assets/code-editor-D4_k-6QN.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-HBHUWohz.js +0 -2
- package/dist/gateway/static/root/assets/gateway-config-api-OEruhhX3.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-BgH3A0LO.js +0 -1
- package/dist/gateway/static/root/assets/heartbeat-settings-C97naDkO.js +0 -1
- package/dist/gateway/static/root/assets/home-page-BBKKme4G.js +0 -1
- package/dist/gateway/static/root/assets/html-workspace-editor-C3DKAkMc.js +0 -1
- package/dist/gateway/static/root/assets/index-BcaF-dgQ.js +0 -72
- package/dist/gateway/static/root/assets/index-DAryGvZ7.css +0 -2
- package/dist/gateway/static/root/assets/local-app-workbench-page-DNncc2tn.js +0 -2
- package/dist/gateway/static/root/assets/logs-page-CizZInrT.js +0 -2
- package/dist/gateway/static/root/assets/markdown-editor-nDLmA_LF.js +0 -2
- package/dist/gateway/static/root/assets/markdown-split-DtBtcHWi.js +0 -1
- package/dist/gateway/static/root/assets/messages-Cf5hpZE6.js +0 -3
- package/dist/gateway/static/root/assets/note-detail-panel-Bw3jD9Jf.js +0 -5
- package/dist/gateway/static/root/assets/notes-page-Dpqq7Z-J.js +0 -8
- package/dist/gateway/static/root/assets/project-detail-page-BuT6MCTs.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-DXWMxOjf.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-7rBCUWzZ.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-gmEOYNb4.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DYYoJcl7.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-BhenBnUj.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-Dq7xIj0_.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-MDI9Lz6z.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-P0_RldWv.js +0 -1
- package/dist/gateway/static/root/assets/user-model-page-CxfnoRVn.js +0 -2
- package/dist/gateway/static/root/assets/workflows-page-Bxn2Dc16.js +0 -5
- package/dist/src/agent/tools/browser-recipe-tool.d.ts +0 -12
- package/dist/src/agent/tools/browser-recipe-tool.js +0 -113
- package/dist/src/browser/actions/extension-registry-bridge.d.ts +0 -5
- package/dist/src/browser/actions/extension-registry-bridge.js +0 -312
- package/dist/src/browser/actions/registry.d.ts +0 -5
- package/dist/src/browser/actions/registry.js +0 -741
- package/dist/src/browser/actions/types.d.ts +0 -65
- package/dist/src/browser/backend-from-config.d.ts +0 -22
- package/dist/src/browser/backend-from-config.js +0 -99
- package/dist/src/browser/browser-command-timeout.d.ts +0 -2
- package/dist/src/browser/browser-command-timeout.js +0 -11
- package/dist/src/browser/cdp-local-launcher.d.ts +0 -35
- package/dist/src/browser/cdp-local-launcher.js +0 -154
- package/dist/src/browser/cdp-supervisor.d.ts +0 -58
- package/dist/src/browser/cdp-supervisor.js +0 -133
- package/dist/src/browser/humanize.d.ts +0 -80
- package/dist/src/browser/humanize.js +0 -363
- package/dist/src/browser/manager.d.ts +0 -50
- package/dist/src/browser/manager.js +0 -251
- package/dist/src/browser/pipeline/output.d.ts +0 -35
- package/dist/src/browser/pipeline/output.js +0 -74
- package/dist/src/browser/pipeline/runner.d.ts +0 -27
- package/dist/src/browser/pipeline/runner.js +0 -453
- package/dist/src/browser/pipeline/schema.d.ts +0 -42
- package/dist/src/browser/pipeline/schema.js +0 -116
- package/dist/src/browser/pipeline/template.d.ts +0 -30
- package/dist/src/browser/pipeline/template.js +0 -112
- package/dist/src/browser/providers/cloakbrowser.d.ts +0 -83
- package/dist/src/browser/providers/cloakbrowser.js +0 -612
- package/dist/src/browser/recipes/index.js +0 -3
- package/dist/src/browser/recipes/repository.d.ts +0 -13
- package/dist/src/browser/recipes/repository.js +0 -81
- package/dist/src/browser/recipes/runtime-service.d.ts +0 -6
- package/dist/src/browser/recipes/runtime-service.js +0 -30
- package/dist/src/browser/recipes/service.d.ts +0 -36
- package/dist/src/browser/recipes/service.js +0 -186
- package/dist/src/browser/recipes/types.d.ts +0 -36
- package/dist/src/browser/schemas.d.ts +0 -53
- package/dist/src/browser/schemas.js +0 -68
- package/dist/src/browser/session-lifecycle.d.ts +0 -40
- package/dist/src/browser/session-lifecycle.js +0 -136
- package/dist/src/browser/snapshot-helpers.d.ts +0 -24
- package/dist/src/browser/snapshot-helpers.js +0 -70
- package/dist/src/browser/stealth.d.ts +0 -46
- package/dist/src/browser/stealth.js +0 -163
- package/dist/src/gateway/hono/routes/browser-workflows.d.ts +0 -3
- package/dist/src/gateway/hono/routes/browser-workflows.js +0 -78
- /package/dist/src/browser/{actions → automations}/types.js +0 -0
- /package/dist/src/browser/{recipes/types.js → drivers/browser-driver.js} +0 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
//#region src/platform/contracts.ts
|
|
4
|
+
var identifier, sha256, exactVersion, PlatformCapabilitySchema, PlatformDiscoverySchema, PlatformConfigSchema, agentDependency, AgentManifestSchema, PlatformEventSchema;
|
|
5
|
+
var init_contracts = __esmMin((() => {
|
|
6
|
+
identifier = z.string().min(1).max(128).regex(/^[A-Za-z0-9][A-Za-z0-9._:-]*$/);
|
|
7
|
+
sha256 = z.string().regex(/^[a-f0-9]{64}$/);
|
|
8
|
+
exactVersion = z.string().regex(/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/);
|
|
9
|
+
PlatformCapabilitySchema = z.enum([
|
|
10
|
+
"models",
|
|
11
|
+
"connectors",
|
|
12
|
+
"tunnels",
|
|
13
|
+
"shares",
|
|
14
|
+
"managedRuntime",
|
|
15
|
+
"runtimeFleet",
|
|
16
|
+
"traceUpload",
|
|
17
|
+
"a2a"
|
|
18
|
+
]);
|
|
19
|
+
PlatformDiscoverySchema = z.object({
|
|
20
|
+
schemaVersion: z.literal("1"),
|
|
21
|
+
platformId: identifier,
|
|
22
|
+
displayName: z.string().min(1).max(120),
|
|
23
|
+
deploymentMode: z.enum([
|
|
24
|
+
"cloud",
|
|
25
|
+
"private",
|
|
26
|
+
"development"
|
|
27
|
+
]),
|
|
28
|
+
region: identifier,
|
|
29
|
+
endpoints: z.object({
|
|
30
|
+
authorizationServer: z.string().url(),
|
|
31
|
+
controlApi: z.string().url(),
|
|
32
|
+
modelApi: z.string().url().optional(),
|
|
33
|
+
storeApi: z.string().url().optional(),
|
|
34
|
+
tunnelApi: z.string().url().optional(),
|
|
35
|
+
shareApi: z.string().url().optional(),
|
|
36
|
+
agentApi: z.string().url().optional(),
|
|
37
|
+
a2aApi: z.string().url().optional(),
|
|
38
|
+
realtime: z.string().url().optional()
|
|
39
|
+
}).strict(),
|
|
40
|
+
capabilities: z.record(PlatformCapabilitySchema, z.boolean()),
|
|
41
|
+
protocols: z.object({
|
|
42
|
+
xopc: z.object({
|
|
43
|
+
min: z.string().min(1),
|
|
44
|
+
max: z.string().min(1)
|
|
45
|
+
}).strict(),
|
|
46
|
+
mcp: z.array(z.string().min(1)).default([]),
|
|
47
|
+
a2a: z.array(z.string().min(1)).default([])
|
|
48
|
+
}).strict()
|
|
49
|
+
}).strict();
|
|
50
|
+
PlatformConfigSchema = z.discriminatedUnion("mode", [z.object({ mode: z.literal("standalone") }).strict(), z.object({
|
|
51
|
+
mode: z.literal("connected"),
|
|
52
|
+
url: z.string().url(),
|
|
53
|
+
workspaceId: identifier.optional(),
|
|
54
|
+
discovery: PlatformDiscoverySchema
|
|
55
|
+
}).strict()]).default({ mode: "standalone" });
|
|
56
|
+
agentDependency = z.object({
|
|
57
|
+
id: identifier,
|
|
58
|
+
version: exactVersion,
|
|
59
|
+
sha256: sha256.optional()
|
|
60
|
+
}).strict();
|
|
61
|
+
AgentManifestSchema = z.object({
|
|
62
|
+
schemaVersion: z.literal("1"),
|
|
63
|
+
agentId: identifier,
|
|
64
|
+
version: exactVersion,
|
|
65
|
+
runtime: z.object({
|
|
66
|
+
engine: z.literal("xopc"),
|
|
67
|
+
requires: z.string().min(1),
|
|
68
|
+
execution: z.array(z.enum([
|
|
69
|
+
"local",
|
|
70
|
+
"managed",
|
|
71
|
+
"enterprise"
|
|
72
|
+
])).min(1)
|
|
73
|
+
}).strict(),
|
|
74
|
+
entry: z.object({
|
|
75
|
+
instructions: z.string().min(1),
|
|
76
|
+
workflow: z.string().min(1).optional()
|
|
77
|
+
}).strict(),
|
|
78
|
+
models: z.object({
|
|
79
|
+
intents: z.array(z.enum([
|
|
80
|
+
"fast",
|
|
81
|
+
"reasoning",
|
|
82
|
+
"coding",
|
|
83
|
+
"review",
|
|
84
|
+
"vision",
|
|
85
|
+
"understanding"
|
|
86
|
+
])),
|
|
87
|
+
allow: z.array(z.string().min(1))
|
|
88
|
+
}).strict(),
|
|
89
|
+
dependencies: z.object({
|
|
90
|
+
skills: z.array(agentDependency),
|
|
91
|
+
connectors: z.array(agentDependency),
|
|
92
|
+
extensions: z.array(agentDependency).default([])
|
|
93
|
+
}).strict(),
|
|
94
|
+
permissions: z.object({
|
|
95
|
+
tools: z.array(z.string().min(1)),
|
|
96
|
+
networkDomains: z.array(z.string().min(1)),
|
|
97
|
+
filesystem: z.array(z.string().min(1)),
|
|
98
|
+
effects: z.array(z.enum([
|
|
99
|
+
"read",
|
|
100
|
+
"write",
|
|
101
|
+
"send",
|
|
102
|
+
"execute",
|
|
103
|
+
"delete",
|
|
104
|
+
"purchase",
|
|
105
|
+
"publish",
|
|
106
|
+
"admin"
|
|
107
|
+
]))
|
|
108
|
+
}).strict(),
|
|
109
|
+
data: z.object({
|
|
110
|
+
classification: z.enum([
|
|
111
|
+
"public",
|
|
112
|
+
"internal",
|
|
113
|
+
"confidential",
|
|
114
|
+
"restricted"
|
|
115
|
+
]),
|
|
116
|
+
memory: z.enum([
|
|
117
|
+
"none",
|
|
118
|
+
"local",
|
|
119
|
+
"workspace"
|
|
120
|
+
]),
|
|
121
|
+
retentionPolicy: identifier
|
|
122
|
+
}).strict(),
|
|
123
|
+
quality: z.object({
|
|
124
|
+
evaluationSuite: identifier.optional(),
|
|
125
|
+
releaseGate: identifier.optional()
|
|
126
|
+
}).strict()
|
|
127
|
+
}).strict();
|
|
128
|
+
PlatformEventSchema = z.object({
|
|
129
|
+
schemaVersion: z.literal("1"),
|
|
130
|
+
eventId: identifier,
|
|
131
|
+
type: z.string().min(1).max(160).regex(/^xopc\.[a-z0-9_.-]+$/),
|
|
132
|
+
time: z.string().datetime(),
|
|
133
|
+
organizationId: identifier,
|
|
134
|
+
workspaceId: identifier,
|
|
135
|
+
runId: identifier.optional(),
|
|
136
|
+
traceId: identifier.optional(),
|
|
137
|
+
sequence: z.number().int().nonnegative().optional(),
|
|
138
|
+
producer: identifier,
|
|
139
|
+
payload: z.record(z.string(), z.unknown())
|
|
140
|
+
}).strict().superRefine((event, context) => {
|
|
141
|
+
if (event.runId && event.sequence === void 0) context.addIssue({
|
|
142
|
+
code: z.ZodIssueCode.custom,
|
|
143
|
+
message: "Run events require a sequence",
|
|
144
|
+
path: ["sequence"]
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
}));
|
|
148
|
+
//#endregion
|
|
149
|
+
init_contracts();
|
|
150
|
+
export { AgentManifestSchema, PlatformCapabilitySchema, PlatformConfigSchema, PlatformDiscoverySchema, PlatformEventSchema, init_contracts };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AgentManifestSchema, PlatformCapabilitySchema, PlatformConfigSchema, PlatformDiscoverySchema, PlatformEventSchema, init_contracts } from "./contracts.js";
|
|
2
|
+
import { init_resolution, resolveConnectedPlatformDiscovery, resolveConnectedPlatformEndpoint, setActivePlatformDiscovery } from "./resolution.js";
|
|
3
|
+
import { PLATFORM_RUNTIME_PROFILE, PLATFORM_RUNTIME_PROVIDER, PlatformRuntimeClient, RuntimeCommandSchema, discoverPlatform } from "./client.js";
|
|
4
|
+
import { processRuntimeCommand } from "./worker.js";
|
|
5
|
+
//#region src/platform/index.ts
|
|
6
|
+
init_contracts();
|
|
7
|
+
init_resolution();
|
|
8
|
+
//#endregion
|
|
9
|
+
export { AgentManifestSchema, PLATFORM_RUNTIME_PROFILE, PLATFORM_RUNTIME_PROVIDER, PlatformCapabilitySchema, PlatformConfigSchema, PlatformDiscoverySchema, PlatformEventSchema, PlatformRuntimeClient, RuntimeCommandSchema, discoverPlatform, processRuntimeCommand, resolveConnectedPlatformDiscovery, resolveConnectedPlatformEndpoint, setActivePlatformDiscovery };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { PlatformDiscovery } from './contracts.js';
|
|
2
|
+
export declare function setActivePlatformDiscovery(discovery: PlatformDiscovery | undefined): void;
|
|
3
|
+
export declare function resolveConnectedPlatformDiscovery(): PlatformDiscovery | undefined;
|
|
4
|
+
export declare function resolveConnectedPlatformEndpoint(endpoint: keyof PlatformDiscovery['endpoints']): string | undefined;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
//#region src/platform/resolution.ts
|
|
3
|
+
function setActivePlatformDiscovery(discovery) {
|
|
4
|
+
activeDiscovery = discovery;
|
|
5
|
+
}
|
|
6
|
+
function resolveConnectedPlatformDiscovery() {
|
|
7
|
+
return activeDiscovery;
|
|
8
|
+
}
|
|
9
|
+
function resolveConnectedPlatformEndpoint(endpoint) {
|
|
10
|
+
return resolveConnectedPlatformDiscovery()?.endpoints[endpoint];
|
|
11
|
+
}
|
|
12
|
+
var activeDiscovery;
|
|
13
|
+
var init_resolution = __esmMin((() => {}));
|
|
14
|
+
//#endregion
|
|
15
|
+
init_resolution();
|
|
16
|
+
export { init_resolution, resolveConnectedPlatformDiscovery, resolveConnectedPlatformEndpoint, setActivePlatformDiscovery };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PlatformRuntimeClient, type RuntimeCommand } from './client.js';
|
|
2
|
+
export interface RuntimeExecutionResult {
|
|
3
|
+
output?: unknown;
|
|
4
|
+
}
|
|
5
|
+
export type RuntimeCommandHandler = (command: RuntimeCommand, signal: AbortSignal) => Promise<RuntimeExecutionResult>;
|
|
6
|
+
export declare function processRuntimeCommand(client: PlatformRuntimeClient, handler: RuntimeCommandHandler): Promise<'idle' | 'completed' | 'failed' | 'cancelled'>;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
//#region src/platform/worker.ts
|
|
3
|
+
var RuntimeCancellation = class extends Error {
|
|
4
|
+
constructor() {
|
|
5
|
+
super("Run cancellation requested by platform");
|
|
6
|
+
this.name = "RuntimeCancellation";
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
function commandIdentity(command) {
|
|
10
|
+
const { organizationId, workspaceId, traceId, runtimeId } = command.payload;
|
|
11
|
+
if ([
|
|
12
|
+
organizationId,
|
|
13
|
+
workspaceId,
|
|
14
|
+
traceId,
|
|
15
|
+
runtimeId
|
|
16
|
+
].some((value) => typeof value !== "string" || value.length === 0)) throw new Error("Runtime command is missing tenant or trace identity");
|
|
17
|
+
return {
|
|
18
|
+
organizationId,
|
|
19
|
+
workspaceId,
|
|
20
|
+
traceId,
|
|
21
|
+
runtimeId
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function event(command, type, sequence, payload) {
|
|
25
|
+
const identity = commandIdentity(command);
|
|
26
|
+
return {
|
|
27
|
+
schemaVersion: "1",
|
|
28
|
+
eventId: `event_${randomUUID()}`,
|
|
29
|
+
type,
|
|
30
|
+
time: (/* @__PURE__ */ new Date()).toISOString(),
|
|
31
|
+
organizationId: identity.organizationId,
|
|
32
|
+
workspaceId: identity.workspaceId,
|
|
33
|
+
runId: command.runId,
|
|
34
|
+
traceId: identity.traceId,
|
|
35
|
+
sequence,
|
|
36
|
+
producer: identity.runtimeId,
|
|
37
|
+
payload
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
async function processRuntimeCommand(client, handler) {
|
|
41
|
+
const command = await client.lease();
|
|
42
|
+
if (!command) return "idle";
|
|
43
|
+
await client.report(event(command, "xopc.run.started", 1, {}), command.leaseToken);
|
|
44
|
+
const controller = new AbortController();
|
|
45
|
+
let renewing = false;
|
|
46
|
+
let renewalInFlight = Promise.resolve();
|
|
47
|
+
const renewalIntervalMs = Math.max(1e3, Math.min(3e4, Math.floor((command.leaseExpiresAt - Date.now()) / 3)));
|
|
48
|
+
const renewal = setInterval(() => {
|
|
49
|
+
if (renewing || controller.signal.aborted) return;
|
|
50
|
+
renewing = true;
|
|
51
|
+
renewalInFlight = client.renew(command.id, command.leaseToken).then((result) => {
|
|
52
|
+
if (result.cancelRequested) controller.abort(new RuntimeCancellation());
|
|
53
|
+
}).catch((error) => controller.abort(error)).finally(() => {
|
|
54
|
+
renewing = false;
|
|
55
|
+
});
|
|
56
|
+
}, renewalIntervalMs);
|
|
57
|
+
renewal.unref?.();
|
|
58
|
+
try {
|
|
59
|
+
const result = await handler(command, controller.signal);
|
|
60
|
+
await renewalInFlight;
|
|
61
|
+
if (controller.signal.aborted) throw controller.signal.reason;
|
|
62
|
+
await client.report(event(command, "xopc.run.succeeded", 2, { output: result.output }), command.leaseToken);
|
|
63
|
+
return "completed";
|
|
64
|
+
} catch (error) {
|
|
65
|
+
const effectiveError = controller.signal.aborted ? controller.signal.reason : error;
|
|
66
|
+
const cancelled = effectiveError instanceof RuntimeCancellation;
|
|
67
|
+
await client.report(event(command, cancelled ? "xopc.run.cancelled" : "xopc.run.failed", 2, cancelled ? {} : { error: effectiveError instanceof Error ? effectiveError.message : "Runtime command failed" }), command.leaseToken);
|
|
68
|
+
return cancelled ? "cancelled" : "failed";
|
|
69
|
+
} finally {
|
|
70
|
+
clearInterval(renewal);
|
|
71
|
+
await renewalInFlight;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//#endregion
|
|
75
|
+
export { processRuntimeCommand };
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { init_resolution, resolveConnectedPlatformEndpoint } from "../platform/resolution.js";
|
|
2
3
|
//#region src/providers/xopc-cloud-config.ts
|
|
3
4
|
function resolveXopcModelRouterUrl(override) {
|
|
4
|
-
return (override ?? process.env.XOPC_MODEL_ROUTER_URL ?? "https://router.xopc.ai/v1").replace(/\/+$/, "");
|
|
5
|
+
return (override ?? process.env.XOPC_MODEL_ROUTER_URL ?? resolveConnectedPlatformEndpoint("modelApi") ?? "https://router.xopc.ai/v1").replace(/\/+$/, "");
|
|
5
6
|
}
|
|
6
7
|
var XOPC_CLOUD_PROVIDER_ID, DEFAULT_XOPC_MODEL_ROUTER_URL;
|
|
7
8
|
var init_xopc_cloud_config = __esmMin((() => {
|
|
9
|
+
init_resolution();
|
|
8
10
|
XOPC_CLOUD_PROVIDER_ID = "xopc-cloud";
|
|
9
11
|
DEFAULT_XOPC_MODEL_ROUTER_URL = "https://router.xopc.ai/v1";
|
|
10
12
|
}));
|
|
@@ -127,6 +127,46 @@ function toolCallIds(message) {
|
|
|
127
127
|
}
|
|
128
128
|
return ids;
|
|
129
129
|
}
|
|
130
|
+
function browserToolCallIds(messages) {
|
|
131
|
+
const ids = /* @__PURE__ */ new Set();
|
|
132
|
+
for (const message of messages) {
|
|
133
|
+
if (message.role !== "assistant") continue;
|
|
134
|
+
const content = message.content;
|
|
135
|
+
if (!Array.isArray(content)) continue;
|
|
136
|
+
for (const block of content) {
|
|
137
|
+
const record = asRecord(block);
|
|
138
|
+
if (!record || stringValue(record.name) !== "browser_use") continue;
|
|
139
|
+
const id = toolCallIdFromBlock(record);
|
|
140
|
+
if (id) ids.add(id);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return ids;
|
|
144
|
+
}
|
|
145
|
+
/** Keep semantic browser text throughout history, but only the newest browser screenshot. */
|
|
146
|
+
function projectBrowserVisualContext(messages) {
|
|
147
|
+
const browserIds = browserToolCallIds(messages);
|
|
148
|
+
let latestVisualIndex = -1;
|
|
149
|
+
for (let index = 0; index < messages.length; index += 1) {
|
|
150
|
+
const message = messages[index];
|
|
151
|
+
if (!browserIds.has(toolResultId(message) ?? "")) continue;
|
|
152
|
+
const content = message.content;
|
|
153
|
+
if (Array.isArray(content) && content.some((block) => asRecord(block)?.type === "image")) latestVisualIndex = index;
|
|
154
|
+
}
|
|
155
|
+
if (latestVisualIndex < 0) return messages;
|
|
156
|
+
return messages.map((message, index) => {
|
|
157
|
+
if (index === latestVisualIndex || !browserIds.has(toolResultId(message) ?? "")) return message;
|
|
158
|
+
const record = message;
|
|
159
|
+
if (!Array.isArray(record.content)) return message;
|
|
160
|
+
const content = record.content.map((block) => asRecord(block)?.type === "image" ? {
|
|
161
|
+
type: "text",
|
|
162
|
+
text: "[Earlier browser screenshot omitted; semantic observation retained.]"
|
|
163
|
+
} : block);
|
|
164
|
+
return {
|
|
165
|
+
...record,
|
|
166
|
+
content
|
|
167
|
+
};
|
|
168
|
+
});
|
|
169
|
+
}
|
|
130
170
|
function filterAssistantToolCalls(message, pairedIds) {
|
|
131
171
|
const record = message;
|
|
132
172
|
const content = record.content;
|
|
@@ -257,7 +297,7 @@ function buildSessionContextForLlm(rows) {
|
|
|
257
297
|
}
|
|
258
298
|
if (isLikelyAgentMessage(r)) out.push(r);
|
|
259
299
|
}
|
|
260
|
-
return sanitizeToolPairs(out);
|
|
300
|
+
return projectBrowserVisualContext(sanitizeToolPairs(out));
|
|
261
301
|
}
|
|
262
302
|
/** Visible chat messages only - no LLM-only audit/context expansion. */
|
|
263
303
|
function buildSessionDisplayMessages(rows) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { requireXopcDatabase } from "../storage/sqlite/connection.js";
|
|
2
2
|
import { runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
|
|
3
|
+
import { init_resolution, resolveConnectedPlatformEndpoint } from "../platform/resolution.js";
|
|
3
4
|
import { CredentialResolver, init_credentials } from "../auth/credentials.js";
|
|
4
5
|
import { DurableState } from "../storage/sqlite/durable-state.js";
|
|
5
6
|
import { resolveMediaReference } from "../media/media-reference.js";
|
|
@@ -11,6 +12,7 @@ import { createHash, randomBytes, randomUUID } from "node:crypto";
|
|
|
11
12
|
import { readFile, stat } from "node:fs/promises";
|
|
12
13
|
//#region src/share/hosted-session-share.ts
|
|
13
14
|
init_credentials();
|
|
15
|
+
init_resolution();
|
|
14
16
|
const DEFAULT_SHARE_URL = "https://share.xopc.ai";
|
|
15
17
|
const MAX_MESSAGES = 1e4;
|
|
16
18
|
const MAX_ATTACHMENTS = 20;
|
|
@@ -105,7 +107,7 @@ var HostedSessionShareBuilder = class {
|
|
|
105
107
|
};
|
|
106
108
|
var HostedSessionSharePublisher = class {
|
|
107
109
|
baseUrl;
|
|
108
|
-
constructor(baseUrl = process.env.XOPC_SHARE_URL ?? DEFAULT_SHARE_URL, credentials = new CredentialResolver(), fetchImpl = fetch) {
|
|
110
|
+
constructor(baseUrl = process.env.XOPC_SHARE_URL ?? resolveConnectedPlatformEndpoint("shareApi") ?? DEFAULT_SHARE_URL, credentials = new CredentialResolver(), fetchImpl = fetch) {
|
|
109
111
|
this.credentials = credentials;
|
|
110
112
|
this.fetchImpl = fetchImpl;
|
|
111
113
|
this.baseUrl = baseUrl.replace(/\/+$/, "");
|
|
@@ -14,7 +14,7 @@ import { mkdir, readFile, stat, unlink, writeFile } from "node:fs/promises";
|
|
|
14
14
|
* Responsibilities:
|
|
15
15
|
* - Render a 1200x630 jpeg preview for shareable artefacts.
|
|
16
16
|
* - HTML / sites: launch its own Playwright browser (does NOT share the user
|
|
17
|
-
*
|
|
17
|
+
* Browser Control runtime — the user-facing browser is for the agent and we mustn't
|
|
18
18
|
* pollute its context).
|
|
19
19
|
* - Images: pass through with size cap; downscale only if oversized.
|
|
20
20
|
* - Anything else: emit an SVG placeholder card with the file name + icon.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
DROP TABLE IF EXISTS browser_recipe_run_events;
|
|
2
|
+
DROP TABLE IF EXISTS browser_recipe_runs;
|
|
3
|
+
DROP TABLE IF EXISTS browser_recipes;
|
|
4
|
+
|
|
5
|
+
CREATE TABLE IF NOT EXISTS browser_automations (
|
|
6
|
+
automation_id TEXT PRIMARY KEY,
|
|
7
|
+
revision INTEGER NOT NULL,
|
|
8
|
+
status TEXT NOT NULL CHECK (status IN ('enabled', 'disabled')),
|
|
9
|
+
definition_json TEXT NOT NULL,
|
|
10
|
+
created_at_ms INTEGER NOT NULL,
|
|
11
|
+
updated_at_ms INTEGER NOT NULL
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
CREATE TABLE IF NOT EXISTS browser_automation_runs (
|
|
15
|
+
run_id TEXT PRIMARY KEY,
|
|
16
|
+
automation_id TEXT NOT NULL,
|
|
17
|
+
automation_revision INTEGER NOT NULL,
|
|
18
|
+
definition_json TEXT NOT NULL,
|
|
19
|
+
status TEXT NOT NULL CHECK (status IN ('queued', 'running', 'succeeded', 'failed', 'cancelled')),
|
|
20
|
+
inputs_json TEXT NOT NULL,
|
|
21
|
+
result_json TEXT,
|
|
22
|
+
error TEXT,
|
|
23
|
+
created_at_ms INTEGER NOT NULL,
|
|
24
|
+
started_at_ms INTEGER,
|
|
25
|
+
ended_at_ms INTEGER,
|
|
26
|
+
duration_ms INTEGER,
|
|
27
|
+
FOREIGN KEY (automation_id) REFERENCES browser_automations(automation_id) ON DELETE CASCADE
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
CREATE INDEX IF NOT EXISTS idx_browser_automation_runs_automation_created
|
|
31
|
+
ON browser_automation_runs(automation_id, created_at_ms DESC);
|
|
32
|
+
|
|
33
|
+
CREATE TABLE IF NOT EXISTS browser_action_audit (
|
|
34
|
+
event_id TEXT PRIMARY KEY,
|
|
35
|
+
run_id TEXT NOT NULL,
|
|
36
|
+
seq INTEGER NOT NULL,
|
|
37
|
+
type TEXT NOT NULL,
|
|
38
|
+
data_json TEXT,
|
|
39
|
+
created_at_ms INTEGER NOT NULL,
|
|
40
|
+
UNIQUE(run_id, seq),
|
|
41
|
+
FOREIGN KEY (run_id) REFERENCES browser_automation_runs(run_id) ON DELETE CASCADE
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
CREATE INDEX IF NOT EXISTS idx_browser_action_audit_run_seq
|
|
45
|
+
ON browser_action_audit(run_id, seq ASC);
|
|
@@ -3,7 +3,7 @@ import type { ApplyMigrationsOptions } from './types.js';
|
|
|
3
3
|
/** Baseline schema version applied from schema.sql on first open. */
|
|
4
4
|
export declare const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
|
|
5
5
|
/** Latest schema version this release supports (increment when adding migrations). */
|
|
6
|
-
export declare const XOPC_DB_SCHEMA_VERSION =
|
|
6
|
+
export declare const XOPC_DB_SCHEMA_VERSION = 153;
|
|
7
7
|
export declare function resolveMigrationsDir(override?: string): string;
|
|
8
8
|
/**
|
|
9
9
|
* Apply sequential SQL migrations from (currentVersion + 1) through targetVersion.
|
|
@@ -12,7 +12,7 @@ const log = createLogger("Sqlite:Migrations");
|
|
|
12
12
|
/** Baseline schema version applied from schema.sql on first open. */
|
|
13
13
|
const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
|
|
14
14
|
/** Latest schema version this release supports (increment when adding migrations). */
|
|
15
|
-
const XOPC_DB_SCHEMA_VERSION =
|
|
15
|
+
const XOPC_DB_SCHEMA_VERSION = 153;
|
|
16
16
|
const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
|
|
17
17
|
function backupBeforeTaskCutover(db, databasePath) {
|
|
18
18
|
db.exec("PRAGMA wal_checkpoint(FULL)");
|
|
@@ -57,7 +57,7 @@ function applySingleMigration(db, migration) {
|
|
|
57
57
|
* Each step runs in its own transaction and updates schema_meta on success.
|
|
58
58
|
*/
|
|
59
59
|
function applyPendingMigrations(db, options = {}) {
|
|
60
|
-
const targetVersion = options.targetVersion ??
|
|
60
|
+
const targetVersion = options.targetVersion ?? 153;
|
|
61
61
|
let currentVersion = readSchemaVersion(db);
|
|
62
62
|
if (currentVersion > targetVersion) throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);
|
|
63
63
|
if (currentVersion >= targetVersion) return currentVersion;
|
|
@@ -94,7 +94,7 @@ function applyPendingMigrations(db, options = {}) {
|
|
|
94
94
|
}
|
|
95
95
|
/** Inspect schema version without mutating the database. */
|
|
96
96
|
function inspectSchemaMigrationStatus(db, options = {}) {
|
|
97
|
-
const appVersion = options.targetVersion ??
|
|
97
|
+
const appVersion = options.targetVersion ?? 153;
|
|
98
98
|
const dbVersion = readSchemaVersion(db);
|
|
99
99
|
if (dbVersion > appVersion) return {
|
|
100
100
|
dbVersion,
|
|
@@ -19,7 +19,7 @@ const log = createLogger('Sqlite:Migrations');
|
|
|
19
19
|
export const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
|
|
20
20
|
|
|
21
21
|
/** Latest schema version this release supports (increment when adding migrations). */
|
|
22
|
-
export const XOPC_DB_SCHEMA_VERSION =
|
|
22
|
+
export const XOPC_DB_SCHEMA_VERSION = 153;
|
|
23
23
|
|
|
24
24
|
const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
|
|
25
25
|
|
|
@@ -756,39 +756,35 @@ CREATE TABLE IF NOT EXISTS goal_session_links (
|
|
|
756
756
|
CREATE INDEX IF NOT EXISTS idx_goal_session_links_session
|
|
757
757
|
ON goal_session_links(session_key, linked_at DESC);
|
|
758
758
|
|
|
759
|
-
CREATE TABLE IF NOT EXISTS
|
|
760
|
-
|
|
759
|
+
CREATE TABLE IF NOT EXISTS browser_automations (
|
|
760
|
+
automation_id TEXT PRIMARY KEY,
|
|
761
761
|
revision INTEGER NOT NULL,
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
status TEXT NOT NULL CHECK (status IN ('published', 'disabled')),
|
|
765
|
-
yaml_source TEXT NOT NULL,
|
|
766
|
-
risk_level TEXT NOT NULL CHECK (risk_level IN ('read_only', 'account_write', 'sensitive')),
|
|
767
|
-
domains_json TEXT NOT NULL,
|
|
762
|
+
status TEXT NOT NULL CHECK (status IN ('enabled', 'disabled')),
|
|
763
|
+
definition_json TEXT NOT NULL,
|
|
768
764
|
created_at_ms INTEGER NOT NULL,
|
|
769
765
|
updated_at_ms INTEGER NOT NULL
|
|
770
766
|
);
|
|
771
767
|
|
|
772
|
-
CREATE TABLE IF NOT EXISTS
|
|
768
|
+
CREATE TABLE IF NOT EXISTS browser_automation_runs (
|
|
773
769
|
run_id TEXT PRIMARY KEY,
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
770
|
+
automation_id TEXT NOT NULL,
|
|
771
|
+
automation_revision INTEGER NOT NULL,
|
|
772
|
+
definition_json TEXT NOT NULL,
|
|
777
773
|
status TEXT NOT NULL CHECK (status IN ('queued', 'running', 'succeeded', 'failed', 'cancelled')),
|
|
778
|
-
|
|
774
|
+
inputs_json TEXT NOT NULL,
|
|
779
775
|
result_json TEXT,
|
|
780
776
|
error TEXT,
|
|
781
777
|
created_at_ms INTEGER NOT NULL,
|
|
782
778
|
started_at_ms INTEGER,
|
|
783
779
|
ended_at_ms INTEGER,
|
|
784
780
|
duration_ms INTEGER,
|
|
785
|
-
FOREIGN KEY (
|
|
781
|
+
FOREIGN KEY (automation_id) REFERENCES browser_automations(automation_id) ON DELETE CASCADE
|
|
786
782
|
);
|
|
787
783
|
|
|
788
|
-
CREATE INDEX IF NOT EXISTS
|
|
789
|
-
ON
|
|
784
|
+
CREATE INDEX IF NOT EXISTS idx_browser_automation_runs_automation_created
|
|
785
|
+
ON browser_automation_runs(automation_id, created_at_ms DESC);
|
|
790
786
|
|
|
791
|
-
CREATE TABLE IF NOT EXISTS
|
|
787
|
+
CREATE TABLE IF NOT EXISTS browser_action_audit (
|
|
792
788
|
event_id TEXT PRIMARY KEY,
|
|
793
789
|
run_id TEXT NOT NULL,
|
|
794
790
|
seq INTEGER NOT NULL,
|
|
@@ -796,8 +792,8 @@ CREATE TABLE IF NOT EXISTS browser_recipe_run_events (
|
|
|
796
792
|
data_json TEXT,
|
|
797
793
|
created_at_ms INTEGER NOT NULL,
|
|
798
794
|
UNIQUE(run_id, seq),
|
|
799
|
-
FOREIGN KEY (run_id) REFERENCES
|
|
795
|
+
FOREIGN KEY (run_id) REFERENCES browser_automation_runs(run_id) ON DELETE CASCADE
|
|
800
796
|
);
|
|
801
797
|
|
|
802
|
-
CREATE INDEX IF NOT EXISTS
|
|
803
|
-
ON
|
|
798
|
+
CREATE INDEX IF NOT EXISTS idx_browser_action_audit_run_seq
|
|
799
|
+
ON browser_action_audit(run_id, seq ASC);
|
|
@@ -34,7 +34,7 @@ function triggerLabel(automation) {
|
|
|
34
34
|
}
|
|
35
35
|
function actionLabel(automation) {
|
|
36
36
|
if (automation.action.kind === "workflow") return `workflow:${automation.action.workflowId}`;
|
|
37
|
-
if (automation.action.kind === "
|
|
37
|
+
if (automation.action.kind === "browser_automation") return `browser-automation:${automation.action.automationId}`;
|
|
38
38
|
if (automation.action.kind === "task_command") return `task:${automation.action.command.type}`;
|
|
39
39
|
return automation.action.agentId ? `agent:${automation.action.agentId}` : "agent";
|
|
40
40
|
}
|
package/dist/src/tunnel/env.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { init_resolution, resolveConnectedPlatformEndpoint } from "../platform/resolution.js";
|
|
1
2
|
//#region src/tunnel/env.ts
|
|
3
|
+
init_resolution();
|
|
2
4
|
const DEV_REGISTRATION_SECRET = "dev-registration-secret";
|
|
3
5
|
const TUNNEL_REGISTRATION_SECRET_REQUIRED_CODE = "TUNNEL_REGISTRATION_SECRET_REQUIRED";
|
|
4
6
|
var TunnelRegistrationSecretError = class extends Error {
|
|
@@ -75,7 +77,7 @@ function resolveTunnelRegistrationSecret(brokerUrl, configSecret) {
|
|
|
75
77
|
throw new TunnelRegistrationSecretError(brokerUrl);
|
|
76
78
|
}
|
|
77
79
|
function resolveTunnelBrokerUrl(configBrokerUrl, env = process.env) {
|
|
78
|
-
return env.XOPC_TUNNEL_BROKER_URL ?? configBrokerUrl ?? "https://frp.xopc.ai/api";
|
|
80
|
+
return env.XOPC_TUNNEL_BROKER_URL ?? resolveConnectedPlatformEndpoint("tunnelApi") ?? configBrokerUrl ?? "https://frp.xopc.ai/api";
|
|
79
81
|
}
|
|
80
82
|
//#endregion
|
|
81
83
|
export { TUNNEL_REGISTRATION_SECRET_REQUIRED_CODE, TunnelRegistrationSecretError, getTunnelRegistrationSecretMeta, isLocalDevelopmentTunnelBroker, isMaskedTunnelSecretPatchValue, maskTunnelSecretForWeb, readTunnelRegistrationSecretFromConfigOnly, resolveOptionalTunnelRegistrationSecret, resolveTunnelBrokerUrl, resolveTunnelRegistrationSecret, tunnelRegistrationSecretRequiredMessage };
|
|
@@ -305,7 +305,6 @@ function createAgentVoiceEngine(options) {
|
|
|
305
305
|
}
|
|
306
306
|
turn.start(event.utteranceId);
|
|
307
307
|
}
|
|
308
|
-
if (claim.request.purpose === "conversation" && claim.config.voice?.realtime?.bargeIn && !activeResponse?.awaitingClarification) cancelActiveResponse("barge_in");
|
|
309
308
|
send("input.speech_started", { utteranceId: event.utteranceId });
|
|
310
309
|
}
|
|
311
310
|
if (event.type === "speech_stopped") {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xopcai/xopc",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.252",
|
|
4
4
|
"description": "Local-first personal AI assistant with reviewable user understanding, durable tasks, workflows, automations, and local or cloud models.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -62,11 +62,10 @@
|
|
|
62
62
|
},
|
|
63
63
|
"homepage": "https://xopc.ai",
|
|
64
64
|
"engines": {
|
|
65
|
-
"node": ">=22.
|
|
65
|
+
"node": ">=22.22.3"
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@composio/core": "0.
|
|
69
|
-
"@composio/experimental": "0.2.0",
|
|
68
|
+
"@composio/core": "0.18.1",
|
|
70
69
|
"@earendil-works/pi-agent-core": "0.85.1",
|
|
71
70
|
"@earendil-works/pi-ai": "0.85.1",
|
|
72
71
|
"@earendil-works/pi-coding-agent": "0.85.1",
|
|
@@ -149,8 +148,8 @@
|
|
|
149
148
|
"esbuild": "^0.28.1",
|
|
150
149
|
"eslint": "^10.4.0",
|
|
151
150
|
"jsdom": "^29.1.1",
|
|
152
|
-
"onnxruntime-common": "1.21.0",
|
|
153
151
|
"node-pty": "1.1.0",
|
|
152
|
+
"onnxruntime-common": "1.21.0",
|
|
154
153
|
"playwright-core": "^1.60.0",
|
|
155
154
|
"sherpa-onnx-node": "1.13.4",
|
|
156
155
|
"svgo": "4.0.2",
|
|
@@ -163,10 +162,11 @@
|
|
|
163
162
|
"vitepress": "^1.6.4",
|
|
164
163
|
"vitest": "4.1.5",
|
|
165
164
|
"vue": "^3.5.35",
|
|
165
|
+
"@xopcai/browser-control-contract": "0.1.0",
|
|
166
166
|
"@xopcai/endpoint-tools-protocol": "0.0.0",
|
|
167
|
-
"@xopcai/realtime-client": "0.0.0",
|
|
168
167
|
"@xopcai/realtime-protocol": "0.0.0",
|
|
169
|
-
"@xopcai/gateway-contract": "0.0.0"
|
|
168
|
+
"@xopcai/gateway-contract": "0.0.0",
|
|
169
|
+
"@xopcai/realtime-client": "0.0.0"
|
|
170
170
|
},
|
|
171
171
|
"scripts": {
|
|
172
172
|
"assets:brand": "node scripts/generate-brand-assets.mjs",
|