sliccy 6.154.7 → 6.156.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/node-server/hostfs.d.ts +6 -1
- package/dist/node-server/hostfs.js +32 -0
- package/dist/ui/.vite/manifest.json +201 -195
- package/dist/ui/assets/SKILL-B--riEXN.js +1 -0
- package/dist/ui/assets/{SKILL-C947OHCv.js → SKILL-CkA461kX.js} +1 -1
- package/dist/ui/assets/{account-store-CuTDBQ6V.js → account-store-dtzxuWeC.js} +1 -1
- package/dist/ui/assets/{account-store-Bv7LV6_A.js → account-store-kmVkSbCR.js} +1 -1
- package/dist/ui/assets/{adobe-yrm9KfZU.js → adobe-CnRG7JPQ.js} +1 -1
- package/dist/ui/assets/{adobe-Bld04yf4.js → adobe-lTfW3SWI.js} +1 -1
- package/dist/ui/assets/{agent-bridge-BOK0bK1-.js → agent-bridge-C_Nj4jdv.js} +1 -1
- package/dist/ui/assets/{agent-panels-JSKGPWny.js → agent-panels-CuPOC-fc.js} +1 -1
- package/dist/ui/assets/{apply-layout-Dol4QpYX.js → apply-layout-6vcopgzZ.js} +1 -1
- package/dist/ui/assets/{apps-DdAoo50J.js → apps-Dikr6XSa.js} +1 -1
- package/dist/ui/assets/{auto-mount-table-BDyGIOIb.js → auto-mount-table-Bj59hmjV.js} +1 -1
- package/dist/ui/assets/{azure-openai-CROWb3eo.js → azure-openai-BTFDrrWf.js} +1 -1
- package/dist/ui/assets/{azure-openai-D16OgVVX.js → azure-openai-BzpXFJz8.js} +1 -1
- package/dist/ui/assets/backend-hostfs-De2Zrx7a.js +1 -0
- package/dist/ui/assets/backend-hostfs-n_0O1LVt.js +1 -0
- package/dist/ui/assets/{budget-usage-source-CiFTPdLG.js → budget-usage-source-BBJSsrkZ.js} +1 -1
- package/dist/ui/assets/{cdp-ChTjN36Y.js → cdp-Be4w4xKY.js} +1 -1
- package/dist/ui/assets/{cerebras-DEjugWgo.js → cerebras-DIJe1DYg.js} +1 -1
- package/dist/ui/assets/{cerebras-BGd53Y6O.js → cerebras-DRFKeC8d.js} +1 -1
- package/dist/ui/assets/{composer-speech-BvDGMHRN.js → composer-speech-Bm0dHfES.js} +1 -1
- package/dist/ui/assets/{connect-surface-BxeM6wzG.js → connect-surface-R4sCU4sU.js} +1 -1
- package/dist/ui/assets/{directed-approval-DAIXE0nO.js → directed-approval--OxXt3UP.js} +1 -1
- package/dist/ui/assets/dist-BCg-GYyx.js +2 -0
- package/dist/ui/assets/dist-ByarBBEi.js +2 -0
- package/dist/ui/assets/{dist-BPPG9gF6.js → dist-CtH2hxRt.js} +9 -9
- package/dist/ui/assets/{dist-BnmWpUNI.js → dist-VS1DwNvU.js} +10 -10
- package/dist/ui/assets/{extension-ops-B05mAXsq.js → extension-ops-DcLzcAwt.js} +1 -1
- package/dist/ui/assets/{frozen-archive-writer--a4fMghf.js → frozen-archive-writer-Df5805od.js} +1 -1
- package/dist/ui/assets/fs-CETHxfDK.js +1 -0
- package/dist/ui/assets/fs-tGax5N7s.js +2 -0
- package/dist/ui/assets/{github-Bc1z9Z3b.js → github-BAAXjX_F.js} +1 -1
- package/dist/ui/assets/github-DVm0U0mK.js +2 -0
- package/dist/ui/assets/{github-auth-BPlvszS_.js → github-auth-DmHyyx5B.js} +1 -1
- package/dist/ui/assets/{github-copilot-BQU9xIRH.js → github-copilot-0y8bGZg_.js} +1 -1
- package/dist/ui/assets/{github-copilot-CtFddSBT.js → github-copilot-C-nezZQy.js} +1 -1
- package/dist/ui/assets/{github-install-BUmd5jOm.js → github-install--Sj58Qzh.js} +1 -1
- package/dist/ui/assets/{github-zip-BbIUjzA4.js → github-zip-CXiagkZF.js} +1 -1
- package/dist/ui/assets/{hear-CYy8tVN1.js → hear-CI9hCYc0.js} +1 -1
- package/dist/ui/assets/{help-C1vcRsvu.js → help-BNaovbY_.js} +1 -1
- package/dist/ui/assets/isomorphic-git-DRUhmZ5u.js +84 -0
- package/dist/ui/assets/{js-realm-worker-JtICkZ9q.js → js-realm-worker-BMCyKyav.js} +1 -1
- package/dist/ui/assets/kernel-worker-8NClboR3.js +4948 -0
- package/dist/ui/assets/{live-session-snapshot-CpwRZg6K.js → live-session-snapshot-BP6rxBrE.js} +1 -1
- package/dist/ui/assets/{local-llm-_OhXJtNu.js → local-llm-C9Pn8yB9.js} +1 -1
- package/dist/ui/assets/{local-llm-CJWLILc_.js → local-llm-DXYnLBn-.js} +1 -1
- package/dist/ui/assets/{main-CpKPiVl7.js → main-BsKv75d6.js} +3 -3
- package/dist/ui/assets/{main-cherry-D8WCpwBV.js → main-cherry-K2rdb2tR.js} +1 -1
- package/dist/ui/assets/{memory-curation-seam-BxXS_BMa.js → memory-curation-seam-Da8y7PL1.js} +1 -1
- package/dist/ui/assets/{mount-B-qjx7RD.js → mount-BnqsJz07.js} +2 -2
- package/dist/ui/assets/{mount-CIGA8r4q.js → mount-Bvhkqfvq.js} +3 -3
- package/dist/ui/assets/{mount-bridge-client-DQaM1wCj.js → mount-bridge-client-DphjpUJQ.js} +1 -1
- package/dist/ui/assets/{mount-bridge-client-DWY67yip.js → mount-bridge-client-wfM0sGs5.js} +1 -1
- package/dist/ui/assets/{mount-index-D9w_zMSm.js → mount-index-DLLlduW0.js} +1 -1
- package/dist/ui/assets/{mount-recovery-DNUbi0Ni.js → mount-recovery-TMd9CRjk.js} +1 -1
- package/dist/ui/assets/mv-DUh51uEl.js +2 -0
- package/dist/ui/assets/{new-session-Bat4OTXx.js → new-session-Cio_KBeZ.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-D2j6OHaC.js → oauth-bootstrap-VrNUDJjU.js} +2 -2
- package/dist/ui/assets/{onboarding-orchestrator-Za4dEXZ8.js → onboarding-orchestrator-BB1zNdKC.js} +1 -1
- package/dist/ui/assets/{openai-codex-f1f3Poo1.js → openai-codex-BT5FTBS6.js} +1 -1
- package/dist/ui/assets/{openai-codex-CcJ89ggy.js → openai-codex-BgqTW2m7.js} +1 -1
- package/dist/ui/assets/{openrouter-B52C9XuH.js → openrouter-C_K6V7Gb.js} +1 -1
- package/dist/ui/assets/{openrouter-DN9cM8UA.js → openrouter-DRW30NNq.js} +1 -1
- package/dist/ui/assets/{openrouter-free-CiLvReDo.js → openrouter-free-BuW6IASB.js} +1 -1
- package/dist/ui/assets/{openrouter-free--eNgGfax.js → openrouter-free-pIEnU1rf.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-Iv8iz92e.js → openrouter-oauth-B2EDW69J.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-DOQfi9TX.js → openrouter-oauth-CIKXwi1m.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-DtxsALXP.js → panel-rpc-handlers-BWB6oIBZ.js} +2 -2
- package/dist/ui/assets/{panelize-shell-Dk8A0fzt.js → panelize-shell-D_vKNVde.js} +1 -1
- package/dist/ui/assets/{pi-edit-execution-BVNON_7G.js → pi-edit-execution-CotHks9m.js} +1 -1
- package/dist/ui/assets/probe-info-CjsoArwT.js +2 -0
- package/dist/ui/assets/{provider-jRSVQQyi.js → provider-XTsGHN9L.js} +1 -1
- package/dist/ui/assets/provider-hpokNxOX.js +2 -0
- package/dist/ui/assets/provider-settings-Bb94woDn.js +1 -0
- package/dist/ui/assets/provider-store-access-C6h1lyTo.js +1 -0
- package/dist/ui/assets/provider-store-access-Caku0E5t.js +1 -0
- package/dist/ui/assets/{providers-CkE3X7zj.js → providers-76aUL-6g.js} +2 -2
- package/dist/ui/assets/{providers-DsDlOFZz.js → providers-C4pBG_9R.js} +1 -1
- package/dist/ui/assets/{quick-llm-hedJ8LEL.js → quick-llm-B4_UPPHO.js} +1 -1
- package/dist/ui/assets/{recovery-screen-DU8WFnpT.js → recovery-screen-dOYd3v8f.js} +1 -1
- package/dist/ui/assets/{remote-sprinkle-vfs-BY9A-xsx.js → remote-sprinkle-vfs-C_-TfGu3.js} +1 -1
- package/dist/ui/assets/{remote-terminal-view-BXjdqm7-.js → remote-terminal-view-D4Ah4AQY.js} +1 -1
- package/dist/ui/assets/{remote-vfs-client-Dt3CesOI.js → remote-vfs-client-BvSUDbgj.js} +1 -1
- package/dist/ui/assets/rename-via-fs-ckVY1Ljv.js +1 -0
- package/dist/ui/assets/{run-DTXbRzQ6.js → run-4b9___NI.js} +1 -1
- package/dist/ui/assets/{run-C-InHvWx.js → run-9EqZ2jqr.js} +2 -2
- package/dist/ui/assets/{run-dk5KyxT2.js → run-T3Ym76it.js} +1 -1
- package/dist/ui/assets/same-file-identity-C_JKwIh_.js +1 -0
- package/dist/ui/assets/{session-command-memory-CkF1Wu0O.js → session-command-memory-CzJDf01Z.js} +2 -2
- package/dist/ui/assets/{session-jsonl-eMNv3Qki.js → session-jsonl-BwqaD3jQ.js} +1 -1
- package/dist/ui/assets/{session-jsonl-CpQqgq2a.js → session-jsonl-CRmpR-ZS.js} +1 -1
- package/dist/ui/assets/{session-search-index-D2VtAM_Q.js → session-search-index-D6zcG95Z.js} +1 -1
- package/dist/ui/assets/{setup-feature-flags-remote-DJTSDAP-.js → setup-feature-flags-remote-FiSp3Nvm.js} +1 -1
- package/dist/ui/assets/sidecar-repair-DRdpqqyR.js +1 -0
- package/dist/ui/assets/{silent-renew-backoff-pEjTpf6Y.js → silent-renew-backoff-47RpYn6p.js} +1 -1
- package/dist/ui/assets/{skills-D1r_dXXN.js → skills-BDuUK1WA.js} +1 -1
- package/dist/ui/assets/slicc-version-BYYOm54y.js +1 -0
- package/dist/ui/assets/{snapshot-jBfySyLF.js → snapshot-YCnvgdlH.js} +1 -1
- package/dist/ui/assets/{snapshot-features-Bn7BtW7K.js → snapshot-features-nRfZ6d0i.js} +1 -1
- package/dist/ui/assets/{soundscape-gtJZ30qF.js → soundscape-Bc7wltLS.js} +1 -1
- package/dist/ui/assets/{speak-D6N7JGfl.js → speak-BCp379KY.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-Bgirnz_O.js → sprinkle-manager-CS0dEr4q.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-CpbS9Pze.js → sprinkle-renderer-iBSrfvqA.js} +1 -1
- package/dist/ui/assets/{state-gI8eLPCJ.js → state-C8-iGrWm.js} +5 -5
- package/dist/ui/assets/{store-CJoMqbUo.js → store-BxfsyfVG.js} +1 -1
- package/dist/ui/assets/{store-CoFkhkC_.js → store-DJgYFIn0.js} +1 -1
- package/dist/ui/assets/{sudo-CdUi7Bt1.js → sudo-Bc7aWsHw.js} +1 -1
- package/dist/ui/assets/{sync-dialog-uCJmhtr8.js → sync-dialog-XvRaTsTt.js} +1 -1
- package/dist/ui/assets/{transformers-env-GrfzOgRv.js → transformers-env-Bv-23qhN.js} +1 -1
- package/dist/ui/assets/{tray-sidecar-B_1w3n4t.js → tray-sidecar-DR8GUSFa.js} +1 -1
- package/dist/ui/assets/types-Bgy4zvr3.js +1 -0
- package/dist/ui/assets/{upgrade-detection-L60JNTNb.js → upgrade-detection-CG7k5pse.js} +1 -1
- package/dist/ui/assets/{upskill-lick-skip-Jcllnh6l.js → upskill-lick-skip-DFarl0_a.js} +1 -1
- package/dist/ui/assets/{voice-reply-DqNiHN6M.js → voice-reply-BPgcJXai.js} +1 -1
- package/dist/ui/assets/{wc-attach-8_xsR0qy.js → wc-attach-CyWVu1te.js} +2 -2
- package/dist/ui/assets/{wc-extension-oYf2HrE6.js → wc-extension-BH735oQw.js} +2 -2
- package/dist/ui/assets/wc-follower-C0Smt7ns.js +17 -0
- package/dist/ui/assets/{wc-follower-oauth-CljtR185.js → wc-follower-oauth-ZRjgkmat.js} +1 -1
- package/dist/ui/assets/{wc-gelatiere-CP4serB8.js → wc-gelatiere-CBgXShc6.js} +1 -1
- package/dist/ui/assets/{wc-live-CkxSC9Ez.js → wc-live-TIbmNyZ5.js} +5 -5
- package/dist/ui/assets/{wc-nav-XvRTYo98.js → wc-nav-D2xv4g-l.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-iCoaOIma.js → wc-onboarding-Biz5eTLA.js} +2 -2
- package/dist/ui/assets/{wc-permissions-brfCnfZb.js → wc-permissions-BsGMi4OQ.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-em6OiHpb.js → wc-placeholder-D9hDHuFw.js} +3 -3
- package/dist/ui/assets/{wc-secret-request-BjM8NPKG.js → wc-secret-request-Gvt5KV_e.js} +1 -1
- package/dist/ui/assets/{wc-settings-BtBwNeN8.js → wc-settings-C5HGZFjz.js} +3 -3
- package/dist/ui/assets/wc-shell-D5oHtJzq.js +125 -0
- package/dist/ui/assets/{wc-shortcut-config-BEsAGNLx.js → wc-shortcut-config-CXSWzus2.js} +1 -1
- package/dist/ui/assets/{wc-shortcuts-CETptwt9.js → wc-shortcuts-CXTn5ep9.js} +1 -1
- package/dist/ui/assets/{wc-sprinkles-DLNH0Ist.js → wc-sprinkles-Dj4XOXZd.js} +2 -2
- package/dist/ui/assets/{wc-transcript-export-CidB32Dc.js → wc-transcript-export-qh3DWzfR.js} +2 -2
- package/dist/ui/assets/{wc-tray-BbFFd7U-.js → wc-tray-C2HCJKvD.js} +4 -4
- package/dist/ui/assets/welcome-detection-DkZYug9E.js +1 -0
- package/dist/ui/assets/{whisper-session-BvALr1gE.js → whisper-session-CX7d_-d1.js} +2 -2
- package/dist/ui/assets/{writable-vfs-client-C4pTXDFX.js → writable-vfs-client-CzJBYzhR.js} +1 -1
- package/dist/ui/assets/{xai-grok-Ht4qQwUs.js → xai-grok-C1jqSoQB.js} +1 -1
- package/dist/ui/assets/{xai-grok-DWDEwZSo.js → xai-grok-CsF-8ZL7.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/ui/packages/webapp/index.html +3 -3
- package/package.json +2 -2
- package/dist/ui/assets/SKILL-CLF3MdfR.js +0 -1
- package/dist/ui/assets/backend-hostfs-BH8uwRZG.js +0 -1
- package/dist/ui/assets/backend-hostfs-BJU2QL9q.js +0 -1
- package/dist/ui/assets/dist-CFI3XeIO.js +0 -2
- package/dist/ui/assets/dist-Ciikigd5.js +0 -2
- package/dist/ui/assets/fs-BEbWmRDq.js +0 -2
- package/dist/ui/assets/fs-CjgMvwqK.js +0 -1
- package/dist/ui/assets/github-D6e0X_mv.js +0 -2
- package/dist/ui/assets/kernel-worker-JOBY7Wxs.js +0 -5021
- package/dist/ui/assets/provider-BEV4Nyb0.js +0 -2
- package/dist/ui/assets/provider-settings-Dc0Uksht.js +0 -1
- package/dist/ui/assets/provider-store-access-BYCBOZrX.js +0 -1
- package/dist/ui/assets/provider-store-access-CcCQNG5q.js +0 -1
- package/dist/ui/assets/sidecar-repair-CPDaW6WS.js +0 -1
- package/dist/ui/assets/slicc-version-Do_Qzxe9.js +0 -1
- package/dist/ui/assets/types-Dgm4REV3.js +0 -1
- package/dist/ui/assets/wc-follower-BYsj_5x0.js +0 -17
- package/dist/ui/assets/wc-shell-DC9WMYcH.js +0 -125
- package/dist/ui/assets/welcome-detection-DW2ROqam.js +0 -1
package/README.md
CHANGED
|
@@ -42,6 +42,10 @@ Once you're in, you can:
|
|
|
42
42
|
|
|
43
43
|
> Status: active working prototype. The macOS app is the easiest way in today; the extension has been submitted to the Chrome Web Store.
|
|
44
44
|
|
|
45
|
+
Scoop shells bound supported filesystem traversals and command buffers. See the
|
|
46
|
+
[shell work limits](docs/shell-reference.md#scoop-filesystem-work-limits) for limits
|
|
47
|
+
and command coverage.
|
|
48
|
+
|
|
45
49
|
## Why SLICC is different
|
|
46
50
|
|
|
47
51
|
- **Browser-native, not browser-adjacent.** The agent runtime lives in the browser, and the agent can act on the same browser it lives in. A great mix of power and containment. If you don't like what the AI does, close the browser tab and it's over.
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
* HTML and the webapp cannot rethrow a faithful `FsError`.
|
|
58
58
|
*/
|
|
59
59
|
import type { ErrorRequestHandler, Express, Response } from 'express';
|
|
60
|
-
import { createReadStream } from 'fs';
|
|
60
|
+
import { createReadStream, type Stats } from 'fs';
|
|
61
61
|
import type { HostMountMapping } from './runtime-flags.js';
|
|
62
62
|
/**
|
|
63
63
|
* Cap on a WHOLE-FILE `GET /api/hostfs/read` (and on `PUT /write`). It exists
|
|
@@ -174,6 +174,11 @@ export declare function isHostFsStableBodyRequest(req: {
|
|
|
174
174
|
* passed through untouched.
|
|
175
175
|
*/
|
|
176
176
|
export declare const hostFsBodyErrorHandler: ErrorRequestHandler;
|
|
177
|
+
/**
|
|
178
|
+
* True when `a` and `b` are the same file (device + inode), not merely
|
|
179
|
+
* similar strings. Path comparison misses the APFS case / NFC-NFD collision.
|
|
180
|
+
*/
|
|
181
|
+
export declare function sameHostFileIdentity(a: Stats, b: Stats): boolean;
|
|
177
182
|
/**
|
|
178
183
|
* Register the /api/hostfs routes for the resolved mount roots. The route
|
|
179
184
|
* surface mirrors `MountBackend` 1:1 (webapp `backend-hostfs.ts`):
|
|
@@ -307,6 +307,7 @@ function statIdentity(s) {
|
|
|
307
307
|
return {
|
|
308
308
|
ctime: s.ctimeMs,
|
|
309
309
|
ino: Number(s.ino),
|
|
310
|
+
dev: Number(s.dev),
|
|
310
311
|
uid: s.uid,
|
|
311
312
|
gid: s.gid,
|
|
312
313
|
mode: s.mode,
|
|
@@ -515,7 +516,34 @@ async function mkdirOp(target) {
|
|
|
515
516
|
await mkdir(target, { recursive: true });
|
|
516
517
|
return { ok: true };
|
|
517
518
|
}
|
|
519
|
+
/**
|
|
520
|
+
* True when `a` and `b` are the same file (device + inode), not merely
|
|
521
|
+
* similar strings. Path comparison misses the APFS case / NFC-NFD collision.
|
|
522
|
+
*/
|
|
523
|
+
export function sameHostFileIdentity(a, b) {
|
|
524
|
+
return BigInt(a.dev) === BigInt(b.dev) && BigInt(a.ino) === BigInt(b.ino);
|
|
525
|
+
}
|
|
526
|
+
/**
|
|
527
|
+
* POSIX `rename(2)`: if both operands name the same directory entry (or
|
|
528
|
+
* hard links to the same inode), succeed and do nothing.
|
|
529
|
+
*
|
|
530
|
+
* Node's `fs.rename` on APFS is not that no-op — a case-only or NFD→NFC
|
|
531
|
+
* rename rewrites the catalog name. A copy-then-unlink rename is worse:
|
|
532
|
+
* `open(dest, O_TRUNC)` zeros the only inode, then the subsequent read of
|
|
533
|
+
* source copies 0 bytes, and `readdir` still shows the original name
|
|
534
|
+
* (#3107). Compare identity before calling `rename`.
|
|
535
|
+
*/
|
|
518
536
|
async function renameOp(from, to) {
|
|
537
|
+
try {
|
|
538
|
+
const fromStat = await lstat(from);
|
|
539
|
+
const toStat = await lstat(to);
|
|
540
|
+
if (sameHostFileIdentity(fromStat, toStat))
|
|
541
|
+
return { ok: true, noop: true };
|
|
542
|
+
}
|
|
543
|
+
catch (err) {
|
|
544
|
+
if (errnoCode(err) !== 'ENOENT')
|
|
545
|
+
throw err;
|
|
546
|
+
}
|
|
519
547
|
await rename(from, to);
|
|
520
548
|
return { ok: true };
|
|
521
549
|
}
|
|
@@ -644,6 +672,10 @@ export function registerHostFsRoutes(app, roots) {
|
|
|
644
672
|
}
|
|
645
673
|
await mkdir(dirname(target), { recursive: true });
|
|
646
674
|
const body = Buffer.isBuffer(req.body) ? req.body : Buffer.alloc(0);
|
|
675
|
+
// The body is fully buffered before this open. `createWriteStream`
|
|
676
|
+
// would O_TRUNC dest on open, before any byte arrived — the
|
|
677
|
+
// copy-then-unlink truncation in #3107. writeFile also truncates,
|
|
678
|
+
// but only with the complete payload already in hand.
|
|
647
679
|
// Write-then-rename would break hardlinks and xattrs on user files;
|
|
648
680
|
// plain writeFile matches what local tools do.
|
|
649
681
|
await writeFile(target, body);
|