@xopcai/xopc 0.0.435 → 0.0.437
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/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{activity-store-Cwn_CNwl.js → activity-store-CXhhy7_9.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Cd23LnJJ.js → agent-avatar-dicebear-_h4GxzUK.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-display-ByzM7u9S.js → agent-avatar-display-B_QEDfMT.js} +2 -2
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-B0i37diS.js → agent-defaults-settings-panel-DWIluCZB.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-plugin-dialog-XN-tZ-Ox.js → agent-plugin-dialog-lCWIS06R.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-ZDA1OaLv.js → agents-C-tIn72l.js} +3 -3
- package/dist/gateway/static/root/assets/{agents-admin-api-B5lKH_ps.js → agents-admin-api-DIStX2e1.js} +1 -1
- package/dist/gateway/static/root/assets/{api-B9fZL-V8.js → api-C4xrqOKi.js} +1 -1
- package/dist/gateway/static/root/assets/{api-Djju8qIR.js → api-bT-kA268.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-IlyzDPJu.js → app-management-settings-panel-Dk75Bmi2.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-BxdFGob3.js → appearance-settings-DTj1XI4v.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-CxEKiOTA.js → apps-page-7iAULaEl.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-4gEvotPr.js → archive-plugin-BADrW4yR.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-api-4fVKv9PJ.js → automation-api-CRz5EE_c.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-result-state-m7PeK2kl.js → automation-result-state-D0EHDk4V.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-run-list-CJOdy_R2.js → automation-run-list-CnaV2j9R.js} +1 -1
- package/dist/gateway/static/root/assets/automation-task-card-DD4yjrI6.js +3 -0
- package/dist/gateway/static/root/assets/{automations-page-BjbM15eY.js → automations-page-DDNx4Gn3.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-CqurzLYX.js → automations-workspace-CtidgXTX.js} +2 -2
- package/dist/gateway/static/root/assets/{binary-plugins-69WyJLNW.js → binary-plugins-hpeH8g5V.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-DUONDIZR.js → block-editor-P_RGb2rE.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automation-inputs-DL4YPCuN.js → browser-automation-inputs-C3gQlgox.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-1Aq6XmRs.js → browser-automations-page-CsdyL6q5.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-control-api-yjru8E7R.js → browser-control-api-Btwz8koK.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-CvwpT8Um.js → browser-settings-page-B-ks3b8r.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-C7lnwKKm.js → capabilities-C4F2D1gH.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-DaeQXJT4.js → capabilities-f0YyWX04.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-page-B5avAOUM.js → capabilities-page-CJm5gNu8.js} +2 -2
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-_9yCS78i.js → capabilities-settings-panel-BMg8DBa0.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-CoQb4HOF.js → channels-DYgvP8sO.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-agents-api-BUi_7GRo.js → chat-agents-api-BrsUEl3u.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-chart-block-CcVcKsDZ.js → chat-chart-block-Cq3aoRzV.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-page--wcFhTjW.js → chat-page-dh7ImvX8.js} +9 -9
- package/dist/gateway/static/root/assets/{chat-terminal-dock-BMXJpPuH.js → chat-terminal-dock-2eGZ5qZ7.js} +1 -1
- package/dist/gateway/static/root/assets/{command-palette-api-luUjQPsh.js → command-palette-api-BEqdX7Q-.js} +1 -1
- package/dist/gateway/static/root/assets/{composer-payload-handoff-B5XNxNCb.js → composer-payload-handoff-BBm3ypBb.js} +1 -1
- package/dist/gateway/static/root/assets/{computer-settings-page-CWtdyEJH.js → computer-settings-page-DUhsxs4l.js} +1 -1
- package/dist/gateway/static/root/assets/{connected-providers-grid-2idMtk65.js → connected-providers-grid-BsCLGLnw.js} +1 -1
- package/dist/gateway/static/root/assets/{connection-usage-guide-Ddh0bfkj.js → connection-usage-guide-BgvvHMc4.js} +1 -1
- package/dist/gateway/static/root/assets/{connector-service-page-C3msXaBk.js → connector-service-page-C3SmPK1c.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-api-NcWECWKg.js → connectors-api-Now9xXuA.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-Crb6DILX.js → connectors-page-CTMeC7Pt.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-Cfjq1hD_.js → date-picker-CBoc2ETg.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-ChFn9v-3.js → desktop-pet-DS2dJydK.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-DvnVIv25.js → desktop-pet-settings-CzGc9byI.js} +1 -1
- package/dist/gateway/static/root/assets/{dev-view-store-DQJ61P5L.js → dev-view-store-BXMp1Npf.js} +1 -1
- package/dist/gateway/static/root/assets/{device-pairing-wizard-KxaIL-OX.js → device-pairing-wizard--SCayxiS.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-Drv864uE.js → directory-picker-path-field-P_-tLtwi.js} +1 -1
- package/dist/gateway/static/root/assets/{discussion-annotation-sync-DfBRkWtw.js → discussion-annotation-sync-D_NJLur2.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-DAlBIt_R.js → extension-debug-page-CE9KJpjL.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-iframe-host-Bds-5kY_.js → extension-iframe-host-ClbrQvGF.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-marketplace-api-CZg8nBwW.js → extension-marketplace-api-BNNQYLeu.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-ZTw-oucT.js → extension-page-C6qZ9pGs.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-provider-NKWfjpdP.js → extension-provider-KmpUveDY.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-CT7PPt_q.js → extension-settings-page-DWKB4ETv.js} +1 -1
- package/dist/gateway/static/root/assets/{file-preview-surface-BcLeaSNe.js → file-preview-surface-CEDfehx5.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-Cq-ByXL4.js → gateway-config-swr-CtEdaxOS.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-realtime-DwMd2PCt.js → gateway-realtime-SunJUMP3.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-BywiC4CK.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-restart-DdiVzbkL.js → gateway-restart-srJ9TMC5.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-1QUdNwrZ.js → gateway-settings-DWVxjM9y.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-PMJi5mX4.js → gateway-startup-retry-xpHdw5uq.js} +1 -1
- package/dist/gateway/static/root/assets/{global-defaults-api-DgzZh3wX.js → global-defaults-api-C-ogBDn1.js} +1 -1
- package/dist/gateway/static/root/assets/{home-page-Chn7YTiD.js → home-page-2Uj--v_o.js} +2 -2
- package/dist/gateway/static/root/assets/{image-generation-api-CjVpsckq.js → image-generation-api-DFGE3Ait.js} +1 -1
- package/dist/gateway/static/root/assets/{imports-page-CJCvZFaQ.js → imports-page-BkslHrr5.js} +1 -1
- package/dist/gateway/static/root/assets/{index-8xLWo0Tt.js → index-BxHzmTJV.js} +5 -5
- package/dist/gateway/static/root/assets/index-CIYNPxDl.css +1 -0
- package/dist/gateway/static/root/assets/{install-connector-dialog-Bo06Ry3H.js → install-connector-dialog-Fctw32Lx.js} +1 -1
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BylFJeGu.js → keyboard-shortcuts-settings-DFBpeaA_.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-B3MSSFsr.js → local-app-workbench-page-hJzkUVoK.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-BeV86rMJ.js → local-apps-page-Bj-nywIv.js} +1 -1
- package/dist/gateway/static/root/assets/{local-session-drafts-jgw8UGsO.js → local-session-drafts-hodTdtvj.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-CAZaC05J.js → locale-store-LhhHA2sK.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-BMmSsUP5.js → logs-page-CcM2foZi.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-Bu7T8ewk.js → management-settings-gwDIT7mY.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-BatP4qeK.js → markdown-view-usF9EoMp.js} +1 -1
- package/dist/gateway/static/root/assets/{mcp-conversation-setup-page-rROtr0UN.js → mcp-conversation-setup-page-CfHcS8aO.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-88OV72YE.js → media-plugins-Kpj3pQ3i.js} +1 -1
- package/dist/gateway/static/root/assets/messages-C3xqMM9W.js +3 -0
- package/dist/gateway/static/root/assets/{model-selector-raBRBkN_.js → model-selector-VVkCmNdS.js} +1 -1
- package/dist/gateway/static/root/assets/{models-hub-cache-CzC9y3D0.js → models-hub-cache-BfrcizHv.js} +1 -1
- package/dist/gateway/static/root/assets/{note-detail-panel-BvA8Vkbm.js → note-detail-panel-vvlPKLHz.js} +3 -3
- package/dist/gateway/static/root/assets/note-image-lightbox-BDZGHYaZ.js +1 -0
- package/dist/gateway/static/root/assets/{notes-api-zXpV6UXu.js → notes-api-DflS6I2c.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-CjYH9Kle.js → notes-page-DKPHaszO.js} +1 -1
- package/dist/gateway/static/root/assets/{oauth-api-DmxSaxM1.js → oauth-api-CZiot_FY.js} +1 -1
- package/dist/gateway/static/root/assets/{oauth-provider-connect-D4Gfs-Ba.js → oauth-provider-connect-BjLEJ4az.js} +1 -1
- package/dist/gateway/static/root/assets/{page-context-capture-button-Mig3d0UX.js → page-context-capture-button-C3okR3ap.js} +1 -1
- package/dist/gateway/static/root/assets/{page-context-draft-C4IIZaKd.js → page-context-draft-DRE6i2wO.js} +1 -1
- package/dist/gateway/static/root/assets/page-header-store-BVj8nDdi.js +1 -0
- package/dist/gateway/static/root/assets/{personal-avatar-DLa-CpaK.js → personal-avatar-TZzkeDZK.js} +1 -1
- package/dist/gateway/static/root/assets/{personal-page-BhuT79Wd.js → personal-page-Cz-KnXHT.js} +1 -1
- package/dist/gateway/static/root/assets/{personal-settings-panel-XSUkgcr2.js → personal-settings-panel-BilBWHZ1.js} +1 -1
- package/dist/gateway/static/root/assets/{phone-dependencies-card-DYwnuVh3.js → phone-dependencies-card-B_l_JCRy.js} +1 -1
- package/dist/gateway/static/root/assets/{phone-model-connection-2F32QTHA.js → phone-model-connection-DmYRqxCF.js} +1 -1
- package/dist/gateway/static/root/assets/{phone-model-picker-DCVzIr0s.js → phone-model-picker-wK2tRuj0.js} +1 -1
- package/dist/gateway/static/root/assets/{phone-settings-page-DJttE4id.js → phone-settings-page-DWUZuu3k.js} +1 -1
- package/dist/gateway/static/root/assets/{phone-workspace-store-Dxp-KhFP.js → phone-workspace-store-CpH233TG.js} +1 -1
- package/dist/gateway/static/root/assets/{plugin-details-dialog-tyjAjFjA.js → plugin-details-dialog-DIQH12Ki.js} +1 -1
- package/dist/gateway/static/root/assets/{preference-select-fields-BVP3MhGK.js → preference-select-fields-DPXt3YyQ.js} +1 -1
- package/dist/gateway/static/root/assets/{product-automation-feedback-DbJvv92z.js → product-automation-feedback-BVkkAJkY.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-RImqlhCD.js → product-open-page-D-fwzOTB.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-content-DxSqrKsg.js → product-preview-content-DLnOxTnn.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-modal-Cw8Q8Uom.js → product-preview-modal-AeEtUDZQ.js} +2 -2
- package/dist/gateway/static/root/assets/{project-detail-page-CuugOYfe.js → project-detail-page-B7L3Kvhc.js} +1 -1
- package/dist/gateway/static/root/assets/{project-understanding-BMKcoUW5.js → project-understanding-tqZ0etEw.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-CFsABLvs.js → projects-page-D65pw44g.js} +1 -1
- package/dist/gateway/static/root/assets/{providers-api-CAeXbJNF.js → providers-api-DzeStdCu.js} +1 -1
- package/dist/gateway/static/root/assets/{recording-upload-CfpllTe5.js → recording-upload-Id3p5Vyv.js} +1 -1
- package/dist/gateway/static/root/assets/{registry-api-fLOqFyrz.js → registry-api-B3YqZBhQ.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-BvKOxy0L.js → remote-access-hub-DxAInmWy.js} +1 -1
- package/dist/gateway/static/root/assets/{resource-unavailable-D15jzjV_.js → resource-unavailable-DH-GGLSM.js} +1 -1
- package/dist/gateway/static/root/assets/{route-preload-BQapekpy.js → route-preload-C22MIvup.js} +2 -2
- package/dist/gateway/static/root/assets/{runtime-tools-api-D0Nrvuqv.js → runtime-tools-api-8mXDTzc2.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-CA27XgL2.js → runtime-tools-settings-panel-S2HxRVlT.js} +1 -1
- package/dist/gateway/static/root/assets/{service-recommendation-list-B0RoYLVT.js → service-recommendation-list-DFqBz8S6.js} +1 -1
- package/dist/gateway/static/root/assets/{session-api-CHRP5Lwf.js → session-api-DZ2Ov33K.js} +1 -1
- package/dist/gateway/static/root/assets/{session-manager-DRRWwKE4.js → session-manager-DSaoWM1F.js} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-uJHS3-6F.js → sessions-page-BpUbNplq.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-CGgt1myW.js +1 -0
- package/dist/gateway/static/root/assets/{settings-advanced-section-D-llwfSj.js → settings-advanced-section-TJ8MAroB.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-mode-store-BspMKc9N.js → settings-mode-store-xhm6JIs-.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-CedwaHM0.js → settings-page-B_XKKvWr.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-header-LuOJvqNa.js → settings-page-header-BEDxq_lT.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-CduQ8w4a.js → settings-page-layout-BftgkTYo.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-interaction-page-ujpPGl84.js → setup-interaction-page-BtihoIoz.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-BN2aCJUN.js → setup-status-panel-DehYof2V.js} +1 -1
- package/dist/gateway/static/root/assets/{share-link-dialog-CTATUaa4.js → share-link-dialog-C-mhzvLF.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-Dq0J3VgS.js → share-preview-page-Cnxfv66F.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-api-zegE8pSE.js → shares-api-D2HTaQZH.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-DXpvsRXq.js → shares-settings-BLcnCGon.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-api-DCL1EN7f.js → skill-api-DOISy5q8.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-list-api-Bv0mmHbu.js → skill-list-api-LoIlcCDf.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-reload-api-DPZbadiO.js → skill-reload-api-qSwB_mAH.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-DMC7Gaku.js → skills-page-CJXLVK0U.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-BYFUhlqG.js → system-settings-panel-BT6_yFco.js} +1 -1
- package/dist/gateway/static/root/assets/{task-detail-page-_Og3plZL.js → task-detail-page-1AFyRTia.js} +1 -1
- package/dist/gateway/static/root/assets/{task-result-evidence-Bxm8-H0B.js → task-result-evidence-CkwEM0In.js} +1 -1
- package/dist/gateway/static/root/assets/{terminal-panel-store-Djf9l2qZ.js → terminal-panel-store-BP3dN3md.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-8GFVtotZ.js → theme-store-BZ8YC33M.js} +1 -1
- package/dist/gateway/static/root/assets/{tracing-settings-page-oWW3SBZ4.js → tracing-settings-page-9YvEnES_.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-D-mEsSGF.js → tunnel-api-CnPOg1pg.js} +1 -1
- package/dist/gateway/static/root/assets/{understanding-activity-store-CvDjsd0I.js → understanding-activity-store-3sOhoxX4.js} +1 -1
- package/dist/gateway/static/root/assets/{understanding-refresh-store-DzOZJm7A.js → understanding-refresh-store-BBXlbRLa.js} +1 -1
- package/dist/gateway/static/root/assets/{usage-page-z-o6Uuev.js → usage-page-6LW4yLy1.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-BVYS8UoK.js → use-autosave-CDy9yziL.js} +1 -1
- package/dist/gateway/static/root/assets/{use-composer-attachments-lecOV2q5.js → use-composer-attachments-C4eSyX-C.js} +1 -1
- package/dist/gateway/static/root/assets/{use-file-preview-expanded-nd_CuFsd.js → use-file-preview-expanded-SFqd8k7K.js} +2 -2
- package/dist/gateway/static/root/assets/{use-personal-profile-CQi2ZCxV.js → use-personal-profile-sQzaa6Dy.js} +1 -1
- package/dist/gateway/static/root/assets/{use-workspace-tree-BiaddkzX.js → use-workspace-tree-DKPvcyw1.js} +1 -1
- package/dist/gateway/static/root/assets/{user-model-page-Bks1n0Nj.js → user-model-page-DYVp7nA6.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-BbW8NFeZ.js → voice-api-key-field-BKXWXCit.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-jSMzZWWy.js → voice-config-api-DNxzs-eF.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-input-shortcut-events-_SgYmx7X.js → voice-input-shortcut-events-3kcfHPrY.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-transcribe-api-BJCfiRFU.js → voice-transcribe-api-CVVa_x99.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-DSTSNyU7.js → work-discovery-overlay-B4F3MACu.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-page-Dd_QJJvb.js → work-discovery-page-BuKTCGSR.js} +1 -1
- package/dist/gateway/static/root/assets/{working-directory-picker-modal-q39BUcJ6.js → working-directory-picker-modal-BiDK93J_.js} +1 -1
- package/dist/gateway/static/root/assets/{workspace-api-Di2OmCvz.js → workspace-api-S2aJOX7w.js} +2 -2
- package/dist/gateway/static/root/assets/workspace-editor-agent-store-oZKoWMdV.js +1 -0
- package/dist/gateway/static/root/assets/{workspace-file-preview-dialog-BUGNT765.js → workspace-file-preview-dialog-B9f3GN7l.js} +1 -1
- package/dist/gateway/static/root/assets/{workspace-open-location-menu-bMSvmQW7.js → workspace-open-location-menu-BNjipenH.js} +1 -1
- package/dist/gateway/static/root/assets/{xopc-cloud-account-card-Bbe19Del.js → xopc-cloud-account-card-Csye7zKU.js} +1 -1
- package/dist/gateway/static/root/index.html +81 -81
- package/dist/package.js +1 -1
- package/dist/src/agent/client-error-format.d.ts +1 -1
- package/dist/src/agent/client-error-format.js +3 -2
- package/dist/src/agent/orchestration/llm-turn-retry.js +8 -1
- package/dist/src/agent/tool-manuals/computer.d.ts +1 -1
- package/dist/src/agent/tool-manuals/computer.js +2 -2
- package/dist/src/cli/commands/platform.js +2 -2
- package/dist/src/computer/broker.d.ts +5 -1
- package/dist/src/computer/broker.js +34 -9
- package/dist/src/computer/diagnostics.d.ts +340 -0
- package/dist/src/computer/diagnostics.js +4 -0
- package/dist/src/computer/errors.d.ts +340 -0
- package/dist/src/computer/errors.js +122 -5
- package/dist/src/computer/evaluation.d.ts +186 -0
- package/dist/src/computer/model-adapter.js +47 -20
- package/dist/src/computer/runtime.d.ts +170 -0
- package/dist/src/computer/runtime.js +36 -8
- package/dist/src/computer/stability-diagnostics.d.ts +23 -0
- package/dist/src/computer/stability-diagnostics.js +71 -0
- package/dist/src/computer/validation-diagnostics.d.ts +9 -0
- package/dist/src/computer/validation-diagnostics.js +54 -0
- package/dist/src/providers/model-response.js +1 -0
- package/dist/src/realtime/runtime.js +13 -5
- package/dist/src/realtime/writer.d.ts +7 -0
- package/dist/src/realtime/writer.js +96 -30
- package/package.json +1 -1
- package/dist/gateway/static/root/assets/automation-task-card-DZWhCWJa.js +0 -3
- package/dist/gateway/static/root/assets/gateway-realtime-store-CHrf6-nR.js +0 -1
- package/dist/gateway/static/root/assets/index-iukJWzxG.css +0 -1
- package/dist/gateway/static/root/assets/messages-C7fckbyG.js +0 -3
- package/dist/gateway/static/root/assets/note-image-lightbox-D6kUDDd5.js +0 -1
- package/dist/gateway/static/root/assets/page-header-store-D7G5utVi.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-CZ4J3Kuy.js +0 -1
- package/dist/gateway/static/root/assets/workspace-editor-agent-store-B2r9wlix.js +0 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ComputerTarget } from '@xopcai/computer-control-contract';
|
|
2
|
+
import type { z } from 'zod';
|
|
3
|
+
import type { ComputerDiagnosticSchema, ComputerStabilitySchema } from './errors.js';
|
|
4
|
+
type Stability = z.infer<typeof ComputerStabilitySchema>;
|
|
5
|
+
type Snapshot = {
|
|
6
|
+
target: ComputerTarget;
|
|
7
|
+
summary: string;
|
|
8
|
+
stateDigest: string;
|
|
9
|
+
imageWidth: number;
|
|
10
|
+
imageHeight: number;
|
|
11
|
+
};
|
|
12
|
+
/** Compare privately; retain only fixed change categories and bounded element positions, never values or hashes. */
|
|
13
|
+
export declare class ComputerStabilityTracker {
|
|
14
|
+
private readonly stage;
|
|
15
|
+
private readonly action?;
|
|
16
|
+
private readonly changes;
|
|
17
|
+
private readonly indices;
|
|
18
|
+
constructor(stage: Stability['stage'], action?: Stability['action']);
|
|
19
|
+
deadline(): void;
|
|
20
|
+
compare(before: Snapshot, after: Snapshot): void;
|
|
21
|
+
diagnostic(errorCode: string, samples: number): z.infer<typeof ComputerDiagnosticSchema>;
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
//#region src/computer/stability-diagnostics.ts
|
|
3
|
+
/** Compare privately; retain only fixed change categories and bounded element positions, never values or hashes. */
|
|
4
|
+
var ComputerStabilityTracker = class {
|
|
5
|
+
changes = /* @__PURE__ */ new Set();
|
|
6
|
+
indices = /* @__PURE__ */ new Set();
|
|
7
|
+
constructor(stage, action) {
|
|
8
|
+
this.stage = stage;
|
|
9
|
+
this.action = action;
|
|
10
|
+
}
|
|
11
|
+
deadline() {
|
|
12
|
+
this.changes.add("deadline");
|
|
13
|
+
}
|
|
14
|
+
compare(before, after) {
|
|
15
|
+
const a = before.target, b = after.target;
|
|
16
|
+
if (a.appId !== b.appId || a.pid !== b.pid || a.processIdentity !== b.processIdentity || a.windowId !== b.windowId) this.changes.add("window_identity");
|
|
17
|
+
if (a.geometryRevision !== b.geometryRevision || a.width !== b.width || a.height !== b.height) this.changes.add("window_geometry");
|
|
18
|
+
if (before.imageWidth !== after.imageWidth || before.imageHeight !== after.imageHeight) this.changes.add("image_dimensions");
|
|
19
|
+
if (before.summary !== after.summary) try {
|
|
20
|
+
const left = JSON.parse(before.summary), right = JSON.parse(after.summary);
|
|
21
|
+
const ae = Array.isArray(left.elements) ? left.elements : [], be = Array.isArray(right.elements) ? right.elements : [];
|
|
22
|
+
if (ae.length !== be.length) this.changes.add("accessibility_structure");
|
|
23
|
+
if (left.text !== right.text) this.changes.add("accessibility_text");
|
|
24
|
+
const groups = {
|
|
25
|
+
accessibility_structure: [
|
|
26
|
+
"role",
|
|
27
|
+
"ref",
|
|
28
|
+
"depth",
|
|
29
|
+
"parent_index"
|
|
30
|
+
],
|
|
31
|
+
accessibility_text: [
|
|
32
|
+
"label",
|
|
33
|
+
"value",
|
|
34
|
+
"value_description"
|
|
35
|
+
],
|
|
36
|
+
accessibility_state: [
|
|
37
|
+
"enabled",
|
|
38
|
+
"selected",
|
|
39
|
+
"keyboardFocused",
|
|
40
|
+
"inputAllowed",
|
|
41
|
+
"semanticActions",
|
|
42
|
+
"in_web_content"
|
|
43
|
+
],
|
|
44
|
+
accessibility_geometry: ["bounds", "frame"]
|
|
45
|
+
};
|
|
46
|
+
for (let i = 0; i < Math.max(ae.length, be.length); i++) {
|
|
47
|
+
if (JSON.stringify(ae[i]) !== JSON.stringify(be[i]) && this.indices.size < 8 && i <= 16384) this.indices.add(i);
|
|
48
|
+
for (const [category, fields] of Object.entries(groups)) if (fields.some((field) => JSON.stringify(ae[i]?.[field]) !== JSON.stringify(be[i]?.[field]))) this.changes.add(category);
|
|
49
|
+
}
|
|
50
|
+
} catch {
|
|
51
|
+
this.changes.add("accessibility_structure");
|
|
52
|
+
}
|
|
53
|
+
if (before.stateDigest !== after.stateDigest && before.summary === after.summary && JSON.stringify(a) === JSON.stringify(b) && before.imageWidth === after.imageWidth && before.imageHeight === after.imageHeight) this.changes.add("visual_or_unexposed_state");
|
|
54
|
+
}
|
|
55
|
+
diagnostic(errorCode, samples) {
|
|
56
|
+
return {
|
|
57
|
+
errorCode,
|
|
58
|
+
phase: this.stage === "initial_capture" ? "observe" : "dispatch",
|
|
59
|
+
diagnosticId: randomUUID(),
|
|
60
|
+
stability: {
|
|
61
|
+
stage: this.stage,
|
|
62
|
+
samples,
|
|
63
|
+
...this.action ? { action: this.action } : {},
|
|
64
|
+
changes: [...this.changes],
|
|
65
|
+
changedElementIndices: [...this.indices]
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
//#endregion
|
|
71
|
+
export { ComputerStabilityTracker };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ComputerValidationSchema } from './errors.js';
|
|
3
|
+
type Validation = z.infer<typeof ComputerValidationSchema>;
|
|
4
|
+
/** Project only allowlisted metadata; Zod messages, values and arbitrary property names may contain private data. */
|
|
5
|
+
export declare function modelValidation(value: unknown, stage: Validation['stage'], error?: unknown, failure?: {
|
|
6
|
+
path: (string | number)[];
|
|
7
|
+
code: Validation['issues'][number]['code'];
|
|
8
|
+
}): Validation;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ComputerValidationSchema } from "./errors.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
//#region src/computer/validation-diagnostics.ts
|
|
4
|
+
const Field = ComputerValidationSchema.shape.issues.element.shape.path.element;
|
|
5
|
+
const Action = ComputerValidationSchema.shape.action;
|
|
6
|
+
const Code = ComputerValidationSchema.shape.issues.element.shape.code;
|
|
7
|
+
function actionName(value) {
|
|
8
|
+
if (!value || typeof value !== "object") return "unknown";
|
|
9
|
+
const node = value;
|
|
10
|
+
return Action.safeParse(typeof node.action === "string" ? node.action : node.kind).data ?? "unknown";
|
|
11
|
+
}
|
|
12
|
+
/** Project only allowlisted metadata; Zod messages, values and arbitrary property names may contain private data. */
|
|
13
|
+
function modelValidation(value, stage, error, failure) {
|
|
14
|
+
const root = value && typeof value === "object" ? value : {};
|
|
15
|
+
const payload = root.arguments && typeof root.arguments === "object" ? root.arguments : root;
|
|
16
|
+
const proposal = payload.proposal && typeof payload.proposal === "object" ? payload.proposal : payload;
|
|
17
|
+
const action = actionName(typeof proposal.action === "object" ? proposal.action : proposal);
|
|
18
|
+
const issues = [];
|
|
19
|
+
const append = (path, code) => {
|
|
20
|
+
if (issues.length >= 4) return;
|
|
21
|
+
let node = value;
|
|
22
|
+
let nestedAction = action;
|
|
23
|
+
for (const part of path) {
|
|
24
|
+
if (!node || typeof node !== "object") break;
|
|
25
|
+
node = node[part];
|
|
26
|
+
const candidate = actionName(node);
|
|
27
|
+
if (candidate !== "unknown") nestedAction = candidate;
|
|
28
|
+
}
|
|
29
|
+
issues.push({
|
|
30
|
+
path: path.slice(0, 10).map((part) => Field.safeParse(part).data ?? "unknown_field"),
|
|
31
|
+
code: Code.safeParse(code).data ?? "invalid_value",
|
|
32
|
+
action: nestedAction
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
const branchScore = (list) => list.length + list.filter((issue) => issue.code === "invalid_value" && ["kind", "action"].includes(String(issue.path.at(-1)))).length * 100;
|
|
36
|
+
const visit = (list, prefix = []) => {
|
|
37
|
+
for (const issue of list) if (issue.code === "invalid_union" && issue.errors.length) visit([...issue.errors].sort((a, b) => branchScore(a) - branchScore(b))[0], [...prefix, ...issue.path]);
|
|
38
|
+
else if (issue.code === "unrecognized_keys") for (const key of issue.keys) append([
|
|
39
|
+
...prefix,
|
|
40
|
+
...issue.path,
|
|
41
|
+
key
|
|
42
|
+
], issue.code);
|
|
43
|
+
else append([...prefix, ...issue.path], issue.code);
|
|
44
|
+
};
|
|
45
|
+
if (error instanceof z.ZodError) visit(error.issues);
|
|
46
|
+
if (failure) append(failure.path, failure.code);
|
|
47
|
+
return {
|
|
48
|
+
action,
|
|
49
|
+
stage,
|
|
50
|
+
issues
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//#endregion
|
|
54
|
+
export { modelValidation };
|
|
@@ -195,15 +195,23 @@ var RealtimeRuntime = class {
|
|
|
195
195
|
const output = item.view === "compact" ? compactRunEvent(event) : event;
|
|
196
196
|
if (output) writer.enqueue(output);
|
|
197
197
|
});
|
|
198
|
-
subscriptions.set(item.topic, handle);
|
|
199
198
|
writer.enqueue(serverMessage("realtime.subscribed", {
|
|
200
199
|
topic: item.topic,
|
|
201
200
|
cursor: handle.cursor
|
|
202
201
|
}), "critical");
|
|
203
|
-
|
|
204
|
-
const
|
|
205
|
-
|
|
206
|
-
|
|
202
|
+
const cancelReplay = writer.enqueueReplay((function* () {
|
|
203
|
+
for (const message of handle.initial) {
|
|
204
|
+
const output = item.view === "compact" ? compactRunEvent(message) : message;
|
|
205
|
+
if (output) yield output;
|
|
206
|
+
}
|
|
207
|
+
})());
|
|
208
|
+
subscriptions.set(item.topic, {
|
|
209
|
+
...handle,
|
|
210
|
+
unsubscribe: () => {
|
|
211
|
+
cancelReplay();
|
|
212
|
+
handle.unsubscribe();
|
|
213
|
+
}
|
|
214
|
+
});
|
|
207
215
|
}
|
|
208
216
|
return true;
|
|
209
217
|
};
|
|
@@ -8,8 +8,15 @@ export declare class RealtimeSocketWriter {
|
|
|
8
8
|
private sending;
|
|
9
9
|
private closed;
|
|
10
10
|
private retryTimer?;
|
|
11
|
+
private stallTimer?;
|
|
11
12
|
constructor(socket: WebSocket);
|
|
12
13
|
enqueue(message: ServerRealtimeMessage, priority?: 'critical' | 'normal'): boolean;
|
|
14
|
+
/** Serialize replay only as the socket drains; live messages stay behind the replay. */
|
|
15
|
+
enqueueReplay(messages: Iterable<ServerRealtimeMessage>): () => void;
|
|
13
16
|
close(): void;
|
|
17
|
+
private fail;
|
|
18
|
+
private serialize;
|
|
19
|
+
private watchForStall;
|
|
20
|
+
private next;
|
|
14
21
|
private flush;
|
|
15
22
|
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
import { createLogger } from "../utils/logger/index.js";
|
|
2
|
+
import { init_logger } from "../utils/logger.js";
|
|
1
3
|
//#region src/realtime/writer.ts
|
|
4
|
+
init_logger();
|
|
5
|
+
const log = createLogger("RealtimeSocketWriter");
|
|
2
6
|
const SOFT_BUFFERED_BYTES = 512 * 1024;
|
|
3
|
-
const
|
|
4
|
-
const MAX_QUEUED_BYTES =
|
|
7
|
+
const MAX_EVENT_BYTES = 2 * 1024 * 1024;
|
|
8
|
+
const MAX_QUEUED_BYTES = 16 * 1024 * 1024;
|
|
9
|
+
const DELIVERY_STALL_MS = 15e3;
|
|
5
10
|
var RealtimeSocketWriter = class {
|
|
6
11
|
critical = [];
|
|
7
12
|
normal = [];
|
|
@@ -9,80 +14,141 @@ var RealtimeSocketWriter = class {
|
|
|
9
14
|
sending = false;
|
|
10
15
|
closed = false;
|
|
11
16
|
retryTimer;
|
|
17
|
+
stallTimer;
|
|
12
18
|
constructor(socket) {
|
|
13
19
|
this.socket = socket;
|
|
14
20
|
}
|
|
15
21
|
enqueue(message, priority = "normal") {
|
|
16
22
|
if (this.closed || this.socket.readyState !== 1) return false;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
data = JSON.stringify(message);
|
|
20
|
-
} catch {
|
|
21
|
-
this.socket.close(1011, "Realtime message serialization failed");
|
|
22
|
-
this.close();
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
const item = {
|
|
26
|
-
data,
|
|
27
|
-
bytes: Buffer.byteLength(data)
|
|
28
|
-
};
|
|
29
|
-
if (item.bytes > MAX_QUEUED_BYTES) {
|
|
30
|
-
this.socket.close(1009, "Realtime event exceeds delivery limit");
|
|
31
|
-
this.close();
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
23
|
+
const item = this.serialize(message);
|
|
24
|
+
if (!item) return false;
|
|
34
25
|
if (this.queuedBytes + item.bytes > MAX_QUEUED_BYTES) {
|
|
35
|
-
this.
|
|
36
|
-
|
|
26
|
+
this.fail(4413, "Realtime delivery queue limit exceeded", {
|
|
27
|
+
eventBytes: item.bytes,
|
|
28
|
+
...message.kind === "realtime.event" ? {
|
|
29
|
+
topic: message.payload.topic,
|
|
30
|
+
event: message.payload.event
|
|
31
|
+
} : {}
|
|
32
|
+
});
|
|
37
33
|
return false;
|
|
38
34
|
}
|
|
39
35
|
this.queuedBytes += item.bytes;
|
|
40
36
|
(priority === "critical" ? this.critical : this.normal).push(item);
|
|
41
37
|
this.flush();
|
|
42
|
-
return
|
|
38
|
+
return !this.closed;
|
|
39
|
+
}
|
|
40
|
+
/** Serialize replay only as the socket drains; live messages stay behind the replay. */
|
|
41
|
+
enqueueReplay(messages) {
|
|
42
|
+
if (this.closed || this.socket.readyState !== 1) return () => {};
|
|
43
|
+
const item = { iterator: messages[Symbol.iterator]() };
|
|
44
|
+
this.normal.push(item);
|
|
45
|
+
this.flush();
|
|
46
|
+
return () => {
|
|
47
|
+
const index = this.normal.indexOf(item);
|
|
48
|
+
if (index >= 0) this.normal.splice(index, 1);
|
|
49
|
+
item.iterator.return?.();
|
|
50
|
+
};
|
|
43
51
|
}
|
|
44
52
|
close() {
|
|
45
53
|
if (this.closed) return;
|
|
46
54
|
this.closed = true;
|
|
47
55
|
if (this.retryTimer) clearTimeout(this.retryTimer);
|
|
56
|
+
if (this.stallTimer) clearTimeout(this.stallTimer);
|
|
48
57
|
this.retryTimer = void 0;
|
|
58
|
+
this.stallTimer = void 0;
|
|
59
|
+
for (const item of this.normal) if ("iterator" in item) item.iterator.return?.();
|
|
49
60
|
this.critical.length = 0;
|
|
50
61
|
this.normal.length = 0;
|
|
51
62
|
this.queuedBytes = 0;
|
|
52
63
|
}
|
|
64
|
+
fail(code, reason, fields = {}) {
|
|
65
|
+
log.warn({
|
|
66
|
+
...fields,
|
|
67
|
+
code,
|
|
68
|
+
queuedBytes: this.queuedBytes,
|
|
69
|
+
bufferedBytes: this.socket.bufferedAmount,
|
|
70
|
+
pendingItems: this.normal.length + this.critical.length
|
|
71
|
+
}, reason);
|
|
72
|
+
this.close();
|
|
73
|
+
this.socket.close(code, reason);
|
|
74
|
+
}
|
|
75
|
+
serialize(message) {
|
|
76
|
+
let data;
|
|
77
|
+
try {
|
|
78
|
+
data = JSON.stringify(message);
|
|
79
|
+
} catch {
|
|
80
|
+
this.fail(1011, "Realtime message serialization failed");
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const bytes = Buffer.byteLength(data);
|
|
84
|
+
if (bytes > MAX_EVENT_BYTES) {
|
|
85
|
+
this.fail(1009, "Realtime event exceeds delivery limit", {
|
|
86
|
+
eventBytes: bytes,
|
|
87
|
+
...message.kind === "realtime.event" ? {
|
|
88
|
+
topic: message.payload.topic,
|
|
89
|
+
event: message.payload.event
|
|
90
|
+
} : {}
|
|
91
|
+
});
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
data,
|
|
96
|
+
bytes
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
watchForStall() {
|
|
100
|
+
if (!this.stallTimer) this.stallTimer = setTimeout(() => this.fail(4413, "Realtime delivery stalled"), DELIVERY_STALL_MS);
|
|
101
|
+
}
|
|
102
|
+
next() {
|
|
103
|
+
const critical = this.critical.shift();
|
|
104
|
+
if (critical) return critical;
|
|
105
|
+
while (this.normal.length) {
|
|
106
|
+
const head = this.normal[0];
|
|
107
|
+
if (!("iterator" in head)) return this.normal.shift();
|
|
108
|
+
const next = head.iterator.next();
|
|
109
|
+
if (next.done) {
|
|
110
|
+
this.normal.shift();
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const item = this.serialize(next.value);
|
|
114
|
+
if (item) this.queuedBytes += item.bytes;
|
|
115
|
+
return item;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
53
118
|
flush() {
|
|
54
119
|
if (this.closed || this.sending || this.socket.readyState !== 1) return;
|
|
55
|
-
if (this.socket.bufferedAmount >
|
|
56
|
-
this.
|
|
57
|
-
this.close();
|
|
120
|
+
if (this.socket.bufferedAmount > MAX_QUEUED_BYTES) {
|
|
121
|
+
this.fail(4413, "Realtime socket buffer limit exceeded");
|
|
58
122
|
return;
|
|
59
123
|
}
|
|
60
124
|
if (this.socket.bufferedAmount > SOFT_BUFFERED_BYTES) {
|
|
125
|
+
this.watchForStall();
|
|
61
126
|
if (!this.retryTimer) this.retryTimer = setTimeout(() => {
|
|
62
127
|
this.retryTimer = void 0;
|
|
63
128
|
this.flush();
|
|
64
129
|
}, 10);
|
|
65
130
|
return;
|
|
66
131
|
}
|
|
67
|
-
const item = this.
|
|
132
|
+
const item = this.next();
|
|
68
133
|
if (!item) return;
|
|
69
134
|
this.sending = true;
|
|
135
|
+
this.watchForStall();
|
|
70
136
|
try {
|
|
71
137
|
this.socket.send(item.data, (error) => {
|
|
72
138
|
if (this.closed) return;
|
|
73
139
|
this.sending = false;
|
|
74
140
|
this.queuedBytes -= item.bytes;
|
|
141
|
+
if (this.stallTimer) clearTimeout(this.stallTimer);
|
|
142
|
+
this.stallTimer = void 0;
|
|
75
143
|
if (error) {
|
|
76
|
-
this.
|
|
77
|
-
this.close();
|
|
144
|
+
this.fail(1011, "Realtime delivery failed");
|
|
78
145
|
return;
|
|
79
146
|
}
|
|
80
147
|
this.flush();
|
|
81
148
|
});
|
|
82
149
|
} catch {
|
|
83
150
|
this.sending = false;
|
|
84
|
-
this.
|
|
85
|
-
this.socket.close(1011, "Realtime delivery failed");
|
|
151
|
+
this.fail(1011, "Realtime delivery failed");
|
|
86
152
|
}
|
|
87
153
|
}
|
|
88
154
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xopcai/xopc",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.437",
|
|
4
4
|
"description": "An open-source AI assistant for work and everyday life. Remembers context and helps you get things done. Local-first, on a computer you choose.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|