@xopcai/xopc 0.0.251 → 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-Bo_dmLv8.js → agent-avatar-dicebear-k039rbUz.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-kILWelNb.js → agent-defaults-settings-panel-D4J4oq8p.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-yuUn8n-f.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-Cz56nrVF.js → app-management-settings-panel-ByJ4kiD0.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-DxSws5U4.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-7k15-hqo.js → archive-plugin-DMDKtYpi.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-B-SFpjd9.js → attachment-load-B764Ql3Z.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-Qy36j19q.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-CPOZQt8F.js → binary-plugins-fxtzYRpv.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-DhvVlIp9.js → block-editor-Bcjtvckh.js} +3 -3
- 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-1PJoxRuV.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-CBCc6zFA.js → cron-expression-DtsfalBM.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-u8K5Kt_N.js → date-picker-tDEQV5TP.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-y_i_cnpz.js → dependency-picker-HhNwg0Y2.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-DyL0JxLm.js → desktop-pet-acU4Li-C.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-d2d_IsyP.js → desktop-pet-settings-R84AR0Pe.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-DqIBKJwl.js → extension-debug-page-CrLlRkSN.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DUW1xxj2.js → extension-page-BH5lmZXE.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-BHY9qaNw.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-7CD9iPR7.js → heartbeat-settings-K5Zhl2rx.js} +1 -1
- 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-BtlqMleF.js → keyboard-shortcuts-settings-B1QR49-7.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-BjxfkjxE.js → local-app-workbench-page-wicoV-ti.js} +2 -2
- package/dist/gateway/static/root/assets/{local-apps-page-B7xqQe2s.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-kACaPZKL.js → logs-page-xX-7S49A.js} +2 -2
- package/dist/gateway/static/root/assets/{management-settings-A432siER.js → management-settings-1kNnYL97.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-CQvzsE24.js → markdown-view-DjiwT28p.js} +2 -2
- package/dist/gateway/static/root/assets/{media-plugins-CpvYiauZ.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-DyjVGngO.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-B3FKzjR6.js → page-tabs-CqJN6Ljz.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-DnjrwAHD.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-BzH8pjEz.js → projects-page-CuVK2mKu.js} +1 -1
- 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-LO4wZ_dO.js → runtime-tools-settings-panel-Bb4b74-P.js} +2 -2
- package/dist/gateway/static/root/assets/{schema-form-crcj4-Pm.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-Bl4MvTmq.js → settings-form-section-Ci-9WajJ.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-DplrjZ6x.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-CJP1kURj.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-DsjcKg9Q.js → skills-page-sXXAZDc9.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-D6gWBbvy.js → skills-page.utils-DD79Bl1I.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-_eCXfqCo.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-W5mktxl1.js → tunnel-api-DrKDhnJm.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-Na2DYzT3.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/{voice-api-key-field-OXweUxS_.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-BqOsO47I.js → work-discovery-overlay-kTQug6bq.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-B9S_lfT1.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 +6 -5
- package/dist/src/agent/background-review/run-background-review.js +1 -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/embedded/model-runtime.js +1 -1
- package/dist/src/agent/embedded/run-for-session.js +1 -1
- 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/image/tool-model-config.js +1 -1
- package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +1 -1
- package/dist/src/agent/service.js +4 -3
- package/dist/src/agent/service.types.d.ts +2 -1
- package/dist/src/agent/session/session-inspector.js +1 -1
- package/dist/src/agent/skills/hub-lock.js +1 -1
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +4 -0
- package/dist/src/agent/tasks/task-judge-service.js +3 -3
- 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/ai-assist/text-assist.js +1 -1
- package/dist/src/auth/credentials.js +2 -2
- package/dist/src/auth/oauth/xopc-cloud.js +3 -1
- package/dist/src/auth/profiles/store.js +1 -1
- package/dist/src/auth/sync-provider-auth.js +2 -2
- 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 +4 -6
- 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/doctor/checks/provider-auth.js +1 -1
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/cli/commands/platform.d.ts +1 -0
- package/dist/src/cli/commands/platform.js +111 -0
- package/dist/src/config/index.js +4 -4
- package/dist/src/config/loader.js +10 -4
- package/dist/src/config/models-json.js +1 -1
- 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/lockfile.js +1 -1
- package/dist/src/extensions/marketplace.js +4 -0
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/file-path-classifier.js +1 -1
- package/dist/src/gateway/heartbeat/service.js +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +12 -26
- package/dist/src/gateway/hono/lib/config-payload.js +11 -40
- 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/hono/routes/models.js +1 -1
- package/dist/src/gateway/service/config-coordinator.js +1 -1
- package/dist/src/gateway/service.d.ts +4 -6
- package/dist/src/gateway/service.js +24 -27
- package/dist/src/heartbeat/index.js +1 -1
- 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/auth-runtime/resolve-auth.js +1 -1
- package/dist/src/providers/index.js +2 -2
- package/dist/src/providers/model-registry.js +1 -1
- package/dist/src/providers/register-runtime-providers.js +1 -1
- 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/tui/tui-startup-resources.js +1 -1
- package/dist/src/tui/tui.js +1 -1
- package/dist/src/tunnel/env.js +3 -1
- package/dist/src/work-discovery/service.js +1 -1
- package/dist/src/workflows/service/workflow-run-service.js +1 -1
- package/package.json +6 -6
- package/dist/gateway/static/root/assets/apps-page-BnizTdgs.js +0 -1
- package/dist/gateway/static/root/assets/automations-workspace-CZRKqSqY.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-pN5LbChY.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-C65MI57t.js +0 -3
- package/dist/gateway/static/root/assets/capabilities-settings-panel-CJw2e16J.js +0 -7
- package/dist/gateway/static/root/assets/channels-settings-CRgjb4Ck.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-Dcpdy06y.js +0 -2
- package/dist/gateway/static/root/assets/gateway-config-api-e3BRcgDx.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-Cheo0Rkc.js +0 -1
- package/dist/gateway/static/root/assets/home-page-DVrTRqNc.js +0 -1
- package/dist/gateway/static/root/assets/index-B7CX4Qob.css +0 -2
- package/dist/gateway/static/root/assets/index-BHrpyJ4t.js +0 -72
- package/dist/gateway/static/root/assets/messages-Cf5hpZE6.js +0 -3
- package/dist/gateway/static/root/assets/note-detail-panel-CUd8O4K7.js +0 -5
- package/dist/gateway/static/root/assets/notes-page-BLQwd39W.js +0 -8
- package/dist/gateway/static/root/assets/project-detail-page-NttW338u.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-BxpjSDnL.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-BLMaibOb.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-BRvvKhoH.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-DTOsxQC1.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-CemgzEi4.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-BWYanBlQ.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-D0Z_K5JT.js +0 -1
- package/dist/gateway/static/root/assets/user-model-page-B_-SNat-.js +0 -2
- package/dist/gateway/static/root/assets/workflows-page-CNOT2Coo.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
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import yaml from "js-yaml";
|
|
3
|
-
//#region src/browser/pipeline/schema.ts
|
|
4
|
-
const BROWSER_RECIPE_API_VERSION = "xopc.ai/browser-recipe/v1";
|
|
5
|
-
const IdSchema = z.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/).max(100);
|
|
6
|
-
const JsonValueSchema = z.lazy(() => z.union([
|
|
7
|
-
z.string(),
|
|
8
|
-
z.number(),
|
|
9
|
-
z.boolean(),
|
|
10
|
-
z.null(),
|
|
11
|
-
z.array(JsonValueSchema),
|
|
12
|
-
z.record(z.string(), JsonValueSchema)
|
|
13
|
-
]));
|
|
14
|
-
const PipelineArgSchema = z.object({
|
|
15
|
-
type: z.enum([
|
|
16
|
-
"string",
|
|
17
|
-
"number",
|
|
18
|
-
"integer",
|
|
19
|
-
"boolean"
|
|
20
|
-
]),
|
|
21
|
-
required: z.boolean().optional(),
|
|
22
|
-
default: JsonValueSchema.optional(),
|
|
23
|
-
description: z.string().max(500).optional(),
|
|
24
|
-
choices: z.array(JsonValueSchema).optional()
|
|
25
|
-
}).strict().superRefine((definition, ctx) => {
|
|
26
|
-
const matchesType = (value) => {
|
|
27
|
-
if (definition.type === "string") return typeof value === "string";
|
|
28
|
-
if (definition.type === "boolean") return typeof value === "boolean";
|
|
29
|
-
if (definition.type === "integer") return typeof value === "number" && Number.isInteger(value);
|
|
30
|
-
return typeof value === "number" && Number.isFinite(value);
|
|
31
|
-
};
|
|
32
|
-
if (definition.default !== void 0 && !matchesType(definition.default)) ctx.addIssue({
|
|
33
|
-
code: "custom",
|
|
34
|
-
path: ["default"],
|
|
35
|
-
message: `Default must match arg type ${definition.type}.`
|
|
36
|
-
});
|
|
37
|
-
definition.choices?.forEach((choice, index) => {
|
|
38
|
-
if (!matchesType(choice)) ctx.addIssue({
|
|
39
|
-
code: "custom",
|
|
40
|
-
path: ["choices", index],
|
|
41
|
-
message: `Choice must match arg type ${definition.type}.`
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
const DomainSchema = z.string().trim().toLowerCase().regex(/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/, "Domain must be a hostname without scheme, path, port, or wildcard.");
|
|
46
|
-
const StepSchema = z.record(z.string(), z.record(z.string(), z.unknown())).superRefine((step, ctx) => {
|
|
47
|
-
if (Object.keys(step).length !== 1) ctx.addIssue({
|
|
48
|
-
code: "custom",
|
|
49
|
-
message: "Each step must contain exactly one action."
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
const RecipeSchema = z.object({
|
|
53
|
-
apiVersion: z.literal(BROWSER_RECIPE_API_VERSION),
|
|
54
|
-
id: IdSchema,
|
|
55
|
-
name: z.string().trim().min(1).max(200),
|
|
56
|
-
description: z.string().max(2e3).optional(),
|
|
57
|
-
risk: z.enum([
|
|
58
|
-
"read_only",
|
|
59
|
-
"account_write",
|
|
60
|
-
"sensitive"
|
|
61
|
-
]),
|
|
62
|
-
domains: z.array(DomainSchema).min(1),
|
|
63
|
-
timeoutSeconds: z.number().int().min(1).max(3600).optional(),
|
|
64
|
-
args: z.record(z.string(), PipelineArgSchema).default({}),
|
|
65
|
-
pipeline: z.array(StepSchema).min(1),
|
|
66
|
-
on_error: z.array(StepSchema).optional()
|
|
67
|
-
}).strict();
|
|
68
|
-
function stepsFromRaw(steps) {
|
|
69
|
-
return steps.map((step) => {
|
|
70
|
-
const [action, args] = Object.entries(step)[0];
|
|
71
|
-
return {
|
|
72
|
-
action,
|
|
73
|
-
args
|
|
74
|
-
};
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
function parseBrowserPipeline(yamlSource) {
|
|
78
|
-
let raw;
|
|
79
|
-
try {
|
|
80
|
-
raw = yaml.load(yamlSource);
|
|
81
|
-
} catch (error) {
|
|
82
|
-
return {
|
|
83
|
-
ok: false,
|
|
84
|
-
errors: [{
|
|
85
|
-
path: "",
|
|
86
|
-
message: `YAML parse error: ${error instanceof Error ? error.message : String(error)}`
|
|
87
|
-
}]
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
const parsed = RecipeSchema.safeParse(raw);
|
|
91
|
-
if (!parsed.success) return {
|
|
92
|
-
ok: false,
|
|
93
|
-
errors: parsed.error.issues.map((issue) => ({
|
|
94
|
-
path: issue.path.join("."),
|
|
95
|
-
message: issue.message
|
|
96
|
-
}))
|
|
97
|
-
};
|
|
98
|
-
return {
|
|
99
|
-
ok: true,
|
|
100
|
-
document: {
|
|
101
|
-
apiVersion: parsed.data.apiVersion,
|
|
102
|
-
id: parsed.data.id,
|
|
103
|
-
name: parsed.data.name,
|
|
104
|
-
description: parsed.data.description,
|
|
105
|
-
risk: parsed.data.risk,
|
|
106
|
-
domains: parsed.data.domains,
|
|
107
|
-
timeoutSeconds: parsed.data.timeoutSeconds,
|
|
108
|
-
args: parsed.data.args,
|
|
109
|
-
pipeline: stepsFromRaw(parsed.data.pipeline),
|
|
110
|
-
onError: parsed.data.on_error ? stepsFromRaw(parsed.data.on_error) : void 0
|
|
111
|
-
},
|
|
112
|
-
errors: []
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
//#endregion
|
|
116
|
-
export { BROWSER_RECIPE_API_VERSION, parseBrowserPipeline };
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pipeline template expression engine.
|
|
3
|
-
*
|
|
4
|
-
* Supports: ${{ args.xxx }}, ${{ last }}, ${{ outputs.0 }}, ${{ vars.name }},
|
|
5
|
-
* ${{ error.message }} and simple pipe filters.
|
|
6
|
-
* Does NOT execute arbitrary JavaScript — only whitelisted expressions.
|
|
7
|
-
*/
|
|
8
|
-
export interface TemplateContext {
|
|
9
|
-
args: Record<string, unknown>;
|
|
10
|
-
last: unknown;
|
|
11
|
-
outputs: unknown[];
|
|
12
|
-
vars: Record<string, unknown>;
|
|
13
|
-
error?: {
|
|
14
|
-
code?: string;
|
|
15
|
-
message?: string;
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
export declare function resolvePath(obj: unknown, path: string): unknown;
|
|
19
|
-
export declare function isTruthyValue(value: unknown): boolean;
|
|
20
|
-
export declare function valueContains(actual: unknown, expected: unknown): boolean;
|
|
21
|
-
export declare function evaluateRawExpression(expr: string, ctx: TemplateContext): unknown;
|
|
22
|
-
/**
|
|
23
|
-
* Resolve all `${{ ... }}` expressions in a string.
|
|
24
|
-
*/
|
|
25
|
-
export declare function resolveTemplate(template: string, ctx: TemplateContext): string;
|
|
26
|
-
export declare function resolveTemplateValue(value: string, ctx: TemplateContext): unknown;
|
|
27
|
-
/**
|
|
28
|
-
* Deep-resolve templates in an object/array/string value.
|
|
29
|
-
*/
|
|
30
|
-
export declare function resolveTemplateDeep(value: unknown, ctx: TemplateContext): unknown;
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
//#region src/browser/pipeline/template.ts
|
|
2
|
-
/**
|
|
3
|
-
* Pipeline template expression engine.
|
|
4
|
-
*
|
|
5
|
-
* Supports: ${{ args.xxx }}, ${{ last }}, ${{ outputs.0 }}, ${{ vars.name }},
|
|
6
|
-
* ${{ error.message }} and simple pipe filters.
|
|
7
|
-
* Does NOT execute arbitrary JavaScript — only whitelisted expressions.
|
|
8
|
-
*/
|
|
9
|
-
const TEMPLATE_RE = /\$\{\{\s*(.+?)\s*\}\}/g;
|
|
10
|
-
function parsePath(path) {
|
|
11
|
-
return path.replace(/\[(\d+)\]/g, ".$1").split(".").map((part) => part.trim()).filter(Boolean);
|
|
12
|
-
}
|
|
13
|
-
function resolvePath(obj, path) {
|
|
14
|
-
const parts = parsePath(path);
|
|
15
|
-
let current = obj;
|
|
16
|
-
for (const part of parts) {
|
|
17
|
-
if (current === null || current === void 0) return void 0;
|
|
18
|
-
if (Array.isArray(current)) {
|
|
19
|
-
const index = Number(part);
|
|
20
|
-
if (!Number.isInteger(index)) return void 0;
|
|
21
|
-
current = current[index];
|
|
22
|
-
} else if (typeof current === "object") current = current[part];
|
|
23
|
-
else return;
|
|
24
|
-
}
|
|
25
|
-
return current;
|
|
26
|
-
}
|
|
27
|
-
function applyFilter(value, filter) {
|
|
28
|
-
switch (filter.trim()) {
|
|
29
|
-
case "json": return JSON.stringify(value, null, 2) ?? "null";
|
|
30
|
-
case "string": return String(value ?? "");
|
|
31
|
-
case "number": return String(Number(value));
|
|
32
|
-
case "boolean": return String(Boolean(value));
|
|
33
|
-
case "urlencode": return encodeURIComponent(String(value ?? ""));
|
|
34
|
-
default: return String(value ?? "");
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
function isTruthyValue(value) {
|
|
38
|
-
if (value === null || value === void 0 || value === false) return false;
|
|
39
|
-
if (typeof value === "number") return Number.isFinite(value) && value !== 0;
|
|
40
|
-
if (typeof value === "string") return value.length > 0 && value !== "false" && value !== "0";
|
|
41
|
-
if (Array.isArray(value)) return value.length > 0;
|
|
42
|
-
return true;
|
|
43
|
-
}
|
|
44
|
-
function valueContains(actual, expected) {
|
|
45
|
-
if (typeof actual === "string") return actual.includes(String(expected));
|
|
46
|
-
if (Array.isArray(actual)) return actual.some((item) => JSON.stringify(item) === JSON.stringify(expected));
|
|
47
|
-
if (actual && typeof actual === "object") return JSON.stringify(actual).includes(String(expected));
|
|
48
|
-
return String(actual ?? "").includes(String(expected));
|
|
49
|
-
}
|
|
50
|
-
function evaluateRawExpression(expr, ctx) {
|
|
51
|
-
const pipeIdx = expr.indexOf("|");
|
|
52
|
-
let path = expr;
|
|
53
|
-
let filter;
|
|
54
|
-
if (pipeIdx > 0) {
|
|
55
|
-
path = expr.slice(0, pipeIdx).trim();
|
|
56
|
-
filter = expr.slice(pipeIdx + 1).trim();
|
|
57
|
-
}
|
|
58
|
-
let value;
|
|
59
|
-
if (path === "last") value = ctx.last;
|
|
60
|
-
else if (path.startsWith("last.")) value = resolvePath(ctx.last, path.slice(5));
|
|
61
|
-
else if (path.startsWith("args.")) value = resolvePath(ctx.args, path.slice(5));
|
|
62
|
-
else if (path === "outputs") value = ctx.outputs;
|
|
63
|
-
else if (path.startsWith("outputs.")) value = resolvePath(ctx.outputs, path.slice(8));
|
|
64
|
-
else if (path === "vars") value = ctx.vars;
|
|
65
|
-
else if (path.startsWith("vars.")) value = resolvePath(ctx.vars, path.slice(5));
|
|
66
|
-
else if (path.startsWith("error.")) value = resolvePath(ctx.error, path.slice(6));
|
|
67
|
-
else if (path === "error") value = ctx.error?.message ?? "";
|
|
68
|
-
else {
|
|
69
|
-
value = resolvePath(ctx.args, path);
|
|
70
|
-
if (value === void 0) return `\${{ ${expr} }}`;
|
|
71
|
-
}
|
|
72
|
-
if (filter) return applyFilter(value, filter);
|
|
73
|
-
return value;
|
|
74
|
-
}
|
|
75
|
-
function stringifyTemplateValue(value) {
|
|
76
|
-
if (value === void 0 || value === null) return "";
|
|
77
|
-
if (typeof value === "string") return value;
|
|
78
|
-
if (typeof value === "number" || typeof value === "boolean") return String(value);
|
|
79
|
-
return JSON.stringify(value);
|
|
80
|
-
}
|
|
81
|
-
function evaluateExpression(expr, ctx) {
|
|
82
|
-
return stringifyTemplateValue(evaluateRawExpression(expr, ctx));
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Resolve all `${{ ... }}` expressions in a string.
|
|
86
|
-
*/
|
|
87
|
-
function resolveTemplate(template, ctx) {
|
|
88
|
-
return template.replace(TEMPLATE_RE, (_match, expr) => {
|
|
89
|
-
return evaluateExpression(expr.trim(), ctx);
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
function resolveTemplateValue(value, ctx) {
|
|
93
|
-
const trimmed = value.trim();
|
|
94
|
-
const match = /^\$\{\{\s*(.+?)\s*\}\}$/.exec(trimmed);
|
|
95
|
-
if (!match) return resolveTemplate(value, ctx);
|
|
96
|
-
return evaluateRawExpression(match[1].trim(), ctx);
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Deep-resolve templates in an object/array/string value.
|
|
100
|
-
*/
|
|
101
|
-
function resolveTemplateDeep(value, ctx) {
|
|
102
|
-
if (typeof value === "string") return resolveTemplateValue(value, ctx);
|
|
103
|
-
if (Array.isArray(value)) return value.map((item) => resolveTemplateDeep(item, ctx));
|
|
104
|
-
if (value && typeof value === "object") {
|
|
105
|
-
const result = {};
|
|
106
|
-
for (const [k, v] of Object.entries(value)) result[resolveTemplate(k, ctx)] = resolveTemplateDeep(v, ctx);
|
|
107
|
-
return result;
|
|
108
|
-
}
|
|
109
|
-
return value;
|
|
110
|
-
}
|
|
111
|
-
//#endregion
|
|
112
|
-
export { evaluateRawExpression, isTruthyValue, resolvePath, resolveTemplate, resolveTemplateDeep, resolveTemplateValue, valueContains };
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CloakBrowser provider — anti-fingerprint Chromium with stealth capabilities.
|
|
3
|
-
*
|
|
4
|
-
* Manages CloakBrowser binary download, stealth launch, CDP connection,
|
|
5
|
-
* keep-open process reuse, and temporary profile lifecycle.
|
|
6
|
-
*
|
|
7
|
-
* Ported from brocli's cloak.rs to TypeScript, using Playwright's connectOverCDP
|
|
8
|
-
* to produce a standard Browser/BrowserContext pair.
|
|
9
|
-
*/
|
|
10
|
-
import { ChildProcess } from 'node:child_process';
|
|
11
|
-
import type { Browser, BrowserContext } from 'playwright-core';
|
|
12
|
-
import type { CloakBrowserConfig } from './types.js';
|
|
13
|
-
interface PlatformInfo {
|
|
14
|
-
tag: string;
|
|
15
|
-
chromiumVersion: string;
|
|
16
|
-
archiveExt: string;
|
|
17
|
-
executableRelativePath: string;
|
|
18
|
-
fingerprintPlatform: string;
|
|
19
|
-
/**
|
|
20
|
-
* Expected SHA-256 of the downloaded archive (lowercase hex). Empty string =
|
|
21
|
-
* verification opt-out for this platform; warned but not fatal. To populate:
|
|
22
|
-
* download the archive once, run `shasum -a 256 <file>`, paste here.
|
|
23
|
-
*/
|
|
24
|
-
expectedSha256: string;
|
|
25
|
-
}
|
|
26
|
-
/** Test-only: enumerate platform manifests. */
|
|
27
|
-
export declare function listCloakBrowserPlatforms(): PlatformInfo[];
|
|
28
|
-
/** Test-only: resolved download URLs for a platform manifest (proxy first). */
|
|
29
|
-
export declare function cloakBrowserArchiveDownloadUrls(platformInfo: PlatformInfo): string[];
|
|
30
|
-
/** Default CloakBrowser home: ~/.xopc/bin/cloakbrowser (chromium-v*, profiles/, …). */
|
|
31
|
-
export declare function defaultCloakBrowserCacheDir(): string;
|
|
32
|
-
/** Resolve configured or default CloakBrowser cache root. */
|
|
33
|
-
export declare function resolveCloakBrowserCacheDir(configured?: string): string;
|
|
34
|
-
export interface CloakBrowserLaunchResult {
|
|
35
|
-
browser?: Browser;
|
|
36
|
-
context?: BrowserContext;
|
|
37
|
-
childProcess: ChildProcess | null;
|
|
38
|
-
temporaryProfileDir: string | null;
|
|
39
|
-
cdpPort: number;
|
|
40
|
-
userDataDir: string;
|
|
41
|
-
reused: boolean;
|
|
42
|
-
pid: number | null;
|
|
43
|
-
}
|
|
44
|
-
/** Resolve the persistent profile directory agents use (not ephemeral temp dirs). */
|
|
45
|
-
export declare function resolveCloakBrowserPersistentProfileDir(config?: CloakBrowserConfig): string;
|
|
46
|
-
export interface CloakBrowserRuntimeStatus {
|
|
47
|
-
running: boolean;
|
|
48
|
-
port: number;
|
|
49
|
-
userDataDir: string;
|
|
50
|
-
temporaryProfile: boolean;
|
|
51
|
-
}
|
|
52
|
-
/** Probe whether CloakBrowser CDP is listening on the configured keep-open port. */
|
|
53
|
-
export declare function probeCloakBrowserRuntime(config?: CloakBrowserConfig): Promise<CloakBrowserRuntimeStatus>;
|
|
54
|
-
/**
|
|
55
|
-
* Launch or connect to a CloakBrowser instance and return a Playwright Browser + Context.
|
|
56
|
-
*/
|
|
57
|
-
export declare function launchCloakBrowser(config?: CloakBrowserConfig): Promise<CloakBrowserLaunchResult>;
|
|
58
|
-
/**
|
|
59
|
-
* Cleanup a CloakBrowser session — kill process and remove temp profile if applicable.
|
|
60
|
-
*/
|
|
61
|
-
export declare function cleanupCloakBrowser(childProcess: ChildProcess | null, temporaryProfileDir: string | null): Promise<void>;
|
|
62
|
-
export interface CloakBrowserDoctorResult {
|
|
63
|
-
installed: boolean;
|
|
64
|
-
version: string | null;
|
|
65
|
-
binaryPath: string | null;
|
|
66
|
-
platform: string;
|
|
67
|
-
cacheDir: string;
|
|
68
|
-
expectedSha256: string;
|
|
69
|
-
/** Primary URL the install flow would fetch from. */
|
|
70
|
-
downloadUrl: string;
|
|
71
|
-
/** Fallback URLs (rendered as alternatives in the install confirm dialog). */
|
|
72
|
-
fallbackUrls: string[];
|
|
73
|
-
/** True when `binaryPath` was user-supplied (UI should surface a warning). */
|
|
74
|
-
customBinaryPath: boolean;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Download (if needed), launch headlessly to verify, then return doctor status.
|
|
78
|
-
* Used by gateway install endpoints and CLI.
|
|
79
|
-
*/
|
|
80
|
-
export declare function installCloakBrowser(config?: CloakBrowserConfig): Promise<CloakBrowserDoctorResult>;
|
|
81
|
-
/** Check CloakBrowser installation status. */
|
|
82
|
-
export declare function cloakBrowserDoctor(config?: CloakBrowserConfig): Promise<CloakBrowserDoctorResult>;
|
|
83
|
-
export {};
|