sliccy 6.148.6 → 6.150.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.
Files changed (189) hide show
  1. package/README.md +1 -0
  2. package/dist/node-server/_shared/preview-url.d.ts.map +1 -1
  3. package/dist/node-server/_shared/preview-url.js +5 -3
  4. package/dist/node-server/_shared/preview-url.js.map +1 -1
  5. package/dist/node-server/_shared/transcript-redaction.d.ts +12 -1
  6. package/dist/node-server/_shared/transcript-redaction.d.ts.map +1 -1
  7. package/dist/node-server/_shared/transcript-redaction.js +5 -5
  8. package/dist/node-server/_shared/transcript-redaction.js.map +1 -1
  9. package/dist/ui/.vite/manifest.json +196 -182
  10. package/dist/ui/assets/CLAUDE-C2sAF3Q0.js +1 -0
  11. package/dist/ui/assets/DREAMING-DKcamfu0.js +74 -0
  12. package/dist/ui/assets/GELATIERE-BnNVlnMz.js +1 -0
  13. package/dist/ui/assets/{MEMORY-BEEBDXkY.js → MEMORY-1jIGxLn4.js} +12 -3
  14. package/dist/ui/assets/SKILL-BXSAhY0E.js +133 -0
  15. package/dist/ui/assets/SKILL-C9vwCrkC.js +1 -0
  16. package/dist/ui/assets/SKILL-Cc0Ep86w.js +1 -0
  17. package/dist/ui/assets/{SKILL-saWWhAfi.js → SKILL-DC91lupP.js} +1 -1
  18. package/dist/ui/assets/{SKILL-2Mi1pQ3F.js → SKILL-DJtLE66_.js} +5 -3
  19. package/dist/ui/assets/SKILL-DvHAkJSI.js +117 -0
  20. package/dist/ui/assets/SKILL-UcxSfshP.js +66 -0
  21. package/dist/ui/assets/WIKI-DoBxwf2u.js +1 -0
  22. package/dist/ui/assets/{account-store-CxhEKTWa.js → account-store-CLFiIEe9.js} +1 -1
  23. package/dist/ui/assets/{account-store-CSvfMN0q.js → account-store-FB6hD_og.js} +1 -1
  24. package/dist/ui/assets/{adobe-CkbPEFWB.js → adobe-C0SuhrNz.js} +1 -1
  25. package/dist/ui/assets/{adobe-DwR2UBAP.js → adobe-aiATKwYr.js} +1 -1
  26. package/dist/ui/assets/{agent-bridge-_io6UvbS.js → agent-bridge-3cLsKfah.js} +8 -8
  27. package/dist/ui/assets/{agent-panels-DCYDDalu.js → agent-panels-riabOq_G.js} +1 -1
  28. package/dist/ui/assets/{apply-layout-CUKNJsnM.js → apply-layout-Bz6N8odC.js} +1 -1
  29. package/dist/ui/assets/{approver-agent-O_C8F_lu.js → approver-agent-BA3dC9Lg.js} +1 -1
  30. package/dist/ui/assets/{apps-DmBDvKqA.js → apps-BxA4sLPb.js} +1 -1
  31. package/dist/ui/assets/archive-redaction-ByV7X5fs.js +1 -0
  32. package/dist/ui/assets/{azure-openai-BqeIibmb.js → azure-openai-DkH6LhzR.js} +1 -1
  33. package/dist/ui/assets/{azure-openai-hucQjFkk.js → azure-openai-hlwpTQ2A.js} +1 -1
  34. package/dist/ui/assets/{budget-usage-source-B7HIa-K7.js → budget-usage-source-D6zuo6Hu.js} +1 -1
  35. package/dist/ui/assets/{cdp-fnaJdghg.js → cdp-DJGttMQn.js} +1 -1
  36. package/dist/ui/assets/{cerebras-Cp_tyicG.js → cerebras-CUNK2jZM.js} +1 -1
  37. package/dist/ui/assets/{cerebras-D4eNW8Dz.js → cerebras-DBQ1bv38.js} +1 -1
  38. package/dist/ui/assets/{composer-speech-Y9nFpucg.js → composer-speech-BFUPGTEu.js} +1 -1
  39. package/dist/ui/assets/cone-memory-budget-ieIsscyt.js +15 -0
  40. package/dist/ui/assets/{connect-surface-DE9AvQcr.js → connect-surface-D_kgCGp2.js} +1 -1
  41. package/dist/ui/assets/descriptor-D-6Koktu.js +1 -0
  42. package/dist/ui/assets/{directed-approval-B64z8WXS.js → directed-approval-EWvnA53r.js} +1 -1
  43. package/dist/ui/assets/feature-flags-BX-OhLDm.js +1 -0
  44. package/dist/ui/assets/feature-flags-CYCRk6Dq.js +1 -0
  45. package/dist/ui/assets/frozen-archive-writer--a4fMghf.js +8 -0
  46. package/dist/ui/assets/{fs-CIkDZ_Dd.js → fs-BExiqsiJ.js} +2 -2
  47. package/dist/ui/assets/{fs-Bdk6lf_I.js → fs-Cc9eDq3V.js} +1 -1
  48. package/dist/ui/assets/gelatiere-constants-BYJlhm8R.js +1 -0
  49. package/dist/ui/assets/gelatiere-store-D36IMluj.js +1 -0
  50. package/dist/ui/assets/gelatiere-unit-7xZALH_i.js +1 -0
  51. package/dist/ui/assets/{github-7zGAPnOR.js → github-BY2Hef8-.js} +2 -2
  52. package/dist/ui/assets/{github-D62L-Qj4.js → github-BsO9qBMX.js} +1 -1
  53. package/dist/ui/assets/{github-copilot-DTqmEBkZ.js → github-copilot-BL5LC-w9.js} +1 -1
  54. package/dist/ui/assets/{github-copilot-K4pi5pmY.js → github-copilot-DYeNaU6e.js} +1 -1
  55. package/dist/ui/assets/{github-install-DW9eSCWK.js → github-install-BTMb6Eqq.js} +1 -1
  56. package/dist/ui/assets/{github-zip-D5pmGz48.js → github-zip-fcV1ZI6K.js} +1 -1
  57. package/dist/ui/assets/{hear-C_o9CbL8.js → hear-ZHJ-907t.js} +1 -1
  58. package/dist/ui/assets/{help-lfImwIAI.js → help-DhWsyOhV.js} +1 -1
  59. package/dist/ui/assets/instruction-frontmatter-Bk64dayp.js +3 -0
  60. package/dist/ui/assets/{js-realm-worker-CuwcQntH.js → js-realm-worker-DZArxACB.js} +1 -1
  61. package/dist/ui/assets/{kernel-worker-ESg7BZtf.js → kernel-worker-2JqW5-by.js} +655 -662
  62. package/dist/ui/assets/key-DExP84Xm.js +1 -0
  63. package/dist/ui/assets/lick-target-env-8JxfVcIV.js +1 -0
  64. package/dist/ui/assets/lick-urls-HYeTtmbf.js +1 -0
  65. package/dist/ui/assets/{lick-ws-bridge-DlghqmSh.js → lick-ws-bridge-BlInST5r.js} +1 -1
  66. package/dist/ui/assets/{lick-ws-bridge-BbfNnO1f.js → lick-ws-bridge-DqmithfF.js} +1 -1
  67. package/dist/ui/assets/{live-session-snapshot-BnA6Mq0G.js → live-session-snapshot-CpwRZg6K.js} +1 -1
  68. package/dist/ui/assets/{local-llm-BIkUvHqY.js → local-llm-BB5WjVB9.js} +1 -1
  69. package/dist/ui/assets/{local-llm-D_T0EnaA.js → local-llm-DcnAyJLX.js} +1 -1
  70. package/dist/ui/assets/log-DEDI5t_h.js +1 -0
  71. package/dist/ui/assets/{main-B6EOlFVs.js → main-DbmhUBke.js} +3 -3
  72. package/dist/ui/assets/{main-cherry-Dn_p-eb4.js → main-cherry-CizWgCog.js} +1 -1
  73. package/dist/ui/assets/manager-CstXzWYQ.js +1 -0
  74. package/dist/ui/assets/memory-budget-CIVoqHgl.js +1 -0
  75. package/dist/ui/assets/memory-curation-seam-DPw-uMRg.js +1 -0
  76. package/dist/ui/assets/memory-health-MhSOmzAf.js +1 -0
  77. package/dist/ui/assets/memory-v2-flag-D50hE5F1.js +1 -0
  78. package/dist/ui/assets/{mount-a6GiK5eK.js → mount-C4Dcf141.js} +1 -1
  79. package/dist/ui/assets/{mount-PrIS1Sa3.js → mount-C4r5pcZ6.js} +3 -3
  80. package/dist/ui/assets/{mount-recovery-B_EuFRnE.js → mount-recovery-BvMNCrP1.js} +1 -1
  81. package/dist/ui/assets/new-session-B8mQOTMk.js +2 -0
  82. package/dist/ui/assets/{oauth-bootstrap-97a5ChZn.js → oauth-bootstrap-Bssxvnj9.js} +2 -2
  83. package/dist/ui/assets/{onboarding-orchestrator-xYbh_T_5.js → onboarding-orchestrator-BTy-2rjb.js} +1 -1
  84. package/dist/ui/assets/{openai-codex-C1-zR0yq.js → openai-codex-C1PBtm8V.js} +1 -1
  85. package/dist/ui/assets/{openai-codex-BOoUGfZo.js → openai-codex-rd_p0one.js} +1 -1
  86. package/dist/ui/assets/{openrouter-DoxfEMdx.js → openrouter-BJIIR9g5.js} +1 -1
  87. package/dist/ui/assets/{openrouter-DQfvvYij.js → openrouter-DVjN51Bu.js} +1 -1
  88. package/dist/ui/assets/{openrouter-free-DDqDQdRp.js → openrouter-free-1EVH-oJw.js} +1 -1
  89. package/dist/ui/assets/{openrouter-free-GMWxIUhh.js → openrouter-free-CU-iItiG.js} +1 -1
  90. package/dist/ui/assets/{openrouter-oauth-sMAXA75w.js → openrouter-oauth-CHusQ8ye.js} +1 -1
  91. package/dist/ui/assets/{openrouter-oauth-CEDhl0OZ.js → openrouter-oauth-Da-6Oq0D.js} +1 -1
  92. package/dist/ui/assets/panel-rpc-handlers-Ch4Behyn.js +2 -0
  93. package/dist/ui/assets/{panelize-shell-BgsRRYSF.js → panelize-shell-C0m6TyBn.js} +1 -1
  94. package/dist/ui/assets/{provider-DBzel_xl.js → provider-BPE-djCs.js} +2 -2
  95. package/dist/ui/assets/{provider-C9ruriwF.js → provider-M-0eEmke.js} +1 -1
  96. package/dist/ui/assets/provider-settings-Vnae44M1.js +1 -0
  97. package/dist/ui/assets/provider-store-access-DD87rc3B.js +1 -0
  98. package/dist/ui/assets/provider-store-access-JCVbVn4R.js +1 -0
  99. package/dist/ui/assets/{providers-BecFVHcB.js → providers-DDqVLz05.js} +1 -1
  100. package/dist/ui/assets/{providers-Bk7_R6-e.js → providers-Dq0px1q5.js} +2 -2
  101. package/dist/ui/assets/{quick-llm-B8jKq4iQ.js → quick-llm-CPEd0yPp.js} +1 -1
  102. package/dist/ui/assets/{recovery-screen-C8SMqbts.js → recovery-screen-DHlUCruV.js} +1 -1
  103. package/dist/ui/assets/run-BY9if0Td.js +42 -0
  104. package/dist/ui/assets/{run-CRtbfNhS.js → run-C03Ay2Z7.js} +1 -1
  105. package/dist/ui/assets/{run-Cu2b1qXL.js → run-Ct4a1SOJ.js} +1 -1
  106. package/dist/ui/assets/{run-DLmWyiS5.js → run-FWploF5d.js} +2 -2
  107. package/dist/ui/assets/run-tBUQGAj8.js +50 -0
  108. package/dist/ui/assets/{session-command-memory-Bh_U73Lu.js → session-command-memory-BTDKlIRk.js} +4 -3
  109. package/dist/ui/assets/session-jsonl-B6NACdIo.js +11 -0
  110. package/dist/ui/assets/{session-jsonl-BxhPJRfn.js → session-jsonl-eMNv3Qki.js} +1 -1
  111. package/dist/ui/assets/session-search-index-D2VtAM_Q.js +3 -0
  112. package/dist/ui/assets/{setup-feature-flags-remote-DTWNUOEW.js → setup-feature-flags-remote-CUAqKOVK.js} +1 -1
  113. package/dist/ui/assets/sidecar-repair-DFADpBRH.js +1 -0
  114. package/dist/ui/assets/{silent-renew-backoff-7OJRYyhc.js → silent-renew-backoff-CmODQQqt.js} +1 -1
  115. package/dist/ui/assets/{skills-59WNpYyE.js → skills-BUpWgkUH.js} +1 -1
  116. package/dist/ui/assets/slicc-version-BSblY8aE.js +1 -0
  117. package/dist/ui/assets/{snapshot-BNRtY2CJ.js → snapshot-1vOpGcO0.js} +1 -1
  118. package/dist/ui/assets/{snapshot-features-DVnp1w2e.js → snapshot-features-_N-rE3pl.js} +1 -1
  119. package/dist/ui/assets/{soundscape-9bfPI94m.js → soundscape-0en207GO.js} +1 -1
  120. package/dist/ui/assets/{speak-BaQH0gYp.js → speak-_rLrkLgU.js} +1 -1
  121. package/dist/ui/assets/sprinkle-manager-DcJJcpU8.js +1 -0
  122. package/dist/ui/assets/{sprinkle-renderer-BaQcBKrt.js → sprinkle-renderer-D3FHwzp3.js} +1 -1
  123. package/dist/ui/assets/{state-XwTXvaim.js → state-BURn7jMK.js} +1 -1
  124. package/dist/ui/assets/{store-DR4bp0Ym.js → store-BR5AolDe.js} +1 -1
  125. package/dist/ui/assets/{store-CJgEv6ac.js → store-HMh9Lk9i.js} +1 -1
  126. package/dist/ui/assets/{sudo-XxCuOTwL.js → sudo-HC-PPt3W.js} +1 -1
  127. package/dist/ui/assets/suggestions-CFQTt8oo.js +329 -0
  128. package/dist/ui/assets/{sync-dialog-DifyU9Wz.js → sync-dialog-CjOSIYTL.js} +1 -1
  129. package/dist/ui/assets/{transformers-env-0DWpJU1C.js → transformers-env-Cp_6LEw_.js} +1 -1
  130. package/dist/ui/assets/tray-leader-BmmfZ-wo.js +1 -0
  131. package/dist/ui/assets/{tray-sidecar-BEYI1163.js → tray-sidecar-C58V0O9z.js} +1 -1
  132. package/dist/ui/assets/{upgrade-detection-BDZBbbdQ.js → upgrade-detection-D9YglioG.js} +1 -1
  133. package/dist/ui/assets/{voice-reply-DToO6RTd.js → voice-reply-BZZxlsn0.js} +1 -1
  134. package/dist/ui/assets/{wc-attach-4VTzCaDp.js → wc-attach-BlsSvdoI.js} +2 -2
  135. package/dist/ui/assets/{wc-extension-D0bVp8vB.js → wc-extension-h0B2v7jl.js} +2 -2
  136. package/dist/ui/assets/wc-follower-BrT0nSWH.js +17 -0
  137. package/dist/ui/assets/wc-follower-oauth-ldrlDvsz.js +5 -0
  138. package/dist/ui/assets/wc-gelatiere-BuetYYQ6.js +1 -0
  139. package/dist/ui/assets/wc-live-BdztSz08.js +406 -0
  140. package/dist/ui/assets/{wc-nav-D-p0rPR_.js → wc-nav-Cp_gz-jE.js} +2 -2
  141. package/dist/ui/assets/wc-onboarding-CL2TlWps.js +2 -0
  142. package/dist/ui/assets/{wc-placeholder-Db-RyktI.js → wc-placeholder-DMvwda2Y.js} +3 -3
  143. package/dist/ui/assets/{wc-secret-request-BIFBoH1h.js → wc-secret-request-BocSAQbJ.js} +1 -1
  144. package/dist/ui/assets/{wc-settings-C7ARFKxx.js → wc-settings-c6zuyeIz.js} +3 -3
  145. package/dist/ui/assets/wc-shell-CNx2tU3J.js +125 -0
  146. package/dist/ui/assets/{wc-shortcut-config-DiZwCi5M.js → wc-shortcut-config-CmsfFHRi.js} +1 -1
  147. package/dist/ui/assets/{wc-shortcuts--04PLpy8.js → wc-shortcuts-p6BtQ0R3.js} +192 -190
  148. package/dist/ui/assets/wc-sprinkles-CXRTNH8y.js +2 -0
  149. package/dist/ui/assets/{wc-transcript-export-BCJ5AJA8.js → wc-transcript-export-CbYm5pR2.js} +2 -2
  150. package/dist/ui/assets/wc-tray-j9M1XqGl.js +5 -0
  151. package/dist/ui/assets/{welcome-CyCMJDqG.js → welcome-BzW33ZtP.js} +10 -9
  152. package/dist/ui/assets/welcome-detection-Bu8Zf41r.js +1 -0
  153. package/dist/ui/assets/{whisper-session-Dl9qamsc.js → whisper-session-DPNk8OqX.js} +2 -2
  154. package/dist/ui/assets/wiki-BXN4hgmw.js +7 -0
  155. package/dist/ui/assets/wiki-DA0qKUVC.js +307 -0
  156. package/dist/ui/assets/{xai-grok-SveZvKuJ.js → xai-grok-BEIq12AG.js} +1 -1
  157. package/dist/ui/assets/{xai-grok-exJQ7ID9.js → xai-grok-BQrSjOw1.js} +1 -1
  158. package/dist/ui/index.html +4 -4
  159. package/dist/ui/packages/webapp/index.html +4 -4
  160. package/package.json +1 -1
  161. package/dist/ui/assets/CLAUDE-DM1onrcU.js +0 -1
  162. package/dist/ui/assets/SKILL-D40-t9w0.js +0 -57
  163. package/dist/ui/assets/SKILL-DA3Jh760.js +0 -1
  164. package/dist/ui/assets/descriptor-DObnXZNI.js +0 -1
  165. package/dist/ui/assets/feature-flags-COdcJUhl.js +0 -1
  166. package/dist/ui/assets/feature-flags-a-IfHs0F.js +0 -1
  167. package/dist/ui/assets/frozen-archive-writer-cEYcj5un.js +0 -8
  168. package/dist/ui/assets/key-MwVo0KUb.js +0 -1
  169. package/dist/ui/assets/lick-urls-CadwTNxP.js +0 -1
  170. package/dist/ui/assets/memory-v2-flag-C1duOEOb.js +0 -1
  171. package/dist/ui/assets/new-session-0QEsz4J9.js +0 -2
  172. package/dist/ui/assets/panel-rpc-handlers-r2ejq7DG.js +0 -2
  173. package/dist/ui/assets/provider-settings-BYSP7NWc.js +0 -1
  174. package/dist/ui/assets/provider-store-access-Csl5Rhtr.js +0 -1
  175. package/dist/ui/assets/provider-store-access-bV6_bNHG.js +0 -1
  176. package/dist/ui/assets/session-jsonl-DvUI4M0M.js +0 -11
  177. package/dist/ui/assets/session-search-index-CYtd-I68.js +0 -3
  178. package/dist/ui/assets/sidecar-repair-WrV53KRw.js +0 -1
  179. package/dist/ui/assets/slicc-version-DEC4XjJk.js +0 -1
  180. package/dist/ui/assets/sprinkle-manager-CxTROBQi.js +0 -1
  181. package/dist/ui/assets/tray-leader-CDhsXeeJ.js +0 -1
  182. package/dist/ui/assets/wc-follower-DUW9NJ1s.js +0 -17
  183. package/dist/ui/assets/wc-follower-oauth-C-tQshgH.js +0 -5
  184. package/dist/ui/assets/wc-live-DD50Wcz1.js +0 -399
  185. package/dist/ui/assets/wc-onboarding-DONgW5bd.js +0 -2
  186. package/dist/ui/assets/wc-shell-Q2g5GEE1.js +0 -125
  187. package/dist/ui/assets/wc-sprinkles-x7qO5aBO.js +0 -2
  188. package/dist/ui/assets/wc-tray-N6BbXJYM.js +0 -5
  189. package/dist/ui/assets/welcome-detection-CJv2bH67.js +0 -1
package/README.md CHANGED
@@ -77,6 +77,7 @@ SLICC is for you if:
77
77
  - **Preview any file, not just the well-known types.** The previewer identifies files from their CONTENT rather than a list of extensions, so an unrecognized extension (`.jsh`, a `Justfile`) previews as source instead of refusing. Text is syntax-highlighted, PDFs render inline, and images, audio, and video play as before.
78
78
  - **Add visual and file context directly in chat.** Drop images or files onto the workspace, or use the paperclip button. Dropped `.skill` archives still install into `/workspace/skills`.
79
79
  - **Never lose a conversation to compaction.** Whenever a cone's history is summarized to fit the context window, the full transcript is first saved to `/sessions` as a live snapshot (one per cone, extended on every round) and the summary tells the agent where to find it. **New chat** completes that snapshot into a normal frozen session (Save / New chat, fast) or deletes it (Discard). With the experimental **Compact on idle** flag on, a cone that has sat idle for 30 minutes with a context of at least 200k tokens compacts in the background; if you come back mid-round, the round is thrown away and your chat continues as it was. Every compaction — idle or not — leaves a small marker in the transcript naming what happened, with a link to the snapshot it replaced; a round that ends up keeping nothing takes its marker back out.
80
+ - **Keep a gelatiere.** Turn on **Memory v2** under Experimental features and SLICC keeps a resident advisor: a persistent scoop no cone owns and nobody can prompt that reviews your archived sessions every night and after you end a chat, then comes back with a few concrete suggestions — a skill from the catalog that fits what you keep doing by hand, a use case you have not tried, a habit that would have avoided a detour. They show up as cards in the suggestions sprinkle (Install / Try it / Not now) and every open cone gets a lick. `gelatiere run` asks for a pass now; the instructions, the nightly schedule and the budget live in `/shared/GELATIERE.md`.
80
81
  - **Inspect experimental features from the avatar menu.** When centrally managed flags enable the surface for the current runtime, click your avatar and choose **Experimental features…** to open its standalone dialog. The dialog may honestly be empty: `experimental-settings` controls its availability but is not itself user-toggleable.
81
82
  - **Steer a running turn instead of waiting for it.** In the chat composer, `Enter` sends — including from a hardware keyboard in the native iOS follower — and queues behind whatever the cone is already doing; `Shift+Enter` inserts a newline. `Ctrl+Enter` (`Cmd+Enter` on macOS) steers: the message is injected as soon as the current step finishes, so you can redirect the agent mid-turn.
82
83
  - **Boot full x86 virtual machines in the browser.** `v86 start` runs real operating systems (Alpine, FreeDOS, KolibriOS, ...) on the wasm-based [v86](https://github.com/copy/v86) emulator, entirely client-side. The agent drives the guest from the shell — type, click, screenshot, stream the screen live, save/restore state — and `-net <model>,relay=fetch` gives the guest HTTP access through SLICC's fetch proxy. Install with `ipk add -g v86`.
@@ -1 +1 @@
1
- {"version":3,"file":"preview-url.d.ts","sourceRoot":"","sources":["../src/preview-url.ts"],"names":[],"mappings":"AAmCA,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAO7D;AAsBD,wBAAgB,eAAe,CAC7B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,IAAI,SAAM,EACV,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAOR"}
1
+ {"version":3,"file":"preview-url.d.ts","sourceRoot":"","sources":["../src/preview-url.ts"],"names":[],"mappings":"AAiCA,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAU7D;AAsBD,wBAAgB,eAAe,CAC7B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,IAAI,SAAM,EACV,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAOR"}
@@ -27,11 +27,13 @@ const PREVIEW_BASE_BY_WORKER = {
27
27
  'sliccy.ai': 'sliccy.now',
28
28
  // Staging — sliccy.dev
29
29
  'slicc-tray-hub-staging.minivelos.workers.dev': 'sliccy.dev',
30
- // Local dev
31
- 'localhost:8787': 'localhost:8787',
32
30
  };
33
31
  export function previewBaseHost(workerBaseUrl) {
34
- const host = new URL(workerBaseUrl).host.toLowerCase();
32
+ const url = new URL(workerBaseUrl);
33
+ const host = url.host.toLowerCase();
34
+ // Local harnesses use isolated ports; keep preview subdomains on that hub.
35
+ if (url.hostname.toLowerCase() === 'localhost')
36
+ return host;
35
37
  const mapped = PREVIEW_BASE_BY_WORKER[host];
36
38
  if (!mapped) {
37
39
  throw new Error(`No preview base configured for worker host ${host}`);
@@ -1 +1 @@
1
- {"version":3,"file":"preview-url.js","sourceRoot":"","sources":["../src/preview-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC;AAEpE,MAAM,sBAAsB,GAA2B;IACrD,0BAA0B;IAC1B,CAAC,qBAAqB,CAAC,EAAE,YAAY;IACrC,WAAW,EAAE,YAAY;IACzB,uBAAuB;IACvB,8CAA8C,EAAE,YAAY;IAC5D,YAAY;IACZ,gBAAgB,EAAE,gBAAgB;CACnC,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,aAAqB;IACnD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,uBAAuB,CAAC,YAAoB,EAAE,QAAiB;IACtE,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,YAAY,CAAC;IACzC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAChD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,GAAG,MAAM,KAAK,QAAQ,IAAI,MAAM,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,aAAqB,EACrB,YAAoB,EACpB,IAAI,GAAG,GAAG,EACV,QAAiB;IAEjB,MAAM,IAAI,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,uBAAuB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;IACnD,uDAAuD;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC/D,OAAO,GAAG,MAAM,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"preview-url.js","sourceRoot":"","sources":["../src/preview-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC;AAEpE,MAAM,sBAAsB,GAA2B;IACrD,0BAA0B;IAC1B,CAAC,qBAAqB,CAAC,EAAE,YAAY;IACrC,WAAW,EAAE,YAAY;IACzB,uBAAuB;IACvB,8CAA8C,EAAE,YAAY;CAC7D,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,aAAqB;IACnD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACpC,2EAA2E;IAC3E,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC5D,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,uBAAuB,CAAC,YAAoB,EAAE,QAAiB;IACtE,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,YAAY,CAAC;IACzC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAChD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,GAAG,MAAM,KAAK,QAAQ,IAAI,MAAM,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,aAAqB,EACrB,YAAoB,EACpB,IAAI,GAAG,GAAG,EACV,QAAiB;IAEjB,MAAM,IAAI,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,uBAAuB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;IACnD,uDAAuD;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC/D,OAAO,GAAG,MAAM,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;AAC5C,CAAC"}
@@ -14,6 +14,17 @@ export interface PatternRedactionResult {
14
14
  }>;
15
15
  nextId: number;
16
16
  }
17
+ /** Options for {@link redactCredentialPatterns}. */
18
+ export interface PatternRedactionOptions {
19
+ /**
20
+ * Restrict the scan to these categories. Omit for the full set (the
21
+ * export boundary). Archive-at-rest callers pass a high-precision subset:
22
+ * the keyword-assignment `password` rule matches ordinary code discussion
23
+ * (`token = getToken()`), which is acceptable noise in a one-way export
24
+ * but destroys content the user keeps and searches.
25
+ */
26
+ categories?: readonly CredentialCategory[];
27
+ }
17
28
  /**
18
29
  * Scan `input` for named credential patterns and replace each match with
19
30
  * `⟦REDACTED:<category>:<idPrefix><n>⟧`. Patterns are processed in priority
@@ -21,5 +32,5 @@ export interface PatternRedactionResult {
21
32
  * `⟦REDACTED:⟧` ranges are fully excluded from scanning. No entropy
22
33
  * heuristic is applied.
23
34
  */
24
- export declare function redactCredentialPatterns(input: string, idPrefix: string, firstId?: number): PatternRedactionResult;
35
+ export declare function redactCredentialPatterns(input: string, idPrefix: string, firstId?: number, options?: PatternRedactionOptions): PatternRedactionResult;
25
36
  //# sourceMappingURL=transcript-redaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transcript-redaction.d.ts","sourceRoot":"","sources":["../src/transcript-redaction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,cAAc,GAAG,KAAK,GAAG,aAAa,GAAG,UAAU,CAAC;AAEjG,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,kBAAkB,CAAA;KAAE,CAAC,CAAC;IAC7D,MAAM,EAAE,MAAM,CAAC;CAChB;AA8FD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,SAAI,GACV,sBAAsB,CAiCxB"}
1
+ {"version":3,"file":"transcript-redaction.d.ts","sourceRoot":"","sources":["../src/transcript-redaction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,cAAc,GAAG,KAAK,GAAG,aAAa,GAAG,UAAU,CAAC;AAEjG,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,kBAAkB,CAAA;KAAE,CAAC,CAAC;IAC7D,MAAM,EAAE,MAAM,CAAC;CAChB;AA8FD,oDAAoD;AACpD,MAAM,WAAW,uBAAuB;IACtC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAC5C;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,SAAI,EACX,OAAO,CAAC,EAAE,uBAAuB,GAChC,sBAAsB,CAoCxB"}
@@ -62,9 +62,6 @@ function findExcluded(input) {
62
62
  }
63
63
  return excluded;
64
64
  }
65
- // ---------------------------------------------------------------------------
66
- // Public scanner
67
- // ---------------------------------------------------------------------------
68
65
  /**
69
66
  * Scan `input` for named credential patterns and replace each match with
70
67
  * `⟦REDACTED:<category>:<idPrefix><n>⟧`. Patterns are processed in priority
@@ -72,11 +69,14 @@ function findExcluded(input) {
72
69
  * `⟦REDACTED:⟧` ranges are fully excluded from scanning. No entropy
73
70
  * heuristic is applied.
74
71
  */
75
- export function redactCredentialPatterns(input, idPrefix, firstId = 1) {
72
+ export function redactCredentialPatterns(input, idPrefix, firstId = 1, options) {
76
73
  const excluded = findExcluded(input);
77
74
  const claims = [];
78
75
  let nextId = firstId;
79
- for (const { category, source, flags } of PATTERNS) {
76
+ const patterns = options?.categories
77
+ ? PATTERNS.filter((p) => options.categories?.includes(p.category))
78
+ : PATTERNS;
79
+ for (const { category, source, flags } of patterns) {
80
80
  for (const match of input.matchAll(new RegExp(source, flags))) {
81
81
  const start = match.index;
82
82
  if (start === undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"transcript-redaction.js","sourceRoot":"","sources":["../src/transcript-redaction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAyBH,MAAM,QAAQ,GAA8B;IAC1C,6EAA6E;IAC7E;QACE,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,MAAM,CAAC,GAAG,CAAA,qDAAqD;QACvE,KAAK,EAAE,GAAG;KACX;IACD,wBAAwB;IACxB;QACE,QAAQ,EAAE,aAAa;QACvB,MAAM,EACJ,qCAAqC;YACrC,MAAM,CAAC,GAAG,CAAA,UAAU;YACpB,mCAAmC;QACrC,KAAK,EAAE,GAAG;KACX;IACD,sGAAsG;IACtG;QACE,QAAQ,EAAE,cAAc;QACxB,MAAM,EAAE,6BAA6B;QACrC,KAAK,EAAE,IAAI;KACZ;IACD,wEAAwE;IACxE,2CAA2C;IAC3C;QACE,QAAQ,EAAE,SAAS;QACnB,MAAM,EACJ,+CAA+C;YAC/C,0BAA0B;YAC1B,gDAAgD;YAChD,2DAA2D;QAC7D,KAAK,EAAE,GAAG;KACX;IACD,4DAA4D;IAC5D,mFAAmF;IACnF;QACE,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAA,yDAAyD;QAC3E,KAAK,EAAE,IAAI;KACZ;CACF,CAAC;AAEF,oFAAoF;AACpF,MAAM,aAAa,GAAG,kBAAkB,CAAC;AAgBzC,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,QAAQ,CAAC,CAAQ,EAAE,CAAQ;IAClC,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AAC5C,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,QAAQ,GAAY,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAa,EACb,QAAgB,EAChB,OAAO,GAAG,CAAC;IAEX,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAI,MAAM,GAAG,OAAO,CAAC;IAErB,KAAK,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,QAAQ,EAAE,CAAC;QACnD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAClC,MAAM,KAAK,GAAU,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC7D,MAAM,OAAO,GACX,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YACrF,IAAI,OAAO;gBAAE,SAAS;YACtB,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,GAAG,QAAQ,GAAG,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,MAAM,EAAE,CAAC;QAClD,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChC,IAAI,IAAI,aAAa,QAAQ,IAAI,EAAE,GAAG,CAAC;QACvC,GAAG,GAAG,GAAG,CAAC;IACZ,CAAC;IACD,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEzB,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7D,MAAM;KACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"transcript-redaction.js","sourceRoot":"","sources":["../src/transcript-redaction.ts"],"names":[],"mappings":"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"}