sliccy 6.167.0 → 6.168.0
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 +1 -0
- package/dist/node-server/_shared/computer-protocol.d.ts +2 -0
- package/dist/node-server/_shared/computer-protocol.d.ts.map +1 -1
- package/dist/node-server/computer-demo.d.ts +36 -0
- package/dist/node-server/computer-demo.js +126 -0
- package/dist/node-server/index.js +13 -3
- package/dist/node-server/runtime-flags.d.ts +2 -0
- package/dist/node-server/runtime-flags.js +5 -0
- package/dist/ui/.vite/manifest.json +260 -251
- package/dist/ui/assets/SKILL-CQxpe2fi.js +1 -0
- package/dist/ui/assets/{account-store-B05_LKnj.js → account-store-jjUZwcjI.js} +1 -1
- package/dist/ui/assets/{account-store-CNTI4kr_.js → account-store-pXgYgQVx.js} +2 -2
- package/dist/ui/assets/{adobe-nu3irXcy.js → adobe-C42_geSB.js} +1 -1
- package/dist/ui/assets/{adobe-CRRWEbtf.js → adobe-CKCos4Yf.js} +2 -2
- package/dist/ui/assets/{agent-panels-DvH_qfTh.js → agent-panels-C34MxFav.js} +1 -1
- package/dist/ui/assets/{almost-bash-shell-headless-BA5r_r61.js → almost-bash-shell-headless-B5YFQ1wh.js} +521 -548
- package/dist/ui/assets/{apply-layout-CASSSWEy.js → apply-layout-D2V9rxZu.js} +1 -1
- package/dist/ui/assets/approval-timeout-BQ29Z0gf.js +1 -0
- package/dist/ui/assets/{apps-BGe9_zJ7.js → apps-CVkFAyGJ.js} +1 -1
- package/dist/ui/assets/{azure-openai-C-Iw82HZ.js → azure-openai-DucxGbzT.js} +1 -1
- package/dist/ui/assets/{azure-openai-DuJciOKd.js → azure-openai-yAg-vpgC.js} +1 -1
- package/dist/ui/assets/{backend-hostfs-DdAVlPMP.js → backend-hostfs-Ls-A2H2N.js} +1 -1
- package/dist/ui/assets/browser-DuyhpHbR.js +1 -0
- package/dist/ui/assets/{capability-C2eJ1wdx.js → capability-SIitRcq_.js} +2 -2
- package/dist/ui/assets/{cdp-DG8TVjf3.js → cdp-DDYzhKE6.js} +1 -1
- package/dist/ui/assets/{cerebras-BXwtUxTj.js → cerebras-CNR3k849.js} +1 -1
- package/dist/ui/assets/{cerebras-Xadzrxfp.js → cerebras-_--8Umtj.js} +1 -1
- package/dist/ui/assets/{client-BDN4zG90.js → client-_vVqanZy.js} +1 -1
- package/dist/ui/assets/{composer-speech-_uq5e0Bo.js → composer-speech-D8IeaPdq.js} +1 -1
- package/dist/ui/assets/{connect-surface-odDz37TJ.js → connect-surface-Bnfiw-HT.js} +1 -1
- package/dist/ui/assets/{core-BoFWHLIW.js → core-eZ1aR21T.js} +1 -1
- package/dist/ui/assets/core-vzw5Cr8B.js +36 -0
- package/dist/ui/assets/{directed-approval-D_AXAvuz.js → directed-approval-CtbQZigA.js} +1 -1
- package/dist/ui/assets/{discovery-preference-TziZ7Yxu.js → discovery-preference-G3mw_EUO.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-DTj236n-.js → ensure-speech-assets-BGvEg25e.js} +1 -1
- package/dist/ui/assets/es-DJTRBqjm.js +52 -0
- package/dist/ui/assets/{extension-ops-DNPAsYbK.js → extension-ops-B2RMipFn.js} +1 -1
- package/dist/ui/assets/{float-topology-CurCyQFy.js → float-topology-CyZCUfkj.js} +1 -1
- package/dist/ui/assets/{follower-navigate-watcher-C98XMw_C.js → follower-navigate-watcher-BAstHBQ5.js} +1 -1
- package/dist/ui/assets/frames-FHlUaNCs.js +1 -0
- package/dist/ui/assets/{frozen-archive-writer-BIzZxx8R.js → frozen-archive-writer-DFE4MYD-.js} +1 -1
- package/dist/ui/assets/{fs-Bq8bUwe2.js → fs-BLqkdQnU.js} +1 -1
- package/dist/ui/assets/{fs-CJs9n90Q.js → fs-DRouAGaW.js} +2 -2
- package/dist/ui/assets/{gelatiere-store-BY0hZvSS.js → gelatiere-store-D_JKXdpV.js} +1 -1
- package/dist/ui/assets/{gelatiere-unit-DrQwRL3O.js → gelatiere-unit-Q-gB5yVf.js} +1 -1
- package/dist/ui/assets/{github-uDwUwz5H.js → github-Cfpmwf1n.js} +1 -1
- package/dist/ui/assets/{github-D1gd3q6u.js → github-DLAFwQdm.js} +2 -2
- package/dist/ui/assets/{github-auth-CzzE1eDf.js → github-auth-DnIBV6_3.js} +1 -1
- package/dist/ui/assets/{github-copilot-Bx2lXrwK.js → github-copilot-BFfPdiKK.js} +1 -1
- package/dist/ui/assets/{github-copilot-DidNEEe_.js → github-copilot-EtGePnlq.js} +1 -1
- package/dist/ui/assets/{github-install--_xp8s-S.js → github-install-1nDy7YKR.js} +1 -1
- package/dist/ui/assets/{github-zip-Bs35nBig.js → github-zip-B-FKgUOX.js} +1 -1
- package/dist/ui/assets/{guest-tool-gate-B-lZT9hl.js → guest-tool-gate-GANtsowg.js} +1 -1
- package/dist/ui/assets/{hear-BNmJphKg.js → hear-BMEHlsdb.js} +1 -1
- package/dist/ui/assets/{help-C7Nq107k.js → help-DWGffc9y.js} +1 -1
- package/dist/ui/assets/{host-iTtS0MRF.js → host-AggLcUuh.js} +1 -1
- package/dist/ui/assets/host-command-XUdketMY.js +28 -0
- package/dist/ui/assets/{installer-C0xiAs69.js → installer-BHkUBh6r.js} +1 -1
- package/dist/ui/assets/{isomorphic-git-D2fV6xS-.js → isomorphic-git-B8-ayEVu.js} +7 -7
- package/dist/ui/assets/{isomorphic-git-B7et_8Xe.js → isomorphic-git-DuHitnAl.js} +10 -10
- package/dist/ui/assets/{js-realm-worker-B9Rz0g1p.js → js-realm-worker-Zk_Jd1kr.js} +1 -1
- package/dist/ui/assets/{jsh-executor-C7QPZ2Qr.js → jsh-executor-K5sbbmbA.js} +2 -2
- package/dist/ui/assets/{kernel-worker-4aPSVJ1C.js → kernel-worker-Bq9IjFw5.js} +34 -34
- package/dist/ui/assets/lick-urls-CgPiVwD-.js +1 -0
- package/dist/ui/assets/lick-ws-bridge-8HhoCHq8.js +1 -0
- package/dist/ui/assets/{lick-ws-bridge-BcAhlead.js → lick-ws-bridge-Ra_w6naR.js} +1 -1
- package/dist/ui/assets/{live-session-snapshot-COMr2v0o.js → live-session-snapshot-lUnl-mYx.js} +1 -1
- package/dist/ui/assets/{local-llm-DdGb9WMG.js → local-llm-B80bjN-D.js} +1 -1
- package/dist/ui/assets/{local-llm-DqeU7kV3.js → local-llm-OcOXhJKt.js} +1 -1
- package/dist/ui/assets/{main-jc6OS8lz.js → main-BRoNZPBl.js} +3 -3
- package/dist/ui/assets/{main-cherry-BGZmJFd_.js → main-cherry-DD2gWq8O.js} +1 -1
- package/dist/ui/assets/{memory-curation-seam-B8pprlUo.js → memory-curation-seam-CcNJCyMJ.js} +1 -1
- package/dist/ui/assets/{memory-health-CGkpyA7o.js → memory-health-DZmKH-IW.js} +1 -1
- package/dist/ui/assets/memory-v2-flag-DK0lPu0X.js +1 -0
- package/dist/ui/assets/{memory-write-execute-B-ahXjaO.js → memory-write-execute-6yK_MOdy.js} +1 -1
- package/dist/ui/assets/{mount-BzdPNQoA.js → mount-CQBa9QoF.js} +3 -3
- package/dist/ui/assets/{mount-FkNAB0be.js → mount-Dz-lPlKf.js} +1 -1
- package/dist/ui/assets/{mount-bridge-client-BO0N4wwP.js → mount-bridge-client-BOZDQLbT.js} +1 -1
- package/dist/ui/assets/{mount-bridge-client-CRnohfom.js → mount-bridge-client-BRywSH1d.js} +1 -1
- package/dist/ui/assets/{mv-DRuZuDHt.js → mv-C7mk2zT1.js} +1 -1
- package/dist/ui/assets/{new-session-B8iOhaK0.js → new-session-CXbgg4am.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-B9PwK4-d.js → oauth-bootstrap-1lsyWJGc.js} +2 -2
- package/dist/ui/assets/{oauth-service-UTPOqIwj.js → oauth-service-CRmx6zI1.js} +1 -1
- package/dist/ui/assets/{oauth-service-Bkaz0Dt4.js → oauth-service-WTeDvR5m.js} +1 -1
- package/dist/ui/assets/{onboarding-orchestrator-Cc8Glrem.js → onboarding-orchestrator-SsjiVLB2.js} +1 -1
- package/dist/ui/assets/{openai-codex-BrQ1tsgu.js → openai-codex-BJzpp5yt.js} +1 -1
- package/dist/ui/assets/{openai-codex-DmHr_2RR.js → openai-codex-DDer9WGr.js} +1 -1
- package/dist/ui/assets/{openrouter-C6WDBJvB.js → openrouter-CdsU1YkP.js} +1 -1
- package/dist/ui/assets/{openrouter-free-CUKlyrhq.js → openrouter-free-D1H2Ji7e.js} +1 -1
- package/dist/ui/assets/{openrouter-free-CFBzPY5J.js → openrouter-free-zplQAXSX.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-DOdpRMfw.js → openrouter-oauth-Bu3uuWMP.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-RC0CxY4X.js → openrouter-oauth-CrvWvUZV.js} +1 -1
- package/dist/ui/assets/{openrouter-BvM36eS5.js → openrouter-xGsvfFPH.js} +1 -1
- package/dist/ui/assets/{opfs-mount-B78yj9gx.js → opfs-mount-BqBx391V.js} +1 -1
- package/dist/ui/assets/{page-approval-service-Dy-UA1aK.js → page-approval-service-BkqDCbBQ.js} +1 -1
- package/dist/ui/assets/panel-rpc-handlers-CXr7dAtk.js +2 -0
- package/dist/ui/assets/{panelize-shell-CFPiIneK.js → panelize-shell-DjnrzeLU.js} +1 -1
- package/dist/ui/assets/{pi-edit-execution-BDl_Xp_M.js → pi-edit-execution-Dn7wc7f8.js} +1 -1
- package/dist/ui/assets/{port-bridge-client-ff8DctEN.js → port-bridge-client-CZFX4fUT.js} +1 -1
- package/dist/ui/assets/{port-bridge-client-H03Pohgj.js → port-bridge-client-CkkC3v5w.js} +1 -1
- package/dist/ui/assets/{provider-1ByYSphI.js → provider-BCNJf9_1.js} +2 -2
- package/dist/ui/assets/{provider-Df8LFEZ7.js → provider-DiIrGlmw.js} +1 -1
- package/dist/ui/assets/{provider-settings-Bk-fk9dp.js → provider-settings-DSf8xD9N.js} +1 -1
- package/dist/ui/assets/provider-store-access-CsczvZfg.js +1 -0
- package/dist/ui/assets/provider-store-access-et-xszx-.js +1 -0
- package/dist/ui/assets/{providers-Q92pCQ8h.js → providers-CFveri5U.js} +2 -2
- package/dist/ui/assets/{providers-T_FH_8cU.js → providers-CfE8Z8rn.js} +1 -1
- package/dist/ui/assets/{proxied-fetch-DARKNygr.js → proxied-fetch-CPL8wJM2.js} +1 -1
- package/dist/ui/assets/{proxied-fetch-Bl8AeYdt.js → proxied-fetch-CnCvBaGV.js} +1 -1
- package/dist/ui/assets/{quick-llm-CbGHjrhX.js → quick-llm-t6CBwwSm.js} +1 -1
- package/dist/ui/assets/{realm-inprocess-CWMnXeN3.js → realm-inprocess-CmaGqRYS.js} +1 -1
- package/dist/ui/assets/{recovery-screen-DhUqOdby.js → recovery-screen-DdKutJyi.js} +1 -1
- package/dist/ui/assets/{redirect-uri-Dd0j1fSp.js → redirect-uri-D2aDPCyB.js} +1 -1
- package/dist/ui/assets/{remote-terminal-view-D4Ah4AQY.js → remote-terminal-view-CA-SfvvZ.js} +2 -2
- package/dist/ui/assets/{rest-ops-CQOwDiTR.js → rest-ops-Yu_dXm4T.js} +1 -1
- package/dist/ui/assets/{rest-ops-DkUeDpiM.js → rest-ops-aP40ni1y.js} +1 -1
- package/dist/ui/assets/{restore-CVkulBmU.js → restore-Dk9r9feA.js} +1 -1
- package/dist/ui/assets/{run-B-t7kWH3.js → run-BEs473Sp.js} +1 -1
- package/dist/ui/assets/run-CHjRjdbt.js +75 -0
- package/dist/ui/assets/{run-DgVV_DFr.js → run-CNldrNje.js} +3 -3
- package/dist/ui/assets/{run-ZmpHaamT.js → run-CyYVrNXy.js} +2 -2
- package/dist/ui/assets/{run-BX9uHbIi.js → run-D5s_jfOL.js} +1 -1
- package/dist/ui/assets/{run-COfTem8j.js → run-QfYlwe2c.js} +1 -1
- package/dist/ui/assets/{run-IexPmM2B.js → run-V-RPlN7V.js} +2 -2
- package/dist/ui/assets/{run-CUCg2cJM.js → run-wxYu-gUG.js} +2 -2
- package/dist/ui/assets/screen-s6LdF1JP.js +1 -0
- package/dist/ui/assets/screen-share-approval-live-D388fVD9.js +1 -0
- package/dist/ui/assets/screencapture-media-BjmoKpyn.js +1 -0
- package/dist/ui/assets/screencapture-media-CM5E2g6c.js +1 -0
- package/dist/ui/assets/screencapture-media-shared-DlK1Wqh8.js +1 -0
- package/dist/ui/assets/{screencapture-run-yMA5c_HS.js → screencapture-run-zmx5QKf_.js} +2 -2
- package/dist/ui/assets/{secret-env-BhWGz7yx.js → secret-env-DgrZZVFU.js} +1 -1
- package/dist/ui/assets/secret-topology-BrobAGSV.js +1 -0
- package/dist/ui/assets/{secrets-bridge-client-C0tvQeuX.js → secrets-bridge-client-BJqZCK6Q.js} +1 -1
- package/dist/ui/assets/{secrets-bridge-client-BS3V1JBF.js → secrets-bridge-client-CeK7HpDf.js} +1 -1
- package/dist/ui/assets/{session-command-memory-DzuRy-nC.js → session-command-memory-x5HxxZtb.js} +2 -2
- package/dist/ui/assets/{session-jsonl-iOOR_32X.js → session-jsonl-3Y2sXuNG.js} +1 -1
- package/dist/ui/assets/{session-jsonl-D01HYAS2.js → session-jsonl-DI8wVUpH.js} +1 -1
- package/dist/ui/assets/{session-search-index-CABvtt-r.js → session-search-index-DRFKeHXl.js} +1 -1
- package/dist/ui/assets/{setup-feature-flags-remote-CvstKwBW.js → setup-feature-flags-remote-CEtNYgED.js} +1 -1
- package/dist/ui/assets/{signed-fetch-7NwdVmf1.js → signed-fetch-E-2q08XL.js} +1 -1
- package/dist/ui/assets/{silent-renew-backoff-CXHqSiPb.js → silent-renew-backoff-Ddlf2gAw.js} +1 -1
- package/dist/ui/assets/slicc-version-bYxfYms3.js +1 -0
- package/dist/ui/assets/{snapshot-BcYaw9Ip.js → snapshot-Dv7-7kFE.js} +1 -1
- package/dist/ui/assets/{snapshot-features-3xslkGtL.js → snapshot-features-rlYmVQ8i.js} +1 -1
- package/dist/ui/assets/{soundscape-TygolFwj.js → soundscape-CyBhtUGQ.js} +1 -1
- package/dist/ui/assets/{speak-BCLm04Z2.js → speak-qRc1po5e.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-DDzNanda.js → sprinkle-manager-DT2AYalc.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-B-CADNjq.js → sprinkle-renderer-DF4JYgsw.js} +1 -1
- package/dist/ui/assets/ssh-BQqlQVXQ.js +6 -0
- package/dist/ui/assets/{state-BCTAzK_L.js → state-RVr0GidF.js} +1 -1
- package/dist/ui/assets/{store-C-AW4ogv.js → store-BlFQl8dG.js} +1 -1
- package/dist/ui/assets/{store-CzlK9KIc.js → store-CYwEydJ4.js} +1 -1
- package/dist/ui/assets/{sudo-BtkDnUA_.js → sudo-BqpeZUOO.js} +1 -1
- package/dist/ui/assets/sudo-fs-C6r_MIIY.js +3 -0
- package/dist/ui/assets/{supervisor-B6-QPxI3.js → supervisor-C1sPrIbH.js} +1 -1
- package/dist/ui/assets/{sync-dialog-B4G7kCwj.js → sync-dialog-sC277gbg.js} +1 -1
- package/dist/ui/assets/tool-ui-DRnUkp2g.js +1 -0
- package/dist/ui/assets/{transformers-env-1TbBNkOp.js → transformers-env-BzsQpYgD.js} +1 -1
- package/dist/ui/assets/{tray-leader-_KISvFyF.js → tray-leader-Gx_yzXFX.js} +1 -1
- package/dist/ui/assets/{lick-urls-DdKPDlgq.js → tray-leader-status-CpkFr6n7.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-CRsRkPHc.js → tray-leave-runtime-Cuj-CStD.js} +1 -1
- package/dist/ui/assets/{tray-runtime-config-BVgVR3H2.js → tray-runtime-config-dyxCfUex.js} +1 -1
- package/dist/ui/assets/{tray-sidecar-BRvCb-i7.js → tray-sidecar-BCAds1ts.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-C5daiUbn.js → upgrade-detection-CXNgKpwK.js} +1 -1
- package/dist/ui/assets/{upskill-lick-skip-C2ZQ0c2-.js → upskill-lick-skip-wDM3Vdyq.js} +1 -1
- package/dist/ui/assets/url-Dq7PTmNp.js +1 -0
- package/dist/ui/assets/v86-Cv7l0TeZ.js +1 -0
- package/dist/ui/assets/{voice-reply-Dk4ztuZL.js → voice-reply-DPbxkmsy.js} +1 -1
- package/dist/ui/assets/{wc-attach-CFj2ZF5_.js → wc-attach-C-7ZwxKV.js} +2 -2
- package/dist/ui/assets/{wc-browser-BFL2Tl8W.js → wc-browser-D-03DBqa.js} +1 -1
- package/dist/ui/assets/wc-computers-m_Qiklfg.js +3 -0
- package/dist/ui/assets/{wc-detached-ncc8KuL1.js → wc-detached-D5_bAfyn.js} +1 -1
- package/dist/ui/assets/{wc-extension-DppNe2VK.js → wc-extension-DSvNnUY6.js} +2 -2
- package/dist/ui/assets/{wc-follower-CcxFCW-y.js → wc-follower-1feBQ0f-.js} +3 -3
- package/dist/ui/assets/{wc-follower-oauth-DQ-JPxl6.js → wc-follower-oauth-JZo8mi8y.js} +1 -1
- package/dist/ui/assets/{wc-gelatiere-CANPh9TU.js → wc-gelatiere-Wr8PEKDG.js} +1 -1
- package/dist/ui/assets/{wc-live-BLozTZsg.js → wc-live-DT1WB50h.js} +17 -17
- package/dist/ui/assets/{wc-nav-BlLpBAJG.js → wc-nav-BCq8EXtI.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-OKaUOQ3X.js → wc-onboarding-1l4fZpDo.js} +2 -2
- package/dist/ui/assets/{wc-permissions-BsGMi4OQ.js → wc-permissions-CCA-0PP4.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-BrX9-mPv.js → wc-placeholder-ODIHzW-8.js} +3 -3
- package/dist/ui/assets/{wc-secret-request-QPmTs_eW.js → wc-secret-request-CWyoYT_T.js} +1 -1
- package/dist/ui/assets/{wc-settings-BFgFDtTk.js → wc-settings-Df49ivPm.js} +3 -3
- package/dist/ui/assets/{wc-shell-CCKjmASt.js → wc-shell-CZ95TYrc.js} +4 -4
- package/dist/ui/assets/{wc-shortcut-config-CeUoljrV.js → wc-shortcut-config-CmRCkDN0.js} +1 -1
- package/dist/ui/assets/{wc-sprinkles-BNp18_jW.js → wc-sprinkles-Cm0F47mC.js} +2 -2
- package/dist/ui/assets/{wc-transcript-export-DJnnZ8L-.js → wc-transcript-export-CMdPvQk4.js} +2 -2
- package/dist/ui/assets/{wc-tray-f1LxbB98.js → wc-tray-2XQPor_4.js} +4 -4
- package/dist/ui/assets/welcome-detection-CouG8kRR.js +1 -0
- package/dist/ui/assets/{whisper-session-CMiImrJg.js → whisper-session-z9qnQTAM.js} +2 -2
- package/dist/ui/assets/{xai-grok-BMr5udF6.js → xai-grok-BmuhN83h.js} +1 -1
- package/dist/ui/assets/{xai-grok-Dzeo18XM.js → xai-grok-CaNUqqnT.js} +1 -1
- package/dist/ui/index.html +9 -9
- package/dist/ui/packages/webapp/index.html +9 -9
- package/package.json +1 -1
- package/dist/ui/assets/SKILL-CWR-bsvH.js +0 -1
- package/dist/ui/assets/browser-2rCVqcqy.js +0 -1
- package/dist/ui/assets/core-Bvc89tkf.js +0 -36
- package/dist/ui/assets/es-DwGGEZle.js +0 -51
- package/dist/ui/assets/keys-Dexx8cLD.js +0 -1
- package/dist/ui/assets/lick-ws-bridge-DZ0vVYNF.js +0 -1
- package/dist/ui/assets/memory-v2-flag-DVbOtPFF.js +0 -1
- package/dist/ui/assets/panel-rpc-handlers-CQ_iaU6N.js +0 -2
- package/dist/ui/assets/provider-store-access-BJPbOUku.js +0 -1
- package/dist/ui/assets/provider-store-access-BrjCBzpb.js +0 -1
- package/dist/ui/assets/run-DvD576xV.js +0 -53
- package/dist/ui/assets/screencapture-media-DL5YxrlG.js +0 -1
- package/dist/ui/assets/screencapture-media-YBE2VnLF.js +0 -1
- package/dist/ui/assets/secret-topology-CVneCnID.js +0 -1
- package/dist/ui/assets/slicc-version-CN6V2aMa.js +0 -1
- package/dist/ui/assets/sudo-fs-D620mZry.js +0 -3
- package/dist/ui/assets/v86-BfdTUFBK.js +0 -1
- package/dist/ui/assets/wc-computers-CcJuQUyG.js +0 -3
- package/dist/ui/assets/welcome-detection-Dg9THpkh.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./tmpdir-env-ate4iNcK.js";import{n as t}from"./encode-frame-B8GkHc2t.js";function n(e){return`screen: ${e}`}function r(e){return`target: ${e}`}async function i(t){let n=`${e(t.env).replace(/\/$/u,``)}/computer/${t.name}`,r=`${n}/${t.seq}.jpg`,i=t.fs.resolvePath(t.cwd,n),a=t.fs.resolvePath(t.cwd,r);return await t.fs.mkdir(i,{recursive:!0}),await t.fs.writeFile(a,t.frame.bytes),a}async function a(e){return t(e,`image/jpeg`,.55)}const o={ctrl:!1,alt:!1,shift:!1,meta:!1},s={ctrl:`ctrl`,control:`ctrl`,alt:`alt`,shift:`shift`,meta:`meta`,super:`meta`,win:`meta`,cmd:`meta`,command:`meta`},c={return:{key:`Enter`,code:`Enter`},enter:{key:`Enter`,code:`Enter`},kp_enter:{key:`Enter`,code:`NumpadEnter`},tab:{key:`Tab`,code:`Tab`},escape:{key:`Escape`,code:`Escape`},esc:{key:`Escape`,code:`Escape`},space:{key:` `,code:`Space`},backspace:{key:`Backspace`,code:`Backspace`},delete:{key:`Delete`,code:`Delete`},del:{key:`Delete`,code:`Delete`},insert:{key:`Insert`,code:`Insert`},home:{key:`Home`,code:`Home`},end:{key:`End`,code:`End`},pageup:{key:`PageUp`,code:`PageUp`},page_up:{key:`PageUp`,code:`PageUp`},prior:{key:`PageUp`,code:`PageUp`},pagedown:{key:`PageDown`,code:`PageDown`},page_down:{key:`PageDown`,code:`PageDown`},next:{key:`PageDown`,code:`PageDown`},up:{key:`ArrowUp`,code:`ArrowUp`},down:{key:`ArrowDown`,code:`ArrowDown`},left:{key:`ArrowLeft`,code:`ArrowLeft`},right:{key:`ArrowRight`,code:`ArrowRight`},menu:{key:`ContextMenu`,code:`ContextMenu`},caps_lock:{key:`CapsLock`,code:`CapsLock`},num_lock:{key:`NumLock`,code:`NumLock`},scroll_lock:{key:`ScrollLock`,code:`ScrollLock`},print:{key:`PrintScreen`,code:`PrintScreen`},pause:{key:`Pause`,code:`Pause`}};for(let e=1;e<=12;e++)c[`f${e}`]={key:`F${e}`,code:`F${e}`};const l={enter:[28],tab:[15],esc:[1],escape:[1],space:[57],backspace:[14],delete:[224,83],del:[224,83],up:[224,72],down:[224,80],left:[224,75],right:[224,77],home:[224,71],end:[224,79],pageup:[224,73],pagedown:[224,81],insert:[224,82],f1:[59],f2:[60],f3:[61],f4:[62],f5:[63],f6:[64],f7:[65],f8:[66],f9:[67],f10:[68],f11:[87],f12:[88]},u={ctrl:[29],alt:[56],shift:[42],meta:[224,91]},d={return:`KEYCODE_ENTER`,enter:`KEYCODE_ENTER`,tab:`KEYCODE_TAB`,escape:`KEYCODE_ESCAPE`,esc:`KEYCODE_ESCAPE`,space:`KEYCODE_SPACE`,backspace:`KEYCODE_DEL`,delete:`KEYCODE_FORWARD_DEL`,del:`KEYCODE_FORWARD_DEL`,home:`KEYCODE_HOME`,end:`KEYCODE_MOVE_END`,insert:`KEYCODE_INSERT`,pageup:`KEYCODE_PAGE_UP`,pagedown:`KEYCODE_PAGE_DOWN`,up:`KEYCODE_DPAD_UP`,down:`KEYCODE_DPAD_DOWN`,left:`KEYCODE_DPAD_LEFT`,right:`KEYCODE_DPAD_RIGHT`,menu:`KEYCODE_MENU`};for(let e=1;e<=12;e++)d[`f${e}`]=`KEYCODE_F${e}`;function f(e){return/^[A-Z][A-Z0-9_]+$/u.test(e)}function p(e){return e.split(/[-+]/u).filter(Boolean)}function m(e){let t=e.toLowerCase();if(c[t])return c[t];if(e.length===1){let t=e;return/[A-Za-z]/u.test(t)?{key:t,code:`Key${t.toUpperCase()}`}:/[0-9]/u.test(t)?{key:t,code:`Digit${t}`}:{".":{key:`.`,code:`Period`},",":{key:`,`,code:`Comma`},"/":{key:`/`,code:`Slash`},";":{key:`;`,code:`Semicolon`},"'":{key:`'`,code:`Quote`},"[":{key:`[`,code:`BracketLeft`},"]":{key:`]`,code:`BracketRight`},"\\":{key:`\\`,code:`Backslash`},"`":{key:"`",code:`Backquote`},"-":{key:`-`,code:`Minus`},"=":{key:`=`,code:`Equal`}}[t]??{key:t,code:``}}return null}function h(e){let t=e.trim();if(!t)return null;if(f(t))return{key:t,code:t,modifiers:{...o},keysym:t,native:t};let n=p(t);if(n.length===0)return null;let r={...o},i=null;for(let e=0;e<n.length;e++){let t=n[e],a=e===n.length-1,o=s[t.toLowerCase()];if(o&&!a){r[o]=!0;continue}o&&a&&n.length,i=t}if(!i)return null;if(f(i))return{key:i,code:i,modifiers:r,keysym:i,native:i};let a=m(i);return a?(i.length===1&&/[A-Z]/u.test(i)&&(r.shift=!0),{key:a.key,code:a.code,modifiers:r,keysym:i}):null}function g(e){let t=`1234567890`.indexOf(e);if(t!==-1)return[t===9?11:2+t];let n=[16,17,18,19,20,21,22,23,24,25,30,31,32,33,34,35,36,37,38,44,45,46,47,48,49,50],r=`qwertyuiopasdfghjklzxcvbnm`.indexOf(e.toLowerCase());return r===-1?null:[n[r]]}function _(e){return e.length===2?[e[0],e[1]|128]:[e[0]|128]}function v(e){let t=e.toLowerCase().split(/[-+]/u).filter(Boolean);if(t.length===0)return null;let n=[],r=[];for(let e=0;e<t.length;e++){let i=t[e];if(e!==t.length-1&&u[i]){n.push(u[i]);continue}let a=l[i]??u[i]??(i.length===1?g(i):null);if(!a)return null;r.push(a)}if(r.length===0)return null;let i=[];for(let e of n)i.push(...e);for(let e of r)i.push(...e,..._(e));for(let e of[...n].reverse())i.push(..._(e));return i}function y(e){return+!!e.alt+(e.ctrl?2:0)+(e.meta?4:0)+(e.shift?8:0)}function b(e,t){let n=y(e.modifiers),r=e.key.length===1&&!e.modifiers.ctrl&&!e.modifiers.alt&&!e.modifiers.meta?e.key:void 0,i=t=>({type:t,key:e.key,code:e.code,modifiers:n,...t===`keyDown`&&r?{text:r}:{}});return t===!0?[i(`keyDown`)]:t===!1?[i(`keyUp`)]:[i(`keyDown`),i(`keyUp`)]}export{n as a,r as i,h as n,a as o,b as r,i as s,v as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./logger-LESFN7Hj.js";import{a as t,i as n,n as r,r as i,t as a}from"./lick-urls-DdKPDlgq.js";import"./kernel-worker-4aPSVJ1C.js";const o=e(`lick-ws-bridge`);function s(e){if(e.stopped)return;let t;try{t=e.wsFactory(e.wsUrl)}catch(t){o.error(`Failed to construct lick WebSocket`,{url:e.wsUrl,error:t instanceof Error?t.message:String(t)}),c(e,`construct-threw`);return}e.socket=t,t.onopen=()=>{e.consecutiveFailures>0?o.info(`Lick WebSocket recovered`,{attempts:e.consecutiveFailures}):o.info(`Lick WebSocket connected`),e.consecutiveFailures=0,e.unrecoverableSignalled=!1},t.onmessage=n=>{u(e,t,n.data).catch(e=>{let t=typeof n.data==`string`?n.data.slice(0,200):`[non-string payload]`;o.error(`Failed to process lick message`,{error:e instanceof Error?e.message:String(e),preview:t})})},t.onclose=n=>{if(e.socket===t&&(e.socket=null),e.stopped)return;let r=n.reason?` reason=${JSON.stringify(n.reason)}`:``;c(e,`disconnected code=${n.code}${r}`)},t.onerror=t=>{let n=t.target;o.error(`Lick WebSocket error`,{url:e.wsUrl,readyState:n?.readyState,eventType:t.type})}}function c(e,t){if(e.reconnectHandle!=null){o.debug(`Lick WS failure during pending reconnect — keeping existing timer`,{cause:t});return}e.consecutiveFailures++;let n=Math.min(e.baseDelay*2**(e.consecutiveFailures-1),6e4),r={url:e.wsUrl,attempt:e.consecutiveFailures,cause:t,retryInMs:n};if(e.consecutiveFailures>=3?o.error(`Lick WebSocket still down`,r):o.warn(`Lick WebSocket down`,r),e.consecutiveFailures===20&&!e.unrecoverableSignalled){e.unrecoverableSignalled=!0;try{e.lickManager.emitEvent({type:`session-reload`,targetScoop:void 0,timestamp:new Date().toISOString(),body:{reason:`lick-ws-bridge-down`,url:e.wsUrl,attempts:e.consecutiveFailures}})}catch(e){o.error(`Failed to emit lick-ws-bridge-down signal`,{error:e instanceof Error?e.message:String(e)})}}l(e,n)}function l(e,t){e.stopped||e.reconnectHandle!=null||(e.reconnectHandle=e.setTimer(()=>{e.reconnectHandle=null,s(e)},t))}async function u(e,t,n){let r=JSON.parse(typeof n==`string`?n:String(n));if(r.requestId){let n=r.requestId,i=await g(e,r,n);if(e.stopped||e.socket!==t||t.readyState!==1){o.warn(`Lick reply dropped — socket changed/closed mid-request`,{type:r.type,requestId:n});return}try{t.send(JSON.stringify(i))}catch(e){o.error(`ws.send() failed delivering lick reply`,{type:r.type,requestId:n,error:e instanceof Error?e.message:String(e)})}return}if(r.type===`webhook_event`){d(e.lickManager,r);return}if(r.type===`navigate_event`){p(e.lickManager,r);return}r.type===`hostfs_invalidate`&&h(e,r)}function d(e,t){let n=typeof t.webhookId==`string`?t.webhookId:null;if(!n)return o.error(`Malformed webhook_event from lick-ws`,{receivedKeys:Object.keys(t)}),`malformed`;let r=t.headers&&typeof t.headers==`object`?t.headers:{};try{return e.handleWebhookEvent(n,r,t.body)}catch(e){return o.error(`Webhook event dispatch failed`,{webhookId:n,error:e instanceof Error?e.message:String(e)}),`failed`}}function f(e){let t=typeof e.verb==`string`?e.verb:null,n=typeof e.target==`string`?e.target:null,r=typeof e.url==`string`&&e.url.length>0?e.url:null;if(t!==`handoff`&&t!==`upskill`||!n||!r)return null;let i={url:r,verb:t,target:n};return typeof e.instruction==`string`&&(i.instruction=e.instruction),typeof e.branch==`string`&&(i.branch=e.branch),typeof e.path==`string`&&(i.path=e.path),typeof e.title==`string`&&(i.title=e.title),{type:`navigate`,navigateUrl:r,targetScoop:void 0,timestamp:typeof e.timestamp==`string`?e.timestamp:new Date().toISOString(),body:i}}function p(e,t){let n=f(t);if(!n){o.debug(`navigate_event dropped — invalid payload`,{hasVerb:typeof t.verb==`string`,hasTarget:typeof t.target==`string`,hasUrl:typeof t.url==`string`&&t.url.length>0});return}e.emitEvent(n)}function m(e){if(typeof e.mount!=`string`||e.mount.length===0)return null;let t=e.paths,n=[];if(Array.isArray(t))for(let e of t)typeof e==`string`&&n.push(e);return{type:`hostfs_invalidate`,mount:e.mount,paths:n,timestamp:typeof e.timestamp==`string`?e.timestamp:void 0}}function h(e,t){let n=m(t);if(!n){o.debug(`hostfs_invalidate dropped — invalid payload`,{hasMount:typeof t.mount==`string`&&t.mount.length>0,pathsIsArray:Array.isArray(t.paths)});return}try{e.options.onHostfsInvalidate?.(n)}catch(e){o.warn(`hostfs_invalidate handler threw`,{mount:n.mount,error:e instanceof Error?e.message:String(e)})}}async function g(e,t,r){let{lickManager:i}=e;try{switch(t.type){case`list_webhooks`:return{type:`response`,requestId:r,data:i.listWebhooks().map(t=>({...t,url:_(e,t.id)}))};case`create_webhook`:{let n=await i.createWebhook(t.name||`default`,t.scoop,t.filter);return{type:`response`,requestId:r,data:{...n,url:_(e,n.id)}}}case`webhook_event`:return{type:`response`,requestId:r,data:{disposition:d(i,t)}};case`delete_webhook`:return await i.deleteWebhook(t.id)?{type:`response`,requestId:r,data:{ok:!0}}:{type:`response`,requestId:r,data:{error:`Webhook not found`}};case`list_crontasks`:return{type:`response`,requestId:r,data:i.listCronTasks()};case`create_crontask`:if(!t.name)throw Error(`name is required`);if(!t.cron)throw Error(`cron is required`);return{type:`response`,requestId:r,data:await i.createCronTask(t.name,t.cron,t.scoop,t.filter)};case`delete_crontask`:return await i.deleteCronTask(t.id)?{type:`response`,requestId:r,data:{ok:!0}}:{type:`response`,requestId:r,data:{error:`Cron task not found`}};case`tray_status`:{let e=n();return{type:`response`,requestId:r,data:{state:e.state,joinUrl:e.session?.joinUrl??null,workerBaseUrl:e.session?.workerBaseUrl??null,trayId:e.session?.trayId??null}}}default:return{type:`response`,requestId:r,error:`Unknown request type: ${t.type}`}}}catch(e){return{type:`response`,requestId:r,error:e instanceof Error?e.message:String(e)}}}function _(e,n){let a=t().session;return a?.webhookUrl?r(a.webhookUrl,n):e.webhookOriginOverride?`${e.webhookOriginOverride}/webhooks/${n}`:i(e.options.locationHref,n)}function v(e){if(e.stopped)return;e.stopped=!0,e.reconnectHandle!=null&&(e.clearTimer(e.reconnectHandle),e.reconnectHandle=null);let t=e.socket;if(e.socket=null,t)try{t.close()}catch(e){t.readyState!==3&&t.readyState!==2&&o.warn(`Lick socket close() threw before terminal state`,{readyState:t.readyState,error:e instanceof Error?e.message:String(e)})}}function y(e,t){try{new URL(t.locationHref)}catch(e){throw Error(`startLickWsBridge: invalid locationHref ${JSON.stringify(t.locationHref)}: ${e instanceof Error?e.message:String(e)}`)}let n=typeof t.lickWsUrl==`string`&&t.lickWsUrl.length>0?t.lickWsUrl:a(t.locationHref),r=null;if(typeof t.lickWsUrl==`string`&&t.lickWsUrl.length>0)try{let e=new URL(t.lickWsUrl);r=`${e.protocol===`wss:`?`https:`:`http:`}//${e.host}`}catch{r=null}let i={lickManager:e,options:t,wsUrl:n,webhookOriginOverride:r,baseDelay:t.reconnectDelayMs??3e3,wsFactory:t.webSocketFactory??(e=>new WebSocket(e)),setTimer:t.setTimeoutFn??setTimeout.bind(globalThis),clearTimer:t.clearTimeoutFn??clearTimeout.bind(globalThis),stopped:!1,socket:null,reconnectHandle:null,consecutiveFailures:0,unrecoverableSignalled:!1};return s(i),{stop(){v(i)}}}export{y as startLickWsBridge};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as e}from"./kernel-worker-4aPSVJ1C.js";function t(){return e(`memory-v2`)}export{t as isMemoryV2Enabled};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/secrets-bridge-client-C0tvQeuX.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/port-bridge-client-ff8DctEN.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/proxied-fetch-Bl8AeYdt.js","assets/base64-ELzoYfwP.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/runtime-env-Dlaokqg1.js","assets/mount-bridge-client-CRnohfom.js","assets/types-D8gIX-W-.js","assets/page-approval-service-Dy-UA1aK.js","assets/float-topology-CurCyQFy.js","assets/speak-BCLm04Z2.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-1TbBNkOp.js","assets/wc-shell-CCKjmASt.js","assets/mime-types-D0xZwlMO.js","assets/bridge-protocol-06nbmp2X.js","assets/account-store-CNTI4kr_.js","assets/core-BoFWHLIW.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/secret-topology-CVneCnID.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-Q92pCQ8h.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/claude-model-version-aqjj5mtp.js","assets/telemetry-DJyRzh6X.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-BM2l-_K7.js","assets/wc-shell-WkeczD9x.css","assets/shared-mBEktoxE.js","assets/hear-BNmJphKg.js","assets/permissions-surface-registry-CilCRwhh.js","assets/whisper-session-CMiImrJg.js","assets/esptool-operations-CiccBbBW.js","assets/rom-eeWiO07Z.js","assets/mount-picker-popup--ijSfN8u.js","assets/picker-popup-sQtXmfAo.js","assets/usb-claim-broker-Dacw2Z3M.js","assets/usb-device-registry--JwKRTYp.js","assets/theme-engine-B5SkYf3E.js","assets/tab-ToMhjbM4.js","assets/slicc-app-url-B9OxaBDe.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import"./proxied-fetch-Bl8AeYdt.js";import{J as t,m as n}from"./account-store-CNTI4kr_.js";import{a as r,t as i}from"./api-endpoint-DGxXvrur.js";import"./main-jc6OS8lz.js";import{n as a,r as o}from"./hid-device-registry-B2R-0rNt.js";import{a as s,i as c}from"./serial-port-registry-CCqklAEr.js";import{_ as l,a as u,c as d,d as ee,f,g as p,h as te,i as ne,l as re,m as ie,n as ae,o as oe,p as se,r as ce,s as le,t as ue,u as de,v as fe}from"./hid-operations-C97SZtrY.js";import{a as m,i as h}from"./usb-device-registry--JwKRTYp.js";import{a as g,c as _,d as v,f as y,g as b,h as x,i as S,l as C,m as w,n as T,o as E,p as D,r as O,s as k,t as A,u as j}from"./usb-operations-v1mGAdRY.js";function M(e={}){let t=new Map;return{...R(),...z(e),...B(),...pe(e),...me(e),...he(e),...ge(e,t),..._e(),...ve(e),...ye(e),...xe(e),...L(),...F(),...I(),...N(),...P(),...ke(),...Ae(),...je()}}function N(){return{"secrets-bridge":async({type:t,payload:n})=>{let{callSecretsBridge:r}=await e(async()=>{let{callSecretsBridge:e}=await import(`./secrets-bridge-client-C0tvQeuX.js`).then(e=>e.t);return{callSecretsBridge:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]));return{response:await r(t,n)}}}}function P(){return{"mount-sign-and-forward":async({type:t,envelope:n})=>{let{callMountBridge:r}=await e(async()=>{let{callMountBridge:e}=await import(`./mount-bridge-client-CRnohfom.js`);return{callMountBridge:e}},__vite__mapDeps([10,2,3,4,5,1,6,7,8,9,11]));return{response:await r(t,n)}}}}function F(){return{"sudo-request":async({request:t,mode:n})=>{let{resolveSudoApprovalInPage:r}=await e(async()=>{let{resolveSudoApprovalInPage:e}=await import(`./page-approval-service-Dy-UA1aK.js`);return{resolveSudoApprovalInPage:e}},__vite__mapDeps([12,4,13,5,1,3,6,7,8,9]));return r(t,n??`resolve`)}}}function I(){return{"secret-request":async t=>{let{getSecretRequestSurface:n}=await e(async()=>{let{getSecretRequestSurface:e}=await import(`./secret-request-registry-DrOMKR1H.js`);return{getSecretRequestSurface:e}},[]),r=n();return r?r(t):{stored:!1,reason:`unavailable`}}}}function L(){return{"proxied-fetch":async({url:t,method:n,headers:r,body:i})=>{let{collectViaExtensionDelegate:a}=await e(async()=>{let{collectViaExtensionDelegate:e}=await import(`./proxied-fetch-Bl8AeYdt.js`).then(e=>e.i);return{collectViaExtensionDelegate:e}},__vite__mapDeps([5,1,3,6,7,8,9])),{head:o,body:s}=await a(t,{method:n,headers:r,body:i});return{head:o,body:s}}}}function R(){return{"page-info":()=>({origin:window.location.origin,href:window.location.href,title:document.title||``}),screencapture:async({mimeType:t,quality:n,mode:r,durationMs:i,audio:a})=>{let{captureDisplayMedia:o}=await e(async()=>{let{captureDisplayMedia:e}=await import(`./screencapture-media-YBE2VnLF.js`);return{captureDisplayMedia:e}},[]),s=await o(r===`video`?{mode:`video`,mimeType:t,durationMs:i??5e3,audio:!!a}:{mode:`image`,mimeType:t,quality:n});return{bytes:s.bytes.buffer.slice(s.bytes.byteOffset,s.bytes.byteOffset+s.bytes.byteLength),width:s.width,height:s.height,mimeType:s.mimeType,...s.durationMs===void 0?{}:{durationMs:s.durationMs}}},"speak-text":async({text:t,lang:n,voice:r,rate:i,pitch:a,volume:o})=>{let{speak:s}=await e(async()=>{let{speak:e}=await import(`./speak-BCLm04Z2.js`);return{speak:e}},__vite__mapDeps([14,3,4,9,15,16,17,1,18,6,19,20,21,22,23,24,25,26,27,28,5,7,8,29,13,0,2,30,31,32,33,34,35,36,37,38,39,40]));return await s({text:t,lang:n,voice:r,rate:i,pitch:a,volume:o}),{done:!0}},"list-voices":async()=>{let{kokoroVoicesIfReady:t}=await e(async()=>{let{kokoroVoicesIfReady:e}=await import(`./speak-BCLm04Z2.js`);return{kokoroVoicesIfReady:e}},__vite__mapDeps([14,3,4,9,15,16,17,1,18,6,19,20,21,22,23,24,25,26,27,28,5,7,8,29,13,0,2,30,31,32,33,34,35,36,37,38,39,40])),n=t().map(e=>({name:e.id,lang:e.lang,default:!1,onDevice:e.onDevice}));if(typeof speechSynthesis>`u`){if(n.length>0)return{voices:n};throw Error(`speechSynthesis is unavailable in this page`)}let r=speechSynthesis.getVoices();if(r.length>0)return{voices:[...n,...r.map(Z)]};let i=await new Promise(e=>{let t=()=>{speechSynthesis.removeEventListener(`voiceschanged`,t),e(speechSynthesis.getVoices())};speechSynthesis.addEventListener(`voiceschanged`,t),setTimeout(()=>{speechSynthesis.removeEventListener(`voiceschanged`,t),e(speechSynthesis.getVoices())},1e3)});return{voices:[...n,...i.map(Z)]}},"speak-status":async()=>{let{kokoroStatus:t}=await e(async()=>{let{kokoroStatus:e}=await import(`./speak-BCLm04Z2.js`);return{kokoroStatus:e}},__vite__mapDeps([14,3,4,9,15,16,17,1,18,6,19,20,21,22,23,24,25,26,27,28,5,7,8,29,13,0,2,30,31,32,33,34,35,36,37,38,39,40]));return t()},"speak-warmup":async()=>{let{kokoroWarmup:t}=await e(async()=>{let{kokoroWarmup:e}=await import(`./speak-BCLm04Z2.js`);return{kokoroWarmup:e}},__vite__mapDeps([14,3,4,9,15,16,17,1,18,6,19,20,21,22,23,24,25,26,27,28,5,7,8,29,13,0,2,30,31,32,33,34,35,36,37,38,39,40]));return t()},"synthesize-to-wav":async({text:t,lang:n,voice:r,rate:i})=>{let{synthesizeToWav:a}=await e(async()=>{let{synthesizeToWav:e}=await import(`./speak-BCLm04Z2.js`);return{synthesizeToWav:e}},__vite__mapDeps([14,3,4,9,15,16,17,1,18,6,19,20,21,22,23,24,25,26,27,28,5,7,8,29,13,0,2,30,31,32,33,34,35,36,37,38,39,40])),o=await a({text:t,...n===void 0?{}:{lang:n},...r===void 0?{}:{voice:r},...i===void 0?{}:{rate:i}});return{bytes:o.buffer.slice(o.byteOffset,o.byteOffset+o.byteLength)}},"play-audio":async({bytes:e,volume:t})=>{if(typeof AudioContext>`u`)throw Error(`Web Audio API is unavailable in this page`);let n=new AudioContext;try{let r=await n.decodeAudioData(e.slice(0)),i=n.createBufferSource();if(i.buffer=r,t!==void 0){let e=n.createGain();e.gain.value=Math.max(0,Math.min(1,t)),i.connect(e),e.connect(n.destination)}else i.connect(n.destination);await new Promise(e=>{i.onended=()=>e(),i.start()})}finally{try{await n.close()}catch{}}return{done:!0}},"play-chime":async({tone:e})=>{let t={success:[880,1320],error:[440,220],notify:[660,660]},[n,r]=t[e??`notify`]??t.notify;if(typeof AudioContext>`u`)throw Error(`Web Audio API is unavailable in this page`);let i=new AudioContext;try{let e=i.currentTime;for(let[t,a]of[n,r].entries()){let n=i.createOscillator();n.type=`sine`,n.frequency.value=a;let r=i.createGain();r.gain.setValueAtTime(1e-4,e+t*.18),r.gain.exponentialRampToValueAtTime(.2,e+t*.18+.02),r.gain.exponentialRampToValueAtTime(1e-4,e+t*.18+.18),n.connect(r),r.connect(i.destination),n.start(e+t*.18),n.stop(e+t*.18+.2)}await new Promise(e=>setTimeout(e,450))}finally{try{await i.close()}catch{}}return{done:!0}}}}function z(e={}){return{"clipboard-read-text":async()=>{if(!navigator.clipboard?.readText)throw Error(`clipboard API unavailable`);return{text:await navigator.clipboard.readText()}},"clipboard-write-text":async({text:e})=>{if(!navigator.clipboard?.writeText)throw Error(`clipboard API unavailable`);return await Q(),await navigator.clipboard.writeText(e),{done:!0}},"clipboard-write-image":async({bytes:e,mimeType:t})=>{if(!navigator.clipboard?.write||typeof ClipboardItem>`u`)throw Error(`clipboard image API unavailable`);let n,r=new Blob([e],{type:t});return n=t===`image/png`?r:await Oe(r),await Q(),await navigator.clipboard.write([new ClipboardItem({"image/png":n})]),{done:!0}},"window-open":async({url:e,target:t,features:n})=>({opened:window.open(e,t??`_blank`,n??`noopener,noreferrer`)!==null}),"oauth-popup":async({url:t})=>{let n=await e.delegateOAuthLogin?.(t);return n?.delegated?{redirectUrl:n.redirectUrl,error:n.error}:{redirectUrl:await Ee(t,e.getPermissionsSurface)}},"oauth-route":async()=>({delegate:await e.shouldDelegateOAuth?.()===!0}),"capture-camera":async e=>await we(e),"enumerate-media-devices":async()=>{if(!navigator.mediaDevices?.enumerateDevices)throw Error(`enumerateDevices is not supported in this browser`);let e=await navigator.mediaDevices.enumerateDevices(),t=e=>({deviceId:e.deviceId,label:e.label||``,...e.groupId?{groupId:e.groupId}:{}});return{videoinputs:e.filter(e=>e.kind===`videoinput`).map(t),audioinputs:e.filter(e=>e.kind===`audioinput`).map(t)}}}}function B(){return{"hear-capture":async t=>{let{hearCapture:n}=await e(async()=>{let{hearCapture:e}=await import(`./hear-BNmJphKg.js`);return{hearCapture:e}},__vite__mapDeps([41,4,42,43,3,16,17,1,18,6,19,20,21,22,23,24,25,26,27,28,5,7,8,9,29,13,0,2,30,31,32,33,34,35,36,37,38,39,40]));return await n(t??{})},"hear-transcribe":async({bytes:t,lang:n})=>{let{hearTranscribe:r}=await e(async()=>{let{hearTranscribe:e}=await import(`./hear-BNmJphKg.js`);return{hearTranscribe:e}},__vite__mapDeps([41,4,42,43,3,16,17,1,18,6,19,20,21,22,23,24,25,26,27,28,5,7,8,9,29,13,0,2,30,31,32,33,34,35,36,37,38,39,40]));return await r(t,n)},"hear-status":async()=>{let{hearStatus:t}=await e(async()=>{let{hearStatus:e}=await import(`./hear-BNmJphKg.js`);return{hearStatus:e}},__vite__mapDeps([41,4,42,43,3,16,17,1,18,6,19,20,21,22,23,24,25,26,27,28,5,7,8,9,29,13,0,2,30,31,32,33,34,35,36,37,38,39,40]));return t()},"hear-warmup":async()=>{let{hearWarmup:t}=await e(async()=>{let{hearWarmup:e}=await import(`./hear-BNmJphKg.js`);return{hearWarmup:e}},__vite__mapDeps([41,4,42,43,3,16,17,1,18,6,19,20,21,22,23,24,25,26,27,28,5,7,8,9,29,13,0,2,30,31,32,33,34,35,36,37,38,39,40]));return t()}}}function pe(r){return{"tray-reset":async()=>{if(!r.resetTray)throw Error(`host reset: no active tray session to reset`);return await r.resetTray()},"tray-webhook-rotate":async()=>{if(!r.rotateWebhook)throw Error(`webhook rotate: no active leader tray`);return await r.rotateWebhook()},"tray-webhook-revoke":async e=>{if(!r.revokeWebhook)throw Error(`webhook delete: no active leader tray`);return await r.revokeWebhook(e.webhookId),{ok:!0}},"tray-open-preview":async e=>{if(!r.mintPreview)throw Error(`serve: no active leader tray; cannot mint preview`);return await r.mintPreview(e)},"tray-revoke-preview":async e=>{if(!r.revokePreview)throw Error(`serve: no active leader tray; cannot revoke preview`);return await r.revokePreview(e)},"tray-list-previews":async()=>{if(!r.listPreviews)throw Error(`serve: no active leader tray; cannot list previews`);return await r.listPreviews()},"tray-mint-biscotto":async e=>{if(!r.mintBiscotto)throw Error(`biscotto: no active leader tray; cannot mint a seat`);return await r.mintBiscotto(e)},"tray-revoke-biscotto":async e=>{if(!r.revokeBiscotto)throw Error(`biscotto revoke: no active leader tray; cannot revoke a seat`);return await r.revokeBiscotto(e)},"tray-list-biscotti":async()=>{if(!r.listBiscotti)throw Error(`biscotti: no active leader tray; cannot list seats`);return await r.listBiscotti()},"tray-preview-logs":async({previewToken:e})=>{if(!r.getPreviewLifecycleRecords)throw Error(`serve --logs: no active leader tray; cannot read preview logs`);return r.getPreviewLifecycleRecords(e)},"tray-preview-truncate":async({previewToken:e})=>{if(!r.truncatePreviewLifecycleRecords)throw Error(`serve --truncate: no active leader tray; cannot truncate preview logs`);return r.truncatePreviewLifecycleRecords(e)},"tray-leave":async({workerBaseUrl:e,requestId:t})=>{if(!r.leaveTray)throw Error(`host leave: tray leave is not available in this environment`);return await r.leaveTray({workerBaseUrl:e,requestId:t})},"tray-join":async({joinUrl:e,requestId:t})=>{if(!r.joinTray)throw Error(`host join: tray join is not available in this environment`);return await r.joinTray({joinUrl:e,requestId:t})},"cherry-emit":async({runtimeId:e,name:t,detail:n})=>{if(!r.emitCherrySliccEvent)throw Error(`cherry-emit: not available in this environment`);return{delivered:r.emitCherrySliccEvent(e,t,n)}},"tray-exec":async e=>{if(!r.execOnRemote)throw Error(`ssh: no active leader tray in this environment`);return await r.execOnRemote(e)},"tray-exec-signal":({execToken:e})=>(r.signalRemoteExec?.({execToken:e}),{ok:!0}),"oauth-extras-set":({providerId:e,domains:r})=>(t(e,r),{storeAfter:n()}),"silent-renew":async({providerId:t})=>{let{getRegisteredProviderConfig:n}=await e(async()=>{let{getRegisteredProviderConfig:e}=await import(`./providers-Q92pCQ8h.js`).then(e=>e.r);return{getRegisteredProviderConfig:e}},__vite__mapDeps([32,1,3])),r=n(t);return r?.onSilentRenew?{accessToken:await r.onSilentRenew()}:{accessToken:null}},"save-oauth-accounts":({accountsJson:e})=>(localStorage.setItem(`slicc_accounts`,e),{storedJson:localStorage.getItem(`slicc_accounts`)??e})}}function me(e){let t=new Map,n=()=>{if(!e.sliccSidecar)throw Error(`slicc: sidecar attachments are not available in this environment`);return e.sliccSidecar},r=async(e,r)=>{let i=n(),a=new AbortController;t.set(e,a);try{return await r(i,a.signal)}finally{t.delete(e)}};return{"slicc-attach":async({joinUrl:e,name:t,connectTimeoutMs:r})=>await n().attach({joinUrl:e,name:t,connectTimeoutMs:r}),"slicc-detach":({name:e})=>({detached:n().detach(e)}),"slicc-list":()=>({attachments:n().list()}),"slicc-prompt":async({name:e,text:t,runToken:n,steer:i,timeoutMs:a})=>await r(n,async(n,r)=>await n.prompt(e,t,{steer:i,timeoutMs:a,signal:r})),"slicc-exec":async({name:e,command:t,runToken:n,cwd:i,env:a,timeoutMs:o,stdin:s})=>await r(n,async(n,r)=>await n.exec(e,t,{cwd:i,env:a,timeoutMs:o,stdin:s,signal:r})),"slicc-watch":async({name:e,runToken:t,durationMs:n,scoopJid:i,untilIdle:a})=>await r(t,async(t,r)=>await t.watch(e,{durationMs:n,scoopJid:i,untilIdle:a,signal:r})),"slicc-cancel":({runToken:e})=>(t.get(e)?.abort(),{ok:!0})}}function he(e){return Se(e.emitEvent),{"usb-list":async()=>({devices:await C(V(),W())}),"usb-request":async({filters:e})=>({device:await y(V(),W(),e)}),"usb-device-info":({handle:e})=>({device:k(V(),e)}),"usb-open":async({handle:e})=>(await j(V(),e),{done:!0}),"usb-close":async({handle:e,owner:t,force:n})=>(await S(V(),e,{owner:t,force:n}),{done:!0}),"usb-select-configuration":async({handle:e,configurationValue:t})=>(await w(V(),e,t),{done:!0}),"usb-claim-interface":async({handle:e,interfaceNumber:t,owner:n,wait:r})=>(await T(V(),e,t,{owner:n,wait:r}),{done:!0}),"usb-release-interface":async({handle:e,interfaceNumber:t,owner:n})=>(await v(V(),e,t,{owner:n}),{done:!0}),"usb-cancel-claim-wait":async({handle:e,interfaceNumber:t,owner:n})=>(await A(V(),e,t,n??`usb`),{done:!0}),"usb-drop-owner":async({owner:e})=>(await _(V(),e),{done:!0}),"usb-control-transfer-in":async({handle:e,setup:t,length:n})=>g(V(),e,t,n),"usb-control-transfer-out":async({handle:e,setup:t,bytes:n})=>E(V(),e,t,n),"usb-transfer-in":async({handle:e,endpointNumber:t,length:n})=>x(V(),e,t,n),"usb-transfer-out":async({handle:e,endpointNumber:t,bytes:n})=>b(V(),e,t,n),"usb-reset":async({handle:e,owner:t,force:n})=>(await D(V(),e,{owner:t,force:n}),{done:!0}),"usb-clear-halt":async({handle:e,direction:t,endpointNumber:n})=>(await O(V(),e,t,n),{done:!0})}}function ge(e,t){return{"hid-list":async()=>({devices:await ce(G(),K())}),"hid-request":async({filters:e})=>({devices:await oe(G(),K(),e)}),"hid-device-info":({handle:e})=>({device:ae(G(),e)}),"hid-open":async({handle:e})=>(await ne(G(),e),{done:!0}),"hid-close":async({handle:e})=>(await ue(G(),e),{done:!0}),"hid-send-report":async({handle:e,reportId:t,bytes:n})=>(await d(G(),e,t,n),{done:!0}),"hid-send-feature-report":async({handle:e,reportId:t,bytes:n})=>(await le(G(),e,t,n),{done:!0}),"hid-receive-feature-report":async({handle:e,reportId:t})=>u(G(),e,t),"hid-subscribe-input-reports":async({handle:n})=>{t.get(n)?.();let r=await re(G(),n,t=>{e.emitEvent?.(`hid-input-report`,{handle:n,reportId:t.reportId,bytes:t.bytes})});return t.set(n,r),{done:!0}},"hid-unsubscribe-input-reports":({handle:e})=>(t.get(e)?.(),t.delete(e),{done:!0})}}function _e(){return{"serial-list":async()=>({devices:await se(q(),J())}),"serial-request":async({filters:e})=>({device:await p(q(),J(),e)}),"serial-device-info":({handle:e})=>({device:ee(q(),e)}),"serial-open":async({handle:e,options:t})=>(await ie(q(),e,t),{done:!0}),"serial-close":async({handle:e})=>(await de(q(),e),{done:!0}),"serial-read":async({handle:e,maxBytes:t,until:n,timeoutMs:r})=>{let i=await te(q(),e,{maxBytes:t,until:n?new Uint8Array(n):void 0,timeoutMs:r});return{bytes:i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength)}},"serial-write":async({handle:e,bytes:t})=>({bytesWritten:await fe(q(),e,new Uint8Array(t))}),"serial-get-signals":async({handle:e})=>({signals:await f(q(),e)}),"serial-set-signals":async({handle:e,signals:t})=>(await l(q(),e,t),{done:!0})}}function ve(t){return{"esptool-chip-info":async({handle:n,baudRate:r})=>(await e(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([44,1,3,45]))).esptoolChipInfo(q(),n,r,e=>t.emitEvent?.(`esptool-progress`,{handle:n,line:e})),"esptool-read-mac":async({handle:n,baudRate:r})=>(await e(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([44,1,3,45]))).esptoolReadMac(q(),n,r,e=>t.emitEvent?.(`esptool-progress`,{handle:n,line:e})),"esptool-erase-flash":async({handle:n,baudRate:r})=>(await(await e(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([44,1,3,45]))).esptoolEraseFlash(q(),n,r,e=>t.emitEvent?.(`esptool-progress`,{handle:n,line:e})),{done:!0}),"esptool-flash":async({handle:n,baudRate:r,eraseAll:i,segments:a})=>(await(await e(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([44,1,3,45]))).esptoolFlash(q(),n,r,i,a.map(e=>({address:e.address,data:new Uint8Array(e.bytes)})),e=>t.emitEvent?.(`esptool-progress`,{handle:n,line:e})),{done:!0}),"esptool-read-flash":async({handle:n,baudRate:r,address:i,size:a})=>{let o=await(await e(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([44,1,3,45]))).esptoolReadFlash(q(),n,r,i,a,e=>t.emitEvent?.(`esptool-progress`,{handle:n,line:e}));return{bytes:o.buffer.slice(o.byteOffset,o.byteOffset+o.byteLength)}},"esptool-read-reg":async({handle:n,baudRate:r,address:i})=>(await e(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([44,1,3,45]))).esptoolReadReg(q(),n,r,i,e=>t.emitEvent?.(`esptool-progress`,{handle:n,line:e})),"esptool-flash-id":async({handle:n,baudRate:r})=>(await e(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([44,1,3,45]))).esptoolFlashId(q(),n,r,e=>t.emitEvent?.(`esptool-progress`,{handle:n,line:e})),"esptool-erase-region":async({handle:n,baudRate:r,address:i,size:a})=>(await(await e(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([44,1,3,45]))).esptoolEraseRegion(q(),n,r,i,a,e=>t.emitEvent?.(`esptool-progress`,{handle:n,line:e})),{done:!0}),"esptool-run":async({handle:n,baudRate:r})=>(await(await e(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([44,1,3,45]))).esptoolRun(q(),n,r,e=>t.emitEvent?.(`esptool-progress`,{handle:n,line:e})),{done:!0})}}function ye(e){return{"list-remote-targets":async()=>e.listRemoteTargets?{targets:(await e.listRemoteTargets()).filter(e=>e.targetId.includes(`:`)).map(e=>({targetId:e.targetId,title:e.title,url:e.url}))}:{targets:[]},"remote-cdp-send":async({runtimeId:t,localTargetId:n,method:r,params:i,sessionId:a,timeout:o})=>{if(!e.remoteCdp)throw Error(`remote-cdp bridge not available`);return e.remoteCdp.send({runtimeId:t,localTargetId:n,method:r,params:i,sessionId:a,timeout:o})},"remote-cdp-subscribe":async({runtimeId:t,localTargetId:n,event:r})=>{if(!e.remoteCdp)throw Error(`remote-cdp bridge not available`);return e.remoteCdp.subscribe({runtimeId:t,localTargetId:n,event:r})},"remote-cdp-unsubscribe":async({runtimeId:t,localTargetId:n,event:r})=>{if(!e.remoteCdp)throw Error(`remote-cdp bridge not available`);return e.remoteCdp.unsubscribe({runtimeId:t,localTargetId:n,event:r})},"remote-cdp-detach":async({runtimeId:t,localTargetId:n})=>{if(!e.remoteCdp)throw Error(`remote-cdp bridge not available`);return e.remoteCdp.detach({runtimeId:t,localTargetId:n})},"remote-open-tab":async({runtimeId:t,url:n})=>{if(!e.remoteCdp)throw Error(`remote-cdp bridge not available`);return e.remoteCdp.openTab({runtimeId:t,url:n})}}}function be(e,t){return t===void 0?e.length>0&&e.every(e=>e===`camera`||e===`microphone`):t}function xe(t){return{"permission-request":async n=>{let r=t.getPermissionsSurface?.()??null;if(!r)throw Error(`permission-request: permission surface unavailable`);let i=await r.prompt({kinds:n.kinds,description:n.description,heading:n.heading,grantLabel:n.grantLabel,cancelLabel:n.cancelLabel,skipIfGranted:be(n.kinds,n.skipIfGranted)});if(i.status!==`granted`){let e=i.message?`: ${i.message}`:``;throw Error(`permission-request: ${i.reason??i.status}${e}`)}let a=[];for(let t of i.grants)switch(t.kind){case`usb`:{let e=V().register(t.device);a.push({kind:`usb`,handle:e});break}case`hid`:{let e=G().register(t.device);a.push({kind:`hid`,handle:e});break}case`serial`:{let e=q().register(t.port);a.push({kind:`serial`,handle:e});break}case`filesystem`:{let{storePendingHandle:n}=await e(async()=>{let{storePendingHandle:e}=await import(`./mount-picker-popup--ijSfN8u.js`);return{storePendingHandle:e}},__vite__mapDeps([46,4,47,9])),r=`pendingMount:rpc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`;await n(r,t.handle),a.push({kind:`filesystem`,idbKey:r,dirName:t.handle.name});break}case`camera`:case`microphone`:case`screenshare`:for(let e of t.stream.getTracks())e.stop();a.push({kind:t.kind,ok:!0})}return{grants:a}}}}function V(){return m()}var H=null,U;function Se(t){U=t,!(H||!t)&&e(()=>import(`./usb-claim-broker-Dacw2Z3M.js`).then(e=>{H||=e.addClaimListener(V(),e=>{U?.(`usb-claim-event`,e)})}),__vite__mapDeps([48,49,1]))}function W(){let e=h();if(!e)throw Error(`WebUSB is unavailable in this browser`);return e}function G(){return o()}function K(){let e=a();if(!e)throw Error(`WebHID is unavailable in this browser`);return e}function q(){return s()}function J(){let e=c();if(!e)throw Error(`Web Serial is unavailable in this browser`);return e}var Ce=1500;async function we(e){if(!navigator.mediaDevices?.getUserMedia)throw Error(`getUserMedia is not supported in this browser`);let t=e.mode===`photo`||e.captureVideo!==!1,n=!!e.captureAudio&&e.mode===`video`;if(!t&&!n)throw Error(`camera capture: at least one of video or audio must be requested`);let r=await Te({wantVideo:t,videoDeviceId:t?await Y(e.deviceId,`videoinput`):void 0,audioDeviceId:n?await Y(e.audioDeviceId,`audioinput`):void 0,wantAudio:n,width:e.width,height:e.height,frameRate:e.frameRate,exact:!!e.exactSize});try{let n=null,i=0,a=0;if(t){n=document.createElement(`video`),n.srcObject=r,n.muted=!0,n.playsInline=!0;let e=n;await new Promise((t,n)=>{e.onloadedmetadata=()=>e.play().then(()=>t()).catch(n),e.onerror=()=>n(Error(`Failed to load camera stream`))}),await new Promise(e=>requestAnimationFrame(()=>e())),await new Promise(e=>requestAnimationFrame(()=>e())),i=e.videoWidth,a=e.videoHeight}if(e.mode===`photo`){if(!n)throw Error(`photo capture requires a video track`);let t=e.warmupMs??Ce;t>0&&await new Promise(e=>setTimeout(e,t));let r=document.createElement(`canvas`);r.width=i,r.height=a;let o=r.getContext(`2d`);if(!o)throw Error(`Failed to get canvas context`);o.drawImage(n,0,0,i,a);let s=await new Promise((t,n)=>{r.toBlob(e=>e?t(e):n(Error(`Failed to encode photo`)),e.mimeType,e.quality)});return{bytes:await s.arrayBuffer(),mimeType:s.type||e.mimeType,width:i,height:a}}let o=Math.max(100,Math.min(e.durationMs??5e3,6e4)),s=typeof MediaRecorder<`u`&&MediaRecorder.isTypeSupported(e.mimeType)?e.mimeType:`video/webm`,c=new MediaRecorder(r,{mimeType:s}),l=[];c.ondataavailable=e=>{e.data&&e.data.size>0&&l.push(e.data)};let u=new Promise(e=>{c.onstop=()=>e()});c.start(),await new Promise(e=>setTimeout(e,o)),c.stop(),await u;let d=new Blob(l,{type:s});return{bytes:await d.arrayBuffer(),mimeType:d.type||s,width:i,height:a,durationMs:o}}finally{r.getTracks().forEach(e=>{e.stop()})}}async function Y(e,t){if(e===void 0||e===``)return;if(!/^\d+$/.test(e))return e;if(!navigator.mediaDevices?.enumerateDevices)return;let n=parseInt(e,10);return(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===t)[n]?.deviceId}async function Te(e){let t=t=>{if(!e.wantVideo)return!1;let n={};return e.videoDeviceId&&(n.deviceId={exact:e.videoDeviceId}),e.width&&(n.width=t===`exact`?{exact:e.width}:{ideal:e.width}),e.height&&(n.height=t===`exact`?{exact:e.height}:{ideal:e.height}),e.frameRate&&(n.frameRate=t===`exact`?{exact:e.frameRate}:{ideal:e.frameRate}),Object.keys(n).length>0?n:!0},n=()=>e.wantAudio?!e.audioDeviceId||{deviceId:{exact:e.audioDeviceId}}:!1;try{return await navigator.mediaDevices.getUserMedia({video:t(e.exact?`exact`:`ideal`),audio:n()})}catch(r){let i=r?.name;if(!e.exact||i!==`OverconstrainedError`&&i!==`NotReadableError`)throw r;return console.warn(`panel-rpc:capture-camera: exact ${e.width??`?`}x${e.height??`?`}@${e.frameRate??`?`} unmet, falling back to ideal`),await navigator.mediaDevices.getUserMedia({video:t(`ideal`),audio:n()})}}async function Ee(e,t){if((typeof navigator<`u`?navigator.userActivation:void 0)?.isActive===!0)return X(window.open(e,`_blank`,`width=500,height=700,popup=yes`));let n=t?.()??null;if(n){let t=await De(n,e);return t===void 0?null:X(t)}return X(window.open(e,`_blank`,`width=500,height=700,popup=yes`))}function X(e){return new Promise(t=>{let n=!1,a=null,o=()=>{n||(n=!0,window.removeEventListener(`message`,s),clearTimeout(c),a&&clearInterval(a))},s=n=>{if(n.data?.type!==`oauth-callback`||n.origin!==window.location.origin||e&&n.source!==e)return;if(o(),n.data.error){console.error(`[panel-rpc:oauth-popup] OAuth error:`,n.data.error),t(null);return}let r=n.data.redirectUrl;(typeof r==`string`||r==null)&&t(r??null)};window.addEventListener(`message`,s),a=setInterval(async()=>{if(!n)try{let e=await fetch(r(`/api/oauth-result`),{headers:i()});if(e.status===204||!e.ok)return;let a=await e.json();if(n)return;if(o(),a.error){console.error(`[panel-rpc:oauth-popup] Server relay OAuth error:`,a.error),t(null);return}t(a.redirectUrl??null)}catch(e){console.warn(`[panel-rpc:oauth-popup] Poll failed:`,e instanceof Error?e.message:String(e))}},1e3);let c=setTimeout(()=>{o();try{e?.close()}catch{}t(null)},12e4)})}async function De(e,t){let n=await e.prompt({kinds:[`popup`],description:`Continue to sign in. A new window will open to the provider.`,grantLabel:`Continue`,requestOptions:{popup:{url:t}}});if(n.status!==`granted`)return;let r=n.grants.find(e=>e.kind===`popup`);return r&&r.kind===`popup`?r.window:null}function Z(e){return{name:e.name,lang:e.lang,default:e.default,onDevice:!1}}async function Oe(e){let t=URL.createObjectURL(e);try{let e=new Image;await new Promise((n,r)=>{e.onload=()=>n(),e.onerror=()=>r(Error(`Failed to load image for clipboard conversion`)),e.src=t});let n=document.createElement(`canvas`);n.width=e.naturalWidth,n.height=e.naturalHeight;let r=n.getContext(`2d`);if(!r)throw Error(`Failed to get canvas context`);return r.drawImage(e,0,0),await new Promise((e,t)=>{n.toBlob(n=>n?e(n):t(Error(`PNG re-encode failed`)),`image/png`)})}finally{URL.revokeObjectURL(t)}}async function Q(e=3e5){typeof document>`u`||typeof document.hasFocus==`function`&&(document.hasFocus()||await new Promise((t,n)=>{let r=()=>{window.removeEventListener(`focus`,i),document.removeEventListener(`visibilitychange`,a),clearTimeout(o)},i=()=>{document.hasFocus()&&(r(),t())},a=()=>{document.visibilityState===`visible`&&document.hasFocus()&&(r(),t())},o=setTimeout(()=>{r(),n(Error(`timed out waiting for window focus`))},e);window.addEventListener(`focus`,i),document.addEventListener(`visibilitychange`,a)}))}function ke(){return{"theme-apply":async({themeJson:t,action:n})=>{let{importTheme:r,saveCustomTheme:i,setActiveTheme:a,clearActiveTheme:o,applyThemeOverrides:s}=await e(async()=>{let{importTheme:e,saveCustomTheme:t,setActiveTheme:n,clearActiveTheme:r,applyThemeOverrides:i}=await import(`./theme-engine-B5SkYf3E.js`).then(e=>e.m);return{importTheme:e,saveCustomTheme:t,setActiveTheme:n,clearActiveTheme:r,applyThemeOverrides:i}},__vite__mapDeps([50,1,4]));if(n===`reset`)return o(),s(),{applied:null};if(t){let e=r(t);return i(e),a(e.id),s(),{applied:e.id}}return{applied:null}}}}function Ae(){return{"layout-apply":async t=>{let{getLayoutApplier:n}=await e(async()=>{let{getLayoutApplier:e}=await import(`./layout-apply-registry-Cw730jao.js`);return{getLayoutApplier:e}},[]),r=n();return r?await r(t)??{applied:!0}:{applied:!1,error:`no layout is mounted`}}}}function $(){let e=globalThis;if(!e.__slicc_browser)throw Error(`no browser API on this page`);return e.__slicc_browser}function je(){return{"computer-tab-screenshot":async t=>{let{screenshotTab:n}=await e(async()=>{let{screenshotTab:e}=await import(`./tab-ToMhjbM4.js`);return{screenshotTab:e}},__vite__mapDeps([51,52,19]));return n($(),t.targetId,{maxWidth:t.maxWidth,format:t.format})},"computer-tab-input":async t=>{let{inputTab:n}=await e(async()=>{let{inputTab:e}=await import(`./tab-ToMhjbM4.js`);return{inputTab:e}},__vite__mapDeps([51,52,19]));return await n($(),t.targetId,t.events),{ok:!0}}}}export{M as createStandalonePanelRpcHandlers};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./provider-1ByYSphI.js";export{e as readMcpAuthEntries};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./store-CzlK9KIc.js";import"./provider-Df8LFEZ7.js";export{e as readMcpAuthEntries};
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./panel-rpc-BPwAqRch.js";import{r as t}from"./base64-BPBW1Gzr.js";import"./bridge-protocol-31SWTdS5.js";import{r as n,t as r}from"./subcommand-help-CgO7wRS5.js";import{a as i,o as a,s as o,t as s}from"./encode-frame-B8GkHc2t.js";import{a as c,i as l,n as u,r as d,s as f}from"./keys-Dexx8cLD.js";import{getComputerRegistry as p,installComputerRegistry as m}from"./registry-Bq_j-EXx.js";import{getComputersHost as ee}from"./host-iTtS0MRF.js";const te=[`bridgeToken`,`bridge`,`tray`],ne=[`cherry`,`connect`],re=[`/join/`,`/tray/`],ie=[``,`/`,`/cloud`,`/connect`];function ae(e){let t=e.replace(/\/index\.html$/,`/`);return t.length>1?t.replace(/\/$/,``):t}function oe(e,t={}){let n;try{n=new URL(e)}catch{return!1}for(let e of te)if(n.searchParams.has(e))return!0;for(let e of ne)if(n.searchParams.get(e)===`1`)return!0;if(!new Set([`https://www.sliccy.ai`,`https://slicc-tray-hub-staging.minivelos.workers.dev`,...t.selfOrigins??[]]).has(n.origin))return!1;let r=ae(n.pathname);return ie.includes(r)?!0:re.some(e=>`${r}/`.startsWith(e))}function h(e={x:0,y:0}){return{x:e.x,y:e.y}}function se(e,t){return t.x!==void 0&&t.y!==void 0&&(e.x=t.x,e.y=t.y),e}function g(e,t){return t.x!==void 0&&t.y!==void 0?(e.x=t.x,e.y=t.y,{x:t.x,y:t.y}):{x:e.x,y:e.y}}function ce(e,t){return t.map(t=>{if(t.type===`mousemove`||t.type===`click`||t.type===`button`||t.type===`scroll`){let n=g(e,t);return{...t,x:n.x,y:n.y}}return t.type===`drag`&&se(e,{x:t.x2,y:t.y2}),t})}function _(e){return`tab:${e}`}const v={screenshot:!0,text:!1,frames:`poll`,keyboard:!0,mouse:`absolute`,scroll:!0,exec:!1,inputAllowed:!0},y={1:`left`,2:`middle`,3:`right`};function b(e){if(oe(e.url))throw Error(`refusing SLICC app tab '${e.title??e.url}'`)}var le=class{browser;targetId;seq=0;title;url;size=null;pointer=h();constructor(e,t,n={title:t,url:``}){this.browser=e,this.targetId=t,this.title=n.title,this.url=n.url}describe(){return{id:_(this.targetId),kind:`tab`,title:this.title,size:this.size,state:`live`,capabilities:v,pid:null}}async screenshot(e){return await this.refreshInfo(),b({url:this.url,title:this.title}),this.browser.withTab(this.targetId,async t=>{let n=await ue(t,e);return n.native&&(this.size=n.native),this.seq+=1,{seq:this.seq,mime:n.mime,width:n.width,height:n.height,bytes:n.bytes}})}async input(e){await this.refreshInfo(),b({url:this.url,title:this.title}),await this.browser.withTab(this.targetId,async t=>{for(let n of e)await x(t,n,this.pointer)})}async close(){}async refreshInfo(){let e=await ge(this.browser,this.targetId);e&&(this.title=e.title||this.title,this.url=e.url||this.url)}};async function ue(e,t){let n=await e.screenshot({format:`png`}),r=s(n),c=o(r)??i(r),l=r;t.maxWidth&&c&&c.width>t.maxWidth?l=s(await e.screenshot({format:`png`,maxWidth:t.maxWidth})):t.format!==`png`&&(l=s(await e.screenshot({format:`jpeg`,quality:70})));let u=o(l)??i(l)??c??{width:0,height:0};return t.format!==`png`&&!i(l)&&(l=await a(l)),{mime:i(l)?`image/jpeg`:`image/png`,bytes:l,width:u.width,height:u.height,native:c}}var de=class{rpc;targetId;seq=0;title;url;size=null;pointer=h();constructor(e,t,n={title:t,url:``}){this.rpc=e,this.targetId=t,this.title=n.title,this.url=n.url}describe(){return{id:_(this.targetId),kind:`tab`,title:this.title,size:this.size,state:`live`,capabilities:v,pid:null}}async screenshot(e){let t=await this.rpc.call(`computer-tab-screenshot`,{targetId:this.targetId,maxWidth:e.maxWidth,format:e.format});return this.title=t.title,this.url=t.url,this.size=t.nativeWidth&&t.nativeHeight?{width:t.nativeWidth,height:t.nativeHeight}:{width:t.width,height:t.height},this.seq+=1,{seq:this.seq,mime:t.mime,width:t.width,height:t.height,bytes:s(t.base64)}}async input(e){let t=ce(this.pointer,e);await this.rpc.call(`computer-tab-input`,{targetId:this.targetId,events:t})}async close(){}};async function x(e,t,n=h()){switch(t.type){case`mousemove`:{let r=g(n,t);await e.send(`Input.dispatchMouseEvent`,{type:`mouseMoved`,x:r.x,y:r.y});return}case`button`:await fe(e,t,n);return;case`click`:await pe(e,t,n);return;case`drag`:await S(e,t,n);return;case`scroll`:{let r=g(n,t);await e.send(`Input.dispatchMouseEvent`,{type:`mouseWheel`,x:r.x,y:r.y,deltaX:t.dx,deltaY:t.dy});return}case`key`:await me(e,t);return;case`text`:await e.send(`Input.insertText`,{text:t.text});return;case`wait`:await C(Math.max(0,t.ms));return}}async function fe(e,t,n){let r=g(n,t);await e.send(`Input.dispatchMouseEvent`,{type:t.down?`mousePressed`:`mouseReleased`,x:r.x,y:r.y,button:y[t.button],clickCount:1})}async function pe(e,t,n){let r=g(n,t),i=Math.max(1,t.count);for(let n=1;n<=i;n++)await e.send(`Input.dispatchMouseEvent`,{type:`mousePressed`,x:r.x,y:r.y,button:y[t.button],clickCount:n}),t.holdMs&&t.holdMs>0&&await C(t.holdMs),await e.send(`Input.dispatchMouseEvent`,{type:`mouseReleased`,x:r.x,y:r.y,button:y[t.button],clickCount:n})}async function S(e,t,n){await x(e,{type:`mousemove`,x:t.x1,y:t.y1},n),await x(e,{type:`button`,button:1,down:!0,x:t.x1,y:t.y1},n),await x(e,{type:`mousemove`,x:t.x2,y:t.y2},n),await x(e,{type:`button`,button:1,down:!1,x:t.x2,y:t.y2},n)}async function me(e,t){let n=u(t.keysym);if(!n)throw Error(`unknown keysym '${t.keysym}'`);for(let r of d(n,t.down))await e.send(`Input.dispatchKeyEvent`,{type:r.type,key:r.key,code:r.code,modifiers:r.modifiers,...r.text===void 0?{}:{text:r.text}})}function he(e,t){let n=e.find(e=>e.targetId===t);if(n)return n;let r=e.filter(e=>e.url===t||e.url.startsWith(t));if(r.length===1)return r[0];if(r.length>1)return{error:`ambiguous url '${t}' matches ${r.length} tabs`};let i=e.filter(e=>e.title===t);return i.length===1?i[0]:{error:`no tab matching '${t}'`}}async function ge(e,t){let n=(await e.listAllTargets()).find(e=>e.targetId===t);return n?{title:n.title,url:n.url}:null}function C(e){return new Promise(t=>setTimeout(t,e))}function w(e,t){for(let n of t){let t=T(e,n);if(t)return t}return null}function T(e,t){return t.type===`wait`?null:e.inputAllowed?t.type===`key`||t.type===`text`?e.keyboard?null:`keyboard input is not supported`:t.type===`scroll`?e.scroll?null:`scroll is not supported`:(t.type===`mousemove`||t.type===`button`||t.type===`click`||t.type===`drag`)&&e.mouse===`none`?`mouse input is not supported`:null:`input is not allowed`}const E={low:256,medium:768,high:1536};function D(e){if(!e)return E.medium;if(e in E)return E[e];let t=/^(\d+)(?:x\d+)?$/u.exec(e);if(t){let e=Number.parseInt(t[1],10);if(e>0)return e}return E.medium}function O(e,t){let n=e.width>0?e.width:t.width,r=e.height>0?e.height:t.height,i=t.width,a=t.height,o=n>0?i/n:1;return{nativeWidth:n,nativeHeight:r,shotWidth:i,shotHeight:a,scale:o>0?o:1}}function _e(e){let t=e.scale===1?`1`:e.scale.toFixed(2).replace(/0+$/u,``).replace(/\.$/u,``);return`${e.nativeWidth}x${e.nativeHeight} → ${e.shotWidth}x${e.shotHeight} (scale ${t})`}function k(e,t){return{width:e.shotWidth,height:e.shotHeight,scale:e.scale,at:t}}function ve(e,t,n,r){return r||!n||n.scale===0?{x:e,y:t}:{x:Math.round(e/n.scale),y:Math.round(t/n.scale)}}const A=`computer — look at and poke a screen (xdotool grammar)
|
|
2
|
-
|
|
3
|
-
Usage:
|
|
4
|
-
computer [-c <id>] [--json] [--native] <verb> [args] [verb ...]
|
|
5
|
-
|
|
6
|
-
Target: -c / --computer, else $COMPUTER, else last \`computer use\`, else
|
|
7
|
-
the only registered computer. \`computer ls\` lists ids.
|
|
8
|
-
|
|
9
|
-
Lifecycle:
|
|
10
|
-
ls list registered computers
|
|
11
|
-
add tab <targetId|url> [-n name]
|
|
12
|
-
register a browser tab (refuses SLICC app tabs)
|
|
13
|
-
rm [id] unregister (does not stop a v86 guest)
|
|
14
|
-
use <id> set the default computer
|
|
15
|
-
info descriptor for the current target
|
|
16
|
-
|
|
17
|
-
Look:
|
|
18
|
-
screenshot [--size low|medium|high|<N>] [--view] [file]
|
|
19
|
-
JPEG; prints WxH → wxh (scale s) and a frozen frame
|
|
20
|
-
text text-mode dump when the backend supports it
|
|
21
|
-
watch [--fps N] [--stop] live frames to the page (phase 2 UI)
|
|
22
|
-
|
|
23
|
-
Poke (xdotool; every verb ends with a frozen-frame line):
|
|
24
|
-
mousemove <x> <y> [--relative]
|
|
25
|
-
click [1|2|3] [--at x,y] [--hold MS] [--repeat N]
|
|
26
|
-
mousedown [1|2|3] [--at x,y]
|
|
27
|
-
mouseup [1|2|3] [--at x,y]
|
|
28
|
-
drag <x1> <y1> <x2> <y2>
|
|
29
|
-
scroll <dx> <dy> [--at x,y]
|
|
30
|
-
key <keysym> [keysym...] ctrl+alt+Delete, Return, F5, super+space
|
|
31
|
-
keydown <keysym>
|
|
32
|
-
keyup <keysym>
|
|
33
|
-
type <text...>
|
|
34
|
-
wait <ms>
|
|
35
|
-
exec <command...> when the backend supports it
|
|
36
|
-
|
|
37
|
-
Anthropic aliases (same verbs):
|
|
38
|
-
left_click right_click middle_click double_click triple_click
|
|
39
|
-
left_click_drag mouse_move scroll key type screenshot wait
|
|
40
|
-
|
|
41
|
-
Coordinates are screenshot-space of the last shot unless --native.
|
|
42
|
-
Buttons: 1 left, 2 middle, 3 right. Chain verbs: computer click 1 type hello
|
|
43
|
-
|
|
44
|
-
v86 guests register as v86:<name> on \`v86 start\`. Prefer this command;
|
|
45
|
-
\`v86 type|key|mouse|screenshot|text\` remain as thin aliases.
|
|
46
|
-
`,j=[`-c`,`--computer`,`--size`,`--at`,`--hold`,`--repeat`,`--fps`,`-n`,`--name`],M=new Set([`ls`,`add`,`rm`,`use`,`info`,`screenshot`,`text`,`watch`,`mousemove`,`click`,`mousedown`,`mouseup`,`drag`,`scroll`,`key`,`keydown`,`keyup`,`type`,`wait`,`exec`]),N={left_click:`click`,right_click:`click`,middle_click:`click`,double_click:`click`,triple_click:`click`,left_click_drag:`drag`,mouse_move:`mousemove`,screenshot:`screenshot`,wait:`wait`,key:`key`,type:`type`,scroll:`scroll`},P=new Set([`type`,`key`,`exec`,`add`]),F=new Set([`--size`,`--at`,`--hold`,`--repeat`,`--fps`,`-n`,`--name`,`-c`,`--computer`]);function I(e){return M.has(e)||e in N}function ye(e){return M.has(e)?e:N[e]??null}function be(e){let t=[],n,r=!1,i=!1;for(let a=0;a<e.length;a++){let o=e[a];if(o===`--`){t.push(...e.slice(a));break}if(o===`--json`){r=!0;continue}if(o===`--native`){i=!0;continue}if(o===`-c`||o===`--computer`){n=e[++a];continue}t.push(o)}return{computer:n,json:r,native:i,rest:t}}function xe(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r===`--`){n+=1;continue}let i=ye(r);if(!i)throw Error(`unknown verb '${r}' — see \`computer --help\``);n+=1;let{args:a,next:o}=Ce(i,e,n);t.push({verb:i,alias:r,args:Se(r,i,a)}),n=o}return t}function Se(e,t,n){return t===`click`?e===`left_click`?L(n,`1`):e===`middle_click`?L(n,`2`):e===`right_click`?L(n,`3`):e===`double_click`?[...L(n,`1`),`--repeat`,`2`]:e===`triple_click`?[...L(n,`1`),`--repeat`,`3`]:n:n}function L(e,t){return e[0]===`1`||e[0]===`2`||e[0]===`3`?e:[t,...e]}function Ce(e,t,n){return P.has(e)?we(t,n):Te(De(e),t,n)}function we(e,t){let n=[],r=t,i=!1;for(;r<e.length;){let t=e[r];if(!i&&t===`--`){i=!0,r+=1;continue}if(!i&&I(t))break;n.push(t),r+=1}return{args:n,next:r}}function R(e){return e.startsWith(`--`)||e===`-n`||e===`-c`}function z(e,t,n){let r=e[t];return n.push(r),t+=1,F.has(r)&&t<e.length&&(n.push(e[t]),t+=1),t}function Te(e,t,n){let r=[],i=n,a=0;for(;i<t.length;){let n=t[i];if(n===`--`){i+=1;continue}if(R(n)){i=z(t,i,r);continue}if(I(n))break;if(r.push(n),a+=1,i+=1,a>=e&&e>0){i=Ee(t,i,r);break}}return{args:r,next:i}}function Ee(e,t,n){let r=t;for(;r<e.length&&R(e[r]);)r=z(e,r,n);return r}function De(e){switch(e){case`mousemove`:return 2;case`drag`:return 4;case`scroll`:return 2;case`click`:case`mousedown`:case`mouseup`:return 3;case`wait`:case`keydown`:case`keyup`:case`rm`:case`use`:return 1;case`screenshot`:return 1;default:return 0}}function B(e){let t=e.indexOf(`--at`);if(t===-1)return;let n=e[t+1],r=n?/^(-?\d+),(-?\d+)$/u.exec(n):null;if(!r)throw Error(`--at requires x,y`);return{x:Number(r[1]),y:Number(r[2])}}function V(e,t){let n=e.indexOf(t);if(n===-1)return;let r=Number.parseInt(e[n+1]??``,10);if(!Number.isFinite(r))throw Error(`${t} requires a number`);return r}function H(e,t){return e.includes(t)}function U(e,t){for(let n of t){let t=e.indexOf(n);if(t!==-1)return e[t+1]}}function W(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];if(r===`--`){t.push(...e.slice(n+1));break}if(r.startsWith(`--`)||r===`-n`||r===`-c`){F.has(r)&&(n+=1);continue}t.push(r)}return t}function G(e,t,n){let r=e.list();if(t)return K(r,t);let i=n.get(`COMPUTER`);if(i)return K(r,i);let a=e.lastUsedId();return a&&e.get(a)?{id:a}:r.length===1?{id:r[0].id}:r.length===0?{error:"no computers registered — `computer add tab <id>` or `v86 start`"}:{error:`which computer? pass -c <id> or \`computer use\`. registered: ${r.map(e=>e.id).join(`, `)}`}}function K(e,t){let n=e.find(e=>e.id===t);if(n)return{id:n.id};let r=e.filter(e=>e.id.endsWith(`:${t}`)||e.title===t||e.id===`v86:${t}`||e.id===`tab:${t}`);if(r.length===1)return{id:r[0].id};if(r.length>1)return{error:`ambiguous computer '${t}' matches ${r.map(e=>e.id).join(`, `)}`};let i=e.map(e=>e.id).join(`, `);return{error:`unknown computer '${t}'${i?` — registered: ${i}`:` — none registered`}`}}function q(e){return{stdout:``,stderr:`computer: ${e}\n`,exitCode:1}}function J(e=``){return{stdout:e,stderr:``,exitCode:0}}function Y(){return globalThis.__slicc_pm??null}function Oe(e){return e.browser??globalThis.__slicc_browser??null}function ke(t){return t.panelRpc??globalThis.__slicc_panelRpc??e()}function Ae(e){return e.registry?e.registry:p()??m(e.processManager??Y())}async function je(e,t,i={}){if(e.length===0||e[0]===`--help`||e[0]===`-h`||e[0]===`help`)return J(A);let a=be(e);if(a.rest.length===0)return J(A);let o=a.rest[0];if(r(a.rest.slice(1),{valueFlags:[...j]}))return J(n(`computer`,o,A,{prefix:`computer`}));let s;try{s=xe(a.rest)}catch(e){return q(e instanceof Error?e.message:String(e))}let c=Ae(i),l=[];for(let e of s)try{let n=await Me(e,a,t,i,c);if(n.exitCode!==0)return n;n.stdout&&l.push(n.stdout.replace(/\n$/u,``))}catch(e){return q(e instanceof Error?e.message:String(e))}let u=it(l.filter(Boolean).join(`
|
|
47
|
-
`),s,c,a.computer,t,a.json);return J(u?`${u}\n`:``)}async function Me(e,t,n,r,i){switch(e.verb){case`ls`:return Ne(i,t.json);case`add`:return Pe(e.args,n,r,i);case`rm`:return Fe(e.args,t.computer,n,i);case`use`:return Ie(e.args,i);case`info`:return Le(t,n,i);case`screenshot`:return Re(e.args,t,n,i);case`text`:return ze(t,n,i);case`watch`:return Be(e.args,t,n,i,r);case`exec`:return He(e.args,t,n,i);default:return Ue(e,t,n,i)}}function Ne(e,t){let n=e.list();if(t)return J(`${JSON.stringify(n)}\n`);if(n.length===0)return J(`no computers registered
|
|
48
|
-
`);let r=[`ID KIND STATE TITLE`];for(let e of n)r.push(`${e.id.padEnd(20)} ${e.kind.padEnd(5)} ${e.state.padEnd(9)} ${e.title}`);return J(`${r.join(`
|
|
49
|
-
`)}\n`)}async function Pe(e,t,n,r){let i=e[0];if(i!==`tab`)return q(`add: unknown kind '${i??``}' — phase 1 supports \`computer add tab\``);let a=U(e,[`-n`,`--name`]),o=W(e).slice(1)[0];if(!o)return q(`add tab: requires <targetId|url>`);let s=Oe(n);if(!s)return q(`add tab: no browser API in this float`);let c=he(await s.listAllTargets(),o);if(`error`in c)return q(c.error);try{b(c)}catch(e){return q(e instanceof Error?e.message:String(e))}let l={title:a??c.title,url:c.url},u=n.browser&&!n.panelRpc?null:ke(n),d=u?new de(u,c.targetId,l):new le(s,c.targetId,l),f=r.register(d);return r.use(f.id),J(`registered ${f.id} (${f.title})\n`)}async function Fe(e,t,n,r){let i=G(r,W(e)[0]??t,Q(n));return`error`in i?q(i.error):await r.unregister(i.id)?J(`unregistered ${i.id}\n`):q(`unknown computer '${i.id}'`)}function Ie(e,t){let n=W(e)[0];if(!n)return q(`use: requires <id>`);let r=G(t,n,new Map);return`error`in r?q(r.error):(t.use(r.id),J(`using ${r.id}\n`))}function Le(e,t,n){let r=G(n,e.computer,Q(t));if(`error`in r)return q(r.error);let i=n.getEntry(r.id);if(!i)return q(`unknown computer '${r.id}'`);if(e.json)return J(`${JSON.stringify(i.descriptor)}\n`);let a=i.descriptor,o=a.size?`${a.size.width}x${a.size.height}`:`-`;return J(`id: ${a.id}\nkind: ${a.kind}\ntitle: ${a.title}\nstate: ${a.state}\nsize: ${o}\npid: ${a.pid??`-`}\n`)}async function Re(e,n,r,i){let a=Z(i,n.computer,r);if(`exitCode`in a)return a;let o=D(U(e,[`--size`])),s=await a.backend.screenshot({format:`jpeg`,maxWidth:o}),l=O(a.backend.describe().size??{width:s.width,height:s.height},{width:s.width,height:s.height});i.rememberShot(a.id,k(l,Date.now()),s);let u=s.seq>0?s.seq:i.nextSeq(a.id),d=await f({fs:r.fs,cwd:r.cwd,env:r.env,name:$(a.descriptor),seq:u,frame:s}),p=W(e)[0];if(p){let e=r.fs.resolvePath(r.cwd,p);await r.fs.writeFile(e,s.bytes)}let m=[_e(l),c(d)];return(H(e,`--view`)||H(e,`-v`))&&m.push(`<img:data:${s.mime};base64,${t(s.bytes)}>`),n.json?J(`${JSON.stringify({id:a.id,path:d,mapping:l})}\n`):J(`${m.join(`
|
|
50
|
-
`)}\n`)}async function ze(e,t,n){let r=Z(n,e.computer,t);if(`exitCode`in r)return r;if(!r.backend.text)return q(`text: '${r.id}' has no text dump`);let i=await r.backend.text();return i===null?q(`text: unavailable for '${r.id}'`):J(`${i}\n`)}async function Be(e,t,n,r,i){let a=Z(r,t.computer,n);if(`exitCode`in a)return a;let o=Ve(i);if(!o)return q(`watch: computers host is not running`);if(H(e,`--stop`))return o.unwatch(a.id),J(`unwatched ${a.id}\n`);let s=V(e,`--fps`)??2,c=D(U(e,[`--size`]));return o.watch(a.id,s,c),J(`watching ${a.id} at ${s} fps\n`)}function Ve(e){if(e.watch)return{watch:e.watch,unwatch:e.unwatch??(()=>void 0)};let t=ee();return t?{watch:t.watch,unwatch:t.unwatch}:null}async function He(e,t,n,r){let i=Z(r,t.computer,n);if(`exitCode`in i)return i;if(!i.backend.exec)return q(`exec: '${i.id}' does not support exec`);let a=e.join(` `);if(!a)return q(`exec: requires a command`);let o=await i.backend.exec(a),s=[o.stdout,o.stderr].filter(Boolean).join(`
|
|
51
|
-
`);return{stdout:s?`${s}\n`:``,stderr:``,exitCode:o.exitCode}}async function Ue(e,t,n,r){let i=Z(r,t.computer,n);if(`exitCode`in i)return i;let a=Ke(e,t.native,i.descriptor),o=w(i.descriptor.capabilities,a);return o?q(`${e.verb}: ${o}`):(await i.backend.input(a),We(i,n,r))}async function We(e,t,n){let r=e.descriptor.lastShot?.width??768,i;try{i=await Ge(e.backend.screenshot({format:`jpeg`,maxWidth:r}),5e3)}catch(e){return q(`screenshot failed after input: ${e instanceof Error?e.message:String(e)}`)}let a=O(e.backend.describe().size??{width:i.width,height:i.height},{width:i.width,height:i.height}),o=n.nextSeq(e.id),s={...i,seq:o};n.rememberShot(e.id,k(a,Date.now()),s);let l=await f({fs:t.fs,cwd:t.cwd,env:t.env,name:$(e.descriptor),seq:o,frame:s});return J(`${c(l)}\n`)}function Ge(e,t){return new Promise((n,r)=>{let i=setTimeout(()=>r(Error(`timed out`)),t);e.then(e=>{clearTimeout(i),n(e)},e=>{clearTimeout(i),r(e)})})}function Ke(e,t,n){let r=(e,r)=>ve(e,r,n.lastShot,t);switch(e.verb){case`mousemove`:return qe(e.args,r);case`click`:case`mousedown`:case`mouseup`:return Je(e.verb,e.args,r);case`drag`:return Ye(e.args,r,n.capabilities.mouse);case`scroll`:return Xe(e.args,r);case`key`:case`keydown`:case`keyup`:return Ze(e.verb,e.args);case`type`:return Qe(e.args);case`wait`:return $e(e.args);default:throw Error(`internal: ${e.verb} is not an input verb`)}}function qe(e,t){let n=W(e),r=Number(n[0]),i=Number(n[1]);if(!Number.isFinite(r)||!Number.isFinite(i))throw Error(`mousemove: requires <x> <y>`);let a=H(e,`--relative`),o=a?{x:r,y:i}:t(r,i);return[{type:`mousemove`,x:o.x,y:o.y,relative:a}]}function Je(e,t,n){let r=W(t),{button:i,skip:a}=et(r),o=B(t)??nt(r,a),s=o?n(o.x,o.y):void 0;if(e===`mousedown`)return[{type:`button`,button:i,down:!0,...X(s)}];if(e===`mouseup`)return[{type:`button`,button:i,down:!1,...X(s)}];let c=V(t,`--hold`);return[{type:`click`,button:i,count:V(t,`--repeat`)??1,...c===void 0?{}:{holdMs:c},...X(s)}]}function Ye(e,t,n){let r=W(e).map(Number);if(r.length<4||r.some(e=>!Number.isFinite(e)))throw Error(`drag: requires <x1> <y1> <x2> <y2>`);let i=t(r[0],r[1]),a=t(r[2],r[3]);return n===`touch`?[{type:`drag`,x1:i.x,y1:i.y,x2:a.x,y2:a.y}]:[{type:`mousemove`,x:i.x,y:i.y},{type:`button`,button:1,down:!0,x:i.x,y:i.y},{type:`mousemove`,x:a.x,y:a.y},{type:`button`,button:1,down:!1,x:a.x,y:a.y}]}function Xe(e,t){let n=W(e),r=Number(n[0]),i=Number(n[1]);if(!Number.isFinite(r)||!Number.isFinite(i))throw Error(`scroll: requires <dx> <dy>`);let a=B(e);return[{type:`scroll`,dx:r,dy:i,...X(a?t(a.x,a.y):void 0)}]}function Ze(e,t){if(e===`key`){if(t.length===0)throw Error(`key: no keysym supplied`);return t.map(e=>({type:`key`,keysym:e}))}let n=W(t)[0];if(!n)throw Error(`${e}: no keysym supplied`);return[{type:`key`,keysym:n,down:e===`keydown`}]}function Qe(e){let t=e.join(` `).replace(/\\n/gu,`
|
|
52
|
-
`).replace(/\\t/gu,` `);if(!t)throw Error(`type: no text supplied`);return[{type:`text`,text:t}]}function $e(e){let t=Number(W(e)[0]);if(!Number.isFinite(t))throw Error(`wait: requires <ms>`);return[{type:`wait`,ms:t}]}function et(e){return e[0]===void 0?{button:1,skip:0}:e[0]===`left`||e[0]===`middle`||e[0]===`right`||e[0]===`1`||e[0]===`2`||e[0]===`3`?{button:tt(e[0]),skip:1}:{button:1,skip:0}}function tt(e){if(!e||e===`left`||e===`1`)return 1;if(e===`middle`||e===`2`)return 2;if(e===`right`||e===`3`)return 3;let t=Number.parseInt(e,10);if(t===1||t===2||t===3)return t;throw Error(`unknown button '${e}' (use 1|2|3)`)}function nt(e,t){let n=Number(e[t]),r=Number(e[t+1]);if(Number.isFinite(n)&&Number.isFinite(r))return{x:n,y:r}}function X(e){return e?{x:e.x,y:e.y}:{}}const rt=new Set([`ls`,`add`,`rm`,`use`]);function it(e,t,n,r,i,a){if(a||!t.some(e=>!rt.has(e.verb)))return e;let o=G(n,r,Q(i));if(`error`in o)return e;let s=l(o.id);return e.split(`
|
|
53
|
-
`).some(e=>e.trim()===s)?e:e?`${s}\n${e}`:s}function Z(e,t,n){let r=G(e,t,Q(n));if(`error`in r)return q(r.error);let i=e.getEntry(r.id);return i?{id:r.id,backend:i.backend,descriptor:i.descriptor}:q(`unknown computer '${r.id}'`)}function Q(e){let t=e.env;if(t instanceof Map)return t;let n=new Map;if(t&&typeof t==`object`)for(let[e,r]of Object.entries(t))r!==void 0&&n.set(e,r);return n}function $(e){return e.id.replace(/[/:]/gu,`_`)}export{je as runComputer};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./screencapture-run-yMA5c_HS.js";async function n(t){if(!navigator.mediaDevices?.getDisplayMedia)throw Error(`screen capture is not supported in this browser`);await s();let n=t.mode===`video`&&!!t.audio,a;try{a=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:n})}catch(t){throw Error(e(t))}try{return t.mode===`video`?await i(a,t):await r(a,t)}finally{for(let e of a.getTracks())try{e.stop()}catch{}}}async function r(e,t){let n=await o(e);try{await new Promise(e=>setTimeout(e,100));let e=n.videoWidth,r=n.videoHeight,i=document.createElement(`canvas`);i.width=e,i.height=r;let a=i.getContext(`2d`);if(!a)throw Error(`Failed to get canvas context`);a.drawImage(n,0,0,e,r);let o=await new Promise((e,n)=>{i.toBlob(t=>t?e(t):n(Error(`Failed to create image blob`)),t.mimeType,t.quality)});return{bytes:new Uint8Array(await o.arrayBuffer()),mimeType:o.type||t.mimeType,width:e,height:r}}finally{n.srcObject=null}}async function i(e,n){if(typeof MediaRecorder>`u`)throw Error(`MediaRecorder is not supported in this browser`);let r=await o(e),i=r.videoWidth,s=r.videoHeight,c=t(n.durationMs),l=a(n.mimeType),u=new MediaRecorder(e,{mimeType:l}),d=[];u.ondataavailable=e=>{e.data&&e.data.size>0&&d.push(e.data)};let f=new Promise(e=>{u.onstop=()=>e()}),p=new Promise(t=>{let n=e.getTracks(),r=n.length;if(r===0){t();return}for(let e of n)e.addEventListener(`ended`,()=>{--r,r<=0&&t()},{once:!0})}),m=Date.now();u.start(),await Promise.race([new Promise(e=>setTimeout(e,c)),p]),u.state!==`inactive`&&u.stop(),await f;let h=Math.max(100,Date.now()-m);r.srcObject=null;let g=new Blob(d,{type:l});if(g.size===0)throw Error(`video capture produced no data (was sharing stopped immediately?)`);return{bytes:new Uint8Array(await g.arrayBuffer()),mimeType:g.type||l,width:i,height:s,durationMs:Math.min(h,c)}}function a(e){if(MediaRecorder.isTypeSupported(e))return e;for(let e of[`video/webm;codecs=vp9,opus`,`video/webm;codecs=vp8,opus`,`video/webm`])if(MediaRecorder.isTypeSupported(e))return e;return`video/webm`}async function o(e){let t=document.createElement(`video`);return t.srcObject=e,t.muted=!0,t.playsInline=!0,await new Promise((e,n)=>{t.onloadedmetadata=()=>t.play().then(()=>e()).catch(n),t.onerror=()=>n(Error(`Failed to load video stream`))}),t}async function s(e=5e3){if(typeof document>`u`)return;let t=()=>typeof document.visibilityState!=`string`||document.visibilityState===`visible`,n=typeof document.hasFocus==`function`?()=>document.hasFocus():()=>!0;t()&&n()||await new Promise(r=>{let i=()=>{window.removeEventListener(`focus`,a),document.removeEventListener(`visibilitychange`,a),clearTimeout(o)},a=()=>{t()&&n()&&(i(),r())},o=setTimeout(()=>{i(),r()},e);window.addEventListener(`focus`,a),document.addEventListener(`visibilitychange`,a),a()})}export{n as captureDisplayMedia};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(e){return Math.max(100,Math.min(e??5e3,6e4))}function t(e){let t=e instanceof DOMException?e.name:void 0,n=e instanceof Error?e.message:String(e);return t===`InvalidStateError`||/^Invalid state$/i.test(n.trim())||/InvalidStateError/i.test(n)?`display capture unavailable (Invalid state): another tab or page may still hold a screen-share session, or this page is not focused/visible. Stop other getDisplayMedia captures, focus the SLICC window, and retry; if it stays wedged, reload the session`:t===`NotAllowedError`||/Permission denied|NotAllowedError/i.test(n)?`user cancelled or permission denied`:t===`NotFoundError`?`no screen, window, or tab was available to capture`:t===`NotReadableError`||t===`AbortError`?n||t:n}async function n(e){if(!navigator.mediaDevices?.getDisplayMedia)throw Error(`screen capture is not supported in this browser`);await s();let n=e.mode===`video`&&!!e.audio,a;try{a=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:n})}catch(e){throw Error(t(e))}try{return e.mode===`video`?await i(a,e):await r(a,e)}finally{for(let e of a.getTracks())try{e.stop()}catch{}}}async function r(e,t){let n=await o(e);try{await new Promise(e=>setTimeout(e,100));let e=n.videoWidth,r=n.videoHeight,i=document.createElement(`canvas`);i.width=e,i.height=r;let a=i.getContext(`2d`);if(!a)throw Error(`Failed to get canvas context`);a.drawImage(n,0,0,e,r);let o=await new Promise((e,n)=>{i.toBlob(t=>t?e(t):n(Error(`Failed to create image blob`)),t.mimeType,t.quality)});return{bytes:new Uint8Array(await o.arrayBuffer()),mimeType:o.type||t.mimeType,width:e,height:r}}finally{n.srcObject=null}}async function i(t,n){if(typeof MediaRecorder>`u`)throw Error(`MediaRecorder is not supported in this browser`);let r=await o(t),i=r.videoWidth,s=r.videoHeight,c=e(n.durationMs),l=a(n.mimeType),u=new MediaRecorder(t,{mimeType:l}),d=[];u.ondataavailable=e=>{e.data&&e.data.size>0&&d.push(e.data)};let f=new Promise(e=>{u.onstop=()=>e()}),p=new Promise(e=>{let n=t.getTracks(),r=n.length;if(r===0){e();return}for(let t of n)t.addEventListener(`ended`,()=>{--r,r<=0&&e()},{once:!0})}),m=Date.now();u.start(),await Promise.race([new Promise(e=>setTimeout(e,c)),p]),u.state!==`inactive`&&u.stop(),await f;let h=Math.max(100,Date.now()-m);r.srcObject=null;let g=new Blob(d,{type:l});if(g.size===0)throw Error(`video capture produced no data (was sharing stopped immediately?)`);return{bytes:new Uint8Array(await g.arrayBuffer()),mimeType:g.type||l,width:i,height:s,durationMs:Math.min(h,c)}}function a(e){if(MediaRecorder.isTypeSupported(e))return e;for(let e of[`video/webm;codecs=vp9,opus`,`video/webm;codecs=vp8,opus`,`video/webm`])if(MediaRecorder.isTypeSupported(e))return e;return`video/webm`}async function o(e){let t=document.createElement(`video`);return t.srcObject=e,t.muted=!0,t.playsInline=!0,await new Promise((e,n)=>{t.onloadedmetadata=()=>t.play().then(()=>e()).catch(n),t.onerror=()=>n(Error(`Failed to load video stream`))}),t}async function s(e=5e3){if(typeof document>`u`)return;let t=()=>typeof document.visibilityState!=`string`||document.visibilityState===`visible`,n=typeof document.hasFocus==`function`?()=>document.hasFocus():()=>!0;t()&&n()||await new Promise(r=>{let i=()=>{window.removeEventListener(`focus`,a),document.removeEventListener(`visibilitychange`,a),clearTimeout(o)},a=()=>{t()&&n()&&(i(),r())},o=setTimeout(()=>{i(),r()},e);window.addEventListener(`focus`,a),document.addEventListener(`visibilitychange`,a),a()})}export{n as captureDisplayMedia};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./float-topology-CurCyQFy.js";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(){return{version:`6.167.0`,releasedAt:`2026-09-18T07:44:21Z`,buildId:`6.167.0-mu6nkhrl`}}let t=null;function n(e){t=e}function r(){return t}export{e as n,n as r,r as t};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./logger-LESFN7Hj.js";import{n as t,r as n}from"./path-utils-DNJG-zQf.js";import{t as r}from"./types-D8gIX-W-.js";import{g as i,i as a,n as o,p as s}from"./sudoers-BdBYQPUn.js";const c=e(`sudo:timeout`),l={"user-timeout":`no response from the user within 5 minutes. This is a TIMEOUT, not a denial — the user was not there to answer. Do not retry this action; report that the approval request went unanswered and wait for the user before trying again.`,"cone-timeout":`no response from the cone agent within 5 minutes. This is a TIMEOUT, not a denial — no human was ever prompted, the cone simply never resolved the request. Do not retry this action; report that the escalation went unanswered and continue with work that does not need it.`};function u(e){return l[e]}function d(e=`user-timeout`){return{decision:`deny`,reason:e}}function f(e,t){let n=t.decision===`deny`?t.reason:void 0,r=n?`${e}: approval request timed out — ${u(n)}`:`${e}: approval denied`,i=t.note?.trim();return i?`${r} — approver's reason: ${i}`:r}function p(e,t={}){let n=t.timeoutMs??3e5;if(!Number.isFinite(n)||n<=0)return e;let r=t.setTimer??((e,t)=>setTimeout(e,t)),i=t.clearTimer??(e=>clearTimeout(e));return{requestApproval(t,a){return new Promise(o=>{let s=new AbortController,l=()=>s.abort();a?.signal?.addEventListener(`abort`,l,{once:!0});let u=!1,f=e=>{u=!0,a?.signal?.removeEventListener(`abort`,l),o(e)},p=r(()=>{u||(c.warn(`sudo approval timed out — failing closed`,{kind:t.kind,detail:t.detail,timeoutMs:n}),s.abort(),f(d(`user-timeout`)))},n),m=e=>{if(u){c.warn(`sudo decision arrived after timeout — discarded`,{kind:t.kind,detail:t.detail,decision:e.decision});return}i(p),f(e)};e.requestApproval(t,{signal:s.signal}).then(m,e=>{c.warn(`sudo broker threw — denying`,{error:e instanceof Error?e.message:String(e)}),m({decision:`deny`})})})}}}const m=e(`sudo:fs`),h=Symbol.for(`slicc.fs.monkeypatchUnsafe`),g=`${o}/granted`;function _(e){return f(`sudo`,e)}const v=[`readFile`,`readFileRange`,`getNativeFile`,`readTextFile`,`readDir`,`exists`,`stat`],y=[`writeFile`,`appendFile`],b=[`mkdir`,`rm`,`chmod`,`utimes`];async function x(e,t,a,s){let c=i(s);if(!c)return;let l=t(),u={pattern:c,nopasswd:!0,regex:n(c)};(a===`read`?l.read:l.write).push(u);let d=`NOPASSWD ${a===`read`?`Read`:`Write`} ${c}\n`;try{await e.mkdir(o,{recursive:!0});let t=``;try{t=await e.readFile(g,{encoding:`utf-8`})}catch(e){if(!(e instanceof r&&e.code===`ENOENT`))throw e}let n=t.length>0&&!t.endsWith(`
|
|
2
|
-
`)?`
|
|
3
|
-
`:``;await e.writeFile(g,t+n+d)}catch(e){m.warn(`Failed to persist NOPASSWD grant; effective in-session only`,{error:e instanceof Error?e.message:String(e)})}}function S(e,n){let{broker:i,getPolicy:o}=n,c=n.defaultDisposition??`allow`,l=n.onGrant?n.onGrant:(t,n)=>x(e,o,t,n);async function u(e,n,u=!1){let d=t(n),f=s(o(),e,d,{isContentWrite:u}),p=e===`write`?a(f,c):f;if(p===`deny`)throw m.warn(`Refusing write to an unhonoured sudoers path`,{path:d}),new r(`EACCES`,`sudo: refusing to write a sudoers file outside /etc — policy is read only from /etc/sudoers and /etc/sudoers.d/, so this file would never take effect`,d);if(p!==`require-approval`)return;let h=e,g=await i.requestApproval({kind:h,detail:d});if(g.decision===`deny`)throw new r(`EACCES`,_(g),d);g.decision===`always`&&await l(e,g.pattern?.trim()||d)}function d(e){return s(o(),`read`,t(e))!==`require-approval`}let f=t=>typeof e[t]==`function`,p={};for(let t of v)f(t)&&(p[t]=async(n,...r)=>(await u(`read`,n),e[t](n,...r)));for(let t of y)f(t)&&(p[t]=async(n,...r)=>(await u(`write`,n,!0),e[t](n,...r)));for(let t of b)f(t)&&(p[t]=async(n,...r)=>(await u(`write`,n),e[t](n,...r)));return f(`walk`)&&(p.walk=async function*(t,...n){await u(`read`,t),yield*e.walk(t,...n)}),f(`symlink`)&&(p.symlink=async(t,n)=>(await u(`write`,n),e.symlink(t,n))),f(`rename`)&&(p.rename=async(t,n)=>(await u(`read`,t),await u(`write`,t),await u(`write`,n),e.rename(t,n))),f(`copyFile`)&&(p.copyFile=async(t,n)=>(await u(`read`,t),await u(`write`,n),e.copyFile(t,n))),f(`mount`)&&(p.mount=async(t,...n)=>(await u(`write`,t),e.mount(t,...n))),f(`unmount`)&&(p.unmount=async t=>(await u(`write`,t),e.unmount(t))),f(`refreshMount`)&&(p.refreshMount=async(t,...n)=>(await u(`write`,t),e.refreshMount(t,...n))),f(`statSync`)&&(p.statSync=t=>d(t)?e.statSync(t):null),f(`readDirSync`)&&(p.readDirSync=t=>d(t)?e.readDirSync(t):null),new Proxy(e,{get(e,t,n){if(t===h)return!0;if(typeof t==`string`&&t in p)return p[t];let r=Reflect.get(e,t,n);return typeof r==`function`?r.bind(e):r}})}export{d as a,f as i,h as n,p as o,S as r,g as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./v86-vm-DCm7zA2r.js";import{i as n}from"./encode-frame-B8GkHc2t.js";import{o as r,t as i}from"./keys-Dexx8cLD.js";import{getComputerRegistry as a}from"./registry-Bq_j-EXx.js";function o(e){return`v86:${e}`}const s={screenshot:!0,text:!0,frames:`poll`,keyboard:!0,mouse:`relative`,scroll:!0,exec:!1,inputAllowed:!0},c={1:0,2:1,3:2};var l=class{record;lastX=0;lastY=0;seq=0;constructor(e){this.record=e}describe(){let e=this.record.screen,t=e.width>0&&e.height>0?{width:e.width,height:e.height}:null;return{id:o(this.record.name),kind:`v86`,title:this.record.name,size:t,state:this.record.emulator.is_running()?`live`:`paused`,capabilities:s,pid:this.record.pid}}async screenshot(e){let i=t(this.record);if(!i)throw Error(`no graphical frame for '${this.record.name}' — the guest is in text mode; use \`computer text\``);let a=n(i,e.maxWidth),o=await r(a);return this.seq+=1,{seq:this.seq,mime:`image/jpeg`,width:a.width,height:a.height,bytes:o}}async text(){return e(this.record)}async input(e){for(let t of e)await this.apply(t)}async close(){}async apply(e){switch(e.type){case`mousemove`:this.applyMousemove(e);return;case`button`:await this.applyButton(e);return;case`click`:await this.applyClick(e);return;case`scroll`:await this.applyScroll(e);return;case`drag`:await this.applyDrag(e);return;case`key`:this.applyKey(e);return;case`text`:this.record.emulator.keyboard_send_text(e.text);return;case`wait`:await u(Math.max(0,e.ms));return}}applyMousemove(e){let t=this.record.emulator;if(e.relative){t.bus.send(`mouse-delta`,[e.x,-e.y]),this.lastX+=e.x,this.lastY+=e.y;return}this.rehomePointer(),t.bus.send(`mouse-delta`,[e.x,-e.y]),this.lastX=e.x,this.lastY=e.y}rehomePointer(){this.record.emulator.bus.send(`mouse-delta`,[-16384,16384]),this.lastX=0,this.lastY=0}async maybeMoveTo(e,t){e!==void 0&&t!==void 0&&this.applyMousemove({type:`mousemove`,x:e,y:t})}async applyButton(e){await this.maybeMoveTo(e.x,e.y),this.sendButtons(e.button,e.down)}async applyClick(e){await this.maybeMoveTo(e.x,e.y);let t=Math.max(1,e.count);for(let n=0;n<t;n++)this.sendButtons(e.button,!0),e.holdMs&&e.holdMs>0&&await u(e.holdMs),this.sendButtons(e.button,!1)}async applyScroll(e){await this.maybeMoveTo(e.x,e.y),this.record.emulator.bus.send(`mouse-wheel`,[e.dx,-e.dy])}async applyDrag(e){this.applyMousemove({type:`mousemove`,x:e.x1,y:e.y1}),this.sendButtons(1,!0),this.applyMousemove({type:`mousemove`,x:e.x2,y:e.y2}),this.sendButtons(1,!1)}applyKey(e){let t=i(e.keysym);if(!t)throw Error(`unknown keysym '${e.keysym}'`);if(e.down===!1){this.record.emulator.keyboard_send_scancodes(t.filter((e,n)=>n>=t.length/2));return}if(e.down===!0){this.record.emulator.keyboard_send_scancodes(t.slice(0,Math.ceil(t.length/2)));return}this.record.emulator.keyboard_send_scancodes(t)}sendButtons(e,t){let n=[!1,!1,!1];t&&(n[c[e]]=!0),this.record.emulator.bus.send(`mouse-click`,n)}};function u(e){return new Promise(t=>setTimeout(t,e))}function d(e,t=a()){return t?t.register(new l(e),{pid:e.pid}):null}function f(e,t=a()){t&&t.unregister(o(e))}export{l as V86ComputerBackend,d as registerV86Computer,f as unregisterV86Computer,o as v86ComputerId};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{F as e,I as t,k as n}from"./wc-shell-CCKjmASt.js";import{r}from"./base64-ELzoYfwP.js";import{t as i}from"./image-markers-q8JQTtid.js";import{E as a,T as o,w as s}from"./wc-live-BLozTZsg.js";function c(e){let t=o(e.bytes);return`data:${a(t)??e.mime};base64,${r(t)}`}var l=`computer:`,u=4,d=768,f=2,p=480,m={debug(){},info(){},warn(){},error(){}},h=null;function g(e){return`${l}${e}`}function _(e){return e.startsWith(`computer:`)?e.slice(9):null}function v(e){let t=e.trim().split(/\s+/);for(let e=0;e<t.length;e++)if(t[e]===`-c`||t[e]===`--computer`)return t[e+1]??null;return null}function y(e){for(let t of e.split(`
|
|
2
|
-
`)){let e=t.trim();if(!e.startsWith(`target: `))continue;let n=e.slice(8).trim();if(n)return n}return null}function b(e,t,n){return n||(v(e)??y(t))}function x(e){for(let t of e.split(`
|
|
3
|
-
`)){let e=t.trim();if(!e.startsWith(`screen: `))continue;let n=e.slice(8).trim();if(n)return n}return null}function S(e){return i(e).find(e=>e.kind===`image`&&e.parsed)?.parsed?.dataUrl??null}function C(e){let t=x(e);if(t)return{kind:`path`,path:t};let n=S(e);return n?{kind:`data`,src:n}:null}function w(e,t){return{id:g(e.id),title:e.title,url:e.kind,screenshot:t?c(t):void 0,kind:`computer`,live:e.state===`live`,softKeys:e.softKeys?.map(e=>({label:e.label,keysym:e.keysym}))}}function T(e,t=s().list()){let n=s(),r=e.filter(e=>e.kind!==`computer`),i=t.map(e=>w(e,n.lastFrame(e.id)));return[...r,...i]}function E(e){return h?(e?.log&&(h.deps.log=e.log),e?.openFs&&(h.deps.openFs=e.openFs),h):(h={deps:{log:e?.log??m,openFs:e?.openFs},bound:new Map,overlayUnsubs:[],overlayWatchIds:new Map,lightboxId:null,lightboxWatchToken:null,lightboxOrigin:null,preview:null,installed:!1},h)}function D(e,t){e.append(n(t))}function O(e){let t=e.target,n=e.detail,r=b(n.command??t.command??``,n.output??t.output??``,n.computerId??t.computerId),i=n.toolCallId||t.toolCallId,a={el:t,toolCallId:i,computerId:r,watchToken:null,loadGen:0,frozenKey:null};E().bound.set(t,a),t.addEventListener(`computer-row-unbind`,A),r&&(t.computerId=r),r&&i&&s().recordInvocation(r,i),M()}function k(e){if(e.computerId)return;let t=b(e.el.command??``,e.el.output??``,e.el.computerId);t&&(e.computerId=t,e.el.computerId=t,e.toolCallId&&s().recordInvocation(t,e.toolCallId))}function A(e){let t=e.target,n=h;if(!n)return;let r=n.bound.get(t);if(r){if(n.bound.delete(t),t.removeEventListener(`computer-row-unbind`,A),r.watchToken!==null&&r.computerId)try{s().unwatch(r.computerId,r.watchToken)}catch(e){n.deps.log.warn(`WC computers: unwatch on row unbind failed`,e)}M()}}function j(e){let t=e.target,n=h?.bound.get(t),r=e.detail?.src;r&&V(n?.computerId??null,r,t)}function M(){let e=h;if(e)for(let t of e.bound.values())N(t)}function N(t){k(t);let n=s(),r=t.computerId?n.get(t.computerId):null,i=C(t.el.output??``),a=t.computerId?n.lastFrame(t.computerId):null,o=t.computerId?n.newestInvocation(t.computerId):null,l=!!t.computerId&&r?.state===`live`&&o===t.toolCallId,u=e({computerLive:r?.state===`live`,newestToolCallId:o,toolCallId:t.toolCallId,hasFrame:!!i,hasPushedFrame:!!a});t.el.frameMode=u,P(t,l);let d=t.el.output??``;if(u===`live`&&a){t.loadGen+=1,t.frozenKey=null,t.el.frameSrc=c(a);return}if(u===`frozen`){let e=F(d);if(t.frozenKey===e)return;t.frozenKey=e,t.loadGen+=1,L(t,d,t.loadGen);return}t.loadGen+=1,t.frozenKey=null,t.el.frameSrc=null}function P(e,t){if(!e.computerId)return;let n=s();t&&e.watchToken===null?e.watchToken=n.watch(e.computerId,f,p):!t&&e.watchToken!==null&&(n.unwatch(e.computerId,e.watchToken),e.watchToken=null)}function F(e){return`${x(e)??``}\n${S(e)??``}`}function I(e,t,n){return h?.bound.get(e.el)!==e||e.loadGen!==t||e.el.frameMode!==`frozen`?!1:F(e.el.output??``)===F(n)}async function L(e,t,n){let r=x(t),i=null;r&&(i=await R(r)),i||=S(t),I(e,n,t)&&(e.el.frameSrc=i)}async function R(e){let t=h?.deps.openFs;if(!t)return null;try{let n=await(await t()).readFile(e,{encoding:`binary`}),i=o(n);return`data:${a(i)??`image/jpeg`};base64,${r(i)}`}catch(t){return h?.deps.log.warn(`WC computers: frozen frame read failed`,{path:e,err:t}),null}}function z(e,t){let n=c(t),r=E();if(r.lightboxId===e){let e=B();e.isOpen?e.setSrc(n):e.open(n,r.lightboxOrigin??e)}M()}function B(){let e=E();if(e.preview?.isConnected)return e.preview;let t=document.createElement(`slicc-image-preview`);return t.setAttribute(`data-computer-live`,``),document.body.append(t),t.addEventListener(`slicc-image-preview-close`,()=>H()),e.preview=t,t}function V(e,t,n){let r=E(),i=s();e?(r.lightboxId&&r.lightboxId!==e&&r.lightboxWatchToken!==null&&(i.unwatch(r.lightboxId,r.lightboxWatchToken),r.lightboxWatchToken=null),(r.lightboxId!==e||r.lightboxWatchToken===null)&&(r.lightboxWatchToken=i.watch(e,u,d),r.lightboxId=e)):r.lightboxWatchToken!==null&&r.lightboxId&&(i.unwatch(r.lightboxId,r.lightboxWatchToken),r.lightboxWatchToken=null,r.lightboxId=null),r.lightboxOrigin=n;let a=B(),o=e?i.lastFrame(e):null,l=o?c(o):t;l&&(a.isOpen?a.setSrc(l):a.open(l,n))}function H(){let e=h;if(e?.lightboxId){if(e.lightboxWatchToken!==null){try{s().unwatch(e.lightboxId,e.lightboxWatchToken)}catch(t){e.deps.log.warn(`WC computers: lightbox unwatch failed`,t)}e.lightboxWatchToken=null}e.lightboxId=null,e.lightboxOrigin=null}}function U(e,t){return e.shadowRoot?.querySelector(`[data-tab-id="${CSS.escape(t)}"]`)??e}function W(){let e=h;if(!e)return;let t=s();for(let[n,r]of[...e.overlayWatchIds]){try{t.unwatch(n,r)}catch{}e.overlayWatchIds.delete(n)}}function G(e){q(e),e.hasAttribute(`open`)&&(e.tabs=T(e.tabs))}function K(e,t,n){if(q(e),!e.hasAttribute(`open`))return;let r=c(n);r&&e.patchTabScreenshot?.(g(t),r)||(e.tabs=T(e.tabs))}function q(e){let t=E(),n=s(),r=e.hasAttribute(`open`)?n.list().map(e=>e.id):[],i=new Set(r);for(let[e,r]of[...t.overlayWatchIds])if(!i.has(e)){try{n.unwatch(e,r)}catch(e){t.deps.log.warn(`WC computers: overlay unwatch failed`,e)}t.overlayWatchIds.delete(e)}for(let e of r)if(!t.overlayWatchIds.has(e))try{t.overlayWatchIds.set(e,n.watch(e,f,p))}catch(e){t.deps.log.warn(`WC computers: overlay watch failed`,e)}}function J(e){let n=E(e);if(t(D),n.installed)return X;n.installed=!0,document.addEventListener(`computer-row-bind`,O),document.addEventListener(`computer-row-unbind`,A),document.addEventListener(`computer-frame-click`,j);let r=s();return n.overlayUnsubs.push(r.onList(()=>M())),n.overlayUnsubs.push(r.onInvocations(()=>M())),n.overlayUnsubs.push(r.onFrame(z)),X}function Y(e,t){let n=E(t?{log:t}:void 0),r=s(),i=t=>{let i=t.detail?.id,a=i?_(i):null;if(!a)return;let o=r.lastFrame(a),s=o?c(o):``;s||n.deps.log.warn(`WC computers: no frame yet for lightbox`,{id:a}),V(a,s,U(e,i))},a=e=>{let t=e.detail,i=t?.id?_(t.id):null;if(!(!i||!t.keysym))try{r.input(i,[{type:`key`,keysym:t.keysym}])}catch(e){n.deps.log.warn(`WC computers: softkey input failed`,e)}};e.addEventListener(`tab-activate`,i),e.addEventListener(`tab-peek`,i),e.addEventListener(`computer-softkey`,a);let o=()=>G(e);e.addEventListener(`overlay-close`,o);let l=new MutationObserver(()=>G(e));l.observe(e,{attributes:!0,attributeFilter:[`open`]});let u=r.onList(()=>G(e)),d=r.onFrame((t,n)=>K(e,t,n));return G(e),()=>{e.removeEventListener(`tab-activate`,i),e.removeEventListener(`tab-peek`,i),e.removeEventListener(`computer-softkey`,a),e.removeEventListener(`overlay-close`,o),l.disconnect(),u(),d(),W()}}function X(){let e=h;if(e){document.removeEventListener(`computer-row-bind`,O),document.removeEventListener(`computer-row-unbind`,A),document.removeEventListener(`computer-frame-click`,j);for(let t of e.overlayUnsubs)t();W();for(let t of e.bound.values())if(t.watchToken!==null&&t.computerId)try{s().unwatch(t.computerId,t.watchToken)}catch{}if(e.lightboxWatchToken!==null&&e.lightboxId)try{s().unwatch(e.lightboxId,e.lightboxWatchToken)}catch{}e.preview?.remove(),h=null}}export{Y as bindComputerOverlay,J as installWcComputers,T as mergeOverlayTabs,_ as parseComputerOverlayId};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./wc-onboarding-OKaUOQ3X.js";export{e as hasOnboardingFinalLickInHistory};
|