sliccy 6.232.2 → 6.233.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 +2 -2
- package/dist/node-server/chrome-launch.d.ts +2 -0
- package/dist/node-server/chrome-launch.js +11 -1
- package/dist/node-server/index.js +1 -0
- package/dist/ui/.vite/manifest.json +282 -278
- package/dist/ui/assets/{SKILL-DfQfFV0B.js → SKILL-BcBnRJhU.js} +1 -1
- package/dist/ui/assets/{SKILL-CDWYTQKl.js → SKILL-BsfbaE8W.js} +1 -1
- package/dist/ui/assets/SKILL-Dk6kide7.js +1 -0
- package/dist/ui/assets/account-store-8pdjPGXe.js +2 -0
- package/dist/ui/assets/account-store-CYgyHiaa.js +1 -0
- package/dist/ui/assets/adobe-B4FKwftW.js +2 -0
- package/dist/ui/assets/adobe-C195sVCf.js +1 -0
- package/dist/ui/assets/agent-help-B-gfDDn0.js +103 -0
- package/dist/ui/assets/agent-images-DaBj3QYk.js +3 -0
- package/dist/ui/assets/{agent-panels-DjIYV1_V.js → agent-panels-C968Kub9.js} +1 -1
- package/dist/ui/assets/{agent-tools-BzWhYeEw.js → agent-tools-WbCq5rUh.js} +1 -1
- package/dist/ui/assets/{almost-bash-shell-headless-Cr-YVYbG.js → almost-bash-shell-headless-Dw8ck55P.js} +91 -175
- package/dist/ui/assets/{apply-layout-6y46WnDn.js → apply-layout-CHfVXHPf.js} +1 -1
- package/dist/ui/assets/{apps-DkZBf0EF.js → apps-CyIXX0a_.js} +1 -1
- package/dist/ui/assets/{azure-openai-DaGSGR26.js → azure-openai-BK1yv0Sn.js} +1 -1
- package/dist/ui/assets/{azure-openai-BPC12gr1.js → azure-openai-DSJ0iXpS.js} +1 -1
- package/dist/ui/assets/{backend-hostfs-CyFczT_n.js → backend-hostfs-DmMZ1Vnt.js} +1 -1
- package/dist/ui/assets/{capability-BsxMoeMg.js → capability-6V-AYPSJ.js} +2 -2
- package/dist/ui/assets/{cdp-Cp2ul1Xk.js → cdp-DZ3LtBJ6.js} +1 -1
- package/dist/ui/assets/{cerebras-BEDSf9Z2.js → cerebras-B0XnBx_U.js} +1 -1
- package/dist/ui/assets/{cerebras-CAFxbAAH.js → cerebras-Cq1Qi0CT.js} +1 -1
- package/dist/ui/assets/{client-DWx5wn8j.js → client-D5zdJCVT.js} +1 -1
- package/dist/ui/assets/{codemode-tool-BH0jhnKf.js → codemode-tool-FcP24sWd.js} +1 -1
- package/dist/ui/assets/{composer-speech-BveIVRUb.js → composer-speech-DEsTTJ-6.js} +1 -1
- package/dist/ui/assets/{connect-surface-ogo7Rv2Y.js → connect-surface-k_k7uu5o.js} +1 -1
- package/dist/ui/assets/{connection-manager-E3P4E4Le.js → connection-manager-D0LxHiWb.js} +1 -1
- package/dist/ui/assets/core-C1m4D34S.js +36 -0
- package/dist/ui/assets/{core-4boN-CgI.js → core-Cx9N3lmn.js} +1 -1
- package/dist/ui/assets/{cost-command-C_1fldSP.js → cost-command-BUgEVZCe.js} +8 -1
- package/dist/ui/assets/{directed-approval-BoAbm3IJ.js → directed-approval-OOf3I27R.js} +1 -1
- package/dist/ui/assets/{discovery-preference-D1cUzn0M.js → discovery-preference-D8GXCv8i.js} +1 -1
- package/dist/ui/assets/{emscripten-vfs-hook-BJh0QvlC.js → emscripten-vfs-hook-D4rVkB6b.js} +1 -1
- package/dist/ui/assets/emscripten-vfs-hook-t32dk5w7.js +1 -0
- package/dist/ui/assets/{ensure-speech-assets-BvTOfAF9.js → ensure-speech-assets-CB-6d53s.js} +1 -1
- package/dist/ui/assets/{extension-ops-Ded2__AC.js → extension-ops-OtrqWANJ.js} +1 -1
- package/dist/ui/assets/{float-topology-DIH6ujZe.js → float-topology-COIC4j_U.js} +1 -1
- package/dist/ui/assets/{float-topology-C9GjBEv-.js → float-topology-C_iRKPQK.js} +1 -1
- package/dist/ui/assets/{follower-navigate-watcher-T4oXQ4JA.js → follower-navigate-watcher-C0CP4-Mn.js} +1 -1
- package/dist/ui/assets/{frozen-archive-writer-Ce13R-3M.js → frozen-archive-writer-CyeRvZhz.js} +1 -1
- package/dist/ui/assets/{fs-Bl4-flxd.js → fs-BUK-3Ws8.js} +2 -2
- package/dist/ui/assets/{fs-CXdlfm9I.js → fs-CKSBDyCr.js} +1 -1
- package/dist/ui/assets/{gelatiere-unit-Cr5wm_Kg.js → gelatiere-unit-hpxCLHdA.js} +1 -1
- package/dist/ui/assets/{github-DELN8f0M.js → github-D9GRCOqL.js} +1 -1
- package/dist/ui/assets/{github-DBc_eOzS.js → github-DeZ2nDzS.js} +2 -2
- package/dist/ui/assets/{github-auth-D7J-BVhH.js → github-auth-CSG4xZUZ.js} +1 -1
- package/dist/ui/assets/{github-copilot-D7W2tJJz.js → github-copilot-C8hgcCJI.js} +1 -1
- package/dist/ui/assets/{github-copilot-kJD8s7l4.js → github-copilot-C_JPU6a6.js} +1 -1
- package/dist/ui/assets/{github-install-Day-m9Yr.js → github-install-HX3c8n0G.js} +1 -1
- package/dist/ui/assets/{github-zip-xnabOe2b.js → github-zip-CUIsX5nN.js} +1 -1
- package/dist/ui/assets/{go-driver-xTPUsgZ_.js → go-driver-CR9PpQn8.js} +1 -1
- package/dist/ui/assets/{guest-tool-gate-B3vJ2BGb.js → guest-tool-gate-CXdRgkkb.js} +1 -1
- package/dist/ui/assets/{hear-CdqoxknG.js → hear-DRUm5iko.js} +1 -1
- package/dist/ui/assets/{help-B1T-o5sr.js → help-aKSKYJF6.js} +1 -1
- package/dist/ui/assets/host-command-CwRNpVLr.js +28 -0
- package/dist/ui/assets/image-processor-BlI3KRoz.js +1 -0
- package/dist/ui/assets/{installer-Ce066nKI.js → installer-CbjJjnwg.js} +1 -1
- package/dist/ui/assets/{interrupted-work-recovery-6m6BONfO.js → interrupted-work-recovery-DSX617ic.js} +1 -1
- package/dist/ui/assets/{ipk-mamba-fKbu5XN4.js → ipk-mamba-BRxsK-p_.js} +1 -1
- package/dist/ui/assets/{js-realm-worker-DluaIwWT.js → js-realm-worker-C2c5HlJC.js} +3 -3
- package/dist/ui/assets/{jsh-executor-D3BSRLFA.js → jsh-executor-of_S2nM9.js} +2 -2
- package/dist/ui/assets/jsh-runtime-extensions-vA6JAYXY.js +1 -0
- package/dist/ui/assets/{kernel-worker-M218S0e9.js → kernel-worker-Dv0441oU.js} +59 -59
- package/dist/ui/assets/{lick-ws-bridge-B0AqTybW.js → lick-ws-bridge-Kx2ffoDz.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-k53YqSiL.js → lick-ws-bridge-qlQXS6DR.js} +1 -1
- package/dist/ui/assets/{live-session-curation-DtmCoogl.js → live-session-curation-DvwwvftT.js} +1 -1
- package/dist/ui/assets/{live-session-snapshot-CzH5VyWG.js → live-session-snapshot-Bk5UWNkV.js} +1 -1
- package/dist/ui/assets/live-vfs-fs-DgvdNXkS.js +1 -0
- package/dist/ui/assets/{local-llm-BYFR1wMj.js → local-llm-BcjMnaVa.js} +1 -1
- package/dist/ui/assets/{local-llm-CUTYS-aa.js → local-llm-Ce-14HNh.js} +1 -1
- package/dist/ui/assets/main-DE492KKE.js +22 -0
- package/dist/ui/assets/{main-cherry-DnV2EtCt.js → main-cherry-EDccG98N.js} +1 -1
- package/dist/ui/assets/{mcp-command-BoGKsJ--.js → mcp-command-h2MzRFNc.js} +13 -13
- package/dist/ui/assets/{memory-curation-seam-CLon6-0I.js → memory-curation-seam-CgwkDbcz.js} +1 -1
- package/dist/ui/assets/{memory-health-B8JnBJZW.js → memory-health-qcXv-xah.js} +1 -1
- package/dist/ui/assets/{memory-write-execute-D-eE12zu.js → memory-write-execute-CSIbnXAd.js} +1 -1
- package/dist/ui/assets/{merge-folded-cost-into-frozen-Cv81Es_U.js → merge-folded-cost-into-frozen-a8XFtHLd.js} +1 -1
- package/dist/ui/assets/{mount-H5EgXlPD.js → mount-BdStwj8s.js} +2 -3
- package/dist/ui/assets/{mount-DvlJAh57.js → mount-DROut-7D.js} +1 -1
- package/dist/ui/assets/{mount-bridge-client-DEndUe7m.js → mount-bridge-client-DEvjkZ1N.js} +1 -1
- package/dist/ui/assets/{mount-bridge-client-DZrU_hNA.js → mount-bridge-client-DTSknauQ.js} +1 -1
- package/dist/ui/assets/new-session-DSaHd_sm.js +2 -0
- package/dist/ui/assets/oauth-bootstrap-CxyjlKpR.js +2 -0
- package/dist/ui/assets/oauth-service-GpUOM3Aw.js +1 -0
- package/dist/ui/assets/oauth-service-MWzqRq2q.js +1 -0
- package/dist/ui/assets/{onboarding-orchestrator-Ca--LViR.js → onboarding-orchestrator-BOFuJPrP.js} +1 -1
- package/dist/ui/assets/{openai-codex-CVRDijVn.js → openai-codex-CS23S3lJ.js} +1 -1
- package/dist/ui/assets/{openai-codex-BUS22UvF.js → openai-codex-DIPqOcNT.js} +1 -1
- package/dist/ui/assets/{openrouter-CNys7eBu.js → openrouter-BdryGS-Z.js} +1 -1
- package/dist/ui/assets/{openrouter-DaY_PmOO.js → openrouter-BwY0foMm.js} +1 -1
- package/dist/ui/assets/{openrouter-free-DLoVUZYB.js → openrouter-free-Bmq0Tdc_.js} +1 -1
- package/dist/ui/assets/{openrouter-free-CLv2guAs.js → openrouter-free-vIKTI0NQ.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-YeISAtXv.js → openrouter-oauth-BoMzKA4Q.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-Dy_qCqcN.js → openrouter-oauth-PagZ0gy-.js} +1 -1
- package/dist/ui/assets/{opfs-mount-cbV6hAiM.js → opfs-mount-B745o1Vc.js} +1 -1
- package/dist/ui/assets/{page-approval-service-BbEv1dSc.js → page-approval-service-ja6kjLj8.js} +1 -1
- package/dist/ui/assets/panel-rpc-CR9k3qWE.js +1 -0
- package/dist/ui/assets/panel-rpc-accessor-B4BfPLSo.js +1 -0
- package/dist/ui/assets/panel-rpc-handlers-DSgDRrll.js +2 -0
- package/dist/ui/assets/panel-rpc-sLZo8PD-.js +1 -0
- package/dist/ui/assets/{panelize-shell-zDW06WQ9.js → panelize-shell-C3-v83mm.js} +1 -1
- package/dist/ui/assets/{pi-edit-execution-Blmvyfch.js → pi-edit-execution-V3MrIdPo.js} +1 -1
- package/dist/ui/assets/port-bridge-client-B-gpiOVR.js +1 -0
- package/dist/ui/assets/port-bridge-client-DAxhsvxm.js +1 -0
- package/dist/ui/assets/process-worker-CXxOMS23.js +3 -0
- package/dist/ui/assets/{provider-MDIcOntz.js → provider-CfiSsvHh.js} +2 -2
- package/dist/ui/assets/{provider-L54O0b3P.js → provider-DQ129t3D.js} +1 -1
- package/dist/ui/assets/{provider-settings-5llrPtIb.js → provider-settings-nWfCs5Ea.js} +1 -1
- package/dist/ui/assets/provider-store-access-CJWXzYBJ.js +1 -0
- package/dist/ui/assets/provider-store-access-CR58tiUx.js +1 -0
- package/dist/ui/assets/{providers-DSWENZNJ.js → providers-CNz3-2Qt.js} +1 -1
- package/dist/ui/assets/providers-DGOyFpbk.js +2 -0
- package/dist/ui/assets/{proxied-fetch-Cplb-Tee.js → proxied-fetch-4VBgrEIu.js} +2 -2
- package/dist/ui/assets/{proxied-fetch-CoZ8jHud.js → proxied-fetch-F-dCBEfh.js} +1 -1
- package/dist/ui/assets/proxied-fetch-raw-DQ0-xn2O.js +2 -0
- package/dist/ui/assets/{proxied-fetch-raw-Cb_C44Cy.js → proxied-fetch-raw-DfWAMMUJ.js} +1 -1
- package/dist/ui/assets/{py-live-vfs-BY0JeFky.js → py-live-vfs-CPGqrKx-.js} +1 -1
- package/dist/ui/assets/{py-live-vfs-JNkDkEB1.js → py-live-vfs-CUwZTYN6.js} +1 -1
- package/dist/ui/assets/{py-realm-worker-DpNkD8fW.js → py-realm-worker-BoJbWJja.js} +1 -1
- package/dist/ui/assets/{quick-llm-D6Wr4TyZ.js → quick-llm-gqL6GOn2.js} +1 -1
- package/dist/ui/assets/{realm-inprocess-s4ChFcqp.js → realm-inprocess-COtsY7eU.js} +3 -3
- package/dist/ui/assets/{realm-unhandled-rejections-BAiAaesU.js → realm-unhandled-rejections-CrLvjtWH.js} +1 -1
- package/dist/ui/assets/{realm-unhandled-rejections-Bju1msWn.js → realm-unhandled-rejections-DrxZsN27.js} +1 -1
- package/dist/ui/assets/{recovery-screen-DLmHqUsS.js → recovery-screen-NUMzwXs1.js} +1 -1
- package/dist/ui/assets/{remote-terminal-view-WWBk5qFn.js → remote-terminal-view-CMH4RPeK.js} +2 -2
- package/dist/ui/assets/{require-guards-BX-XDJnh.js → require-guards-DnafTLJr.js} +1 -1
- package/dist/ui/assets/{rest-ops-d6LSiWDZ.js → rest-ops-B7gv04VP.js} +1 -1
- package/dist/ui/assets/{rest-ops-DyAkn44S.js → rest-ops-j0P6ql7f.js} +1 -1
- package/dist/ui/assets/{restore-DTlvxkxE.js → restore-BW04JrCn.js} +1 -1
- package/dist/ui/assets/{run-CB6rAQZ1.js → run-BAmXlRlW.js} +1 -1
- package/dist/ui/assets/{run-cvQKad0O.js → run-BRFnmkzR.js} +1 -1
- package/dist/ui/assets/{run-D6sdPJoQ.js → run-BYyvGPll.js} +4 -4
- package/dist/ui/assets/{run-D31zYxYd.js → run-C-sCRUCs.js} +1 -1
- package/dist/ui/assets/{run-dFcc7q5n.js → run-CCpJxTqO.js} +1 -1
- package/dist/ui/assets/{run-9qBbvzkW.js → run-D6LxdCnL.js} +1 -1
- package/dist/ui/assets/{run-DyYNRU6R.js → run-DPyr8Wk2.js} +1 -1
- package/dist/ui/assets/run-LPGSSK42.js +18 -0
- package/dist/ui/assets/{run-Bo0rlg63.js → run-X1F_4y7X.js} +2 -2
- package/dist/ui/assets/{run-B6qzuQBC.js → run-chEfqfQu.js} +1 -1
- package/dist/ui/assets/{run-CRimkv1y.js → run-n9LfcCvg.js} +3 -3
- package/dist/ui/assets/{screen-DVI9ujIL.js → screen-_l91vr17.js} +1 -1
- package/dist/ui/assets/{screencapture-run-DRiSGUJ9.js → screencapture-run-DXkhPPQJ.js} +1 -1
- package/dist/ui/assets/{script-catalog-CqkljCRS.js → script-catalog-WaCMvXY3.js} +1 -1
- package/dist/ui/assets/{secret-env-DQjPh_hw.js → secret-env-z9SReONx.js} +1 -1
- package/dist/ui/assets/secret-topology-hMRoGGjt.js +1 -0
- package/dist/ui/assets/{secrets-bridge-client-CWv2_nw7.js → secrets-bridge-client-D734Xx8G.js} +1 -1
- package/dist/ui/assets/{secrets-bridge-client-EgBSROu5.js → secrets-bridge-client-GOCzDscb.js} +1 -1
- package/dist/ui/assets/{session-command-memory-Df5JM1jy.js → session-command-memory-B-i2MtND.js} +2 -2
- package/dist/ui/assets/{session-jsonl-DyYSpiR3.js → session-jsonl-CJdXG7pm.js} +1 -1
- package/dist/ui/assets/{session-jsonl-CRg856OA.js → session-jsonl-Cs_xRfDy.js} +1 -1
- package/dist/ui/assets/{session-search-index-CxeajBYy.js → session-search-index-BYv4B9UC.js} +1 -1
- package/dist/ui/assets/{setup-feature-flags-remote-B7EvE5WG.js → setup-feature-flags-remote-DsuSGakO.js} +1 -1
- package/dist/ui/assets/{setup-model-catalog-CojuaZXL.js → setup-model-catalog-BaFKNYjt.js} +1 -1
- package/dist/ui/assets/signed-fetch-DeDG40wV.js +1 -0
- package/dist/ui/assets/{silent-renew-backoff-BJestVXs.js → silent-renew-backoff-OCJFe0Op.js} +1 -1
- package/dist/ui/assets/slicc-version-DvppAoNW.js +1 -0
- package/dist/ui/assets/snapshot-D6YGbggk.js +5 -0
- package/dist/ui/assets/{snapshot-features-CttxuZRc.js → snapshot-features-Dw5v6SoZ.js} +1 -1
- package/dist/ui/assets/{soundscape-CGPRupA1.js → soundscape-SKGGt8Ci.js} +1 -1
- package/dist/ui/assets/{speak-CwevwRGG.js → speak-BX-VG7dD.js} +1 -1
- package/dist/ui/assets/sprinkle-manager-9aHjoMGN.js +1 -0
- package/dist/ui/assets/{sprinkle-renderer-DQe4_ykh.js → sprinkle-renderer-B3wcPwka.js} +1 -1
- package/dist/ui/assets/{ssh-_x-LG4bh.js → ssh-BWPgnSgg.js} +1 -1
- package/dist/ui/assets/state-Tykh4Vum.js +42 -0
- package/dist/ui/assets/{store-Ct6T8_vC.js → store-Mw1jky9b.js} +1 -1
- package/dist/ui/assets/{store-N9OMacY2.js → store-wiEGJ_43.js} +1 -1
- package/dist/ui/assets/stored-accounts-ChNHYF68.js +1 -0
- package/dist/ui/assets/stored-accounts-Cx83FZwe.js +1 -0
- package/dist/ui/assets/structured-output-tool-BrnZ-LJ8.js +1 -0
- package/dist/ui/assets/{sudo-CVBz7Hub.js → sudo-BQPW9CSS.js} +3 -3
- package/dist/ui/assets/{sudo-fs-mI-V4QkM.js → sudo-fs-D88yRk1b.js} +1 -1
- package/dist/ui/assets/sudo-refusal-DVwTXFRE.js +1 -0
- package/dist/ui/assets/{supervisor-d43UzH63.js → supervisor-DkdAvZH9.js} +1 -1
- package/dist/ui/assets/{sync-dialog-DFEhMgmr.js → sync-dialog-Bybysfag.js} +1 -1
- package/dist/ui/assets/{transformers-env-BVWRXJj7.js → transformers-env-BCKpGSnX.js} +1 -1
- package/dist/ui/assets/{tray-leader-DjSQqusA.js → tray-leader-B4FO4RQ2.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-CZ1DjZNm.js → tray-leave-runtime-DMl8c2Gz.js} +1 -1
- package/dist/ui/assets/{tray-runtime-config-ConrTcOf.js → tray-runtime-config-CBx5P3dS.js} +1 -1
- package/dist/ui/assets/{tray-sidecar-CjNuAx0_.js → tray-sidecar-OcV5qb0h.js} +1 -1
- package/dist/ui/assets/{turn-journal-Fz2l3QO4.js → turn-journal-EgGBqAjY.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-j5O1jpk-.js → upgrade-detection-DU_DX3QI.js} +1 -1
- package/dist/ui/assets/{upskill-lick-skip-D9rXamQ_.js → upskill-lick-skip-u8HuNUy0.js} +1 -1
- package/dist/ui/assets/{voice-reply-DDhoSB_B.js → voice-reply-B_6bmqsD.js} +1 -1
- package/dist/ui/assets/{wasi-runtime-Bc01Bdaa.js → wasi-runtime-DDblHDjy.js} +1 -1
- package/dist/ui/assets/{wasm-programs-DPZtEzCA.js → wasm-programs-Bd5YaoqY.js} +1 -1
- package/dist/ui/assets/wc-attach-CBOfJjYR.js +13 -0
- package/dist/ui/assets/{wc-browser-H9i1tYs2.js → wc-browser-CSr9r__R.js} +1 -1
- package/dist/ui/assets/{wc-computers-CZVMeb1a.js → wc-computers-BEXthrMe.js} +1 -1
- package/dist/ui/assets/{wc-detached-C3w-EnO2.js → wc-detached-Cbm7H-x5.js} +1 -1
- package/dist/ui/assets/wc-extension-DspZRCam.js +2 -0
- package/dist/ui/assets/wc-follower-BNZ4sR7A.js +17 -0
- package/dist/ui/assets/{wc-follower-oauth-Dpz6kwmb.js → wc-follower-oauth-V1bzfjx5.js} +1 -1
- package/dist/ui/assets/{wc-gelatiere-DUqsrBPY.js → wc-gelatiere-CNb9fe-2.js} +1 -1
- package/dist/ui/assets/{wc-live-DPQeITgQ.js → wc-live-CKe14UhT.js} +6 -6
- package/dist/ui/assets/wc-nav-BLx_lYcl.js +2 -0
- package/dist/ui/assets/{wc-onboarding-nZO6VPxy.js → wc-onboarding-C2RS0W29.js} +2 -2
- package/dist/ui/assets/{wc-permissions-BncUPK23.js → wc-permissions-CPcpTMv_.js} +2 -2
- package/dist/ui/assets/wc-placeholder-OUaJ_3B8.js +4 -0
- package/dist/ui/assets/{wc-secret-request-BAhfbP9J.js → wc-secret-request-VG_Tn3mW.js} +1 -1
- package/dist/ui/assets/{wc-settings-BnJRa_R9.js → wc-settings-C5v1HZXM.js} +3 -3
- package/dist/ui/assets/{wc-shell-BzYq0ESt.js → wc-shell-BcFO-uxW.js} +5 -5
- package/dist/ui/assets/{wc-shortcut-config-Dyjf2Wvu.js → wc-shortcut-config-DZGtX3og.js} +1 -1
- package/dist/ui/assets/wc-sprinkles-CVoXJ20N.js +2 -0
- package/dist/ui/assets/{wc-transcript-export-Bk8nLIfQ.js → wc-transcript-export-YQXk7qbS.js} +2 -2
- package/dist/ui/assets/{wc-tray-BEN7TcmV.js → wc-tray-BWgQxTQY.js} +4 -4
- package/dist/ui/assets/welcome-detection-DtBPdXpG.js +1 -0
- package/dist/ui/assets/whisper-session-O3Gzp4bw.js +2 -0
- package/dist/ui/assets/{xai-grok-DgGOq90R.js → xai-grok-DRR_8B5L.js} +1 -1
- package/dist/ui/assets/{xai-grok-B11VgjUo.js → xai-grok-DUHWrBsy.js} +1 -1
- package/dist/ui/index.html +11 -10
- package/dist/ui/packages/webapp/index.html +11 -10
- package/package.json +1 -1
- package/dist/ui/assets/SKILL-B4YYagrM.js +0 -1
- package/dist/ui/assets/account-store-B857f9Kw.js +0 -2
- package/dist/ui/assets/account-store-C8W_QB2_.js +0 -1
- package/dist/ui/assets/adobe-C2NABnF7.js +0 -2
- package/dist/ui/assets/adobe-hInWK-RG.js +0 -1
- package/dist/ui/assets/approval-timeout-CeQbGMnv.js +0 -1
- package/dist/ui/assets/core-ButDwsf2.js +0 -36
- package/dist/ui/assets/emscripten-vfs-hook-CYIDH-AN.js +0 -1
- package/dist/ui/assets/host-command-Dn-Z4AbC.js +0 -28
- package/dist/ui/assets/jsh-runtime-extensions-DiQ9SvKe.js +0 -1
- package/dist/ui/assets/live-vfs-fs-Y4sN9OvN.js +0 -1
- package/dist/ui/assets/main-CxkrqswY.js +0 -22
- package/dist/ui/assets/new-session-DW8XeVxp.js +0 -2
- package/dist/ui/assets/oauth-bootstrap-BNFgdYgz.js +0 -2
- package/dist/ui/assets/oauth-service-B-vKfxAF.js +0 -1
- package/dist/ui/assets/oauth-service-Bx_Dy3GC.js +0 -1
- package/dist/ui/assets/panel-rpc-D3EPRnmw.js +0 -1
- package/dist/ui/assets/panel-rpc-DW7W4w6_.js +0 -1
- package/dist/ui/assets/panel-rpc-handlers-BNEtTGhT.js +0 -2
- package/dist/ui/assets/port-bridge-client-BmVU5J9w.js +0 -1
- package/dist/ui/assets/port-bridge-client-D_erEovW.js +0 -2
- package/dist/ui/assets/process-worker-BKgTk6Wd.js +0 -3
- package/dist/ui/assets/provider-store-access-nagoWWb1.js +0 -1
- package/dist/ui/assets/provider-store-access-wdRnmqbS.js +0 -1
- package/dist/ui/assets/providers-jygoVQBo.js +0 -2
- package/dist/ui/assets/proxied-fetch-raw-Di1Dm8fV.js +0 -2
- package/dist/ui/assets/run-BKv0GiVy.js +0 -17
- package/dist/ui/assets/secret-topology-Dm_PZRZx.js +0 -1
- package/dist/ui/assets/signed-fetch-C1-081oc.js +0 -1
- package/dist/ui/assets/slicc-version-B0t7wsNA.js +0 -1
- package/dist/ui/assets/snapshot-Cb2BkTl8.js +0 -5
- package/dist/ui/assets/sprinkle-manager-nQ3MRYze.js +0 -1
- package/dist/ui/assets/state-CRuL5BZp.js +0 -42
- package/dist/ui/assets/structured-output-tool-BDaIhclx.js +0 -1
- package/dist/ui/assets/wc-attach-VJjD6tJb.js +0 -13
- package/dist/ui/assets/wc-extension-BaXTVkwH.js +0 -2
- package/dist/ui/assets/wc-follower-B2K4I2jj.js +0 -17
- package/dist/ui/assets/wc-nav-DKr3h3r5.js +0 -2
- package/dist/ui/assets/wc-placeholder-D8F3dotr.js +0 -4
- package/dist/ui/assets/wc-sprinkles-qa2Yk76b.js +0 -2
- package/dist/ui/assets/welcome-detection-DUIoHDqJ.js +0 -1
- package/dist/ui/assets/whisper-session-xH7lWXSW.js +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e,t}from"./base64-BPBW1Gzr.js";import{n}from"./stored-accounts-Cx83FZwe.js";import{t as r}from"./mime-types-D7IV6i7k.js";import{t as i}from"./types-D8gIX-W-.js";import{n as a}from"./multipart-form-data-DopbgwRR.js";const o=`https://api.aem.live`;function s(e){let t=e.match(/^aem:\/\/([^/]+)\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid AEM source '${e}' — expected aem://org/site[/path]`);return{org:t[1],site:t[2],path:(t[3]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}function c(e){if(!e)return``;let t=Date.parse(e);return Number.isNaN(t)?``:String(t)}function l(e){let t=Date.parse(e??``);return Number.isNaN(t)?0:t}function u(e){return e.map(e=>e[`content-type`]===`application/folder`||e.name.endsWith(`/`)?{name:e.name.replace(/\/+$/,``),kind:`directory`}:{name:e.name,kind:`file`,size:e.size,etag:c(e[`last-modified`]),lastModified:l(e[`last-modified`])})}var d=class{kind=`aem`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=s(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??5242880,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new i(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toSourcePath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`),r=`/${this.parsed.org}/sites/${this.parsed.site}/source`;return n?`${r}/${n}`:r}toListPath(e){return`${this.toSourcePath(e)}/`}request(e,t,n){return this.transport({method:e,path:t,origin:o,headers:n?.headers,body:n?.body})}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r=await this.request(`GET`,this.toSourcePath(t));if(r.status===404)throw await this.cache.invalidateBody(t),new i(`ENOENT`,`no such file`,e);if(r.status===401||r.status===403)throw new i(`EACCES`,`aem access denied`,e);if(r.status>=400)throw new i(`EIO`,`aem readFile failed: ${r.status}`,e);let a=new Uint8Array(await r.arrayBuffer());if(a.byteLength>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);return await this.cache.putBody(t,a,c(r.headers.get(`last-modified`))),a}async assertUnchanged(e,t,n){if(!n)return;let r=await this.request(`HEAD`,this.toSourcePath(t));if(r.status===404)return;if(r.status>=400)throw new i(`EIO`,`aem precondition HEAD failed: ${r.status}`,e);let a=c(r.headers.get(`last-modified`));if(a&&a!==n)throw await this.cache.invalidateBody(t),new i(`EBUSY`,`remote modified since last read — re-read and retry`,e)}async writeFile(e,t){if(this.assertOpen(e),t.byteLength>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let n=this.toMountRelative(e),r=await this.cache.getBody(n);await this.assertUnchanged(e,n,r?.etag??``);let a=await this.request(`PUT`,this.toSourcePath(n),{body:t});if(a.status===401||a.status===403)throw new i(`EACCES`,`aem write denied`,e);if(a.status>=400)throw new i(`EIO`,`aem writeFile failed: ${a.status}`,e);await this.cache.invalidateBody(n);let o=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(o)}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.request(`GET`,this.toListPath(t));if(r.status===404)throw new i(`ENOENT`,`no such directory`,e);if(r.status===401||r.status===403)throw new i(`EACCES`,`aem access denied`,e);if(r.status>=400)throw new i(`EIO`,`aem list failed: ${r.status}`,e);let a=u(await r.json());return await this.cache.putListing(t,a),a}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e);if(t===``)return{kind:`directory`,size:0,mtime:0};let n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.size,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),a=r.pop()??``,o=r.join(`/`),s=await this.cache.getListing(o),c=(s&&!this.cache.isStale(s.cachedAt)?s.entries:await this.readDirQuietly(o))?.find(e=>e.name===a);if(!c)throw new i(`ENOENT`,`no such file or directory`,e);return c.kind===`directory`?{kind:`directory`,size:0,mtime:c.lastModified??0}:{kind:`file`,size:c.size??0,mtime:c.lastModified??0,etag:c.etag??``}}async readDirQuietly(e){try{return await this.readDir(e)}catch{return null}}async mkdir(e){}async remove(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.request(`DELETE`,this.toSourcePath(t));if(n.status===404)throw new i(`ENOENT`,`no such file`,e);if(n.status===401||n.status===403)throw new i(`EACCES`,`aem delete denied`,e);if(n.status>=400)throw new i(`EIO`,`aem delete failed: ${n.status}`,e);await this.cache.invalidateBody(t);let r=t.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(r)}async refresh(e){this.assertOpen(`/`);let t={added:[],removed:[],changed:[],unchanged:0,errors:[]},n=[``];for(;n.length>0;){let e=n.pop();try{await this.refreshDir(e,t,n)}catch(n){t.errors.push({path:e,message:n instanceof Error?n.message:String(n)})}}return e?.bodies&&await this.refreshBodies(t),t}async classifyFile(e,t,n){let r=await this.cache.getBody(e);r?t&&r.etag!==t?(await this.cache.invalidateBody(e),n.changed.push(e)):n.unchanged++:n.added.push(e)}async refreshDir(e,t,n){let r=await this.request(`GET`,this.toListPath(e));if(r.status===404){await this.cache.putListing(e,[]);return}if(r.status>=400){t.errors.push({path:e,message:`list failed: ${r.status}`});return}let i=u(await r.json());for(let r of i){let i=e?`${e}/${r.name}`:r.name;r.kind===`directory`?n.push(i):await this.classifyFile(i,r.etag??``,t)}await this.cache.putListing(e,i)}async refreshBodies(e){for(let t of e.changed)try{await this.readFile(t)}catch(n){e.errors.push({path:t,message:n instanceof Error?n.message:String(n)})}}describe(){return{displayName:`${this.parsed.org}/${this.parsed.site}${this.parsed.path?`/${this.parsed.path}`:``}`,source:this.source,profile:this.profile}}async close(){this.closed||=!0}};function f(e,t,n){let r=a([{name:`data`,file:{bytes:n,filename:e,contentType:t}}]);return{contentType:r.contentType,body:r.bytes}}function p(e){return e.split(`/`).pop()||`data`}function m(e){let t=e.match(/^da:\/\/([^/]+)\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid DA source '${e}' — expected da://org/repo[/path]`);return{org:t[1],repo:t[2],path:(t[3]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var h=class{kind=`da`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=m(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??5242880,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new i(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toSourcePath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/source/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}toListPath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/list/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let a=await this.transport({method:`GET`,path:this.toSourcePath(t),headers:r});if(a.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(a.status===404)throw await this.cache.invalidateBody(t),new i(`ENOENT`,`no such file`,e);if(a.status===401||a.status===403)throw new i(`EACCES`,`da access denied`,e);if(a.status>=400)throw new i(`EIO`,`da readFile failed: ${a.status}`,e);let o=a.headers.get(`content-length`),s=o?Number(o):void 0;if(s!==void 0&&s>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let c=new Uint8Array(await a.arrayBuffer());if(c.byteLength>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let l=a.headers.get(`etag`)??``,u=l.startsWith(`W/`)?l.slice(2):l;return await this.cache.putBody(t,c,u),c}async writeFile(e,t){if(this.assertOpen(e),t.byteLength>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let n=this.toMountRelative(e),a=await this.cache.getBody(n),o=f(p(e),r(e),t),s={"content-type":o.contentType,"content-length":String(o.body.byteLength)};a?.etag?s[`if-match`]=a.etag.startsWith(`W/`)?a.etag.slice(2):a.etag:a||(s[`if-none-match`]=`*`);let c=()=>this.transport({method:`POST`,path:this.toSourcePath(n),headers:s,body:o.body}),l,u=1;try{l=await c()}catch{u=2,l=await c()}if(l.status===412){if(u===2){let r=await this.transport({method:`HEAD`,path:this.toSourcePath(n)});if(r.status>=400)throw new i(`EIO`,`da reconcile HEAD failed: ${r.status}`,e);let a=r.headers.get(`etag`)??``;await this.cache.putBody(n,t,a);let o=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(o);return}await this.cache.invalidateBody(n);try{await this.readFile(e)}catch{}throw new i(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(l.status===401||l.status===403)throw new i(`EACCES`,`da write denied`,e);if(l.status>=400)throw new i(`EIO`,`da writeFile failed: ${l.status}`,e);let d=l.headers.get(`etag`)??``;await this.cache.putBody(n,t,d);let m=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(m)}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.transport({method:`GET`,path:this.toListPath(t)});if(r.status===404)throw new i(`ENOENT`,`no such directory`,e);if(r.status>=400)throw new i(`EIO`,`da list failed: ${r.status}`,e);let a=(await r.json()).map(e=>e.ext?{name:`${e.name}.${e.ext}`,kind:`file`,etag:e.etag,lastModified:e.lastModified}:{name:e.name,kind:`directory`,lastModified:e.lastModified});return await this.cache.putListing(t,a),a}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.size,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),a=r.pop()??``,o=r.join(`/`),s=await this.cache.getListing(o);if(s&&!this.cache.isStale(s.cachedAt)){let t=s.entries.find(e=>e.name===a);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??s.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??s.cachedAt};if(!t)throw new i(`ENOENT`,`no such file or directory`,e)}let c=await this.transport({method:`HEAD`,path:this.toSourcePath(t)});if(c.status===200){let e=Number(c.headers.get(`content-length`)??`0`),t=c.headers.get(`etag`)??``,n=c.headers.get(`last-modified`),r=n?Date.parse(n):0;if(s){let n=s.entries.map(n=>n.name===a&&n.kind===`file`?{...n,size:e,etag:t,lastModified:r}:n);await this.cache.putListing(o,n)}return{kind:`file`,size:e,mtime:r,etag:t}}if(c.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new i(`ENOENT`,`no such file or directory`,e)}throw new i(`EIO`,`da stat failed: ${c.status}`,e)}async mkdir(e){}async remove(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.transport({method:`DELETE`,path:this.toSourcePath(t)});if(n.status===404)throw new i(`ENOENT`,`no such file`,e);if(n.status===401||n.status===403)throw new i(`EACCES`,`da delete denied`,e);if(n.status>=400)throw new i(`EIO`,`da delete failed: ${n.status}`,e);await this.cache.invalidateBody(t);let r=t.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(r)}async refresh(e){this.assertOpen(`/`);let t={added:[],removed:[],changed:[],unchanged:0,errors:[]},n=[``];for(;n.length>0;){let e=n.pop();try{await this.refreshDir(e,t,n)}catch(n){t.errors.push({path:e,message:n instanceof Error?n.message:String(n)})}}return e?.bodies&&await this.refreshBodies(t),t}async classifyFile(e,t,n){let r=await this.cache.getBody(e);r?t&&r.etag!==t?(await this.cache.invalidateBody(e),n.changed.push(e)):n.unchanged++:n.added.push(e)}async refreshDir(e,t,n){let r=await this.transport({method:`GET`,path:this.toListPath(e)});if(r.status>=400){t.errors.push({path:e,message:`list failed: ${r.status}`});return}let i=await r.json(),a=[];for(let r of i)if(r.ext){let n=e?`${e}/${r.name}.${r.ext}`:`${r.name}.${r.ext}`;a.push({name:`${r.name}.${r.ext}`,kind:`file`,etag:r.etag,lastModified:r.lastModified}),await this.classifyFile(n,r.etag,t)}else a.push({name:r.name,kind:`directory`}),n.push(e?`${e}/${r.name}`:r.name);await this.cache.putListing(e,a)}async refreshBodies(e){for(let t of e.changed)try{await this.readFile(t)}catch(n){e.errors.push({path:t,message:n instanceof Error?n.message:String(n)})}}describe(){return{displayName:`${this.parsed.org}/${this.parsed.repo}${this.parsed.path?`/${this.parsed.path}`:``}`,source:this.source,profile:this.profile}}async close(){this.closed||=!0}};function g(e){let t=e.match(/^s3:\/\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid S3 source '${e}' — expected s3://bucket[/prefix]`);return{bucket:t[1],prefix:(t[2]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var _=class{kind=`s3`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=g(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??26214400,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new i(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toS3Key(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``);return[this.parsed.prefix,t].filter(e=>e.length>0).join(`/`)}toMountRelativeKey(e){return this.parsed.prefix?e.slice(this.parsed.prefix.length+1):e}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let a=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:this.toS3Key(t),headers:r});if(a.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(a.status===404)throw await this.cache.invalidateBody(t),new i(`ENOENT`,`no such file`,e);if(a.status===401||a.status===403)throw new i(`EACCES`,`s3 access denied`,e);if(a.status>=400)throw new i(`EIO`,`s3 readFile failed: ${a.status}`,e);let o=a.headers.get(`content-length`),s=o?Number(o):void 0;if(s!==void 0&&s>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes (${s} > ${this.maxBodyBytes})`,e);let c=new Uint8Array(await a.arrayBuffer());if(c.byteLength>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let l=a.headers.get(`etag`)??``;return await this.cache.putBody(t,c,l),c}async writeFile(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t.byteLength>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let r=await this.cache.getBody(n),a={"content-type":`application/octet-stream`,"content-length":String(t.byteLength)};r?a[`if-match`]=r.etag:a[`if-none-match`]=`*`;let o=()=>this.transport({method:`PUT`,bucket:this.parsed.bucket,key:this.toS3Key(n),headers:a,body:t}),s,c=1;try{s=await o()}catch{c=2,s=await o()}if(s.status===412){if(c===2){let r=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status>=400)throw new i(`EIO`,`s3 reconcile HEAD failed: ${r.status}`,e);let a=r.headers.get(`etag`)??``;await this.cache.putBody(n,t,a);let o=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(o);return}await this.cache.invalidateBody(n);try{await this.readFile(e)}catch{}throw new i(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(s.status===401||s.status===403)throw new i(`EACCES`,`s3 write denied`,e);if(s.status>=400)throw new i(`EIO`,`s3 writeFile failed: ${s.status}`,e);let l=s.headers.get(`etag`)??``;await this.cache.putBody(n,t,l);let u=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(u)}async listObjectsV2(){let e=[],t;do{let n={"list-type":`2`};this.parsed.prefix&&(n.prefix=`${this.parsed.prefix}/`),t&&(n[`continuation-token`]=t);let r=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:``,query:n});if(r.status>=400)throw new i(`EIO`,`s3 list failed: ${r.status}`,`/`);let a=await r.text(),o=this.parseListingXml(a);e.push(...o.contents),t=o.nextContinuationToken}while(t);return e}parseListingXml(e){let t=[];for(let n of e.matchAll(/<Contents>([\s\S]*?)<\/Contents>/g)){let e=n[1],r=e.match(/<Key>([^<]+)<\/Key>/)?.[1]??``,i=e.match(/<ETag>([^<]+)<\/ETag>/)?.[1]??``,a=e.match(/<Size>([^<]+)<\/Size>/)?.[1]??`0`,o=e.match(/<LastModified>([^<]+)<\/LastModified>/)?.[1]??``;t.push({key:r,etag:i,size:Number(a),lastModified:o?Date.parse(o):0})}return{contents:t,nextContinuationToken:e.match(/<IsTruncated>([^<]+)<\/IsTruncated>/)?.[1]===`true`?e.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/)?.[1]:void 0}}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.listObjectsV2(),i=this.groupByDir(r);for(let[e,t]of i)await this.cache.putListing(e,t);return i.get(t)??[]}groupByDir(e){let t=new Map,n=e=>(t.has(e)||t.set(e,[]),t.get(e));n(``);for(let t of e){let e=this.toMountRelativeKey(t.key).split(`/`),r=e.pop();n(e.join(`/`)).push({name:r,kind:`file`,size:t.size,etag:t.etag,lastModified:t.lastModified});let i=``;for(let t of e){let e=i;i=i?`${i}/${t}`:t;let r=n(e);r.find(e=>e.name===t&&e.kind===`directory`)||r.push({name:t,kind:`directory`}),n(i)}}return t}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.body.byteLength,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),a=r.pop()??``,o=r.join(`/`),s=await this.cache.getListing(o);if(s&&!this.cache.isStale(s.cachedAt)){let t=s.entries.find(e=>e.name===a);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??s.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??s.cachedAt};if(!t)throw new i(`ENOENT`,`no such file or directory`,e)}let c=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(t)});if(c.status===200){let e=Number(c.headers.get(`content-length`)??`0`),t=c.headers.get(`etag`)??``,n=c.headers.get(`last-modified`);return{kind:`file`,size:e,mtime:n?Date.parse(n):0,etag:t}}if(c.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new i(`ENOENT`,`no such file or directory`,e)}throw new i(`EIO`,`s3 stat failed: ${c.status}`,e)}async refresh(e){this.assertOpen(`/`);let t=await this.listObjectsV2(),n=new Set(t.map(e=>this.toMountRelativeKey(e.key))),r=new Map(t.map(e=>[this.toMountRelativeKey(e.key),e.etag])),i={added:[],removed:[],changed:[],unchanged:0,errors:[]};for(let e of n){let t=await this.cache.getBody(e),n=r.get(e);t?t.etag===n?i.unchanged++:(await this.cache.invalidateBody(e),i.changed.push(e)):i.added.push(e)}let a=this.groupByDir(t);for(let[e,t]of a)await this.cache.putListing(e,t);if(e?.bodies)for(let e of i.changed)try{await this.readFile(e)}catch(t){i.errors.push({path:e,message:t instanceof Error?t.message:String(t)})}return i}async mkdir(e){}async remove(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t?.recursive)throw new i(`EINVAL`,`recursive remove not yet supported on S3`,e);let r=await this.transport({method:`DELETE`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status===404)throw new i(`ENOENT`,`no such file`,e);if(r.status===401||r.status===403)throw new i(`EACCES`,`s3 delete denied`,e);if(r.status>=400)throw new i(`EIO`,`s3 delete failed: ${r.status}`,e);await this.cache.invalidateBody(n);let a=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a)}describe(){return{displayName:this.parsed.prefix?`${this.parsed.bucket}/${this.parsed.prefix}`:this.parsed.bucket,source:this.source,profile:this.profile}}async close(){this.closed||=!0}},v=class extends Error{constructor(e){super(e),this.name=`ProfileNotConfiguredError`}};async function y(){let e=n().find(e=>e.providerId===`adobe`);if(!e?.accessToken)throw new v(`No Adobe IMS account found. Log in via Settings → Providers → Adobe first.`);return{identity:`adobe-ims`,getBearerToken:async()=>e.accessToken}}let b;function x(e){b=e}function S(){return b}const C=t,w=e,T=new Set([`invalid_profile`,`invalid_request`,`profile_not_configured`,`fetch_failed`,`internal`]),E=new Set([101,103,204,205,304]);function D(e){if(!e.ok)throw e.errorCode===`profile_not_configured`||e.errorCode===`invalid_profile`?new i(`EACCES`,e.error):e.errorCode===`invalid_request`?new i(`EINVAL`,e.error):e.errorCode===`fetch_failed`||e.errorCode===`internal`||T.has(String(e.errorCode))?new i(`EIO`,e.error):new i(`EINVAL`,`mount transport returned unrecognized errorCode '${e.errorCode}': ${e.error}`);let t;try{t=C(e.bodyBase64)}catch(e){throw new i(`EIO`,`mount transport: response body decode failed: ${e instanceof Error?e.message:String(e)}`)}let n=E.has(e.status)?null:t;return new Response(n,{status:e.status,headers:new Headers(e.headers)})}function O(e,t){return t===void 0?e===`node-rest`?` (SLICC backend at localhost may not be running)`:e===`extension-direct`||e===`extension-delegate`?` (extension service worker not responding)`:``:``}async function k(e){let t=S();if(!t)throw new i(`EIO`,`mount transport unavailable: setMountCapabilityBroker was never called for this float (composition bug — refusing to guess a transport for a privileged sign-and-forward request)`);let n=await t.mounts.signRequest(e);if(!n.ok){let e=`status`in n?n.status:void 0;throw new i(`EIO`,`mount transport failed: ${n.message}${O(t.adapter,e)}`)}return n.value}function A(e){return async t=>D(await k({backend:`s3`,envelope:{profile:e,method:t.method,bucket:t.bucket,key:t.key,query:t.query,headers:t.headers,bodyBase64:t.body?w(t.body):void 0}}))}function j(e){let t=e?.getImsToken??(async()=>(await y()).getBearerToken());return async e=>{let n;try{n=await t()}catch(e){throw new i(`EACCES`,`DA mount: ${e instanceof Error?e.message:String(e)}`)}return D(await k({backend:`da`,envelope:{imsToken:n,method:e.method,path:e.path,origin:e.origin,query:e.query,headers:e.headers,bodyBase64:e.body?w(e.body):void 0}}))}}export{h as a,_ as i,A as n,o,x as r,d as s,j as t};
|
package/dist/ui/assets/{silent-renew-backoff-BJestVXs.js → silent-renew-backoff-OCJFe0Op.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./bridge-protocol-C52CnDIj.js";import{M as e}from"./main-
|
|
1
|
+
import"./bridge-protocol-C52CnDIj.js";import{M as e}from"./main-DE492KKE.js";function t(t){try{let n=new URL(t);return n.searchParams.has(`bridge`)?!0:!e(n.hostname)}catch{return!1}}function n(n,r){let i=t(n.pageHref),a=r();if(i){if(n.configuredRedirectUri){let t=``;try{t=new URL(n.configuredRedirectUri).origin}catch{t=``}if(t&&n.pageOrigin===t){let e=btoa(JSON.stringify({source:`opener`,path:`/auth/callback`,nonce:a}));return{redirectUri:n.configuredRedirectUri,oauthState:e,expectedNonce:a,source:`opener`}}let r=null;try{r=new URL(n.pageHref)}catch{r=null}if(r!==null&&r.protocol===`http:`&&e(r.hostname)&&r.port!==``&&r){let e=parseInt(r.port,10),t=btoa(JSON.stringify({source:`local`,port:e,path:`/auth/callback`,nonce:a}));return{redirectUri:n.configuredRedirectUri,oauthState:t,expectedNonce:a,source:`local`}}}return{redirectUri:`${n.pageOrigin}/auth/callback`,oauthState:btoa(JSON.stringify({source:`opener`,path:`/auth/callback`,nonce:a})),expectedNonce:a,source:`opener`}}let o=n.configuredRedirectUri??`${n.pageOrigin}/auth/callback`,s=parseInt(new URL(n.pageHref).port||`5710`,10);return{redirectUri:o,oauthState:btoa(JSON.stringify({port:s,path:`/auth/callback`,nonce:a})),expectedNonce:a,source:`local`}}var r=3e5;function i(e=r){let t=0;return{async run(n,r=Date.now()){if(r<t)return null;let i=null;try{i=await n()}catch(e){console.debug(`[silent-renew-backoff] renew threw:`,e instanceof Error?e.message:String(e)),i=null}return t=i?0:r+e,i},inCooldown(e=Date.now()){return e<t}}}export{n,t as r,i as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(){return{version:`6.233.0`,releasedAt:`2026-10-01T21:29:26Z`,buildId:`6.233.0-muq1rmto`}}let t=null;function n(e){t=e}function r(){return t}export{e as n,n as r,r as t};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{t as e}from"./panel-rpc-accessor-B4BfPLSo.js";import{m as t}from"./state-Tykh4Vum.js";function n(e,t=``){if(e==null)return t;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`)return String(e);try{return JSON.stringify(e)??t}catch{return String(e)}}function r(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`).replace(/\n/g,`\\n`)}function i(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}const a=[`none`,`presentation`,`generic`,`rootwebarea`],o=[`textbox`,`button`,`link`,`checkbox`,`radio`];function s(e,t){return a.includes(e)?!1:!!t||o.includes(e)}function c(e,t){let n=i(t);return e===`button`&&t?[`button[aria-label="${n}"]`,`button[title="${n}"]`,`[role="button"][aria-label="${n}"]`,`[role="button"][title="${n}"]`,`input[type="button"][value="${n}"]`,`input[type="submit"][value="${n}"]`,`input[type="reset"][value="${n}"]`].join(`, `):e===`link`&&t?`a[aria-label="${n}"], a[title="${n}"], [role="link"][aria-label="${n}"], [role="link"][title="${n}"]`:e===`textbox`?t?`input[aria-label="${n}"], textarea[aria-label="${n}"], [contenteditable][aria-label="${n}"], input[placeholder="${n}"], textarea[placeholder="${n}"], [contenteditable][placeholder="${n}"], input[title="${n}"], textarea[title="${n}"], [contenteditable][title="${n}"]`:`input, textarea, [contenteditable]`:e===`checkbox`?`input[type="checkbox"]`:e===`radio`?`input[type="radio"]`:t?`[aria-label="${n}"], [title="${n}"]`:`[role="${e}"]`}function l(e,t,i,a,o=``,u=``){let d=[],f=n(e.role,`unknown`).toLowerCase(),p=n(e.name),m=n(e.value),h=``;s(f,p)&&(h=u+`e${++a.value}`,e.backendNodeId&&i.set(h,e.backendNodeId),t.set(h,c(f,p)));let g=`${o}- ${f}`;if(p&&(g+=` "${r(p)}"`),h&&(g+=` [ref=${h}]`),m&&(g+=`: "${r(m)}"`),d.push(g),e.children)for(let n of e.children)d.push(...l(n,t,i,a,o+` `,u));return d}async function u(e,t){if(t.appTabId)return;let n=await e.listPages(),r=await d(),i=n.find(e=>e.url.startsWith(r)&&!e.url.includes(`/preview/`));i&&(t.appTabId=i.targetId)}async function d(){if(typeof window<`u`)return window.location.origin;let t=e();if(t)try{let e=await t.call(`page-info`,void 0,{timeoutMs:2e3});if(e.origin)return e.origin}catch{}return`http://localhost:5710`}function f(e,t){return t===e.appTabId}function p(e){let t=e.url.trim(),n=e.title.trim();return n===`Omnibox Popup`||t.startsWith(`chrome://`)||t.startsWith(`chrome-search://`)||t.startsWith(`chrome-untrusted://`)||t.startsWith(`devtools://`)||t.length===0&&/popup$/i.test(n)}function m(e,t){return!f(e,t.targetId)&&!p(t)}async function h(e,n){return await u(e,n),(await t(e)).filter(e=>m(n,e))}function g(e,t){try{let n=new URL(e,t);return n.origin+n.pathname.replace(/\/$/,``)+n.search}catch{return null}}function _(e,t,n,r){let i=g(t,n);return e.find(e=>{if(r.has(e.frameId))return!1;let n=g(e.url);return n!==null&&i!==null?n===i:e.url===t})}async function v(e,t,n,r,i,a,o){try{let s=await e.getAccessibilityTreeForFrame(t),c=new Map,u=new Map,d=l(s,c,u,{value:0},n,r);for(let[e,n]of c)i.set(e,n),o.set(e,t);for(let[e,n]of u)a.set(e,n),o.set(e,t);return d}catch{return[]}}async function y(e,t,n,r,i,a){if(typeof e.getFrameTree!=`function`)return t;try{let o=(await e.getFrameTree()).filter(e=>e.parentFrameId);if(o.length===0)return t;let s=0,c=[],l=new Set;for(let u of t.split(`
|
|
2
|
+
`)){c.push(u);let t=u.match(/^(\s*)- iframe(?=\s|:)/);if(!t)continue;let d=u.match(/:\s*"([^"]+)"\s*$/);if(!d)continue;let f=_(o,d[1],n,l);f&&(l.add(f.frameId),s++,c.push(...await v(e,f.frameId,t[1]+` `,`f${s}`,r,i,a)))}return c.join(`
|
|
3
|
+
`)}catch{return t}}async function b(e,t){let n=await e.evaluate(`JSON.stringify({ url: location.href, title: document.title })`),{url:r,title:i}=JSON.parse(n),a=await e.getAccessibilityTree(),o=new Map,s=new Map,c=new Map,u=l(a,o,s,{value:0}).join(`
|
|
4
|
+
`);return t?.noIframes||(u=await y(e,u,r,o,s,c)),{url:r,title:i,text:u,refToSelector:o,refToBackendNodeId:s,refToFrameId:c}}async function x(e,t,n,r){let{url:i,title:a,text:o,refToSelector:s,refToBackendNodeId:c,refToFrameId:l}=await b(e,r),u={url:i,title:a,refToSelector:s,refToBackendNodeId:c,refToFrameId:l,content:o,timestamp:Date.now()};return t.snapshots.set(n,u),{snapshot:u,output:[`Page URL: ${i}`,`Page Title: ${a}`,``,o].join(`
|
|
5
|
+
`)}}export{x as a,u as i,h as n,n as o,l as r,b as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e}from"./snapshot-
|
|
1
|
+
import{a as e}from"./snapshot-D6YGbggk.js";import{g as t,v as n}from"./state-Tykh4Vum.js";function r(e,t){let n=0,r=e.split(`
|
|
2
2
|
`).filter(e=>{let r=/^( *)- /.exec(e);return!r||r[1].length/2<t||(n++,!1)});return n>0&&r.push(`(${n} node(s) below depth ${t} elided — re-run without --depth for the full tree)`),r.join(`
|
|
3
3
|
`)}async function i(e,t,n){await e.send(`DOM.enable`),await e.send(`Runtime.enable`);let r={};for(let[n,i]of t)if(!n.startsWith(`f`))try{let t=(await e.send(`DOM.resolveNode`,{backendNodeId:i})).object?.objectId;if(!t)continue;let a=(await e.send(`Runtime.callFunctionOn`,{objectId:t,functionDeclaration:`function() {
|
|
4
4
|
const r = this.getBoundingClientRect();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-DDBAeTLF.js";import{et as t}from"./wc-shell-
|
|
1
|
+
import{t as e}from"./logger-DDBAeTLF.js";import{et as t}from"./wc-shell-BcFO-uxW.js";var n=e(`speech:soundscape`),r=`soundscape-enabled`;function i(){try{return localStorage.getItem(r)!==`false`}catch{return!0}}var a=0,o=!1;function s(){a++}function c(){a>0&&a--}function l(){return a>0}function u(e){o=e}function d(){return o}var f=null;function p(){return typeof AudioContext>`u`?null:((!f||f.state===`closed`)&&(f=new AudioContext),f)}function m(e){if(!i()||!l()||d())return;let r=p();if(r)try{r.state===`suspended`&&r.resume(),t(r,e)}catch(e){n.debug(`soundscape cue failed`,e)}}export{s as beginVoiceTurn,c as endVoiceTurn,m as playCue,u as setTtsActive};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/transformers.web-BBJR2ai3.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/kokoro-GYPr9LPo.js","assets/__vite-browser-external-5eBdwsFd.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{n}from"./runtime-env-Dlaokqg1.js";import{t as r}from"./speech-assets-bridge-CFYafE89.js";import{i,n as a,o,r as s,t as c}from"./transformers-env-
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{n}from"./runtime-env-Dlaokqg1.js";import{t as r}from"./speech-assets-bridge-CFYafE89.js";import{i,n as a,o,r as s,t as c}from"./transformers-env-BCKpGSnX.js";var l=t(`speech:espeak`),u=`/workspace/node_modules/espeak-ng/dist/`,d=`espeak-ng.js`,f=`espeak-ng.wasm`;async function p(e,t,n,r){let i=`phonemes.txt`;return(await e({arguments:[`-q`,`-b=1`,`--ipa`,`-v`,n,`--phonout`,i,t],...r?{locateFile:r}:{}})).FS.readFile(i,{encoding:`utf8`}).split(`
|
|
3
3
|
`).map(e=>e.trim()).filter(e=>e.length>0)}function ee(e,t){return async n=>{let r=URL.createObjectURL(new Blob([new Uint8Array(t)],{type:`application/wasm`}));try{let t=e=>e.endsWith(`.wasm`)?r:n.locateFile?.(e)??e;return await e({...n,locateFile:t})}finally{URL.revokeObjectURL(r)}}}function m(e){if(typeof BroadcastChannel>`u`)return Promise.reject(Error(`Cannot read VFS path ${e}: BroadcastChannel unavailable`));let t=new BroadcastChannel(`preview-vfs`),n=`espeak-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise((r,i)=>{let a=e=>{t.removeEventListener(`message`,c),t.close(),e()},o,s=()=>{clearTimeout(o),o=setTimeout(()=>a(()=>i(Error(`ENOENT: ${e} (timed out)`))),3e4)};s();let c=t=>{let c=t.data;if(!(!c||c.id!==n)){if(c.type===`preview-vfs-start`){s();return}if(c.type===`preview-vfs-response`){if(clearTimeout(o),typeof c.error==`string`)a(()=>i(Error(c.error)));else if(c.content instanceof Uint8Array){let e=c.content;a(()=>r(e))}else if(typeof c.content==`string`){let e=c.content;a(()=>r(new TextEncoder().encode(e)))}else a(()=>i(Error(`Empty preview-vfs response for ${e}`)))}}};t.addEventListener(`message`,c),t.postMessage({type:`preview-vfs-read`,id:n,path:e,asText:!1})})}async function te(){let[t,n]=await Promise.all([m(`${u}${d}`),m(`${u}${f}`)]),r=URL.createObjectURL(new Blob([new Uint8Array(t)],{type:`text/javascript`}));try{return{factory:ee((await e(()=>import(r),[])).default,n)}}finally{URL.revokeObjectURL(r)}}var ne=te,h=null;function g(){return h||=ne().then(({factory:e,locateFile:t})=>(l.info(`espeak-ng multilingual phonemizer loaded`),(n,r)=>p(e,n,r,t)),e=>{throw h=null,l.error(`espeak-ng load failed`,e),e}),h}var re=Object.freeze({e:`es`,f:`fr-fr`,i:`it`,h:`hi`,p:`pt-br`});function _(e){return re[e[0]]??null}var ie=Object.freeze({a:`en-us`,b:`en-gb`});function ae(e){return ie[e[0]]??null}function oe(e){let t=e instanceof Error?e.message:String(e);return/Invalid language identifier/i.test(t)&&/Should be one of:\s*\.?\s*$/i.test(t)}var se=RegExp(`(\\s*[${`;:,.!?¡¿—…"«»“”(){}[]`.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}]+\\s*)+`,`g`);function ce(e){let t=[],n=0;for(let r of e.matchAll(se)){let i=r[0],a=r.index??0;n<a&&t.push({punct:!1,text:e.slice(n,a)}),i.length>0&&t.push({punct:!0,text:i}),n=a+i.length}return n<e.length&&t.push({punct:!1,text:e.slice(n)}),t}function le(e){return e.replace(/kəkˈoːɹoʊ/g,`kˈoʊkəɹoʊ`).replace(/kəkˈɔːɹəʊ/g,`kˈəʊkəɹəʊ`).replace(/(?<=[a-zɹrː])(?=hˈʌndɹɪd)/g,` `).replace(/ z(?=[;:,.!?¡¿—…"«»“” ]|$)/g,`z`).trim()}async function ue(e,t,n){let r=ce(e);return le((await Promise.all(r.map(async e=>e.punct?e.text:(await n(e.text,t)).join(` `)))).join(``))}var v=t(`speech:kokoro`),y={a:`en-US`,b:`en-GB`,e:`es-ES`,f:`fr-FR`,i:`it-IT`,h:`hi-IN`,p:`pt-BR`,j:`ja-JP`,z:`zh-CN`},b=new Set([`en-US`,`en-GB`,`es-ES`,`fr-FR`,`it-IT`,`hi-IN`,`pt-BR`]);function x(e){let[t,n]=e.split(`-`);return n?`${t.toLowerCase()}-${n.toUpperCase()}`:t.toLowerCase()}function S(e,t){if(!t)return!1;if(b.has(t))return!0;if(t.includes(`-`))return!1;let n=y[e[0]];return n!==void 0&&b.has(n)&&n.split(`-`)[0].toLowerCase()===t}function de(e){return Object.entries(e).map(([e,t])=>{let n=t.language?x(t.language):y[e[0]];return{id:e,name:t.name||e,lang:n??`en-US`,onDevice:S(e,n),...t.gender?{gender:t.gender}:{}}})}var fe=Object.freeze({ef_dora:{name:`Dora`,gender:`Female`},em_alex:{name:`Alex`,gender:`Male`},em_santa:{name:`Santa`,gender:`Male`},ff_siwis:{name:`Siwis`,gender:`Female`},hf_alpha:{name:`Alpha`,gender:`Female`},hf_beta:{name:`Beta`,gender:`Female`},hm_omega:{name:`Omega`,gender:`Male`},hm_psi:{name:`Psi`,gender:`Male`},if_sara:{name:`Sara`,gender:`Female`},im_nicola:{name:`Nicola`,gender:`Male`},pf_dora:{name:`Dora`,gender:`Female`},pm_alex:{name:`Alex`,gender:`Male`},pm_santa:{name:`Santa`,gender:`Male`},jf_alpha:{name:`Alpha`,gender:`Female`},jf_gongitsune:{name:`Gongitsune`,gender:`Female`},jf_nezumi:{name:`Nezumi`,gender:`Female`},jf_tebukuro:{name:`Tebukuro`,gender:`Female`},jm_kumo:{name:`Kumo`,gender:`Male`},zf_xiaobei:{name:`Xiaobei`,gender:`Female`},zf_xiaoni:{name:`Xiaoni`,gender:`Female`},zf_xiaoxiao:{name:`Xiaoxiao`,gender:`Female`},zf_xiaoyi:{name:`Xiaoyi`,gender:`Female`},zm_yunjian:{name:`Yunjian`,gender:`Male`},zm_yunxi:{name:`Yunxi`,gender:`Male`},zm_yunxia:{name:`Yunxia`,gender:`Male`},zm_yunyang:{name:`Yunyang`,gender:`Male`}});function C(e){let t={...e};for(let[e,n]of Object.entries(fe))e in t||(t[e]=n);return de(t)}var w=`style_text_to_speech_2`,T=`StyleTextToSpeech2Model`;function pe(e){return e?.model_type===w&&(!Array.isArray(e.architectures)||e.architectures.length===0)&&(e.architectures=[T]),e}var E=Symbol.for(`slicc.kokoro.style-tts2-arch-shim`);function me(e){let t=e?.AutoConfig,n=t?.from_pretrained;if(!t||typeof n!=`function`){v.debug(`style_text_to_speech_2 shim skipped: AutoConfig.from_pretrained unavailable`);return}if(n[E])return;let r=async(...e)=>{let r=await n.apply(t,e),i=r?.model_type===w&&(!Array.isArray(r.architectures)||r.architectures.length===0);return pe(r),i&&v.debug(`style_text_to_speech_2 architectures injected for "${String(e[0])}": [${T}]`),r};r[E]=!0,t.from_pretrained=r,v.debug(`style_text_to_speech_2 architecture shim installed on AutoConfig.from_pretrained`)}async function D(e,t,n,r,i,a){let o=await ue(t,n,a),s=e.tokenizer,{input_ids:c}=s(o,{truncation:!0}),l=await e.generate_from_ids(c,{voice:r,...i?{speed:i}:{}});return{audio:l.audio,sampleRate:l.sampling_rate}}var he=/(?<=[.!?。!?…])\s+|\n{2,}/u;function O(e,t){let n=t??he,r=e.split(n).map(e=>e.trim()).filter(e=>e.length>0),i=e.trim();return r.length>0?r:i?[i]:[]}var k=null,A=`idle`,j=null,M=null;function N(){return A}function P(){return j}function F(){return M}function I(e){return k||=(A=`loading`,L(e).then(e=>(A=`ready`,M=e,e),e=>{throw A=`failed`,k=null,v.error(`kokoro load failed`,e),e})),k}async function L(t){let n=await e(()=>import(`./transformers.web-BBJR2ai3.js`),__vite__mapDeps([0,1,2]));a(n.env),me(n),await c(i),await s();let{KokoroTTS:r,TextSplitterStream:l}=await e(async()=>{let{KokoroTTS:e,TextSplitterStream:t}=await import(`./kokoro-GYPr9LPo.js`);return{KokoroTTS:e,TextSplitterStream:t}},__vite__mapDeps([3,1,4,0,2])),u=o(),d=typeof navigator<`u`&&`gpu`in navigator,f=await r.from_pretrained(i,{device:d?`webgpu`:`wasm`,dtype:d?`fp32`:`q8`,progress_callback:e=>{if(e?.file){if(e.status===`progress`)u.update(e.file,e.loaded??0,e.total??0);else if(e.status===`done`)u.complete(e.file);else return;j=u.snapshot(),t?.(j)}}});v.info(`kokoro ready`,{model:i,device:d?`webgpu`:`wasm`});let p=C(f.voices);return{async synthesize(e,t){let r=t?.voice??`af_heart`,i=_(r);if(i){let n=await g();return D(f,e,i,r,t?.speed,n)}try{let r=performance.now(),i=await f.generate(e,{...t?.voice?{voice:t.voice}:{},...t?.speed?{speed:t.speed}:{}}),a=i.audio;return v.info(`kokoro synthesize`,{elapsedMs:Math.round(performance.now()-r),chars:e.length,audioSeconds:Math.round(a.length/i.sampling_rate*100)/100,numThreads:n.env.backends?.onnx?.wasm?.numThreads}),{audio:a,sampleRate:i.sampling_rate}}catch(n){let i=await R(n,r);if(!i)throw n;return D(f,e,i.lang,r,t?.speed,i.phonemize)}},async*synthesizeStream(e,t){let r=t?.voice??`af_heart`,i=_(r);if(i){let n=await g();for(let a of O(e,t?.splitPattern))yield await D(f,a,i,r,t?.speed,n);return}let a={...t?.voice?{voice:t.voice}:{},...t?.speed?{speed:t.speed}:{}},o=new l;if(t?.splitPattern){let n=e.split(t.splitPattern).map(e=>e.trim()).filter(e=>e.length>0);o.push(...n)}else o.push(e);o.close();try{let t=performance.now(),r=0,i=0,s=0;for await(let e of f.stream(o,a)){let t=e.audio.audio;r+=1,i+=t.length,s=e.audio.sampling_rate,yield{audio:t,sampleRate:s}}v.info(`kokoro synthesizeStream`,{elapsedMs:Math.round(performance.now()-t),chunks:r,chars:e.length,audioSeconds:s?Math.round(i/s*100)/100:0,numThreads:n.env.backends?.onnx?.wasm?.numThreads})}catch(n){let i=await R(n,r);if(!i)throw n;for(let n of O(e,t?.splitPattern))yield await D(f,n,i.lang,r,t?.speed,i.phonemize)}},voices:()=>p}}async function R(e,t){if(!oe(e))return null;let n=ae(t);if(!n)return null;try{let e=await g();return v.warn(`kokoro bundled phonemizer reported no languages; phonemizing English with the staged espeak-ng`,{voiceId:t,lang:n}),{lang:n,phonemize:e}}catch(e){return v.warn(`staged espeak-ng unavailable, cannot recover English synthesis`,{error:String(e)}),null}}var z=44,B=16,V=1,H=B/8;function U(e,t,n){for(let r=0;r<n.length;r++)e.setUint8(t+r,n.charCodeAt(r))}function ge(e){let t=Math.max(-1,Math.min(1,e));return Math.round(t<0?t*32768:t*32767)}function _e(e){if(e.length===0)throw Error(`wav-encode: at least one PCM chunk is required`);let t=e[0].sampleRate;if(!Number.isFinite(t)||t<=0)throw Error(`wav-encode: invalid sample rate ${t}`);let n=0;for(let r of e){if(r.sampleRate!==t)throw Error(`wav-encode: mixed sample rates (${r.sampleRate} vs ${t}) — resample upstream`);n+=r.audio.length}let r=n*V*H,i=new ArrayBuffer(z+r),a=new DataView(i);U(a,0,`RIFF`),a.setUint32(4,36+r,!0),U(a,8,`WAVE`),U(a,12,`fmt `),a.setUint32(16,16,!0),a.setUint16(20,1,!0),a.setUint16(22,V,!0),a.setUint32(24,t,!0),a.setUint32(28,t*V*H,!0),a.setUint16(32,2,!0),a.setUint16(34,B,!0),U(a,36,`data`),a.setUint32(40,r,!0);let o=z;for(let t of e)for(let e=0;e<t.audio.length;e++)a.setInt16(o,ge(t.audio[e]),!0),o+=H;return new Uint8Array(i)}var W=t(`speech:speak`),G=2e4;function K(e){return e.toLowerCase().startsWith(`en`)}function ve(e,t){if(!t.ready)return`webspeech`;let n=e=>e.onDevice&&(K(e.lang)||t.nonEnglishOnDevice);if(e.voice){let r=t.voices.find(t=>t.id===e.voice);return r&&n(r)?`kokoro`:`webspeech`}let r=(e.lang?e.lang.split(`-`)[0]:`en`).toLowerCase();return t.voices.some(e=>e.lang.split(`-`)[0].toLowerCase()===r&&n(e))?`kokoro`:`webspeech`}function ye(e,t){if(!e||K(e))return;let n=e.split(`-`)[0].toLowerCase();return t.find(e=>e.onDevice&&e.lang.split(`-`)[0].toLowerCase()===n)?.id}var be=48;function xe(e){let t=e;return t=t.replace(/```[\s\S]*?```/g,` `),t=t.replace(/~~~[\s\S]*?~~~/g,` `),t=t.replace(/(?:```|~~~)[\s\S]*$/,` `),t=t.replace(/!\[([^\]]*)\]\([^)]*\)/g,`$1`),t=t.replace(/\[([^\]]+)\]\([^)]*\)/g,`$1`),t=t.replace(/`([^`]*)`/g,(e,t)=>t.length>be?` `:t),t=t.replace(/<[^>\n]+>/g,` `),t=t.replace(/^[ \t]{0,3}#{1,6}[ \t]+/gm,``),t=t.replace(/^[ \t]*>[ \t]?/gm,``),t=t.replace(/^[ \t]*(?:[-*+]|\d+[.)])[ \t]+/gm,``),t=t.replace(/[*_~]{1,3}([^*_~]+)[*_~]{1,3}/g,`$1`),t=t.replace(/\s+/g,` `).trim(),t.length>G&&(t=`${t.slice(0,G).replace(/\s+\S*$/,``)}…`),t}var q=n;function Se(e){return e.onDevice&&(K(e.lang)||!q())}function J(){return F()?.voices().map(e=>({...e,onDevice:Se(e)}))??[]}async function Y(){if(typeof speechSynthesis>`u`)return[];let e=speechSynthesis.getVoices();return e.length>0||typeof speechSynthesis.addEventListener!=`function`?e:new Promise(e=>{let t=()=>{clearTimeout(r),speechSynthesis.removeEventListener(`voiceschanged`,n),e(speechSynthesis.getVoices())},n=()=>t(),r=setTimeout(t,2e3);speechSynthesis.addEventListener(`voiceschanged`,n)})}async function Ce(e){let t=e.split(`-`)[0]?.toLowerCase();return t?J().some(e=>e.onDevice&&e.lang.split(`-`)[0].toLowerCase()===t)?!0:(await Y()).some(e=>e.lang.split(`-`)[0].toLowerCase()===t):!1}var X;function we(e){X=e}function Z(){let e=P();return{state:N(),...e?{loaded:e.loaded,total:e.total,etaSeconds:e.etaSeconds}:{}}}async function Te(){try{q()||await r({instanceId:X})}catch(e){W.warn(`kokoro asset staging failed; trying already-present weights`,e)}try{await I()}catch(e){W.warn(`kokoro warmup load failed`,e)}}function Q(){return Te(),Z()}var $=null;function Ee(){return(!$||$.state===`closed`)&&($=new AudioContext),$}async function De(e,t,n=1){let r=Ee();r.state===`suspended`&&await r.resume();let i=r.createBuffer(1,e.length,t);i.copyToChannel(new Float32Array(e),0);let a=r.createBufferSource();a.buffer=i;let o=r.createGain();o.gain.value=n,a.connect(o),o.connect(r.destination),await new Promise(e=>{a.onended=()=>e(),a.start()})}async function Oe(e){if(typeof speechSynthesis>`u`)throw Error(`speechSynthesis is unavailable in this realm`);let t=await Y();return new Promise((n,r)=>{let i=new SpeechSynthesisUtterance(e.text);if(e.lang!==void 0&&(i.lang=e.lang),e.rate!==void 0&&(i.rate=e.rate),e.pitch!==void 0&&(i.pitch=e.pitch),e.volume!==void 0&&(i.volume=e.volume),e.voice){let n=t.find(t=>t.name===e.voice);n&&(i.voice=n)}else if(e.lang){let n=e.lang.split(`-`)[0].toLowerCase(),r=t.find(e=>e.lang.split(`-`)[0].toLowerCase()===n);r&&(i.voice=r)}i.onend=()=>n(),i.onerror=e=>r(Error(`speak: ${e.error||`utterance failed`}`)),speechSynthesis.speak(i)})}async function ke(e){let t=F(),n=t?.voices()??[];if(ve(e,{ready:t!==null,voices:n,nonEnglishOnDevice:!q()})===`kokoro`&&t){let r=e.voice??ye(e.lang,n),i=0;try{let n=t.synthesizeStream(e.text,{...r?{voice:r}:{},...e.rate?{speed:e.rate}:{}});for await(let t of n)await De(t.audio,t.sampleRate,e.volume),i++;return{engine:`kokoro`}}catch(e){if(i>0)return W.warn(`kokoro stream failed mid-playback; stopping`,e),{engine:`kokoro`};W.warn(`kokoro synthesis failed; falling back to webspeech`,e)}}return await Oe(e),{engine:`webspeech`}}async function Ae(e){let t=F();if(!t)throw Error(`on-device voice not ready — run say --warmup and retry once it reports ready`);if(e.lang&&!e.lang.toLowerCase().startsWith(`en`))throw Error(`-o writes WAV via the on-device voice, which is English-only (got ${e.lang})`);if(e.voice&&!t.voices().map(e=>e.id).includes(e.voice))throw Error(`-o writes WAV via the on-device voice; "${e.voice}" is a Web Speech voice. Pick a kokoro voice (e.g. af_heart) or omit -v.`);let n=[],r=t.synthesizeStream(e.text,{...e.voice?{voice:e.voice}:{},...e.rate?{speed:e.rate}:{}});for await(let e of r)n.push({audio:e.audio,sampleRate:e.sampleRate});if(n.length===0)throw Error(`kokoro produced no audio (text is empty after sentence split?)`);return _e(n)}export{Ce as hasVoiceForLang,Z as kokoroStatus,J as kokoroVoicesIfReady,Q as kokoroWarmup,we as setSpeakAssetsInstanceId,ke as speak,xe as speechTextFromMarkdown,Ae as synthesizeToWav};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./logger-DDBAeTLF.js";import{a as t}from"./feature-flags-DvsApnS-.js";import{r as n,t as r}from"./sprinkle-renderer-B3wcPwka.js";import{n as i,t as a}from"./panel-rpc-accessor-B4BfPLSo.js";import{s as o}from"./telemetry-B0sKnLBU.js";import{t as s}from"./permissions-surface-registry-CilCRwhh.js";import{n as c,t as l}from"./bounded-walk-BjxKWNqp.js";import"./sprinkle-instances-B8n7h-oP.js";var u=[`/workspace`,`/shared`,`/scoops`,`/home`],d=[`/shared/sprinkles`],f=6,p=500,m=new Set([`connect-llm`,`welcome`]);function h(e){return m.has(e)?!0:e===`suggestions`&&!t(`memory-v2`)}async function g(e){let t=new Map;for(let n of[...d,...u])await e.exists(n)&&await _(e,n,t);return t}async function _(e,t,n){let r=c(e,t,{maxDepth:f,maxDirs:p,skip:l});for await(let t of r){if(!t.endsWith(`.shtml`))continue;let r=v(t);if(!h(r)&&!n.has(r)){let i;try{i=await e.readFile(t,{encoding:`utf-8`})??``}catch{i=``}n.set(r,{name:r,path:t,title:y(i,r),autoOpen:b(i),icon:x(i)})}}}function v(e){let t=e.split(`/`).pop()??e;return t.endsWith(`.shtml`)?t.slice(0,-6):t}function y(e,t){let n=e.match(/data-sprinkle-title=["']([^"']+)["']/);if(n)return n[1];let r=e.match(/<title>([^<]+)<\/title>/i);return r?r[1].trim():t}function b(e){return/data-sprinkle-autoopen\b/.test(e)}function x(e){let t=/<link\b/gi,n;for(;(n=t.exec(e))!==null;){let t=n.index+n[0].length,r=S(e,t);if(r<0)continue;let i=e.slice(t,r);if(!/\brel\s*=\s*("|')\s*(?:shortcut\s+)?icon\s*\1/i.test(i))continue;let a=C(i,`href`);if(a!==void 0)return a.trim()}let r=C(e,`data-sprinkle-icon`);if(r!==void 0)return r.trim()}function S(e,t){let n=!1,r=!1;for(let i=t;i<e.length;i++){let t=e.charCodeAt(i);if(n)t===34&&(n=!1);else if(r)t===39&&(r=!1);else if(t===34)n=!0;else if(t===39)r=!0;else if(t===62)return i}return-1}function C(e,t){let n=RegExp(`\\b${t}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`,`i`),r=e.match(n);if(r)return r[1]??r[2]??void 0}var w=e(`sprinkle-manager`);async function T(){let e=s();if(e){let t=await e.prompt({kinds:[`screenshare`],description:`A sprinkle asks to share a screen.`,requestOptions:{screenshare:{constraints:{video:!0,audio:!1}}}}),n=t.status===`granted`?t.grants.find(e=>e.kind===`screenshare`):void 0;if(!n){let e=t.message?`: ${t.message}`:``,n=t.reason??t.status;throw Error(n===`cancelled`||t.status===`cancelled`?`Screen capture cancelled`:`Screen capture ${n}${e}`)}return n.stream}if(!navigator.mediaDevices?.getDisplayMedia)throw Error(`Screen capture not supported in this browser`);return navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1})}var E=`slicc-open-sprinkles`,D=`sprinkles`;function O(){try{if(typeof window>`u`||!window.location)return null;let e=new URLSearchParams(window.location.search).get(D);return e===null?null:e===``?[]:e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}catch{return null}}function k(e){try{if(typeof window>`u`||!window.location||typeof history>`u`||typeof history.replaceState!=`function`)return;let t=new URL(window.location.href);e.length===0?t.searchParams.delete(D):t.searchParams.set(D,e.join(`,`));let n=t.pathname+t.search+t.hash;history.replaceState(history.state??null,``,n)}catch{}}var A=`slicc-known-sprinkles`;function j(e){try{let t=new Set(e),n=M().filter(e=>t.has(e));localStorage.setItem(A,JSON.stringify(n))}catch{}}function M(){try{let e=localStorage.getItem(A);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}}var N=`slicc-autoopened-once`,P=u,F=250,I=class{fs;bridge;callbacks;availableSprinkles=new Map;watcherUnsub;openSprinkles=new Map;attentionOnly=new Set;rendererOperationTails=new Map;inflightRefresh=null;lastRefreshAt=0;autoOpenBehavior;onSendToSprinkle;onSprinkleReloaded;resolveLickOriginUnitId;registeredSprinkles=new Set;inlineSprinkles;changeListeners=new Set;changeNotifyScheduled=!1;urlWriteScheduled=!1;constructor(e,t,r,o,s={}){this.fs=e;let c=async()=>{let e=`image/png`,t=i(),n=a();if(!t&&!n)throw Error(`Screen capture unavailable in this environment`);let r,o,s;if(t){let t=await T();try{let n=document.createElement(`video`);n.srcObject=t,n.muted=!0,n.playsInline=!0,await new Promise((e,t)=>{n.onloadedmetadata=()=>n.play().then(()=>e()).catch(t),n.onerror=()=>t(Error(`Failed to load video stream`))}),await new Promise(e=>setTimeout(e,100)),o=n.videoWidth,s=n.videoHeight;let i=document.createElement(`canvas`);i.width=o,i.height=s;let a=i.getContext(`2d`);if(!a)throw Error(`Failed to get canvas context`);a.drawImage(n,0,0,o,s),r=await(await new Promise((t,n)=>{i.toBlob(e=>e?t(e):n(Error(`Failed to create image blob`)),e,1)})).arrayBuffer()}finally{for(let e of t.getTracks())e.stop()}}else{let t=await n.call(`screencapture`,{mimeType:e,quality:1},{timeoutMs:3e5});r=t.bytes,o=t.width,s=t.height}let c=new Uint8Array(r),l=[],u=8192;for(let e=0;e<c.length;e+=u)l.push(String.fromCharCode(...c.subarray(e,e+u)));return{base64:btoa(l.join(``)),width:o,height:s,mimeType:e}};this.bridge=new n(e,t,e=>this.close(e),e=>this.minimize(e),o,s.onAttachImage??(()=>{}),c,s.execHandler,(e,t,n)=>{this.openSprinkles.get(e)?.renderer.pushDeviceEvent(t,n)},s.selectScoopHandler,s.selectedScoopHandler),this.callbacks=r,this.autoOpenBehavior=s.autoOpenBehavior??`activate`,this.onSendToSprinkle=s.onSendToSprinkle,this.onSprinkleReloaded=s.onSprinkleReloaded,this.resolveLickOriginUnitId=s.resolveLickOriginUnitId,this.inlineSprinkles=s.inlineSprinkles??new Set}setSendToSprinkleHook(e){this.onSendToSprinkle&&!e&&w.error(`SprinkleManager broadcast hook detached`),this.onSendToSprinkle=e}setReloadHook(e){this.onSprinkleReloaded=e}enqueueRendererOperation(e,t){let n=(this.rendererOperationTails.get(e)??Promise.resolve()).then(t,t);return this.rendererOperationTails.set(e,n),n.finally(()=>{this.rendererOperationTails.get(e)===n&&this.rendererOperationTails.delete(e)})}reload(e){return this.enqueueRendererOperation(e,()=>this.reloadNow(e))}async reloadNow(e){let t=this.openSprinkles.get(e);if(!t){w.info(`Cannot reload closed sprinkle`,{name:e});return}let n=this.availableSprinkles.get(e);if(n||=(await this.refresh(),this.availableSprinkles.get(e)),!n){w.warn(`Sprinkle not found during reload`,{name:e});return}let i=await this.fs.readFile(n.path,{encoding:`utf-8`});if(i==null){w.warn(`Failed to read sprinkle content during reload`,{name:e});return}let a=typeof i==`string`?i:new TextDecoder(`utf-8`).decode(i);t.renderer?.dispose(),this.bridge.removeSprinkle(e);let o=this.bridge.createAPI(e,()=>t.lickOriginUnitId),s=new r(t.container,o);if(await s.render(a,e),!this.openSprinkles.has(e)){s.dispose();return}if(t.renderer=s,s.activateBridgeLifecycle(),this.openSprinkles.has(e)&&(w.info(`Sprinkle reloaded`,{name:e}),this.notifyChange(),this.onSprinkleReloaded))try{this.onSprinkleReloaded(e)}catch(t){w.error(`onSprinkleReloaded hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}}async restoreOpenSprinkles(){try{let e=O();if(e!==null){await this.reopenInBackground(e);return}let t=localStorage.getItem(E);t?await this.restoreFromLegacyStorage(t):await this.autoOpenFirstRun()}catch{}await this.surfaceUnseenSprinkles()}async reopenInBackground(e){for(let t of e)try{await this.open(t,void 0,{background:!0})}catch{w.warn(`Failed to restore sprinkle`,{name:t})}}async restoreFromLegacyStorage(e){try{await this.reopenInBackground(JSON.parse(e))}finally{try{localStorage.removeItem(E)}catch{}}}async autoOpenFirstRun(){let e=this.autoOpenBehavior===`attention`,t=this.loadAutoOpenedOnce(),n=new Set;for(let r of this.availableSprinkles.values())if(!(!r.autoOpen||t.has(r.name)))try{await this.open(r.name,void 0,{attention:e}),n.add(r.name)}catch{w.warn(`Failed to auto-open sprinkle`,{name:r.name})}n.size>0&&this.persistAutoOpenedOnce(n)}async surfaceUnseenSprinkles(){let e=this.loadKnownSprinkles(),t=this.loadAutoOpenedOnce(),n=this.autoOpenBehavior===`attention`,r=new Set;for(let i of this.availableSprinkles.values())if(!e.has(i.name)&&!this.openSprinkles.has(i.name)&&!(i.autoOpen&&t.has(i.name)))try{await this.open(i.name,void 0,{attention:!i.autoOpen||n}),i.autoOpen&&r.add(i.name),w.info(`Surfaced previously-unseen sprinkle`,{name:i.name})}catch{w.warn(`Failed to surface unseen sprinkle`,{name:i.name})}this.persistKnownSprinkles(new Set(this.availableSprinkles.keys())),r.size>0&&this.persistAutoOpenedOnce(r)}loadKnownSprinkles(){return new Set(M())}persistKnownSprinkles(e){try{let t=new Set([...this.loadKnownSprinkles(),...e]);localStorage.setItem(A,JSON.stringify([...t]))}catch{}}loadAutoOpenedOnce(){try{let e=localStorage.getItem(N);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}persistAutoOpenedOnce(e){try{let t=new Set([...this.loadAutoOpenedOnce(),...e]);localStorage.setItem(N,JSON.stringify([...t]))}catch{}}persistOpenSprinkles(){try{let e=[...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e));localStorage.setItem(E,JSON.stringify(e))}catch{}this.schedulePersistOpenSprinklesToUrl()}schedulePersistOpenSprinklesToUrl(){this.urlWriteScheduled||(this.urlWriteScheduled=!0,queueMicrotask(()=>{this.urlWriteScheduled=!1,k([...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e)))}))}async openNewAutoOpenSprinkles(){if(this.inflightRefresh!==null)return this.inflightRefresh;if(!(Date.now()-this.lastRefreshAt<F))return this.inflightRefresh=this.runOpenNewAutoOpenSprinkles().finally(()=>{this.lastRefreshAt=Date.now(),this.inflightRefresh=null}),this.inflightRefresh}async runOpenNewAutoOpenSprinkles(){let e=new Set(this.availableSprinkles.keys());await this.refresh();let t=this.autoOpenBehavior===`attention`,n=this.loadAutoOpenedOnce(),r=new Set,i=!1;for(let a of this.availableSprinkles.values())if(!this.openSprinkles.has(a.name)&&!e.has(a.name)){if(i=!0,a.autoOpen){if(n.has(a.name)){w.info(`Skipped one-shot auto-open for previously-consumed sprinkle`,{name:a.name});continue}try{await this.open(a.name,void 0,{attention:t}),r.add(a.name),w.info(`Auto-opened new sprinkle after install`,{name:a.name,attention:t})}catch{w.warn(`Failed to auto-open new sprinkle`,{name:a.name})}}else try{await this.open(a.name,void 0,{attention:!0}),w.info(`Surfaced newly-installed sprinkle in rail`,{name:a.name})}catch{w.warn(`Failed to surface newly-installed sprinkle`,{name:a.name})}}i&&this.persistKnownSprinkles(new Set(this.availableSprinkles.keys())),r.size>0&&this.persistAutoOpenedOnce(r)}async refresh(){this.availableSprinkles=await g(this.fs),w.info(`Discovered sprinkles`,{count:this.availableSprinkles.size}),this.syncRegisteredIcons(),this.notifyChange()}syncRegisteredIcons(){if(!this.callbacks.registerSprinkle)return;let e=new Set;for(let t of this.availableSprinkles.values())this.inlineSprinkles.has(t.name)||e.add(t.name);for(let t of this.availableSprinkles.values())if(e.has(t.name)&&!this.registeredSprinkles.has(t.name))try{this.callbacks.registerSprinkle(t.name,t.title,{icon:t.icon}),this.registeredSprinkles.add(t.name)}catch(e){w.warn(`registerSprinkle callback threw`,{name:t.name,error:e instanceof Error?e.message:String(e)})}for(let t of[...this.registeredSprinkles])if(!e.has(t)){this.openSprinkles.has(t)&&this.close(t);try{this.callbacks.unregisterSprinkle?.(t)}catch(e){w.warn(`unregisterSprinkle callback threw`,{name:t,error:e instanceof Error?e.message:String(e)})}this.registeredSprinkles.delete(t)}}onChange(e){return this.changeListeners.add(e),()=>{this.changeListeners.delete(e)}}notifyChange(){this.changeNotifyScheduled||(this.changeNotifyScheduled=!0,queueMicrotask(()=>{this.changeNotifyScheduled=!1;for(let e of this.changeListeners)try{e()}catch(e){w.error(`SprinkleManager.onChange handler threw`,{error:e instanceof Error?e.message:String(e)})}}))}open(e,t,n={}){return this.enqueueRendererOperation(e,()=>this.openNow(e,t,n))}async openNow(e,t,n={}){if(this.openSprinkles.has(e)){w.info(`Sprinkle already open`,{name:e});return}let i=this.availableSprinkles.get(e);if(i||=(await this.refresh(),this.availableSprinkles.get(e)),!i)throw Error(`Sprinkle not found: ${e}`);let a=await this.fs.readFile(i.path,{encoding:`utf-8`});if(a==null)throw Error(`Failed to read sprinkle content: ${i.path} (file may be corrupted or missing)`);let s=typeof a==`string`?a:new TextDecoder(`utf-8`).decode(a),c=document.createElement(`div`);c.className=`sprinkle-panel`,c.style.cssText=`width: 100%; height: 100%; display: flex; flex-direction: column; overflow-y: auto;`,c.dataset.sprinkle=e;let l={renderer:null,container:c,lickOriginUnitId:n.lickOriginTarget?this.resolveLickOriginUnitId?.(n.lickOriginTarget):void 0};this.openSprinkles.set(e,l),n.attention?this.attentionOnly.add(e):this.attentionOnly.delete(e),this.callbacks.addSprinkle(e,i.title,c,t,{attention:n.attention,background:n.background,icon:i.icon});let u=this.bridge.createAPI(e,()=>l.lickOriginUnitId),d=new r(c,u);await d.render(s,e);let f=this.openSprinkles.get(e);if(!f){d.dispose();return}f.renderer=d,d.activateBridgeLifecycle(),this.openSprinkles.has(e)&&(this.persistOpenSprinkles(),o(e),w.info(`Sprinkle opened`,{name:e,title:i.title}),this.notifyChange())}markActivated(e){this.attentionOnly.has(e)&&(this.attentionOnly.delete(e),this.persistOpenSprinkles(),w.info(`Sprinkle promoted from attention to user-opened`,{name:e}),this.notifyChange())}async activate(e,t,n={}){let r=this.attentionOnly.has(e),i=this.openSprinkles.get(e);if(r&&i&&n.lickOriginTarget&&(i.lickOriginUnitId=this.resolveLickOriginUnitId?.(n.lickOriginTarget)),r&&this.markActivated(e),!i){try{await this.open(e,t,n)}catch(t){w.warn(`Failed to open sprinkle from rail-icon click`,{name:e,error:t instanceof Error?t.message:String(t)})}return}let a=this.availableSprinkles.get(e);this.callbacks.addSprinkle(e,a?.title??e,i.container,t,{icon:a?.icon})}close(e){let t=this.openSprinkles.get(e);t&&(t.renderer?.dispose(),t.container.remove(),this.bridge.removeSprinkle(e),this.openSprinkles.delete(e),this.attentionOnly.delete(e),this.callbacks.closeSprinkleContent?this.callbacks.closeSprinkleContent(e):this.callbacks.removeSprinkle(e),this.persistOpenSprinkles(),w.info(`Sprinkle closed`,{name:e}),this.notifyChange())}minimize(e){this.openSprinkles.has(e)&&(this.callbacks.minimizeSprinkle(e),w.info(`Sprinkle minimized`,{name:e}))}available(){return Array.from(this.availableSprinkles.values())}opened(){return Array.from(this.openSprinkles.keys())}lickOriginUnitIdOf(e){return this.openSprinkles.get(e)?.lickOriginUnitId}setupWatcher(e){let t=null,n=new Map,r=e=>{let r=!1;for(let t of e){let e=this.findOpenSprinkleByPath(t.path);if(e){let t=n.get(e);t&&clearTimeout(t),n.set(e,setTimeout(()=>{n.delete(e),this.reload(e).catch(t=>{w.warn(`Sprinkle reload on watcher event failed`,{name:e,error:t instanceof Error?t.message:String(t)})})},300))}else r=!0}r&&!t&&(t=setTimeout(()=>{t=null,this.openNewAutoOpenSprinkles().catch(e=>{w.warn(`Sprinkle refresh on watcher event failed`,{error:e instanceof Error?e.message:String(e)})})},150))},i=P.map(t=>e.watch(t,e=>e.endsWith(`.shtml`),r));this.watcherUnsub=()=>{for(let e of i)e();t&&=(clearTimeout(t),null);for(let e of n.values())clearTimeout(e);n.clear()}}findOpenSprinkleByPath(e){for(let[t]of this.openSprinkles){let n=this.availableSprinkles.get(t);if(n&&n.path===e)return t}return null}dispose(){this.watcherUnsub?.()}sendToSprinkle(e,t,n){let r=!n?.runtime||n.runtime===`leader`,i=!n?.runtime||n.runtime!==`leader`,a={leader:!1,followers:[]};if(r){let n=this.openSprinkles.get(e);n?(this.bridge.pushUpdate(e,t),n.renderer.pushUpdate(t),a.leader=!0):w.warn(`Cannot send to closed sprinkle`,{name:e})}if(i&&this.onSendToSprinkle)try{let r=this.onSendToSprinkle(e,t,n);r&&(a.followers=r.followers,r.unknownRuntime&&(a.unknownRuntime=r.unknownRuntime))}catch(t){w.error(`onSendToSprinkle hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}return a}};export{I as SprinkleManager,j as pruneKnownSprinkleNames,M as readKnownSprinkleNames};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/usb-claim-broker-Dacw2Z3M.js","assets/usb-device-registry--JwKRTYp.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/slicc-editor-DvUervn4.js","assets/preload-helper-Czpn1I53.js","assets/upgrade-own-properties-DI0JKxGt.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{ct as t}from"./wc-shell-
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{ct as t}from"./wc-shell-BcFO-uxW.js";import{t as n}from"./permissions-surface-registry-CilCRwhh.js";import{n as r,r as i}from"./hid-device-registry-B2R-0rNt.js";import{a,i as o}from"./serial-port-registry-CCqklAEr.js";import{c as s,d as c,g as l,i as u,l as d,m as f,n as ee,o as te,p,r as ne,t as re,u as ie}from"./hid-operations-C97SZtrY.js";import{a as m,i as h,o as ae,s as oe}from"./usb-device-registry--JwKRTYp.js";import{a as se,d as ce,f as le,g as ue,h as de,i as fe,l as pe,m as g,n as _,o as v,p as me,r as he,s as ge,u as _e}from"./usb-operations-v1mGAdRY.js";import"./shared-DSEuryGJ.js";import{a as y,n as ve,r as ye}from"./theme-CwPIBqJE.js";function b(){try{let e=globalThis.window??globalThis;return e.self!==e.top}catch{return!0}}var x=new WeakSet;function S(e,t){if(x.has(e)){t?.();return}let n=!1;C(e,t,()=>{n=!0}),setTimeout(()=>{n||e.isConnected&&C(e)},500)}function C(e,t,n){if(x.has(e)){t?.();return}x.add(e);let r=e.style.display;e.style.display=`none`;let i=!1,a=a=>{i||(i=!0,e.style.display=r,x.delete(e),a&&n?.(),t?.())},o=globalThis.requestAnimationFrame;typeof o==`function`&&o(()=>{o(()=>a(!0))}),setTimeout(()=>a(!1),100)}var w=`
|
|
3
3
|
(function() {
|
|
4
4
|
function _focusAllowed() {
|
|
5
5
|
try { return document.hasFocus(); } catch (e) { return false; }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as e,l as t,o as n,r,u as i}from"./frame-bytes-B4FpkDwW.js";import{c as a,d as o,l as s,o as c,u as l}from"./frames-D35rgB_q.js";import{n as u,r as d}from"./run-
|
|
1
|
+
import{c as e,l as t,o as n,r,u as i}from"./frame-bytes-B4FpkDwW.js";import{c as a,d as o,l as s,o as c,u as l}from"./frames-D35rgB_q.js";import{n as u,r as d}from"./run-BYyvGPll.js";function f(e){return`'${e.replace(/'/g,`'\\''`)}'`}function p(e){return f(String(Math.round(e)))}function m(e,t,n){return`cliclick ${f(`${e}:${Math.round(t)},${Math.round(n)}`)}`}function h(e){return e===2?`mc`:e===3?`rc`:`c`}function g(e){return e===2?`md`:e===3?`rd`:`dd`}function _(e){return e===2?`mu`:e===3?`ru`:`du`}function v(e){return e}function y(e,t){let n=e===2?2:+(e===3);return t===`down`?`ydotool click ${f(b(64|n))}`:t===`up`?`ydotool click ${f(b(128|n))}`:`ydotool click ${f(b(192|n))}`}function b(e){return`0x${e.toString(16).toUpperCase()}`}function x(e,t){return Math.min(20,Math.max(1,Math.round(Math.max(Math.abs(e),Math.abs(t))/40)||1))}function S(e){return`sleep ${f((Math.max(0,e)/1e3).toFixed(3))}`}function C(e){switch(e.type){case`mousemove`:return[m(`m`,e.x,e.y)];case`click`:{let t=e.x??0,n=e.y??0;if(e.holdMs&&e.holdMs>0)return[m(g(e.button),t,n),S(e.holdMs),m(_(e.button),t,n)];let r=m(e.count>=2&&e.button===1?`dc`:h(e.button),t,n);return e.count>2?Array.from({length:e.count},()=>r):[r]}case`button`:return[m(e.down?g(e.button):_(e.button),e.x??0,e.y??0)];case`drag`:return[m(`dd`,e.x1,e.y1),m(`du`,e.x2,e.y2)];case`key`:{let t=c(e.keysym);if(!t)return[];let n=e.down===!0?`down`:e.down===!1?`up`:`press`;return[`cliclick ${f(a(t,n))}`]}case`text`:return[`cliclick ${f(`t:${e.text}`)}`];case`wait`:return[S(e.ms)];case`scroll`:return[];default:return[]}}function w(e,t){return`xdotool mousemove -- ${p(e)} ${p(t)}`}function T(e){switch(e.type){case`mousemove`:return e.relative?[`xdotool mousemove_relative -- ${p(e.x)} ${p(e.y)}`]:[w(e.x,e.y)];case`click`:{let t=Math.max(1,e.count),n=e.holdMs&&e.holdMs>0?` --delay ${p(e.holdMs)}`:``;return[w(e.x??0,e.y??0),`xdotool click --repeat ${p(t)}${n} ${p(v(e.button))}`]}case`button`:{let t=e.down?`mousedown`:`mouseup`;return[w(e.x??0,e.y??0),`xdotool ${t} ${p(v(e.button))}`]}case`drag`:return[w(e.x1,e.y1),`xdotool mousedown 1`,w(e.x2,e.y2),`xdotool mouseup 1`];case`scroll`:{let t=e.dy<0?4:e.dy>0?5:e.dx<0?6:7;return[w(e.x??0,e.y??0),`xdotool click --repeat ${p(x(e.dx,e.dy))} ${p(t)}`]}default:return null}}function E(e){let t=T(e);if(t)return t;if(e.type===`key`){let t=c(e.keysym);if(!t)return[];let n=l(t);return e.down===!0?[`xdotool keydown ${f(n)}`]:e.down===!1?[`xdotool keyup ${f(n)}`]:[`xdotool key ${f(n)}`]}return e.type===`text`?[`xdotool type -- ${f(e.text)}`]:e.type===`wait`?[S(e.ms)]:[]}function D(e){switch(e.type){case`mousemove`:return[`ydotool mousemove --absolute -- ${p(e.x)} ${p(e.y)}`];case`click`:{let t=Math.round(e.x??0),n=Math.round(e.y??0),r=Math.max(1,e.count),i=y(e.button,`click`);return[`ydotool mousemove --absolute -- ${p(t)} ${p(n)}`,...Array.from({length:r},()=>i)]}case`button`:{let t=Math.round(e.x??0),n=Math.round(e.y??0);return[`ydotool mousemove --absolute -- ${p(t)} ${p(n)}`,y(e.button,e.down?`down`:`up`)]}case`drag`:return[`ydotool mousemove --absolute -- ${p(e.x1)} ${p(e.y1)}`,y(1,`down`),`ydotool mousemove --absolute -- ${p(e.x2)} ${p(e.y2)}`,y(1,`up`)];case`scroll`:return[`ydotool mousemove --absolute -- ${p(e.x??0)} ${p(e.y??0)}`,`ydotool click --repeat ${p(x(e.dx,e.dy))} ${f(e.dy<0?b(195):b(196))}`];case`key`:{let t=c(e.keysym);if(!t)return[];let n=e.down===!0?`down`:e.down===!1?`up`:`press`,r=o(t,n);return r?[`ydotool key ${f(r)}`]:[]}case`text`:return[`ydotool type -- ${f(e.text)}`];case`wait`:return[S(e.ms)];default:return[]}}function O(e,t){let n=`--udid ${f(t)}`;if(e.type===`key`){let t=c(e.keysym);return t?.key===`Home`?[`idb ui button HOME ${n}`]:t&&t.key.length===1&&!t.modifiers.ctrl&&!t.modifiers.meta?[`idb ui text ${f(t.key)} ${n}`]:[]}if(e.type===`text`)return[`idb ui text ${f(e.text)} ${n}`];if(e.type===`wait`)return[S(e.ms)];let r=s(e);return r.kind===`noop`?[]:r.kind===`tap`?[`idb ui tap ${p(r.x)} ${p(r.y)} ${n}`]:r.kind===`long-press`?[`idb ui tap ${p(r.x)} ${p(r.y)} --duration ${p(r.holdMs)} ${n}`]:[`idb ui swipe ${p(r.x1)} ${p(r.y1)} ${p(r.x2)} ${p(r.y2)} ${n}`]}function k(e,t,n){return t===`none`?[]:t===`cliclick`?C(e):t===`xdotool`?E(e):t===`ydotool`?D(e):t===`idb`&&n?O(e,n):[]}function A(e,t,n){return t?`ssh:${e}:sim:${t}`:n?`ssh:${e}:display:${n}`:`ssh:${e}`}function j(e){return`/tmp/slicc-${e.replace(/[^A-Za-z0-9._-]+/gu,`_`)}`}function M(e){let t=e.toLowerCase();return t.startsWith(`darwin`)?`darwin`:t.startsWith(`linux`)?`linux`:`unknown`}const N=[`screencapture`,`grim`,`scrot`,`import`],P=[`cliclick`,`xdotool`,`ydotool`];function F(e,t){for(let n of t)if(e.includes(n))return n;return null}function I(e){let t=/SLICC_SSH_PROBE\s+(\S+)\s*(.*)/u.exec(e);if(!t)return{error:`probe: unexpected follower output`};let n=t[2].trim().split(/\s+/u).filter(Boolean);return{platform:M(t[1]),tools:n,capture:F(n,N),input:F(n,P)??`none`}}async function L(e,t){let n=await e(`u=$(uname -s 2>/dev/null || echo unknown)
|
|
2
2
|
tools=""
|
|
3
3
|
for t in screencapture cliclick grim scrot import xdotool ydotool idb xcrun; do
|
|
4
4
|
command -v "$t" >/dev/null 2>&1 && tools="$tools$t "
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import{t as e}from"./logger-LESFN7Hj.js";import{t}from"./base64-BPBW1Gzr.js";import{t as n}from"./panel-rpc-accessor-B4BfPLSo.js";import{t as r}from"./types-D8gIX-W-.js";import"./fs-CKSBDyCr.js";import"./tray-storage-keys-DbThbnIh.js";function i(e){return e==null?[]:Array.isArray(e)?e:[e]}function a(e,t,n,r){var i,a=e[t],o=~r.string.indexOf(t)?n==null||n===!0?``:String(n):typeof n==`boolean`?n:~r.boolean.indexOf(t)?n===`false`?!1:n===`true`||(e._.push((i=+n,i*0==0?i:n)),!!n):(i=+n,i*0==0?i:n);e[t]=a==null?o:Array.isArray(a)?a.concat(o):[a,o]}function o(e,t){e||=[],t||={};var n,r,o,s,c,l={_:[]},u=0,d=0,f=0,p=e.length;let m=t.alias!==void 0,h=t.unknown!==void 0,g=t.default!==void 0;if(t.alias=t.alias||{},t.string=i(t.string),t.boolean=i(t.boolean),m)for(n in t.alias)for(r=t.alias[n]=i(t.alias[n]),u=0;u<r.length;u++)(t.alias[r[u]]=r.concat(n)).splice(u,1);for(u=t.boolean.length;u-->0;)for(r=t.alias[t.boolean[u]]||[],d=r.length;d-->0;)t.boolean.push(r[d]);for(u=t.string.length;u-->0;)for(r=t.alias[t.string[u]]||[],d=r.length;d-->0;)t.string.push(r[d]);if(g){for(n in t.default)if(s=typeof t.default[n],r=t.alias[n]=t.alias[n]||[],t[s]!==void 0)for(t[s].push(n),u=0;u<r.length;u++)t[s].push(r[u])}let _=h?Object.keys(t.alias):[];for(u=0;u<p;u++){if(o=e[u],o===`--`){l._=l._.concat(e.slice(++u));break}for(d=0;d<o.length&&o.charCodeAt(d)===45;d++);if(d===0)l._.push(o);else if(o.substring(d,d+3)===`no-`){if(s=o.substring(d+3),h&&!~_.indexOf(s))return t.unknown(o);l[s]=!1}else{for(f=d+1;f<o.length&&o.charCodeAt(f)!==61;f++);for(s=o.substring(d,f),c=o.substring(++f)||u+1===p||(``+e[u+1]).charCodeAt(0)===45||e[++u],r=d===2?[s]:s,f=0;f<r.length;f++){if(s=r[f],h&&!~_.indexOf(s))return t.unknown(`-`.repeat(d)+s);a(l,s,f+1<r.length||c,t)}}}if(g)for(n in t.default)l[n]===void 0&&(l[n]=t.default[n]);if(m)for(n in l)for(r=t.alias[n]||[];r.length>0;)l[r.shift()]=l[n];return l}function s(e,t){let n=[],r=new Map,i=new Set;for(let a=0;a<e.length;a++){let o=e[a];o.startsWith(`-`)?t.has(o)?r.set(o,e[++a]??``):i.add(o):n.push(o)}return{positionals:n,flags:r,bools:i}}function c(e){let t=new Set(e.string??[]),n=e.alias??{};for(let[e,r]of Object.entries(n)){let n=[e,...Array.isArray(r)?r:[r]];if(n.some(e=>t.has(e)))for(let e of n)t.add(e)}return t}const l=/^(--?)([^=]+)(=.*)?$/;function u(e,t){let n=[];for(let r of e){let e=l.exec(r);if(!e||e[3])continue;let i=e[2];if(!t.has(i)){if(e[1]===`-`&&i.length>1)for(let e of i)t.has(e)||n.push(e);else n.push(i)}}return n}function d(e){let t=new Set(e.string??[]);for(let n of e.boolean??[])t.add(n),t.add(`no-${n}`);for(let[n,r]of Object.entries(e.alias??{})){t.add(n);for(let e of Array.isArray(r)?r:[r])t.add(e)}return t}function f(e,t,n){let r=0;for(;r<e.length;r++){let i=e[r];if(!i.startsWith(`-`)||i===`-`)break;let a=l.exec(i);if(!a||!n.has(a[2]))break;!a[3]&&t.has(a[2])&&r+1<e.length&&r++}return r}function p(e,t){let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=l.exec(i);a&&!a[3]&&t.has(a[2])&&r+1<e.length?(n.push(`${i}=${e[r+1]}`),r++):n.push(i)}return n}function m(e,t={}){let n=e,r=[];if(t[`--`]){let t=e.indexOf(`--`);t!==-1&&(n=e.slice(0,t),r=e.slice(t+1))}let i=c(t),a=d(t),s=n,l=[];if(t.stopEarly){let e=f(n,i,a);s=n.slice(0,e),l=n.slice(e)}let m=u(s,a),h=t.boolean||m.length>0?[...t.boolean??[],...m]:void 0,{_:g,..._}=o(p(s,i),{string:t.string?[...t.string]:void 0,boolean:h,alias:t.alias,default:t.default}),v=t.stopEarly?l:g;return{_:v,positionals:v,flags:_,doubleDashRest:r}}const h=[`playwright-cli`,`playwright`,`puppeteer`],g=new WeakMap,_=e(`playwright`);function v(e,t){let n=g.get(e);n||(n=new WeakMap,g.set(e,n));let r=n.get(t);return r||(r={snapshots:new Map,appTabId:null,harRecorder:null,sessionDirsCreated:new Set,teleportWatchers:new Map,consoleMessages:new Map,consoleCleanup:new Map,networkRequests:new Map,networkRequestIndex:new Map,networkCleanup:new Map,routes:new Map,routeCleanup:new Map,lastMousePosition:new Map},n.set(t,r)),r}const y=/^(f[0-9]+)?e[0-9]+$/;function b(e){return y.test(e)}function x(e){let t=e.match(/^(f[0-9]+)(e[0-9]+)$/);return t?{framePrefix:t[1],isIframe:!0}:{framePrefix:``,isIframe:!1}}const S=t,C=new Set([`click`,`dblclick`,`fill`,`type`,`press`,`goto`,`navigate`,`select`,`check`,`uncheck`,`drag`,`dialog-accept`,`dialog-dismiss`,`drop`]);function w(e){return e.toISOString().replace(/:/g,`-`)}function T(e){return e instanceof r||typeof e==`object`&&e&&`code`in e?e.code===`EEXIST`:e instanceof Error&&e.message.includes(`EEXIST`)}const E=`function(text) {
|
|
2
|
+
const el = this;
|
|
3
|
+
const tag = el.tagName;
|
|
4
|
+
const proto = tag === 'TEXTAREA' ? window.HTMLTextAreaElement.prototype : window.HTMLInputElement.prototype;
|
|
5
|
+
const nativeSetter = Object.getOwnPropertyDescriptor(proto, 'value')?.set;
|
|
6
|
+
if (nativeSetter) {
|
|
7
|
+
nativeSetter.call(el, text);
|
|
8
|
+
} else {
|
|
9
|
+
el.value = text;
|
|
10
|
+
}
|
|
11
|
+
el.dispatchEvent(new Event('input', { bubbles: true }));
|
|
12
|
+
el.dispatchEvent(new Event('change', { bubbles: true }));
|
|
13
|
+
}`,D=`function() {
|
|
14
|
+
const el = this;
|
|
15
|
+
if (el.isContentEditable) return el.textContent || '';
|
|
16
|
+
return el.value ?? '';
|
|
17
|
+
}`,O=`function() {
|
|
18
|
+
const el = this;
|
|
19
|
+
if (!(el instanceof HTMLElement)) return false;
|
|
20
|
+
el.focus();
|
|
21
|
+
const emitInput = () => el.dispatchEvent(new Event('input', { bubbles: true }));
|
|
22
|
+
if (el.isContentEditable) {
|
|
23
|
+
el.textContent = '';
|
|
24
|
+
const selection = window.getSelection();
|
|
25
|
+
if (selection) {
|
|
26
|
+
const range = document.createRange();
|
|
27
|
+
range.selectNodeContents(el);
|
|
28
|
+
range.collapse(false);
|
|
29
|
+
selection.removeAllRanges();
|
|
30
|
+
selection.addRange(range);
|
|
31
|
+
}
|
|
32
|
+
emitInput();
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement || 'value' in el) {
|
|
36
|
+
el.value = '';
|
|
37
|
+
emitInput();
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}`;function k(e,t){try{return JSON.parse(e)}catch{throw Error(`could not parse ${t} from the page (got: ${String(e).slice(0,80)})`)}}async function A(e){let t=await e.evaluate(`JSON.stringify({ href: location.href, hostname: location.hostname, pathname: location.pathname })`);try{return JSON.parse(t)}catch{throw Error(`could not read the page location (evaluate returned: ${String(t).slice(0,80)})`)}}const j={string:`tab.frame.filename.max-width.runtime.timeout.filter.output.start.return.teleport-start.teleport-return.teleport-runtime.domain.path.expires.method.depth.modifiers.regex.type.sameSite.data.status.body.content-type.header.style`.split(`.`),boolean:[`boxes`,`clear`,`discover`,`foreground`,`fg`,`full-page`,`fullPage`,`hide`,`httpOnly`,`hires`,`list`,`mobile`,`off`,`secure`,`static`,`submit`],alias:{foreground:`fg`,"full-page":`fullPage`}};function M(e){let t=m(e.map(e=>e===`--no-iframes`||e.startsWith(`--no-iframes=`)?e.replace(`--no-iframes`,`--_noiframes`):e),j),n={};for(let[e,r]of Object.entries(t.flags)){let t=e===`_noiframes`?`no-iframes`:e;if(r===!0)n[t]=`true`;else if(r===!1)continue;else r!==void 0&&(n[t]=String(r))}return{positional:t.positionals,flags:n}}function N(e,t){if(e?.aborted)throw Error(`aborted while ${t}`)}function P(e){let t=e.tab;return t?{targetId:t}:{error:`Error: --tab <targetId> is required. Run 'playwright-cli tab-list' to get tab IDs.
|
|
42
|
+
`}}async function F(e,t){let n=t.frame;if(!n)return null;let r=(await e.getFrameTree()).find(e=>e.frameId===n);if(r)return r;let i=t.tab??`<targetId>`;throw Error(`Unknown frame ID "${n}" for tab ${i}. Run 'playwright-cli frames --tab=${i}' to list frame IDs.`)}function I(){try{let e=globalThis.localStorage;return e?!!(e.getItem(`slicc.trayWorkerBaseUrl`)||e.getItem(`slicc.trayJoinUrl`)):!1}catch{return!1}}async function L(e){if(typeof e.listAllTargets!=`function`)return e.listPages();let t=await e.listAllTargets(),r=I()?n():null;if(!r)return t;try{let{targets:e}=await r.call(`list-remote-targets`,void 0,{timeoutMs:3e3}),n=new Set(t.map(e=>e.targetId));for(let r of e)n.has(r.targetId)||(n.add(r.targetId),t.push({targetId:r.targetId,title:r.title,url:r.url}))}catch(e){_.debug(`panel-rpc list-remote-targets failed`,{err:String(e)})}return t}async function R(e){try{return await L(e)}catch{return[]}}async function z(e,t,n){if(!(n instanceof Error?n.message:String(n)).includes(`No target with given id found`))return null;for(let n of await R(e))try{if((await e.withTab(n.targetId,e=>e.getFrameTree())).some(e=>e.frameId===t))return`"${t}" is a frame ID, not a tab target ID. Use --tab=${n.targetId} --frame=${t}; run 'playwright-cli frames --tab=${n.targetId}' to list frame IDs.`}catch{}return null}export{s as S,x as _,E as a,N as b,w as c,v as d,T as f,k as g,M as h,j as i,z as l,L as m,O as n,D as o,b as p,h as r,S as s,C as t,A as u,P as v,m as x,F as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./types-D8gIX-W-.js";import{t}from"./global-db-DJXlpNui.js";const n=`/workspace/.plugins/plugins.json`;let r=null;async function i(e){if(e)return e;if(r&&r.dbName===`slicc-fs-global`)return r.instance;let{VirtualFS:n}=await import(`./fs-
|
|
1
|
+
import{t as e}from"./types-D8gIX-W-.js";import{t}from"./global-db-DJXlpNui.js";const n=`/workspace/.plugins/plugins.json`;let r=null;async function i(e){if(e)return e;if(r&&r.dbName===`slicc-fs-global`)return r.instance;let{VirtualFS:n}=await import(`./fs-CKSBDyCr.js`).then(e=>e.t),i=await n.create({dbName:t});return r={instance:i,dbName:t},i}function a(){return{version:1,plugins:{}}}function o(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function s(e){if(!o(e))return null;let t=e;return typeof t.root==`string`?t:null}function c(e){if(!o(e))return a();let t=e,n=typeof t.version==`number`?t.version:1,r={};if(o(t.plugins))for(let[e,n]of Object.entries(t.plugins)){let t=s(n);t&&(r[e]=t)}return{version:n,plugins:r}}async function l(t){try{let e=await(await i(t)).readFile(n,{encoding:`utf-8`});try{return c(JSON.parse(e))}catch{return a()}}catch(t){if(t instanceof e&&t.code===`ENOENT`)return a();throw t}}async function u(e,t){let r=await i(t);await r.mkdir(`/workspace/.plugins`,{recursive:!0});let a=c({version:e.version||1,plugins:e.plugins??{}});await r.writeFile(n,JSON.stringify(a,null,2))}async function d(e,t){return(await l(t)).plugins[e]??null}async function f(e,t,n){let r=await l(n);r.plugins[e]=t,await u(r,n)}async function p(e,t){let n=await l(t);return e in n.plugins&&(delete n.plugins[e],await u(n,t),!0)}async function m(e){return(await l(e)).plugins}export{p as deleteInstalledPlugin,d as getInstalledPlugin,m as listInstalledPlugins,f as setInstalledPlugin};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{t as n}from"./types-D8gIX-W-.js";import{t as r}from"./global-db-DJXlpNui.js";var i=e({MCP_STORE_PATH:()=>o,deleteServer:()=>y,getServer:()=>_,listServers:()=>b,readMcpAuthEntries:()=>S,readMcpAuthEntry:()=>x,readServersFile:()=>h,setServer:()=>v,writeServersFile:()=>g});const a=t(`mcp-store`),o=`/workspace/.mcp/servers.json`;let s=null,c=null;async function l(){return s||=await import(`./fs-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{t as n}from"./types-D8gIX-W-.js";import{t as r}from"./global-db-DJXlpNui.js";var i=e({MCP_STORE_PATH:()=>o,deleteServer:()=>y,getServer:()=>_,listServers:()=>b,readMcpAuthEntries:()=>S,readMcpAuthEntry:()=>x,readServersFile:()=>h,setServer:()=>v,writeServersFile:()=>g});const a=t(`mcp-store`),o=`/workspace/.mcp/servers.json`;let s=null,c=null;async function l(){return s||=await import(`./fs-CKSBDyCr.js`).then(e=>e.t),s}async function u(e){if(e)return e;if(c&&c.dbName===`slicc-fs-global`)return c.instance;let{VirtualFS:t}=await l(),n=await t.create({dbName:r});return c={instance:n,dbName:r},n}function d(){return{version:1,servers:{}}}function f(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function p(e){if(!f(e))return null;let t={...e};return typeof t.url==`string`?(delete t.sessionId,t):null}function m(e){if(!f(e))return d();let t=e,n=typeof t.version==`number`?t.version:1,r={};if(f(t.servers))for(let[e,n]of Object.entries(t.servers)){let t=p(n);t&&(r[e]=t)}return{version:n,servers:r}}async function h(e){try{let t=await(await u(e)).readFile(o,{encoding:`utf-8`});try{return m(JSON.parse(t))}catch(e){return a.warn(`servers.json is not valid JSON; treating as empty`,{error:e instanceof Error?e.message:String(e)}),d()}}catch(e){if(e instanceof n&&e.code===`ENOENT`)return d();throw e}}async function g(e,t){let n=await u(t);await n.mkdir(`/workspace/.mcp`,{recursive:!0});let r=m({version:e.version||1,servers:e.servers??{}});await n.writeFile(o,JSON.stringify(r,null,2))}async function _(e,t){return(await h(t)).servers[e]??null}async function v(e,t,n){let r=await h(n),i=e.replace(/[^A-Za-z0-9_]/g,`_`),a=Object.keys(r.servers).find(t=>t!==e&&t.replace(/[^A-Za-z0-9_]/g,`_`)===i);if(a)throw Error(`MCP server "${e}" conflicts with "${a}" after name normalization`);let o=p({...r.servers[e],...t});if(!o)throw Error(`MCP server entry requires a URL`);return r.servers[e]=o,await g(r,n),o}async function y(e,t){let n=await h(t);return e in n.servers&&(delete n.servers[e],await g(n,t),!0)}async function b(e){return(await h(e)).servers}async function x(e){let t=await _(e);return!t?.url||!t.auth?.clientId?null:{name:e,serverUrl:t.url,auth:t.auth}}async function S(){let e=await b(),t=[];for(let[n,r]of Object.entries(e))!r?.url||!r.auth?.clientId||t.push({name:n,serverUrl:r.url,auth:r.auth});return t}export{x as n,i as r,S as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=`slicc_accounts`;function t(){let t=localStorage.getItem(e);if(!t)return[];try{let e=JSON.parse(t);return Array.isArray(e)?e.filter(e=>typeof e==`object`&&!!e&&typeof e.providerId==`string`&&typeof e.apiKey==`string`):[]}catch{return[]}}export{t as n,e as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=`slicc_accounts`;function t(){let t=localStorage.getItem(e);if(!t)return[];try{let e=JSON.parse(t);return Array.isArray(e)?e.filter(e=>typeof e==`object`&&!!e&&typeof e.providerId==`string`&&typeof e.apiKey==`string`):[]}catch{return[]}}export{t as n,e as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e,t){return{name:`StructuredOutput`,description:`Return your final result. Call this exactly once, as your last action: the call ends your run. Your arguments ARE the return value and must match the required schema.`,inputSchema:e,async execute(e){return t(e),{content:`Result recorded.`}}}}export{e as createStructuredOutputTool};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/panel-rpc-
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{t as n}from"./quick-llm-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/panel-rpc-sLZo8PD-.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/panel-rpc-accessor-B4BfPLSo.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{t as n}from"./quick-llm-gqL6GOn2.js";import{n as r}from"./types-DSxCdZw6.js";import{t as i}from"./approval-decision-BvumWm-U.js";import"./capability-6V-AYPSJ.js";import{t as a}from"./page-approval-service-ja6kjLj8.js";var o=t(`sudo:timeout`);function s(e=`user-timeout`){return{decision:`deny`,reason:e}}function c(e,t={}){let n=t.timeoutMs??3e5;if(!Number.isFinite(n)||n<=0)return e;let i=t.setTimer??((e,t)=>setTimeout(e,t)),a=t.clearTimer??(e=>clearTimeout(e));return{requestApproval(t,c){return new Promise(l=>{let u=new AbortController,d=()=>u.abort();c?.signal?.addEventListener(`abort`,d,{once:!0});let f=!1,p=e=>{f=!0,c?.signal?.removeEventListener(`abort`,d),l(e)},m=i(()=>{f||(o.warn(`sudo approval timed out — failing closed`,{kind:t.kind,detail:t.detail,timeoutMs:n}),u.abort(),p(s(`user-timeout`)))},n),h=e=>{if(f){o.warn(`sudo decision arrived after timeout — discarded`,{kind:t.kind,detail:t.detail,decision:e.decision});return}a(m),p(e)};e.requestApproval(t,{signal:u.signal}).then(h,e=>{o.warn(`sudo broker threw — denying`,{error:e instanceof Error?e.message:String(e)}),h(r())})})}}}var l=t(`sudo-suggest`),u=[`You generalize a single shell command into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the leading command/sub-command verbatim and replace only`,`the volatile tail (args, paths, refs) with a single trailing "*".`,`Examples:`,` git push origin main -> git push*`,` rm -rf build/cache -> rm -rf*`,` npm install left-pad -> npm install*`].join(`
|
|
3
3
|
`),d=[`You generalize a single filesystem path into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the meaningful directory prefix and replace the volatile`,`leaf (and below) with "**". Examples:`,` /workspace/.git/config -> /workspace/.git/**`,` /shared/secrets/openai.key -> /shared/secrets/**`,` /workspace/src/app/main.ts -> /workspace/src/**`].join(`
|
|
4
4
|
`);async function f(e,t){if(e.suggestedPattern&&e.suggestedPattern.trim().length>0)return e.suggestedPattern.trim();let r=e.detail.trim();if(e.kind===`guest-message`||e.kind===`guest-tool`)return r;let i=e.kind===`command`?u:d,a=null;try{a=await n({prompt:r,system:i,maxTokens:40,temperature:0,signal:t})}catch(e){l.debug(`suggestPattern: quickLabel threw`,{error:e instanceof Error?e.message:String(e)}),a=null}return p(a)||r}function p(e){if(!e)return null;let t=(e.split(`
|
|
5
|
-
`,1)[0]?.trim()??``).replace(/^`+/,``).replace(/`+$/,``).replace(/^["']/,``).replace(/["']$/,``).trim();return t.length===0?null:t}var m=t(`sudo:capability-gesture`);function h(e,t={}){let n=t.suggest??f;return{async requestApproval(t,a){let o=a?.signal,s;if(t.suggestedPattern)s=t.suggestedPattern;else try{s=await n(t,o)}catch{s=t.detail}if(o?.aborted)return m.warn(`sudo approval aborted before prompting — denying`,{detail:t.detail}),r();if(!e)return m.warn(`no CapabilityBroker injected for the sudo gesture hop — denying (composition bug, never a guessed transport)`,{detail:t.detail}),r();let c=await e.approvals.request({kind:t.kind,detail:t.detail,suggestedPattern:s,...t.requester?{requester:t.requester}:{},...t.reason?{reason:t.reason}:{},...t.approver?{approver:t.approver}:{},...o?{signal:o}:{}});return c.ok?i(c.value,s):(m.warn(`capability broker approvals.request failed — denying`,{message:c.message}),r())}}}var g=t(`sudo:tray-first`),_=6e5;function v(t,n={}){let i=n.suggest??f,a=n.timeoutMs??_,o=n.getClient??(async()=>{let{getPanelRpcClient:t}=await e(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-
|
|
5
|
+
`,1)[0]?.trim()??``).replace(/^`+/,``).replace(/`+$/,``).replace(/^["']/,``).replace(/["']$/,``).trim();return t.length===0?null:t}var m=t(`sudo:capability-gesture`);function h(e,t={}){let n=t.suggest??f;return{async requestApproval(t,a){let o=a?.signal,s;if(t.suggestedPattern)s=t.suggestedPattern;else try{s=await n(t,o)}catch{s=t.detail}if(o?.aborted)return m.warn(`sudo approval aborted before prompting — denying`,{detail:t.detail}),r();if(!e)return m.warn(`no CapabilityBroker injected for the sudo gesture hop — denying (composition bug, never a guessed transport)`,{detail:t.detail}),r();let c=await e.approvals.request({kind:t.kind,detail:t.detail,suggestedPattern:s,...t.requester?{requester:t.requester}:{},...t.reason?{reason:t.reason}:{},...t.approver?{approver:t.approver}:{},...o?{signal:o}:{}});return c.ok?i(c.value,s):(m.warn(`capability broker approvals.request failed — denying`,{message:c.message}),r())}}}var g=t(`sudo:tray-first`),_=6e5;function v(t,n={}){let i=n.suggest??f,a=n.timeoutMs??_,o=n.getClient??(async()=>{let{getPanelRpcClient:t}=await e(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-sLZo8PD-.js`).then(e=>e.n);return{getPanelRpcClient:e}},__vite__mapDeps([0,1,2]));return t()});return{async requestApproval(e,n){if(n?.signal?.aborted)return r();let s=e.suggestedPattern;if(!s)try{s=await i(e,n?.signal)}catch{s=e.detail}let c={...e,suggestedPattern:s},l=null;try{l=await o()}catch(e){g.debug?.(`panel-RPC client lookup threw — using native broker`,{error:e instanceof Error?e.message:String(e)})}if(l)try{let e=await l.call(`sudo-request`,{request:c,mode:`tray-first`},{timeoutMs:a});if(e?.handled!==!1)return b(e?.decision,s)}catch(e){g.warn(`tray-first sudo probe failed — using native broker`,{error:e instanceof Error?e.message:String(e)})}return t.requestApproval(c,n)}}}var y=[`user-timeout`,`cone-timeout`,`unavailable`];function b(e,t){if(!e||typeof e!=`object`)return r();let n=e,i=n.attestation===`biometric`||n.attestation===`passcode`||n.attestation===`none`?n.attestation:void 0;if(n.decision===`allow`)return{decision:`allow`,...i?{attestation:i}:{}};if(n.decision===`always`)return{decision:`always`,pattern:typeof n.pattern==`string`&&n.pattern.trim().length>0?n.pattern.trim():t,...i?{attestation:i}:{}};if(n.decision!==`deny`)return r();let a=y.find(e=>e===n.reason);return a?{decision:`deny`,reason:a}:{decision:`deny`}}var x=t(`sudo`),S=`__slicc_sudo`;function C(e){return c(w(e))}function w(e){let t=h(e);return e?.adapter===`extension-direct`||e?.adapter===`extension-delegate`?t:v(t)}function T(e){let t={requestApproval:t=>e.requestApproval(t)};return globalThis[S]=t,x.info(`sudo broker test hook published on globalThis.__slicc_sudo`),t}export{C as createSudoBroker,a as installPanelSudoResponder,T as installSudoTestHook};
|
|
@@ -1,3 +1,3 @@
|
|
|
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";import{t as c}from"./
|
|
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";import{t as c}from"./sudo-refusal-DVwTXFRE.js";const l=e(`sudo:fs`),u=Symbol.for(`slicc.fs.monkeypatchUnsafe`),d=`${o}/granted`;function f(e){return c(`sudo`,e)}const p=[`readFile`,`readFileRange`,`getNativeFile`,`readTextFile`,`readDir`,`exists`,`stat`],m=[`writeFile`,`appendFile`],h=[`mkdir`,`rm`,`chmod`,`utimes`];async function g(e,t,a,s){let c=i(s);if(!c)return;let u=t(),f={pattern:c,nopasswd:!0,regex:n(c)};(a===`read`?u.read:u.write).push(f);let p=`NOPASSWD ${a===`read`?`Read`:`Write`} ${c}\n`;try{await e.mkdir(o,{recursive:!0});let t=``;try{t=await e.readFile(d,{encoding:`utf-8`})}catch(e){if(!(e instanceof r&&e.code===`ENOENT`))throw e}let n=t.length>0&&!t.endsWith(`
|
|
2
2
|
`)?`
|
|
3
3
|
`:``;await e.writeFile(d,t+n+p)}catch(e){l.warn(`Failed to persist NOPASSWD grant; effective in-session only`,{error:e instanceof Error?e.message:String(e)})}}function _(e,n){let{broker:i,getPolicy:o}=n,c=n.defaultDisposition??`allow`,d=n.onGrant?n.onGrant:(t,n)=>g(e,o,t,n);async function _(e,n,u=!1){let p=t(n),m=s(o(),e,p,{isContentWrite:u}),h=e===`write`?a(m,c):m;if(h===`deny`)throw l.warn(`Refusing write to an unhonoured sudoers path`,{path:p}),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`,p);if(h!==`require-approval`)return;let g=e,_=await i.requestApproval({kind:g,detail:p});if(_.decision===`deny`)throw new r(`EACCES`,f(_),p);_.decision===`always`&&await d(e,_.pattern?.trim()||p)}function v(e){return s(o(),`read`,t(e))!==`require-approval`}let y=t=>typeof e[t]==`function`,b={};for(let t of p)y(t)&&(b[t]=async(n,...r)=>(await _(`read`,n),e[t](n,...r)));for(let t of m)y(t)&&(b[t]=async(n,...r)=>(await _(`write`,n,!0),e[t](n,...r)));for(let t of h)y(t)&&(b[t]=async(n,...r)=>(await _(`write`,n),e[t](n,...r)));return y(`walk`)&&(b.walk=async function*(t,...n){await _(`read`,t),yield*e.walk(t,...n)}),y(`symlink`)&&(b.symlink=async(t,n)=>(await _(`write`,n),e.symlink(t,n))),y(`rename`)&&(b.rename=async(t,n)=>(await _(`read`,t),await _(`write`,t),await _(`write`,n),e.rename(t,n))),y(`copyFile`)&&(b.copyFile=async(t,n)=>(await _(`read`,t),await _(`write`,n),e.copyFile(t,n))),y(`updateMetadataBatch`)&&(b.updateMetadataBatch=async t=>{let n=t;for(let e of n)await _(`write`,e.path);return e.updateMetadataBatch(t)}),y(`symlinkBatch`)&&(b.symlinkBatch=async t=>{let n=t;for(let e of n)await _(`write`,e.path);return e.symlinkBatch(t)}),y(`mount`)&&(b.mount=async(t,...n)=>(await _(`write`,t),e.mount(t,...n))),y(`unmount`)&&(b.unmount=async t=>(await _(`write`,t),e.unmount(t))),y(`refreshMount`)&&(b.refreshMount=async(t,...n)=>(await _(`write`,t),e.refreshMount(t,...n))),y(`statSync`)&&(b.statSync=t=>v(t)?e.statSync(t):null),y(`readDirSync`)&&(b.readDirSync=t=>v(t)?e.readDirSync(t):null),new Proxy(e,{get(e,t,n){if(t===u)return!0;if(typeof t==`string`&&t in b)return b[t];let r=Reflect.get(e,t,n);return typeof r==`function`?r.bind(e):r}})}export{u as n,_ as r,d as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={"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.`,unavailable:`no approval prompt could be shown to anyone — the approval surface failed before a human or approver saw the request. This is NOT a denial; nobody refused. Do not retry this action in a loop; report that the approval could not be requested.`};function t(t){return e[t]}function n(e,n){let r=n.decision===`deny`?n.reason:void 0,i=r?r===`unavailable`?`${e}: approval could not be requested — ${t(r)}`:`${e}: approval request timed out — ${t(r)}`:`${e}: approval denied`,a=n.note?.trim();return a?`${i} — approver's reason: ${a}`:i}export{n as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{n}from"./jsh-executor-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{n}from"./jsh-executor-of_S2nM9.js";const r=`/workspace/.jshd`,i=`/workspace/.jshd/log`,a=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function o(e){return a.test(e)&&e!==`log`}function s(e){if(!o(e))throw Error(`invalid unit name '${e}' (use letters, digits, '.', '_' or '-')`)}function c(e){return s(e),`${r}/${e}.json`}function l(e){return s(e),`${i}/${e}.log`}const u=6e4;var d=e({appendUnitLog:()=>y,deleteUnitRecord:()=>_,ensureJshdDirs:()=>m,listUnitRecords:()=>v,readUnitLog:()=>b,readUnitRecord:()=>g,writeUnitRecord:()=>h});const f=new Set([`always`,`on-failure`,`no`]);function p(e){return typeof e==`string`?e:new TextDecoder().decode(e)}async function m(e){await e.mkdir(r,{recursive:!0}),await e.mkdir(i,{recursive:!0})}async function h(e,t){if(!o(t.name))throw Error(`invalid unit name '${t.name}' (use letters, digits, '.', '_' or '-')`);await m(e),await e.writeFile(c(t.name),`${JSON.stringify(t,null,2)}\n`)}async function g(e,t){if(!o(t))return null;let n=c(t);if(!await e.exists(n))return null;try{let r=x(JSON.parse(p(await e.readFile(n))));return!r||r.name!==t?null:r}catch{return null}}async function _(e,t){if(!o(t))return;let n=c(t);await e.exists(n)&&await e.rm?.(n);let r=l(t);await e.exists(r)&&await e.rm?.(r)}async function v(e){if(!await e.exists(`/workspace/.jshd`))return[];let t=await C(e,r),n=[];for(let r of t){if(!r.endsWith(`.json`))continue;let t=r.slice(0,-5);if(!o(t))continue;let i=await g(e,t);i&&n.push(i)}return n.sort((e,t)=>e.name.localeCompare(t.name)),n}async function y(e,t,n){if(!n||!o(t))return;await m(e);let r=l(t);if(e.appendFile){await e.appendFile(r,n);return}let i=await e.exists(r)?p(await e.readFile(r)):``;await e.writeFile(r,i+n)}async function b(e,t){if(!o(t))return``;let n=l(t);return await e.exists(n)?p(await e.readFile(n)):``}function x(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.name!=`string`||!o(t.name)||!Array.isArray(t.argv)||typeof t.cwd!=`string`||typeof t.createdAt!=`string`||typeof t.enabled!=`boolean`||typeof t.restart!=`string`||!f.has(t.restart))return null;let n=t.argv.filter(e=>typeof e==`string`);return n.length===0?null:{name:t.name,argv:n,cwd:t.cwd,env:S(t.env),restart:t.restart,enabled:t.enabled,createdAt:t.createdAt}}function S(e){let t={};if(typeof e!=`object`||!e||Array.isArray(e))return t;for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return t}async function C(e,t){try{if(e.readdir)return await e.readdir(t);if(e.readDir)return(await e.readDir(t)).map(e=>typeof e==`string`?e:e.name)}catch{return[]}return[]}const w=new class{jobs=new Map;upsert(e){this.jobs.set(e.id,{...e,argv:[...e.argv]})}get(e){let t=this.jobs.get(e);return t?{...t,argv:[...t.argv]}:void 0}remove(e){this.jobs.delete(e)}list(){return[...this.jobs.values()].map(e=>({...e,argv:[...e.argv]}))}clear(){this.jobs.clear()}},T=t(`jshd`);var E=class{units=new Map;logQueues=new Map;deps;constructor(e){this.deps=e}isDurable(){return this.deps.isDurable?.()??typeof Worker<`u`}list(){return[...this.units.values()].map(e=>this.toStatus(e)).sort((e,t)=>e.name.localeCompare(t.name))}status(e){let t=this.units.get(e);return t?this.toStatus(t):null}async start(e){let t=this.units.get(e.name);if(t&&(t.state===`running`||t.state===`starting`))throw Error(`unit '${e.name}' is already ${t.state}`);let n=this.makeLive(e);this.units.set(e.name,n);try{await h(this.deps.fs,e)}catch(t){throw this.units.delete(e.name),t}let r=new Promise((e,t)=>{n.spawnResolve=e,n.spawnReject=t});return n.loop=this.runLoop(n),{pid:await r,durable:this.isDurable()}}async stop(e){let t=this.units.get(e);return t?(t.stopRequested=!0,t.backoffAbort?.abort(),t.pid!==null&&this.deps.processManager.signal(t.pid,`SIGTERM`),t.loop!=null&&await t.loop.catch(()=>void 0),t.state=`stopped`,t.pid=null,this.syncJob(t),await this.flushLogs(e),!0):!1}async restart(e){let t=this.units.get(e)?.record??await g(this.deps.fs,e);return t?(await this.stop(e),this.start(t)):null}async rm(e){await this.stop(e),this.units.delete(e),w.remove(D(e)),await this.flushLogs(e);let{deleteUnitRecord:t}=await Promise.resolve().then(()=>d);return await t(this.deps.fs,e),!0}async setEnabled(e,t){let n=this.units.get(e),r=n?.record??await g(this.deps.fs,e);if(!r)return null;let i={...r,enabled:t};return n&&(n.record=i),await h(this.deps.fs,i),i}dispose(){for(let e of this.units.values())e.stopRequested=!0,e.backoffAbort?.abort(),e.pid!==null&&this.deps.processManager.signal(e.pid,`SIGKILL`);this.units.clear()}makeLive(e){return{record:e,pid:null,state:`starting`,restarts:0,startedAt:null,lastExitCode:null,stopRequested:!1,restartAt:[],spawnResolve:null,spawnReject:null,loop:null,backoffAbort:null}}async runLoop(e){try{for(;!e.stopRequested;){let t=await this.runOnce(e);if(e.lastExitCode=t.exitCode,e.pid=null,e.stopRequested||t.signaled){e.state=`stopped`,this.syncJob(e);return}if(!this.shouldRestart(e,t.exitCode)){e.state=`stopped`,this.syncJob(e);return}if(this.hitCrashLoop(e)){e.state=`errored`,this.syncJob(e),this.emitCrashLoop(e);return}if(await this.backoff(e),e.stopRequested){e.state=`stopped`,this.syncJob(e);return}e.restarts+=1}e.state=`stopped`,this.syncJob(e)}catch(t){T.warn(`jshd unit loop failed`,{name:e.record.name,error:t instanceof Error?t.message:String(t)}),e.state=`errored`,e.spawnReject?.(t instanceof Error?t:Error(String(t))),this.syncJob(e)}}async runOnce(e){e.state=`starting`,e.startedAt=this.now(),this.syncJob(e);let t=e.record.argv[0],r=e.record.argv.slice(1),i=this.deps.buildContext(e.record),a=await n(t,r,i,this.pmConfig(),{...this.deps.realmFactory?{realmFactory:this.deps.realmFactory}:{},captureOutput:!1,onSpawn:t=>{e.pid=t,e.state=`running`,this.syncJob(e),e.spawnResolve?.(t),e.spawnResolve=null,e.spawnReject=null},onOutput:t=>{this.enqueueLog(e.record.name,t)}});e.pid===null&&(e.spawnReject?.(Error(a.stderr.trim()||`unit '${e.record.name}' failed to start`)),e.spawnResolve=null,e.spawnReject=null);let o=e.pid===null?null:this.deps.processManager.get(e.pid);return{exitCode:a.exitCode,signaled:o?.terminatedBy!=null}}shouldRestart(e,t){return e.record.restart===`no`?!1:e.record.restart===`always`||t!==0}hitCrashLoop(e){let t=this.now();return e.restartAt=e.restartAt.filter(e=>t-e<u),e.restartAt.push(t),e.restartAt.length>=8}async backoff(e){let t=Math.min(e.restarts,8),n=Math.min(3e4,1e3*2**t),r=this.deps.sleep??O,i=new AbortController;e.backoffAbort=i;try{await r(n,i.signal)}catch{e.stopRequested=!0}finally{e.backoffAbort=null}}emitCrashLoop(e){let t=e.record.name,n=`jshd unit '${t}' marked errored after ${e.restarts} restarts in ${u/1e3}s`;this.deps.lickManager?.emitEvent({type:`jshd`,jshdName:t,jshdRestarts:e.restarts,resultPath:l(t),preview:n,timestamp:new Date(this.now()).toISOString(),body:{kind:`jshd`,name:t,reason:`crash-loop`,restarts:e.restarts}})}enqueueLog(e,t){let n=(this.logQueues.get(e)??Promise.resolve()).then(()=>this.tee(e,t)).catch(()=>void 0);return this.logQueues.set(e,n),n}async flushLogs(e){let t=this.logQueues.get(e);t&&(await t.catch(()=>void 0),this.logQueues.delete(e))}async tee(e,t){try{await y(this.deps.fs,e,t)}catch(t){T.warn(`failed to tee jshd log`,{name:e,error:t instanceof Error?t.message:String(t)})}}pmConfig(){return{processManager:this.deps.processManager,owner:{kind:`jshd`}}}syncJob(e){w.upsert({id:D(e.record.name),kind:`jshd`,pid:e.pid,argv:e.record.argv,status:e.state,startedAt:e.startedAt??this.now(),restarts:e.restarts})}toStatus(e){let t=this.now();return{name:e.record.name,pid:e.pid,state:e.state,restarts:e.restarts,uptimeMs:e.startedAt!==null&&e.state===`running`?t-e.startedAt:null,enabled:e.record.enabled,restart:e.record.restart,argv:e.record.argv,cwd:e.record.cwd,durable:this.isDurable(),lastExitCode:e.lastExitCode}}now(){return this.deps.now?.()??Date.now()}};function D(e){return`jshd:${e}`}function O(e,t){return e<=0?Promise.resolve():t?.aborted?Promise.reject(k()):new Promise((n,r)=>{let i=setTimeout(()=>{t?.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),r(k())};t?.addEventListener(`abort`,a,{once:!0})})}function k(){let e=Error(`aborted`);return e.name=`AbortError`,e}let A=null;function j(e){return A||(e?(A=new E(e),A):null)}function M(e){return A||=new E(e),A}export{g as a,b as i,M as n,d as o,v as r,o as s,j as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./bridge-protocol-C52CnDIj.js";import{n as t}from"./clipboard-eqmn97SP.js";import{n}from"./icons-2DY2vYOc.js";import{A as r,D as i,M as a,N as o,O as s,j as c,k as l}from"./wc-live-
|
|
1
|
+
import{a as e}from"./bridge-protocol-C52CnDIj.js";import{n as t}from"./clipboard-eqmn97SP.js";import{n}from"./icons-2DY2vYOc.js";import{A as r,D as i,M as a,N as o,O as s,j as c,k as l}from"./wc-live-CKe14UhT.js";function u(e){let t=[{id:`browser`,label:`Browser`},{id:`iphone`,label:`iPhone`},{id:`terminal`,label:`Terminal`}];return e>0&&t.unshift({id:`status`,label:`Status`,badge:e}),t}function d(e){return e>0?`status`:`browser`}function f(e){let t;try{t=new URL(e)}catch{return e}let n=t.pathname.split(`/`),r=n.lastIndexOf(`join`)+1;return r===0||r>=n.length||!n[r]?e:(n[r]=`•`.repeat(8),`${t.origin}${n.join(`/`)}${t.search}${t.hash}`)}function p(e){return`slicc ${e} follow bash -c`}var m=e;function h(e){try{return new URL(e).origin}catch{return m}}function g(e){return`curl -fsSL ${h(e)}/install-cli | sh`}function _(e){return`irm ${h(e)}/install-cli.ps1 | iex`}function v(e){switch(e){case`browser`:return[`Open Sliccy in the other browser, click the avatar, and choose “Connect to another browser”.`,`Paste the join link there.`];case`iphone`:return[`In the Sliccy app, paste the join link into Settings → Join link.`,`Signed in to the same iCloud account? The session is already listed under iCloud Sessions — no link needed.`];case`terminal`:return[`Lend a machine to this session — run these in its terminal:`,`The agent can then run commands on that machine as you.`]}}function y(e){return e===0?`Nothing connected yet.`:`${e} ${e===1?`device is`:`devices are`} connected.`}function b(e){return e===0?`Revoke link? The old link stops working.`:`Revoke link? ${e} connected ${e===1?`device`:`devices`} will be disconnected.`}var x=`font-family: var(--s2-font-mono); font-size: 11px; color: var(--s2-content-default); word-break: break-all; padding: 8px 12px; background: var(--s2-bg-sunken); border-radius: var(--s2-radius-default); border: 1px solid var(--s2-border-subtle);`,S=`font-size: 11px; color: var(--s2-content-secondary);`,C=`font-size: 12px; color: var(--s2-content-default);`,w=`flex: 0 0 auto; width: auto; padding: 8px 14px;`;function T(e,t,n){let r=document.createElement(e);return t&&(r.style.cssText=t),n!=null&&(r.textContent=n),r}function E(e,t,n=`normal`){e.statusEl.textContent=t,e.statusEl.style.color=n===`error`?`var(--slicc-cone)`:`var(--s2-content-secondary)`}async function D(e,n,r){await t(n)?E(e,r):E(e,`Couldn’t copy. Select the text and copy it manually.`,`error`)}async function O(e){let{onReset:t}=e.options,n=e.revokeBtn;if(!(!t||!n)){if(!e.revokeArmed){e.revokeArmed=!0,n.textContent=b(e.followers.length),k(n,!0);return}n.disabled=!0,e.doneBtn.disabled=!0,E(e,`Revoking the join link…`);try{await t(),E(e,`Join link revoked. Enable sharing from the avatar menu to get a new one.`),e.urlRevealed=!1,n.textContent=`Revoked`,e.doneBtn.disabled=!1,L(e)}catch(t){E(e,`Revoke failed: ${t instanceof Error?t.message:String(t)}`,`error`),e.revokeArmed=!1,n.textContent=`Revoke link`,k(n,!1),n.disabled=!1,e.doneBtn.disabled=!1}}}function k(e,t){e.dataset.armed=t?`1`:`0`,e.style.background=t?`var(--s2-negative)`:``,e.style.borderColor=t?`transparent`:``,e.style.color=t?`#fff`:``}function A(e){let t=T(`div`),n=T(`button`,`margin-bottom: 8px;`,`Copy join link`);n.className=`dialog__btn dialog__btn--secondary`,n.dataset.action=`copy-link`,n.addEventListener(`click`,()=>{D(e,e.options.joinUrl,`Join link copied.`)}),t.appendChild(n);let r=T(`div`,`display: flex; align-items: center; gap: 8px;`),i=T(`div`,`${x} flex: 1 1 auto; min-width: 0; color: var(--s2-content-secondary);`);i.dataset.joinUrl=`1`,i.textContent=e.urlRevealed?e.options.joinUrl:f(e.options.joinUrl);let a=T(`button`,`${w}`,e.urlRevealed?`Hide`:`Show`);return a.className=`dialog__btn dialog__btn--secondary`,a.dataset.action=`toggle-url`,a.addEventListener(`click`,()=>{e.urlRevealed=!e.urlRevealed,L(e)}),r.append(i,a),t.appendChild(r),t.appendChild(T(`div`,`${S} margin-top: 8px;`,`Anyone with this link can drive this session.`)),t}function j(e,t){let n=T(`div`,`margin-bottom: 10px;`);n.appendChild(T(`div`,`${S} margin-bottom: 4px;`,t.caption));let r=T(`div`,`${x} margin-bottom: 6px;`,t.command);r.dataset.command=t.action,n.appendChild(r);let i=T(`button`,`margin-bottom: 0;`,t.copyLabel);return i.className=`dialog__btn dialog__btn--secondary`,i.dataset.action=t.action,i.addEventListener(`click`,()=>{D(e,t.copyValue??t.command,t.okMessage)}),n.appendChild(i),n}function M(e,t){let n=T(`div`),{joinUrl:r}=e.options,i=p(r),a=e.urlRevealed?i:p(f(r));n.appendChild(j(e,{caption:`1. Install the slicc CLI (skip if you already have it):`,command:g(r),action:`copy-install`,copyLabel:`Copy install command`,okMessage:`Install command copied.`})),n.appendChild(T(`div`,`${S} margin: -6px 0 12px;`,`Windows: ${_(r)}`)),n.appendChild(j(e,{caption:`2. Connect that machine to this session:`,command:a,copyValue:i,action:`copy-command`,copyLabel:`Copy command`,okMessage:`Command copied.`}));let o=T(`button`,`${w} margin-bottom: 8px;`,e.urlRevealed?`Hide link`:`Show link`);return o.className=`dialog__btn dialog__btn--secondary`,o.dataset.action=`toggle-url`,o.addEventListener(`click`,()=>{e.urlRevealed=!e.urlRevealed,L(e)}),n.appendChild(o),n.appendChild(T(`div`,`${S} margin-bottom: 0;`,`\u26a0 ${t}`)),n}function N(e,t){let n=T(`div`),[r,i]=v(t);return n.appendChild(T(`div`,`${C} line-height: 1.5; margin-bottom: 6px;`,r)),t===`terminal`?(n.appendChild(M(e,i)),n):(n.appendChild(T(`div`,`${S} margin-bottom: 10px;`,i)),n.appendChild(A(e)),n)}function P(e){let t=T(`div`,`display: grid; grid-template-columns: 16px 1fr auto; gap: 8px; align-items: start;`);t.dataset.follower=e.runtimeId;let i=T(`span`,`display: flex; margin-top: 2px; color: var(--s2-content-secondary);`);i.appendChild(n(r(e),{size:14})),t.appendChild(i);let u=T(`div`,`display: flex; flex-direction: column; gap: 2px; min-width: 0;`);u.appendChild(T(`div`,`${C} font-weight: 500;`,o(e)));let d=l(e);d&&u.appendChild(T(`div`,`${S} overflow-wrap: anywhere;`,d));let f=s(e);if(f.length>0){let e=T(`div`,`display: flex; gap: 4px; flex-wrap: wrap; margin-top: 2px;`);for(let t of f)e.appendChild(T(`span`,`padding: 1px 6px; border-radius: 9999px; background: var(--s2-bg-layer-1); border: 1px solid var(--s2-border-subtle); font-size: 10px; font-weight: 600; color: var(--s2-content-secondary);`,t));u.appendChild(e)}t.appendChild(u);let p=a(e),m=p===`active`?`var(--s2-positive)`:p===`warn`?`var(--s2-notice)`:`var(--s2-content-tertiary)`,h=T(`div`,`display: flex; align-items: center; gap: 5px; ${S} white-space: nowrap;`);return h.appendChild(T(`span`,`width: 6px; height: 6px; border-radius: 50%; flex: 0 0 auto; background: ${m};`)),h.appendChild(T(`span`,void 0,c(e))),t.appendChild(h),t}function F(e){let t=T(`div`,`display: flex; flex-direction: column; gap: 10px;`);for(let n of e.followers)t.appendChild(P(n));return e.followers.length===0&&t.appendChild(T(`div`,`font-size: 12px; color: var(--s2-content-secondary);`,`Nothing connected right now.`)),t}function I(e,t,n){let r=t===e.activeTab,i=T(`button`,`flex: 0 0 auto; padding: 4px 10px; border-radius: 9999px; font-size: 12px; cursor: pointer; border: 1px solid ${r?`var(--s2-border-subtle)`:`transparent`}; background: ${r?`var(--s2-bg-layer-1)`:`transparent`}; color: ${r?`var(--s2-content-default)`:`var(--s2-content-secondary)`};`,n);return i.type=`button`,i.setAttribute(`role`,`tab`),i.setAttribute(`aria-selected`,String(r)),i.dataset.tab=t,i.addEventListener(`click`,()=>{e.activeTab=t,L(e)}),i}function L(e){let t=u(e.followers.length);t.some(t=>t.id===e.activeTab)||(e.activeTab=d(0)),e.tabsRow.replaceChildren(...t.map(t=>I(e,t.id,t.badge==null?t.label:`${t.label} · ${t.badge}`))),e.body.replaceChildren(e.activeTab===`status`?F(e):N(e,e.activeTab)),e.summaryEl.textContent=y(e.followers.length),e.revokeBtn&&!e.revokeArmed&&e.revokeBtn.textContent!==`Revoked`&&(e.revokeBtn.textContent=`Revoke link`,k(e.revokeBtn,!1))}function R(e){let t=T(`div`);t.className=`dialog-overlay`,t.dataset.syncDialog=`1`;let n=T(`div`);n.className=`dialog`,n.setAttribute(`role`,`dialog`),n.setAttribute(`aria-modal`,`true`),n.setAttribute(`aria-label`,`Session sharing`),t.appendChild(n);let r=T(`div`,void 0,`Session sharing`);r.className=`dialog__title`;let i=T(`div`,`display: flex; gap: 4px; margin-bottom: 12px; flex-wrap: wrap;`);i.setAttribute(`role`,`tablist`);let a=T(`div`,`margin-bottom: 12px;`);a.setAttribute(`role`,`tabpanel`);let o=T(`div`,`font-size: 12px; margin-bottom: 8px; min-height: 16px;`);o.setAttribute(`role`,`status`),o.setAttribute(`aria-live`,`polite`);let s=T(`div`,`${S} margin-bottom: 8px;`),c=T(`button`,void 0,`Done`);c.className=`dialog__btn`,n.append(r,i,a,o,s,c);let l=e.followers??[];return{options:e,followers:l,activeTab:e.initialTab??d(l.length),urlRevealed:!1,revokeArmed:!1,overlay:t,tabsRow:i,body:a,statusEl:o,summaryEl:s,doneBtn:c,revokeBtn:null}}var z=null;function B(e){z?.(),document.querySelectorAll(`.dialog-overlay[data-sync-dialog]`).forEach(e=>{e.remove()});let t=R(e),n=t.overlay.firstElementChild;if(e.onReset){let e=T(`button`,`margin-top: 8px;`,`Revoke link`);e.className=`dialog__btn dialog__btn--secondary`,e.dataset.action=`revoke`,e.addEventListener(`click`,()=>{O(t)}),n.appendChild(e),t.revokeBtn=e}let r=e=>{t.followers=e.detail?.followers??[],L(t)},a=e=>{e.key===`Escape`&&o()};function o(){window.removeEventListener(i,r),document.removeEventListener(`keydown`,a),t.overlay.remove(),z===o&&(z=null)}t.doneBtn.addEventListener(`click`,()=>o()),t.overlay.addEventListener(`click`,e=>{e.target===t.overlay&&o()}),window.addEventListener(i,r),document.addEventListener(`keydown`,a),z=o,e.copied&&E(t,`Join link copied to clipboard.`),L(t),document.body.appendChild(t.overlay)}export{B as showSyncEnabledDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ct as e}from"./wc-shell-
|
|
1
|
+
import{ct as e}from"./wc-shell-BcFO-uxW.js";import"./proxied-fetch-4VBgrEIu.js";import{n as t}from"./runtime-env-Dlaokqg1.js";import{s as n,t as r}from"./api-endpoint-DuEQRZ4g.js";import{t as i}from"./shared-DSEuryGJ.js";var a=1e3;function o(e=()=>Date.now()){let t=new Map,n=null,r=0,i=()=>{let e=0,n=0;for(let r of t.values())e+=r.loaded,n+=r.total;return{loaded:e,total:n}};return{update(a,o,s){t.set(a,{loaded:Math.max(0,o),total:Math.max(t.get(a)?.total??0,s,o)}),n===null&&(n=e(),r=i().loaded)},complete(e){let n=t.get(e);n&&(n.loaded=n.total)},snapshot(){let{loaded:t,total:o}=i(),s=null;if(n!==null&&o>0&&t<o){let i=e()-n,c=t-r;if(i>=a&&c>0){let e=c/i;s=(o-t)/e/1e3}}return o>0&&t>=o&&(s=0),{loaded:t,total:o,etaSeconds:s}}}}var s=`onnx-community/whisper-tiny`,c=`onnx-community/Kokoro-82M-v1.0-ONNX`,l=Symbol.for(`slicc.transformers-env.fetch-wrapped`),u=t,d=`/workspace/node_modules/onnxruntime-web/dist/`,f=`/workspace/models/`;function p(e){return typeof e==`string`?e:e instanceof URL?e.toString():e.url}function m(e){let t=p(e);return t.startsWith(`http://`)||t.startsWith(`https://`)}function h(){return globalThis.location?.origin??null}function g(e){let t=h();if(!t)return!1;try{return new URL(p(e)).origin===t}catch{return!1}}async function _(e,t){let i=p(e),a={};t?.headers&&new Headers(t.headers).forEach((e,t)=>{a[t]=e});let o=r({...a,"X-Target-URL":i}),s=(t?.method??`GET`).toUpperCase(),c={method:s,headers:o,cache:`no-store`};return t?.body&&s!==`GET`&&s!==`HEAD`&&(c.body=t.body),fetch(n(`/api/fetch-proxy`),c)}var v=3e4,y=[`ort-wasm-simd-threaded.jsep.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.31.0-dev.20260914-8d85527a0/dist/ort-wasm-simd-threaded.jsep.wasm`,`ort-wasm-simd-threaded.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.31.0-dev.20260914-8d85527a0/dist/ort.wasm`,`ort-wasm-simd-threaded.asyncify.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.31.0-dev.20260914-8d85527a0/dist/ort-wasm-simd-threaded.asyncify.wasm`,`ort-wasm-simd-threaded.jspi.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.31.0-dev.20260914-8d85527a0/dist/ort-wasm-simd-threaded.jspi.wasm`],b=Symbol.for(`slicc.transformers-env.vfs-enoent`);function x(e){if(typeof BroadcastChannel>`u`)return Promise.reject(Error(`Cannot read VFS path ${e}: BroadcastChannel unavailable in this realm`));let t=new BroadcastChannel(`preview-vfs`),n=`tfx-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise((r,i)=>{let a=e=>{t.removeEventListener(`message`,c),t.close(),e()},o,s=()=>{clearTimeout(o),o=setTimeout(()=>{let t=Error(`ENOENT: ${e} (preview-vfs responder timed out)`);t[b]=!0,a(()=>i(t))},v)};s();let c=t=>{let c=t.data;if(!c||c.id!==n)return;if(c.type===`preview-vfs-start`){s();return}if(c.type!==`preview-vfs-response`)return;if(clearTimeout(o),typeof c.error==`string`){let e=Error(c.error);c.error.includes(`ENOENT`)&&(e[b]=!0),a(()=>i(e));return}let l=c.content;if(l instanceof Uint8Array){a(()=>r(l));return}if(typeof l==`string`){a(()=>r(new TextEncoder().encode(l)));return}a(()=>i(Error(`Unexpected empty preview-vfs response for ${e}`)))};t.addEventListener(`message`,c),t.postMessage({type:`preview-vfs-read`,id:n,path:e,asText:!1})})}function S(e){return!!e?.[b]}function C(e){let t=new ArrayBuffer(e.byteLength),n=new Uint8Array(t);return n.set(e),n}function w(e,t){return!t||!e.startsWith(t)?null:`${f}${e.slice(t.length).split(`?`)[0].split(`#`)[0]}`}async function T(e,t){let n;try{n=await x(e)}catch(t){if(S(t))return new Response(`Not found: ${e}`,{status:404,headers:{"Content-Type":`text/plain`}});throw t}let r=i(e);return(t?.headers?new Headers(t.headers).get(`range`):null)===`bytes=0-0`?new Response(null,{status:206,headers:{"Content-Type":r,"Content-Length":String(n.byteLength),"Content-Range":`bytes 0-0/${n.byteLength}`}}):new Response(C(n),{status:200,headers:{"Content-Type":r,"Content-Length":String(n.byteLength)}})}var E=null;async function D(){if(typeof URL>`u`||typeof URL.createObjectURL!=`function`)throw Error(`onnxruntime-web blob URLs require URL.createObjectURL (browser realm only)`);let e={};if(await Promise.all(y.map(async t=>{try{let n=await x(`${d}${t}`),r=new Blob([C(n)],{type:i(t)});e[t]=URL.createObjectURL(r)}catch(e){if(!S(e))throw e}})),Object.keys(e).length===0)throw Error("onnxruntime-web is not installed — run `ipk add onnxruntime-web` to stage the wasm runtime in /workspace/node_modules/.");return e}function O(){return E||=D(),E}var k=`slicc_ort_num_threads`;function A(e){if(!e.isolated)return 1;let t=e.hardwareConcurrency,n=typeof t==`number`&&Number.isFinite(t)&&t>=1,r=n?Math.min(4,Math.floor(t)):4,i=e.override==null?NaN:Number.parseInt(e.override,10);return Number.isFinite(i)&&i>=1?Math.max(1,Math.min(r,i)):n?Math.max(1,r):1}function j(){let e=null;try{e=globalThis.localStorage?.getItem(`slicc_ort_num_threads`)??null}catch{}let t={isolated:globalThis.crossOriginIsolated===!0,hardwareConcurrency:globalThis.navigator?.hardwareConcurrency,override:e},n=A(t);return e!=null&&t.isolated&&console.warn(`[speech] ort-web numThreads=${n} forced by localStorage.${k}=${JSON.stringify(e)} — this persists until removed`),n}function M(t){let n=t.backends?.onnx?.wasm;if(n&&(n.wasmPaths=e(d),n.numThreads=j()),t.allowRemoteModels=!1,t.allowLocalModels=!0,t.localModelPath=e(f),t.useBrowserCache=!1,u())return;t.allowRemoteModels=!0,t.remoteHost=t.localModelPath,t.remotePathTemplate=`{model}/`,n&&O().then(e=>{n.wasmPaths=e},()=>{});let r=t.fetch;if(r?.[l])return;let i=r,a=t.localModelPath,o=async(e,t)=>{let n=w(p(e),a);return n===null?!m(e)||g(e)?i?i(e,t):fetch(e,t):_(e,t):T(n,t)};o[l]=!0,t.fetch=o}async function N(e){let t=`weights for ${e} are missing — run \`hf download ${e}\` to fetch them into /workspace/models/.`;try{await x(`${f}${e}/config.json`)}catch(e){if(S(e))throw Error(t);let n=e instanceof Error?e.message:String(e);throw Error(`${t} (probe failed: ${n})`)}}export{s as a,c as i,M as n,o,O as r,N as t};
|