sliccy 6.110.2 → 6.110.4

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 (223) hide show
  1. package/README.md +1 -1
  2. package/dist/node-server/_cloud_core/src/cone-config/index.d.ts.map +1 -1
  3. package/dist/node-server/_cloud_core/src/cone-config/index.js +9 -6
  4. package/dist/node-server/_shared/transcript-export.d.ts.map +1 -1
  5. package/dist/node-server/_shared/transcript-export.js.map +1 -1
  6. package/dist/node-server/electron-runtime.d.ts +9 -0
  7. package/dist/node-server/electron-runtime.js +3 -3
  8. package/dist/ui/.vite/manifest.json +487 -331
  9. package/dist/ui/assets/{account-store-Bg1KKHOx.js → account-store-B_euqvU1.js} +3 -3
  10. package/dist/ui/assets/{account-store-8sKKUZ8J.js → account-store-D2KwZ_JF.js} +1 -1
  11. package/dist/ui/assets/{adobe-0CWIpyju.js → adobe-Cki2HdAO.js} +1 -1
  12. package/dist/ui/assets/adobe-D5Qr-WPC.js +2 -0
  13. package/dist/ui/assets/{agent-bridge-B43SVYcu.js → agent-bridge-Bn0WMBTn.js} +1 -1
  14. package/dist/ui/assets/agent-message-to-chat-Cc7vTUN1.js +1 -0
  15. package/dist/ui/assets/{agent-panels-9uCI5yeM.js → agent-panels-DXR6E-bx.js} +1 -1
  16. package/dist/ui/assets/{apply-layout-Bz-0rXhV.js → apply-layout-DPUrW7E1.js} +1 -1
  17. package/dist/ui/assets/{apps-C16RztyU.js → apps-CxDQe9yg.js} +3 -3
  18. package/dist/ui/assets/attachments-329cIT1j.js +1 -0
  19. package/dist/ui/assets/{azure-openai-DoQszniP.js → azure-openai-BWtPfHSZ.js} +1 -1
  20. package/dist/ui/assets/{azure-openai-BCKGDF-y.js → azure-openai-C1PRVW4U.js} +1 -1
  21. package/dist/ui/assets/{bsh-watchdog--Df_ThJG.js → bsh-watchdog-COvv_9Ni.js} +1 -1
  22. package/dist/ui/assets/{cdp-BzUC7d2h.js → cdp-CV7RtjZN.js} +1 -1
  23. package/dist/ui/assets/{cerebras-kH_bQsg2.js → cerebras-BCQIQgbC.js} +1 -1
  24. package/dist/ui/assets/{cerebras-CQwhL4Ig.js → cerebras-gMA2dLvG.js} +1 -1
  25. package/dist/ui/assets/chat-session-store-pWb1-jNp.js +1 -0
  26. package/dist/ui/assets/{connect-surface-BMrb-EnN.js → connect-surface-DQxDKDVQ.js} +1 -1
  27. package/dist/ui/assets/core-BVWxlTTk.js +95 -0
  28. package/dist/ui/assets/db-cKsBsMMN.js +1 -0
  29. package/dist/ui/assets/dictation-priming-CNllGgNq.js +1 -0
  30. package/dist/ui/assets/dip-DKmRJ7Vw.js +233 -0
  31. package/dist/ui/assets/{directed-approval-zeD_orXz.js → directed-approval-D76SQA01.js} +1 -1
  32. package/dist/ui/assets/dist-BamC4SL9.js +1 -0
  33. package/dist/ui/assets/dist-Bwf-JITi.js +12 -0
  34. package/dist/ui/assets/dist-CJQsHfm3.js +6 -0
  35. package/dist/ui/assets/dist-Cre853-J.js +23 -0
  36. package/dist/ui/assets/dist-D9gC7MoR.js +1 -0
  37. package/dist/ui/assets/esptool-operations-DEqDNikQ.js +12 -0
  38. package/dist/ui/assets/export-provider-BEHTjSYw.js +1 -0
  39. package/dist/ui/assets/{follower-navigate-watcher-BoAzVfrf.js → follower-navigate-watcher-BMWK2tPF.js} +1 -1
  40. package/dist/ui/assets/follower-presentation-DqBw0YiV.js +1 -0
  41. package/dist/ui/assets/fs-Bbg8o7F_.js +1 -0
  42. package/dist/ui/assets/fs-ybjwwXNY.js +2 -0
  43. package/dist/ui/assets/github-B4QpYLh4.js +2 -0
  44. package/dist/ui/assets/github-OxXVARDc.js +1 -0
  45. package/dist/ui/assets/{github-copilot-Xp2l1YxD.js → github-copilot-CdB5cKgY.js} +1 -1
  46. package/dist/ui/assets/github-copilot-uKaBUS0r.js +2 -0
  47. package/dist/ui/assets/{github-install-DRa8AaBY.js → github-install-IRaqAW5t.js} +1 -1
  48. package/dist/ui/assets/{github-zip-BpPiUirA.js → github-zip-D1HC1UDF.js} +1 -1
  49. package/dist/ui/assets/{guest-tool-gate-Odk1glKI.js → guest-tool-gate-MzqLI9n7.js} +1 -1
  50. package/dist/ui/assets/handoff-link-BzmwBKCE.js +1 -0
  51. package/dist/ui/assets/hear-L1cFtax_.js +1 -0
  52. package/dist/ui/assets/intercepted-oauth-B0tP4D7f.js +1 -0
  53. package/dist/ui/assets/{js-realm-worker-D6DSLfXh.js → js-realm-worker-C_6Rz8Xq.js} +4 -4
  54. package/dist/ui/assets/{kernel-worker-DQDT4Cud.js → kernel-worker-DP91cGf5.js} +656 -645
  55. package/dist/ui/assets/lick-manager-y-5bIVRR.js +2 -0
  56. package/dist/ui/assets/{lick-urls-51I5JBZv.js → lick-urls-CLl4eksX.js} +1 -1
  57. package/dist/ui/assets/lick-ws-bridge-BD2lQGbd.js +1 -0
  58. package/dist/ui/assets/{lick-ws-bridge-rxCk9AYw.js → lick-ws-bridge-CBO4U0Rd.js} +1 -1
  59. package/dist/ui/assets/{local-llm-OBHKAcNH.js → local-llm-DQaA6Xum.js} +2 -2
  60. package/dist/ui/assets/local-llm-qWWWUQwI.js +2 -0
  61. package/dist/ui/assets/main-CDW7cA9Q.js +22 -0
  62. package/dist/ui/assets/main-cherry-DM457LUs.js +1 -0
  63. package/dist/ui/assets/mount-Bye7RRyn.js +1 -0
  64. package/dist/ui/assets/{mount-Rb9VVKip.js → mount-CKqZ8Dw9.js} +2 -2
  65. package/dist/ui/assets/mount-index-BCzDM4LQ.js +1 -0
  66. package/dist/ui/assets/mount-picker-popup-DFcbLJQx.js +1 -0
  67. package/dist/ui/assets/mount-recovery-DLvtOBuL.js +2 -0
  68. package/dist/ui/assets/navigation-watcher-CUyfUWfd.js +1 -0
  69. package/dist/ui/assets/new-session-D_qcj8sH.js +2 -0
  70. package/dist/ui/assets/oauth-bootstrap-BggoSb8S.js +2 -0
  71. package/dist/ui/assets/oauth-service-NaEg6KHx.js +1 -0
  72. package/dist/ui/assets/{oauth-service-CUpgufjo.js → oauth-service-TDESX_tk.js} +1 -1
  73. package/dist/ui/assets/onboarding-orchestrator-CYP2ZqYz.js +1 -0
  74. package/dist/ui/assets/openai-codex-0QkemnWA.js +1 -0
  75. package/dist/ui/assets/openai-codex-Ywc_TGt7.js +1 -0
  76. package/dist/ui/assets/openrouter-Bigkgk_-.js +1 -0
  77. package/dist/ui/assets/{openrouter-meLV8ehE.js → openrouter-D7e8-Jky.js} +1 -1
  78. package/dist/ui/assets/{openrouter-oauth-DudFNSW4.js → openrouter-oauth-B-7NH7br.js} +1 -1
  79. package/dist/ui/assets/openrouter-oauth-C_xB6iEI.js +1 -0
  80. package/dist/ui/assets/panel-rpc-handlers-gt5P9UqB.js +2 -0
  81. package/dist/ui/assets/{panelize-shell-65i9Hq7n.js → panelize-shell-CYxm6Ct5.js} +1 -1
  82. package/dist/ui/assets/provider-DQ4cOwEh.js +2 -0
  83. package/dist/ui/assets/{provider-BE0mTIGf.js → provider-MJj2wPLX.js} +1 -1
  84. package/dist/ui/assets/provider-settings-B60i2ftL.js +2 -0
  85. package/dist/ui/assets/provider-settings-CxlhAPcv.js +1 -0
  86. package/dist/ui/assets/provider-store-access-B_svgffl.js +1 -0
  87. package/dist/ui/assets/provider-store-access-CglhtJ4J.js +2 -0
  88. package/dist/ui/assets/providers-Drh9RBhg.js +2 -0
  89. package/dist/ui/assets/{providers-BlPz5ou6.js → providers-fS5pOEQR.js} +1 -1
  90. package/dist/ui/assets/{quick-llm-CcFoANd_.js → quick-llm-DunO9KZO.js} +1 -1
  91. package/dist/ui/assets/{recovery-screen-44Uu5Cgy.js → recovery-screen-DtISSxAv.js} +1 -1
  92. package/dist/ui/assets/{redirect-uri-C_VlH29S.js → redirect-uri-DC3PdAtX.js} +1 -1
  93. package/dist/ui/assets/remote-cdp-transport-CgOXLjZ8.js +1 -0
  94. package/dist/ui/assets/{remote-terminal-view-vsJYhJKi.js → remote-terminal-view-DpxIbz7w.js} +1 -1
  95. package/dist/ui/assets/{run-BQu73khp.js → run-DgD5DSV8.js} +1 -1
  96. package/dist/ui/assets/{secret-env-Hwyj0iR1.js → secret-env-CvkpMxjz.js} +1 -1
  97. package/dist/ui/assets/secrets-bridge-client-H8-Z1RVR.js +1 -0
  98. package/dist/ui/assets/session-freezer-CNHYB1nc.js +162 -0
  99. package/dist/ui/assets/{setup-feature-flags-remote-ITlSmr_i.js → setup-feature-flags-remote-6EhUbJpO.js} +1 -1
  100. package/dist/ui/assets/setup-standalone-prelude-B8nDv9xv.js +2 -0
  101. package/dist/ui/assets/setup-sudo-B0OWsay7.js +2 -0
  102. package/dist/ui/assets/sidecar-repair-431vRT2V.js +1 -0
  103. package/dist/ui/assets/{skills-B0o8gPTv.js → skills-SI_H-dAw.js} +2 -2
  104. package/dist/ui/assets/slicc-editor-Bhg4cWBq.js +12 -0
  105. package/dist/ui/assets/slicc-editor-CL_D1iJB.js +1 -0
  106. package/dist/ui/assets/slicc-version-B-ZvN_5f.js +1 -0
  107. package/dist/ui/assets/{sprinkle-manager-DAE09Bc2.js → sprinkle-manager-DjLsrQSV.js} +1 -1
  108. package/dist/ui/assets/{sprinkle-renderer-C9L5ZRvl.js → sprinkle-renderer-1C1DNVyK.js} +2 -2
  109. package/dist/ui/assets/state-CDIZhQs-.js +42 -0
  110. package/dist/ui/assets/{store-C3RMRz9d.js → store-CxmVEGqi.js} +1 -1
  111. package/dist/ui/assets/{store-CzQ9Fvfr.js → store-DLL7d3Pv.js} +1 -1
  112. package/dist/ui/assets/{sudo-CPH7ANoV.js → sudo-C9n-aAFC.js} +1 -1
  113. package/dist/ui/assets/sync-dialog-ACgl0n-p.js +1 -0
  114. package/dist/ui/assets/timestamp-preference-sKwBl5I8.js +2 -0
  115. package/dist/ui/assets/tool-ui-eSQ1g2I1.js +1 -0
  116. package/dist/ui/assets/tray-leader-BkvHMG47.js +1 -0
  117. package/dist/ui/assets/{tray-leave-runtime-3_wlFPFU.js → tray-leave-runtime-OxVT1X8O.js} +1 -1
  118. package/dist/ui/assets/tray-runtime-config-CjsIUSv2.js +1 -0
  119. package/dist/ui/assets/tray-runtime-config-CluPgaPA.js +1 -0
  120. package/dist/ui/assets/tray-sidecar-DlsvQaxt.js +2 -0
  121. package/dist/ui/assets/tray-sync-protocol-BZ5yhJH9.js +1 -0
  122. package/dist/ui/assets/tray-sync-protocol-BlwQKL0e.js +1 -0
  123. package/dist/ui/assets/tray-url-config-Cx0gvYq6.js +1 -0
  124. package/dist/ui/assets/tray-webrtc-DfkvaMcO.js +1 -0
  125. package/dist/ui/assets/{upgrade-detection-TsOPChOa.js → upgrade-detection-BNeR8v1u.js} +1 -1
  126. package/dist/ui/assets/voice-reply-Bl9WzOJ_.js +1 -0
  127. package/dist/ui/assets/wc-attach-Dc31zmRt.js +13 -0
  128. package/dist/ui/assets/wc-extension-D5FlsMCt.js +2 -0
  129. package/dist/ui/assets/wc-float-label-CwzsTOti.js +1 -0
  130. package/dist/ui/assets/wc-floatbar-online-CCdIg4mG.js +1 -0
  131. package/dist/ui/assets/wc-follower-Bke4661H.js +17 -0
  132. package/dist/ui/assets/wc-follower-oauth-C-U310E1.js +5 -0
  133. package/dist/ui/assets/wc-live-CJ-SgVZ0.js +8 -0
  134. package/dist/ui/assets/wc-nav-TcC8J6nL.js +2 -0
  135. package/dist/ui/assets/wc-onboarding-BOs5rY9y.js +2 -0
  136. package/dist/ui/assets/{wc-permissions-CCJrTH49.js → wc-permissions-C77Upopt.js} +3 -3
  137. package/dist/ui/assets/wc-permissions-providers-CKzd9Xhn.js +2 -0
  138. package/dist/ui/assets/{wc-placeholder-CPMV2eO3.js → wc-placeholder-Cgt7DIlO.js} +3 -3
  139. package/dist/ui/assets/{wc-settings-M8e_JWQh.js → wc-settings-BBeVfukN.js} +3 -3
  140. package/dist/ui/assets/{wc-shell-WlrdsROD.js → wc-shell-DPug1uqg.js} +193 -194
  141. package/dist/ui/assets/{wc-shortcut-config-BftmZXGf.js → wc-shortcut-config-KuxMSZRS.js} +1 -1
  142. package/dist/ui/assets/{wc-sprinkles-DhXJLTUO.js → wc-sprinkles-DDuK1vDI.js} +2 -2
  143. package/dist/ui/assets/wc-transcript-export-DKIleW7-.js +2 -0
  144. package/dist/ui/assets/wc-tray-CAP6mm59.js +5 -0
  145. package/dist/ui/assets/welcome-detection-BxyK5SuW.js +1 -0
  146. package/dist/ui/assets/xai-grok-DnhaUq5y.js +1 -0
  147. package/dist/ui/assets/{xai-grok-DH1oX2E5.js → xai-grok-rlwyXPmo.js} +1 -1
  148. package/dist/ui/index.html +11 -8
  149. package/dist/ui/packages/webapp/index.html +11 -8
  150. package/dist/ui/slicc-editor.js +1 -1
  151. package/package.json +5 -4
  152. package/dist/ui/assets/adobe-ChXsF6gw.js +0 -2
  153. package/dist/ui/assets/backend-local-_o3dnerJ.js +0 -12
  154. package/dist/ui/assets/core-DpOt0gTq.js +0 -95
  155. package/dist/ui/assets/dist-CMD3ZuiV.js +0 -1
  156. package/dist/ui/assets/dist-CWHNqkcj.js +0 -1
  157. package/dist/ui/assets/dist-CrVgSn_b.js +0 -6
  158. package/dist/ui/assets/dist-DkG8wgj1.js +0 -23
  159. package/dist/ui/assets/esp8266-1y0C3qJ1.js +0 -1
  160. package/dist/ui/assets/esptool-operations-CiccBbBW.js +0 -12
  161. package/dist/ui/assets/fs-BsqtoiKD.js +0 -2
  162. package/dist/ui/assets/fs-DKRiXKHo.js +0 -1
  163. package/dist/ui/assets/github-DGUqMidV.js +0 -1
  164. package/dist/ui/assets/github-DqsEulTB.js +0 -2
  165. package/dist/ui/assets/github-copilot-DJf8cE1K.js +0 -2
  166. package/dist/ui/assets/handoff-link-BObMRgsx.js +0 -1
  167. package/dist/ui/assets/hear-Du8SABf8.js +0 -1
  168. package/dist/ui/assets/intercepted-oauth-BIKnTjZm.js +0 -1
  169. package/dist/ui/assets/lick-manager-DsQLFcKr.js +0 -2
  170. package/dist/ui/assets/lick-ws-bridge-1UPwiSVX.js +0 -1
  171. package/dist/ui/assets/local-llm-Cjzjpqa1.js +0 -2
  172. package/dist/ui/assets/logger-DQgFbfwx.js +0 -1
  173. package/dist/ui/assets/main-BK-7ArIz.js +0 -22
  174. package/dist/ui/assets/main-cherry-C6fqCnLL.js +0 -1
  175. package/dist/ui/assets/mount-BrQpW9eO.js +0 -1
  176. package/dist/ui/assets/mount-index-CD1UKs2l.js +0 -1
  177. package/dist/ui/assets/mount-picker-popup-C4q1Q3pK.js +0 -1
  178. package/dist/ui/assets/mount-recovery-Cb-AXW35.js +0 -2
  179. package/dist/ui/assets/navigation-watcher-DrWMx-B4.js +0 -1
  180. package/dist/ui/assets/new-session-CF4YpiQ9.js +0 -2
  181. package/dist/ui/assets/oauth-bootstrap-YFOy1SIX.js +0 -2
  182. package/dist/ui/assets/oauth-service-DJuzPXsg.js +0 -1
  183. package/dist/ui/assets/onboarding-orchestrator-Dmh6rOJl.js +0 -1
  184. package/dist/ui/assets/openai-codex-84EHUcAD.js +0 -1
  185. package/dist/ui/assets/openai-codex-DY_L0KSA.js +0 -1
  186. package/dist/ui/assets/openrouter-oauth-CblQ27-K.js +0 -1
  187. package/dist/ui/assets/openrouter-z7GGvxCM.js +0 -1
  188. package/dist/ui/assets/panel-rpc-handlers-DmiAyTiy.js +0 -2
  189. package/dist/ui/assets/picker-approval-D89YhXsA.js +0 -12
  190. package/dist/ui/assets/provider-BLbTGk-_.js +0 -2
  191. package/dist/ui/assets/provider-settings-Dq-yRgMh.js +0 -1
  192. package/dist/ui/assets/provider-store-access-CJdYrcvf.js +0 -1
  193. package/dist/ui/assets/provider-store-access-NHOQWINx.js +0 -1
  194. package/dist/ui/assets/providers-B3OPYf2o.js +0 -2
  195. package/dist/ui/assets/remote-cdp-transport-DeDqT7I4.js +0 -1
  196. package/dist/ui/assets/secrets-bridge-client-CHZomqvU.js +0 -1
  197. package/dist/ui/assets/sidecar-repair-Ddcz9Mvv.js +0 -1
  198. package/dist/ui/assets/slicc-editor-D-eO_pjd.js +0 -23
  199. package/dist/ui/assets/slicc-editor-Sdfe-_x_.js +0 -1
  200. package/dist/ui/assets/slicc-version-BrPYMXS9.js +0 -1
  201. package/dist/ui/assets/state-BSTmV4yO.js +0 -42
  202. package/dist/ui/assets/sync-dialog-vSEl3KxP.js +0 -1
  203. package/dist/ui/assets/tool-ui-DRnUkp2g.js +0 -1
  204. package/dist/ui/assets/tool-ui-DfXu6quJ.js +0 -1
  205. package/dist/ui/assets/tray-leader-B_FxjW0d.js +0 -1
  206. package/dist/ui/assets/tray-runtime-config-Bpo7AZhY.js +0 -1
  207. package/dist/ui/assets/tray-runtime-config-Dv3NVv5v.js +0 -1
  208. package/dist/ui/assets/tray-sidecar-BIcoXTJN.js +0 -2
  209. package/dist/ui/assets/voice-reply-O_Z2C0eg.js +0 -1
  210. package/dist/ui/assets/wc-attach-DM5yRZRS.js +0 -13
  211. package/dist/ui/assets/wc-extension-Dg5dOqTK.js +0 -2
  212. package/dist/ui/assets/wc-float-label-Bmp3gmHN.js +0 -1
  213. package/dist/ui/assets/wc-floatbar-online-B8ug4UwE.js +0 -1
  214. package/dist/ui/assets/wc-follower-G03aUmAn.js +0 -17
  215. package/dist/ui/assets/wc-follower-oauth-D15d_vbh.js +0 -5
  216. package/dist/ui/assets/wc-live-CiwhsK8i.js +0 -399
  217. package/dist/ui/assets/wc-nav-D8Bi3zRA.js +0 -2
  218. package/dist/ui/assets/wc-onboarding-DUBWYyMl.js +0 -2
  219. package/dist/ui/assets/wc-permissions-providers-CET8Rh_M.js +0 -2
  220. package/dist/ui/assets/wc-transcript-export-DjpmBvLP.js +0 -2
  221. package/dist/ui/assets/wc-tray-BdgbNPhM.js +0 -5
  222. package/dist/ui/assets/welcome-detection-0SaDZUV0.js +0 -1
  223. package/dist/ui/assets/xai-grok-CVEtAfJK.js +0 -1
@@ -1,4 +1,4 @@
1
- import{t as e}from"./base64-DzRgusa4.js";import"./src-CcFD5QfS.js";import{p as t,v as n}from"./state-BSTmV4yO.js";const r=new TextEncoder;function i(e){return typeof e==`object`&&!!e&&`exitCode`in e}async function a(e,t){try{return await e.fs.readFileBuffer(e.fs.resolvePath(e.cwd,t))}catch{return{message:`curlwright: cannot read ${t}`,exitCode:26}}}function o(e){let t=new Uint8Array(e.length),n=0;for(let r of e)r!==10&&r!==13&&(t[n++]=r);return t.subarray(0,n)}async function s(e,t){let n=t.indexOf(`=`),o=t.indexOf(`@`),s=o!==-1&&(n===-1||o<n),c=s?o:n,l=c===-1?``:t.slice(0,c),u=c===-1?t:t.slice(c+1),d=u;if(s){let t=await a(e,u);if(i(t))return t;d=new TextDecoder().decode(t)}let f=encodeURIComponent(d);return r.encode(l===``?f:`${l}=${f}`)}async function c(e,t){if(t.kind===`urlencode`)return s(e,t.value);if(t.kind===`raw`||!t.value.startsWith(`@`))return r.encode(t.value);let n=await a(e,t.value.slice(1));return i(n)||t.kind===`binary`?n:o(n)}function l(e){let t=Math.max(0,e.length-1),n=e.reduce((e,t)=>e+t.length,0)+t,r=new Uint8Array(n),i=0;return e.forEach((e,t)=>{t>0&&(r[i++]=38),r.set(e,i),i+=e.length}),r}function u(e){let t=e.split(`;`);return{value:t[0],options:t.slice(1)}}function d(e,t){for(let n of e){let e=n.trim();if(e.startsWith(`${t}=`))return e.slice(t.length+1)}return null}function f(e){let t=e.replace(/\/+$/,``),n=t.lastIndexOf(`/`);return n===-1?t:t.slice(n+1)}async function p(e,t,n){let r=n.value.indexOf(`=`);if(r===-1)return{message:`curlwright: -F requires name=content (got "${n.value}")`,exitCode:2};let o=n.value.slice(0,r),s=n.value.slice(r+1);if(n.literal||s[0]!==`@`&&s[0]!==`<`)return t.append(o,s),null;let{value:c,options:l}=u(s.slice(1)),p=await a(e,c);if(i(p))return p;if(s[0]===`<`)return t.append(o,new TextDecoder().decode(p)),null;let m=d(l,`type`)??`application/octet-stream`,h=d(l,`filename`)??f(c);return t.append(o,new Blob([p],{type:m}),h),null}async function m(e,t,n){if(t.length>0&&n.length>0)return{message:`curlwright: -F cannot be combined with -d`,exitCode:2};if(n.length>0){let t=new FormData;for(let r of n){let n=await p(e,t,r);if(n)return n}return{bytes:null,form:t,contentType:null,accept:null}}if(t.length===0)return{bytes:null,form:null,contentType:null,accept:null};let r=[];for(let n of t){let t=await c(e,n);if(i(t))return t;r.push(t)}let a=t.some(e=>e.kind===`json`);return{bytes:l(r),form:null,contentType:a?`application/json`:`application/x-www-form-urlencoded`,accept:a?`application/json`:null}}const h=new Set([`request`,`header`,`data`,`data-raw`,`data-binary`,`data-ascii`,`data-urlencode`,`json`,`form`,`form-string`,`output`,`dump-header`,`write-out`,`max-time`,`user`,`referer`,`range`,`url`,`tab`,`frame`]),g=new Set([`silent`,`show-error`,`include`,`head`,`verbose`,`fail`,`location`,`remote-name`,`get`,`no-credentials`,`help`]),_={X:`request`,H:`header`,d:`data`,F:`form`,o:`output`,D:`dump-header`,w:`write-out`,m:`max-time`,u:`user`,e:`referer`,r:`range`},v={s:`silent`,S:`show-error`,i:`include`,I:`head`,v:`verbose`,f:`fail`,L:`location`,O:`remote-name`,G:`get`,h:`help`},y={cert:`client certificates are the browser profile's to present, not the shell's`,"cert-type":`client certificates are the browser profile's to present, not the shell's`,key:`client certificates are the browser profile's to present, not the shell's`,cacert:`the browser decides which roots to trust`,capath:`the browser decides which roots to trust`,insecure:`the browser enforces TLS verification; a page cannot opt out`,proxy:`proxying is configured on the browser, not per request`,"proxy-user":`proxying is configured on the browser, not per request`,interface:`a page cannot choose an outgoing interface`,"unix-socket":`a page cannot dial a unix socket`,resolve:`a page cannot override DNS resolution`,compressed:`always on — the browser negotiates encoding itself`,cookie:"the tab's own cookies are already sent; set one with `playwright-cli cookie-set`","cookie-jar":"cookies live in the browser profile; read them with `playwright-cli cookies`","limit-rate":`a page cannot throttle a fetch`,"continue-at":"a page fetch cannot resume; use `-H 'Range: bytes=N-'`","connect-timeout":"a page fetch cannot time the connect phase alone; use `--max-time`","http1.1":`the browser negotiates the HTTP version`,http2:`the browser negotiates the HTTP version`,http3:`the browser negotiates the HTTP version`,"no-buffer":`responses are read whole, never streamed to stdout`,"trace-ascii":"no wire trace exists; use `playwright-cli network-requests`",trace:"no wire trace exists; use `playwright-cli network-requests`","user-agent":`User-Agent is a forbidden header name for fetch(); the tab sets it`},b={k:`insecure`,x:`proxy`,b:`cookie`,c:`cookie-jar`,E:`cert`,C:`continue-at`,N:`no-buffer`,A:`user-agent`};function x(){return{url:null,requestMethod:null,headers:[],data:[],form:[],get:!1,output:null,remoteName:!1,include:!1,head:!1,dumpHeader:null,writeOut:null,silent:!1,showError:!1,verbose:!1,failOnError:!1,maxTimeSeconds:null,credentials:`include`,tab:null,frame:null,user:null,referer:null,range:null,help:!1}}function S(e,t){return{message:`curlwright: option ${e} is not supported in a page context — ${y[t]}`,exitCode:2}}function C(e){return{message:`curlwright: unknown option ${e}\nRun 'curlwright --help' for the supported flags.`,exitCode:2}}function ee(e){let t=e.indexOf(`:`);if(t===-1)return e.endsWith(`;`)?{name:e.slice(0,-1).trim(),value:``,unset:!1}:{name:e.trim(),value:``,unset:!1};let n=e.slice(0,t).trim(),r=e.slice(t+1).trim();return{name:n,value:r,unset:r===``}}function w(e,t,n,r){switch(t){case`request`:return e.requestMethod=n,null;case`header`:return e.headers.push(ee(n??``)),null;case`data`:case`data-ascii`:return e.data.push({kind:`ascii`,value:n??``}),null;case`data-raw`:return e.data.push({kind:`raw`,value:n??``}),null;case`data-binary`:return e.data.push({kind:`binary`,value:n??``}),null;case`data-urlencode`:return e.data.push({kind:`urlencode`,value:n??``}),null;case`json`:return e.data.push({kind:`json`,value:n??``}),null;case`form`:return e.form.push({value:n??``,literal:!1}),null;case`form-string`:return e.form.push({value:n??``,literal:!0}),null;case`output`:return e.output=n,null;case`dump-header`:return e.dumpHeader=n,null;case`write-out`:return e.writeOut=n,null;case`max-time`:return T(e,n,r);case`user`:return e.user=n,null;case`referer`:return e.referer=n,null;case`range`:return e.range=n,null;case`url`:return e.url=n,null;case`tab`:return e.tab=n,null;case`frame`:return e.frame=n,null;default:return E(e,t,r)}}function T(e,t,n){let r=Number(t);return!Number.isFinite(r)||r<=0?{message:`curlwright: ${n} expects a positive number of seconds`,exitCode:2}:(e.maxTimeSeconds=r,null)}function E(e,t,n){switch(t){case`silent`:return e.silent=!0,null;case`show-error`:return e.showError=!0,null;case`include`:return e.include=!0,null;case`head`:return e.head=!0,null;case`verbose`:return e.verbose=!0,null;case`fail`:return e.failOnError=!0,null;case`location`:return null;case`remote-name`:return e.remoteName=!0,null;case`get`:return e.get=!0,null;case`no-credentials`:return e.credentials=`omit`,null;case`help`:return e.help=!0,null;default:return C(n)}}function te(e,t,n){let r=t[n],i=r.indexOf(`=`),a=(i===-1?r.slice(2):r.slice(2,i)).trim(),o=i===-1?null:r.slice(i+1);if(a in y)return S(`--${a}`,a);if(h.has(a)){let r=o??t[n+1];return r===void 0?{message:`curlwright: option --${a} requires a value`,exitCode:2}:w(e,a,r,`--${a}`)??{next:o===null?n+2:n+1}}return g.has(a)?w(e,a,null,`--${a}`)??{next:n+1}:C(`--${a}`)}function ne(e,t,n){let r=t[n];for(let i=1;i<r.length;i++){let a=r[i];if(a in b)return S(`-${a}`,b[a]);if(a in _){let o=r.slice(i+1),s=o===``?t[n+1]:o;return s===void 0?{message:`curlwright: option -${a} requires a value`,exitCode:2}:w(e,_[a],s,`-${a}`)??{next:o===``?n+2:n+1}}if(!(a in v))return C(`-${a}`);let o=w(e,v[a],null,`-${a}`);if(o)return o}return{next:n+1}}function re(e,t){return e.url!==null&&e.url!==t?{message:`curlwright: only one URL is supported (got "${e.url}" and "${t}")`,exitCode:2}:(e.url=t,null)}function ie(e){let t=x(),n=0,r=!1;for(;n<e.length;){let i=e[n];if(!r&&i===`--`){r=!0,n++;continue}if(!r&&i.startsWith(`--`)){let r=te(t,e,n);if(`message`in r)return r;n=r.next;continue}if(!r&&i.startsWith(`-`)&&i.length>1){let r=ne(t,e,n);if(`message`in r)return r;n=r.next;continue}let a=re(t,i);if(a)return a;n++}return t}function ae(e){return`message`in e}const D={"accept-charset":`the browser sets it`,"accept-encoding":`the browser negotiates encoding`,connection:`the browser owns the connection`,"content-length":`derived from the body`,cookie:"the tab's cookies are sent already; set one with `playwright-cli cookie-set`",cookie2:`the tab's cookies are sent already`,date:`the browser sets it`,dnt:`the browser sets it`,expect:`a page fetch cannot send it`,host:`derived from the URL`,"keep-alive":`the browser owns the connection`,origin:`the tab's own origin is sent automatically`,referer:`use -e/--referer, which sets the fetch referrer`,te:`the browser owns transfer encoding`,trailer:`the browser owns transfer encoding`,"transfer-encoding":`the browser owns transfer encoding`,upgrade:`the browser owns the connection`,via:`the browser sets it`};function oe(e){let t=e.toLowerCase();return t in D?D[t]:t.startsWith(`proxy-`)?`proxying is configured on the browser`:t.startsWith(`sec-`)?`Sec- headers are reserved for the browser`:null}function O(e){for(let t of e){let e=oe(t.name);if(e)return{message:`curlwright: header "${t.name}" cannot be set from a page — ${e}`,exitCode:2}}return null}function k(e,t){let n=t.toLowerCase();return Object.keys(e).some(e=>e.toLowerCase()===n)}function A(e){let t={},n=new Set;for(let r of e.headers)if(r.name!==``){if(r.unset){n.add(r.name.toLowerCase());continue}t[r.name]=r.value}return{headers:t,suppressed:n}}function j(e,t,n){return!k(e,n)&&!t.has(n)}function M(e){return/^[a-zA-Z]+=/.test(e)?e:`bytes=${e}`}function N(e,t,n,r){n.user!==null&&j(e,t,`authorization`)&&(e.Authorization=`Basic ${btoa(n.user)}`),n.range!==null&&j(e,t,`range`)&&(e.Range=M(n.range)),r.contentType&&j(e,t,`content-type`)&&(e[`Content-Type`]=r.contentType),r.accept&&j(e,t,`accept`)&&(e.Accept=r.accept)}function P(e,t){if(t===``)return e;let[n,r]=F(e);return`${n}${n.includes(`?`)?`&`:`?`}${t}${r}`}function F(e){let t=e.indexOf(`#`);return t===-1?[e,``]:[e.slice(0,t),e.slice(t)]}function I(e,t){return e.requestMethod?e.requestMethod:e.head?`HEAD`:t?`POST`:`GET`}function L(e,t,n){let r=e.toUpperCase();return!t||r!==`GET`&&r!==`HEAD`?null:{message:`curlwright: ${n.requestMethod?`-X ${n.requestMethod}`:`-I`} cannot carry a request body — a page fetch rejects a ${r} with one. Drop the data, or use -G to send it as a query string.`,exitCode:2}}function R(e,t){if(e.url===null)return{message:`curlwright: no URL specified`,exitCode:2};let{headers:n,suppressed:r}=A(e),i=e.get&&t.bytes!==null,a=i?{...t,bytes:null,contentType:null}:t;N(n,r,e,a);let o=i?P(e.url,new TextDecoder().decode(t.bytes??new Uint8Array)):e.url,s=a.bytes!==null||a.form!==null,c=I(e,s),l=L(c,s,e);if(l)return l;let u={method:c,headers:n,credentials:e.credentials,responseType:`binary`};return a.form?u.body=a.form:a.bytes&&(u.body=a.bytes),e.referer!==null&&(u.referrer=e.referer),e.maxTimeSeconds!==null&&(u.timeoutMs=e.maxTimeSeconds*1e3),{url:o,method:c,fetchOptions:u,uploadSize:a.bytes?.length??0}}function z(e){let t=e.fetchOptions.headers??{},n=[`> ${e.method} ${e.url}`];for(let[e,r]of Object.entries(t))n.push(`> ${e}: ${r}`);return n.push(`> `),`${n.join(`
1
+ import{t as e}from"./base64-DzRgusa4.js";import"./src-CcFD5QfS.js";import{p as t,v as n}from"./state-CDIZhQs-.js";const r=new TextEncoder;function i(e){return typeof e==`object`&&!!e&&`exitCode`in e}async function a(e,t){try{return await e.fs.readFileBuffer(e.fs.resolvePath(e.cwd,t))}catch{return{message:`curlwright: cannot read ${t}`,exitCode:26}}}function o(e){let t=new Uint8Array(e.length),n=0;for(let r of e)r!==10&&r!==13&&(t[n++]=r);return t.subarray(0,n)}async function s(e,t){let n=t.indexOf(`=`),o=t.indexOf(`@`),s=o!==-1&&(n===-1||o<n),c=s?o:n,l=c===-1?``:t.slice(0,c),u=c===-1?t:t.slice(c+1),d=u;if(s){let t=await a(e,u);if(i(t))return t;d=new TextDecoder().decode(t)}let f=encodeURIComponent(d);return r.encode(l===``?f:`${l}=${f}`)}async function c(e,t){if(t.kind===`urlencode`)return s(e,t.value);if(t.kind===`raw`||!t.value.startsWith(`@`))return r.encode(t.value);let n=await a(e,t.value.slice(1));return i(n)||t.kind===`binary`?n:o(n)}function l(e){let t=Math.max(0,e.length-1),n=e.reduce((e,t)=>e+t.length,0)+t,r=new Uint8Array(n),i=0;return e.forEach((e,t)=>{t>0&&(r[i++]=38),r.set(e,i),i+=e.length}),r}function u(e){let t=e.split(`;`);return{value:t[0],options:t.slice(1)}}function d(e,t){for(let n of e){let e=n.trim();if(e.startsWith(`${t}=`))return e.slice(t.length+1)}return null}function f(e){let t=e.replace(/\/+$/,``),n=t.lastIndexOf(`/`);return n===-1?t:t.slice(n+1)}async function p(e,t,n){let r=n.value.indexOf(`=`);if(r===-1)return{message:`curlwright: -F requires name=content (got "${n.value}")`,exitCode:2};let o=n.value.slice(0,r),s=n.value.slice(r+1);if(n.literal||s[0]!==`@`&&s[0]!==`<`)return t.append(o,s),null;let{value:c,options:l}=u(s.slice(1)),p=await a(e,c);if(i(p))return p;if(s[0]===`<`)return t.append(o,new TextDecoder().decode(p)),null;let m=d(l,`type`)??`application/octet-stream`,h=d(l,`filename`)??f(c);return t.append(o,new Blob([p],{type:m}),h),null}async function m(e,t,n){if(t.length>0&&n.length>0)return{message:`curlwright: -F cannot be combined with -d`,exitCode:2};if(n.length>0){let t=new FormData;for(let r of n){let n=await p(e,t,r);if(n)return n}return{bytes:null,form:t,contentType:null,accept:null}}if(t.length===0)return{bytes:null,form:null,contentType:null,accept:null};let r=[];for(let n of t){let t=await c(e,n);if(i(t))return t;r.push(t)}let a=t.some(e=>e.kind===`json`);return{bytes:l(r),form:null,contentType:a?`application/json`:`application/x-www-form-urlencoded`,accept:a?`application/json`:null}}const h=new Set([`request`,`header`,`data`,`data-raw`,`data-binary`,`data-ascii`,`data-urlencode`,`json`,`form`,`form-string`,`output`,`dump-header`,`write-out`,`max-time`,`user`,`referer`,`range`,`url`,`tab`,`frame`]),g=new Set([`silent`,`show-error`,`include`,`head`,`verbose`,`fail`,`location`,`remote-name`,`get`,`no-credentials`,`help`]),_={X:`request`,H:`header`,d:`data`,F:`form`,o:`output`,D:`dump-header`,w:`write-out`,m:`max-time`,u:`user`,e:`referer`,r:`range`},v={s:`silent`,S:`show-error`,i:`include`,I:`head`,v:`verbose`,f:`fail`,L:`location`,O:`remote-name`,G:`get`,h:`help`},y={cert:`client certificates are the browser profile's to present, not the shell's`,"cert-type":`client certificates are the browser profile's to present, not the shell's`,key:`client certificates are the browser profile's to present, not the shell's`,cacert:`the browser decides which roots to trust`,capath:`the browser decides which roots to trust`,insecure:`the browser enforces TLS verification; a page cannot opt out`,proxy:`proxying is configured on the browser, not per request`,"proxy-user":`proxying is configured on the browser, not per request`,interface:`a page cannot choose an outgoing interface`,"unix-socket":`a page cannot dial a unix socket`,resolve:`a page cannot override DNS resolution`,compressed:`always on — the browser negotiates encoding itself`,cookie:"the tab's own cookies are already sent; set one with `playwright-cli cookie-set`","cookie-jar":"cookies live in the browser profile; read them with `playwright-cli cookies`","limit-rate":`a page cannot throttle a fetch`,"continue-at":"a page fetch cannot resume; use `-H 'Range: bytes=N-'`","connect-timeout":"a page fetch cannot time the connect phase alone; use `--max-time`","http1.1":`the browser negotiates the HTTP version`,http2:`the browser negotiates the HTTP version`,http3:`the browser negotiates the HTTP version`,"no-buffer":`responses are read whole, never streamed to stdout`,"trace-ascii":"no wire trace exists; use `playwright-cli network-requests`",trace:"no wire trace exists; use `playwright-cli network-requests`","user-agent":`User-Agent is a forbidden header name for fetch(); the tab sets it`},b={k:`insecure`,x:`proxy`,b:`cookie`,c:`cookie-jar`,E:`cert`,C:`continue-at`,N:`no-buffer`,A:`user-agent`};function x(){return{url:null,requestMethod:null,headers:[],data:[],form:[],get:!1,output:null,remoteName:!1,include:!1,head:!1,dumpHeader:null,writeOut:null,silent:!1,showError:!1,verbose:!1,failOnError:!1,maxTimeSeconds:null,credentials:`include`,tab:null,frame:null,user:null,referer:null,range:null,help:!1}}function S(e,t){return{message:`curlwright: option ${e} is not supported in a page context — ${y[t]}`,exitCode:2}}function C(e){return{message:`curlwright: unknown option ${e}\nRun 'curlwright --help' for the supported flags.`,exitCode:2}}function ee(e){let t=e.indexOf(`:`);if(t===-1)return e.endsWith(`;`)?{name:e.slice(0,-1).trim(),value:``,unset:!1}:{name:e.trim(),value:``,unset:!1};let n=e.slice(0,t).trim(),r=e.slice(t+1).trim();return{name:n,value:r,unset:r===``}}function w(e,t,n,r){switch(t){case`request`:return e.requestMethod=n,null;case`header`:return e.headers.push(ee(n??``)),null;case`data`:case`data-ascii`:return e.data.push({kind:`ascii`,value:n??``}),null;case`data-raw`:return e.data.push({kind:`raw`,value:n??``}),null;case`data-binary`:return e.data.push({kind:`binary`,value:n??``}),null;case`data-urlencode`:return e.data.push({kind:`urlencode`,value:n??``}),null;case`json`:return e.data.push({kind:`json`,value:n??``}),null;case`form`:return e.form.push({value:n??``,literal:!1}),null;case`form-string`:return e.form.push({value:n??``,literal:!0}),null;case`output`:return e.output=n,null;case`dump-header`:return e.dumpHeader=n,null;case`write-out`:return e.writeOut=n,null;case`max-time`:return T(e,n,r);case`user`:return e.user=n,null;case`referer`:return e.referer=n,null;case`range`:return e.range=n,null;case`url`:return e.url=n,null;case`tab`:return e.tab=n,null;case`frame`:return e.frame=n,null;default:return E(e,t,r)}}function T(e,t,n){let r=Number(t);return!Number.isFinite(r)||r<=0?{message:`curlwright: ${n} expects a positive number of seconds`,exitCode:2}:(e.maxTimeSeconds=r,null)}function E(e,t,n){switch(t){case`silent`:return e.silent=!0,null;case`show-error`:return e.showError=!0,null;case`include`:return e.include=!0,null;case`head`:return e.head=!0,null;case`verbose`:return e.verbose=!0,null;case`fail`:return e.failOnError=!0,null;case`location`:return null;case`remote-name`:return e.remoteName=!0,null;case`get`:return e.get=!0,null;case`no-credentials`:return e.credentials=`omit`,null;case`help`:return e.help=!0,null;default:return C(n)}}function te(e,t,n){let r=t[n],i=r.indexOf(`=`),a=(i===-1?r.slice(2):r.slice(2,i)).trim(),o=i===-1?null:r.slice(i+1);if(a in y)return S(`--${a}`,a);if(h.has(a)){let r=o??t[n+1];return r===void 0?{message:`curlwright: option --${a} requires a value`,exitCode:2}:w(e,a,r,`--${a}`)??{next:o===null?n+2:n+1}}return g.has(a)?w(e,a,null,`--${a}`)??{next:n+1}:C(`--${a}`)}function ne(e,t,n){let r=t[n];for(let i=1;i<r.length;i++){let a=r[i];if(a in b)return S(`-${a}`,b[a]);if(a in _){let o=r.slice(i+1),s=o===``?t[n+1]:o;return s===void 0?{message:`curlwright: option -${a} requires a value`,exitCode:2}:w(e,_[a],s,`-${a}`)??{next:o===``?n+2:n+1}}if(!(a in v))return C(`-${a}`);let o=w(e,v[a],null,`-${a}`);if(o)return o}return{next:n+1}}function re(e,t){return e.url!==null&&e.url!==t?{message:`curlwright: only one URL is supported (got "${e.url}" and "${t}")`,exitCode:2}:(e.url=t,null)}function ie(e){let t=x(),n=0,r=!1;for(;n<e.length;){let i=e[n];if(!r&&i===`--`){r=!0,n++;continue}if(!r&&i.startsWith(`--`)){let r=te(t,e,n);if(`message`in r)return r;n=r.next;continue}if(!r&&i.startsWith(`-`)&&i.length>1){let r=ne(t,e,n);if(`message`in r)return r;n=r.next;continue}let a=re(t,i);if(a)return a;n++}return t}function ae(e){return`message`in e}const D={"accept-charset":`the browser sets it`,"accept-encoding":`the browser negotiates encoding`,connection:`the browser owns the connection`,"content-length":`derived from the body`,cookie:"the tab's cookies are sent already; set one with `playwright-cli cookie-set`",cookie2:`the tab's cookies are sent already`,date:`the browser sets it`,dnt:`the browser sets it`,expect:`a page fetch cannot send it`,host:`derived from the URL`,"keep-alive":`the browser owns the connection`,origin:`the tab's own origin is sent automatically`,referer:`use -e/--referer, which sets the fetch referrer`,te:`the browser owns transfer encoding`,trailer:`the browser owns transfer encoding`,"transfer-encoding":`the browser owns transfer encoding`,upgrade:`the browser owns the connection`,via:`the browser sets it`};function oe(e){let t=e.toLowerCase();return t in D?D[t]:t.startsWith(`proxy-`)?`proxying is configured on the browser`:t.startsWith(`sec-`)?`Sec- headers are reserved for the browser`:null}function O(e){for(let t of e){let e=oe(t.name);if(e)return{message:`curlwright: header "${t.name}" cannot be set from a page — ${e}`,exitCode:2}}return null}function k(e,t){let n=t.toLowerCase();return Object.keys(e).some(e=>e.toLowerCase()===n)}function A(e){let t={},n=new Set;for(let r of e.headers)if(r.name!==``){if(r.unset){n.add(r.name.toLowerCase());continue}t[r.name]=r.value}return{headers:t,suppressed:n}}function j(e,t,n){return!k(e,n)&&!t.has(n)}function M(e){return/^[a-zA-Z]+=/.test(e)?e:`bytes=${e}`}function N(e,t,n,r){n.user!==null&&j(e,t,`authorization`)&&(e.Authorization=`Basic ${btoa(n.user)}`),n.range!==null&&j(e,t,`range`)&&(e.Range=M(n.range)),r.contentType&&j(e,t,`content-type`)&&(e[`Content-Type`]=r.contentType),r.accept&&j(e,t,`accept`)&&(e.Accept=r.accept)}function P(e,t){if(t===``)return e;let[n,r]=F(e);return`${n}${n.includes(`?`)?`&`:`?`}${t}${r}`}function F(e){let t=e.indexOf(`#`);return t===-1?[e,``]:[e.slice(0,t),e.slice(t)]}function I(e,t){return e.requestMethod?e.requestMethod:e.head?`HEAD`:t?`POST`:`GET`}function L(e,t,n){let r=e.toUpperCase();return!t||r!==`GET`&&r!==`HEAD`?null:{message:`curlwright: ${n.requestMethod?`-X ${n.requestMethod}`:`-I`} cannot carry a request body — a page fetch rejects a ${r} with one. Drop the data, or use -G to send it as a query string.`,exitCode:2}}function R(e,t){if(e.url===null)return{message:`curlwright: no URL specified`,exitCode:2};let{headers:n,suppressed:r}=A(e),i=e.get&&t.bytes!==null,a=i?{...t,bytes:null,contentType:null}:t;N(n,r,e,a);let o=i?P(e.url,new TextDecoder().decode(t.bytes??new Uint8Array)):e.url,s=a.bytes!==null||a.form!==null,c=I(e,s),l=L(c,s,e);if(l)return l;let u={method:c,headers:n,credentials:e.credentials,responseType:`binary`};return a.form?u.body=a.form:a.bytes&&(u.body=a.bytes),e.referer!==null&&(u.referrer=e.referer),e.maxTimeSeconds!==null&&(u.timeoutMs=e.maxTimeSeconds*1e3),{url:o,method:c,fetchOptions:u,uploadSize:a.bytes?.length??0}}function z(e){let t=e.fetchOptions.headers??{},n=[`> ${e.method} ${e.url}`];for(let[e,r]of Object.entries(t))n.push(`> ${e}: ${r}`);return n.push(`> `),`${n.join(`
2
2
  `)}\n`}function B(e,t){let n=[`< ${e}`];for(let[e,r]of Object.entries(t))n.push(`< ${e}: ${r}`);return n.push(`< `),`${n.join(`
3
3
  `)}\n`}function V(t,n){return typeof t==`string`?n===`base64`?e(t):new TextEncoder().encode(t):new Uint8Array}function H(e,t){return t?`HTTP/1.1 ${e} ${t}`:`HTTP/1.1 ${e}`}function U(e,t,n){let r=[H(e,t)];for(let[e,t]of Object.entries(n))r.push(`${e}: ${t}`);return`${r.join(`\r
4
4
  `)}\r\n\r\n`}function W(e){if(e.includes(0))return!0;try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e),!1}catch{return!0}}function G(e){let t;try{t=new URL(e).pathname}catch{t=e.split(`?`)[0]}return t.replace(/\/+$/,``).split(`/`).pop()||null}function K(e,t,n){return new TextEncoder().encode(U(e,t,n)).length}function q(e){try{return new URL(e).origin}catch{return null}}function J(e){return e.map(e=>` --tab=${e.targetId} ${e.url}`).join(`
@@ -1 +1 @@
1
- import{t as e}from"./logger-DDBAeTLF.js";import"./proxied-fetch-CFWkfPNA.js";import{i as t,t as n}from"./api-endpoint-GRCyib6X.js";import{n as r}from"./float-topology-BYb7rxY5.js";import"./secret-topology-BE7Eyd3P.js";import{t as i}from"./secrets-bridge-client-CHZomqvU.js";function a(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}var o=e(`secret-env`);function s(e){let t={},n;for(let r of e)!r?.name||!r?.maskedValue||(r.name===`oauth.github.token`&&(n=r.maskedValue),a(r.name)&&(t[r.name]=r.maskedValue));return n&&(t.GITHUB_TOKEN===void 0&&(t.GITHUB_TOKEN=n),t.GH_TOKEN===void 0&&(t.GH_TOKEN=n)),t}async function c(){let e=r();if(e===`extension-direct`)return new Promise(e=>{chrome.runtime.sendMessage({type:`secrets.list-masked-entries`},t=>{let n=s(t?.entries??[]);Object.keys(n).length>0&&o.info(`Loaded masked secrets into shell env from SW`,{count:Object.keys(n).length}),e(n)})});if(e===`extension-delegate`)try{let e=s((await i(`secrets.list-masked-entries`))?.entries??[]);return Object.keys(e).length>0&&o.info(`Loaded masked secrets into shell env from bridge`,{count:Object.keys(e).length}),e}catch(e){return o.debug(`Bridge list-masked-entries failed`,{error:e instanceof Error?e.message:String(e)}),{}}if(e===`connect`)return{};try{let e=await fetch(t(`/api/secrets/masked`),{headers:n()});if(!e.ok)return o.warn(`Failed to fetch masked secrets`,{status:e.status}),{};let r=await e.json();if(!Array.isArray(r)||r.length===0)return{};let i=s(r);return Object.keys(i).length>0&&o.info(`Loaded masked secrets into shell env`,{count:Object.keys(i).length}),i}catch(e){return o.debug(`Could not fetch masked secrets (server may be unavailable)`,{error:e instanceof Error?e.message:String(e)}),{}}}export{c as fetchSecretEnvVars};
1
+ import{t as e}from"./logger-DDBAeTLF.js";import"./proxied-fetch-CFWkfPNA.js";import{i as t,t as n}from"./api-endpoint-GRCyib6X.js";import{n as r}from"./float-topology-BYb7rxY5.js";import"./secret-topology-BE7Eyd3P.js";import{n as i}from"./secrets-bridge-client-H8-Z1RVR.js";function a(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}var o=e(`secret-env`);function s(e){let t={},n;for(let r of e)!r?.name||!r?.maskedValue||(r.name===`oauth.github.token`&&(n=r.maskedValue),a(r.name)&&(t[r.name]=r.maskedValue));return n&&(t.GITHUB_TOKEN===void 0&&(t.GITHUB_TOKEN=n),t.GH_TOKEN===void 0&&(t.GH_TOKEN=n)),t}async function c(){let e=r();if(e===`extension-direct`)return new Promise(e=>{chrome.runtime.sendMessage({type:`secrets.list-masked-entries`},t=>{let n=s(t?.entries??[]);Object.keys(n).length>0&&o.info(`Loaded masked secrets into shell env from SW`,{count:Object.keys(n).length}),e(n)})});if(e===`extension-delegate`)try{let e=s((await i(`secrets.list-masked-entries`))?.entries??[]);return Object.keys(e).length>0&&o.info(`Loaded masked secrets into shell env from bridge`,{count:Object.keys(e).length}),e}catch(e){return o.debug(`Bridge list-masked-entries failed`,{error:e instanceof Error?e.message:String(e)}),{}}if(e===`connect`)return{};try{let e=await fetch(t(`/api/secrets/masked`),{headers:n()});if(!e.ok)return o.warn(`Failed to fetch masked secrets`,{status:e.status}),{};let r=await e.json();if(!Array.isArray(r)||r.length===0)return{};let i=s(r);return Object.keys(i).length>0&&o.info(`Loaded masked secrets into shell env`,{count:Object.keys(i).length}),i}catch(e){return o.debug(`Could not fetch masked secrets (server may be unavailable)`,{error:e instanceof Error?e.message:String(e)}),{}}}export{c as fetchSecretEnvVars};
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./port-bridge-client-Cti-DmEY.js";var n=t({portName:`secrets.crud`,panelRpcOp:`secrets-bridge`,timeoutMs:1e4,onUnavailable:`resolve-undefined`,makeError:e=>Error(e),logNamespace:`secrets-bridge`,toPortMessage:({type:e,payload:t})=>({type:e,...t}),toPanelRpcPayload:({type:e,payload:t})=>({type:e,payload:t})});function r(e,t){return n({type:e,payload:t})}var i=e({callSecretsBridge:()=>r});export{r as n,i as t};
@@ -0,0 +1,162 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-DunO9KZO.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/account-store-B_euqvU1.js","assets/preload-helper-Czpn1I53.js","assets/claude-model-version-C0HLsjny.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-BxrUfzom.js","assets/libesm-BypnjKEL.js","assets/logger-DDBAeTLF.js","assets/src-CAWTvdAa.js","assets/proxied-fetch-CFWkfPNA.js","assets/base64-DJRlyqZu.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/api-endpoint-GRCyib6X.js","assets/float-topology-BYb7rxY5.js","assets/runtime-env-E-i2SW1s.js","assets/secret-topology-BE7Eyd3P.js","assets/secrets-bridge-client-H8-Z1RVR.js","assets/port-bridge-client-Cti-DmEY.js","assets/image-markers-CxJ9ZBgw.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-Drh9RBhg.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-CgBMwna8.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-ZLR7gmJ4.js"])))=>i.map(i=>d[i]);
2
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{Q as t,X as n,Z as r}from"./account-store-B_euqvU1.js";import{t as i}from"./preload-helper-Czpn1I53.js";import{o as a}from"./claude-model-version-C0HLsjny.js";import{t as o}from"./logger-DDBAeTLF.js";import{n as s}from"./attachments-329cIT1j.js";import{t as c}from"./types-idfTVsM8.js";import{t as l}from"./icons-ZLR7gmJ4.js";import{c as u,l as d,n as f,r as ee,t as p,u as m}from"./record-D153M47x.js";import{a as te}from"./dictation-priming-CNllGgNq.js";import"./agent-message-to-chat-Cc7vTUN1.js";var ne=`---
3
+ writablePaths:
4
+ - /workspace/CLAUDE.md
5
+ visiblePaths:
6
+ - /sessions/
7
+ - /shared/
8
+ - /workspace/
9
+ allowedCommands:
10
+ - awk
11
+ - cat
12
+ - cp
13
+ - cut
14
+ - echo
15
+ - file
16
+ - find
17
+ - grep
18
+ - head
19
+ - jq # structured reads of JSON stores such as /shared/loose-ends.json
20
+ - ls
21
+ - mkdir
22
+ - mv
23
+ - od # read-only byte inspection of corrupted stores
24
+ - printf
25
+ - rg # recursive, .gitignore-aware search; what the curator actually uses over find|xargs grep
26
+ - sed
27
+ - sort
28
+ - tail
29
+ - tr
30
+ - uniq
31
+ - upskill
32
+ - wc
33
+ timeoutSeconds: 1200
34
+ thinkingLevel: medium
35
+ ---
36
+
37
+ # Memory curator
38
+
39
+ Curate the durable memory for session {{SESSION_COUNT}}. Today's date is {{TODAY}}.
40
+
41
+ **Work fast: a full pass should finish in well under 10 minutes.** The run is hard-stopped at 20 minutes, and your rewrite only lands if the pass completes — a killed run is discarded wholesale. So mine the three signals, rewrite the file, compact it in the same pass, and stop, rather than exploring the archive exhaustively.
42
+
43
+ Read the entire current memory at {{MEMORY_PATH}} if it exists. Then mine the archived session at {{SESSION_ARCHIVE_PATH}} using the reading recipes below. Rewrite the entire {{MEMORY_PATH}} file with the durable information worth carrying into future sessions. Every part of the file is editable and counts toward the budget.
44
+
45
+ ## What to look for
46
+
47
+ Three things carry across sessions, and each has its own place in the archive:
48
+
49
+ | Look for | Where it lives |
50
+ | --------------- | ---------------------------------------------------------------------- |
51
+ | **Preferences** | the user's own messages — how they want things done, and what to avoid |
52
+ | **Projects** | tool-call arguments — the paths, repos and files actually worked on |
53
+ | **Pitfalls** | failed tool calls — what broke, and the error that proves it |
54
+
55
+ Pitfalls are the highest-value and most-often-lost category: a failure that cost half an hour is worth one line next time. Keep the error text that identifies it, not the stack trace.
56
+
57
+ ## Reading the session archive
58
+
59
+ **Never \`cat\` the archive and never \`head\` it.** Archives reach several megabytes, and the machine-readable \`<!-- slicc:session-data ... -->\` block is a _single line_ holding the whole session as JSON — roughly half the file. Reading it costs a fortune and tells you nothing the prose below it does not. Whole \`### Tool\` result bodies are the other half and are equally not worth reading.
60
+
61
+ Check the size first, then pull the three signals separately. Together they run about 1% of the archive, so these work on a 2.5 MB file as happily as on a small one.
62
+
63
+ \`\`\`bash
64
+ wc -c {{SESSION_ARCHIVE_PATH}}
65
+
66
+ # Preferences — what the user asked for, in their words.
67
+ sed '/^<!-- slicc:session-data$/,/^-->$/d' {{SESSION_ARCHIVE_PATH}} \\
68
+ | awk '/^## User/{p=1;next} /^## (Assistant|Summary)/{p=0} /^### Tool/{p=0} p'
69
+
70
+ # Projects — the paths touched most, which name the work.
71
+ sed '/^<!-- slicc:session-data$/,/^-->$/d' {{SESSION_ARCHIVE_PATH}} \\
72
+ | grep -o '/[A-Za-z0-9_][A-Za-z0-9_./-]\\{3,\\}' \\
73
+ | sort | uniq -c | sort -rn | head -40
74
+
75
+ # Pitfalls — failed calls with the input that caused them.
76
+ sed '/^<!-- slicc:session-data$/,/^-->$/d' {{SESSION_ARCHIVE_PATH}} \\
77
+ | grep -B6 '^Result:.*\\(rror\\|not found\\|failed\\|denied\\|ENOENT\\|fatal\\)' \\
78
+ | cut -c1-200
79
+ \`\`\`
80
+
81
+ Only if something is still missing, reach into one specific block with \`grep -n\` plus a bounded \`sed -n 'START,ENDp'\`. Never widen these to the whole file.
82
+
83
+ ## Suggesting a skill
84
+
85
+ A recurring pitfall is often a missing skill. Once you know what broke and what the work was, spend **one** lookup on it — no more, and skip it entirely when the session had no failures:
86
+
87
+ \`\`\`bash
88
+ upskill search <a few words from the pitfall>
89
+ upskill list # what is already installed — never suggest a duplicate
90
+ \`\`\`
91
+
92
+ \`upskill ai-ecoverse/skills\` and \`upskill adobe/skills\` list a repo's skills without installing anything. **Never install.** You have no write access to the skills tree, so an install attempt will fail or interrupt the user for approval; recommending is your job, deciding is theirs. Put any suggestion in your closing message, with the pitfall it addresses — that message is delivered to the main agent.
93
+
94
+ ## Working within the budget
95
+
96
+ Measure, decide, then write once. Do not converge on the budget by trial and error — each attempt re-reads your whole context and is billed accordingly.
97
+
98
+ 1. \`wc -c {{MEMORY_PATH}}\` to get the current size, and subtract {{BUDGET_CHARS}} to get the exact surplus.
99
+ 2. Decide up front which sections absorb that surplus, oldest-dated first, and roughly what each one costs. Budget the whole cut before editing anything.
100
+ 3. Write the complete file once, already inside the budget. Never write a version you know to be over budget «to fix in the next step»: the pass can be killed at any moment, and the file you leave behind is the one the next session inherits.
101
+ 4. \`wc -c {{MEMORY_PATH}}\` to confirm. If you are still over, cut a whole section rather than shaving a few characters at a time.
102
+
103
+ Per-section costs come out of \`awk\`, not an interpreter: \`awk '/^## /{h=$0} {c[h]+=length($0)+1} END{for(k in c) printf "%7d %s\\n", c[k], k}' {{MEMORY_PATH}} | sort -rn\` tells you which sections pay for the surplus.
104
+
105
+ To draft before committing, draft in \`{{SCRATCH_DIR}}\`. That is your own scratch folder: writable without a grant and without an approval prompt, private to this pass, and deleted when the pass ends. Reuse one filename such as \`{{SCRATCH_DIR}}/draft.md\` rather than numbering drafts — you have no \`rm\`, so every extra draft survives until the folder goes.
106
+
107
+ If the pass is running long, drop the oldest-dated section wholesale and write. An under-budget file missing one stale section is a good outcome; an over-budget file is a broken one.
108
+
109
+ Rules:
110
+
111
+ - Keep durable preferences, stable project facts, validated approaches, named resources, and the pitfalls worth not repeating.
112
+ - Organize retained information into concise per-topic sections rather than one flat list. Let the topic lead the heading; preferences, projects and pitfalls are what to look for, not a required table of contents.
113
+ - Never write next to the memory file. It is versioned, so backups and scratch copies beside it are noise; drafts belong in \`{{SCRATCH_DIR}}\`. Do not draft in the shared \`/tmp/\` root either — every other unit can read and overwrite what you leave there. \`$TMPDIR\` is your own directory under it and is the right home for ordinary scratch, but a full rewrite of durable memory still belongs in \`{{SCRATCH_DIR}}\`, which is private to the run and removed when the pass ends.
114
+ - Shell tools only. Interpreters such as \`python3\` and \`node -e\` are not on your allow-list, so reaching for one costs an approval round-trip and may fail even when approved — \`awk\`, \`sed\`, \`wc\` and \`sort\` cover every measurement this pass needs.
115
+ - End every \`##\` and \`###\` section heading with its last-verified date in \`YYYY-MM-DD\` form, for example \`## Deployment pipeline (2026-08-06)\`. Dates are UTC, matching the session archive timestamps, so a late-evening freeze west of UTC stamps the next day.
116
+ - Stamp sections you write or confirm with today's date, {{TODAY}}.
117
+ - Prioritize re-verifying the oldest-dated sections. Treat undated headings as maximally stale and date them on this pass.
118
+ - Drop ephemera and duplicates. Delete or merge sections that are stale, superseded, or unverifiable.
119
+ - Preserve concrete identifiers such as file paths, URLs, IDs, and names verbatim.
120
+ - Keep the entire file at or below the hard budget of {{BUDGET_CHARS}} characters, with no exempt region. When over budget, compact or remove the oldest-dated sections first.
121
+ - Write the result to {{MEMORY_PATH}}; do not merely return it in your response.
122
+
123
+ <!-- How to customize
124
+ Add curator instructions here, for example: also update the knowledge base at /path following its WIKI.md. Extend visiblePaths or writablePaths above to grant access to extra stores, and adjust timeoutSeconds when needed.
125
+
126
+ {{MEMORY_PATH}} resolves to a staged per-archive draft under /sessions/.curation/, not the live memory file: the pass snapshots the live file when it spawns, the curator rewrites the draft, and on a successful exit the runtime three-way-merges the rewrite back onto the live file. Edits the cone or the user makes to the live memory while the curator runs survive; where both sides changed the same lines the curator's version wins. An entry in writablePaths naming the memory file is substituted with the draft automatically, so this file keeps working unchanged. A failed or killed run leaves the live memory untouched and its outcome recorded at /sessions/.curation/<archive>/status.json.
127
+
128
+ writablePaths defaults to the memory file alone rather than /workspace/, because the curator can run upskill and a directory-wide grant would also let it install skills into /workspace/skills. Widen it only as far as a task genuinely needs; a single file is a valid entry, not just a directory.
129
+
130
+ Scratch space needs no entry here. The curator spawns under a fixed per-cone name (memory-curator for the primary cone), so the bridge grants it {{SCRATCH_DIR}} — private to the run, writable without a prompt, and removed when the pass ends — and that is where the prompt sends drafts. $TMPDIR is writable too and is this unit's own directory, but it outlives the run and stays readable by the cone, so a full rewrite of durable memory does not belong there.
131
+
132
+ thinkingLevel accepts off, minimal, low, medium, high, or xhigh. Curation is cheaper with reasoning than without: an unreasoned pass converges on the budget by trial and error, and because every turn re-reads the whole context, turn count is what the pass costs. Lower it to off only if you also shrink the prompt to a single mechanical instruction.
133
+
134
+ MEMORY.md is user-edited only: the curator intentionally has read-only access to /shared/ and cannot rewrite its own instructions. A bare / is rejected in writablePaths.
135
+
136
+ Frontmatter supports a strict YAML subset. Arrays may use the block form above (with optional # comment tails) or inline form such as [cat, grep]. \`allowedCommands\` is additive: listed commands extend the built-in base set without replacing it. Inline entries containing commas must be quoted, for example ["/knowledge/lars,rebecca/"].
137
+ -->
138
+ `,re=`/cones`,h=`/workspace/skills`;function g(e){if(u(e)){if(ee(e))return{root:`/workspace`,memoryPath:`/workspace/CLAUDE.md`,scratch:`/tmp`};let t=`${re}/${e.folder}`;return{root:`${t}/workspace`,memoryPath:`${t}/CLAUDE.md`,scratch:`/tmp`}}let t=`/scoops/${e.folder}`;return{root:`${t}/workspace`,memoryPath:`${t}/CLAUDE.md`,scratch:t}}var _=`/tmp`;function ie(e,t){if(!t)return`${_}/${p}`;if(u(t))return`${_}/${t.folder}`;let n=[...e];return`${_}/${(d(n,t)??m(n)[0])?.folder??`cone`}/${t.folder}`}var v=Object.freeze(g({parentJid:null,folder:p}));function ae(e,t){let n=[...e],r=d(n,t)??m(n)[0];return r?g(r):v}function oe(e){let t=`${e.root}/`,n=`${h}/`;return n.startsWith(t)?[t]:[t,n]}var se=`abject.abortive.abrasive.absolute.abstruse.abundant.abyssal.accessible.acerbic.acrid.adamant.adept.adlerian.adornian.adroit.adventurous.aeolian.aerated.aesthetic.affable.aged.ageless.agile.airborne.airlocked.airy.akkadian.alabaster.alacritous.alert.alien.alloyed.allusive.aloof.alpha.alpine.alternate.altruistic.amaranthine.amber.ambidextrous.ambivalent.ambrosial.amiable.amorphous.ample.analog.analytical.ancestral.ancient.angelic.animated.animist.anomalous.antediluvian.antic.antlered.apollinairian.apollonian.apt.aquatic.arbitrary.arcadian.arcane.archaic.archimedean.ardent.arduous.arendtian.argent.argentine.argive.aristotelian.armstrongian.aromatic.arresting.artful.arthurian.articulate.artificial.artisanal.artless.ascetic.ashen.ashy.asimovian.aspiring.assiduous.assyrian.asteroidal.astral.astute.asynchronous.athenian.atlantean.atomic.attentive.attic.audacious.audenesque.augmented.august.augustan.aureate.auric.auroral.austenian.austere.austral.authentic.autonomous.autumnal.avalonian.avid.avuncular.aztec.azure.babbagean.babylonian.bacchic.bachian.bactrian.ballardian.ballistic.balmy.banksian.barefoot.barreled.barthesian.bartokian.bashy.baudelairean.bayesian.beatific.beckettesque.beckettian.beethovenian.beguiling.bellicose.bemused.benevolent.benign.benjaminian.bergmanesque.beta.bewitched.binary.bionic.bismarckian.bitter.bitwise.blackened.blakean.blameless.bland.blazar.blazing.blended.blessed.blissful.blistered.blithe.blooming.blunt.blustery.boeotian.boggy.bohrian.boingy.boisterous.bold.bolted.bombastic.bonny.boolean.boreal.borgesian.borgian.bosky.botticellian.bottled.bouncy.boundless.bountiful.bourbon.bradburyan.brahmsian.braised.brambly.brash.brave.brazen.bready.breathless.brechtian.breezy.briared.briery.bright.brilliant.brined.briny.brisk.bristling.briton.brittenesque.broadband.brontean.bronzed.brooding.browned.browningesque.brucknerian.brumal.brusque.bubbling.bubbly.bucolic.budding.bunuelian.buoyant.burnished.burnt.buttered.buttery.bygone.byronic.bytewise.byzantine.cacophonous.caesarean.callow.calm.candescent.candid.candied.canny.cantorian.capable.capricious.caramelized.caravaggesque.carbon.carefree.carolingian.cartesian.carved.casked.cast.cavafian.cavalier.celebrated.celestial.celtic.ceramic.cerebral.ceremonious.cerulean.cervantine.cezannesque.chagallian.chalky.chaplinesque.charcoal.charismatic.charmed.charming.charred.chaucerian.cheeky.cheerful.chekhovian.cherished.cherubic.chewy.chilled.chilly.chimerical.chipper.chirpy.chivalrous.chopinesque.chromospheric.chronal.chthonic.chubby.chunky.churchillian.cimmerian.cindered.circumspect.circumstellar.citrusy.civil.clandestine.clangy.clarified.clarkean.classic.clement.clever.cloaked.clockwork.clompy.cloned.cloudlike.cloudy.clunky.clustered.coastal.cobalt.cognitive.coherent.coleridgean.colossal.coltranesque.comely.cometary.compiled.complacent.composite.concurrent.conradian.constablean.convivial.copernican.copious.coplandesque.cordial.corinthian.corked.cornelian.coronal.cortical.cosmic.coy.cozy.cracked.crackling.crafty.cranky.crashy.creamy.credible.crepuscular.cretan.crimson.crisp.crispy.crowned.crumbly.crunchy.crushed.cryo.cryofrozen.cryogenic.cryonic.cryptic.crystalline.cuddly.cumulative.cunning.cupric.cured.curious.cursed.cursory.cushy.cybernetic.cyberpunk.cynical.cyprian.daliesque.dancy.dandy.dantean.dantesque.dapper.dappled.daring.dark.darwinian.dashing.dashy.dauntless.davisian.dawning.dazzling.deathless.debonair.deboned.debussyan.decanted.decompiled.decorous.decrypted.deep.deferential.deft.degasian.delectable.deleuzian.delian.deliberate.delicate.delirious.delphic.delta.demure.depressurized.derridean.destined.devout.dewy.dexterous.diaphanous.diced.dickensian.dickian.dickinsonian.didactic.dieselpunk.diffident.digital.dignified.diligent.dimensional.dinky.dionysian.discerning.discreet.disheveled.disparate.distant.distinct.distributed.diurnal.divine.dizzy.docile.docked.dogged.doomed.dorian.dormant.dostoevskian.dotty.doughty.doughy.downy.dozy.draconic.dreamful.dreamy.drifting.dripping.drizzly.droll.drowsy.druidic.dulcet.dun.dunky.durkheimian.dusky.dwarven.dynamic.dystopian.eager.earnest.earthy.eastward.easygoing.ebony.ebullient.eclectic.eclipsed.ecstatic.edenic.edwardian.effervescent.effulgent.effusive.einsteinian.elamite.elastic.elated.eldritch.electric.electronic.elegant.elegiac.elgarian.eliotian.eliotic.elizabethan.ellingtonian.eloquent.elusive.elven.elvish.elysian.embered.emergent.eminent.emphatic.emulsified.enchanted.encoded.encrypted.endearing.endless.endogenous.energetic.enhanced.enigmatic.enthralling.ephemeral.epic.epicurean.equanimous.errant.erudite.escherian.esoteric.esteemed.eternal.ethereal.ethiopian.etruscan.euclidean.eulerian.euphonious.euphoric.evanescent.evening.eventide.everlasting.evocative.exacting.exalted.exemplary.exo.exogenous.expansive.expressive.exquisite.extraterrestrial.extruded.exuberant.fabled.fabulous.facetious.faithful.fallow.fanciful.fantastic.faradayic.faraway.farmhouse.fastidious.fated.fateful.fathomless.faulknerian.faunal.fearless.feathered.feathery.fecund.federated.feisty.felicitous.felliniesque.fenny.fermented.ferny.ferrous.fervent.fervid.festive.fetching.fey.fickle.fierce.fiery.filleted.filtered.fitzgeraldian.fizzy.flaky.flamboyant.flamed.flashy.flawless.fleecy.fleet.fleeting.flexible.flickering.flinty.floral.florid.flouncy.flourishing.flowering.fluent.fluffy.fluid.fluvial.foamy.folded.fond.foraged.forged.formidable.forthright.fortuitous.forward.foucauldian.fourier.fractal.fragrant.frank.frankish.freckled.free.fresh.freudian.friedmanite.frisky.frizzy.frolicsome.frosted.frosty.frothy.frozen.frugal.fruiting.fruity.funky.furred.furtive.futuristic.fuzzy.gaelic.galactic.galbraithian.galilean.gallant.gallic.galvanic.gamesome.gamma.gandhian.garlanded.garrulous.gauguinesque.gaussian.gauzy.generous.genetic.genial.genomic.genteel.gentle.geomagnetic.georgian.gershwinesque.ghostly.giant.gibsonian.giddy.gifted.giga.giggly.gilded.giottesque.glacial.glad.glazed.gleaming.gleeful.glimmering.glistening.glorious.glossy.glowing.gnomish.godardian.godelian.goethean.goethesque.gogolian.golden.gooey.goofy.gorgeous.gorsy.gossamer.gothic.gowned.goyaesque.graceful.gracious.grainy.grand.grassy.grated.gravitic.gregarious.grilled.groovy.ground.grounded.guileless.gushy.gusty.habermasian.habsburg.hadrianic.halcyon.hale.hallowed.haloed.halved.hamiltonian.han.handelian.handmade.handsome.hanoverian.hapless.happy.hardy.hardyesque.harmonious.hashed.haunted.haydnesque.hayekian.hazy.heady.heaneyesque.hearthside.hearty.heathen.heathered.heavenly.hegelian.heideggerian.heinesque.heinleinian.heirloom.heisenbergian.heliacal.hellenic.hellish.hemingwayesque.herbal.herbertian.herculean.hermetic.heroic.hexed.hibernal.hilbertian.histrionic.hitchcockian.hittite.hoar.hoary.hobbesian.hobbitish.hogarthian.holderlinian.holo.holographic.holy.homerian.homeric.homeward.honest.honeyed.honky.hooded.hooved.hopeful.hopkinsian.hopperesque.hoppy.horatian.horned.hospitable.hot.housemade.huggy.humble.humean.humming.humorous.hunky.hunnish.hurrian.hushed.hydraulic.hyper.hyperborean.hypersonic.hyperspatial.hypnotic.iberian.ibsenite.iced.icy.ideal.idyllic.igneous.illustrious.imaginative.immaculate.immense.immortal.impassioned.impeccable.impetuous.impish.impressive.incan.incandescent.incisive.incorrigible.indefatigable.indelible.indigo.indolent.indomitable.industrious.ineffable.inexorable.infernal.infinite.infra.infrared.infused.ingenious.ingenuous.inimitable.innocuous.inquisitive.insatiable.inspired.intense.intergalactic.interstellar.intragalactic.intrepid.intricate.intrinsic.intuitive.inventive.inveterate.invincible.inward.ionian.ionic.ionospheric.irenic.iridescent.irrepressible.ithacan.itinerant.ivory.jacobean.jammy.jangly.jaunty.jazzy.jeffersonian.jiggly.jingly.jocular.jocund.johnsonian.jolly.jouncy.jovial.jovian.joycean.joyful.joyous.jubilant.judicious.juiced.juicy.jumped.jumpy.jungian.junky.justinianic.jute.kafkaesque.kandinskian.kantian.keatonesque.keatsian.keen.keplerian.keynesian.kierkegaardian.kindly.kindred.kinetic.kiplingesque.klimtian.knowing.kooky.kubrickian.kurosawan.lacanian.laconic.lacquered.lacustrine.lacy.lamarckian.lambda.lambent.laminated.landed.languid.lanky.laplacian.larkinesque.laser.latent.lathed.latin.lattice.laudable.launched.laureled.lavish.layered.leaden.leafy.lean.learned.legendary.leguinian.leibnizian.lemian.lemurian.lenient.leonardesque.liberal.libyan.lidar.light.lighthearted.likable.lilac.lilting.liminal.limpid.lincolnesque.lingering.linnaean.lissome.lisztian.literate.lithe.littoral.lively.loamy.local.lockean.lofty.logical.loopy.loose.loquacious.lorcaesque.lorcan.lossless.lossy.lovecraftian.lovelacean.loyal.lucent.lucid.lucky.ludic.lukewarm.luminal.luminous.lunar.luscious.lush.lushy.lusitanian.lustrous.lydian.lynchian.lyotardian.lyric.lyrical.macerated.machiavellian.macro.magical.magnanimous.magnetar.magnetic.magnetospheric.magnificent.magrittean.mahlerian.majestic.mallarmean.malleable.malthusian.malty.mandelan.manetesque.manifold.marbled.marshy.martial.martian.marvelous.marxian.maser.masked.masterful.matchless.matin.matissean.mature.matutinal.mauve.maverick.mawkish.maxwellian.mayan.meandering.mechanical.median.medicean.mega.mellifluous.mellow.melodic.mendelian.merciful.mercurial.merovingian.merry.meshed.meta.metamorphic.meteoric.meticulous.metternichian.mettlesome.michelangelesque.micro.microwave.midnight.mighty.mild.milled.miltonian.miltonic.minced.mindful.mineral.ming.mingusian.minoan.minty.miraculous.mired.miroesque.mirthful.mischievous.misty.mobile.modest.modular.molecular.molieresque.momentous.mondrianesque.monetian.monkish.mono.montane.moonless.moonlit.mordant.morning.mossy.motley.mottled.mouthwatering.mozartian.mughal.multiversal.munificent.murmuring.mushy.musical.mutable.mutant.mycenaean.mysterious.mystical.mythic.nabokovian.nameless.nano.nanoscale.napoleonic.narrowband.nascent.natty.neat.nebular.nebulous.nefarious.neptunian.nerudian.networked.neural.neutron.neutronic.newtonian.nietzschean.nifty.nimble.noble.nocturnal.nonchalant.nonpareil.noontide.norse.northward.nostalgic.notable.novel.nozickian.nuanced.nubian.nuclear.numinous.nutty.oaky.obdurate.oblique.observant.obstinate.obtuse.oceanic.ochre.odyssean.olden.olympian.omega.omni.onward.opaline.opportune.optical.optimistic.opulent.oracular.orbital.orbiting.orderly.original.ornate.orphic.orwellian.osirian.ostentatious.otherworldly.otiose.ottoman.outgoing.outspoken.outward.overcast.overclocked.ovidian.pacific.pagan.painstaking.palatial.pale.pallid.palpable.paradisal.paradoxical.parallel.paramount.parkerish.parsonian.parthian.passionate.pastoral.patched.pathless.patient.pavlovian.peaceable.peaceful.peachy.pearly.peaty.pebbly.peeled.peered.peerless.pelagic.pellucid.penetrating.pensive.peppered.peppery.peppy.perceptive.perennial.perfect.perfumed.perky.persian.persistent.perspicacious.persuasive.pert.pervasive.pessoan.petaled.petrarchan.phantom.pharaonic.phased.philosophical.phlegmatic.phoenician.photonic.photospheric.phrygian.picassoesque.pickled.pictish.picturesque.pillowy.pindaric.pinteresque.piping.piquant.pirandellian.pithy.pivotal.pixelated.placid.planckian.planetary.planetoid.plangent.plasmic.plathian.platinum.platonic.playful.pleasant.plentiful.pliant.plinky.plonky.plucky.plumed.plummy.plush.plushy.plutonian.plutonic.pneumatic.poached.poesque.poetic.poignant.poised.polished.polite.pollockian.poly.polygonal.polymer.polynesian.popean.popped.popular.portly.posh.positronic.posthuman.potent.pouncy.powdery.powerful.pragmatic.prancy.precise.precocious.precognitive.preeminent.premier.prescient.pressed.pressurized.prestigious.pretty.primeval.primordial.princely.printed.pristine.private.prized.prodigious.profane.proficient.profound.profuse.prokofievian.prolific.promethean.prompt.proper.prophetic.prosaic.prosperous.protean.proto.protostellar.proud.proustian.providential.prudent.psionic.puccinian.puckish.pudgy.puffed.pulled.pulsar.punctilious.punctual.pungent.punic.pure.purposeful.pushkinian.pynchonesque.pythagorean.quaint.quantum.quartered.quasar.questing.quick.quiescent.quiet.quintessential.quirky.quixotic.rabelaisian.racinian.radar.radiant.radio.rainwashed.rainy.rakish.rambunctious.raphaelesque.rapid.rapturous.rare.rational.ravelian.rawlsian.raytraced.ready.reasonable.rebooted.receptive.recondite.recursive.redolent.reduced.reedy.refined.reflective.refulgent.regal.relativistic.relaxed.reliable.remarkable.rembrandtesque.remote.rendered.renoiresque.renowned.replete.replicated.resilient.resinous.resolute.resourceful.respectful.resplendent.responsive.restful.restive.restless.reticent.retro.reverent.rhapsodic.rhodian.rhythmic.ricardian.rich.richelieuvian.riemannian.rigorous.rilkean.rimbaudian.rimed.ringed.ripe.ripening.rippling.risible.riverine.riveted.roaming.roaring.roasted.robed.robotic.robust.rolled.roly.roman.romanov.romantic.rompy.rooseveltian.roseate.rosy.rothkoesque.rousing.rousseauian.rowdy.royal.rubenesque.ruddy.runic.rushy.russet.rustic.sabine.sable.sacred.sagacious.sage.saintly.salient.saline.salingeresque.salted.salty.salubrious.samian.sandaled.sandy.sanguine.sapid.sapient.sapphic.sardonic.sarmatian.sartrean.sassy.satiny.saturnian.saturnine.saucy.savory.savvy.saxon.scalding.scarlet.schielesque.schillerian.schoenbergian.scholarly.schubertian.schumannesque.schumpeterian.scintillating.scorched.scorsesean.scrappy.scruffy.scrupulous.scythian.seaborne.seamless.seared.seasonal.seaward.secure.sedate.sedgy.sedimentary.sedulous.seemly.seismic.selenic.selfless.sensible.sensitive.sentient.sentimental.seraphic.sere.serene.seuratian.shaded.shadowed.shadowy.shaggy.shaken.shakespearean.shamanic.shannonian.sharded.sharp.shaved.shavian.shelleyan.shielded.shimmering.shiny.shoreless.shostakovian.shrewd.shucked.sibelian.sibilant.sibylline.sicilian.sidereal.sienna.sifted.sigma.silicon.silken.silky.silly.silty.silver.silvered.simmering.simulated.sincere.singed.singing.singular.sinuous.sisyphean.sizzling.skeptical.skillful.skinnerian.skittish.skyward.sleek.sleepless.sleepy.slender.sliced.slick.slipstreamed.slow.sly.smart.smashy.smithian.smoked.smoky.smoldering.smooth.snappy.snazzy.snoozy.snowy.snug.snuggly.soaring.sociable.socratic.sodden.soft.sogdian.solar.solarpunk.solemn.solid.somnolent.sonar.song.sonic.sonorous.sooty.soporific.soulful.sound.soundless.sour.southward.sovereign.spaceborne.spacefaring.spacious.sparkling.sparkly.spartan.special.speckled.spectacular.spectral.speedy.spellbound.spiced.spicy.spielbergian.spiffy.spinozan.spirited.splashy.splendid.split.sploshy.spontaneous.spooky.sporty.spotless.spotted.sprightly.sproingy.spry.spun.spunky.squally.squashy.squelchy.squiggly.squishy.staid.stainless.stalwart.starborn.starfaring.starless.starlit.stasisbound.stately.steadfast.steady.steaming.steampunk.steely.steeped.steinbeckian.stellar.stellarborn.sticky.stirred.stirring.stoic.stoical.stolid.stompy.stoppardian.storied.stormy.stout.strained.stratospheric.straussian.stravinskian.streaky.stretched.striking.strindbergian.striped.strong.stuart.stubby.studious.stunning.sturdy.stygian.suave.subatomic.sublime.suborbital.subsonic.substantial.subtle.succinct.succulent.sudsy.sugared.sugary.sumerian.summery.sunless.sunlit.sunny.sunward.superb.supergalactic.superlative.superluminal.supersonic.supple.supreme.sure.surreptitious.svelte.swanky.sweeping.sweet.swift.swiftian.swirled.swooshy.sylvan.sympathetic.synaptic.synchronous.synthetic.syrupy.tableside.tachyonic.taciturn.talented.talleyrandian.tame.tang.tangy.tarantinoesque.tarkovskian.tart.tasteful.tattered.taut.tawny.tectonic.telekinetic.telepathic.temperate.tempered.temporal.tenacious.tender.tennysonian.tenuous.tepid.tera.terran.terrific.terse.textured.thackerayan.thankful.thawed.theban.thessalian.theta.thorny.thorough.thoughtful.thracian.threadbare.thriving.thundery.tidal.tidy.timeless.timely.timeworn.tinkly.tiny.tipsy.tireless.titanesque.titanian.titanic.titanium.titianesque.toasted.toasty.tocharian.tokenized.tolerant.tolkienesque.tolstoyan.tonic.tonky.toothsome.torched.totemic.tough.towering.trackless.tranquil.transcendent.transhuman.treacly.treasured.tremendous.tremulous.trenchant.tricky.trim.triumphant.trojan.trollopian.truculent.true.truffautian.truffled.trusty.truthful.tudor.turbo.turingian.turneresque.twangy.twilight.twilit.twinkling.twinkly.ubiquitous.ultra.ultrasonic.ultraviolet.umami.umber.unassuming.unbounded.uncanny.uncorked.unctuous.undaunted.underworldly.undocked.undying.unearthly.unerring.unflappable.unique.unknown.unruffled.upbeat.upgraded.upright.upstanding.upward.uranian.urbane.utopian.vacuous.valeryan.valiant.valorous.vandal.vangoghian.vast.veblenian.vectorized.vedic.vehement.veiled.velazquezian.velvet.velvety.venerable.venturous.venusian.veracious.verbose.verdant.verdian.verdurous.verlainian.vermeerian.vermilion.vernal.verneian.versatile.vesper.vespertine.vibrant.victorian.vigilant.vigorous.vintage.violet.virgilian.virtual.virtuous.visceral.vital.vivacious.vivid.vocal.voidborn.voidward.volcanic.voltairean.voluble.vonnegutian.voracious.voxel.vroomy.wacky.wagnerian.wakeful.waking.wan.wandering.warholian.warm.warped.wary.washingtonian.wayward.wealthy.weathered.weberian.welcome.welded.wellesian.wellsian.westward.whacky.whimsical.whimsy.whipped.whisked.whispering.whistlerian.whitmanesque.whole.wholesome.whooshy.wide.wiggly.wild.wildean.willowy.wilsonian.wily.windswept.windy.winged.winning.winsome.wintry.wired.wireframe.wireless.wise.wishful.wispy.wistful.wittgensteinian.witty.wobbly.wodehousian.wondrous.wonky.wooded.woody.woolly.woozy.wordless.wordsworthian.wormholed.worthy.wraithlike.wreathed.wriggly.wry.xenial.xeno.yanky.yearning.yeasty.yeatsian.young.youthful.yuletide.yummy.zany.zappy.zealous.zested.zestful.zesty.zeta.zingy.zippy.zodiacal.zonked.zonky.zoomy.zoroastrian`.split(`.`),ce=`abalone.absinthe.absyrtus.accelerator.achilles.acorn.acquerello.actuator.adobo.adonis.aeetes.aegis.aello.aeneas.aengus.aether.affogato.afterburner.agartha.agate.agni.agnolotti.aioli.airlock.ajax.aji.albatross.alder.ale.alecto.aleppo.alfheim.allegory.alliteration.almond.amaranth.amaretto.amaterasu.ambrosia.americano.amphiaraus.anago.anapest.ancho.anchovy.android.andromeda.anise.annal.annwn.ansible.antaeus.antenna.anthem.antigone.antimony.antistrophe.anubis.aoidos.aperol.aphelion.aphrodite.apogee.apollo.apple.apricot.aquamarine.aquavit.aqueduct.arabica.arachne.arawn.arbor.arborio.arc.arcadia.arch.archipelago.ares.argo.argon.argonaut.aria.ariadne.ark.arke.armagnac.array.arrow.artemis.arthur.artichoke.artifact.arugula.asgard.asgardia.ash.asparagus.aspen.assam.assonance.asteroid.astronaut.atalanta.athena.atlantis.atlas.atoll.atom.atropos.aubergine.augean.aura.aurora.avalon.avalonia.avocado.awning.axion.axle.azurite.bacchus.bagna.baharat.balder.ballad.balladeer.banana.banshee.baozi.bard.barge.barium.barley.barn.basalt.basil.basilisk.basmati.bastet.bastion.bay.bayleaf.beacon.beam.bean.bearing.beech.beetroot.behemoth.bellini.beowulf.bergamot.berth.beryl.beryllium.bifrost.biodome.birch.biscotti.bismuth.bisque.bit.bittern.blackberry.blast.blaster.blini.block.blodeuwedd.bloodstone.blossom.bluebell.blueberry.bolt.bomba.bonito.boom.borage.boson.botargo.bottarga.bouillon.boundary.bow.bower.bragi.bramble.bran.branch.brandy.branwen.breeze.brew.bridge.brigid.brioche.broccoli.brook.brulee.brunhild.brush.bucatini.buckler.buckwheat.buffer.bulkhead.bunting.burrata.burst.bus.busiris.butte.butter.buttercup.butterscotch.byte.cabbage.cabin.cacao.cachaca.cache.cacus.cadence.caesura.calamarata.calamari.calcite.caldera.calliope.calvados.calypso.cam.camellia.camelot.camembert.campari.canal.cannelloni.cannoli.canopy.cantaloupe.cantata.canticle.canvas.canyon.canzone.capacitor.capellini.caper.capon.cappelletti.cappuccino.capsule.caramel.cardamom.cardoon.carillon.carnaroli.carnation.carol.carrier.carrot.cascade.cashew.cassandra.cassis.castle.castor.cavatelli.caviar.cayenne.cedar.celaeno.celeriac.cell.centaur.cerberi.cerberus.cernunnos.ceryneian.cesium.ceto.ceylon.chaff.chaffinch.chai.chain.chalk.chamomile.champagne.chandra.channel.chanson.chanterelle.chard.charon.chartreuse.cheddar.cherry.chert.chervil.chestnut.chickweed.chicory.chili.chime.chimera.chimichurri.chimney.chip.chipotle.chirashi.chiron.chive.chocolate.chorale.chorizo.chorus.chronicle.chrysanthemum.chrysaor.chrysomallus.chutney.ciabatta.cibola.cider.cilantro.cinder.cinnamon.cipher.circe.circlet.circuit.cirque.cistern.citadel.citrine.citron.clementine.cliff.clio.clipper.cloak.clotho.cloud.clove.clover.cluster.coal.cobbler.cockaigne.cockpit.cocoa.coconut.codex.coffee.cog.cognac.coif.coil.col.colchis.collider.colony.combe.comet.compote.concerto.conchiglie.conduit.confit.console.consomme.consonance.continuum.contour.cookies.coordinate.core.coriander.cormorant.corona.coronet.cortado.corvette.cosmos.cottage.couplet.course.couscous.cove.cowl.cowslip.crab.craft.crag.cranberry.crane.crayon.cream.creme.crepe.cress.crocus.croissant.crosne.crown.cruiser.crumble.cryopod.cryosleep.crystal.cuchulainn.cuckoo.cucumber.cuirass.cumin.cupid.curlew.currant.current.curry.custard.cyborg.cycle.cyclops.cyclotron.cylinder.dactyl.daedalus.daemon.daffodil.dagda.dahlia.daiquiri.dais.daisy.dale.dam.dandelion.danu.daphne.darjeeling.dart.dashi.date.dawn.daydream.deck.deirdre.demeter.destroyer.dew.diadem.diary.dill.dimension.diode.diomedean.dionysus.ditalini.ditch.djinn.dock.doenjang.domain.donburi.donjon.door.doppio.dove.downlink.dreadnought.dream.drift.droid.dryad.dukkah.dulce.dumpling.dune.durga.dusk.dust.dyke.eagle.earlgrey.easel.echidna.echo.eclair.eclipse.ecliptic.edamame.eddy.edelweiss.edge.egret.einsteinium.elderflower.eldorado.electra.elegy.elm.elysium.ember.endive.enigma.enjambment.enkidu.envoi.eos.epigram.epistle.epode.erato.erinyes.eros.erymanthian.escargot.espresso.estuary.eumenides.euryale.eurybia.eurydice.eurytion.excalibur.exoplanet.fable.fafnir.falcon.fancy.farfalle.fate.feather.feldspar.fell.fence.fennel.fenrir.fenugreek.fermion.fern.fettuccine.fiddlehead.field.fig.finch.finn.fionn.firebird.firefly.fission.fizz.fjord.flake.flame.flare.flash.flicker.flint.flue.fluorite.flux.flywheel.focaccia.fog.folio.fondant.forge.fortress.foxglove.fragment.fraise.frame.frangipane.frappe.freesia.fregola.freighter.freya.frigate.frigg.frost.fudge.fugue.fumarole.furies.fusilli.fusion.gaia.galahad.galangal.galatea.galaxy.galette.galleon.gallium.ganache.ganesh.gannet.gantry.ganymede.garam.gardenia.garlic.garuda.gateway.gauntlet.gawain.gazebo.gear.gelato.gemelli.genmaicha.genoise.geranium.germ.germanium.geryon.geyser.ghazal.ghee.ghost.gilgamesh.ginger.gingko.ginnungagap.girder.glacier.glade.glaze.gleam.gleeman.glen.glimmer.glint.glitter.gloss.glow.gluon.gnocchi.gochujang.goldfinch.golem.goose.gooseberry.gorgon.gouda.governor.gradient.graeae.granary.granite.grapefruit.grappa.gratin.graviton.greave.grebe.gremolata.grenadine.grendel.grid.griffin.gruyere.guajillo.guava.gudrun.guinevere.gunkan.gwydion.gyoza.gyroscope.habanero.habitat.hades.hadron.haiku.hall.halloumi.halo.halva.hamachi.hangar.hanuman.harissa.harpies.harpy.harvest.hatch.hauberk.hawthorn.haze.hazel.hazelnut.heading.headland.heap.heart.hearth.heather.hecate.hedge.heimdall.hel.helheim.helios.helium.helix.helle.hellebore.helm.hemistich.hephaestus.hera.hermes.heron.hesperides.hestia.hibiscus.hippogriff.hirame.hive.hoisin.hojicha.hollandaise.hollow.holly.hologram.honey.honeycomb.honeysuckle.hood.hoopoe.horizon.horseradish.horus.hrothgar.hub.huckleberry.hue.huginn.hull.husk.hut.hyacinth.hydra.hydras.hylas.hymn.hyperborea.hypercube.hyperdrive.hyperion.hyperspace.hyssop.iamb.ibis.icarus.idas.idunn.idyll.igniter.igraine.ikura.indium.indra.inductor.infusion.injector.ink.inlet.inspiration.ion.iridium.iris.ishtar.isis.isolde.isotope.ivy.iwashi.izanagi.jackdaw.jackfruit.jalapeno.janus.jasmine.jason.jasper.javelin.jay.jet.jiaozi.jongleur.jonquil.jormungandr.jotunheim.journal.julep.jumpgate.juniper.juno.jupiter.kaffir.kale.kali.kampachi.karaage.karasumi.katsu.keel.keep.kefir.kelpie.kenning.kernel.kestrel.khinkali.kiln.kimchi.kingfisher.kinmedai.kirsch.kite.kitsune.kiwi.koan.kohlrabi.kombucha.koshihikari.kraken.krypton.kumquat.kvass.lachesis.lacquer.ladon.ladons.laertes.lager.lagoon.lake.lakshmi.lambic.lament.lance.lancelot.lander.lane.langoustine.lantern.lapis.lark.larkspur.lasagna.latte.laureate.laurel.lava.lavender.leaf.leda.leek.legend.lemon.lemonbalm.lemongrass.lemuria.lens.lentil.lepton.lernaean.lethe.letter.levee.lever.leviathan.lightyear.lily.lime.limerick.limoncello.linden.linguine.link.linnet.lir.lithium.lityerses.lobster.loch.lock.lodge.loki.loop.loquat.lotus.lovage.lugh.lullaby.lungo.luster.lychee.lynceus.lyonesse.lyricist.macadamia.macaron.macchiato.madai.madeleine.madrigal.magma.magnolia.magpie.mail.mainframe.maki.makrut.malachite.manannan.mango.manicotti.manor.manti.manticore.mantle.mantou.manuscript.maple.marble.marduk.margarita.marigold.marjoram.marquee.marrow.martini.marvel.marzipan.masago.masala.mascarpone.mast.matcha.matrix.mead.meadow.mech.medea.medusa.megaera.meleager.memoir.mentaiko.mercury.meringue.merlin.merlot.mesa.mesh.metaphor.meteor.meter.mezcal.mezzaluna.mica.midas.midgard.mill.mimir.mimosa.minerva.minotaur.minstrel.mint.minuet.miracle.mirin.mirror.miso.missive.mist.mjolnir.mocha.module.moira.mojito.molasses.mole.momo.monolith.moonbase.moonbeam.moonstone.moor.mopsus.mordred.morel.morgana.morpheus.morrigan.moss.mote.motet.mousse.mu.mulberry.muninn.muon.muse.muspelheim.mustard.myrtle.mystery.myth.nadir.naga.naiad.nanite.nanobot.narcissus.neapolitan.nebula.nectarine.needle.negroni.nemean.nemesis.neon.neptune.neptunium.nereid.nereus.nessus.nest.nestor.net.nettle.neutrino.nexus.niamh.nib.nibble.nibiru.niflheim.nightingale.nigiri.nike.niobe.njord.nocturne.node.nog.nori.norn.note.nougat.nova.nozzle.nuada.nutmeg.nyx.oak.oasis.oat.obelisk.oberon.obsidian.oceanid.oceanus.octave.octavo.ocypete.ode.odin.odysseus.oisin.okonomiyaki.olive.olympus.oni.onigiri.oolong.oracle.orange.orb.orbit.orbiter.orchard.orchid.oreads.orecchiette.oregano.orion.orpheus.orthros.orthrus.orzo.oscillator.osiris.osmium.osprey.ouroboros.outline.outpost.ouzo.oven.overture.owl.oyster.paccheri.packet.padron.page.palace.palette.palladium.palm.pan.pandan.pandora.panettone.pansotti.pansy.pantoum.papaya.pappardelle.paprika.papyrus.parable.paradox.parcae.parchment.parfait.parmesan.parsec.parsley.parsnip.particle.partridge.parvati.pasilla.passionfruit.pastel.pastis.patina.pavilion.pavlova.peach.peak.pear.pebble.pecan.pegasi.pegasus.pekoe.peleus.pelican.pelmeni.pen.pencil.penelope.penne.peony.pepper.peppermint.percival.peregrine.pergola.peridot.perigee.perihelion.perry.persephone.perseus.persillade.persimmon.pesto.petal.petrel.phase.pheasant.phoenix.pholus.phorcys.photon.phrixus.pickle.pierogi.pigment.pimento.pine.pineapple.ping.pinot.pipe.pipit.piquillo.pisco.pistachio.piston.pith.plane.plasma.plate.plover.plum.plume.pluto.plutonium.poblano.pod.podarge.poet.polenta.pollux.polyphemus.pomegranate.pomelo.pond.pontus.ponzu.pooka.pool.poplar.poppy.porcini.port.portal.porter.porthole.poseidon.positron.prairie.praline.prelude.primrose.prism.probe.profile.prometheus.prosciutto.prosecco.proteus.protocol.psalm.psyche.pudding.puffin.pulse.pumice.pumpkin.purslane.pwyll.pylon.pyrrhic.quadrant.quail.quark.quarto.quartz.quatrain.qubit.quetzalcoatl.queue.quill.quince.quinoa.quiver.radish.radium.radon.ragnarok.rain.rama.ramen.ramp.rampart.ramson.raspberry.ratatoskr.raven.ravioli.ray.reactor.realm.reaper.reed.reef.refrain.region.register.relay.relic.remnant.requiem.reservoir.residue.resistor.resonator.reverie.rhapsode.rhapsody.rhea.rhiannon.rhodium.rhododendron.rhubarb.rhyme.ricotta.riddle.ridge.riesling.rigatoni.rim.ring.risotto.ristretto.river.roast.robin.robusta.roc.rocket.rod.romesco.rondeau.rooibos.rook.root.rose.rosemary.rosewater.roundel.rover.rowan.rubidium.rum.rune.saba.saffron.saga.saison.sake.salmoriglio.salsa.salsify.sambal.sambuca.samphire.sancerre.sandpiper.sangria.sanma.sansho.saraswati.sashimi.sasquatch.satellite.satyr.sauternes.savanna.sawara.sazerac.scaffold.scalar.scallop.scansion.scepter.schnapps.schooner.scop.scorzonera.scotchbonnet.scroll.sector.seed.sekhmet.selene.selenite.selenium.selkie.sencha.sensor.sequoia.serenade.serrano.servo.sesame.sestina.sextet.shack.shade.shadow.shaft.shale.shallot.shambhala.shard.shed.sheen.sherbet.sherry.shield.shimmer.ship.shishito.shiso.shiva.shoyu.shrub.shumai.shuttle.sibyl.sif.signal.sigurd.silhouette.silo.simile.simurgh.singularity.siren.sita.skadi.skald.skiff.skuld.skylark.slant.slate.sleipnir.sling.slipstream.sliver.sloop.sluice.smithy.smoke.snowdrop.socket.sofrito.sonata.sonnet.soot.sorbet.sorrel.souffle.soul.soy.spaceport.spaghetti.spark.sparkle.sparrow.spear.speck.specter.speculoos.spelt.sphere.sphinx.sphinxes.spindle.spinel.spiral.spire.spirit.splinter.spoke.spondee.spore.spring.spritz.spruce.sriracha.ssamjang.stack.stanza.starbase.starlight.starling.starport.starship.stasis.station.steam.stellarator.steppe.stheno.stork.stracciatella.strawberry.stream.strontium.strophe.strozzapreti.strut.stylus.stymphalian.styx.subspace.sumac.summit.sunbeam.sunstone.supernova.surge.surya.susanoo.sushi.svartalfheim.swallow.swan.swarm.sycamore.syleus.synchrotron.tabard.tachyon.tagliatelle.tahini.takoyaki.taliesin.tamari.tamarind.tangerine.tanka.tanker.tapenade.tapioca.tarako.taranis.tare.tarn.tarragon.tartarus.telamon.telemetry.teleporter.tellurium.temaki.tempura.tengu.tensor.tent.tequila.tercet.teriyaki.terminal.tern.terraform.tesseract.tethys.thalassa.thalia.thallium.thaumas.themis.theseus.thistle.thor.thorium.thoth.threshold.throne.throttle.thrush.thruster.thule.thunderbird.thyme.tiamat.tiara.tide.tint.tintagel.tiphys.tiramisu.tirnanog.tisane.tisiphone.titan.tobiko.toccata.toddy.toffee.tofu.tokamak.tomatillo.tomato.tome.tone.tonka.tonkatsu.tor.tortellini.torus.tourmaline.tower.trace.track.transducer.transistor.treacle.trellis.triolet.tristan.triton.trochee.trofie.trope.troubadour.trouvere.truffle.trunk.truss.tug.tulip.tundra.tungsten.turbine.turmeric.turquoise.turret.twinkle.typhon.tyr.udon.ulysses.unagi.uni.unicorn.uplink.uramaki.urania.uranium.urd.urfa.uther.vale.valhalla.valkyrie.valve.vanadium.vanaheim.vanilla.vapor.vareniki.varnish.varuna.vector.veil.vellum.vent.venus.verbena.verdandi.verge.verjus.vermouth.verse.vessel.vesta.vestige.vialone.viewport.villanelle.vishnu.vodka.volcano.volta.volume.vortex.vulcan.wall.walnut.waltz.warbler.warpgate.wasabi.wash.watercress.watermelon.wave.waypoint.web.weir.well.wendigo.wheat.whisky.whisper.wiglaf.willow.wimple.window.wisteria.wonder.wonton.woodcock.woodpecker.word.wormhole.wraith.wren.wyrm.wyvern.xenon.yacht.yakitori.yama.yarrow.yeti.yew.yggdrasil.yokai.yuzu.zaatar.zabaglione.zenith.zephyr.zeus.zinnia.zircon.zirconium.ziti.zone.zucchini`.split(`.`);se.length*ce.length;var y=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`];function le(e){return typeof e==`string`&&y.includes(e)}o(`agent-bridge`);var ue=`agent: name already in use`,b=o(`cone-memory-budget`),de=4e3,fe=2e3,pe=1.25,me=v.memoryPath,he=`/sessions/index.json`,ge=4096,_e=/^## Auto-extracted/m,ve=`Consolidate the auto-extracted memory bullets below into a single tighter set of durable memories.
139
+
140
+ Rules:
141
+ - Output ONLY a single \`## Auto-extracted (consolidated)\` heading followed by markdown bullets.
142
+ - One fact per bullet. Drop duplicates and superseded facts. Keep the most recent / specific phrasing.
143
+ - Preserve concrete identifiers (file paths, URLs, IDs, names) verbatim.
144
+ - Be terse. Aim well under the original size.
145
+ - Do NOT add preamble, commentary, or any heading other than the single consolidated one.`;function x(e){return Math.round(de+fe*Math.log2((Number.isFinite(e)&&e>=0?e:0)+2))}function ye(e){let t=_e.exec(e);if(!t)return{header:e,autoExtracted:``};let n=t.index;return{header:e.slice(0,n),autoExtracted:e.slice(n)}}async function S(e){try{let t=await e.readFile(he,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);return Array.isArray(r)?r.length:0}catch{return 0}}async function be(e){let{header:t,autoExtracted:n}=ye(e.currentContent);if(!n.trim())return e.currentContent;let r=`You are a memory consolidation assistant. You are given a markdown file's "auto-extracted" section — a list of memory bullets accumulated across sessions of an AI coding assistant. Your job is to rewrite that section as a tighter, deduplicated set of durable memories that fits well within ${e.budget} characters.
146
+
147
+ <auto-extracted>
148
+ ${n}
149
+ </auto-extracted>`,i={role:`user`,content:[{type:`text`,text:ve}],timestamp:Date.now()},o=await a(e.model,{systemPrompt:r,messages:[i]},{apiKey:e.apiKey,maxTokens:ge,headers:e.headers,signal:e.signal});if(o.stopReason===`error`)throw Error(`Restructure call failed: ${o.errorMessage||`Unknown error`}`);let s=o.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
150
+ `).trim();if(!s)throw Error(`Restructure call returned empty content`);return`${t}${t.length===0||t.endsWith(`
151
+ `)?``:`
152
+ `}${s}\n`}async function xe(e){if(!e.model||!e.apiKey)return{restructured:!1,reason:`no-llm`};let t=e.memoryPath??me,n=``;try{let r=await e.vfs.readFile(t,{encoding:`utf-8`});n=typeof r==`string`?r:new TextDecoder().decode(r)}catch{return{restructured:!1,reason:`missing-file`}}let r=await S(e.vfs),i=x(r),a=i*pe;if(n.length<=a)return{restructured:!1,reason:`under-threshold`};b.info(`Cone memory over threshold — restructuring`,{size:n.length,budget:i,threshold:a,sessionCount:r});try{let r=await be({currentContent:n,budget:i,model:e.model,apiKey:e.apiKey,headers:e.headers,signal:e.signal});return await e.vfs.writeFile(t,r),b.info(`Cone memory restructured`,{before:n.length,after:r.length}),{restructured:!0}}catch(e){return b.warn(`Cone memory restructure failed — leaving appended content in place`,{error:e instanceof Error?e.message:String(e)}),{restructured:!1,reason:`error`}}}var C=o(`agentic-memory`),Se=`/shared/MEMORY.md`,Ce=1200,we=e=>[e.memoryPath],Te=e=>[`/sessions/`,`/shared/`,...oe(e)],Ee=`awk.cat.cp.cut.date.diff.du.echo.file.find.grep.head.jq.ls.mkdir.mount.mv.nl.od.printf.readlink.sed.sort.stat.tail.touch.tr.uniq.upskill.wc.xxd`.split(`.`),De=new Set([`writablePaths`,`visiblePaths`,`allowedCommands`]),Oe=new Set([`model`,`timeoutSeconds`,`thinkingLevel`]),ke=`medium`,w=3e4;function T(e){return e===`cone`?`memory-curator`:`memory-curator-${e}`}function Ae(e){let t=T(e);return je.test(t)?t:T(p)}var je=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;function Me(e){return`/scoops/agent-${Ae(e)}`}var Ne=Me(p);function Pe(e){return g({parentJid:null,folder:e?.folder??`cone`})}function Fe(e,t){if(t.root===v.root)return e;if(e===v.memoryPath)return t.memoryPath;if(e===`/workspace/skills`||e.startsWith(`/workspace/skills/`))return e;let n=`${v.root}/`;return e===v.root?t.root:e.startsWith(n)?`${t.root}/${e.slice(n.length)}`:e}function Ie(e,t){let n=`${h}/`,r=e=>e.some(e=>n.startsWith(e.endsWith(`/`)?e:`${e}/`)),i=e.map(e=>Fe(e,t));return r(e)&&!r(i)&&i.push(n),i}async function Le(e){try{if(e.signal?.aborted)return{ok:!1,reason:`aborted`,legacyFallbackSafe:!1};let t=Pe(e.cone),n=Me(e.cone?.folder??`cone`),r=await Re(e.vfs,t),i=N(e.sessionArchivePath);try{await qe(e.vfs,t.memoryPath,e.sessionArchivePath)}catch(e){return{ok:!1,reason:`snapshot: ${P(e)}`,legacyFallbackSafe:!0}}let a=Ye(r,Xe(Ze(r.promptTemplate,{MEMORY_PATH:i,SESSION_ARCHIVE_PATH:e.sessionArchivePath,SESSION_COUNT:String(e.sessionCount),BUDGET_CHARS:String(x(e.sessionCount)),SCRATCH_DIR:n,TODAY:e.today??new Date().toISOString().slice(0,10)}),n),e.sessionArchivePath,t,e.cone);e.signal&&(a.signal=e.signal);let o=await Qe(Promise.resolve().then(()=>e.spawn(a)),r.timeoutSeconds*1e3+w,e.signal);if(o.type===`timeout`)return C.warn(`Agentic memory wait timed out past the in-run bound + grace`,{timeoutSeconds:r.timeoutSeconds,graceMs:w}),{ok:!1,reason:`timeout`,legacyFallbackSafe:!1};if(o.type===`aborted`)return{ok:!1,reason:`aborted`,legacyFallbackSafe:!1};if(o.type===`error`)return{ok:!1,reason:P(o.error),legacyFallbackSafe:!0};if(o.result.exitCode!==0){let e=(o.result.finalText??``).startsWith(ue);return{ok:!1,reason:o.result.finalText||`exit-${o.result.exitCode}`,legacyFallbackSafe:!e}}return{ok:!0,report:o.result.finalText}}catch(e){return C.warn(`Agentic memory pass failed`,{error:P(e)}),{ok:!1,reason:P(e),legacyFallbackSafe:!1}}}async function Re(e,t=v){try{let n=await e.readFile(Se,{encoding:`utf-8`});return E(typeof n==`string`?n:new TextDecoder().decode(n),t)}catch(e){return C.warn(`Could not load valid MEMORY.md; using built-in default`,{error:P(e)}),E(ne,t)}}function E(e,t=v){let n=e.replace(/^\uFEFF/,``).replace(/\r\n?/g,`
153
+ `).match(/^---\s*\n([\s\S]*?)\n---\s*\n([\s\S]*)$/);if(!n?.[2].trim())throw Error(`MEMORY.md requires frontmatter and a prompt`);let r=Be(n[1]),i=O(r,`writablePaths`,we(t));if(i.length===0)throw Error(`writablePaths must not be empty`);k(i,`writablePaths`);let a=O(r,`visiblePaths`,Te(t));k(a,`visiblePaths`);let o=Ge(r.timeoutSeconds),s=We(r.model,`model`);return{writablePaths:i.map(e=>Fe(e,t)),visiblePaths:Ie(a,t),allowedCommands:[...new Set([...Ee,...O(r,`allowedCommands`,[])])],...s?{model:s}:{},thinkingLevel:ze(r.thinkingLevel),timeoutSeconds:o,promptTemplate:n[2].trim()}}function ze(e){if(e===void 0)return ke;if(typeof e!=`string`||!le(e))throw Error(`thinkingLevel must be one of ${y.join(`, `)}`);return e}function Be(e){let t={},n=e.split(`
154
+ `);for(let e=0;e<n.length;e+=1){let r=n[e];if(!r.trim()||r.trimStart().startsWith(`#`))continue;let i=r.match(/^([A-Za-z][A-Za-z0-9]*):\s*(.*)$/);if(!i)throw Error(`Invalid frontmatter line: ${r}`);let[,a,o]=i;if(De.has(a)){let r=Ve(n,e,o);t[a]=r.value,e=r.lastIndex}else if(Oe.has(a)&&o.trim())t[a]=D(o);else throw Error(`Unsupported or empty frontmatter field: ${a}`)}return t}function Ve(e,t,n){if(n.trim()){let e=n.trim();if(!e.startsWith(`[`)||!e.endsWith(`]`))throw Error(`Expected an array`);let r=e.slice(1,-1).trim();return{value:r?He(r):[],lastIndex:t}}let r=[],i=t;for(let n=t+1;n<e.length;n+=1){let t=e[n].match(/^\s+-\s+(.+)$/);if(!t)break;r.push(D(Ue(t[1]))),i=n}return{value:r,lastIndex:i}}function He(e){let t=[],n=0,r;for(let i=0;i<e.length;i+=1){let a=e[i];a===`"`||a===`'`?r=r===a?void 0:r??a:a===`,`&&!r&&(t.push(D(e.slice(n,i))),n=i+1)}if(r)throw Error(`Unclosed quoted value`);return t.push(D(e.slice(n))),t}function Ue(e){let t;for(let n=0;n<e.length;n+=1){let r=e[n];if(r===`"`||r===`'`)t=t===r?void 0:t??r;else if(r===`#`&&!t&&(n===0||/\s/.test(e[n-1])))return e.slice(0,n).trimEnd()}return e}function D(e){let t=e.trim();if(!t)throw Error(`Empty frontmatter value`);let n=t[0];if((n===`"`||n===`'`)&&t.at(-1)===n)return t.slice(1,-1);if(n===`"`||n===`'`)throw Error(`Unclosed quoted value`);return t}function O(e,t,n){let r=e[t];if(r===void 0)return[...n];if(!Array.isArray(r)||r.some(e=>!e))throw Error(`${t} is invalid`);return[...r]}function We(e,t){if(e!==void 0){if(typeof e!=`string`||!e)throw Error(`${t} is invalid`);return e}}function Ge(e){if(e===void 0)return 600;if(typeof e!=`string`)throw Error(`timeoutSeconds is invalid`);let t=Number(e);if(!Number.isFinite(t)||t<=0)throw Error(`timeoutSeconds must be positive`);return Math.min(t,Ce)}function k(e,t){if(e.some(e=>!e.startsWith(`/`)||e.includes(`\0`)||t===`writablePaths`&&e===`/`))throw Error(`${t} must contain absolute VFS paths`)}function A(e){return`/sessions/.curated/${e.slice(e.lastIndexOf(`/`)+1)}`}function j(e){return`/sessions/.curation/${e.slice(e.lastIndexOf(`/`)+1)}`}function M(e){return`${j(e)}/base.md`}function N(e){return`${j(e)}/draft.md`}function Ke(e){return`${j(e)}/status.json`}async function qe(e,t,n){let r=``;try{let n=await e.readFile(t,{encoding:`utf-8`});r=typeof n==`string`?n:new TextDecoder().decode(n)}catch{}await e.mkdir(j(n),{recursive:!0}),await e.writeFile(M(n),r),await e.writeFile(N(n),r)}function Je(e,t,n){let r=e.map(e=>e===t?n:e);return r.includes(n)?r:[...r,n]}function Ye(e,t,n,r,i){let a=e.model===`parent`||e.model===`cone`,o=M(n),s=N(n);return{cwd:r.root,writablePaths:Je(e.writablePaths,r.memoryPath,s),visiblePaths:[...e.visiblePaths,`${j(n)}/`],allowedCommands:e.allowedCommands,prompt:t,thinkingLevel:e.thinkingLevel,persistSession:!0,name:Ae(i?.folder??`cone`),...i?.jid?{parentJid:i.jid}:{},notifyOnComplete:!0,successReceiptPath:A(n),mergeOnSuccess:{targetPath:r.memoryPath,basePath:o,draftPath:s},outcomeReceiptPath:Ke(n),maxWallClockMs:e.timeoutSeconds*1e3,...!a&&e.model?{modelId:e.model}:{}}}function Xe(e,t){return t===Ne?e:e.replaceAll(Ne,t)}function Ze(e,t){let n=e;for(let[e,r]of Object.entries(t))n=n.replaceAll(`{{${e}}}`,r);return n}function Qe(e,t,n){return new Promise(r=>{let i=!1,a=e=>{i||(i=!0,clearTimeout(s),n?.removeEventListener(`abort`,o),r(e))},o=()=>a({type:`aborted`}),s=setTimeout(()=>a({type:`timeout`}),t);n?.addEventListener(`abort`,o,{once:!0}),e.then(e=>a({type:`result`,result:e}),e=>a({type:`error`,error:e}))})}function P(e){return e instanceof Error?e.message:String(e)}var F=`/sessions`,I=`/sessions/index.json`;async function L(e){try{let t=await e.readFile(I,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);return Array.isArray(r)?r:[]}catch{return[]}}function R(e){return`${F}/${e.filename}`}function z(e){let t=e,n=`Untitled`,r={},i=t.match(/^---\n([\s\S]*?)\n---\n+/);if(i){t=t.slice(i[0].length);let e=V(i[1],`cost`),a=V(i[1],`models`);e&&(r.cost=e),a&&(r.models=a);let o=i[1].match(/^cone:\s*(.+?)\s*$/m)?.[1];o&&(r.cone=o);let s=i[1].match(/^coneLabel:\s*(.+?)\s*$/m)?.[1];s&&(r.coneLabel=B(s)),/^memorySkipped:\s*true\s*$/m.test(i[1])&&(r.memorySkipped=!0);let c=i[1].match(/^title:\s*(.+?)\s*$/m);c&&(n=B(c[1]))}let a=t.match(/<!-- slicc:session-data\n([\s\S]*?)\n-->\n*/);if(a){try{let e=a[1].replace(/-- >/g,`-->`),t=JSON.parse(e);if(Array.isArray(t))return{title:n,messages:t,...r}}catch{}t=t.replace(/<!-- slicc:session-data\n[\s\S]*?\n-->\n*/,``)}return t=t.replace(/^#\s+[^\n]*\n+/,``),{title:n,messages:$e(t),...r}}function B(e){let t=e.trim();if(!t.startsWith(`"`))return t;try{let e=JSON.parse(t);if(typeof e==`string`)return e}catch{}return t.replace(/^"|"$/g,``)}function V(e,t){let n=RegExp(`^${t}:\\s*(.+?)\\s*$`,`m`).exec(e)?.[1];if(n)try{return JSON.parse(n)}catch{return}}function $e(e){let t=[],n=/^## (User|Assistant)\s*\n/gm,r=[],i;for(;(i=n.exec(e))!==null;)r.push({role:i[1]===`User`?`user`:`assistant`,start:i.index,bodyStart:i.index+i[0].length});for(let n=0;n<r.length;n++){let i=n+1<r.length?r[n+1].start:e.length,a=e.slice(r[n].bodyStart,i).trim();t.push({id:`frozen-${n}`,role:r[n].role,content:a,timestamp:0})}return t}function H(e){let t=``;for(let n of e){let e=n.role===`user`?`User`:`Assistant`,r=n.role===`user`?te(n.content):n.content;if(t+=`## ${e}\n${r}\n\n`,n.attachments?.length&&(t+=`Attachments:\n${n.attachments.map(e=>`- ${s(e)}`).join(`
155
+ `)}\n\n`),n.toolCalls)for(let e of n.toolCalls)t+=`### Tool: ${e.name}\nInput: ${JSON.stringify(e.input,null,2)}\nResult: ${e.result??``}\n\n`}return t}var et=e({PENDING_SESSION_ATTEMPT_LIMIT:()=>3,SESSIONS_INDEX_PATH:()=>I,curateFrozenSessionMemories:()=>q,enrichPendingSession:()=>Q,freezeConeSession:()=>K,listPendingEnrichments:()=>At,markSnapshotUnavailable:()=>Jt,processPendingSessions:()=>jt,readSessionsIndex:()=>L}),U=o(`session-freezer`),tt=4,W=2048,G=40,nt=`${F}/attachments`;async function K(e){let t=await vt(e.sessionStore,J(e));if(!t||t.messages.length<tt)return U.info(`Skipping freeze: session below threshold or missing`,{messageCount:t?.messages.length??0}),null;let n=Y(t.messages),r=e.mode??`full`,i=r===`full`&&!!(e.apiKey&&e.model);!e.agenticMemorySpawn&&e.memory!==`skip`&&await at(e,n,i);let a=await ot(e,n,i)||wt(t.messages);return await st(e,t,a,r,i?await rt(e,a):void 0,!!e.agenticMemorySpawn&&e.memory!==`skip`)}async function q(e,t){let n=Y(t.archive.messages),r;try{r=await Le({spawn:e.agenticMemorySpawn,vfs:e.vfs,sessionArchivePath:R(t),sessionCount:await S(e.vfs),...e.cone?{cone:e.cone}:{}})}catch(e){r={ok:!1,reason:e instanceof Error?e.message:String(e),legacyFallbackSafe:!1}}if(r.ok){let n=await Ut(e.vfs,t.filename);return await Pt(e.vfs,t.filename),n?(delete t.memoryPending,U.info(`Agentic memory pass completed`,{filename:t.filename}),n):(U.info(`Agentic memory pass completed; index entry already gone`,{filename:t.filename}),null)}return await Gt(e.vfs,t.filename,r.reason),r.legacyFallbackSafe?(U.warn(`Agentic memory pass failed after finishing — falling back to legacy extraction`,{filename:t.filename,reason:r.reason}),await at(e,n,!0),null):(U.warn(`Agentic memory pass unfinished — entry stays pending for boot catch-up`,{filename:t.filename,reason:r.reason,attemptLimit:3}),null)}async function rt(e,t){try{return it(await(e.pickIcon??(await i(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-DunO9KZO.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29]))).pickLucideIcon)({subject:`"${t}" — an archived chat session`})??void 0)}catch(e){U.warn(`Icon pick failed (freeze still proceeds)`,{error:e instanceof Error?e.message:String(e)});return}}function it(e){if(e)return l(e)?e:void 0}async function at(e,r,i){if(!i){U.info(`LLM unavailable — skipping memory extraction; freezing anyway`);return}let a=``;try{a=await t({messages:r,instruction:n,model:e.model,apiKey:e.apiKey,maxTokens:W,headers:e.headers})}catch(e){U.warn(`Memory extraction call failed (freeze still proceeds)`,{error:e instanceof Error?e.message:String(e)});return}if(!a.trim()||a.trim()===`NONE`){U.info(`Memory extraction returned no durable memories`);return}try{await Ot(e.vfs,_t(J(e)),a.trim(),`new-session`,{model:e.model,apiKey:e.apiKey,headers:e.headers}),U.info(`Memory extracted and appended on new-session`)}catch(e){U.warn(`Memory append failed`,{error:e instanceof Error?e.message:String(e)})}}async function ot(e,n,i){if(!i)return``;try{return Ct(await t({messages:n,instruction:r,model:e.model,apiKey:e.apiKey,maxTokens:G,headers:e.headers}))}catch(e){return U.warn(`Title generation call failed (using heuristic)`,{error:e instanceof Error?e.message:String(e)}),``}}async function st(e,t,n,r,i,a=!1){let o=new Date().toISOString(),s=crypto.randomUUID(),c=r===`quick`?`pending-${Et()}.md`:`${o.replace(/[:.]/g,`-`)}-${Tt(n)}.md`,l=ct(t.messages),u=J(e),d={cone:u,...u!==`cone`&&e.cone?.label?{coneLabel:e.cone.label}:{}},f={filename:c,sessionId:s,title:n,frozenAt:o,messageCount:t.messages.length,...l??{},...d,...i?{icon:i}:{},...r===`quick`?{pendingEnrichment:!0}:{},...a?{memoryPending:!0}:{},...e.memory===`skip`?{memorySkipped:!0}:{}};try{await X(e.vfs,F);let r=await dt(e.vfs,t.messages,c.replace(/\.md$/,``)),i={id:t.id,title:n,frozenAt:o,createdAt:t.createdAt,updatedAt:t.updatedAt,messageCount:t.messages.length,messages:r,...l??{},...d,...e.memory===`skip`?{memorySkipped:!0}:{}},a=St(i);return await e.vfs.writeFile(`${F}/${c}`,a),await kt(e.vfs,f),await e.vfs.flush(),U.info(`Cone session frozen`,{filename:c,title:n,cone:u,messageCount:t.messages.length}),{...f,archive:i}}catch(e){return U.warn(`Failed to write frozen session to VFS`,{error:e instanceof Error?e.message:String(e)}),null}}function ct(e){let t={total:0,input:0,output:0,cacheRead:0,cacheWrite:0},n=new Map,r=!1;for(let i of e){if(i.role!==`assistant`)continue;let{model:e,usage:a}=i;if(!e||!a||!ut(a))return null;let o=a.cost;r=!0,t.total+=o.total,t.input+=o.input,t.output+=o.output,t.cacheRead+=o.cacheRead,t.cacheWrite+=o.cacheWrite;let s=n.get(e)??{model:e,cost:0,turns:0,tokens:0};s.cost+=o.total,s.turns+=1,s.tokens+=a.input+a.output+a.cacheRead+a.cacheWrite,n.set(e,s)}return r?{cost:t,models:[...n.values()].sort((e,t)=>t.cost-e.cost)}:null}function lt(e){return typeof e==`number`&&Number.isFinite(e)}function ut(e){let{cost:t}=e;return[e.input,e.output,e.cacheRead,e.cacheWrite].every(lt)&&[t.input,t.output,t.cacheRead,t.cacheWrite,t.total].every(lt)}async function dt(e,t,n){let r={vfs:e,archiveDir:`${nt}/${n}`,copiedPaths:new Map,fileIndex:0},i=[];for(let e of t){if(!e.attachments?.some(mt)){i.push(e);continue}let t=[];for(let n of e.attachments)t.push(await ft(r,n));i.push({...e,attachments:t})}return i}async function ft(e,t){if(!mt(t))return t;let n=e.copiedPaths.get(t.path);if(n)return{...t,path:n};let r=await pt(e.vfs,t.path);if(!r)return gt(t);let i=t.name.replace(/[^A-Za-z0-9._-]+/g,`_`)||`attachment`,a=`${e.archiveDir}/${e.fileIndex++}-${i}`;return await X(e.vfs,e.archiveDir),await e.vfs.writeFile(a,r),e.copiedPaths.set(t.path,a),{...t,path:a}}async function pt(e,t){try{if(!await ht(e,t))return null;let n=await e.readFile(t,{encoding:`binary`});if(!(n instanceof Uint8Array))throw Error(`Expected binary attachment content at ${t}`);return n}catch{return null}}function mt(e){return typeof e.path==`string`&&e.path.startsWith(`/tmp/`)&&e.data===void 0&&e.text===void 0}async function ht(e,t){let n=t.split(`/`).slice(1);if(n.length<2||n[0]!==`tmp`||n.some(e=>!e||e===`.`||e===`..`))return!1;let r=`/`;for(let t=0;t<n.length;t+=1){let i=(await e.readDir(r)).find(e=>e.name===n[t]);if(!i)return!1;if(t===n.length-1)return i.type===`file`;if(i.type!==`directory`)return!1;r=r===`/`?`/${n[t]}`:`${r}/${n[t]}`}return!1}function gt(e){let{path:t,...n}=e;return{...n,error:e.error??`Archived attachment file is missing or unsafe to preserve.`}}function J(e){return e.cone?.folder||`cone`}function _t(e){return g({parentJid:null,folder:e}).memoryPath}async function vt(e,t){let n=f({folder:t});try{return await e.load(n)}catch(e){return U.warn(`Failed to load cone chat session`,{sessionId:n,error:e instanceof Error?e.message:String(e)}),null}}function Y(e){return e.map(e=>({role:e.role,content:[{type:`text`,text:e.content}],timestamp:e.timestamp}))}var yt=`<!-- slicc:session-data
156
+ `,bt=`
157
+ -->`;function xt(e){return e.map(e=>{let t={id:e.id,role:e.role,content:e.content,timestamp:e.timestamp};return e.attachments?.length&&(t.attachments=e.attachments),e.toolCalls?.length&&(t.toolCalls=e.toolCalls.map(e=>({id:e.id,name:e.name,input:e.input,...e.result===void 0?{}:{result:e.result},...e.isError?{isError:e.isError}:{}}))),e.source&&(t.source=e.source),e.channel&&(t.channel=e.channel),t})}function St(e){let t=(e.cost?`cost: ${JSON.stringify(e.cost)}\n`:``)+(e.models?`models: ${JSON.stringify(e.models)}\n`:``),n=(e.cone?`cone: ${e.cone}\n`:``)+(e.coneLabel?`coneLabel: ${JSON.stringify(e.coneLabel)}\n`:``)+(e.memorySkipped?`memorySkipped: true
158
+ `:``),r=`---\nid: ${e.id}\ntitle: ${JSON.stringify(e.title)}\nfrozenAt: ${e.frozenAt}\ncreatedAt: ${e.createdAt}\nupdatedAt: ${e.updatedAt}\nmessageCount: ${e.messageCount}\n`+t+n+`---
159
+
160
+ `,i=`${yt}${JSON.stringify(xt(e.messages)).replace(/-->/g,`-- >`)}${bt}\n\n`,a=`# ${e.title}\n\n`;return r+i+a+H(e.messages)}function Ct(e){let t=e.trim();return t=t.replace(/^["'`]+|["'`]+$/g,``).trim(),t=t.replace(/\s+/g,` `),t.length>80&&(t=t.slice(0,80).trimEnd()),t}function wt(e){let t=e.find(e=>e.role===`user`);if(!t?.content)return`untitled-session`;let n=t.content.trim().replace(/\s+/g,` `);return n.length>60?`${n.slice(0,60)}…`:n||`untitled-session`}function Tt(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,48)||`session`}function Et(){return`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`}function Dt(e){return e.startsWith(`pending-`)}async function X(e,t){try{await e.mkdir(t,{recursive:!0})}catch{}}async function Ot(e,t,n,r,i){let a=t,o=``;try{let t=await e.readFile(a,{encoding:`utf-8`});o=typeof t==`string`?t:new TextDecoder().decode(t)}catch(t){if(!(t instanceof c)||t.code!==`ENOENT`)throw t;await X(e,a.slice(0,a.lastIndexOf(`/`)))}let s=`## Auto-extracted (${new Date().toISOString().slice(0,10)}, ${r})`,l=`${o.length===0||o.endsWith(`
161
+ `)?``:`
162
+ `}\n${s}\n\n${n}\n`;await e.writeFile(a,o+l);try{await xe({vfs:e,memoryPath:a,model:i?.model,apiKey:i?.apiKey,headers:i?.headers,signal:i?.signal})}catch(e){U.warn(`Cone memory budget step threw (append already committed)`,{error:e instanceof Error?e.message:String(e)})}}async function kt(e,t){let n=[];try{let t=await e.readFile(I,{encoding:`utf-8`}),r=typeof t==`string`?t:new TextDecoder().decode(t),i=JSON.parse(r);Array.isArray(i)&&(n=i)}catch(e){if(!(e instanceof c)||e.code!==`ENOENT`)throw e}let r=[t,...n.filter(e=>e.filename!==t.filename)];await e.writeFile(I,JSON.stringify(r,null,2))}async function At(e){return(await L(e)).filter(e=>(e.pendingEnrichment===!0||e.memoryPending===!0)&&Z(e)<3)}async function jt(e){let t={attempted:0,completed:0};if(!e.model||!e.apiKey)return t;try{for(let t of await L(e.vfs))t.memoryPending===!0&&t.memoryFailed===void 0&&Z(t)>=3&&await Gt(e.vfs,t.filename,`catch-up retries exhausted (3)`);let n=await At(e.vfs);for(let r of n)try{let n=await Wt(e.vfs,r.filename);if(!n)continue;t.attempted+=1,await Q(e.vfs,n,{model:e.model,apiKey:e.apiKey,headers:e.headers})&&(t.completed+=1)}catch(e){U.warn(`Pending session catch-up attempt failed`,{filename:r.filename,error:e instanceof Error?e.message:String(e)})}}catch(e){U.warn(`Pending session catch-up failed`,{error:e instanceof Error?e.message:String(e)})}return t}function Z(e){let t=e.pendingAttemptCount;return typeof t==`number`&&Number.isInteger(t)&&t>0?t:0}async function Q(e,t,n){if(!t.pendingEnrichment&&!t.memoryPending)return null;let r=await It(e,t);if(r===null)return null;let i=Lt(t,r);if(i===null)return null;let a=t.memoryPending===!0&&n.skipMemory!==!0&&await Nt(e,t),o=a||t.memorySkipped===!0?{...n,skipMemory:!0}:n,s=await Rt(t,i,o);if(s===null)return null;let c=await Ft(o,s.newTitle);await zt(e,t,s.bullets,o);let l=await Vt(e,t,r,s.newTitle,c,n.skipMemory===!0);return l&&a&&(await Pt(e,t.filename),await Kt(e,l.filename),await Mt(e,t.filename)),l}async function Mt(e,t){for(let n of[M(`/sessions/${t}`),N(`/sessions/${t}`)])try{await e.rm(n)}catch{}}async function Nt(e,t){try{return await e.stat(A(`/sessions/${t.filename}`)),!0}catch{return!1}}async function Pt(e,t){try{await e.rm(A(`/sessions/${t}`))}catch{}}async function Ft(e,t){if(e.pickIcon)try{return await it(await e.pickIcon({subject:`"${t}" — an archived chat session`})??void 0)}catch(e){U.warn(`Enrichment icon pick failed (continuing without icon)`,{error:e instanceof Error?e.message:String(e)});return}}async function It(e,t){try{let n=await e.readFile(R(t),{encoding:`utf-8`});return typeof n==`string`?n:new TextDecoder().decode(n)}catch(e){return e?.code===`ENOENT`?U.info(`Pending archive missing — treating as already enriched`,{filename:t.filename}):U.warn(`Failed to read pending archive (entry stays pending)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),null}}function Lt(e,t){let n;try{n=z(t).messages}catch(t){return U.warn(`Failed to parse pending archive — leaving entry intact`,{filename:e.filename,error:t instanceof Error?t.message:String(t)}),null}return n.length===0?(U.info(`Pending archive has no messages — skipping enrichment`,{filename:e.filename}),null):Y(n)}async function Rt(e,i,a){let o=``;if(!a.skipMemory)try{o=await t({messages:i,instruction:n,model:a.model,apiKey:a.apiKey,maxTokens:W,headers:a.headers})}catch(t){return U.warn(`Enrichment memory call failed (entry stays pending)`,{filename:e.filename,error:t instanceof Error?t.message:String(t)}),null}let s=``;try{s=Ct(await t({messages:i,instruction:r,model:a.model,apiKey:a.apiKey,maxTokens:G,headers:a.headers}))}catch(t){return U.warn(`Enrichment title call failed (entry stays pending)`,{filename:e.filename,error:t instanceof Error?t.message:String(t)}),null}return s?{bullets:o,newTitle:s}:(U.info(`Enrichment title call returned empty — entry stays pending`,{filename:e.filename}),null)}async function zt(e,t,n,r){let i=n.trim();if(!(!i||i===`NONE`))try{await Ot(e,_t(t.cone||`cone`),i,`pending-enrichment`,{model:r.model,apiKey:r.apiKey,headers:r.headers})}catch(e){U.warn(`Enrichment memory append failed (continuing with title rewrite)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)})}}function Bt(e,t,n,r,i){let a=r??e.icon;return{filename:t,title:n,frozenAt:e.frozenAt,messageCount:e.messageCount,...e.cost?{cost:e.cost}:{},...e.models?{models:e.models}:{},...e.cone?{cone:e.cone}:{},...e.coneLabel?{coneLabel:e.coneLabel}:{},...e.sessionId?{sessionId:e.sessionId}:{},...a?{icon:a}:{},...e.completeSnapshotUnavailable?{completeSnapshotUnavailable:!0}:{},...i&&e.memoryPending?{memoryPending:!0}:{},...e.memorySkipped?{memorySkipped:!0}:{}}}async function Vt(e,t,n,r,i,a=!1){let o=R(t),s=Dt(t.filename),c=s?r:t.title,l=s?`${t.frozenAt.replace(/[:.]/g,`-`)}-${Tt(r)}.md`:t.filename,u=`${F}/${l}`;if(s)try{await X(e,F),await e.writeFile(u,Ht(n,c))}catch(e){return U.warn(`Enrichment write failed (entry stays pending)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),null}let d=Bt(t,l,c,i,a);try{await qt(e,t.filename,d)}catch(e){return U.warn(`Enrichment index update failed (entry may stay pending)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),null}if(u!==o)try{await e.rm(o)}catch(e){U.info(`Stale pending archive cleanup failed (harmless)`,{oldPath:o,error:e instanceof Error?e.message:String(e)})}try{await e.flush()}catch{}return U.info(`Pending session enriched`,{oldFilename:t.filename,newFilename:l,title:c}),d}function Ht(e,t){let n=e.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);if(!n)return e;let r=n[1].replace(/^title:\s*.+$/m,`title: ${JSON.stringify(t)}`),i=n[2];return i=i.replace(/^#\s+[^\n]*$/m,`# ${t}`),`---\n${r}\n---\n${i}`}var $=Promise.resolve();async function Ut(e,t){let n=null,r=async()=>{let r=await L(e),i=r.findIndex(e=>e.filename===t);if(i===-1)return;let{memoryPending:a,pendingEnrichment:o,pendingAttemptCount:s,memoryFailed:c,...l}=r[i],u={...l,memoryCuratedAt:new Date().toISOString()},d=r.slice();d[i]=u,await e.writeFile(I,JSON.stringify(d,null,2)),await e.flush(),n=u},i=$.then(r,r);$=i.then(()=>void 0,()=>void 0);try{await i}catch(e){U.warn(`Failed to clear agentic memory pending marker`,{filename:t,error:e instanceof Error?e.message:String(e)})}return n}async function Wt(e,t){let n=null,r=async()=>{let r=await L(e),i=r.findIndex(e=>e.filename===t);if(i===-1)return;let a=r[i];if(!a.pendingEnrichment&&!a.memoryPending)return;let o=Z(a);if(o>=3)return;n={...a,pendingAttemptCount:o+1};let s=r.slice();s[i]=n,await e.writeFile(I,JSON.stringify(s,null,2)),await e.flush()},i=$.then(r,r);return $=i.then(()=>void 0,()=>void 0),await i,n}async function Gt(e,t,n){let r=async()=>{let r=await L(e),i=r.findIndex(e=>e.filename===t);if(i===-1)return;let a=r.slice();a[i]={...r[i],memoryFailed:n.slice(0,300)},await e.writeFile(I,JSON.stringify(a,null,2)),await e.flush()},i=$.then(r,r);$=i.then(()=>void 0,()=>void 0);try{await i}catch(e){U.warn(`Failed to record curator failure in sessions index`,{filename:t,error:e instanceof Error?e.message:String(e)})}}async function Kt(e,t){let n=async()=>{let n=await L(e),r=n.findIndex(e=>e.filename===t);if(r===-1)return;let{memoryFailed:i,...a}=n[r],o=n.slice();o[r]={...a,memoryCuratedAt:new Date().toISOString()},await e.writeFile(I,JSON.stringify(o,null,2)),await e.flush()},r=$.then(n,n);$=r.then(()=>void 0,()=>void 0);try{await r}catch(e){U.warn(`Failed to record curator completion in sessions index`,{filename:t,error:e instanceof Error?e.message:String(e)})}}async function qt(e,t,n){let r=async()=>{let r=[];try{let t=await e.readFile(I,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),i=JSON.parse(n);Array.isArray(i)&&(r=i)}catch(e){if(!(e instanceof c)||e.code!==`ENOENT`)throw e}let i=r.findIndex(e=>e.filename===t),a;i===-1?a=[n,...r.filter(e=>e.filename!==n.filename)]:(a=r.slice(),a[i]=n,a=a.filter((e,t)=>t===i||e.filename!==n.filename)),await e.writeFile(I,JSON.stringify(a,null,2))},i=$.then(r,r);return $=i.then(()=>void 0,()=>void 0),i}async function Jt(e,t){let n=async()=>{let n=[];try{let t=await e.readFile(I,{encoding:`utf-8`}),r=typeof t==`string`?t:new TextDecoder().decode(t),i=JSON.parse(r);Array.isArray(i)&&(n=i)}catch(e){if(!(e instanceof c)||e.code!==`ENOENT`)throw e;return}if(!n.find(e=>e.filename===t))return;let r=n.map(e=>e.filename===t?{...e,completeSnapshotUnavailable:!0}:e);await e.writeFile(I,JSON.stringify(r,null,2))},r=$.then(n,n);return $=r.then(()=>void 0,()=>void 0),r}export{jt as a,I as c,L as d,v as f,Jt as i,R as l,ie as m,Q as n,et as o,ae as p,K as r,H as s,q as t,z as u};
@@ -1 +1 @@
1
- import{n as e}from"./feature-flags-ByMXaIc4.js";import{h as t,n,t as r}from"./tray-runtime-config-Bpo7AZhY.js";import{l as i,u as a}from"./main-BK-7ArIz.js";var o=3e3;async function s(t,n){let r=i(n.storage);try{let i=new URL(`/api/flags`,`${n.workerBaseUrl.replace(/\/+$/,``)}/`);i.searchParams.set(`float`,t);let s=await c(i.toString(),n.fetchImpl??fetch,n.timeoutMs??o);if(!s)return;a(r,t,s),e(t,s)}catch{}}async function c(e,t,n){let r=new AbortController,i;try{let a=new Promise(e=>{i=setTimeout(()=>{r.abort(),e(null)},n)}),o=t(e,{cache:`no-store`,headers:{Accept:`application/json`},signal:r.signal}).then(async e=>e.ok?l(await e.json()):null).catch(()=>null);return await Promise.race([o,a])}catch{return null}finally{i!==void 0&&clearTimeout(i)}}function l(e){if(!u(e))return null;let t=e.flags;return!u(t)||Object.values(t).some(e=>typeof e!=`string`)?null:t}function u(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function d(e,t){return s(e,{workerBaseUrl:f(t),storage:t.storage})}function f(e){let i=p(e.storage),a=t(e.envBaseUrl??null);if(i)return i;if(a)return a;if(!e.isDev)try{let t=new URL(e.locationHref);if(t.protocol===`http:`||t.protocol===`https:`)return t.origin}catch{}return e.isDev?n:r}function p(e){try{return t(e?.getItem(`slicc.trayWorkerBaseUrl`)??null)}catch{return null}}export{d as refreshFeatureFlagsForPage};
1
+ import{n as e}from"./feature-flags-ByMXaIc4.js";import{h as t,n,t as r}from"./tray-runtime-config-CluPgaPA.js";import{n as i,r as a}from"./main-CDW7cA9Q.js";var o=3e3;async function s(t,n){let r=i(n.storage);try{let i=new URL(`/api/flags`,`${n.workerBaseUrl.replace(/\/+$/,``)}/`);i.searchParams.set(`float`,t);let s=await c(i.toString(),n.fetchImpl??fetch,n.timeoutMs??o);if(!s)return;a(r,t,s),e(t,s)}catch{}}async function c(e,t,n){let r=new AbortController,i;try{let a=new Promise(e=>{i=setTimeout(()=>{r.abort(),e(null)},n)}),o=t(e,{cache:`no-store`,headers:{Accept:`application/json`},signal:r.signal}).then(async e=>e.ok?l(await e.json()):null).catch(()=>null);return await Promise.race([o,a])}catch{return null}finally{i!==void 0&&clearTimeout(i)}}function l(e){if(!u(e))return null;let t=e.flags;return!u(t)||Object.values(t).some(e=>typeof e!=`string`)?null:t}function u(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function d(e,t){return s(e,{workerBaseUrl:f(t),storage:t.storage})}function f(e){let i=p(e.storage),a=t(e.envBaseUrl??null);if(i)return i;if(a)return a;if(!e.isDev)try{let t=new URL(e.locationHref);if(t.protocol===`http:`||t.protocol===`https:`)return t.origin}catch{}return e.isDev?n:r}function p(e){try{return t(e?.getItem(`slicc.trayWorkerBaseUrl`)??null)}catch{return null}}export{d as refreshFeatureFlagsForPage};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/extension-bridge-transport-D3PItLFo.js","assets/logger-DDBAeTLF.js","assets/pending-request-table-Dgn6qYdL.js","assets/lick-ws-bridge-CBO4U0Rd.js","assets/logger-BoSvu4mW.js","assets/tray-leader-BkvHMG47.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/proxied-fetch-CFWkfPNA.js","assets/preload-helper-Czpn1I53.js","assets/base64-DJRlyqZu.js","assets/src-CAWTvdAa.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/api-endpoint-GRCyib6X.js","assets/runtime-env-CgsZ7LTp.js","assets/runtime-env-E-i2SW1s.js","assets/tray-runtime-config-CluPgaPA.js","assets/messages-BD4p8GuF.js","assets/db-cKsBsMMN.js","assets/cdp-CV7RtjZN.js","assets/navigation-watcher-CUyfUWfd.js","assets/handoff-link-BzmwBKCE.js","assets/remote-cdp-transport-CgOXLjZ8.js","assets/tray-sync-protocol-BZ5yhJH9.js","assets/main-cherry-DM457LUs.js","assets/synthetic-cdp-transport-Ds83IPjw.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{c as n,o as r,s as i}from"./src-CAWTvdAa.js";import"./proxied-fetch-CFWkfPNA.js";import{t as a}from"./runtime-env-Dlaokqg1.js";import{a as o,o as s,s as c}from"./api-endpoint-GRCyib6X.js";import"./runtime-env-CgsZ7LTp.js";import"./messages-BD4p8GuF.js";import{a as l,c as u,s as d,t as f}from"./tray-runtime-config-CluPgaPA.js";import{t as p}from"./setup-sudo-B0OWsay7.js";var m=`role`;function h(e){try{let t=new URL(e);return`${t.protocol===`wss:`?`https:`:`http:`}//${t.host}`}catch{return null}}function g(e){try{let t=new URL(e);return`${t.protocol}//${t.host}/licks-ws`}catch{return null}}function _(e){let t;try{t=new URLSearchParams(e)}catch{return null}let a=t.get(n),o=t.get(i);if(!a||!o||!/^wss?:\/\//.test(a))return null;let s=t.get(m),c=s===`leader`||s===`follower`?s:null;return{url:a,subprotocol:`${r}${o}`,token:o,apiBaseUrl:h(a),lickWsUrl:g(a),role:c}}function v(e,t,n){if(t){try{if(new URL(e).searchParams.has(`detached`))return`extension-detached`}catch{}return`extension`}try{let t=new URL(e);if(t.searchParams.get(`connect`)===`1`)return`connect`;if(t.searchParams.get(`runtime`)===`hosted-leader`)return`hosted-leader`;if(t.searchParams.get(`cherry`)===`1`)return`cherry`;let r=n===void 0?typeof window<`u`?window.localStorage:null:n;return d(e,r)?`follower`:b(t)?`electron-overlay`:`standalone`}catch{return`standalone`}}function y(e,t){return e===`electron-overlay`||e===`hosted-leader`||e===`standalone`&&t}function b(e){return e.pathname===`/electron`||e.pathname===`/electron/`||e.searchParams.get(`runtime`)===`electron-overlay`}t(`stale-asset`);var x=`slicc-stale-asset-reload`;function S(e,t){if(typeof BroadcastChannel!=`function`)return()=>{};let n=new BroadcastChannel(x),r=n=>{let r=n.data;r?.type===`stale-asset-reload`&&r.instanceId===e&&t(r.replayTurn===!0)};return n.addEventListener(`message`,r),()=>{n.removeEventListener(`message`,r),n.close()}}var C=`slicc:stale-asset-reloaded-at`,w=6e4,T=`slicc:stale-asset-replay`;function E(e=window.sessionStorage){try{e.setItem(T,`1`)}catch{}}function D(e=window.sessionStorage){try{return e.getItem(T)===`1`&&(e.removeItem(T),!0)}catch{return!1}}function O(){return{reload:()=>window.location.reload(),storage:window.sessionStorage,now:()=>Date.now(),windowMs:w,storageKey:C}}function k(e,t,n){return e===null||t-e>=n}function A(e=O()){let t;try{t=e.storage.getItem(e.storageKey)}catch{return!1}let n=t===null?null:Number(t),r=n!==null&&Number.isFinite(n)?n:null,i=e.now();if(!k(r,i,e.windowMs))return!1;try{e.storage.setItem(e.storageKey,String(i))}catch{return!1}return e.reload(),!0}var j=null,M=null;function N(e){j||(M={...O(),...e},j=e=>{A(M)&&e.preventDefault()},window.addEventListener(`vite:preloadError`,j))}var P=null;function F(e){return P||(P=S(e,e=>{e&&E(),A(M??void 0)}),P)}var I=`slicc-cdp-superseded-banner`;function L(e){if(e.getElementById(I))return;let t=e.createElement(`div`);t.id=I,t.setAttribute(`role`,`alert`),t.textContent=`Another SLICC tab or window has taken control of this browser instance. Only one tab can drive the browser per instance — close the other tabs, then reload this page to resume.`,t.style.cssText=[`position:fixed`,`top:0`,`left:0`,`right:0`,`z-index:2147483647`,`padding:10px 16px`,`background:#b3261e`,`color:#fff`,`font:13px/1.4 system-ui,sans-serif`,`text-align:center`,`box-shadow:0 1px 4px rgba(0,0,0,0.3)`].join(`;`),e.body.appendChild(t)}function R(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function z(e){let t;try{t=new URLSearchParams(e)}catch{return null}if(t.get(`slicc`)!==`leader`)return null;let n=t.get(`ext`);return n?{extensionId:n}:null}var B=[100,200,400,800,1600];async function V(e,t,n,r=B,i=e=>new Promise(t=>setTimeout(t,e))){let a=r.length+1,o=null;for(let s=0;s<a;s++)try{await e.connect(t),s>0&&n.info(`CDP bridge connect succeeded after retry`,{attempt:s+1});return}catch(e){o=e,s<r.length&&await i(r[s]??0)}n.warn(`Initial CDP connect failed after retries; worker-forwarded commands will retry on demand`,o instanceof Error?o.message:String(o))}async function H(t,n,r){let{ExtensionBridgeTransport:i}=await e(async()=>{let{ExtensionBridgeTransport:e}=await import(`./extension-bridge-transport-D3PItLFo.js`);return{ExtensionBridgeTransport:e}},__vite__mapDeps([0,1,2])),{mapDiscoveryPayloadToLickEvent:a,mapNavigatePayloadToLickEvent:o}=await e(async()=>{let{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}=await import(`./lick-ws-bridge-CBO4U0Rd.js`);return{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}},__vite__mapDeps([3,1,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])),s=null,c=[],l=!1,u=e=>{s=e;for(let t of c)e.sendForwardedLick(t);c.length=0},d=e=>{if(e){if(s){s.sendForwardedLick(e);return}c.length>=50&&(c.shift(),l||(l=!0,r.warn(`extension-bridge lick buffer overflow (cap 50); dropping oldest pending licks until the kernel client attaches`))),c.push(e)}},f=new t(new i({extensionId:n,onLick:e=>{d(o(e))},onDiscovery:e=>{d(a(e))},onOpenSettings:()=>{globalThis.dispatchEvent(new CustomEvent(`slicc:open-settings-from-panel`))}}));return await V(f,void 0,r),{browser:f,attachLickForwardingClient:u}}async function U(t){let{runtimeMode:n,envBaseUrl:r,window:i,log:d,sleep:m}=t,h=n===`electron-overlay`;d.info(`setting up standalone page runtime (BrowserAPI + CDP)`,{runtimeMode:n});let{BrowserAPI:g}=await e(async()=>{let{BrowserAPI:e}=await import(`./cdp-CV7RtjZN.js`);return{BrowserAPI:e}},__vite__mapDeps([19,1,2,4,20,21,10,22,23]));await p({log:d});let v,b,x,S=null,C=null,w=null,T=null,E,D=n===`cherry`?null:z(i.location.search),O=!!D&&a(),k=n===`cherry`||O?null:_(i.location.search);k?.apiBaseUrl&&(S=k.apiBaseUrl,c(k.apiBaseUrl),C=k.token,o(k.token)),k?.lickWsUrl&&(w=k.lickWsUrl);let A=n===`cherry`||O||k!==null,j=await l(),M=y(n,j!==null)?f:null;if(await u({locationHref:i.location.href,storage:i.localStorage,envBaseUrl:r,defaultWorkerBaseUrl:M,runtimeConfigFetcher:async()=>j}),n===`cherry`){let{setupCherryFollower:t}=await e(async()=>{let{setupCherryFollower:e}=await import(`./main-cherry-DM457LUs.js`);return{setupCherryFollower:e}},__vite__mapDeps([24,1,10,2,19,4,20,21,22,23,25])),n=await t();v=n.browser,b=n.joinUrl,x=n.transport}else if(D&&a()){d.info(`Routing CDP through the extension bridge (leader tab)`);let e=await H(g,D.extensionId,d);v=e.browser,E=e.attachLickForwardingClient,T=D.extensionId,s(D.extensionId)}else{v=new g,k&&d.info(`Routing CDP through local standalone bridge`,{url:k.url,role:k.role??`(unset)`});let e=k?{url:k.url,protocols:k.subprotocol}:void 0;k?.role===`follower`?(d.info(`Skipping CDP connect for follower overlay tab`),v.primeConnectOptions(e)):(await V(v,e,d,void 0,m),v.setCdpSupersededHandler(()=>L(i.document)))}let N=v.getTransport();return globalThis.__slicc_browser=v,{browser:v,realCdpTransport:N,hasLocalCdpSurface:A,cherryJoinUrl:b,cherryTransport:x,instanceId:R(),isElectronOverlay:h,localApiBaseUrl:S,bridgeToken:C,localLickWsUrl:w,extensionDelegateId:T,attachLickForwardingClient:E}}export{F as a,_ as c,A as i,U as n,N as o,D as r,v as s,z as t};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sudo-C9n-aAFC.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/proxied-fetch-CFWkfPNA.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/base64-DJRlyqZu.js","assets/src-CAWTvdAa.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/api-endpoint-GRCyib6X.js","assets/runtime-env-CgsZ7LTp.js","assets/runtime-env-E-i2SW1s.js","assets/quick-llm-DunO9KZO.js","assets/account-store-B_euqvU1.js","assets/claude-model-version-C0HLsjny.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-BxrUfzom.js","assets/libesm-BypnjKEL.js","assets/float-topology-BYb7rxY5.js","assets/secret-topology-BE7Eyd3P.js","assets/secrets-bridge-client-H8-Z1RVR.js","assets/port-bridge-client-Cti-DmEY.js","assets/image-markers-CxJ9ZBgw.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-Drh9RBhg.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-CgBMwna8.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-ZLR7gmJ4.js","assets/page-approval-service-Cy54wL5s.js"])))=>i.map(i=>d[i]);
2
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./preload-helper-Czpn1I53.js";var n=e({setupSudoExtension:()=>i,setupSudoStandalone:()=>r});async function r(e){let{installSudoTestHook:n}=await t(async()=>{let{installSudoTestHook:e}=await import(`./sudo-C9n-aAFC.js`);return{installSudoTestHook:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]));n()}async function i(e){let{installPanelSudoResponder:n}=await t(async()=>{let{installPanelSudoResponder:e}=await import(`./sudo-C9n-aAFC.js`);return{installPanelSudoResponder:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]));n()}export{n,r as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";function t(e,t){return e===t||e.startsWith(t===`/`?`/`:`${t}/`)}var n=`/.metadata.json`;function r(e){return e.entries&&delete e.entries[n],e}function i(e,n,i){let a=n.entries??{},o={...e.entries??{}};`/`in a&&(o[`/`]=a[`/`]);for(let e of i.paths)e in a?o[e]=a[e]:delete o[e];for(let e of i.prefixes){for(let n of Object.keys(o))t(n,e)&&delete o[n];for(let n of Object.keys(a))t(n,e)&&(o[n]=a[n])}let{entries:s,...c}=n;return r({...c,entries:o})}var a=e({makeOpfsProbe:()=>m,repairOpfsMetadataSidecar:()=>g,repairSidecarDocument:()=>u,resolveWithSidecarRepair:()=>h}),o=61440,s=16384,c=32768,l=40960;async function u(e,t,n){let r={kindFixed:[],sizesFixed:0,dropped:0,selfEntryDropped:!1,inosReassigned:0,nlinksFixed:0,changed:!1},i=e.entries??{};for(let[e,a]of Object.entries(i)){if(n?.(),e===`/`||typeof a!=`object`||!a)continue;if(e===`/.metadata.json`){delete i[e],r.selfEntryDropped=!0,r.changed=!0;continue}let s=a,c=(s.mode??0)&o;if(c===l){f(s,r);continue}let u=await t(e);if(u.kind===`missing`){delete i[e],r.dropped+=1,r.changed=!0;continue}f(s,r),p(e,s,c,u,r)}return d(i,r),r}function d(e,t){let n=0;for(let t of Object.values(e)){let e=t;typeof e?.ino==`number`&&(n=Math.max(n,e.ino)),typeof e?.data==`number`&&(n=Math.max(n,e.data))}let r=n+1,i=new Set;for(let[n,a]of Object.entries(e)){if(typeof a!=`object`||!a)continue;let e=a;if(n===`/`){typeof e.ino==`number`&&i.add(e.ino);continue}let o=e.ino;if(typeof o==`number`&&o!==0&&!i.has(o)){i.add(o);continue}e.ino=r,e.data=r+1,i.add(r),r+=2,t.inosReassigned+=1,t.changed=!0}}function f(e,t){e.nlink||(e.nlink=1,t.nlinksFixed+=1,t.changed=!0)}function p(e,t,n,r,i){if(n===c&&r.kind===`directory`){t.mode=((t.mode??0)&511||493)|s,i.kindFixed.push(`${e} file→dir`),i.changed=!0;return}if(n===s&&r.kind===`file`){t.mode=((t.mode??0)&511||420)|c,t.size=r.size,i.kindFixed.push(`${e} dir→file`),i.changed=!0;return}n===c&&r.kind===`file`&&typeof t.size==`number`&&t.size!==r.size&&(t.size=r.size,i.sizesFixed+=1,i.changed=!0)}function m(e){return async t=>{let n=t.split(`/`).filter(Boolean),r=e;for(let e=0;e<n.length-1;e+=1)try{r=await r.getDirectoryHandle(n[e])}catch{return{kind:`missing`}}let i=n[n.length-1];if(i===void 0)return{kind:`directory`};try{return{kind:`file`,size:(await(await r.getFileHandle(i)).getFile()).size}}catch{}try{return await r.getDirectoryHandle(i),{kind:`directory`}}catch{return{kind:`missing`}}}}async function h(e,t,n){try{return await e()}catch(r){let i=null;try{i=await t()}catch{}if(!i?.changed)throw r;return n(i),await e()}}async function g(e,t){let n;try{let t=await e.getFileHandle(`.metadata.json`),r=JSON.parse(await(await t.getFile()).text());if(!r||typeof r!=`object`||!r.entries)return null;n=r}catch{return null}let r=await u(n,m(e),t);if(!r.changed)return r;let i=await(await e.getFileHandle(`.metadata.json`,{create:!0})).createWritable();return await i.write(JSON.stringify(n)),await i.close(),r}export{r as i,a as n,i as r,m as t};
@@ -1,5 +1,5 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{n,r}from"./path-utils-DNJG-zQf.js";import{t as i}from"./types-idfTVsM8.js";import"./fs-DKRiXKHo.js";import{d as a,i as o,m as s,n as c}from"./sudoers-KgJRnN4b.js";const l=t(`sudo:timeout`),u={"user-timeout":`no response from the user within 5 minutes. This is a TIMEOUT, not a denial — the user was not there to answer. Do not retry this action; report that the approval request went unanswered and wait for the user before trying again.`,"cone-timeout":`no response from the cone agent within 5 minutes. This is a TIMEOUT, not a denial — no human was ever prompted, the cone simply never resolved the request. Do not retry this action; report that the escalation went unanswered and continue with work that does not need it.`};function d(e){return u[e]}function f(e=`user-timeout`){return{decision:`deny`,reason:e}}function p(e,t){let n=t.decision===`deny`?t.reason:void 0;return n?`${e}: approval request timed out — ${d(n)}`:`${e}: approval denied`}function m(e,t={}){let n=t.timeoutMs??3e5;if(!Number.isFinite(n)||n<=0)return e;let r=t.setTimer??((e,t)=>setTimeout(e,t)),i=t.clearTimer??(e=>clearTimeout(e));return{requestApproval(t,a){return new Promise(o=>{let s=new AbortController,c=()=>s.abort();a?.signal?.addEventListener(`abort`,c,{once:!0});let u=!1,d=e=>{u=!0,a?.signal?.removeEventListener(`abort`,c),o(e)},p=r(()=>{u||(l.warn(`sudo approval timed out — failing closed`,{kind:t.kind,detail:t.detail,timeoutMs:n}),s.abort(),d(f(`user-timeout`)))},n),m=e=>{if(u){l.warn(`sudo decision arrived after timeout — discarded`,{kind:t.kind,detail:t.detail,decision:e.decision});return}i(p),d(e)};e.requestApproval(t,{signal:s.signal}).then(m,e=>{l.warn(`sudo broker threw — denying`,{error:e instanceof Error?e.message:String(e)}),m({decision:`deny`})})})}}}const h=t(`sudo:fs`),g=Symbol.for(`slicc.fs.monkeypatchUnsafe`),_=`${c}/granted`;function v(e){return p(`sudo`,e)}const y=[`readFile`,`readTextFile`,`readDir`,`exists`,`stat`],b=[`writeFile`],x=[`mkdir`,`rm`];async function S(e,t,n,a){let o=s(a);if(!o)return;let l=t(),u={pattern:o,nopasswd:!0,regex:r(o)};(n===`read`?l.read:l.write).push(u);let d=`NOPASSWD ${n===`read`?`Read`:`Write`} ${o}\n`;try{await e.mkdir(c,{recursive:!0});let t=``;try{t=await e.readFile(_,{encoding:`utf-8`})}catch(e){if(!(e instanceof i&&e.code===`ENOENT`))throw e}let n=t.length>0&&!t.endsWith(`
1
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{n,r}from"./path-utils-DNJG-zQf.js";import{t as i}from"./types-idfTVsM8.js";import"./fs-Bbg8o7F_.js";import{d as a,i as o,m as s,n as c}from"./sudoers-KgJRnN4b.js";const l=t(`sudo:timeout`),u={"user-timeout":`no response from the user within 5 minutes. This is a TIMEOUT, not a denial — the user was not there to answer. Do not retry this action; report that the approval request went unanswered and wait for the user before trying again.`,"cone-timeout":`no response from the cone agent within 5 minutes. This is a TIMEOUT, not a denial — no human was ever prompted, the cone simply never resolved the request. Do not retry this action; report that the escalation went unanswered and continue with work that does not need it.`};function d(e){return u[e]}function f(e=`user-timeout`){return{decision:`deny`,reason:e}}function p(e,t){let n=t.decision===`deny`?t.reason:void 0;return n?`${e}: approval request timed out — ${d(n)}`:`${e}: approval denied`}function m(e,t={}){let n=t.timeoutMs??3e5;if(!Number.isFinite(n)||n<=0)return e;let r=t.setTimer??((e,t)=>setTimeout(e,t)),i=t.clearTimer??(e=>clearTimeout(e));return{requestApproval(t,a){return new Promise(o=>{let s=new AbortController,c=()=>s.abort();a?.signal?.addEventListener(`abort`,c,{once:!0});let u=!1,d=e=>{u=!0,a?.signal?.removeEventListener(`abort`,c),o(e)},p=r(()=>{u||(l.warn(`sudo approval timed out — failing closed`,{kind:t.kind,detail:t.detail,timeoutMs:n}),s.abort(),d(f(`user-timeout`)))},n),m=e=>{if(u){l.warn(`sudo decision arrived after timeout — discarded`,{kind:t.kind,detail:t.detail,decision:e.decision});return}i(p),d(e)};e.requestApproval(t,{signal:s.signal}).then(m,e=>{l.warn(`sudo broker threw — denying`,{error:e instanceof Error?e.message:String(e)}),m({decision:`deny`})})})}}}const h=t(`sudo:fs`),g=Symbol.for(`slicc.fs.monkeypatchUnsafe`),_=`${c}/granted`;function v(e){return p(`sudo`,e)}const y=[`readFile`,`readTextFile`,`readDir`,`exists`,`stat`],b=[`writeFile`],x=[`mkdir`,`rm`];async function S(e,t,n,a){let o=s(a);if(!o)return;let l=t(),u={pattern:o,nopasswd:!0,regex:r(o)};(n===`read`?l.read:l.write).push(u);let d=`NOPASSWD ${n===`read`?`Read`:`Write`} ${o}\n`;try{await e.mkdir(c,{recursive:!0});let t=``;try{t=await e.readFile(_,{encoding:`utf-8`})}catch(e){if(!(e instanceof i&&e.code===`ENOENT`))throw e}let n=t.length>0&&!t.endsWith(`
2
2
  `)?`
3
- `:``;await e.writeFile(_,t+n+d)}catch(e){h.warn(`Failed to persist NOPASSWD grant; effective in-session only`,{error:e instanceof Error?e.message:String(e)})}}function C(e,t){let{broker:r,getPolicy:s}=t,c=t.defaultDisposition??`allow`,l=t.onGrant?t.onGrant:(t,n)=>S(e,s,t,n);async function u(e,t,u=!1){let d=n(t),f=a(s(),e,d,{isContentWrite:u});if((e===`write`?o(f,c):f)!==`require-approval`)return;let p=e,m=await r.requestApproval({kind:p,detail:d});if(m.decision===`deny`)throw new i(`EACCES`,v(m),d);m.decision===`always`&&await l(e,m.pattern?.trim()||d)}function d(e){return a(s(),`read`,n(e))!==`require-approval`}let f=t=>typeof e[t]==`function`,p={};for(let t of y)f(t)&&(p[t]=async(n,...r)=>(await u(`read`,n),e[t](n,...r)));for(let t of b)f(t)&&(p[t]=async(n,...r)=>(await u(`write`,n,!0),e[t](n,...r)));for(let t of x)f(t)&&(p[t]=async(n,...r)=>(await u(`write`,n),e[t](n,...r)));return f(`walk`)&&(p.walk=async function*(t,...n){await u(`read`,t),yield*e.walk(t,...n)}),f(`symlink`)&&(p.symlink=async(t,n)=>(await u(`write`,n),e.symlink(t,n))),f(`rename`)&&(p.rename=async(t,n)=>(await u(`read`,t),await u(`write`,t),await u(`write`,n),e.rename(t,n))),f(`copyFile`)&&(p.copyFile=async(t,n)=>(await u(`read`,t),await u(`write`,n),e.copyFile(t,n))),f(`mount`)&&(p.mount=async(t,...n)=>(await u(`write`,t),e.mount(t,...n))),f(`unmount`)&&(p.unmount=async t=>(await u(`write`,t),e.unmount(t))),f(`refreshMount`)&&(p.refreshMount=async(t,...n)=>(await u(`write`,t),e.refreshMount(t,...n))),f(`statSync`)&&(p.statSync=t=>d(t)?e.statSync(t):null),f(`readDirSync`)&&(p.readDirSync=t=>d(t)?e.readDirSync(t):null),new Proxy(e,{get(e,t,n){if(t===g)return!0;if(typeof t==`string`&&t in p)return p[t];let r=Reflect.get(e,t,n);return typeof r==`function`?r.bind(e):r}})}const w=`/workspace/skills`,T=`SKILL.md`,E=t(`skills-discovery`),D=[`native`,`agents`,`claude`,`marketplace`,`plugin`],O=new Map([[`.agents`,`agents`],[`.claude`,`claude`]]),k=new Set([`.git`,`.slicc`,`node_modules`]),A=2e4,j=[`mkdir`,`mount`,`rename`,`rm`,`unmount`,`writeFile`],M=new WeakMap,N=new WeakSet;async function P(e,t=w){let n=await z(e,t),r=await I(e),i=await F(e);return[...D.flatMap(e=>(e===`native`?n:e===`plugin`?i:r.filter(t=>t.source===e)).sort((e,t)=>e.path.localeCompare(t.path)))]}async function F(e){let t;try{let n=await e.readTextFile(`/workspace/.plugins/plugins.json`),r=JSON.parse(n);if(!r||typeof r!=`object`||!r.plugins)return[];t=Object.values(r.plugins).map(e=>e?.root).filter(e=>typeof e==`string`)}catch{return[]}let n=[];for(let r of t){let t=`${r}/skills`,i=await K(e,t);for(let r of i){if(r.type!==`directory`)continue;let i=`${t}/${r.name}`,a=`${i}/${T}`;await G(e,a)&&n.push({source:`plugin`,sourceRoot:t,path:i,skillFilePath:a})}}return n}async function I(e){if(L(e))return(await U(e)).map(e=>({...e}));W(e);let t=e,n=M.get(t);if(n)return n.map(e=>({...e}));let r=await U(e);return M.set(t,r),r.map(e=>({...e}))}function L(e){try{return e[g]===!0}catch{return!1}}function R(e,t){let n=new Map,r=new Map;for(let i of e){let e=t(i);if(!n.has(e)){n.set(e,i);continue}let a=r.get(e)??{name:e,winner:n.get(e),shadowed:[]};a.shadowed.push(i),r.set(e,a)}return{winners:Array.from(n.values()),collisions:Array.from(r.values())}}async function z(e,t){let n=await K(e,t),r=[];for(let i of n){if(i.type!==`directory`)continue;let n=`${t}/${i.name}`,a=`${n}/${T}`;await G(e,a)&&r.push({source:`native`,sourceRoot:t,path:n,skillFilePath:a})}return r}async function B(e,t){let n;try{n=await e.readTextFile(t)}catch{return[]}let r;try{r=JSON.parse(n)}catch{return[]}if(typeof r!=`object`||!r||!Array.isArray(r.plugins))return[];let i=t.replace(/\/[^/]+$/,``).replace(/\/.claude-plugin$/,``),a=[];for(let e of r.plugins){if(typeof e!=`object`||!e)continue;let t=e.source;if(typeof t!=`string`||t.startsWith(`/`)||t.split(`/`).includes(`..`))continue;let n=t.replace(/^\.\//,``).replace(/\/$/,``).replace(/^\.$/,``);a.push(n?`${i}/${n}`:i)}return a}async function V(e,t,n){let r=await B(e,`${t}/marketplace.json`),i=[];for(let t of r){let r=`${t}/skills`,a=await K(e,r);for(let t of a){if(t.type!==`directory`)continue;let a=`${r}/${t.name}`,o=`${a}/${T}`;!await G(e,o)||n.has(a)||(n.add(a),i.push({source:`marketplace`,sourceRoot:r,path:a,skillFilePath:o}))}}return i}async function H(e,t,n,r){let i=`${t}/skills`,a=await K(e,i),o=[];for(let t of a){if(t.type!==`directory`)continue;let a=`${i}/${t.name}`,s=`${a}/${T}`;!await G(e,s)||r.has(a)||(r.add(a),o.push({source:n,sourceRoot:i,path:a,skillFilePath:s}))}return o}async function U(e){let t=[],n=new Set,r=new Set([`/`]),i=[{path:`/`,depth:0}];for(let a=0;a<i.length;a+=1){if(a>=A){E.warn(`skills discovery: directory budget exhausted; walk truncated`,{budget:A});break}let{path:o,depth:s}=i[a],c=await K(e,o);for(let a of c){if(a.type!==`directory`||a.name===`.`||a.name===`..`)continue;let c=o===`/`?`/${a.name}`:`${o}/${a.name}`,l=O.get(a.name);if(l){let r=await H(e,c,l,n);t.push(...r)}if(a.name===`.claude-plugin`){let r=await V(e,c,n);t.push(...r);continue}!k.has(a.name)&&s<24&&!r.has(c)&&(r.add(c),i.push({path:c,depth:s+1}))}}return t}function W(e){if(L(e))return;let t=e;if(N.has(t))return;N.add(t);let n=e;for(let r of j){let i=n[r];if(typeof i!=`function`)continue;let a=i;try{n[r]=async(...n)=>{let r=await a.apply(e,n);return M.delete(t),r}}catch{}}}async function G(e,t){try{return await e.stat(t),!0}catch{return!1}}async function K(e,t){try{return[...await e.readDir(t)].sort((e,t)=>e.name.localeCompare(t.name))}catch{return[]}}async function q(e,t=`/workspace/skills`){let n=await P(e,t),r=[];for(let t of n){let n=t.path.split(`/`).pop()??t.path,i=``;if(t.skillFilePath)try{i=X(await e.readTextFile(t.skillFilePath))??``}catch{}r.push({name:n,source:t.source,sourceRoot:t.sourceRoot,path:t.path,skillFilePath:t.skillFilePath,description:i})}let{winners:i,collisions:a}=R(r,e=>e.name),o=new Map(a.map(e=>[e.winner.path,e.shadowed.map(e=>e.path)]));return i.map(e=>({...e,shadowedPaths:o.get(e.path)}))}async function J(e,t,n=`/workspace/skills`){return(await q(e,n)).find(e=>e.name===t)||null}async function Y(e,t,n=`/workspace/skills`){let r=await J(e,t,n);if(!r?.skillFilePath)return null;try{return await e.readTextFile(r.skillFilePath)}catch{return null}}function X(e){let t=e.replace(/^\uFEFF/,``).replace(/\r\n?/g,`
3
+ `:``;await e.writeFile(_,t+n+d)}catch(e){h.warn(`Failed to persist NOPASSWD grant; effective in-session only`,{error:e instanceof Error?e.message:String(e)})}}function C(e,t){let{broker:r,getPolicy:s}=t,c=t.defaultDisposition??`allow`,l=t.onGrant?t.onGrant:(t,n)=>S(e,s,t,n);async function u(e,t,u=!1){let d=n(t),f=a(s(),e,d,{isContentWrite:u});if((e===`write`?o(f,c):f)!==`require-approval`)return;let p=e,m=await r.requestApproval({kind:p,detail:d});if(m.decision===`deny`)throw new i(`EACCES`,v(m),d);m.decision===`always`&&await l(e,m.pattern?.trim()||d)}function d(e){return a(s(),`read`,n(e))!==`require-approval`}let f=t=>typeof e[t]==`function`,p={};for(let t of y)f(t)&&(p[t]=async(n,...r)=>(await u(`read`,n),e[t](n,...r)));for(let t of b)f(t)&&(p[t]=async(n,...r)=>(await u(`write`,n,!0),e[t](n,...r)));for(let t of x)f(t)&&(p[t]=async(n,...r)=>(await u(`write`,n),e[t](n,...r)));return f(`walk`)&&(p.walk=async function*(t,...n){await u(`read`,t),yield*e.walk(t,...n)}),f(`symlink`)&&(p.symlink=async(t,n)=>(await u(`write`,n),e.symlink(t,n))),f(`rename`)&&(p.rename=async(t,n)=>(await u(`read`,t),await u(`write`,t),await u(`write`,n),e.rename(t,n))),f(`copyFile`)&&(p.copyFile=async(t,n)=>(await u(`read`,t),await u(`write`,n),e.copyFile(t,n))),f(`mount`)&&(p.mount=async(t,...n)=>(await u(`write`,t),e.mount(t,...n))),f(`unmount`)&&(p.unmount=async t=>(await u(`write`,t),e.unmount(t))),f(`refreshMount`)&&(p.refreshMount=async(t,...n)=>(await u(`write`,t),e.refreshMount(t,...n))),f(`statSync`)&&(p.statSync=t=>d(t)?e.statSync(t):null),f(`readDirSync`)&&(p.readDirSync=t=>d(t)?e.readDirSync(t):null),new Proxy(e,{get(e,t,n){if(t===g)return!0;if(typeof t==`string`&&t in p)return p[t];let r=Reflect.get(e,t,n);return typeof r==`function`?r.bind(e):r}})}const w=`/workspace/skills`,T=`SKILL.md`,E=t(`skills-discovery`),D=[`native`,`agents`,`claude`,`marketplace`,`plugin`],O=new Map([[`.agents`,`agents`],[`.claude`,`claude`]]),k=new Set([`.git`,`.slicc`,`node_modules`]),A=2e4,j=[`mkdir`,`mount`,`rename`,`rm`,`unmount`,`writeFile`],M=new WeakMap,N=new WeakSet;async function P(e,t=w){let n=await z(e,t),r=await I(e),i=await F(e);return[...D.flatMap(e=>(e===`native`?n:e===`plugin`?i:r.filter(t=>t.source===e)).sort((e,t)=>e.path.localeCompare(t.path)))]}async function F(e){let t;try{let n=await e.readTextFile(`/workspace/.plugins/plugins.json`),r=JSON.parse(n);if(!r||typeof r!=`object`||!r.plugins)return[];t=Object.values(r.plugins).map(e=>e?.root).filter(e=>typeof e==`string`)}catch{return[]}let n=[];for(let r of t){let t=`${r}/skills`,i=await K(e,t);for(let r of i){if(r.type!==`directory`)continue;let i=`${t}/${r.name}`,a=`${i}/${T}`;await G(e,a)&&n.push({source:`plugin`,sourceRoot:t,path:i,skillFilePath:a})}}return n}async function I(e){if(L(e))return(await U(e)).map(e=>({...e}));W(e);let t=e,n=M.get(t);if(n)return n.map(e=>({...e}));let r=await U(e);return M.set(t,r),r.map(e=>({...e}))}function L(e){try{return e[g]===!0}catch{return!1}}function R(e,t){let n=new Map,r=new Map;for(let i of e){let e=t(i);if(!n.has(e)){n.set(e,i);continue}let a=r.get(e)??{name:e,winner:n.get(e),shadowed:[]};a.shadowed.push(i),r.set(e,a)}return{winners:Array.from(n.values()),collisions:Array.from(r.values())}}async function z(e,t){let n=await K(e,t),r=[];for(let i of n){if(i.type!==`directory`)continue;let n=`${t}/${i.name}`,a=`${n}/${T}`;await G(e,a)&&r.push({source:`native`,sourceRoot:t,path:n,skillFilePath:a})}return r}async function B(e,t){let n;try{n=await e.readTextFile(t)}catch{return[]}let r;try{r=JSON.parse(n)}catch{return[]}if(typeof r!=`object`||!r)return[];let i=r.plugins;if(!Array.isArray(i))return[];let a=t.replace(/\/[^/]+$/,``).replace(/\/.claude-plugin$/,``),o=[];for(let e of i){if(typeof e!=`object`||!e)continue;let t=e.source;if(typeof t!=`string`||t.startsWith(`/`)||t.split(`/`).includes(`..`))continue;let n=t.replace(/^\.\//,``).replace(/\/$/,``).replace(/^\.$/,``);o.push(n?`${a}/${n}`:a)}return o}async function V(e,t,n){let r=await B(e,`${t}/marketplace.json`),i=[];for(let t of r){let r=`${t}/skills`,a=await K(e,r);for(let t of a){if(t.type!==`directory`)continue;let a=`${r}/${t.name}`,o=`${a}/${T}`;!await G(e,o)||n.has(a)||(n.add(a),i.push({source:`marketplace`,sourceRoot:r,path:a,skillFilePath:o}))}}return i}async function H(e,t,n,r){let i=`${t}/skills`,a=await K(e,i),o=[];for(let t of a){if(t.type!==`directory`)continue;let a=`${i}/${t.name}`,s=`${a}/${T}`;!await G(e,s)||r.has(a)||(r.add(a),o.push({source:n,sourceRoot:i,path:a,skillFilePath:s}))}return o}async function U(e){let t=[],n=new Set,r=new Set([`/`]),i=[{path:`/`,depth:0}];for(let a=0;a<i.length;a+=1){if(a>=A){E.warn(`skills discovery: directory budget exhausted; walk truncated`,{budget:A});break}let{path:o,depth:s}=i[a],c=await K(e,o);for(let a of c){if(a.type!==`directory`||a.name===`.`||a.name===`..`)continue;let c=o===`/`?`/${a.name}`:`${o}/${a.name}`,l=O.get(a.name);if(l){let r=await H(e,c,l,n);t.push(...r)}if(a.name===`.claude-plugin`){let r=await V(e,c,n);t.push(...r);continue}!k.has(a.name)&&s<24&&!r.has(c)&&(r.add(c),i.push({path:c,depth:s+1}))}}return t}function W(e){if(L(e))return;let t=e;if(N.has(t))return;N.add(t);let n=e;for(let r of j){let i=n[r];if(typeof i==`function`)try{n[r]=async(...n)=>{let r=await i.apply(e,n);return M.delete(t),r}}catch{}}}async function G(e,t){try{return await e.stat(t),!0}catch{return!1}}async function K(e,t){try{return[...await e.readDir(t)].sort((e,t)=>e.name.localeCompare(t.name))}catch{return[]}}async function q(e,t=`/workspace/skills`){let n=await P(e,t),r=[];for(let t of n){let n=t.path.split(`/`).pop()??t.path,i=``;if(t.skillFilePath)try{i=X(await e.readTextFile(t.skillFilePath))??``}catch{}r.push({name:n,source:t.source,sourceRoot:t.sourceRoot,path:t.path,skillFilePath:t.skillFilePath,description:i})}let{winners:i,collisions:a}=R(r,e=>e.name),o=new Map(a.map(e=>[e.winner.path,e.shadowed.map(e=>e.path)]));return i.map(e=>({...e,shadowedPaths:o.get(e.path)}))}async function J(e,t,n=`/workspace/skills`){return(await q(e,n)).find(e=>e.name===t)||null}async function Y(e,t,n=`/workspace/skills`){let r=await J(e,t,n);if(!r?.skillFilePath)return null;try{return await e.readTextFile(r.skillFilePath)}catch{return null}}function X(e){let t=e.replace(/^\uFEFF/,``).replace(/\r\n?/g,`
4
4
  `).trimStart().match(/^---\s*\n([\s\S]*?)\n---/);if(!t)return null;for(let e of t[1].split(`
5
5
  `)){let t=e.match(/^description:\s*(.*)$/);if(t)return t[1].trim()}return null}var Z=e({MAX_SKILL_ARCHIVE_SIZE_BYTES:()=>MAX_SKILL_ARCHIVE_SIZE_BYTES,SKILLS_DIR:()=>SKILLS_DIR,SKILL_ARCHIVE_EXTENSION:()=>SKILL_ARCHIVE_EXTENSION,SKILL_FILE:()=>T,WORKSPACE_SKILLS_PATH:()=>w,discoverSkills:()=>q,getSkillInfo:()=>J,readSkillInstructions:()=>Y});export{p as a,C as i,q as n,f as o,_ as r,m as s,Z as t};
@@ -0,0 +1,12 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dist-BamC4SL9.js","assets/dist-Bwf-JITi.js","assets/dist-D9gC7MoR.js","assets/dist-CJQsHfm3.js","assets/dist-Cre853-J.js"])))=>i.map(i=>d[i]);
2
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./preload-helper-Czpn1I53.js";import{$ as n,A as r,D as i,E as a,G as o,H as s,J as c,K as l,N as u,Q as d,S as f,U as p,V as m,X as ee,Y as te,Z as ne,at as re,c as ie,ct as h,d as ae,dt as g,et as _,lt as oe,n as se,ot as ce,q as le,st as ue,t as de,tt as fe,ut as v,v as y,w as b,x,y as S}from"./dist-Bwf-JITi.js";import{t as pe}from"./upgrade-own-properties-DI0JKxGt.js";var me=e=>{let{state:t}=e,n=t.doc.lineAt(t.selection.main.from),r=w(e.state,n.from);return r.line?he(e):r.block?_e(e):!1};function C(e,t){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let i=e(t,n);return i?(r(n.update(i)),!0):!1}}var he=C(xe,0),ge=C(be,0),_e=C((e,t)=>be(e,t,ye(t)),0);function w(e,t){let n=e.languageDataAt(`commentTokens`,t,1);return n.length?n[0]:{}}var T=50;function ve(e,{open:t,close:n},r,i){let a=e.sliceDoc(r-T,r),o=e.sliceDoc(i,i+T),s=/\s*$/.exec(a)[0].length,c=/^\s*/.exec(o)[0].length,l=a.length-s;if(a.slice(l-t.length,l)==t&&o.slice(c,c+n.length)==n)return{open:{pos:r-s,margin:s&&1},close:{pos:i+c,margin:c&&1}};let u,d;i-r<=100?u=d=e.sliceDoc(r,i):(u=e.sliceDoc(r,r+T),d=e.sliceDoc(i-T,i));let f=/^\s*/.exec(u)[0].length,p=/\s*$/.exec(d)[0].length,m=d.length-p-n.length;return u.slice(f,f+t.length)==t&&d.slice(m,m+n.length)==n?{open:{pos:r+f+t.length,margin:+!!/\s/.test(u.charAt(f+t.length))},close:{pos:i-p-n.length,margin:+!!/\s/.test(d.charAt(m-1))}}:null}function ye(e){let t=[];for(let n of e.selection.ranges){let r=e.doc.lineAt(n.from),i=n.to<=r.to?r:e.doc.lineAt(n.to);i.from>r.from&&i.from==n.to&&(i=n.to==r.to+1?r:e.doc.lineAt(n.to-1));let a=t.length-1;a>=0&&t[a].to>r.from?t[a].to=i.to:t.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:i.to})}return t}function be(e,t,n=t.selection.ranges){let r=n.map(e=>w(t,e.from).block);if(!r.every(e=>e))return null;let i=n.map((e,n)=>ve(t,r[n],e.from,e.to));if(e!=2&&!i.every(e=>e))return{changes:t.changes(n.map((e,t)=>i[t]?[]:[{from:e.from,insert:r[t].open+` `},{from:e.to,insert:` `+r[t].close}]))};if(e!=1&&i.some(e=>e)){let e=[];for(let t=0,n;t<i.length;t++)if(n=i[t]){let i=r[t],{open:a,close:o}=n;e.push({from:a.pos-i.open.length,to:a.pos+a.margin},{from:o.pos-o.margin,to:o.pos+i.close.length})}return{changes:e}}return null}function xe(e,t,n=t.selection.ranges){let r=[],i=-1;ranges:for(let{from:e,to:a}of n){let n=r.length,o=1e9,s;for(let n=e;n<=a;){let c=t.doc.lineAt(n);if(s==null&&(s=w(t,c.from).line,!s))continue ranges;if(c.from>i&&(e==a||a>c.from)){i=c.from;let e=/^\s*/.exec(c.text)[0].length,t=e==c.length,n=c.text.slice(e,e+s.length)==s?e:-1;e<c.text.length&&e<o&&(o=e),r.push({line:c,comment:n,token:s,indent:e,empty:t,single:!1})}n=c.to+1}if(o<1e9)for(let e=n;e<r.length;e++)r[e].indent<r[e].line.text.length&&(r[e].indent=o);r.length==n+1&&(r[n].single=!0)}if(e!=2&&r.some(e=>e.comment<0&&(!e.empty||e.single))){let e=[];for(let{line:t,token:n,indent:i,empty:a,single:o}of r)(o||!a)&&e.push({from:t.from+i,insert:n+` `});let n=t.changes(e);return{changes:n,selection:t.selection.map(n,1)}}if(e!=1&&r.some(e=>e.comment>=0)){let e=[];for(let{line:t,comment:n,token:i}of r)if(n>=0){let r=t.from+n,a=r+i.length;t.text[a-t.from]==` `&&a++,e.push({from:r,to:a})}return{changes:e}}return null}var E=te.define(),Se=te.define(),Ce=fe.define(),we=fe.define({combine(e){return oe(e,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(n,r)=>e(n,r)||t(n,r)})}}),Te=ce.define({create(){return P.empty},update(e,t){let n=t.state.facet(we),r=t.annotation(E);if(r){let i=A.fromTransaction(t,r.selection),a=r.side,o=a==0?e.undone:e.done;return o=i?j(o,o.length,n.minDepth,i):Ne(o,t.startState.selection),new P(a==0?r.rest:o,a==0?o:r.rest)}let i=t.annotation(Se);if((i==`full`||i==`before`)&&(e=e.isolate()),t.annotation(h.addToHistory)===!1)return t.changes.empty?e:e.addMapping(t.changes.desc);let a=A.fromTransaction(t),o=t.annotation(h.time),s=t.annotation(h.userEvent);return a?e=e.addChanges(a,o,s,n,t):t.selection&&(e=e.addSelection(t.startState.selection,o,s,n.newGroupDelay)),(i==`full`||i==`after`)&&(e=e.isolate()),e},toJSON(e){return{done:e.done.map(e=>e.toJSON()),undone:e.undone.map(e=>e.toJSON())}},fromJSON(e){return new P(e.done.map(A.fromJSON),e.undone.map(A.fromJSON))}});function Ee(e={}){return[Te,we.of(e),s.domEventHandlers({beforeinput(e,t){let n=e.inputType==`historyUndo`?O:e.inputType==`historyRedo`?k:null;return n?(e.preventDefault(),n(t)):!1}})]}function D(e,t){return function({state:n,dispatch:r}){if(!t&&n.readOnly)return!1;let i=n.field(Te,!1);if(!i)return!1;let a=i.pop(e,n,t);return a?(r(a),!0):!1}}var O=D(0,!1),k=D(1,!1),De=D(0,!0),Oe=D(1,!0),A=class e{constructor(e,t,n,r,i){this.changes=e,this.effects=t,this.mapped=n,this.startSelection=r,this.selectionsAfter=i}setSelAfter(t){return new e(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){return{changes:this.changes?.toJSON(),mapped:this.mapped?.toJSON(),startSelection:this.startSelection?.toJSON(),selectionsAfter:this.selectionsAfter.map(e=>e.toJSON())}}static fromJSON(t){return new e(t.changes&&ne.fromJSON(t.changes),[],t.mapped&&ee.fromJSON(t.mapped),t.startSelection&&n.fromJSON(t.startSelection),t.selectionsAfter.map(n.fromJSON))}static fromTransaction(t,n){let r=M;for(let e of t.startState.facet(Ce)){let n=e(t);n.length&&(r=r.concat(n))}return!r.length&&t.changes.empty?null:new e(t.changes.invert(t.startState.doc),r,void 0,n||t.startState.selection,M)}static selection(t){return new e(void 0,M,void 0,void 0,t)}};function j(e,t,n,r){let i=t+1>n+20?t-n-1:0,a=e.slice(i,t);return a.push(r),a}function ke(e,t){let n=[],r=!1;return e.iterChangedRanges((e,t)=>n.push(e,t)),t.iterChangedRanges((e,t,i,a)=>{for(let e=0;e<n.length;){let t=n[e++],o=n[e++];a>=t&&i<=o&&(r=!0)}}),r}function Ae(e,t){return e.ranges.length==t.ranges.length&&e.ranges.filter((e,n)=>e.empty!=t.ranges[n].empty).length===0}function je(e,t){return e.length?t.length?e.concat(t):e:t}var M=[],Me=200;function Ne(e,t){if(e.length){let n=e[e.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-Me));return r.length&&r[r.length-1].eq(t)?e:(r.push(t),j(e,e.length-1,1e9,n.setSelAfter(r)))}return[A.selection([t])]}function Pe(e){let t=e[e.length-1],n=e.slice();return n[e.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),n}function N(e,t){if(!e.length)return e;let n=e.length,r=M;for(;n;){let i=Fe(e[n-1],t,r);if(i.changes&&!i.changes.empty||i.effects.length){let t=e.slice(0,n);return t[n-1]=i,t}t=i.mapped,n--,r=i.selectionsAfter}return r.length?[A.selection(r)]:M}function Fe(e,t,n){let r=je(e.selectionsAfter.length?e.selectionsAfter.map(e=>e.map(t)):M,n);if(!e.changes)return A.selection(r);let i=e.changes.map(t),a=t.mapDesc(e.changes,!0),o=e.mapped?e.mapped.composeDesc(a):a;return new A(i,re.mapEffects(e.effects,t),o,e.startSelection.map(a),r)}var Ie=/^(input\.type|delete)($|\.)/,P=class e{constructor(e,t,n=0,r=void 0){this.done=e,this.undone=t,this.prevTime=n,this.prevUserEvent=r}isolate(){return this.prevTime?new e(this.done,this.undone):this}addChanges(t,n,r,i,a){let o=this.done,s=o[o.length-1];return o=s&&s.changes&&!s.changes.empty&&t.changes&&(!r||Ie.test(r))&&(!s.selectionsAfter.length&&n-this.prevTime<i.newGroupDelay&&i.joinToEvent(a,ke(s.changes,t.changes))||r==`input.type.compose`)?j(o,o.length-1,i.minDepth,new A(t.changes.compose(s.changes),je(re.mapEffects(t.effects,s.changes),s.effects),s.mapped,s.startSelection,M)):j(o,o.length,i.minDepth,t),new e(o,M,n,r)}addSelection(t,n,r,i){let a=this.done.length?this.done[this.done.length-1].selectionsAfter:M;return a.length>0&&n-this.prevTime<i&&r==this.prevUserEvent&&r&&/^select($|\.)/.test(r)&&Ae(a[a.length-1],t)?this:new e(Ne(this.done,t),this.undone,n,r)}addMapping(t){return new e(N(this.done,t),N(this.undone,t),this.prevTime,this.prevUserEvent)}pop(e,t,n){let r=e==0?this.done:this.undone;if(r.length==0)return null;let i=r[r.length-1],a=i.selectionsAfter[0]||(i.startSelection?i.startSelection.map(i.changes.invertedDesc,1):t.selection);if(n&&i.selectionsAfter.length)return t.update({selection:i.selectionsAfter[i.selectionsAfter.length-1],annotations:E.of({side:e,rest:Pe(r),selection:a}),userEvent:e==0?`select.undo`:`select.redo`,scrollIntoView:!0});if(i.changes){let n=r.length==1?M:r.slice(0,r.length-1);return i.mapped&&(n=N(n,i.mapped)),t.update({changes:i.changes,selection:i.startSelection,effects:i.effects,annotations:E.of({side:e,rest:n,selection:a}),filter:!1,userEvent:e==0?`undo`:`redo`,scrollIntoView:!0})}return null}};P.empty=new P(M,M);var Le=[{key:`Mod-z`,run:O,preventDefault:!0},{key:`Mod-y`,mac:`Mod-Shift-z`,run:k,preventDefault:!0},{linux:`Ctrl-Shift-z`,run:k,preventDefault:!0},{key:`Mod-u`,run:De,preventDefault:!0},{key:`Alt-u`,mac:`Mod-Shift-u`,run:Oe,preventDefault:!0}];function F(e,t){return n.create(e.ranges.map(t),e.mainIndex)}function I(e,t){return e.update({selection:t,scrollIntoView:!0,userEvent:`select`})}function L({state:e,dispatch:t},n){let r=F(e.selection,n);return!r.eq(e.selection,!0)&&(t(I(e,r)),!0)}function R(e,t){return n.cursor(t?e.to:e.from)}function z(e,t){return L(e,n=>n.empty?e.moveByChar(n,t):R(n,t))}function B(e){return e.textDirectionAt(e.state.selection.main.head)==m.LTR}var V=e=>z(e,!B(e)),H=e=>z(e,B(e));function U(e,t){return L(e,n=>n.empty?e.moveByGroup(n,t):R(n,t))}var Re=e=>U(e,!B(e)),ze=e=>U(e,B(e));typeof Intl<`u`&&Intl.Segmenter;function Be(e,t,n){if(t.type.prop(n))return!0;let r=t.to-t.from;return r&&(r>2||/[^\s,.;:]/.test(e.sliceDoc(t.from,t.to)))||t.firstChild}function W(e,t,r){let a=i(e).resolveInner(t.head),o=r?u.closedBy:u.openedBy;for(let n=t.head;;){let t=r?a.childAfter(n):a.childBefore(n);if(!t)break;Be(e,t,o)?a=t:n=r?t.to:t.from}let s=a.type.prop(o),c,l;return l=s&&(c=r?b(e,a.from,1):b(e,a.to,-1))&&c.matched?r?c.end.to:c.end.from:r?a.to:a.from,n.cursor(l,r?-1:1)}var Ve=e=>L(e,t=>W(e.state,t,!B(e))),He=e=>L(e,t=>W(e.state,t,B(e)));function Ue(e,t){return L(e,n=>{if(!n.empty)return R(n,t);let r=e.moveVertically(n,t);return r.head==n.head?e.moveToLineBoundary(n,t):r})}var We=e=>Ue(e,!1),G=e=>Ue(e,!0);function Ge(e){let t=e.scrollDOM.clientHeight<e.scrollDOM.scrollHeight-2,n=0,r=0,i;if(t){for(let t of e.state.facet(s.scrollMargins)){let i=t(e);i?.top&&(n=Math.max(i?.top,n)),i?.bottom&&(r=Math.max(i?.bottom,r))}i=e.scrollDOM.clientHeight-n-r}else i=(e.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:n,marginBottom:r,selfScroll:t,height:Math.max(e.defaultLineHeight,i-5)}}function Ke(e,t){let n=Ge(e),{state:r}=e,i=F(r.selection,r=>r.empty?e.moveVertically(r,t,n.height):R(r,t));if(i.eq(r.selection))return!1;let a;if(n.selfScroll){let t=e.coordsAtPos(r.selection.main.head),o=e.scrollDOM.getBoundingClientRect(),c=o.top+n.marginTop,l=o.bottom-n.marginBottom;t&&t.top>c&&t.bottom<l&&(a=s.scrollIntoView(i.main.head,{y:`start`,yMargin:t.top-c}))}return e.dispatch(I(r,i),{effects:a}),!0}var qe=e=>Ke(e,!1),K=e=>Ke(e,!0);function q(e,t,r){let i=e.lineBlockAt(t.head),a=e.moveToLineBoundary(t,r);if(a.head==t.head&&a.head!=(r?i.to:i.from)&&(a=e.moveToLineBoundary(t,r,!1)),!r&&a.head==i.from&&i.length){let r=/^\s*/.exec(e.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(a=n.cursor(i.from+r))}return a}var Je=e=>L(e,t=>q(e,t,!0)),Ye=e=>L(e,t=>q(e,t,!1)),Xe=e=>L(e,t=>q(e,t,!B(e))),Ze=e=>L(e,t=>q(e,t,B(e))),Qe=e=>L(e,t=>n.cursor(e.lineBlockAt(t.head).from,1)),$e=e=>L(e,t=>n.cursor(e.lineBlockAt(t.head).to,-1));function et(e,t,r){let i=!1,a=F(e.selection,t=>{let a=b(e,t.head,-1)||b(e,t.head,1)||t.head>0&&b(e,t.head-1,1)||t.head<e.doc.length&&b(e,t.head+1,-1);if(!a||!a.end)return t;i=!0;let o=a.start.from==t.head?a.end.to:a.end.from;return r?n.range(t.anchor,o):n.cursor(o)});return i?(t(I(e,a)),!0):!1}var tt=({state:e,dispatch:t})=>et(e,t,!1);function J(e,t,r){let i=F(e.state.selection,e=>{e.undirectional&&e.head>=e.anchor!=t&&(e=n.range(e.head,e.anchor));let i=r(e);return n.range(e.anchor,i.head,i.goalColumn,i.bidiLevel||void 0,i.assoc)});return!i.eq(e.state.selection)&&(e.dispatch(I(e.state,i)),!0)}function nt(e,t){return J(e,t,n=>e.moveByChar(n,t))}var rt=e=>nt(e,!B(e)),it=e=>nt(e,B(e));function at(e,t){return J(e,t,n=>e.moveByGroup(n,t))}var ot=e=>at(e,!B(e)),st=e=>at(e,B(e)),ct=e=>{let t=!B(e);return J(e,t,n=>W(e.state,n,t))},lt=e=>{let t=B(e);return J(e,t,n=>W(e.state,n,t))};function ut(e,t){return J(e,t,n=>e.moveVertically(n,t))}var dt=e=>ut(e,!1),ft=e=>ut(e,!0);function pt(e,t){return J(e,t,n=>e.moveVertically(n,t,Ge(e).height))}var mt=e=>pt(e,!1),ht=e=>pt(e,!0),gt=e=>J(e,!0,t=>q(e,t,!0)),_t=e=>J(e,!1,t=>q(e,t,!1)),vt=e=>{let t=!B(e);return J(e,t,n=>q(e,n,t))},yt=e=>{let t=B(e);return J(e,t,n=>q(e,n,t))},bt=e=>J(e,!1,t=>n.cursor(e.lineBlockAt(t.head).from)),xt=e=>J(e,!0,t=>n.cursor(e.lineBlockAt(t.head).to)),St=({state:e,dispatch:t})=>(t(I(e,{anchor:0})),!0),Ct=({state:e,dispatch:t})=>(t(I(e,{anchor:e.doc.length})),!0),wt=({state:e,dispatch:t})=>(t(I(e,{anchor:e.selection.main.anchor,head:0})),!0),Tt=({state:e,dispatch:t})=>(t(I(e,{anchor:e.selection.main.anchor,head:e.doc.length})),!0),Et=({state:e,dispatch:t})=>(t(e.update({selection:{anchor:0,head:e.doc.length},userEvent:`select`})),!0),Dt=({state:e,dispatch:t})=>{let r=Q(e).map(({from:t,to:r})=>n.undirectionalRange(t,Math.min(r+1,e.doc.length)));return t(e.update({selection:n.create(r),userEvent:`select`})),!0},Ot=({state:e,dispatch:t})=>{let r=F(e.selection,t=>{let r=i(e),a=r.resolveStack(t.from,1);if(t.empty){let e=r.resolveStack(t.from,-1);e.node.from>=a.node.from&&e.node.to<=a.node.to&&(a=e)}for(let e=a;e;e=e.next){let{node:r}=e;if((r.from<t.from&&r.to>=t.to||r.to>t.to&&r.from<=t.from)&&e.next)return n.undirectionalRange(r.from,r.to)}return t});return!r.eq(e.selection)&&(t(I(e,r)),!0)};function kt(e,t){let{state:r}=e,i=r.selection,a=r.selection.ranges.slice();for(let n of r.selection.ranges){let i=r.doc.lineAt(n.head);if(t?i.to<e.state.doc.length:i.from>0)for(let r=n;;){let n=e.moveVertically(r,t);if(n.head<i.from||n.head>i.to){a.some(e=>e.head==n.head)||a.push(n);break}if(n.head==r.head)break;r=n}}return a.length!=i.ranges.length&&(e.dispatch(I(r,n.create(a,a.length-1))),!0)}var At=e=>kt(e,!1),jt=e=>kt(e,!0),Mt=({state:e,dispatch:t})=>{let r=e.selection,i=null;return r.ranges.length>1?i=n.create([r.main]):r.main.empty||(i=n.create([n.cursor(r.main.head)])),i?(t(I(e,i)),!0):!1};function Y(e,t){if(e.state.readOnly)return!1;let r=`delete.selection`,{state:i}=e,a=i.changeByRange(i=>{let{from:a,to:o}=i;if(a==o){let n=t(i);n<a?(r=`delete.backward`,n=X(e,n,!1)):n>a&&(r=`delete.forward`,n=X(e,n,!0)),a=Math.min(a,n),o=Math.max(o,n)}else a=X(e,a,!1),o=X(e,o,!0);return a==o?{range:i}:{changes:{from:a,to:o},range:n.cursor(a,a<i.head?-1:1)}});return!a.changes.empty&&(e.dispatch(i.update(a,{scrollIntoView:!0,userEvent:r,effects:r==`delete.selection`?s.announce.of(i.phrase(`Selection deleted`)):void 0})),!0)}function X(e,t,n){if(e instanceof s)for(let r of e.state.facet(s.atomicRanges).map(t=>t(e)))r.between(t,t,(e,r)=>{e<t&&r>t&&(t=n?r:e)});return t}var Nt=(e,t,n)=>Y(e,r=>{let i=r.from,{state:a}=e,o=a.doc.lineAt(i),s,c;if(n&&!t&&i>o.from&&i<o.from+200&&!/[^ \t]/.test(s=o.text.slice(0,i-o.from))){if(s[s.length-1]==` `)return i-1;let e=v(s,a.tabSize)%y(a)||y(a);for(let t=0;t<e&&s[s.length-1-t]==` `;t++)i--;c=i}else c=g(o.text,i-o.from,t,t)+o.from,c==i&&o.number!=(t?a.doc.lines:1)?c+=t?1:-1:!t&&/[\ufe00-\ufe0f]/.test(o.text.slice(c-o.from,i-o.from))&&(c=g(o.text,c-o.from,!1,!1)+o.from);return c}),Z=e=>Nt(e,!1,!0),Pt=e=>Nt(e,!0,!1),Ft=(e,t)=>Y(e,n=>{let r=n.head,{state:i}=e,a=i.doc.lineAt(r),o=i.charCategorizer(r);for(let e=null;;){if(r==(t?a.to:a.from)){r==n.head&&a.number!=(t?i.doc.lines:1)&&(r+=t?1:-1);break}let s=g(a.text,r-a.from,t)+a.from,c=a.text.slice(Math.min(r,s)-a.from,Math.max(r,s)-a.from),l=o(c);if(e!=null&&l!=e)break;(c!=` `||r!=n.head)&&(e=l),r=s}return r}),It=e=>Ft(e,!1),Lt=e=>Ft(e,!0),Rt=e=>Y(e,t=>{let n=e.lineBlockAt(t.head).to;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)}),zt=e=>Y(e,t=>{let n=e.moveToLineBoundary(t,!1).head;return t.head>n?n:Math.max(0,t.head-1)}),Bt=e=>Y(e,t=>{let n=e.moveToLineBoundary(t,!0).head;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)}),Vt=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let r=e.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:ue.of([``,``])},range:n.cursor(e.from)}));return t(e.update(r,{scrollIntoView:!0,userEvent:`input`})),!0},Ht=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let r=e.changeByRange(t=>{if(!t.empty||t.from==0||t.from==e.doc.length)return{range:t};let r=t.from,i=e.doc.lineAt(r),a=r==i.from?r-1:g(i.text,r-i.from,!1)+i.from,o=r==i.to?r+1:g(i.text,r-i.from,!0)+i.from;return{changes:{from:a,to:o,insert:e.doc.slice(r,o).append(e.doc.slice(a,r))},range:n.cursor(o)}});return!r.changes.empty&&(t(e.update(r,{scrollIntoView:!0,userEvent:`move.character`})),!0)};function Q(e){let t=[],n=-1;for(let r of e.selection.ranges){let i=e.doc.lineAt(r.from),a=e.doc.lineAt(r.to);if(!r.empty&&r.to==a.from&&(a=e.doc.lineAt(r.to-1)),n>=i.number){let e=t[t.length-1];e.to=a.to,e.ranges.push(r)}else t.push({from:i.from,to:a.to,ranges:[r]});n=a.number+1}return t}function Ut(e,t,r){if(e.readOnly)return!1;let i=[],a=[];for(let t of Q(e)){if(r?t.to==e.doc.length:t.from==0)continue;let o=e.doc.lineAt(r?t.to+1:t.from-1),s=o.length+1;if(r){i.push({from:t.to,to:o.to},{from:t.from,insert:o.text+e.lineBreak});for(let r of t.ranges)a.push(n.range(Math.min(e.doc.length,r.anchor+s),Math.min(e.doc.length,r.head+s)))}else{i.push({from:o.from,to:t.from},{from:t.to,insert:e.lineBreak+o.text});for(let e of t.ranges)a.push(n.range(e.anchor-s,e.head-s))}}return i.length?(t(e.update({changes:i,scrollIntoView:!0,selection:n.create(a,e.selection.mainIndex),userEvent:`move.line`})),!0):!1}var Wt=({state:e,dispatch:t})=>Ut(e,t,!1),Gt=({state:e,dispatch:t})=>Ut(e,t,!0);function Kt(e,t,n){if(e.readOnly)return!1;let r=[];for(let t of Q(e))n?r.push({from:t.from,insert:e.doc.slice(t.from,t.to)+e.lineBreak}):r.push({from:t.to,insert:e.lineBreak+e.doc.slice(t.from,t.to)});let i=e.changes(r);return t(e.update({changes:i,selection:e.selection.map(i,n?1:-1),scrollIntoView:!0,userEvent:`input.copyline`})),!0}var qt=({state:e,dispatch:t})=>Kt(e,t,!1),Jt=({state:e,dispatch:t})=>Kt(e,t,!0),Yt=e=>{if(e.state.readOnly)return!1;let{state:t}=e,n=t.changes(Q(t).map(({from:e,to:n})=>(e>0?e--:n<t.doc.length&&n++,{from:e,to:n}))),r=F(t.selection,t=>{let n;if(e.lineWrapping){let r=e.lineBlockAt(t.head),i=e.coordsAtPos(t.head,t.assoc||1);i&&(n=r.bottom+e.documentTop-i.bottom+e.defaultLineHeight/2)}return e.moveVertically(t,!0,n)}).map(n);return e.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:`delete.line`}),!0};function Xt(e,t){if(/\(\)|\[\]|\{\}/.test(e.sliceDoc(t-1,t+1)))return{from:t,to:t};let n=i(e).resolveInner(t),r=n.childBefore(t),a=n.childAfter(t),o;return r&&a&&r.to<=t&&a.from>=t&&(o=r.type.prop(u.closedBy))&&o.indexOf(a.name)>-1&&e.doc.lineAt(r.to).from==e.doc.lineAt(a.from).from&&!/\S/.test(e.sliceDoc(r.to,a.from))?{from:r.to,to:a.from}:null}var Zt=$t(!1),Qt=$t(!0);function $t(e){return({state:t,dispatch:r})=>{if(t.readOnly)return!1;let i=t.changeByRange(r=>{let{from:i,to:a}=r,o=t.doc.lineAt(i),s=!e&&i==a&&Xt(t,i);e&&(i=a=(a<=o.to?o:t.doc.lineAt(a)).to);let c=new se(t,{simulateBreak:i,simulateDoubleBreak:!!s}),l=S(c,i);for(l??=v(/^\s*/.exec(t.doc.lineAt(i).text)[0],t.tabSize);a<o.to&&/\s/.test(o.text[a-o.from]);)a++;s?{from:i,to:a}=s:i>o.from&&i<o.from+100&&!/\S/.test(o.text.slice(0,i))&&(i=o.from);let u=[``,x(t,l)];return s&&u.push(x(t,c.lineIndent(o.from,-1))),{changes:{from:i,to:a,insert:ue.of(u)},range:n.cursor(i+1+u[1].length)}});return r(t.update(i,{scrollIntoView:!0,userEvent:`input`})),!0}}function $(e,t){let r=-1;return e.changeByRange(i=>{let a=[];for(let n=i.from;n<=i.to;){let o=e.doc.lineAt(n);o.number>r&&(i.empty||i.to>o.from)&&(t(o,a,i),r=o.number),n=o.to+1}let o=e.changes(a);return{changes:a,range:n.range(o.mapPos(i.anchor,1),o.mapPos(i.head,1))}})}var en=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=Object.create(null),r=new se(e,{overrideIndentation:e=>n[e]??-1}),i=$(e,(t,i,a)=>{let o=S(r,t.from);if(o==null)return;/\S/.test(t.text)||(o=0);let s=/^\s*/.exec(t.text)[0],c=x(e,o);(s!=c||a.from<t.from+s.length)&&(n[t.from]=o,i.push({from:t.from,to:t.from+s.length,insert:c}))});return i.changes.empty||t(e.update(i,{userEvent:`indent`})),!0},tn=({state:e,dispatch:t})=>!e.readOnly&&(t(e.update($(e,(t,n)=>{n.push({from:t.from,insert:e.facet(f)})}),{userEvent:`input.indent`})),!0),nn=({state:e,dispatch:t})=>!e.readOnly&&(t(e.update($(e,(t,n)=>{let r=/^\s*/.exec(t.text)[0];if(!r)return;let i=v(r,e.tabSize),a=0,o=x(e,Math.max(0,i-y(e)));for(;a<r.length&&a<o.length&&r.charCodeAt(a)==o.charCodeAt(a);)a++;n.push({from:t.from+a,to:t.from+r.length,insert:o.slice(a)})}),{userEvent:`delete.dedent`})),!0),rn=e=>(e.setTabFocusMode(),!0),an=[{key:`Ctrl-b`,run:V,shift:rt,preventDefault:!0},{key:`Ctrl-f`,run:H,shift:it},{key:`Ctrl-p`,run:We,shift:dt},{key:`Ctrl-n`,run:G,shift:ft},{key:`Ctrl-a`,run:Qe,shift:bt},{key:`Ctrl-e`,run:$e,shift:xt},{key:`Ctrl-d`,run:Pt},{key:`Ctrl-h`,run:Z},{key:`Ctrl-k`,run:Rt},{key:`Ctrl-Alt-h`,run:It},{key:`Ctrl-o`,run:Vt},{key:`Ctrl-t`,run:Ht},{key:`Ctrl-v`,run:K}],on=[{key:`ArrowLeft`,run:V,shift:rt,preventDefault:!0},{key:`Mod-ArrowLeft`,mac:`Alt-ArrowLeft`,run:Re,shift:ot,preventDefault:!0},{mac:`Cmd-ArrowLeft`,run:Xe,shift:vt,preventDefault:!0},{key:`ArrowRight`,run:H,shift:it,preventDefault:!0},{key:`Mod-ArrowRight`,mac:`Alt-ArrowRight`,run:ze,shift:st,preventDefault:!0},{mac:`Cmd-ArrowRight`,run:Ze,shift:yt,preventDefault:!0},{key:`ArrowUp`,run:We,shift:dt,preventDefault:!0},{mac:`Cmd-ArrowUp`,run:St,shift:wt},{mac:`Ctrl-ArrowUp`,run:qe,shift:mt},{key:`ArrowDown`,run:G,shift:ft,preventDefault:!0},{mac:`Cmd-ArrowDown`,run:Ct,shift:Tt},{mac:`Ctrl-ArrowDown`,run:K,shift:ht},{key:`PageUp`,run:qe,shift:mt},{key:`PageDown`,run:K,shift:ht},{key:`Home`,run:Ye,shift:_t,preventDefault:!0},{key:`Mod-Home`,run:St,shift:wt},{key:`End`,run:Je,shift:gt,preventDefault:!0},{key:`Mod-End`,run:Ct,shift:Tt},{key:`Enter`,run:Zt,shift:Zt},{key:`Mod-a`,run:Et},{key:`Backspace`,run:Z,shift:Z,preventDefault:!0},{key:`Delete`,run:Pt,preventDefault:!0},{key:`Mod-Backspace`,mac:`Alt-Backspace`,run:It,preventDefault:!0},{key:`Mod-Delete`,mac:`Alt-Delete`,run:Lt,preventDefault:!0},{mac:`Mod-Backspace`,run:zt,preventDefault:!0},{mac:`Mod-Delete`,run:Bt,preventDefault:!0}].concat(an.map(e=>({mac:e.key,run:e.run,shift:e.shift}))),sn=[{key:`Alt-ArrowLeft`,mac:`Ctrl-ArrowLeft`,run:Ve,shift:ct},{key:`Alt-ArrowRight`,mac:`Ctrl-ArrowRight`,run:He,shift:lt},{key:`Alt-ArrowUp`,run:Wt},{key:`Shift-Alt-ArrowUp`,run:qt},{key:`Alt-ArrowDown`,run:Gt},{key:`Shift-Alt-ArrowDown`,run:Jt},{key:`Mod-Alt-ArrowUp`,run:At},{key:`Mod-Alt-ArrowDown`,run:jt},{key:`Escape`,run:Mt},{key:`Mod-Enter`,run:Qt},{key:`Alt-l`,mac:`Ctrl-l`,run:Dt},{key:`Mod-i`,run:Ot,preventDefault:!0},{key:`Mod-[`,run:nn},{key:`Mod-]`,run:tn},{key:`Mod-Alt-\\`,run:en},{key:`Shift-Mod-k`,run:Yt},{key:`Shift-Mod-\\`,run:tt},{key:`Mod-/`,run:me},{key:`Alt-A`,mac:`Ctrl-A`,run:ge},{key:`Ctrl-m`,mac:`Shift-Alt-m`,run:rn}].concat(on),cn=e({SliccEditorElement:()=>hn}),ln={json:async()=>{let{json:e}=await t(async()=>{let{json:e}=await import(`./dist-BamC4SL9.js`);return{json:e}},__vite__mapDeps([0,1,2]));return e()},markdown:async()=>{let{markdown:e}=await t(async()=>{let{markdown:e}=await import(`./dist-CJQsHfm3.js`);return{markdown:e}},__vite__mapDeps([3,1,4,2]));return e()},html:async()=>{let{html:e}=await t(async()=>{let{html:e}=await import(`./dist-Cre853-J.js`);return{html:e}},__vite__mapDeps([4,1,2]));return e()}};function un(e){return e?de.define([{tag:r.keyword,color:`#d19afc`},{tag:r.string,color:`#87d68d`},{tag:r.number,color:`#f5a76c`},{tag:r.comment,color:`#8a8a8a`,fontStyle:`italic`},{tag:r.punctuation,color:`#7cc5e9`},{tag:r.function(r.variableName),color:`#7ea8f8`},{tag:r.propertyName,color:`#7ea8f8`},{tag:r.bool,color:`#f5a76c`},{tag:r.null,color:`#f5a76c`},{tag:r.operator,color:`#7cc5e9`},{tag:r.typeName,color:`#d19afc`},{tag:r.tagName,color:`#d19afc`},{tag:r.attributeName,color:`#87d68d`},{tag:r.attributeValue,color:`#87d68d`},{tag:r.heading,fontWeight:`bold`},{tag:r.emphasis,fontStyle:`italic`},{tag:r.strong,fontWeight:`bold`}]):de.define([{tag:r.keyword,color:`#8839ef`},{tag:r.string,color:`#40a02b`},{tag:r.number,color:`#d05d1a`},{tag:r.comment,color:`#8a8a8a`,fontStyle:`italic`},{tag:r.punctuation,color:`#1e66f5`},{tag:r.function(r.variableName),color:`#2b6cb0`},{tag:r.propertyName,color:`#2b6cb0`},{tag:r.bool,color:`#d05d1a`},{tag:r.null,color:`#d05d1a`},{tag:r.operator,color:`#1e66f5`},{tag:r.typeName,color:`#8839ef`},{tag:r.tagName,color:`#8839ef`},{tag:r.attributeName,color:`#40a02b`},{tag:r.attributeValue,color:`#40a02b`},{tag:r.heading,fontWeight:`bold`},{tag:r.emphasis,fontStyle:`italic`},{tag:r.strong,fontWeight:`bold`}])}function dn(e){return!(e.closest?.(`.theme-light`)||document.documentElement.classList.contains(`theme-light`))}function fn(){return s.theme({"&":{fontSize:`13px`,border:`1px solid var(--s2-border-subtle, #333)`,borderRadius:`var(--s2-radius-default, 8px)`,overflow:`hidden`},"&.cm-focused":{outline:`none`,borderColor:`var(--s2-border-focus, var(--s2-accent, #3562ff))`},".cm-content":{fontFamily:`var(--s2-font-mono, "SF Mono", "Fira Code", Consolas, monospace)`,caretColor:`var(--s2-accent, #3562ff)`,padding:`8px 0`},".cm-scroller":{overflow:`auto`},".cm-cursor, .cm-dropCursor":{borderLeftColor:`var(--s2-accent, #3562ff)`},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground":{background:`color-mix(in srgb, var(--s2-accent, #3562ff) 20%, transparent)`},".cm-activeLine":{background:`color-mix(in srgb, var(--s2-accent, #3562ff) 5%, transparent)`},".cm-gutters":{backgroundColor:`var(--s2-bg-layer-1, #1a1a1a)`,color:`var(--s2-content-tertiary, #5a5a5a)`,borderRight:`none`,borderRadius:`var(--s2-radius-default, 8px) 0 0 var(--s2-radius-default, 8px)`},".cm-lineNumbers .cm-gutterElement":{padding:`0 8px 0 12px`,minWidth:`32px`},".cm-placeholder":{color:`var(--s2-content-tertiary, #5a5a5a)`,fontStyle:`italic`}})}var pn=`
3
+ :host {
4
+ display: block;
5
+ background: var(--s2-bg-layer-2, var(--s2-gray-75, #252525));
6
+ border-radius: var(--s2-radius-default, 8px);
7
+ color: var(--s2-content-default, #cfcfcf);
8
+ }
9
+ .cm-editor {
10
+ background: var(--s2-bg-layer-2, var(--s2-gray-75, #252525));
11
+ }
12
+ `,mn=class extends p{color;tooltip;constructor(e,t){super(),this.color=e,this.tooltip=t}toDOM(){let e=document.createElement(`span`);return e.style.cssText=`display:inline-block;width:8px;height:8px;border-radius:50%;background:${this.color};`,this.tooltip&&(e.title=this.tooltip),e}},hn=class extends HTMLElement{view=null;langCompartment=new d;highlightCompartment=new d;lineNumberCompartment=new d;readonlyCompartment=new d;gutterCompartment=new d;placeholderCompartment=new d;shadowRoot_;placeholderText=``;connected=!1;langRequestId=0;static get observedAttributes(){return[`language`,`line-numbers`,`readonly`]}constructor(){super(),this.shadowRoot_=this.attachShadow({mode:`open`})}connectedCallback(){if(this.connected)return;this.connected=!0,this.placeholderText=this.textContent?.trim()??``,this.textContent=``;let e=un(dn(this)),t=[fn(),this.highlightCompartment.of(a(e)),a(ae,{fallback:!0}),this.langCompartment.of([]),this.lineNumberCompartment.of(this.hasAttribute(`line-numbers`)?le():[]),this.readonlyCompartment.of(_.readOnly.of(this.hasAttribute(`readonly`))),this.gutterCompartment.of([]),this.placeholderCompartment.of(this.placeholderText?c(this.placeholderText):[]),Ee(),l.of([...sn,...Le]),s.updateListener.of(e=>{e.docChanged&&this.dispatchEvent(new CustomEvent(`change`,{detail:{value:e.state.doc.toString()},bubbles:!0}))})],n=document.createElement(`style`);n.textContent=pn,this.shadowRoot_.appendChild(n);let r=document.createElement(`div`);this.shadowRoot_.appendChild(r),this.view=new s({state:_.create({extensions:t}),parent:r,root:this.shadowRoot_});let i=this.getAttribute(`language`);i&&this.loadLanguage(i),pe(this,[`value`])}disconnectedCallback(){this.view?.destroy(),this.view=null,this.connected=!1}attributeChangedCallback(e,t,n){if(this.view)switch(e){case`language`:n?this.loadLanguage(n):this.view.dispatch({effects:this.langCompartment.reconfigure([])});break;case`line-numbers`:this.view.dispatch({effects:this.lineNumberCompartment.reconfigure(n===null?[]:le())});break;case`readonly`:this.view.dispatch({effects:this.readonlyCompartment.reconfigure(_.readOnly.of(n!==null))})}}get value(){return this.view?.state.doc.toString()??``}set value(e){this.view&&this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:e}})}setHighlighter(e){if(!this.view)return;let t=ie.define(e);this.view.dispatch({effects:this.langCompartment.reconfigure(t)})}setGutterMarkers(e){if(!this.view)return;let t=new Map;for(let[n,r]of Object.entries(e))t.set(Number(n),new mn(r.color,r.tooltip));let n=o({class:`cm-slicc-markers`,lineMarker:(e,n)=>{let r=e.state.doc.lineAt(n.from).number;return t.get(r)??null}});this.view.dispatch({effects:this.gutterCompartment.reconfigure(n)})}async loadLanguage(e){let t=++this.langRequestId,n=ln[e.toLowerCase()];if(!n){this.langRequestId===t&&this.view?.dispatch({effects:this.langCompartment.reconfigure([])});return}let r=await n();this.langRequestId===t&&this.view?.dispatch({effects:this.langCompartment.reconfigure(r)})}};customElements.get(`slicc-editor`)||customElements.define(`slicc-editor`,hn);export{cn as t};
@@ -0,0 +1 @@
1
+ import{c as e}from"./dist-Bwf-JITi.js";import"./slicc-editor-Bhg4cWBq.js";window.__SLICC_CM6__={StreamLanguage:e};
@@ -0,0 +1 @@
1
+ function e(){return{version:`6.110.4`,releasedAt:`2026-08-29T17:57:17Z`,buildId:`6.110.4-mteononv`}}let t=null;function n(e){t=e}function r(){return t}export{e as n,n as r,r as t};