sliccy 6.164.1 → 6.166.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/dist/node-server/_shared/agent-wire-types.d.ts +7 -1
- package/dist/node-server/_shared/agent-wire-types.d.ts.map +1 -1
- package/dist/node-server/_shared/computer-protocol.d.ts +108 -0
- package/dist/node-server/_shared/computer-protocol.d.ts.map +1 -0
- package/dist/node-server/_shared/computer-protocol.js +10 -0
- package/dist/node-server/_shared/computer-protocol.js.map +1 -0
- package/dist/node-server/_shared/index.d.ts +1 -0
- package/dist/node-server/_shared/index.d.ts.map +1 -1
- package/dist/node-server/_shared/index.js +1 -0
- package/dist/node-server/_shared/index.js.map +1 -1
- package/dist/ui/.vite/manifest.json +184 -174
- package/dist/ui/assets/{SKILL-C8DJkgFD.js → SKILL-BGEZa-y0.js} +1 -1
- package/dist/ui/assets/SKILL-DB5CVwyu.js +1 -0
- package/dist/ui/assets/SKILL-DEFDsScb.js +1 -0
- package/dist/ui/assets/SKILL-DZoCcID_.js +1 -0
- package/dist/ui/assets/{SKILL-BXSAhY0E.js → SKILL-cOU0zXaK.js} +3 -0
- package/dist/ui/assets/__vite-browser-external-C-cVeSv_.js +1 -0
- package/dist/ui/assets/{account-store-CScbFg3i.js → account-store-BEqmysw9.js} +1 -1
- package/dist/ui/assets/{account-store-DEob4Tob.js → account-store-C35GYvum.js} +1 -1
- package/dist/ui/assets/{adobe-CgamcTLU.js → adobe-BDH5oLAN.js} +1 -1
- package/dist/ui/assets/adobe-BcTGFCnQ.js +1 -0
- package/dist/ui/assets/{agent-panels-XcqgFmF4.js → agent-panels-DvqNnkLk.js} +1 -1
- package/dist/ui/assets/almost-bash-shell-headless-DqTtE9CM.js +3500 -0
- package/dist/ui/assets/{apply-layout-BDanZxtJ.js → apply-layout-CjYRGs37.js} +1 -1
- package/dist/ui/assets/{approver-agent-CCkU0PVa.js → approver-agent-CvnFt_s6.js} +1 -1
- package/dist/ui/assets/{apps-CU2dHbHf.js → apps-dzoLZ_5W.js} +1 -1
- package/dist/ui/assets/{azure-openai-kjz9Dci1.js → azure-openai-BffwoCtp.js} +1 -1
- package/dist/ui/assets/{azure-openai-Cl5VKD9d.js → azure-openai-DKGdcr4S.js} +1 -1
- package/dist/ui/assets/{backend-hostfs-DU0NS-tW.js → backend-hostfs-CWIlIhve.js} +1 -1
- package/dist/ui/assets/bridge-protocol-31SWTdS5.js +1 -0
- package/dist/ui/assets/{browser-fOe3v0iv.js → browser-eoO4vY7w.js} +1 -1
- package/dist/ui/assets/buffer-polyfill-BccMjOKj.js +1 -0
- package/dist/ui/assets/{cdp-Cry6h07Z.js → cdp-DXT6yEL1.js} +1 -1
- package/dist/ui/assets/{cerebras-DrMQuNWj.js → cerebras-BF5efkRL.js} +1 -1
- package/dist/ui/assets/{cerebras-CWXTOiZB.js → cerebras-By0l7t0i.js} +1 -1
- package/dist/ui/assets/{composer-speech-HE7hDylv.js → composer-speech-DIEePbQC.js} +1 -1
- package/dist/ui/assets/{connect-surface-DTj_-b2c.js → connect-surface-DBqs7oHf.js} +1 -1
- package/dist/ui/assets/{cost-command-DlIH8zCh.js → cost-command-BULzLcvz.js} +1 -1
- package/dist/ui/assets/descriptor-S4Jug1iP.js +1 -0
- package/dist/ui/assets/directed-approval-D1lGElvD.js +1 -0
- package/dist/ui/assets/engine-B-OPe78i.js +1 -0
- package/dist/ui/assets/{ensure-speech-assets-Bdq2ASEA.js → ensure-speech-assets-BJXemBO4.js} +1 -1
- package/dist/ui/assets/esp8266-l8ELjmQJ.js +1 -0
- package/dist/ui/assets/esptool-operations-h8-8jVn_.js +13 -0
- package/dist/ui/assets/fake-computer-1f2_4vxY.js +65 -0
- package/dist/ui/assets/{frozen-archive-writer-B1ANvJgT.js → frozen-archive-writer-DYPhPMg7.js} +2 -2
- package/dist/ui/assets/{fs-Dlit1SL1.js → fs-BapOupIM.js} +2 -2
- package/dist/ui/assets/{fs-DZGgOIET.js → fs-CBH-hQcI.js} +1 -1
- package/dist/ui/assets/gelatiere-store-C2u47uk0.js +1 -0
- package/dist/ui/assets/gelatiere-unit-wvDEO7gH.js +1 -0
- package/dist/ui/assets/{github-C5AdaH2F.js → github-Bx7_6LBm.js} +2 -2
- package/dist/ui/assets/{github-CGPZBKqk.js → github-Db015Tee.js} +1 -1
- package/dist/ui/assets/{github-auth-BEjdODKn.js → github-auth-DtKS6UIX.js} +1 -1
- package/dist/ui/assets/{github-copilot-D5K0xdpB.js → github-copilot-CtOjxhqK.js} +1 -1
- package/dist/ui/assets/{github-copilot-6b_0-c1B.js → github-copilot-eCfmryv6.js} +1 -1
- package/dist/ui/assets/{github-install-DLv9ZHaT.js → github-install-B6W4-xcc.js} +1 -1
- package/dist/ui/assets/{github-zip-pP3IhiBQ.js → github-zip-Bv1smNmy.js} +1 -1
- package/dist/ui/assets/handoff-link-B3It6xQY.js +1 -0
- package/dist/ui/assets/{hear-CybMJQVi.js → hear-BZHckZJM.js} +1 -1
- package/dist/ui/assets/{help-C1nN0w8V.js → help-BU2Hjl0P.js} +1 -1
- package/dist/ui/assets/host-BQ2qKD-D.js +1 -0
- package/dist/ui/assets/{installer-Chacgw8i.js → installer-BbtH3u7z.js} +1 -1
- package/dist/ui/assets/js-realm-worker-BT3mfq3w.js +50 -0
- package/dist/ui/assets/jsh-CrSWPG4t.js +1 -0
- package/dist/ui/assets/jsh-discovery-D3Gk1cKA.js +1 -0
- package/dist/ui/assets/jsh-executor-BWlgcE2N.js +18 -0
- package/dist/ui/assets/jsh-runtime-extensions-BnLXkzqP.js +1 -0
- package/dist/ui/assets/just-bash-compat-B-SPHuh_.js +1 -0
- package/dist/ui/assets/kernel-worker-Dseu067f.js +1185 -0
- package/dist/ui/assets/{key-GVxFyssW.js → key-6HWbWSGF.js} +1 -1
- package/dist/ui/assets/keys-n5_C9sHW.js +1 -0
- package/dist/ui/assets/lick-urls-DdKPDlgq.js +1 -0
- package/dist/ui/assets/{lick-ws-bridge-BMov8z0m.js → lick-ws-bridge-Cc9sToY7.js} +1 -1
- package/dist/ui/assets/lick-ws-bridge-ChigxI36.js +1 -0
- package/dist/ui/assets/live-session-snapshot-B70raB09.js +1 -0
- package/dist/ui/assets/{local-llm-B7zAVGSm.js → local-llm-Dcp5IIP-.js} +1 -1
- package/dist/ui/assets/{local-llm-ByCXv2P-.js → local-llm-DpSg-Oe3.js} +1 -1
- package/dist/ui/assets/{main-yKaIA_zV.js → main-CfF8CFBr.js} +3 -3
- package/dist/ui/assets/{main-cherry-BNWE5vJO.js → main-cherry-VckJPHm5.js} +1 -1
- package/dist/ui/assets/memory-curation-seam-DUaZFZG9.js +1 -0
- package/dist/ui/assets/memory-health-D7uEvfAx.js +1 -0
- package/dist/ui/assets/memory-v2-flag-BHVbti6Z.js +1 -0
- package/dist/ui/assets/memory-write-execute-rXtR1z76.js +1 -0
- package/dist/ui/assets/merge-file-core-VJlzucJY.js +11 -0
- package/dist/ui/assets/{mount-DvrzOwsL.js → mount-8lU2iH4k.js} +3 -3
- package/dist/ui/assets/mount-DoM0CLGG.js +1 -0
- package/dist/ui/assets/{new-session-C4AXW_7S.js → new-session-DEhAjxP1.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-mNVnQZ_Q.js → oauth-bootstrap-DNTgbEZF.js} +2 -2
- package/dist/ui/assets/{onboarding-orchestrator-BwCfbdlW.js → onboarding-orchestrator-DzPQ0pVG.js} +1 -1
- package/dist/ui/assets/{openai-codex-DRyLvc3I.js → openai-codex-CsAhfz0D.js} +1 -1
- package/dist/ui/assets/{openai-codex-Subg_Vg8.js → openai-codex-DYRKYWTe.js} +1 -1
- package/dist/ui/assets/{openrouter-D5mJU1oF.js → openrouter-D9T6tXUF.js} +1 -1
- package/dist/ui/assets/{openrouter-B52vd-zH.js → openrouter-IyZlRHg4.js} +1 -1
- package/dist/ui/assets/{openrouter-free-CYBINFem.js → openrouter-free-CPshAgQD.js} +1 -1
- package/dist/ui/assets/{openrouter-free-CKmFPQ3y.js → openrouter-free-DfbYsnmf.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-BUFYoKT3.js → openrouter-oauth-hZg6oH0A.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-BML-cBKi.js → openrouter-oauth-xKlWi_wI.js} +1 -1
- package/dist/ui/assets/{opfs-mount-DmOQi3qJ.js → opfs-mount-C9Iamj6N.js} +1 -1
- package/dist/ui/assets/panel-rpc-handlers-Nu-wOrG9.js +2 -0
- package/dist/ui/assets/{panelize-shell-CJS6Q9hY.js → panelize-shell-tFElgHWF.js} +1 -1
- package/dist/ui/assets/pi-edit-execution-D6vx5LyF.js +2 -0
- package/dist/ui/assets/provider-3--cEcAF.js +1 -0
- package/dist/ui/assets/{provider-G-FXP5U3.js → provider-Z5aj7SzG.js} +2 -2
- package/dist/ui/assets/provider-settings-D9sjEfYE.js +1 -0
- package/dist/ui/assets/provider-store-access-M0PvJ08M.js +1 -0
- package/dist/ui/assets/provider-store-access-RxIHhH6d.js +1 -0
- package/dist/ui/assets/{providers-BT71Fchh.js → providers-CnoKdyLc.js} +2 -2
- package/dist/ui/assets/{providers-C1P4Z_in.js → providers-DVvrXbtx.js} +1 -1
- package/dist/ui/assets/{py-realm-worker-BRyQamcA.js → py-realm-worker-DXmzJqJi.js} +2 -2
- package/dist/ui/assets/{pyodide-DwR4k6wB.js → pyodide-b5uAaIjj.js} +2 -2
- package/dist/ui/assets/{quick-llm-BOu12xbc.js → quick-llm-DjWE-wQw.js} +1 -1
- package/dist/ui/assets/realm-inprocess-D0iWBQzz.js +30 -0
- package/dist/ui/assets/record-ChU1ND2B.js +1 -0
- package/dist/ui/assets/{recovery-screen-D_LwQpCA.js → recovery-screen-Y1CSyfR-.js} +1 -1
- package/dist/ui/assets/registry-Bq_j-EXx.js +1 -0
- package/dist/ui/assets/restore-DOkDX8BI.js +1 -0
- package/dist/ui/assets/{run-BFLhWKKw.js → run-B-fA26ea.js} +1 -1
- package/dist/ui/assets/run-BEt0RS3J.js +52 -0
- package/dist/ui/assets/{run-BGSKahNd.js → run-BOc9XLhg.js} +1 -1
- package/dist/ui/assets/run-BOkp5G58.js +91 -0
- package/dist/ui/assets/{run-CS-v8Znz.js → run-BWJSDhS7.js} +2 -2
- package/dist/ui/assets/{run-Dfw_vahy.js → run-Bld9B0W0.js} +1 -1
- package/dist/ui/assets/{run-CrPSdmNd.js → run-CISIYZMm.js} +1 -1
- package/dist/ui/assets/{run-MvSXwrUs.js → run-D0C4PgZM.js} +4 -4
- package/dist/ui/assets/{run-_2GCYBFU.js → run-DgNh1E56.js} +2 -2
- package/dist/ui/assets/{run-DWBPrvVI.js → run-DniTiLYn.js} +1 -1
- package/dist/ui/assets/run-a67LpkRp.js +42 -0
- package/dist/ui/assets/{run-BCXMG6On.js → run-vEDh-Me-.js} +6 -6
- package/dist/ui/assets/screencapture-media-B1iFS6Qy.js +1 -0
- package/dist/ui/assets/{screencapture-run-CfJW-gGP.js → screencapture-run-XrgS6hEd.js} +2 -2
- package/dist/ui/assets/script-catalog-CgT8L-OG.js +2 -0
- package/dist/ui/assets/{session-command-memory-0P878oz2.js → session-command-memory-DB2GmPSU.js} +2 -2
- package/dist/ui/assets/{session-jsonl-MJMdfn6X.js → session-jsonl-DFC-2T76.js} +1 -1
- package/dist/ui/assets/{session-jsonl-f7vG8uaN.js → session-jsonl-D_pTYppB.js} +1 -1
- package/dist/ui/assets/{session-search-index-BQmbRVuk.js → session-search-index-CN1zDLlx.js} +2 -2
- package/dist/ui/assets/{setup-feature-flags-remote-KCi8ndrR.js → setup-feature-flags-remote-BVd31Z12.js} +1 -1
- package/dist/ui/assets/signed-fetch-BY2Mdjqe.js +1 -0
- package/dist/ui/assets/{silent-renew-backoff-B06r5ZL-.js → silent-renew-backoff-CKAAh6GN.js} +1 -1
- package/dist/ui/assets/{silent-renew-backoff-DIMz5UqB.js → silent-renew-backoff-Dmz3DJHb.js} +1 -1
- package/dist/ui/assets/slicc-version-BZyTvfoc.js +1 -0
- package/dist/ui/assets/{snapshot-features-vq3FCiv5.js → snapshot-features-DjMJkCGq.js} +1 -1
- package/dist/ui/assets/{snapshot-BykuJ4wW.js → snapshot-gi8tDzvN.js} +1 -1
- package/dist/ui/assets/{soundscape-DQGEZGwB.js → soundscape-Bl3LhUk9.js} +1 -1
- package/dist/ui/assets/{speak-DivfwK0_.js → speak-BY_fDou2.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-rSxSSd0J.js → sprinkle-manager-C-NUJqPy.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-Ul_GPDpn.js → sprinkle-renderer-CcA6ie5u.js} +1 -1
- package/dist/ui/assets/{state-CGafQVGp.js → state-z3wOHLww.js} +1 -1
- package/dist/ui/assets/{store-qzvn3yV9.js → store-ByUcAFUa.js} +1 -1
- package/dist/ui/assets/{store-BbZGuhdS.js → store-ChWzn_H8.js} +1 -1
- package/dist/ui/assets/{sudo-BLaOJiyv.js → sudo-DNZFIZ-H.js} +1 -1
- package/dist/ui/assets/sudo-fs-D620mZry.js +3 -0
- package/dist/ui/assets/supervisor-BtH2-9sE.js +1 -0
- package/dist/ui/assets/{sync-dialog-CfQLao_i.js → sync-dialog-Jqz74VkZ.js} +1 -1
- package/dist/ui/assets/sync-sab-wire-CC30v4TL.js +252 -0
- package/dist/ui/assets/tab-ToMhjbM4.js +1 -0
- package/dist/ui/assets/{transformers-env-7c5cDYNs.js → transformers-env-pq1E2H6B.js} +1 -1
- package/dist/ui/assets/{tray-leader-DqDL2jwl.js → tray-leader-Bas0lH9O.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-Fs59e1NT.js → tray-leave-runtime-B9aV_guA.js} +1 -1
- package/dist/ui/assets/tray-runtime-config-BZoJXfW0.js +1 -0
- package/dist/ui/assets/{tray-sidecar-DuSizsy1.js → tray-sidecar-DA8NfCV6.js} +1 -1
- package/dist/ui/assets/upgrade-detection-B5ym__Gu.js +1 -0
- package/dist/ui/assets/{upskill-lick-skip-B0aTroa_.js → upskill-lick-skip-CZGM2OFA.js} +1 -1
- package/dist/ui/assets/v86-DseFx8Yp.js +1 -0
- package/dist/ui/assets/v86-vm-DCm7zA2r.js +2 -0
- package/dist/ui/assets/{voice-reply-BDW4paEk.js → voice-reply-CL5tDo0l.js} +1 -1
- package/dist/ui/assets/{wc-attach-C1JExhF6.js → wc-attach-C5yXIQNU.js} +2 -2
- package/dist/ui/assets/{wc-detached-YxBsBh4A.js → wc-detached-f_qit-5b.js} +1 -1
- package/dist/ui/assets/{wc-extension-CVnsFSuW.js → wc-extension-DRx21-cq.js} +2 -2
- package/dist/ui/assets/{wc-follower-CUovZlpa.js → wc-follower-DcKt92kM.js} +3 -3
- package/dist/ui/assets/{wc-follower-oauth-Bxhy8p-W.js → wc-follower-oauth-BF3qXDTt.js} +1 -1
- package/dist/ui/assets/{wc-gelatiere-CxkjwV-m.js → wc-gelatiere-qAW7lWGW.js} +1 -1
- package/dist/ui/assets/{wc-live-br4wUYv7.js → wc-live-DOMCfDT6.js} +6 -6
- package/dist/ui/assets/{wc-nav-ChrnrxPa.js → wc-nav-DzPuXq_n.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-D2v396gn.js → wc-onboarding-CXM-z-7_.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-Bw-g85Ke.js → wc-placeholder-BBqbsuml.js} +3 -3
- package/dist/ui/assets/{wc-secret-request-BK3k0VlW.js → wc-secret-request-BSUlxVVi.js} +1 -1
- package/dist/ui/assets/{wc-settings-D84UzOS6.js → wc-settings-55mC-jVS.js} +3 -3
- package/dist/ui/assets/{wc-shell-CKhQ3qyn.js → wc-shell-C71iKreG.js} +4 -4
- package/dist/ui/assets/{wc-shortcut-config-DFPLI7su.js → wc-shortcut-config-Crjq_rF1.js} +1 -1
- package/dist/ui/assets/{wc-sprinkles-Cf6JnkDK.js → wc-sprinkles-Caji5y7n.js} +2 -2
- package/dist/ui/assets/{wc-transcript-export-BbJ1QcHb.js → wc-transcript-export-Dqe3SH1t.js} +2 -2
- package/dist/ui/assets/{wc-tray-BEzyYj77.js → wc-tray-B7ayzT1W.js} +4 -4
- package/dist/ui/assets/welcome-detection-CEARSpAq.js +1 -0
- package/dist/ui/assets/{whisper-session-Ch3Rub5j.js → whisper-session-DfILe4Yb.js} +2 -2
- package/dist/ui/assets/workspace-mode-D0kUKBVS.js +1 -0
- package/dist/ui/assets/{xai-grok-D4lk5fCR.js → xai-grok-CVLBrxdD.js} +1 -1
- package/dist/ui/assets/{xai-grok-BT_WDAT_.js → xai-grok-Dp8n52fO.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/ui/packages/webapp/index.html +3 -3
- package/package.json +1 -1
- package/dist/ui/assets/SKILL-CtxHowg1.js +0 -96
- package/dist/ui/assets/__vite-browser-external-CCBdZzAl.js +0 -1
- package/dist/ui/assets/adobe-CjAD_QGX.js +0 -1
- package/dist/ui/assets/agent-bridge-D_5Sd3oe.js +0 -12
- package/dist/ui/assets/agent-message-to-chat-w7n13QEN.js +0 -7
- package/dist/ui/assets/attachments-u2K0aIPI.js +0 -6
- package/dist/ui/assets/bridge-protocol-DdqxTTSu.js +0 -1
- package/dist/ui/assets/budget-usage-source-BW8-RCSb.js +0 -1
- package/dist/ui/assets/clipboard-CknViQHB.js +0 -1
- package/dist/ui/assets/cone-memory-budget-Cmi9vXV5.js +0 -15
- package/dist/ui/assets/db-DSIYsBgP.js +0 -1
- package/dist/ui/assets/derive-CZLe75z_.js +0 -1
- package/dist/ui/assets/descriptor-D-6Koktu.js +0 -1
- package/dist/ui/assets/directed-approval-D9smLm9q.js +0 -1
- package/dist/ui/assets/engine-BnH9pfmR.js +0 -1
- package/dist/ui/assets/esp8266-BN3fFVWu.js +0 -1
- package/dist/ui/assets/esptool-operations-lUvXx3gs.js +0 -13
- package/dist/ui/assets/feature-flags-Dl-xb1DG.js +0 -1
- package/dist/ui/assets/frozen-archive-format-B4efpvB9.js +0 -1
- package/dist/ui/assets/gelatiere-constants-BYJlhm8R.js +0 -1
- package/dist/ui/assets/gelatiere-store-CE_Ssheh.js +0 -1
- package/dist/ui/assets/gelatiere-unit-BMHtZLOW.js +0 -1
- package/dist/ui/assets/js-realm-worker-AwpbqZPU.js +0 -50
- package/dist/ui/assets/jsh-runtime-extensions-Bcb8_nba.js +0 -1
- package/dist/ui/assets/just-bash-compat-BwD6SoTi.js +0 -1
- package/dist/ui/assets/kernel-worker-BAcS3WAP.js +0 -4673
- package/dist/ui/assets/lick-manager-ULemXDKa.js +0 -2
- package/dist/ui/assets/lick-urls-BZVq_P3x.js +0 -1
- package/dist/ui/assets/lick-ws-bridge-CDToX4F0.js +0 -1
- package/dist/ui/assets/live-session-snapshot-Dv20JKP2.js +0 -1
- package/dist/ui/assets/manager-Bl9b7X9m.js +0 -1
- package/dist/ui/assets/memory-curation-seam-BAJK5Abp.js +0 -1
- package/dist/ui/assets/memory-health-MhSOmzAf.js +0 -1
- package/dist/ui/assets/memory-v2-flag-D85UWdUr.js +0 -1
- package/dist/ui/assets/memory-write-execute-BOjUkUIG.js +0 -1
- package/dist/ui/assets/mount-CTTWc8xh.js +0 -1
- package/dist/ui/assets/mount-recovery-T6cjQxeX.js +0 -2
- package/dist/ui/assets/panel-rpc-handlers-BG91KHPa.js +0 -2
- package/dist/ui/assets/pi-edit-execution-NnXkvjSi.js +0 -2
- package/dist/ui/assets/provider-CbAKIAon.js +0 -1
- package/dist/ui/assets/provider-settings-BuhBOwFs.js +0 -1
- package/dist/ui/assets/provider-store-access-CrH5offR.js +0 -1
- package/dist/ui/assets/provider-store-access-DgZnuRxY.js +0 -1
- package/dist/ui/assets/realm-inprocess-Bmsz-kPh.js +0 -30
- package/dist/ui/assets/record-YqlVEfh_.js +0 -1
- package/dist/ui/assets/run-33hnsiVQ.js +0 -91
- package/dist/ui/assets/screencapture-media-Dc-3ljgR.js +0 -1
- package/dist/ui/assets/screencapture-media-shared-BDUdmMOP.js +0 -1
- package/dist/ui/assets/script-catalog-Bt94D0RP.js +0 -2
- package/dist/ui/assets/skills-DWkSI8sH.js +0 -5
- package/dist/ui/assets/slicc-version-DAFTorvi.js +0 -1
- package/dist/ui/assets/sync-sab-wire-Cacrunmz.js +0 -252
- package/dist/ui/assets/tray-runtime-config-CRZxBChd.js +0 -1
- package/dist/ui/assets/upgrade-detection-CyCnJlGg.js +0 -1
- package/dist/ui/assets/welcome-detection-DjgSxU4V.js +0 -1
- package/dist/ui/assets/write-verification-BOaZdtyk.js +0 -1
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{a as n,n as r,r as i,t as a}from"./path-utils-DNJG-zQf.js";import{t as o}from"./types-D8gIX-W-.js";import"./fs-DZGgOIET.js";import{g as s,i as c,n as l,p as u}from"./sudoers-BdBYQPUn.js";import{r as d}from"./browser-2rCVqcqy.js";const f=t(`sudo:timeout`),p={"user-timeout":`no response from the user within 5 minutes. This is a TIMEOUT, not a denial — the user was not there to answer. Do not retry this action; report that the approval request went unanswered and wait for the user before trying again.`,"cone-timeout":`no response from the cone agent within 5 minutes. This is a TIMEOUT, not a denial — no human was ever prompted, the cone simply never resolved the request. Do not retry this action; report that the escalation went unanswered and continue with work that does not need it.`};function m(e){return p[e]}function h(e=`user-timeout`){return{decision:`deny`,reason:e}}function g(e,t){let n=t.decision===`deny`?t.reason:void 0,r=n?`${e}: approval request timed out — ${m(n)}`:`${e}: approval denied`,i=t.note?.trim();return i?`${r} — approver's reason: ${i}`:r}function _(e,t={}){let n=t.timeoutMs??3e5;if(!Number.isFinite(n)||n<=0)return e;let r=t.setTimer??((e,t)=>setTimeout(e,t)),i=t.clearTimer??(e=>clearTimeout(e));return{requestApproval(t,a){return new Promise(o=>{let s=new AbortController,c=()=>s.abort();a?.signal?.addEventListener(`abort`,c,{once:!0});let l=!1,u=e=>{l=!0,a?.signal?.removeEventListener(`abort`,c),o(e)},d=r(()=>{l||(f.warn(`sudo approval timed out — failing closed`,{kind:t.kind,detail:t.detail,timeoutMs:n}),s.abort(),u(h(`user-timeout`)))},n),p=e=>{if(l){f.warn(`sudo decision arrived after timeout — discarded`,{kind:t.kind,detail:t.detail,decision:e.decision});return}i(d),u(e)};e.requestApproval(t,{signal:s.signal}).then(p,e=>{f.warn(`sudo broker threw — denying`,{error:e instanceof Error?e.message:String(e)}),p({decision:`deny`})})})}}}const v=t(`sudo:fs`),y=Symbol.for(`slicc.fs.monkeypatchUnsafe`),b=`${l}/granted`;function x(e){return g(`sudo`,e)}const S=[`readFile`,`readFileRange`,`getNativeFile`,`readTextFile`,`readDir`,`exists`,`stat`],ee=[`writeFile`,`appendFile`],C=[`mkdir`,`rm`,`chmod`,`utimes`];async function w(e,t,n,r){let a=s(r);if(!a)return;let c=t(),u={pattern:a,nopasswd:!0,regex:i(a)};(n===`read`?c.read:c.write).push(u);let d=`NOPASSWD ${n===`read`?`Read`:`Write`} ${a}\n`;try{await e.mkdir(l,{recursive:!0});let t=``;try{t=await e.readFile(b,{encoding:`utf-8`})}catch(e){if(!(e instanceof o&&e.code===`ENOENT`))throw e}let n=t.length>0&&!t.endsWith(`
|
|
2
|
-
`)?`
|
|
3
|
-
`:``;await e.writeFile(b,t+n+d)}catch(e){v.warn(`Failed to persist NOPASSWD grant; effective in-session only`,{error:e instanceof Error?e.message:String(e)})}}function T(e,t){let{broker:n,getPolicy:i}=t,a=t.defaultDisposition??`allow`,s=t.onGrant?t.onGrant:(t,n)=>w(e,i,t,n);async function l(e,t,l=!1){let d=r(t),f=u(i(),e,d,{isContentWrite:l}),p=e===`write`?c(f,a):f;if(p===`deny`)throw v.warn(`Refusing write to an unhonoured sudoers path`,{path:d}),new o(`EACCES`,`sudo: refusing to write a sudoers file outside /etc — policy is read only from /etc/sudoers and /etc/sudoers.d/, so this file would never take effect`,d);if(p!==`require-approval`)return;let m=e,h=await n.requestApproval({kind:m,detail:d});if(h.decision===`deny`)throw new o(`EACCES`,x(h),d);h.decision===`always`&&await s(e,h.pattern?.trim()||d)}function d(e){return u(i(),`read`,r(e))!==`require-approval`}let f=t=>typeof e[t]==`function`,p={};for(let t of S)f(t)&&(p[t]=async(n,...r)=>(await l(`read`,n),e[t](n,...r)));for(let t of ee)f(t)&&(p[t]=async(n,...r)=>(await l(`write`,n,!0),e[t](n,...r)));for(let t of C)f(t)&&(p[t]=async(n,...r)=>(await l(`write`,n),e[t](n,...r)));return f(`walk`)&&(p.walk=async function*(t,...n){await l(`read`,t),yield*e.walk(t,...n)}),f(`symlink`)&&(p.symlink=async(t,n)=>(await l(`write`,n),e.symlink(t,n))),f(`rename`)&&(p.rename=async(t,n)=>(await l(`read`,t),await l(`write`,t),await l(`write`,n),e.rename(t,n))),f(`copyFile`)&&(p.copyFile=async(t,n)=>(await l(`read`,t),await l(`write`,n),e.copyFile(t,n))),f(`mount`)&&(p.mount=async(t,...n)=>(await l(`write`,t),e.mount(t,...n))),f(`unmount`)&&(p.unmount=async t=>(await l(`write`,t),e.unmount(t))),f(`refreshMount`)&&(p.refreshMount=async(t,...n)=>(await l(`write`,t),e.refreshMount(t,...n))),f(`statSync`)&&(p.statSync=t=>d(t)?e.statSync(t):null),f(`readDirSync`)&&(p.readDirSync=t=>d(t)?e.readDirSync(t):null),new Proxy(e,{get(e,t,n){if(t===y)return!0;if(typeof t==`string`&&t in p)return p[t];let r=Reflect.get(e,t,n);return typeof r==`function`?r.bind(e):r}})}const E=`.skill`,D=`/workspace/skills`,O=`SKILL.md`,k=t(`skills-discovery`),A=[`native`,`agents`,`claude`,`marketplace`,`plugin`],j=new Map([[`.agents`,`agents`],[`.claude`,`claude`]]),te=new Set([`.git`,`.slicc`,`node_modules`]),M=2e4,ne=[`mkdir`,`mount`,`rename`,`rm`,`unmount`,`writeFile`],N=new WeakMap,P=new WeakSet;async function F(e,t=D){let n=await B(e,t),r=await L(e),i=await I(e);return[...A.flatMap(e=>(e===`native`?n:e===`plugin`?i:r.filter(t=>t.source===e)).sort((e,t)=>e.path.localeCompare(t.path)))]}async function I(e){let t;try{let n=await e.readTextFile(`/workspace/.plugins/plugins.json`),r=JSON.parse(n);if(!r||typeof r!=`object`||!r.plugins)return[];t=Object.values(r.plugins).map(e=>e?.root).filter(e=>typeof e==`string`)}catch{return[]}let n=[];for(let r of t){let t=`${r}/skills`,i=await q(e,t);for(let r of i){if(r.type!==`directory`)continue;let i=`${t}/${r.name}`,a=`${i}/${O}`;await K(e,a)&&n.push({source:`plugin`,sourceRoot:t,path:i,skillFilePath:a})}}return n}async function L(e){if(R(e))return(await W(e)).map(e=>({...e}));G(e);let t=e,n=N.get(t);if(n)return n.map(e=>({...e}));let r=await W(e);return N.set(t,r),r.map(e=>({...e}))}function R(e){try{return e[y]===!0}catch{return!1}}function z(e,t){let n=new Map,r=new Map;for(let i of e){let e=t(i);if(!n.has(e)){n.set(e,i);continue}let a=r.get(e)??{name:e,winner:n.get(e),shadowed:[]};a.shadowed.push(i),r.set(e,a)}return{winners:Array.from(n.values()),collisions:Array.from(r.values())}}async function B(e,t){let n=await q(e,t),r=[];for(let i of n){if(i.type!==`directory`)continue;let n=`${t}/${i.name}`,a=`${n}/${O}`;await K(e,a)&&r.push({source:`native`,sourceRoot:t,path:n,skillFilePath:a})}return r}async function V(e,t){let n;try{n=await e.readTextFile(t)}catch{return[]}let r;try{r=JSON.parse(n)}catch{return[]}if(typeof r!=`object`||!r)return[];let i=r.plugins;if(!Array.isArray(i))return[];let a=t.replace(/\/[^/]+$/,``).replace(/\/.claude-plugin$/,``),o=[];for(let e of i){if(typeof e!=`object`||!e)continue;let t=e.source;if(typeof t!=`string`||t.startsWith(`/`)||t.split(`/`).includes(`..`))continue;let n=t.replace(/^\.\//,``).replace(/\/$/,``).replace(/^\.$/,``);o.push(n?`${a}/${n}`:a)}return o}async function H(e,t,n){let r=await V(e,`${t}/marketplace.json`),i=[];for(let t of r){let r=`${t}/skills`,a=await q(e,r);for(let t of a){if(t.type!==`directory`)continue;let a=`${r}/${t.name}`,o=`${a}/${O}`;!await K(e,o)||n.has(a)||(n.add(a),i.push({source:`marketplace`,sourceRoot:r,path:a,skillFilePath:o}))}}return i}async function U(e,t,n,r){let i=`${t}/skills`,a=await q(e,i),o=[];for(let t of a){if(t.type!==`directory`)continue;let a=`${i}/${t.name}`,s=`${a}/${O}`;!await K(e,s)||r.has(a)||(r.add(a),o.push({source:n,sourceRoot:i,path:a,skillFilePath:s}))}return o}async function W(e){let t=[],n=new Set,r=new Set([`/`]),i=[{path:`/`,depth:0}];for(let a=0;a<i.length;a+=1){if(a>=M){k.warn(`skills discovery: directory budget exhausted; walk truncated`,{budget:M});break}let{path:o,depth:s}=i[a],c=await q(e,o);for(let a of c){if(a.type!==`directory`||a.name===`.`||a.name===`..`)continue;let c=o===`/`?`/${a.name}`:`${o}/${a.name}`,l=j.get(a.name);if(l){let r=await U(e,c,l,n);t.push(...r)}if(a.name===`.claude-plugin`){let r=await H(e,c,n);t.push(...r);continue}!te.has(a.name)&&s<24&&!r.has(c)&&(r.add(c),i.push({path:c,depth:s+1}))}}return t}function G(e){if(R(e))return;let t=e;if(P.has(t))return;P.add(t);let n=e;for(let r of ne){let i=n[r];if(typeof i==`function`)try{n[r]=async(...n)=>{let r=await i.apply(e,n);return N.delete(t),r}}catch{}}}async function K(e,t){try{return await e.stat(t),!0}catch{return!1}}async function q(e,t){try{return[...await e.readDir(t)].sort((e,t)=>e.name.localeCompare(t.name))}catch{return[]}}async function J(e,t=`/workspace/skills`){let n=await F(e,t),r=[];for(let t of n){let n=t.path.split(`/`).pop()??t.path,i=``;if(t.skillFilePath)try{i=Z(await e.readTextFile(t.skillFilePath))??``}catch{}r.push({name:n,source:t.source,sourceRoot:t.sourceRoot,path:t.path,skillFilePath:t.skillFilePath,description:i})}let{winners:i,collisions:a}=z(r,e=>e.name),o=new Map(a.map(e=>[e.winner.path,e.shadowed.map(e=>e.path)]));return i.map(e=>({...e,shadowedPaths:o.get(e.path)}))}async function Y(e,t,n=`/workspace/skills`){return(await J(e,n)).find(e=>e.name===t)||null}async function X(e,t,n=`/workspace/skills`){let r=await Y(e,t,n);if(!r?.skillFilePath)return null;try{return await e.readTextFile(r.skillFilePath)}catch{return null}}function Z(e){let t=e.replace(/^\uFEFF/,``).replace(/\r\n?/g,`
|
|
4
|
-
`).trimStart().match(/^---\s*\n([\s\S]*?)\n---/);if(!t)return null;for(let e of t[1].split(`
|
|
5
|
-
`)){let t=e.match(/^description:\s*(.*)$/);if(t)return t[1].trim()}return null}const re=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function ie(e){if(e===`__MACOSX`||e.startsWith(`__MACOSX/`))return!0;let t=e.includes(`/`)?e.slice(e.lastIndexOf(`/`)+1):e;return!!(t===`.DS_Store`||t===`Thumbs.db`||t===`desktop.ini`||t.startsWith(`._`))}var Q=class extends Error{};function ae(e){let t=e.replace(/\\/g,`/`);if(!t||t.endsWith(`/`))return null;if(t.startsWith(`/`)||/^[A-Za-z]:\//.test(t))throw Error(`Blocked suspicious path "${e}".`);let n=t.split(`/`);if(n.some(e=>e===``||e===`.`||e===`..`))throw Error(`Blocked suspicious path "${e}".`);return n.join(`/`)}function oe(e){if(!re.test(e))throw Error(`Invalid skill: skill name "${e}" must be a simple directory name.`)}function se(e){let t=[];for(let[n,r]of Object.entries(e)){let e=ae(n);e&&(ie(e)||t.push({originalPath:n,path:e,bytes:r}))}return t}function ce(e){let t=e.filter(e=>e.path===`SKILL.md`||e.path.endsWith(`/SKILL.md`));if(t.length===0)throw Error(`Skill archive is missing ${O}.`);if(t.length>1)throw Error(`Skill archive contains multiple ${O} files.`);return t[0]}function le(e){let t=0,n=0;return d(e,{filter(e){if(t++,t>1e3)throw new Q(`Skill archives may contain at most 1000 entries.`);if(n+=e.originalSize,n>52428800)throw new Q(`Skill archives must expand to 50 MB or smaller after extraction.`);return!0}})}function ue(e){let t=`${Date.now()}-${Math.random().toString(16).slice(2,8)}`;return a(D,`.${e}.tmp-${t}`)}function de(e,t){return t===`SKILL.md`?e.replace(/\.skill$/i,``):t.slice(0,-9).split(`/`).pop()??``}function fe(e){if(!e.name.toLowerCase().endsWith(`.skill`))throw Error(`Only ${E} archives can be installed with drag and drop.`);if(e.size>52428800)throw Error(`Skill archives must be 50 MB or smaller.`)}async function pe(e){try{return le(new Uint8Array(await e.arrayBuffer()))}catch(e){if(e instanceof Q)throw e;let t=e instanceof Error?e.message:String(e);throw Error(`Invalid .skill archive: ${t}`)}}function $(e){return e.path===`SKILL.md`?``:e.path.slice(0,-9)}function me(e,t){return t&&(e===t||!e.startsWith(`${t}/`))?null:(t?e.slice(t.length+1):e)||null}async function he(e,t,r,i){let o=a(t,r),{dir:s}=n(o);s!==`/`&&await e.mkdir(s,{recursive:!0}),await e.writeFile(o,i)}async function ge(e,t,n,r){let i=0;for(let a of t){let t=me(a.path,n);t&&(await he(e,r,t,a.bytes),i++)}return i}async function _e(e,t){await e.exists(t)&&await e.rm(t,{recursive:!0})}async function ve(e,t){let n=a(D,t);if(await e.exists(n))throw Error(`Skill "${t}" already exists at ${n}.`);return n}async function ye(e,t){fe(t);let n=se(await pe(t)),r=ce(n),i=de(t.name,r.path);oe(i);let a=await ve(e,i),o=ue(i),s=$(r);await e.mkdir(o,{recursive:!0});try{let t=await ge(e,n,s,o);return await e.rename(o,a),{skillName:i,destinationPath:a,fileCount:t}}catch(t){throw await _e(e,o),t}}var be=e({MAX_SKILL_ARCHIVE_SIZE_BYTES:()=>52428800,SKILLS_DIR:()=>`skills`,SKILL_ARCHIVE_EXTENSION:()=>E,SKILL_FILE:()=>O,WORKSPACE_SKILLS_PATH:()=>D,discoverSkillCandidates:()=>F,discoverSkills:()=>J,getSkillInfo:()=>Y,installSkillFromDrop:()=>ye,readSkillInstructions:()=>X,resolveSkillNameCollisions:()=>z});export{T as a,_ as c,y as i,J as n,g as o,b as r,h as s,be as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(){return{version:`6.164.1`,releasedAt:`2026-09-17T19:38:34Z`,buildId:`6.164.1-mu5xn61j`}}let t=null;function n(e){t=e}function r(){return t}export{e as n,n as r,r as t};
|
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./runtime-env-DadgceZk.js";import{r as t}from"./fetch-body-CuwTaJC_.js";import{a as n,t as r}from"./path-utils-DNJG-zQf.js";import{t as i}from"./buffer-B5d1xHaH.js";import{C as a,_ as o}from"./shared-C_68vn79.js";var s=`input is invalid type`,c=`finalize already called`,l=typeof ArrayBuffer<`u`,u=function(e){if(typeof e==`string`)return[e,!0];if(Array.isArray(e))return[e,!1];if(l&&e){if(e.constructor===ArrayBuffer)return[new Uint8Array(e),!1];if(ArrayBuffer.isView(e))return[e,!1]}throw Error(s)},d=`0123456789abcdef`.split(``),f=[-2147483648,8388608,32768,128],p=[24,16,8,0],m=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],h=[`hex`,`array`,`digest`,`arrayBuffer`],g=[],_=function(e,t){return function(n){return new x(t,!0).update(n)[e]()}},v=function(e){var t=_(`hex`,e);t.create=function(){return new x(e)},t.update=function(e){return t.create().update(e)};for(var n=0;n<h.length;++n){var r=h[n];t[r]=_(r,e)}return t},y=function(e,t){return function(n,r){return new S(n,t,!0).update(r)[e]()}},b=function(e){var t=y(`hex`,e);t.create=function(t){return new S(t,e)},t.update=function(e,n){return t.create(e).update(n)};for(var n=0;n<h.length;++n){var r=h[n];t[r]=y(r,e)}return t};function x(e,t){t?(g[0]=g[16]=g[1]=g[2]=g[3]=g[4]=g[5]=g[6]=g[7]=g[8]=g[9]=g[10]=g[11]=g[12]=g[13]=g[14]=g[15]=0,this.blocks=g):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],e?(this.h0=3238371032,this.h1=914150663,this.h2=812702999,this.h3=4144912697,this.h4=4290775857,this.h5=1750603025,this.h6=1694076839,this.h7=3204075428):(this.h0=1779033703,this.h1=3144134277,this.h2=1013904242,this.h3=2773480762,this.h4=1359893119,this.h5=2600822924,this.h6=528734635,this.h7=1541459225),this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0,this.is224=e}x.prototype.update=function(e){if(this.finalized)throw Error(c);var t=u(e);e=t[0];for(var n=t[1],r,i=0,a,o=e.length,s=this.blocks;i<o;){if(this.hashed&&(this.hashed=!1,s[0]=this.block,this.block=s[16]=s[1]=s[2]=s[3]=s[4]=s[5]=s[6]=s[7]=s[8]=s[9]=s[10]=s[11]=s[12]=s[13]=s[14]=s[15]=0),n)for(a=this.start;i<o&&a<64;++i)r=e.charCodeAt(i),r<128?s[a>>>2]|=r<<p[a++&3]:r<2048?(s[a>>>2]|=(192|r>>>6)<<p[a++&3],s[a>>>2]|=(128|r&63)<<p[a++&3]):r<55296||r>=57344?(s[a>>>2]|=(224|r>>>12)<<p[a++&3],s[a>>>2]|=(128|r>>>6&63)<<p[a++&3],s[a>>>2]|=(128|r&63)<<p[a++&3]):(r=65536+((r&1023)<<10|e.charCodeAt(++i)&1023),s[a>>>2]|=(240|r>>>18)<<p[a++&3],s[a>>>2]|=(128|r>>>12&63)<<p[a++&3],s[a>>>2]|=(128|r>>>6&63)<<p[a++&3],s[a>>>2]|=(128|r&63)<<p[a++&3]);else for(a=this.start;i<o&&a<64;++i)s[a>>>2]|=e[i]<<p[a++&3];this.lastByteIndex=a,this.bytes+=a-this.start,a>=64?(this.block=s[16],this.start=a-64,this.hash(),this.hashed=!0):this.start=a}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes%=4294967296),this},x.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var e=this.blocks,t=this.lastByteIndex;e[16]=this.block,e[t>>>2]|=f[t&3],this.block=e[16],t>=56&&(this.hashed||this.hash(),e[0]=this.block,e[16]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=e[9]=e[10]=e[11]=e[12]=e[13]=e[14]=e[15]=0),e[14]=this.hBytes<<3|this.bytes>>>29,e[15]=this.bytes<<3,this.hash()}},x.prototype.hash=function(){var e=this.h0,t=this.h1,n=this.h2,r=this.h3,i=this.h4,a=this.h5,o=this.h6,s=this.h7,c=this.blocks,l,u,d,f,p,h,g,_,v,y,b;for(l=16;l<64;++l)p=c[l-15],u=(p>>>7|p<<25)^(p>>>18|p<<14)^p>>>3,p=c[l-2],d=(p>>>17|p<<15)^(p>>>19|p<<13)^p>>>10,c[l]=c[l-16]+u+c[l-7]+d<<0;for(b=t&n,l=0;l<64;l+=4)this.first?(this.is224?(_=300032,p=c[0]-1413257819,s=p-150054599<<0,r=p+24177077<<0):(_=704751109,p=c[0]-210244248,s=p-1521486534<<0,r=p+143694565<<0),this.first=!1):(u=(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10),d=(i>>>6|i<<26)^(i>>>11|i<<21)^(i>>>25|i<<7),_=e&t,f=_^e&n^b,g=i&a^~i&o,p=s+d+g+m[l]+c[l],h=u+f,s=r+p<<0,r=p+h<<0),u=(r>>>2|r<<30)^(r>>>13|r<<19)^(r>>>22|r<<10),d=(s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7),v=r&e,f=v^r&t^_,g=s&i^~s&a,p=o+d+g+m[l+1]+c[l+1],h=u+f,o=n+p<<0,n=p+h<<0,u=(n>>>2|n<<30)^(n>>>13|n<<19)^(n>>>22|n<<10),d=(o>>>6|o<<26)^(o>>>11|o<<21)^(o>>>25|o<<7),y=n&r,f=y^n&e^v,g=o&s^~o&i,p=a+d+g+m[l+2]+c[l+2],h=u+f,a=t+p<<0,t=p+h<<0,u=(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10),d=(a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7),b=t&n,f=b^t&r^y,g=a&o^~a&s,p=i+d+g+m[l+3]+c[l+3],h=u+f,i=e+p<<0,e=p+h<<0,this.chromeBugWorkAround=!0;this.h0=this.h0+e<<0,this.h1=this.h1+t<<0,this.h2=this.h2+n<<0,this.h3=this.h3+r<<0,this.h4=this.h4+i<<0,this.h5=this.h5+a<<0,this.h6=this.h6+o<<0,this.h7=this.h7+s<<0},x.prototype.hex=function(){this.finalize();var e=this.h0,t=this.h1,n=this.h2,r=this.h3,i=this.h4,a=this.h5,o=this.h6,s=this.h7,c=d[e>>>28&15]+d[e>>>24&15]+d[e>>>20&15]+d[e>>>16&15]+d[e>>>12&15]+d[e>>>8&15]+d[e>>>4&15]+d[e&15]+d[t>>>28&15]+d[t>>>24&15]+d[t>>>20&15]+d[t>>>16&15]+d[t>>>12&15]+d[t>>>8&15]+d[t>>>4&15]+d[t&15]+d[n>>>28&15]+d[n>>>24&15]+d[n>>>20&15]+d[n>>>16&15]+d[n>>>12&15]+d[n>>>8&15]+d[n>>>4&15]+d[n&15]+d[r>>>28&15]+d[r>>>24&15]+d[r>>>20&15]+d[r>>>16&15]+d[r>>>12&15]+d[r>>>8&15]+d[r>>>4&15]+d[r&15]+d[i>>>28&15]+d[i>>>24&15]+d[i>>>20&15]+d[i>>>16&15]+d[i>>>12&15]+d[i>>>8&15]+d[i>>>4&15]+d[i&15]+d[a>>>28&15]+d[a>>>24&15]+d[a>>>20&15]+d[a>>>16&15]+d[a>>>12&15]+d[a>>>8&15]+d[a>>>4&15]+d[a&15]+d[o>>>28&15]+d[o>>>24&15]+d[o>>>20&15]+d[o>>>16&15]+d[o>>>12&15]+d[o>>>8&15]+d[o>>>4&15]+d[o&15];return this.is224||(c+=d[s>>>28&15]+d[s>>>24&15]+d[s>>>20&15]+d[s>>>16&15]+d[s>>>12&15]+d[s>>>8&15]+d[s>>>4&15]+d[s&15]),c},x.prototype.toString=x.prototype.hex,x.prototype.digest=function(){this.finalize();var e=this.h0,t=this.h1,n=this.h2,r=this.h3,i=this.h4,a=this.h5,o=this.h6,s=this.h7,c=[e>>>24&255,e>>>16&255,e>>>8&255,e&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255,n>>>24&255,n>>>16&255,n>>>8&255,n&255,r>>>24&255,r>>>16&255,r>>>8&255,r&255,i>>>24&255,i>>>16&255,i>>>8&255,i&255,a>>>24&255,a>>>16&255,a>>>8&255,a&255,o>>>24&255,o>>>16&255,o>>>8&255,o&255];return this.is224||c.push(s>>>24&255,s>>>16&255,s>>>8&255,s&255),c},x.prototype.array=x.prototype.digest,x.prototype.arrayBuffer=function(){this.finalize();var e=new ArrayBuffer(this.is224?28:32),t=new DataView(e);return t.setUint32(0,this.h0),t.setUint32(4,this.h1),t.setUint32(8,this.h2),t.setUint32(12,this.h3),t.setUint32(16,this.h4),t.setUint32(20,this.h5),t.setUint32(24,this.h6),this.is224||t.setUint32(28,this.h7),e};function S(e,t,n){var r,i=u(e);if(e=i[0],i[1]){var a=[],o=e.length,s=0,c;for(r=0;r<o;++r)c=e.charCodeAt(r),c<128?a[s++]=c:c<2048?(a[s++]=192|c>>>6,a[s++]=128|c&63):c<55296||c>=57344?(a[s++]=224|c>>>12,a[s++]=128|c>>>6&63,a[s++]=128|c&63):(c=65536+((c&1023)<<10|e.charCodeAt(++r)&1023),a[s++]=240|c>>>18,a[s++]=128|c>>>12&63,a[s++]=128|c>>>6&63,a[s++]=128|c&63);e=a}e.length>64&&(e=new x(t,!0).update(e).array());var l=[],d=[];for(r=0;r<64;++r){var f=e[r]||0;l[r]=92^f,d[r]=54^f}x.call(this,t,n),this.update(d),this.oKeyPad=l,this.inner=!0,this.sharedMemory=n}S.prototype=new x,S.prototype.finalize=function(){if(x.prototype.finalize.call(this),this.inner){this.inner=!1;var e=this.array();x.call(this,this.is224,this.sharedMemory),this.update(this.oKeyPad),this.update(e),x.prototype.finalize.call(this)}};var C=v(),w=v(!0);C.sha256=C,C.sha224=w,C.hmac=b(),w.hmac=b(!0);var ee=i();globalThis.Buffer===void 0&&(globalThis.Buffer=ee.Buffer);function te(t,n){let r=e(),i=`/preview${t}${n?`?projectRoot=${encodeURIComponent(n)}`:``}`;if(r){let e=globalThis.chrome?.runtime?.getURL;if(e)return e(i)}let a=`http://localhost:5710`;return typeof window<`u`&&window.location?.origin?a=window.location.origin:typeof self<`u`&&self.location?.origin&&(a=self.location.origin),`${a}${i}`}async function ne(e){let t=await crypto.subtle.digest(`SHA-256`,e);return Array.from(new Uint8Array(t)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function re(e){try{return new URL(e).protocol===`https:`}catch{return!1}}function ie(e){return new Promise(t=>setTimeout(t,e))}async function ae(e,n,r){let i;try{i=await e(n.url,{method:`GET`,headers:{Accept:`application/octet-stream`},timeoutMs:r})}catch(e){let t=e instanceof Error?e.message:String(e);return{ok:!1,retriable:!0,error:Error(`${n.label}: network error (${t})`)}}if(i.status>=500&&i.status<600)return{ok:!1,retriable:!0,error:Error(`${n.label}: server error HTTP ${i.status}`)};if(i.status<200||i.status>=300){let e=i.statusText?` ${i.statusText}`:``;return{ok:!1,retriable:!1,error:Error(`${n.label}: HTTP ${i.status}${e}`)}}let a=t(i.body);return!(a instanceof Uint8Array)||a.length===0?{ok:!1,retriable:!1,error:Error(`${n.label}: response body was empty`)}:{ok:!0,bytes:a}}async function oe(e,t,n){let r;for(let i=1;i<=3;i++){let a=await ae(e,t,n);if(a.ok)return a.bytes;if(r=a.error,!a.retriable||i===3)throw a.error;await ie(250*i)}throw r??Error(`${t.label}: download failed`)}async function se(e,t){let n=await ne(e);if(n!==t.sha256.toLowerCase())throw Error(`${t.label}: sha256 mismatch (expected ${t.sha256.toLowerCase()}, got ${n})`)}async function T(e,t){if(!re(t.url))throw Error(`${t.label}: refused to fetch non-https URL '${t.url}'`);let n=await oe(e,t,t.timeoutMs??6e4);return await se(n,t),n}const E=`pyproject.toml`,D=`uv.lock`,ce=`/workspace`;function O(e){return e.trim().toLowerCase().replace(/[-_.]+/g,`-`)}function k(e){let t=e.indexOf(`==`);return(t===-1?e:e.slice(0,t)).trim()}function le(e){let t=e.indexOf(`==`);return t===-1?{name:e.trim(),version:``}:{name:e.slice(0,t).trim(),version:e.slice(t+2).trim()}}async function A(e,t){let i=t?.startsWith(`/`)?t:ce;for(;;){if(await e.exists(r(i,E)))return i;if(i===`/`)return null;i=n(i).dir}}async function ue(e,t){return await A(e,t)??ce}function j(e){let t=!1,n=!1;for(let r=0;r<e.length;r++){let i=e[r];if(i===`'`&&!n)t=!t;else if(i===`"`&&!t)n=!n;else if(i===`#`&&!t&&!n)return e.slice(0,r)}return e}function M(e){let t=e.trim();return t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`)?t.slice(1,-1):null}function de(e,t,n){let r=n,i=t;for(;!r.includes(`]`)&&i+1<e.length;)i+=1,r+=`\n${j(e[i])}`;let a=[];for(let e of r.matchAll(/["']([^"']*)["']/g))e[1].trim()&&a.push(e[1].trim());return{items:a,lastIndex:i}}function fe(e){let t=e.split(`
|
|
2
|
-
`),n=``,r=`workspace`,i=`0.1.0`,a=[];for(let e=0;e<t.length;e++){let o=j(t[e]).trim();if(!o)continue;if(o.startsWith(`[`)){n=o;continue}if(n!==`[project]`)continue;let s=o.indexOf(`=`);if(s===-1)continue;let c=o.slice(0,s).trim(),l=o.slice(s+1).trim();if(c===`name`)r=M(l)??r;else if(c===`version`)i=M(l)??i;else if(c===`dependencies`){let n=de(t,e,l);a=n.items,e=n.lastIndex}}return{name:r,version:i,dependencies:a}}function pe(e){return e.length===0?`dependencies = []`:`dependencies = [\n${e.map(e=>` "${e}",`).join(`
|
|
3
|
-
`)}\n]`}function me(e){let t=pe(e.dependencies);return`[project]\nname = "${e.name}"\nversion = "${e.version}"\n${t}\n`}function he(e,t){let n=j(e[t]),r=t;for(;!n.includes(`]`)&&r+1<e.length;)r+=1,n+=`\n${j(e[r])}`;return r}function ge(e){let t={depsStart:-1,depsEnd:-1,projectHeaderIndex:-1,projectSectionEnd:-1},n=``;for(let r=0;r<e.length;r++){let i=j(e[r]).trim();if(i.startsWith(`[`)){t.projectHeaderIndex!==-1&&t.projectSectionEnd===-1&&r>t.projectHeaderIndex&&(t.projectSectionEnd=r),n=i,i===`[project]`&&(t.projectHeaderIndex=r);continue}if(n!==`[project]`||t.depsStart!==-1)continue;let a=i.indexOf(`=`);a!==-1&&i.slice(0,a).trim()===`dependencies`&&(t.depsStart=r,t.depsEnd=he(e,r))}return t}function _e(e,t){let n=pe(t.dependencies).split(`
|
|
4
|
-
`),r=e.split(`
|
|
5
|
-
`),{depsStart:i,depsEnd:a,projectHeaderIndex:o,projectSectionEnd:s}=ge(r);if(i!==-1)return r.splice(i,a-i+1,...n),r.join(`
|
|
6
|
-
`);if(o!==-1){let e=s===-1?r.length:s;return r.splice(e,0,...n),r.join(`
|
|
7
|
-
`)}return`${e}${e.length===0||e.endsWith(`
|
|
8
|
-
`)?``:`
|
|
9
|
-
`}\n${me(t)}`}const ve={name:`name`,version:`version`,source:`source`,file_name:`fileName`,sha256:`sha256`};function N(e,t){t.name&&t.version&&t.source&&t.fileName&&t.sha256&&e.push(t)}function ye(e){let t=[],n=null;for(let r of e.split(`
|
|
10
|
-
`)){let e=j(r).trim();if(!e)continue;if(e===`[[package]]`){n&&N(t,n),n={};continue}if(e.startsWith(`[`)){n&&N(t,n),n=null;continue}if(!n)continue;let i=e.indexOf(`=`);if(i===-1)continue;let a=ve[e.slice(0,i).trim()];if(!a)continue;let o=M(e.slice(i+1).trim());o!==null&&(a===`source`?n.source=o:n[a]=o)}return n&&N(t,n),t}function be(e){return e.map(e=>`[[package]]\nname = "${e.name}"\nversion = "${e.version}"\nsource = "${e.source}"\nfile_name = "${e.fileName}"\nsha256 = "${e.sha256}"\n`).join(`
|
|
11
|
-
`)}function xe(e,t,n){let r=O(t),i=e.filter(e=>O(k(e))!==r);return i.push(`${t}==${n}`),i.sort((e,t)=>O(k(e)).localeCompare(O(k(t)))),i}function Se(e,t){let n=O(t.name),r=e.filter(e=>O(e.name)!==n);return r.push(t),r.sort((e,t)=>O(e.name).localeCompare(O(t.name))),r}async function P(e,t){let n=r(t,E);if(!await e.exists(n))return{name:`workspace`,version:`0.1.0`,dependencies:[]};let i=await e.readFile(n);return{...fe(i),raw:i}}async function Ce(e,t,n){await e.mkdir(t,{recursive:!0});let i=n.raw===void 0?me(n):_e(n.raw,n);await e.writeFile(r(t,E),i)}async function F(e,t){let n=r(t,D);return await e.exists(n)?ye(await e.readFile(n)):[]}async function we(e,t,n){await e.mkdir(t,{recursive:!0}),await e.writeFile(r(t,D),be(n))}const I={EBADF:8,EEXIST:20,EINVAL:28,EIO:29,EISDIR:31,ENOENT:44,ENOTDIR:54,ENOTEMPTY:55,EPERM:63},L=16877;async function Te(e){let t=new Map;t.set(``,{kind:`directory`,dirHandle:e});async function n(e,r){let i=e;for await(let[e,a]of i){let i=r===``?e:`${r}/${e}`;if(a.kind===`directory`)t.set(i,{kind:`directory`,dirHandle:a}),await n(a,i);else{let e=a,n=await e.getFile();t.set(i,{kind:`file`,fileHandle:e,size:n.size,mtime:n.lastModified})}}}return await n(e,``),{entries:t}}function R(e,t){return e===``?t:`${e}/${t}`}function Ee(e,t){return{getattr(t){let n=e.isDir(t.mode),r=e.isLink(t.mode)?t.opfs.linkTarget?.length??0:n?4096:t.opfs.size,i=new Date(t.opfs.mtime||t.timestamp);return{dev:1,ino:t.id,mode:t.mode,nlink:1,uid:0,gid:0,rdev:0,size:r,atime:i,mtime:i,ctime:i,blksize:4096,blocks:Math.ceil(r/4096)}},setattr(t,n){if(n.mode!==void 0&&(t.mode=t.mode&61440|n.mode&-61441),n.size!==void 0&&e.isFile(t.mode)){let e=n.size;t.opfs.size=e;let r=e;B(t.mount,async()=>{if(t.opfs.size>r)return;let n=await Ne(t),i=t.mount.opts.sahProvider.acquire(t.opfs.relPath,n);try{i.truncate(e),i.flush()}finally{i.close(),t.mount.opts.sahProvider.release(t.opfs.relPath)}})}if(n.mtime!==void 0){let e=n.mtime.getTime();t.opfs.mtime=e,t.timestamp=e}},lookup(t,n){let r=t.opfs.children?.get(n);if(!r)throw new e.ErrnoError(I.ENOENT);return r},mknod(n,r,i,a){if(n.opfs.children?.has(r))throw new e.ErrnoError(I.EEXIST);let o=t.createNode(n,r,i,a);return n.opfs.children?.set(r,o),e.isDir(i)?B(n.mount,async()=>{let e=await(await V(n)).getDirectoryHandle(r,{create:!0});o.opfs.dirHandle=e}):e.isFile(i)&&B(n.mount,async()=>{let e=await(await V(n)).getFileHandle(r,{create:!0});o.opfs.fileHandle=e}),o},rename(t,n,r){let i=t.parent,a=t.name;if(a!==r||i!==n){if(n.opfs.children?.has(r))throw new e.ErrnoError(I.EEXIST);i.opfs.children?.delete(a),n.opfs.children?.set(r,t),t.name=r,t.parent=n,Pe(t,R(n.opfs.relPath,r)),e.isFile(t.mode)?B(t.mount,()=>Fe(t,i,a,n,r)):e.isDir(t.mode)&&B(t.mount,()=>Ie(t,i,a,n,r))}},unlink(t,n){let r=t.opfs.children?.get(n);if(!r)throw new e.ErrnoError(I.ENOENT);if(e.isDir(r.mode))throw new e.ErrnoError(I.EISDIR);t.opfs.children?.delete(n),e.isFile(r.mode)&&B(t.mount,async()=>{try{t.mount.opts.sahProvider.release(r.opfs.relPath)}catch{}await(await V(t)).removeEntry(n)})},rmdir(t,n){let r=t.opfs.children?.get(n);if(!r)throw new e.ErrnoError(I.ENOENT);if(!e.isDir(r.mode))throw new e.ErrnoError(I.ENOTDIR);if((r.opfs.children?.size??0)>0)throw new e.ErrnoError(I.ENOTEMPTY);t.opfs.children?.delete(n),B(t.mount,async()=>{await(await V(t)).removeEntry(n)})},readdir(t){if(!e.isDir(t.mode))throw new e.ErrnoError(I.ENOTDIR);let n=[`.`,`..`];for(let e of t.opfs.children?.keys()??[])n.push(e);return n},symlink(n,r,i){if(n.opfs.children?.has(r))throw new e.ErrnoError(I.EEXIST);let a=t.createNode(n,r,41471,0);return a.opfs.linkTarget=i,n.opfs.children?.set(r,a),a},readlink(t){if(!e.isLink(t.mode))throw new e.ErrnoError(I.EINVAL);return t.opfs.linkTarget??``}}}function De(e){return{open(t){let n=t.node;if(e.isDir(n.mode)||!e.isFile(n.mode))return;let r=n.mount.opts.sahProvider.acquire(n.opfs.relPath,n.opfs.fileHandle);t.sah=r,t.flags!==void 0&&t.flags&512?(r.truncate(0),n.opfs.size=0):n.opfs.size=r.getSize()},close(e){let t=e.sah;if(t)try{t.flush()}finally{t.close(),e.node.mount.opts.sahProvider.release(e.node.opfs.relPath),e.sah=void 0}},read(t,n,r,i,a){let o=t.sah;if(!o)throw new e.ErrnoError(I.EBADF);let s=new Uint8Array(n.buffer,n.byteOffset+r,i);return o.read(s,{at:a})},write(t,n,r,i,a){let o=t.sah;if(!o)throw new e.ErrnoError(I.EBADF);let s=new Uint8Array(n.buffer,n.byteOffset+r,i),c=o.write(s,{at:a}),l=Math.max(t.node.opfs.size,a+c);return t.node.opfs.size=l,t.node.opfs.mtime=Date.now(),t.node.timestamp=t.node.opfs.mtime,c},llseek(t,n,r){let i=n;if(r===1)i=t.position+n;else if(r===2){let e=t.sah;i=(e?e.getSize():t.node.opfs.size)+n}if(i<0)throw new e.ErrnoError(I.EINVAL);return t.position=i,i}}}function Oe(e,t,n,r){for(let[i,a]of r.entries){if(i===``)continue;let r=i.split(`/`),o=n;for(let t=0;t<r.length-1;t++){let n=r[t],i=o.opfs.children?.get(n);if(!i)throw new e.ErrnoError(I.EIO);o=i}let s=r[r.length-1];if(a.kind===`directory`){let e=t.createNode(o,s,L,0);e.opfs.dirHandle=a.dirHandle,e.opfs.children=new Map,o.opfs.children?.set(s,e)}else{let e=t.createNode(o,s,33188,0);e.opfs.fileHandle=a.fileHandle,e.opfs.size=a.size,e.opfs.mtime=a.mtime,e.timestamp=a.mtime,o.opfs.children?.set(s,e)}}}function ke(e){let t={mount(n){let{prewalk:r}=n.opts,i=r.entries.get(``);if(i?.kind!==`directory`)throw new e.ErrnoError(I.EINVAL);let a=t.createNode(null,`/`,L,0);return a.mount=n,a.opfs.dirHandle=i.dirHandle,a.opfs.children=new Map,Oe(e,t,a,r),a},createNode(n,r,i,a=0){if(!e.isDir(i)&&!e.isFile(i)&&!e.isLink(i))throw new e.ErrnoError(I.EINVAL);let o=n===null?``:R(n.opfs?.relPath??``,r),s=e.createNode(n,r,i,a);return s.node_ops=t.node_ops,s.stream_ops=t.stream_ops,s.timestamp=Date.now(),n!==null&&(s.mount=n.mount),s.opfs={relPath:o,size:0,mtime:s.timestamp},e.isDir(i)&&(s.opfs.children=new Map),s},node_ops:void 0,stream_ops:void 0};return t.node_ops=Ee(e,t),t.stream_ops=De(e),t}const z=new WeakMap;function B(e,t){let n=(z.get(e)??Promise.resolve()).then(t,t);z.set(e,n),e.opts.flush||(e.opts.flush=()=>z.get(e)??Promise.resolve())}async function Ae(e){await(z.get(e)??Promise.resolve())}var je=class{backing;onClose;constructor(e,t){this.backing=e,this.onClose=t}read(e,t){let n=t?.at??0,r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=Math.min(this.backing.data.length,n+r.byteLength),a=Math.max(0,i-n);return r.set(this.backing.data.subarray(n,n+a),0),a}write(e,t){let n=t?.at??0,r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=n+r.byteLength;if(i>this.backing.data.length){let e=new Uint8Array(i);e.set(this.backing.data),this.backing.data=e}return this.backing.data.set(r,n),this.backing.dirty=!0,r.byteLength}truncate(e){if(e===this.backing.data.length)return;let t=new Uint8Array(e);t.set(this.backing.data.subarray(0,Math.min(e,this.backing.data.length))),this.backing.data=t,this.backing.dirty=!0}getSize(){return this.backing.data.length}flush(){}close(){this.onClose()}};function Me(){let e=new Map,t=new Set;return{provider:{acquire(n,r){let i=e.get(n);return i||(i={data:new Uint8Array,dirty:!0},e.set(n,i),t.add(n)),new je(i,()=>{i.dirty&&t.add(n)})},release(e){}},async preload(t){for(let[n,r]of t.entries){if(r.kind!==`file`)continue;let t=await r.fileHandle.getFile(),i=new Uint8Array(await t.arrayBuffer());e.set(n,{data:i,dirty:!1})}},async flush(t){for(let[n,r]of e){if(!r.dirty)continue;let e=n.split(`/`),i=t;for(let t of e.slice(0,-1))i=await i.getDirectoryHandle(t,{create:!0});let a=await(await i.getFileHandle(e[e.length-1],{create:!0})).createWritable(),o=new ArrayBuffer(r.data.byteLength);new Uint8Array(o).set(r.data),await a.write(o),await a.close(),r.dirty=!1}},getDirtyPaths(){return[...t]}}}async function V(e){if(e.opfs.dirHandle)return e.opfs.dirHandle;let t=e.opfs.relPath.split(`/`).filter(Boolean),n=e.mount.root.opfs.dirHandle;for(let e of t)n=await n.getDirectoryHandle(e,{create:!0});return e.opfs.dirHandle=n,n}async function Ne(e){if(e.opfs.fileHandle)return e.opfs.fileHandle;let t=await(await V(e.parent)).getFileHandle(e.name,{create:!0});return e.opfs.fileHandle=t,t}function Pe(e,t){if(e.opfs.relPath=t,e.opfs.children)for(let[n,r]of e.opfs.children)Pe(r,R(t,n))}async function Fe(e,t,n,r,i){let a=await V(t),o=await V(r),s=await(await a.getFileHandle(n)).getFile(),c=new Uint8Array(await s.arrayBuffer()),l=await o.getFileHandle(i,{create:!0}),u=e.mount.opts.sahProvider.acquire(e.opfs.relPath,l);try{u.truncate(0),c.byteLength>0&&u.write(c,{at:0}),u.flush()}finally{u.close(),e.mount.opts.sahProvider.release(e.opfs.relPath)}await a.removeEntry(n),e.opfs.fileHandle=l}async function Ie(e,t,n,r,i){let a=await V(t),o=await V(r),s=await a.getDirectoryHandle(n),c=await o.getDirectoryHandle(i,{create:!0});await Le(s,c),await a.removeEntry(n,{recursive:!0}),e.opfs.dirHandle=c}async function Le(e,t){let n=e;for await(let[e,r]of n)if(r.kind===`directory`)await Le(r,await t.getDirectoryHandle(e,{create:!0}));else{let n=await r.getFile(),i=new Uint8Array(await n.arrayBuffer()),a=await(await t.getFileHandle(e,{create:!0})).createWritable();await a.write(i),await a.close()}}function Re(e){return`slicc: synchronous access to mounted path '${e}' is not supported. Use the async slicc.fs module (e.g. \`await slicc.fs.read_text('${e}')\` or \`await slicc.fs.listdir('${e}')\`), or copy the file into the VFS first (\`await slicc.fs.read_bytes('${e}/<file>')\` then write it under /tmp).`}function H(e,t){let n=new e.ErrnoError(I.EIO);return n.message=Re(t),n}function ze(e){let t={mount(n){let r=e.createNode(null,`/`,16877,0);return r.node_ops=t.node_ops,r.stream_ops=t.stream_ops,r.mount=n,r},createNode(n,r,i,a=0){let o=e.createNode(n,r,i,a);return o.node_ops=t.node_ops,o.stream_ops=t.stream_ops,n!==null&&(o.mount=n.mount),o},node_ops:{getattr:e=>{throw H(n(e),U(e))},setattr:e=>{throw H(n(e),U(e))},lookup:e=>{throw H(n(e),U(e))},mknod:e=>{throw H(n(e),U(e))},rename:e=>{throw H(n(e),U(e))},unlink:e=>{throw H(n(e),U(e))},rmdir:e=>{throw H(n(e),U(e))},readdir:e=>{throw H(n(e),U(e))},symlink:e=>{throw H(n(e),U(e))},readlink:e=>{throw H(n(e),U(e))}},stream_ops:{open:e=>{throw H(n(e.node),U(e.node))},close:()=>{},read:e=>{throw H(n(e.node),U(e.node))},write:e=>{throw H(n(e.node),U(e.node))},llseek:e=>{throw H(n(e.node),U(e.node))}}};function n(t){return e}return t}function U(e){let t=e.mount;return t?.opts?.mountPath??t?.mountpoint??`<unknown mount>`}function Be(e,t){let n=e.MOUNT_BOMB_FS;return n||(n=ze(t),e.MOUNT_BOMB_FS=n),n}function Ve(e,t,n=()=>{}){if(t.length===0)return;let r=Be(e.filesystems,e);for(let i of t)try{try{e.stat(i)}catch{e.mkdirTree(i)}e.mount(r,{mountPath:i},i)}catch(e){n(`mount '${i}': bomb overlay failed: ${e instanceof Error?e.message:String(e)}`)}}function He(e){return Re(e)}async function Ue(e,t){if(t.length===0)return;let n={};for(let e of t)n[e]=He(e);let r=JSON.stringify({prefixes:t,messages:n});e.globals.set(`__slicc_mount_data`,r);try{await e.runPythonAsync(`
|
|
12
|
-
import builtins as _slicc_builtins
|
|
13
|
-
import io as _slicc_io
|
|
14
|
-
import os as _slicc_os
|
|
15
|
-
import os.path as _slicc_osp
|
|
16
|
-
import errno as _slicc_errno
|
|
17
|
-
import json as _slicc_json
|
|
18
|
-
|
|
19
|
-
_slicc_data = _slicc_json.loads(__slicc_mount_data)
|
|
20
|
-
_slicc_mount_prefixes = list(_slicc_data['prefixes'])
|
|
21
|
-
_slicc_mount_messages = dict(_slicc_data['messages'])
|
|
22
|
-
del _slicc_data
|
|
23
|
-
|
|
24
|
-
def _slicc_match_mount_prefix(path):
|
|
25
|
-
if path is None:
|
|
26
|
-
return None
|
|
27
|
-
if isinstance(path, int):
|
|
28
|
-
return None
|
|
29
|
-
try:
|
|
30
|
-
s = _slicc_os.fspath(path)
|
|
31
|
-
except TypeError:
|
|
32
|
-
return None
|
|
33
|
-
if isinstance(s, bytes):
|
|
34
|
-
try:
|
|
35
|
-
s = s.decode('utf-8', 'surrogateescape')
|
|
36
|
-
except Exception:
|
|
37
|
-
return None
|
|
38
|
-
if not isinstance(s, str):
|
|
39
|
-
return None
|
|
40
|
-
try:
|
|
41
|
-
resolved = _slicc_osp.abspath(s)
|
|
42
|
-
except Exception:
|
|
43
|
-
return None
|
|
44
|
-
for prefix in _slicc_mount_prefixes:
|
|
45
|
-
if resolved == prefix or resolved.startswith(prefix + '/'):
|
|
46
|
-
return prefix
|
|
47
|
-
return None
|
|
48
|
-
|
|
49
|
-
def _slicc_raise_mount_guard(path, prefix):
|
|
50
|
-
msg = _slicc_mount_messages.get(prefix)
|
|
51
|
-
if not msg:
|
|
52
|
-
msg = "slicc: synchronous access to mounted path '" + prefix + "' is not supported; use the async slicc.fs module."
|
|
53
|
-
raise OSError(_slicc_errno.EIO, msg, str(path))
|
|
54
|
-
|
|
55
|
-
_slicc_orig_builtins_open = _slicc_builtins.open
|
|
56
|
-
_slicc_orig_io_open = _slicc_io.open
|
|
57
|
-
_slicc_orig_listdir = _slicc_os.listdir
|
|
58
|
-
_slicc_orig_scandir = _slicc_os.scandir
|
|
59
|
-
_slicc_orig_stat = _slicc_os.stat
|
|
60
|
-
_slicc_orig_lstat = _slicc_os.lstat
|
|
61
|
-
_slicc_orig_mkdir = _slicc_os.mkdir
|
|
62
|
-
_slicc_orig_remove = _slicc_os.remove
|
|
63
|
-
_slicc_orig_rename = _slicc_os.rename
|
|
64
|
-
|
|
65
|
-
def _slicc_guarded_builtins_open(file, *args, **kwargs):
|
|
66
|
-
if isinstance(file, int):
|
|
67
|
-
return _slicc_orig_builtins_open(file, *args, **kwargs)
|
|
68
|
-
prefix = _slicc_match_mount_prefix(file)
|
|
69
|
-
if prefix is not None:
|
|
70
|
-
_slicc_raise_mount_guard(file, prefix)
|
|
71
|
-
return _slicc_orig_builtins_open(file, *args, **kwargs)
|
|
72
|
-
|
|
73
|
-
def _slicc_guarded_io_open(file, *args, **kwargs):
|
|
74
|
-
if isinstance(file, int):
|
|
75
|
-
return _slicc_orig_io_open(file, *args, **kwargs)
|
|
76
|
-
prefix = _slicc_match_mount_prefix(file)
|
|
77
|
-
if prefix is not None:
|
|
78
|
-
_slicc_raise_mount_guard(file, prefix)
|
|
79
|
-
return _slicc_orig_io_open(file, *args, **kwargs)
|
|
80
|
-
|
|
81
|
-
def _slicc_make_path_guard(orig):
|
|
82
|
-
def _guarded(path, *args, **kwargs):
|
|
83
|
-
prefix = _slicc_match_mount_prefix(path)
|
|
84
|
-
if prefix is not None:
|
|
85
|
-
_slicc_raise_mount_guard(path, prefix)
|
|
86
|
-
return orig(path, *args, **kwargs)
|
|
87
|
-
return _guarded
|
|
88
|
-
|
|
89
|
-
def _slicc_guarded_rename(src, dst, *args, **kwargs):
|
|
90
|
-
for p in (src, dst):
|
|
91
|
-
prefix = _slicc_match_mount_prefix(p)
|
|
92
|
-
if prefix is not None:
|
|
93
|
-
_slicc_raise_mount_guard(p, prefix)
|
|
94
|
-
return _slicc_orig_rename(src, dst, *args, **kwargs)
|
|
95
|
-
|
|
96
|
-
_slicc_builtins.open = _slicc_guarded_builtins_open
|
|
97
|
-
_slicc_io.open = _slicc_guarded_io_open
|
|
98
|
-
_slicc_os.listdir = _slicc_make_path_guard(_slicc_orig_listdir)
|
|
99
|
-
_slicc_os.scandir = _slicc_make_path_guard(_slicc_orig_scandir)
|
|
100
|
-
_slicc_os.stat = _slicc_make_path_guard(_slicc_orig_stat)
|
|
101
|
-
_slicc_os.lstat = _slicc_make_path_guard(_slicc_orig_lstat)
|
|
102
|
-
_slicc_os.mkdir = _slicc_make_path_guard(_slicc_orig_mkdir)
|
|
103
|
-
_slicc_os.remove = _slicc_make_path_guard(_slicc_orig_remove)
|
|
104
|
-
_slicc_os.rename = _slicc_guarded_rename
|
|
105
|
-
`)}finally{try{e.runPython(`del __slicc_mount_data`)}catch{}}}var We=class{port;nextId=1;pending=new Map;eventSubscribers=new Map;progressWaiters=new Set;handler;disposed=!1;constructor(e){this.port=e,this.handler=e=>{let t=e.data;if(t?.type===`realm-rpc-res`){let t=e.data,n=this.pending.get(t.id);if(!n)return;this.pending.delete(t.id),typeof t.error==`string`?n.reject(Error(t.error)):n.resolve(t.result),this.notifyProgress();return}if(t?.type===`realm-event`){let t=e.data,n=this.eventSubscribers.get(t.channel);if(!n)return;for(let e of[...n])try{e(t.payload)}catch{}}},e.addEventListener(`message`,this.handler),e.start?.()}get pendingCount(){return this.pending.size}waitForProgress(){return this.pending.size===0?Promise.resolve():new Promise(e=>{this.progressWaiters.add(e)})}notifyProgress(){if(this.progressWaiters.size===0)return;let e=[...this.progressWaiters];this.progressWaiters.clear();for(let t of e)t()}call(e,t,n=[]){if(this.disposed)return Promise.reject(Error(`realm-rpc: client disposed`));let r=this.nextId++,i={type:`realm-rpc-req`,id:r,channel:e,op:t,args:n};return new Promise((e,t)=>{this.pending.set(r,{resolve:e,reject:t}),this.port.postMessage(i)})}onEvent(e,t){if(this.disposed)return()=>{};let n=this.eventSubscribers.get(e);return n||(n=new Set,this.eventSubscribers.set(e,n)),n.add(t),()=>{let n=this.eventSubscribers.get(e);n&&(n.delete(t),n.size===0&&this.eventSubscribers.delete(e))}}dispose(){if(this.disposed)return;this.disposed=!0,this.port.removeEventListener(`message`,this.handler);let e=Error(`realm-rpc: client disposed`);for(let t of this.pending.values())t.reject(e);this.pending.clear(),this.eventSubscribers.clear(),this.notifyProgress()}};function Ge(e){return{listdir(t){return e.call(`vfs`,`readDir`,[t])},async readBytes(t){let n=await e.call(`vfs`,`readFileBinary`,[t]);return n instanceof Uint8Array?n:new Uint8Array(n)},async writeBytes(t,n){await e.call(`vfs`,`writeFileBinary`,[t,n])},stat(t){return e.call(`vfs`,`stat`,[t])},exists(t){return e.call(`vfs`,`exists`,[t])},async mkdir(t){await e.call(`vfs`,`mkdir`,[t])},async remove(t){await e.call(`vfs`,`rm`,[t])}}}async function Ke(e,t){let n=Ge(t);e.registerJsModule(`_slicc_fs_js`,n),await e.runPythonAsync(`
|
|
106
|
-
import sys
|
|
107
|
-
import types
|
|
108
|
-
import js
|
|
109
|
-
|
|
110
|
-
def _build_slicc_module(_bridge):
|
|
111
|
-
fs_module = types.ModuleType("slicc.fs")
|
|
112
|
-
|
|
113
|
-
async def listdir(path):
|
|
114
|
-
result = await _bridge.listdir(path)
|
|
115
|
-
return [str(name) for name in result.to_py()] if hasattr(result, "to_py") else [str(name) for name in result]
|
|
116
|
-
|
|
117
|
-
async def read_bytes(path):
|
|
118
|
-
result = await _bridge.readBytes(path)
|
|
119
|
-
# Pyodide returns JS Uint8Array as memoryview; coerce to bytes.
|
|
120
|
-
if hasattr(result, "to_bytes"):
|
|
121
|
-
return result.to_bytes()
|
|
122
|
-
if isinstance(result, memoryview):
|
|
123
|
-
return bytes(result)
|
|
124
|
-
return bytes(result)
|
|
125
|
-
|
|
126
|
-
async def read_text(path, encoding="utf-8"):
|
|
127
|
-
data = await read_bytes(path)
|
|
128
|
-
return data.decode(encoding)
|
|
129
|
-
|
|
130
|
-
async def write_bytes(path, data):
|
|
131
|
-
if isinstance(data, str):
|
|
132
|
-
raise TypeError("write_bytes expects bytes-like; use write_text for str")
|
|
133
|
-
if isinstance(data, (bytes, bytearray, memoryview)):
|
|
134
|
-
payload = bytes(data)
|
|
135
|
-
else:
|
|
136
|
-
payload = bytes(data)
|
|
137
|
-
# Convert Python bytes to a real JS Uint8Array before crossing
|
|
138
|
-
# the realm RPC boundary. The bridge call ultimately hits
|
|
139
|
-
# \`port.postMessage\` (see realm-rpc.ts), which structured-
|
|
140
|
-
# clones its argument; a Python \`bytes\` would arrive as a
|
|
141
|
-
# PyProxy and trigger DataCloneError. \`js.Uint8Array.new\`
|
|
142
|
-
# copies the buffer into a JS typed array that clones cleanly.
|
|
143
|
-
await _bridge.writeBytes(path, js.Uint8Array.new(payload))
|
|
144
|
-
|
|
145
|
-
async def write_text(path, text, encoding="utf-8"):
|
|
146
|
-
if not isinstance(text, str):
|
|
147
|
-
raise TypeError("write_text expects str; use write_bytes for bytes")
|
|
148
|
-
await write_bytes(path, text.encode(encoding))
|
|
149
|
-
|
|
150
|
-
async def stat(path):
|
|
151
|
-
result = await _bridge.stat(path)
|
|
152
|
-
obj = result.to_py() if hasattr(result, "to_py") else result
|
|
153
|
-
if isinstance(obj, dict):
|
|
154
|
-
return {
|
|
155
|
-
"isDirectory": bool(obj.get("isDirectory", False)),
|
|
156
|
-
"isFile": bool(obj.get("isFile", False)),
|
|
157
|
-
"size": int(obj.get("size", 0)),
|
|
158
|
-
}
|
|
159
|
-
return {
|
|
160
|
-
"isDirectory": bool(getattr(obj, "isDirectory", False)),
|
|
161
|
-
"isFile": bool(getattr(obj, "isFile", False)),
|
|
162
|
-
"size": int(getattr(obj, "size", 0)),
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
async def exists(path):
|
|
166
|
-
result = await _bridge.exists(path)
|
|
167
|
-
return bool(result)
|
|
168
|
-
|
|
169
|
-
async def mkdir(path, parents=False):
|
|
170
|
-
# The underlying vfs.mkdir is recursive ({recursive: true} in
|
|
171
|
-
# realm-host.ts), matching parents=True semantics. With
|
|
172
|
-
# parents=False we raise FileExistsError when the target
|
|
173
|
-
# already exists, mirroring pathlib.Path.mkdir(parents=False).
|
|
174
|
-
if not parents:
|
|
175
|
-
try:
|
|
176
|
-
already = await exists(path)
|
|
177
|
-
except Exception:
|
|
178
|
-
already = False
|
|
179
|
-
if already:
|
|
180
|
-
raise FileExistsError(path)
|
|
181
|
-
await _bridge.mkdir(path)
|
|
182
|
-
|
|
183
|
-
async def remove(path):
|
|
184
|
-
await _bridge.remove(path)
|
|
185
|
-
|
|
186
|
-
async def walk(path):
|
|
187
|
-
results = []
|
|
188
|
-
async def _visit(current):
|
|
189
|
-
names = await listdir(current)
|
|
190
|
-
dirnames = []
|
|
191
|
-
filenames = []
|
|
192
|
-
for name in names:
|
|
193
|
-
child = current + "/" + name if current != "/" else "/" + name
|
|
194
|
-
try:
|
|
195
|
-
st = await stat(child)
|
|
196
|
-
except Exception:
|
|
197
|
-
continue
|
|
198
|
-
if st["isDirectory"]:
|
|
199
|
-
dirnames.append(name)
|
|
200
|
-
elif st["isFile"]:
|
|
201
|
-
filenames.append(name)
|
|
202
|
-
results.append((current, dirnames, filenames))
|
|
203
|
-
for d in list(dirnames):
|
|
204
|
-
child = current + "/" + d if current != "/" else "/" + d
|
|
205
|
-
await _visit(child)
|
|
206
|
-
await _visit(path)
|
|
207
|
-
return results
|
|
208
|
-
|
|
209
|
-
fs_module.listdir = listdir
|
|
210
|
-
fs_module.read_bytes = read_bytes
|
|
211
|
-
fs_module.read_text = read_text
|
|
212
|
-
fs_module.write_bytes = write_bytes
|
|
213
|
-
fs_module.write_text = write_text
|
|
214
|
-
fs_module.stat = stat
|
|
215
|
-
fs_module.exists = exists
|
|
216
|
-
fs_module.mkdir = mkdir
|
|
217
|
-
fs_module.remove = remove
|
|
218
|
-
fs_module.walk = walk
|
|
219
|
-
|
|
220
|
-
slicc_module = types.ModuleType("slicc")
|
|
221
|
-
slicc_module.fs = fs_module
|
|
222
|
-
sys.modules["slicc"] = slicc_module
|
|
223
|
-
sys.modules["slicc.fs"] = fs_module
|
|
224
|
-
return slicc_module
|
|
225
|
-
|
|
226
|
-
import _slicc_fs_js as _bridge
|
|
227
|
-
_build_slicc_module(_bridge)
|
|
228
|
-
del _build_slicc_module
|
|
229
|
-
del _bridge
|
|
230
|
-
`)}const W=o(`pyodide`,`314.0.6`),qe=`https://cdn.jsdelivr.net/pyodide/v${W}/full/`,Je=`pyodide is not installed in node_modules: run \`ipk add pyodide@${W}\` (no network fallback)`,G={asmJs:`pyodide.asm.mjs`,asmWasm:`pyodide.asm.wasm`,stdlibZip:`python_stdlib.zip`,lockJson:`pyodide-lock.json`};async function Ye(e){let t;try{t=await a(`pyodide/package.json`,e.fromDir,e.reader)}catch{return null}if(t.type!==`file`)return null;let r=n(t.path).dir;for(let t of Object.values(G))if(!await e.reader.exists(`${r}/${t}`))return null;return r}async function Xe(e,t){try{let[n,r,i,a]=await Promise.all([e.call(`vfs`,`readFile`,[`${t}/${G.asmJs}`]),e.call(`vfs`,`readFileBinary`,[`${t}/${G.asmWasm}`]),e.call(`vfs`,`readFileBinary`,[`${t}/${G.stdlibZip}`]),e.call(`vfs`,`readFile`,[`${t}/${G.lockJson}`])]);return{asmJsSource:n,asmWasmBytes:r instanceof Uint8Array?r:new Uint8Array(r),stdlibBytes:i instanceof Uint8Array?i:new Uint8Array(i),lockJsonString:a}}catch{return null}}function Ze(e,t){let n=e+G.asmWasm,r=globalThis.fetch,i=!0,a=(e,i)=>(typeof e==`string`?e:e instanceof URL?e.href:e.url)===n?Promise.resolve(new Response(t,{headers:{"Content-Type":`application/wasm`}})):r(e,i);return globalThis.fetch=a,{restore:()=>{i&&(i=!1,globalThis.fetch===a&&(globalThis.fetch=r))}}}async function Qe(e,t,n){let r=await Xe(n,t);if(!r)throw Error(Je);let i=URL.createObjectURL(new Blob([r.asmJsSource],{type:`text/javascript`})),a=URL.createObjectURL(new Blob([r.stdlibBytes],{type:`application/zip`})),o=`slicc-pyodide://local/${crypto.randomUUID()}/`,s=Ze(o,r.asmWasmBytes);try{let t=await import(i);return await e.loadPyodide({indexURL:o,lockFileContents:r.lockJsonString,stdLibURL:a,createPyodideModule:t.default,packageBaseUrl:te(`/workspace/python_wheels/`)})}finally{s.restore(),URL.revokeObjectURL(i),URL.revokeObjectURL(a)}}async function $e(e,t,n=()=>import(`./pyodide-65Z_RapY.js`)){let r=[],i=[],a=new We(t),o;try{let t=await n();o=e.pyodideAssetRoot?await Qe(t,e.pyodideAssetRoot,a):await t.loadPyodide({indexURL:e.pyodideIndexURL})}catch(e){a.dispose();let n={type:`realm-error`,message:`loadPyodide: ${e instanceof Error?e.message:String(e)}`};t.postMessage(n);return}let s=e=>{i.push(`Warning: ${e}\n`)},c=[],l;try{await et(o,a,s,tt(e.pyodideAssetRoot)),c=await dt(o,e,s),await ft(o,e,s),await lt(o,a,e,s),await pt(o,a,s);try{o.FS.chdir(e.cwd)}catch{}mt(o,e,r,i),l=await ht(o,i),await gt(c,e,a,s)}catch(e){a.dispose();let n={type:`realm-error`,message:`${e instanceof Error?e.message:String(e)}${i.length?`\n${i.join(``)}`:``}`};t.postMessage(n);return}a.dispose();let u={type:`realm-done`,stdout:r.join(``),stderr:i.join(``),exitCode:l};t.postMessage(u)}const K=`/workspace/python_wheels`;async function et(e,t,n,r){await it(t,n,r);try{await e.loadPackage([`micropip`])}catch(e){n(`micropip preload failed: ${q(e)}`)}}function tt(e){return e?`${e}/${G.lockJson}`:`/workspace/node_modules/pyodide/pyodide-lock.json`}const nt=1e4,rt=new WeakMap;function it(e,t,n){let r=rt.get(e);if(r)return r;let i=at(e,t,n);return rt.set(e,i),i}async function at(e,t,n){let r;try{if(!await e.call(`vfs`,`exists`,[n]))return;let t=await e.call(`vfs`,`readFile`,[n]),i=JSON.parse(t);for(let[e,t]of Object.entries(i.packages??{}))if(t?.file_name&&O(t.name??e)===`micropip`){r=t;break}}catch(e){t(`micropip wheel staging skipped: ${q(e)}`);return}if(!r?.file_name||!r.sha256)return;let i=`${K}/${r.file_name}`;try{if(await e.call(`vfs`,`exists`,[i]))return;let t=await T(ot(e),{url:`${qe}${r.file_name}`,sha256:r.sha256,label:`micropip wheel`,timeoutMs:nt});await e.call(`vfs`,`mkdir`,[K]),await e.call(`vfs`,`writeFileBinary`,[i,t])}catch(e){t(`micropip wheel staging failed: ${q(e)}`)}}function ot(e){return async(t,n)=>{let r={method:n?.method??`GET`,...n?.headers?{headers:n.headers}:{},...n?.body===void 0?{}:{body:n.body}},i=await st(e.call(`fetch`,`request`,[t,r]),n?.timeoutMs??nt,t);return{status:i.status,statusText:i.statusText,headers:i.headers,body:i.body instanceof Uint8Array?i.body:new Uint8Array(i.body),url:i.url}}}function st(e,t,n){let r,i=new Promise((e,i)=>{r=setTimeout(()=>i(Error(`request to ${n} timed out after ${t}ms`)),t)});return Promise.race([e,i]).finally(()=>clearTimeout(r))}function ct(e){return{exists:t=>e.call(`vfs`,`exists`,[t]),readFile:t=>e.call(`vfs`,`readFile`,[t])}}async function lt(e,t,n,r){let i=ct(t),a;try{a=await A(i,n.cwd)}catch(e){r(`manifest discovery failed: ${q(e)}`);return}if(a===null)return;let o,s;try{let[e,t]=await Promise.all([P(i,a),F(i,a)]);o=e.dependencies,s=t}catch(e){r(`manifest read failed: ${q(e)}`);return}let c=new Map;for(let e of s)c.set(O(e.name),e);for(let t of o){let{name:n}=le(t);if(!n)continue;let i=c.get(O(n));if(!i){r(`no integrity pin for \`${n}\`; run \`di sync\` to repair`);continue}await ut(e,i,r)}}async function ut(e,t,n){switch(t.source){case`pyodide-cdn`:try{await e.loadPackage([t.name])}catch(e){n(`activation of \`${t.name}\` failed: ${q(e)}`)}return;case`pypi`:try{let n=`${K}/${t.fileName}`;await e.runPythonAsync(`import micropip; await micropip.install('emfs:${n}')`)}catch(e){n(`activation of \`${t.name}\` failed: ${q(e)}`)}return;default:n(`unknown source \`${t.source}\` for \`${t.name}\`; skipping`)}}async function dt(e,t,n){if(t.opfsMountDbName===void 0)return[];let r=t.pyodideMountDirs??[t.cwd,`/tmp`],i=t.mountPoints??[],a=new Set(i.map(e=>e.path));try{return(await yt(e,r,t.opfsMountDbName,n,{skipMountPaths:a})).mounts}catch(e){return n(`VFS→Pyodide OPFS mount failed: ${q(e)}`),[]}}async function ft(e,t,n){let r=t.mountPoints??[];if(r.length!==0){try{Ve(e.FS,r.map(e=>e.path),n)}catch(e){n(`bomb overlay install failed: ${q(e)}`)}try{await Ue(e,r.map(e=>e.path))}catch(e){n(`python mount guard install failed: ${q(e)}`)}}}async function pt(e,t,n){try{await Ke(e,t)}catch(e){n(`slicc.fs registration failed: ${q(e)}`)}}function mt(e,t,n,r){e.setStdout({batched:e=>n.push(e+`
|
|
231
|
-
`)}),e.setStderr({batched:e=>r.push(e+`
|
|
232
|
-
`)});let i=!1;e.setStdin({stdin:()=>i||!t.stdin?null:(i=!0,t.stdin)}),e.globals.set(`__slicc_code`,t.code),e.globals.set(`__slicc_filename`,t.filename),e.globals.set(`__slicc_argv`,t.argv)}async function ht(e,t){let n;try{await e.runPythonAsync(`
|
|
233
|
-
import sys
|
|
234
|
-
import traceback
|
|
235
|
-
|
|
236
|
-
__slicc_exit_code = 0
|
|
237
|
-
try:
|
|
238
|
-
sys.argv = __slicc_argv
|
|
239
|
-
exec(compile(__slicc_code, __slicc_filename, "exec"), {"__name__": "__main__", "__file__": __slicc_filename})
|
|
240
|
-
except SystemExit as exc:
|
|
241
|
-
code = exc.code
|
|
242
|
-
if code is None:
|
|
243
|
-
__slicc_exit_code = 0
|
|
244
|
-
elif isinstance(code, int):
|
|
245
|
-
__slicc_exit_code = code
|
|
246
|
-
else:
|
|
247
|
-
print(code, file=sys.stderr)
|
|
248
|
-
__slicc_exit_code = 1
|
|
249
|
-
except BaseException:
|
|
250
|
-
traceback.print_exc()
|
|
251
|
-
__slicc_exit_code = 1
|
|
252
|
-
`);let t=e.globals.get(`__slicc_exit_code`);n=typeof t==`number`?t:Number(t??1)}catch(e){let r=e instanceof Error?e.message:String(e);t.push(`${r}\n`),n=1}try{e.runPython(`del __slicc_code, __slicc_filename, __slicc_argv, __slicc_exit_code`)}catch{}return n}async function gt(e,t,n,r){if(t.opfsMountDbName!==void 0){try{await St(e)}catch(e){r(`Pyodide→VFS OPFS flush failed: ${e instanceof Error?e.message:String(e)}`)}try{await Ct(e,n)}catch(e){r(`Pyodide→kernel VFS invalidation failed: ${q(e)}`)}}}const _t=new Set([`dev`,`proc`,`lib`,`tmp`,`home`]);function q(e){if(e&&typeof e==`object`){let t=e,n=typeof t.errno==`number`,r=typeof t.code==`string`;if(n||r){let e=typeof t.name==`string`&&t.name?t.name:`Error`,i=typeof t.message==`string`?t.message:``,a=[];n&&a.push(`errno ${t.errno}`),r&&a.push(t.code);let o=a.length?` (${a.join(`, `)})`:``;return i?`${e}: ${i}${o}`:`${e}${o}`}}return e instanceof Error?e.message:String(e)}function vt(e){let t=e.FS.filesystems,n=t.OPFS_SYNC_FS;return n||(n=ke(e.FS),t.OPFS_SYNC_FS=n),n}async function yt(e,t,n,r=()=>{},i={}){let a=[],o=i.skipMountPaths??new Set,s=navigator.storage;if(!s?.getDirectory)return r(`VFS→Pyodide OPFS mount skipped: navigator.storage.getDirectory unavailable`),{mounts:a};let c;try{c=await s.getDirectory()}catch(e){return r(`VFS→Pyodide OPFS mount: getDirectory() failed: ${q(e)}`),{mounts:a}}let l;try{l=await c.getDirectoryHandle(n,{create:!0})}catch(e){return r(`VFS→Pyodide OPFS mount: opening '${n}' failed: ${q(e)}`),{mounts:a}}let u=vt(e);for(let n of t){if(n===`/`){await bt(e,u,l,o,a,r);continue}if(!o.has(n))try{let t=l;for(let e of n.split(`/`).filter(Boolean))t=await t.getDirectoryHandle(e,{create:!0});await xt(e,u,n,t,a)}catch(e){r(`VFS→Pyodide OPFS mount '${n}' failed: ${q(e)}`)}}return{mounts:a}}async function bt(e,t,n,r,i,a){try{let o=n;for await(let[n,s]of o){if(s.kind!==`directory`||_t.has(n))continue;let o=`/${n}`;if(!r.has(o))try{await xt(e,t,o,s,i)}catch(e){a(`VFS→Pyodide OPFS mount '${o}' failed: ${q(e)}`)}}}catch(e){a(`VFS→Pyodide OPFS mount '/' failed: ${q(e)}`)}}async function xt(e,t,n,r,i){try{e.FS.stat(n)}catch{e.FS.mkdirTree(n)}let a=await Te(r),o=Me();await o.preload(a);let s={rootHandle:r,prewalk:a,sahProvider:o.provider},c=e.FS.mount(t,s,n),l=c?.mount??{opts:s,mountpoint:n,root:c};i.push({pyPath:n,mount:l,rootHandle:r,flushBuffers:o.flush,getDirtyPaths:o.getDirtyPaths})}async function St(e){for(let t of e)await Ae(t.mount),await t.flushBuffers(t.rootHandle)}async function Ct(e,t){let n=[];for(let t of e)for(let e of t.getDirtyPaths())n.push(t.pyPath===`/`?`/${e}`:`${t.pyPath}/${e}`);n.length>0&&await t.call(`vfs`,`invalidatePaths`,[n])}const wt=new Set([`bcrypt`,`better-sqlite3`,`canvas`,`cpu-features`,`fsevents`,`leveldown`,`libxmljs`,`libxmljs2`,`node-gyp-build`,`node-sass`,`puppeteer`,`robotjs`,`sass-embedded`,`sharp`,`snappy`,`sqlite3`,`tree-sitter`,`usb`]),Tt={sharp:` Use the built-in 'convert' shell command for image work.`,canvas:` Use the built-in 'convert' / OffscreenCanvas for image work.`,"better-sqlite3":` Use the built-in 'sqlite3' shell command (sql.js WASM).`,sqlite3:` Use the built-in 'sqlite3' shell command (sql.js WASM).`,bcrypt:` Use crypto.subtle.digest() with PBKDF2 / Argon2 in pure JS.`,puppeteer:` Use the built-in browser-automation shell commands.`};function Et(e,t){let n=Tt[t]??``;return Error(`require('${e}'): '${t}' is a Node native module (C++ bindings) — it cannot run in the browser sandbox.${n}`)}const J=new Map,Y=new Map;function Dt(e){let t=crypto.randomUUID();return J.set(t,e),t}function X(e){return J.get(e)??null}function Ot(e,t){if(!J.has(e))return t.abort(),()=>{};let n=Y.get(e);return n||(n=new Set,Y.set(e,n)),n.add(t),()=>{let n=Y.get(e);n&&(n.delete(t),n.size===0&&Y.delete(e))}}function kt(e){J.delete(e);let t=Y.get(e);if(t){Y.delete(e);for(let e of t)e.signal.aborted||e.abort()}}function At(e){let t=e instanceof Error?e.message:String(e),n=e?.code;return typeof n==`string`&&/^E[A-Z]+$/.test(n)?{ok:!1,errno:n,message:t}:{ok:!1,errno:`EIO`,message:t}}async function jt(e){let t=X(e.token);if(!t)return{ok:!1,errno:`EACCES`,message:`sync-fs: unknown or revoked token`};let{fs:n,cwd:r}=t;try{let t=n.resolvePath(r,e.path);switch(e.op){case`read`:return{ok:!0,kind:`bytes`,bytes:await n.readFileBuffer(t)};case`write`:return await n.writeFile(t,e.body??new Uint8Array),{ok:!0,kind:`void`};case`exists`:return{ok:!0,kind:`json`,json:await n.exists(t)};case`stat`:{let e=await n.stat(t);return{ok:!0,kind:`json`,json:{isDirectory:e.isDirectory,isFile:e.isFile,isSymbolicLink:e.isSymbolicLink,size:e.size}}}case`lstat`:{let e=await n.lstat(t);return{ok:!0,kind:`json`,json:{isDirectory:e.isDirectory,isFile:e.isFile,isSymbolicLink:e.isSymbolicLink??!1,size:e.size}}}case`readdir`:return{ok:!0,kind:`json`,json:await n.readdir(t)};case`mkdir`:return await n.mkdir(t,{recursive:!0}),{ok:!0,kind:`void`};case`rm`:return await n.rm(t,{recursive:!0}),{ok:!0,kind:`void`};case`rename`:{let i=n.resolvePath(r,e.arg2??``),{renameViaFs:a}=await import(`./rename-via-fs-ckVY1Ljv.js`);return await a(n,t,i),{ok:!0,kind:`void`}}default:return{ok:!1,errno:`EINVAL`,message:`sync-fs: unknown op '${e.op}'`}}}catch(e){return At(e)}}function Mt(e){return`slicc-sync-fs-`+e}const Nt=`/__slicc/fs-sync`,Pt=`/__slicc/exec-sync`,Ft=`x-slicc-fs-token`,It=`x-slicc-fs-errno`,Lt=`x-slicc-fs`,Rt=`sync-fs-req`,zt=`sync-fs-ack`,Bt=`sync-fs-res`,Vt=25e3,Ht=12e4,Z=6e5,Ut=5e3,Wt=`exec`;function Gt(e){return e.channel===Wt}function Kt(e){let{command:t}=e;if(Array.isArray(t)){if(t.length===0||!t.every(e=>typeof e==`string`))return{errno:`EINVAL`,message:`sync-exec: argv must be a non-empty string[]`};let[e,...n]=t;return{cmd:e,args:n}}return typeof t!=`string`||t.length===0?{errno:`EINVAL`,message:`sync-exec: command must be a non-empty string`}:e.args===void 0?{cmd:t}:!Array.isArray(e.args)||!e.args.every(e=>typeof e==`string`)?{errno:`EINVAL`,message:`sync-exec: args must be a string[]`}:{cmd:t,args:e.args}}async function qt(e,t,n){if(n===void 0)return{cwd:t};if(typeof n!=`string`)return{errno:`EINVAL`,message:`sync-exec: cwd must be a string`};if(n.length===0)return{errno:`ENOENT`,message:`sync-exec: cwd is empty`};let r=e.resolvePath(t,n);try{if(!(await e.stat(r)).isDirectory)return{errno:`ENOTDIR`,message:`sync-exec: cwd is not a directory: ${r}`}}catch(e){let t=e?.code;return t===`EACCES`||t===`EPERM`?{errno:t,message:`sync-exec: cwd not accessible: ${r}`}:{errno:`ENOENT`,message:`sync-exec: cwd does not exist: ${r}`}}return{cwd:r}}function Q(e){if(e===void 0)return;if(typeof e!=`object`||!e||Array.isArray(e))return{errno:`EINVAL`,message:`sync-exec: env must be an object`};let t={};for(let[n,r]of Object.entries(e))if(r!==void 0){if(typeof r!=`string`)return{errno:`EINVAL`,message:`sync-exec: env[${n}] must be a string`};t[n]=r}return{ok:!0,env:t}}function Jt(e,t){return Math.min(typeof e!=`number`||!Number.isFinite(e)||e<=0?t:e,Z)}async function Yt(e){let t=X(e.token);if(!t)return{ok:!1,errno:`EACCES`,message:`sync-exec: unknown or revoked token`};if(!t.exec)return{ok:!1,errno:`ENOSYS`,message:`sync-exec: exec is not available`};let n=Kt(e);if(`errno`in n)return{ok:!1,errno:n.errno,message:n.message};let r=await qt(t.fs,t.cwd,e.cwd);if(`errno`in r)return{ok:!1,errno:r.errno,message:r.message};let i=Q(e.env);if(i!==void 0&&`errno`in i)return{ok:!1,errno:i.errno,message:i.message};let a=new AbortController,o=!1,s=setTimeout(()=>{o=!0,a.abort()},Jt(e.timeoutMs,Z)),c=Ot(e.token,a);try{let o=await t.exec(n.cmd,{cwd:r.cwd,signal:a.signal,...n.args===void 0?{}:{args:n.args},...e.stdin===void 0?{}:{stdin:e.stdin},...i===void 0?{}:{env:i.env,replaceEnv:!0}});return{ok:!0,kind:`json`,json:{stdout:o.stdout,stderr:o.stderr,exitCode:o.exitCode}}}catch(e){return o?{ok:!1,errno:`ETIMEDOUT`,message:`sync-exec: timed out — ${e instanceof Error?e.message:String(e)}`}:a.signal.aborted?{ok:!1,errno:`ECANCELED`,message:`sync-exec: realm disposed`}:At(e)}finally{clearTimeout(s),c()}}const Xt=1048576,Zt=`sync-sab-req`,Qt=`sync-sab-next`,$t=new TextEncoder,$=new TextDecoder;function en(e){if(!e.ok)return{status:4,payload:$t.encode(JSON.stringify({errno:e.errno,message:e.message}))};switch(e.kind){case`bytes`:return{status:1,payload:e.bytes};case`json`:return{status:2,payload:$t.encode(JSON.stringify(e.json))};default:return{status:3,payload:new Uint8Array}}}function tn(e,t){switch(e){case 1:return{ok:!0,kind:`bytes`,bytes:t};case 3:return{ok:!0,kind:`void`};case 2:try{return{ok:!0,kind:`json`,json:JSON.parse($.decode(t))}}catch{return{ok:!1,errno:`EIO`,message:`sync-sab: malformed json payload`}}case 4:try{let e=JSON.parse($.decode(t)),n=typeof e.errno==`string`&&/^E[A-Z]+$/.test(e.errno)?e.errno:`EIO`;return{ok:!1,errno:n,message:String(e.message??n)}}catch{return{ok:!1,errno:`EIO`,message:`sync-sab: malformed errno payload`}}default:return{ok:!1,errno:`EIO`,message:`sync-sab: unknown status ${e}`}}}function nn(e){if(e.byteLength<4160)throw Error(`sync-sab: buffer too small (${e.byteLength} < 4160)`);return{header:new Int32Array(e,0,16),window:new Uint8Array(e,64)}}function rn(){if(typeof SharedArrayBuffer>`u`||typeof Atomics>`u`)return!1;let e=globalThis.crossOriginIsolated;return e===void 0||e===!0}export{kt as A,P as B,Bt as C,jt as D,Mt as E,W as F,we as G,O as H,$e as I,Se as J,le as K,Ye as L,Et as M,Je as N,Dt as O,qe as P,C as Q,We as R,Rt as S,Ft as T,ue as U,F as V,Ce as W,ne as X,T as Y,te as Z,Ut as _,en as a,Lt as b,Wt as c,Gt as d,Q as f,Pt as g,Z as h,tn as i,wt as j,X as k,Jt as l,Ht as m,Qt as n,rn as o,qt as p,xe as q,Zt as r,nn as s,Xt as t,Yt as u,zt as v,Nt as w,Vt as x,It as y,A as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./bridge-protocol-DdqxTTSu.js";import"./proxied-fetch-DEK8DT-z.js";const t=e;export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{D as e,g as t}from"./db-DSIYsBgP.js";import{n}from"./slicc-version-DAFTorvi.js";const r=`slicc:last-seen-version`;function i(){let{version:e,releasedAt:t}=n();return{version:e,releasedAt:t}}async function a(){let e=await t(r);return e&&e.length>0?e:null}async function o(t){await e(r,t)}async function s(){let e=i(),t=await a();return t===null?(await o(e.version),{bundled:e,lastSeen:null,isUpgrade:!1}):t===e.version?{bundled:e,lastSeen:t,isUpgrade:!1}:{bundled:e,lastSeen:t,isUpgrade:!0}}async function c(e){await o(e)}export{s as detectUpgrade,a as getLastSeenVersion,c as recordVersionSeen};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./wc-onboarding-D2v396gn.js";export{e as hasOnboardingFinalLickInHistory};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./path-utils-DNJG-zQf.js";import{r as t}from"./virtual-device-paths-CS5o4QVz.js";async function n(n,r,i){if(t(e(r)))return null;try{let e=await n.readTextFile(r);if(i.length<=262144)return e===i?null:`Write did not land: ${r} content mismatch (expected ${i.length} chars, got ${e.length})`;if(e.length!==i.length)return`Write did not land: ${r} content mismatch (expected ${i.length} chars, got ${e.length})`;let t=4096;return e.slice(0,t)!==i.slice(0,t)||e.slice(-4096)!==i.slice(-4096)?`Write did not land: ${r} content mismatch (head/tail sample)`:null}catch(e){return`Write did not land: ${r} is not readable (${e instanceof Error?e.message:String(e)})`}}export{n as t};
|