shadow-claw 1.40.0 → 1.41.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 (373) hide show
  1. package/.well-known/mcp/server-card.json +2 -2
  2. package/.well-known/mcp/servers.json +1 -1
  3. package/.well-known/mcp.json +2 -2
  4. package/README.md +1 -0
  5. package/dist/cli/build/build.js +1 -1
  6. package/dist/cli/{chunk-Bfz2NYgD.js → chunk-0IeC97mU.js} +7 -7
  7. package/dist/cli/chunk-3oLxlxPn.js +1 -0
  8. package/dist/cli/{chunk-BXg4-9Rq2.js → chunk-8CrZyP1b2.js} +1 -1
  9. package/dist/cli/{chunk-BP5Hg6CM.js → chunk-B--ueArB.js} +1 -1
  10. package/dist/cli/chunk-BIh7rXlJ2.js +1 -0
  11. package/dist/cli/{chunk-Drr0VSGA2.js → chunk-BKnTOLLS2.js} +1 -1
  12. package/dist/cli/{chunk-C5PuRV08.js → chunk-BLMC1Bxv.js} +1 -1
  13. package/dist/cli/{chunk-B2tNSlFy2.js → chunk-BOigzz2U2.js} +1 -1
  14. package/dist/cli/{chunk-DOf3DZdR.js → chunk-BOzn335y.js} +1 -1
  15. package/dist/cli/chunk-BjOeVLb42.js +1 -0
  16. package/dist/cli/{chunk-DqTx0rRp2.js → chunk-Bjqh5_SU2.js} +1 -1
  17. package/dist/cli/chunk-BqWBd_jF2.js +1 -0
  18. package/dist/cli/{chunk-Bc9nRNyN.js → chunk-BvVUnHTq.js} +12 -9
  19. package/dist/cli/{chunk-DIbSoQmd2.js → chunk-C6FFByBU2.js} +2 -2
  20. package/dist/cli/{chunk-Drq18VZe.js → chunk-C9-aL3rF.js} +1 -1
  21. package/dist/cli/{chunk-BUhqHeEA2.js → chunk-C9czddEh2.js} +2 -2
  22. package/dist/cli/chunk-CCx8WOwz2.js +1 -0
  23. package/dist/cli/{chunk-BkMSjVJb.js → chunk-CK6ejMig.js} +1 -1
  24. package/dist/cli/chunk-CUUERioR2.js +1 -0
  25. package/dist/cli/chunk-CXAobnJd.js +1 -0
  26. package/dist/cli/chunk-CY1X0pOF2.js +1 -0
  27. package/dist/cli/chunk-CZvvgLVv.js +1 -0
  28. package/dist/cli/chunk-CbcwbfJB.js +1 -0
  29. package/dist/cli/{chunk-quilB3TV2.js → chunk-Ci9OJGcd2.js} +1 -1
  30. package/dist/cli/chunk-Cj9wl0qx.js +1 -0
  31. package/dist/cli/{chunk-3gRhOmGo2.js → chunk-CjJsVrKI2.js} +1 -1
  32. package/dist/cli/{chunk-CmEfzm-_.js → chunk-ClPZ4Rea.js} +1 -1
  33. package/dist/cli/{chunk-WMPAfIvV2.js → chunk-DHJCGRuG2.js} +1 -1
  34. package/dist/cli/{chunk-C7Y2xIk4.js → chunk-DKVkYTV9.js} +1 -1
  35. package/dist/cli/chunk-DR2XtWRo.js +1 -0
  36. package/dist/cli/{chunk-DID5VvOG.js → chunk-DTES-dE6.js} +3 -3
  37. package/dist/cli/{chunk-BiVJVh_S.js → chunk-DUlIqkaX.js} +7 -7
  38. package/dist/cli/{chunk-CkpueGaZ2.js → chunk-DjWle8FF2.js} +1 -1
  39. package/dist/cli/{chunk-CSvHmNOk.js → chunk-DmRXVLfy.js} +1 -1
  40. package/dist/cli/{chunk-BT1xXZn72.js → chunk-HlSiTC-u2.js} +1 -1
  41. package/dist/cli/{chunk-da0bsiOn.js → chunk-P4JSeFBI.js} +1 -1
  42. package/dist/cli/chunk-UcNbHaRQ.js +1 -0
  43. package/dist/cli/{chunk-BXFHFbEd.js → chunk-UweLmfQS.js} +1 -1
  44. package/dist/cli/chunk-bQQkVCw-.js +94 -0
  45. package/dist/cli/{chunk-CGiXWHTi2.js → chunk-gwpxl-0W2.js} +1 -1
  46. package/dist/cli/{chunk-NH8koEis2.js → chunk-nmDhxXH_2.js} +1 -1
  47. package/dist/cli/chunk-p0n_c-I2.js +1 -0
  48. package/dist/cli/{chunk-D7xP72La.js → chunk-q7r4FosZ.js} +1 -1
  49. package/dist/cli/cli.js +3 -3
  50. package/dist/cli/prerender/dsd-shell/prerender-dsd-shell.js +1 -1
  51. package/dist/electron/main.cjs +1 -1
  52. package/dist/headless-agent.js +1 -1
  53. package/dist/lib/{app-routes-BAEMLu9g.js → app-routes-CKkiX12g.js} +7 -2
  54. package/dist/lib/app-routes-CKkiX12g.js.map +1 -0
  55. package/dist/lib/components/index.js +26 -26
  56. package/dist/lib/components/settings/shadow-claw-accounts.js +1 -1
  57. package/dist/lib/components/settings/shadow-claw-channel-config.js +1 -1
  58. package/dist/lib/components/settings/shadow-claw-control-plane.js +1 -1
  59. package/dist/lib/components/settings/shadow-claw-git.js +1 -1
  60. package/dist/lib/components/settings/shadow-claw-integrations.js +1 -1
  61. package/dist/lib/components/settings/shadow-claw-llm.js +1 -1
  62. package/dist/lib/components/settings/shadow-claw-mcp-remote.js +1 -1
  63. package/dist/lib/components/settings/shadow-claw-networking.js +1 -1
  64. package/dist/lib/components/settings/shadow-claw-notifications.js +1 -1
  65. package/dist/lib/components/settings/shadow-claw-peerjs.js +1 -1
  66. package/dist/lib/components/settings/shadow-claw-storage.js +1 -1
  67. package/dist/lib/components/settings/shadow-claw-task-server.js +1 -1
  68. package/dist/lib/components/settings/shadow-claw-webvm.js +1 -1
  69. package/dist/lib/components/shadow-claw/utils/syncSlottedSidebarActiveLinks.d.ts +10 -0
  70. package/dist/lib/components/shadow-claw-a2ui.js +1 -1
  71. package/dist/lib/components/shadow-claw-accounts.js +1 -1
  72. package/dist/lib/components/shadow-claw-channel-config.js +1 -1
  73. package/dist/lib/components/shadow-claw-channels.js +1 -1
  74. package/dist/lib/components/shadow-claw-chat.js +1 -1
  75. package/dist/lib/components/shadow-claw-control-plane.js +1 -1
  76. package/dist/lib/components/shadow-claw-conversations.js +1 -1
  77. package/dist/lib/components/shadow-claw-file-viewer/shadow-claw-file-viewer.d.ts +1 -1
  78. package/dist/lib/components/shadow-claw-file-viewer.js +1 -1
  79. package/dist/lib/components/shadow-claw-files.js +1 -1
  80. package/dist/lib/components/shadow-claw-git.js +1 -1
  81. package/dist/lib/components/shadow-claw-integrations.js +1 -1
  82. package/dist/lib/components/shadow-claw-llm.js +1 -1
  83. package/dist/lib/components/shadow-claw-mcp-remote.js +1 -1
  84. package/dist/lib/components/shadow-claw-networking.js +1 -1
  85. package/dist/lib/components/shadow-claw-notifications.js +1 -1
  86. package/dist/lib/components/shadow-claw-page-header.js +1 -1
  87. package/dist/lib/components/shadow-claw-pages.js +1 -1
  88. package/dist/lib/components/shadow-claw-peerjs.js +1 -1
  89. package/dist/lib/components/shadow-claw-settings.js +1 -1
  90. package/dist/lib/components/shadow-claw-storage.js +1 -1
  91. package/dist/lib/components/shadow-claw-task-server.js +1 -1
  92. package/dist/lib/components/shadow-claw-tasks.js +1 -1
  93. package/dist/lib/components/shadow-claw-terminal.js +1 -1
  94. package/dist/lib/components/shadow-claw-tools.js +1 -1
  95. package/dist/lib/components/shadow-claw-webvm.js +1 -1
  96. package/dist/lib/components/shadow-claw.js +1 -1
  97. package/dist/lib/{config-CPHDmyTx.js → config-DZkF9LiO.js} +2 -2
  98. package/dist/lib/{config-CPHDmyTx.js.map → config-DZkF9LiO.js.map} +1 -1
  99. package/dist/lib/{configurePeerJs-BsJoycQd.js → configurePeerJs-B3IE9BY2.js} +3 -3
  100. package/dist/lib/{configurePeerJs-BsJoycQd.js.map → configurePeerJs-B3IE9BY2.js.map} +1 -1
  101. package/dist/lib/{connections-BdIru7bF.js → connections-CalJGWvZ.js} +2 -2
  102. package/dist/lib/{connections-BdIru7bF.js.map → connections-CalJGWvZ.js.map} +1 -1
  103. package/dist/lib/core/orchestrator/orchestrator-state.d.ts +2 -1
  104. package/dist/lib/core/orchestrator/orchestrator.d.ts +2 -1
  105. package/dist/lib/core/orchestrator/utils/operations/task.d.ts +1 -0
  106. package/dist/lib/{downloadGroupFile-Dn0KsMlV.js → downloadGroupFile-DDE1fIhJ.js} +2 -2
  107. package/dist/lib/{downloadGroupFile-Dn0KsMlV.js.map → downloadGroupFile-DDE1fIhJ.js.map} +1 -1
  108. package/dist/lib/{file-viewer-BYrXXu-X.js → file-viewer-Bll2EoGc.js} +5 -5
  109. package/dist/lib/{file-viewer-BYrXXu-X.js.map → file-viewer-Bll2EoGc.js.map} +1 -1
  110. package/dist/lib/{getGroupDir-DF-RZO8X.js → getGroupDir-MHv7Lvmp.js} +4 -4
  111. package/dist/lib/{getGroupDir-DF-RZO8X.js.map → getGroupDir-MHv7Lvmp.js.map} +1 -1
  112. package/dist/lib/{git-s_0cgKm1.js → git-Bv_M3dgw.js} +3 -3
  113. package/dist/lib/{git-s_0cgKm1.js.map → git-Bv_M3dgw.js.map} +1 -1
  114. package/dist/lib/{iframe-sanitizer-DFdda1jJ.js → iframe-sanitizer-C7ZGDjEI.js} +2 -2
  115. package/dist/lib/{iframe-sanitizer-DFdda1jJ.js.map → iframe-sanitizer-C7ZGDjEI.js.map} +1 -1
  116. package/dist/lib/{iframe-storage-proxy-qrhZmQyO.js → iframe-storage-proxy-CR8ZYHPd.js} +2 -2
  117. package/dist/lib/{iframe-storage-proxy-qrhZmQyO.js.map → iframe-storage-proxy-CR8ZYHPd.js.map} +1 -1
  118. package/dist/lib/index.js +27 -27
  119. package/dist/lib/{initChatSplitResize-DuNlwCuI.js → initChatSplitResize-DiKTI-wk.js} +2 -2
  120. package/dist/lib/{initChatSplitResize-DuNlwCuI.js.map → initChatSplitResize-DiKTI-wk.js.map} +1 -1
  121. package/dist/lib/{initControlPlane-D4UZ4EhV.js → initControlPlane-CzjtQ4aM.js} +15 -15
  122. package/dist/lib/{initControlPlane-D4UZ4EhV.js.map → initControlPlane-CzjtQ4aM.js.map} +1 -1
  123. package/dist/lib/{markdown-CRRwbN9h.js → markdown-k8wA9LKy.js} +4 -4
  124. package/dist/lib/{markdown-CRRwbN9h.js.map → markdown-k8wA9LKy.js.map} +1 -1
  125. package/dist/lib/{mcp-reconnect-COdZ-cea.js → mcp-reconnect-CGIdfZnS.js} +2 -2
  126. package/dist/lib/{mcp-reconnect-COdZ-cea.js.map → mcp-reconnect-CGIdfZnS.js.map} +1 -1
  127. package/dist/lib/{memoryStorage-BsMe2FOQ.js → memoryStorage-DL-Bo3dh.js} +2 -2
  128. package/dist/lib/{memoryStorage-BsMe2FOQ.js.map → memoryStorage-DL-Bo3dh.js.map} +1 -1
  129. package/dist/lib/{orchestrator-D9f5fDCb.js → orchestrator-DKHCoikY.js} +11 -11
  130. package/dist/lib/{orchestrator-D9f5fDCb.js.map → orchestrator-DKHCoikY.js.map} +1 -1
  131. package/dist/lib/{orchestrator-Bq9ft3uG.js → orchestrator-Dn1ZOz9B.js} +20 -24
  132. package/dist/lib/orchestrator-Dn1ZOz9B.js.map +1 -0
  133. package/dist/lib/{peerjs-6u8KtenE.js → peerjs-BK41iBvP.js} +7 -7
  134. package/dist/lib/{peerjs-6u8KtenE.js.map → peerjs-BK41iBvP.js.map} +1 -1
  135. package/dist/lib/{push-client-DCnB2-OU.js → push-client-DKgVFD2Z.js} +3 -3
  136. package/dist/lib/{push-client-DCnB2-OU.js.map → push-client-DKgVFD2Z.js.map} +1 -1
  137. package/dist/lib/{readGroupFileBytes-nKNJ6sbl.js → readGroupFileBytes-CgU_UfGv.js} +2 -2
  138. package/dist/lib/{readGroupFileBytes-nKNJ6sbl.js.map → readGroupFileBytes-CgU_UfGv.js.map} +1 -1
  139. package/dist/lib/{shadow-claw-MumteAJy.js → shadow-claw-CtCj5Rn_.js} +121 -16
  140. package/dist/lib/shadow-claw-CtCj5Rn_.js.map +1 -0
  141. package/dist/lib/{shadow-claw-a2ui-Dipe8nY2.js → shadow-claw-a2ui-CvK5w940.js} +2 -2
  142. package/dist/lib/{shadow-claw-a2ui-Dipe8nY2.js.map → shadow-claw-a2ui-CvK5w940.js.map} +1 -1
  143. package/dist/lib/{shadow-claw-accounts-BgCkz3Zv.js → shadow-claw-accounts-Br3XdHro.js} +3 -3
  144. package/dist/lib/{shadow-claw-accounts-BgCkz3Zv.js.map → shadow-claw-accounts-Br3XdHro.js.map} +1 -1
  145. package/dist/lib/{shadow-claw-channel-config-CIm_Bxd2.js → shadow-claw-channel-config-Da2dN19M.js} +3 -3
  146. package/dist/lib/{shadow-claw-channel-config-CIm_Bxd2.js.map → shadow-claw-channel-config-Da2dN19M.js.map} +1 -1
  147. package/dist/lib/{shadow-claw-channels-CaceK52s.js → shadow-claw-channels-BofYHgz8.js} +3 -3
  148. package/dist/lib/{shadow-claw-channels-CaceK52s.js.map → shadow-claw-channels-BofYHgz8.js.map} +1 -1
  149. package/dist/lib/{shadow-claw-chat-BD18-mAR.js → shadow-claw-chat-Dw32DPV2.js} +12 -12
  150. package/dist/lib/{shadow-claw-chat-BD18-mAR.js.map → shadow-claw-chat-Dw32DPV2.js.map} +1 -1
  151. package/dist/lib/{shadow-claw-control-plane-U6LsfRPm.js → shadow-claw-control-plane-CwFotFDh.js} +7 -7
  152. package/dist/lib/{shadow-claw-control-plane-U6LsfRPm.js.map → shadow-claw-control-plane-CwFotFDh.js.map} +1 -1
  153. package/dist/lib/{shadow-claw-conversations-CDsza_oB.js → shadow-claw-conversations-0UXge23k.js} +5 -5
  154. package/dist/lib/{shadow-claw-conversations-CDsza_oB.js.map → shadow-claw-conversations-0UXge23k.js.map} +1 -1
  155. package/dist/lib/{shadow-claw-file-viewer-CMOnFmcP.js → shadow-claw-file-viewer-CAsn9NxH.js} +30 -30
  156. package/dist/lib/{shadow-claw-file-viewer-CMOnFmcP.js.map → shadow-claw-file-viewer-CAsn9NxH.js.map} +1 -1
  157. package/dist/lib/{shadow-claw-files-BI0P3m8a.js → shadow-claw-files-xGGhsHNH.js} +9 -9
  158. package/dist/lib/{shadow-claw-files-BI0P3m8a.js.map → shadow-claw-files-xGGhsHNH.js.map} +1 -1
  159. package/dist/lib/{shadow-claw-git-xRApLEMN.js → shadow-claw-git-B606hcMU.js} +6 -6
  160. package/dist/lib/{shadow-claw-git-xRApLEMN.js.map → shadow-claw-git-B606hcMU.js.map} +1 -1
  161. package/dist/lib/{shadow-claw-integrations-B2e1Nfg1.js → shadow-claw-integrations-Bwq5cba1.js} +4 -4
  162. package/dist/lib/{shadow-claw-integrations-B2e1Nfg1.js.map → shadow-claw-integrations-Bwq5cba1.js.map} +1 -1
  163. package/dist/lib/{shadow-claw-llm-Bc2mWuGb.js → shadow-claw-llm-BgpcMBIy.js} +6 -6
  164. package/dist/lib/{shadow-claw-llm-Bc2mWuGb.js.map → shadow-claw-llm-BgpcMBIy.js.map} +1 -1
  165. package/dist/lib/{shadow-claw-mcp-remote-D_Bh3aeC.js → shadow-claw-mcp-remote-DvQCA-Bk.js} +4 -4
  166. package/dist/lib/{shadow-claw-mcp-remote-D_Bh3aeC.js.map → shadow-claw-mcp-remote-DvQCA-Bk.js.map} +1 -1
  167. package/dist/lib/{shadow-claw-networking-F5W3n5ci.js → shadow-claw-networking-Cxvf9c7E.js} +2 -2
  168. package/dist/lib/{shadow-claw-networking-F5W3n5ci.js.map → shadow-claw-networking-Cxvf9c7E.js.map} +1 -1
  169. package/dist/lib/{shadow-claw-notifications-lvMt9WJ1.js → shadow-claw-notifications-CGVcFYBy.js} +3 -3
  170. package/dist/lib/{shadow-claw-notifications-lvMt9WJ1.js.map → shadow-claw-notifications-CGVcFYBy.js.map} +1 -1
  171. package/dist/lib/{shadow-claw-page-header-6gq6EMqX.js → shadow-claw-page-header-DAYz3I_o.js} +2 -2
  172. package/dist/lib/{shadow-claw-page-header-6gq6EMqX.js.map → shadow-claw-page-header-DAYz3I_o.js.map} +1 -1
  173. package/dist/lib/{shadow-claw-pages-Bo8_z2S-.js → shadow-claw-pages-BLeEZb9k.js} +24 -12
  174. package/dist/lib/shadow-claw-pages-BLeEZb9k.js.map +1 -0
  175. package/dist/lib/{shadow-claw-peerjs-DRTLCVDQ.js → shadow-claw-peerjs-BcFnbK74.js} +3 -3
  176. package/dist/lib/{shadow-claw-peerjs-DRTLCVDQ.js.map → shadow-claw-peerjs-BcFnbK74.js.map} +1 -1
  177. package/dist/lib/{shadow-claw-settings-D00B4p4L.js → shadow-claw-settings-B7o0Z4hu.js} +9 -9
  178. package/dist/lib/{shadow-claw-settings-D00B4p4L.js.map → shadow-claw-settings-B7o0Z4hu.js.map} +1 -1
  179. package/dist/lib/{shadow-claw-storage-DgMe7-Zo.js → shadow-claw-storage-afMVqB7E.js} +5 -5
  180. package/dist/lib/{shadow-claw-storage-DgMe7-Zo.js.map → shadow-claw-storage-afMVqB7E.js.map} +1 -1
  181. package/dist/lib/{shadow-claw-task-server-D103YOuI.js → shadow-claw-task-server-B9-MQjl6.js} +2 -2
  182. package/dist/lib/{shadow-claw-task-server-D103YOuI.js.map → shadow-claw-task-server-B9-MQjl6.js.map} +1 -1
  183. package/dist/lib/{shadow-claw-tasks-6OhALkq1.js → shadow-claw-tasks-Dc4BC-t-.js} +8 -8
  184. package/dist/lib/{shadow-claw-tasks-6OhALkq1.js.map → shadow-claw-tasks-Dc4BC-t-.js.map} +1 -1
  185. package/dist/lib/{shadow-claw-terminal-BGtxA1qD.js → shadow-claw-terminal-BINcTdsk.js} +2 -2
  186. package/dist/lib/{shadow-claw-terminal-BGtxA1qD.js.map → shadow-claw-terminal-BINcTdsk.js.map} +1 -1
  187. package/dist/lib/{shadow-claw-tools-OeIwAnnd.js → shadow-claw-tools-BjFgXNLR.js} +7 -7
  188. package/dist/lib/{shadow-claw-tools-OeIwAnnd.js.map → shadow-claw-tools-BjFgXNLR.js.map} +1 -1
  189. package/dist/lib/{shadow-claw-webvm-gVFZ197u.js → shadow-claw-webvm-Xe3ByMDw.js} +3 -3
  190. package/dist/lib/{shadow-claw-webvm-gVFZ197u.js.map → shadow-claw-webvm-Xe3ByMDw.js.map} +1 -1
  191. package/dist/lib/subsystems/mcp/webmcp.d.ts +64 -0
  192. package/dist/lib/{syncWebMcpRegistration-Bbph0XZl.js → syncWebMcpRegistration-D7alChz0.js} +21 -6
  193. package/dist/lib/syncWebMcpRegistration-D7alChz0.js.map +1 -0
  194. package/dist/lib/{tools-D0OlSzMD.js → tools-Cmhpk3X8.js} +4 -4
  195. package/dist/lib/{tools-D0OlSzMD.js.map → tools-Cmhpk3X8.js.map} +1 -1
  196. package/dist/lib/utils/index.js +1 -1
  197. package/dist/lib/utils/namespacedStorage.js +1 -1
  198. package/dist/lib/utils/utils.js +1 -1
  199. package/dist/lib/{utils-DYdrO2KI.js → utils-CzgKe_XZ.js} +4 -4
  200. package/dist/lib/{utils-DYdrO2KI.js.map → utils-CzgKe_XZ.js.map} +1 -1
  201. package/dist/lib/{webmcp-D2bocsgh.js → webmcp-oEP9YpR2.js} +119 -3
  202. package/dist/lib/{webmcp-D2bocsgh.js.map → webmcp-oEP9YpR2.js.map} +1 -1
  203. package/dist/public/.well-known/mcp/server-card.json +2 -2
  204. package/dist/public/.well-known/mcp/servers.json +1 -1
  205. package/dist/public/.well-known/mcp.json +2 -2
  206. package/dist/public/AGENTS.md +2 -1
  207. package/dist/public/README.md +1 -0
  208. package/dist/public/agent.worker.js +1 -1
  209. package/dist/public/app-routes-C6-H2zPH.js +1 -0
  210. package/dist/public/components/shadow-claw/shadow-claw.css +1 -1
  211. package/dist/public/components/shadow-claw/shadow-claw.html +1 -1
  212. package/dist/public/components/shadow-claw-pages/shadow-claw-pages.css +1 -1
  213. package/dist/public/{config-D4lVqMs8.js → config-Dewnqegf.js} +1 -1
  214. package/dist/public/{configurePeerJs-DDOAVSaH.js → configurePeerJs-CaPU2sN5.js} +1 -1
  215. package/dist/public/{connections-CiukjGiH.js → connections-CwE7jE9l.js} +1 -1
  216. package/dist/public/{custom-element-security-piU2U-Ec.js → custom-element-security-DLgHMf5R.js} +1 -1
  217. package/dist/public/docs/decisions/native-web-components-and-signals.md +1 -1
  218. package/dist/public/docs/example/article/index.html +5 -5
  219. package/dist/public/docs/guides/publishing-to-github-pages.md +49 -6
  220. package/dist/public/docs/publishing/index.html +5 -5
  221. package/dist/public/docs/skill-creator/index.html +5 -5
  222. package/dist/public/docs/subsystems/pages.md +10 -3
  223. package/dist/public/docs/subsystems/webmcp.md +89 -1
  224. package/dist/public/{downloadGroupFile-BiZQYY-O.js → downloadGroupFile-ChWHuap_.js} +1 -1
  225. package/dist/public/e2e/README.md +2 -2
  226. package/dist/public/{e2e-bridge-CybB810Q.js → e2e-bridge-BkaldjV2.js} +1 -1
  227. package/dist/public/{file-viewer-DLUBvOVD.js → file-viewer-Df4qUJCn.js} +1 -1
  228. package/dist/public/{getGroupDir-CLz5c8cg.js → getGroupDir-CeSr4fzS.js} +1 -1
  229. package/dist/public/{git-Ba8AeviI.js → git-Bscc1tK-.js} +2 -2
  230. package/dist/public/{iframe-sanitizer-CKOO7cxp.js → iframe-sanitizer-BVdkQsor.js} +1 -1
  231. package/dist/public/{iframe-storage-proxy-BvRiccH0.js → iframe-storage-proxy-Cg8aFw7o.js} +1 -1
  232. package/dist/public/index.css +1 -1
  233. package/dist/public/index.html +5 -5
  234. package/dist/public/index.js +1 -1
  235. package/dist/public/{initChatSplitResize-osJXM2gu.js → initChatSplitResize-C3Rp1LeZ.js} +1 -1
  236. package/dist/public/{initControlPlane-CNggzsRw.js → initControlPlane-C1pnzG16.js} +1 -1
  237. package/dist/public/llms.txt +1 -1
  238. package/dist/public/main/index.html +5 -5
  239. package/dist/public/main/memory/index.html +5 -5
  240. package/dist/public/{markdown-CZA-Ye2Q.js → markdown-D3A902nT.js} +1 -1
  241. package/dist/public/{mcp-reconnect-BK1bYBdC.js → mcp-reconnect-BJWxQBm_.js} +1 -1
  242. package/dist/public/{memoryStorage-Bew1X8Uy.js → memoryStorage-ykv-Ri-y.js} +1 -1
  243. package/dist/public/{orchestrator-D6tel2Zp.js → orchestrator-BVnC4Vtt.js} +2 -2
  244. package/dist/public/{orchestrator-BLkS_jpm.js → orchestrator-CQcc7OFA.js} +2 -2
  245. package/dist/public/{peerjs-CYs1F7sq.js → peerjs-CYC2cI1Y.js} +1 -1
  246. package/dist/public/{push-client-_HUyJlFJ.js → push-client-BJrnOULM.js} +1 -1
  247. package/dist/public/service-worker/fetch-proxy.js +1 -1
  248. package/dist/public/service-worker.js +1 -1
  249. package/dist/public/{shadow-claw-DmrxnX3Q.js → shadow-claw-WwfOu-tu.js} +33 -3
  250. package/dist/public/{shadow-claw-accounts-BqGrm47Z.js → shadow-claw-accounts-BFZxrPsH.js} +1 -1
  251. package/dist/public/{shadow-claw-channels-Ci2UPaaA.js → shadow-claw-channels-C0w0c1EF.js} +1 -1
  252. package/dist/public/{shadow-claw-chat-BxR6cBYQ.js → shadow-claw-chat-DIJ0A-QN.js} +1 -1
  253. package/dist/public/{shadow-claw-control-plane-C1A-CZ9H.js → shadow-claw-control-plane-DZoxUd-1.js} +2 -2
  254. package/dist/public/{shadow-claw-conversations-DcwG05-H.js → shadow-claw-conversations-DMyG_5zj.js} +1 -1
  255. package/dist/public/{shadow-claw-file-viewer-a_uRA30F.js → shadow-claw-file-viewer-DYgZjZb9.js} +2 -2
  256. package/dist/public/{shadow-claw-files-B774Xz1d.js → shadow-claw-files-DIOUdKJr.js} +1 -1
  257. package/dist/public/{shadow-claw-git-CTIPP0vs.js → shadow-claw-git-if5S0QJr.js} +2 -2
  258. package/dist/public/{shadow-claw-integrations-CjtkA6l0.js → shadow-claw-integrations-BQt4hcWe.js} +1 -1
  259. package/dist/public/{shadow-claw-llm-DfmITHde.js → shadow-claw-llm-9uf1KFA0.js} +2 -2
  260. package/dist/public/{shadow-claw-mcp-remote-BPuV22So.js → shadow-claw-mcp-remote-COpNIzJd.js} +1 -1
  261. package/dist/public/{shadow-claw-networking-DEMMygy0.js → shadow-claw-networking-AOVRUn6B.js} +1 -1
  262. package/dist/public/{shadow-claw-notifications-B9Xhcj1P.js → shadow-claw-notifications-CKB-W1TA.js} +1 -1
  263. package/dist/public/{shadow-claw-page-header-CAXokjQy.js → shadow-claw-page-header-D4LmUigA.js} +1 -1
  264. package/dist/public/{shadow-claw-pages-BRQw8bTm.js → shadow-claw-pages-BpHRY4vH.js} +12 -3
  265. package/dist/public/{shadow-claw-settings-BGrDNyqh.js → shadow-claw-settings-CE-aUo_J.js} +3 -3
  266. package/dist/public/{shadow-claw-storage-DK3pf11w.js → shadow-claw-storage-CFKC-Y3V.js} +1 -1
  267. package/dist/public/{shadow-claw-task-server-CMp5Vjza.js → shadow-claw-task-server-B_ZjqK4B.js} +1 -1
  268. package/dist/public/{shadow-claw-tasks-BO8aXM2B.js → shadow-claw-tasks-CGsEv48K.js} +1 -1
  269. package/dist/public/{shadow-claw-terminal-BSeTuyDa.js → shadow-claw-terminal-DcaS7cPH.js} +1 -1
  270. package/dist/public/{shadow-claw-tools-Bj6DLZ-2.js → shadow-claw-tools-Cnu9hKy0.js} +1 -1
  271. package/dist/public/{shadow-claw-webvm-M7d5RH8H.js → shadow-claw-webvm-BB8SFvJ8.js} +1 -1
  272. package/dist/public/syncWebMcpRegistration-D2Zx4oA1.js +1 -0
  273. package/dist/public/theme-init.js +1 -1
  274. package/dist/public/{tools-nysPKnGT.js → tools-sOLCHTj8.js} +1 -1
  275. package/dist/public/{webmcp-Bo3KTgRb.js → webmcp-YFt6vM1_.js} +1 -1
  276. package/dist/server.js +189 -189
  277. package/package.json +1 -1
  278. package/src/cli/cli.ts +2 -2
  279. package/src/cli/prerender/dsd-shell/prerender-dsd-shell.test.ts +4 -1
  280. package/src/cli/prerender/dsd-shell/prerender-dsd-shell.ts +7 -1
  281. package/src/cli/prerender/utils/insert-before-closing-head.test.ts +12 -0
  282. package/src/cli/prerender/utils/insert-before-closing-head.ts +4 -6
  283. package/src/cli/site-config/apply.test.ts +90 -0
  284. package/src/cli/site-config/apply.ts +181 -13
  285. package/src/components/shadow-claw/shadow-claw.css +26 -0
  286. package/src/components/shadow-claw/shadow-claw.html +4 -0
  287. package/src/components/shadow-claw/utils/applyRoute.ts +3 -0
  288. package/src/components/shadow-claw/utils/bindEventListeners.test.ts +6 -0
  289. package/src/components/shadow-claw/utils/bindEventListeners.ts +30 -1
  290. package/src/components/shadow-claw/utils/getRoute.test.ts +52 -0
  291. package/src/components/shadow-claw/utils/getRoute.ts +18 -0
  292. package/src/components/shadow-claw/utils/navigateToRoute.test.ts +21 -0
  293. package/src/components/shadow-claw/utils/navigateToRoute.ts +10 -0
  294. package/src/components/shadow-claw/utils/sidebarVisibility.ts +12 -4
  295. package/src/components/shadow-claw/utils/syncSlottedSidebarActiveLinks.test.ts +93 -0
  296. package/src/components/shadow-claw/utils/syncSlottedSidebarActiveLinks.ts +100 -0
  297. package/src/components/shadow-claw-file-viewer/shadow-claw-file-viewer.ts +31 -31
  298. package/src/components/shadow-claw-pages/shadow-claw-pages.css +10 -1
  299. package/src/components/shadow-claw-pages/utils/removePreviewIframe.ts +3 -0
  300. package/src/core/effect.test.ts +19 -0
  301. package/src/core/orchestrator/orchestrator-state.ts +2 -1
  302. package/src/core/orchestrator/orchestrator.test.ts +686 -5
  303. package/src/core/orchestrator/orchestrator.ts +3 -10
  304. package/src/core/orchestrator/utils/compactContext.test.ts +423 -121
  305. package/src/core/orchestrator/utils/configurePeerJs.test.ts +27 -0
  306. package/src/core/orchestrator/utils/deliverResponse.test.ts +127 -0
  307. package/src/core/orchestrator/utils/dispatchSubagentInvoke.test.ts +23 -0
  308. package/src/core/orchestrator/utils/enqueue.test.ts +520 -86
  309. package/src/core/orchestrator/utils/handleWorkerMessage.test.ts +664 -144
  310. package/src/core/orchestrator/utils/initTasks.node.test.ts +147 -0
  311. package/src/core/orchestrator/utils/initTasks.test.ts +926 -191
  312. package/src/core/orchestrator/utils/initTasks.ts +5 -4
  313. package/src/core/orchestrator/utils/invokeAgent.test.ts +563 -110
  314. package/src/core/orchestrator/utils/invokeAgent.ts +8 -10
  315. package/src/core/orchestrator/utils/loadChannelConfigurations.test.ts +50 -0
  316. package/src/core/orchestrator/utils/operations/channel.test.ts +377 -170
  317. package/src/core/orchestrator/utils/operations/provider.test.ts +663 -85
  318. package/src/core/orchestrator/utils/operations/room.test.ts +74 -11
  319. package/src/core/orchestrator/utils/operations/task.test.ts +452 -56
  320. package/src/core/orchestrator/utils/operations/task.ts +1 -1
  321. package/src/core/orchestrator/utils/operations/vm.test.ts +66 -7
  322. package/src/core/orchestrator/utils/parseDirectToolCommand.test.ts +6 -0
  323. package/src/core/orchestrator/utils/settings.test.ts +248 -81
  324. package/src/core/orchestrator/utils/setupPushTaskListener.test.ts +58 -0
  325. package/src/core/orchestrator/utils/syncWebMcpRegistration.test.ts +392 -64
  326. package/src/core/orchestrator/utils/syncWebMcpRegistration.ts +32 -3
  327. package/src/server/middleware/static-files.test.ts +36 -0
  328. package/src/server/middleware/static-files.ts +14 -6
  329. package/src/server/routes/mcp.ts +2 -2
  330. package/src/storage/staticRouting.test.ts +36 -0
  331. package/src/storage/staticRouting.ts +31 -3
  332. package/src/stores/file-viewer.test.ts +11 -0
  333. package/src/stores/theme.test.ts +41 -2
  334. package/src/stores/toast.test.ts +25 -0
  335. package/src/subsystems/mcp/webmcp.test.ts +255 -0
  336. package/src/subsystems/mcp/webmcp.ts +253 -0
  337. package/src/worker/tools/bash/native-bash-executor.test.ts +31 -1
  338. package/src/worker/tools/git/utils/extractConflictPaths.test.ts +24 -0
  339. package/src/worker/tools/git/utils/parseConflictRegions.test.ts +46 -0
  340. package/src/worker/tools/git/utils/resolveCorsProxy.test.ts +26 -5
  341. package/src/worker/tools/git/utils/truncateSnippet.test.ts +16 -0
  342. package/src/worker/tools/node-transformers-executor.test.ts +105 -6
  343. package/src/worker/tools/remote-mcp/remote-mcp.test.ts +172 -47
  344. package/src/worker/tools/remote-mcp/utils/formatListToolsOutput.test.ts +19 -0
  345. package/src/worker/tools/remote-mcp/utils/isMcpReauthError.test.ts +45 -0
  346. package/src/worker/tools/remote-mcp/utils/resolveMcpReauth.test.ts +48 -0
  347. package/src/worker/tools/rooms/list-room-members.test.ts +24 -10
  348. package/src/worker/tools/tasks/list-tasks.test.ts +39 -8
  349. package/src/worker/tools/tasks/update-task.test.ts +78 -14
  350. package/src/worker/tools/ui/javascript.test.ts +70 -17
  351. package/src/worker/tools/ui/list-tool-profiles.test.ts +31 -9
  352. package/dist/cli/chunk-00GAzVPl2.js +0 -1
  353. package/dist/cli/chunk-2hnFoNNC.js +0 -1
  354. package/dist/cli/chunk-BKQL4nzF2.js +0 -1
  355. package/dist/cli/chunk-BQ4K3fqj2.js +0 -1
  356. package/dist/cli/chunk-BVCGo6uf2.js +0 -1
  357. package/dist/cli/chunk-BcTH_-FL.js +0 -1
  358. package/dist/cli/chunk-BmD_sPRt.js +0 -1
  359. package/dist/cli/chunk-BsxNqqer.js +0 -1
  360. package/dist/cli/chunk-CCcF5T-c.js +0 -1
  361. package/dist/cli/chunk-CFhvwUeL.js +0 -91
  362. package/dist/cli/chunk-CwWtvULn.js +0 -1
  363. package/dist/cli/chunk-Drf-hXIR2.js +0 -1
  364. package/dist/cli/chunk-Dt5HNYVi.js +0 -1
  365. package/dist/cli/chunk-DwZQi9Ax.js +0 -1
  366. package/dist/cli/chunk-m9ZX7TyF2.js +0 -1
  367. package/dist/lib/app-routes-BAEMLu9g.js.map +0 -1
  368. package/dist/lib/orchestrator-Bq9ft3uG.js.map +0 -1
  369. package/dist/lib/shadow-claw-MumteAJy.js.map +0 -1
  370. package/dist/lib/shadow-claw-pages-Bo8_z2S-.js.map +0 -1
  371. package/dist/lib/syncWebMcpRegistration-Bbph0XZl.js.map +0 -1
  372. package/dist/public/app-routes-BMQ4HFaM.js +0 -1
  373. package/dist/public/syncWebMcpRegistration-4bT0YUyZ.js +0 -1
@@ -1,4 +1,4 @@
1
- import{r as e}from"./chunk-BQCWtrzh.js";import{a as t,i as n}from"./chunk-BcTH_-FL.js";import{Buffer as r}from"buffer";import i from"isomorphic-git";globalThis.Buffer||(globalThis.Buffer=r);function a(e){try{let t=typeof location<`u`&&location.origin?location.origin:typeof globalThis<`u`&&globalThis.location?.origin?globalThis.location.origin:`http://127.0.0.1:8888`,n=new URL(e,t).hostname.toLowerCase();if(n===`localhost`||n===`127.0.0.1`||n===`::1`||n===`[::1]`)return`loopback`;if(/^(10\.|172\.(1[6-9]|2\d|3[01])\.|192\.168\.)/.test(n)||!n.includes(`.`)||n.endsWith(`.local`)||n.endsWith(`.lan`)||n.endsWith(`.home`)||n.endsWith(`.internal`))return`private`}catch{}}const o={async request({url:e,method:t=`GET`,headers:n={},body:r}){r&&=await s(r);let i=a(e),o={method:t,headers:n,body:r,credentials:`omit`};i&&(o.targetAddressSpace=i);let l=await fetch(e,o),u=l.body&&typeof l.body.getReader==`function`?c(l.body):[new Uint8Array(await l.arrayBuffer())],d={};for(let[e,t]of l.headers.entries())d[e]=t;return{url:l.url,method:t,statusCode:l.status,statusMessage:l.statusText,body:u,headers:d}}};async function s(e){let t=[];if(e[Symbol.asyncIterator])for await(let n of e)t.push(n);else if(e[Symbol.iterator])for(let n of e)t.push(n);else if(e.next){let n=await e.nexT();for(;!n.done;)t.push(n.value),n=await e.nexT()}else return e;let n=t.reduce((e,t)=>e+t.length,0),r=new Uint8Array(n),i=0;for(let e of t)r.set(e,i),i+=e.length;return r}function c(e){let t=e.getReader();return{next(){return t.read()},return(){return t.releaseLock(),{}},[Symbol.asyncIterator](){return this}}}let l=null,u=null,d=null,f=null,p=null;function m(e){return e.trim().replace(/^[\\/]+/,``).replace(/[\\/]+$/,``).split(/[\\/]+/).filter(e=>e!==`.`&&e!==``).join(`/`)}const h=new class{_map=new Map;_maxSize;constructor(e=2048){this._maxSize=e}clear(){this._map.clear()}get(e){let t=this._map.get(e);return t!==void 0&&(this._map.delete(e),this._map.set(e,t)),t}invalidate(e){let t=e.endsWith(`/`)?e:e+`/`;for(let n of this._map.keys())(n===e||n.startsWith(t))&&this._map.delete(n)}set(e,t){if(this._map.size>=this._maxSize){let e=this._map.keys().next().value;e!==void 0&&this._map.delete(e)}this._map.set(e,t)}};async function g(e,t,n={},r=``){let i=e,a=r;for(let e of t){a=a?`${a}/${e}`:e;let t=h.get(a);t&&!n.create?i=t:(i=await i.getDirectoryHandle(e,{create:n.create??!1}),h.set(a,i))}return i}async function _(e,t,n={}){let r=m(t),i=r.split(`/`).filter(Boolean);if(i.length===0)return e;let a=await g(e,i.slice(0,-1),n),o=i[i.length-1];if(n.forceFile||o.includes(`.`))try{return await a.getFileHandle(o,{create:n.create??!1})}catch{}try{let e=await a.getDirectoryHandle(o,{create:n.create??!1}),t=r;return h.set(t,e),e}catch{return await a.getFileHandle(o,{create:n.create??!1})}}async function v(e,t,n={}){let r=m(t).split(`/`).filter(Boolean);return r.length===0?e:g(e,r,n)}async function y(e,t,n={}){let r=m(t).split(`/`).filter(Boolean);if(r.length===0)throw Error(`Cannot resolve '.' as file`);return(await g(e,r.slice(0,-1),n)).getFileHandle(r[r.length-1],{create:n.create??!1})}async function b(e,t){let n=m(t).split(`/`).filter(Boolean);if(n.length===0)throw Error(`Cannot get parent of root`);let r=n[n.length-1];return[await g(e,n.slice(0,-1)),r]}function x(e){return e.trim().replace(/\\/g,`/`).replace(/^\/+/,``).replace(/^\.\//,``)}function S(e){let t=new Map,n=`repos/.git-modes`;function r(e){return e.replace(/\\/g,`/`.replace(/^\/+/,``))}async function i(){try{let r=await(await(await y(e,n)).getFile()).text(),i=JSON.parse(r);for(let[e,n]of i)t.set(e,n)}catch{}}let a=null;function o(){a===null&&(a=setTimeout(async()=>{a=null;try{let r=await(await y(e,n,{create:!0})).createWritable(),i=JSON.stringify([...t.entries()]);await r.write(new TextEncoder().encode(i)),await r.close()}catch{}},500))}let s=i(),c={async readFile(t,n){let r=await(await(await y(e,t)).getFile()).arrayBuffer(),i=typeof n==`string`?n:n?.encoding;return i===`utf8`||i===`utf-8`?new TextDecoder().decode(r):new Uint8Array(r)},async writeFile(n,i,a){let s=await(await y(e,n,{create:!0})).createWritable();typeof i==`string`&&(i=new TextEncoder().encode(i)),await s.write(i),await s.close();let c=typeof a==`object`&&a?a.mode:void 0,l=r(n);if(c!=null){let e=(c&73)!=0;t.set(l,e?33261:33188),o()}else t.has(l)||t.set(l,33188)},async mkdir(t){await v(e,t,{create:!0})},async rmdir(n){let[i,a]=await b(e,n);await i.removeEntry(a,{recursive:!0});let o=r(n)+`/`;for(let e of t.keys())(e===r(n)||e.startsWith(o))&&t.delete(e);h.invalidate(m(n))},async readdir(t){let n=await v(e,t),r=[];for await(let[e]of n.entries())r.push(e);return r},async stat(n){await s;let i;try{i=await _(e,n)}catch{let e=Error(`ENOENT: no such file or directory, stat '${n}'`);throw e.code=`ENOENT`,e}if(i.kind===`directory`){let e=new Date;return{isDirectory:()=>!0,isFile:()=>!1,isSymbolicLink:()=>!1,size:0,mtimeMs:Date.now(),mode:16877,ino:0,dev:0,nlink:1,uid:0,gid:0,ctime:e,mtime:e}}else{let e=await i.getFile(),a=new Date(e.lastModified),o=r(n),s=t.get(o)??33188;return{isDirectory:()=>!1,isFile:()=>!0,isSymbolicLink:()=>!1,size:e.size,mtimeMs:e.lastModified,mode:s,ino:0,dev:0,nlink:1,uid:0,gid:0,ctime:a,mtime:a}}},async lstat(e){return c.stat(e)},async unlink(n){let[i,a]=await b(e,n);await i.removeEntry(a),t.delete(r(n))},async symlink(e,t){throw Error(`OPFS does not support symlinks`)},async readlink(e){return await c.readFile(e,`utf8`)}};return{promises:c}}const ee=S,C=`repos`;function w(e,r,i){if(e===`custom`&&r)return r;if(e===`public`)return`https://www.cors-anywhere.com`;let a=i||(typeof globalThis<`u`&&globalThis.location?globalThis.location:typeof self<`u`&&self.location?self.location:typeof window<`u`&&window.location?window.location:null),o=a?.protocol||``,s=o===`https:`||o===`https`||typeof a?.origin==`string`&&a.origin.startsWith(`https:`)||typeof a?.href==`string`&&a.href.startsWith(`https://`)?`https:`:`http:`,c=a?.host||``,l=a?.hostname||``,u=l===`localhost`||l===`127.0.0.1`||l===`::1`||l===`[::1]`||l===`0.0.0.0`||c.startsWith(`localhost:`)||c.startsWith(`127.0.0.1:`)||c.startsWith(`[::1]:`),d=a&&(a.protocol===`file:`||l&&(l.endsWith(`.github.io`)||l.endsWith(`.pages.dev`)));return c&&(u||!d)?`${s}//${c}/git-proxy`:`${s}//${n}:${t}/git-proxy`}async function T(){return p||=(async()=>{if(l=i,u=o,!d){let e=null;if(typeof navigator<`u`&&typeof navigator.storage?.getDirectory==`function`)try{e=await navigator.storage.getDirectory()}catch(e){console.warn(`OPFS is unavailable for git root, falling back to memory:`,e)}if(!e){let{getMemoryOpfsRoot:t}=await import(`./chunk-2hnFoNNC.js`);e=t()}d=S(e),f=d.promises}})(),await p,{git:l,http:u,fs:d,pfs:f}}async function E(e){let t=await T();if(e){let n=S(e);return{git:t.git,http:t.http,fs:n,pfs:n.promises,repoDirFn:e=>`repos/${e}`}}return{...t,repoDirFn:O}}function D(e){return(e.replace(/\/+$/,``).split(`/`).pop()||`repo`).replace(/\.git$/,``)}function O(e){return`${C}/${e}`}async function k(e,t,n){try{await e.getConfig({fs:t,dir:n,path:`core.filemode`})!==!1&&await e.setConfig({fs:t,dir:n,path:`core.filemode`,value:!1})}catch(e){console.error(`Failed to set core.filemode=false:`,e)}}async function A(e,t){try{await e.mkdir(t)}catch{}}function j({token:e,username:t,password:n}={}){if(!e&&!t)return{};let r;e?r={Authorization:`Basic ${btoa(`${e}:x-oauth-basic`)}`}:t&&(r={Authorization:`Basic ${btoa(`${t}:${n||``}`)}`});let i=()=>e?{username:e,password:`x-oauth-basic`}:t?{username:t,password:n||``}:{cancel:!0},a=()=>({cancel:!0});return{...r?{headers:r}:{},onAuth:i,onAuthFailure:a}}async function M({url:t,branch:n,depth:r=20,corsProxy:i,name:a,token:o,username:s,password:c,groupRoot:l}){let{git:u,http:d,fs:f,pfs:p,repoDirFn:m}=await E(l),h=a||D(t),g=m(h);!i&&!e()&&(i=w(`local`)),await A(p,C),await A(p,g);let _=j({token:o,username:s,password:c});try{let e={fs:f,http:d,dir:g,url:t,singleBranch:!0,depth:r,corsProxy:i,..._};n&&(e.ref=n),await u.clone(e)}catch{try{let e={fs:f,http:d,dir:g,url:t,singleBranch:!0,depth:r,corsProxy:i,..._};n&&(e.ref=n),await u.fetch(e)}catch{try{await Q(p,g),await A(p,g);let e={fs:f,http:d,dir:g,url:t,singleBranch:!0,depth:r,corsProxy:i,..._};n&&(e.ref=n),await u.clone(e)}catch(e){throw Error(`Failed to clone/fetch ${t}: ${e instanceof Error?e.message:String(e)}`)}}}return await k(u,f,g),h}async function N({repo:e,ref:t,groupRoot:n}){let{git:r,fs:i,repoDirFn:a}=await E(n),o=a(e);return await r.checkout({fs:i,dir:o,ref:t,force:!0}),`Checked out ${t} in ${e}`}async function te({repo:e,name:t,checkout:n=!1,startPoint:r,groupRoot:i}){let{git:a,fs:o,repoDirFn:s}=await E(i),c=s(e),l={fs:o,dir:c,ref:t};return r&&(l.object=r),await a.branch(l),n?(await a.checkout({fs:o,dir:c,ref:t}),`Created and switched to branch ${t} in ${e}`):`Created branch ${t} in ${e}`}async function P({repo:e,groupRoot:t}){let{git:n,fs:r,repoDirFn:i}=await E(t),a=i(e);await k(n,r,a);let o=await n.statusMatrix({fs:r,dir:a});if(o.length===0)return`Empty repository.`;let s=[];for(let[e,t,n,r]of o){let i=``;if(t===0&&n===2&&r===2)i=`added`;else if(t===0&&n===2&&r===0)i=`new (unstaged)`;else if(t===1&&n===2&&r===2)i=`modified (staged)`;else if(t===1&&n===2&&r===1)i=`modified`;else if(t===1&&n===0&&r===0)i=`deleted`;else if(t===1&&n===1&&r===1)continue;else i=`[${t},${n},${r}]`;s.push(`${i}: ${e}`)}return s.length===0?`On branch ${await n.currentBranch({fs:r,dir:a})||`(detached HEAD)`}\nNothing to commit, working tree clean.`:`On branch ${await n.currentBranch({fs:r,dir:a})||`(detached HEAD)`}\n${s.join(`
1
+ import{r as e}from"./chunk-BQCWtrzh.js";import{a as t,i as n}from"./chunk-CXAobnJd.js";import{Buffer as r}from"buffer";import i from"isomorphic-git";globalThis.Buffer||(globalThis.Buffer=r);function a(e){try{let t=typeof location<`u`&&location.origin?location.origin:typeof globalThis<`u`&&globalThis.location?.origin?globalThis.location.origin:`http://127.0.0.1:8888`,n=new URL(e,t).hostname.toLowerCase();if(n===`localhost`||n===`127.0.0.1`||n===`::1`||n===`[::1]`)return`loopback`;if(/^(10\.|172\.(1[6-9]|2\d|3[01])\.|192\.168\.)/.test(n)||!n.includes(`.`)||n.endsWith(`.local`)||n.endsWith(`.lan`)||n.endsWith(`.home`)||n.endsWith(`.internal`))return`private`}catch{}}const o={async request({url:e,method:t=`GET`,headers:n={},body:r}){r&&=await s(r);let i=a(e),o={method:t,headers:n,body:r,credentials:`omit`};i&&(o.targetAddressSpace=i);let l=await fetch(e,o),u=l.body&&typeof l.body.getReader==`function`?c(l.body):[new Uint8Array(await l.arrayBuffer())],d={};for(let[e,t]of l.headers.entries())d[e]=t;return{url:l.url,method:t,statusCode:l.status,statusMessage:l.statusText,body:u,headers:d}}};async function s(e){let t=[];if(e[Symbol.asyncIterator])for await(let n of e)t.push(n);else if(e[Symbol.iterator])for(let n of e)t.push(n);else if(e.next){let n=await e.nexT();for(;!n.done;)t.push(n.value),n=await e.nexT()}else return e;let n=t.reduce((e,t)=>e+t.length,0),r=new Uint8Array(n),i=0;for(let e of t)r.set(e,i),i+=e.length;return r}function c(e){let t=e.getReader();return{next(){return t.read()},return(){return t.releaseLock(),{}},[Symbol.asyncIterator](){return this}}}let l=null,u=null,d=null,f=null,p=null;function m(e){return e.trim().replace(/^[\\/]+/,``).replace(/[\\/]+$/,``).split(/[\\/]+/).filter(e=>e!==`.`&&e!==``).join(`/`)}const h=new class{_map=new Map;_maxSize;constructor(e=2048){this._maxSize=e}clear(){this._map.clear()}get(e){let t=this._map.get(e);return t!==void 0&&(this._map.delete(e),this._map.set(e,t)),t}invalidate(e){let t=e.endsWith(`/`)?e:e+`/`;for(let n of this._map.keys())(n===e||n.startsWith(t))&&this._map.delete(n)}set(e,t){if(this._map.size>=this._maxSize){let e=this._map.keys().next().value;e!==void 0&&this._map.delete(e)}this._map.set(e,t)}};async function g(e,t,n={},r=``){let i=e,a=r;for(let e of t){a=a?`${a}/${e}`:e;let t=h.get(a);t&&!n.create?i=t:(i=await i.getDirectoryHandle(e,{create:n.create??!1}),h.set(a,i))}return i}async function _(e,t,n={}){let r=m(t),i=r.split(`/`).filter(Boolean);if(i.length===0)return e;let a=await g(e,i.slice(0,-1),n),o=i[i.length-1];if(n.forceFile||o.includes(`.`))try{return await a.getFileHandle(o,{create:n.create??!1})}catch{}try{let e=await a.getDirectoryHandle(o,{create:n.create??!1}),t=r;return h.set(t,e),e}catch{return await a.getFileHandle(o,{create:n.create??!1})}}async function v(e,t,n={}){let r=m(t).split(`/`).filter(Boolean);return r.length===0?e:g(e,r,n)}async function y(e,t,n={}){let r=m(t).split(`/`).filter(Boolean);if(r.length===0)throw Error(`Cannot resolve '.' as file`);return(await g(e,r.slice(0,-1),n)).getFileHandle(r[r.length-1],{create:n.create??!1})}async function b(e,t){let n=m(t).split(`/`).filter(Boolean);if(n.length===0)throw Error(`Cannot get parent of root`);let r=n[n.length-1];return[await g(e,n.slice(0,-1)),r]}function x(e){return e.trim().replace(/\\/g,`/`).replace(/^\/+/,``).replace(/^\.\//,``)}function S(e){let t=new Map,n=`repos/.git-modes`;function r(e){return e.replace(/\\/g,`/`.replace(/^\/+/,``))}async function i(){try{let r=await(await(await y(e,n)).getFile()).text(),i=JSON.parse(r);for(let[e,n]of i)t.set(e,n)}catch{}}let a=null;function o(){a===null&&(a=setTimeout(async()=>{a=null;try{let r=await(await y(e,n,{create:!0})).createWritable(),i=JSON.stringify([...t.entries()]);await r.write(new TextEncoder().encode(i)),await r.close()}catch{}},500))}let s=i(),c={async readFile(t,n){let r=await(await(await y(e,t)).getFile()).arrayBuffer(),i=typeof n==`string`?n:n?.encoding;return i===`utf8`||i===`utf-8`?new TextDecoder().decode(r):new Uint8Array(r)},async writeFile(n,i,a){let s=await(await y(e,n,{create:!0})).createWritable();typeof i==`string`&&(i=new TextEncoder().encode(i)),await s.write(i),await s.close();let c=typeof a==`object`&&a?a.mode:void 0,l=r(n);if(c!=null){let e=(c&73)!=0;t.set(l,e?33261:33188),o()}else t.has(l)||t.set(l,33188)},async mkdir(t){await v(e,t,{create:!0})},async rmdir(n){let[i,a]=await b(e,n);await i.removeEntry(a,{recursive:!0});let o=r(n)+`/`;for(let e of t.keys())(e===r(n)||e.startsWith(o))&&t.delete(e);h.invalidate(m(n))},async readdir(t){let n=await v(e,t),r=[];for await(let[e]of n.entries())r.push(e);return r},async stat(n){await s;let i;try{i=await _(e,n)}catch{let e=Error(`ENOENT: no such file or directory, stat '${n}'`);throw e.code=`ENOENT`,e}if(i.kind===`directory`){let e=new Date;return{isDirectory:()=>!0,isFile:()=>!1,isSymbolicLink:()=>!1,size:0,mtimeMs:Date.now(),mode:16877,ino:0,dev:0,nlink:1,uid:0,gid:0,ctime:e,mtime:e}}else{let e=await i.getFile(),a=new Date(e.lastModified),o=r(n),s=t.get(o)??33188;return{isDirectory:()=>!1,isFile:()=>!0,isSymbolicLink:()=>!1,size:e.size,mtimeMs:e.lastModified,mode:s,ino:0,dev:0,nlink:1,uid:0,gid:0,ctime:a,mtime:a}}},async lstat(e){return c.stat(e)},async unlink(n){let[i,a]=await b(e,n);await i.removeEntry(a),t.delete(r(n))},async symlink(e,t){throw Error(`OPFS does not support symlinks`)},async readlink(e){return await c.readFile(e,`utf8`)}};return{promises:c}}const ee=S,C=`repos`;function w(e,r,i){if(e===`custom`&&r)return r;if(e===`public`)return`https://www.cors-anywhere.com`;let a=i||(typeof globalThis<`u`&&globalThis.location?globalThis.location:typeof self<`u`&&self.location?self.location:typeof window<`u`&&window.location?window.location:null),o=a?.protocol||``,s=o===`https:`||o===`https`||typeof a?.origin==`string`&&a.origin.startsWith(`https:`)||typeof a?.href==`string`&&a.href.startsWith(`https://`)?`https:`:`http:`,c=a?.host||``,l=a?.hostname||``,u=l===`localhost`||l===`127.0.0.1`||l===`::1`||l===`[::1]`||l===`0.0.0.0`||c.startsWith(`localhost:`)||c.startsWith(`127.0.0.1:`)||c.startsWith(`[::1]:`),d=a&&(a.protocol===`file:`||l&&(l.endsWith(`.github.io`)||l.endsWith(`.pages.dev`)));return c&&(u||!d)?`${s}//${c}/git-proxy`:`${s}//${n}:${t}/git-proxy`}async function T(){return p||=(async()=>{if(l=i,u=o,!d){let e=null;if(typeof navigator<`u`&&typeof navigator.storage?.getDirectory==`function`)try{e=await navigator.storage.getDirectory()}catch(e){console.warn(`OPFS is unavailable for git root, falling back to memory:`,e)}if(!e){let{getMemoryOpfsRoot:t}=await import(`./chunk-p0n_c-I2.js`);e=t()}d=S(e),f=d.promises}})(),await p,{git:l,http:u,fs:d,pfs:f}}async function E(e){let t=await T();if(e){let n=S(e);return{git:t.git,http:t.http,fs:n,pfs:n.promises,repoDirFn:e=>`repos/${e}`}}return{...t,repoDirFn:O}}function D(e){return(e.replace(/\/+$/,``).split(`/`).pop()||`repo`).replace(/\.git$/,``)}function O(e){return`${C}/${e}`}async function k(e,t,n){try{await e.getConfig({fs:t,dir:n,path:`core.filemode`})!==!1&&await e.setConfig({fs:t,dir:n,path:`core.filemode`,value:!1})}catch(e){console.error(`Failed to set core.filemode=false:`,e)}}async function A(e,t){try{await e.mkdir(t)}catch{}}function j({token:e,username:t,password:n}={}){if(!e&&!t)return{};let r;e?r={Authorization:`Basic ${btoa(`${e}:x-oauth-basic`)}`}:t&&(r={Authorization:`Basic ${btoa(`${t}:${n||``}`)}`});let i=()=>e?{username:e,password:`x-oauth-basic`}:t?{username:t,password:n||``}:{cancel:!0},a=()=>({cancel:!0});return{...r?{headers:r}:{},onAuth:i,onAuthFailure:a}}async function M({url:t,branch:n,depth:r=20,corsProxy:i,name:a,token:o,username:s,password:c,groupRoot:l}){let{git:u,http:d,fs:f,pfs:p,repoDirFn:m}=await E(l),h=a||D(t),g=m(h);!i&&!e()&&(i=w(`local`)),await A(p,C),await A(p,g);let _=j({token:o,username:s,password:c});try{let e={fs:f,http:d,dir:g,url:t,singleBranch:!0,depth:r,corsProxy:i,..._};n&&(e.ref=n),await u.clone(e)}catch{try{let e={fs:f,http:d,dir:g,url:t,singleBranch:!0,depth:r,corsProxy:i,..._};n&&(e.ref=n),await u.fetch(e)}catch{try{await Q(p,g),await A(p,g);let e={fs:f,http:d,dir:g,url:t,singleBranch:!0,depth:r,corsProxy:i,..._};n&&(e.ref=n),await u.clone(e)}catch(e){throw Error(`Failed to clone/fetch ${t}: ${e instanceof Error?e.message:String(e)}`)}}}return await k(u,f,g),h}async function N({repo:e,ref:t,groupRoot:n}){let{git:r,fs:i,repoDirFn:a}=await E(n),o=a(e);return await r.checkout({fs:i,dir:o,ref:t,force:!0}),`Checked out ${t} in ${e}`}async function te({repo:e,name:t,checkout:n=!1,startPoint:r,groupRoot:i}){let{git:a,fs:o,repoDirFn:s}=await E(i),c=s(e),l={fs:o,dir:c,ref:t};return r&&(l.object=r),await a.branch(l),n?(await a.checkout({fs:o,dir:c,ref:t}),`Created and switched to branch ${t} in ${e}`):`Created branch ${t} in ${e}`}async function P({repo:e,groupRoot:t}){let{git:n,fs:r,repoDirFn:i}=await E(t),a=i(e);await k(n,r,a);let o=await n.statusMatrix({fs:r,dir:a});if(o.length===0)return`Empty repository.`;let s=[];for(let[e,t,n,r]of o){let i=``;if(t===0&&n===2&&r===2)i=`added`;else if(t===0&&n===2&&r===0)i=`new (unstaged)`;else if(t===1&&n===2&&r===2)i=`modified (staged)`;else if(t===1&&n===2&&r===1)i=`modified`;else if(t===1&&n===0&&r===0)i=`deleted`;else if(t===1&&n===1&&r===1)continue;else i=`[${t},${n},${r}]`;s.push(`${i}: ${e}`)}return s.length===0?`On branch ${await n.currentBranch({fs:r,dir:a})||`(detached HEAD)`}\nNothing to commit, working tree clean.`:`On branch ${await n.currentBranch({fs:r,dir:a})||`(detached HEAD)`}\n${s.join(`
2
2
  `)}`}async function F({repo:e,ref:t,depth:n=10,groupRoot:r}){let{git:i,fs:a,repoDirFn:o}=await E(r),s={fs:a,dir:o(e),depth:n};t&&(s.ref=t);let c=await i.log(s);return c.length===0?`No commits found.`:c.map(e=>{let t=e.commit,n=new Date(t.author.timestamp*1e3).toISOString();return`${e.oid} ${n} ${t.author.name} — ${t.message.trim().split(`
3
3
  `)[0]}`}).join(`
4
4
  `)}async function I({repo:e,ref1:t,ref2:n,groupRoot:r}){let{git:i,fs:a,repoDirFn:o}=await E(r),s=o(e),c=a.promises;if(await k(i,a,s),!t&&!n){let e=(await i.statusMatrix({fs:a,dir:s})).filter(([,e,t])=>!(e===1&&t===1));if(e.length===0)return`No differences.`;let t=[];for(let[n,r,o]of e)try{if(r===0&&o===2){let e=(await R(c,s,n)).split(`
@@ -0,0 +1 @@
1
+ import{o as e,t}from"./chunk-DUlIqkaX.js";export{t as resolveAgentProvider,e as runAgentRun};
@@ -1,2 +1,2 @@
1
- import{a as e,c as t,i as n,l as r,n as i,r as a,s as o,t as s}from"./chunk-BP5Hg6CM.js";import{o as c,r as l}from"./chunk-BcTH_-FL.js";import{t as u}from"./chunk-DFLqhyP_.js";import{t as d}from"./chunk-Dhh0lHO6.js";import{t as f}from"./chunk-FEL5dv0w2.js";import{a as p}from"./chunk-BXg4-9Rq2.js";import m from"gray-matter";function h(e,t,n){return u(e,`config`,`readwrite`,e=>e.put({key:t,value:n})).then(()=>void 0)}async function g(e,t,r){let i=await n(e,t),{dirs:o,filename:s}=a(r),c=i;for(let e of o)c=await c.getDirectoryHandle(e);let l=await c.getFileHandle(s);try{let e=await l.createSyncAccessHandle(),t=e.getSize(),n=new Uint8Array(t);return e.read(n,{at:0}),e.close(),new TextDecoder(`utf-8`).decode(n)}catch{return(await l.getFile()).text()}}const _=/^[a-z][a-z0-9_]{0,63}$/;function v(e,t){if(!t||typeof t!=`object`)throw Error(`Tool at ${e} must be a JSON object`);let n=t,r=typeof n.name==`string`?n.name.trim():``,i=typeof n.description==`string`?n.description.trim():``,a=n.input_schema??n.parameters,o=n.execution??n.evaluation;if(!_.test(r))throw Error(`Tool name is invalid: ${r||`(missing)`}`);if(!i)throw Error(`Tool ${r} requires a description`);if(!a||typeof a!=`object`)throw Error(`Tool ${r} requires input_schema`);if(!o||typeof o!=`object`)throw Error(`Tool ${r} requires execution`);let s=o,c=s.type;if(c!==`bash`&&c!==`javascript`&&c!==`tool`)throw Error(`Tool ${r} execution type must be bash, javascript, or tool`);if(c===`tool`){if(typeof s.name!=`string`||!_.test(s.name))throw Error(`Tool ${r} execution requires a valid tool name`);return{name:r,description:i,input_schema:a,execution:{type:c,name:s.name,...s.input&&typeof s.input==`object`?{input:s.input}:{}},path:e}}let l=c===`bash`?`command`:`code`,u=s[l]??s.expression;if(typeof u!=`string`||u.trim()===``)throw Error(`Tool ${r} execution requires ${l}`);return{name:r,description:i,input_schema:a,execution:{type:c,[l]:u},path:e}}async function y(e,t=c){let r=[],i=[],a=t===`br:main`?[c]:[t,c];for(let t of a)try{let a=await n(e,t),o=[];async function s(e,t){for await(let[n,r]of e.entries()){let e=`${t}/${n}`;r.kind===`directory`?await s(r,e):n.endsWith(`.json`)&&e.startsWith(`.agents/tools/`)&&o.push(e)}}try{await s(await(await a.getDirectoryHandle(`.agents`)).getDirectoryHandle(`tools`),`.agents/tools`)}catch{continue}for(let n of o.sort())try{let i=v(n,JSON.parse(await g(e,t,n)));r.some(e=>e.name===i.name)||r.push(i)}catch(e){i.push(e instanceof Error?e.message:String(e))}}catch{}return{tools:r,diagnostics:i}}async function b(e,t=c,n){try{let{tools:r}=await y(e,t),i=r.find(e=>e.name===n)||null;if(!i)return null;let a=await d(e,l.DECLARATIVE_TOOLS_ENABLED);return Array.isArray(a)&&!a.includes(n)?null:i}catch{return null}}async function x(c,l,u,d){let{dirs:f,filename:p}=a(u);for(let a=0;a<2;a++)try{let t=await n(c,l);for(let e of f)t=await t.getDirectoryHandle(e,{create:!0});let r=await t.getFileHandle(p,{create:!0});try{await s(r,d);return}catch(e){if(!((e instanceof Error?e.message:String(e)).includes(`Writable file streams are not supported`)&&(await o(c)).type===`opfs`))throw e}let a=l.replace(/:/g,`-`);await i([e(),`groups`,a,...f,p],d);return}catch(e){if(a===0&&r(e)){t();continue}throw e}}async function S(e,t,n){try{return await g(e,t,n),!0}catch{return!1}}const C=/^[a-z0-9](?:[a-z0-9]|-(?!-))*[a-z0-9]$|^[a-z0-9]$/;function w(e){try{let t=m(e);return{data:t.data&&typeof t.data==`object`?t.data:{},content:t.content||``}}catch{let t=e.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);if(t){let e=t[1],n=t[2]||``,r=e.split(/\r?\n/).map(e=>{let t=e.match(/^([a-zA-Z0-9_-]+):\s*(.+)$/);if(t){let[,e,n]=t,r=n.trim();if(r&&r!==`true`&&r!==`false`&&r!==`null`&&!r.startsWith(`"`)&&!r.startsWith(`'`)&&!r.startsWith(`[`)&&!r.startsWith(`{`)&&r!==`>`&&r!==`|`&&r!==`>-`&&r!==`|-`&&!/^-?\d+(?:\.\d+)?$/.test(r))return`${e}: ${JSON.stringify(r)}`}return e});try{let e=m(`---\n${r.join(`
1
+ import{a as e,c as t,i as n,l as r,n as i,r as a,s as o,t as s}from"./chunk-C9-aL3rF.js";import{o as c,r as l}from"./chunk-CXAobnJd.js";import{t as u}from"./chunk-DFLqhyP_.js";import{t as d}from"./chunk-Dhh0lHO6.js";import{t as f}from"./chunk-FEL5dv0w2.js";import{a as p}from"./chunk-DHJCGRuG2.js";import m from"gray-matter";function h(e,t,n){return u(e,`config`,`readwrite`,e=>e.put({key:t,value:n})).then(()=>void 0)}async function g(e,t,r){let i=await n(e,t),{dirs:o,filename:s}=a(r),c=i;for(let e of o)c=await c.getDirectoryHandle(e);let l=await c.getFileHandle(s);try{let e=await l.createSyncAccessHandle(),t=e.getSize(),n=new Uint8Array(t);return e.read(n,{at:0}),e.close(),new TextDecoder(`utf-8`).decode(n)}catch{return(await l.getFile()).text()}}const _=/^[a-z][a-z0-9_]{0,63}$/;function v(e,t){if(!t||typeof t!=`object`)throw Error(`Tool at ${e} must be a JSON object`);let n=t,r=typeof n.name==`string`?n.name.trim():``,i=typeof n.description==`string`?n.description.trim():``,a=n.input_schema??n.parameters,o=n.execution??n.evaluation;if(!_.test(r))throw Error(`Tool name is invalid: ${r||`(missing)`}`);if(!i)throw Error(`Tool ${r} requires a description`);if(!a||typeof a!=`object`)throw Error(`Tool ${r} requires input_schema`);if(!o||typeof o!=`object`)throw Error(`Tool ${r} requires execution`);let s=o,c=s.type;if(c!==`bash`&&c!==`javascript`&&c!==`tool`)throw Error(`Tool ${r} execution type must be bash, javascript, or tool`);if(c===`tool`){if(typeof s.name!=`string`||!_.test(s.name))throw Error(`Tool ${r} execution requires a valid tool name`);return{name:r,description:i,input_schema:a,execution:{type:c,name:s.name,...s.input&&typeof s.input==`object`?{input:s.input}:{}},path:e}}let l=c===`bash`?`command`:`code`,u=s[l]??s.expression;if(typeof u!=`string`||u.trim()===``)throw Error(`Tool ${r} execution requires ${l}`);return{name:r,description:i,input_schema:a,execution:{type:c,[l]:u},path:e}}async function y(e,t=c){let r=[],i=[],a=t===`br:main`?[c]:[t,c];for(let t of a)try{let a=await n(e,t),o=[];async function s(e,t){for await(let[n,r]of e.entries()){let e=`${t}/${n}`;r.kind===`directory`?await s(r,e):n.endsWith(`.json`)&&e.startsWith(`.agents/tools/`)&&o.push(e)}}try{await s(await(await a.getDirectoryHandle(`.agents`)).getDirectoryHandle(`tools`),`.agents/tools`)}catch{continue}for(let n of o.sort())try{let i=v(n,JSON.parse(await g(e,t,n)));r.some(e=>e.name===i.name)||r.push(i)}catch(e){i.push(e instanceof Error?e.message:String(e))}}catch{}return{tools:r,diagnostics:i}}async function b(e,t=c,n){try{let{tools:r}=await y(e,t),i=r.find(e=>e.name===n)||null;if(!i)return null;let a=await d(e,l.DECLARATIVE_TOOLS_ENABLED);return Array.isArray(a)&&!a.includes(n)?null:i}catch{return null}}async function x(c,l,u,d){let{dirs:f,filename:p}=a(u);for(let a=0;a<2;a++)try{let t=await n(c,l);for(let e of f)t=await t.getDirectoryHandle(e,{create:!0});let r=await t.getFileHandle(p,{create:!0});try{await s(r,d);return}catch(e){if(!((e instanceof Error?e.message:String(e)).includes(`Writable file streams are not supported`)&&(await o(c)).type===`opfs`))throw e}let a=l.replace(/:/g,`-`);await i([e(),`groups`,a,...f,p],d);return}catch(e){if(a===0&&r(e)){t();continue}throw e}}async function S(e,t,n){try{return await g(e,t,n),!0}catch{return!1}}const C=/^[a-z0-9](?:[a-z0-9]|-(?!-))*[a-z0-9]$|^[a-z0-9]$/;function w(e){try{let t=m(e);return{data:t.data&&typeof t.data==`object`?t.data:{},content:t.content||``}}catch{let t=e.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);if(t){let e=t[1],n=t[2]||``,r=e.split(/\r?\n/).map(e=>{let t=e.match(/^([a-zA-Z0-9_-]+):\s*(.+)$/);if(t){let[,e,n]=t,r=n.trim();if(r&&r!==`true`&&r!==`false`&&r!==`null`&&!r.startsWith(`"`)&&!r.startsWith(`'`)&&!r.startsWith(`[`)&&!r.startsWith(`{`)&&r!==`>`&&r!==`|`&&r!==`>-`&&r!==`|-`&&!/^-?\d+(?:\.\d+)?$/.test(r))return`${e}: ${JSON.stringify(r)}`}return e});try{let e=m(`---\n${r.join(`
2
2
  `)}\n---\n${n}`);return{data:e.data&&typeof e.data==`object`?e.data:{},content:e.content||``}}catch{}let i={},a=e.match(/^name:\s*["']?([^"'\r\n]+)["']?/m);a&&(i.name=a[1].trim());let o=e.match(/^description:\s*(.+)$/m);if(o){let e=o[1].trim();(e.startsWith(`"`)&&e.endsWith(`"`)||e.startsWith(`'`)&&e.endsWith(`'`))&&(e=e.slice(1,-1)),i.description=e}let s=e.match(/^user-invocable:\s*(true|false)/im);s&&(i[`user-invocable`]=s[1].toLowerCase()===`true`);let c=e.match(/^disable-model-invocation:\s*(true|false)/im);c&&(i[`disable-model-invocation`]=c[1].toLowerCase()===`true`);let l=e.match(/^allowed-tools:\s*["']?([^"'\r\n]+)["']?/m);l&&(i[`allowed-tools`]=l[1].trim());let u=e.match(/allowed-tools:\s*\n((?:\s*-\s*[^\r\n]+\r?\n?)+)/m);if(u){let e=u[1].split(/\r?\n/).map(e=>e.replace(/^\s*-\s*/,``).trim()).filter(Boolean);e.length>0&&(i[`allowed-tools`]=e)}return{data:i,content:n}}return{data:{},content:e}}}function T(e){if(typeof e==`string`){let t=e.trim();return t.length>0?t:void 0}if(Array.isArray(e)){let t=e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e.length>0);return t.length>0?t.join(` `):void 0}}function E(e,t){let n=w(t),r=n.data,i=typeof r.name==`string`?r.name.trim():``,a=typeof r.description==`string`?r.description.trim():``;if(!i)throw Error(`Skill at ${e} requires a name`);if(!a)throw Error(`Skill ${i} requires a description`);if(i.length>64||!C.test(i))throw Error(`Skill name must be 1-64 lowercase characters and hyphens: ${i}`);if(a.length>1024)throw Error(`Skill ${i} description must be 1024 characters or fewer`);let o=e.replace(/\/SKILL\.md$/u,``),s=r.metadata&&typeof r.metadata==`object`?r.metadata:void 0,c=T(s?.[`allowed-tools`])||T(s?.allowedTools)||T(r[`allowed-tools`])||T(r.allowedTools),l=[];if(s){for(let[e,t]of Object.entries(s))if(!(e===`execution`||t==null)){if(e===`allowed-tools`||e===`allowedTools`)c&&l.push([e,c]);else if(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)l.push([e,String(t)]);else if(Array.isArray(t)){let n=t.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(Boolean);n.length>0&&l.push([e,n.join(` `)])}}}let u=l.length>0?Object.fromEntries(l):void 0,d=s?.execution,f;if(d!==void 0){if(!d||typeof d!=`object`||d.type!==`tools`||!Array.isArray(d.tools))throw Error(`Skill ${i} has invalid tools execution`);let e=d,t=typeof e.suppressToast==`boolean`?e.suppressToast:void 0,n=typeof e.suppressOutput==`boolean`?e.suppressOutput:void 0,r=e.tools.map(e=>({...e,...t!==void 0&&e.suppressToast===void 0?{suppressToast:t}:{},...n!==void 0&&e.suppressOutput===void 0?{suppressOutput:n}:{}}));f={type:`tools`,...t===void 0?{}:{suppressToast:t},...n===void 0?{}:{suppressOutput:n},tools:r}}return{name:i,description:a,...typeof r.license==`string`?{license:r.license}:{},...typeof r.compatibility==`string`?{compatibility:r.compatibility}:{},...u?{metadata:u}:{},...typeof c==`string`?{allowedTools:c}:{},...typeof r[`user-invocable`]==`boolean`?{userInvocable:r[`user-invocable`]}:typeof r[`user-invocable`]==`string`&&(r[`user-invocable`].toLowerCase()===`true`||r[`user-invocable`].toLowerCase()===`false`)?{userInvocable:r[`user-invocable`].toLowerCase()===`true`}:{},...typeof r[`disable-model-invocation`]==`boolean`?{disableModelInvocation:r[`disable-model-invocation`]}:typeof r[`disable-model-invocation`]==`string`&&(r[`disable-model-invocation`].toLowerCase()===`true`||r[`disable-model-invocation`].toLowerCase()===`false`)?{disableModelInvocation:r[`disable-model-invocation`].toLowerCase()===`true`}:{},...f?{execution:f}:{},body:n.content.trim(),path:e,basePath:o}}const D=new Set(f.map(e=>e.name)),O=/^[a-z][a-z0-9_]{0,63}$/;function k(e){return e?.targetSubdir?e.targetSubdir:e?.siteSlug?`imported/${e.siteSlug}`:`main`}async function A(e,t=c,n,r){let i=(n.name||``).trim();if(D.has(i))return{name:i,path:``,status:`failed`,error:`Cannot shadow built-in tool: ${i}`};if(!O.test(i))return{name:i,path:``,status:`failed`,error:`Invalid tool name: ${i}`};let a=`.agents/tools/${k(r)}/${i}.json`;try{if(await S(e,t,a)&&!r?.overwrite)return{name:i,path:a,status:`skipped`};let o=await(r?.fetchFn||globalThis.fetch)(n.url);if(!o.ok)return{name:i,path:a,status:`failed`,error:`HTTP ${o.status} ${o.statusText}`};let s=await o.text();if(n.digest&&!await p(s,n.digest))return{name:i,path:a,status:`failed`,error:`Integrity verification failed for tool definition`};let c;try{c=JSON.parse(s)}catch{return{name:i,path:a,status:`failed`,error:`Downloaded tool definition is not valid JSON`}}if(v(a,c),await x(e,t,a,JSON.stringify(c,null,2)),r?.autoEnable){let t=await d(e,l.DECLARATIVE_TOOLS_ENABLED),n=new Set(Array.isArray(t)?t:[]);n.add(i),await h(e,l.DECLARATIVE_TOOLS_ENABLED,Array.from(n))}return{name:i,path:a,status:`imported`}}catch(e){return{name:i,path:a,status:`failed`,error:e instanceof Error?e.message:String(e)}}}async function j(e,t=c,n,r){let i=(n.name||``).trim(),a=`.agents/scripts/${k(r)}/${i.endsWith(`.js`)||i.endsWith(`.mjs`)?i:`${i}.js`}`;try{if(await S(e,t,a)&&!r?.overwrite)return{name:i,path:a,status:`skipped`};let o=await(r?.fetchFn||globalThis.fetch)(n.url);if(!o.ok)return{name:i,path:a,status:`failed`,error:`HTTP ${o.status} ${o.statusText}`};let s=await o.text();return n.digest&&!await p(s,n.digest)?{name:i,path:a,status:`failed`,error:`Integrity verification failed for script`}:(await x(e,t,a,s),{name:i,path:a,status:`imported`})}catch(e){return{name:i,path:a,status:`failed`,error:e instanceof Error?e.message:String(e)}}}async function M(e,t=c,n,r){let i=(n.name||``).trim(),a=`.agents/skills/${k(r)}/${i}/SKILL.md`;try{if(await S(e,t,a)&&!r?.overwrite)return{name:i,path:a,status:`skipped`};let o=await(r?.fetchFn||globalThis.fetch)(n.url);if(!o.ok)return{name:i,path:a,status:`failed`,error:`HTTP ${o.status} ${o.statusText}`};let s=await o.text();return n.digest&&!await p(s,n.digest)?{name:i,path:a,status:`failed`,error:`Integrity verification failed for skill`}:(E(a,s),await x(e,t,a,s),{name:i,path:a,status:`imported`})}catch(e){return{name:i,path:a,status:`failed`,error:e instanceof Error?e.message:String(e)}}}async function N(e,t=c,n,r,i){let a={tools:[],skills:[],scripts:[],diagnostics:[]},o=new Set(r.toolNames||[]),s=new Set(r.skillNames||[]),l=new Set(r.scriptNames||[]),u=n.tools||[],d=n.skills||[],f=n.scripts||[];for(let e of d)if(s.has(e.name)){if(Array.isArray(e.tools))for(let t of e.tools)o.add(t.name);if(Array.isArray(e.scripts))for(let t of e.scripts)l.add(t.name)}for(let n of f)if(l.has(n.name)){let r=await j(e,t,n,i);a.scripts.push(r),r.status===`failed`&&r.error&&a.diagnostics.push(`Script ${n.name}: ${r.error}`)}for(let n of u)if(o.has(n.name)){let r=await A(e,t,n,i);a.tools.push(r),r.status===`failed`&&r.error&&a.diagnostics.push(`Tool ${n.name}: ${r.error}`)}for(let n of d)if(s.has(n.name)){let r=await M(e,t,n,i);a.skills.push(r),r.status===`failed`&&r.error&&a.diagnostics.push(`Skill ${n.name}: ${r.error}`)}return a}export{E as a,b as c,h as d,A as i,y as l,j as n,S as o,M as r,x as s,N as t,g as u};
@@ -1 +1 @@
1
- import{a as e,c as t,i as n,l as r,n as i,r as a,s as o,t as s}from"./chunk-Drq18VZe.js";async function c(c,l,u,d){let{dirs:f,filename:p}=a(u);for(let a=0;a<2;a++)try{let t=await n(c,l);for(let e of f)t=await t.getDirectoryHandle(e,{create:!0});let r=await t.getFileHandle(p,{create:!0});try{await s(r,d);return}catch(e){if(!((e instanceof Error?e.message:String(e)).includes(`Writable file streams are not supported`)&&(await o(c)).type===`opfs`))throw e}let a=l.replace(/:/g,`-`);await i([e(),`groups`,a,...f,p],d);return}catch(e){if(a===0&&r(e)){t();continue}throw e}}function l(e,t=`attachment.bin`){if(!e)return t;let n=e.replace(/\\/g,`/`).split(`/`).filter(Boolean);return n[n.length-1]||t}function u(e,t={}){let n=t.replacement??`_`,r=t.fallback??`attachment.bin`,i=e.trim();t.stripControlChars&&(i=i.replace(/[\u0000-\u001f\u007f]+/g,``)),t.stripLeadingDots&&(i=i.replace(/^\.+/,``));let a=t.stripControlChars?/[\\/:*?"<>|]/g:/[\\/:*?"<>|\x00-\x1f\u007f]/g;if(t.collapseReplacement&&n){let e=n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);i=i.replace(t.stripControlChars?/[\\/:*?"<>|]+/g:/[\\/:*?"<>|\x00-\x1f\u007f]+/g,n),i=i.replace(RegExp(`${e}+`,`g`),n)}else i=i.replace(a,n);return i=i.trim(),t.stripLeadingDots&&(i=i.replace(/^\.+/,``).trim()),i||r}const d={apng:`image/apng`,avif:`image/avif`,bmp:`image/bmp`,gif:`image/gif`,heic:`image/heic`,heif:`image/heif`,ico:`image/x-icon`,jpeg:`image/jpeg`,jpg:`image/jpeg`,png:`image/png`,svg:`image/svg+xml`,tif:`image/tiff`,tiff:`image/tiff`,webp:`image/webp`},f={...d,"3gp":`video/3gpp`,aac:`audio/aac`,avi:`video/x-msvideo`,bin:`application/octet-stream`,css:`text/css`,csv:`text/csv`,db:`application/vnd.sqlite3`,dll:`application/octet-stream`,dmg:`application/octet-stream`,dylib:`application/octet-stream`,exe:`application/vnd.microsoft.portable-executable`,flac:`audio/flac`,flv:`video/x-flv`,gz:`application/gzip`,htm:`text/html`,html:`text/html`,iso:`application/octet-stream`,js:`text/javascript`,json:`application/json`,m4a:`audio/mp4`,m4v:`video/mp4`,markdown:`text/markdown`,md:`text/markdown`,mjs:`text/javascript`,mkv:`video/x-matroska`,mov:`video/mp4`,mp3:`audio/mpeg`,mp4:`video/mp4`,oga:`audio/ogg`,ogg:`audio/ogg`,ogv:`video/ogg`,pdf:`application/pdf`,rar:`application/vnd.rar`,so:`application/octet-stream`,sqlite:`application/vnd.sqlite3`,sqlite3:`application/vnd.sqlite3`,tar:`application/x-tar`,ts:`text/typescript`,tsx:`text/typescript`,txt:`text/plain`,wasm:`application/wasm`,wav:`audio/wav`,weba:`audio/webm`,webm:`video/webm`,wmv:`video/x-ms-wmv`,xml:`application/xml`,yaml:`text/yaml`,yml:`text/yaml`,zip:`application/zip`};function p(e){return e&&(e.split(/[?#]/,1)[0].replace(/\\/g,`/`).split(`/`).pop()||``).toLowerCase().split(`.`).pop()||``}function m(e,t){let n=p(e);return f[n]??t}function h(e){let t=p(e);return d[t]||null}function g(e){return h(e)!==null}function _(e){let t=p(e);if(t===`md`||t===`markdown`||t===`txt`)return`text/plain`;if(t===`pdf`)return`application/pdf`;if(d[t])return d[t]}export{l as a,g as i,m as n,u as o,_ as r,c as s,h as t};
1
+ import{a as e,c as t,i as n,l as r,n as i,r as a,s as o,t as s}from"./chunk-C9-aL3rF.js";async function c(c,l,u,d){let{dirs:f,filename:p}=a(u);for(let a=0;a<2;a++)try{let t=await n(c,l);for(let e of f)t=await t.getDirectoryHandle(e,{create:!0});let r=await t.getFileHandle(p,{create:!0});try{await s(r,d);return}catch(e){if(!((e instanceof Error?e.message:String(e)).includes(`Writable file streams are not supported`)&&(await o(c)).type===`opfs`))throw e}let a=l.replace(/:/g,`-`);await i([e(),`groups`,a,...f,p],d);return}catch(e){if(a===0&&r(e)){t();continue}throw e}}function l(e,t=`attachment.bin`){if(!e)return t;let n=e.replace(/\\/g,`/`).split(`/`).filter(Boolean);return n[n.length-1]||t}function u(e,t={}){let n=t.replacement??`_`,r=t.fallback??`attachment.bin`,i=e.trim();t.stripControlChars&&(i=i.replace(/[\u0000-\u001f\u007f]+/g,``)),t.stripLeadingDots&&(i=i.replace(/^\.+/,``));let a=t.stripControlChars?/[\\/:*?"<>|]/g:/[\\/:*?"<>|\x00-\x1f\u007f]/g;if(t.collapseReplacement&&n){let e=n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);i=i.replace(t.stripControlChars?/[\\/:*?"<>|]+/g:/[\\/:*?"<>|\x00-\x1f\u007f]+/g,n),i=i.replace(RegExp(`${e}+`,`g`),n)}else i=i.replace(a,n);return i=i.trim(),t.stripLeadingDots&&(i=i.replace(/^\.+/,``).trim()),i||r}const d={apng:`image/apng`,avif:`image/avif`,bmp:`image/bmp`,gif:`image/gif`,heic:`image/heic`,heif:`image/heif`,ico:`image/x-icon`,jpeg:`image/jpeg`,jpg:`image/jpeg`,png:`image/png`,svg:`image/svg+xml`,tif:`image/tiff`,tiff:`image/tiff`,webp:`image/webp`},f={...d,"3gp":`video/3gpp`,aac:`audio/aac`,avi:`video/x-msvideo`,bin:`application/octet-stream`,css:`text/css`,csv:`text/csv`,db:`application/vnd.sqlite3`,dll:`application/octet-stream`,dmg:`application/octet-stream`,dylib:`application/octet-stream`,exe:`application/vnd.microsoft.portable-executable`,flac:`audio/flac`,flv:`video/x-flv`,gz:`application/gzip`,htm:`text/html`,html:`text/html`,iso:`application/octet-stream`,js:`text/javascript`,json:`application/json`,m4a:`audio/mp4`,m4v:`video/mp4`,markdown:`text/markdown`,md:`text/markdown`,mjs:`text/javascript`,mkv:`video/x-matroska`,mov:`video/mp4`,mp3:`audio/mpeg`,mp4:`video/mp4`,oga:`audio/ogg`,ogg:`audio/ogg`,ogv:`video/ogg`,pdf:`application/pdf`,rar:`application/vnd.rar`,so:`application/octet-stream`,sqlite:`application/vnd.sqlite3`,sqlite3:`application/vnd.sqlite3`,tar:`application/x-tar`,ts:`text/typescript`,tsx:`text/typescript`,txt:`text/plain`,wasm:`application/wasm`,wav:`audio/wav`,weba:`audio/webm`,webm:`video/webm`,wmv:`video/x-ms-wmv`,xml:`application/xml`,yaml:`text/yaml`,yml:`text/yaml`,zip:`application/zip`};function p(e){return e&&(e.split(/[?#]/,1)[0].replace(/\\/g,`/`).split(`/`).pop()||``).toLowerCase().split(`.`).pop()||``}function m(e,t){let n=p(e);return f[n]??t}function h(e){let t=p(e);return d[t]||null}function g(e){return h(e)!==null}function _(e){let t=p(e);if(t===`md`||t===`markdown`||t===`txt`)return`text/plain`;if(t===`pdf`)return`application/pdf`;if(d[t])return d[t]}export{l as a,g as i,m as n,u as o,_ as r,c as s,h as t};
@@ -1 +1 @@
1
- import{n as e}from"./chunk-da0bsiOn.js";const t=`.well-known/agent-skills/index.json`;function n(e){let n=e.trim();if(!n)throw Error(`URL cannot be empty`);let r=n;if(!r.startsWith(`http://`)&&!r.startsWith(`https://`)&&(r=`https://${r}`),r=r.replace(/\/+$/,``),r.endsWith(t)){let e=r.slice(0,-35).replace(/\/+$/,``);return{baseUrl:e,siteUrl:e,manifestUrl:r}}return{baseUrl:r,siteUrl:r,manifestUrl:`${r}/${t}`}}function r(e,t){if(!e)return``;try{return new URL(e,t).href}catch{return e}}function i(e,t){let n=JSON.parse(JSON.stringify(e));return Array.isArray(n.tools)&&(n.tools=n.tools.map(e=>({...e,url:r(e.url,t)}))),Array.isArray(n.scripts)&&(n.scripts=n.scripts.map(e=>({...e,url:r(e.url,t)}))),Array.isArray(n.skills)&&(n.skills=n.skills.map(e=>({...e,url:r(e.url,t),tools:Array.isArray(e.tools)?e.tools.map(e=>({...e,url:e.url?r(e.url,t):void 0})):void 0,scripts:Array.isArray(e.scripts)?e.scripts.map(e=>({...e,url:e.url?r(e.url,t):void 0})):void 0}))),n}async function a(t,n){if(!n||!n.startsWith(`sha256:`))return!0;let r=n.slice(7).trim().toLowerCase();return!r||(await e(typeof t==`string`?new TextEncoder().encode(t):t)).toLowerCase()===r}async function o(e,t=globalThis.fetch){let{baseUrl:r,manifestUrl:a}=n(e),o=await t(a,{headers:{Accept:`application/json`}});if(!o.ok)throw Error(`Failed to fetch discovery manifest: HTTP ${o.status} ${o.statusText}`.trim());let s=await o.json();if(!s||typeof s!=`object`)throw Error(`Invalid discovery manifest: expected a JSON object`);return{manifest:i(s,a),siteUrl:r,manifestUrl:a}}export{a,i,n,r,o as t};
1
+ import{n as e}from"./chunk-DmRXVLfy.js";const t=`.well-known/agent-skills/index.json`;function n(e){let n=e.trim();if(!n)throw Error(`URL cannot be empty`);let r=n;if(!r.startsWith(`http://`)&&!r.startsWith(`https://`)&&(r=`https://${r}`),r=r.replace(/\/+$/,``),r.endsWith(t)){let e=r.slice(0,-35).replace(/\/+$/,``);return{baseUrl:e,siteUrl:e,manifestUrl:r}}return{baseUrl:r,siteUrl:r,manifestUrl:`${r}/${t}`}}function r(e,t){if(!e)return``;try{return new URL(e,t).href}catch{return e}}function i(e,t){let n=JSON.parse(JSON.stringify(e));return Array.isArray(n.tools)&&(n.tools=n.tools.map(e=>({...e,url:r(e.url,t)}))),Array.isArray(n.scripts)&&(n.scripts=n.scripts.map(e=>({...e,url:r(e.url,t)}))),Array.isArray(n.skills)&&(n.skills=n.skills.map(e=>({...e,url:r(e.url,t),tools:Array.isArray(e.tools)?e.tools.map(e=>({...e,url:e.url?r(e.url,t):void 0})):void 0,scripts:Array.isArray(e.scripts)?e.scripts.map(e=>({...e,url:e.url?r(e.url,t):void 0})):void 0}))),n}async function a(t,n){if(!n||!n.startsWith(`sha256:`))return!0;let r=n.slice(7).trim().toLowerCase();return!r||(await e(typeof t==`string`?new TextEncoder().encode(t):t)).toLowerCase()===r}async function o(e,t=globalThis.fetch){let{baseUrl:r,manifestUrl:a}=n(e),o=await t(a,{headers:{Accept:`application/json`}});if(!o.ok)throw Error(`Failed to fetch discovery manifest: HTTP ${o.status} ${o.statusText}`.trim());let s=await o.json();if(!s||typeof s!=`object`)throw Error(`Invalid discovery manifest: expected a JSON object`);return{manifest:i(s,a),siteUrl:r,manifestUrl:a}}export{a,i,n,r,o as t};
@@ -1 +1 @@
1
- import{t as e}from"./chunk-uAI_Zi6n.js";import{existsSync as t}from"node:fs";import n from"node:path";import{pathToFileURL as r}from"node:url";import i from"node:process";const a=e(import.meta.url);let o=null;async function s(){if(o)return o;let e=i.env.NODE_ENV===`test`,s=n.join(a,`dist/headless-agent.js`);if(!e&&t(s))return o=await import(r(s).href),o;try{return o={...await import(`./chunk-CGiXWHTi2.js`)},o}catch{try{return o={...await import(`./chunk-CGiXWHTi2.js`)},o}catch(e){if(t(s))return o={...await import(r(s).href)},o;throw e}}}export{s as t};
1
+ import{t as e}from"./chunk-uAI_Zi6n.js";import{existsSync as t}from"node:fs";import n from"node:path";import{pathToFileURL as r}from"node:url";import i from"node:process";const a=e(import.meta.url);let o=null;async function s(){if(o)return o;let e=i.env.NODE_ENV===`test`,s=n.join(a,`dist/headless-agent.js`);if(!e&&t(s))return o=await import(r(s).href),o;try{return o={...await import(`./chunk-gwpxl-0W2.js`)},o}catch{try{return o={...await import(`./chunk-gwpxl-0W2.js`)},o}catch(e){if(t(s))return o={...await import(r(s).href)},o;throw e}}}export{s as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./chunk-CK6ejMig.js";export{e as runWebRtcListenCommand};
@@ -3,8 +3,8 @@ import{t as e}from"./chunk-DSjMdhoD.js";import{n as t,t as n}from"./chunk-DSAjCI
3
3
  `&&n!==` `&&n!==`\r`)return t;t++,a()}return-1}function s(){return e.substring(r)}function c(t){return e.substring(r,r+t.length)===t}function l(t){return e.substring(r,r+t.length).toUpperCase()===t.toUpperCase()}function u(e){var t=n.reg(`^`,e).exec(s());return t?(a(t[0].length),t[0]):null}return{char:i,getIndex:function(){return r},getMatch:u,getSource:function(){return e},skip:a,skipBlanks:o,substringFromIndex:s,substringStartsWith:c,substringStartsWithCaseInsensitive:l}}function j(e,t){function r(e,t){var r=n.PI.exec(e.substringFromIndex());return r?r[1].toLowerCase()===`xml`?t.fatalError(`xml declaration is only allowed at the start of the document, but found at position `+e.getIndex()):(e.skip(r[0].length),r[0]):t.fatalError(`processing instruction is not well-formed at position `+e.getIndex())}var i=e.getSource();if(e.char()===`[`){e.skip(1);for(var a=e.getIndex();e.getIndex()<i.length;){if(e.skipBlanks(),e.char()===`]`){var o=i.substring(a,e.getIndex());return e.skip(1),o}var s=null;if(e.char()===`<`&&e.char(1)===`!`)switch(e.char(2)){case`E`:e.char(3)===`L`?s=e.getMatch(n.elementdecl):e.char(3)===`N`&&(s=e.getMatch(n.EntityDecl));break;case`A`:s=e.getMatch(n.AttlistDecl);break;case`N`:s=e.getMatch(n.NotationDecl);break;case`-`:s=e.getMatch(n.Comment);break}else if(e.char()===`<`&&e.char(1)===`?`)s=r(e,t);else if(e.char()===`%`)s=e.getMatch(n.PEReference);else return t.fatalError(`Error detected in Markup declaration`);if(!s)return t.fatalError(`Error in internal subset at position `+e.getIndex())}return t.fatalError(`doctype internal subset is not well-formed, missing ]`)}}function M(e,t,r,i,a){var o=A(e,t);switch(a?o.char(2).toUpperCase():o.char(2)){case`-`:var s=o.getMatch(n.Comment);return s?(r.comment(s,n.COMMENT_START.length,s.length-n.COMMENT_START.length-n.COMMENT_END.length),o.getIndex()):i.fatalError(`comment is not well-formed at position `+o.getIndex());case`[`:var c=o.getMatch(n.CDSect);return c?!a&&!r.currentElement?i.fatalError(`CDATA outside of element`):(r.startCDATA(),r.characters(c,n.CDATA_START.length,c.length-n.CDATA_START.length-n.CDATA_END.length),r.endCDATA(),o.getIndex()):i.fatalError(`Invalid CDATA starting at position `+t);case`D`:if(r.doc&&r.doc.documentElement)return i.fatalError(`Doctype not allowed inside or after documentElement at position `+o.getIndex());if(a?!o.substringStartsWithCaseInsensitive(n.DOCTYPE_DECL_START):!o.substringStartsWith(n.DOCTYPE_DECL_START))return i.fatalError(`Expected `+n.DOCTYPE_DECL_START+` at position `+o.getIndex());if(o.skip(n.DOCTYPE_DECL_START.length),o.skipBlanks()<1)return i.fatalError(`Expected whitespace after `+n.DOCTYPE_DECL_START+` at position `+o.getIndex());var l={name:void 0,publicId:void 0,systemId:void 0,internalSubset:void 0};if(l.name=o.getMatch(n.Name),!l.name)return i.fatalError(`doctype name missing or contains unexpected characters at position `+o.getIndex());if(a&&l.name.toLowerCase()!==`html`&&i.warning(`Unexpected DOCTYPE in HTML document at position `+o.getIndex()),o.skipBlanks(),o.substringStartsWith(n.PUBLIC)||o.substringStartsWith(n.SYSTEM)){var u=n.ExternalID_match.exec(o.substringFromIndex());if(!u)return i.fatalError(`doctype external id is not well-formed at position `+o.getIndex());u.groups.SystemLiteralOnly===void 0?(l.systemId=u.groups.SystemLiteral,l.publicId=u.groups.PubidLiteral):l.systemId=u.groups.SystemLiteralOnly,o.skip(u[0].length)}else if(a&&o.substringStartsWithCaseInsensitive(n.SYSTEM)){if(o.skip(n.SYSTEM.length),o.skipBlanks()<1)return i.fatalError(`Expected whitespace after `+n.SYSTEM+` at position `+o.getIndex());if(l.systemId=o.getMatch(n.ABOUT_LEGACY_COMPAT_SystemLiteral),!l.systemId)return i.fatalError(`Expected `+n.ABOUT_LEGACY_COMPAT+` in single or double quotes after `+n.SYSTEM+` at position `+o.getIndex())}return a&&l.systemId&&!n.ABOUT_LEGACY_COMPAT_SystemLiteral.test(l.systemId)&&i.warning(`Unexpected doctype.systemId in HTML document at position `+o.getIndex()),a||(o.skipBlanks(),l.internalSubset=j(o,i)),o.skipBlanks(),o.char()===`>`?(o.skip(1),r.startDTD(l.name,l.publicId,l.systemId,l.internalSubset),r.endDTD(),o.getIndex()):i.fatalError(`doctype not terminated with > at position `+o.getIndex());default:return i.fatalError(`Not well-formed XML starting with "<!" at position `+t)}}function ee(e,t,r,i){var a=e.substring(t).match(n.PI);if(!a)return i.fatalError(`Invalid processing instruction starting at position `+t);if(a[1].toLowerCase()===`xml`){if(t>0)return i.fatalError(`processing instruction at position `+t+` is an xml declaration which is only at the start of the document`);if(!n.XMLDecl.test(e.substring(t)))return i.fatalError(`xml declaration is not well-formed`)}return r.processingInstruction(a[1],a[2]),t+a[0].length}function te(){this.attributeNames=Object.create(null)}te.prototype={setTagName:function(e){if(!n.QName_exact.test(e))throw Error(`invalid tagName:`+e);this.tagName=e},addValue:function(e,t,r){if(!n.QName_exact.test(e))throw Error(`invalid attribute:`+e);this.attributeNames[e]=this.length,this[this.length++]={qName:e,value:t,offset:r}},length:0,getLocalName:function(e){return this[e].localName},getLocator:function(e){return this[e].locator},getQName:function(e){return this[e].qName},getURI:function(e){return this[e].uri},getValue:function(e){return this[e].value}},e.XMLReader=S,e.parseUtils=A,e.parseDoctypeCommentOrCData=M})),b=e((e=>{var t=m(),n=_(),r=h(),i=v(),a=y(),o=n.DOMImplementation,s=t.hasDefaultHTMLNamespace,c=t.isHTMLMimeType,l=t.isValidMimeType,u=t.MIME_TYPE,d=t.NAMESPACE,f=r.ParseError,p=a.XMLReader;function g(e){return e.replace(/\r[\n\u0085]/g,`
4
4
  `).replace(/[\r\u0085\u2028\u2029]/g,`
5
5
  `)}function b(e){if(e||={},e.locator===void 0&&(e.locator=!0),this.assign=e.assign||t.assign,this.domHandler=e.domHandler||x,this.onError=e.onError||e.errorHandler,e.errorHandler&&typeof e.errorHandler!=`function`)throw TypeError(`errorHandler object is no longer supported, switch to onError!`);e.errorHandler&&e.errorHandler(`warning`,"The `errorHandler` option has been deprecated, use `onError` instead!",this),this.normalizeLineEndings=e.normalizeLineEndings||g,this.locator=!!e.locator,this.xmlns=this.assign(Object.create(null),e.xmlns)}b.prototype.parseFromString=function(e,n){if(!l(n))throw TypeError(`DOMParser.parseFromString: the provided mimeType "`+n+`" is not valid.`);var r=this.assign(Object.create(null),this.xmlns),a=i.XML_ENTITIES,o=r[``]||null;s(n)?(a=i.HTML_ENTITIES,o=d.HTML):n===u.XML_SVG_IMAGE&&(o=d.SVG),r[``]=o,r.xml=r.xml||d.XML;var c=new this.domHandler({mimeType:n,defaultNamespace:o,onError:this.onError}),f=this.locator?{}:void 0;this.locator&&c.setDocumentLocator(f);var m=new p;return m.errorHandler=c,m.domBuilder=c,!t.isHTMLMimeType(n)&&typeof e!=`string`&&m.errorHandler.fatalError(`source is not a string`),m.parse(this.normalizeLineEndings(String(e)),r,a),c.doc.documentElement||m.errorHandler.fatalError(`missing root element`),c.doc};function x(e){var t=e||{};this.mimeType=t.mimeType||u.XML_APPLICATION,this.defaultNamespace=t.defaultNamespace||null,this.cdata=!1,this.currentElement=void 0,this.doc=void 0,this.locator=void 0,this.onError=t.onError}function S(e,t){t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber}x.prototype={startDocument:function(){var e=new o;this.doc=c(this.mimeType)?e.createHTMLDocument(!1):e.createDocument(this.defaultNamespace,``)},startElement:function(e,t,n,r){var i=this.doc,a=i.createElementNS(e,n||t),o=r.length;T(this,a),this.currentElement=a,this.locator&&S(this.locator,a);for(var s=0;s<o;s++){var e=r.getURI(s),c=r.getValue(s),n=r.getQName(s),l=i.createAttributeNS(e,n);this.locator&&S(r.getLocator(s),l),l.value=l.nodeValue=c,a.setAttributeNode(l)}},endElement:function(e,t,n){this.currentElement=this.currentElement.parentNode},startPrefixMapping:function(e,t){},endPrefixMapping:function(e){},processingInstruction:function(e,t){var n=this.doc.createProcessingInstruction(e,t);this.locator&&S(this.locator,n),T(this,n)},ignorableWhitespace:function(e,t,n){},characters:function(e,t,n){if(e=w.apply(this,arguments),e){if(this.cdata)var r=this.doc.createCDATASection(e);else var r=this.doc.createTextNode(e);this.currentElement?this.currentElement.appendChild(r):/^\s*$/.test(e)&&this.doc.appendChild(r),this.locator&&S(this.locator,r)}},skippedEntity:function(e){},endDocument:function(){this.doc.normalize()},setDocumentLocator:function(e){e&&(e.lineNumber=0),this.locator=e},comment:function(e,t,n){e=w.apply(this,arguments);var r=this.doc.createComment(e);this.locator&&S(this.locator,r),T(this,r)},startCDATA:function(){this.cdata=!0},endCDATA:function(){this.cdata=!1},startDTD:function(e,t,n,r){var i=this.doc.implementation;if(i&&i.createDocumentType){var a=i.createDocumentType(e,t,n,r);this.locator&&S(this.locator,a),T(this,a),this.doc.doctype=a}},reportError:function(e,t){if(typeof this.onError==`function`)try{this.onError(e,t,this)}catch(n){throw new f(`Reporting `+e+` "`+t+`" caused `+n,this.locator)}else console.error(`[xmldom `+e+`] `+t,C(this.locator))},warning:function(e){this.reportError(`warning`,e)},error:function(e){this.reportError(`error`,e)},fatalError:function(e,t){throw this.reportError(`fatalError`,e),new f(e,this.locator,t)}};function C(e){if(e)return`
6
- @#[line:`+e.lineNumber+`,col:`+e.columnNumber+`]`}function w(e,t,n){return typeof e==`string`?e.substr(t,n):e.length>=t+n||t?new java.lang.String(e,t,n)+``:e}`endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl`.replace(/\w+/g,function(e){x.prototype[e]=function(){return null}});function T(e,t){e.currentElement?e.currentElement.appendChild(t):e.doc.appendChild(t)}function E(e){if(e===`error`)throw`onErrorStopParsing`}function D(){throw`onWarningStopParsing`}e.__DOMHandler=x,e.DOMParser=b,e.normalizeLineEndings=g,e.onErrorStopParsing=E,e.onWarningStopParsing=D})),x=e((e=>{var t=m();e.assign=t.assign,e.hasDefaultHTMLNamespace=t.hasDefaultHTMLNamespace,e.isHTMLMimeType=t.isHTMLMimeType,e.isValidMimeType=t.isValidMimeType,e.MIME_TYPE=t.MIME_TYPE,e.NAMESPACE=t.NAMESPACE;var n=h();e.DOMException=n.DOMException,e.DOMExceptionName=n.DOMExceptionName,e.ExceptionCode=n.ExceptionCode,e.ParseError=n.ParseError;var r=_();e.Attr=r.Attr,e.CDATASection=r.CDATASection,e.CharacterData=r.CharacterData,e.Comment=r.Comment,e.Document=r.Document,e.DocumentFragment=r.DocumentFragment,e.DocumentType=r.DocumentType,e.DOMImplementation=r.DOMImplementation,e.Element=r.Element,e.Entity=r.Entity,e.EntityReference=r.EntityReference,e.LiveNodeList=r.LiveNodeList,e.NamedNodeMap=r.NamedNodeMap,e.Node=r.Node,e.NodeList=r.NodeList,e.Notation=r.Notation,e.ProcessingInstruction=r.ProcessingInstruction,e.Text=r.Text,e.XMLSerializer=r.XMLSerializer;var i=b();e.DOMParser=i.DOMParser,e.normalizeLineEndings=i.normalizeLineEndings,e.onErrorStopParsing=i.onErrorStopParsing,e.onWarningStopParsing=i.onWarningStopParsing}))();function S(e,t){if(!t||typeof t.createElement!=`function`)throw Error(`A valid documentInstance is required to build frontmatter DOM.`);let n=JSON.stringify(e,null,2)||`{}`,r=t.createElement(`section`);r.setAttribute(`class`,`markdown-frontmatter`),r.setAttribute(`data-markdown-frontmatter`,``),r.setAttribute(`data-frontmatter`,n);let i=t.createElement(`details`);i.setAttribute(`class`,`markdown-frontmatter__details`),i.setAttribute(`hidden`,`hidden`);let a=t.createElement(`summary`);a.setAttribute(`class`,`markdown-frontmatter__summary`),a.appendChild(t.createTextNode(`Frontmatter`));let o=t.createElement(`pre`);o.setAttribute(`class`,`markdown-frontmatter__pre`);let s=t.createElement(`code`);return s.setAttribute(`class`,`language-json`),s.appendChild(t.createTextNode(n)),o.appendChild(s),i.appendChild(a),i.appendChild(o),r.appendChild(i),r}function C(e,t){if(typeof t==`function`)return t;let n=e?.defaultView?.XMLSerializer||globalThis.XMLSerializer;return typeof n==`function`?e=>new n().serializeToString(e):null}function w(e,t,n={}){let r=n.documentInstance||(typeof document<`u`?document:null);if(!r)throw Error(`No document instance available for frontmatter rendering.`);let i=t(e,r);if(typeof i.outerHTML==`string`)return i.outerHTML;let a=C(r,n.serializeNode);if(a)return a(i);throw Error(`No serializer available for frontmatter DOM element.`)}function T(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function E(e){return e.replace(/<script[\s\S]*?>[\s\S]*?<\/script>/giu,``).replace(/\son[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/giu,``)}function D(e){return e.split(r.sep).join(`/`)}function O(e){if(e==null||e===``||e===!0)return 1;let t=String(e).trim().toLowerCase();if(t===`all`)return`all`;if(t===`none`||t===`0`||t===`false`)return 0;if(t===`1`||t===`current`||t===`single`)return 1;let n=parseInt(t,10);return!isNaN(n)&&n>=0?n:1}function k(e){return e.replace(/</g,`\\u003c`).replace(/>/g,`\\u003e`).replace(/\//g,`\\u002f`).replace(/\u2028/g,`\\u2028`).replace(/\u2029/g,`\\u2029`)}function A(e,t){let n=e.lastIndexOf(`</head>`);return n===-1?`${t}\n${e}`:e.slice(0,n)+t+`
7
- `+e.slice(n)}function j(e,t){let n=`<script id="shadow-claw-static-manifest" type="application/json">${k(t)}<\/script>`,r=e;return r=/id="shadow-claw-static-manifest"/iu.test(r)?r.replace(/<script\s+id="shadow-claw-static-manifest"[\s\S]*?<\/script>/iu,()=>n):A(r,` ${n}`),/id="shadow-claw-static-routing"/iu.test(r)||(r=A(r,` <script id="shadow-claw-static-routing" type="application/json">{"routes":{}}<\/script>`)),r}const M=new Set([`.md`,`.markdown`,`.html`,`.htm`,`.xhtml`]),ee=new x.DOMImplementation().createDocument(null,`html`,null),te=new x.XMLSerializer;function N(){return[{absolutePath:null,displayPath:`index.html`,inlineContent:t},{absolutePath:null,displayPath:`MEMORY.md`,inlineContent:n}]}function P(e){let t=f(e);return{data:t.data&&typeof t.data==`object`?t.data:{},content:t.content||``}}function F(e){let t=e.match(/<template[^>]*>([\s\S]*?)<\/template>/iu);if(!t)throw Error(`Template wrapper not found while generating DSD.`);return t[1].trim()}function ne(e,t,n){let i=`br-${r.basename(t)}`;e[i]||(e[i]={});let a=n.split(`/`),o=e[i];for(let e=0;e<a.length-1;e++){let t=a[e];o[t]||(o[t]={}),o=o[t]}o.purgePreRenderedStaticPages=!0}function I(e){let t=r.extname(e).toLowerCase();return M.has(t)}function L(e,t=`desc`){return[...e].sort((e,n)=>{let i=r.basename(e),a=r.basename(n),o=/^index\.(html?|xhtml)$/iu.test(i),s=/^index\.(html?|xhtml)$/iu.test(a);if(o&&!s)return-1;if(!o&&s)return 1;let c=/^memory\.(md|markdown)$/iu.test(i),l=/^memory\.(md|markdown)$/iu.test(a);return c&&!l?1:!c&&l?-1:t===`desc`?n.localeCompare(e,void 0,{numeric:!0,sensitivity:`base`}):e.localeCompare(n,void 0,{numeric:!0,sensitivity:`base`})})}async function R(e,t=`desc`){let n;try{n=await u(e)}catch(e){if(e?.code===`ENOENT`)return N();throw e}if(n.isFile())return[{absolutePath:e,displayPath:D(r.basename(e))}];let i=[];async function a(t){let n=await l(t,{withFileTypes:!0});for(let o of n){let n=r.join(t,o.name);if(o.isDirectory()){await a(n);continue}if(!o.isFile()||!I(o.name))continue;let s=D(r.relative(e,n));i.push({absolutePath:n,displayPath:s})}}if(await a(e),i.length===0)return N();let o=new Map(i.map(e=>[e.displayPath,e]));return L(i.map(e=>e.displayPath),t).map(e=>o.get(e))}async function z(e){try{if(!(await u(e)).isDirectory())return[]}catch(e){if(e?.code===`ENOENT`)return[];throw e}let t=[];async function n(i){let a=await l(i,{withFileTypes:!0});for(let o of a){let a=r.join(i,o.name);if(o.isDirectory())await n(a);else if(o.isFile()){let n={absolutePath:a,displayPath:D(r.relative(e,a))};if(r.extname(o.name).toLowerCase()===`.md`)try{let e=P(await c(a,`utf8`));e.data.slug===`shadow-claw--purge-skills`&&(n.isPurgeMarker=!0,e.data[`purge-id`]!==void 0&&(n.purgeId=String(e.data[`purge-id`])))}catch{}t.push(n)}}}return await n(e),t.sort((e,t)=>e.displayPath.localeCompare(t.displayPath))}async function B(e){try{if(!(await u(e)).isDirectory())return[]}catch(e){if(e?.code===`ENOENT`)return[];throw e}let t=[];async function n(i){let a=await l(i,{withFileTypes:!0});for(let o of a){let a=r.join(i,o.name);o.isDirectory()?await n(a):o.isFile()&&o.name.endsWith(`.json`)&&t.push({absolutePath:a,displayPath:D(r.relative(e,a))})}}return await n(e),t.sort((e,t)=>e.displayPath.localeCompare(t.displayPath))}async function V(e,t){let n=r.extname(t).toLowerCase(),i=n===`.html`||n===`.htm`||n===`.xhtml`,a,o;if(i)a=P(e),o=E(a.content);else try{a=P(e),o=E(await p.parse(a.content))}catch{a={data:{},content:e},o=`<p>${T(e)}</p>`}if(t){let e=r.posix.dirname(D(t)),n=`/files/main/${e===`.`?``:e+`/`}`;o=o.replace(/<img\s+([^>]*?)src="([^"]+)"([^>]*)>/giu,(e,t,r,i)=>/^(?:[a-z]+:|#|\/)/iu.test(r)?e:`<img ${t}src="${n}${r}"${i}>`)}return a.data&&Object.keys(a.data).length>0&&(o=`${w(a.data,S,{documentInstance:ee,serializeNode:e=>te.serializeToString(e)})}\n${o}`),o}function H(e,t){let n=/<\/?template\b[^>]*>/giu;n.lastIndex=t;let r=0,i=!1,a=n.exec(e);for(;a;){if(a[0].toLowerCase().startsWith(`</template`)?--r:(r+=1,i=!0),i&&r===0)return n.lastIndex;a=n.exec(e)}return-1}function U(e){let t=e.indexOf(`<template shadowrootmode="open" data-shadow-claw-dsd="true">`);if(t===-1)return e;let n=H(e,t);return n===-1?e:`${e.slice(0,t)}${e.slice(n)}`}function W(e){return e.replace(/\s*<div\s+aria-hidden="true"\s+class="boot-shell">[\s\S]*?<\/div>\s*/iu,`
6
+ @#[line:`+e.lineNumber+`,col:`+e.columnNumber+`]`}function w(e,t,n){return typeof e==`string`?e.substr(t,n):e.length>=t+n||t?new java.lang.String(e,t,n)+``:e}`endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl`.replace(/\w+/g,function(e){x.prototype[e]=function(){return null}});function T(e,t){e.currentElement?e.currentElement.appendChild(t):e.doc.appendChild(t)}function E(e){if(e===`error`)throw`onErrorStopParsing`}function D(){throw`onWarningStopParsing`}e.__DOMHandler=x,e.DOMParser=b,e.normalizeLineEndings=g,e.onErrorStopParsing=E,e.onWarningStopParsing=D})),x=e((e=>{var t=m();e.assign=t.assign,e.hasDefaultHTMLNamespace=t.hasDefaultHTMLNamespace,e.isHTMLMimeType=t.isHTMLMimeType,e.isValidMimeType=t.isValidMimeType,e.MIME_TYPE=t.MIME_TYPE,e.NAMESPACE=t.NAMESPACE;var n=h();e.DOMException=n.DOMException,e.DOMExceptionName=n.DOMExceptionName,e.ExceptionCode=n.ExceptionCode,e.ParseError=n.ParseError;var r=_();e.Attr=r.Attr,e.CDATASection=r.CDATASection,e.CharacterData=r.CharacterData,e.Comment=r.Comment,e.Document=r.Document,e.DocumentFragment=r.DocumentFragment,e.DocumentType=r.DocumentType,e.DOMImplementation=r.DOMImplementation,e.Element=r.Element,e.Entity=r.Entity,e.EntityReference=r.EntityReference,e.LiveNodeList=r.LiveNodeList,e.NamedNodeMap=r.NamedNodeMap,e.Node=r.Node,e.NodeList=r.NodeList,e.Notation=r.Notation,e.ProcessingInstruction=r.ProcessingInstruction,e.Text=r.Text,e.XMLSerializer=r.XMLSerializer;var i=b();e.DOMParser=i.DOMParser,e.normalizeLineEndings=i.normalizeLineEndings,e.onErrorStopParsing=i.onErrorStopParsing,e.onWarningStopParsing=i.onWarningStopParsing}))();function S(e,t){if(!t||typeof t.createElement!=`function`)throw Error(`A valid documentInstance is required to build frontmatter DOM.`);let n=JSON.stringify(e,null,2)||`{}`,r=t.createElement(`section`);r.setAttribute(`class`,`markdown-frontmatter`),r.setAttribute(`data-markdown-frontmatter`,``),r.setAttribute(`data-frontmatter`,n);let i=t.createElement(`details`);i.setAttribute(`class`,`markdown-frontmatter__details`),i.setAttribute(`hidden`,`hidden`);let a=t.createElement(`summary`);a.setAttribute(`class`,`markdown-frontmatter__summary`),a.appendChild(t.createTextNode(`Frontmatter`));let o=t.createElement(`pre`);o.setAttribute(`class`,`markdown-frontmatter__pre`);let s=t.createElement(`code`);return s.setAttribute(`class`,`language-json`),s.appendChild(t.createTextNode(n)),o.appendChild(s),i.appendChild(a),i.appendChild(o),r.appendChild(i),r}function C(e,t){if(typeof t==`function`)return t;let n=e?.defaultView?.XMLSerializer||globalThis.XMLSerializer;return typeof n==`function`?e=>new n().serializeToString(e):null}function w(e,t,n={}){let r=n.documentInstance||(typeof document<`u`?document:null);if(!r)throw Error(`No document instance available for frontmatter rendering.`);let i=t(e,r);if(typeof i.outerHTML==`string`)return i.outerHTML;let a=C(r,n.serializeNode);if(a)return a(i);throw Error(`No serializer available for frontmatter DOM element.`)}function T(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function E(e){return e.replace(/<script[\s\S]*?>[\s\S]*?<\/script>/giu,``).replace(/\son[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/giu,``)}function D(e){return e.split(r.sep).join(`/`)}function O(e){if(e==null||e===``||e===!0)return 1;let t=String(e).trim().toLowerCase();if(t===`all`)return`all`;if(t===`none`||t===`0`||t===`false`)return 0;if(t===`1`||t===`current`||t===`single`)return 1;let n=parseInt(t,10);return!isNaN(n)&&n>=0?n:1}function k(e){return e.replace(/</g,`\\u003c`).replace(/>/g,`\\u003e`).replace(/\//g,`\\u002f`).replace(/\u2028/g,`\\u2028`).replace(/\u2029/g,`\\u2029`)}function A(e,t){let n=/<\/head>/i.exec(e);if(n){let r=n.index;return e.slice(0,r)+t+`
7
+ `+e.slice(r)}return`${t}\n${e}`}function j(e,t){let n=`<script id="shadow-claw-static-manifest" type="application/json">${k(t)}<\/script>`,r=e;return r=/id="shadow-claw-static-manifest"/iu.test(r)?r.replace(/<script\s+id="shadow-claw-static-manifest"[\s\S]*?<\/script>/iu,()=>n):A(r,` ${n}`),/id="shadow-claw-static-routing"/iu.test(r)||(r=A(r,` <script id="shadow-claw-static-routing" type="application/json">{"routes":{}}<\/script>`)),r}const M=new Set([`.md`,`.markdown`,`.html`,`.htm`,`.xhtml`]),ee=new x.DOMImplementation().createDocument(null,`html`,null),te=new x.XMLSerializer;function N(){return[{absolutePath:null,displayPath:`index.html`,inlineContent:t},{absolutePath:null,displayPath:`MEMORY.md`,inlineContent:n}]}function P(e){let t=f(e);return{data:t.data&&typeof t.data==`object`?t.data:{},content:t.content||``}}function F(e){let t=e.match(/<template[^>]*>([\s\S]*?)<\/template>/iu);if(!t)throw Error(`Template wrapper not found while generating DSD.`);return t[1].trim()}function ne(e,t,n){let i=`br-${r.basename(t)}`;e[i]||(e[i]={});let a=n.split(`/`),o=e[i];for(let e=0;e<a.length-1;e++){let t=a[e];o[t]||(o[t]={}),o=o[t]}o.purgePreRenderedStaticPages=!0}function I(e){let t=r.extname(e).toLowerCase();return M.has(t)}function L(e,t=`desc`){return[...e].sort((e,n)=>{let i=r.basename(e),a=r.basename(n),o=/^index\.(html?|xhtml)$/iu.test(i),s=/^index\.(html?|xhtml)$/iu.test(a);if(o&&!s)return-1;if(!o&&s)return 1;let c=/^memory\.(md|markdown)$/iu.test(i),l=/^memory\.(md|markdown)$/iu.test(a);return c&&!l?1:!c&&l?-1:t===`desc`?n.localeCompare(e,void 0,{numeric:!0,sensitivity:`base`}):e.localeCompare(n,void 0,{numeric:!0,sensitivity:`base`})})}async function R(e,t=`desc`){let n;try{n=await u(e)}catch(e){if(e?.code===`ENOENT`)return N();throw e}if(n.isFile())return[{absolutePath:e,displayPath:D(r.basename(e))}];let i=[];async function a(t){let n=await l(t,{withFileTypes:!0});for(let o of n){let n=r.join(t,o.name);if(o.isDirectory()){await a(n);continue}if(!o.isFile()||!I(o.name))continue;let s=D(r.relative(e,n));i.push({absolutePath:n,displayPath:s})}}if(await a(e),i.length===0)return N();let o=new Map(i.map(e=>[e.displayPath,e]));return L(i.map(e=>e.displayPath),t).map(e=>o.get(e))}async function z(e){try{if(!(await u(e)).isDirectory())return[]}catch(e){if(e?.code===`ENOENT`)return[];throw e}let t=[];async function n(i){let a=await l(i,{withFileTypes:!0});for(let o of a){let a=r.join(i,o.name);if(o.isDirectory())await n(a);else if(o.isFile()){let n={absolutePath:a,displayPath:D(r.relative(e,a))};if(r.extname(o.name).toLowerCase()===`.md`)try{let e=P(await c(a,`utf8`));e.data.slug===`shadow-claw--purge-skills`&&(n.isPurgeMarker=!0,e.data[`purge-id`]!==void 0&&(n.purgeId=String(e.data[`purge-id`])))}catch{}t.push(n)}}}return await n(e),t.sort((e,t)=>e.displayPath.localeCompare(t.displayPath))}async function B(e){try{if(!(await u(e)).isDirectory())return[]}catch(e){if(e?.code===`ENOENT`)return[];throw e}let t=[];async function n(i){let a=await l(i,{withFileTypes:!0});for(let o of a){let a=r.join(i,o.name);o.isDirectory()?await n(a):o.isFile()&&o.name.endsWith(`.json`)&&t.push({absolutePath:a,displayPath:D(r.relative(e,a))})}}return await n(e),t.sort((e,t)=>e.displayPath.localeCompare(t.displayPath))}async function V(e,t){let n=r.extname(t).toLowerCase(),i=n===`.html`||n===`.htm`||n===`.xhtml`,a,o;if(i)a=P(e),o=E(a.content);else try{a=P(e),o=E(await p.parse(a.content))}catch{a={data:{},content:e},o=`<p>${T(e)}</p>`}if(t){let e=r.posix.dirname(D(t)),n=`/files/main/${e===`.`?``:e+`/`}`;o=o.replace(/<img\s+([^>]*?)src="([^"]+)"([^>]*)>/giu,(e,t,r,i)=>/^(?:[a-z]+:|#|\/)/iu.test(r)?e:`<img ${t}src="${n}${r}"${i}>`)}return a.data&&Object.keys(a.data).length>0&&(o=`${w(a.data,S,{documentInstance:ee,serializeNode:e=>te.serializeToString(e)})}\n${o}`),o}function H(e,t){let n=/<\/?template\b[^>]*>/giu;n.lastIndex=t;let r=0,i=!1,a=n.exec(e);for(;a;){if(a[0].toLowerCase().startsWith(`</template`)?--r:(r+=1,i=!0),i&&r===0)return n.lastIndex;a=n.exec(e)}return-1}function U(e){let t=e.indexOf(`<template shadowrootmode="open" data-shadow-claw-dsd="true">`);if(t===-1)return e;let n=H(e,t);return n===-1?e:`${e.slice(0,t)}${e.slice(n)}`}function W(e){return e.replace(/\s*<div\s+aria-hidden="true"\s+class="boot-shell">[\s\S]*?<\/div>\s*/iu,`
8
8
  `)}function G(e){return[`<details class="pages__group-details" open>`,` <summary class="pages__group-label">`,` <span>Main</span><span class="pages__group-icon">▼</span>`,` </summary>`,` <div class="pages__group-pages">`,e.map((e,t)=>{let n=t===0,r=n?` active`:``,i=n?` is-default`:``,a=T(e.displayPath);return[` <div class="pages__list-item${r}">`,` <span class="pages__drag-handle" draggable="true" title="Drag to reorder">⠿</span>`,` <span class="pages__default-btn${i}" title="Default page">⭐</span>`,` <button type="button" class="pages__select" title="Open ${a}">`,` <span class="pages__list-path">${a}</span>`,` </button>`,` <button class="pages__edit" type="button" title="Edit in file editor" aria-label="Edit ${a} in file editor">✏️</button>`,` <button class="pages__remove" type="button" title="Remove from Pages" aria-label="Remove ${a} from Pages in Main">✕</button>`,` </div>`].join(`
9
9
  `)}).join(`
10
10
  `),` </div>`,`</details>`].join(`
@@ -12,6 +12,6 @@ import{t as e}from"./chunk-DSjMdhoD.js";import{n as t,t as n}from"./chunk-DSAjCI
12
12
  `)})}function q(e,t,n,r,i=``,a=``){let o=t.length===1?`1 saved page`:`${t.length} saved pages`,s=G(t),c=t[0]?.displayPath||`Select a page...`,l=e;return l=l.replace(/<div\b[^>]*\bdata-pages-status\b[^>]*><\/div>/iu,()=>`<div class="pages__status" data-pages-status>${T(o)}</div>`),l=l.replace(/<span\s+class="pages__dropdown-selected"\s+data-pages-dropdown-selected>[\s\S]*?<\/span>/iu,()=>`<span class="pages__dropdown-selected" data-pages-dropdown-selected>${T(c)}</span>`),l=l.replace(/<div\s+class="pages__list"\s+data-pages-list\s+role="list"><\/div>/giu,()=>`<div class="pages__list" data-pages-list role="list">\n${s}\n</div>`),l=l.replace(/<div\s+class="pages__empty"\s+data-pages-empty>/iu,()=>`<div class="pages__empty" data-pages-empty hidden>`),l=l.replace(/<div\s+class="pages__rendered"\s+data-pages-rendered\s+hidden><\/div>/iu,()=>`<div class="pages__rendered" data-pages-rendered>${n}</div>`),K(l,r,i,a)}function re(e,t,n,r,i=``,a=``,o=``){let s=q(e,t,n,r,i,o);return[`<shadow-claw-pages>`,`<template shadowrootmode="open" data-shadow-claw-pages-dsd="true">`,`<style data-dsd-style>${a}</style>`,s,`</template>`,`</shadow-claw-pages>`].join(`
13
13
  `)}function ie(e){let t=e;return t=t.replace(/<div\s+class="pages__empty"\s+data-pages-empty>[\s\S]*?<\/div>/iu,`<div class="pages__empty" data-pages-empty hidden></div>`),t}function ae(e,t=``){let n=ie(e);return[`<shadow-claw-pages>`,`<template shadowrootmode="open" data-shadow-claw-pages-dsd="true">`,`<style data-dsd-style>${t}</style>`,n,`</template>`,`</shadow-claw-pages>`].join(`
14
14
  `)}function J(e){return e.replace(/(<shadow-claw-dialog\b[^>]*>)([\s\S]*?)(<\/shadow-claw-dialog>)/giu,(e,t,n,r)=>{if(/^\s*<template\b/iu.test(n))return e;let i=n.trim();return i?[t,`<template>`,i,`</template>`,r].join(`
15
- `):`${t}<template></template>${r}`})}function Y(e,t={}){let n=e;if(!t||typeof t!=`object`)return n;let r=e=>{let t=RegExp(`(<li\\s+class="[^"]*nav-item[^"]*"\\s+data-page="${e}")(?![^>]*\\bhidden\\b)([^>]*>)`,`iu`);n=n.replace(t,`$1 hidden aria-hidden="true"$2`)};return t.pagesHidden&&r(`pages`),t.chatHidden&&r(`chat`),t.tasksHidden&&r(`tasks`),t.filesHidden&&r(`files`),n}function X(e,t,n=``,r={}){let i=e.replace(/<shadow-claw-pages><\/shadow-claw-pages>/iu,()=>t);i=Y(i,r);let a=J(i);return[`<template shadowrootmode="open" data-shadow-claw-dsd="true">`,`<style data-dsd-style>${n}</style>`,a,`</template>`].join(`
15
+ `):`${t}<template></template>${r}`})}function Y(e,t={}){let n=e;if(!t||typeof t!=`object`)return n;let r=e=>{let t=RegExp(`(<li\\s+class="[^"]*nav-item[^"]*"\\s+data-page="${e}")(?![^>]*\\bhidden\\b)([^>]*>)`,`iu`);n=n.replace(t,`$1 hidden aria-hidden="true"$2`)};return t.pagesHidden&&r(`pages`),t.chatHidden&&(r(`chat`),n=n.replace(/(<shadow-claw-conversations)(?![^>]*\bhidden\b)([^>]*>)/iu,`$1 hidden aria-hidden="true"$2`)),t.tasksHidden&&r(`tasks`),t.filesHidden&&r(`files`),n}function X(e,t,n=``,r={}){let i=e.replace(/<shadow-claw-pages><\/shadow-claw-pages>/iu,()=>t);i=Y(i,r);let a=J(i);return[`<template shadowrootmode="open" data-shadow-claw-dsd="true">`,`<style data-dsd-style>${n}</style>`,a,`</template>`].join(`
16
16
  `)}function oe(e,t=``,n={}){let r=e;r=r.replace(/(<li\s+class="nav-item)\s+active(\s*"\s+data-page="pages">)/iu,`$1$2`),r=r.replace(/(<div\s+class="page)\s+active("\s+data-page-id="pages">)/iu,`$1$2`),r=r.replace(/(<li\s+class="nav-item[^"]*"\s+data-page="pages")>/iu,`$1 hidden aria-hidden="true">`);let i=n?.chatHidden?n?.tasksHidden?n?.filesHidden?`chat`:`files`:`tasks`:`chat`;r=r.replace(RegExp(`(<li\\s+class="nav-item)(\\s*"\\s+data-page="${i}">)`,`iu`),`$1 active$2`),r=r.replace(RegExp(`(<div\\s+class="page\\s+${i}-page)("\\s+data-page-id="${i}">)`,`iu`),`$1 active$2`),r=Y(r,n);let a=J(r);return[`<template shadowrootmode="open" data-shadow-claw-dsd="true">`,`<style data-dsd-style>${t}</style>`,a,`</template>`].join(`
17
17
  `)}function se(e,t){let n=e.match(/<shadow-claw\b[^>]*>/iu),r=n?n[0]:null,i=n?.index??-1;if(i===-1||!r)throw Error(`Unable to find <shadow-claw> host in index.html.`);let a=e.indexOf(`</shadow-claw>`,i);if(a===-1)throw Error(`Unable to find </shadow-claw> host in index.html.`);let o=i+r.length,s=W(U(e.slice(o,a))).trim(),c=s?`\n ${t}\n${s}\n `:`\n ${t}\n `;return`${e.slice(0,o)}${c}${e.slice(a)}`}function Z(e){return e.replace(/<shadow-claw(\s[^>]*)?>/iu,(e,t=``)=>/\sdata-prerender-no-seed\s*=\s*/iu.test(t)?`<shadow-claw${t}>`:`<shadow-claw${t} data-prerender-no-seed="true">`)}async function Q(e,t){if(a.env.NODE_ENV!==`production`)return e;let n=e;try{let e=await c(r.join(t,`index.css`),`utf8`);n=n.replace(/<link\b[^>]*?href="(?:\/)?index\.css"[^>]*?>/iu,()=>`<style>${e}</style>`)}catch(e){console.warn(`Failed to inline index.css`,e.message)}try{let e=await c(r.join(t,`theme-init.js`),`utf8`);n=n.replace(/<script\b[^>]*?src="(?:\/)?theme-init\.js"[^>]*?><\/script>/iu,()=>`<script>${e}<\/script>`)}catch(e){console.warn(`Failed to inline theme-init.js`,e.message)}try{let e=await c(r.join(t,`service-worker/init.js`),`utf8`);n=n.replace(/<script\b[^>]*?src="(?:\/)?service-worker\/init\.js"[^>]*?><\/script>/iu,()=>`<script type="module">${e}<\/script>`)}catch(e){console.warn(`Failed to inline service-worker/init.js`,e.message)}return n}function ce(e){if(!e||typeof e!=`string`)return e;let t=[],n=e.replace(/<pre\b[^>]*>[\s\S]*?<\/pre>|<textarea\b[^>]*>[\s\S]*?<\/textarea>/gi,e=>{let n=t.length;return t.push(e),`___PRESERVED_BLOCK_${n}___`}),r=e=>e.replace(/\s+/g,` `).replace(/>\s+</g,`><`).trim();function i(e){let t=/<template\b[^>]*>/gi,n,a=0,o=``;for(;(n=t.exec(e))!==null;){let s=n[0],c=n.index,l=/<\/?template\b[^>]*>/gi;l.lastIndex=c;let u=0,d=!1,f=l.exec(e),p=-1,m=0;for(;f;){if(f[0].toLowerCase().startsWith(`</template`)?--u:(u+=1,d=!0),d&&u===0){p=f.index,m=f[0].length;break}f=l.exec(e)}if(p!==-1){o+=e.slice(a,c);let n=e.slice(c+s.length,p),l=r(i(n));o+=`${s}${l}</template>`,a=p+m,t.lastIndex=a}}return o+=e.slice(a),o}let a=i(n);a=a.replace(/(<template\s+shadowrootmode="?[a-z]+"?[^>]*>)([\s\S]*?)(<\/template>)/gi,(e,t,n,i)=>`${t}${r(n)}${i}`);for(let e=0;e<t.length;e++)a=a.replace(`___PRESERVED_BLOCK_${e}___`,()=>t[e]);return a}async function le(e={}){let t=r.resolve(e.indexPath||`dist/public/index.html`),n=r.resolve(e.sourcePath||`pages/main`),i=r.resolve(e.skillsSourcePath||r.join(r.dirname(n),`..`,`.agents`,`skills`,`main`)),l=r.resolve(e.toolsSourcePath||r.join(r.dirname(n),`..`,`.agents`,`tools`,`main`)),f=r.resolve(e.publicDir||r.dirname(t)),p=O(e.prerenderPages===void 0?e.noSeed?0:a.env.PRERENDER_PAGES??1:e.prerenderPages),m={},h=[e.siteConfigPath,r.resolve(`site-config.json`)].filter(Boolean);for(let e of h)try{let t=await c(r.resolve(e),`utf8`);m=JSON.parse(t);break}catch{}let g=e.sortOrder||m?.pages?.sortOrder||`desc`,_=r.join(f,`components/shadow-claw/shadow-claw.html`),v=r.join(f,`components/shadow-claw-pages/shadow-claw-pages.html`),y=r.join(f,`components/shadow-claw-page-header/shadow-claw-page-header.html`),b=r.join(f,`components/shadow-claw/shadow-claw.css`),x=r.join(f,`components/shadow-claw-pages/shadow-claw-pages.css`),S=r.join(f,`components/shadow-claw-page-header/shadow-claw-page-header.css`),[C,w,T,E,D,k,A,M,ee,te]=await Promise.all([c(t,`utf8`),c(_,`utf8`),c(v,`utf8`).catch(()=>``),c(y,`utf8`).catch(()=>``),R(n,g),z(i),B(l),c(b,`utf8`).catch(()=>``),c(x,`utf8`).catch(()=>``),c(S,`utf8`).catch(()=>``)]),N=await Promise.all(D.map(async e=>{let t=typeof e.inlineContent==`string`?e.inlineContent:await c(e.absolutePath,`utf8`);return{...e,content:t}})),I,L={},H=N.filter(e=>{if(e.displayPath.endsWith(`.md`)&&/^---\r?\n[\s\S]*?slug:\s*"shadow-claw--purge-pages"[\s\S]*?---/mu.test(e.content)){if(ne(L,n,e.displayPath),!I){let t=P(e.content).data[`purge-id`];t!=null&&(I=String(t))}return!1}return!0}),U=H.map(e=>({displayPath:e.displayPath,content:e.content})),W={pages:U},G=await Promise.all(k.filter(e=>!e.isPurgeMarker).map(async e=>({displayPath:e.displayPath,content:await c(e.absolutePath,`utf8`)})));G.length>0&&(W.skills=G);let K=await Promise.all(A.map(async e=>({displayPath:e.displayPath,content:await c(e.absolutePath,`utf8`)})));K.length>0&&(W.tools=K);let q=k.find(e=>e.isPurgeMarker);q?.purgeId&&(W.skillsPurgeId=q.purgeId),Object.keys(L).length>0&&(W.preRenderedStaticPages=L),I&&(W.purgeId=I);let ie=r.join(f,`static-main-manifest.json`);await s(f,{recursive:!0}),await d(ie,JSON.stringify(W,null,2),`utf8`);try{if((await u(n)).isDirectory()){let e=r.join(f,`static-main`);await s(e,{recursive:!0}),await o(n,e,{recursive:!0});let t=r.join(f,`files/main`);await s(t,{recursive:!0}),await o(n,t,{recursive:!0})}}catch{}try{(await u(l)).isDirectory()&&(await s(r.join(f,`tools/main`),{recursive:!0}),await o(l,r.join(f,`tools/main`),{recursive:!0}))}catch{}try{(await u(i)).isDirectory()&&(await s(r.join(f,`skills/main`),{recursive:!0}),await o(i,r.join(f,`skills/main`),{recursive:!0}))}catch{}let J=F(w);if(p===0){let n=oe(J,M,m.sidebar);await d(t,await Q(ce(j(se(Z(C),n),JSON.stringify({pages:[],skills:[]}))),f),`utf8`),(e.silent??a.env.NODE_ENV===`test`)||console.log(`Injected DSD shell into ${t} (pages DSD disabled).`);return}let Y=[],le=[];p===`all`?(Y=H,le=U):typeof p==`number`&&(Y=H.slice(0,p),le=U.slice(0,p));let ue=F(T),de=F(E),fe;if(H.length===0)fe=X(J,ae(ue,ee),M,m.sidebar);else{let e=H[0],t=P(e.content),n=t.data&&t.data.title?t.data.title:``,r=await V(e.content,e.absolutePath||e.displayPath);fe=X(J,re(ue,Y,r,de,n,ee,te),M,m.sidebar)}let pe=Z(se(C,fe)),$={pages:le};G.length>0&&($.skills=G),K.length>0&&($.tools=K),q?.purgeId&&($.skillsPurgeId=q.purgeId),Object.keys(L).length>0&&($.preRenderedStaticPages=L),I&&($.purgeId=I),await d(t,await Q(ce(j(pe,JSON.stringify($))),f),`utf8`),(e.silent??a.env.NODE_ENV===`test`)||console.log(`Injected DSD shell into ${t} from ${n} (${Y.length} of ${D.length} page${D.length===1?``:`s`} prerendered).`)}async function ue(){let e=a.argv.slice(2).filter(e=>!e.startsWith(`--`)),t=a.argv.slice(2).filter(e=>e.startsWith(`--`)),n=t.includes(`--no-seed`),r;for(let e of t)e.startsWith(`--prerender-pages=`)?r=e.slice(18):e.startsWith(`--pages=`)&&(r=e.slice(8));let[i=`dist/public/index.html`,o=`pages/main`]=e;await le({indexPath:i,sourcePath:o,noSeed:n,prerenderPages:r})}a.argv[1]&&r.resolve(a.argv[1])===r.resolve(i(import.meta.url))&&ue().catch(e=>{console.error(e),a.exit(1)});export{O as C,T as E,k as S,E as T,V as _,oe as a,j as b,B as c,se as d,Q as f,le as g,ce as h,X as i,F as l,Z as m,q as n,R as o,I as p,re as r,z as s,Y as t,K as u,L as v,D as w,A as x,P as y};
@@ -1,4 +1,4 @@
1
- import{t as e}from"./chunk-C5PuRV08.js";import t from"node:fs";import n from"node:path";import r from"node:process";import{access as i,constants as a,mkdir as o,mkdtemp as s,readFile as c,writeFile as l}from"node:fs/promises";import{tmpdir as u}from"node:os";import d from"node:readline/promises";import f from"node:tty";function p(){let e=r.emitWarning;if(!e||e.__suppressed)return;let t=function(t,...n){if(!(typeof t==`string`&&(n[0]===`ExperimentalWarning`||t.includes(`ExperimentalWarning`)||t.includes(`SQLite`)))&&!(t&&typeof t==`object`&&(t.name===`ExperimentalWarning`||typeof t.message==`string`&&t.message.includes(`SQLite`))))return e.call(r,t,...n)};t.__suppressed=!0,r.emitWarning=t}p();const m=[`shadow-claw.config.json`,`shadow-claw-config.json`,`shadowclaw.config.json`,`site-config.json`];async function h(e){try{return await i(e,a.F_OK),!0}catch{return!1}}async function g(e,t){let r=[];if(e&&r.push(n.resolve(e)),t){let e=n.resolve(t);r.includes(e)||r.push(e)}if(e&&n.basename(n.resolve(e))===`.cache`){let t=n.dirname(n.resolve(e));r.includes(t)||r.push(t)}for(let e of r)for(let t of m){let r=n.join(e,t);if(await h(r))try{let e=await c(r,`utf8`),t=JSON.parse(e);if(t&&typeof t==`object`)return{configPath:r,config:t}}catch{}}return null}function _(){return n.join(u(),`shadow-claw`)}function v(e){let i=n.resolve(e||r.cwd()),a=[n.join(i,`shadow-claw-config.json`),n.join(i,`shadow-claw.config.json`),n.join(i,`shadowclaw.config.json`),n.join(i,`pages`,`shadow-claw-config.json`),n.join(i,`pages`,`shadow-claw.config.json`),n.join(i,`site-config.json`),n.join(i,`pages`,`site-config.json`)];for(let e of a)if(t.existsSync(e))try{let r=t.readFileSync(e,`utf8`),a=JSON.parse(r);if(a&&typeof a.cacheDir==`string`&&a.cacheDir.trim())return n.resolve(i,a.cacheDir.trim());if(a&&a.server&&typeof a.server.cacheDir==`string`&&a.server.cacheDir.trim())return n.resolve(i,a.server.cacheDir.trim())}catch{}return null}function y(e,i=`.cache`){let a=n.resolve(e||r.cwd()),o=n.join(a,i),s=n.join(o,`database`),c=[o,n.join(o,`control-token.json`),n.join(o,`cli-peer-id`),s,n.join(s,`clients.db`),n.join(s,`agent.db`),n.join(s,`scheduled-tasks.db`),n.join(s,`push-subscriptions.db`),n.join(a,`database`,`clients.db`),n.join(a,`database`,`agent.db`)];for(let e of c)if(t.existsSync(e))return!0;return!1}async function b({contentRoot:e,stdin:i=r.stdin,stdout:a=r.stdout,onExit:o=e=>r.exit(e)}={}){let s=n.resolve(e||r.cwd()),c=n.join(s,`.cache`),l=_(),u=i,p=a,m=!1,h=null;if(i===r.stdin&&!r.stdin.isTTY&&!r.env.CI&&(r.stderr.isTTY||r.stdout.isTTY))try{let e=r.platform===`win32`?`CONIN$`:`/dev/tty`;h=t.openSync(e,`r`),u=new f.ReadStream(h),p=r.stderr.isTTY?r.stderr:r.stdout,m=!0}catch{try{let e=r.platform===`win32`?`CONIN$`:`/dev/tty`;u=t.createReadStream(e),p=r.stderr.isTTY?r.stderr:r.stdout,m=!0}catch{}}let g=d.createInterface({input:u,output:p}),v=!1,y=()=>{if(!v){v=!0,p.write(`
1
+ import{t as e}from"./chunk-BLMC1Bxv.js";import t from"node:fs";import n from"node:path";import r from"node:process";import{access as i,constants as a,mkdir as o,mkdtemp as s,readFile as c,writeFile as l}from"node:fs/promises";import{tmpdir as u}from"node:os";import d from"node:readline/promises";import f from"node:tty";function p(){let e=r.emitWarning;if(!e||e.__suppressed)return;let t=function(t,...n){if(!(typeof t==`string`&&(n[0]===`ExperimentalWarning`||t.includes(`ExperimentalWarning`)||t.includes(`SQLite`)))&&!(t&&typeof t==`object`&&(t.name===`ExperimentalWarning`||typeof t.message==`string`&&t.message.includes(`SQLite`))))return e.call(r,t,...n)};t.__suppressed=!0,r.emitWarning=t}p();const m=[`shadow-claw.config.json`,`shadow-claw-config.json`,`shadowclaw.config.json`,`site-config.json`];async function h(e){try{return await i(e,a.F_OK),!0}catch{return!1}}async function g(e,t){let r=[];if(e&&r.push(n.resolve(e)),t){let e=n.resolve(t);r.includes(e)||r.push(e)}if(e&&n.basename(n.resolve(e))===`.cache`){let t=n.dirname(n.resolve(e));r.includes(t)||r.push(t)}for(let e of r)for(let t of m){let r=n.join(e,t);if(await h(r))try{let e=await c(r,`utf8`),t=JSON.parse(e);if(t&&typeof t==`object`)return{configPath:r,config:t}}catch{}}return null}function _(){return n.join(u(),`shadow-claw`)}function v(e){let i=n.resolve(e||r.cwd()),a=[n.join(i,`shadow-claw-config.json`),n.join(i,`shadow-claw.config.json`),n.join(i,`shadowclaw.config.json`),n.join(i,`pages`,`shadow-claw-config.json`),n.join(i,`pages`,`shadow-claw.config.json`),n.join(i,`site-config.json`),n.join(i,`pages`,`site-config.json`)];for(let e of a)if(t.existsSync(e))try{let r=t.readFileSync(e,`utf8`),a=JSON.parse(r);if(a&&typeof a.cacheDir==`string`&&a.cacheDir.trim())return n.resolve(i,a.cacheDir.trim());if(a&&a.server&&typeof a.server.cacheDir==`string`&&a.server.cacheDir.trim())return n.resolve(i,a.server.cacheDir.trim())}catch{}return null}function y(e,i=`.cache`){let a=n.resolve(e||r.cwd()),o=n.join(a,i),s=n.join(o,`database`),c=[o,n.join(o,`control-token.json`),n.join(o,`cli-peer-id`),s,n.join(s,`clients.db`),n.join(s,`agent.db`),n.join(s,`scheduled-tasks.db`),n.join(s,`push-subscriptions.db`),n.join(a,`database`,`clients.db`),n.join(a,`database`,`agent.db`)];for(let e of c)if(t.existsSync(e))return!0;return!1}async function b({contentRoot:e,stdin:i=r.stdin,stdout:a=r.stdout,onExit:o=e=>r.exit(e)}={}){let s=n.resolve(e||r.cwd()),c=n.join(s,`.cache`),l=_(),u=i,p=a,m=!1,h=null;if(i===r.stdin&&!r.stdin.isTTY&&!r.env.CI&&(r.stderr.isTTY||r.stdout.isTTY))try{let e=r.platform===`win32`?`CONIN$`:`/dev/tty`;h=t.openSync(e,`r`),u=new f.ReadStream(h),p=r.stderr.isTTY?r.stderr:r.stdout,m=!0}catch{try{let e=r.platform===`win32`?`CONIN$`:`/dev/tty`;u=t.createReadStream(e),p=r.stderr.isTTY?r.stderr:r.stdout,m=!0}catch{}}let g=d.createInterface({input:u,output:p}),v=!1,y=()=>{if(!v){v=!0,p.write(`
2
2
  Operation cancelled.
3
3
  `);try{g.close()}catch{}o(130)}};g.on(`SIGINT`,y),u&&typeof u.on==`function`&&u!==r.stdin&&u.on(`SIGINT`,y);let b=()=>y();r.on(`SIGINT`,b);let x=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&y()};u&&typeof u.on==`function`&&u.on(`data`,x);try{p.write(`
4
4
  ShadowClaw needs a directory to store cache and database files:
@@ -11,10 +11,10 @@ ShadowClaw needs a directory to store cache and database files:
11
11
  `),a.write(`Tip: You can pass --tmp, --cache-dir <dir>, set SHADOWCLAW_TMP=1, SHADOWCLAW_CACHE_DIR=<dir>, or configure "cacheDir" in shadow-claw.config.json to skip this prompt.
12
12
 
13
13
  `);let e=(await g.question(`Enter choice [1-3] or a directory path (default: 1): `)).trim();if(!e||e===`1`||e.toLowerCase()===`y`||e.toLowerCase()===`yes`)return a.write(`Using current directory cache: ${c}\n\n`),c;if(e===`2`||e.toLowerCase()===`tmp`||e.toLowerCase()===`temp`||e.toLowerCase()===`t`)return a.write(`Using temporary directory: ${l}\n\n`),l;if(e.toLowerCase()===`n`||e.toLowerCase()===`no`){let e=(await g.question(`Use temporary directory (${l}) instead? (Y/n): `)).trim();return e.toLowerCase()===`n`||e.toLowerCase()===`no`?(a.write(`Operation cancelled.
14
- `),o(0),l):(a.write(`Using temporary directory: ${l}\n\n`),l)}if(e===`3`||e.toLowerCase()===`c`||e.toLowerCase()===`custom`){let e=(await g.question(`Enter custom directory path: `)).trim();if(!e)return a.write(`Using current directory cache: ${c}\n\n`),c;let t=n.resolve(s,e);return a.write(`Using custom directory: ${t}\n\n`),t}let t=n.resolve(s,e);return p.write(`Using directory: ${t}\n\n`),t}finally{r.removeListener(`SIGINT`,b),u&&typeof u.removeListener==`function`&&(u!==r.stdin&&u.removeListener(`SIGINT`,y),u.removeListener(`data`,x));try{g.close()}catch{}if(m){if(u&&typeof u.destroy==`function`)try{u.destroy()}catch{}if(h!=null)try{t.closeSync(h)}catch{}}}}async function x(e={}){let t=n.resolve(e.contentRoot||r.cwd());if(e.tmp||e.temp||[`1`,`true`,`yes`].includes((r.env.SHADOWCLAW_TMP||r.env.SHADOWCLAW_TEMP||``).toLowerCase().trim())){let r=_();return{cacheDir:r,databaseDir:e.databaseDir?n.resolve(t,e.databaseDir):n.join(r,`database`)}}let i=(e.cacheDir||r.env.SHADOWCLAW_CACHE_DIR||``).trim();if(i){let r=n.resolve(t,i);return{cacheDir:r,databaseDir:e.databaseDir?n.resolve(t,e.databaseDir):n.join(r,`database`)}}let a=(e.databaseDir||r.env.SHADOWCLAW_DATABASE_DIR||``).trim();if(a){let e=n.resolve(t,a);return{cacheDir:n.basename(e)===`database`?n.dirname(e):n.resolve(e,`..`),databaseDir:e}}let o=v(t);if(o)return{cacheDir:o,databaseDir:n.join(o,`database`)};let s=y(t),c=n.join(t,`.cache`),l=n.join(c,`database`);if(s||e.yes||e.y||[`1`,`true`,`yes`].includes((r.env.SHADOWCLAW_YES||``).toLowerCase().trim()))return{cacheDir:c,databaseDir:l};let u=e.stdin?!!e.stdin.isTTY:!!r.stdin.isTTY,d=!e.stdin&&!r.stdin.isTTY&&!!(r.stderr.isTTY||r.stdout.isTTY),f=e.isTTY===void 0?u||d:!!e.isTTY,p=e.isCI===void 0?e.isTTY===void 0&&!!(r.env.CI&&![`0`,`false`].includes(r.env.CI.toLowerCase())):!!e.isCI;if(!f||p||e.quiet)return{cacheDir:c,databaseDir:l};let m=await b({contentRoot:t,stdin:e.stdin,stdout:e.stdout,onExit:e.onExit});return{cacheDir:m,databaseDir:n.join(m,`database`)}}function S(e,t,n){if(!n||typeof e?.executeNativeAiTask!=`function`)return;let{id:r,groupId:i,taskType:a,input:o}=n;return e.executeNativeAiTask({taskType:a,input:o,groupId:i,db:t}).then(e=>{let t=globalThis.pendingNativeAiResolvers;t&&t[r]&&(t[r].resolve(e),delete t[r])}).catch(e=>{let t=globalThis.pendingNativeAiResolvers;t&&t[r]&&(t[r].reject(e),delete t[r])})}async function C(t={}){let i=t.core||await e();i.setHeadlessMode(!0);let a,c;if(t.workspace)a=n.resolve(t.workspace),c=t.databaseDir?n.resolve(t.databaseDir):t.cacheDir?n.resolve(t.cacheDir,`database`):n.resolve(a,`database`);else{let e=await x({contentRoot:r.cwd(),cacheDir:t.cacheDir,databaseDir:t.databaseDir,tmp:t.tmp||t.temp,yes:t.yes||t.y,quiet:t.quiet,isTTY:t.isTTY,stdin:t.stdin,stdout:t.stdout}),i=n.join(u(),`shadow-claw`);await o(i,{recursive:!0}),a=await s(n.join(i,`workspace-`)),c=e.databaseDir}await o(a,{recursive:!0}),await o(c,{recursive:!0});let l=n.join(c,`agent.db`),d=i.openSqliteDatabase(l);i.setDB(d),i.setStorageRootFromPath(a);let f=(await g(a))?.config||{},p=f.settings||{},m=t.internetAccess??t.allowInternet??p.internetAccess??p.vm_bash_full_internet_access??p.fullInternetAccess??f.internetAccess;if(m!==void 0&&typeof i.setConfig==`function`){let e=i.CONFIG_KEYS?.VM_BASH_FULL_INTERNET_ACCESS||`vm_bash_full_internet_access`;await i.setConfig(d,e,m?`true`:`false`)}let h={response:e=>{!t.quiet&&e.payload?.text&&console.log(e.payload.text)},error:e=>{!t.quiet&&e.payload?.error&&console.error(`Error: ${e.payload.error}`)},"tool-activity":e=>{!t.quiet&&t.verbose&&e.payload&&console.log(`[Tool] ${e.payload.tool} (${e.payload.status||`executing`})`)},"thinking-log":e=>{if(!t.quiet&&t.verbose&&e.payload){let t=e.payload.label||e.payload.level||`Log`;console.log(`[${t}] ${e.payload.message||``}`)}},"request-native-ai-task":e=>{S(i,d,e.payload)}};return i.setPostHandler(e=>{h[e.type]?.(e)}),{db:d,workspaceDir:a,dbPath:l,core:i}}function w(e={}){let{force:t=!1,stdin:n=r.stdin,timeoutMs:i}=e,a=n;return!t&&a?.isTTY?Promise.resolve(null):new Promise((e,t)=>{let n=[],r=!1,o;i!=null&&i>0&&(o=setTimeout(()=>{r=!0,typeof a?.destroy==`function`&&a.destroy(),e(null)},i)),typeof a?.setEncoding==`function`&&a.setEncoding(`utf8`),a.on(`data`,e=>{r||n.push(typeof e==`string`?e:e.toString(`utf8`))}),a.on(`end`,()=>{if(o&&clearTimeout(o),r)return;let t=n.join(``).trim();e(t.length>0?t:null)}),a.on(`error`,e=>{o&&clearTimeout(o),!r&&t(e)})})}function T(e,t){let n=t&&typeof t==`object`?Object.keys(t.properties||{}):[];for(let t of[`text`,`prompt`,`content`,`input`])if(n.includes(t))return{[t]:e};return{input:e}}const E=new Set([`ask_user`,`attach_file_to_chat`,`clear_chat`,`create_room`,`invite_to_room`,`leave_room`,`list_components`,`list_room_members`,`open_file`,`render_component`,`send_file`,`show_toast`,`send_notification`,`spawn_subagent`]),D=`server:main`;async function O(e={}){let t;if(e.workspace)t=n.resolve(e.workspace);else{let e=n.join(u(),`shadow-claw`);await o(e,{recursive:!0}),t=await s(n.join(e,`workspace-`))}let i=n.join(t,`.agents`,`skills`),a=n.join(t,`.agents`,`tools`),c=n.join(t,`database`);await o(t,{recursive:!0}),await o(i,{recursive:!0}),await o(a,{recursive:!0}),await o(c,{recursive:!0});let d=e.provider,f=e.model,p=e.stdin?!!e.stdin.isTTY:!!r.stdin.isTTY,m=!e.stdin&&!r.stdin.isTTY&&!!(r.stderr.isTTY||r.stdout.isTTY),h=e.isTTY===void 0?p||m:!!e.isTTY,_=e.isCI===void 0?e.isTTY===void 0&&!!(r.env.CI&&![`0`,`false`].includes(r.env.CI.toLowerCase())):!!e.isCI,v=h&&!_&&!e.quiet&&!e.yes&&!e.y;if(!d&&!f&&v){let{promptForAgentModel:n}=await import(`./chunk-Drr0VSGA2.js`),i=await n({workspaceDir:t,contentRoot:r.cwd(),cacheDir:e.cacheDir,stdin:e.stdin,stdout:e.stdout,quiet:e.quiet,isTTY:h});d=i.providerId,f=i.model}if(d||=`transformers_js_local`,!f){let{DEFAULT_LOCAL_MODEL:e}=await import(`./chunk-Drr0VSGA2.js`);f=d===`transformers_js_local`?e:`openrouter/free`}if(await g(t)||await l(n.join(t,`shadow-claw.config.json`),JSON.stringify({$schema:`https://json-schema.org/draft/2020-12/schema`,site:{title:`ShadowClaw Agent Workspace`,description:`Headless CLI agent workspace`},settings:{defaultProvider:`openrouter`,defaultModel:`openrouter/free`},agent:{defaultProvider:d,defaultModel:f}},null,2)+`
15
- `,`utf8`),e.download&&(d===`transformers_js_local`||d===`llamafile`)){let{downloadLocalModel:t}=await import(`./chunk-Drr0VSGA2.js`);await t(f,{cacheDir:e.cacheDir,verbose:e.verbose,isTTY:e.isTTY})}return await C({workspace:t,quiet:!0}),{success:!0,workspace:t}}async function k(e={}){let{db:t,core:n}=await C(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||D,i=await n.discoverSkills(t,r);return{skills:i.skills,diagnostics:i.diagnostics}}async function A(e={}){let{db:t,core:n}=await C(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||D,i=null;if(e.toolsProfile||e.profile){let r=String(e.toolsProfile||e.profile).trim().toLowerCase(),a=n.DEFAULT_BUILTIN_PROFILE||null,o=[];if(typeof n.getConfig==`function`)try{let e=await n.getConfig(t,n.CONFIG_KEYS?.TOOL_PROFILES||`tool_profiles`);typeof e==`string`?o=JSON.parse(e):Array.isArray(e)&&(o=e)}catch{}let s=[a,...o].filter(Boolean).find(e=>e.id&&String(e.id).toLowerCase()===r||e.name&&String(e.name).toLowerCase()===r);s&&(i=new Set(s.enabledToolNames||[]))}let a=[...n.TOOL_DEFINITIONS||[]];if(typeof n.loadDeclarativeTools==`function`)try{let e=await n.loadDeclarativeTools(t,r);if(e&&Array.isArray(e.tools))for(let t of e.tools)a.some(e=>e.name===t.name)||a.push(t)}catch{}return{tools:a.map(e=>({name:e.name,description:e.description,headlessSafe:!E.has(e.name),...i?{enabled:i.has(e.name)}:{}}))}}async function j(e,t,i={}){let{db:a,workspaceDir:o,core:s}=await C(i),c=i.group||s.DEFAULT_SERVER_GROUP_ID||D,u=(s.TOOL_DEFINITIONS||[]).find(t=>t.name===e);if(!u&&typeof s.loadDeclarativeTools==`function`)try{u=(await s.loadDeclarativeTools(a,c)).tools.find(t=>t.name===e)}catch{}if(!u){let t=`Error: Tool "${e}" not found.`;return i.quiet||console.error(t),r.exitCode=1,{success:!1,error:t}}let d=!E.has(u.name),f=t??i.input;if(f===`-`&&(f=void 0),f==null&&i._stdinData!=null){let e=i._stdinData,t;try{t=JSON.parse(e)}catch{t=T(e,u.input_schema)}f=t}if(f!=null){let t={};if(typeof f==`string`)try{t=JSON.parse(f)}catch(e){let t=`Error: Failed to parse input JSON: ${e.message}`;return i.quiet||console.error(t),r.exitCode=1,{success:!1,error:t}}else typeof f==`object`&&(t=f);let p;try{let e=await N(a,s,o,{...i,interactive:!1});p={db:a,provider:e.providerId,model:e.model,apiKey:e.apiKey}}catch{}try{let o=await s.executeTool(a,e,t,c,{invokeContext:p}),f=typeof o==`string`?o:JSON.stringify(o,null,2);return i.output?(await l(n.resolve(i.output),f,`utf8`),i.quiet||r.stderr.write(`Output written to ${i.output}\n`)):i.quiet||r.stdout.write(f+`
14
+ `),o(0),l):(a.write(`Using temporary directory: ${l}\n\n`),l)}if(e===`3`||e.toLowerCase()===`c`||e.toLowerCase()===`custom`){let e=(await g.question(`Enter custom directory path: `)).trim();if(!e)return a.write(`Using current directory cache: ${c}\n\n`),c;let t=n.resolve(s,e);return a.write(`Using custom directory: ${t}\n\n`),t}let t=n.resolve(s,e);return p.write(`Using directory: ${t}\n\n`),t}finally{r.removeListener(`SIGINT`,b),u&&typeof u.removeListener==`function`&&(u!==r.stdin&&u.removeListener(`SIGINT`,y),u.removeListener(`data`,x));try{g.close()}catch{}if(m){if(u&&typeof u.destroy==`function`)try{u.destroy()}catch{}if(h!=null)try{t.closeSync(h)}catch{}}}}async function x(e={}){let t=n.resolve(e.contentRoot||r.cwd());if(e.tmp||e.temp||[`1`,`true`,`yes`].includes((r.env.SHADOWCLAW_TMP||r.env.SHADOWCLAW_TEMP||``).toLowerCase().trim())){let r=_();return{cacheDir:r,databaseDir:e.databaseDir?n.resolve(t,e.databaseDir):n.join(r,`database`)}}let i=(e.cacheDir||r.env.SHADOWCLAW_CACHE_DIR||``).trim();if(i){let r=n.resolve(t,i);return{cacheDir:r,databaseDir:e.databaseDir?n.resolve(t,e.databaseDir):n.join(r,`database`)}}let a=(e.databaseDir||r.env.SHADOWCLAW_DATABASE_DIR||``).trim();if(a){let e=n.resolve(t,a);return{cacheDir:n.basename(e)===`database`?n.dirname(e):n.resolve(e,`..`),databaseDir:e}}let o=v(t);if(o)return{cacheDir:o,databaseDir:n.join(o,`database`)};let s=y(t),c=n.join(t,`.cache`),l=n.join(c,`database`);if(s||e.yes||e.y||[`1`,`true`,`yes`].includes((r.env.SHADOWCLAW_YES||``).toLowerCase().trim()))return{cacheDir:c,databaseDir:l};let u=e.stdin?!!e.stdin.isTTY:!!r.stdin.isTTY,d=!e.stdin&&!r.stdin.isTTY&&!!(r.stderr.isTTY||r.stdout.isTTY),f=e.isTTY===void 0?u||d:!!e.isTTY,p=e.isCI===void 0?e.isTTY===void 0&&!!(r.env.CI&&![`0`,`false`].includes(r.env.CI.toLowerCase())):!!e.isCI;if(!f||p||e.quiet)return{cacheDir:c,databaseDir:l};let m=await b({contentRoot:t,stdin:e.stdin,stdout:e.stdout,onExit:e.onExit});return{cacheDir:m,databaseDir:n.join(m,`database`)}}function S(e,t,n){if(!n||typeof e?.executeNativeAiTask!=`function`)return;let{id:r,groupId:i,taskType:a,input:o}=n;return e.executeNativeAiTask({taskType:a,input:o,groupId:i,db:t}).then(e=>{let t=globalThis.pendingNativeAiResolvers;t&&t[r]&&(t[r].resolve(e),delete t[r])}).catch(e=>{let t=globalThis.pendingNativeAiResolvers;t&&t[r]&&(t[r].reject(e),delete t[r])})}async function C(t={}){let i=t.core||await e();i.setHeadlessMode(!0);let a,c;if(t.workspace)a=n.resolve(t.workspace),c=t.databaseDir?n.resolve(t.databaseDir):t.cacheDir?n.resolve(t.cacheDir,`database`):n.resolve(a,`database`);else{let e=await x({contentRoot:r.cwd(),cacheDir:t.cacheDir,databaseDir:t.databaseDir,tmp:t.tmp||t.temp,yes:t.yes||t.y,quiet:t.quiet,isTTY:t.isTTY,stdin:t.stdin,stdout:t.stdout}),i=n.join(u(),`shadow-claw`);await o(i,{recursive:!0}),a=await s(n.join(i,`workspace-`)),c=e.databaseDir}await o(a,{recursive:!0}),await o(c,{recursive:!0});let l=n.join(c,`agent.db`),d=i.openSqliteDatabase(l);i.setDB(d),i.setStorageRootFromPath(a);let f=(await g(a))?.config||{},p=f.settings||{},m=t.internetAccess??t.allowInternet??p.internetAccess??p.vm_bash_full_internet_access??p.fullInternetAccess??f.internetAccess;if(m!==void 0&&typeof i.setConfig==`function`){let e=i.CONFIG_KEYS?.VM_BASH_FULL_INTERNET_ACCESS||`vm_bash_full_internet_access`;await i.setConfig(d,e,m?`true`:`false`)}let h={response:e=>{!t.quiet&&e.payload?.text&&console.log(e.payload.text)},error:e=>{!t.quiet&&e.payload?.error&&console.error(`Error: ${e.payload.error}`)},"tool-activity":e=>{!t.quiet&&t.verbose&&e.payload&&console.log(`[Tool] ${e.payload.tool} (${e.payload.status||`executing`})`)},"thinking-log":e=>{if(!t.quiet&&t.verbose&&e.payload){let t=e.payload.label||e.payload.level||`Log`;console.log(`[${t}] ${e.payload.message||``}`)}},"request-native-ai-task":e=>{S(i,d,e.payload)}};return i.setPostHandler(e=>{h[e.type]?.(e)}),{db:d,workspaceDir:a,dbPath:l,core:i}}function w(e={}){let{force:t=!1,stdin:n=r.stdin,timeoutMs:i}=e,a=n;return!t&&a?.isTTY?Promise.resolve(null):new Promise((e,t)=>{let n=[],r=!1,o;i!=null&&i>0&&(o=setTimeout(()=>{r=!0,typeof a?.destroy==`function`&&a.destroy(),e(null)},i)),typeof a?.setEncoding==`function`&&a.setEncoding(`utf8`),a.on(`data`,e=>{r||n.push(typeof e==`string`?e:e.toString(`utf8`))}),a.on(`end`,()=>{if(o&&clearTimeout(o),r)return;let t=n.join(``).trim();e(t.length>0?t:null)}),a.on(`error`,e=>{o&&clearTimeout(o),!r&&t(e)})})}function T(e,t){let n=t&&typeof t==`object`?Object.keys(t.properties||{}):[];for(let t of[`text`,`prompt`,`content`,`input`])if(n.includes(t))return{[t]:e};return{input:e}}const E=new Set([`ask_user`,`attach_file_to_chat`,`clear_chat`,`create_room`,`invite_to_room`,`leave_room`,`list_components`,`list_room_members`,`open_file`,`render_component`,`send_file`,`show_toast`,`send_notification`,`spawn_subagent`]),D=`server:main`;async function O(e={}){let t;if(e.workspace)t=n.resolve(e.workspace);else{let e=n.join(u(),`shadow-claw`);await o(e,{recursive:!0}),t=await s(n.join(e,`workspace-`))}let i=n.join(t,`.agents`,`skills`),a=n.join(t,`.agents`,`tools`),c=n.join(t,`database`);await o(t,{recursive:!0}),await o(i,{recursive:!0}),await o(a,{recursive:!0}),await o(c,{recursive:!0});let d=e.provider,f=e.model,p=e.stdin?!!e.stdin.isTTY:!!r.stdin.isTTY,m=!e.stdin&&!r.stdin.isTTY&&!!(r.stderr.isTTY||r.stdout.isTTY),h=e.isTTY===void 0?p||m:!!e.isTTY,_=e.isCI===void 0?e.isTTY===void 0&&!!(r.env.CI&&![`0`,`false`].includes(r.env.CI.toLowerCase())):!!e.isCI,v=h&&!_&&!e.quiet&&!e.yes&&!e.y;if(!d&&!f&&v){let{promptForAgentModel:n}=await import(`./chunk-BKnTOLLS2.js`),i=await n({workspaceDir:t,contentRoot:r.cwd(),cacheDir:e.cacheDir,stdin:e.stdin,stdout:e.stdout,quiet:e.quiet,isTTY:h});d=i.providerId,f=i.model}if(d||=`transformers_js_local`,!f){let{DEFAULT_LOCAL_MODEL:e}=await import(`./chunk-BKnTOLLS2.js`);f=d===`transformers_js_local`?e:`openrouter/free`}if(await g(t)||await l(n.join(t,`shadow-claw.config.json`),JSON.stringify({$schema:`https://json-schema.org/draft/2020-12/schema`,site:{title:`ShadowClaw Agent Workspace`,description:`Headless CLI agent workspace`},settings:{defaultProvider:`openrouter`,defaultModel:`openrouter/free`},agent:{defaultProvider:d,defaultModel:f}},null,2)+`
15
+ `,`utf8`),e.download&&(d===`transformers_js_local`||d===`llamafile`)){let{downloadLocalModel:t}=await import(`./chunk-BKnTOLLS2.js`);await t(f,{cacheDir:e.cacheDir,verbose:e.verbose,isTTY:e.isTTY})}return await C({workspace:t,quiet:!0}),{success:!0,workspace:t}}async function k(e={}){let{db:t,core:n}=await C(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||D,i=await n.discoverSkills(t,r);return{skills:i.skills,diagnostics:i.diagnostics}}async function A(e={}){let{db:t,core:n}=await C(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||D,i=null;if(e.toolsProfile||e.profile){let r=String(e.toolsProfile||e.profile).trim().toLowerCase(),a=n.DEFAULT_BUILTIN_PROFILE||null,o=[];if(typeof n.getConfig==`function`)try{let e=await n.getConfig(t,n.CONFIG_KEYS?.TOOL_PROFILES||`tool_profiles`);typeof e==`string`?o=JSON.parse(e):Array.isArray(e)&&(o=e)}catch{}let s=[a,...o].filter(Boolean).find(e=>e.id&&String(e.id).toLowerCase()===r||e.name&&String(e.name).toLowerCase()===r);s&&(i=new Set(s.enabledToolNames||[]))}let a=[...n.TOOL_DEFINITIONS||[]];if(typeof n.loadDeclarativeTools==`function`)try{let e=await n.loadDeclarativeTools(t,r);if(e&&Array.isArray(e.tools))for(let t of e.tools)a.some(e=>e.name===t.name)||a.push(t)}catch{}return{tools:a.map(e=>({name:e.name,description:e.description,headlessSafe:!E.has(e.name),...i?{enabled:i.has(e.name)}:{}}))}}async function j(e,t,i={}){let{db:a,workspaceDir:o,core:s}=await C(i),c=i.group||s.DEFAULT_SERVER_GROUP_ID||D,u=(s.TOOL_DEFINITIONS||[]).find(t=>t.name===e);if(!u&&typeof s.loadDeclarativeTools==`function`)try{u=(await s.loadDeclarativeTools(a,c)).tools.find(t=>t.name===e)}catch{}if(!u){let t=`Error: Tool "${e}" not found.`;return i.quiet||console.error(t),r.exitCode=1,{success:!1,error:t}}let d=!E.has(u.name),f=t??i.input;if(f===`-`&&(f=void 0),f==null&&i._stdinData!=null){let e=i._stdinData,t;try{t=JSON.parse(e)}catch{t=T(e,u.input_schema)}f=t}if(f!=null){let t={};if(typeof f==`string`)try{t=JSON.parse(f)}catch(e){let t=`Error: Failed to parse input JSON: ${e.message}`;return i.quiet||console.error(t),r.exitCode=1,{success:!1,error:t}}else typeof f==`object`&&(t=f);let p;try{let e=await N(a,s,o,{...i,interactive:!1});p={db:a,provider:e.providerId,model:e.model,apiKey:e.apiKey}}catch{}try{let o=await s.executeTool(a,e,t,c,{invokeContext:p}),f=typeof o==`string`?o:JSON.stringify(o,null,2);return i.output?(await l(n.resolve(i.output),f,`utf8`),i.quiet||r.stderr.write(`Output written to ${i.output}\n`)):i.quiet||r.stdout.write(f+`
16
16
  `),{success:!0,tool:u,headlessSafe:d,output:o}}catch(t){let n=t instanceof Error?t.message:String(t);return i.quiet||console.error(`Error executing tool "${e}": ${n}`),r.exitCode=1,{success:!1,error:n}}}if(!i.quiet){let e=d?`[headless-safe]`:`[browser-only]`;console.log(`Tool: ${u.name} ${e}\n`),console.log(`Description:\n ${u.description}\n`),u.input_schema&&(console.log(`Parameters (JSON Schema):`),console.log(JSON.stringify(u.input_schema,null,2)),console.log()),console.log(`Usage:`),console.log(` Direct CLI: npx shadow-claw agent tool ${u.name} '<json-input>'`),console.log(` Pipe input: echo '<text>' | npx shadow-claw agent tool ${u.name}`),console.log(` Agent Prompt: npx shadow-claw agent run "<instruction>"
17
- `)}return{success:!0,tool:u,headlessSafe:d}}async function M(e,t={}){let{db:n,core:r}=await C(t),i=t.group||r.DEFAULT_SERVER_GROUP_ID||D,a=await r.loadSkill(n,i,e);if(!a)throw Error(`Skill "${e}" not found in workspace.`);if(a.execution?.type===`tools`&&Array.isArray(a.execution.tools)){let e=a.execution.tools.map(e=>({name:e.name||e.tool,input:e.input||e.arguments||{},suppressOutput:e.suppressOutput})),t=await r.executeToolChain(n,i,e,{isManual:!0});return{success:!0,skill:a,results:t.results,rawOutputs:t.rawOutputs}}return{success:!0,skill:a,message:`Skill "${e}" loaded (no declarative tools defined).`}}async function N(e,t,n,i={}){let a=i.contentRoot,o=await g(n,a),s=o?.config||{},c=s.settings||{},l=s.agent||c.agent||{},u=i.provider||r.env.SHADOW_CLAW_PROVIDER||r.env.SHADOW_CLAW_DEFAULT_PROVIDER;!u&&typeof t.getConfig==`function`&&(u=await t.getConfig(e,t.CONFIG_KEYS?.PROVIDER||`provider`)),u||=l.defaultProvider||l.provider||c.defaultProvider||c.provider||s.defaultProvider;let d=i.stdin?!!i.stdin.isTTY:!!r.stdin.isTTY,f=!i.stdin&&!r.stdin.isTTY&&!!(r.stderr.isTTY||r.stdout.isTTY),p=i.isTTY===void 0?d||f:!!i.isTTY,m=i.isCI===void 0?i.isTTY===void 0&&!!(r.env.CI&&![`0`,`false`].includes(r.env.CI.toLowerCase())):!!i.isCI,h=p&&!m&&!i.quiet&&i.interactive!==!1;if(!u)if(h){let{promptForAgentModel:e}=await import(`./chunk-Drr0VSGA2.js`),t=await e({workspaceDir:n,contentRoot:a,cacheDir:i.cacheDir,stdin:i.stdin,stdout:i.stdout,quiet:i.quiet,isTTY:p,service:i._transformersService});u=t.providerId,i.model=t.model}else u=`openrouter`;let _=typeof t.getProvider==`function`?t.getProvider(u):null;if(!_){let e=`Error: Unknown provider "${u}".`;throw Error(e)}let v;if(i.apiKey!==void 0)v=i.apiKey;else{if(v=r.env.SHADOW_CLAW_API_KEY,!v)switch(u){case`openrouter`:v=r.env.OPENROUTER_API_KEY;break;case`huggingface`:v=r.env.HUGGINGFACE_API_KEY||r.env.HF_TOKEN;break;case`gemini_proxy`:v=r.env.GEMINI_API_KEY;break}!v&&typeof t.getConfig==`function`&&(v=await t.getConfig(e,`api_key:${u}`)||await t.getConfig(e,`apiKey`))}let y=i.model||r.env.SHADOW_CLAW_MODEL||r.env.SHADOW_CLAW_DEFAULT_MODEL||(typeof t.getConfig==`function`?await t.getConfig(e,t.CONFIG_KEYS?.MODEL||`model`):null)||l.defaultModel||l.model||c.defaultModel||c.model||s.defaultModel||_?.defaultModel||(u===`transformers_js_local`?(await import(`./chunk-Drr0VSGA2.js`)).DEFAULT_LOCAL_MODEL:`default`);if(u===`transformers_js_local`||u===`llamafile`){let{isModelLocallyCached:e,downloadLocalModel:t}=await import(`./chunk-Drr0VSGA2.js`);if(!e(y,i.cacheDir)){let e=i.stdout||r.stderr;if(i.download)i.quiet||e.write(`\nDownloading ${y} from Hugging Face...\n`),await t(y,{cacheDir:i.cacheDir,stream:e,isTTY:p,service:i._transformersService,progress:i.progress!==!1&&!i.noProgress,verbose:i.verbose});else if(h){let n=await import(`node:readline/promises`),a=await import(`node:tty`),o=await import(`node:fs`),s=i.stdin||r.stdin,c=e,l=!1,u=null;if(s===r.stdin&&!r.stdin.isTTY&&!r.env.CI&&(r.stderr.isTTY||r.stdout.isTTY))try{let e=r.platform===`win32`?`CONIN$`:`/dev/tty`;u=o.openSync(e,`r`),s=new a.ReadStream(u),c=r.stderr.isTTY?r.stderr:r.stdout,l=!0}catch{try{let e=r.platform===`win32`?`CONIN$`:`/dev/tty`;s=o.createReadStream(e),c=r.stderr.isTTY?r.stderr:r.stdout,l=!0}catch{}}let d=n.createInterface({input:s,output:c}),f=!1,m=()=>{if(!f){f=!0,c.write(`
17
+ `)}return{success:!0,tool:u,headlessSafe:d}}async function M(e,t={}){let{db:n,core:r}=await C(t),i=t.group||r.DEFAULT_SERVER_GROUP_ID||D,a=await r.loadSkill(n,i,e);if(!a)throw Error(`Skill "${e}" not found in workspace.`);if(a.execution?.type===`tools`&&Array.isArray(a.execution.tools)){let e=a.execution.tools.map(e=>({name:e.name||e.tool,input:e.input||e.arguments||{},suppressOutput:e.suppressOutput})),t=await r.executeToolChain(n,i,e,{isManual:!0});return{success:!0,skill:a,results:t.results,rawOutputs:t.rawOutputs}}return{success:!0,skill:a,message:`Skill "${e}" loaded (no declarative tools defined).`}}async function N(e,t,n,i={}){let a=i.contentRoot,o=await g(n,a),s=o?.config||{},c=s.settings||{},l=s.agent||c.agent||{},u=i.provider||r.env.SHADOW_CLAW_PROVIDER||r.env.SHADOW_CLAW_DEFAULT_PROVIDER;!u&&typeof t.getConfig==`function`&&(u=await t.getConfig(e,t.CONFIG_KEYS?.PROVIDER||`provider`)),u||=l.defaultProvider||l.provider||c.defaultProvider||c.provider||s.defaultProvider;let d=i.stdin?!!i.stdin.isTTY:!!r.stdin.isTTY,f=!i.stdin&&!r.stdin.isTTY&&!!(r.stderr.isTTY||r.stdout.isTTY),p=i.isTTY===void 0?d||f:!!i.isTTY,m=i.isCI===void 0?i.isTTY===void 0&&!!(r.env.CI&&![`0`,`false`].includes(r.env.CI.toLowerCase())):!!i.isCI,h=p&&!m&&!i.quiet&&i.interactive!==!1;if(!u)if(h){let{promptForAgentModel:e}=await import(`./chunk-BKnTOLLS2.js`),t=await e({workspaceDir:n,contentRoot:a,cacheDir:i.cacheDir,stdin:i.stdin,stdout:i.stdout,quiet:i.quiet,isTTY:p,service:i._transformersService});u=t.providerId,i.model=t.model}else u=`openrouter`;let _=typeof t.getProvider==`function`?t.getProvider(u):null;if(!_){let e=`Error: Unknown provider "${u}".`;throw Error(e)}let v;if(i.apiKey!==void 0)v=i.apiKey;else{if(v=r.env.SHADOW_CLAW_API_KEY,!v)switch(u){case`openrouter`:v=r.env.OPENROUTER_API_KEY;break;case`huggingface`:v=r.env.HUGGINGFACE_API_KEY||r.env.HF_TOKEN;break;case`gemini_proxy`:v=r.env.GEMINI_API_KEY;break}!v&&typeof t.getConfig==`function`&&(v=await t.getConfig(e,`api_key:${u}`)||await t.getConfig(e,`apiKey`))}let y=i.model||r.env.SHADOW_CLAW_MODEL||r.env.SHADOW_CLAW_DEFAULT_MODEL||(typeof t.getConfig==`function`?await t.getConfig(e,t.CONFIG_KEYS?.MODEL||`model`):null)||l.defaultModel||l.model||c.defaultModel||c.model||s.defaultModel||_?.defaultModel||(u===`transformers_js_local`?(await import(`./chunk-BKnTOLLS2.js`)).DEFAULT_LOCAL_MODEL:`default`);if(u===`transformers_js_local`||u===`llamafile`){let{isModelLocallyCached:e,downloadLocalModel:t}=await import(`./chunk-BKnTOLLS2.js`);if(!e(y,i.cacheDir)){let e=i.stdout||r.stderr;if(i.download)i.quiet||e.write(`\nDownloading ${y} from Hugging Face...\n`),await t(y,{cacheDir:i.cacheDir,stream:e,isTTY:p,service:i._transformersService,progress:i.progress!==!1&&!i.noProgress,verbose:i.verbose});else if(h){let n=await import(`node:readline/promises`),a=await import(`node:tty`),o=await import(`node:fs`),s=i.stdin||r.stdin,c=e,l=!1,u=null;if(s===r.stdin&&!r.stdin.isTTY&&!r.env.CI&&(r.stderr.isTTY||r.stdout.isTTY))try{let e=r.platform===`win32`?`CONIN$`:`/dev/tty`;u=o.openSync(e,`r`),s=new a.ReadStream(u),c=r.stderr.isTTY?r.stderr:r.stdout,l=!0}catch{try{let e=r.platform===`win32`?`CONIN$`:`/dev/tty`;s=o.createReadStream(e),c=r.stderr.isTTY?r.stderr:r.stdout,l=!0}catch{}}let d=n.createInterface({input:s,output:c}),f=!1,m=()=>{if(!f){f=!0,c.write(`
18
18
  Operation cancelled.
19
19
  `);try{d.close()}catch{}typeof i.onExit==`function`?i.onExit(130):r.exit(130)}};d.on(`SIGINT`,m),s&&typeof s.on==`function`&&s!==r.stdin&&s.on(`SIGINT`,m);let h=()=>m();r.on(`SIGINT`,h);let g=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&m()};s&&typeof s.on==`function`&&s.on(`data`,g);let _=``;try{_=(await d.question(`\nModel "${y}" is not yet downloaded to local disk.\nDownload model weights now? (Y/n) [default: Y]: `)).trim().toLowerCase()}finally{r.removeListener(`SIGINT`,h),s&&typeof s.removeListener==`function`&&(s!==r.stdin&&s.removeListener(`SIGINT`,m),s.removeListener(`data`,g));try{d.close()}catch{}if(l){if(s&&typeof s.destroy==`function`)try{s.destroy()}catch{}if(u!=null)try{o.closeSync(u)}catch{}}}(_===``||_===`y`||_===`yes`)&&(e.write(`\nDownloading ${y} from Hugging Face...\n`),await t(y,{cacheDir:i.cacheDir,stream:e,isTTY:p,service:i._transformersService,progress:i.progress!==!1&&!i.noProgress,verbose:i.verbose}))}}}return{providerId:u,providerConfig:_,apiKey:v||``,model:y,workspaceConfigData:o,workspaceConfig:s,workspaceSettings:c,workspaceAgent:l}}async function P(e,t,n,r,i,a,o){let s=[...t.TOOL_DEFINITIONS||[]];if(typeof t.loadDeclarativeTools==`function`)try{let r=await t.loadDeclarativeTools(e,n);if(r&&Array.isArray(r.tools))for(let e of r.tools)s.some(t=>t.name===e.name)||s.push(e)}catch{}let c=s.filter(e=>!E.has(e.name)),l=c,u=null;async function d(){let n=t.DEFAULT_BUILTIN_PROFILE||null,a=[];if(typeof t.getConfig==`function`)try{let n=await t.getConfig(e,t.CONFIG_KEYS?.TOOL_PROFILES||`tool_profiles`);typeof n==`string`?a=JSON.parse(n):Array.isArray(n)&&(a=n)}catch{}let o=r?.toolProfiles||i?.toolProfiles||r?.profiles||[];return[n,...a,...o].filter(Boolean)}if(o.noTools===!0||o.tools===!1||o.tools===`none`||o.tools===``)return l=[],{enabledTools:l,profileSystemPromptOverride:u};if(o.tools!==void 0&&o.tools!==null)return l=(Array.isArray(o.tools)?o.tools:String(o.tools).split(`,`)).map(e=>String(e).trim()).filter(Boolean).map(e=>c.find(t=>t.name===String(e))).filter(Boolean),{enabledTools:l,profileSystemPromptOverride:u};if(o.toolsProfile){let e=await d(),t=String(o.toolsProfile).trim().toLowerCase(),n=e.find(e=>e.id&&String(e.id).toLowerCase()===t||e.name&&String(e.name).toLowerCase()===t);if(!n)throw Error(`Error: Tool profile "${o.toolsProfile}" not found.`);let r=new Set(n.enabledToolNames||[]);if(l=c.filter(e=>r.has(e.name)),n.customTools&&Array.isArray(n.customTools))for(let e of n.customTools)!E.has(e.name)&&!l.some(t=>t.name===e.name)&&l.push(e);return n.systemPromptOverride&&(u=n.systemPromptOverride),{enabledTools:l,profileSystemPromptOverride:u}}let f=a?.tools??a?.enabledTools;if(f!=null)return f===!1||f===`none`||f===``?(l=[],{enabledTools:l,profileSystemPromptOverride:u}):(l=(Array.isArray(f)?f:String(f).split(`,`)).map(e=>String(e).trim()).filter(Boolean).map(e=>c.find(t=>t.name===e)).filter(Boolean),{enabledTools:l,profileSystemPromptOverride:u});let p=a?.toolsProfile||a?.defaultToolsProfile;if(p){let e=await d(),t=String(p).trim().toLowerCase(),n=e.find(e=>e.id&&String(e.id).toLowerCase()===t||e.name&&String(e.name).toLowerCase()===t);if(n){let e=new Set(n.enabledToolNames||[]);return l=c.filter(t=>e.has(t.name)),n.systemPromptOverride&&(u=n.systemPromptOverride),{enabledTools:l,profileSystemPromptOverride:u}}}return{enabledTools:l,profileSystemPromptOverride:u}}async function F(e,t={}){let{db:i,workspaceDir:a,core:o}=await C(t),s=t.group||o.DEFAULT_SERVER_GROUP_ID||D,u=t._stdinData??null;if(e===`-`?e=u||``:u&&(e=e?`${e}\n\n${u}`:u),!e){let e=`Error: Prompt required. Provide a prompt argument or pipe text to stdin.`;return t.quiet||console.error(e),r.exitCode=1,{success:!1,error:e}}let d,f,p,m,h,g,_,v;try{let e=await N(i,o,a,t);d=e.providerId,f=e.providerConfig,p=e.apiKey,m=e.model,h=e.workspaceConfigData,g=e.workspaceConfig,_=e.workspaceSettings,v=e.workspaceAgent}catch(e){return t.quiet||console.error(e.message),r.exitCode=1,{success:!1,error:e.message}}let y=t.internetAccess??t.allowInternet??_?.internetAccess??_?.vm_bash_full_internet_access??_?.fullInternetAccess??g?.internetAccess;if(y!==void 0&&typeof o.setConfig==`function`){let e=o.CONFIG_KEYS?.VM_BASH_FULL_INTERNET_ACCESS||`vm_bash_full_internet_access`;await o.setConfig(i,e,y?`true`:`false`)}if(f.requiresApiKey!==!1&&!p){let e=d===`huggingface`?`HUGGINGFACE_API_KEY`:`${d.toUpperCase()}_API_KEY`,n=`Error: Provider "${d}" requires an API key, but none was provided.\nPlease provide an API key via --api-key <key> or export ${e}="...".`;return t.quiet||console.error(n),r.exitCode=1,{success:!1,error:n}}let b=[];if(typeof o.getRecentMessages==`function`)try{b=await o.getRecentMessages(i,s,50)}catch{}let x={id:`msg_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,groupId:s,role:`user`,content:e,timestamp:Date.now()};if(typeof o.saveMessage==`function`)try{await o.saveMessage(i,x)}catch{}let w=f?.supportsStreaming===!0,T=t.stream!==!1&&t.streaming!==!1&&!t.noStream,E=w&&T,O=Number(t.maxTokens)||(typeof o.getModelMaxTokens==`function`?o.getModelMaxTokens(m):o.DEFAULT_MAX_TOKENS||8192);if(t.verbose&&!t.quiet){let e=f?.name||d,t=E?`streaming`:`standard`;r.stderr.write(`[Agent] Connecting to ${e} (${m}) [${t}]...\n`),r.stderr.write(`[Agent] Workspace: ${a}\n[Agent] Group: ${s}\n[Agent] Max tokens: ${O}\n`)}let k,A,j=!1,M=[];o.setPostHandler(async e=>{({"streaming-start":()=>{j=!0},"streaming-chunk":e=>{e.payload?.text&&(j=!0,k=(k||``)+e.payload.text,!t.quiet&&!t.output&&r.stdout.write(e.payload.text))},"streaming-done":()=>{},"streaming-end":()=>{},response:e=>{if(e.payload?.text)if(k=e.payload.text,t.output){let i=l(n.resolve(t.output),e.payload.text,`utf8`).then(()=>{t.quiet||r.stderr.write(`Output written to ${t.output}\n`)}).catch(()=>{});M.push(i)}else t.quiet||(j?e.payload.text.endsWith(`
20
20
  `)||r.stdout.write(`
@@ -22,7 +22,7 @@ Operation cancelled.
22
22
  `))},"intermediate-response":e=>{t.verbose&&!t.quiet&&e.payload?.text&&r.stderr.write(`[Thought] ${e.payload.text}\n`)},error:e=>{e.payload?.error&&(A=e.payload.error,t.quiet||console.error(`Error: ${e.payload.error}`))},"tool-activity":e=>{if(t.verbose&&!t.quiet&&e.payload){let t=e.payload.tool||`tool`,n=e.payload.status||`executing`;r.stderr.write(`[Tool] ${t} (${n})\n`)}},"thinking-log":e=>{if(t.verbose&&!t.quiet&&e.payload){let t=e.payload.label||e.payload.level||`Log`;r.stderr.write(`[${t}] ${e.payload.message||``}\n`)}},status:e=>{if(t.verbose&&!t.quiet&&e.payload){let t=e.payload.label?`[${e.payload.label}] `:``;r.stderr.write(`${t}${e.payload.message||``}\n`)}},log:e=>{if(t.verbose&&!t.quiet&&e.payload){let t=e.payload.label||e.payload.level||`Log`;r.stderr.write(`[${t}] ${e.payload.message||``}\n`)}},"token-usage":e=>{if(t.verbose&&!t.quiet&&e.payload?.usage){let t=e.payload.usage,n=t.prompt_tokens??t.input_tokens??0,i=t.completion_tokens??t.output_tokens??0,a=t.total_tokens??n+i;r.stderr.write(`[Tokens] Prompt: ${n}, Completion: ${i}, Total: ${a}\n`)}},"request-native-ai-task":e=>{S(o,i,e.payload)}})[e.type]?.(e)});let F;try{F=await P(i,o,s,g,_,v,t)}catch(e){let n=e.message||String(e);return t.quiet||console.error(n),r.exitCode=1,{success:!1,error:n}}let{enabledTools:I,profileSystemPromptOverride:L}=F,R=t.systemPrompt;if(!R&&t.systemPromptFile)try{R=await c(n.resolve(t.systemPromptFile),`utf8`)}catch(e){let n=`Error: Failed to read system prompt file "${t.systemPromptFile}": ${e.message}`;return t.quiet||console.error(n),r.exitCode=1,{success:!1,error:n}}if(R||=r.env.SHADOW_CLAW_SYSTEM_PROMPT||r.env.SHADOWCLAW_SYSTEM_PROMPT,!R&&L&&(R=L),!R&&v?.systemPromptFile)try{let e=h?.configPath?n.dirname(h.configPath):a;R=await c(n.resolve(e,v.systemPromptFile),`utf8`)}catch(e){t.verbose&&!t.quiet&&console.error(`Warning: Failed to read systemPromptFile from config: ${e.message}`)}if(R||=v?.systemPrompt||_?.systemPrompt||_?.systemPromptOverride,!R&&typeof o.getConfig==`function`)try{let e=await o.getConfig(i,o.CONFIG_KEYS?.SYSTEM_PROMPT_OVERRIDE||`system_prompt_override`);e&&typeof e==`string`&&(R=e)}catch{}R||=`You are ShadowClaw, a helpful AI assistant operating in a headless workspace. Answer concisely.`;let z={apiKey:p||``,assistantName:`ShadowClaw`,enabledTools:I,groupId:s,maxTokens:O,messages:[...b,x],model:m,provider:d,streaming:E,verbose:!!t.verbose,systemPrompt:R},B=new AbortController;t.abortSignal&&(t.abortSignal.aborted?B.abort():t.abortSignal.addEventListener(`abort`,()=>B.abort(),{once:!0}));let V=!1,H=()=>{if(!V){V=!0,B.abort();try{typeof o.cleanupAllLlamafileProcesses==`function`&&o.cleanupAllLlamafileProcesses()}catch{}}};r.on(`SIGINT`,H);let U=t.invokeHandler||o.handleInvoke;try{await U(i,z,B.signal)}catch(e){A=e instanceof Error?e.message:String(e),!V&&!t.quiet&&console.error(`Error: ${A}`)}finally{r.removeListener(`SIGINT`,H)}if(V)return t.quiet||r.stderr.write(`
23
23
  Operation cancelled.
24
24
  `),r.exitCode=130,typeof t.onExit==`function`&&t.onExit(130),{success:!1,error:`Operation cancelled.`};if(A&&j&&!t.quiet&&!t.output&&r.stdout.write(`
25
- `),A)return r.exitCode=1,{success:!1,error:A};if(k&&typeof o.saveMessage==`function`)try{await o.saveMessage(i,{id:`msg_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,groupId:s,role:`assistant`,content:k,timestamp:Date.now()})}catch{}if(t.output&&k&&M.length===0){let e=l(n.resolve(t.output),k,`utf8`).then(()=>{t.quiet||r.stderr.write(`Output written to ${t.output}\n`)}).catch(()=>{});M.push(e)}return await Promise.all(M),typeof o.setPostHandler==`function`&&o.setPostHandler(null),{success:!0,response:k,model:m,provider:d}}async function I(e=`list`,t,i={}){let{listLocalModels:a,listLlamafileModels:o,downloadLocalModel:s,fetchRemoteModels:c,DEFAULT_LOCAL_MODEL:u}=await import(`./chunk-Drr0VSGA2.js`),d=i.workspace?n.resolve(i.workspace):r.cwd(),f=e||`list`;if(f===`list`||f===`remote`){let e=f===`remote`||!!(i.remote||i.all||i.huggingface),n=await g(d),s=n?.config?.agent?.defaultModel||n?.config?.settings?.defaultModel||u;if(e){i.quiet||r.stdout.write(`
25
+ `),A)return r.exitCode=1,{success:!1,error:A};if(k&&typeof o.saveMessage==`function`)try{await o.saveMessage(i,{id:`msg_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,groupId:s,role:`assistant`,content:k,timestamp:Date.now()})}catch{}if(t.output&&k&&M.length===0){let e=l(n.resolve(t.output),k,`utf8`).then(()=>{t.quiet||r.stderr.write(`Output written to ${t.output}\n`)}).catch(()=>{});M.push(e)}return await Promise.all(M),typeof o.setPostHandler==`function`&&o.setPostHandler(null),{success:!0,response:k,model:m,provider:d}}async function I(e=`list`,t,i={}){let{listLocalModels:a,listLlamafileModels:o,downloadLocalModel:s,fetchRemoteModels:c,DEFAULT_LOCAL_MODEL:u}=await import(`./chunk-BKnTOLLS2.js`),d=i.workspace?n.resolve(i.workspace):r.cwd(),f=e||`list`;if(f===`list`||f===`remote`){let e=f===`remote`||!!(i.remote||i.all||i.huggingface),n=await g(d),s=n?.config?.agent?.defaultModel||n?.config?.settings?.defaultModel||u;if(e){i.quiet||r.stdout.write(`
26
26
  Fetching available ONNX models from Hugging Face (onnx-community)...
27
27
  `);let e=await c({cacheDir:i.cacheDir,query:i.query||(f===`remote`&&t?t:void 0)});if(!i.quiet)if(e.length===0)r.stdout.write(`No models found on Hugging Face or could not reach huggingface.co.
28
28
 
@@ -36,5 +36,5 @@ Curated Transformers.js Models (Local ONNX):
36
36
  `);for(let e of l){let t=e.id===s,n=e.cached?` [Cached]`:` [Not downloaded]`,i=t?` (Default)`:``;r.stdout.write(` • ${e.id}${i}${n}\n`),r.stdout.write(` Name: ${e.name}\n`),r.stdout.write(` Context: ${e.contextLength.toLocaleString()} tokens | Tools: ${e.supportsTools?`Yes`:`No`}\n`),r.stdout.write(` ${e.description}\n\n`)}r.stdout.write(`Curated Llamafile Models (Local Executable):
37
37
 
38
38
  `);for(let e of p){let t=e.fileName===s||e.id===s||s.endsWith(e.fileName),n=e.cached?` [Cached]`:` [Not downloaded]`,i=t?` (Default)`:``;r.stdout.write(` • ${e.fileName}${i}${n}\n`),r.stdout.write(` Name: ${e.name}\n`),r.stdout.write(` URL: ${e.url}\n`),r.stdout.write(` ${e.description}\n\n`)}r.stdout.write("Tip: Run `shadow-claw agent model list --remote` (or `shadow-claw agent model remote`) to browse all ONNX models from Hugging Face.\n\n")}return{success:!0,models:l,llamafileModels:p,defaultModel:s}}if(f===`download`){let e=t||i.model||u;i.verbose&&!i.quiet&&r.stderr.write(`Preparing to download model: ${e}\n`);let n=await s(e,{cacheDir:i.cacheDir,verbose:i.verbose,isTTY:i.isTTY,progress:i.progress!==!1&&!i.noProgress});return n.success||(r.exitCode=1),n}if(f===`set`){let e=t||i.model;if(!e){let e=`Error: Please specify a model ID to set as default.`;return i.quiet||console.error(e),r.exitCode=1,{success:!1,error:e}}let a=await g(d),o=a?.configPath||n.join(d,`shadow-claw.config.json`),s=a?.config||{},c={...s,agent:{...s.agent||{},defaultModel:e}};return await l(o,JSON.stringify(c,null,2)+`
39
- `,`utf8`),i.quiet||r.stdout.write(`Updated default CLI agent model to: ${e}\n`),{success:!0,model:e,configPath:o}}let p=`Unknown model action: "${f}". Available: list, download, set`;return i.quiet||console.error(p),r.exitCode=1,{success:!1,error:p}}async function L(e,t={}){let n=(e||``).trim();if(!n){let e=`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`;return t.quiet||console.error(e),r.exitCode=1,{success:!1,error:e}}let{db:i,core:a}=await C(t),o=t.group||a.DEFAULT_SERVER_GROUP_ID||D,s=a.fetchDiscoveryManifest||(await import(`./chunk-00GAzVPl2.js`)).fetchDiscoveryManifest,c=a.importRemoteArtifacts||(await import(`./chunk-m9ZX7TyF2.js`)).importRemoteArtifacts,l=t.fetchFn||globalThis.fetch;t.quiet||console.log(`Fetching discovery manifest from ${n}...`);let u;try{u=await s(n,l)}catch(e){let n=`Failed to fetch discovery manifest: ${e instanceof Error?e.message:String(e)}`;return t.quiet||console.error(`Error: ${n}`),r.exitCode=1,{success:!1,error:n}}let{manifest:d,siteUrl:f,manifestUrl:p}=u,m=d.tools||[],h=d.skills||[],g=d.scripts||[];t.quiet||console.log(`Discovered: ${d.name||`Remote Site`} (${h.length} skill${h.length===1?``:`s`}, ${m.length} tool${m.length===1?``:`s`}, ${g.length} script${g.length===1?``:`s`})`);let _=m.map(e=>e.name),v=h.map(e=>e.name),y=g.map(e=>e.name),b,x,S;if((t.tools||t.skills||t.scripts)&&!t.all){let e=e=>e?Array.isArray(e)?e.map(e=>String(e).trim()).filter(Boolean):String(e).split(`,`).map(e=>e.trim()).filter(Boolean):[];b=e(t.tools),x=e(t.skills),S=e(t.scripts)}else b=_,x=v,S=y;let w=t.autoEnable!==!1,T=!!t.overwrite,E;try{E=await c(i,o,d,{toolNames:b,skillNames:x,scriptNames:S},{autoEnable:w,overwrite:T,fetchFn:l,siteSlug:t.siteSlug,targetSubdir:t.targetSubdir})}catch(e){let n=`Import failed: ${e instanceof Error?e.message:String(e)}`;return t.quiet||console.error(`Error: ${n}`),r.exitCode=1,{success:!1,error:n}}let O=E.tools.filter(e=>e.status===`imported`),k=E.skills.filter(e=>e.status===`imported`),A=E.scripts.filter(e=>e.status===`imported`),j=E.tools.filter(e=>e.status===`skipped`),M=E.skills.filter(e=>e.status===`skipped`),N=E.scripts.filter(e=>e.status===`skipped`),P=E.tools.filter(e=>e.status===`failed`),F=E.skills.filter(e=>e.status===`failed`),I=E.scripts.filter(e=>e.status===`failed`),L=O.length+k.length+A.length,R=j.length+M.length+N.length,z=P.length+F.length+I.length;if(!t.quiet){console.log(`
40
- Importing artifacts:`);for(let e of[...E.tools,...E.skills,...E.scripts]){let t=E.tools.includes(e)?`tool`:E.skills.includes(e)?`skill`:`script`;e.status===`imported`?console.log(` [${t}] ${e.name} -> ${e.path} (imported)`):e.status===`skipped`?console.log(` [${t}] ${e.name} -> ${e.path} (skipped, already exists - use --overwrite to replace)`):console.log(` [${t}] ${e.name} (failed: ${e.error||`unknown error`})`)}console.log(z>0?`\nCompleted with ${z} error${z===1?``:`s`}. Successfully imported ${L} items, ${R} skipped.`:`\nSuccessfully imported ${L} item${L===1?``:`s`} (${O.length} tool${O.length===1?``:`s`}, ${k.length} skill${k.length===1?``:`s`}, ${A.length} script${A.length===1?``:`s`}).`)}let B=z===0||L>0;return B||(r.exitCode=1),{success:B,manifest:d,siteUrl:f,manifestUrl:p,result:E,importedCount:L,skippedCount:R,failedCount:z}}async function R(e,t=[],n={}){let i=t,a=n;if(!Array.isArray(t)&&typeof t==`object`&&(a=t,i=[]),a._stdinData===void 0)try{a={...a,_stdinData:r.stdin.isTTY?null:await w({timeoutMs:500})}}catch{a={...a,_stdinData:null}}switch(e){case`init`:{let e=i[0]||a.workspace,t=await O({...a,workspace:e});return console.log(`Headless agent workspace initialized at: ${t.workspace}`),t}case`skills`:{let e=await k(a);if(e.skills.length===0)console.log(`No skills found in workspace (.agents/skills/).`);else{console.log(`Available skills (${e.skills.length}):\n`);for(let t of e.skills)console.log(` - ${t.name}: ${t.description||`No description`}`)}return e}case`tools`:{let e=i[0];if(e)return await j(e,i[1],a);let t=await A(a);console.log(`Available tools (${t.tools.length}):\n`);for(let e of t.tools){let t=e.headlessSafe?`[headless-safe]`:`[browser-only]`;console.log(` - ${e.name.padEnd(25)} ${t} ${e.description||``}`)}return t}case`tool`:{let e=i[0];if(!e){console.error(`Error: Tool name required. Usage: shadow-claw agent tool <name> [input-json]`),r.exitCode=1;return}return await j(e,i[1],a)}case`skill`:{let e=i[0];if(!e){console.error(`Error: Skill name required. Usage: shadow-claw agent skill <name>`),r.exitCode=1;return}return await M(e,a)}case`run`:return await F(i.join(` `)||`-`,a);case`models`:case`model`:{let e=i[0]||`list`,t=i[1];return await I(e,t,a)}case`import`:{let e=i[0];return e?await L(e,a):(console.error(`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`),r.exitCode=1,{success:!1,error:`Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`})}case`listen`:return await(a.listenFn||(async e=>{let{runWebRtcListenCommand:t}=await import(`./chunk-DwZQi9Ax.js`);return t(e)}))({...a,agent:!0});default:console.log(`Usage: shadow-claw agent <init|model|skills|tools|tool|skill|import|run|listen> [args...]`)}}export{I as a,k as c,C as d,x as f,O as i,j as l,R as n,F as o,g as p,L as r,M as s,N as t,A as u};
39
+ `,`utf8`),i.quiet||r.stdout.write(`Updated default CLI agent model to: ${e}\n`),{success:!0,model:e,configPath:o}}let p=`Unknown model action: "${f}". Available: list, download, set`;return i.quiet||console.error(p),r.exitCode=1,{success:!1,error:p}}async function L(e,t={}){let n=(e||``).trim();if(!n){let e=`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`;return t.quiet||console.error(e),r.exitCode=1,{success:!1,error:e}}let{db:i,core:a}=await C(t),o=t.group||a.DEFAULT_SERVER_GROUP_ID||D,s=a.fetchDiscoveryManifest||(await import(`./chunk-CUUERioR2.js`)).fetchDiscoveryManifest,c=a.importRemoteArtifacts||(await import(`./chunk-BIh7rXlJ2.js`)).importRemoteArtifacts,l=t.fetchFn||globalThis.fetch;t.quiet||console.log(`Fetching discovery manifest from ${n}...`);let u;try{u=await s(n,l)}catch(e){let n=`Failed to fetch discovery manifest: ${e instanceof Error?e.message:String(e)}`;return t.quiet||console.error(`Error: ${n}`),r.exitCode=1,{success:!1,error:n}}let{manifest:d,siteUrl:f,manifestUrl:p}=u,m=d.tools||[],h=d.skills||[],g=d.scripts||[];t.quiet||console.log(`Discovered: ${d.name||`Remote Site`} (${h.length} skill${h.length===1?``:`s`}, ${m.length} tool${m.length===1?``:`s`}, ${g.length} script${g.length===1?``:`s`})`);let _=m.map(e=>e.name),v=h.map(e=>e.name),y=g.map(e=>e.name),b,x,S;if((t.tools||t.skills||t.scripts)&&!t.all){let e=e=>e?Array.isArray(e)?e.map(e=>String(e).trim()).filter(Boolean):String(e).split(`,`).map(e=>e.trim()).filter(Boolean):[];b=e(t.tools),x=e(t.skills),S=e(t.scripts)}else b=_,x=v,S=y;let w=t.autoEnable!==!1,T=!!t.overwrite,E;try{E=await c(i,o,d,{toolNames:b,skillNames:x,scriptNames:S},{autoEnable:w,overwrite:T,fetchFn:l,siteSlug:t.siteSlug,targetSubdir:t.targetSubdir})}catch(e){let n=`Import failed: ${e instanceof Error?e.message:String(e)}`;return t.quiet||console.error(`Error: ${n}`),r.exitCode=1,{success:!1,error:n}}let O=E.tools.filter(e=>e.status===`imported`),k=E.skills.filter(e=>e.status===`imported`),A=E.scripts.filter(e=>e.status===`imported`),j=E.tools.filter(e=>e.status===`skipped`),M=E.skills.filter(e=>e.status===`skipped`),N=E.scripts.filter(e=>e.status===`skipped`),P=E.tools.filter(e=>e.status===`failed`),F=E.skills.filter(e=>e.status===`failed`),I=E.scripts.filter(e=>e.status===`failed`),L=O.length+k.length+A.length,R=j.length+M.length+N.length,z=P.length+F.length+I.length;if(!t.quiet){console.log(`
40
+ Importing artifacts:`);for(let e of[...E.tools,...E.skills,...E.scripts]){let t=E.tools.includes(e)?`tool`:E.skills.includes(e)?`skill`:`script`;e.status===`imported`?console.log(` [${t}] ${e.name} -> ${e.path} (imported)`):e.status===`skipped`?console.log(` [${t}] ${e.name} -> ${e.path} (skipped, already exists - use --overwrite to replace)`):console.log(` [${t}] ${e.name} (failed: ${e.error||`unknown error`})`)}console.log(z>0?`\nCompleted with ${z} error${z===1?``:`s`}. Successfully imported ${L} items, ${R} skipped.`:`\nSuccessfully imported ${L} item${L===1?``:`s`} (${O.length} tool${O.length===1?``:`s`}, ${k.length} skill${k.length===1?``:`s`}, ${A.length} script${A.length===1?``:`s`}).`)}let B=z===0||L>0;return B||(r.exitCode=1),{success:B,manifest:d,siteUrl:f,manifestUrl:p,result:E,importedCount:L,skippedCount:R,failedCount:z}}async function R(e,t=[],n={}){let i=t,a=n;if(!Array.isArray(t)&&typeof t==`object`&&(a=t,i=[]),a._stdinData===void 0)try{a={...a,_stdinData:r.stdin.isTTY?null:await w({timeoutMs:500})}}catch{a={...a,_stdinData:null}}switch(e){case`init`:{let e=i[0]||a.workspace,t=await O({...a,workspace:e});return console.log(`Headless agent workspace initialized at: ${t.workspace}`),t}case`skills`:{let e=await k(a);if(e.skills.length===0)console.log(`No skills found in workspace (.agents/skills/).`);else{console.log(`Available skills (${e.skills.length}):\n`);for(let t of e.skills)console.log(` - ${t.name}: ${t.description||`No description`}`)}return e}case`tools`:{let e=i[0];if(e)return await j(e,i[1],a);let t=await A(a);console.log(`Available tools (${t.tools.length}):\n`);for(let e of t.tools){let t=e.headlessSafe?`[headless-safe]`:`[browser-only]`;console.log(` - ${e.name.padEnd(25)} ${t} ${e.description||``}`)}return t}case`tool`:{let e=i[0];if(!e){console.error(`Error: Tool name required. Usage: shadow-claw agent tool <name> [input-json]`),r.exitCode=1;return}return await j(e,i[1],a)}case`skill`:{let e=i[0];if(!e){console.error(`Error: Skill name required. Usage: shadow-claw agent skill <name>`),r.exitCode=1;return}return await M(e,a)}case`run`:return await F(i.join(` `)||`-`,a);case`models`:case`model`:{let e=i[0]||`list`,t=i[1];return await I(e,t,a)}case`import`:{let e=i[0];return e?await L(e,a):(console.error(`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`),r.exitCode=1,{success:!1,error:`Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`})}case`listen`:return await(a.listenFn||(async e=>{let{runWebRtcListenCommand:t}=await import(`./chunk-DR2XtWRo.js`);return t(e)}))({...a,agent:!0});default:console.log(`Usage: shadow-claw agent <init|model|skills|tools|tool|skill|import|run|listen> [args...]`)}}export{I as a,k as c,C as d,x as f,O as i,j as l,R as n,F as o,g as p,L as r,M as s,N as t,A as u};
@@ -1,5 +1,5 @@
1
1
  import e from"node:fs";import t from"node:path";import n from"node:process";import r from"node:readline/promises";import i from"node:tty";function a(e,t=1){if(!Number.isFinite(e)||e<=0)return`0 B`;let n=1024,r=t<0?0:t,i=[`B`,`KB`,`MB`,`GB`,`TB`],a=Math.floor(Math.log(e)/Math.log(n)),o=Math.min(a,i.length-1);return`${parseFloat((e/n**o).toFixed(r))} ${i[o]}`}function o(e={}){let{modelId:t=`model`,stream:r=n.stderr,barWidth:i=24,isTTY:o=!!(r&&typeof r==`object`&&r.isTTY),enabled:s=!0}=e;if(!s)return{update:()=>{},finish:()=>{},fail:e=>{r?.write&&r.write(`${e||`✖ Failed to download ${t}.`}\n`)}};let c=[],l=new Map,u=!1;function d(e){let t=Math.round(Math.max(0,Math.min(1,e))*i),n=i-t;return`[`+`=`.repeat(t)+(t<i?`>`:``)+` `.repeat(Math.max(0,n-+(t<i)))+`]`}function f(e,t=0,n=0){let i=l.get(e);return i||(i={lineIndex:c.length,lastPct:-1,lastRenderedTime:0,loaded:t,total:n,isDone:!1},l.set(e,i),c.push(e),o&&c.length>1&&r?.write&&r.write(`
2
- `)),i}function p(e,t){if(!o||!r?.write)return;let n=l.get(e);if(!n)return;let i=typeof r.columns==`number`&&r.columns>0?r.columns:null,a=i&&t.length>i-1?t.slice(0,i-1):t,s=c.length-1-n.lineIndex;s>0?r.write(`\x1b[${s}A\r\x1b[2K${a}\x1b[${s}B\r`):r.write(`\r\x1b[2K${a}`)}function m(e){if(u||!e)return;let n=e.file||(e.status===`progress_total`?`Total`:t);if(e.status===`initiate`){if(f(n),!o&&r?.write)r.write(`[Download] Starting ${t}${n?` (${n})`:``}...\n`);else if(o){let e=n?` [${n}]`:``;p(n,`Downloading ${t}${e} ${d(0)} 0.0%`)}return}if(e.status===`progress`||e.status===`progress_total`){let i=typeof e.progress==`number`?e.progress:0,s=Math.max(0,Math.min(100,i)),c=s/100,l=Number(e.loaded)||0,u=Number(e.total)||0,m=f(n,l,u),h=Date.now();if(o){if(h-m.lastRenderedTime<30&&s<100&&Math.abs(s-m.lastPct)<.5)return;m.lastRenderedTime=h,m.lastPct=s,m.loaded=l,m.total=u;let e=d(c),r=`${s.toFixed(1)}%`.padStart(6,` `),i=``;u>0?i=` (${a(l)} / ${a(u)})`:l>0&&(i=` (${a(l)})`);let o=n?` [${n}]`:``;p(n,`Downloading ${t}${o} ${e} ${r}${i}`)}else{let e=Math.floor(s/20)*20;if(e>m.lastPct&&(e>0||s===0)){m.lastPct=e;let i=u>0?` (${a(l)} / ${a(u)})`:``;r?.write&&r.write(`[Download] ${t}${n?` [${n}]`:``}: ${e}%${i}\n`)}}return}if(e.status===`done`){let i=l.get(n);if(i)if(i.isDone=!0,o){let e=d(1),r=i.total||i.loaded,o=r>0?` (${a(r)})`:``,s=n?` [${n}]`:``;p(n,`Downloading ${t}${s} ${e} 100.0%${o}`)}else r?.write&&r.write(`[Download] Finished file: ${n}\n`);else!o&&e.file&&r?.write&&r.write(`[Download] Finished file: ${e.file}\n`)}}function h(e){if(u)return;u=!0;let n=`✔ Model ${t} downloaded successfully.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}function g(e){if(u)return;u=!0;let n=`✖ Failed to download ${t}.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}return{update:m,finish:h,fail:g}}const s=[{id:`onnx-community/gemma-3-1b-it-ONNX-GQA`,name:`Gemma 3 1B GQA (ONNX)`,description:`Google Gemma 3 1B with Grouped Query Attention (Default)`,contextLength:32e3,supportsTools:!0,recommended:!0},{id:`onnx-community/gemma-4-E2B-it-ONNX`,name:`Gemma 4 E2B (ONNX)`,description:`Google Gemma 4 E2B instruction-tuned ONNX model`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/gemma-4-E4B-it-ONNX`,name:`Gemma 4 E4B (ONNX)`,description:`Google Gemma 4 E4B instruction-tuned ONNX model`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/Qwen3-0.6B-ONNX`,name:`Qwen 3 0.6B (ONNX)`,description:`Fast, compact, tool-calling supported 0.6B model`,contextLength:32768,supportsTools:!0,recommended:!1}],c=`onnx-community/gemma-3-1b-it-ONNX-GQA`,l=[{id:`mozilla-ai/gemma-4-E2B-it-Q5_K_M.llamafile`,name:`Gemma 4 E2B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E2B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E2B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E2B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!1},{id:`mozilla-ai/gemma-4-E4B-it-Q5_K_M.llamafile`,name:`Gemma 4 E4B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E4B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E4B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E4B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-0.8B-Q8_0.llamafile`,name:`Qwen 3.5 0.8B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 0.8B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-0.8B-Q8_0.llamafile`,fileName:`Qwen3.5-0.8B-Q8_0.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-2B-Q8_0.llamafile`,name:`Qwen 3.5 2B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 2B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-2B-Q8_0.llamafile`,fileName:`Qwen3.5-2B-Q8_0.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-4B-Q5_K_S.llamafile`,name:`Qwen 3.5 4B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 4B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-4B-Q5_K_S.llamafile`,fileName:`Qwen3.5-4B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-9B-Q5_K_S.llamafile`,name:`Qwen 3.5 9B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 9B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-9B-Q5_K_S.llamafile`,fileName:`Qwen3.5-9B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!1}];function u(e){return e?t.resolve(e):t.resolve(n.cwd(),`assets/cache/transformers.js`)}function d(e){return e?t.resolve(e,`llamafile`):t.resolve(n.cwd(),`assets/cache/llamafile`)}function f(e){return!e||typeof e!=`string`?!1:e.endsWith(`.llamafile`)||e.includes(`llamafile`)||l.some(n=>n.id===e||n.fileName===e||n.url===e||n.fileName===t.basename(e))}function p(n,r){let i=d(r);if(!e.existsSync(i))return!1;let a=t.basename(n),o=a.endsWith(`.llamafile`)?a:`${a}.llamafile`,s=t.join(i,o);try{if(e.existsSync(s))return e.statSync(s).size>0}catch{}return!1}function m(n,r){if(f(n))return p(n,r);let i=u(r);if(!e.existsSync(i))return!1;let a=[t.join(i,n),t.join(i,`models--${n.replace(/\//g,`--`)}`),t.join(i,n.split(`/`)[1]||n)];for(let t of a)try{if(e.existsSync(t)&&e.readdirSync(t).length>0)return!0}catch{}return!1}function h(e){return s.map(t=>({...t,cached:m(t.id,e)}))}function g(e){return l.map(t=>({...t,cached:p(t.fileName,e)}))}async function _(e={}){let t=e.endpoint||`https://huggingface.co/api/models?author=onnx-community&pipeline_tag=text-generation&limit=100`;try{let n=await fetch(t,{headers:{"User-Agent":`ShadowClaw-CLI`},signal:AbortSignal.timeout(e.timeoutMs||8e3)});if(!n.ok)return[];let r=await n.json();if(!Array.isArray(r))return[];let i=r.map(e=>typeof e?.id==`string`?e.id:``).filter(e=>e&&e.toLowerCase().includes(`onnx`));if(e.query){let t=e.query.toLowerCase();i=i.filter(e=>e.toLowerCase().includes(t))}return i.sort().map(t=>({id:t,name:t.replace(/^onnx-community\//,``),cached:m(t,e.cacheDir)}))}catch{return[]}}async function v(r,i={}){let{cacheDir:a,verbose:s=!1,isTTY:c,stream:u=n.stderr,progress:f,noProgress:p,abortSignal:m}=i,h=l.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),g,_;h?(g=h.url,_=h.fileName):r.startsWith(`http://`)||r.startsWith(`https://`)?(g=r,_=t.basename(new URL(r).pathname)):(_=t.basename(r).endsWith(`.llamafile`)?t.basename(r):`${t.basename(r)}.llamafile`,g=`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/${_}`);let v=d(a);e.mkdirSync(v,{recursive:!0});let y=t.join(v,_),b=t.join(v,`${_}.downloading.${Date.now()}`),x=o({modelId:_,stream:u,isTTY:c,enabled:f!==!1&&!p});try{s&&u?.write&&u.write(`[Llamafile] Downloading ${g}...\n`);let t=await(i.fetch||globalThis.fetch)(g,{headers:{"User-Agent":`ShadowClaw-CLI`},redirect:`follow`,signal:m});if(!t.ok)throw Error(`Failed to download ${g}: HTTP ${t.status} ${t.statusText}`);let n=parseInt(t.headers?.get?.(`content-length`)||`0`,10),a=e.createWriteStream(b),o=0;if(t.body){let{Readable:e}=await import(`node:stream`),r;if(typeof e.fromWeb==`function`&&typeof t.body.getReader==`function`)r=e.fromWeb(t.body);else if(typeof t.body[Symbol.asyncIterator]==`function`)r=t.body;else{let e=Buffer.from(await t.arrayBuffer());a.write(e),o=e.length}if(r)for await(let e of r){let t=Buffer.isBuffer(e)?e:Buffer.from(e);a.write(t),o+=t.length,x.update({status:`progress`,file:_,loaded:o,total:n,progress:n>0?o/n*100:void 0})}}a.end(),await new Promise((e,t)=>{a.on(`finish`,e),a.on(`error`,t)}),e.renameSync(b,y);try{e.chmodSync(y,493)}catch{}return x.finish(),{success:!0,modelId:r,path:y}}catch(t){try{e.existsSync(b)&&e.unlinkSync(b)}catch{}let n=t instanceof Error?t.message:String(t);return x.fail(`✖ Error downloading ${_}: ${n}`),{success:!1,modelId:r,error:n}}}async function y(e,t={}){if(f(e))return v(e,t);let{verbose:r=!1,isTTY:i,stream:a=n.stderr,service:s,progress:c,noProgress:l}=t,u=s;if(!u){let{getAgentCore:e}=await import(`./chunk-CCcF5T-c.js`),t=await e();if(typeof t.createTransformersRuntimeService!=`function`)throw Error(`createTransformersRuntimeService is not available in agent core`);u=t.createTransformersRuntimeService()}let d=o({modelId:e,stream:a,isTTY:i,enabled:c!==!1&&!l});try{return r&&a?.write&&a.write(`[Transformers.js] Prewarming model ${e}...\n`),await u.prewarmModel({modelId:e,verbose:r,onProgress:e=>{d.update(e)}}),d.finish(),{success:!0,modelId:e}}catch(t){let n=t instanceof Error?t.message:String(t);return d.fail(`✖ Error downloading ${e}: ${n}`),{success:!1,modelId:e,error:n}}}async function b(a={}){let o=t.resolve(a.contentRoot||n.cwd()),s=t.resolve(a.workspaceDir||o),l=a.cacheDir,u=a.onExit||(e=>n.exit(e)),d=a.stdin||n.stdin,h=a.stdout||n.stderr,g=!1,b=null;if(d===n.stdin&&!n.stdin.isTTY&&!n.env.CI&&(n.stderr.isTTY||n.stdout.isTTY))try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;b=e.openSync(t,`r`),d=new i.ReadStream(b),h=n.stderr.isTTY?n.stderr:n.stdout,g=!0}catch{try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;d=e.createReadStream(t),h=n.stderr.isTTY?n.stderr:n.stdout,g=!0}catch{}}let x=r.createInterface({input:d,output:h}),S=!1,C=()=>{if(!S){S=!0,h.write(`
2
+ `)),i}function p(e,t){if(!o||!r?.write)return;let n=l.get(e);if(!n)return;let i=typeof r.columns==`number`&&r.columns>0?r.columns:null,a=i&&t.length>i-1?t.slice(0,i-1):t,s=c.length-1-n.lineIndex;s>0?r.write(`\x1b[${s}A\r\x1b[2K${a}\x1b[${s}B\r`):r.write(`\r\x1b[2K${a}`)}function m(e){if(u||!e)return;let n=e.file||(e.status===`progress_total`?`Total`:t);if(e.status===`initiate`){if(f(n),!o&&r?.write)r.write(`[Download] Starting ${t}${n?` (${n})`:``}...\n`);else if(o){let e=n?` [${n}]`:``;p(n,`Downloading ${t}${e} ${d(0)} 0.0%`)}return}if(e.status===`progress`||e.status===`progress_total`){let i=typeof e.progress==`number`?e.progress:0,s=Math.max(0,Math.min(100,i)),c=s/100,l=Number(e.loaded)||0,u=Number(e.total)||0,m=f(n,l,u),h=Date.now();if(o){if(h-m.lastRenderedTime<30&&s<100&&Math.abs(s-m.lastPct)<.5)return;m.lastRenderedTime=h,m.lastPct=s,m.loaded=l,m.total=u;let e=d(c),r=`${s.toFixed(1)}%`.padStart(6,` `),i=``;u>0?i=` (${a(l)} / ${a(u)})`:l>0&&(i=` (${a(l)})`);let o=n?` [${n}]`:``;p(n,`Downloading ${t}${o} ${e} ${r}${i}`)}else{let e=Math.floor(s/20)*20;if(e>m.lastPct&&(e>0||s===0)){m.lastPct=e;let i=u>0?` (${a(l)} / ${a(u)})`:``;r?.write&&r.write(`[Download] ${t}${n?` [${n}]`:``}: ${e}%${i}\n`)}}return}if(e.status===`done`){let i=l.get(n);if(i)if(i.isDone=!0,o){let e=d(1),r=i.total||i.loaded,o=r>0?` (${a(r)})`:``,s=n?` [${n}]`:``;p(n,`Downloading ${t}${s} ${e} 100.0%${o}`)}else r?.write&&r.write(`[Download] Finished file: ${n}\n`);else!o&&e.file&&r?.write&&r.write(`[Download] Finished file: ${e.file}\n`)}}function h(e){if(u)return;u=!0;let n=`✔ Model ${t} downloaded successfully.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}function g(e){if(u)return;u=!0;let n=`✖ Failed to download ${t}.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}return{update:m,finish:h,fail:g}}const s=[{id:`onnx-community/gemma-3-1b-it-ONNX-GQA`,name:`Gemma 3 1B GQA (ONNX)`,description:`Google Gemma 3 1B with Grouped Query Attention (Default)`,contextLength:32e3,supportsTools:!0,recommended:!0},{id:`onnx-community/gemma-4-E2B-it-ONNX`,name:`Gemma 4 E2B (ONNX)`,description:`Google Gemma 4 E2B instruction-tuned ONNX model`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/gemma-4-E4B-it-ONNX`,name:`Gemma 4 E4B (ONNX)`,description:`Google Gemma 4 E4B instruction-tuned ONNX model`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/Qwen3-0.6B-ONNX`,name:`Qwen 3 0.6B (ONNX)`,description:`Fast, compact, tool-calling supported 0.6B model`,contextLength:32768,supportsTools:!0,recommended:!1}],c=`onnx-community/gemma-3-1b-it-ONNX-GQA`,l=[{id:`mozilla-ai/gemma-4-E2B-it-Q5_K_M.llamafile`,name:`Gemma 4 E2B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E2B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E2B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E2B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!1},{id:`mozilla-ai/gemma-4-E4B-it-Q5_K_M.llamafile`,name:`Gemma 4 E4B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E4B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E4B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E4B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-0.8B-Q8_0.llamafile`,name:`Qwen 3.5 0.8B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 0.8B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-0.8B-Q8_0.llamafile`,fileName:`Qwen3.5-0.8B-Q8_0.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-2B-Q8_0.llamafile`,name:`Qwen 3.5 2B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 2B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-2B-Q8_0.llamafile`,fileName:`Qwen3.5-2B-Q8_0.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-4B-Q5_K_S.llamafile`,name:`Qwen 3.5 4B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 4B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-4B-Q5_K_S.llamafile`,fileName:`Qwen3.5-4B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-9B-Q5_K_S.llamafile`,name:`Qwen 3.5 9B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 9B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-9B-Q5_K_S.llamafile`,fileName:`Qwen3.5-9B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!1}];function u(e){return e?t.resolve(e):t.resolve(n.cwd(),`assets/cache/transformers.js`)}function d(e){return e?t.resolve(e,`llamafile`):t.resolve(n.cwd(),`assets/cache/llamafile`)}function f(e){return!e||typeof e!=`string`?!1:e.endsWith(`.llamafile`)||e.includes(`llamafile`)||l.some(n=>n.id===e||n.fileName===e||n.url===e||n.fileName===t.basename(e))}function p(n,r){let i=d(r);if(!e.existsSync(i))return!1;let a=t.basename(n),o=a.endsWith(`.llamafile`)?a:`${a}.llamafile`,s=t.join(i,o);try{if(e.existsSync(s))return e.statSync(s).size>0}catch{}return!1}function m(n,r){if(f(n))return p(n,r);let i=u(r);if(!e.existsSync(i))return!1;let a=[t.join(i,n),t.join(i,`models--${n.replace(/\//g,`--`)}`),t.join(i,n.split(`/`)[1]||n)];for(let t of a)try{if(e.existsSync(t)&&e.readdirSync(t).length>0)return!0}catch{}return!1}function h(e){return s.map(t=>({...t,cached:m(t.id,e)}))}function g(e){return l.map(t=>({...t,cached:p(t.fileName,e)}))}async function _(e={}){let t=e.endpoint||`https://huggingface.co/api/models?author=onnx-community&pipeline_tag=text-generation&limit=100`;try{let n=await fetch(t,{headers:{"User-Agent":`ShadowClaw-CLI`},signal:AbortSignal.timeout(e.timeoutMs||8e3)});if(!n.ok)return[];let r=await n.json();if(!Array.isArray(r))return[];let i=r.map(e=>typeof e?.id==`string`?e.id:``).filter(e=>e&&e.toLowerCase().includes(`onnx`));if(e.query){let t=e.query.toLowerCase();i=i.filter(e=>e.toLowerCase().includes(t))}return i.sort().map(t=>({id:t,name:t.replace(/^onnx-community\//,``),cached:m(t,e.cacheDir)}))}catch{return[]}}async function v(r,i={}){let{cacheDir:a,verbose:s=!1,isTTY:c,stream:u=n.stderr,progress:f,noProgress:p,abortSignal:m}=i,h=l.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),g,_;h?(g=h.url,_=h.fileName):r.startsWith(`http://`)||r.startsWith(`https://`)?(g=r,_=t.basename(new URL(r).pathname)):(_=t.basename(r).endsWith(`.llamafile`)?t.basename(r):`${t.basename(r)}.llamafile`,g=`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/${_}`);let v=d(a);e.mkdirSync(v,{recursive:!0});let y=t.join(v,_),b=t.join(v,`${_}.downloading.${Date.now()}`),x=o({modelId:_,stream:u,isTTY:c,enabled:f!==!1&&!p});try{s&&u?.write&&u.write(`[Llamafile] Downloading ${g}...\n`);let t=await(i.fetch||globalThis.fetch)(g,{headers:{"User-Agent":`ShadowClaw-CLI`},redirect:`follow`,signal:m});if(!t.ok)throw Error(`Failed to download ${g}: HTTP ${t.status} ${t.statusText}`);let n=parseInt(t.headers?.get?.(`content-length`)||`0`,10),a=e.createWriteStream(b),o=0;if(t.body){let{Readable:e}=await import(`node:stream`),r;if(typeof e.fromWeb==`function`&&typeof t.body.getReader==`function`)r=e.fromWeb(t.body);else if(typeof t.body[Symbol.asyncIterator]==`function`)r=t.body;else{let e=Buffer.from(await t.arrayBuffer());a.write(e),o=e.length}if(r)for await(let e of r){let t=Buffer.isBuffer(e)?e:Buffer.from(e);a.write(t),o+=t.length,x.update({status:`progress`,file:_,loaded:o,total:n,progress:n>0?o/n*100:void 0})}}a.end(),await new Promise((e,t)=>{a.on(`finish`,e),a.on(`error`,t)}),e.renameSync(b,y);try{e.chmodSync(y,493)}catch{}return x.finish(),{success:!0,modelId:r,path:y}}catch(t){try{e.existsSync(b)&&e.unlinkSync(b)}catch{}let n=t instanceof Error?t.message:String(t);return x.fail(`✖ Error downloading ${_}: ${n}`),{success:!1,modelId:r,error:n}}}async function y(e,t={}){if(f(e))return v(e,t);let{verbose:r=!1,isTTY:i,stream:a=n.stderr,service:s,progress:c,noProgress:l}=t,u=s;if(!u){let{getAgentCore:e}=await import(`./chunk-3oLxlxPn.js`),t=await e();if(typeof t.createTransformersRuntimeService!=`function`)throw Error(`createTransformersRuntimeService is not available in agent core`);u=t.createTransformersRuntimeService()}let d=o({modelId:e,stream:a,isTTY:i,enabled:c!==!1&&!l});try{return r&&a?.write&&a.write(`[Transformers.js] Prewarming model ${e}...\n`),await u.prewarmModel({modelId:e,verbose:r,onProgress:e=>{d.update(e)}}),d.finish(),{success:!0,modelId:e}}catch(t){let n=t instanceof Error?t.message:String(t);return d.fail(`✖ Error downloading ${e}: ${n}`),{success:!1,modelId:e,error:n}}}async function b(a={}){let o=t.resolve(a.contentRoot||n.cwd()),s=t.resolve(a.workspaceDir||o),l=a.cacheDir,u=a.onExit||(e=>n.exit(e)),d=a.stdin||n.stdin,h=a.stdout||n.stderr,g=!1,b=null;if(d===n.stdin&&!n.stdin.isTTY&&!n.env.CI&&(n.stderr.isTTY||n.stdout.isTTY))try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;b=e.openSync(t,`r`),d=new i.ReadStream(b),h=n.stderr.isTTY?n.stderr:n.stdout,g=!0}catch{try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;d=e.createReadStream(t),h=n.stderr.isTTY?n.stderr:n.stdout,g=!0}catch{}}let x=r.createInterface({input:d,output:h}),S=!1,C=()=>{if(!S){S=!0,h.write(`
3
3
  Operation cancelled.
4
4
  `);try{x.close()}catch{}u(130)}};x.on(`SIGINT`,C),d&&typeof d.on==`function`&&d!==n.stdin&&d.on(`SIGINT`,C);let w=()=>C();n.on(`SIGINT`,w);let T=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&C()};d&&typeof d.on==`function`&&d.on(`data`,T);try{h.write(`
5
5
  ShadowClaw CLI Agent — Model Selection:
@@ -1 +1 @@
1
- import{r as e}from"./chunk-BcTH_-FL.js";import{i as t}from"./chunk-DFLqhyP_.js";import{t as n}from"./chunk-Dhh0lHO6.js";import"dompurify";let r=[`youtube.com`,`youtube-nocookie.com`,`youtu.be`,`xt-ml.github.io`,`kherrick.github.io`];function i(e){e.map(e=>a(e)).filter(Boolean)}i(r);function a(e){let t=e.trim();if(!t)return()=>!1;if(t.startsWith(`/`)&&(t.endsWith(`/`)||/\/[gimuy]*$/.test(t)))try{let e=t.lastIndexOf(`/`),n=t.slice(1,e),r=t.slice(e+1),i=new RegExp(n,r||`i`);return e=>i.test(e)}catch{}if(t.includes(`^`)||t.includes(`$`)||t.includes(`(`)&&t.includes(`)`))try{let e=new RegExp(t,`i`);return t=>e.test(t)}catch{}if(t.startsWith(`*.`)){let e=t.slice(2).toLowerCase();return t=>{let n=t.toLowerCase();return n===e||n.endsWith(`.`+e)}}let n=t.toLowerCase();return e=>{let t=e.toLowerCase();return t===n||t.endsWith(`.`+n)}}const o=[],s=[];let c=new Set(o.map(e=>e.toLowerCase().trim())),l=[...s];function u(e){e.map(e=>a(e)).filter(Boolean)}u(l);function d(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.toLowerCase().trim():``).filter(Boolean):typeof e==`string`?e.split(/[\n,]+/).map(e=>e.toLowerCase().trim()).filter(Boolean):[]}function f(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):typeof e==`string`?e.split(/[\n,]+/).map(e=>e.trim()).filter(Boolean):[]}function p(e){let t=d(e);c=new Set(t)}function m(e){let t=f(e);l=t,u(t)}function h(e){if(!e||typeof e!=`string`)return!1;let t=e.trim().toLowerCase();return!t.includes(`-`)||t===`shadow-claw`||t.startsWith(`shadow-claw-`)?!0:c.has(t)}const g=`allow-modals allow-scripts allow-popups allow-popups-to-escape-sandbox`,_=[`'self'`,`blob:`,`data:`],v=[`'self'`,`blob:`,`data:`],y=[`'self'`,`'unsafe-inline'`,`https:`,`http:`],b=[`'self'`,`blob:`,`data:`,`https:`,`http:`];let x=g;[..._],[...v],[...y],[...b];function S(e){x=Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean).join(` `):typeof e==`string`&&e.trim()?e.trim():g}function C(e){if(!e||typeof e!=`object`)return;let t=e.allowedCustomElements||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedElements:void 0);t!==void 0&&p(t);let n=e.allowedCustomElementDomains||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedDomains:void 0);n!==void 0&&m(n),e.security?.iframeSandbox===void 0?(e.security?.allowSameOrigin===!0||e.security?.allowIframeSameOrigin===!0)&&(x.includes(`allow-same-origin`)||(x=`${x} allow-same-origin`.trim())):S(e.security.iframeSandbox),e.security?.workerSrc!==void 0&&f(e.security.workerSrc),e.security?.connectSrc!==void 0&&f(e.security.connectSrc),e.security?.scriptSrc!==void 0&&f(e.security.scriptSrc),e.security?.styleSrc!==void 0&&f(e.security.styleSrc),e.security?.imgSrc!==void 0&&f(e.security.imgSrc)}function w(){if(typeof document>`u`)return;let e=document.getElementById(`shadow-claw-site-config`);if(e&&e.textContent)try{C(JSON.parse(e.textContent))}catch{}}async function T(r){try{let i=r??await t();if(!i)return;let[a,o]=await Promise.all([n(i,e.ALLOWED_CUSTOM_ELEMENTS),n(i,e.ALLOWED_CUSTOM_ELEMENT_HOST_PATTERNS)]);if(typeof a==`string`&&a.trim())try{p(JSON.parse(a))}catch{p(a)}if(typeof o==`string`&&o.trim())try{m(JSON.parse(o))}catch{m(o)}}catch(e){console.warn(`Failed to load custom element security from db:`,e)}}let E=null,D=!1;function O(){w(),!(D||typeof customElements>`u`||typeof customElements.define!=`function`)&&(E=customElements.define.bind(customElements),customElements.define=function(e,t,n){if(!h((e||``).toLowerCase().trim())){let t=`[Security] Registration blocked: <${e}> is not an approved custom element.`;throw console.error(t),Error(t)}return E(e,t,n)},D=!0)}function k(e=typeof document<`u`?document.documentElement:null){if(typeof MutationObserver>`u`||!e)return null;if(typeof e.querySelectorAll==`function`)try{e.querySelectorAll(`*`).forEach(e=>{let t=e.tagName?e.tagName.toLowerCase():``;t.includes(`-`)&&!h(t)&&(console.warn(`[Security] Removing existing unapproved custom element: <${t}>`),e.remove())})}catch{}let t=new MutationObserver(e=>{for(let t of e)t.addedNodes.forEach(e=>{if(e.nodeType===1){let t=e,n=t.tagName?t.tagName.toLowerCase():``;n.includes(`-`)&&!h(n)&&(console.warn(`[Security] Removing unapproved custom element: <${n}>`),t.remove())}})});return t.observe(e,{childList:!0,subtree:!0}),t}function A(e){if(e instanceof Blob)return e.arrayBuffer();if(e instanceof ArrayBuffer)return Promise.resolve(e.slice(0));let{buffer:t,byteOffset:n,byteLength:r}=e;return Promise.resolve(t.slice(n,n+r))}function j(e){return Array.from(new Uint8Array(e)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}async function M(e){let t=await A(e),n=globalThis.crypto?.subtle??globalThis.window?.crypto?.subtle??(typeof process<`u`?(await import(`node:crypto`)).webcrypto?.subtle:void 0);if(!n)throw Error(`crypto.subtle is not available in current environment`);return j(await n.digest(`SHA-256`,t))}const N=`shadowclaw`;let P;function F(){let e=globalThis.trustedTypes;return!e||typeof e.createPolicy!=`function`?null:e}function I(){if(P!==void 0)return P;let e=F();if(!e)return P=null,P;if(typeof e.getPolicy==`function`){let t=e.getPolicy(N);if(t)return P=t,P}try{P=e.createPolicy(N,{createHTML:e=>e,createScriptURL:e=>e})}catch{P=typeof e.getPolicy==`function`?e.getPolicy(N)??null:null}return P}function L(e){let t=I();return!t||typeof t.createScriptURL!=`function`?e:t.createScriptURL(e)}export{O as a,k as i,M as n,T as o,C as r,L as t};
1
+ import{r as e}from"./chunk-CXAobnJd.js";import{i as t}from"./chunk-DFLqhyP_.js";import{t as n}from"./chunk-Dhh0lHO6.js";import"dompurify";let r=[`youtube.com`,`youtube-nocookie.com`,`youtu.be`,`xt-ml.github.io`,`kherrick.github.io`];function i(e){e.map(e=>a(e)).filter(Boolean)}i(r);function a(e){let t=e.trim();if(!t)return()=>!1;if(t.startsWith(`/`)&&(t.endsWith(`/`)||/\/[gimuy]*$/.test(t)))try{let e=t.lastIndexOf(`/`),n=t.slice(1,e),r=t.slice(e+1),i=new RegExp(n,r||`i`);return e=>i.test(e)}catch{}if(t.includes(`^`)||t.includes(`$`)||t.includes(`(`)&&t.includes(`)`))try{let e=new RegExp(t,`i`);return t=>e.test(t)}catch{}if(t.startsWith(`*.`)){let e=t.slice(2).toLowerCase();return t=>{let n=t.toLowerCase();return n===e||n.endsWith(`.`+e)}}let n=t.toLowerCase();return e=>{let t=e.toLowerCase();return t===n||t.endsWith(`.`+n)}}const o=[],s=[];let c=new Set(o.map(e=>e.toLowerCase().trim())),l=[...s];function u(e){e.map(e=>a(e)).filter(Boolean)}u(l);function d(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.toLowerCase().trim():``).filter(Boolean):typeof e==`string`?e.split(/[\n,]+/).map(e=>e.toLowerCase().trim()).filter(Boolean):[]}function f(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):typeof e==`string`?e.split(/[\n,]+/).map(e=>e.trim()).filter(Boolean):[]}function p(e){let t=d(e);c=new Set(t)}function m(e){let t=f(e);l=t,u(t)}function h(e){if(!e||typeof e!=`string`)return!1;let t=e.trim().toLowerCase();return!t.includes(`-`)||t===`shadow-claw`||t.startsWith(`shadow-claw-`)?!0:c.has(t)}const g=`allow-modals allow-scripts allow-popups allow-popups-to-escape-sandbox`,_=[`'self'`,`blob:`,`data:`],v=[`'self'`,`blob:`,`data:`],y=[`'self'`,`'unsafe-inline'`,`https:`,`http:`],b=[`'self'`,`blob:`,`data:`,`https:`,`http:`];let x=g;[..._],[...v],[...y],[...b];function S(e){x=Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean).join(` `):typeof e==`string`&&e.trim()?e.trim():g}function C(e){if(!e||typeof e!=`object`)return;let t=e.allowedCustomElements||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedElements:void 0);t!==void 0&&p(t);let n=e.allowedCustomElementDomains||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedDomains:void 0);n!==void 0&&m(n),e.security?.iframeSandbox===void 0?(e.security?.allowSameOrigin===!0||e.security?.allowIframeSameOrigin===!0)&&(x.includes(`allow-same-origin`)||(x=`${x} allow-same-origin`.trim())):S(e.security.iframeSandbox),e.security?.workerSrc!==void 0&&f(e.security.workerSrc),e.security?.connectSrc!==void 0&&f(e.security.connectSrc),e.security?.scriptSrc!==void 0&&f(e.security.scriptSrc),e.security?.styleSrc!==void 0&&f(e.security.styleSrc),e.security?.imgSrc!==void 0&&f(e.security.imgSrc)}function w(){if(typeof document>`u`)return;let e=document.getElementById(`shadow-claw-site-config`);if(e&&e.textContent)try{C(JSON.parse(e.textContent))}catch{}}async function T(r){try{let i=r??await t();if(!i)return;let[a,o]=await Promise.all([n(i,e.ALLOWED_CUSTOM_ELEMENTS),n(i,e.ALLOWED_CUSTOM_ELEMENT_HOST_PATTERNS)]);if(typeof a==`string`&&a.trim())try{p(JSON.parse(a))}catch{p(a)}if(typeof o==`string`&&o.trim())try{m(JSON.parse(o))}catch{m(o)}}catch(e){console.warn(`Failed to load custom element security from db:`,e)}}let E=null,D=!1;function O(){w(),!(D||typeof customElements>`u`||typeof customElements.define!=`function`)&&(E=customElements.define.bind(customElements),customElements.define=function(e,t,n){if(!h((e||``).toLowerCase().trim())){let t=`[Security] Registration blocked: <${e}> is not an approved custom element.`;throw console.error(t),Error(t)}return E(e,t,n)},D=!0)}function k(e=typeof document<`u`?document.documentElement:null){if(typeof MutationObserver>`u`||!e)return null;if(typeof e.querySelectorAll==`function`)try{e.querySelectorAll(`*`).forEach(e=>{let t=e.tagName?e.tagName.toLowerCase():``;t.includes(`-`)&&!h(t)&&(console.warn(`[Security] Removing existing unapproved custom element: <${t}>`),e.remove())})}catch{}let t=new MutationObserver(e=>{for(let t of e)t.addedNodes.forEach(e=>{if(e.nodeType===1){let t=e,n=t.tagName?t.tagName.toLowerCase():``;n.includes(`-`)&&!h(n)&&(console.warn(`[Security] Removing unapproved custom element: <${n}>`),t.remove())}})});return t.observe(e,{childList:!0,subtree:!0}),t}function A(e){if(e instanceof Blob)return e.arrayBuffer();if(e instanceof ArrayBuffer)return Promise.resolve(e.slice(0));let{buffer:t,byteOffset:n,byteLength:r}=e;return Promise.resolve(t.slice(n,n+r))}function j(e){return Array.from(new Uint8Array(e)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}async function M(e){let t=await A(e),n=globalThis.crypto?.subtle??globalThis.window?.crypto?.subtle??(typeof process<`u`?(await import(`node:crypto`)).webcrypto?.subtle:void 0);if(!n)throw Error(`crypto.subtle is not available in current environment`);return j(await n.digest(`SHA-256`,t))}const N=`shadowclaw`;let P;function F(){let e=globalThis.trustedTypes;return!e||typeof e.createPolicy!=`function`?null:e}function I(){if(P!==void 0)return P;let e=F();if(!e)return P=null,P;if(typeof e.getPolicy==`function`){let t=e.getPolicy(N);if(t)return P=t,P}try{P=e.createPolicy(N,{createHTML:e=>e,createScriptURL:e=>e})}catch{P=typeof e.getPolicy==`function`?e.getPolicy(N)??null:null}return P}function L(e){let t=I();return!t||typeof t.createScriptURL!=`function`?e:t.createScriptURL(e)}export{O as a,k as i,M as n,T as o,C as r,L as t};
@@ -1,4 +1,4 @@
1
- import{t as e}from"./chunk-DxIsgrAF.js";import{t}from"./chunk-DFh_pp_7.js";import{a as n,i as r,n as i,r as a,t as o}from"./chunk-BQCWtrzh.js";import{c as s,o as c,u as l}from"./chunk-Drq18VZe.js";import{_ as u,b as d,g as f,l as p,r as m,s as h,y as g}from"./chunk-BcTH_-FL.js";import{a as _,i as v,n as y,o as b,r as x}from"./chunk-DFLqhyP_.js";import{t as S}from"./chunk-Dhh0lHO6.js";import{t as C}from"./chunk-da0bsiOn.js";import{A as w,B as T,C as E,D,E as ee,F as O,H as k,I as A,L as te,M as j,N as M,O as ne,P as N,R as P,S as re,T as ie,U as ae,V as oe,W as se,_ as ce,a as le,b as F,c as ue,d as de,f as fe,g as I,h as L,i as pe,j as me,k as he,l as ge,m as _e,o as ve,p as ye,s as be,u as R,v as xe,w as Se,x as Ce,y as we,z as Te}from"./chunk-DIbSoQmd2.js";import{d as Ee,i as De,l as Oe,n as ke,r as Ae,t as je}from"./chunk-NH8koEis2.js";import{t as Me}from"./chunk-FEL5dv0w2.js";import{n as Ne,t as Pe}from"./chunk-WMPAfIvV2.js";import{createRequire as Fe}from"node:module";import{constants as Ie,existsSync as Le}from"node:fs";import z from"node:path";import{fileURLToPath as Re}from"node:url";import{env as ze}from"node:process";import{exec as Be,spawn as Ve}from"node:child_process";import{access as He,mkdir as Ue,readFile as We,readdir as Ge,rm as Ke,rmdir as qe,stat as B,unlink as Je,writeFile as V}from"node:fs/promises";import H from"process";import{Buffer as U}from"buffer";import{EventEmitter as Ye}from"node:events";import{isIP as Xe}from"node:net";import{runInNewContext as Ze}from"node:vm";import{DatabaseSync as Qe}from"node:sqlite";var $e=class{kind=`file`;name;_path;constructor(e){this._path=e,this.name=z.basename(e)}async isSameEntry(e){return!e||typeof e!=`object`?!1:e.kind===this.kind&&e._path===this._path}async getFile(){let e=await We(this._path);return{size:e.length,type:`application/octet-stream`,async text(){return e.toString(`utf8`)},async arrayBuffer(){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}}}async createWritable(){let e=[],t=this._path,n=async t=>{if(typeof t==`string`)e.push(U.from(t,`utf8`));else if(t instanceof Uint8Array)e.push(U.from(t));else if(t instanceof ArrayBuffer)e.push(U.from(t));else if(t instanceof Blob){if(typeof t.arrayBuffer==`function`){let n=await t.arrayBuffer();e.push(U.from(n))}else if(typeof t.bytes==`function`){let n=await t.bytes();e.push(U.from(n))}else if(typeof t.text==`function`){let n=await t.text();e.push(U.from(n,`utf8`))}else if(t._buffer)e.push(U.from(t._buffer));else if(typeof FileReader<`u`){let n=await new Promise((e,n)=>{let r=new FileReader;r.onload=()=>e(r.result),r.onerror=n,r.readAsArrayBuffer(t)});e.push(U.from(n))}}else t&&typeof t==`object`&&`data`in t?await n(t.data):e.push(U.from(new Uint8Array(t)))};return{write:n,async close(){let n=U.concat(e);await V(t,n)}}}},et=class e{kind=`directory`;name;_path;_rootPath;constructor(e,t){this._path=z.resolve(e),this._rootPath=t?z.resolve(t):this._path,this.name=z.basename(this._path)||this._path}_resolveChild(e){if(!e||e===`.`||e.includes(`\0`)){let t=Error(`Invalid path name: "${e}"`);throw t.name=`TypeError`,t}let t=z.resolve(this._path,e),n=z.relative(this._path,t),r=z.relative(this._rootPath,t);if(n.startsWith(`..`)||z.isAbsolute(n)||r.startsWith(`..`)||z.isAbsolute(r)){let t=Error(`SecurityError: Path traversal outside workspace root is not allowed: "${e}"`);throw t.name=`SecurityError`,t}return t}async getDirectoryHandle(t,n){let r=this._resolveChild(t);if(n?.create)await Ue(r,{recursive:!0});else if(!Le(r)){let e=Error(`NotFoundError: ${r} does not exist`);throw e.name=`NotFoundError`,e}if(!(await B(r)).isDirectory()){let e=Error(`TypeMismatchError: "${t}" is a file, not a directory`);throw e.name=`TypeMismatchError`,e}return new e(r,this._rootPath)}async getFileHandle(e,t){let n=this._resolveChild(e);if(t?.create)Le(n)||await V(n,``);else if(!Le(n)){let e=Error(`NotFoundError: ${n} does not exist`);throw e.name=`NotFoundError`,e}if((await B(n)).isDirectory()){let t=Error(`TypeMismatchError: "${e}" is a directory, not a file`);throw t.name=`TypeMismatchError`,t}return new $e(n)}async*entries(){let t;try{t=await Ge(this._path)}catch{return}for(let n of t){let t=z.join(this._path,n);try{(await B(t)).isDirectory()?yield[n,new e(t,this._rootPath)]:yield[n,new $e(t)]}catch{}}}async isSameEntry(e){return!e||typeof e!=`object`?!1:e.kind===this.kind&&e._path===this._path}async removeEntry(e,t){let n=this._resolveChild(e);if(!Le(n)){let e=Error(`NotFoundError: ${n} does not exist`);throw e.name=`NotFoundError`,e}if((await B(n)).isDirectory())if(t?.recursive)await Ke(n,{recursive:!0});else try{await qe(n)}catch(t){if(t.code===`ENOTEMPTY`){let t=Error(`InvalidModificationError: directory is not empty: "${e}"`);throw t.name=`InvalidModificationError`,t}throw t}else await Je(n)}};let tt=null;function nt(){return tt}function rt(e){tt=z.resolve(e),l(new et(e))}globalThis.__setStorageRootFromPath=rt,globalThis.__getStorageRootPath=nt;const it=({command:e,stdin:t,timeoutSec:n})=>new Promise(r=>{let i=nt?.()??globalThis.__getStorageRootPath?.()??H.cwd(),a=Be(e,{timeout:n*1e3,maxBuffer:10*1024*1024,cwd:i},(e,t,n)=>{let i=t||``;n&&(i+=(i?`
1
+ import{t as e}from"./chunk-DxIsgrAF.js";import{t}from"./chunk-DFh_pp_7.js";import{a as n,i as r,n as i,r as a,t as o}from"./chunk-BQCWtrzh.js";import{c as s,o as c,u as l}from"./chunk-B--ueArB.js";import{_ as u,b as d,g as f,l as p,r as m,s as h,y as g}from"./chunk-CXAobnJd.js";import{a as _,i as v,n as y,o as b,r as x}from"./chunk-DFLqhyP_.js";import{t as S}from"./chunk-Dhh0lHO6.js";import{t as C}from"./chunk-P4JSeFBI.js";import{A as w,B as T,C as E,D,E as ee,F as O,H as k,I as A,L as te,M as j,N as M,O as ne,P as N,R as P,S as re,T as ie,U as ae,V as oe,W as se,_ as ce,a as le,b as F,c as ue,d as de,f as fe,g as I,h as L,i as pe,j as me,k as he,l as ge,m as _e,o as ve,p as ye,s as be,u as R,v as xe,w as Se,x as Ce,y as we,z as Te}from"./chunk-C6FFByBU2.js";import{d as Ee,i as De,l as Oe,n as ke,r as Ae,t as je}from"./chunk-nmDhxXH_2.js";import{t as Me}from"./chunk-FEL5dv0w2.js";import{n as Ne,t as Pe}from"./chunk-8CrZyP1b2.js";import{createRequire as Fe}from"node:module";import{constants as Ie,existsSync as Le}from"node:fs";import z from"node:path";import{fileURLToPath as Re}from"node:url";import{env as ze}from"node:process";import{exec as Be,spawn as Ve}from"node:child_process";import{access as He,mkdir as Ue,readFile as We,readdir as Ge,rm as Ke,rmdir as qe,stat as B,unlink as Je,writeFile as V}from"node:fs/promises";import H from"process";import{Buffer as U}from"buffer";import{EventEmitter as Ye}from"node:events";import{isIP as Xe}from"node:net";import{runInNewContext as Ze}from"node:vm";import{DatabaseSync as Qe}from"node:sqlite";var $e=class{kind=`file`;name;_path;constructor(e){this._path=e,this.name=z.basename(e)}async isSameEntry(e){return!e||typeof e!=`object`?!1:e.kind===this.kind&&e._path===this._path}async getFile(){let e=await We(this._path);return{size:e.length,type:`application/octet-stream`,async text(){return e.toString(`utf8`)},async arrayBuffer(){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}}}async createWritable(){let e=[],t=this._path,n=async t=>{if(typeof t==`string`)e.push(U.from(t,`utf8`));else if(t instanceof Uint8Array)e.push(U.from(t));else if(t instanceof ArrayBuffer)e.push(U.from(t));else if(t instanceof Blob){if(typeof t.arrayBuffer==`function`){let n=await t.arrayBuffer();e.push(U.from(n))}else if(typeof t.bytes==`function`){let n=await t.bytes();e.push(U.from(n))}else if(typeof t.text==`function`){let n=await t.text();e.push(U.from(n,`utf8`))}else if(t._buffer)e.push(U.from(t._buffer));else if(typeof FileReader<`u`){let n=await new Promise((e,n)=>{let r=new FileReader;r.onload=()=>e(r.result),r.onerror=n,r.readAsArrayBuffer(t)});e.push(U.from(n))}}else t&&typeof t==`object`&&`data`in t?await n(t.data):e.push(U.from(new Uint8Array(t)))};return{write:n,async close(){let n=U.concat(e);await V(t,n)}}}},et=class e{kind=`directory`;name;_path;_rootPath;constructor(e,t){this._path=z.resolve(e),this._rootPath=t?z.resolve(t):this._path,this.name=z.basename(this._path)||this._path}_resolveChild(e){if(!e||e===`.`||e.includes(`\0`)){let t=Error(`Invalid path name: "${e}"`);throw t.name=`TypeError`,t}let t=z.resolve(this._path,e),n=z.relative(this._path,t),r=z.relative(this._rootPath,t);if(n.startsWith(`..`)||z.isAbsolute(n)||r.startsWith(`..`)||z.isAbsolute(r)){let t=Error(`SecurityError: Path traversal outside workspace root is not allowed: "${e}"`);throw t.name=`SecurityError`,t}return t}async getDirectoryHandle(t,n){let r=this._resolveChild(t);if(n?.create)await Ue(r,{recursive:!0});else if(!Le(r)){let e=Error(`NotFoundError: ${r} does not exist`);throw e.name=`NotFoundError`,e}if(!(await B(r)).isDirectory()){let e=Error(`TypeMismatchError: "${t}" is a file, not a directory`);throw e.name=`TypeMismatchError`,e}return new e(r,this._rootPath)}async getFileHandle(e,t){let n=this._resolveChild(e);if(t?.create)Le(n)||await V(n,``);else if(!Le(n)){let e=Error(`NotFoundError: ${n} does not exist`);throw e.name=`NotFoundError`,e}if((await B(n)).isDirectory()){let t=Error(`TypeMismatchError: "${e}" is a directory, not a file`);throw t.name=`TypeMismatchError`,t}return new $e(n)}async*entries(){let t;try{t=await Ge(this._path)}catch{return}for(let n of t){let t=z.join(this._path,n);try{(await B(t)).isDirectory()?yield[n,new e(t,this._rootPath)]:yield[n,new $e(t)]}catch{}}}async isSameEntry(e){return!e||typeof e!=`object`?!1:e.kind===this.kind&&e._path===this._path}async removeEntry(e,t){let n=this._resolveChild(e);if(!Le(n)){let e=Error(`NotFoundError: ${n} does not exist`);throw e.name=`NotFoundError`,e}if((await B(n)).isDirectory())if(t?.recursive)await Ke(n,{recursive:!0});else try{await qe(n)}catch(t){if(t.code===`ENOTEMPTY`){let t=Error(`InvalidModificationError: directory is not empty: "${e}"`);throw t.name=`InvalidModificationError`,t}throw t}else await Je(n)}};let tt=null;function nt(){return tt}function rt(e){tt=z.resolve(e),l(new et(e))}globalThis.__setStorageRootFromPath=rt,globalThis.__getStorageRootPath=nt;const it=({command:e,stdin:t,timeoutSec:n})=>new Promise(r=>{let i=nt?.()??globalThis.__getStorageRootPath?.()??H.cwd(),a=Be(e,{timeout:n*1e3,maxBuffer:10*1024*1024,cwd:i},(e,t,n)=>{let i=t||``;n&&(i+=(i?`
2
2
  `:``)+n),e&&!i&&(i=e.message),r(i)});t&&a.stdin&&(a.stdin.write(t),a.stdin.end())});M(it),globalThis.__headlessBashExecutor=it;function at(e,t,n){let r=t.input_tokens||0,i=t.output_tokens||0,a=t.cache_read_input_tokens||0,o=t.cache_creation_input_tokens||0;return{type:`token-usage`,payload:{groupId:e,inputTokens:r,outputTokens:i,cacheReadTokens:a,cacheCreationTokens:o,totalTokens:r+i+a+o,contextLimit:n}}}function W(e,t,n,r){N(Te(e,t,n,r))}async function*ot(e,t){let n=e.getReader(),r=new TextDecoder,i=``;try{for(;!t?.aborted;){let{done:e,value:t}=await n.read();if(e)break;i+=r.decode(t,{stream:!0});let a=i.split(`
3
3
 
4
4
  `);i=a.pop()||``;for(let e of a){let t=e.split(`