sliccy 5.65.3 → 5.66.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/ui/assets/{account-store-Bv6TisyU.js → account-store-BOUxQGSS.js} +3 -3
- package/dist/ui/assets/{account-store-zIg2byrO.js → account-store-BhMtqgsL.js} +2 -2
- package/dist/ui/assets/{adobe-Dk4PXOud.js → adobe-DCAguZsF.js} +1 -1
- package/dist/ui/assets/{adobe-VLaxbM3n.js → adobe-NanhDABi.js} +2 -2
- package/dist/ui/assets/{apps-C6COZAy3.js → apps-CnKDEyme.js} +1 -1
- package/dist/ui/assets/{azure-openai-1J73cDhL.js → azure-openai-D_1ZSeAO.js} +1 -1
- package/dist/ui/assets/{azure-openai-B9K73a45.js → azure-openai-plQmjTc4.js} +1 -1
- package/dist/ui/assets/{cerebras-gyb0tX_S.js → cerebras-5kW_k9u0.js} +1 -1
- package/dist/ui/assets/{cerebras-BkVp6tVp.js → cerebras-BdCPTMdy.js} +1 -1
- package/dist/ui/assets/{client-CpLUc-P8.js → client-BliYDaDA.js} +1 -1
- package/dist/ui/assets/{composer-speech-BwORWIgx.js → composer-speech-CWgEvzia.js} +1 -1
- package/dist/ui/assets/{connect-surface-Di4VE6gd.js → connect-surface-C3k2EPfl.js} +1 -1
- package/dist/ui/assets/{dip-BijE5f-7.js → dip-CxC1oNbs.js} +1 -1
- package/dist/ui/assets/{discovery-preference-DCtfbqw1.js → discovery-preference-CUhsI-AU.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-BHM7KI26.js → ensure-speech-assets-Wr0NmhbD.js} +1 -1
- package/dist/ui/assets/{follower-navigate-watcher-Cn5RjYxg.js → follower-navigate-watcher-UN0jo7Ge.js} +1 -1
- package/dist/ui/assets/{fs-BSqRNdV8.js → fs-B4cR9Isz.js} +1 -1
- package/dist/ui/assets/{fs-BHhBSByi.js → fs-B77_976-.js} +2 -2
- package/dist/ui/assets/{github-Dw7Be20Y.js → github-D7vOfoEU.js} +2 -2
- package/dist/ui/assets/{github-BjnlCNCE.js → github-DxHAgv2t.js} +1 -1
- package/dist/ui/assets/{github-copilot-dCBopF9I.js → github-copilot-Dn_nhnKh.js} +1 -1
- package/dist/ui/assets/{github-copilot-Cv-QDX_5.js → github-copilot-DteExnpj.js} +1 -1
- package/dist/ui/assets/{hear-CbYaCba-.js → hear-BxiGt0Ct.js} +1 -1
- package/dist/ui/assets/{hear-JuW_sP-u.js → hear-C1RTIY9q.js} +1 -1
- package/dist/ui/assets/{js-realm-worker-FgXpYXua.js → js-realm-worker-DFnuhv4z.js} +7 -7
- package/dist/ui/assets/{kernel-worker-C1Jk4Cgm.js → kernel-worker-2PotgwPS.js} +596 -586
- package/dist/ui/assets/{kokoro-engine-6v0QDlru.js → kokoro-engine-8rE8HqhM.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-DZ9b0hn4.js → lick-ws-bridge-BdRT5Xl3.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-C_bJMGw6.js → lick-ws-bridge-CW-Xewtf.js} +1 -1
- package/dist/ui/assets/{local-llm-DlLYYoVC.js → local-llm-C1Ov0c1M.js} +1 -1
- package/dist/ui/assets/{local-llm-DlNJAfyr.js → local-llm-DA-GuO26.js} +1 -1
- package/dist/ui/assets/{main-DLEdjSut.js → main-CC-Zyrlv.js} +3 -3
- package/dist/ui/assets/mount-TQovT0hU.js +1 -0
- package/dist/ui/assets/{mount-IkmxltrP.js → mount-ZFp0ulWe.js} +2 -2
- package/dist/ui/assets/{mount-bridge-client-BVLVI9yX.js → mount-bridge-client-DHGevTQu.js} +1 -1
- package/dist/ui/assets/{mount-recovery-D-JXVLX-.js → mount-recovery-Pz75moo1.js} +1 -1
- package/dist/ui/assets/{new-session-DOll8wFn.js → new-session-BZqjRbbh.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-BOl1JV2i.js → oauth-bootstrap-W2P4I1Tg.js} +2 -2
- package/dist/ui/assets/{oauth-service-CmM0tZSO.js → oauth-service-B0BvQdYb.js} +1 -1
- package/dist/ui/assets/{oauth-service-CfqjxAd7.js → oauth-service-JdgAxFYW.js} +1 -1
- package/dist/ui/assets/{openai-codex-BwtSh55R.js → openai-codex-AjhTzEj1.js} +1 -1
- package/dist/ui/assets/{openai-codex-CkHFlc1B.js → openai-codex-CsBFkxdZ.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-PzFZnv10.js → panel-rpc-handlers-DHtGxFrI.js} +2 -2
- package/dist/ui/assets/{port-bridge-client-CsrXhMWo.js → port-bridge-client-BC810skI.js} +1 -1
- package/dist/ui/assets/{port-bridge-client-CdvMlimf.js → port-bridge-client-CoFZLSYm.js} +1 -1
- package/dist/ui/assets/{provider-CE6cf8w6.js → provider-CEdkFCsT.js} +2 -2
- package/dist/ui/assets/{provider-CK-RipyT.js → provider-DO3gz3Wb.js} +1 -1
- package/dist/ui/assets/{provider-settings-D3RdJihW.js → provider-settings-4yv0FTV7.js} +2 -2
- package/dist/ui/assets/{provider-settings-DRRlhEAk.js → provider-settings-DFnA1a5J.js} +1 -1
- package/dist/ui/assets/{provider-store-access-CTxdVVbk.js → provider-store-access-BVL0Ihc6.js} +2 -2
- package/dist/ui/assets/provider-store-access-waTYCFop.js +1 -0
- package/dist/ui/assets/{providers-qdFVBIs4.js → providers-Dj4CLI6X.js} +1 -1
- package/dist/ui/assets/{providers-SjGrqb4i.js → providers-yt1qar5G.js} +2 -2
- package/dist/ui/assets/proxied-fetch-D5h5REZy.js +2 -0
- package/dist/ui/assets/{proxied-fetch-sbHa3Tte.js → proxied-fetch-ldIfAeIb.js} +1 -1
- package/dist/ui/assets/{quick-llm-BIvNuo3r.js → quick-llm-6QqcMdo4.js} +1 -1
- package/dist/ui/assets/{runtime-mode-M-qJL9jF.js → runtime-mode-CEuVQ26O.js} +1 -1
- package/dist/ui/assets/{secret-env-1E2r2H5F.js → secret-env-dQA8rL_1.js} +1 -1
- package/dist/ui/assets/{secret-topology-D2k1IxFk.js → secret-topology-CptRwAX3.js} +1 -1
- package/dist/ui/assets/{secrets-bridge-client-CONYX8PU.js → secrets-bridge-client-D6nwnBvr.js} +1 -1
- package/dist/ui/assets/{session-freezer-BrenlJjn.js → session-freezer-DYt-cltm.js} +2 -2
- package/dist/ui/assets/{setup-sudo-BaeAbuAK.js → setup-sudo-C1ZbJKB-.js} +2 -2
- package/dist/ui/assets/{skills-Dufl6Cvm.js → skills-CQHWHsNm.js} +1 -1
- package/dist/ui/assets/{speak-FrFSddsl.js → speak-BeDix5EH.js} +1 -1
- package/dist/ui/assets/{speak-DiVfWUSx.js → speak-CkvZB0fq.js} +1 -1
- package/dist/ui/assets/sprinkle-bridge-YYPWJ55I.js +2 -0
- package/dist/ui/assets/{sprinkle-manager-C24XXDyP.js → sprinkle-manager-CK0eo6zp.js} +1 -1
- package/dist/ui/assets/{store-uFAsGXgA.js → store-C2SfFSih.js} +1 -1
- package/dist/ui/assets/{sudo-xMWuhORC.js → sudo-Dpk4MxHb.js} +1 -1
- package/dist/ui/assets/{transformers-env-CLKB9wzj.js → transformers-env-C77NUYNM.js} +1 -1
- package/dist/ui/assets/{transformers-env-B95qHQN4.js → transformers-env-RUMoBRzi.js} +1 -1
- package/dist/ui/assets/{tray-leader-DcLymd_E.js → tray-leader-DicSB8Dn.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-lJcLlwtm.js → tray-leave-runtime-BI5IM82V.js} +1 -1
- package/dist/ui/assets/{tray-runtime-config-DlPGhxQs.js → tray-runtime-config-DEUlxEec.js} +1 -1
- package/dist/ui/assets/{tray-runtime-config-DJIIJaBR.js → tray-runtime-config-DquE2Rx9.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-CZ41kMWI.js → upgrade-detection-gK2MGIFJ.js} +1 -1
- package/dist/ui/assets/{voice-reply-qcPHpH1S.js → voice-reply-RJ5RbAjY.js} +1 -1
- package/dist/ui/assets/{wc-extension-DksCcKMT.js → wc-extension-BZB2yGB1.js} +2 -2
- package/dist/ui/assets/{wc-float-label-DeQPr3pd.js → wc-float-label-2tniyRvt.js} +1 -1
- package/dist/ui/assets/{wc-follower-CLveL_SV.js → wc-follower-CB-IHFvv.js} +3 -3
- package/dist/ui/assets/{wc-live-DWqGURv2.js → wc-live-DyyowF55.js} +3 -3
- package/dist/ui/assets/{wc-nav-Cdknc2rm.js → wc-nav-9cxjYJUg.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-Dy_sXTCd.js → wc-onboarding-CP-2CoWV.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-C-iSe7Ak.js → wc-placeholder-urlJ_Wbj.js} +2 -2
- package/dist/ui/assets/{wc-settings-y-dwr_Uo.js → wc-settings-DAMz8DQv.js} +3 -3
- package/dist/ui/assets/{wc-shell-ltnl45Bc.js → wc-shell-B2KlZq3A.js} +2 -2
- package/dist/ui/assets/{wc-sprinkles-BukmscGz.js → wc-sprinkles-BqszWr5c.js} +2 -2
- package/dist/ui/assets/{wc-tray-DiP_YWNM.js → wc-tray-D_SS4iac.js} +2 -2
- package/dist/ui/assets/{whisper-engine-e9PW0ZbJ.js → whisper-engine-6Ks_tvV1.js} +1 -1
- package/dist/ui/assets/{whisper-session-B6XgtKMF.js → whisper-session-36PZh-9m.js} +2 -2
- package/dist/ui/assets/{xai-grok-DiuJbbaI.js → xai-grok-kyL7kz5P.js} +1 -1
- package/dist/ui/assets/{xai-grok-CANG3Qn2.js → xai-grok-sAl-MfH0.js} +1 -1
- package/dist/ui/index.html +10 -10
- package/dist/ui/packages/webapp/index.html +10 -10
- package/package.json +4 -3
- package/dist/ui/assets/mount-DK1-DJow.js +0 -1
- package/dist/ui/assets/provider-store-access-BFF7cwJF.js +0 -1
- package/dist/ui/assets/proxied-fetch-DETjVL-j.js +0 -2
- package/dist/ui/assets/sprinkle-bridge-CHyIhYQL.js +0 -2
package/dist/ui/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>slicc</title>
|
|
7
7
|
<link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
|
|
8
|
-
<script type="module" crossorigin src="/assets/main-
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-CC-Zyrlv.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-Dezn_h7o.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-Czpn1I53.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
|
|
@@ -19,26 +19,26 @@
|
|
|
19
19
|
<link rel="modulepreload" crossorigin href="/assets/base64-DpPqYZJF.js">
|
|
20
20
|
<link rel="modulepreload" crossorigin href="/assets/runtime-env-DH4NDw4t.js">
|
|
21
21
|
<link rel="modulepreload" crossorigin href="/assets/fetch-body-D2PwksUW.js">
|
|
22
|
-
<link rel="modulepreload" crossorigin href="/assets/proxied-fetch-
|
|
23
|
-
<link rel="modulepreload" crossorigin href="/assets/secret-topology-
|
|
24
|
-
<link rel="modulepreload" crossorigin href="/assets/port-bridge-client-
|
|
25
|
-
<link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client-
|
|
22
|
+
<link rel="modulepreload" crossorigin href="/assets/proxied-fetch-D5h5REZy.js">
|
|
23
|
+
<link rel="modulepreload" crossorigin href="/assets/secret-topology-CptRwAX3.js">
|
|
24
|
+
<link rel="modulepreload" crossorigin href="/assets/port-bridge-client-CoFZLSYm.js">
|
|
25
|
+
<link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client-D6nwnBvr.js">
|
|
26
26
|
<link rel="modulepreload" crossorigin href="/assets/tool-ui-DfXu6quJ.js">
|
|
27
|
-
<link rel="modulepreload" crossorigin href="/assets/providers-
|
|
27
|
+
<link rel="modulepreload" crossorigin href="/assets/providers-yt1qar5G.js">
|
|
28
28
|
<link rel="modulepreload" crossorigin href="/assets/panel-rpc-DmJSNs0I.js">
|
|
29
29
|
<link rel="modulepreload" crossorigin href="/assets/transform-messages-fFaW-DLG.js">
|
|
30
30
|
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-BEi8MYUS.js">
|
|
31
|
-
<link rel="modulepreload" crossorigin href="/assets/account-store-
|
|
31
|
+
<link rel="modulepreload" crossorigin href="/assets/account-store-BOUxQGSS.js">
|
|
32
32
|
<link rel="modulepreload" crossorigin href="/assets/electron-overlay-route-CjT6k9Df.js">
|
|
33
33
|
<link rel="modulepreload" crossorigin href="/assets/bridge-launch-params-jegYRGJ6.js">
|
|
34
34
|
<link rel="modulepreload" crossorigin href="/assets/messages-BD4p8GuF.js">
|
|
35
|
-
<link rel="modulepreload" crossorigin href="/assets/tray-runtime-config-
|
|
36
|
-
<link rel="modulepreload" crossorigin href="/assets/setup-sudo-
|
|
35
|
+
<link rel="modulepreload" crossorigin href="/assets/tray-runtime-config-DquE2Rx9.js">
|
|
36
|
+
<link rel="modulepreload" crossorigin href="/assets/setup-sudo-C1ZbJKB-.js">
|
|
37
37
|
<link rel="modulepreload" crossorigin href="/assets/telemetry-C8rZr13D.js">
|
|
38
38
|
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-CyJIKXH4.js">
|
|
39
39
|
<link rel="modulepreload" crossorigin href="/assets/clipboard-DuHpK59o.js">
|
|
40
40
|
<link rel="modulepreload" crossorigin href="/assets/tray-join-url-BIvzbiFR.js">
|
|
41
|
-
<link rel="modulepreload" crossorigin href="/assets/provider-settings-
|
|
41
|
+
<link rel="modulepreload" crossorigin href="/assets/provider-settings-4yv0FTV7.js">
|
|
42
42
|
</head>
|
|
43
43
|
<body>
|
|
44
44
|
<div id="app"></div>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>slicc</title>
|
|
7
7
|
<link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
|
|
8
|
-
<script type="module" crossorigin src="/assets/main-
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-CC-Zyrlv.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-Dezn_h7o.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-Czpn1I53.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
|
|
@@ -19,26 +19,26 @@
|
|
|
19
19
|
<link rel="modulepreload" crossorigin href="/assets/base64-DpPqYZJF.js">
|
|
20
20
|
<link rel="modulepreload" crossorigin href="/assets/runtime-env-DH4NDw4t.js">
|
|
21
21
|
<link rel="modulepreload" crossorigin href="/assets/fetch-body-D2PwksUW.js">
|
|
22
|
-
<link rel="modulepreload" crossorigin href="/assets/proxied-fetch-
|
|
23
|
-
<link rel="modulepreload" crossorigin href="/assets/secret-topology-
|
|
24
|
-
<link rel="modulepreload" crossorigin href="/assets/port-bridge-client-
|
|
25
|
-
<link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client-
|
|
22
|
+
<link rel="modulepreload" crossorigin href="/assets/proxied-fetch-D5h5REZy.js">
|
|
23
|
+
<link rel="modulepreload" crossorigin href="/assets/secret-topology-CptRwAX3.js">
|
|
24
|
+
<link rel="modulepreload" crossorigin href="/assets/port-bridge-client-CoFZLSYm.js">
|
|
25
|
+
<link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client-D6nwnBvr.js">
|
|
26
26
|
<link rel="modulepreload" crossorigin href="/assets/tool-ui-DfXu6quJ.js">
|
|
27
|
-
<link rel="modulepreload" crossorigin href="/assets/providers-
|
|
27
|
+
<link rel="modulepreload" crossorigin href="/assets/providers-yt1qar5G.js">
|
|
28
28
|
<link rel="modulepreload" crossorigin href="/assets/panel-rpc-DmJSNs0I.js">
|
|
29
29
|
<link rel="modulepreload" crossorigin href="/assets/transform-messages-fFaW-DLG.js">
|
|
30
30
|
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-BEi8MYUS.js">
|
|
31
|
-
<link rel="modulepreload" crossorigin href="/assets/account-store-
|
|
31
|
+
<link rel="modulepreload" crossorigin href="/assets/account-store-BOUxQGSS.js">
|
|
32
32
|
<link rel="modulepreload" crossorigin href="/assets/electron-overlay-route-CjT6k9Df.js">
|
|
33
33
|
<link rel="modulepreload" crossorigin href="/assets/bridge-launch-params-jegYRGJ6.js">
|
|
34
34
|
<link rel="modulepreload" crossorigin href="/assets/messages-BD4p8GuF.js">
|
|
35
|
-
<link rel="modulepreload" crossorigin href="/assets/tray-runtime-config-
|
|
36
|
-
<link rel="modulepreload" crossorigin href="/assets/setup-sudo-
|
|
35
|
+
<link rel="modulepreload" crossorigin href="/assets/tray-runtime-config-DquE2Rx9.js">
|
|
36
|
+
<link rel="modulepreload" crossorigin href="/assets/setup-sudo-C1ZbJKB-.js">
|
|
37
37
|
<link rel="modulepreload" crossorigin href="/assets/telemetry-C8rZr13D.js">
|
|
38
38
|
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-CyJIKXH4.js">
|
|
39
39
|
<link rel="modulepreload" crossorigin href="/assets/clipboard-DuHpK59o.js">
|
|
40
40
|
<link rel="modulepreload" crossorigin href="/assets/tray-join-url-BIvzbiFR.js">
|
|
41
|
-
<link rel="modulepreload" crossorigin href="/assets/provider-settings-
|
|
41
|
+
<link rel="modulepreload" crossorigin href="/assets/provider-settings-4yv0FTV7.js">
|
|
42
42
|
</head>
|
|
43
43
|
<body>
|
|
44
44
|
<div id="app"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sliccy",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.66.0",
|
|
4
4
|
"description": "Browser-based coding agent with thin CLI server",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -67,10 +67,11 @@
|
|
|
67
67
|
"test:server-integration": "vitest run --config packages/node-server/tests/integration/server/vitest.config.ts",
|
|
68
68
|
"test:e2e": "npx playwright test --config packages/webapp/tests/e2e/playwright.config.ts",
|
|
69
69
|
"start:extension": "npm run build -w @slicc/chrome-extension && npm run dev -- --profile=extension",
|
|
70
|
-
"lint": "biome check --write . && prettier --write . && npm run lint:docs && npm run lint:skills && npm run lint:no-innerhtml && npm run lint:no-ui-in-providers && npm run lint:patches && npm run lint:no-raw-chrome-runtime-id && npm run lint:hosted-origin",
|
|
71
|
-
"lint:ci": "biome check . && prettier --check . && npm run lint:docs && npm run lint:skills -- --strict && npm run lint:no-innerhtml && npm run lint:no-ui-in-providers && npm run lint:patches && npm run lint:no-raw-chrome-runtime-id && npm run lint:hosted-origin",
|
|
70
|
+
"lint": "biome check --write . && prettier --write . && npm run lint:docs && npm run lint:skills && npm run lint:skill-router && npm run lint:no-innerhtml && npm run lint:no-ui-in-providers && npm run lint:patches && npm run lint:no-raw-chrome-runtime-id && npm run lint:hosted-origin",
|
|
71
|
+
"lint:ci": "biome check . && prettier --check . && npm run lint:docs && npm run lint:skills -- --strict && npm run lint:skill-router && npm run lint:no-innerhtml && npm run lint:no-ui-in-providers && npm run lint:patches && npm run lint:no-raw-chrome-runtime-id && npm run lint:hosted-origin",
|
|
72
72
|
"lint:docs": "node packages/dev-tools/tools/check-doc-sizes.mjs && node packages/dev-tools/tools/check-agents-symlinks.mjs && node packages/dev-tools/tools/check-doc-refs.mjs",
|
|
73
73
|
"lint:skills": "node packages/dev-tools/tools/lint-skills.mjs",
|
|
74
|
+
"lint:skill-router": "bash packages/dev-tools/tools/check-skill-router-sync.sh",
|
|
74
75
|
"lint:no-innerhtml": "node packages/dev-tools/tools/check-no-innerhtml.mjs",
|
|
75
76
|
"lint:no-ui-in-providers": "node packages/dev-tools/tools/check-no-ui-imports-in-providers.mjs",
|
|
76
77
|
"lint:patches": "node packages/dev-tools/patch-reconcile/check-patches.mjs",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-aKtaBQYM.js";import{m as t,o as n,p as r,r as i,t as a}from"./proxied-fetch-sbHa3Tte.js";import"./src-Dk1QVJRd.js";import{t as o}from"./runtime-env-byAg9ij-.js";import"./backend-local-D4WZgy4J.js";import{t as s}from"./types-idfTVsM8.js";import{t as c}from"./mime-types-D7IV6i7k.js";import{t as l}from"./remote-cache-D59F5FOx.js";import{t as u}from"./port-bridge-client-CsrXhMWo.js";function d(e,t,n){let r=`----DaMount${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`,i=new TextEncoder,a=i.encode(`--${r}\r\nContent-Disposition: form-data; name="data"; filename="${e}"\r\nContent-Type: ${t}\r\n\r\n`),o=i.encode(`\r\n--${r}--\r\n`),s=new Uint8Array(a.byteLength+n.byteLength+o.byteLength);return s.set(a,0),s.set(n,a.byteLength),s.set(o,a.byteLength+n.byteLength),{contentType:`multipart/form-data; boundary=${r}`,body:s}}function f(e){return e.split(`/`).pop()||`data`}function p(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 m=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=p(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??5242880,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new s(`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 i=await this.transport({method:`GET`,path:this.toSourcePath(t),headers:r});if(i.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(i.status===404)throw await this.cache.invalidateBody(t),new s(`ENOENT`,`no such file`,e);if(i.status===401||i.status===403)throw new s(`EACCES`,`da access denied`,e);if(i.status>=400)throw new s(`EIO`,`da readFile failed: ${i.status}`,e);let a=i.headers.get(`content-length`),o=a?Number(a):void 0;if(o!==void 0&&o>this.maxBodyBytes)throw new s(`EFBIG`,`body exceeds maxBodyBytes`,e);let c=new Uint8Array(await i.arrayBuffer());if(c.byteLength>this.maxBodyBytes)throw new s(`EFBIG`,`body exceeds maxBodyBytes`,e);let l=i.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 s(`EFBIG`,`body exceeds maxBodyBytes`,e);let n=this.toMountRelative(e),r=await this.cache.getBody(n),i=d(f(e),c(e),t),a={"content-type":i.contentType,"content-length":String(i.body.byteLength)};r?.etag?a[`if-match`]=r.etag.startsWith(`W/`)?r.etag.slice(2):r.etag:r||(a[`if-none-match`]=`*`);let o=()=>this.transport({method:`POST`,path:this.toSourcePath(n),headers:a,body:i.body}),l,u=1;try{l=await o()}catch{u=2,l=await o()}if(l.status===412){if(u===2){let r=await this.transport({method:`HEAD`,path:this.toSourcePath(n)});if(r.status>=400)throw new s(`EIO`,`da reconcile HEAD failed: ${r.status}`,e);let i=r.headers.get(`etag`)??``;await this.cache.putBody(n,t,i);let a=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a);return}await this.cache.invalidateBody(n);try{await this.readFile(e)}catch{}throw new s(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(l.status===401||l.status===403)throw new s(`EACCES`,`da write denied`,e);if(l.status>=400)throw new s(`EIO`,`da writeFile failed: ${l.status}`,e);let p=l.headers.get(`etag`)??``;await this.cache.putBody(n,t,p);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 s(`ENOENT`,`no such directory`,e);if(r.status>=400)throw new s(`EIO`,`da list failed: ${r.status}`,e);let i=(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,i),i}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(`/`),i=r.pop()??``,a=r.join(`/`),o=await this.cache.getListing(a);if(o&&!this.cache.isStale(o.cachedAt)){let t=o.entries.find(e=>e.name===i);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??o.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??o.cachedAt};if(!t)throw new s(`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(o){let n=o.entries.map(n=>n.name===i&&n.kind===`file`?{...n,size:e,etag:t,lastModified:r}:n);await this.cache.putListing(a,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 s(`ENOENT`,`no such file or directory`,e)}throw new s(`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 s(`ENOENT`,`no such file`,e);if(n.status===401||n.status===403)throw new s(`EACCES`,`da delete denied`,e);if(n.status>=400)throw new s(`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 h(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 g=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=h(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??26214400,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new s(`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 i=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:this.toS3Key(t),headers:r});if(i.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(i.status===404)throw await this.cache.invalidateBody(t),new s(`ENOENT`,`no such file`,e);if(i.status===401||i.status===403)throw new s(`EACCES`,`s3 access denied`,e);if(i.status>=400)throw new s(`EIO`,`s3 readFile failed: ${i.status}`,e);let a=i.headers.get(`content-length`),o=a?Number(a):void 0;if(o!==void 0&&o>this.maxBodyBytes)throw new s(`EFBIG`,`body exceeds maxBodyBytes (${o} > ${this.maxBodyBytes})`,e);let c=new Uint8Array(await i.arrayBuffer());if(c.byteLength>this.maxBodyBytes)throw new s(`EFBIG`,`body exceeds maxBodyBytes`,e);let l=i.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 s(`EFBIG`,`body exceeds maxBodyBytes`,e);let r=await this.cache.getBody(n),i={"content-type":`application/octet-stream`,"content-length":String(t.byteLength)};r?i[`if-match`]=r.etag:i[`if-none-match`]=`*`;let a=()=>this.transport({method:`PUT`,bucket:this.parsed.bucket,key:this.toS3Key(n),headers:i,body:t}),o,c=1;try{o=await a()}catch{c=2,o=await a()}if(o.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 s(`EIO`,`s3 reconcile HEAD failed: ${r.status}`,e);let i=r.headers.get(`etag`)??``;await this.cache.putBody(n,t,i);let a=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a);return}await this.cache.invalidateBody(n);try{await this.readFile(e)}catch{}throw new s(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(o.status===401||o.status===403)throw new s(`EACCES`,`s3 write denied`,e);if(o.status>=400)throw new s(`EIO`,`s3 writeFile failed: ${o.status}`,e);let l=o.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 s(`EIO`,`s3 list failed: ${r.status}`,`/`);let i=await r.text(),a=this.parseListingXml(i);e.push(...a.contents),t=a.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(`/`),i=r.pop()??``,a=r.join(`/`),o=await this.cache.getListing(a);if(o&&!this.cache.isStale(o.cachedAt)){let t=o.entries.find(e=>e.name===i);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??o.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??o.cachedAt};if(!t)throw new s(`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 s(`ENOENT`,`no such file or directory`,e)}throw new s(`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 s(`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 s(`ENOENT`,`no such file`,e);if(r.status===401||r.status===403)throw new s(`EACCES`,`s3 delete denied`,e);if(r.status>=400)throw new s(`EIO`,`s3 delete failed: ${r.status}`,e);await this.cache.invalidateBody(n);let i=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(i)}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}},_=class extends Error{constructor(e){super(e),this.name=`ProfileNotConfiguredError`}};async function v(){let{getAccounts:e}=await import(`./account-store-zIg2byrO.js`).then(e=>e.n),t=e().find(e=>e.providerId===`adobe`);if(!t?.accessToken)throw new _(`No Adobe IMS account found. Log in via Settings → Providers → Adobe first.`);return{identity:`adobe-ims`,getBearerToken:async()=>t.accessToken}}const y=u({portName:`mount.sign-and-forward`,panelRpcOp:`mount-sign-and-forward`,timeoutMs:12e4,onUnavailable:`reject`,makeError:e=>new s(`EIO`,`mount transport failed: ${e}`),logNamespace:`mount-bridge`,toPortMessage:({type:e,envelope:t})=>({type:e,envelope:t}),toPanelRpcPayload:({type:e,envelope:t})=>({type:e,envelope:t})});function b(e,t){return y({type:e,envelope:t})}const x=r,S=t,C=new Set([`invalid_profile`,`invalid_request`,`profile_not_configured`,`fetch_failed`,`internal`]),w=new Set([101,103,204,205,304]);function T(e){if(!e.ok)throw e.errorCode===`profile_not_configured`||e.errorCode===`invalid_profile`?new s(`EACCES`,e.error):e.errorCode===`invalid_request`?new s(`EINVAL`,e.error):e.errorCode===`fetch_failed`||e.errorCode===`internal`||C.has(String(e.errorCode))?new s(`EIO`,e.error):new s(`EINVAL`,`mount transport returned unrecognized errorCode '${e.errorCode}': ${e.error}`);let t;try{t=x(e.bodyBase64)}catch(e){throw new s(`EIO`,`mount transport: response body decode failed: ${e instanceof Error?e.message:String(e)}`)}let n=w.has(e.status)?null:t;return new Response(n,{status:e.status,headers:new Headers(e.headers)})}async function E(e,t){let r;try{r=await fetch(n(e),{method:`POST`,headers:a({"content-type":`application/json`}),body:JSON.stringify(t)})}catch(e){throw new s(`EIO`,`mount transport failed: ${e instanceof Error?e.message:String(e)} (SLICC backend at localhost may not be running)`)}try{return await r.json()}catch(e){throw new s(`EIO`,`mount transport: response is not a JSON envelope (status ${r.status}): ${e instanceof Error?e.message:String(e)}`)}}async function D(e,t){try{return await chrome.runtime.sendMessage({type:e,envelope:t})}catch(e){throw new s(`EIO`,`mount transport failed: ${e instanceof Error?e.message:String(e)} (extension service worker not responding)`)}}async function O(e,t,n){return o()?D(e,n):i()?b(e,n):E(t,n)}function k(e){return async t=>T(await O(`mount.s3-sign-and-forward`,`/api/s3-sign-and-forward`,{profile:e,method:t.method,bucket:t.bucket,key:t.key,query:t.query,headers:t.headers,bodyBase64:t.body?S(t.body):void 0}))}function A(e){let t=e?.getImsToken??(async()=>(await v()).getBearerToken());return async e=>{let n;try{n=await t()}catch(e){throw new s(`EACCES`,`DA mount: ${e instanceof Error?e.message:String(e)}`)}return T(await O(`mount.da-sign-and-forward`,`/api/da-sign-and-forward`,{imsToken:n,method:e.method,path:e.path,query:e.query,headers:e.headers,bodyBase64:e.body?S(e.body):void 0}))}}var j=e({DaMountBackend:()=>m,RemoteMountCache:()=>l,S3MountBackend:()=>g,makeSignedFetchDa:()=>A,makeSignedFetchS3:()=>k});export{m as a,g as i,A as n,k as r,j as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./store-uFAsGXgA.js";export{e as readMcpAuthEntries};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/panel-rpc-DmJSNs0I.js","assets/rolldown-runtime-aKtaBQYM.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{n as e}from"./rolldown-runtime-aKtaBQYM.js";import{t}from"./preload-helper-Czpn1I53.js";import{n,t as r}from"./base64-DpPqYZJF.js";import"./src-CS5gSDhT.js";import{n as i}from"./runtime-env-DH4NDw4t.js";import{t as a}from"./fetch-body-D2PwksUW.js";function o(e){return e.headers.get(`x-proxy-error`)===`1`}async function s(e){let t=`Proxy error ${e.status}`,n;try{n=await e.text()}catch{return t}return c(n,t)}function c(e,t){let n;try{n=JSON.parse(e)}catch{return t}if(!n||typeof n!=`object`)return t;let r=n.error;if(typeof r==`string`&&r.length>0)return r;if(r&&typeof r==`object`){let e=r.message;if(typeof e==`string`&&e.length>0)return e;try{return JSON.stringify(r)}catch{return t}}return t}var l=new Map,u=new Map;function d(e,t){l.set(e,t),setTimeout(()=>l.delete(e),1e4)}function f(e,t){u.set(e,t),setTimeout(()=>u.delete(e),1e4)}function p(e){if(!e)return{};let t={};for(let[n,r]of Object.entries(e)){let e=n.toLowerCase();e===`cookie`?t[`X-Proxy-Cookie`]=r:e===`origin`?t[`X-Proxy-Origin`]=r:e===`referer`?t[`X-Proxy-Referer`]=r:e.startsWith(`proxy-`)?t[`X-Proxy-${n}`]=r:t[n]=r}return t}function m(e){let t={};for(let[n,r]of Object.entries(e))n.toLowerCase()===`x-proxy-set-cookie`?t[`set-cookie`]=r:t[n]=r;return t}function h(e){if(e){if(e instanceof Headers){let t={};return e.forEach((e,n)=>{t[n]=e}),t}return e}}var g=e({apiHeaders:()=>O,collectViaExtensionDelegate:()=>H,createProxiedFetch:()=>U,decodeForbiddenResponseHeaders:()=>F,encodeForbiddenRequestHeaders:()=>P,getExtensionDelegateId:()=>E,getLocalApiBaseUrl:()=>S,headersToRecord:()=>M,isTextContentType:()=>A,prepareRequestBody:()=>N,readResponseBody:()=>j,resolveApiUrl:()=>D,setBridgeToken:()=>C,setExtensionDelegateId:()=>T,setLocalApiBaseUrl:()=>x}),_=32*1024*1024,v=new Set([101,103,204,205,304]),y=null,b=null;function x(e){if(e===null||e===``){y=null;return}y=e.replace(/\/+$/,``)}function S(){return y}function C(e){b=e===null||e===``?null:e}var w=null;function T(e){w=e===null||e===``?null:e}function E(){return w}function D(e){return y?`${y}${e}`:e}function O(e){let t={};if(b&&y&&(t[`X-Bridge-Token`]=b),e)for(let n of Object.keys(e))t[n]=e[n];return t}function k(){return D(`/api/fetch-proxy`)}function A(e){if(!e)return!0;let t=e.toLowerCase();return t.startsWith(`text/`)||t.includes(`json`)||t.includes(`xml`)||t.includes(`javascript`)||t.includes(`ecmascript`)||t.includes(`html`)||t.includes(`css`)||t.includes(`svg`)}async function j(e,t){let n=e.headers.get(`content-type`)??``,r=await e.arrayBuffer(),i=new Uint8Array(r);if(!A(n))if(t)f(t,i);else{let e=``;for(let t=0;t<i.length;t+=32768)e+=String.fromCharCode(...i.subarray(t,t+32768));d(e,i)}return i}var M=h;function N(e,t){if(e){if(!A(t?.[`Content-Type`]??t?.[`content-type`]??``)){let t=a(e);return new Blob([t])}return e}}var P=p,F=m,I=r;function L(e){let t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}async function R(e,t,n){let r=new Headers;for(let[t,n]of Object.entries(e.headers))r.set(t,String(n));let i=v.has(e.status)?null:t,a=await j(new Response(i,{status:e.status,statusText:e.statusText,headers:r}),n);return{status:e.status,statusText:e.statusText,headers:F(e.headers),body:a,url:n}}async function z(e){let t=M(e?.headers),r=e?.method??`GET`,i=e?.body?N(e.body,t):void 0,a=P(t),o,s=!1;if(i!==void 0){let e=i instanceof Uint8Array?i:new Uint8Array(await new Response(i).arrayBuffer());e.byteLength>_?s=!0:o=n(e)}return{method:r,transportHeaders:a,bodyBase64:o,requestBodyTooLarge:s}}async function B(e,t,n){let{method:r,transportHeaders:i,bodyBase64:a,requestBodyTooLarge:o}=await z(n),s=e();return new Promise((e,n)=>{let c=null,l=!1,u=[];s.onMessage.addListener(t=>{let r=t;if(r.type===`response-head`)c={status:r.status,statusText:r.statusText,headers:r.headers};else if(r.type===`response-chunk`)u.push(I(r.dataBase64));else if(r.type===`response-end`){if(l=!0,!c){n(Error(`fetch-proxy: response-end before response-head`));return}e({head:c,body:L(u).buffer}),s.disconnect()}else r.type===`response-error`&&(l=!0,n(Error(r.error)),s.disconnect())}),s.onDisconnect.addListener(()=>{l||n(Error(c?`fetch-proxy port disconnected mid-stream`:`fetch-proxy port disconnected before response`))}),s.postMessage({type:`request`,url:t,method:r,headers:i,bodyBase64:a,requestBodyTooLarge:o})})}async function V(e,t){let{head:n,body:r}=await B(()=>chrome.runtime.connect({name:`fetch-proxy.fetch`}),e,t);return R(n,new Uint8Array(r),e)}async function H(e,t){let n=w;if(!n)throw Error(`proxied-fetch: no extension delegate id configured`);let r=chrome.runtime.connect;return B(()=>r(n,{name:`fetch-proxy.fetch`}),e,t)}function U(){return i()?V:typeof chrome<`u`&&typeof chrome?.runtime?.connect==`function`&&w?async(e,t)=>{let{head:n,body:r}=await H(e,t);return R(n,new Uint8Array(r),e)}:typeof chrome>`u`&&w?async(e,n)=>{let{getPanelRpcClient:r}=await t(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-DmJSNs0I.js`).then(e=>e.i);return{getPanelRpcClient:e}},__vite__mapDeps([0,1])),i=r();if(!i)throw Error(`proxied-fetch: panel-RPC client unavailable in worker realm`);let a=n?.method??`GET`,o=M(n?.headers)??{},{head:s,body:c}=await i.call(`proxied-fetch`,{url:e,method:a,headers:o,body:n?.body},{timeoutMs:12e4});return R(s,new Uint8Array(c),e)}:async(e,t)=>{let n=t?.method??`GET`,r=O({...P(M(t?.headers)),"X-Target-URL":e}),i={method:n,headers:r,cache:`no-store`};t?.body&&![`GET`,`HEAD`].includes(n)&&(i.body=N(t.body,r));let a=await fetch(k(),i);if(o(a))throw Error(await s(a));let c=await j(a,e),l={};a.headers.forEach((e,t)=>{l[t]=e});let u=F(l);return{status:a.status,statusText:a.statusText,headers:u,body:c,url:e}}}export{g as a,T as c,s as d,S as i,x as l,U as n,D as o,E as r,C as s,O as t,o as u};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t}from"./hid-device-registry-DboUgvzI.js";import{a as n,i as r}from"./serial-port-registry-DsPZvGpT.js";import{C as i,D as a,E as o,S as s,_ as c,a as l,g as u,h as d,k as f,l as p,m,n as h,o as g,s as _,w as v,x as y,y as b}from"./usb-operations-BQbhk96u.js";import{i as x,r as S}from"./usb-device-registry-BOGfZXgp.js";import{n as C}from"./shared-CR9p6ivA.js";var w=`SLICCJSH`;function T(e){return e.length===0?`''`:`'${e.replace(/'/g,`'\\''`)}'`}function E(e,t){return`var REQ=${JSON.stringify({op:e,args:t})};var P=${JSON.stringify(w)};function emit(o){process.stdout.write(P+JSON.stringify(o));}try{var op=REQ.op,a=REQ.args||[],out;if(op==='fetch'){var r=await fetch(a[0],a[1]||undefined);var h={};r.headers.forEach(function(v,k){h[k]=v;});var u=new Uint8Array(await r.arrayBuffer());var bin="",C=0x8000;for(var i=0;i<u.length;i+=C){bin+=String.fromCharCode.apply(null,u.subarray(i,i+C));}out={ok:r.ok,status:r.status,statusText:r.statusText,url:r.url,headers:h,bodyBase64:btoa(bin)};}else if(op==='http'){var c=http.client(a[0]||{});var res=await c[a[1]](a[2],Object.assign({},a[3]||{},{raw:true}));out={status:res.status,headers:res.headers,body:res.body};}else if(op==='browser'){var m=a[0];if(typeof browser[m]!=="function")throw new Error("browser."+m+" is not available over the sprinkle bridge");out=await browser[m].apply(browser,a.slice(1));}else if(op==='spawn'){out=await exec.spawn(a[0]);}else if(op==='fetchToFile'){out=await fs.fetchToFile(a[0],a[1]);}else{throw new Error("unknown jsh op: "+op);}emit({ok:true,value:out});}catch(e){emit({ok:false,error:(e&&e.message)?e.message:String(e)});}`}function D(e,t){return`node -e ${T(E(e,t))}`}function O(e){let t=e.stdout.lastIndexOf(w);if(t===-1){let t=e.stderr.trim()||e.stdout.trim()||`exit code ${e.exitCode}`;throw Error(`jsh bridge: no result (${t})`)}let n;try{n=JSON.parse(e.stdout.slice(t+10))}catch{throw Error(`jsh bridge: malformed result`)}if(!n.ok)throw Error(n.error||`jsh bridge error`);return n.value}async function k(e,t,n){return O(await e(D(t,n)))}function A(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n)t+=String.fromCharCode(...e.subarray(r,r+n));return btoa(t)}function j(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function M(e){if(e instanceof Uint8Array)return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e)){let t=e;return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}if(Array.isArray(e))return new Uint8Array(e);throw Error(`expected Uint8Array, ArrayBuffer, or number[]`)}var N=new Set([101,103,204,205,304]);function P(e){let t=j(e.bodyBase64),n=N.has(e.status)?null:t,r=new Headers(e.headers),i;try{return i=new Response(n,{status:e.status,statusText:e.statusText,headers:r}),Object.defineProperty(i,"url",{value:e.url,configurable:!0}),i}catch{i=new Response(n,{headers:r});let t=e.status>=200&&e.status<300;return Object.defineProperty(i,"status",{value:e.status,configurable:!0}),Object.defineProperty(i,"statusText",{value:e.statusText,configurable:!0}),Object.defineProperty(i,"ok",{value:t,configurable:!0}),Object.defineProperty(i,"url",{value:e.url,configurable:!0}),i}}function F(e){return e.length===0?`''`:`'${e.replace(/'/g,`'\\''`)}'`}var I=class{listeners=new Map;lickHandler;fs;closeHandler;minimizeHandler;stopConeHandler;attachImageHandler;captureScreenHandler;execHandler;hidSubs=new Map;iframePusher;constructor(e,t,n,r,i,a,o,s,c){this.fs=e,this.lickHandler=t,this.closeHandler=n,this.minimizeHandler=r,this.stopConeHandler=i,this.attachImageHandler=a,this.captureScreenHandler=o,this.execHandler=s,this.iframePusher=c}setIframePusher(e){this.iframePusher=e}async hidOp(n,r,i){let a=t();switch(r){case`list`:{let t=e();if(!t)throw Error(`WebHID is unavailable in this browser`);return u(a,t)}case`request`:{let t=e();if(!t)throw Error(`WebHID is unavailable in this browser`);return b(a,t,i[0]??[])}case`info`:return d(a,i[0]);case`open`:{let e=i[0];return await c(a,e),await this.attachHidInputReports(n,e),{ok:!0}}case`close`:{let e=i[0];return await this.detachHidInputReports(n,e),await m(a,e),{ok:!0}}case`sendReport`:{let e=i[0],t=i[1],n=M(i[2]);return await y(a,e,t,n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength)),{ok:!0}}default:throw Error(`hid: unknown op '${r}'`)}}async serialOp(e,t,s){let c=n();switch(t){case`list`:{let e=r();if(!e)throw Error(`Web Serial is unavailable in this browser`);return o(c,e)}case`request`:{let e=r();if(!e)throw Error(`Web Serial is unavailable in this browser`);return f(c,e,s[0]??[])}case`info`:return v(c,s[0]);case`open`:{let e=s[0];return await a(c,e,s[1]??{baudRate:9600}),{ok:!0}}case`close`:{let e=s[0];return await i(c,e),{ok:!0}}default:throw Error(`serial: unknown op '${t}'`)}}async usbOp(e,t,n){let r=x();switch(t){case`list`:{let e=S();if(!e)throw Error(`WebUSB is unavailable in this browser`);return g(r,e)}case`request`:{let e=S();if(!e)throw Error(`WebUSB is unavailable in this browser`);return p(r,e,n[0]??[])}case`info`:return l(r,n[0]);case`open`:return await _(r,n[0]),{ok:!0};case`close`:return await h(r,n[0]),{ok:!0};default:throw Error(`usb: unknown op '${t}'`)}}async deviceOp(e,t,n,r){if(t===`hid`)return this.hidOp(e,n,r);if(t===`serial`)return this.serialOp(e,n,r);if(t===`usb`)return this.usbOp(e,n,r);throw Error(`unknown device channel '${t}'`)}async attachHidInputReports(e,n){let r=this.hidSubs.get(e);if(r||(r=new Map,this.hidSubs.set(e,r)),r.has(n))return;let i=await s(t(),n,t=>{let r=t.bytes instanceof Uint8Array?t.bytes:new Uint8Array(t.bytes);this.deliverHidInputReport(e,{handle:n,reportId:t.reportId,data:r})});r.set(n,i)}async detachHidInputReports(e,t){let n=this.hidSubs.get(e);if(!n)return;let r=n.get(t);if(r){n.delete(t);try{await Promise.resolve(r())}catch{}}n.size===0&&this.hidSubs.delete(e)}deliverHidInputReport(e,t){let n=this.listeners.get(`${e}:hid:inputreport`);if(n)for(let e of n){let r=n;setTimeout(()=>{if(r.has(e))try{e(t)}catch{}},0)}try{this.iframePusher?.(e,`hid:inputreport`,t)}catch{}}async runExec(e){if(!this.execHandler)return{stdout:``,stderr:`exec: shell bridge not available
|
|
2
|
-
`,exitCode:127};try{return await this.execHandler(e)}catch(e){return{stdout:``,stderr:`exec: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async jshDispatch(e,t){if(e===`readFileBinary`)return{base64:A(await this.fs.readFile(t[0],{encoding:`binary`}))};if(e===`writeFileBinary`)return await this.fs.writeFile(t[0],j(t[1])),!0;let n=await k(e=>this.runExec(e),e,t);return e===`fetch`?P(n):n}createAPI(e){let t={name:e,lick:t=>{let n=typeof t==`string`?t:t.action,r=typeof t==`string`?void 0:t.data,i={type:`sprinkle`,sprinkleName:e,targetScoop:z(e),timestamp:new Date().toISOString(),body:{action:n,data:r}};this.lickHandler(i)},on:(t,n)=>{let r=`${e}:${t}`,i=this.listeners.get(r);i||(i=new Set,this.listeners.set(r,i)),i.add(n)},off:(t,n)=>{let r=`${e}:${t}`;this.listeners.get(r)?.delete(n)},readFile:async e=>await this.fs.readFile(e,{encoding:`utf-8`}),writeFile:async(e,t)=>{await this.fs.writeFile(e,t)},readDir:async e=>(await this.fs.readDir(e)).map(e=>({name:e.name,type:e.type})),exists:async e=>this.fs.exists(e),stat:async e=>{let t=await this.fs.stat(e);return{type:t.type,size:t.size}},mkdir:async e=>{await this.fs.mkdir(e,{recursive:!0})},rm:async e=>{await this.fs.rm(e)},screenshot:async e=>{let n=t._container;if(!n)return``;let r=e?n.querySelector(e):n;if(!r)throw Error(`Element not found: `+(e||`container`));let i=r.getBoundingClientRect(),a=Math.ceil(i.width),o=Math.ceil(i.height);if(a===0||o===0)throw Error(`Element has zero dimensions`);let s=document.createElement(`canvas`),c=window.devicePixelRatio||1;s.width=a*c,s.height=o*c;let l=s.getContext(`2d`);l.scale(c,c);let u=r.cloneNode(!0),d=`<svg xmlns="http://www.w3.org/2000/svg" width="${a}" height="${o}"><foreignObject width="100%" height="100%">${new XMLSerializer().serializeToString(u)}</foreignObject></svg>`;return new Promise((e,t)=>{let n=new Image;n.onload=()=>{l.drawImage(n,0,0),e(s.toDataURL(`image/png`))},n.onerror=()=>t(Error(`Screenshot rendering failed`)),n.src=`data:image/svg+xml;charset=utf-8,`+encodeURIComponent(d)})},setState:t=>{try{localStorage.setItem(`slicc-sprinkle-state:${e}`,JSON.stringify(t))}catch{}},getState:()=>{try{let t=localStorage.getItem(`slicc-sprinkle-state:${e}`);return t?JSON.parse(t):null}catch{return null}},open:e=>{let t=/^https?:|^chrome-extension:/.test(e)?e:C(e);window.open(t,`_blank`)},close:()=>this.closeHandler(e),minimize:()=>this.minimizeHandler(e),stopCone:()=>this.stopConeHandler(),attachImage:(e,t,n)=>this.attachImageHandler(e,t,n),captureScreen:()=>this.captureScreenHandler(),exec:Object.assign(e=>this.runExec(e),{spawn:e=>this.jshDispatch(`spawn`,[e])}),fetch:(e,t)=>this.jshDispatch(`fetch`,[e,t??null]),http:{client:e=>{let t=t=>(n,r)=>this.jshDispatch(`http`,[e,t,n,r??null]);return{get:t(`get`),post:t(`post`),put:t(`put`),patch:t(`patch`),delete:t(`delete`)}}},browser:{findTab:e=>this.jshDispatch(`browser`,[`findTab`,e]),ensureTab:(e,t)=>this.jshDispatch(`browser`,[`ensureTab`,e,t??{}]),eval:(e,t)=>this.jshDispatch(`browser`,[`eval`,e,t]),evalAsync:(e,t)=>this.jshDispatch(`browser`,[`evalAsync`,e,t]),cookie:(e,t)=>this.jshDispatch(`browser`,[`cookie`,e,t]),localStorage:(e,t)=>this.jshDispatch(`browser`,[`localStorage`,e,t]),fetch:(e,t,n)=>this.jshDispatch(`browser`,[`fetch`,e,t,n??{}])},hid:{list:()=>this.hidOp(e,`list`,[]),request:t=>this.hidOp(e,`request`,[t??[]]),open:async t=>{await this.hidOp(e,`open`,[t])},close:async t=>{await this.hidOp(e,`close`,[t])},sendReport:async(t,n,r)=>{await this.hidOp(e,`sendReport`,[t,n,r])},on:(t,n)=>{if(t!==`inputreport`)return;let r=`${e}:hid:inputreport`,i=this.listeners.get(r);i||(i=new Set,this.listeners.set(r,i)),i.add(n)},off:(t,n)=>{t===`inputreport`&&this.listeners.get(`${e}:hid:inputreport`)?.delete(n)}},serial:{list:()=>this.serialOp(e,`list`,[]),request:t=>this.serialOp(e,`request`,[t??[]]),open:async(t,n)=>{await this.serialOp(e,`open`,[t,n])},close:async t=>{await this.serialOp(e,`close`,[t])}},usb:{list:()=>this.usbOp(e,`list`,[]),request:t=>this.usbOp(e,`request`,[t??[]]),open:async t=>{await this.usbOp(e,`open`,[t])},close:async t=>{await this.usbOp(e,`close`,[t])}},readFileBinary:async e=>j((await this.jshDispatch(`readFileBinary`,[e])).base64),writeFileBinary:async(e,t)=>{await this.jshDispatch(`writeFileBinary`,[e,A(t)])},fetchToFile:(e,t)=>this.jshDispatch(`fetchToFile`,[e,t]),_jsh:(e,t)=>this.jshDispatch(e,t),_device:(t,n,r)=>this.deviceOp(e,t,n,r),agent:async(e,t)=>{let n=t?.cwd??`.`,r=t?.allowedCommands??`*`,i=[`agent`];t?.model&&i.push(`--model`,F(t.model)),t?.thinking&&i.push(`--thinking`,F(t.thinking)),t?.readOnly&&i.push(`--read-only`,F(t.readOnly)),i.push(F(n),F(r),F(e));let a=await this.runExec(i.join(` `));return{stdout:a.stdout||a.stderr,exitCode:a.exitCode}}};return t}pushUpdate(e,t){let n=`${e}:update`,r=this.listeners.get(n);if(r)for(let e of r){let n=r;setTimeout(()=>{if(n.has(e))try{e(t)}catch{}},0)}}removeSprinkle(e){for(let t of this.listeners.keys())t.startsWith(`${e}:`)&&this.listeners.delete(t);let t=this.hidSubs.get(e);if(t){for(let e of t.values())try{Promise.resolve(e()).catch(()=>{})}catch{}this.hidSubs.delete(e)}}},L=`slicc-sprinkle-routes`;function R(){try{let e=localStorage.getItem(L);return e?JSON.parse(e):{}}catch{return{}}}function z(e){return R()[e]}export{k as n,I as t};
|