sliccy 6.164.1 → 6.166.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/dist/node-server/_shared/agent-wire-types.d.ts +7 -1
  2. package/dist/node-server/_shared/agent-wire-types.d.ts.map +1 -1
  3. package/dist/node-server/_shared/computer-protocol.d.ts +108 -0
  4. package/dist/node-server/_shared/computer-protocol.d.ts.map +1 -0
  5. package/dist/node-server/_shared/computer-protocol.js +10 -0
  6. package/dist/node-server/_shared/computer-protocol.js.map +1 -0
  7. package/dist/node-server/_shared/index.d.ts +1 -0
  8. package/dist/node-server/_shared/index.d.ts.map +1 -1
  9. package/dist/node-server/_shared/index.js +1 -0
  10. package/dist/node-server/_shared/index.js.map +1 -1
  11. package/dist/ui/.vite/manifest.json +184 -174
  12. package/dist/ui/assets/{SKILL-C8DJkgFD.js → SKILL-BGEZa-y0.js} +1 -1
  13. package/dist/ui/assets/SKILL-DB5CVwyu.js +1 -0
  14. package/dist/ui/assets/SKILL-DEFDsScb.js +1 -0
  15. package/dist/ui/assets/SKILL-DZoCcID_.js +1 -0
  16. package/dist/ui/assets/{SKILL-BXSAhY0E.js → SKILL-cOU0zXaK.js} +3 -0
  17. package/dist/ui/assets/__vite-browser-external-C-cVeSv_.js +1 -0
  18. package/dist/ui/assets/{account-store-CScbFg3i.js → account-store-BEqmysw9.js} +1 -1
  19. package/dist/ui/assets/{account-store-DEob4Tob.js → account-store-C35GYvum.js} +1 -1
  20. package/dist/ui/assets/{adobe-CgamcTLU.js → adobe-BDH5oLAN.js} +1 -1
  21. package/dist/ui/assets/adobe-BcTGFCnQ.js +1 -0
  22. package/dist/ui/assets/{agent-panels-XcqgFmF4.js → agent-panels-DvqNnkLk.js} +1 -1
  23. package/dist/ui/assets/almost-bash-shell-headless-DqTtE9CM.js +3500 -0
  24. package/dist/ui/assets/{apply-layout-BDanZxtJ.js → apply-layout-CjYRGs37.js} +1 -1
  25. package/dist/ui/assets/{approver-agent-CCkU0PVa.js → approver-agent-CvnFt_s6.js} +1 -1
  26. package/dist/ui/assets/{apps-CU2dHbHf.js → apps-dzoLZ_5W.js} +1 -1
  27. package/dist/ui/assets/{azure-openai-kjz9Dci1.js → azure-openai-BffwoCtp.js} +1 -1
  28. package/dist/ui/assets/{azure-openai-Cl5VKD9d.js → azure-openai-DKGdcr4S.js} +1 -1
  29. package/dist/ui/assets/{backend-hostfs-DU0NS-tW.js → backend-hostfs-CWIlIhve.js} +1 -1
  30. package/dist/ui/assets/bridge-protocol-31SWTdS5.js +1 -0
  31. package/dist/ui/assets/{browser-fOe3v0iv.js → browser-eoO4vY7w.js} +1 -1
  32. package/dist/ui/assets/buffer-polyfill-BccMjOKj.js +1 -0
  33. package/dist/ui/assets/{cdp-Cry6h07Z.js → cdp-DXT6yEL1.js} +1 -1
  34. package/dist/ui/assets/{cerebras-DrMQuNWj.js → cerebras-BF5efkRL.js} +1 -1
  35. package/dist/ui/assets/{cerebras-CWXTOiZB.js → cerebras-By0l7t0i.js} +1 -1
  36. package/dist/ui/assets/{composer-speech-HE7hDylv.js → composer-speech-DIEePbQC.js} +1 -1
  37. package/dist/ui/assets/{connect-surface-DTj_-b2c.js → connect-surface-DBqs7oHf.js} +1 -1
  38. package/dist/ui/assets/{cost-command-DlIH8zCh.js → cost-command-BULzLcvz.js} +1 -1
  39. package/dist/ui/assets/descriptor-S4Jug1iP.js +1 -0
  40. package/dist/ui/assets/directed-approval-D1lGElvD.js +1 -0
  41. package/dist/ui/assets/engine-B-OPe78i.js +1 -0
  42. package/dist/ui/assets/{ensure-speech-assets-Bdq2ASEA.js → ensure-speech-assets-BJXemBO4.js} +1 -1
  43. package/dist/ui/assets/esp8266-l8ELjmQJ.js +1 -0
  44. package/dist/ui/assets/esptool-operations-h8-8jVn_.js +13 -0
  45. package/dist/ui/assets/fake-computer-1f2_4vxY.js +65 -0
  46. package/dist/ui/assets/{frozen-archive-writer-B1ANvJgT.js → frozen-archive-writer-DYPhPMg7.js} +2 -2
  47. package/dist/ui/assets/{fs-Dlit1SL1.js → fs-BapOupIM.js} +2 -2
  48. package/dist/ui/assets/{fs-DZGgOIET.js → fs-CBH-hQcI.js} +1 -1
  49. package/dist/ui/assets/gelatiere-store-C2u47uk0.js +1 -0
  50. package/dist/ui/assets/gelatiere-unit-wvDEO7gH.js +1 -0
  51. package/dist/ui/assets/{github-C5AdaH2F.js → github-Bx7_6LBm.js} +2 -2
  52. package/dist/ui/assets/{github-CGPZBKqk.js → github-Db015Tee.js} +1 -1
  53. package/dist/ui/assets/{github-auth-BEjdODKn.js → github-auth-DtKS6UIX.js} +1 -1
  54. package/dist/ui/assets/{github-copilot-D5K0xdpB.js → github-copilot-CtOjxhqK.js} +1 -1
  55. package/dist/ui/assets/{github-copilot-6b_0-c1B.js → github-copilot-eCfmryv6.js} +1 -1
  56. package/dist/ui/assets/{github-install-DLv9ZHaT.js → github-install-B6W4-xcc.js} +1 -1
  57. package/dist/ui/assets/{github-zip-pP3IhiBQ.js → github-zip-Bv1smNmy.js} +1 -1
  58. package/dist/ui/assets/handoff-link-B3It6xQY.js +1 -0
  59. package/dist/ui/assets/{hear-CybMJQVi.js → hear-BZHckZJM.js} +1 -1
  60. package/dist/ui/assets/{help-C1nN0w8V.js → help-BU2Hjl0P.js} +1 -1
  61. package/dist/ui/assets/host-BQ2qKD-D.js +1 -0
  62. package/dist/ui/assets/{installer-Chacgw8i.js → installer-BbtH3u7z.js} +1 -1
  63. package/dist/ui/assets/js-realm-worker-BT3mfq3w.js +50 -0
  64. package/dist/ui/assets/jsh-CrSWPG4t.js +1 -0
  65. package/dist/ui/assets/jsh-discovery-D3Gk1cKA.js +1 -0
  66. package/dist/ui/assets/jsh-executor-BWlgcE2N.js +18 -0
  67. package/dist/ui/assets/jsh-runtime-extensions-BnLXkzqP.js +1 -0
  68. package/dist/ui/assets/just-bash-compat-B-SPHuh_.js +1 -0
  69. package/dist/ui/assets/kernel-worker-Dseu067f.js +1185 -0
  70. package/dist/ui/assets/{key-GVxFyssW.js → key-6HWbWSGF.js} +1 -1
  71. package/dist/ui/assets/keys-n5_C9sHW.js +1 -0
  72. package/dist/ui/assets/lick-urls-DdKPDlgq.js +1 -0
  73. package/dist/ui/assets/{lick-ws-bridge-BMov8z0m.js → lick-ws-bridge-Cc9sToY7.js} +1 -1
  74. package/dist/ui/assets/lick-ws-bridge-ChigxI36.js +1 -0
  75. package/dist/ui/assets/live-session-snapshot-B70raB09.js +1 -0
  76. package/dist/ui/assets/{local-llm-B7zAVGSm.js → local-llm-Dcp5IIP-.js} +1 -1
  77. package/dist/ui/assets/{local-llm-ByCXv2P-.js → local-llm-DpSg-Oe3.js} +1 -1
  78. package/dist/ui/assets/{main-yKaIA_zV.js → main-CfF8CFBr.js} +3 -3
  79. package/dist/ui/assets/{main-cherry-BNWE5vJO.js → main-cherry-VckJPHm5.js} +1 -1
  80. package/dist/ui/assets/memory-curation-seam-DUaZFZG9.js +1 -0
  81. package/dist/ui/assets/memory-health-D7uEvfAx.js +1 -0
  82. package/dist/ui/assets/memory-v2-flag-BHVbti6Z.js +1 -0
  83. package/dist/ui/assets/memory-write-execute-rXtR1z76.js +1 -0
  84. package/dist/ui/assets/merge-file-core-VJlzucJY.js +11 -0
  85. package/dist/ui/assets/{mount-DvrzOwsL.js → mount-8lU2iH4k.js} +3 -3
  86. package/dist/ui/assets/mount-DoM0CLGG.js +1 -0
  87. package/dist/ui/assets/{new-session-C4AXW_7S.js → new-session-DEhAjxP1.js} +2 -2
  88. package/dist/ui/assets/{oauth-bootstrap-mNVnQZ_Q.js → oauth-bootstrap-DNTgbEZF.js} +2 -2
  89. package/dist/ui/assets/{onboarding-orchestrator-BwCfbdlW.js → onboarding-orchestrator-DzPQ0pVG.js} +1 -1
  90. package/dist/ui/assets/{openai-codex-DRyLvc3I.js → openai-codex-CsAhfz0D.js} +1 -1
  91. package/dist/ui/assets/{openai-codex-Subg_Vg8.js → openai-codex-DYRKYWTe.js} +1 -1
  92. package/dist/ui/assets/{openrouter-D5mJU1oF.js → openrouter-D9T6tXUF.js} +1 -1
  93. package/dist/ui/assets/{openrouter-B52vd-zH.js → openrouter-IyZlRHg4.js} +1 -1
  94. package/dist/ui/assets/{openrouter-free-CYBINFem.js → openrouter-free-CPshAgQD.js} +1 -1
  95. package/dist/ui/assets/{openrouter-free-CKmFPQ3y.js → openrouter-free-DfbYsnmf.js} +1 -1
  96. package/dist/ui/assets/{openrouter-oauth-BUFYoKT3.js → openrouter-oauth-hZg6oH0A.js} +1 -1
  97. package/dist/ui/assets/{openrouter-oauth-BML-cBKi.js → openrouter-oauth-xKlWi_wI.js} +1 -1
  98. package/dist/ui/assets/{opfs-mount-DmOQi3qJ.js → opfs-mount-C9Iamj6N.js} +1 -1
  99. package/dist/ui/assets/panel-rpc-handlers-Nu-wOrG9.js +2 -0
  100. package/dist/ui/assets/{panelize-shell-CJS6Q9hY.js → panelize-shell-tFElgHWF.js} +1 -1
  101. package/dist/ui/assets/pi-edit-execution-D6vx5LyF.js +2 -0
  102. package/dist/ui/assets/provider-3--cEcAF.js +1 -0
  103. package/dist/ui/assets/{provider-G-FXP5U3.js → provider-Z5aj7SzG.js} +2 -2
  104. package/dist/ui/assets/provider-settings-D9sjEfYE.js +1 -0
  105. package/dist/ui/assets/provider-store-access-M0PvJ08M.js +1 -0
  106. package/dist/ui/assets/provider-store-access-RxIHhH6d.js +1 -0
  107. package/dist/ui/assets/{providers-BT71Fchh.js → providers-CnoKdyLc.js} +2 -2
  108. package/dist/ui/assets/{providers-C1P4Z_in.js → providers-DVvrXbtx.js} +1 -1
  109. package/dist/ui/assets/{py-realm-worker-BRyQamcA.js → py-realm-worker-DXmzJqJi.js} +2 -2
  110. package/dist/ui/assets/{pyodide-DwR4k6wB.js → pyodide-b5uAaIjj.js} +2 -2
  111. package/dist/ui/assets/{quick-llm-BOu12xbc.js → quick-llm-DjWE-wQw.js} +1 -1
  112. package/dist/ui/assets/realm-inprocess-D0iWBQzz.js +30 -0
  113. package/dist/ui/assets/record-ChU1ND2B.js +1 -0
  114. package/dist/ui/assets/{recovery-screen-D_LwQpCA.js → recovery-screen-Y1CSyfR-.js} +1 -1
  115. package/dist/ui/assets/registry-Bq_j-EXx.js +1 -0
  116. package/dist/ui/assets/restore-DOkDX8BI.js +1 -0
  117. package/dist/ui/assets/{run-BFLhWKKw.js → run-B-fA26ea.js} +1 -1
  118. package/dist/ui/assets/run-BEt0RS3J.js +52 -0
  119. package/dist/ui/assets/{run-BGSKahNd.js → run-BOc9XLhg.js} +1 -1
  120. package/dist/ui/assets/run-BOkp5G58.js +91 -0
  121. package/dist/ui/assets/{run-CS-v8Znz.js → run-BWJSDhS7.js} +2 -2
  122. package/dist/ui/assets/{run-Dfw_vahy.js → run-Bld9B0W0.js} +1 -1
  123. package/dist/ui/assets/{run-CrPSdmNd.js → run-CISIYZMm.js} +1 -1
  124. package/dist/ui/assets/{run-MvSXwrUs.js → run-D0C4PgZM.js} +4 -4
  125. package/dist/ui/assets/{run-_2GCYBFU.js → run-DgNh1E56.js} +2 -2
  126. package/dist/ui/assets/{run-DWBPrvVI.js → run-DniTiLYn.js} +1 -1
  127. package/dist/ui/assets/run-a67LpkRp.js +42 -0
  128. package/dist/ui/assets/{run-BCXMG6On.js → run-vEDh-Me-.js} +6 -6
  129. package/dist/ui/assets/screencapture-media-B1iFS6Qy.js +1 -0
  130. package/dist/ui/assets/{screencapture-run-CfJW-gGP.js → screencapture-run-XrgS6hEd.js} +2 -2
  131. package/dist/ui/assets/script-catalog-CgT8L-OG.js +2 -0
  132. package/dist/ui/assets/{session-command-memory-0P878oz2.js → session-command-memory-DB2GmPSU.js} +2 -2
  133. package/dist/ui/assets/{session-jsonl-MJMdfn6X.js → session-jsonl-DFC-2T76.js} +1 -1
  134. package/dist/ui/assets/{session-jsonl-f7vG8uaN.js → session-jsonl-D_pTYppB.js} +1 -1
  135. package/dist/ui/assets/{session-search-index-BQmbRVuk.js → session-search-index-CN1zDLlx.js} +2 -2
  136. package/dist/ui/assets/{setup-feature-flags-remote-KCi8ndrR.js → setup-feature-flags-remote-BVd31Z12.js} +1 -1
  137. package/dist/ui/assets/signed-fetch-BY2Mdjqe.js +1 -0
  138. package/dist/ui/assets/{silent-renew-backoff-B06r5ZL-.js → silent-renew-backoff-CKAAh6GN.js} +1 -1
  139. package/dist/ui/assets/{silent-renew-backoff-DIMz5UqB.js → silent-renew-backoff-Dmz3DJHb.js} +1 -1
  140. package/dist/ui/assets/slicc-version-BZyTvfoc.js +1 -0
  141. package/dist/ui/assets/{snapshot-features-vq3FCiv5.js → snapshot-features-DjMJkCGq.js} +1 -1
  142. package/dist/ui/assets/{snapshot-BykuJ4wW.js → snapshot-gi8tDzvN.js} +1 -1
  143. package/dist/ui/assets/{soundscape-DQGEZGwB.js → soundscape-Bl3LhUk9.js} +1 -1
  144. package/dist/ui/assets/{speak-DivfwK0_.js → speak-BY_fDou2.js} +1 -1
  145. package/dist/ui/assets/{sprinkle-manager-rSxSSd0J.js → sprinkle-manager-C-NUJqPy.js} +1 -1
  146. package/dist/ui/assets/{sprinkle-renderer-Ul_GPDpn.js → sprinkle-renderer-CcA6ie5u.js} +1 -1
  147. package/dist/ui/assets/{state-CGafQVGp.js → state-z3wOHLww.js} +1 -1
  148. package/dist/ui/assets/{store-qzvn3yV9.js → store-ByUcAFUa.js} +1 -1
  149. package/dist/ui/assets/{store-BbZGuhdS.js → store-ChWzn_H8.js} +1 -1
  150. package/dist/ui/assets/{sudo-BLaOJiyv.js → sudo-DNZFIZ-H.js} +1 -1
  151. package/dist/ui/assets/sudo-fs-D620mZry.js +3 -0
  152. package/dist/ui/assets/supervisor-BtH2-9sE.js +1 -0
  153. package/dist/ui/assets/{sync-dialog-CfQLao_i.js → sync-dialog-Jqz74VkZ.js} +1 -1
  154. package/dist/ui/assets/sync-sab-wire-CC30v4TL.js +252 -0
  155. package/dist/ui/assets/tab-ToMhjbM4.js +1 -0
  156. package/dist/ui/assets/{transformers-env-7c5cDYNs.js → transformers-env-pq1E2H6B.js} +1 -1
  157. package/dist/ui/assets/{tray-leader-DqDL2jwl.js → tray-leader-Bas0lH9O.js} +1 -1
  158. package/dist/ui/assets/{tray-leave-runtime-Fs59e1NT.js → tray-leave-runtime-B9aV_guA.js} +1 -1
  159. package/dist/ui/assets/tray-runtime-config-BZoJXfW0.js +1 -0
  160. package/dist/ui/assets/{tray-sidecar-DuSizsy1.js → tray-sidecar-DA8NfCV6.js} +1 -1
  161. package/dist/ui/assets/upgrade-detection-B5ym__Gu.js +1 -0
  162. package/dist/ui/assets/{upskill-lick-skip-B0aTroa_.js → upskill-lick-skip-CZGM2OFA.js} +1 -1
  163. package/dist/ui/assets/v86-DseFx8Yp.js +1 -0
  164. package/dist/ui/assets/v86-vm-DCm7zA2r.js +2 -0
  165. package/dist/ui/assets/{voice-reply-BDW4paEk.js → voice-reply-CL5tDo0l.js} +1 -1
  166. package/dist/ui/assets/{wc-attach-C1JExhF6.js → wc-attach-C5yXIQNU.js} +2 -2
  167. package/dist/ui/assets/{wc-detached-YxBsBh4A.js → wc-detached-f_qit-5b.js} +1 -1
  168. package/dist/ui/assets/{wc-extension-CVnsFSuW.js → wc-extension-DRx21-cq.js} +2 -2
  169. package/dist/ui/assets/{wc-follower-CUovZlpa.js → wc-follower-DcKt92kM.js} +3 -3
  170. package/dist/ui/assets/{wc-follower-oauth-Bxhy8p-W.js → wc-follower-oauth-BF3qXDTt.js} +1 -1
  171. package/dist/ui/assets/{wc-gelatiere-CxkjwV-m.js → wc-gelatiere-qAW7lWGW.js} +1 -1
  172. package/dist/ui/assets/{wc-live-br4wUYv7.js → wc-live-DOMCfDT6.js} +6 -6
  173. package/dist/ui/assets/{wc-nav-ChrnrxPa.js → wc-nav-DzPuXq_n.js} +2 -2
  174. package/dist/ui/assets/{wc-onboarding-D2v396gn.js → wc-onboarding-CXM-z-7_.js} +2 -2
  175. package/dist/ui/assets/{wc-placeholder-Bw-g85Ke.js → wc-placeholder-BBqbsuml.js} +3 -3
  176. package/dist/ui/assets/{wc-secret-request-BK3k0VlW.js → wc-secret-request-BSUlxVVi.js} +1 -1
  177. package/dist/ui/assets/{wc-settings-D84UzOS6.js → wc-settings-55mC-jVS.js} +3 -3
  178. package/dist/ui/assets/{wc-shell-CKhQ3qyn.js → wc-shell-C71iKreG.js} +4 -4
  179. package/dist/ui/assets/{wc-shortcut-config-DFPLI7su.js → wc-shortcut-config-Crjq_rF1.js} +1 -1
  180. package/dist/ui/assets/{wc-sprinkles-Cf6JnkDK.js → wc-sprinkles-Caji5y7n.js} +2 -2
  181. package/dist/ui/assets/{wc-transcript-export-BbJ1QcHb.js → wc-transcript-export-Dqe3SH1t.js} +2 -2
  182. package/dist/ui/assets/{wc-tray-BEzyYj77.js → wc-tray-B7ayzT1W.js} +4 -4
  183. package/dist/ui/assets/welcome-detection-CEARSpAq.js +1 -0
  184. package/dist/ui/assets/{whisper-session-Ch3Rub5j.js → whisper-session-DfILe4Yb.js} +2 -2
  185. package/dist/ui/assets/workspace-mode-D0kUKBVS.js +1 -0
  186. package/dist/ui/assets/{xai-grok-D4lk5fCR.js → xai-grok-CVLBrxdD.js} +1 -1
  187. package/dist/ui/assets/{xai-grok-BT_WDAT_.js → xai-grok-Dp8n52fO.js} +1 -1
  188. package/dist/ui/index.html +3 -3
  189. package/dist/ui/packages/webapp/index.html +3 -3
  190. package/package.json +1 -1
  191. package/dist/ui/assets/SKILL-CtxHowg1.js +0 -96
  192. package/dist/ui/assets/__vite-browser-external-CCBdZzAl.js +0 -1
  193. package/dist/ui/assets/adobe-CjAD_QGX.js +0 -1
  194. package/dist/ui/assets/agent-bridge-D_5Sd3oe.js +0 -12
  195. package/dist/ui/assets/agent-message-to-chat-w7n13QEN.js +0 -7
  196. package/dist/ui/assets/attachments-u2K0aIPI.js +0 -6
  197. package/dist/ui/assets/bridge-protocol-DdqxTTSu.js +0 -1
  198. package/dist/ui/assets/budget-usage-source-BW8-RCSb.js +0 -1
  199. package/dist/ui/assets/clipboard-CknViQHB.js +0 -1
  200. package/dist/ui/assets/cone-memory-budget-Cmi9vXV5.js +0 -15
  201. package/dist/ui/assets/db-DSIYsBgP.js +0 -1
  202. package/dist/ui/assets/derive-CZLe75z_.js +0 -1
  203. package/dist/ui/assets/descriptor-D-6Koktu.js +0 -1
  204. package/dist/ui/assets/directed-approval-D9smLm9q.js +0 -1
  205. package/dist/ui/assets/engine-BnH9pfmR.js +0 -1
  206. package/dist/ui/assets/esp8266-BN3fFVWu.js +0 -1
  207. package/dist/ui/assets/esptool-operations-lUvXx3gs.js +0 -13
  208. package/dist/ui/assets/feature-flags-Dl-xb1DG.js +0 -1
  209. package/dist/ui/assets/frozen-archive-format-B4efpvB9.js +0 -1
  210. package/dist/ui/assets/gelatiere-constants-BYJlhm8R.js +0 -1
  211. package/dist/ui/assets/gelatiere-store-CE_Ssheh.js +0 -1
  212. package/dist/ui/assets/gelatiere-unit-BMHtZLOW.js +0 -1
  213. package/dist/ui/assets/js-realm-worker-AwpbqZPU.js +0 -50
  214. package/dist/ui/assets/jsh-runtime-extensions-Bcb8_nba.js +0 -1
  215. package/dist/ui/assets/just-bash-compat-BwD6SoTi.js +0 -1
  216. package/dist/ui/assets/kernel-worker-BAcS3WAP.js +0 -4673
  217. package/dist/ui/assets/lick-manager-ULemXDKa.js +0 -2
  218. package/dist/ui/assets/lick-urls-BZVq_P3x.js +0 -1
  219. package/dist/ui/assets/lick-ws-bridge-CDToX4F0.js +0 -1
  220. package/dist/ui/assets/live-session-snapshot-Dv20JKP2.js +0 -1
  221. package/dist/ui/assets/manager-Bl9b7X9m.js +0 -1
  222. package/dist/ui/assets/memory-curation-seam-BAJK5Abp.js +0 -1
  223. package/dist/ui/assets/memory-health-MhSOmzAf.js +0 -1
  224. package/dist/ui/assets/memory-v2-flag-D85UWdUr.js +0 -1
  225. package/dist/ui/assets/memory-write-execute-BOjUkUIG.js +0 -1
  226. package/dist/ui/assets/mount-CTTWc8xh.js +0 -1
  227. package/dist/ui/assets/mount-recovery-T6cjQxeX.js +0 -2
  228. package/dist/ui/assets/panel-rpc-handlers-BG91KHPa.js +0 -2
  229. package/dist/ui/assets/pi-edit-execution-NnXkvjSi.js +0 -2
  230. package/dist/ui/assets/provider-CbAKIAon.js +0 -1
  231. package/dist/ui/assets/provider-settings-BuhBOwFs.js +0 -1
  232. package/dist/ui/assets/provider-store-access-CrH5offR.js +0 -1
  233. package/dist/ui/assets/provider-store-access-DgZnuRxY.js +0 -1
  234. package/dist/ui/assets/realm-inprocess-Bmsz-kPh.js +0 -30
  235. package/dist/ui/assets/record-YqlVEfh_.js +0 -1
  236. package/dist/ui/assets/run-33hnsiVQ.js +0 -91
  237. package/dist/ui/assets/screencapture-media-Dc-3ljgR.js +0 -1
  238. package/dist/ui/assets/screencapture-media-shared-BDUdmMOP.js +0 -1
  239. package/dist/ui/assets/script-catalog-Bt94D0RP.js +0 -2
  240. package/dist/ui/assets/skills-DWkSI8sH.js +0 -5
  241. package/dist/ui/assets/slicc-version-DAFTorvi.js +0 -1
  242. package/dist/ui/assets/sync-sab-wire-Cacrunmz.js +0 -252
  243. package/dist/ui/assets/tray-runtime-config-CRZxBChd.js +0 -1
  244. package/dist/ui/assets/upgrade-detection-CyCnJlGg.js +0 -1
  245. package/dist/ui/assets/welcome-detection-DjgSxU4V.js +0 -1
  246. package/dist/ui/assets/write-verification-BOaZdtyk.js +0 -1
@@ -0,0 +1 @@
1
+ import{n as e}from"./wc-onboarding-CXM-z-7_.js";export{e as hasOnboardingFinalLickInHistory};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-DivfwK0_.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/runtime-env-Dlaokqg1.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-7c5cDYNs.js","assets/wc-shell-CKhQ3qyn.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/mime-types-D0xZwlMO.js","assets/base64-DJRlyqZu.js","assets/bridge-protocol-06nbmp2X.js","assets/account-store-DEob4Tob.js","assets/core-BMcS6rur.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/proxied-fetch-DyBveeCl.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/secret-topology-DLJBhHOi.js","assets/float-topology-YtctpJaG.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/image-markers-BFDmhPy4.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-BT71Fchh.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/claude-model-version-aqjj5mtp.js","assets/telemetry-DJyRzh6X.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-BM2l-_K7.js","assets/wc-shell-WkeczD9x.css","assets/shared-mBEktoxE.js","assets/transformers.web-BBJR2ai3.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{a as n,n as r,o as i,r as a,t as o}from"./transformers-env-7c5cDYNs.js";var s=t(`speech:whisper`),c=null,l=`idle`,u=null,d=new Set;function f(){return l}function p(){return u}function m(e){return e&&d.add(e),c||=(l=`loading`,g().then(e=>(l=`ready`,h(),e),e=>{throw l=`failed`,c=null,s.error(`whisper load failed`,e),e})),c}function h(){e(async()=>{let{kokoroWarmup:e}=await import(`./speak-DivfwK0_.js`);return{kokoroWarmup: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,33,34,35,36,37])).then(({kokoroWarmup:e})=>e()).catch(e=>s.warn(`kokoro warmup (chained after whisper) failed`,e))}async function g(){let{pipeline:t,env:c}=await e(async()=>{let{pipeline:e,env:t}=await import(`./transformers.web-BBJR2ai3.js`);return{pipeline:e,env:t}},__vite__mapDeps([38,7,1]));r(c),await o(n),await a();let l=i(),f=e=>{if(e?.file){if(e.status===`progress`)l.update(e.file,e.loaded??0,e.total??0);else if(e.status===`done`)l.complete(e.file);else return;u=l.snapshot();for(let e of d)e(u)}},p=async e=>await t(`automatic-speech-recognition`,n,{device:e,dtype:e===`webgpu`?`fp32`:`q8`,progress_callback:f}),m=typeof navigator<`u`&&`gpu`in navigator,h;if(m)try{h=await p(`webgpu`)}catch(e){s.warn(`whisper webgpu init failed; retrying on wasm`,e),h=await p(`wasm`)}else h=await p(`wasm`);return s.info(`whisper ready`,{model:n,device:m?`webgpu`:`wasm`}),{async transcribe(e,t){let n=performance.now(),r=await h(e,{chunk_length_s:30,task:`transcribe`,...t?.language?{language:t.language}:{}}),i=Array.isArray(r)?r.map(e=>e.text??``).join(` `):r.text??``;return s.info(`whisper transcribe`,{elapsedMs:Math.round(performance.now()-n),audioSeconds:Math.round(e.length/160)/100,numThreads:c.backends?.onnx?.wasm?.numThreads,device:m?`webgpu`:`wasm`}),i.trim()}}}var _=16e3;async function v(e){if(typeof AudioContext>`u`||typeof OfflineAudioContext>`u`)throw Error(`audio decoding requires a window/page realm (AudioContext unavailable)`);let t=new AudioContext,n;try{n=await t.decodeAudioData(e.slice(0))}finally{await t.close().catch(()=>{})}let r=Math.max(1,Math.ceil(n.duration*_)),i=new OfflineAudioContext(1,r,_),a=i.createBufferSource();return a.buffer=n,a.connect(i.destination),a.start(),(await i.startRendering()).getChannelData(0).slice(0)}var y=t(`speech:whisper-session`),b=2e3,x=500,S=5e3,C=3e4,w=(e,t,n)=>new Promise((r,i)=>{let a=setTimeout(()=>i(Error(`${n} timed out after ${t}ms`)),t);e.then(e=>{clearTimeout(a),r(e)},e=>{clearTimeout(a),i(e)})});function T(e){return e?.split(`-`)[0]?.toLowerCase()||void 0}async function E(e,t){let n;if(t.stream)n=t.stream;else{if(!navigator.mediaDevices?.getUserMedia)throw Error(`microphone capture unavailable in this realm`);n=await navigator.mediaDevices.getUserMedia({audio:t.deviceId&&t.deviceId!=="default"?{deviceId:{exact:t.deviceId}}:!0})}let r=new MediaRecorder(n),i=[],a=T(t.lang),o=!1,s=!1;r.ondataavailable=e=>{e.data.size>0&&i.push(e.data)};let c=async()=>{if(i.length===0)return``;let t=await v(await new Blob(i,{type:r.mimeType||`audio/webm`}).arrayBuffer());return e.transcribe(t,{language:a})},l=Promise.resolve(``),u=()=>{let e=l.catch(()=>``).then(()=>c());return l=e.catch(()=>``),e},d=setInterval(()=>{o||s||i.length===0||(o=!0,u().then(e=>{!s&&e&&t.onPartial?.(e)}).catch(e=>{y.warn(`partial transcription failed`,e)}).finally(()=>{o=!1}))},b),f=()=>{if(clearInterval(d),r.state!==`inactive`)try{r.stop()}catch{}for(let e of n.getTracks())e.stop()},p=()=>new Promise(e=>{if(r.state===`inactive`){e();return}r.onstop=()=>e();try{r.stop()}catch{e()}});return r.start(x),{async stop(){if(s)return``;s=!0,clearInterval(d);try{await w(p(),S,`recorder flush`);for(let e of n.getTracks())e.stop();return await w(u(),C,`transcription`)}catch(e){for(let e of n.getTracks())e.stop();let r=e instanceof Error?e.message:String(e);return t.onError?.(`transcription failed: ${r}`),``}},cancel(){s||(s=!0,f())}}}export{p as a,m as i,T as n,f as o,v as r,E as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-BY_fDou2.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/runtime-env-Dlaokqg1.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-pq1E2H6B.js","assets/wc-shell-C71iKreG.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/mime-types-D0xZwlMO.js","assets/base64-DJRlyqZu.js","assets/bridge-protocol-06nbmp2X.js","assets/account-store-C35GYvum.js","assets/core-BMcS6rur.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/proxied-fetch-DyBveeCl.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/secret-topology-DLJBhHOi.js","assets/float-topology-YtctpJaG.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/image-markers-BFDmhPy4.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-CnoKdyLc.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/claude-model-version-aqjj5mtp.js","assets/telemetry-DJyRzh6X.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-BM2l-_K7.js","assets/wc-shell-WkeczD9x.css","assets/shared-mBEktoxE.js","assets/transformers.web-BBJR2ai3.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{a as n,n as r,o as i,r as a,t as o}from"./transformers-env-pq1E2H6B.js";var s=t(`speech:whisper`),c=null,l=`idle`,u=null,d=new Set;function f(){return l}function p(){return u}function m(e){return e&&d.add(e),c||=(l=`loading`,g().then(e=>(l=`ready`,h(),e),e=>{throw l=`failed`,c=null,s.error(`whisper load failed`,e),e})),c}function h(){e(async()=>{let{kokoroWarmup:e}=await import(`./speak-BY_fDou2.js`);return{kokoroWarmup: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,33,34,35,36,37])).then(({kokoroWarmup:e})=>e()).catch(e=>s.warn(`kokoro warmup (chained after whisper) failed`,e))}async function g(){let{pipeline:t,env:c}=await e(async()=>{let{pipeline:e,env:t}=await import(`./transformers.web-BBJR2ai3.js`);return{pipeline:e,env:t}},__vite__mapDeps([38,7,1]));r(c),await o(n),await a();let l=i(),f=e=>{if(e?.file){if(e.status===`progress`)l.update(e.file,e.loaded??0,e.total??0);else if(e.status===`done`)l.complete(e.file);else return;u=l.snapshot();for(let e of d)e(u)}},p=async e=>await t(`automatic-speech-recognition`,n,{device:e,dtype:e===`webgpu`?`fp32`:`q8`,progress_callback:f}),m=typeof navigator<`u`&&`gpu`in navigator,h;if(m)try{h=await p(`webgpu`)}catch(e){s.warn(`whisper webgpu init failed; retrying on wasm`,e),h=await p(`wasm`)}else h=await p(`wasm`);return s.info(`whisper ready`,{model:n,device:m?`webgpu`:`wasm`}),{async transcribe(e,t){let n=performance.now(),r=await h(e,{chunk_length_s:30,task:`transcribe`,...t?.language?{language:t.language}:{}}),i=Array.isArray(r)?r.map(e=>e.text??``).join(` `):r.text??``;return s.info(`whisper transcribe`,{elapsedMs:Math.round(performance.now()-n),audioSeconds:Math.round(e.length/160)/100,numThreads:c.backends?.onnx?.wasm?.numThreads,device:m?`webgpu`:`wasm`}),i.trim()}}}var _=16e3;async function v(e){if(typeof AudioContext>`u`||typeof OfflineAudioContext>`u`)throw Error(`audio decoding requires a window/page realm (AudioContext unavailable)`);let t=new AudioContext,n;try{n=await t.decodeAudioData(e.slice(0))}finally{await t.close().catch(()=>{})}let r=Math.max(1,Math.ceil(n.duration*_)),i=new OfflineAudioContext(1,r,_),a=i.createBufferSource();return a.buffer=n,a.connect(i.destination),a.start(),(await i.startRendering()).getChannelData(0).slice(0)}var y=t(`speech:whisper-session`),b=2e3,x=500,S=5e3,C=3e4,w=(e,t,n)=>new Promise((r,i)=>{let a=setTimeout(()=>i(Error(`${n} timed out after ${t}ms`)),t);e.then(e=>{clearTimeout(a),r(e)},e=>{clearTimeout(a),i(e)})});function T(e){return e?.split(`-`)[0]?.toLowerCase()||void 0}async function E(e,t){let n;if(t.stream)n=t.stream;else{if(!navigator.mediaDevices?.getUserMedia)throw Error(`microphone capture unavailable in this realm`);n=await navigator.mediaDevices.getUserMedia({audio:t.deviceId&&t.deviceId!=="default"?{deviceId:{exact:t.deviceId}}:!0})}let r=new MediaRecorder(n),i=[],a=T(t.lang),o=!1,s=!1;r.ondataavailable=e=>{e.data.size>0&&i.push(e.data)};let c=async()=>{if(i.length===0)return``;let t=await v(await new Blob(i,{type:r.mimeType||`audio/webm`}).arrayBuffer());return e.transcribe(t,{language:a})},l=Promise.resolve(``),u=()=>{let e=l.catch(()=>``).then(()=>c());return l=e.catch(()=>``),e},d=setInterval(()=>{o||s||i.length===0||(o=!0,u().then(e=>{!s&&e&&t.onPartial?.(e)}).catch(e=>{y.warn(`partial transcription failed`,e)}).finally(()=>{o=!1}))},b),f=()=>{if(clearInterval(d),r.state!==`inactive`)try{r.stop()}catch{}for(let e of n.getTracks())e.stop()},p=()=>new Promise(e=>{if(r.state===`inactive`){e();return}r.onstop=()=>e();try{r.stop()}catch{e()}});return r.start(x),{async stop(){if(s)return``;s=!0,clearInterval(d);try{await w(p(),S,`recorder flush`);for(let e of n.getTracks())e.stop();return await w(u(),C,`transcription`)}catch(e){for(let e of n.getTracks())e.stop();let r=e instanceof Error?e.message:String(e);return t.onError?.(`transcription failed: ${r}`),``}},cancel(){s||(s=!0,f())}}}export{p as a,m as i,T as n,f as o,v as r,E as t};
@@ -0,0 +1 @@
1
+ const e=`shared-readonly`,t=[`private`,`shared-readonly`],n=[`snapshot`,`shared-live`];[...t,...n];function r(e){return t.includes(e)}function i(e){return Error(`Workspace isolation mode '${e}' is not implemented. Use 'private' or 'shared-readonly'. Copy-on-write snapshots are deferred (RFC open question 4).`)}function a(t){return t===void 0||t===``?{ok:!0,mode:e}:r(t)?{ok:!0,mode:t}:t===`snapshot`||t===`shared-live`?{ok:!1,error:i(t).message}:{ok:!1,error:`Unknown workspace isolation mode '${t}'. Use 'private' or 'shared-readonly' (snapshot and shared-live are not implemented).`}}function o(e){let t=a(e);if(!t.ok)throw Error(t.error);return t.mode}function s(e){switch(e){case`private`:return 0;case`shared-readonly`:return 1;case`snapshot`:return 2;case`shared-live`:return 3}}function c(e){return e!==`private`}export{s as a,o as i,c as n,a as r,e as t};
@@ -1 +1 @@
1
- import{_ as e,r as t}from"./account-store-CScbFg3i.js";import{a as n}from"./diagnostics-DN_idNHx.js";import{a as r,r as i}from"./compat-uEPf6-XW.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-jKEvBgOL.js";import"./provider-settings-BuhBOwFs.js";import{n as l,r as u,t as d}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as f,XaiOAuthError as p}from"./xai-grok-errors-ByEMMSoz.js";function m(e){return typeof e==`object`&&!!e}function h(e){if(!m(e))return null;let t=m(e.config)?e.config:e,n=t.creditUsagePercent;if(typeof n!=`number`||!Number.isFinite(n))return null;let r=Math.min(1e3,Math.max(0,n)),i=m(t.currentPeriod)?t.currentPeriod:{},a=i.type,o=typeof a==`string`?a.replace(`USAGE_PERIOD_TYPE_`,``).toLowerCase():``,s=i.end??t.billingPeriodEnd,c=typeof s==`string`&&Number.isFinite(Date.parse(s))?s:void 0;return{percent:r,status:`ok`,window:o&&o!==`unspecified`?o:`billing`,...c?{resetsAt:c}:{}}}async function g(e,t,n={}){let r=new AbortController,i=setTimeout(()=>r.abort(),n.timeoutMs??8e3);try{let n=await t(`https://cli-chat-proxy.grok.com/v1/billing?format=credits`,{headers:{Authorization:`Bearer ${e}`},signal:r.signal}),{status:i}=n;if(i===404||i===501)return null;if(!n.ok)throw Error(`xAI Grok usage: ${i===401||i===403?`re-login required`:`failed`} (${i})`);let a=await n.text();if(a.length>65536)return null;try{return h(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}const _=`xai-grok`,v=`https://auth.x.ai`,y=`${v}/oauth2/authorize`,b=`${v}/oauth2/token`,x=`b1a00492-073a-47ea-816f-4c329264a828`,S=`http://127.0.0.1:56121/callback`,C=`https://api.x.ai/v1`,w=`grok-4.5`,T=`${_}-openai`;function E(){return i(`xai`)}function D(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap}}function O(e){let t=E(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${w}"`),n=t.find(e=>e.id===w),!n))throw Error(`xAI default model "${w}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:C}}async function k(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:S,client_id:x,code_verifier:t}),r=await fetch(b,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new p(`xAI token exchange failed: ${r.status} ${await r.text()}`,f.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new p(`xAI token exchange did not return access_token.`,f.TOKEN_EXCHANGE_INVALID);return i}async function A(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:x}),n=await fetch(b,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});return n.ok?await n.json():(console.error(`[xai-grok] refresh failed:`,n.status,await n.text()),null)}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function j(){return t().find(e=>e.providerId===_)}async function M(){let t=j();if(!t?.accessToken)throw new p("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",f.AUTH_MISSING,!0);let n=t.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return t.accessToken;if(t.refreshToken){let n=await A(t.refreshToken);if(n?.access_token)return await e({providerId:_,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3,scopes:n.scope??t.scopes}),n.access_token}return t.accessToken}async function N(){if(!j()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return g(await M(),fetch)}function P(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:T,provider:_,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function F(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function I(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function L(e,t,n,r){try{let i=await M(),a=r.sessionId,c=O(t),l={...r,apiKey:i,headers:F(r.headers,a)},u=c.api===`openai-responses`?o(c,n,l):s(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){I(n),e.push(P(t,n)),e.end()}}async function R(e,t,n,r){try{let i=await M(),o=r?.sessionId,s=O(t),l={...r,apiKey:i,headers:F(r?.headers,o)},u=s.api===`openai-responses`?a(s,n,l):c(s,n,l);for await(let t of u)e.push(t);e.end()}catch(n){I(n),e.push(P(t,n)),e.end()}}const z=(e,t,r={})=>{let i=n();return L(i,e,t,r).catch(I),i},B=(e,t,r)=>{let i=n();return R(i,e,t,r).catch(I),i},V={id:_,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.5.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:w,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>E().map(D),getBudgetUsage:N,onOAuthLoginIntercepted:async(t,n,r)=>{let i=l(),a=await d(i),o=u(),s=u(),c=new URL(y);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,x),c.searchParams.set(`redirect_uri`,S),c.searchParams.set(`scope`,r?.scopes??`openid profile email offline_access grok-cli:access api:access`),c.searchParams.set(`code_challenge`,a),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,o),c.searchParams.set(`nonce`,s),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let m=await t({authorizeUrl:c.toString(),redirectUriPattern:`http://127.0.0.1:56121/*`,onCapture:`close`});if(!m)throw new p(`xAI OAuth login was cancelled or timed out`,f.CALLBACK_TIMEOUT);let h=new URL(m),g=h.searchParams.get(`code`),v=h.searchParams.get(`state`);if(!g)throw new p(`xAI OAuth redirect did not include a code`,f.CODE_MISSING);if(v!==o)throw new p(`xAI OAuth state mismatch — possible CSRF, aborting`,f.STATE_MISMATCH);let b=await k(g,i);await e({providerId:_,accessToken:b.access_token,refreshToken:b.refresh_token,tokenExpiresAt:Date.now()+(b.expires_in??21600)*1e3,baseUrl:C,scopes:b.scope}),n()},onOAuthLogout:async()=>{await e({providerId:_,accessToken:``})},onSilentRenew:async()=>{let t=j();if(!t?.refreshToken)return null;let n=await A(t.refreshToken);return n?.access_token?(await e({providerId:_,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3,scopes:n.scope??t.scopes}),n.access_token):null}};function H(){r({api:T,stream:z,streamSimple:B})}export{f as XaiErrorCode,p as XaiOAuthError,V as config,H as register};
1
+ import{_ as e,r as t}from"./account-store-BEqmysw9.js";import{a as n}from"./diagnostics-DN_idNHx.js";import{a as r,r as i}from"./compat-uEPf6-XW.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-jKEvBgOL.js";import"./provider-settings-D9sjEfYE.js";import{n as l,r as u,t as d}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as f,XaiOAuthError as p}from"./xai-grok-errors-ByEMMSoz.js";function m(e){return typeof e==`object`&&!!e}function h(e){if(!m(e))return null;let t=m(e.config)?e.config:e,n=t.creditUsagePercent;if(typeof n!=`number`||!Number.isFinite(n))return null;let r=Math.min(1e3,Math.max(0,n)),i=m(t.currentPeriod)?t.currentPeriod:{},a=i.type,o=typeof a==`string`?a.replace(`USAGE_PERIOD_TYPE_`,``).toLowerCase():``,s=i.end??t.billingPeriodEnd,c=typeof s==`string`&&Number.isFinite(Date.parse(s))?s:void 0;return{percent:r,status:`ok`,window:o&&o!==`unspecified`?o:`billing`,...c?{resetsAt:c}:{}}}async function g(e,t,n={}){let r=new AbortController,i=setTimeout(()=>r.abort(),n.timeoutMs??8e3);try{let n=await t(`https://cli-chat-proxy.grok.com/v1/billing?format=credits`,{headers:{Authorization:`Bearer ${e}`},signal:r.signal}),{status:i}=n;if(i===404||i===501)return null;if(!n.ok)throw Error(`xAI Grok usage: ${i===401||i===403?`re-login required`:`failed`} (${i})`);let a=await n.text();if(a.length>65536)return null;try{return h(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}const _=`xai-grok`,v=`https://auth.x.ai`,y=`${v}/oauth2/authorize`,b=`${v}/oauth2/token`,x=`b1a00492-073a-47ea-816f-4c329264a828`,S=`http://127.0.0.1:56121/callback`,C=`https://api.x.ai/v1`,w=`grok-4.5`,T=`${_}-openai`;function E(){return i(`xai`)}function D(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap}}function O(e){let t=E(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${w}"`),n=t.find(e=>e.id===w),!n))throw Error(`xAI default model "${w}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:C}}async function k(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:S,client_id:x,code_verifier:t}),r=await fetch(b,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new p(`xAI token exchange failed: ${r.status} ${await r.text()}`,f.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new p(`xAI token exchange did not return access_token.`,f.TOKEN_EXCHANGE_INVALID);return i}async function A(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:x}),n=await fetch(b,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});return n.ok?await n.json():(console.error(`[xai-grok] refresh failed:`,n.status,await n.text()),null)}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function j(){return t().find(e=>e.providerId===_)}async function M(){let t=j();if(!t?.accessToken)throw new p("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",f.AUTH_MISSING,!0);let n=t.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return t.accessToken;if(t.refreshToken){let n=await A(t.refreshToken);if(n?.access_token)return await e({providerId:_,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3,scopes:n.scope??t.scopes}),n.access_token}return t.accessToken}async function N(){if(!j()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return g(await M(),fetch)}function P(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:T,provider:_,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function F(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function I(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function L(e,t,n,r){try{let i=await M(),a=r.sessionId,c=O(t),l={...r,apiKey:i,headers:F(r.headers,a)},u=c.api===`openai-responses`?o(c,n,l):s(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){I(n),e.push(P(t,n)),e.end()}}async function R(e,t,n,r){try{let i=await M(),o=r?.sessionId,s=O(t),l={...r,apiKey:i,headers:F(r?.headers,o)},u=s.api===`openai-responses`?a(s,n,l):c(s,n,l);for await(let t of u)e.push(t);e.end()}catch(n){I(n),e.push(P(t,n)),e.end()}}const z=(e,t,r={})=>{let i=n();return L(i,e,t,r).catch(I),i},B=(e,t,r)=>{let i=n();return R(i,e,t,r).catch(I),i},V={id:_,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.5.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:w,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>E().map(D),getBudgetUsage:N,onOAuthLoginIntercepted:async(t,n,r)=>{let i=l(),a=await d(i),o=u(),s=u(),c=new URL(y);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,x),c.searchParams.set(`redirect_uri`,S),c.searchParams.set(`scope`,r?.scopes??`openid profile email offline_access grok-cli:access api:access`),c.searchParams.set(`code_challenge`,a),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,o),c.searchParams.set(`nonce`,s),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let m=await t({authorizeUrl:c.toString(),redirectUriPattern:`http://127.0.0.1:56121/*`,onCapture:`close`});if(!m)throw new p(`xAI OAuth login was cancelled or timed out`,f.CALLBACK_TIMEOUT);let h=new URL(m),g=h.searchParams.get(`code`),v=h.searchParams.get(`state`);if(!g)throw new p(`xAI OAuth redirect did not include a code`,f.CODE_MISSING);if(v!==o)throw new p(`xAI OAuth state mismatch — possible CSRF, aborting`,f.STATE_MISMATCH);let b=await k(g,i);await e({providerId:_,accessToken:b.access_token,refreshToken:b.refresh_token,tokenExpiresAt:Date.now()+(b.expires_in??21600)*1e3,baseUrl:C,scopes:b.scope}),n()},onOAuthLogout:async()=>{await e({providerId:_,accessToken:``})},onSilentRenew:async()=>{let t=j();if(!t?.refreshToken)return null;let n=await A(t.refreshToken);return n?.access_token?(await e({providerId:_,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3,scopes:n.scope??t.scopes}),n.access_token):null}};function H(){r({api:T,stream:z,streamSimple:B})}export{f as XaiErrorCode,p as XaiOAuthError,V as config,H as register};
@@ -1 +1 @@
1
- import{a as e}from"./diagnostics-DN_idNHx.js";import{a as t,r as n}from"./compat-qQM4gjF_.js";import{c as r,i,r as a,s as o}from"./legacy-api-aliases-DtQJ5I7w.js";import{G as s,f as c}from"./account-store-DEob4Tob.js";import"./main-yKaIA_zV.js";import{n as l,r as u,t as d}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as f,XaiOAuthError as p}from"./xai-grok-errors-bnlIBeu-.js";var m=`https://cli-chat-proxy.grok.com/v1/billing?format=credits`,h=8e3,g=65536,_=1e3;function v(e){return typeof e==`object`&&!!e}function y(e){if(!v(e))return null;let t=v(e.config)?e.config:e,n=t.creditUsagePercent;if(typeof n!=`number`||!Number.isFinite(n))return null;let r=Math.min(_,Math.max(0,n)),i=v(t.currentPeriod)?t.currentPeriod:{},a=i.type,o=typeof a==`string`?a.replace(`USAGE_PERIOD_TYPE_`,``).toLowerCase():``,s=i.end??t.billingPeriodEnd,c=typeof s==`string`&&Number.isFinite(Date.parse(s))?s:void 0;return{percent:r,status:`ok`,window:o&&o!==`unspecified`?o:`billing`,...c?{resetsAt:c}:{}}}async function b(e,t,n={}){let r=new AbortController,i=setTimeout(()=>r.abort(),n.timeoutMs??h);try{let n=await t(m,{headers:{Authorization:`Bearer ${e}`},signal:r.signal}),{status:i}=n;if(i===404||i===501)return null;if(!n.ok)throw Error(`xAI Grok usage: ${i===401||i===403?`re-login required`:`failed`} (${i})`);let a=await n.text();if(a.length>g)return null;try{return y(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}var x=`xai-grok`,S=`https://auth.x.ai`,C=`${S}/oauth2/authorize`,w=`${S}/oauth2/token`,T=`b1a00492-073a-47ea-816f-4c329264a828`,E=`openid profile email offline_access grok-cli:access api:access`,D=`http://127.0.0.1:56121/callback`,O=`http://127.0.0.1:56121/*`,k=`https://api.x.ai/v1`,A=`grok-4.5`,j=`${x}-openai`;function M(){return n(`xai`)}function N(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap}}function P(e){let t=M(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${A}"`),n=t.find(e=>e.id===A),!n))throw Error(`xAI default model "${A}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:k}}async function F(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:D,client_id:T,code_verifier:t}),r=await fetch(w,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new p(`xAI token exchange failed: ${r.status} ${await r.text()}`,f.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new p(`xAI token exchange did not return access_token.`,f.TOKEN_EXCHANGE_INVALID);return i}async function I(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:T}),n=await fetch(w,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});return n.ok?await n.json():(console.error(`[xai-grok] refresh failed:`,n.status,await n.text()),null)}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function L(){return c().find(e=>e.providerId===x)}async function R(){let e=L();if(!e?.accessToken)throw new p("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",f.AUTH_MISSING,!0);let t=e.tokenExpiresAt??0;if(t&&Date.now()+6e4<t)return e.accessToken;if(e.refreshToken){let t=await I(e.refreshToken);if(t?.access_token)return await s({providerId:x,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3,scopes:t.scope??e.scopes}),t.access_token}return e.accessToken}async function z(){if(!L()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return b(await R(),fetch)}function B(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:j,provider:x,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function V(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function H(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function U(e,t,n,r){try{let o=await R(),s=r.sessionId,c=P(t),l={...r,apiKey:o,headers:V(r.headers,s)},u=c.api===`openai-responses`?i(c,n,l):a(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){H(n),e.push(B(t,n)),e.end()}}async function W(e,t,n,i){try{let a=await R(),s=i?.sessionId,c=P(t),l={...i,apiKey:a,headers:V(i?.headers,s)},u=c.api===`openai-responses`?r(c,n,l):o(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){H(n),e.push(B(t,n)),e.end()}}var G=(t,n,r={})=>{let i=e();return U(i,t,n,r).catch(H),i},K=(t,n,r)=>{let i=e();return W(i,t,n,r).catch(H),i},q={id:x,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.5.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:A,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>M().map(N),getBudgetUsage:z,onOAuthLoginIntercepted:async(e,t,n)=>{let r=l(),i=await d(r),a=u(),o=u(),c=new URL(C);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,T),c.searchParams.set(`redirect_uri`,D),c.searchParams.set(`scope`,n?.scopes??E),c.searchParams.set(`code_challenge`,i),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,a),c.searchParams.set(`nonce`,o),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let m=await e({authorizeUrl:c.toString(),redirectUriPattern:O,onCapture:`close`});if(!m)throw new p(`xAI OAuth login was cancelled or timed out`,f.CALLBACK_TIMEOUT);let h=new URL(m),g=h.searchParams.get(`code`),_=h.searchParams.get(`state`);if(!g)throw new p(`xAI OAuth redirect did not include a code`,f.CODE_MISSING);if(_!==a)throw new p(`xAI OAuth state mismatch — possible CSRF, aborting`,f.STATE_MISMATCH);let v=await F(g,r);await s({providerId:x,accessToken:v.access_token,refreshToken:v.refresh_token,tokenExpiresAt:Date.now()+(v.expires_in??21600)*1e3,baseUrl:k,scopes:v.scope}),t()},onOAuthLogout:async()=>{await s({providerId:x,accessToken:``})},onSilentRenew:async()=>{let e=L();if(!e?.refreshToken)return null;let t=await I(e.refreshToken);return t?.access_token?(await s({providerId:x,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3,scopes:t.scope??e.scopes}),t.access_token):null}};function J(){t({api:j,stream:G,streamSimple:K})}export{f as XaiErrorCode,p as XaiOAuthError,q as config,J as register};
1
+ import{a as e}from"./diagnostics-DN_idNHx.js";import{a as t,r as n}from"./compat-qQM4gjF_.js";import{c as r,i,r as a,s as o}from"./legacy-api-aliases-DtQJ5I7w.js";import{G as s,f as c}from"./account-store-C35GYvum.js";import"./main-CfF8CFBr.js";import{n as l,r as u,t as d}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as f,XaiOAuthError as p}from"./xai-grok-errors-bnlIBeu-.js";var m=`https://cli-chat-proxy.grok.com/v1/billing?format=credits`,h=8e3,g=65536,_=1e3;function v(e){return typeof e==`object`&&!!e}function y(e){if(!v(e))return null;let t=v(e.config)?e.config:e,n=t.creditUsagePercent;if(typeof n!=`number`||!Number.isFinite(n))return null;let r=Math.min(_,Math.max(0,n)),i=v(t.currentPeriod)?t.currentPeriod:{},a=i.type,o=typeof a==`string`?a.replace(`USAGE_PERIOD_TYPE_`,``).toLowerCase():``,s=i.end??t.billingPeriodEnd,c=typeof s==`string`&&Number.isFinite(Date.parse(s))?s:void 0;return{percent:r,status:`ok`,window:o&&o!==`unspecified`?o:`billing`,...c?{resetsAt:c}:{}}}async function b(e,t,n={}){let r=new AbortController,i=setTimeout(()=>r.abort(),n.timeoutMs??h);try{let n=await t(m,{headers:{Authorization:`Bearer ${e}`},signal:r.signal}),{status:i}=n;if(i===404||i===501)return null;if(!n.ok)throw Error(`xAI Grok usage: ${i===401||i===403?`re-login required`:`failed`} (${i})`);let a=await n.text();if(a.length>g)return null;try{return y(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}var x=`xai-grok`,S=`https://auth.x.ai`,C=`${S}/oauth2/authorize`,w=`${S}/oauth2/token`,T=`b1a00492-073a-47ea-816f-4c329264a828`,E=`openid profile email offline_access grok-cli:access api:access`,D=`http://127.0.0.1:56121/callback`,O=`http://127.0.0.1:56121/*`,k=`https://api.x.ai/v1`,A=`grok-4.5`,j=`${x}-openai`;function M(){return n(`xai`)}function N(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap}}function P(e){let t=M(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${A}"`),n=t.find(e=>e.id===A),!n))throw Error(`xAI default model "${A}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:k}}async function F(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:D,client_id:T,code_verifier:t}),r=await fetch(w,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new p(`xAI token exchange failed: ${r.status} ${await r.text()}`,f.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new p(`xAI token exchange did not return access_token.`,f.TOKEN_EXCHANGE_INVALID);return i}async function I(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:T}),n=await fetch(w,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});return n.ok?await n.json():(console.error(`[xai-grok] refresh failed:`,n.status,await n.text()),null)}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function L(){return c().find(e=>e.providerId===x)}async function R(){let e=L();if(!e?.accessToken)throw new p("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",f.AUTH_MISSING,!0);let t=e.tokenExpiresAt??0;if(t&&Date.now()+6e4<t)return e.accessToken;if(e.refreshToken){let t=await I(e.refreshToken);if(t?.access_token)return await s({providerId:x,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3,scopes:t.scope??e.scopes}),t.access_token}return e.accessToken}async function z(){if(!L()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return b(await R(),fetch)}function B(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:j,provider:x,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function V(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function H(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function U(e,t,n,r){try{let o=await R(),s=r.sessionId,c=P(t),l={...r,apiKey:o,headers:V(r.headers,s)},u=c.api===`openai-responses`?i(c,n,l):a(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){H(n),e.push(B(t,n)),e.end()}}async function W(e,t,n,i){try{let a=await R(),s=i?.sessionId,c=P(t),l={...i,apiKey:a,headers:V(i?.headers,s)},u=c.api===`openai-responses`?r(c,n,l):o(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){H(n),e.push(B(t,n)),e.end()}}var G=(t,n,r={})=>{let i=e();return U(i,t,n,r).catch(H),i},K=(t,n,r)=>{let i=e();return W(i,t,n,r).catch(H),i},q={id:x,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.5.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:A,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>M().map(N),getBudgetUsage:z,onOAuthLoginIntercepted:async(e,t,n)=>{let r=l(),i=await d(r),a=u(),o=u(),c=new URL(C);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,T),c.searchParams.set(`redirect_uri`,D),c.searchParams.set(`scope`,n?.scopes??E),c.searchParams.set(`code_challenge`,i),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,a),c.searchParams.set(`nonce`,o),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let m=await e({authorizeUrl:c.toString(),redirectUriPattern:O,onCapture:`close`});if(!m)throw new p(`xAI OAuth login was cancelled or timed out`,f.CALLBACK_TIMEOUT);let h=new URL(m),g=h.searchParams.get(`code`),_=h.searchParams.get(`state`);if(!g)throw new p(`xAI OAuth redirect did not include a code`,f.CODE_MISSING);if(_!==a)throw new p(`xAI OAuth state mismatch — possible CSRF, aborting`,f.STATE_MISMATCH);let v=await F(g,r);await s({providerId:x,accessToken:v.access_token,refreshToken:v.refresh_token,tokenExpiresAt:Date.now()+(v.expires_in??21600)*1e3,baseUrl:k,scopes:v.scope}),t()},onOAuthLogout:async()=>{await s({providerId:x,accessToken:``})},onSilentRenew:async()=>{let e=L();if(!e?.refreshToken)return null;let t=await I(e.refreshToken);return t?.access_token?(await s({providerId:x,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3,scopes:t.scope??e.scopes}),t.access_token):null}};function J(){t({api:j,stream:G,streamSimple:K})}export{f as XaiErrorCode,p as XaiOAuthError,q as config,J as register};
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>slicc</title>
7
7
  <link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
8
- <script type="module" crossorigin src="/assets/main-yKaIA_zV.js"></script>
8
+ <script type="module" crossorigin src="/assets/main-CfF8CFBr.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-Dd_uD5pT.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-P2Xu9kJm.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/diagnostics-DN_idNHx.js">
@@ -30,11 +30,11 @@
30
30
  <link rel="modulepreload" crossorigin href="/assets/tool-ui-eSQ1g2I1.js">
31
31
  <link rel="modulepreload" crossorigin href="/assets/core-BMcS6rur.js">
32
32
  <link rel="modulepreload" crossorigin href="/assets/bridge-protocol-06nbmp2X.js">
33
- <link rel="modulepreload" crossorigin href="/assets/providers-BT71Fchh.js">
33
+ <link rel="modulepreload" crossorigin href="/assets/providers-CnoKdyLc.js">
34
34
  <link rel="modulepreload" crossorigin href="/assets/panel-rpc-B3MSVImO.js">
35
35
  <link rel="modulepreload" crossorigin href="/assets/bedrock-camp-compat-BeCSBUrZ.js">
36
36
  <link rel="modulepreload" crossorigin href="/assets/claude-model-version-aqjj5mtp.js">
37
- <link rel="modulepreload" crossorigin href="/assets/account-store-DEob4Tob.js">
37
+ <link rel="modulepreload" crossorigin href="/assets/account-store-C35GYvum.js">
38
38
  <link rel="modulepreload" crossorigin href="/assets/telemetry-DJyRzh6X.js">
39
39
  <link rel="modulepreload" crossorigin href="/assets/tray-follower-status-BAjnN7Ar.js">
40
40
  <link rel="modulepreload" crossorigin href="/assets/clipboard-eqmn97SP.js">
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>slicc</title>
7
7
  <link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
8
- <script type="module" crossorigin src="/assets/main-yKaIA_zV.js"></script>
8
+ <script type="module" crossorigin src="/assets/main-CfF8CFBr.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-Dd_uD5pT.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-P2Xu9kJm.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/diagnostics-DN_idNHx.js">
@@ -30,11 +30,11 @@
30
30
  <link rel="modulepreload" crossorigin href="/assets/tool-ui-eSQ1g2I1.js">
31
31
  <link rel="modulepreload" crossorigin href="/assets/core-BMcS6rur.js">
32
32
  <link rel="modulepreload" crossorigin href="/assets/bridge-protocol-06nbmp2X.js">
33
- <link rel="modulepreload" crossorigin href="/assets/providers-BT71Fchh.js">
33
+ <link rel="modulepreload" crossorigin href="/assets/providers-CnoKdyLc.js">
34
34
  <link rel="modulepreload" crossorigin href="/assets/panel-rpc-B3MSVImO.js">
35
35
  <link rel="modulepreload" crossorigin href="/assets/bedrock-camp-compat-BeCSBUrZ.js">
36
36
  <link rel="modulepreload" crossorigin href="/assets/claude-model-version-aqjj5mtp.js">
37
- <link rel="modulepreload" crossorigin href="/assets/account-store-DEob4Tob.js">
37
+ <link rel="modulepreload" crossorigin href="/assets/account-store-C35GYvum.js">
38
38
  <link rel="modulepreload" crossorigin href="/assets/telemetry-DJyRzh6X.js">
39
39
  <link rel="modulepreload" crossorigin href="/assets/tray-follower-status-BAjnN7Ar.js">
40
40
  <link rel="modulepreload" crossorigin href="/assets/clipboard-eqmn97SP.js">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sliccy",
3
- "version": "6.164.1",
3
+ "version": "6.166.0",
4
4
  "description": "Browser-based coding agent with thin CLI server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -1,96 +0,0 @@
1
- var e=`---
2
- name: v86
3
- description: |
4
- Use this when booting or driving an x86 virtual machine with SLICC's \`v86\`
5
- shell command. Covers the ipk prerequisite, BIOS setup, QEMU-flavored boot
6
- flags, and the screenshot/text/type/mouse interaction loop for agents.
7
- allowed-tools: bash
8
- ---
9
-
10
- # v86 virtual machines
11
-
12
- The \`v86\` shell command boots x86 guests (ISO, raw disk, floppy, or direct Linux kernel) on the v86 wasm engine. Nothing is bundled: install the engine first, then supply BIOS blobs and a guest image as VFS files.
13
-
14
- ## Install prerequisites
15
-
16
- \`\`\`bash
17
- ipk add -g v86@0.5.458
18
- mkdir -p /workspace/.v86
19
- curl -o /workspace/.v86/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
20
- curl -o /workspace/.v86/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
21
- \`\`\`
22
-
23
- There is no CDN fallback; missing pieces produce an actionable error with these exact commands.
24
-
25
- ## Boot and lifecycle
26
-
27
- \`\`\`bash
28
- v86 start -cdrom alpine.iso # boot an ISO (prints pid)
29
- v86 start -n dos -fda freedos.img -m 64 # named VM, floppy boot, 64 MiB RAM
30
- v86 start -kernel bzImage -initrd rootfs.img -append "console=ttyS0" -nographic
31
- v86 ls # list running VMs
32
- v86 stop [-n name] [--force] # power off
33
- v86 state [-n name] save|load <file> # snapshot / restore full VM state
34
- \`\`\`
35
-
36
- ## Arch Linux (copy.sh demo image)
37
-
38
- The fastest full-Linux guest is the pre-booted Arch state image from copy.sh (the same one behind https://copy.sh/v86/?profile=archlinux). It resumes straight into a root shell — no BIOS blobs, no boot wait:
39
-
40
- \`\`\`bash
41
- curl -o "$TMPDIR/arch_state.bin.zst" https://i.copy.sh/arch_state-v3.bin.zst # ~15 MB
42
- v86 start -n arch -state "$TMPDIR/arch_state.bin.zst" -fs9p https://i.copy.sh/arch/ -net virtio -m 512
43
- v86 text -n arch # should show a root@localhost prompt
44
- v86 type -n arch "uname -a\\n"
45
- v86 text -n arch
46
- \`\`\`
47
-
48
- \`-state\` resumes a snapshot (\`.zst\` decompresses inside the engine), \`-fs9p\` attaches the network-backed 9p root the guest's files live on (fetched on demand, host must send CORS headers), and \`-net virtio\` matches the NIC the snapshot was saved with.
49
-
50
- ## Guest networking (fetch relay)
51
-
52
- \`-net <model>,relay=fetch\` gives the guest outbound HTTP without a gateway: v86's fetch relay answers guest DNS in-engine and turns guest port-80 connections into host fetches, which SLICC reroutes through its CORS-bypassing fetch proxy. Plain-http requests to external hosts are upgraded to https before hitting the proxy (\`http://localhost\` stays local).
53
-
54
- \`\`\`bash
55
- v86 start -n kolibri -fda kolibri.img -net ne2k,relay=fetch -m 128
56
- \`\`\`
57
-
58
- Inside the guest, configure a static IP on the relay's subnet (VM \`192.168.86.100\`, router/DNS \`192.168.86.1\`) — e.g. KolibriOS NETCFG or \`ip addr add\` in Linux. The guest can then browse \`http://<host>/...\`; https-only sites work because of the upgrade rewrite, but the guest itself only ever speaks plain HTTP on port 80.
59
-
60
- VMs run in the background as ProcessManager-tracked units — \`ps\` shows them and \`kill <pid>\` powers them off. Default VM name is \`vm0\`; every subcommand accepts \`-n <name>\`. RAM defaults to 128 MiB, capped at 512.
61
-
62
- ## Interaction loop
63
-
64
- The VM is not an interactive foreground process. Drive it look-then-act:
65
-
66
- \`\`\`bash
67
- v86 text # text-mode screen as plain text (prefer this)
68
- v86 screenshot [out.png] # VGA framebuffer -> PNG (graphical mode)
69
- v86 type "root\\n" # type on the keyboard ('\\n' = Enter)
70
- v86 key ctrl-alt-del enter f2 # named key chords
71
- v86 mouse move 20 -5 # relative pointer move
72
- v86 mouse click right --double # click; --to x,y is best-effort absolute
73
- v86 serial --send "ls\\n" # write to the guest serial console
74
- v86 serial --tail 25 # read buffered serial output
75
- \`\`\`
76
-
77
- Prefer \`v86 text\` over \`screenshot\` whenever the guest is in text mode — it is cheaper and machine-readable. For \`-nographic\` guests use the \`serial\` subcommands.
78
-
79
- ## Live screen streaming (iframe-able)
80
-
81
- \`v86 serve\` pumps the screen into \`$TMPDIR/v86-serve-<name>/\` — a self-refreshing \`index.html\` viewer plus live \`frame.png\`/\`screen.txt\` + \`state.json\`. Mint an iframe-able preview URL from it with the regular \`serve\` command so a human (or sprinkle) can watch the VM:
82
-
83
- \`\`\`bash
84
- v86 serve -n arch --fps 4 # start the pump (1-10 fps, default 2)
85
- serve "$TMPDIR/v86-serve-arch" # mint a worker-hosted URL to iframe
86
- v86 serve -n arch --stop # stop the pump (directory stays)
87
- \`\`\`
88
-
89
- ## SVGA / high-res video modes
90
-
91
- The guest sees a Bochs-dispi (VBE) SVGA adapter; VESA modes are limited by video memory. The default 8 MiB covers up to 1600x1200x32 — pass \`-vga <MiB>\` at boot for more (e.g. \`-vga 16\`). Inside a Linux guest, pick a mode with \`vga=\` kernel parameters or the guest's own modesetting tools.
92
-
93
- ## Expectations
94
-
95
- x86 emulation without KVM runs at a fraction of native speed. Small guests (Alpine, FreeDOS, Buildroot Linux, KolibriOS) work best; give slow boots time and poll with \`v86 text\` between steps.
96
- `;export{e as default};
@@ -1 +0,0 @@
1
- import{t as e}from"./py-realm-worker-BRyQamcA.js";var t=e(((e,t)=>{t.exports={}}));export default t();
@@ -1 +0,0 @@
1
- import{n as e}from"./panel-rpc-BPwAqRch.js";import{S as t,_ as n,r,s as i}from"./account-store-CScbFg3i.js";import{a}from"./diagnostics-DN_idNHx.js";import{a as o,i as s,r as c}from"./compat-uEPf6-XW.js";import{a as l,r as u,s as d,t as f}from"./legacy-api-aliases-jKEvBgOL.js";import{i as p,n as m,r as h}from"./claude-model-version-m5AAX9Oe.js";import{n as g}from"./budget-usage-source-BW8-RCSb.js";import{r as _}from"./provider-budget-DbHWq3j6.js";import{n as v}from"./llm-session-id-BZyXP_j2.js";import{n as y,t as ee}from"./silent-renew-backoff-DIMz5UqB.js";import{getOAuthPageOrigin as te}from"./oauth-service-IlBYPvwr.js";import{n as b}from"./temperature-support-LHBt3FMX.js";import"./provider-settings-BuhBOwFs.js";var ne={proxyEndpoint:`https://adobe-llm-proxy.paolo-moz.workers.dev`,redirectUri:`https://www.sliccy.ai/auth/callback`,extensionRedirectUri:`https://akjjllgokmbgpbdbmafpiefnhidlmbgf.chromiumapp.org/adobe`};function re(e,t){return m(e,t)}function x(e,t,n){return e!==`xhigh`||!t?e:p(t,n)?`xhigh`:h(t,n)?`max`:`high`}function ie(e,t){let n=e?t?.thinkingLevelMap?.[e]:void 0;return x((()=>{if(typeof n==`string`)return n;switch(e){case`minimal`:case`low`:return`low`;case`medium`:return`medium`;case`xhigh`:return`xhigh`;default:return`high`}})(),t?.id,t?.name)}function ae(e,t){return async(n,r)=>{let i=t?await t(n,r)??n:n,a=i.thinking;return a&&a.type===`enabled`&&(i.thinking={type:`adaptive`,...a.display===void 0?{}:{display:a.display}},i.output_config={...i.output_config??{},effort:e}),i}}function S(e,t){if(!re(e.id,e.name))return t;let n=t,r=x(n.effort??ie(n.reasoning,e),e.id,e.name);return{...t,onPayload:ae(r,n.onPayload)}}function oe(e,t){let n={id:e.id,name:e.name??e.id},r=t?.api??e.api,i=t?.context_window??e.context_window,a=t?.max_tokens??e.max_tokens,o=t?.reasoning??e.reasoning,s=t?.input??e.input;r&&(n.api=r),i!==void 0&&(n.context_window=i),a!==void 0&&(n.max_tokens=a),o!==void 0&&(n.reasoning=o),s&&(n.input=s);let c=t?.cost??e.cost;return c&&(n.cost=c),/haiku/i.test(e.id)&&(n.compat={supportsEagerToolInputStreaming:!1}),/sonnet-5\b/i.test(e.id)&&!n.thinkingLevelMap&&(n.thinkingLevelMap={xhigh:`xhigh`}),n}async function se(e,t,n,r={}){let i=typeof AbortController==`function`?new AbortController:null,a=i?setTimeout(()=>i.abort(),r.timeoutMs??8e3):null;try{let a=await n(`${e.replace(/\/$/,``)}/v1/usage`,{headers:{...r.headers,Authorization:`Bearer ${t}`},...i?{signal:i.signal}:{}});if(a.status===404||a.status===501)return null;if(!a.ok)throw Error(`Adobe /v1/usage returned ${a.status}`);return _(await a.json())}finally{a&&clearTimeout(a)}}const C=Object.assign({"/packages/webapp/providers/adobe-config.json":ne})[`/packages/webapp/providers/adobe-config.json`]??{clientId:``,proxyEndpoint:``,scopes:`openid,profile,email`};function w(){let e=i(`adobe`);if(e)return e.replace(/\/$/,``);if(C.proxyEndpoint)return C.proxyEndpoint.replace(/\/$/,``);throw Error(`Adobe proxy endpoint not configured — set it in Settings or adobe-config.json`)}const T=new Map,ce=new Map,le=`slicc-adobe-models`;function E(e){try{localStorage.setItem(le,JSON.stringify(e))}catch{}}async function D(e){try{let t=await fetch(`${e}/v1/config`,{headers:{[W]:`6.164.1`}});return t.ok?await t.json():(console.warn(`[adobe] Proxy /v1/config returned ${t.status}`),null)}catch(e){return console.warn(`[adobe] Failed to fetch proxy config:`,e instanceof Error?e.message:String(e)),null}}async function O(e){let t=T.get(e);if(t)return t;let n=await D(e);return n||=(await new Promise(e=>setTimeout(e,600)),await D(e)),n?(T.set(e,n),n):{}}function k(e){let t=e.clientId||C.clientId;if(!t)throw Error(`Could not determine IMS client ID — proxy /v1/config did not return one and adobe-config.json is empty`);return t}function A(e){return e.scopes||C.scopes}function j(e){return e.imsEnvironment||C.imsEnvironment||`prod`}const M={prod:`https://ims-na1.adobelogin.com`,stg1:`https://ims-na1-stg1.adobelogin.com`};function N(e){return M[e??C.imsEnvironment??`prod`]??M.prod}async function P(){let e;try{e=w()}catch{return{}}return T.get(e)||new Promise(t=>{let n=setTimeout(()=>t({}),5e3),r=e=>{clearTimeout(n),t(e)};O(e).then(r,()=>r({}))})}function F(e){try{let t=e.split(`.`)[1];if(!t)return;let n=t.replace(/-/g,`+`).replace(/_/g,`/`),r=atob(n+`=`.repeat((4-n.length%4)%4)),i=JSON.parse(r);return typeof i.client_id==`string`?i.client_id:void 0}catch{return}}const I=typeof chrome<`u`&&!!chrome?.runtime?.id;function L(){return r().find(e=>e.providerId===`adobe`)}const ue=[`/ims/profile/v1`,`/ims/userinfo/v2`];async function de(e,t){try{let n=await fetch(e,{headers:{Authorization:`Bearer ${t}`}});if(!n.ok){console.warn(`[adobe] Profile fetch ${e} returned ${n.status}`);return}let r=await n.json(),i=r.displayName||r.name||r.email;return i?{name:i,avatar:r.picture||r.avatar_url}:void 0}catch(t){console.warn(`[adobe] Profile fetch ${e} failed:`,t instanceof Error?t.message:String(t));return}}async function fe(e,t){for(let n of ue){let r=await de(`${N(t)}${n}`,e);if(r)return r}return console.warn(`[adobe] No IMS profile endpoint named the user; account will have no display name`),{}}async function pe(){let e=L(),t=e?.accessToken;if(!t)return{status:`unknown`,detail:`no stored token`};let n=await P(),r=F(t)||n.clientId||C.clientId||``;if(!r)return{status:`unknown`,detail:`no IMS client ID available`};let i=N(j(n));try{let n=await fetch(`${i}/ims/validate_token/v1`,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:new URLSearchParams({client_id:r,token:t,type:`access_token`}),signal:AbortSignal.timeout(1e4)});if(!n.ok)return{status:`unknown`,detail:`HTTP ${n.status}${n.statusText?` ${n.statusText}`:``}`};let a=await n.json();return a.valid===!0?{status:`accepted`,userName:e?.userName}:a.valid===!1?{status:`rejected`,detail:`IMS reported the token invalid (${typeof a.reason==`string`?a.reason:`no reason given`})`}:{status:`unknown`,detail:"IMS answered 200 without a boolean `valid` verdict"}}catch(e){return{status:`unknown`,detail:e instanceof Error?e.message:String(e)}}}function R(e){let t=e.indexOf(`#`);if(t<0)return null;let n=new URLSearchParams(e.slice(t+1)),r=n.get(`access_token`);return r?{accessToken:r,expiresIn:parseInt(n.get(`expires_in`)??`86400`,10),scope:n.get(`scope`)??void 0}:null}const z={id:`adobe`,name:`Adobe`,description:`Claude via Adobe — login with your Adobe ID`,requiresApiKey:!1,requiresBaseUrl:!C.proxyEndpoint,baseUrlPlaceholder:`https://your-proxy.example.com`,baseUrlDescription:`Anthropic-compatible proxy endpoint`,isOAuth:!0,defaultModelId:`sonnet`,oauthTokenDomains:[`ims-na1.adobelogin.com`,`ims-na1-stg1.adobelogin.com`,`*.adobelogin.com`,`*.adobe.io`,`firefall.adobe.io`,`admin.hlx.page`,`admin.hlx.live`,`admin.aem.page`,`admin.aem.live`,`api.aem.live`],getBudgetUsage:he,getModelIds:()=>{let e=e=>oe(e,ce.get(e.id));for(let t of Q.values())if(t.length){let n=t.map(t=>e({id:t.id,name:t.name??t.id,reasoning:t.reasoning,input:t.input,cost:t.cost}));return E(n),n}for(let t of T.values())if(t.models?.length)return t.models.map(t=>e(t));try{let e=localStorage.getItem(le);if(e){let t=JSON.parse(e);if(t.length)return t}}catch{}return[{id:`claude-sonnet-4-6`,name:`Claude Sonnet 4.6`}]},onOAuthLogin:async(e,t,r)=>{let i=w(),a=await O(i),o=k(a),s=A(a),c=j(a),l=I?null:await te(),u=I?null:y({pageHref:l.href,pageOrigin:l.origin,configuredRedirectUri:C.redirectUri},()=>crypto.randomUUID()),d=I?C.extensionRedirectUri??`https://${chrome.runtime.id}.chromiumapp.org/`:u.redirectUri,f=u?.oauthState,p=u?.expectedNonce??null,m=new URLSearchParams({client_id:o,scope:s,response_type:`token`,redirect_uri:d});f&&m.set(`state`,f),r?.forceReauth&&m.set(`prompt`,`login`);let h=await e(`${N(c)}/ims/authorize/v2?${m}`);if(!h)return;if(p&&h)try{if(new URL(h).searchParams.get(`nonce`)!==p){console.error(`[adobe] OAuth nonce mismatch — possible CSRF`);return}}catch(e){console.warn(`[adobe] Nonce check skipped (URL parse failed):`,e instanceof Error?e.message:String(e))}let _=R(h);if(!_){console.error(`[adobe] Could not extract token from redirect URL`);return}let v=await fe(_.accessToken,c);await n({providerId:`adobe`,accessToken:_.accessToken,tokenExpiresAt:Date.now()+_.expiresIn*1e3,userName:v.name,userAvatar:v.avatar,scopes:_.scope,baseUrl:C.proxyEndpoint?void 0:i}),g(),await $().catch(e=>console.warn(`[adobe] Failed to fetch models after login:`,e instanceof Error?e.message:String(e))),t()},onOAuthLogout:async()=>{let e=L();if(e?.accessToken)try{let t=await P(),n=F(e.accessToken)||t.clientId||C.clientId,r=j(t);if(n){let t=await fetch(`${N(r)}/ims/revoke`,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:new URLSearchParams({token:e.accessToken,token_type_hint:`access_token`,client_id:n})});t.ok||console.warn(`[adobe] Token revocation returned ${t.status}, token may still be valid server-side`)}}catch(e){console.warn(`[adobe] Failed to revoke token:`,e instanceof Error?e.message:String(e))}await n({providerId:`adobe`,accessToken:``}),g()},onSilentRenew:async()=>L()?.accessToken?U():null,onValidateToken:pe,refreshModels:async e=>{await $(e);let t=z.getModelIds?.();t?.length&&E(t)}};let B=null;const me=ee();async function V(){let e=L();if(!e?.accessToken)throw Error(`Not logged in to Adobe — please log in first`);if((e.tokenExpiresAt??0)-Date.now()>6e4)return e.accessToken;console.log(`[adobe] Token expired or expiring soon, attempting silent renewal...`);let t=await me.run(()=>U());if(t)return t;let n=L();if((n?.tokenExpiresAt??0)-Date.now()>0&&n?.accessToken)return n.accessToken;throw Error(`Adobe session expired — please log in again`)}async function he(){let e;try{e=w()}catch{return null}let t=L();if(!t?.accessToken||H())throw Error(`Adobe budget: not signed in`);return se(e,t.accessToken,fetch,{headers:{"X-Session-Id":v(be)}})}function H(){let e=L();return!e?.tokenExpiresAt||Date.now()>e.tokenExpiresAt-6e4}async function U(){if(typeof window>`u`){let t=e();if(!t)return null;try{let{accessToken:e}=await t.call(`silent-renew`,{providerId:`adobe`},{timeoutMs:13e4});return e}catch(e){return console.warn(`[adobe] worker→page silent-renew bridge failed:`,e instanceof Error?e.message:String(e)),null}}return B===null&&(B=ye().finally(()=>{B=null})),B}function ge(e,t){let n=k(t),r=A(t),i=j(t),a=I?null:y({pageHref:window.location.href,pageOrigin:window.location.origin,configuredRedirectUri:C.redirectUri},()=>crypto.randomUUID()),o=I?C.extensionRedirectUri??`https://${chrome.runtime.id}.chromiumapp.org/`:a.redirectUri,s=a?.oauthState,c=a?.expectedNonce??null,l=new URLSearchParams({client_id:n,scope:r,response_type:`token`,redirect_uri:o,prompt:`none`});return s&&l.set(`state`,s),{authorizeUrl:`${N(i)}/ims/authorize/v2?${l}`,expectedNonce:c,proxyEndpoint:e}}function _e(e,t){if(!t)return!0;try{if(new URL(e).searchParams.get(`nonce`)!==t)return console.error(`[adobe] OAuth nonce mismatch — possible CSRF`),!1}catch(e){console.warn(`[adobe] Nonce check skipped (URL parse failed):`,e instanceof Error?e.message:String(e))}return!0}async function ve(e,t){let r=L();await n({providerId:`adobe`,accessToken:e.accessToken,tokenExpiresAt:Date.now()+e.expiresIn*1e3,userName:r?.userName,userAvatar:r?.userAvatar,scopes:e.scope,baseUrl:C.proxyEndpoint?void 0:t})}async function ye(){try{let e=w(),{authorizeUrl:t,expectedNonce:n}=ge(e,await O(e)),{createOAuthLauncher:r}=await import(`./oauth-service-IlBYPvwr.js`),i=await r()(t,{interactive:!1});if(!i||!_e(i,n))return null;let a=R(i);return a?(await ve(a,e),console.log(`[adobe] Token renewed silently`),await $().catch(e=>console.warn(`[adobe] Failed to refresh models after silent renewal:`,e instanceof Error?e.message:String(e))),a.accessToken):null}catch(e){return console.warn(`[adobe] Silent renewal error:`,e instanceof Error?e.message:String(e)),null}}const W=`X-Slicc-Version`;function G(e){let t={};if(e.headers)for(let[n,r]of Object.entries(e.headers))n.toLowerCase()!==`x-slicc-version`&&(t[n]=r);return t[W]=`6.164.1`,{...e,headers:t}}const be=`adobe-usage-probe`,K=new Set;function q(e,t){if(e.headers){for(let[t,n]of Object.entries(e.headers))if(t.toLowerCase()===`x-session-id`&&n!=null)return e}return K.has(t)||(K.add(t),console.warn(`[adobe] Missing X-Session-Id from ${t} — using daily fallback. Attach an X-Session-Id header at the call site (see scoop-context.ts streamWithSessionId or docs/pitfalls.md).`)),{...e,headers:{...e.headers??{},"X-Session-Id":v(`adobe-provider-fallback`)}}}function xe(){K.clear()}function J(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:`adobe-anthropic`,provider:`adobe`,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function Y(e){console.error(`[adobe] Stream error:`,e instanceof Error?e.message:String(e))}const X=(e,t,n={})=>{let r=a();return Se(r,e,t,n).catch(Y),r};async function Se(e,t,n,r){try{let i=await V();if(String(t.api).includes(`openai`)){let a={...t,baseUrl:`${w()}/v1`,api:`openai-completions`,compat:{...t.compat,supportsStore:!1,supportsDeveloperRole:!1}},o=u(a,n,G(q({...r,apiKey:i},`streamAdobe[openai]`)));for await(let t of o)e.push(t)}else{let a={...t,baseUrl:w(),api:`anthropic-messages`},o=f(a,n,G(q(S(t,b(t.id,t.name,{...r,apiKey:i})),`streamAdobe[anthropic]`)));for await(let t of o)e.push(t)}e.end()}catch(n){Y(n),e.push(J(t,n)),e.end()}}const Z=(e,t,n)=>{let r=a();return Ce(r,e,t,n).catch(Y),r};async function Ce(e,t,n,r){try{let i=await V();if(String(t.api).includes(`openai`)){let a={...t,baseUrl:`${w()}/v1`,api:`openai-completions`,compat:{...t.compat,supportsStore:!1,supportsDeveloperRole:!1}},o=d(a,n,G(q({...r,apiKey:i},`streamSimpleAdobe[openai]`)));for await(let t of o)e.push(t)}else{let a={...t,baseUrl:w(),api:`anthropic-messages`},o=l(a,n,G(q(S(t,b(t.id,t.name,{...r,apiKey:i})),`streamSimpleAdobe[anthropic]`)));for await(let t of o)e.push(t)}e.end()}catch(n){Y(n),e.push(J(t,n)),e.end()}}function we(e){let t={id:e.id,name:e.name};return e.api!==void 0&&(t.api=e.api),e.context_window!==void 0&&(t.context_window=e.context_window),e.max_tokens!==void 0&&(t.max_tokens=e.max_tokens),e.reasoning!==void 0&&(t.reasoning=e.reasoning),e.input!==void 0&&(t.input=e.input),t}function Te(){let e=new Map;for(let t of s())try{let n=c(t);for(let t of n)e.set(t.id,t)}catch{}return e}function Ee(e,n,r){let i=`adobe-${e.api===`openai`?`openai`:`anthropic`}`,a=r.get(e.id);if(a)return{...a,provider:`adobe`,api:i};let o=t(e.id,r);return{id:e.id,name:e.name??e.id,provider:`adobe`,api:i,baseUrl:n,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:o,inputCost:o.input,outputCost:o.output,cacheReadCost:o.cacheRead,cacheWriteCost:o.cacheWrite,reasoning:!0}}function De(e,t){for(let t of e)ce.set(t.id,we(t));let n=Te();return e.map(e=>Ee(e,t,n))}async function Oe(e){try{let t=e??await V(),n=w(),r=await fetch(`${n}/v1/models`,{headers:{Authorization:`Bearer ${t}`,[W]:`6.164.1`}});if(!r.ok)console.warn(`[adobe] Proxy /v1/models returned ${r.status}, falling back to Anthropic models`);else{let e=await r.json();if(e.data?.length)return De(e.data,n)}}catch(e){console.warn(`[adobe] Failed to fetch proxy models:`,e instanceof Error?e.message:String(e))}return null}const Q=new Map;function ke(){return c(`anthropic`).map(e=>({...e,provider:`adobe`,api:`adobe-anthropic`}))}async function $(e){let t=w(),n=Q.get(t);if(n)return n;let r=await Oe(e);return r?(Q.set(t,r),r):ke()}function Ae(){o({api:`adobe-anthropic`,stream:X,streamSimple:Z}),o({api:`adobe-openai`,stream:X,streamSimple:Z})}export{xe as __resetAdobeSessionIdWarningCacheForTests,z as config,R as extractTokenFromUrl,$ as getAdobeModels,V as getValidAccessToken,H as isTokenExpired,Ae as register};
@@ -1,12 +0,0 @@
1
- import{t as e}from"./logger-LESFN7Hj.js";import{g as t}from"./account-store-CScbFg3i.js";import{n,t as r}from"./archive-redaction-ByV7X5fs.js";import{n as i}from"./path-utils-DNJG-zQf.js";import{A as a,E as o,O as s,c,h as l,l as u}from"./record-YqlVEfh_.js";import{n as d,o as f}from"./descriptor-D-6Koktu.js";import{t as p}from"./agent-message-to-chat-w7n13QEN.js";import{n as m,t as h}from"./thinking-level-5x0UAu9N.js";function g(e,t,n,r,i,a){let o=n.aEnd-n.aStart,s=n.bEnd-n.bStart;for(;r<o&&i<s&&e[a?n.aEnd-r-1:n.aStart+r]===t[a?n.bEnd-i-1:n.bStart+i];)r++,i++;return r}function _(e,t,n,r,i,a,o){let s=n.aEnd-n.aStart,c=n.bEnd-n.bStart,l=Math.ceil((s+c)/2)+1,u=i.x;for(let d=-r+i.start;d<=r-i.end;d+=2){let f=l+d,p=d===-r||d!==r&&u[f-1]<u[f+1]?u[f+1]:u[f-1]+1;p=g(e,t,n,p,p-d,i.reverse);let m=p-d;if(u[f]=p,p>s)i.end+=2;else if(m>c)i.start+=2;else if(o){let e=s-c-d,t=l+e,n=t>=0&&t<2*l+1?a.x[t]:-1;if(n>=0&&p+n>=s)return i.reverse?[n,n-e]:[p,m]}}}function v(e,t,n,r,i){let a=n.aEnd-n.aStart,o=n.bEnd-n.bStart,s=Math.ceil((a+o)/2),c=s+1;r.fill(-1,0,2*s+3),i.fill(-1,0,2*s+3),r[c+1]=0,i[c+1]=0;let l={x:r,start:0,end:0,reverse:!1},u={x:i,start:0,end:0,reverse:!0},d=(a-o)%2!=0;for(let r=0;r<s;r++){let i=_(e,t,n,r,l,u,d)??_(e,t,n,r,u,l,!d);if(i)return[n.aStart+i[0],n.bStart+i[1]]}}function y(e,t){let n=[],r=[{aStart:0,aEnd:e.length,bStart:0,bEnd:t.length}],i;for(;r.length>0;){let a=r.pop(),{aStart:o,aEnd:s,bStart:c,bEnd:l}=a;for(;o<s&&c<l&&e[o]===t[c];)n.push({type:`equal`,line:e[o++]}),c++;for(;o<s&&c<l&&e[s-1]===t[l-1];)s--,l--;s<a.aEnd&&r.push({aStart:s,aEnd:a.aEnd,bStart:l,bEnd:a.bEnd});let u;if(o<s&&c<l){if(!i){let e=2*Math.ceil((s-o+l-c)/2)+3;i=[new Int32Array(e),new Int32Array(e)]}u=v(e,t,{aStart:o,aEnd:s,bStart:c,bEnd:l},...i)}if(u){let[e,t]=u;r.push({aStart:e,aEnd:s,bStart:t,bEnd:l}),r.push({aStart:o,aEnd:e,bStart:c,bEnd:t})}else{for(let t=o;t<s;t++)n.push({type:`delete`,line:e[t]});for(let e=c;e<l;e++)n.push({type:`insert`,line:t[e]})}}return n}function b(e){if(e===``)return[];let t=!e.endsWith(`
2
- `),n=e.split(`
3
- `);t||n.pop();let r=n.length-1;return n.map((e,n)=>`${t&&n===r?`\0`:`
4
- `}${e}`)}function x(e,t){return{sign:e,text:t.slice(1),incomplete:t[0]===`\0`}}function ee(e,t){let n=[];for(let t=0;t<e.length;t++)e[t].type!==`equal`&&n.push(t);if(n.length===0)return[];let r=[],i=n[0],a=n[0];for(let e of n.slice(1))e-a>2*t&&(r.push([i,a]),i=e),a=e;return r.push([i,a]),r.map(([n,r])=>[Math.max(0,n-t),Math.min(e.length-1,r+t)])}function S(e,t,n){let r=0,i=0;for(let n=0;n<t;n++)e[n].type!==`insert`&&r++,e[n].type!==`delete`&&i++;let a=[],o=0,s=0;for(let r=t;r<=n;r++){let t=e[r];switch(t.type){case`equal`:a.push(x(` `,t.line)),o++,s++;break;case`delete`:a.push(x(`-`,t.line)),o++;break;case`insert`:a.push(x(`+`,t.line)),s++}}return{oldStart:o===0?r:r+1,oldCount:o,newStart:s===0?i:i+1,newCount:s,lines:a}}function te(e,t=3){return ee(e,t).map(([t,n])=>S(e,t,n))}function C(e,t){return t===1?`${e}`:`${e},${t}`}function ne(e){let{oldContent:t,newContent:n,oldName:r,newName:i,color:a=!1,context:o=3,absent:s}=e;if(t===n)return``;let c=te(y(b(t),b(n)),o);if(c.length===0)return``;let l=a?`\x1B[31m`:``,u=a?`\x1B[32m`:``,d=a?`\x1B[36m`:``,f=a?`\x1B[1m`:``,p=a?`\x1B[0m`:``,m=s===`old`?`/dev/null`:`a/${r}`,h=s===`new`?`/dev/null`:`b/${i}`,g=``;g+=`${f}diff --git a/${r} b/${i}${p}\n`,g+=`${f}--- ${m}${p}\n`,g+=`${f}+++ ${h}${p}\n`;for(let e of c){let t=C(e.oldStart,e.oldCount),n=C(e.newStart,e.newCount);g+=`${d}@@ -${t} +${n} @@${p}\n`;for(let t of e.lines){let e=t.sign===`+`?u:t.sign===`-`?l:``;g+=`${e}${t.sign}${t.text}${e?p:``}\n`,t.incomplete&&(g+=`\
5
- `)}}return g}function re(e,t){if(e===t)return{insertions:0,deletions:0};let n=y(b(e),b(t)),r=0,i=0;for(let e of n)e.type===`insert`&&r++,e.type===`delete`&&i++;return{insertions:r,deletions:i}}function w(e,t){let n=t?.color===!0,r=n?`\x1B[31m`:``,i=n?`\x1B[32m`:``,a=n?`\x1B[0m`:``,o=``,s=0,c=0,l=0,u=e.map(e=>{let t=e.binary?{insertions:0,deletions:0}:re(e.oldContent,e.newContent);return e.name.length>l&&(l=e.name.length),s+=t.insertions,c+=t.deletions,{name:e.name,binary:e.binary,...t}});for(let e of u){let t=e.name.padEnd(l);if(e.binary){o+=` ${t} | Bin ${e.binary.oldSize} -> ${e.binary.newSize} bytes\n`;continue}let n=e.insertions+e.deletions,s=`${i}${`+`.repeat(e.insertions)}${a}${r}${`-`.repeat(e.deletions)}${a}`;o+=` ${t} | ${String(n).padStart(4)} ${s}\n`}return o+=` ${e.length} file${e.length===1?``:`s`} changed`,(s>0||c===0)&&(o+=`, ${s} insertion${s===1?``:`s`}(+)`),(c>0||s===0)&&(o+=`, ${c} deletion${c===1?``:`s`}(-)`),o+=`
6
- `,o}function T(e){if(e===``)return[];let t=[],n=0;for(let r=0;r<e.length;r++)e[r]===`
7
- `&&(t.push(e.slice(n,r+1)),n=r+1);return n<e.length&&t.push(e.slice(n)),t}function E(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function D(e,t,n){let r=y(e,t),i=[],a=0,o=0,s=0;for(;s<r.length;){if(r[s].type===`equal`){a++,o++,s++;continue}let e=a,t=o;for(;s<r.length&&r[s].type!==`equal`;)r[s].type===`delete`?a++:o++,s++;i.push({side:n,baseStart:e,baseLen:a-e,sideStart:t,sideLen:o-t})}return i}function ie(e,t,n){let r=[...D(t,e,`a`),...D(t,n,`b`)];r.sort((e,t)=>e.baseStart-t.baseStart||e.baseLen-t.baseLen);let i=[],a=0,o=e=>{e>a&&(i.push({stable:!0,lines:t.slice(a,e)}),a=e)},s=0;for(;s<r.length;){let c=r[s];s++;let l=c.baseStart,u=c.baseStart+c.baseLen,d=[c];for(o(l);s<r.length&&r[s].baseStart<=u;)u=Math.max(u,r[s].baseStart+r[s].baseLen),d.push(r[s]),s++;if(d.length===1){let t=c.side===`a`?e:n;c.sideLen>0&&i.push({stable:!0,lines:t.slice(c.sideStart,c.sideStart+c.sideLen)})}else{let r={a:[e.length,-1,t.length,-1],b:[n.length,-1,t.length,-1]};for(let e of d){let t=r[e.side];t[0]=Math.min(e.sideStart,t[0]),t[1]=Math.max(e.sideStart+e.sideLen,t[1]),t[2]=Math.min(e.baseStart,t[2]),t[3]=Math.max(e.baseStart+e.baseLen,t[3])}let a=r.a[0]+(l-r.a[2]),o=r.a[1]+(u-r.a[3]),s=r.b[0]+(l-r.b[2]),c=r.b[1]+(u-r.b[3]);i.push({stable:!1,aLines:e.slice(a,o),oLines:t.slice(l,u),bLines:n.slice(s,c)})}a=u}return o(t.length),i}function O(e,t,n,r={}){let i=r.diff3??!1,a=r.favor,o={current:r.labels?.current??`current`,base:r.labels?.base??`base`,other:r.labels?.other??`other`},s=ie(T(e),T(t),T(n)),c=``,l=0,u=e=>{for(let t of e)c+=t},d=e=>{c.length>0&&!c.endsWith(`
8
- `)&&(c+=`
9
- `),c+=`${e}\n`};for(let e of s){if(e.stable){u(e.lines);continue}if(E(e.aLines,e.bLines)){u(e.aLines);continue}l++,a===`ours`?u(e.aLines):a===`theirs`?u(e.bLines):a===`union`?(u(e.aLines),c.length>0&&!c.endsWith(`
10
- `)&&e.bLines.length>0&&(c+=`
11
- `),u(e.bLines)):(d(`<<<<<<< ${o.current}`),u(e.aLines),i&&(d(`||||||| ${o.base}`),u(e.oLines)),d(`=======`),u(e.bLines),d(`>>>>>>> ${o.other}`))}return{content:c,conflicts:l}}const k=`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(`.`),A=`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(`.`);k.length*A.length;function ae(e){let t=p(e.messages,{source:e.name}),i=t.filter(e=>e.role===`assistant`).length,a=[`# Agent session: ${e.name}`,``,`- jid: ${e.jid}`,`- exit code: ${e.exitCode}`,`- turns: ${i}`,`- messages: ${e.messages.length}`,`- timestamp: ${e.timestamp}`,``,`## Prompt`,``,e.prompt.length>0?e.prompt:`_(empty prompt)_`,``,`---`,``];if(t.length===0)a.push(`_(no messages captured)_`,``);else for(let e of t)oe(a,e);return n(a.join(`
12
- `),r())}function oe(e,t){e.push(`## ${t.role}`,``);let n=t.content.trim();n.length>0&&e.push(n,``);for(let n of t.toolCalls??[])j(e,n)}function j(e,t){e.push(`### tool: ${t.name}`,``,`Input:`,``,"```json",M(t.input),"```",``),t.result!==void 0&&e.push(t.isError?`Result (error):`:`Result:`,``,"```",t.result,"```",``)}function M(e){try{return JSON.stringify(e,null,2)??String(e)}catch{return String(e)}}const N=e(`agent-bridge`),P=`__slicc_agent`;function F(e){for(let t=0;t<8;t++){let t=e.generateName(),n=`agent_${J(t)}`;if(!e.orchestrator.getScoops().some(e=>e.jid===n))return t}return e.generateUid()}function I(e,t){if(t===void 0)return null;let n=e.getScoops().find(e=>e.jid===t);if(!n)return null;let r=c(n);if(!r||r.length===0)return null;let i=u(n);return i?{modelId:r,providerId:i}:{modelId:r}}function L(e,t){let n=e.getWorkUnits(),r=(t===null?null:n.rootOf(t))??n.resolveDefaultRoot();return f(r?.descriptor.workspace??d)}function R(e,t){if(t===void 0)return null;let n=e.getScoops().find(e=>e.jid===t);if(!n)return null;let r=l(n).level;return r&&m(r)?r:null}function z(e,t){let n=e.modelId,r,i;if(n!==void 0){let a=e.modelProviderId!==void 0&&n!==``?`${e.modelProviderId}:${n}`:n,o=a===``?{ok:!1,error:`unknown model: ${n}`}:t(a);if(!o.ok)return{error:{finalText:`agent: ${o.error}`,exitCode:1}};r=o.selection.modelId,i=o.selection.providerId}let o=e.thinkingLevel;if(o!==void 0&&!m(o))return{error:{finalText:`agent: invalid thinking level: ${String(o)} (one of: ${h.join(`, `)})`,exitCode:1}};let s=a(e.workspaceMode);if(!s.ok)return{error:{finalText:`agent: ${s.error}`,exitCode:1}};let c=e.backgroundAfterSeconds;if(c!==void 0&&(typeof c!=`number`||!Number.isFinite(c)||c<0))return{error:{finalText:`agent: invalid backgroundAfterSeconds: ${String(c)} (seconds >= 0)`,exitCode:1}};let l=B(e);if(l)return l;let u=e.name;if(u!==void 0&&!K(u))return{error:{finalText:`agent: invalid name: ${u} (lowercase tokens joined by single dashes)`,exitCode:1}};for(let[t,n]of[[`maxTurns`,e.maxTurns],[`maxWallClockMs`,e.maxWallClockMs]])if(n!==void 0&&(!Number.isInteger(n)||n<=0))return{error:{finalText:`agent: ${t} must be a positive integer: ${String(n)}`,exitCode:1}};return{resolvedModelId:r,resolvedProviderId:i}}function B(e){let t=e.mergeOnSuccess,n=[[`successReceiptPath`,e.successReceiptPath],[`outcomeReceiptPath`,e.outcomeReceiptPath],[`mergeOnSuccess.targetPath`,t?.targetPath],[`mergeOnSuccess.basePath`,t?.basePath],[`mergeOnSuccess.draftPath`,t?.draftPath]],r=t===void 0?void 0:``;for(let[e,t]of n){let n=t??(e.startsWith(`mergeOnSuccess`)?r:void 0);if(n!==void 0&&!n.startsWith(`/`))return{error:{finalText:`agent: ${e} must be absolute: ${String(t)}`,exitCode:1}}}return null}function V(e){return/^agent run terminated: .*\bbound\b.*\bexceeded\b/.test(e)}async function H(e,t){let n=async t=>{try{let n=await e.readFile(t,{encoding:`utf-8`});return typeof n==`string`?n:new TextDecoder().decode(n)}catch(e){if($(e,`ENOENT`))return``;throw e}},r=async()=>{for(let n of[t.basePath,t.draftPath])try{await e.rm(n)}catch{}},i=async t=>{try{let n=await e.readFile(t,{encoding:`utf-8`});return typeof n==`string`?n:new TextDecoder().decode(n)}catch(e){if($(e,`ENOENT`))return null;throw e}};try{let a=await i(t.draftPath);if(a===null)return await r(),{applied:!1,conflicts:0};let o=await n(t.targetPath);if(a===o)return await r(),{applied:!1,conflicts:0};let s=await i(t.basePath);if(s===null)return{applied:!1,conflicts:0,error:`base snapshot missing; target left as-is`};if(a===s)return await r(),{applied:!1,conflicts:0};if(o===s)return await e.writeFile(t.targetPath,a),await r(),{applied:!0,conflicts:0};let c=O(o,s,a,{favor:`theirs`});return await e.writeFile(t.targetPath,c.content),await r(),{applied:!0,conflicts:c.conflicts}}catch(e){let n=Q(e);return N.warn(`mergeOnSuccess failed; target left as-is, staging kept`,{target:t.targetPath,error:n}),{applied:!1,conflicts:0,error:n}}}async function U(e,t,n,r){try{let i=t.slice(0,t.lastIndexOf(`/`));i&&await e.mkdir(i,{recursive:!0}),await e.writeFile(t,JSON.stringify({status:n.exitCode===0?`ok`:`failed`,exitCode:n.exitCode,finishedAt:new Date().toISOString(),...n.exitCode===0&&!r?.promotedOnTrip?{}:{reason:n.finalText.slice(0,500)},...r?{merge:r}:{}},null,2))}catch(e){N.warn(`outcome receipt write failed`,{path:t,error:Q(e)})}}async function W(e,t){try{let n=t.slice(0,t.lastIndexOf(`/`));n&&await e.mkdir(n,{recursive:!0}),await e.writeFile(t,new Date().toISOString())}catch(e){N.warn(`success receipt write failed`,{path:t,error:Q(e)})}}const G=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;function K(e){return G.test(e)}const q=`agent: name already in use`;async function se(e,t,n,r,i){if(t.persistSession===!1)return;let a=t.persistSession===!0?`/sessions`:`/tmp`,o=new Date().toISOString().replace(/[:.]/g,`-`),s=`${a}/agent-${r}-${o}.md`;try{let c=e.orchestrator.getScoopContext(n),l=typeof c?.getAgentMessages==`function`?c.getAgentMessages():[],u=ae({name:r,jid:n,prompt:t.prompt,exitCode:i.exitCode,messages:l,timestamp:o});await e.sharedFs.mkdir(a,{recursive:!0}),await e.sharedFs.writeFile(s,u)}catch(e){N.warn(`agent session archive write failed`,{path:s,error:Q(e)})}}function ce(e,t,n,r,i,a){let o=X(e.cwd),s=ve(e.workspaceMode),c={visiblePaths:be(e,a,s),writablePaths:Z([...ye(e.writablePaths,o,s),`${i}/`,`/tmp/`]),workspaceMode:s,allowedCommands:e.allowedCommands};return e.maxTurns!==void 0&&(c.maxTurns=e.maxTurns),e.maxWallClockMs!==void 0&&(c.maxWallClockMs=e.maxWallClockMs),e.backgroundAfterSeconds!==void 0&&(c.backgroundAfterSeconds=e.backgroundAfterSeconds),t&&(c.modelId=t,n!==void 0&&(c.modelProviderId=n)),r!==void 0&&(c.thinkingLevel=r),e.structuredOutputSchema!==void 0&&(c.structuredOutputSchema=e.structuredOutputSchema),c}function le(e,t){let n={sendMessages:[],responseBuffer:``,scoopError:null,unsubscribe:null};return n.unsubscribe=e.observeScoop(t,{onSendMessage:e=>{n.sendMessages.push(e)},onResponse:(e,t)=>{t?n.responseBuffer+=e:n.responseBuffer=e},onError:e=>{n.scoopError===null&&(n.scoopError=e)}}),n}async function ue(e,t,n,r,i){if(await e.sendPrompt(t,n,`agent`,`agent`),i.scoopError!==null)return{finalText:i.scoopError,exitCode:1};if(r){let n=e.getScoopContext(t),r=n?.getStructuredOutput?.();for(let a=0;a<2&&!r?.captured;a++){if(await e.sendPrompt(t,`You did not call StructuredOutput. Call it now with your result, matching the schema.`,`agent`,`agent`),i.scoopError!==null)return{finalText:i.scoopError,exitCode:1};r=n?.getStructuredOutput?.()}return r?.captured?{finalText:JSON.stringify(r.value),exitCode:0}:{finalText:`agent: scoop did not produce StructuredOutput`,exitCode:1}}return{finalText:i.sendMessages.length>0?i.sendMessages[i.sendMessages.length-1]:i.responseBuffer,exitCode:0}}async function de(e,t,n,r){try{await e.orchestrator.unregisterScoop(t)}catch(e){N.warn(`unregisterScoop failed`,{jid:t,error:Q(e)})}try{await e.sharedFs.rm(r,{recursive:!0})}catch(e){$(e,`ENOENT`)||N.warn(`scratch folder cleanup failed`,{folder:n,error:Q(e)})}if(e.sessionStore)try{await e.sessionStore.delete(t)}catch(e){N.warn(`sessionStore.delete failed`,{jid:t,error:Q(e)})}}async function fe(e,t,n,r,i){let a=await pe(e,t,n,r,i),o;return a.exitCode===0&&t.mergeOnSuccess?(o=await H(e.sharedFs,t.mergeOnSuccess),o.error!==void 0&&(a={finalText:`agent: mergeOnSuccess failed: ${o.error}`,exitCode:1})):t.mergeOnSuccess&&V(a.finalText)&&(o=await H(e.sharedFs,t.mergeOnSuccess),o.applied?(o.promotedOnTrip=!0,N.info(`run tripped its bound; staged rewrite promoted`,{target:t.mergeOnSuccess.targetPath,conflicts:o.conflicts}),a={finalText:`${a.finalText} — staged rewrite promoted`,exitCode:0}):o.error===void 0&&(o=void 0)),a.exitCode===0&&t.successReceiptPath&&await W(e.sharedFs,t.successReceiptPath),t.outcomeReceiptPath&&await U(e.sharedFs,t.outcomeReceiptPath,a,o),a}async function pe(e,t,n,r,i){try{await e.orchestrator.registerScoop(n)}catch(e){return{finalText:i.scoopError??Q(e),exitCode:1}}try{let n=await ue(e.orchestrator,r,t.prompt,t.structuredOutputSchema,i);return t.signal?.aborted?{finalText:`agent: aborted`,exitCode:1}:n||{finalText:i.scoopError??``,exitCode:1}}catch(e){return{finalText:i.scoopError??Q(e),exitCode:1}}}function me(e,t,n=null,r={}){let i={orchestrator:e,sharedFs:t,sessionStore:n,generateName:r.generateName??_e,generateUid:r.generateUid??ge,resolveModel:r.resolveModel??Y};async function a(e){let t=z(e,i.resolveModel);if(`error`in t)return t.error;let n=I(i.orchestrator,e.parentJid),r=t.resolvedModelId??n?.modelId??``,a=t.resolvedModelId===void 0?n?.providerId:t.resolvedProviderId,s=e.thinkingLevel??R(i.orchestrator,e.parentJid)??void 0,c=e.name===void 0?F(i):e.name,l=`agent-${c}`,u=`agent_${J(c)}`,d=new Set(i.orchestrator.getScoops().map(e=>e.jid));if(e.name!==void 0&&d.has(u))return{finalText:`${q}: ${c}`,exitCode:1};let f=(e.exclusiveWith??[]).find(e=>d.has(`agent_${J(e)}`));if(f!==void 0)return{finalText:`${q}: ${f}`,exitCode:1};let p=`/scoops/${l}`,m=e.parentJid??o(i.orchestrator.getScoops())[0]?.jid??null,h=ce(e,r,a,s,p,L(i.orchestrator,m)),g={jid:u,name:l,folder:l,requiresTrigger:!1,assistantLabel:l,addedAt:new Date().toISOString(),config:h,configSchemaVersion:3,notifyOnComplete:e.notifyOnComplete===!0,parentJid:m},_=le(i.orchestrator,u),v=()=>{try{i.orchestrator.stopScoop(u)}catch(e){N.warn(`stopScoop on abort failed`,{jid:u,error:Q(e)})}};if(e.signal?.addEventListener(`abort`,v,{once:!0}),e.signal?.aborted)return e.signal.removeEventListener(`abort`,v),_.unsubscribe?.(),{finalText:`agent: aborted before start`,exitCode:1};let y={finalText:``,exitCode:1};try{return y=await fe(i,e,g,u,_),y}finally{e.signal?.removeEventListener(`abort`,v),_.unsubscribe?.(),await se(i,e,u,c,y),await de(i,u,l,p)}}return{spawn:a}}function he(e,t,n=null,r={}){let i=me(e,t,n,r);return globalThis[P]=i,N.info(`agent bridge published on globalThis.__slicc_agent`),i}function ge(){let e=globalThis;return typeof e.crypto?.randomUUID==`function`?e.crypto.randomUUID().replace(/-/g,``).slice(0,12):`${Date.now().toString(36)}${Math.random().toString(36).slice(2,8)}`}function _e(){return`${k[Math.floor(Math.random()*k.length)]}-${A[Math.floor(Math.random()*A.length)]}`}function J(e){return e.replace(/-/g,`_`)}function Y(e){try{return t(e)}catch(t){return N.warn(`defaultResolveModel: provider/account lookup threw; treating model as unknown`,{modelId:e,error:t instanceof Error?t.message:String(t)}),{ok:!1,error:`unknown model: ${e}`}}}function X(e){let t=i(e);return t.endsWith(`/`)?t:`${t}/`}function ve(e){let t=a(e);return t.ok?t.mode:s}function ye(e,t,n=s){let r=n===`private`?[t]:[t,`/shared/`];return e===void 0||e.some(e=>typeof e!=`string`||!e.startsWith(`/`)||e.includes(`\0`))?r:e.map(X)}function be(e,t,n=s){if(e.visiblePaths!==void 0)return e.visiblePaths.map(X);if(n===`private`)return[];let r=[...t];return e.invokingCwd&&e.invokingCwd.length>0&&r.push(X(e.invokingCwd)),Z(r)}function Z(e){let t=new Set,n=[];for(let r of e)t.has(r)||(t.add(r),n.push(r));return n}function Q(e){return e instanceof Error?e.message:String(e)}function $(e,t){if(typeof e!=`object`||!e)return!1;let n=e.code;return typeof n==`string`&&n===t}export{w as a,O as i,q as n,ne as o,he as r,P as t};
@@ -1,7 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t}from"./image-markers-DuyWsic3.js";const n=new Set([`webhook`,`cron`,`sprinkle`,`fswatch`,`session-reload`,`navigate`,`discovery`,`upgrade`,`workflow`,`bash`,`preview`,`scoop-notify`,`scoop-idle`,`scoop-wait`,`sudo-request`]);function r(e){return e!=null&&n.has(e)}const i=new Set([`send_message`,`list_scoops`,`list_tasks`,`sudo_request`,`list_sudo_requests`,`lick_confirm`,`lick_dismiss`]),a=65536;function o(e,t=a){return e.length<=t?e:`${e.slice(0,t)}\n… [tool output truncated for the chat transcript: showing ${u(t)} of ${u(e.length)} — the agent received the full output]`}function s(e,t=a,n=4){if(typeof e==`string`)return o(e,t);if(typeof e!=`object`||!e||n<=0)return e;if(Array.isArray(e)){let r=null;for(let i=0;i<e.length;i++){let a=s(e[i],t,n-1);a!==e[i]&&(r??=[...e],r[i]=a)}return r??e}let r=null;for(let[i,a]of Object.entries(e)){let o=s(a,t,n-1);o!==a&&(r??={...e},r[i]=o)}return r??e}function c(e,n=a){if(!e)return e;if(!t().test(e))return o(e,n);let r=o(e.replace(t(),``).trim(),n);return r.length>0?`${r}\n[screenshot omitted from transcript]`:`[screenshot]`}function l(e,n=a){if(e.length<=n)return e;if(!t().test(e))return o(e,n);let r=[],i=0;for(let a of e.matchAll(t()))r.push(o(e.slice(i,a.index),n)),r.push(a[0]),i=(a.index??0)+a[0].length;return r.push(o(e.slice(i),n)),r.join(``)}function u(e){return e>=1048576?`${(e/1048576).toFixed(1)} MB`:`${Math.round(e/1024)} KB`}var d=e({agentMessagesToChatMessages:()=>f,lickChannelFromBody:()=>D,lickChannelFromSenderName:()=>E,lickIdFromBody:()=>O,splitEnvelopes:()=>T,unwrapMessageEnvelope:()=>w});function f(e,t={}){let{source:n=`cone`,idSeed:r=C,hiddenToolNames:a=i,uncapped:o=!1}=t,s=[],c=null,l=new Set;for(let t of e)g(t)?(s.push(...p(t,r)),c=null):_(t)?(c=m(t,n,r,a,l,o),s.push(c)):v(t)&&h(t,c,l,o);return s}function p(e,t){let n=y(e.content);if(n.length===0)return[];let r=[];for(let i of T(n)){if(i.body.length===0&&i.sender==null)continue;let n=(i.sender?E(i.sender):null)??D(i.body),a=n?O(i.body):void 0,o={id:n===`sudo-request`&&a?`sudo-request-${a}`:t(),role:`user`,content:i.body,timestamp:e.timestamp};n&&(o.source=`lick`,o.channel=n,a&&(o.lickId=a)),r.push(o)}return r}function m(e,t,n,r,i,a=!1){let o=[];for(let t of S(e,a))r.has(t.name)?i.add(t.id):o.push(t);let s={id:n(),role:`assistant`,content:y(e.content),timestamp:e.timestamp,source:t,model:e.model},{usage:c}=e;return c&&(s.usage={input:c.input,output:c.output,cacheRead:c.cacheRead,cacheWrite:c.cacheWrite,cost:{input:c.cost.input,output:c.cost.output,cacheRead:c.cost.cacheRead,cacheWrite:c.cost.cacheWrite,total:c.cost.total}}),o.length>0&&(s.toolCalls=o),s}function h(e,t,n,r=!1){if(n.has(e.toolCallId))return;let i=t?.toolCalls?.find(t=>t.id===e.toolCallId);if(!i)return;let a=y(e.content);i.result=r?a:o(a),i.isError=e.isError}function g(e){return e.role===`user`}function _(e){return e.role===`assistant`}function v(e){return e.role===`toolResult`}function y(e){if(typeof e==`string`)return e;if(!Array.isArray(e))return``;let t=[];for(let n of e)b(n)&&t.push(n.text);return t.join(``)}function b(e){return e.type===`text`}function x(e){return e.type===`toolCall`}function S(e,t=!1){if(!Array.isArray(e.content))return[];let n=[];for(let r of e.content)x(r)&&n.push({id:r.id,name:r.name,input:t?r.arguments:s(r.arguments)});return n}function C(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)}function w(e){if(!e.startsWith(`[`))return null;let t=e.indexOf(`] `);if(t<=0||e.lastIndexOf(`
2
- `,t)!==-1)return null;let r=e.slice(t+2);if(r.startsWith(`User: `))return{sender:`User`,body:r.slice(6)};for(let e of n){let t=`${e}:`;if(!r.startsWith(t))continue;let n=r.indexOf(`
3
- `),i=n===-1?r.length:n,a=r.slice(0,i),o=-1,s=a.indexOf(`[`,t.length);if(s>t.length&&(o=a.lastIndexOf(`: `,s)),o<t.length&&(o=r.indexOf(`: `,t.length)),!(o<0||o>=i))return{sender:r.slice(0,o),body:r.slice(o+2)}}let i=r.indexOf(`
4
- `),a=i===-1?r.length:i,o=r.indexOf(`: `);if(o<=0||o>=a)return null;let s=r.slice(0,o);return s.includes(`
5
- `)?null:{sender:s,body:r.slice(o+2)}}function T(e){if(e.length===0)return[];let t=e.split(`
6
- `);if(!t[0].startsWith(`[`))return[{sender:null,body:e}];let n=[],r=null,i=()=>{if(!r)return;let e=r.rest.length>0?`${r.firstLine}\n${r.rest.join(`
7
- `)}`:r.firstLine,t=w(e);t?n.push({sender:t.sender,body:t.body}):n.push({sender:null,body:e}),r=null};for(let e of t){if(e.startsWith(`[`)&&/^\[[^\]\n]+\] /.test(e)&&e.includes(`: `)&&w(e)){i(),r={firstLine:e,rest:[]};continue}r?r.rest.push(e):r={firstLine:e,rest:[]}}return i(),n.length===0?[{sender:null,body:e}]:n}function E(e){let t=e.indexOf(`:`);if(t<=0)return null;let n=e.slice(0,t);return r(n)?n:null}function D(e){let t=/^\[@[^\]\s]+ (completed|idle)\]/.exec(e);return t?t[1]===`idle`?`scoop-idle`:`scoop-notify`:/^\[@[^\]\s]+ sudo-request\]/.test(e)?`sudo-request`:/^\[scoop_wait [^\]]+\]/.test(e)?`scoop-wait`:e.startsWith(`[Session Reload]`)?`session-reload`:null}function O(e){return/^(?:Lick ID|Request ID): (\S+)/m.exec(e)?.[1]}export{T as a,l as c,E as i,i as l,d as n,s as o,D as r,c as s,f as t,r as u};
@@ -1,6 +0,0 @@
1
- function e(e){if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n>=10||r===0?Math.round(n):Math.round(n*10)/10} ${t[r]}`}function t(t){let n=t.mimeType||`application/octet-stream`;return`${t.name} (${n}, ${e(t.size)})`}function n(e){let n=t(e);return e.kind===`image`&&e.data?e.path?`[Attached image: ${n} — full-resolution copy saved to ${e.path}]`:`[Attached image: ${n}]`:e.kind===`text`&&e.text!==void 0?[`----- BEGIN ATTACHMENT ${n} -----`,e.text,`----- END ATTACHMENT ${e.name} -----`].join(`
2
- `):e.path?`[Attached ${e.kind===`image`?`image`:e.kind===`text`?`text file`:`file`} saved to ${e.path} — ${n}. Read it from the virtual filesystem when you need its contents.]`:e.error?`[Attachment not included: ${n}. ${e.error}]`:`[Attachment not included: ${n}. Unsupported binary attachment.]`}function r(e,t){if(!t?.length)return e;let r=t.map(n),i=e.trim();return i?`${i}\n\n${r.join(`
3
-
4
- `)}`:r.join(`
5
-
6
- `)}function i(e){return e?.length?e.filter(e=>e.kind===`image`&&e.data).map(e=>({type:`image`,data:e.data,mimeType:e.mimeType})):[]}export{r as n,i as r,t};
@@ -1 +0,0 @@
1
- const e=`https://www.sliccy.ai`,t=`bridge`;export{e as n,t};
@@ -1 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./providers-C1P4Z_in.js";import{f as n}from"./account-store-CScbFg3i.js";var r=class{resolve;providerId;now;#e=null;#t=null;#n=null;#r=null;constructor(e,t,n=Date.now){this.resolve=e,this.providerId=t,this.now=n}#i(e){return e===`ok`?6e4:e===`unsupported`?18e5:3e5}isStale(){let e=this.#e;return!e||this.#t!==this.providerId()||this.now()-e.at>=this.#i(e.outcome)}snapshot(){return this.#t===this.providerId()?this.#e?.window??null:null}async refresh(e={}){if(!e.force&&!this.isStale())return this.snapshot();let t=this.providerId();return this.#n!==null&&this.#r===t?this.#n:(this.#n=this.resolve().then(e=>{let n=e?{...e,at:this.now()}:null;return this.#a(t,n?`ok`:`unsupported`,n),n}).catch(()=>{let e=this.snapshot();return this.#a(t,`failed`,e),e}).finally(()=>{this.#r===t&&(this.#n=null,this.#r=null)}),this.#r=t,this.#n)}#a(e,t,n){e===this.providerId()&&(this.#t=e,this.#e={outcome:t,window:n,at:this.now()})}clear(){this.#e=null,this.#t=null}},i=e({clearBudgetWindowCache:()=>u,getBudgetWindowSnapshot:()=>c,refreshBudgetWindow:()=>l});async function a(){let e=n();if(!e)return null;let r=t(e);if(!r?.getBudgetUsage)return null;let i=await r.getBudgetUsage();return i?{...i,providerId:e}:null}function o(){try{return n()}catch{return``}}const s=new r(a,o);function c(){return s.snapshot()}function l(e){return s.refresh(e)}function u(){s.clear()}export{l as i,u as n,c as r,i as t};
@@ -1 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";var t=e({copyTextToClipboard:()=>n});async function n(e){if(!e)return!1;if(typeof navigator<`u`&&navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch{}if(typeof document>`u`)return!1;try{let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,``),t.style.cssText=`position:fixed; opacity:0; pointer-events:none; left:-9999px;`,document.body.appendChild(t),t.select();let n=document.execCommand?.(`copy`)??!1;return document.body.removeChild(t),n}catch{return!1}}export{t};
@@ -1,15 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{t as n}from"./compat-uEPf6-XW.js";import{n as r}from"./descriptor-D-6Koktu.js";import{a as i}from"./memory-budget-Bcf7Eolo.js";var a=e({CONE_MEMORY_PATH:()=>c,MEMORY_BASE_CHARS:()=>MEMORY_BASE_CHARS,MEMORY_OVERSHOOT_RATIO:()=>s,MEMORY_PER_LOG_CHARS:()=>MEMORY_PER_LOG_CHARS,SESSIONS_INDEX_PATH:()=>l,applyConeMemoryBudget:()=>m,readSessionCount:()=>f,restructureConeMemory:()=>p,splitConeMemory:()=>d});const o=t(`cone-memory-budget`),s=1.25,c=r.memoryPath,l=`/sessions/index.json`,u=/^## Auto-extracted/m;function d(e){let t=u.exec(e);if(!t)return{header:e,autoExtracted:``};let n=t.index;return{header:e.slice(0,n),autoExtracted:e.slice(n)}}async function f(e){try{let t=await e.readFile(l,{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 p(e){let{header:t,autoExtracted:r}=d(e.currentContent);if(!r.trim())return e.currentContent;let i=`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.
2
-
3
- <auto-extracted>
4
- ${r}
5
- </auto-extracted>`,a={role:`user`,content:[{type:`text`,text:`Consolidate the auto-extracted memory bullets below into a single tighter set of durable memories.
6
-
7
- Rules:
8
- - Output ONLY a single \`## Auto-extracted (consolidated)\` heading followed by markdown bullets.
9
- - One fact per bullet. Drop duplicates and superseded facts. Keep the most recent / specific phrasing.
10
- - Preserve concrete identifiers (file paths, URLs, IDs, names) verbatim.
11
- - Be terse. Aim well under the original size.
12
- - Do NOT add preamble, commentary, or any heading other than the single consolidated one.`}],timestamp:Date.now()},o=await n(e.model,{systemPrompt:i,messages:[a]},{apiKey:e.apiKey,maxTokens:4096,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(`
13
- `).trim();if(!s)throw Error(`Restructure call returned empty content`);return`${t}${t.length===0||t.endsWith(`
14
- `)?``:`
15
- `}${s}\n`}async function m(e){if(!e.model||!e.apiKey)return{restructured:!1,reason:`no-llm`};let t=e.memoryPath??c,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 f(e.vfs),a=i(r),l=a*s;if(n.length<=l)return{restructured:!1,reason:`under-threshold`};o.info(`Cone memory over threshold — restructuring`,{size:n.length,budget:a,threshold:l,sessionCount:r});try{let r=await p({currentContent:n,budget:a,model:e.model,apiKey:e.apiKey,headers:e.headers,signal:e.signal});return await e.vfs.writeFile(t,r),o.info(`Cone memory restructured`,{before:n.length,after:r.length}),{restructured:!0}}catch(e){return o.warn(`Cone memory restructure failed — leaving appended content in place`,{error:e instanceof Error?e.message:String(e)}),{restructured:!1,reason:`error`}}}export{m as n,a as r,c as t};
@@ -1 +0,0 @@
1
- const e={SCOOPS:`scoops`,MESSAGES:`messages`,SESSIONS:`sessions`,TASKS:`tasks`,STATE:`state`,WEBHOOKS:`webhooks`,CRONTASKS:`crontasks`};let t=null;function n(t){if(!t.objectStoreNames.contains(e.MESSAGES)){let n=t.createObjectStore(e.MESSAGES,{keyPath:`id`});n.createIndex(`chatJid`,`chatJid`),n.createIndex(`timestamp`,`timestamp`),n.createIndex(`chatJid_timestamp`,[`chatJid`,`timestamp`])}t.objectStoreNames.contains(e.SESSIONS)||t.createObjectStore(e.SESSIONS,{keyPath:`groupFolder`}),t.objectStoreNames.contains(e.TASKS)||t.createObjectStore(e.TASKS,{keyPath:`id`}).createIndex(`groupFolder`,`groupFolder`),t.objectStoreNames.contains(e.STATE)||t.createObjectStore(e.STATE,{keyPath:`key`})}function r(e,t){let n=e.isMain??!1;return{jid:e.jid,name:e.name,folder:e.folder,trigger:n?void 0:e.trigger||`@${e.folder}`,requiresTrigger:!n&&(e.requiresTrigger??!0),parentJid:n?null:t??null,assistantLabel:n?`sliccy`:e.config?.assistantName||e.folder,addedAt:e.addedAt,config:e.config?{systemPromptAppend:e.config.systemPromptAppend,timeout:e.config.timeout,assistantName:e.config.assistantName}:void 0}}function i(t,n){if(n.objectStoreNames.contains(`groups`)){let i=t.target.transaction.objectStore(`groups`).getAll();i.onsuccess=()=>{let t=i.result;n.deleteObjectStore(`groups`);let a=n.createObjectStore(e.SCOOPS,{keyPath:`jid`});a.createIndex(`type`,`type`);let o=t.find(e=>e.isMain)?.jid;for(let e of t)a.put(r(e,o))};return}n.objectStoreNames.contains(e.SCOOPS)||n.createObjectStore(e.SCOOPS,{keyPath:`jid`}).createIndex(`type`,`type`)}function a(t){t.objectStoreNames.contains(e.WEBHOOKS)||t.createObjectStore(e.WEBHOOKS,{keyPath:`id`}),t.objectStoreNames.contains(e.CRONTASKS)||t.createObjectStore(e.CRONTASKS,{keyPath:`id`})}function o(e){let t=e.target.result,r=e.oldVersion;r<1&&n(t),r<2&&i(e,t),r<3&&a(t)}function s(){if(!t)return null;let n=Object.values(e).every(e=>t.objectStoreNames.contains(e));return t.version===3&&n?t:(t.close(),t=null,null)}function c(e){e.onversionchange=()=>{e.close(),t===e&&(t=null)},e.onclose=()=>{t===e&&(t=null)}}async function l(){return s()||new Promise((e,n)=>{let r=indexedDB.open(`slicc-groups`,3);r.onupgradeneeded=o,r.onsuccess=()=>{let n=r.result;c(n),t=n,e(n)},r.onerror=()=>n(r.error)})}async function u(e,t=`readonly`){return(await l()).transaction(e,t).objectStore(e)}async function d(t){let n=await u(e.SCOOPS,`readwrite`);return new Promise((e,r)=>{let i=n.put(t);i.onsuccess=()=>e(),i.onerror=()=>r(i.error)})}async function f(){let t=await u(e.SCOOPS);return new Promise((e,n)=>{let r=t.getAll();r.onsuccess=()=>{let t={};for(let e of r.result)t[e.jid]=e;e(t)},r.onerror=()=>n(r.error)})}async function p(t){let n=await u(e.SCOOPS,`readwrite`);return new Promise((e,r)=>{let i=n.delete(t);i.onsuccess=()=>e(),i.onerror=()=>r(i.error)})}async function m(){let t=await u(e.MESSAGES,`readwrite`);return new Promise((e,n)=>{let r=t.clear();r.onsuccess=()=>e(),r.onerror=()=>n(r.error)})}async function h(t){let n=(await u(e.MESSAGES,`readwrite`)).index(`chatJid_timestamp`),r=IDBKeyRange.bound([t,``],[t,`￿`],!1,!1);return new Promise((e,t)=>{let i=n.openCursor(r);i.onsuccess=()=>{let t=i.result;if(!t){e();return}t.delete(),t.continue()},i.onerror=()=>t(i.error)})}async function g(t){let n=await u(e.MESSAGES,`readwrite`);return new Promise((e,r)=>{let i=n.put(t);i.onsuccess=()=>e(),i.onerror=()=>r(i.error)})}async function _(t){let n=await u(e.MESSAGES,`readwrite`);return new Promise((e,r)=>{let i=n.delete(t);i.onsuccess=()=>e(),i.onerror=()=>r(i.error)})}async function v(t){let n=(await u(e.MESSAGES)).index(`chatJid_timestamp`),r=IDBKeyRange.bound([t,``],[t,`￿`],!1,!1);return new Promise((e,t)=>{let i=n.getAll(r);i.onsuccess=()=>e(i.result),i.onerror=()=>t(i.error)})}const y=`wm1:`;function b(e){if(!e)return{ts:``,ids:new Set};if(e.startsWith(y))try{let t=JSON.parse(e.slice(4));return{ts:t.ts,ids:new Set(t.ids)}}catch{}return{ts:e,ids:null}}function x(e){let t=e.ids?Array.from(e.ids):[];return`${y}${JSON.stringify({ts:e.ts,ids:t})}`}function S(e,t){return e.timestamp>t.ts?!0:e.timestamp<t.ts||t.ids===null?!1:!t.ids.has(e.id)}function C(e,t){if(t.length===0)return e;let n=e.ts;for(let e of t)e.timestamp>n&&(n=e.timestamp);let r=new Set;if(e.ts===n&&e.ids)for(let t of e.ids)r.add(t);for(let e of t)e.timestamp===n&&r.add(e.id);return{ts:n,ids:r}}async function w(t,n,r){let i=(await u(e.MESSAGES)).index(`chatJid_timestamp`),a=b(n),o=IDBKeyRange.bound([t,a.ts],[t,`￿`],!1,!1);return new Promise((e,t)=>{let n=i.getAll(o);n.onsuccess=()=>{let t=n.result.filter(e=>S(e,a));r&&(t=t.filter(e=>e.senderName!==r)),e(t)},n.onerror=()=>t(n.error)})}async function T(t){let n=await u(e.TASKS,`readwrite`);return new Promise((e,r)=>{let i=n.put(t);i.onsuccess=()=>e(),i.onerror=()=>r(i.error)})}async function E(t){let n=await u(e.TASKS);return new Promise((e,r)=>{let i=n.get(t);i.onsuccess=()=>e(i.result??null),i.onerror=()=>r(i.error)})}async function D(){let t=await u(e.TASKS);return new Promise((e,n)=>{let r=t.getAll();r.onsuccess=()=>e(r.result),r.onerror=()=>n(r.error)})}async function O(t){let n=await u(e.TASKS,`readwrite`);return new Promise((e,r)=>{let i=n.delete(t);i.onsuccess=()=>e(),i.onerror=()=>r(i.error)})}async function k(t){let n=await u(e.STATE);return new Promise((e,r)=>{let i=n.get(t);i.onsuccess=()=>e(i.result?.value??null),i.onerror=()=>r(i.error)})}async function A(t,n){let r=await u(e.STATE,`readwrite`);return new Promise((e,i)=>{let a=r.put({key:t,value:n});a.onsuccess=()=>e(),a.onerror=()=>i(a.error)})}async function j(){await l()}async function M(t){let n=await u(e.WEBHOOKS,`readwrite`);return new Promise((e,r)=>{let i=n.put(t);i.onsuccess=()=>e(),i.onerror=()=>r(i.error)})}async function N(t){let n=await u(e.WEBHOOKS);return new Promise((e,r)=>{let i=n.get(t);i.onsuccess=()=>e(i.result??null),i.onerror=()=>r(i.error)})}async function P(){try{let t=await u(e.WEBHOOKS);return new Promise((e,n)=>{let r=t.getAll();r.onsuccess=()=>e(r.result),r.onerror=()=>n(r.error)})}catch{return[]}}async function F(t){let n=await u(e.WEBHOOKS,`readwrite`);return new Promise((e,r)=>{let i=n.delete(t);i.onsuccess=()=>e(),i.onerror=()=>r(i.error)})}async function I(t){let n=await u(e.CRONTASKS,`readwrite`);return new Promise((e,r)=>{let i=n.put(t);i.onsuccess=()=>e(),i.onerror=()=>r(i.error)})}async function L(t){let n=await u(e.CRONTASKS);return new Promise((e,r)=>{let i=n.get(t);i.onsuccess=()=>e(i.result??null),i.onerror=()=>r(i.error)})}async function R(){try{let t=await u(e.CRONTASKS);return new Promise((e,n)=>{let r=t.getAll();r.onsuccess=()=>e(r.result),r.onerror=()=>n(r.error)})}catch{return[]}}async function z(t){let n=await u(e.CRONTASKS,`readwrite`);return new Promise((e,r)=>{let i=n.delete(t);i.onsuccess=()=>e(),i.onerror=()=>r(i.error)})}export{d as C,A as D,x as E,g as S,M as T,E as _,_ as a,b,F as c,D as d,P as f,k as g,w as h,z as i,R as l,v as m,m as n,p as o,L as p,h as r,O as s,C as t,f as u,N as v,T as w,I as x,j as y};
@@ -1 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";function t(e){let t=e.markers?.some(e=>e.kind===`error`)??!1,n=(e.projectionPrefix?.length??0)>0;return t||n?2:1}function n(e){return e!==null&&e.version<=2}var r=e({applyAttachmentOverlays:()=>s,interleaveMarkers:()=>c,toAgentMessages:()=>a,toChatMessages:()=>o});const i=new Set([`summarized`,`fallback`]);function a(e){if(!n(e)||e===null||e.origin!==`agent-history`)return[];let t=[];for(let n of e.entries)n.kind!==`tool-call`&&n.message&&t.push(n.message);return t}async function o(e,t={}){if(!n(e)||e===null)return[];if(e.origin===`ui-projection`){let t=[];for(let n of e.entries)n.kind!==`tool-call`&&n.chat&&t.push(n.chat);return c(t,e.markers)}let r=e.projectionPrefix??[],i=a(e);if(i.length===0)return c([...r],e.markers);let{agentMessagesToChatMessages:o}=await import(`./agent-message-to-chat-w7n13QEN.js`).then(e=>e.n),l=s(o(i,t),e.attachments);return c([...r,...l],e.markers)}function s(e,t){if(!t?.length)return e;let n=[...t].sort((e,t)=>e.timestamp-t.timestamp),r=new Set;return e.map(e=>{if(e.role!==`user`||e.attachments?.length)return e;let t=e.content.trim(),i=n.findIndex((e,n)=>!r.has(n)&&e.body.trim()===t);return i<0?e:(r.add(i),{...e,attachments:n[i].attachments})})}function c(e,t){let n=(t??[]).filter(e=>e.kind!==`compaction`||i.has(e.compaction.state));if(n.length===0)return e;let r=[...n].sort((e,t)=>e.timestamp-t.timestamp),a=[],o=0;for(let t of e){let e=l(t);for(;o<r.length&&r[o].timestamp<=e;)a.push(u(r[o++]));a.push(t)}for(;o<r.length;)a.push(u(r[o++]));return a}function l(e){let t=e.timestamp;if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t==`string`){let e=Date.parse(t);if(!Number.isNaN(e))return e}return-1/0}function u(e){return e.kind===`error`?{id:e.id,role:`assistant`,content:e.text,timestamp:e.timestamp,error:!0}:{id:e.id,role:`assistant`,content:``,timestamp:e.timestamp,compaction:e.compaction}}export{t as a,n as i,a as n,o as r,r as t};
@@ -1 +0,0 @@
1
- import{C as e,E as t,O as n,S as r,T as i,b as a,i as o,t as s,x as c}from"./record-YqlVEfh_.js";function l(e){switch(e){case`initializing`:return`creating`;case`processing`:return`running`;case`error`:return`failed`;case`ready`:return`ready`;default:return`creating`}}const u=`/cones`,d=`/workspace/skills`;function f(t){if(e(t)){if(o(t))return{root:`/workspace`,memoryPath:`/workspace/CLAUDE.md`,scratch:`/tmp`};let e=`${u}/${t.folder}`;return{root:`${e}/workspace`,memoryPath:`${e}/CLAUDE.md`,scratch:`/tmp`}}let n=`/scoops/${t.folder}`;return{root:`${n}/workspace`,memoryPath:`${n}/CLAUDE.md`,scratch:n}}const p=`/tmp`;function m(n,r){if(!r)return`${p}/${s}`;if(e(r))return`${p}/${r.folder}`;let a=[...n],o=i(a,r)??t(a)[0];return`${p}/${o?.folder??`cone`}/${r.folder}`}const h=Object.freeze(f({parentJid:null,folder:s}));function g(e,n){let r=[...e],a=i(r,n)??t(r)[0];return a?f(a):h}function _(e){let t=`${e.root}/`,n=`${d}/`;return n.startsWith(t)?[t]:[t,n]}function v(e,t,n,r){let i=`/scoops/${t}/`;return e===`private`?{visiblePaths:[],writablePaths:[i]}:{visiblePaths:_({root:r??n.root}),writablePaths:[i,`/shared/`]}}function y(e){let{root:t}=f(e);return{workspaceId:t,root:t,access:b(e)}}function b(t){if(e(t))return`shared-live`;let r=t.config?.workspaceMode;return r===`private`||r===`shared-readonly`||r===`snapshot`||r===`shared-live`?r:n}function x(t,n){let i=e(t);return{id:t.jid,parentId:t.parentJid,name:t.name,folder:t.folder,status:l(n?.status),display:{role:i?`primary`:`child`,label:t.assistantLabel},workspace:f(t),workspaceHandle:y(t),policy:r(t),completion:a(t),onParentClose:c(t)}}export{v as a,m as c,l as d,p as i,x as l,h as n,_ as o,d as r,g as s,u as t,f as u};
@@ -1 +0,0 @@
1
- import{t as e}from"./logger-LESFN7Hj.js";import{t}from"./agent-bridge-D_5Sd3oe.js";import{S as n}from"./record-YqlVEfh_.js";const r=e(`directed-approval`);function i(e,t){if(e.kind===`user`)return a(`the user tier is not a directed approval`);if(e.kind===`agent`)return a(`agent approvals are not enqueued to a unit`);let r=e.unitJid;if(!t.scoops.has(r))return a(`the requesting unit is not registered`);let i=t.ownerRootOf(r);if(!i)return a(`no owning cone for the requesting unit`);let o=e.kind===`cone`?i:[...t.scoops.values()].find(t=>t.parentJid===i.jid&&(t.name===e.scoopName||t.folder===e.scoopName));return o?n(o).canResolveApprovals?{ok:!0,requesterJid:r,approver:o}:a(`the named approver cannot resolve approvals`):a(`delegated approver not found under this cone`)}function a(e){return r.warn(`Directed approval failing closed`,{reason:e}),{ok:!1,reason:e}}const o={decision:`deny`};async function s(e,n){let a=e.approver;if(a?.kind===`agent`){let i=globalThis[t];if(!i)return r.warn(`No agent bridge available for an approver agent — denying`),o;let{approverRunnerFor:s}=await import(`./approver-agent-CCkU0PVa.js`),c=n.getSharedFs(),l=await s({spawn:e=>i.spawn(e),readSharedFile:async e=>{if(!c)return null;try{let t=await c.readFile(e,{encoding:`utf-8`});return typeof t==`string`?t:null}catch{return null}},findUnit:e=>{let t=n.scoops.get(e);return t?{workspace:n.workspaceFor(t),folder:t.folder}:void 0}})({kind:e.kind===`guest-tool`?`guest-tool`:`guest-message`,requester:e.requester??`an unidentified requester`,detail:e.detail},a.unitJid);return r.info(`Approver agent verdict`,{decision:l.decision,reason:l.reason}),l.decision===`allow`?{decision:`allow`}:o}if(a&&a.kind!==`user`){let t=i(a,n);return t.ok?n.enqueue(t.requesterJid,e,{approver:t.approver}):o}return n.approveAsUser(e)}export{s as runDirectedApproval};
@@ -1 +0,0 @@
1
- function e(e){let t=e?.get(`FFMPEG_ENGINE`)?.trim().toLowerCase();return t===`wasm`||t===`mediabunny`?t:`auto`}function t(e){return e?.get(`FFMPEG_CORE`)?.trim().toLowerCase()===`mt`?`mt`:`st`}export{t as ffmpegCoreFromEnv,e as ffmpegEngineFromEnv};
@@ -1 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./rom-eeWiO07Z.js";var n=e({ESP8266ROM:()=>r}),r=class extends t{constructor(){super(...arguments),this.CHIP_NAME=`ESP8266`,this.CHIP_DETECT_MAGIC_VALUE=[4293968129],this.EFUSE_RD_REG_BASE=1072693328,this.UART_CLKDIV_REG=1610612756,this.UART_CLKDIV_MASK=1048575,this.XTAL_CLK_DIVIDER=2,this.FLASH_WRITE_SIZE=16384,this.BOOTLOADER_FLASH_OFFSET=0,this.UART_DATE_REG_ADDR=0,this.FLASH_SIZES={"512KB":0,"256KB":16,"1MB":32,"2MB":48,"4MB":64,"2MB-c1":80,"4MB-c1":96,"8MB":128,"16MB":144},this.FLASH_FREQUENCY={"80m":15,"40m":0,"26m":1,"20m":2},this.MEMORY_MAP=[[1072693248,1072693264,`DPORT`],[1073643520,1073741824,`DRAM`],[1074790400,1074823168,`IRAM`],[1075843088,1076760592,`IROM`]],this.SPI_REG_BASE=1610613248,this.SPI_USR_OFFS=28,this.SPI_USR1_OFFS=32,this.SPI_USR2_OFFS=36,this.SPI_MOSI_DLEN_OFFS=0,this.SPI_MISO_DLEN_OFFS=0,this.SPI_W0_OFFS=64,this.getChipFeatures=async e=>{let t=[`WiFi`];return await this.getChipDescription(e)==`ESP8285`&&t.push(`Embedded Flash`),t}}async readEfuse(e,t){let n=this.EFUSE_RD_REG_BASE+4*t;return e.debug(`Read efuse `+n),await e.readReg(n)}async getChipDescription(e){let t=await this.readEfuse(e,2);return await this.readEfuse(e,0)&16|t&65536?`ESP8285`:`ESP8266EX`}async getCrystalFreq(e){let t=await e.readReg(this.UART_CLKDIV_REG)&this.UART_CLKDIV_MASK,n=e.transport.baudrate*t/1e6/this.XTAL_CLK_DIVIDER,r;return r=n>33?40:26,Math.abs(r-n)>1&&e.info(`WARNING: Detected crystal freq `+n+`MHz is quite different to normalized freq `+r+`MHz. Unsupported crystal in use?`),r}_d2h(e){let t=(+e).toString(16);return t.length===1?`0`+t:t}async readMac(e){let t=await this.readEfuse(e,0);t>>>=0;let n=await this.readEfuse(e,1);n>>>=0;let r=await this.readEfuse(e,3);r>>>=0;let i=new Uint8Array(6);return r==0?n>>16&255?(n>>16&255)==1?(i[0]=172,i[1]=208,i[2]=116):e.error(`Unknown OUI`):(i[0]=24,i[1]=254,i[2]=52):(i[0]=r>>16&255,i[1]=r>>8&255,i[2]=r&255),i[3]=n>>8&255,i[4]=n&255,i[5]=t>>24&255,this._d2h(i[0])+`:`+this._d2h(i[1])+`:`+this._d2h(i[2])+`:`+this._d2h(i[3])+`:`+this._d2h(i[4])+`:`+this._d2h(i[5])}getEraseSize(e,t){return t}};r.IROM_MAP_START=1075838976,r.IROM_MAP_END=1076887552;export{n,r as t};