sliccy 6.167.0 → 6.169.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 +6 -5
- package/dist/node-server/_shared/agent-wire-types.d.ts +9 -1
- package/dist/node-server/_shared/agent-wire-types.d.ts.map +1 -1
- 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/_shared/tray-sync-protocol.d.ts +119 -3
- package/dist/node-server/_shared/tray-sync-protocol.d.ts.map +1 -1
- package/dist/node-server/_shared/tray-sync-protocol.js +132 -2
- package/dist/node-server/_shared/tray-sync-protocol.js.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 +275 -260
- package/dist/ui/assets/{SKILL-BGEZa-y0.js → SKILL-BTHo2BzY.js} +1 -1
- package/dist/ui/assets/{SKILL-Bpepfqq0.js → SKILL-BULOq3ys.js} +1 -1
- package/dist/ui/assets/{SKILL-DEFDsScb.js → SKILL-CLL4Q13w.js} +1 -1
- package/dist/ui/assets/SKILL-maxwOcxi.js +1 -0
- package/dist/ui/assets/{account-store-B05_LKnj.js → account-store-C0smCH0b.js} +1 -1
- package/dist/ui/assets/{account-store-CNTI4kr_.js → account-store-_oWY-N-g.js} +2 -2
- package/dist/ui/assets/{adobe-nu3irXcy.js → adobe-D8bfhWFa.js} +1 -1
- package/dist/ui/assets/{adobe-CRRWEbtf.js → adobe-i2veKh2G.js} +2 -2
- package/dist/ui/assets/{agent-panels-DvH_qfTh.js → agent-panels-Bt83ejkl.js} +1 -1
- package/dist/ui/assets/{almost-bash-shell-headless-BA5r_r61.js → almost-bash-shell-headless-CXYALRet.js} +521 -582
- package/dist/ui/assets/{apply-layout-CASSSWEy.js → apply-layout-C4DuaXQ1.js} +1 -1
- package/dist/ui/assets/approval-timeout-BQ29Z0gf.js +1 -0
- package/dist/ui/assets/{apps-BGe9_zJ7.js → apps-DpExQYs8.js} +1 -1
- package/dist/ui/assets/{azure-openai-C-Iw82HZ.js → azure-openai-CGgFuiTh.js} +1 -1
- package/dist/ui/assets/{azure-openai-DuJciOKd.js → azure-openai-Cm0dqkf0.js} +1 -1
- package/dist/ui/assets/{backend-hostfs-DdAVlPMP.js → backend-hostfs-BZXs8PNk.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-UL1FYYjc.js} +2 -2
- package/dist/ui/assets/{cerebras-Xadzrxfp.js → cerebras-BEKAS5HH.js} +1 -1
- package/dist/ui/assets/{cerebras-BXwtUxTj.js → cerebras-nQZqQsKF.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-BPb0h67H.js} +1 -1
- package/dist/ui/assets/{connect-surface-odDz37TJ.js → connect-surface-EJ0FRStY.js} +1 -1
- package/dist/ui/assets/context-compaction-Dpr7xgBZ.js +58 -0
- package/dist/ui/assets/core-DWdpOAZd.js +62 -0
- package/dist/ui/assets/core-w0-0FXns.js +36 -0
- package/dist/ui/assets/{directed-approval-D_AXAvuz.js → directed-approval-CPSbebEZ.js} +1 -1
- package/dist/ui/assets/{discovery-preference-TziZ7Yxu.js → discovery-preference-G3mw_EUO.js} +1 -1
- package/dist/ui/assets/encode-frame-30wbFN-H.js +1 -0
- package/dist/ui/assets/engine-CzMNXd8U.js +1 -0
- package/dist/ui/assets/{ensure-speech-assets-DTj236n-.js → ensure-speech-assets-DPjgwmlG.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-7E6RloFP.js +1 -0
- package/dist/ui/assets/{frozen-archive-writer-BIzZxx8R.js → frozen-archive-writer-rq_r_D3R.js} +2 -2
- package/dist/ui/assets/{fs-CJs9n90Q.js → fs-B9TgYyVA.js} +2 -2
- package/dist/ui/assets/{fs-Bq8bUwe2.js → fs-KJBUdRz_.js} +1 -1
- package/dist/ui/assets/{gelatiere-store-BY0hZvSS.js → gelatiere-store-DIE4b-Va.js} +1 -1
- package/dist/ui/assets/gelatiere-unit-wx8F8dnF.js +1 -0
- package/dist/ui/assets/{github-D1gd3q6u.js → github-CgEE40ok.js} +2 -2
- package/dist/ui/assets/{github-uDwUwz5H.js → github-_GgWC1Vq.js} +1 -1
- package/dist/ui/assets/{github-auth-CzzE1eDf.js → github-auth-Ba7C_Kly.js} +1 -1
- package/dist/ui/assets/{github-copilot-Bx2lXrwK.js → github-copilot-jobL3_Cf.js} +1 -1
- package/dist/ui/assets/{github-copilot-DidNEEe_.js → github-copilot-rsfkYfvK.js} +1 -1
- package/dist/ui/assets/{github-install--_xp8s-S.js → github-install-DtlYn56m.js} +1 -1
- package/dist/ui/assets/{github-zip-Bs35nBig.js → github-zip-BanSb9qW.js} +1 -1
- package/dist/ui/assets/{guest-tool-gate-B-lZT9hl.js → guest-tool-gate-C6sp1l3H.js} +1 -1
- package/dist/ui/assets/{hear-BNmJphKg.js → hear-zSghqsv6.js} +1 -1
- package/dist/ui/assets/{help-C7Nq107k.js → help-BkjaKwT1.js} +1 -1
- package/dist/ui/assets/{host-iTtS0MRF.js → host-BjOvrhMS.js} +1 -1
- package/dist/ui/assets/host-command-XUdketMY.js +28 -0
- package/dist/ui/assets/icons-BMNa26vG.js +1 -0
- package/dist/ui/assets/idle-compaction-CwYw083A.js +1 -0
- package/dist/ui/assets/{installer-C0xiAs69.js → installer-CYXMipeW.js} +1 -1
- package/dist/ui/assets/interrupted-work-recovery-p8rpTJ6o.js +1 -0
- package/dist/ui/assets/{isomorphic-git-B7et_8Xe.js → isomorphic-git-B9eVtfwq.js} +10 -10
- package/dist/ui/assets/{isomorphic-git-D2fV6xS-.js → isomorphic-git-DXMEKpHT.js} +7 -7
- package/dist/ui/assets/{js-realm-worker-B9Rz0g1p.js → js-realm-worker-B9VuUz7Q.js} +2 -2
- package/dist/ui/assets/{jsh-executor-C7QPZ2Qr.js → jsh-executor-BhNH2E0v.js} +4 -4
- package/dist/ui/assets/{jsh-runtime-extensions-ddeGEOUw.js → jsh-runtime-extensions-CmdnQhXG.js} +1 -1
- package/dist/ui/assets/kernel-worker-CBI5EKGn.js +1186 -0
- package/dist/ui/assets/keys-Bluq5eTH.js +1 -0
- package/dist/ui/assets/lick-urls-CgPiVwD-.js +1 -0
- package/dist/ui/assets/{lick-ws-bridge-BcAhlead.js → lick-ws-bridge-BFrcBnVV.js} +1 -1
- package/dist/ui/assets/lick-ws-bridge-DVoxwaqS.js +1 -0
- package/dist/ui/assets/{live-session-snapshot-COMr2v0o.js → live-session-snapshot-Cw5xb5EQ.js} +1 -1
- package/dist/ui/assets/{local-llm-DdGb9WMG.js → local-llm-BRe_Kttg.js} +1 -1
- package/dist/ui/assets/{local-llm-DqeU7kV3.js → local-llm-C7T1M_NI.js} +1 -1
- package/dist/ui/assets/{main-jc6OS8lz.js → main-BfonTdzP.js} +3 -3
- package/dist/ui/assets/{main-cherry-BGZmJFd_.js → main-cherry-Cty_ShgD.js} +1 -1
- package/dist/ui/assets/{memory-curation-seam-B8pprlUo.js → memory-curation-seam-dmTVk3Ov.js} +1 -1
- package/dist/ui/assets/{memory-health-CGkpyA7o.js → memory-health-9iNdh0Ac.js} +1 -1
- package/dist/ui/assets/memory-v2-flag-D4biUAiV.js +1 -0
- package/dist/ui/assets/{memory-write-execute-B-ahXjaO.js → memory-write-execute-C9xS6Q1z.js} +1 -1
- package/dist/ui/assets/{mount-FkNAB0be.js → mount-B_VZbcPY.js} +1 -1
- package/dist/ui/assets/{mount-BzdPNQoA.js → mount-Bq4ov4Wg.js} +3 -3
- 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-BE_lEtyG.js} +1 -1
- package/dist/ui/assets/{new-session-B8iOhaK0.js → new-session-BJqFQPRu.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-B9PwK4-d.js → oauth-bootstrap-CFXmccC5.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-M3HJvymL.js} +1 -1
- package/dist/ui/assets/{openai-codex-BrQ1tsgu.js → openai-codex-BWGWiycb.js} +1 -1
- package/dist/ui/assets/{openai-codex-DmHr_2RR.js → openai-codex-NAo35j43.js} +1 -1
- package/dist/ui/assets/{openrouter-BvM36eS5.js → openrouter-Bhxgi8JW.js} +1 -1
- package/dist/ui/assets/{openrouter-free-CFBzPY5J.js → openrouter-free-DersFAEc.js} +1 -1
- package/dist/ui/assets/{openrouter-free-CUKlyrhq.js → openrouter-free-Dl2pScMt.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-DOdpRMfw.js → openrouter-oauth-C3bVnGt2.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-RC0CxY4X.js → openrouter-oauth-DW4_wGaN.js} +1 -1
- package/dist/ui/assets/{openrouter-C6WDBJvB.js → openrouter-sloSkMqY.js} +1 -1
- package/dist/ui/assets/{opfs-mount-B78yj9gx.js → opfs-mount-FspqzE40.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-CwCdqXzk.js +2 -0
- package/dist/ui/assets/{panelize-shell-CFPiIneK.js → panelize-shell-c-tVlGNY.js} +1 -1
- package/dist/ui/assets/{pi-edit-execution-BDl_Xp_M.js → pi-edit-execution-Brw1YFDp.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-C7zRpxoe.js} +2 -2
- package/dist/ui/assets/{provider-Df8LFEZ7.js → provider-DsHcYBTa.js} +1 -1
- package/dist/ui/assets/{provider-settings-Bk-fk9dp.js → provider-settings-BKCma-Jb.js} +1 -1
- package/dist/ui/assets/provider-store-access-BfDZO7Ly.js +1 -0
- package/dist/ui/assets/provider-store-access-CYticOn7.js +1 -0
- package/dist/ui/assets/{providers-T_FH_8cU.js → providers-DDnH2Ikl.js} +1 -1
- package/dist/ui/assets/{providers-Q92pCQ8h.js → providers-DEiO6D-5.js} +2 -2
- 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-tSDpCXxR.js} +1 -1
- package/dist/ui/assets/{realm-inprocess-CWMnXeN3.js → realm-inprocess-BKygqrOz.js} +6 -6
- package/dist/ui/assets/{recovery-screen-DhUqOdby.js → recovery-screen-D6-sXNj7.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-C-ey_KSq.js} +1 -1
- package/dist/ui/assets/{run-B-t7kWH3.js → run-BEs473Sp.js} +1 -1
- package/dist/ui/assets/{run-COfTem8j.js → run-BSBxWJ5B.js} +1 -1
- package/dist/ui/assets/{run-ZmpHaamT.js → run-C3DRjgOJ.js} +2 -2
- package/dist/ui/assets/run-C_dx5nR2.js +91 -0
- package/dist/ui/assets/{run-IexPmM2B.js → run-CeJrX6mR.js} +2 -2
- package/dist/ui/assets/{run-DuW-7oJj.js → run-CfS1uOdY.js} +4 -4
- package/dist/ui/assets/{run-BX9uHbIi.js → run-DZtlriWZ.js} +1 -1
- package/dist/ui/assets/{run-CUCg2cJM.js → run-TEAp1X-0.js} +2 -2
- package/dist/ui/assets/run-ywBpFa_c.js +77 -0
- package/dist/ui/assets/{run-DgVV_DFr.js → run-zO91KPbj.js} +3 -3
- 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-B0lDqCR9.js} +2 -2
- package/dist/ui/assets/{session-jsonl-iOOR_32X.js → session-jsonl-C8ClVNxB.js} +1 -1
- package/dist/ui/assets/{session-jsonl-D01HYAS2.js → session-jsonl-DQNfKRsT.js} +1 -1
- package/dist/ui/assets/{session-search-index-CABvtt-r.js → session-search-index-BT4ZJZt7.js} +2 -2
- package/dist/ui/assets/{setup-feature-flags-remote-CvstKwBW.js → setup-feature-flags-remote-BGRjwc3Y.js} +1 -1
- package/dist/ui/assets/{signed-fetch-7NwdVmf1.js → signed-fetch-CNiA3vB6.js} +1 -1
- package/dist/ui/assets/{silent-renew-backoff-CXHqSiPb.js → silent-renew-backoff-DrQ0_tES.js} +1 -1
- package/dist/ui/assets/slicc-version-nVz--RAg.js +1 -0
- package/dist/ui/assets/{snapshot-BcYaw9Ip.js → snapshot-DXOlM8V_.js} +1 -1
- package/dist/ui/assets/{snapshot-features-3xslkGtL.js → snapshot-features-D_DeQAxH.js} +1 -1
- package/dist/ui/assets/{soundscape-TygolFwj.js → soundscape-CYcg-DKm.js} +1 -1
- package/dist/ui/assets/{speak-BCLm04Z2.js → speak-Br_kDtG8.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-DDzNanda.js → sprinkle-manager-DpsA1UkN.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-B-CADNjq.js → sprinkle-renderer-q0STe7tk.js} +5 -2
- package/dist/ui/assets/ssh-CrZ29b93.js +6 -0
- package/dist/ui/assets/{state-BCTAzK_L.js → state-edQbuMHp.js} +1 -1
- package/dist/ui/assets/{store-C-AW4ogv.js → store-BJb3HsiM.js} +1 -1
- package/dist/ui/assets/{store-CzlK9KIc.js → store-BYzp8NI8.js} +1 -1
- package/dist/ui/assets/{sudo-BtkDnUA_.js → sudo-DaUFGZ5z.js} +1 -1
- package/dist/ui/assets/sudo-fs-C6r_MIIY.js +3 -0
- package/dist/ui/assets/{supervisor-B6-QPxI3.js → supervisor-BGSiMwrr.js} +1 -1
- package/dist/ui/assets/{sync-dialog-B4G7kCwj.js → sync-dialog-D72P64lv.js} +1 -1
- package/dist/ui/assets/tab-CgwpvlHH.js +1 -0
- package/dist/ui/assets/tool-ui-DRnUkp2g.js +1 -0
- package/dist/ui/assets/{transformers-env-1TbBNkOp.js → transformers-env-BKCNBfWr.js} +1 -1
- package/dist/ui/assets/{tray-leader-_KISvFyF.js → tray-leader-DEBMxUkS.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-D3LaARDy.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-Bfcy9pO0.js} +1 -1
- package/dist/ui/assets/turn-journal-CyInnakf.js +1 -0
- package/dist/ui/assets/{upgrade-detection-C5daiUbn.js → upgrade-detection-BZooMFxg.js} +1 -1
- package/dist/ui/assets/{upskill-lick-skip-C2ZQ0c2-.js → upskill-lick-skip-H5RyeNIq.js} +1 -1
- package/dist/ui/assets/url-SK-_tyJs.js +1 -0
- package/dist/ui/assets/v86-BinbB-8j.js +1 -0
- package/dist/ui/assets/{voice-reply-Dk4ztuZL.js → voice-reply-ClwwZfjh.js} +1 -1
- package/dist/ui/assets/{wc-attach-CFj2ZF5_.js → wc-attach-DpNELhNG.js} +2 -2
- package/dist/ui/assets/{wc-browser-BFL2Tl8W.js → wc-browser-6X1_NRym.js} +1 -1
- package/dist/ui/assets/wc-computers-2bCwocOU.js +3 -0
- package/dist/ui/assets/{wc-detached-ncc8KuL1.js → wc-detached-sDWnNsaX.js} +1 -1
- package/dist/ui/assets/{wc-extension-DppNe2VK.js → wc-extension-CF_DQHCJ.js} +2 -2
- package/dist/ui/assets/{wc-follower-CcxFCW-y.js → wc-follower-BlgNQHR9.js} +3 -3
- package/dist/ui/assets/wc-follower-oauth-BBtoYPP3.js +5 -0
- package/dist/ui/assets/{wc-gelatiere-CANPh9TU.js → wc-gelatiere-Pgs78krZ.js} +1 -1
- package/dist/ui/assets/wc-live-D3BfBbnn.js +427 -0
- package/dist/ui/assets/{wc-nav-BlLpBAJG.js → wc-nav-CDV8ylGr.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-OKaUOQ3X.js → wc-onboarding-CpKS7u3d.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-BwY4p0ld.js} +3 -3
- package/dist/ui/assets/{wc-secret-request-QPmTs_eW.js → wc-secret-request-HU2msCsY.js} +1 -1
- package/dist/ui/assets/{wc-settings-BFgFDtTk.js → wc-settings-OTZDaEtj.js} +3 -3
- package/dist/ui/assets/{wc-shell-CCKjmASt.js → wc-shell-M1btJNO6.js} +9 -5
- package/dist/ui/assets/{wc-shortcut-config-CeUoljrV.js → wc-shortcut-config-BgTHSt0X.js} +1 -1
- package/dist/ui/assets/{wc-sprinkles-BNp18_jW.js → wc-sprinkles-DoKzhGCE.js} +2 -2
- package/dist/ui/assets/{wc-transcript-export-DJnnZ8L-.js → wc-transcript-export-CxB6cd8_.js} +2 -2
- package/dist/ui/assets/wc-tray-BTgAee3m.js +5 -0
- package/dist/ui/assets/welcome-detection-Bvx3sh1_.js +1 -0
- package/dist/ui/assets/{whisper-session-CMiImrJg.js → whisper-session-Bjyp9kUa.js} +2 -2
- package/dist/ui/assets/{xai-grok-BMr5udF6.js → xai-grok-BSR4EP1b.js} +1 -1
- package/dist/ui/assets/{xai-grok-Dzeo18XM.js → xai-grok-Drl4j3ci.js} +1 -1
- package/dist/ui/index.html +9 -9
- package/dist/ui/lucide-icons.js +261 -247
- package/dist/ui/packages/webapp/index.html +9 -9
- package/package.json +8 -1
- package/dist/ui/assets/SKILL-CWR-bsvH.js +0 -1
- package/dist/ui/assets/browser-2rCVqcqy.js +0 -1
- package/dist/ui/assets/context-compaction-DRymamfD.js +0 -58
- package/dist/ui/assets/core-BoFWHLIW.js +0 -62
- package/dist/ui/assets/core-Bvc89tkf.js +0 -36
- package/dist/ui/assets/encode-frame-B8GkHc2t.js +0 -1
- package/dist/ui/assets/engine-D531XNHE.js +0 -1
- package/dist/ui/assets/es-DwGGEZle.js +0 -51
- package/dist/ui/assets/gelatiere-unit-DrQwRL3O.js +0 -1
- package/dist/ui/assets/icons-BM2l-_K7.js +0 -1
- package/dist/ui/assets/idle-compaction-B9i1duyd.js +0 -1
- package/dist/ui/assets/kernel-worker-4aPSVJ1C.js +0 -1185
- 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-1aYSFTwj.js +0 -91
- 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/tab-ToMhjbM4.js +0 -1
- package/dist/ui/assets/v86-BfdTUFBK.js +0 -1
- package/dist/ui/assets/wc-computers-CcJuQUyG.js +0 -3
- package/dist/ui/assets/wc-follower-oauth-DQ-JPxl6.js +0 -5
- package/dist/ui/assets/wc-live-BLozTZsg.js +0 -427
- package/dist/ui/assets/wc-tray-f1LxbB98.js +0 -5
- package/dist/ui/assets/welcome-detection-Dg9THpkh.js +0 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reference HTTP computer behind `--computer-demo`. Implements the
|
|
3
|
+
* phase-3 URL contract so `computer add url http://127.0.0.1:<port>` and
|
|
4
|
+
* the fake-LLM e2e can drive a real remote without a third-party host.
|
|
5
|
+
*
|
|
6
|
+
* GET /computer
|
|
7
|
+
* GET /computer/screenshot?maxWidth=&format=
|
|
8
|
+
* GET /computer/text
|
|
9
|
+
* POST /computer/input
|
|
10
|
+
* WS /computer/frames?fps=4 (optional; HTTP poll still works)
|
|
11
|
+
*/
|
|
12
|
+
import { WebSocketServer } from 'ws';
|
|
13
|
+
/** 1×1 SOF0 JPEG — enough for protocol tests; not a displayable photo. */
|
|
14
|
+
export const COMPUTER_DEMO_JPEG = Uint8Array.of(0xff, 0xd8, 0xff, 0xc0, 0x00, 0x0b, 0x08, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x11, 0x00, 0xff, 0xd9);
|
|
15
|
+
export class ComputerDemoState {
|
|
16
|
+
seq = 0;
|
|
17
|
+
events = [];
|
|
18
|
+
descriptor() {
|
|
19
|
+
return {
|
|
20
|
+
id: 'url:demo',
|
|
21
|
+
kind: 'url',
|
|
22
|
+
title: 'computer-demo',
|
|
23
|
+
size: { width: 1, height: 1 },
|
|
24
|
+
state: 'live',
|
|
25
|
+
capabilities: {
|
|
26
|
+
screenshot: true,
|
|
27
|
+
text: true,
|
|
28
|
+
frames: 'poll',
|
|
29
|
+
keyboard: true,
|
|
30
|
+
mouse: 'absolute',
|
|
31
|
+
scroll: true,
|
|
32
|
+
exec: false,
|
|
33
|
+
inputAllowed: true,
|
|
34
|
+
},
|
|
35
|
+
pid: null,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
screenshot() {
|
|
39
|
+
this.seq += 1;
|
|
40
|
+
return {
|
|
41
|
+
bytes: COMPUTER_DEMO_JPEG,
|
|
42
|
+
mime: 'image/jpeg',
|
|
43
|
+
width: 1,
|
|
44
|
+
height: 1,
|
|
45
|
+
seq: this.seq,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
text() {
|
|
49
|
+
if (this.events.length === 0)
|
|
50
|
+
return 'demo\n';
|
|
51
|
+
return `${this.events.map((event) => event.type).join('\n')}\n`;
|
|
52
|
+
}
|
|
53
|
+
input(events) {
|
|
54
|
+
this.events.push(...events);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function isInputEvent(value) {
|
|
58
|
+
if (typeof value !== 'object' || value === null)
|
|
59
|
+
return false;
|
|
60
|
+
if (!('type' in value) || typeof value.type !== 'string')
|
|
61
|
+
return false;
|
|
62
|
+
return (value.type === 'mousemove' ||
|
|
63
|
+
value.type === 'button' ||
|
|
64
|
+
value.type === 'click' ||
|
|
65
|
+
value.type === 'scroll' ||
|
|
66
|
+
value.type === 'drag' ||
|
|
67
|
+
value.type === 'key' ||
|
|
68
|
+
value.type === 'text' ||
|
|
69
|
+
value.type === 'wait');
|
|
70
|
+
}
|
|
71
|
+
export function registerComputerDemoRoutes(app, state) {
|
|
72
|
+
app.get('/computer', (_req, res) => {
|
|
73
|
+
res.json(state.descriptor());
|
|
74
|
+
});
|
|
75
|
+
app.get('/computer/screenshot', (_req, res) => {
|
|
76
|
+
const shot = state.screenshot();
|
|
77
|
+
res.set('Content-Type', shot.mime);
|
|
78
|
+
res.set('Cache-Control', 'no-store');
|
|
79
|
+
res.send(Buffer.from(shot.bytes));
|
|
80
|
+
});
|
|
81
|
+
app.get('/computer/text', (_req, res) => {
|
|
82
|
+
res.type('text/plain').send(state.text());
|
|
83
|
+
});
|
|
84
|
+
app.post('/computer/input', (req, res) => {
|
|
85
|
+
if (!Array.isArray(req.body)) {
|
|
86
|
+
res.status(400).json({ error: 'expected ComputerInputEvent[]' });
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const events = [];
|
|
90
|
+
for (const item of req.body) {
|
|
91
|
+
if (!isInputEvent(item)) {
|
|
92
|
+
res.status(400).json({ error: 'invalid ComputerInputEvent' });
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
events.push(item);
|
|
96
|
+
}
|
|
97
|
+
state.input(events);
|
|
98
|
+
res.json({ ok: true, count: events.length });
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
export function createComputerDemoFrameServer(state) {
|
|
102
|
+
const wss = new WebSocketServer({ noServer: true });
|
|
103
|
+
wss.on('connection', (ws, request) => {
|
|
104
|
+
const url = new URL(request.url ?? '/', 'http://computer-demo.local');
|
|
105
|
+
const fps = Math.min(8, Math.max(1, Number(url.searchParams.get('fps')) || 4));
|
|
106
|
+
const tick = () => {
|
|
107
|
+
if (ws.readyState !== ws.OPEN)
|
|
108
|
+
return;
|
|
109
|
+
const shot = state.screenshot();
|
|
110
|
+
ws.send(shot.bytes);
|
|
111
|
+
};
|
|
112
|
+
tick();
|
|
113
|
+
const timer = setInterval(tick, Math.round(1000 / fps));
|
|
114
|
+
ws.on('close', () => clearInterval(timer));
|
|
115
|
+
});
|
|
116
|
+
return wss;
|
|
117
|
+
}
|
|
118
|
+
/** True when this upgrade was the demo frames socket. */
|
|
119
|
+
export function handleComputerDemoUpgrade(pathname, request, socket, head, wss) {
|
|
120
|
+
if (pathname !== '/computer/frames')
|
|
121
|
+
return false;
|
|
122
|
+
wss.handleUpgrade(request, socket, head, (ws) => {
|
|
123
|
+
wss.emit('connection', ws, request);
|
|
124
|
+
});
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
@@ -27,6 +27,7 @@ import { FileRegistry } from './cloud/registry-file.js';
|
|
|
27
27
|
import { runResume } from './cloud/resume.js';
|
|
28
28
|
import { runStart } from './cloud/start.js';
|
|
29
29
|
import { registerCloudStatusEndpoint } from './cloud-status.js';
|
|
30
|
+
import { ComputerDemoState, createComputerDemoFrameServer, handleComputerDemoUpgrade, registerComputerDemoRoutes, } from './computer-demo.js';
|
|
30
31
|
import { ElectronAppAlreadyRunningError, ElectronOverlayInjector, launchElectronApp, resolveOverlayThinBridge, } from './electron-controller.js';
|
|
31
32
|
import { getElectronAppPorts } from './electron-runtime.js';
|
|
32
33
|
import { ElectronTrayFollower } from './electron-tray-follower.js';
|
|
@@ -580,9 +581,11 @@ function rejectUpgradeUnauthorized(socket, reason) {
|
|
|
580
581
|
* `Sec-WebSocket-Protocol` token = socket destroyed before
|
|
581
582
|
* `wss.emit('connection', ...)` ever fires. Legacy modes (dev / electron /
|
|
582
583
|
* serve-only / hosted) pass `null` to keep same-origin behavior unchanged.
|
|
583
|
-
* `/licks-ws` is loopback-only and stays ungated.
|
|
584
|
+
* `/licks-ws` is loopback-only and stays ungated. When `--computer-demo` is
|
|
585
|
+
* on, `/computer/frames` is the optional push socket for the URL adapter
|
|
586
|
+
* reference server (HTTP poll still works without the upgrade).
|
|
584
587
|
*/
|
|
585
|
-
function attachCdpUpgradeRouting(server, wss, lickWss, bridgeToken) {
|
|
588
|
+
function attachCdpUpgradeRouting(server, wss, lickWss, bridgeToken, computerDemoWss = null) {
|
|
586
589
|
server.on('upgrade', (request, socket, head) => {
|
|
587
590
|
const { pathname } = new URL(request.url, `http://${request.headers.host}`);
|
|
588
591
|
if (pathname === '/cdp') {
|
|
@@ -607,6 +610,9 @@ function attachCdpUpgradeRouting(server, wss, lickWss, bridgeToken) {
|
|
|
607
610
|
lickWss.emit('connection', ws, request);
|
|
608
611
|
});
|
|
609
612
|
}
|
|
613
|
+
else if (computerDemoWss) {
|
|
614
|
+
handleComputerDemoUpgrade(pathname, request, socket, head, computerDemoWss);
|
|
615
|
+
}
|
|
610
616
|
});
|
|
611
617
|
}
|
|
612
618
|
/**
|
|
@@ -1256,6 +1262,9 @@ async function main() {
|
|
|
1256
1262
|
// trusted process so the in-browser agent can request, but never fabricate,
|
|
1257
1263
|
// an approval. Loopback-only; selects a backend by environment at call time.
|
|
1258
1264
|
registerSudoApproveEndpoint(app);
|
|
1265
|
+
const computerDemo = RUNTIME_FLAGS.computerDemo ? new ComputerDemoState() : null;
|
|
1266
|
+
if (computerDemo)
|
|
1267
|
+
registerComputerDemoRoutes(app, computerDemo);
|
|
1259
1268
|
// Fetch proxy — forwards cross-origin requests from the browser to bypass CORS,
|
|
1260
1269
|
// injecting/unmasking secrets and streaming the response with a UTF-8-safe scrub.
|
|
1261
1270
|
registerFetchProxyRoute(app, { secretProxy });
|
|
@@ -1267,7 +1276,8 @@ async function main() {
|
|
|
1267
1276
|
// 4. CDP WebSocket proxy at /cdp — noServer mode so we own the upgrade
|
|
1268
1277
|
// handler routing for /cdp and /licks-ws.
|
|
1269
1278
|
const wss = createCdpWebSocketServer(state.bridgeToken);
|
|
1270
|
-
|
|
1279
|
+
const computerDemoWss = computerDemo ? createComputerDemoFrameServer(computerDemo) : null;
|
|
1280
|
+
attachCdpUpgradeRouting(server, wss, lickWss, state.bridgeToken, computerDemoWss);
|
|
1271
1281
|
const cdpCtx = {
|
|
1272
1282
|
wss,
|
|
1273
1283
|
secretProxy,
|
|
@@ -24,6 +24,8 @@ export interface CliRuntimeFlags {
|
|
|
24
24
|
installCli: boolean;
|
|
25
25
|
/** Target directory for --install-cli (default: OS-idiomatic, see install-cli.ts) */
|
|
26
26
|
installDir: string | null;
|
|
27
|
+
/** Mount GET/POST `/computer` + optional WS `/computer/frames` (URL adapter reference). */
|
|
28
|
+
computerDemo: boolean;
|
|
27
29
|
/**
|
|
28
30
|
* Mount table: OS-folder → SLICC-target mappings served over the local
|
|
29
31
|
* host-FS bridge (`/api/hostfs`) and auto-mounted by the webapp at boot,
|
|
@@ -92,6 +92,7 @@ function createDefaultFlags() {
|
|
|
92
92
|
hosted: false,
|
|
93
93
|
installCli: false,
|
|
94
94
|
installDir: null,
|
|
95
|
+
computerDemo: false,
|
|
95
96
|
mounts: [],
|
|
96
97
|
};
|
|
97
98
|
}
|
|
@@ -122,6 +123,10 @@ function applySimpleFlag(flags, arg) {
|
|
|
122
123
|
flags.installCli = true;
|
|
123
124
|
return true;
|
|
124
125
|
}
|
|
126
|
+
if (arg === '--computer-demo') {
|
|
127
|
+
flags.computerDemo = true;
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
125
130
|
return false;
|
|
126
131
|
}
|
|
127
132
|
/** `--flag=value` style flags that consume no following token. Returns whether handled. */
|