@wular/coder 0.4.2 → 0.4.5

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 (927) hide show
  1. package/dist/actions-CmfXOVXQ.js +20 -0
  2. package/dist/adapter-7SEiVsmp.js +1 -0
  3. package/dist/adapter-BLEfUqoQ.js +1 -0
  4. package/dist/adapter-H4GlcKQz.js +1 -0
  5. package/dist/add-Bffwutko.js +1 -0
  6. package/dist/add-Bz8uaOcu.js +1 -0
  7. package/dist/add-DTwoL7vJ.js +1 -0
  8. package/dist/add-cdKdz3K0.js +6 -0
  9. package/dist/add-json-BIcbE3Nf.js +1 -0
  10. package/dist/agent-BcXXkOmD.js +3 -0
  11. package/dist/agent-DQK_S1PE.js +1 -0
  12. package/dist/alias-KQ85bphl.js +2 -0
  13. package/dist/app-DaccLHrx.js +1 -0
  14. package/dist/approvals-CZt_aPCy.js +2 -0
  15. package/dist/approve-DxjyXd66.js +2 -0
  16. package/dist/apps-eueTmHR5.js +1 -0
  17. package/dist/archive-C3JazQuo.js +3 -0
  18. package/dist/archive-C9yrU4Wg.js +4 -0
  19. package/dist/archive-sweep-CHbOP-p6.js +1 -0
  20. package/dist/args-DEMOfLz2.js +1 -0
  21. package/dist/ask-DdYrvsTk.js +4 -0
  22. package/dist/auth-FTKev9__.js +1 -0
  23. package/dist/auth-q8CROpG-.js +1 -0
  24. package/dist/chat-bridge-18koyS7c.js +2 -0
  25. package/dist/chat-cknlIhVh.js +13 -0
  26. package/dist/cli-msOzZFXW.js +9 -0
  27. package/dist/cli.d.ts +1 -1
  28. package/dist/cli.js +1 -1
  29. package/dist/client-31YzOj-i.js +1 -0
  30. package/dist/config-BllYHi8S.js +3 -0
  31. package/dist/create-BYki3g42.js +1 -0
  32. package/dist/credentials-DLMuf9OT.js +1 -0
  33. package/dist/dash/standalone/node_modules/@tanstack/virtual-core/dist/esm/index.js +1238 -0
  34. package/dist/dash/standalone/node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js +34 -0
  35. package/dist/dash/standalone/node_modules/@tanstack/virtual-core/dist/esm/utils.js +74 -0
  36. package/dist/dash/standalone/node_modules/@tanstack/virtual-core/package.json +56 -0
  37. package/dist/dash/standalone/node_modules/@wular/pnext/config/ts/react.json +10 -0
  38. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/boot-bhemypxz.js +38 -0
  39. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/build-tier-0a96kmx3.js +2456 -0
  40. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/config-0tvz03a6.js +24 -0
  41. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/generate-myw9hef7.js +22 -0
  42. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-0r5eqfc7.js +279 -0
  43. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-0yjv5v47.js +105 -0
  44. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-11xpbfej.js +17 -0
  45. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-141vcwk6.js +109 -0
  46. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-29pq0kax.js +590 -0
  47. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-2vz0wzdn.js +59 -0
  48. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-2wfv4kvx.js +182 -0
  49. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-3e075kny.js +128 -0
  50. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-3ycf5ckv.js +472 -0
  51. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-4399bvd2.js +18 -0
  52. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-4da76t62.js +297 -0
  53. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-4zzebszd.js +10 -0
  54. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-52k54ykj.js +95 -0
  55. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-5hr4062s.js +70 -0
  56. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-68m3mwbd.js +84 -0
  57. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-6b009mt0.js +56 -0
  58. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-6kp9r0d9.js +11 -0
  59. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-6q7zvrap.js +134 -0
  60. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-71885zaq.js +284 -0
  61. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-73z4esab.js +38 -0
  62. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-79ngvam8.js +60 -0
  63. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-7wc9n8be.js +25 -0
  64. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-8ct7rqy3.js +198 -0
  65. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-8kcxdfya.js +206 -0
  66. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-9f49w76j.js +213 -0
  67. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-9hz3s0m8.js +851 -0
  68. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-akkrvjn6.js +535 -0
  69. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-b6wtkdp4.js +24 -0
  70. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-b7j671dj.js +207 -0
  71. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-bcws5eh2.js +35 -0
  72. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-bzd2ef7t.js +10 -0
  73. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-cjgqs13g.js +65 -0
  74. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-ckkdpht5.js +41 -0
  75. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-cn86z041.js +296 -0
  76. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-cvr4z22m.js +92 -0
  77. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-d158y67j.js +152 -0
  78. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-d1jsmhhk.js +955 -0
  79. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-dgr390q7.js +9438 -0
  80. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-e3a6yx84.js +18 -0
  81. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-en7n9f7m.js +22 -0
  82. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-ezgj0tr1.js +88 -0
  83. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-fn1chkkd.js +214 -0
  84. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-fp8r0sqs.js +64 -0
  85. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-gcmj16xy.js +92 -0
  86. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-gkndxkxf.js +736 -0
  87. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-grta8ap3.js +238 -0
  88. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-h2a70tg4.js +7 -0
  89. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-h4xy648y.js +51 -0
  90. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-hdbwtdv2.js +352 -0
  91. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-he6n2bvp.js +1270 -0
  92. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-j0m1jxqa.js +1253 -0
  93. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-j2zrcp1k.js +66 -0
  94. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-j681c48a.js +2530 -0
  95. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-jbj7ehef.js +50 -0
  96. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-jcsjq3d1.js +20 -0
  97. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-jks0x0a1.js +14 -0
  98. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-jn9rbhrx.js +1599 -0
  99. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-jt8e1pje.js +12 -0
  100. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-kdhxpwyq.js +483 -0
  101. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-knp0s912.js +7 -0
  102. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-kresp2n8.js +445 -0
  103. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-m63czgq5.js +590 -0
  104. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-n4hxpng2.js +11 -0
  105. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-n629dy38.js +1071 -0
  106. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-nf3df4jy.js +266 -0
  107. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-nqh3xhdc.js +57 -0
  108. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-pym1cezq.js +39 -0
  109. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-q3r9z8mq.js +213 -0
  110. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-q738kkhj.js +100 -0
  111. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-qcrvt6er.js +112 -0
  112. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-qjj6gddn.js +54 -0
  113. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-qpwsgt3a.js +158 -0
  114. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-ras0sdab.js +26 -0
  115. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-rcs322t1.js +19 -0
  116. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-rgj5mx84.js +101 -0
  117. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-rt9qq1va.js +4 -0
  118. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-sq3kvz3g.js +200 -0
  119. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-stbk3jhn.js +31 -0
  120. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-tf4j19ge.js +130 -0
  121. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-tgcakdxc.js +125 -0
  122. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-tgsfjmep.js +74 -0
  123. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-tq3b39a5.js +107 -0
  124. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-typcbcsv.js +819 -0
  125. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-v1ags1na.js +132 -0
  126. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-vmr35jjw.js +170 -0
  127. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-vz0km5qk.js +33 -0
  128. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-w6h8m6vp.js +138 -0
  129. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-web361b8.js +138 -0
  130. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-wm36rj4v.js +311 -0
  131. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-x0y005nh.js +283 -0
  132. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-x2m17v9c.js +6166 -0
  133. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-x9c55pzy.js +871 -0
  134. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-xh1nbk46.js +1299 -0
  135. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-xvj80c3a.js +30 -0
  136. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-y4d02znn.js +66 -0
  137. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-y7mzvq2q.js +110 -0
  138. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-ye9hmsvf.js +47 -0
  139. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-yhxkxghe.js +56 -0
  140. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-yrjkqtfj.js +86 -0
  141. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-z88qv16t.js +11 -0
  142. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-zqpqyg8p.js +666 -0
  143. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/pipeline-4t9q43ht.js +836 -0
  144. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/proxy-config-60gprphe.js +23 -0
  145. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/proxy-gfhmktbk.js +35 -0
  146. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/router-xnrva921.js +501 -0
  147. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/routes-ht868pdc.js +66 -0
  148. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/tsconfig-defaults-bcn34eqb.js +21 -0
  149. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/cli/start.js +158 -0
  150. package/dist/dash/standalone/node_modules/@wular/pnext/package.json +98 -0
  151. package/dist/dash/standalone/node_modules/@wular/pnext/src/api/client-navigation.ts +337 -0
  152. package/dist/dash/standalone/node_modules/@wular/pnext/src/api/dynamic.tsx +188 -0
  153. package/dist/dash/standalone/node_modules/@wular/pnext/src/api/link.tsx +118 -0
  154. package/dist/dash/standalone/node_modules/@wular/pnext/src/api/navigation.ts +199 -0
  155. package/dist/dash/standalone/node_modules/@wular/pnext/src/api/server.ts +349 -0
  156. package/dist/dash/standalone/node_modules/@wular/pnext/src/api/suspense.ts +16 -0
  157. package/dist/dash/standalone/node_modules/@wular/pnext/src/client/router/events.ts +68 -0
  158. package/dist/dash/standalone/node_modules/@wular/pnext/src/client/router/history.ts +70 -0
  159. package/dist/dash/standalone/node_modules/@wular/pnext/src/client/router/hub.ts +201 -0
  160. package/dist/dash/standalone/node_modules/@wular/pnext/src/client/router/index.ts +168 -0
  161. package/dist/dash/standalone/node_modules/@wular/pnext/src/client/router/page-slot.ts +139 -0
  162. package/dist/dash/standalone/node_modules/@wular/pnext/src/client/router/policies.ts +107 -0
  163. package/dist/dash/standalone/node_modules/@wular/pnext/src/client/router/runtime.ts +6272 -0
  164. package/dist/dash/standalone/node_modules/@wular/pnext/src/request/cache.ts +64 -0
  165. package/dist/dash/standalone/node_modules/@wular/pnext/src/routing/href.ts +236 -0
  166. package/dist/dash/standalone/node_modules/@wular/pnext/src/utils/decode.ts +7 -0
  167. package/dist/dash/standalone/node_modules/@wular/pnext/tsconfig.json +10 -0
  168. package/dist/dash/standalone/node_modules/dotenv/lib/main.js +386 -0
  169. package/dist/dash/standalone/node_modules/dotenv/package.json +62 -0
  170. package/dist/dash/standalone/node_modules/preact/compat/client.mjs +24 -0
  171. package/dist/dash/standalone/node_modules/preact/compat/dist/compat.mjs +2 -0
  172. package/dist/dash/standalone/node_modules/preact/compat/package.json +55 -0
  173. package/dist/dash/standalone/node_modules/preact/dist/preact.mjs +2 -0
  174. package/dist/dash/standalone/node_modules/preact/hooks/dist/hooks.mjs +2 -0
  175. package/dist/dash/standalone/node_modules/preact/hooks/package.json +35 -0
  176. package/dist/dash/standalone/node_modules/preact/jsx-runtime/dist/jsxRuntime.mjs +2 -0
  177. package/dist/dash/standalone/node_modules/preact/jsx-runtime/package.json +28 -0
  178. package/dist/dash/standalone/node_modules/preact/package.json +265 -0
  179. package/dist/dash/standalone/node_modules/preact-render-to-string/dist/index.mjs +2 -0
  180. package/dist/dash/standalone/node_modules/preact-render-to-string/dist/stream/index.mjs +2 -0
  181. package/dist/dash/standalone/node_modules/preact-render-to-string/package.json +147 -0
  182. package/dist/dash/standalone/node_modules/react/cjs/react.react-server.development.js +878 -0
  183. package/dist/dash/standalone/node_modules/react/cjs/react.react-server.production.js +436 -0
  184. package/dist/dash/standalone/node_modules/react/package.json +51 -0
  185. package/dist/dash/standalone/node_modules/react/react.react-server.js +7 -0
  186. package/dist/dash/standalone/node_modules/react-compiler-runtime/dist/index.js +385 -0
  187. package/dist/dash/standalone/node_modules/react-compiler-runtime/package.json +25 -0
  188. package/dist/dash/standalone/package.json +1 -0
  189. package/dist/dash/standalone/server/build-index.json +1 -0
  190. package/dist/dash/standalone/server/entry.js +1 -0
  191. package/dist/dash/standalone/server/manifest.json +3311 -0
  192. package/dist/dash/standalone/server/modules-server-server-react-server/src/client/index.2feb1c162fab6033.js +336 -0
  193. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/defaults.f8b4eee28e030eda.js +27 -0
  194. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/errors.5e991e43e42bd943.js +21 -0
  195. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/task/log-view.d6aae19495a81adb.js +211 -0
  196. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/auth/sign-in.7ee1680af722840f.js +11 -0
  197. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/load.bdbf17006af803d1.js +45 -0
  198. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/types.0cf02e7714d7c1a2.js +5 -0
  199. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/connect/page.0a054a6c9dda53b3.js +23 -0
  200. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/account/loading.02d57ab48022f8d8.js +9 -0
  201. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/account/notify.b7451fdf9c3bb62a.js +34 -0
  202. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/account/page.f9ab6ed02876880e.js +113 -0
  203. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/account/sign-out.3368aed882d8f1ac.js +13 -0
  204. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/agent-menu.e4b6d486442476b5.js +12 -0
  205. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/agents-grid.0dbc57156286a18e.js +118 -0
  206. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/connect-apps.3a5673bcd9aa57d9.js +42 -0
  207. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/loading.8df9f4459410cfaa.js +18 -0
  208. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/page.8f85fbaff456c5fe.js +71 -0
  209. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/page.9ea9df9d5f80f310.css.pnext-asset.js +0 -0
  210. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/layout.d3aec63db0f5230d.js +105 -0
  211. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/loading.d53d174ffe56aab3.js +5 -0
  212. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/page.3120ea9ec90cb9cc.css.pnext-asset.js +0 -0
  213. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/page.7fd1bfcf08e25919.js +116 -0
  214. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/loading.849dc6e6050a7e21.js +10 -0
  215. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/page.143668a9c21806d6.css.pnext-asset.js +0 -0
  216. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/page.31687af871d75d39.js +170 -0
  217. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/platform-actions.754eff65aec1ab59.js +70 -0
  218. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/agent-settings-form.861ed9832cbe89c1.js +268 -0
  219. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/agent-settings-form.d6de90cb40c3bd46.css.pnext-asset.js +0 -0
  220. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/loading.2ec7a3b893925df0.js +8 -0
  221. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/page.1ed5379637860fab.js +35 -0
  222. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/tasks/loading.20a52282c5806719.js +5 -0
  223. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/tasks/page.4fd369ba79ed9943.js +11 -0
  224. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/@/app/dash/usage/range-bar.4408a4e0ee81b7b6.css.pnext-asset.js +0 -0
  225. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/@/comps/ui/segmented.ded4aa5c0cd2c608.css.pnext-asset.js +0 -0
  226. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/loading.43b58c5eef3d4253.js +48 -0
  227. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/page.78bf188a8077c64e.js +160 -0
  228. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/page.ae5cbdfc43af6658.css.pnext-asset.js +0 -0
  229. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/versions-list.0c6811b66b2fcc49.js +41 -0
  230. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/edit/loading.a18042397ffeaf55.js +29 -0
  231. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/edit/page.1798dbd9cd334e8f.js +69 -0
  232. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/agent-pills.c5710a4f634f9d6a.js +67 -0
  233. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/agent-pills.dcf7e785044cc900.css.pnext-asset.js +0 -0
  234. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/hero.a794a01218c5c9ce.css.pnext-asset.js +0 -0
  235. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/hero.e5c5af2f9fab6a63.js +62 -0
  236. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/instructions.2176859ec1028fc0.css.pnext-asset.js +0 -0
  237. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/instructions.403838f7cb218391.js +74 -0
  238. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/editor/@/app/dash/agents/(list)/page.f2e88eb443d45a74.css.pnext-asset.js +0 -0
  239. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/editor/connect-repositories.6c7088fd2fcd54f4.js +11 -0
  240. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/editor/editor.4b164e6eb19daa2f.js +691 -0
  241. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/editor/editor.6b13621790a6d5d6.css.pnext-asset.js +0 -0
  242. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/editor/import-picker.4bff9b5642aeab17.js +214 -0
  243. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/editor/names.cf9e376a918a5341.js +30 -0
  244. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/new/loading.72e1b274c475e39a.js +28 -0
  245. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/new/page.44f60b1a32344f70.js +55 -0
  246. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/layout.946ec7c4ebb1d7c6.css.pnext-asset.js +0 -0
  247. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/layout.96376d18592adfa9.js +391 -0
  248. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/page.669f5926ae12d101.js +10 -0
  249. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/credentials-list.3bd27b14c0d60e48.css.pnext-asset.js +0 -0
  250. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/credentials-list.3fbc413d972a0447.js +538 -0
  251. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/credentials.6423846391b20446.js +34 -0
  252. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/engines-list.39cd71b7dc568516.css.pnext-asset.js +0 -0
  253. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/engines-list.5bad79f0d4e12e07.js +75 -0
  254. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/list.2a204889b73638d9.css.pnext-asset.js +0 -0
  255. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/list.2cafbe93b7b2dc0f.js +172 -0
  256. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/loading.1a810cc50ea61706.js +6 -0
  257. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/mcp-list.1fc0f6165dd85b8c.js +249 -0
  258. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/mcp-list.d743e37cd6dc85d8.css.pnext-asset.js +0 -0
  259. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/models-list.520cb30b291794c3.js +396 -0
  260. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/page.04b07f9c365be073.js +86 -0
  261. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/runners-list.3dac92fb9f64e2be.css.pnext-asset.js +0 -0
  262. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/runners-list.67786d7d51692d19.js +380 -0
  263. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/layout.a619ac4fe999d1b5.js +39 -0
  264. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/model-options.2ca6c87aedf3588c.js +87 -0
  265. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/page.5edeae58f2154a50.js +6 -0
  266. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/settings-head.d726e31e4dd04d60.js +32 -0
  267. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/tunnel-guide.22448081e9e042d6.js +31 -0
  268. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/activity.b23683e6be363068.js +177 -0
  269. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/loading.a8f2aa099bd76606.js +37 -0
  270. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/page.d1ded90712ca586f.js +24 -0
  271. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/task-actions.f2be118dd5a02896.js +184 -0
  272. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/task-view.97433b52e6f7175c.js +593 -0
  273. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/task-view.c2288044c9032a89.css.pnext-asset.js +0 -0
  274. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/composer-data.e2d442d6ecbaa6d3.js +63 -0
  275. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/composer.41721fb98004e79e.css.pnext-asset.js +0 -0
  276. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/composer.78b7d3000d615c7c.js +730 -0
  277. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/list/status.9516cc22cbd5d84b.css.pnext-asset.js +0 -0
  278. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/list/status.d78e769ff1411932.js +16 -0
  279. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/list/task.674ebeabafa0a7e1.js +53 -0
  280. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/list/tasks-list.55fa11c945f9c6db.css.pnext-asset.js +0 -0
  281. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/list/tasks-list.9698bdff71c3b3c7.js +429 -0
  282. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/list/tasks-section.c77194f05c3f58fb.js +79 -0
  283. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/page.157ac3a0938206b0.js +16 -0
  284. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/@/app/dash/usage/range-bar.72f0c7c440fb34af.css.pnext-asset.js +0 -0
  285. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/@/comps/ui/segmented.81631cafb8e3b260.css.pnext-asset.js +0 -0
  286. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/custom-range.9343f6115e244cb4.js +64 -0
  287. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/day-chart.c7b7d04403f0fc79.css.pnext-asset.js +0 -0
  288. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/day-chart.c7f6c8981a7acb15.js +70 -0
  289. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/loading.1716941ff725f152.js +15 -0
  290. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/metric.5481ab0e025e218e.js +10 -0
  291. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/page.4159d729e8aa0439.js +132 -0
  292. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/range-bar.671afdd0798f4de9.css.pnext-asset.js +0 -0
  293. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/range-bar.8c9b18116c8eb5f0.js +60 -0
  294. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/stats.3b02ee8317b9c4e3.css.pnext-asset.js +0 -0
  295. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/stats.7b8db8c56920b311.js +12 -0
  296. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/top-agents.441006da5b4eae17.css.pnext-asset.js +0 -0
  297. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/top-agents.8af5d53eb64bae9c.js +89 -0
  298. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/usage.d6df7cb6980171ce.css.pnext-asset.js +0 -0
  299. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/globals.89a59affc5df947b.css.pnext-asset.js +0 -0
  300. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/layout.77960a272f19bf24.js +41 -0
  301. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/login/page.33464bce52044759.js +50 -0
  302. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/login/page.f852a09edc8b6b44.css.pnext-asset.js +0 -0
  303. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/page.7e7f8611a9bb7b22.js +4 -0
  304. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/responsive.1fd73ea94977bfc0.css.pnext-asset.js +0 -0
  305. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/zone.66f36b17e74cf5f8.js +10 -0
  306. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/@/comps/ui/toast.8d599c6821860a1c.css.pnext-asset.js +0 -0
  307. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/auth-panel.3e020d19aa5ab464.js +48 -0
  308. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/auth-panel.e5af611567239b13.css.pnext-asset.js +0 -0
  309. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/drawer.9090aa789dffa730.css.pnext-asset.js +0 -0
  310. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/drawer.cf0eb4936a2c7222.js +30 -0
  311. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/heads.5407f7793f985b16.js +47 -0
  312. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/loading-card.9648c7782502babc.js +64 -0
  313. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/page-head.53db3a3d313c0473.css.pnext-asset.js +0 -0
  314. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/page-head.857951b5dc1ad827.js +65 -0
  315. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/stream.4c04416dab6ffc52.js +39 -0
  316. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/task-toasts.b14bb1f66ed75e75.js +324 -0
  317. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/theme-choices.60d3a5adbd49989f.js +49 -0
  318. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/current-link.87758179b507850c.js +34 -0
  319. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/side-toggle.581456c353d76d67.js +36 -0
  320. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/to.248665fde7daaf07.js +11 -0
  321. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/badge.d21391f2f8573db8.css.pnext-asset.js +0 -0
  322. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/badge.e52db98d78836f9a.js +31 -0
  323. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/card.4f9265213510ffd3.css.pnext-asset.js +0 -0
  324. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/card.e6876039e375b849.js +40 -0
  325. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/collapse.60c9038c70fb9c46.css.pnext-asset.js +0 -0
  326. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/collapse.730d674a8f7eeeae.js +33 -0
  327. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/combo.d478120a76502dd1.js +115 -0
  328. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/confirm.cd23ea20bdf120d2.js +53 -0
  329. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/confirm.fc6d4da835b75a30.css.pnext-asset.js +0 -0
  330. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/field.37f93068217e1470.js +16 -0
  331. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/field.8db4420dfb447e42.css.pnext-asset.js +0 -0
  332. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/filter.3e8df59ca8abf397.js +252 -0
  333. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/filter.9311d535531caaf3.css.pnext-asset.js +0 -0
  334. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/icon.476b846e39908951.css.pnext-asset.js +0 -0
  335. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/icon.93605083edf7efe3.js +19 -0
  336. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/icons.e17bdd0b5504787f.js +36 -0
  337. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/menu.3b3026ecd4dc31f0.js +103 -0
  338. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/menu.d412af459c187b41.css.pnext-asset.js +0 -0
  339. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/segmented.171b067d7cb36977.css.pnext-asset.js +0 -0
  340. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/segmented.620f07f6b949d7f1.js +38 -0
  341. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/select.14e820c8a26ab8b5.js +218 -0
  342. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/select.5dbceaae2ba7ace4.css.pnext-asset.js +0 -0
  343. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/sentinel.332fb99b3a214f0e.css.pnext-asset.js +0 -0
  344. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/sentinel.50afec82b0fd53a1.js +59 -0
  345. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/tabs.051c87be5bbb7f2b.js +27 -0
  346. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/tabs.87bc5cdfc4d1b85e.css.pnext-asset.js +0 -0
  347. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/tail.25fd24d6cd0564b7.css.pnext-asset.js +0 -0
  348. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/tail.2d57d68076cef3e1.js +25 -0
  349. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/toolbar.32503820243ede06.js +80 -0
  350. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/toolbar.5e35e79f4d575452.css.pnext-asset.js +0 -0
  351. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/client.f37a313f4811ddb8.js +26 -0
  352. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/format.ba382c381ea40e77.js +75 -0
  353. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/paged.64ead375df845ff2.js +152 -0
  354. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/range.f0a5ef1763ff3cb9.js +102 -0
  355. package/dist/dash/standalone/static/assets/chunks/agent-pills-0163fdf910179991.js +1 -0
  356. package/dist/dash/standalone/static/assets/chunks/agent-settings-form-b1fcd9a5236b1fc7.js +1 -0
  357. package/dist/dash/standalone/static/assets/chunks/agents-grid-1d8f0ec6cf8c797e.js +1 -0
  358. package/dist/dash/standalone/static/assets/chunks/badge-9984d2fd0e7f995d.js +1 -0
  359. package/dist/dash/standalone/static/assets/chunks/card-818c7a0d580e2e0d.js +1 -0
  360. package/dist/dash/standalone/static/assets/chunks/combo-0d55fb62af761ac5.js +1 -0
  361. package/dist/dash/standalone/static/assets/chunks/composer-44516934e5619d32.js +1 -0
  362. package/dist/dash/standalone/static/assets/chunks/composer-8abfcac26339cc99.js +1 -0
  363. package/dist/dash/standalone/static/assets/chunks/confirm-be929e2de15876a6.js +1 -0
  364. package/dist/dash/standalone/static/assets/chunks/connect-apps-3e8b55a43315f58a.js +1 -0
  365. package/dist/dash/standalone/static/assets/chunks/connect-repositories-8864a63f83ffd411.js +1 -0
  366. package/dist/dash/standalone/static/assets/chunks/credentials-list-518af85578eacf6d.js +2 -0
  367. package/dist/dash/standalone/static/assets/chunks/custom-range-e8977f0d9699c1e6.js +1 -0
  368. package/dist/dash/standalone/static/assets/chunks/editor-75d6d2d01f4fc35a.js +7 -0
  369. package/dist/dash/standalone/static/assets/chunks/engines-list-2f6b8b3f2e873e4d.js +1 -0
  370. package/dist/dash/standalone/static/assets/chunks/field-43fea54c1c287e30.js +1 -0
  371. package/dist/dash/standalone/static/assets/chunks/filter-55618648fc10c377.js +1 -0
  372. package/dist/dash/standalone/static/assets/chunks/format-b19b8eec331414f4.js +1 -0
  373. package/dist/dash/standalone/static/assets/chunks/heads-1326669bdce3da2f.js +1 -0
  374. package/dist/dash/standalone/static/assets/chunks/instructions-0b968d5d0a58c716.js +2 -0
  375. package/dist/dash/standalone/static/assets/chunks/instructions-f3ecfb5c50f270c2.js +1 -0
  376. package/dist/dash/standalone/static/assets/chunks/list-90a47c07c4dd932e.js +1 -0
  377. package/dist/dash/standalone/static/assets/chunks/mcp-list-735e401c60ab51a3.js +1 -0
  378. package/dist/dash/standalone/static/assets/chunks/models-list-999f54c76ca31379.js +1 -0
  379. package/dist/dash/standalone/static/assets/chunks/paged-3ddb6077bef42752.js +1 -0
  380. package/dist/dash/standalone/static/assets/chunks/platform-actions-4592c82f72b21b1a.js +1 -0
  381. package/dist/dash/standalone/static/assets/chunks/runners-list-ab64a5fb01d5eef8.js +1 -0
  382. package/dist/dash/standalone/static/assets/chunks/runtime-37175329f2865f15-1.js +2 -0
  383. package/dist/dash/standalone/static/assets/chunks/segmented-bf5a4c06605249e0.js +1 -0
  384. package/dist/dash/standalone/static/assets/chunks/select-591ca78b6ae29bd8.js +1 -0
  385. package/dist/dash/standalone/static/assets/chunks/sentinel-b4c91a38a5d79219.js +1 -0
  386. package/dist/dash/standalone/static/assets/chunks/shared-init-17c1fd399ac53851.js +5 -0
  387. package/dist/dash/standalone/static/assets/chunks/shared-init-37175329f2865f15-2.js +1 -0
  388. package/dist/dash/standalone/static/assets/chunks/shared-init-8a34c730aabe942d.js +2 -0
  389. package/dist/dash/standalone/static/assets/chunks/tail-74153aeac1f0baec.js +1 -0
  390. package/dist/dash/standalone/static/assets/chunks/task-actions-26ad7f7c937f2589.js +1 -0
  391. package/dist/dash/standalone/static/assets/chunks/task-ddfddeaf07fb684c.js +1 -0
  392. package/dist/dash/standalone/static/assets/chunks/task-view-0d085ce407e8511e.js +5 -0
  393. package/dist/dash/standalone/static/assets/chunks/tasks-list-e9e914cf5dd959e9.js +1 -0
  394. package/dist/dash/standalone/static/assets/chunks/toolbar-a99d36b4b6f05bb1.js +1 -0
  395. package/dist/dash/standalone/static/assets/chunks/versions-list-875a9a0ebb3f7d08.js +1 -0
  396. package/dist/dash/standalone/static/assets/chunks/wular-pnext-37175329f2865f15-0.js +1 -0
  397. package/dist/dash/standalone/static/assets/dash-account-edc56e85dbaaabe0.css +1 -0
  398. package/dist/dash/standalone/static/assets/dash-agents-edba57b67e4005d0.css +1 -0
  399. package/dist/dash/standalone/static/assets/dash-agents-new-fe22253fbada2fbf.css +1 -0
  400. package/dist/dash/standalone/static/assets/dash-agents-param-slug-adf52e9dacb2d825.css +1 -0
  401. package/dist/dash/standalone/static/assets/dash-agents-param-slug-edit-a2937a347689ef29.css +1 -0
  402. package/dist/dash/standalone/static/assets/dash-agents-param-slug-platforms-265ba13db32a460d.css +1 -0
  403. package/dist/dash/standalone/static/assets/dash-agents-param-slug-settings-8afc52eb0372bc4b.css +1 -0
  404. package/dist/dash/standalone/static/assets/dash-agents-param-slug-tasks-6193e646be68dbd2.css +1 -0
  405. package/dist/dash/standalone/static/assets/dash-agents-param-slug-usage-ceadb3a1c911c402.css +1 -0
  406. package/dist/dash/standalone/static/assets/dash-settings-cf1997cd7f72e518.css +1 -0
  407. package/dist/dash/standalone/static/assets/dash-settings-param-tab-b44dac8e79a560e6.css +1 -0
  408. package/dist/dash/standalone/static/assets/dash-tasks-916c7100a8058aa3.css +1 -0
  409. package/dist/dash/standalone/static/assets/dash-tasks-param-id-24265771fd1e3f78.css +1 -0
  410. package/dist/dash/standalone/static/assets/dash-usage-40940b289f85e0b6.css +1 -0
  411. package/dist/dash/standalone/static/assets/pnext-client-1473d0349f242421.js +1 -0
  412. package/dist/dash/standalone/static/assets/pnext-client-195f74ae46e817da.js +1 -0
  413. package/dist/dash/standalone/static/assets/pnext-client-2b5532ce488c9391.js +1 -0
  414. package/dist/dash/standalone/static/assets/pnext-client-2d3ea662f22db27f.js +1 -0
  415. package/dist/dash/standalone/static/assets/pnext-client-43c0166e51dce87f.js +1 -0
  416. package/dist/dash/standalone/static/assets/pnext-client-4ed05f9a51f559a3.js +1 -0
  417. package/dist/dash/standalone/static/assets/pnext-client-652affde71fecdf7.js +1 -0
  418. package/dist/dash/standalone/static/assets/pnext-client-82beeebf704714a6.js +1 -0
  419. package/dist/dash/standalone/static/assets/pnext-client-899f9625435988dd.js +1 -0
  420. package/dist/dash/standalone/static/assets/pnext-client-ad1fab64ee1a5b30.js +1 -0
  421. package/dist/dash/standalone/static/assets/pnext-client-b2dccebfff1465f5.js +1 -0
  422. package/dist/dash/standalone/static/assets/pnext-client-c8a42c9bfeded4e4.js +1 -0
  423. package/dist/dash/standalone/static/assets/pnext-client-d04d2ffbb491564c.js +1 -0
  424. package/dist/dash/standalone/static/assets/pnext-client-d060565c4d80b60e.js +1 -0
  425. package/dist/dash/standalone/static/assets/pnext-client-dce6e1b84ee02f09.js +1 -0
  426. package/dist/dash/standalone/static/assets/pnext-client-e753846e298d2403.js +1 -0
  427. package/dist/default-aLeIO8IR.js +1 -0
  428. package/dist/default-fMaQH1wm.js +1 -0
  429. package/dist/delete-Cj16PYaw.js +2 -0
  430. package/dist/delete-DNj3leWA.js +4 -0
  431. package/dist/disable-CQg5Vybq.js +1 -0
  432. package/dist/discover-CaAtyC0h.js +1 -0
  433. package/dist/discover-bVM8EJEz.js +3 -0
  434. package/dist/dispatch-YW1aqjEg.js +14 -0
  435. package/dist/docs-Byrpar10.js +2 -0
  436. package/dist/docs-CqeYenUp.js +2 -0
  437. package/dist/enable-8m3z7i3i.js +1 -0
  438. package/dist/env-LsVTi18f.js +1 -0
  439. package/dist/exec-DgI3boHa.js +11 -0
  440. package/dist/executor-HWnIIYUL.js +10 -0
  441. package/dist/flow/builtin/review.js +1 -1
  442. package/dist/flow/index.d.ts +2 -2
  443. package/dist/flow/index.js +1 -1
  444. package/dist/flow-DeCL3x2p.js +1 -0
  445. package/dist/github-actions-CvLya8ve.js +24 -0
  446. package/dist/http-DG54kyx4.js +1 -0
  447. package/dist/index-Xe8n_t2Z.d.ts +365 -0
  448. package/dist/init-BujliQ7q.js +1 -0
  449. package/dist/integrations-6kXL9hRo.js +1 -0
  450. package/dist/integrations-B2CavXR1.js +5 -0
  451. package/dist/lib/broker.js +2 -2
  452. package/dist/list-BdiYneg5.js +1 -0
  453. package/dist/list-CXu4cr8D.js +4 -0
  454. package/dist/list-DGoVY-ao.js +1 -0
  455. package/dist/list-DbY1jyj3.js +2 -0
  456. package/dist/list-DhVfqr0A.js +1 -0
  457. package/dist/list-DyqtSWvn.js +1 -0
  458. package/dist/list-QLTjk5SN.js +3 -0
  459. package/dist/list-vKOTwd4G.js +4 -0
  460. package/dist/load-DDZfByUe.js +2 -0
  461. package/dist/local-B0GiaLV0.js +1 -0
  462. package/dist/log-view-DeJstSkw.js +3 -0
  463. package/dist/login-BzdlmD_o.js +1 -0
  464. package/dist/login-otJB9SYu.js +1 -0
  465. package/dist/logout-DOrRoxDV.js +1 -0
  466. package/dist/maintenance-Bg_FzXSq.js +1 -0
  467. package/dist/match-DMI54zg4.js +1 -0
  468. package/dist/mcp-DgMoPoUo.js +1 -0
  469. package/dist/mcp-xSvAWiXX.js +1 -0
  470. package/dist/migrate-CN-fdMV9.js +2 -0
  471. package/dist/migrate-DAC6sFgg.js +1 -0
  472. package/dist/model-BJ-Sokha.js +1 -0
  473. package/dist/models-DGPrMV51.js +1 -0
  474. package/dist/prompt-K7-bKcTC.js +7 -0
  475. package/dist/push-Cg7-XT5h.js +1 -0
  476. package/dist/queue-yo-Z8TaE.js +117 -0
  477. package/dist/refresh-CmBQALAW.js +1 -0
  478. package/dist/remote-AcWWfKVS.js +1 -0
  479. package/dist/remove-BuaShRZ3.js +1 -0
  480. package/dist/remove-C8Rm8KP-.js +1 -0
  481. package/dist/remove-CcMma1x3.js +1 -0
  482. package/dist/remove-DgMg_OOu.js +1 -0
  483. package/dist/rename-C0vNcl8e.js +1 -0
  484. package/dist/result-C6ovl_Dn.js +5 -0
  485. package/dist/result-oQey_hdw.js +18 -0
  486. package/dist/resume-T_TXWfqE.js +3 -0
  487. package/dist/review-CCs6XUSO.js +7 -0
  488. package/dist/rotate-key-CYimsQR5.js +1 -0
  489. package/dist/run-BFYg-zZt.js +5 -0
  490. package/dist/run-D7F7JPV6.js +2 -0
  491. package/dist/run-hiPyO7js.js +2 -0
  492. package/dist/runner-D5jaEfhG.js +1 -0
  493. package/dist/runner-c-2w6Eoj.js +1 -0
  494. package/dist/schema-DoNO0dPh.js +1 -0
  495. package/dist/sdk.d.ts +4 -3
  496. package/dist/sdk.js +1 -1
  497. package/dist/serve-BgGXjT_O.js +1 -0
  498. package/dist/serve-C-AD60Wa.js +12 -0
  499. package/dist/serve-GIK3fqKA.js +8 -0
  500. package/dist/serve-K3BVTcDI.js +2 -0
  501. package/dist/serve-xMihn4g-.js +1 -0
  502. package/dist/server-DQTGc55C.js +1 -0
  503. package/dist/setup-host-By8-gv_v.js +6 -0
  504. package/dist/shared-TznJgMFW.js +1 -0
  505. package/dist/show-C9ojrH5W.js +1 -0
  506. package/dist/show-o4yXzSWZ.js +1 -0
  507. package/dist/status-BBW7Qyde.js +1 -0
  508. package/dist/steer-D47cuggj.js +4 -0
  509. package/dist/stop-7brPdki9.js +1 -0
  510. package/dist/stop-CD2JW6dI.js +3 -0
  511. package/dist/store-BCBTo0rl.js +42 -0
  512. package/dist/store-qp7UE2ES.js +19 -0
  513. package/dist/task-CyrDqqf8.js +1 -0
  514. package/dist/task-DEp3GHwH.js +1 -0
  515. package/dist/task-DhZ5vhyY.js +5 -0
  516. package/dist/test-BcFQUHRo.js +1 -0
  517. package/dist/tools-D20XYPnO.js +1 -0
  518. package/dist/types-DMGBYB_K.d.ts +391 -0
  519. package/dist/unalias-G3sM8fVw.js +1 -0
  520. package/dist/update-JvgB6Xws.js +2 -0
  521. package/dist/upgrade-DN3hXDdo.js +2 -0
  522. package/dist/usage-C1oN2W9c.js +1 -0
  523. package/dist/usage-DR3wWtYD.js +1 -0
  524. package/dist/watch-DDmHonTf.js +5 -0
  525. package/dist/watch-DYkC6Q2q.js +8 -0
  526. package/dist/wire-DxxfWapP.js +1 -0
  527. package/dist/worker-C4Lo6rLS.js +9 -0
  528. package/dist/worker-CaNTsqcD.js +1 -0
  529. package/dist/workflow-7rqzHHWZ.js +1 -0
  530. package/docs/cli.md +1 -2
  531. package/docs/config.md +1 -1
  532. package/docs/flows.md +12 -1
  533. package/docs/mcp.md +1 -1
  534. package/docs/sdk.md +1 -1
  535. package/migrations/0000_initial.sql +8 -0
  536. package/migrations/meta/0000_snapshot.json +75 -1
  537. package/migrations/meta/_journal.json +1 -1
  538. package/package.json +2 -10
  539. package/plugins/agents/skills/coder/SKILL.md +1 -0
  540. package/plugins/claude/.claude-plugin/plugin.json +1 -1
  541. package/plugins/claude/skills/dispatch/SKILL.md +1 -1
  542. package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
  543. package/plugins/cursor/skills/coder/SKILL.md +1 -0
  544. package/dist/actions-Mk3FSlpJ.js +0 -20
  545. package/dist/adapter-B0oYCI0S.js +0 -1
  546. package/dist/adapter-BKVzTDnn.js +0 -1
  547. package/dist/adapter-DPInwbJG.js +0 -1
  548. package/dist/add-C2y-mVzl.js +0 -1
  549. package/dist/add-CLYTF_up.js +0 -6
  550. package/dist/add-DRsPpQFl.js +0 -1
  551. package/dist/add-DkpUwhtO.js +0 -1
  552. package/dist/add-json-5uPnWPoD.js +0 -1
  553. package/dist/agent-hw3zKw8y.js +0 -3
  554. package/dist/agent-r5mMcehf.js +0 -1
  555. package/dist/alias-_0Rwf2cA.js +0 -2
  556. package/dist/app-oE8G1-bi.js +0 -1
  557. package/dist/approvals-DbVrsxec.js +0 -2
  558. package/dist/approve-DeAhFL-m.js +0 -2
  559. package/dist/apps-eujHiNca.js +0 -1
  560. package/dist/archive-BCUfymIB.js +0 -3
  561. package/dist/archive-DZ6vpMHb.js +0 -4
  562. package/dist/archive-sweep-Cxbh8yAI.js +0 -1
  563. package/dist/args-BOEEdpWk.js +0 -1
  564. package/dist/ask-BU2WVxVM.js +0 -4
  565. package/dist/auth-CBWTmAPA.js +0 -1
  566. package/dist/auth-Dmn2U7rr.js +0 -1
  567. package/dist/chat-B_yhNTo0.js +0 -13
  568. package/dist/chat-bridge-BS9WtP3X.js +0 -2
  569. package/dist/cli-DWCR7iqa.js +0 -9
  570. package/dist/client-D9IoAuDD.js +0 -1
  571. package/dist/config-12pK4qW7.js +0 -3
  572. package/dist/create-D3f6q0Yq.js +0 -1
  573. package/dist/credentials-l6dsrZLL.js +0 -1
  574. package/dist/dash/manifest.json +0 -3313
  575. package/dist/dash/public/assets/chunks/agent-pills-dd0b7643e125bbf1.js +0 -1
  576. package/dist/dash/public/assets/chunks/agent-settings-form-45ae6aeaaed2b568.js +0 -1
  577. package/dist/dash/public/assets/chunks/agents-grid-b906da80c31fc035.js +0 -1
  578. package/dist/dash/public/assets/chunks/badge-676b01e0c615bf7b.js +0 -1
  579. package/dist/dash/public/assets/chunks/card-e0901d68b79dfa93.js +0 -1
  580. package/dist/dash/public/assets/chunks/combo-952a457d52360d88.js +0 -1
  581. package/dist/dash/public/assets/chunks/composer-49f9e7c5c4dfda3b.js +0 -1
  582. package/dist/dash/public/assets/chunks/composer-f331d00837143aee.js +0 -1
  583. package/dist/dash/public/assets/chunks/confirm-f2fe4ba9905a89c6.js +0 -1
  584. package/dist/dash/public/assets/chunks/connect-apps-661f3b3a85f1776a.js +0 -1
  585. package/dist/dash/public/assets/chunks/connect-repositories-5389ec8701a3deac.js +0 -1
  586. package/dist/dash/public/assets/chunks/credentials-list-e6177d0943517929.js +0 -2
  587. package/dist/dash/public/assets/chunks/custom-range-03ba6fb2ade7d282.js +0 -1
  588. package/dist/dash/public/assets/chunks/editor-34cb529d6d8a4b09.js +0 -7
  589. package/dist/dash/public/assets/chunks/engines-list-2f1acee3ecc8461a.js +0 -1
  590. package/dist/dash/public/assets/chunks/field-901f1f35c18c39c9.js +0 -1
  591. package/dist/dash/public/assets/chunks/format-eb03fc9d9744d960.js +0 -1
  592. package/dist/dash/public/assets/chunks/heads-1570a3a6db331979.js +0 -1
  593. package/dist/dash/public/assets/chunks/instructions-052fa45a9daf6db6.js +0 -2
  594. package/dist/dash/public/assets/chunks/instructions-d0a4b0d95009c262.js +0 -1
  595. package/dist/dash/public/assets/chunks/list-87b359bebd26986a.js +0 -1
  596. package/dist/dash/public/assets/chunks/mcp-list-b42f0d2ee463b37d.js +0 -1
  597. package/dist/dash/public/assets/chunks/models-list-0669d26fd662aec3.js +0 -1
  598. package/dist/dash/public/assets/chunks/paged-bc6fa0c2b9d52ed7.js +0 -1
  599. package/dist/dash/public/assets/chunks/platform-actions-c92ca3c6198a9387.js +0 -1
  600. package/dist/dash/public/assets/chunks/runners-list-9fffa50432c470c9.js +0 -1
  601. package/dist/dash/public/assets/chunks/runtime-246221e985d863e5-1.js +0 -2
  602. package/dist/dash/public/assets/chunks/segmented-358ff2b4992b8384.js +0 -1
  603. package/dist/dash/public/assets/chunks/select-1013702bdfb1ade4.js +0 -1
  604. package/dist/dash/public/assets/chunks/sentinel-c972a33dc69a5135.js +0 -1
  605. package/dist/dash/public/assets/chunks/shared-init-20e199043ff5d00f.js +0 -2
  606. package/dist/dash/public/assets/chunks/shared-init-246221e985d863e5-2.js +0 -1
  607. package/dist/dash/public/assets/chunks/shared-init-88cce66bb3cfe1e5.js +0 -5
  608. package/dist/dash/public/assets/chunks/tail-7c27aab8ba268bd9.js +0 -1
  609. package/dist/dash/public/assets/chunks/task-actions-a9603d520434baab.js +0 -1
  610. package/dist/dash/public/assets/chunks/task-fa8b82e95e771c4a.js +0 -1
  611. package/dist/dash/public/assets/chunks/task-view-f7039cb330bcb0b5.js +0 -3
  612. package/dist/dash/public/assets/chunks/tasks-list-2a905b4a0c3a9042.js +0 -1
  613. package/dist/dash/public/assets/chunks/toolbar-f964fa864699f095.js +0 -1
  614. package/dist/dash/public/assets/chunks/versions-list-fc2e0d2a7382e049.js +0 -1
  615. package/dist/dash/public/assets/chunks/wular-pnext-246221e985d863e5-0.js +0 -1
  616. package/dist/dash/public/assets/dash-account-96fc41be318839fa.css +0 -1
  617. package/dist/dash/public/assets/dash-agents-290a7b21c7dc0c92.css +0 -1
  618. package/dist/dash/public/assets/dash-agents-new-a7a07bf4ebda24c2.css +0 -1
  619. package/dist/dash/public/assets/dash-agents-param-slug-69a72fb0bbd14cc2.css +0 -1
  620. package/dist/dash/public/assets/dash-agents-param-slug-edit-397bdfb2f0ca328c.css +0 -1
  621. package/dist/dash/public/assets/dash-agents-param-slug-platforms-a7b3b7247c27f1d2.css +0 -1
  622. package/dist/dash/public/assets/dash-agents-param-slug-settings-8389b7d0555e8ccf.css +0 -1
  623. package/dist/dash/public/assets/dash-agents-param-slug-tasks-5987b8aea5e8f30d.css +0 -1
  624. package/dist/dash/public/assets/dash-agents-param-slug-usage-19abc69e1d4e6b0a.css +0 -1
  625. package/dist/dash/public/assets/dash-settings-53b8e6a8f656fa1a.css +0 -1
  626. package/dist/dash/public/assets/dash-settings-param-tab-ac61fdfdd6fd533f.css +0 -1
  627. package/dist/dash/public/assets/dash-tasks-cc0b1d32874b731c.css +0 -1
  628. package/dist/dash/public/assets/dash-tasks-param-id-02b8c7bd99cc1090.css +0 -1
  629. package/dist/dash/public/assets/dash-usage-884943221f76ad93.css +0 -1
  630. package/dist/dash/public/assets/pnext-client-17ba55bb57a1f4da.js +0 -1
  631. package/dist/dash/public/assets/pnext-client-1afa4148bea69ad2.js +0 -1
  632. package/dist/dash/public/assets/pnext-client-2693db10b197ade1.js +0 -1
  633. package/dist/dash/public/assets/pnext-client-43f52a07f8067b1b.js +0 -1
  634. package/dist/dash/public/assets/pnext-client-4594b693fe612835.js +0 -1
  635. package/dist/dash/public/assets/pnext-client-73f73e24f8141fb6.js +0 -1
  636. package/dist/dash/public/assets/pnext-client-7574da4651b40eae.js +0 -1
  637. package/dist/dash/public/assets/pnext-client-7b3a2c1092cbbb02.js +0 -1
  638. package/dist/dash/public/assets/pnext-client-816fe5fc96d3f768.js +0 -1
  639. package/dist/dash/public/assets/pnext-client-86cb956b448b0887.js +0 -1
  640. package/dist/dash/public/assets/pnext-client-8b64e3c030164288.js +0 -1
  641. package/dist/dash/public/assets/pnext-client-8f6161084c595a22.js +0 -1
  642. package/dist/dash/public/assets/pnext-client-9203ec11926e5d04.js +0 -1
  643. package/dist/dash/public/assets/pnext-client-a38b446f941d44df.js +0 -1
  644. package/dist/dash/public/assets/pnext-client-bd8d51aaa095e8a4.js +0 -1
  645. package/dist/dash/public/assets/pnext-client-e9821d1f1bdb281d.js +0 -1
  646. package/dist/dash/server/bundle-0.1.6-b29ec45cb963d47f/entry.js +0 -2
  647. package/dist/default-CwQXCtoB.js +0 -1
  648. package/dist/default-De8FXiWz.js +0 -1
  649. package/dist/delete-BD6AnCLg.js +0 -2
  650. package/dist/delete-cS01oOIb.js +0 -4
  651. package/dist/disable-BMWWeYFQ.js +0 -1
  652. package/dist/discover-Cfx5RPU7.js +0 -3
  653. package/dist/discover-Dvr_3_Xr.js +0 -1
  654. package/dist/dispatch-BKeAch9E.js +0 -14
  655. package/dist/docs-BX65z2Iu.js +0 -2
  656. package/dist/docs-DWegDRiu.js +0 -2
  657. package/dist/enable-Cfzeau2x.js +0 -1
  658. package/dist/env-CRf6wkM2.js +0 -1
  659. package/dist/exec-RZFLclKX.js +0 -11
  660. package/dist/executor-BvAA7Cgw.js +0 -10
  661. package/dist/flow-kAxxVOiR.js +0 -1
  662. package/dist/github-actions-DwUzm4hC.js +0 -24
  663. package/dist/http-Bkg_OQ6r.js +0 -1
  664. package/dist/index-CZjFX5zV.d.ts +0 -357
  665. package/dist/init-C4tDFH4G.js +0 -1
  666. package/dist/integrations-BAgdVDhj.js +0 -5
  667. package/dist/integrations-D-L3uQRj.js +0 -1
  668. package/dist/list-5Ljf9TxF.js +0 -2
  669. package/dist/list-COAo7eZd.js +0 -4
  670. package/dist/list-DuPqU3fk.js +0 -3
  671. package/dist/list-DzGuMkQy.js +0 -1
  672. package/dist/list-J8d_zh-o.js +0 -1
  673. package/dist/list-vOvIpbOH.js +0 -1
  674. package/dist/list-vpyS-hv8.js +0 -1
  675. package/dist/list-way5oLO0.js +0 -4
  676. package/dist/load-BpEsAn51.js +0 -2
  677. package/dist/local-H3uvqEbq.js +0 -1
  678. package/dist/log-view-dg0TlKLA.js +0 -1
  679. package/dist/login-BBw95-S3.js +0 -1
  680. package/dist/login-CNmeRAL7.js +0 -1
  681. package/dist/logout-j0dTo_Ib.js +0 -1
  682. package/dist/maintenance-DkLVtqM7.js +0 -1
  683. package/dist/match-CXAjDhg7.js +0 -1
  684. package/dist/mcp-BgKb2Cdk.js +0 -1
  685. package/dist/mcp-CsmBtlW9.js +0 -1
  686. package/dist/migrate-D4nzYhk8.js +0 -2
  687. package/dist/migrate-N-85_N7J.js +0 -1
  688. package/dist/model-B79MFtRV.js +0 -1
  689. package/dist/models-_5LVGC3m.js +0 -1
  690. package/dist/prompt-CEuBMNhk.js +0 -7
  691. package/dist/push-DbdnbZYt.js +0 -1
  692. package/dist/queue-C9fSdE_X.js +0 -116
  693. package/dist/refresh-BDmap1RA.js +0 -1
  694. package/dist/remote-miQNTVRa.js +0 -1
  695. package/dist/remove-BNzbUhaK.js +0 -1
  696. package/dist/remove-CLpL12Ya.js +0 -1
  697. package/dist/remove-CaYH9Cna.js +0 -1
  698. package/dist/remove-D-QeeZQL.js +0 -1
  699. package/dist/rename-Bhcb4t9F.js +0 -1
  700. package/dist/result-BfTfJayl.js +0 -5
  701. package/dist/result-D8DsvJDu.js +0 -15
  702. package/dist/resume-aZ8yWDBh.js +0 -3
  703. package/dist/review-BEhDcX4b.js +0 -7
  704. package/dist/rotate-key-BqnKhTK8.js +0 -1
  705. package/dist/run-BWbabvub.js +0 -5
  706. package/dist/run-BdPjxaZU.js +0 -2
  707. package/dist/run-Dqe38jX8.js +0 -2
  708. package/dist/runner-BPpiJvHx.js +0 -1
  709. package/dist/runner-sUpWJ_k0.js +0 -1
  710. package/dist/schema-CU2iFkp8.js +0 -1
  711. package/dist/serve-BTeomYxW.js +0 -1
  712. package/dist/serve-C0WC-QrV.js +0 -2
  713. package/dist/serve-CcObDKKQ.js +0 -12
  714. package/dist/serve-Ck95047c.js +0 -1
  715. package/dist/serve-DA5I2qXj.js +0 -4
  716. package/dist/server-BxLFZL80.js +0 -1
  717. package/dist/setup-host-DLd_j2Uw.js +0 -6
  718. package/dist/shared-BLkGRKty.js +0 -1
  719. package/dist/show-DzoQIs75.js +0 -1
  720. package/dist/show-FC3dJcD-.js +0 -1
  721. package/dist/status-BU3DR1XU.js +0 -1
  722. package/dist/steer-P_38hRRD.js +0 -4
  723. package/dist/stop-BJGDRPsp.js +0 -1
  724. package/dist/stop-BWY6k6v5.js +0 -3
  725. package/dist/store-B3ZHoBJY.js +0 -8
  726. package/dist/store-BLi19UDE.js +0 -42
  727. package/dist/task-C6VAg5WU.js +0 -1
  728. package/dist/task-DeglY79z.js +0 -5
  729. package/dist/task-b2BK481M.js +0 -1
  730. package/dist/test-BrSrhop9.js +0 -1
  731. package/dist/tools-CgswhJzh.js +0 -1
  732. package/dist/types-I5Cwtl_K.d.ts +0 -389
  733. package/dist/unalias-mMHXqok7.js +0 -1
  734. package/dist/update-DbOWToPy.js +0 -2
  735. package/dist/upgrade-D6oC9HQI.js +0 -2
  736. package/dist/usage-Cb8Dtv9V.js +0 -1
  737. package/dist/usage-DMs-IIJC.js +0 -1
  738. package/dist/watch-BcMQXGYO.js +0 -8
  739. package/dist/watch-eE2XiwsC.js +0 -5
  740. package/dist/wire-BeT1Axeo.js +0 -1
  741. package/dist/worker-CXndxmGF.js +0 -9
  742. package/dist/worker-DrucI22w.js +0 -1
  743. package/dist/workflow-Cshghoas.js +0 -1
  744. package/src/client/index.ts +0 -573
  745. package/src/client/types.ts +0 -506
  746. package/src/core/defaults.ts +0 -25
  747. package/src/core/errors.ts +0 -72
  748. package/src/core/task/log-view.ts +0 -173
  749. package/src/server/auth/sign-in.ts +0 -14
  750. package/src/server/dash/api/load.ts +0 -62
  751. package/src/server/dash/api/types.ts +0 -11
  752. package/src/server/dash/app/connect/page.tsx +0 -42
  753. package/src/server/dash/app/dash/account/loading.tsx +0 -11
  754. package/src/server/dash/app/dash/account/notify.tsx +0 -42
  755. package/src/server/dash/app/dash/account/page.css +0 -81
  756. package/src/server/dash/app/dash/account/page.tsx +0 -126
  757. package/src/server/dash/app/dash/account/sign-out.tsx +0 -24
  758. package/src/server/dash/app/dash/agents/(list)/agent-menu.tsx +0 -10
  759. package/src/server/dash/app/dash/agents/(list)/agents-grid.tsx +0 -143
  760. package/src/server/dash/app/dash/agents/(list)/connect-apps.tsx +0 -46
  761. package/src/server/dash/app/dash/agents/(list)/loading.tsx +0 -14
  762. package/src/server/dash/app/dash/agents/(list)/page.css +0 -72
  763. package/src/server/dash/app/dash/agents/(list)/page.tsx +0 -89
  764. package/src/server/dash/app/dash/agents/[slug]/(tabs)/layout.tsx +0 -135
  765. package/src/server/dash/app/dash/agents/[slug]/(tabs)/loading.tsx +0 -5
  766. package/src/server/dash/app/dash/agents/[slug]/(tabs)/page.css +0 -21
  767. package/src/server/dash/app/dash/agents/[slug]/(tabs)/page.tsx +0 -173
  768. package/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/loading.tsx +0 -18
  769. package/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/page.css +0 -87
  770. package/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/page.tsx +0 -258
  771. package/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/platform-actions.tsx +0 -111
  772. package/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/agent-settings-form.css +0 -114
  773. package/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/agent-settings-form.tsx +0 -294
  774. package/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/loading.tsx +0 -5
  775. package/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/page.tsx +0 -54
  776. package/src/server/dash/app/dash/agents/[slug]/(tabs)/tasks/loading.tsx +0 -5
  777. package/src/server/dash/app/dash/agents/[slug]/(tabs)/tasks/page.tsx +0 -14
  778. package/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/loading.tsx +0 -31
  779. package/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/page.css +0 -12
  780. package/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/page.tsx +0 -163
  781. package/src/server/dash/app/dash/agents/[slug]/(tabs)/versions-list.tsx +0 -53
  782. package/src/server/dash/app/dash/agents/[slug]/edit/loading.tsx +0 -31
  783. package/src/server/dash/app/dash/agents/[slug]/edit/page.tsx +0 -91
  784. package/src/server/dash/app/dash/agents/agent/agent-pills.css +0 -27
  785. package/src/server/dash/app/dash/agents/agent/agent-pills.tsx +0 -133
  786. package/src/server/dash/app/dash/agents/agent/hero.css +0 -40
  787. package/src/server/dash/app/dash/agents/agent/hero.tsx +0 -60
  788. package/src/server/dash/app/dash/agents/agent/instructions.css +0 -29
  789. package/src/server/dash/app/dash/agents/agent/instructions.tsx +0 -82
  790. package/src/server/dash/app/dash/agents/editor/connect-repositories.ts +0 -16
  791. package/src/server/dash/app/dash/agents/editor/editor.css +0 -263
  792. package/src/server/dash/app/dash/agents/editor/editor.tsx +0 -774
  793. package/src/server/dash/app/dash/agents/editor/import-picker.css +0 -48
  794. package/src/server/dash/app/dash/agents/editor/import-picker.tsx +0 -253
  795. package/src/server/dash/app/dash/agents/editor/names.ts +0 -35
  796. package/src/server/dash/app/dash/agents/new/loading.tsx +0 -25
  797. package/src/server/dash/app/dash/agents/new/page.tsx +0 -72
  798. package/src/server/dash/app/dash/layout.css +0 -322
  799. package/src/server/dash/app/dash/layout.tsx +0 -344
  800. package/src/server/dash/app/dash/page.tsx +0 -14
  801. package/src/server/dash/app/dash/settings/[tab]/credentials-list.css +0 -94
  802. package/src/server/dash/app/dash/settings/[tab]/credentials-list.tsx +0 -619
  803. package/src/server/dash/app/dash/settings/[tab]/credentials.tsx +0 -36
  804. package/src/server/dash/app/dash/settings/[tab]/engines-list.css +0 -16
  805. package/src/server/dash/app/dash/settings/[tab]/engines-list.tsx +0 -135
  806. package/src/server/dash/app/dash/settings/[tab]/list.css +0 -98
  807. package/src/server/dash/app/dash/settings/[tab]/list.tsx +0 -215
  808. package/src/server/dash/app/dash/settings/[tab]/loading.tsx +0 -6
  809. package/src/server/dash/app/dash/settings/[tab]/mcp-list.css +0 -43
  810. package/src/server/dash/app/dash/settings/[tab]/mcp-list.tsx +0 -290
  811. package/src/server/dash/app/dash/settings/[tab]/models-list.tsx +0 -513
  812. package/src/server/dash/app/dash/settings/[tab]/page.tsx +0 -89
  813. package/src/server/dash/app/dash/settings/[tab]/runners-list.css +0 -153
  814. package/src/server/dash/app/dash/settings/[tab]/runners-list.tsx +0 -457
  815. package/src/server/dash/app/dash/settings/layout.tsx +0 -50
  816. package/src/server/dash/app/dash/settings/model-options.ts +0 -117
  817. package/src/server/dash/app/dash/settings/page.tsx +0 -7
  818. package/src/server/dash/app/dash/settings/settings-head.tsx +0 -24
  819. package/src/server/dash/app/dash/settings/tunnel-guide.tsx +0 -28
  820. package/src/server/dash/app/dash/tasks/[id]/activity.tsx +0 -202
  821. package/src/server/dash/app/dash/tasks/[id]/loading.tsx +0 -31
  822. package/src/server/dash/app/dash/tasks/[id]/page.tsx +0 -30
  823. package/src/server/dash/app/dash/tasks/[id]/task-actions.tsx +0 -164
  824. package/src/server/dash/app/dash/tasks/[id]/task-view.css +0 -407
  825. package/src/server/dash/app/dash/tasks/[id]/task-view.tsx +0 -513
  826. package/src/server/dash/app/dash/tasks/composer-data.ts +0 -96
  827. package/src/server/dash/app/dash/tasks/composer.css +0 -316
  828. package/src/server/dash/app/dash/tasks/composer.tsx +0 -890
  829. package/src/server/dash/app/dash/tasks/list/status.css +0 -50
  830. package/src/server/dash/app/dash/tasks/list/status.tsx +0 -20
  831. package/src/server/dash/app/dash/tasks/list/task.ts +0 -45
  832. package/src/server/dash/app/dash/tasks/list/tasks-list.css +0 -85
  833. package/src/server/dash/app/dash/tasks/list/tasks-list.tsx +0 -402
  834. package/src/server/dash/app/dash/tasks/list/tasks-section.tsx +0 -96
  835. package/src/server/dash/app/dash/tasks/page.tsx +0 -53
  836. package/src/server/dash/app/dash/usage/custom-range.tsx +0 -63
  837. package/src/server/dash/app/dash/usage/day-chart.css +0 -109
  838. package/src/server/dash/app/dash/usage/day-chart.tsx +0 -110
  839. package/src/server/dash/app/dash/usage/loading.tsx +0 -17
  840. package/src/server/dash/app/dash/usage/metric.ts +0 -13
  841. package/src/server/dash/app/dash/usage/page.tsx +0 -117
  842. package/src/server/dash/app/dash/usage/range-bar.css +0 -13
  843. package/src/server/dash/app/dash/usage/range-bar.tsx +0 -69
  844. package/src/server/dash/app/dash/usage/stats.css +0 -52
  845. package/src/server/dash/app/dash/usage/stats.tsx +0 -19
  846. package/src/server/dash/app/dash/usage/top-agents.css +0 -40
  847. package/src/server/dash/app/dash/usage/top-agents.tsx +0 -138
  848. package/src/server/dash/app/globals.css +0 -692
  849. package/src/server/dash/app/layout.tsx +0 -52
  850. package/src/server/dash/app/login/page.css +0 -26
  851. package/src/server/dash/app/login/page.tsx +0 -57
  852. package/src/server/dash/app/page.tsx +0 -5
  853. package/src/server/dash/app/responsive.css +0 -49
  854. package/src/server/dash/app/zone.tsx +0 -13
  855. package/src/server/dash/comps/frame/auth-panel.css +0 -60
  856. package/src/server/dash/comps/frame/auth-panel.tsx +0 -44
  857. package/src/server/dash/comps/frame/drawer.css +0 -28
  858. package/src/server/dash/comps/frame/drawer.tsx +0 -39
  859. package/src/server/dash/comps/frame/heads.ts +0 -41
  860. package/src/server/dash/comps/frame/loading-card.tsx +0 -65
  861. package/src/server/dash/comps/frame/page-head.css +0 -83
  862. package/src/server/dash/comps/frame/page-head.tsx +0 -71
  863. package/src/server/dash/comps/frame/stream.tsx +0 -50
  864. package/src/server/dash/comps/frame/task-toasts.tsx +0 -214
  865. package/src/server/dash/comps/frame/theme-choices.tsx +0 -46
  866. package/src/server/dash/comps/nav/current-link.tsx +0 -53
  867. package/src/server/dash/comps/nav/side-toggle.tsx +0 -30
  868. package/src/server/dash/comps/nav/to.ts +0 -22
  869. package/src/server/dash/comps/ui/badge.css +0 -64
  870. package/src/server/dash/comps/ui/badge.tsx +0 -41
  871. package/src/server/dash/comps/ui/card.css +0 -93
  872. package/src/server/dash/comps/ui/card.tsx +0 -77
  873. package/src/server/dash/comps/ui/collapse.css +0 -32
  874. package/src/server/dash/comps/ui/collapse.tsx +0 -49
  875. package/src/server/dash/comps/ui/combo.tsx +0 -154
  876. package/src/server/dash/comps/ui/confirm.css +0 -36
  877. package/src/server/dash/comps/ui/confirm.tsx +0 -67
  878. package/src/server/dash/comps/ui/field.css +0 -25
  879. package/src/server/dash/comps/ui/field.tsx +0 -34
  880. package/src/server/dash/comps/ui/icon.css +0 -22
  881. package/src/server/dash/comps/ui/icon.tsx +0 -17
  882. package/src/server/dash/comps/ui/icons.ts +0 -44
  883. package/src/server/dash/comps/ui/menu.css +0 -178
  884. package/src/server/dash/comps/ui/menu.tsx +0 -156
  885. package/src/server/dash/comps/ui/segmented.css +0 -44
  886. package/src/server/dash/comps/ui/segmented.tsx +0 -58
  887. package/src/server/dash/comps/ui/select.css +0 -103
  888. package/src/server/dash/comps/ui/select.tsx +0 -250
  889. package/src/server/dash/comps/ui/sentinel.css +0 -58
  890. package/src/server/dash/comps/ui/sentinel.tsx +0 -67
  891. package/src/server/dash/comps/ui/tabs.css +0 -81
  892. package/src/server/dash/comps/ui/tabs.tsx +0 -32
  893. package/src/server/dash/comps/ui/tail.css +0 -12
  894. package/src/server/dash/comps/ui/tail.tsx +0 -37
  895. package/src/server/dash/comps/ui/toast.css +0 -73
  896. package/src/server/dash/comps/ui/toolbar.css +0 -143
  897. package/src/server/dash/comps/ui/toolbar.tsx +0 -93
  898. package/src/server/dash/package.json +0 -5
  899. package/src/server/dash/pnext-env.d.ts +0 -4
  900. package/src/server/dash/pnext.config.ts +0 -5
  901. package/src/server/dash/public/assets/apple-touch-icon.png +0 -0
  902. package/src/server/dash/public/assets/favicon.ico +0 -0
  903. package/src/server/dash/public/assets/favicon.svg +0 -1
  904. package/src/server/dash/public/assets/fonts/LICENSE-fira-code +0 -93
  905. package/src/server/dash/public/assets/fonts/fira-code-latin-400-normal-717ee080.woff2 +0 -0
  906. package/src/server/dash/public/assets/fonts/fira-code-latin-500-normal-530b6706.woff2 +0 -0
  907. package/src/server/dash/public/assets/fonts/fira-code-latin-700-normal-98730669.woff2 +0 -0
  908. package/src/server/dash/tsconfig.json +0 -10
  909. package/src/server/dash/utils/client.ts +0 -19
  910. package/src/server/dash/utils/format.ts +0 -75
  911. package/src/server/dash/utils/paged.ts +0 -184
  912. package/src/server/dash/utils/range.ts +0 -117
  913. /package/{src/server/dash/app/dash/usage/usage.css → dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/account/page.1df2bb5150dd9575.css.pnext-asset.js} +0 -0
  914. /package/dist/dash/{public → standalone/static}/assets/apple-touch-icon.png +0 -0
  915. /package/dist/dash/{public → standalone/static}/assets/chunks/composer-data-6f7608fed13f3dd7.js +0 -0
  916. /package/dist/dash/{public → standalone/static}/assets/chunks/model-options-15c53331a2f28a4f.js +0 -0
  917. /package/dist/dash/{public → standalone/static}/assets/chunks/shared-init-8f2ac936c95a7f7b.js +0 -0
  918. /package/dist/dash/{public → standalone/static}/assets/connect-382b1729a7ae7808.css +0 -0
  919. /package/dist/dash/{public → standalone/static}/assets/dash-49ca85b59ac65c20.css +0 -0
  920. /package/dist/dash/{public → standalone/static}/assets/favicon.ico +0 -0
  921. /package/dist/dash/{public → standalone/static}/assets/favicon.svg +0 -0
  922. /package/dist/dash/{public → standalone/static}/assets/fonts/LICENSE-fira-code +0 -0
  923. /package/dist/dash/{public → standalone/static}/assets/fonts/fira-code-latin-400-normal-717ee080.woff2 +0 -0
  924. /package/dist/dash/{public → standalone/static}/assets/fonts/fira-code-latin-500-normal-530b6706.woff2 +0 -0
  925. /package/dist/dash/{public → standalone/static}/assets/fonts/fira-code-latin-700-normal-98730669.woff2 +0 -0
  926. /package/dist/dash/{public → standalone/static}/assets/global-d2adbf01910d9df5.css +0 -0
  927. /package/dist/dash/{public → standalone/static}/assets/login-c129b1ce237be260.css +0 -0
@@ -0,0 +1,14 @@
1
+ import e from"node:path";import t from"node:process";import{fileURLToPath as n}from"node:url";import*as r from"zod/mini";import i from"node:fs";import{execFileSync as a,spawn as o,spawnSync as s}from"node:child_process";import{createHash as c,randomUUID as l}from"node:crypto";import u from"node:os";import d from"node:net";import f from"node:readline";function p(t,n){if(!n)return``;if(!e.isAbsolute(n))return n;let r=e.relative(t,n);return r&&!r.startsWith(`..`)?r:n}function m(e){try{return JSON.parse(i.readFileSync(e,`utf8`))}catch{return null}}function h(t,n){i.mkdirSync(e.dirname(t),{recursive:!0});let r=`${t}.${process.pid}.${l()}.tmp`;try{i.writeFileSync(r,`${JSON.stringify(n,null,2)}\n`,{encoding:`utf8`,flag:`wx`}),i.renameSync(r,t)}finally{i.rmSync(r,{force:!0})}}function g(t,n){if(i.mkdirSync(e.dirname(n),{recursive:!0}),i.existsSync(n))throw Object.assign(Error(`Directory already exists: ${n}`),{code:`EEXIST`});try{i.renameSync(t,n);return}catch(e){if(e.code!==`EXDEV`)throw e}let r=`${n}.${process.pid}.${l()}.tmp`;try{i.cpSync(t,r,{recursive:!0,preserveTimestamps:!0,verbatimSymlinks:!0,errorOnExist:!0,force:!1}),i.renameSync(r,n),i.rmSync(t,{recursive:!0})}finally{i.rmSync(r,{recursive:!0,force:!0})}}async function _(t,n){if(await i.promises.mkdir(e.dirname(n),{recursive:!0}),await i.promises.lstat(n).catch(e=>{if(e.code!==`ENOENT`)throw e}))throw Object.assign(Error(`Directory already exists: ${n}`),{code:`EEXIST`});try{await i.promises.rename(t,n);return}catch(e){if(e.code!==`EXDEV`)throw e}let r=`${n}.${process.pid}.${l()}.tmp`;try{await i.promises.cp(t,r,{recursive:!0,preserveTimestamps:!0,verbatimSymlinks:!0,errorOnExist:!0,force:!1}),await i.promises.rename(r,n),await i.promises.rm(t,{recursive:!0})}finally{await i.promises.rm(r,{recursive:!0,force:!0})}}function v(e){let t=0,n=``;return()=>{let r;try{r=i.statSync(e).size}catch{return[]}if(r<t&&(t=0,n=``),r===t)return[];let a;try{a=i.openSync(e,`r`)}catch{return[]}try{let e=Buffer.alloc(r-t),o=i.readSync(a,e,0,e.length,t);t+=o;let s=(n+e.toString(`utf8`,0,o)).split(`
2
+ `);return n=s.pop()??``,s.filter(Boolean)}finally{i.closeSync(a)}}}function y(e){return String(e??``).replace(/[^A-Za-z0-9._-]/g,`-`).replace(/^-+|-+$/g,``)}function b(n,r=t.platform){return r===`win32`?`pipe:\\\\.\\pipe\\${y(`${e.win32.basename(n)}-codex-app-server`)}`:`unix:${e.join(n,`broker.sock`)}`}function x(e){if(typeof e!=`string`||e.length===0)throw Error(`Missing broker endpoint.`);if(e.startsWith(`pipe:`)){let t=e.slice(5);if(!t)throw Error(`Broker pipe endpoint is missing its path.`);return{kind:`pipe`,path:t}}if(e.startsWith(`unix:`)){let t=e.slice(5);if(!t)throw Error(`Broker Unix socket endpoint is missing its path.`);return{kind:`unix`,path:t}}throw Error(`Unsupported broker endpoint: ${e}`)}function ee(){let t=e.dirname(n(import.meta.url));for(let n=0;n<10;n++){let n=e.join(t,`package.json`);try{if(JSON.parse(i.readFileSync(n,`utf8`)).name===`@wular/coder`)return t}catch{}let r=e.dirname(t);if(r===t)break;t=r}return e.resolve(e.dirname(n(import.meta.url)),`..`)}const S=ee(),C=i.existsSync(e.join(S,`dist/cli.js`))?e.join(S,`dist/cli.js`):e.join(S,`src/cli.ts`);function w(){try{return JSON.parse(i.readFileSync(e.join(S,`package.json`),`utf8`)).version??`unknown`}catch{return`unknown`}}function T(e){try{return JSON.parse(i.readFileSync(e,`utf8`)).version??null}catch{return null}}function te(){return S}const ne={false:`broker.json`,true:`broker-network.json`};function re(t=`coder-`){return i.mkdtempSync(e.join(u.tmpdir(),t))}function ie(e){let t=x(e);return d.createConnection({path:t.path})}async function ae(e,t=2e3){let n=Date.now();for(;Date.now()-n<t;){if(await new Promise(t=>{let n=ie(e);n.on(`connect`,()=>{n.end(),t(!0)}),n.on(`error`,()=>t(!1))}))return!0;await new Promise(e=>setTimeout(e,50))}return!1}function oe({scriptPath:e,cwd:n,endpoint:r,pidFile:a,logFile:s,networkAccess:c=!1,env:l=t.env}){let u=i.openSync(s,`a`),d=o(t.execPath,[e,`serve`,`--endpoint`,r,`--cwd`,n,`--pid-file`,a,`--network-access`,String(c)],{cwd:n,env:l,detached:!0,stdio:[`ignore`,u,u]});return d.unref(),i.closeSync(u),d}function se(){let e=[new URL(`./lib/broker.js`,import.meta.url),new URL(`./main.js`,import.meta.url)];for(let t of e){let e=n(t);if(i.existsSync(e))return e}throw Error("Coder broker script not found next to the runtime. Rebuild with `bun run build`.")}function ce(t,n=!1){return e.join(M(t),ne[n?`true`:`false`])}function le(e,t=!1){let n=ce(e,t);if(!i.existsSync(n))return null;try{let e=JSON.parse(i.readFileSync(n,`utf8`));return(e.networkAccess??!1)===t?e:null}catch{return null}}function ue(e,t,n=t.networkAccess??!1){let r=M(e);i.mkdirSync(r,{recursive:!0}),i.writeFileSync(ce(e,n),`${JSON.stringify(t,null,2)}\n`,`utf8`)}function de(e,t=!1){let n=ce(e,t);i.existsSync(n)&&i.unlinkSync(n)}async function fe(e){if(!e)return!1;try{return await ae(e,150)}catch{return!1}}async function pe(n,r={}){let i=r.scriptPath??se(),a=w(),o=r.networkAccess??!1,s=le(n,o),c=s?.version===a&&s?.scriptPath===i&&(s?.networkAccess??!1)===o;if(s&&c&&await fe(s.endpoint))return s;s&&(me({endpoint:s.endpoint??null,pidFile:s.pidFile??null,logFile:s.logFile??null,sessionDir:s.sessionDir??null,pid:s.pid??null,killProcess:r.killProcess??null}),de(n,o));let l=re(),u=(r.createBrokerEndpoint??b)(l,r.platform),d=e.join(l,`broker.pid`),f=e.join(l,`broker.log`),p=oe({scriptPath:i,cwd:n,endpoint:u,pidFile:d,logFile:f,networkAccess:o,env:r.env??t.env});if(!await ae(u,r.timeoutMs??2e3))return me({endpoint:u,pidFile:d,logFile:f,sessionDir:l,pid:p.pid??null,killProcess:r.killProcess??null}),null;let m={endpoint:u,pidFile:d,logFile:f,sessionDir:l,pid:p.pid??null,networkAccess:o,version:a,scriptPath:i};return ue(n,m,o),m}function me({endpoint:t=null,pidFile:n,logFile:r,sessionDir:a=null,pid:o=null,killProcess:s=null}){if(Number.isFinite(o)&&s)try{s(o)}catch{}if(n&&i.existsSync(n)&&i.unlinkSync(n),r&&i.existsSync(r)&&i.unlinkSync(r),t)try{let e=x(t);e.kind===`unix`&&i.existsSync(e.path)&&i.unlinkSync(e.path)}catch{}let c=a??(n?e.dirname(n):r?e.dirname(r):null);if(c&&i.existsSync(c))try{i.rmdirSync(c)}catch{}}function he(e,n=[],r={}){let i=s(e,n,{cwd:r.cwd,env:r.env,encoding:`utf8`,input:r.input,maxBuffer:r.maxBuffer,stdio:r.stdio??`pipe`,shell:t.platform===`win32`?t.env.SHELL||!0:!1,windowsHide:!0});return{command:e,args:n,status:i.status??0,signal:i.signal??null,stdout:i.stdout??``,stderr:i.stderr??``,error:i.error??null}}function ge(e,t=[`--version`],n={}){let r=he(e,t,n);return r.error&&r.error.code===`ENOENT`?{available:!1,detail:`not found`}:r.error?{available:!1,detail:r.error.message}:r.status===0?{available:!0,detail:r.stdout.trim()||r.stderr.trim()||`ok`}:{available:!1,detail:r.stderr.trim()||r.stdout.trim()||`exit ${r.status}`}}function _e(e){return/not found|no running instance|cannot find|does not exist|no such process/i.test(e)}function ve(e,n={}){if(!Number.isFinite(e))return{attempted:!1,delivered:!1,method:null};let r=e,i=n.platform??t.platform,a=n.runCommandImpl??he,o=n.killImpl??t.kill.bind(t);if(i===`win32`){let e=a(`taskkill`,[`/PID`,String(r),`/T`,`/F`],{cwd:n.cwd,env:n.env});if(!e.error&&e.status===0)return{attempted:!0,delivered:!0,method:`taskkill`,result:e};let t=`${e.stderr}\n${e.stdout}`.trim();if(!e.error&&_e(t))return{attempted:!0,delivered:!1,method:`taskkill`,result:e};if(e.error?.code===`ENOENT`)try{return o(r),{attempted:!0,delivered:!0,method:`kill`}}catch(e){if(e?.code===`ESRCH`)return{attempted:!0,delivered:!1,method:`kill`};throw e}throw e.error?e.error:Error(ye(e))}try{return o(-r,`SIGTERM`),{attempted:!0,delivered:!0,method:`process-group`}}catch(e){if(e?.code!==`ESRCH`)try{return o(r,`SIGTERM`),{attempted:!0,delivered:!0,method:`process`}}catch(e){if(e?.code===`ESRCH`)return{attempted:!0,delivered:!1,method:`process`};throw e}return{attempted:!0,delivered:!1,method:`process-group`}}}function ye(e){let t=[`${e.command} ${e.args.join(` `)}`.trim()];e.signal?t.push(`signal=${e.signal}`):t.push(`exit=${e.status}`);let n=(e.stderr||``).trim(),r=(e.stdout||``).trim();return n?t.push(n):r&&t.push(r),t.join(`: `)}function be(e){return new Promise(n=>{let r=o(e,t.argv.slice(1),{env:t.env,shell:!1,stdio:`inherit`}),i=()=>r.kill(`SIGINT`),a=()=>r.kill(`SIGTERM`);t.once(`SIGINT`,i),t.once(`SIGTERM`,a);let s=e=>{t.off(`SIGINT`,i),t.off(`SIGTERM`,a),n(e)};r.once(`error`,e=>s({error:e,status:null,signal:null})),r.once(`close`,(e,t)=>s({status:e,signal:t}))})}const xe=-32001,Se=`coder/notice`,Ce=`coder/appServerExited`,we=`broker/recycle`;function Te(){let e=he(`codex`,[`--version`]),t=/(\d+\.\d+\.\d+(?:-[\w.]+)?)/.exec(`${e.stdout} ${e.stderr}`);return t?t[1]:`0.144.1`}function Ee(){return{title:`Coder`,name:`coder`,version:Te()}}const De={experimentalApi:!1,requestAttestation:!1,optOutNotificationMethods:[`item/agentMessage/delta`,`item/reasoning/summaryTextDelta`,`item/reasoning/summaryPartAdded`,`item/reasoning/textDelta`]};function Oe(e,t,n){return n===void 0?{code:e,message:t}:{code:e,message:t,data:n}}function ke(e,t){let n=Error(e);return n.data=t,t?.code!==void 0&&(n.rpcCode=t.code),n}var Ae=class{cwd;options;pending;nextId;stderr;closed;exitError;notificationHandler;serverRequestHandler;noticeHandler;lineBuffer;transport;exitPromise;exitResolved;resolveExit;handleServerRequest;constructor(e,t={}){this.cwd=e,this.options=t,this.pending=new Map,this.nextId=1,this.stderr=``,this.closed=!1,this.exitError=null,this.notificationHandler=null,this.serverRequestHandler=null,this.noticeHandler=null,this.lineBuffer=``,this.transport=`unknown`,this.handleServerRequest=e=>this.defaultHandleServerRequest(e),this.exitPromise=new Promise(e=>{this.resolveExit=e})}setNotificationHandler(e){this.notificationHandler=e}setServerRequestHandler(e){this.serverRequestHandler=e}setNoticeHandler(e){this.noticeHandler=e}request(e,t){if(this.closed)throw Error(`codex app-server client is closed.`);if(this.exitResolved)return Promise.reject(this.exitError??Error(`codex app-server connection closed.`));let n=this.nextId;return this.nextId+=1,new Promise((r,i)=>{this.pending.set(n,{resolve:r,reject:i,method:e}),this.sendMessage({id:n,method:e,params:t})})}notify(e,t={}){this.closed||this.sendMessage({method:e,params:t})}handleChunk(e){this.lineBuffer+=e;let t=this.lineBuffer.indexOf(`
3
+ `);for(;t!==-1;){let e=this.lineBuffer.slice(0,t);this.lineBuffer=this.lineBuffer.slice(t+1),this.handleLine(e),t=this.lineBuffer.indexOf(`
4
+ `)}}handleLine(e){if(!e.trim())return;let t;try{t=JSON.parse(e)}catch(t){this.handleExit(ke(`Failed to parse codex app-server JSONL: ${t instanceof Error?t.message:String(t)}`,{line:e}));return}if(t.id!==void 0&&t.method){this.handleServerRequest(t);return}if(t.id!==void 0){let e=this.pending.get(t.id);if(!e)return;this.pending.delete(t.id),t.error?e.reject(ke(t.error.message??`codex app-server ${e.method} failed.`,t.error)):e.resolve(t.result??{});return}if(t.method===`coder/notice`){this.noticeHandler?.(String(t.params?.message??``));return}if(t.method===`coder/appServerExited`){this.handleExit(ke(String(t.params?.message??`codex app-server exited.`)));return}t.method&&this.notificationHandler&&this.notificationHandler(t)}defaultHandleServerRequest(e){let t=this.serverRequestHandler;if(!t){this.sendMessage({id:e.id,error:Oe(-32601,`Unsupported server request: ${e.method}`)});return}Promise.resolve().then(()=>t(e.method,e.params??{})).then(t=>{this.sendMessage({id:e.id,result:t??{}})}).catch(t=>{this.sendMessage({id:e.id,error:Oe(-32e3,t instanceof Error?t.message:String(t))})})}handleExit(e){if(!this.exitResolved){this.exitResolved=!0,this.exitError=e??null;for(let e of this.pending.values())e.reject(this.exitError??Error(`codex app-server connection closed.`));this.pending.clear(),this.resolveExit(void 0)}}sendMessage(e){throw Error(`sendMessage must be implemented by subclasses.`)}},je=class extends Ae{proc;readline;constructor(e,t={}){super(e,t),this.transport=`direct`}async initialize(){let e=this.options.networkAccess??!1;this.proc=o(`codex`,Me(e,this.options.nativeMcp),{cwd:this.cwd,env:this.options.env??t.env,stdio:[`pipe`,`pipe`,`pipe`],shell:t.platform===`win32`?t.env.SHELL||!0:!1,windowsHide:!0});let n=this.proc.stdout,r=this.proc.stderr;if(!n||!r)throw Error(`codex app-server did not expose stdio streams.`);n.setEncoding(`utf8`),r.setEncoding(`utf8`),r.on(`data`,e=>{this.stderr+=e}),this.proc.on(`error`,e=>{this.handleExit(e)}),this.proc.stdin?.on(`error`,()=>{}),this.proc.on(`exit`,(e,t)=>{let n=this.stderr.trim(),r=e===0?null:ke(`codex app-server exited unexpectedly (${t?`signal ${t}`:`exit ${e}`}).${n?`\n${n}`:``}`);this.handleExit(r)}),this.readline=f.createInterface({input:n}),this.readline.on(`line`,e=>{this.handleLine(e)}),await this.request(`initialize`,{clientInfo:this.options.clientInfo??Ee(),capabilities:this.options.capabilities??De}),this.notify(`initialized`,{})}async close(){if(this.closed){await this.exitPromise;return}this.closed=!0,this.readline&&this.readline.close(),this.proc&&!this.proc.killed&&(this.proc.stdin?.end(),setTimeout(()=>{if(this.proc&&!this.proc.killed&&this.proc.exitCode===null)if(t.platform===`win32`)try{ve(this.proc.pid)}catch{}else this.proc.kill(`SIGTERM`)},50).unref?.()),await this.exitPromise}sendMessage(e){let t=`${JSON.stringify(e)}\n`,n=this.proc?.stdin;if(!n)throw Error(`codex app-server stdin is not available.`);n.write(t)}};function Me(e,t=!1){return[`-c`,`sandbox_workspace_write.network_access=${e}`,`app-server`,...t?[]:[`--disable`,`plugins`,`--disable`,`apps`]]}var Ne=class extends Ae{endpoint;socket;constructor(e,t={}){super(e,t),this.transport=`broker`,this.endpoint=t.brokerEndpoint}async initialize(){await new Promise((e,t)=>{let n=x(this.endpoint);this.socket=d.createConnection({path:n.path}),this.socket.setEncoding(`utf8`),this.socket.on(`connect`,e),this.socket.on(`data`,e=>{this.handleChunk(e)}),this.socket.on(`error`,e=>{this.exitResolved||t(e),this.handleExit(e)}),this.socket.on(`close`,()=>{this.handleExit(this.exitError)})}),await this.request(`initialize`,{clientInfo:this.options.clientInfo??Ee(),capabilities:this.options.capabilities??De}),this.notify(`initialized`,{})}async close(){if(this.closed){await this.exitPromise;return}this.closed=!0,this.socket&&this.socket.end(),await this.exitPromise}sendMessage(e){let t=`${JSON.stringify(e)}\n`,n=this.socket;if(!n)throw Error(`codex app-server broker connection is not connected.`);n.write(t)}},E=class{static async connect(e,n={}){let r=n.networkAccess??!1,i=null;!n.disableBroker&&!n.nativeMcp&&(i=n.brokerEndpoint??n.env?.CODER_APP_SERVER_ENDPOINT??t.env.CODER_APP_SERVER_ENDPOINT??null,!i&&n.reuseExistingBroker&&(i=le(e,r)?.endpoint??null),!i&&!n.reuseExistingBroker&&(i=(await pe(e,{env:n.env,networkAccess:r}))?.endpoint??null));let a=i?new Ne(e,{...n,brokerEndpoint:i}):new je(e,n);return await a.initialize(),a}};async function Pe(e,t,n){for(let r of[!1,!0]){if(!le(e,r))continue;let i=null;try{return i=await E.connect(e,{networkAccess:r,reuseExistingBroker:!0}),await i.request(t,{threadId:n}),!0}catch{}finally{await i?.close().catch(()=>{})}}return!1}function Fe(e){try{let t=o(`codex`,e,{detached:!0,stdio:`ignore`});t.on(`error`,()=>{}),t.unref()}catch{}}async function Ie(e,t){await Pe(e,`thread/archive`,t)||Fe([`archive`,t])}function Le(t){let n=e.join(process.env.CODEX_HOME||e.join(u.homedir(),`.codex`),`archived_sessions`);try{return i.readdirSync(n).some(e=>e.endsWith(`-${t}.jsonl`))}catch{return!1}}function Re(e){return new Promise(t=>{try{let n=o(`codex`,[`unarchive`,e],{stdio:`ignore`});n.on(`error`,()=>t(!1)),n.on(`close`,e=>t(e===0))}catch{t(!1)}})}async function ze(e,t){return await Pe(e,`thread/delete`,t)?!0:s(`codex`,[`delete`,`--force`,t],{encoding:`utf8`}).status===0}const D=[`completed`,`failed`,`cancelled`],Be=[`queued`,`running`],Ve=/^[a-z0-9][a-z0-9_-]*$/i;function O(e){return Ve.test(e)}function He(e,t){if(!O(e))throw Error(`Invalid ${t} "${e}".`)}function k(...t){return e.join(e.resolve(process.env.CODER_HOME||e.join(u.homedir(),`.coder`)),...t)}function A(...t){let n=u.homedir(),r=u.platform(),i=process.env.CODER_CACHE_HOME||(r===`darwin`?e.join(n,`Library`,`Caches`,`wular-coder`):r===`win32`?e.join(process.env.LOCALAPPDATA||e.join(n,`AppData`,`Local`),`wular-coder`,`cache`):e.join(process.env.XDG_CACHE_HOME||e.join(n,`.cache`),`wular-coder`));return e.join(e.resolve(i),...t)}function Ue(){return k()}function We(t){return t?e.join(t,`flows`):k(`state`,`global`,`flows`)}function Ge(){return A(`flows-archived`)}function Ke(){return A(`usage.json`)}function qe(e=Ke()){return`${e}.${process.pid}.${l()}.tmp`}function Je(){return A(`runner`,`usage.json`)}function j(e){try{return a(`git`,[`rev-parse`,`--show-toplevel`],{cwd:e,encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()}catch{return e}}const Ye=`global`;function M(e){return k(`state`,Ye)}function Xe(){let t=k(`state`),n=[];try{n=i.readdirSync(t,{withFileTypes:!0})}catch{}return n.filter(e=>e.isDirectory()&&e.name!==Ye).map(n=>e.join(t,n.name))}function N(t){return e.join(M(t),`jobs`)}const Ze=18e5,Qe=(e,t=Date.now())=>t-e>Ze;function P(e){return A(`archive`)}function F(t,n){He(n,`task id`);let r=e.join(N(t),n);if(i.existsSync(e.join(r,`job.json`)))return r;let a=e.join(P(t),n);if(i.existsSync(e.join(a,`job.json`)))return a;for(let t of Xe()){let r=e.join(t,`jobs`,n);if(i.existsSync(e.join(r,`job.json`)))return r}return r}function $e(e,t,n={}){return t.archived&&(n.auto||!t.autoArchived)?t:t.archived?I(e,t.id,{autoArchived:void 0}):I(e,t.id,{archived:!0,archivedAt:new Date().toISOString(),...n.auto?{autoArchived:!0}:{}},{touch:!n.auto})}function et(t,n,r={}){if(Be.includes(n.status))return $e(t,n,r);let i=F(t,n.id),a=e.join(P(t),n.id);i!==a&&g(i,a);let o=$e(t,n,r);return n.engine!==`claude`&&n.threadId&&Ie(t,n.threadId),o}function tt(e){return!!e.archived&&(e.resumedAt??``)>(e.archivedAt??``)}function nt(t,n){let r=F(t,n.id),i=e.join(N(t),n.id);return r!==i&&g(r,i),I(t,n.id,{archived:void 0,archivedAt:void 0,autoArchived:void 0})}function rt(){let e=Math.random().toString(36).slice(2,8);return`task-${Date.now().toString(36)}-${e}`}function I(t,n,r,a={}){let o=F(t,n);i.mkdirSync(o,{recursive:!0});let s=e.join(o,`job.json`),c=L(t,n)??{id:n,createdAt:new Date().toISOString(),status:`queued`},l={...c,...r,updatedAt:a.touch===!1?c.updatedAt:new Date().toISOString()};return i.writeFileSync(s,`${JSON.stringify(l,null,2)}\n`,`utf8`),l}function it(e){return e.agent&&(e.engine=e.agent),delete e.agent,e}function L(t,n){if(!O(n))return null;let r=e.join(F(t,n),`job.json`);if(!i.existsSync(r))return null;try{return it(JSON.parse(i.readFileSync(r,`utf8`)))}catch{return null}}function at(e,t){let n=F(e,t);return i.existsSync(n)?(i.rmSync(n,{recursive:!0,force:!0}),!0):!1}function ot(e){if(!e)return!1;try{return process.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function st(e){try{let t=a(`ps`,[`-o`,`lstart=`,`-p`,String(e)],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`],env:{...process.env,TZ:Intl.DateTimeFormat().resolvedOptions().timeZone}}).trim(),n=t?Date.parse(t):NaN;return Number.isFinite(n)?n:null}catch{return null}}function ct(e,t,n){if(!ot(e))return!1;let r=n(e),i=Date.parse(t.resumedAt??t.createdAt??``);return r===null||!Number.isFinite(i)||r<=i+6e4}function R(e,t,n=st){if(t.status!==`running`&&t.status!==`queued`)return t;let r;if(t.pid)r=!ct(t.pid,t,n);else{let e=Date.parse(t.updatedAt??t.createdAt??``);r=Number.isFinite(e)&&Date.now()-e>6e4}return r?I(e,t.id,{status:`failed`,error:`worker exited without finishing`,completedAt:new Date().toISOString()}):t}function lt(t,n){let r=[];for(let a of t){let t=[];try{t=i.readdirSync(a)}catch{continue}for(let o of t){if(n.has(o))continue;let t=e.join(a,o,`job.json`);try{let e=it(JSON.parse(i.readFileSync(t,`utf8`)));n.add(o),r.push(e)}catch{}}}return r}async function*ut(t){let n=await i.promises.readdir(e.dirname(M(t)),{withFileTypes:!0}).catch(()=>[]),r=[{dir:N(t),archived:!1},{dir:P(t),archived:!0},...n.filter(e=>e.isDirectory()&&e.name!==Ye).map(n=>({dir:e.join(e.dirname(M(t)),n.name,`jobs`),archived:!1}))];for(let{dir:t,archived:n}of r){let r=await i.promises.readdir(t,{withFileTypes:!0}).catch(()=>[]);for(let i of r)i.isDirectory()&&O(i.name)&&(yield{id:i.name,dir:e.join(t,i.name),archived:n})}}const dt=(e,t)=>String(t.updatedAt??``).localeCompare(String(e.updatedAt??``));function ft(){let e=new Map;return t=>(e.has(t)||e.set(t,st(t)),e.get(t))}function pt(t){let n=ft(),r=[N(t),...Xe().map(t=>e.join(t,`jobs`))],i=[];for(let e of lt(r,new Set)){let r=R(t,e,n);r.archived&&!tt(r)?et(t,r,{auto:!0}):i.push(r.archived?nt(t,r):r)}return i.sort(dt)}function mt(e,t,n=!1){if(t.status===`queued`)return!0;let r=t.generation??0;if(n&&!r)return!1;let i=L(e,t.task.id);return i?r?t.startedAt===void 0||(Date.parse(i.resumedAt??``)||0)<t.startedAt:!1:!0}function ht(t){let n=m(e.join(M(t),`runner`,`task.json`))??{},r=e=>e===void 0?void 0:new Date(e).toISOString();return Object.values(n).map(({value:e})=>e).filter(e=>mt(t,e)).map(e=>{let t=e.status===`waiting`?`running`:e.status,n=e.archivedAt??(D.includes(t)&&Qe(e.finishedAt??e.updatedAt)?e.finishedAt??e.updatedAt:void 0);return{id:e.task.id,status:t,...e.task.name?{name:e.task.name}:{},...e.task.prompt?{prompt:e.task.prompt}:{},...e.task.cwd?{cwd:e.task.cwd}:{},...e.task.agent?{agentId:e.task.agent}:{},source:e.task.source??`dashboard`,...e.error?{error:e.error}:{},createdAt:r(e.createdAt),updatedAt:r(e.updatedAt),...e.finishedAt?{completedAt:r(e.finishedAt)}:{},...n===void 0?{}:{archived:!0,archivedAt:r(n)}}})}function gt(t,n){let r=ft(),i=n?.migrate??!0,a=new Set,o=[];for(let e of lt([P(t)],a))tt(e)?i&&nt(t,R(t,e,r)):o.push(R(t,e,r));let s=[N(t),...Xe().map(t=>e.join(t,`jobs`))];for(let e of lt(s,a))if(e.archived&&!tt(e)){let n=R(t,e,r);o.push(i?et(t,n,{auto:!0}):n)}return o.sort(dt)}function _t(e,t){let n=gt(e),r=[...pt(e),...n].sort(dt);if(!t)return r[0]??null;let i=r.find(e=>e.id===t);if(i)return i;let a=r.filter(e=>e.id.startsWith(t));if(a.length===1)return a[0];if(a.length>1)throw Error(`Task reference "${t}" is ambiguous. Use a longer id.`);return null}function vt(t,n){let r=F(t,n);try{i.mkdirSync(r,{recursive:!0}),i.writeFileSync(e.join(r,`heartbeat`),``,`utf8`)}catch{}}function yt(t,n){let r=F(t,n.id),a=Date.parse(n.updatedAt??``)||0;for(let t of[`log.jsonl`,`heartbeat`])try{a=Math.max(a,i.statSync(e.join(r,t)).mtimeMs)}catch{}return a?new Date(a).toISOString():void 0}async function bt(e,t,n=400){let r=t;for(;!D.includes(r.status);)await new Promise(e=>setTimeout(e,n)),r=R(e,L(e,r.id)??r);return r}const xt=`steer-queue.jsonl`;function St(t,n,r){let a=F(t,n);i.mkdirSync(a,{recursive:!0}),i.appendFileSync(e.join(a,xt),`${JSON.stringify({at:new Date().toISOString(),text:r})}\n`,`utf8`)}function Ct(t,n){let r=F(t,n),a=e.join(r,xt),o=e.join(r,`steer-claim-${process.pid}-${Date.now()}.tmp`);try{i.renameSync(a,o)}catch{return[]}try{return i.readFileSync(o,`utf8`).split(/\r?\n/).filter(Boolean).map(e=>{try{return String(JSON.parse(e).text??``)}catch{return``}}).filter(Boolean)}finally{try{i.unlinkSync(o)}catch{}}}function wt(t,n,r){let a=F(t,n);i.mkdirSync(a,{recursive:!0}),i.appendFileSync(e.join(a,`log.jsonl`),`${JSON.stringify({at:new Date().toISOString(),...r})}\n`,`utf8`)}function Tt(t,n){let r=e.join(F(t,n),`results.jsonl`);return i.existsSync(r)?i.readFileSync(r,`utf8`).split(/\r?\n/).filter(Boolean).flatMap(e=>{try{return[JSON.parse(e)]}catch{return[]}}):[]}function Et(e,t){if(t<=0)return[];let n=0;for(let r=e.length-1;r>=0;--r)if(e[r]?.kind!==`usage`&&(n+=1)===t)return e.slice(r);return e}function z(t,n,r=40){let a=e.join(F(t,n),`log.jsonl`);return i.existsSync(a)?i.readFileSync(a,`utf8`).split(/\r?\n/).filter(Boolean).slice(-r).map(e=>{try{return JSON.parse(e)}catch{return{message:e}}}):[]}function Dt(e){return[e.engine??`-`,e.model,e.model?e.effort:null].filter(Boolean).join(`/`)}function Ot(e){let t=Date.parse(e??``);return Number.isFinite(t)?Math.max(0,Date.now()-t):0}const kt=6e5;var B=class extends Error{code;hint;taskId;payload;approval;result;runId;status;constructor(e,t,n={}){super(t),this.name=`CoderError`,this.code=e,Object.assign(this,n)}};const V={chain:[`codex`,`claude`],engines:{codex:{model:`gpt-6.1-sol`,effort:`high`,permissions:`auto`},claude:{model:`opus`,effort:`medium`,permissions:`auto`}},models:{},approvals:{escalationTimeoutMs:12e4,allowedNetworkHosts:[]}},At=e=>e===`failed`?0:e===`completed`?3:e===`cancelled`?2:1,jt=(e,t)=>e.rank-t.rank||t.createdAt-e.createdAt||(t.id<e.id?-1:+(t.id>e.id)),H={luna:`gpt-6-luna`,sol:`gpt-6.1-sol`,astra:`gpt-6-astra`},Mt=new Set([`low`,`medium`,`high`]),U={sonnet:`sonnet`,opus:`opus`,fable:`fable`},Nt=new Set([`low`,`medium`,`high`]),Pt={"read-only":{sandbox:`read-only`,approvalPolicy:`never`,approvalMode:null},"workspace-write":{sandbox:`workspace-write`,approvalPolicy:`never`,approvalMode:null},auto:{sandbox:`workspace-write`,approvalPolicy:`on-request`,approvalMode:`auto`}},Ft={"read-only":[`--permission-mode`,`dontAsk`,`--disallowedTools`,`Edit`,`Write`,`NotebookEdit`],"workspace-write":[`--permission-mode`,`acceptEdits`],auto:[`--permission-mode`,`auto`]},It=[`--permission-mode`,`dontAsk`,`--disallowedTools`,`Edit`,`Write`,`NotebookEdit`,`Bash`,`WebFetch`,`WebSearch`,`Task`],Lt=/failIfUnavailable|sandbox\b[^.\n]*?(?:failed|could ?n[o']t|cannot|unavailable|not available|not supported)/i,Rt=new Set([`localhost`,`127.0.0.1`,`::1`,`[::1]`]);function zt(e){return e.flatMap(e=>d.isIPv6(e)?[`[${e}]`]:e.startsWith(`[`)||e.includes(`:`)||d.isIP(e)?[e]:[e,`*.${e}`])}function Bt(e,t,n=[],r=[],i=[]){let a=e===`read-only`?r:[...r,...i],o=a.length?{permissions:{additionalDirectories:a}}:{};return JSON.stringify(e===`read-only`?{...o,sandbox:{enabled:!0,failIfUnavailable:!0,autoAllowBashIfSandboxed:!0,filesystem:{denyWrite:[t,...r],...i.length?{allowWrite:i}:{}}}}:{...o,sandbox:{enabled:!0,autoAllowBashIfSandboxed:!0,...e===`auto`&&n.length?{network:{allowedDomains:zt(n),...n.some(e=>Rt.has(e))?{allowLocalBinding:!0}:{}}}:{}}})}const Vt=r.enum([`codex`,`claude`]),Ht=r.enum([`codex`,`claude`,`custom`]),Ut=r.enum([`low`,`medium`,`high`]),Wt=r.enum([`read-only`,`workspace-write`,`auto`]),Gt=r.partial(r.strictObject({model:r.string().check(r.minLength(1)),effort:Ut,permissions:Wt})),Kt=r.partial(r.strictObject({model:r.string().check(r.minLength(1)),effort:Ut,permissions:Wt,network:r.boolean()})),qt=r.strictObject({baseUrl:r.url(),model:r.string().check(r.minLength(1)),envKey:r.optional(r.string().check(r.minLength(1))),wireApi:r.optional(r.enum([`chat`,`responses`])),disabled:r.optional(r.boolean())}),Jt=r.strictObject({provider:Vt,model:r.string().check(r.minLength(1)),effort:r.optional(Ut),disabled:r.optional(r.boolean())}),Yt=r.strictObject({disabled:r.boolean()}),Xt=r.union([qt,Jt,Yt]),Zt=r.strictObject({escalationTimeoutMs:r.number().check(r.positive()),allowedNetworkHosts:r.array(r.string())}),Qt=r.enum([`observe`,`comment`,`write`]),$t=r.string().check(r.regex(/^[a-z0-9][a-z0-9_-]*$/i,`agent or flow name`)),en=r.strictObject({allowedTools:r.optional(r.union([Qt,r.array(r.string())])),allowedEvents:r.optional(r.array(r.string()))}),tn=r.union([r.boolean(),r.strictObject({engine:r.optional(r.string()),model:r.optional(r.string()),effort:r.optional(Ut),permissions:r.optional(Wt),runner:r.optional(r.enum([`local`,`local-docker`,`vercel-sandbox`,`github-actions`])),integrations:r.optional(r.record(r.string(),en))})]),nn=r.strictObject({command:r.optional(r.string().check(r.minLength(1))),args:r.optional(r.array(r.string())),env:r.optional(r.record(r.string(),r.string())),url:r.optional(r.string().check(r.minLength(1))),type:r.optional(r.enum([`stdio`,`http`,`sse`])),headers:r.optional(r.record(r.string(),r.string())),tools:r.optional(r.array(r.string())),description:r.optional(r.string())}).check(r.refine(e=>!!e.command!=!!e.url,`one of command or url`)),rn=r.strictObject({chain:r.array(Ht).check(r.minLength(1)),engines:r.partial(r.strictObject({codex:Kt,claude:Gt,custom:Gt})),models:r.optional(r.record(r.string().check(r.regex(/^[a-z0-9][a-z0-9./_-]*$/i,`model name`)),Xt)),agents:r.optional(r.record($t,tn)),mcp:r.optional(r.record($t,nn)),approvals:Zt}),an=r.partial(r.extend(rn,{approvals:r.partial(Zt)}));function W(e){return`baseUrl`in e}function on(e){return`provider`in e}function sn(e,t){return t??e===`auto`}const cn=/^(?!-)[a-z0-9-]{1,63}(?<!-)(?:\.(?!-)[a-z0-9-]{1,63}(?<!-))*(?::\d{1,5})?$/i;function ln(e){if(d.isIP(e))return!0;let t=/^\[([^\]]+)\](?::\d{1,5})?$/.exec(e);return t?d.isIPv6(t[1]):e.length<=253&&cn.test(e)}function un(e,t){delete e.models?.[t];for(let n of Object.values(e.engines??{}))n?.model===t&&delete n.model}function G(e){let t=Object.keys(e?.agents??{}).filter(e=>[`codex`,`claude`,`custom`].includes(e));if(t.length)return t.map(e=>`agents.${e}: engine defaults moved to engines.${e}`);let n=an.safeParse(e);if(!n.success)return n.error.issues.map(e=>`${e.path.join(`.`)||`config`}: ${e.message}`);let r=pn(V,n.data),i=[];for(let[e,t]of(n.data.approvals?.allowedNetworkHosts??[]).entries())ln(t)||i.push(`approvals.allowedNetworkHosts.${e}: "${t}" is not a host name or IP address`);for(let[e,t]of Object.entries(n.data.models??{})){if(e===`codex`||e===`claude`||e===`custom`){i.push(`models.${e}: reserved engine name`);continue}if(on(t)){let n=r.models?.[t.model];n&&!W(n)&&i.push(`models.${e}: alias target "${t.model}" is itself a config entry`)}}return i}function dn(e){if(!i.existsSync(e))return null;try{return JSON.parse(i.readFileSync(e,`utf8`))}catch(t){let n=t instanceof Error?t.message:String(t);throw Error(`Invalid JSON in ${e}: ${n}`)}}function fn(e){return pn(V,e)}function pn(e,t){if(!t||typeof t!=`object`||Array.isArray(t))return t??e;let n={...e},r=e;for(let[e,i]of Object.entries(t))n[e]=i&&typeof i==`object`&&!Array.isArray(i)&&r?.[e]&&typeof r[e]==`object`?pn(r[e],i):i;return n}function K(){return k(`config.json`)}const mn=[`coder.config.json`,`coder.json`];function q(t){let n=e.join(t,`.coder`,`config.json`);if(i.existsSync(n))return n;for(let r of mn){let a=e.join(t,r);if(i.existsSync(a)){i.mkdirSync(e.dirname(n),{recursive:!0}),i.renameSync(a,n),process.stderr.write(`coder: moved ${r} to .coder/config.json\n`);break}}return n}const hn=`CODER_WORKSPACE_CONFIG`;function gn(e,t){let n=t.approvals?.allowedNetworkHosts?.filter(t=>e.approvals.allowedNetworkHosts.includes(t)),r=Object.fromEntries(Object.entries(t.engines??{}).map(([e,t])=>[e,{...t?.model?{model:t.model}:{},...t?.effort?{effort:t.effort}:{}}])),i=Object.entries(t.models??{}).filter(([,e])=>e.disabled===!0);return{...t.chain?{chain:t.chain.filter(t=>e.chain.includes(t))}:{},engines:r,models:Object.fromEntries(i.map(([e])=>[e,{disabled:!0}])),...n?{approvals:{...e.approvals,allowedNetworkHosts:n}}:{}}}function J(e){let t=j(e),n=process.env[hn],r=[[K(),dn(K())],...n?[[`the workspace config`,JSON.parse(n)]]:[]],i=q(t);r.push([i,dn(i)]);let a=V;for(let[e,t]of r){if(!t)continue;let r=G(t);if(r.length)throw Error(`Invalid config in ${e}:\n ${r.join(`
5
+ `)}`);a=pn(a,n&&e===i?gn(a,t):t)}let o=G(a);if(o.length)throw Error(`Invalid merged config:\n ${o.join(`
6
+ `)}`);return a}function _n(e){return e.replace(/\/+$/,``).replace(/\/(chat\/completions|completions|responses)$/,``)}function vn(e,t,n){let r=[q(j(e)),K()];for(let e of r){let r;try{r=dn(e)}catch{continue}if(r?.models?.[t])return Object.assign(r.models[t],n),!G(r).length&&(i.writeFileSync(e,`${JSON.stringify(r,null,2)}\n`,`utf8`),!0)}return!1}function yn(e){return/\/(chat\/completions|completions|responses)\/*$/.test(e)}function bn(e,t){let n=_n(e);return yn(e)||/\/v\d+(alpha|beta)?$/.test(n)?[`${n}/${t}`]:[`${n}/${t}`,`${n}/v1/${t}`]}function xn(e,t,n){let r=t?e.models?.[t]:void 0;if(!t||!r||!W(r))return null;let i=`coder-${t}`;return{model:r.model,modelProvider:i,configOverrides:{[`model_providers.${i}`]:{name:t,base_url:n?.url??_n(r.baseUrl),...r.envKey&&!n?{env_key:r.envKey}:{},wire_api:`responses`}}}}function Sn(e){return e?H[e]??e:null}function Cn(e){return e in H||e in U}function wn(e,t){return!!(t&&e.models?.[t]?.disabled)}function Tn(e,t){if(wn(e,t))throw Error(`model "${t}" is disabled in config`)}function En(e,t){if(!e)return null;let n=String(e).trim().split(`:`).map(e=>e.trim());if(!n.length||n.length>3||n.some(e=>!e))throw Error(`Invalid engine spec "${e}".`);let r=null,i=null,a=null,o=e=>Mt.has(e)||Nt.has(e);for(let t of n)if(t===`codex`||t===`claude`||t===`custom`){if(r)throw Error(`Invalid engine spec "${e}".`);r=t}else if(o(t)&&!a)a=t;else if(!i)i=t;else throw Error(`Invalid engine spec "${e}".`);let s=i?t.models?.[i]:void 0;if(s&&on(s)){if(s.disabled)throw Error(`model "${i}" is disabled in config`);if(r&&r!==s.provider)throw Error(`Alias "${i}" runs on ${s.provider}, not ${r}.`);r=s.provider,a=a??s.effort??null,i=s.model}r||=i&&i in U?`claude`:i&&s&&W(s)?`custom`:`codex`;let c=t.engines[r]??{},l=i??c.model??null;return Tn(t,l),{engine:r,model:l,effort:a??c.effort??null}}function Dn(t){let n=K();return i.mkdirSync(e.dirname(n),{recursive:!0}),i.writeFileSync(n,`${JSON.stringify(t,null,2)}\n`,`utf8`),n}function On(e,t){return t.split(`.`).reduce((e,t)=>e?.[t],e)}function kn(e,t){return t?q(j(e)):K()}function An(e,t){let n=J(e);return t?On(n,t):n}function jn(e,t,n,r={}){let i=kn(e,r.workspace);Mn(i,e=>{let i=t.split(`.`),a=i.at(-1),o=e;for(let e of i.slice(0,-1))(typeof o[e]!=`object`||o[e]===null)&&(o[e]={}),o=o[e];r.unset?delete o[a]:o[a]=n});let a=On(J(e),t)??null;return{file:i,key:t,...r.unset?{unset:!0}:{value:n},effective:a}}function Mn(t,n){let r=i.existsSync(t)?JSON.parse(i.readFileSync(t,`utf8`)):{};n(r),r.models&&Object.keys(r.models).length===0&&delete r.models;let a=G(r);if(a.length)throw Error(`Refusing to write invalid config:\n ${a.join(`
7
+ `)}`);i.mkdirSync(e.dirname(t),{recursive:!0}),i.writeFileSync(t,`${JSON.stringify(r,null,2)}\n`,`utf8`)}function Nn(e,t){return t?K():q(j(e))}function Pn(e,t){let n={};for(let r of(e??``).split(`,`).map(e=>e.trim()).filter(Boolean)){let e=r.indexOf(`=`);if(e<1)throw Error(`Invalid ${t} "${r}": use KEY=VALUE (values may hold \${VAR}).`);n[r.slice(0,e)]=r.slice(e+1)}return n}function Fn(e,t,n,r){let i=Nn(e,r);return Mn(i,e=>{e.mcp={...e.mcp,[t]:n}}),{name:t,file:i}}function In(e,t,n={}){let[r,...i]=n.command??[];if(!t)throw Error(`Usage: coder mcp add <name> [--tools a,b] [--user] (--url <url> [--header K=V] | -- <command> [args...])`);if(!r&&!n.url)throw Error("Give a remote --url, or a command after `--`.");if(r&&n.url)throw Error(`Use either --url or a command, not both.`);let a=n.tools?{tools:n.tools.split(`,`).map(e=>e.trim()).filter(Boolean)}:{},o=Pn(n.env,`--env`),s=Pn(n.header,`--header`);return Fn(e,t,n.url?{url:n.url,...n.transport?{type:n.transport}:{},...Object.keys(s).length?{headers:s}:{},...a}:{command:r,...i.length?{args:i}:{},...Object.keys(o).length?{env:o}:{},...a},n.user)}function Ln(e,t,n,r={}){if(!t||!n)throw Error(`Usage: coder mcp add-json <name> '<json entry>' [--user]`);let i=n;if(typeof n==`string`)try{i=JSON.parse(n)}catch(e){throw Error(`Invalid JSON: ${e instanceof Error?e.message:String(e)}`)}if(!i||typeof i!=`object`||Array.isArray(i))throw Error(`The entry must be a JSON object.`);return Fn(e,t,i,r.user)}function Rn(e){return J(e).mcp??{}}function zn(e,t,n={}){if(!t)throw Error(`Usage: coder mcp rm <name> [--user]`);let r=Nn(e,n.user);return Mn(r,e=>{if(!e.mcp?.[t])throw Error(`No MCP server "${t}" in ${r}.`);delete e.mcp[t],Object.keys(e.mcp).length||delete e.mcp}),{name:t,file:r}}const Bn=/access token could not be refreshed/i,Vn=/model is not supported|Codex cannot run model/i;function Hn(e){return e instanceof Error?e.message:String(e??``)}function Un(e){return Bn.test(e??``)}function Wn(e){return Vn.test(e??``)}function Gn(e,t){return!Wn(e)||/Codex cannot run model/.test(e??``)?null:`Codex cannot run model ${/'([^']+)' model/.exec(e??``)?.[1]??t??`this model`} on the signed-in account. Run \`codex login\` with an account that has it, or pick another alias (coder model list).`}function Kn(t=process.env){return e.join(t.CODEX_HOME||e.join(u.homedir(),`.codex`),`auth.json`)}function qn(e){try{let t=JSON.parse(Buffer.from(String(e).split(`.`)[1]??``,`base64url`).toString(`utf8`));return String(t.sub??t.email??``)}catch{return``}}function Jn(e=process.env,t){let n=Kn(e),r;try{r=i.statSync(n).mtimeMs}catch{return``}if(t?.file===n&&t.mtimeMs===r)return t.fingerprint??``;try{let e=JSON.parse(i.readFileSync(n,`utf8`)),a=e.OPENAI_API_KEY?c(`sha256`).update(String(e.OPENAI_API_KEY)).digest(`hex`):``,o=[e.auth_mode??``,e.tokens?.account_id??``,qn(e.tokens?.id_token),a].join(`|`);return t&&Object.assign(t,{file:n,mtimeMs:r,fingerprint:o}),o}catch{return t?.file===n?t.fingerprint??``:``}}const Yn=`CODER_MAILBOX`,Xn=/^([a-f0-9-]{36})\.(?:req|applying)\.json$/;function Zn(e){if(!e)return l();if(!e.task||!Number.isInteger(e.generation)||e.generation<0||!Number.isInteger(e.seq)||e.seq<0)throw Error(`Invalid command key`);let t=c(`sha256`).update(JSON.stringify([e.task,e.generation,e.seq])).digest(`hex`).slice(0,32);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}const Qn=[`hint`,`taskId`,`payload`,`approval`,`result`,`runId`,`status`];function $n(e=t.env){return e.CODER_MAILBOX||void 0}function er(e,t){let n=`${e}.${l()}.tmp`;i.writeFileSync(n,JSON.stringify(t),{encoding:`utf8`,flag:`wx`}),i.renameSync(n,e)}async function tr(t,n,r={}){let a=r.dir??$n();if(!a)throw Error(`No mailbox: not inside an agent task.`);let o=r.id??l(),s=e.join(a,`${o}.res.json`);i.existsSync(s)||er(e.join(a,`${o}.req.json`),{kind:t,payload:n});let c=Date.now();for(;!i.existsSync(s);){if(r.timeoutMs&&Date.now()-c>=r.timeoutMs)throw Error(`Worker control timed out`);await new Promise(e=>setTimeout(e,100))}let{result:u,error:d}=JSON.parse(i.readFileSync(s,`utf8`));if(r.keepReply||i.rmSync(s,{force:!0}),d){let{code:e,message:t,...n}=d;throw new B(e,t,n)}return u}function nr(t,n){i.mkdirSync(t,{recursive:!0});let r=new Set,a=async(a,o)=>{let s;try{let r=e.join(t,a);if(!i.lstatSync(r).isFile())throw Error(`mailbox request is not a regular file`);let{kind:c,payload:l}=JSON.parse(i.readFileSync(r,`utf8`)),u=e.join(t,`${o}.applying.json`);i.existsSync(u)||er(u,{kind:c,payload:l});let d=Object.hasOwn(n,c)?n[c]:void 0;if(!d)throw Error(`unknown mailbox request "${c}"`);s={result:await d(l??{})??null}}catch(e){let t=e instanceof B?e:void 0;s={error:{code:t?.code??`invalid-option`,message:e instanceof Error?e.message:String(e),...Object.fromEntries(Qn.flatMap(e=>t?.[e]===void 0?[]:[[e,t[e]]]))}}}try{er(e.join(t,`${o}.res.json`),s),i.rmSync(e.join(t,`${o}.req.json`),{force:!0}),i.rmSync(e.join(t,`${o}.applying.json`),{force:!0}),r.delete(o)}catch{}},o=setInterval(()=>{let n=[];try{n=i.readdirSync(t)}catch{return}for(let o of n){let n=Xn.exec(o)?.[1];if(n){if(i.existsSync(e.join(t,`${n}.res.json`))){i.rmSync(e.join(t,o),{force:!0});continue}r.has(n)||(r.add(n),a(o,n))}}},100);return()=>clearInterval(o)}function rr(t,n){return n.agentId?e.join(F(t,n.id),`mailbox`):null}function ir(e,t){let n=`${e}.${process.pid}.${l()}.tmp`;i.writeFileSync(n,`${JSON.stringify(t)}\n`,`utf8`),i.renameSync(n,e)}function ar(e){let t=e instanceof Error?e.message:String(e);return/no active turn|active turn.*(?:ended|completed)|turn.*(?:already )?(?:ended|completed)|turn.*not active/i.test(t)}function Y(e,t,n){return Object.assign(Error(e),{retryable:t,...n===void 0?{}:{rpcCode:n}})}function or(e,t,n,r){if(!e||e.id!==t||e.method!==`turn/steer`&&e.method!==`turn/interrupt`)throw Y(`Invalid Codex control request.`,!1);let i=e.params;if(!i||typeof i!=`object`||i.threadId!==n)throw Y(`Codex control request does not match its owning thread.`,!1);if(e.method===`turn/interrupt`){if(i.turnId!==r)throw Y(`Codex turn/interrupt request does not match its owning active turn.`,!1);return{method:e.method,params:i}}if(i.expectedTurnId!==r)throw Y(`Codex turn/steer request does not match its owning active turn.`,!1);let a=i.input;if(!Array.isArray(a)||a.length!==1||a[0]?.type!==`text`||typeof a[0]?.text!=`string`||!a[0].text.trim())throw Y(`Invalid Codex turn/steer input schema.`,!1);return{method:e.method,params:i}}async function sr(t,{threadId:n,turnId:r}){let a=i.mkdtempSync(e.join(u.tmpdir(),`coder-codex-control-`)),o=`file:${a}`,s=new Set,c=new Set,l=!1,d=!1,f=(o=!1)=>{if(!(l&&!o||d)){d=!0;try{for(let o of i.readdirSync(a).filter(e=>e.endsWith(`.request.json`))){let u=o.slice(0,-13),d=e.join(a,o),f=e.join(a,`${u}.response.json`);if(i.existsSync(f)){i.unlinkSync(d);continue}if(c.has(u))continue;let p=`${d}.${process.pid}.processing`;try{i.renameSync(d,p)}catch{continue}c.add(u);let m=(async()=>{let e;try{if(l)throw Y(`Codex owner endpoint is shutting down.`,!0);let a=or(JSON.parse(i.readFileSync(p,`utf8`)),u,n,r);try{let n=await t.request(a.method,a.params);e={id:u,result:n}}catch(t){let n=t;e={id:u,error:{message:t instanceof Error?t.message:String(t),retryable:ar(t),...n.rpcCode===void 0?{}:{rpcCode:n.rpcCode}}}}}catch(t){let n=t;e={id:u,error:{message:n.message,retryable:n.retryable===!0,...n.rpcCode===void 0?{}:{rpcCode:n.rpcCode}}}}try{ir(f,e)}finally{c.delete(u);try{i.unlinkSync(p)}catch{}}})();s.add(m),m.then(()=>s.delete(m),()=>s.delete(m))}}catch{}finally{d=!1}}},p=setInterval(f,10);return p.unref?.(),{endpoint:o,async close(){l||(l=!0,clearInterval(p),f(!0),await Promise.allSettled([...s]),await new Promise(e=>setTimeout(e,50)),i.rmSync(a,{recursive:!0,force:!0}))}}}function cr(t){if(t?.startsWith(`file:`)&&t.length>5){let n=e.resolve(t.slice(5)),r=e.resolve(u.tmpdir());e.dirname(n)===r&&e.basename(n).startsWith(`coder-codex-control-`)&&i.rmSync(n,{recursive:!0,force:!0})}}async function lr(t,n,r,a=3e3,o){if(!t)return{ok:!1,retryable:!0,detail:`Codex owner endpoint is not ready.`};if(!t.startsWith(`file:`)||t.length===5)return{ok:!1,retryable:!1,detail:`Unsupported Codex control endpoint: ${t}`};let s=t.slice(5);if(!i.existsSync(s))return{ok:!1,retryable:!0,detail:`Codex owner endpoint is no longer available.`};let c=Zn(o),l=e.join(s,`${c}.request.json`),u=e.join(s,`${c}.response.json`);try{i.existsSync(u)||ir(l,{id:c,method:n,params:r,command:o})}catch(e){return{ok:!1,retryable:e.code===`ENOENT`,detail:e instanceof Error?e.message:String(e)}}let d=Date.now();for(;Date.now()-d<a;){try{let e=JSON.parse(i.readFileSync(u,`utf8`));try{(!o||e?.error?.retryable)&&i.unlinkSync(u)}catch{}return e?.id===c?e?.error?{ok:!1,retryable:e.error.retryable===!0,detail:String(e.error.message??`Malformed Codex owner error response.`)}:`result`in e?{ok:!0,retryable:!1,result:e.result,detail:`Codex owner accepted control.`}:{ok:!1,retryable:!1,detail:`Malformed Codex owner response.`}:{ok:!1,retryable:!1,detail:`Malformed Codex owner response id.`}}catch(e){if(e.code!==`ENOENT`)return{ok:!1,retryable:!1,detail:`Invalid Codex owner response: ${e instanceof Error?e.message:String(e)}`};if(!i.existsSync(s))return{ok:!1,retryable:!1,detail:`Codex owner endpoint closed after control publication; acceptance is unknown.`}}await new Promise(e=>setTimeout(e,10))}return{ok:!1,retryable:!1,detail:`Timed out waiting for Codex owner acknowledgement.`}}const ur=`Coder Task`;function dr(e,t=72){let n=String(e??``).trim().replace(/\s+/g,` `);return n?n.length<=t?n:`${n.slice(0,t-3)}...`:``}function fr(e){let t=dr(e,56);return t?`${ur}: ${t}`:ur}function pr(e){return e?.params?.threadId??null}function mr(e){return e?.params?.turnId?e.params.turnId:e?.params?.turn?.id?e.params.turn.id:null}function hr(e){let t=new Set;for(let n of e)for(let e of n.changes??[])e.path&&t.add(e.path);return[...t]}function gr(e,t){let n=[];for(let r of e.matchAll(/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/gm)){let e=t===`delete`,i=Number(e?r[1]:r[3]),a=Number((e?r[2]:r[4])??1);!Number.isFinite(i)||!Number.isFinite(a)||n.push(a<=1?`L${i}`:`L${i}-L${i+a-1}`)}return n}function _r(e){try{let t=i.readFileSync(e,`utf8`),n=t?t.split(/\r\n|\r|\n/).length-+!!t.endsWith(`
8
+ `):0;return n>0?[n===1?`L1`:`L1-L${n}`]:[]}catch{return[]}}function vr(e,t,n){let r=typeof e.kind==`string`?e.kind:e.kind?.type??`change`,i=e.path||`(unknown path)`,a=gr(e.diff??``,r),o=a.length||r!==`add`||!t?a:_r(i),s=typeof e.kind==`object`&&e.kind?.move_path?` -> ${n?p(n,e.kind.move_path):e.kind.move_path}`:``;return`${r} ${n?p(n,i):i}${s}${o.length?` ${o.join(`, `)}`:``}`}function yr(e,t=!1,n){return(e.changes??[]).map(e=>vr(e,t,n)).join(`; `)}function br(e){let t=e.trim().split(` `)[0]??``;return t===`/dev/null`?``:t.replace(/^[ab]\//,``)}function xr(e,t){let n=new Map,r=``,i=``;for(let t of e.split(/\r?\n/)){if(t.startsWith(`--- `)){r=br(t.slice(4));continue}if(t.startsWith(`+++ `)){i=br(t.slice(4));continue}let e=/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/.exec(t);if(!e)continue;let a=Number(e[1]),o=Number(e[2]??1),s=Number(e[3]),c=Number(e[4]??1),l=c===0,u=(l?r:i)||i||r||`(unknown path)`,d=l?a:s,f=l?o:c,p=f<=1?`L${d}`:`L${d}-L${d+f-1}`,m=n.get(u)??[];m.push(p),n.set(u,m)}return[...n].map(([e,n])=>`${t?p(t,e):e} ${n.join(`, `)}`).join(`; `)}function Sr(e){if(!e||typeof e!=`object`)return null;let t=e=>typeof e==`number`&&Number.isFinite(e)?e:0,n=t(e.inputTokens),r=t(e.cachedInputTokens),i=t(e.outputTokens);return{input:n,cachedInput:r,output:i,total:t(e.totalTokens)||n+r+i}}function Cr(e){if(e.tokenUsageByThread.size===0)return null;let t={input:0,cachedInput:0,output:0,total:0};for(let n of e.tokenUsageByThread.values())t.input+=n.input,t.cachedInput+=n.cachedInput,t.output+=n.output,t.total+=n.total;return t}function wr(e){return String(e??``).replace(/\s+/g,` `).trim()}function X(e){if(!e)return[];if(typeof e==`string`){let t=wr(e);return t?[t]:[]}if(Array.isArray(e))return e.flatMap(e=>X(e));if(typeof e==`object`){let t=e;if(typeof t.text==`string`)return X(t.text);if(`summary`in t)return X(t.summary);if(`content`in t)return X(t.content);if(`parts`in t)return X(t.parts)}return[]}function Tr(e,t){let n=[];for(let r of[...e,...t]){let e=wr(r);!e||n.includes(e)||n.push(e)}return n}function Z(e,t,n=null,r={}){!e||t==null||e({message:t,phase:n,...r})}function Er(e,t){t&&Z(e,t.message,t.phase??null,t.extra??{})}function Dr(e){return e.replace(/^\/(?:usr\/)?bin\/\w*sh\s+-l?c\s+/,``)}function Or(e,t){let n=e?.extra?.kind;return!e||n!==`tool`&&n!==`tool-result`||typeof t.id!=`string`?e:{...e,extra:{...e.extra,callId:t.id}}}function kr(e,t){switch(e.type){case`commandExecution`:return{message:Dr(String(e.command??``).trim()),phase:`running`,extra:{kind:`tool`,tool:`command`}};case`fileChange`:return null;case`mcpToolCall`:return{message:`${e.server}/${e.tool}`,phase:`investigating`,extra:{kind:`tool`,tool:String(e.tool??``)}};case`dynamicToolCall`:return{message:String(e.tool??``),phase:`investigating`,extra:{kind:`tool`,tool:String(e.tool??``)}};case`webSearch`:return{message:`search: ${String(e.query??``).trim()}`,phase:`investigating`,extra:{kind:`tool`,tool:`search`}};default:return null}}function Ar(e,t){switch(e.type){case`agentMessage`:{let t=String(e.text??``).trim();return t?{message:t,phase:null,extra:{kind:`assistant`}}:null}case`reasoning`:{let t=X(e.summary).join(`
9
+ `);return t?{message:t,phase:null,extra:{kind:`reasoning`}}:null}case`commandExecution`:{let t=typeof e.exitCode==`number`?e.exitCode:null;return{message:String(e.aggregatedOutput??``).trim(),phase:`running`,extra:{kind:`tool-result`,tool:`command`,command:String(e.command??``).trim(),...t===null?{isError:e.status!==`completed`}:{exitCode:t}}}}case`fileChange`:return{message:yr(e,!0,t)||`(details unavailable)`,phase:`editing`,extra:{kind:`tool`,tool:`edit`}};case`mcpToolCall`:return{message:`${e.server}/${e.tool} ${e.status}`,phase:`investigating`,extra:{kind:`tool-result`,isError:e.status!==`completed`}};case`dynamicToolCall`:return{message:`${e.tool} ${e.status}`,phase:`investigating`,extra:{kind:`tool-result`,isError:e.status!==`completed`}};default:return null}}function jr(e,t={}){let n,r,i=new Promise((e,t)=>{n=e,r=t});return{threadId:e,rootThreadId:e,threadIds:new Set([e]),threadTurnIds:new Map,turnId:null,bufferedNotifications:[],completion:i,resolveCompletion:n,rejectCompletion:r,finalTurn:null,completed:!1,finalAnswerSeen:!1,pendingCollaborations:new Set,activeSubagentTurns:new Set,completionTimer:null,lastAgentMessage:``,reasoningSummary:[],error:null,fileChanges:[],commandExecutions:[],tokenUsageByThread:new Map,lastDiffSummary:``,loggedTokens:0,reportedChanges:new Set,cwd:t.cwd??``,itemIndex:new Map,onProgress:t.onProgress??null,onHeartbeat:t.onHeartbeat??null}}function Mr(e){e.completionTimer&&=(clearTimeout(e.completionTimer),null)}function Nr(e,t=null){e.completed||(Mr(e),e.completed=!0,t?(e.finalTurn=t,e.turnId||=t.id??null):e.finalTurn||={id:e.turnId??`inferred-turn`,status:`completed`},e.resolveCompletion(e))}function Pr(e){e.completed||e.finalTurn||!e.finalAnswerSeen||e.pendingCollaborations.size>0||e.activeSubagentTurns.size>0||(Mr(e),e.completionTimer=setTimeout(()=>{e.completionTimer=null,!(e.completed||e.finalTurn||!e.finalAnswerSeen)&&(e.pendingCollaborations.size>0||e.activeSubagentTurns.size>0||Nr(e,null))},250),e.completionTimer.unref?.())}function Fr(e,t){let n=pr(t);if(!n||!e.threadIds.has(n))return!1;let r=e.threadTurnIds.get(n)??null,i=mr(t);return r===null||i===null||i===r}function Ir(e,t,n,r=null){if(t.id&&e.itemIndex.set(t.id,t),t.type===`collabAgentToolCall`){(!r||r===e.threadId)&&(n===`started`||t.status===`inProgress`?e.pendingCollaborations.add(t.id):n===`completed`&&(e.pendingCollaborations.delete(t.id),Pr(e)));for(let n of t.receiverThreadIds??[])e.threadIds.add(n)}if(t.type===`agentMessage`){t.text&&(!r||r===e.threadId)&&(e.lastAgentMessage=t.text.trim(),n===`completed`&&t.phase===`final_answer`&&(e.finalAnswerSeen=!0,Pr(e)));return}if(t.type===`reasoning`&&n===`completed`){e.reasoningSummary=Tr(e.reasoningSummary,X(t.summary));return}if(t.type===`fileChange`&&n===`completed`){e.fileChanges.push(t);return}t.type===`commandExecution`&&n===`completed`&&e.commandExecutions.push(t)}function Lr(e,t){switch(e.onHeartbeat?.(),t.method){case`thread/started`:e.threadIds.add(t.params.thread.id);break;case`turn/started`:e.threadIds.add(t.params.threadId),e.threadTurnIds.set(t.params.threadId,t.params.turn.id),(t.params.threadId??null)!==e.threadId&&e.activeSubagentTurns.add(t.params.threadId),Z(e.onProgress,`Turn started (${t.params.turn.id}).`,`starting`,{kind:`status`,threadId:t.params.threadId??null,turnId:t.params.turn.id??null});break;case`item/started`:Ir(e,t.params.item,`started`,t.params.threadId??null),Er(e.onProgress,Or(kr(t.params.item,e.cwd),t.params.item));break;case`item/completed`:{Ir(e,t.params.item,`completed`,t.params.threadId??null);let n=t.params.item;if(n?.type===`fileChange`)for(let t of n.changes??[])t.path&&e.reportedChanges.add(p(e.cwd,t.path));Er(e.onProgress,Or(Ar(n,e.cwd),n));break}case`thread/tokenUsage/updated`:{let n=Sr(t.params?.tokenUsage?.total??t.params?.tokenUsage),r=pr(t);if(n&&r){e.tokenUsageByThread.set(r,n);let t=Cr(e);t&&(!e.loggedTokens||t.total-e.loggedTokens>=1e3)&&(e.loggedTokens=t.total,e.onProgress?.({kind:`usage`,tokens:t}))}break}case`turn/diff/updated`:{let n=xr(String(t.params?.diff??``),e.cwd).split(`; `).filter(t=>!e.reportedChanges.has(t.split(` `)[0]??``)).join(`; `);n&&n!==e.lastDiffSummary&&(e.lastDiffSummary=n,Z(e.onProgress,`changed: ${n}`,`editing`,{kind:`status`}));break}case`item/autoApprovalReview/completed`:{let n=t.params?.review??{},r=t.params?.action??{},i=Dr(String(r.command??r.type??``).trim());Z(e.onProgress,`Auto-review ${n.status}. ${dr(i,48)}${n.rationale?`. ${dr(n.rationale,320)}`:``}`,null,{kind:`auto-review`,decision:String(n.status??``),...n.riskLevel?{riskLevel:String(n.riskLevel)}:{},...i?{summary:`run command: ${i}`}:{},...n.rationale?{reason:String(n.rationale)}:{}});break}case`error`:e.error=t.params.error,Z(e.onProgress,`Codex error: ${t.params.error.message}`,`failed`,{kind:`error`});break;case`turn/completed`:if((t.params.threadId??null)!==e.threadId){e.activeSubagentTurns.delete(t.params.threadId),Pr(e);break}Z(e.onProgress,`Turn ${t.params.turn.status}.`,`finalizing`,{kind:`status`}),Nr(e,t.params.turn)}}async function Rr(e,t,n,r={}){let i=jr(t,r),a=e.notificationHandler;e.setNotificationHandler(e=>{if(!i.turnId){i.bufferedNotifications.push(e);return}if(e.method===`thread/started`){Lr(i,e);return}if(!Fr(i,e)){a?.(e);return}Lr(i,e)});let o=r.onApprovalRequest;o&&e.setServerRequestHandler((e,t)=>o(e,t,i));try{let t=await n();i.turnId=t.turn?.id??null,i.turnId&&(i.threadTurnIds.set(i.threadId,i.turnId),await r.onTurnStarted?.(i.turnId));for(let e of i.bufferedNotifications)Fr(i,e)?Lr(i,e):a?.(e);i.bufferedNotifications.length=0,t.turn?.status&&t.turn.status!==`inProgress`&&Nr(i,t.turn);let o=e.exitPromise?.then(()=>{throw e.exitError??Error(`codex app-server connection closed before the turn completed.`)});return await(o?Promise.race([i.completion,o]):i.completion)}finally{Mr(i),e.setNotificationHandler(a??null),e.setServerRequestHandler(null)}}function zr(e,t,n=[]){return e!==`workspace-write`||!n.length?null:{type:`workspaceWrite`,writableRoots:n,networkAccess:t??!1}}const Br=`coder_read_only`;function Vr(e,t=[]){return(e??`read-only`)!==`read-only`||!t.length?null:{default_permissions:Br,[`permissions.${Br}`]:{extends:`:read-only`,filesystem:Object.fromEntries(t.map(e=>[e,`write`]))}}}function Hr(e=[],t=[],n=!1){let r={};!n&&t.length&&(r.mcp_servers=Object.fromEntries(t.map(e=>[e,{enabled:!1}])));let i=new Set([...t,...e.map(e=>e.name)]);for(let n of e){let e=n.name;if(t.includes(e)){for(let t=1;i.has(e);t++)e=`${n.name}_coder_${t}`;i.add(e)}r[`mcp_servers.${e}`]={...n.url?{url:n.url,...n.headers?{http_headers:n.headers}:{}}:{command:n.command,args:n.args??[],...n.env?{env:n.env}:{}},...n.tools?.length?{enabled_tools:n.tools}:{}}}return r}function Ur(e){return e.split(/\r?\n/).map(e=>e.trimEnd()).filter(e=>e&&!e.startsWith(`WARNING: proceeding, even though we could not update PATH:`)).join(`
10
+ `)}async function Wr(e,t,n={}){let r=n.connect??E.connect,i={...n.networkAccess===void 0?{}:{networkAccess:n.networkAccess},nativeMcp:n.nativeMcp??!1},a=null;try{a=await r(e,i);let n=await t(a);return await a.close(),n}catch(n){let o=n,s=a?.transport===`broker`||!!process.env.CODER_APP_SERVER_ENDPOINT,c=a?.transport===`broker`&&o?.rpcCode===-32001||s&&(o?.code===`ENOENT`||o?.code===`ECONNREFUSED`);if(a&&=(await a.close().catch(()=>{}),null),!c)throw n;let l=await r(e,{...i,disableBroker:!0});try{return await t(l)}finally{await l.close()}}}function Q(t){let n=process.env.CODEX_AUTH_JSON;if(n){let t=e.join(u.homedir(),`.codex`),r=e.join(t,`auth.json`);if(!i.existsSync(r)){i.mkdirSync(t,{recursive:!0,mode:448});try{i.writeFileSync(r,n,{encoding:`utf8`,flag:`wx`,mode:384})}catch(e){if(e.code!==`EEXIST`)throw e}}}let r=ge(`codex`,[`--version`],{cwd:t});if(!r.available)return r;let a=ge(`codex`,[`app-server`,`--help`],{cwd:t});return a.available?{available:!0,detail:`${r.detail}; app-server runtime available`}:{available:!1,detail:`${r.detail}; app-server runtime unavailable: ${a.detail}`}}async function Gr(e){let t=Q(e);if(!t.available)return{available:!1,loggedIn:!1,detail:t.detail};let n=null;try{n=await E.connect(e,{reuseExistingBroker:!0});let t=await n.request(`account/read`,{refreshToken:!1}),r=t?.account??null;return r?.type===`chatgpt`?{available:!0,loggedIn:!0,detail:r.email?`ChatGPT login active for ${r.email}`:`ChatGPT login active`}:r?.type===`apiKey`?{available:!0,loggedIn:!0,detail:`API key configured`}:t?.requiresOpenaiAuth===!1?{available:!0,loggedIn:!0,detail:`Active provider does not require OpenAI authentication`}:{available:!0,loggedIn:!1,detail:"Not authenticated. Run `codex login`."}}catch(e){let t=s(`codex`,[`login`,`status`],{encoding:`utf8`}),n=`${t.stdout??``}${t.stderr??``}`.trim();return t.status===0?{available:!0,loggedIn:!0,detail:n||`Logged in`}:{available:!0,loggedIn:!1,detail:n||(e instanceof Error?e.message:String(e))}}finally{await n?.close().catch(()=>{})}}async function Kr(e,{endpoint:t,threadId:n,turnId:r}){if(!n||!r)return{interrupted:!1,detail:`missing threadId or turnId`};let i=await lr(t,`turn/interrupt`,{threadId:n,turnId:r});return i.ok?{interrupted:!0,detail:`Interrupted ${r} on ${n}.`}:{interrupted:!1,detail:i.detail}}async function qr(e,{endpoint:t,threadId:n,turnId:r,text:i,command:a}){if(!n)return{steered:!1,retryable:!0,detail:`missing active threadId`};if(!r)return{steered:!1,retryable:!0,detail:`missing active turnId`};let o=i.trim();if(!o)return{steered:!1,retryable:!1,detail:`empty follow-up`};let s=await lr(t,`turn/steer`,{threadId:n,input:[{type:`text`,text:o,text_elements:[]}],expectedTurnId:r},3e3,a);return s.ok?s.result?.turnId===r?{steered:!0,retryable:!1,detail:`Steered follow-up into ${r} on ${n}.`}:{steered:!1,retryable:!1,detail:`turn/steer returned unexpected turnId ${String(s.result?.turnId??`(missing)`)}; expected ${r}`}:{steered:!1,retryable:s.retryable,detail:s.detail}}async function Jr(e,t={},n={}){let r=Q(e);if(!r.available)throw Error(`Codex CLI is not available: ${r.detail}`);let i=t.prompt?.trim();if(!i)throw Error(`A prompt is required.`);let a=Vr(t.sandbox,t.writableRoots),o=a?{}:{sandbox:t.sandbox??`read-only`},s={...t.configOverrides??{},...a},c=Object.keys(s).length?s:null,l=zr(t.sandbox,t.networkAccess,t.writableRoots),u=async n=>{let r=null,a,s=await n.request(`config/read`,{cwd:e,includeLayers:!1}),u={...c,...Hr(t.mcpServers,Object.keys(s.config?.mcp_servers??{}),t.nativeMcp),...t.nativeMcp?{}:{"features.apps":!1,"features.plugins":!1}};if(t.resumeThreadId)Z(t.onProgress,`Resuming thread ${t.resumeThreadId}.`,`starting`,{kind:`status`}),Le(t.resumeThreadId)&&await Re(t.resumeThreadId),a=(await n.request(`thread/resume`,{threadId:t.resumeThreadId,cwd:e,model:t.model??null,modelProvider:t.modelProvider??null,config:u,approvalPolicy:t.approvalPolicy??`never`,...o,...t.approvalsReviewer?{approvalsReviewer:t.approvalsReviewer}:{}})).thread.id;else if(Z(t.onProgress,`Starting Codex task thread.`,`starting`,{kind:`status`}),a=(await n.request(`thread/start`,{cwd:e,model:t.model??null,modelProvider:t.modelProvider??null,config:u,approvalPolicy:t.approvalPolicy??`never`,...o,...t.approvalsReviewer?{approvalsReviewer:t.approvalsReviewer}:{},serviceName:`coder_runtime`,ephemeral:t.ephemeral??!1})).thread.id,!(t.ephemeral??!1))try{await n.request(`thread/name/set`,{threadId:a,name:fr(i)})}catch(e){let t=String(e?.message??e??``);if(!t.includes(`unknown variant`)&&!t.includes(`unknown method`))throw e}Z(t.onProgress,`Thread ready (${a}).`,`starting`,{kind:`status`,threadId:a});let d;try{d=await Rr(n,a,()=>n.request(`turn/start`,{threadId:a,input:[{type:`text`,text:i,text_elements:[]}],model:t.model??null,effort:t.effort??null,outputSchema:t.outputSchema??null,...l?{sandboxPolicy:l}:{}}),{cwd:e,onProgress:t.onProgress,onHeartbeat:t.onHeartbeat,onApprovalRequest:t.onApprovalRequest,onTurnStarted:t.onControlReady?async e=>{r=await sr(n,{threadId:a,turnId:e}),t.onControlReady?.(r.endpoint,a,e)}:void 0}),t.onResult?.({status:d.finalTurn?.status===`completed`?0:1,threadId:a,turnId:d.turnId,finalMessage:d.lastAgentMessage,error:d.error??null})}finally{await r?.close()}return{status:d.finalTurn?.status===`completed`?0:1,threadId:a,turnId:d.turnId,finalMessage:d.lastAgentMessage,reasoningSummary:d.reasoningSummary,turn:d.finalTurn,error:d.error??d.finalTurn?.error??null,stderr:Ur(n.stderr),fileChanges:d.fileChanges,touchedFiles:hr(d.fileChanges),tokens:Cr(d),model:t.model??null,commandExecutions:d.commandExecutions}},d=async e=>{e.setNoticeHandler?.(e=>Z(t.onProgress,e,`starting`,{kind:`status`}));try{let t=await u(e);return Un(t.error?.message)&&await Yr(e),t}catch(t){throw Un(Hn(t))&&await Yr(e),t}},f=()=>Wr(e,d,{...n,networkAccess:t.networkAccess,nativeMcp:t.nativeMcp}),p=!1,m=()=>(p=!0,Z(t.onProgress,`Codex login changed; restarted the Codex app-server and retrying the turn once.`,`starting`,{kind:`status`}),f());try{let e=await f().catch(e=>{if(!Un(Hn(e)))throw e;return m()}),n=!e.touchedFiles?.length&&!e.commandExecutions.length;!p&&n&&Un(e.error?.message)&&(e=await m());let r=Gn(e.error?.message,t.model);return r?{...e,error:{...e.error,message:r}}:e}catch(e){let n=Gn(Hn(e),t.model);throw n?Error(n):e}}async function Yr(e){e.transport===`broker`&&await e.request(we,{}).catch(()=>{})}const Xr=new Set([`Write`,`Edit`,`MultiEdit`,`NotebookEdit`]);function Zr(e){return typeof e==`string`?e:Array.isArray(e)?e.map(e=>typeof e?.text==`string`?e.text:``).join(``):e==null?``:JSON.stringify(e)}function Qr(e){if(!e)return 0;let t=e.split(/\r\n|\r|\n/);return t.at(-1)===``&&t.pop(),Math.max(1,t.length)}function $r(e,t,n=!1){if(!t)return[];let r;try{r=i.readFileSync(e,`utf8`)}catch{return[]}let a=[],o=0;for(;o<=r.length;){let e=r.indexOf(t,o);if(e<0)break;let i=Qr(r.slice(0,e))+1,s=Math.max(1,Qr(t));if(a.push(s===1?`L${i}`:`L${i}-L${i+s-1}`),!n)break;o=e+Math.max(t.length,1)}return a.length>4?[...a.slice(0,4),`+${a.length-4} matches`]:a}function ei(e){let t=(typeof e==`string`?e:JSON.stringify(e)??String(e)).replace(/\s+/g,` `).trim();return t.length>80?`${t.slice(0,80)}…`:t}function ti(t,n,r){let i=String(n.file_path??n.notebook_path??n.path??``),a=i?e.isAbsolute(i)?i:e.resolve(r,i):``,o=i?p(r,a)||i:`(unknown path)`,s=n.path?` in ${p(r,String(n.path))}`:``;if(t===`Write`){let e=Qr(String(n.content??``));return`Write ${o} ${e?`L1-L${e}`:`(empty file)`}`}if(t===`Edit`){let e=$r(a,String(n.old_string??``),n.replace_all===!0);return`Edit ${o}${e.length?` ${e.join(`, `)}`:``}`}if(t===`MultiEdit`){let e=Array.isArray(n.edits)?n.edits:[],t=e.flatMap(e=>$r(a,String(e?.old_string??``),e?.replace_all===!0));return`MultiEdit ${o}${t.length?` ${t.join(`, `)}`:``} (${e.length} edits)`}if(t===`NotebookEdit`){let e=n.cell_id??n.cell_number;return`NotebookEdit ${o}${e==null?``:` cell ${e}`}`}if(t===`Read`){let e=Number(n.offset??0),t=Number(n.limit??0);return`Read ${o}${e&&t?` L${e}-L${e+t-1}`:e?` from L${e}`:``}`}if(t===`Bash`)return`Bash ${String(n.command??``).trim()||`(no command)`}`;if(t===`Glob`)return`Glob ${String(n.pattern??``)}${s}`;if(t===`Grep`){let e=n.glob?` (${String(n.glob)})`:``;return`Grep ${String(n.pattern??``)}${s}${e}`}if(t===`Task`)return`Task ${n.subagent_type?`${String(n.subagent_type)}: `:``}${ei(n.description??n.prompt??``)}`;if(t===`WebFetch`)return`WebFetch ${String(n.url??``)}`;if(t===`WebSearch`)return`WebSearch ${String(n.query??``)}`;if(t===`TodoWrite`){let e=Array.isArray(n.todos)?n.todos:[];return`TodoWrite ${e.length} item${e.length===1?``:`s`}`}let c=Object.entries(n??{}).map(([e,t])=>`${e}=${ei(t)}`).join(` `);return c?`${t} ${c}`:t}function ni(e){if(!e||typeof e!=`object`)return null;let t=e=>typeof e==`number`&&Number.isFinite(e)?e:0,n=t(e.input_tokens),r=t(e.cache_read_input_tokens)+t(e.cache_creation_input_tokens),i=t(e.output_tokens);return{input:n,cachedInput:r,output:i,total:n+r+i}}function ri(){let e=s(`claude`,[`--version`],{encoding:`utf8`});return e.error||e.status!==0?{available:!1,detail:`claude CLI not found on PATH (npm install -g @anthropic-ai/claude-code)`}:{available:!0,detail:String(e.stdout||``).trim()}}function ii(){if(t.env.CLAUDE_CODE_OAUTH_TOKEN)return{loggedIn:!0,detail:`CLAUDE_CODE_OAUTH_TOKEN configured`};if(t.env.ANTHROPIC_API_KEY)return{loggedIn:!0,detail:`ANTHROPIC_API_KEY configured`};let e=s(`claude`,[`auth`,`status`,`--json`],{encoding:`utf8`});if(e.error||e.status!==0)return{loggedIn:!1,detail:`not logged in`};try{let t=JSON.parse(String(e.stdout||``));return t.loggedIn?{loggedIn:!0,detail:[t.email,t.subscriptionType].filter(Boolean).join(`, `)||`logged in`}:{loggedIn:!1,detail:`not logged in`}}catch{return{loggedIn:!1,detail:`unknown`}}}function ai(e,n){let r=n.permissions??`auto`,i=n.mcpServers??[],a={};r===`auto`&&n.approvalTaskId&&(a.coder={type:`stdio`,command:t.execPath,args:[C,`mcp`,`serve`,n.approvalTaskId,`--cwd`,e]});for(let e of i)a[e.name]=e.url?{type:e.type??`http`,url:e.url,...e.headers?{headers:e.headers}:{}}:{type:`stdio`,command:e.command,args:e.args??[],...e.env?{env:e.env}:{}};return a}function oi(t,n,r,i){let a=[`-p`,`--input-format`,`stream-json`,`--output-format`,`stream-json`,`--verbose`,`--replay-user-messages`];a.push(n.resumeSessionId?`--resume`:`--session-id`,r),n.model&&a.push(`--model`,n.model),n.effort&&a.push(`--effort`,n.effort),n.outputSchema&&a.push(`--json-schema`,JSON.stringify(n.outputSchema));let o=n.permissions??`auto`,s=n.additionalDirectories??[],c=o===`read-only`?n.readOnlyAllowedTools??[]:[],l=n.mcpServers??[],u=ai(t,n),d=o===`auto`&&n.approvalTaskId,f=l.flatMap(e=>e.tools?.length?e.tools.map(t=>`mcp__${e.name}__${t}`):[`mcp__${e.name}`]),p=Object.keys(u).length?[`--mcp-config`,i??e.join(n.taskRoot??t,`.claude-mcp.json`)]:n.nativeMcp?[]:[`--mcp-config`,`{"mcpServers":{}}`];n.nativeMcp||a.push(`--strict-mcp-config`,`--no-chrome`),d?(a.push(`--permission-mode`,`default`,...p,`--permission-prompt-tool`,`mcp__coder__approval_prompt`),f.length&&a.push(`--allowedTools`,...f)):c.length?a.push(...It,...p,`--allowedTools`,...c,...f):(a.push(...Ft[o]??Ft.auto,...p),f.length&&a.push(`--allowedTools`,...f));let m=n.writableDirectories??[];for(let e of[...s,...o===`read-only`?[]:m])a.push(`--add-dir`,e);let h=Bt(o,t,n.allowedNetworkHosts??[],s,m),g={...h?JSON.parse(h):{},...n.nativeMcp?{}:{disableClaudeAiConnectors:!0}};return Object.keys(g).length&&a.push(`--settings`,JSON.stringify(g)),a}function si(e,t){return Object.assign(Error(e),{retryable:t})}function ci(e,t){let n=t&&Zn(t),r=n&&`${n.slice(0,14)}5${n.slice(15,19)}${(Number.parseInt(n[19],16)&3|8).toString(16)}${n.slice(20)}`;return{type:`user`,...r?{uuid:r}:{},message:{role:`user`,content:[{type:`text`,text:e}]}}}function li(e){let t=!0;return{sendInitial(t,n){return new Promise((r,i)=>{e(`${JSON.stringify(ci(t,n))}\n`,e=>{e?i(e):r()})})},sendSteer(n,r){return t?new Promise((t,i)=>{e(`${JSON.stringify(ci(n,r))}\n`,e=>{if(!e){t();return}let n=e.code,r=n===`EPIPE`||n===`ERR_STREAM_DESTROYED`||n===`ERR_STREAM_WRITE_AFTER_END`;i(si(`Failed to write Claude live steer: ${e.message}`,r))})}):Promise.reject(si(`Claude turn is no longer accepting live input.`,!0))},stopAccepting(){t=!1}}}function ui(e,n){let r=`${e}.${t.pid}.${l()}.tmp`;i.writeFileSync(r,`${JSON.stringify(n)}\n`,`utf8`),i.renameSync(r,e)}async function di(n){let r=i.mkdtempSync(e.join(u.tmpdir(),`coder-claude-steer-`)),a=`file:${r}`,o=new Set,s=new Set,c=!1,l=!1,d=(a=!1)=>{if(!(c&&!a||l)){l=!0;try{for(let a of i.readdirSync(r).filter(e=>e.endsWith(`.request.json`))){let c=a.slice(0,-13),l=e.join(r,a),u=e.join(r,`${c}.response.json`);if(i.existsSync(u)){i.unlinkSync(l);continue}if(s.has(c))continue;let d=`${l}.${t.pid}.processing`;try{i.renameSync(l,d)}catch{continue}s.add(c);let f=(async()=>{let e;try{let t=JSON.parse(i.readFileSync(d,`utf8`)),r=typeof t?.params?.text==`string`?t.params.text.trim():``;if(t?.method!==`turn/steer`||!r||t?.id!==c)e={id:c,error:{message:`Invalid Claude steer request.`,retryable:!1}};else try{await n(r,t.command),e={id:c,result:{accepted:!0}}}catch(t){let n=t;e={id:c,error:{message:n.message,retryable:n.retryable===!0}}}}catch(t){e={id:c,error:{message:`Invalid Claude steer JSON: ${t instanceof Error?t.message:String(t)}`,retryable:!1}}}try{ui(u,e)}finally{s.delete(c);try{i.unlinkSync(d)}catch{}}})();o.add(f),f.then(()=>o.delete(f),()=>o.delete(f))}}catch{}finally{l=!1}}},f=setInterval(d,10);return{endpoint:a,async close(){c=!0,clearInterval(f),d(!0),await Promise.allSettled([...o]),await new Promise(e=>setTimeout(e,50)),i.rmSync(r,{recursive:!0,force:!0})}}}async function fi(t,n,r=3e3,a){if(!t)return{steered:!1,retryable:!0,detail:`Claude live steer endpoint is not ready.`};let o=n.trim();if(!o)return{steered:!1,retryable:!1,detail:`empty follow-up`};if(!t.startsWith(`file:`)||t.length===5)return{steered:!1,retryable:!1,detail:`Unsupported Claude steer endpoint: ${t}`};let s=t.slice(5);if(!i.existsSync(s))return{steered:!1,retryable:!0,detail:`Claude live steer endpoint is no longer available.`};let c=Zn(a),l=e.join(s,`${c}.request.json`),u=e.join(s,`${c}.response.json`);try{i.existsSync(u)||ui(l,{id:c,method:`turn/steer`,params:{text:o},command:a})}catch(e){return{steered:!1,retryable:e.code===`ENOENT`,detail:e instanceof Error?e.message:String(e)}}let d=Date.now();for(;Date.now()-d<r;){try{let e=JSON.parse(i.readFileSync(u,`utf8`));try{(!a||e?.error?.retryable)&&i.unlinkSync(u)}catch{}return e?.result?.accepted===!0?{steered:!0,retryable:!1,detail:`Claude accepted the live follow-up.`}:{steered:!1,retryable:e?.error?.retryable===!0,detail:String(e?.error?.message??`Malformed Claude steer response.`)}}catch(e){if(e.code!==`ENOENT`)return{steered:!1,retryable:!1,detail:`Invalid Claude steer response: ${e instanceof Error?e.message:String(e)}`}}await new Promise(e=>setTimeout(e,10))}return{steered:!1,retryable:!1,detail:`Timed out waiting for Claude live steer acknowledgement.`}}async function pi(n,r){let a=r.resumeSessionId??l(),s=ai(n,r),c=Object.keys(s).length?e.join(r.taskRoot??n,`.claude-mcp-${l()}.json`):void 0;c&&(i.mkdirSync(e.dirname(c),{recursive:!0}),i.writeFileSync(c,`${JSON.stringify({mcpServers:s})}\n`,{encoding:`utf8`,flag:`wx`,mode:384}));let u=oi(n,r,a,c),d=()=>{if(c)try{i.unlinkSync(c)}catch{}};return r.onProgress?.({kind:`status`,message:`claude turn started (session ${a})`,threadId:a}),new Promise((s,c)=>{let l=o(r.executable??`claude`,u,{cwd:n,stdio:[`pipe`,`pipe`,`pipe`],...r.env?{env:{...t.env,...r.env}}:{}}),f=``,p=``,m=[],h=null,g=a,_=null,v=!1,y=li((e,t)=>l.stdin.write(e,t)),b=Date.now(),x=new Map,ee=0,S=0,C=new Set,w=t=>{if(!(!t||typeof t!=`object`)){if(d(),r.onHeartbeat?.(),t.type===`system`&&t.subtype===`init`&&t.session_id)g=t.session_id;else if(t.type===`assistant`){let i=ni(t.message?.usage);if(i){ee+=i.output;let e=i.input+i.cachedInput+ee;(!S||e-S>=1e3)&&(S=e,r.onProgress?.({kind:`usage`,tokens:{...i,output:ee,total:e},threadId:g}))}for(let i of t.message?.content??[])if(i?.type===`tool_use`){let t=String(i.name??`Tool`);if(i.id&&x.set(String(i.id),{name:t,at:Date.now()}),Xr.has(t)){let t=String(i.input?.file_path??i.input?.notebook_path??``);t&&C.add(e.isAbsolute(t)?t:e.resolve(n,t))}r.onProgress?.({kind:`tool`,tool:t,...i.id?{callId:String(i.id)}:{},message:ti(t,i.input??{},n),threadId:g})}else i?.type===`text`&&typeof i.text==`string`&&i.text.trim()?r.onProgress?.({kind:`assistant`,message:i.text.trim(),threadId:g}):i?.type===`thinking`&&typeof i.thinking==`string`&&i.thinking.trim()&&r.onProgress?.({kind:`reasoning`,message:i.thinking.trim(),durationMs:Math.max(1e3,Date.now()-b),threadId:g})}else if(t.type===`user`){for(let e of t.message?.content??[])if(e?.type===`tool_result`){let t=Zr(e.content).trim(),n=e.is_error===!0,i=e.tool_use_id?x.get(String(e.tool_use_id)):void 0;if(e.tool_use_id&&x.delete(String(e.tool_use_id)),!t&&!n&&!i)continue;r.onProgress?.({kind:`tool-result`,...e.tool_use_id?{callId:String(e.tool_use_id)}:{},...i?{tool:i.name,durationMs:Date.now()-i.at}:{},...n?{isError:!0}:{},message:t||(n?`(tool failed with no output)`:``),threadId:g})}}else t.type===`result`&&(h=t,r.onResult?.({status:+!!t.is_error,threadId:t.session_id??g,finalMessage:t.structured_output===void 0?String(t.result??``).trim():JSON.stringify(t.structured_output),error:t.is_error?{message:String(t.result??``)}:null}),t.session_id&&(g=t.session_id),y.stopAccepting(),l.stdin.end());b=Date.now()}};l.stdout.on(`data`,e=>{f+=e;let t;for(;(t=f.indexOf(`
11
+ `))>=0;){let e=f.slice(0,t).trim();if(f=f.slice(t+1),e)try{w(JSON.parse(e))}catch(e){m.push(`Invalid Claude stream-json output: ${e instanceof Error?e.message:String(e)}`)}}}),l.stderr.on(`data`,e=>{p+=e});let T=()=>{y.stopAccepting(),l.kill(`SIGTERM`),d();let e=_?.endpoint;e?.startsWith(`file:`)&&i.rmSync(e.slice(5),{recursive:!0,force:!0}),t.exit(143)};t.on(`SIGTERM`,T),(async()=>{r.onSteerReady&&(_=await di((e,t)=>y.sendSteer(e,t))),await y.sendInitial(r.prompt,r.command),_&&r.onSteerReady?.(_.endpoint)})().catch(e=>{v||(v=!0,y.stopAccepting(),l.kill(`SIGTERM`),d(),t.removeListener(`SIGTERM`,T),_?.close(),c(e))}),l.on(`error`,e=>{v||(v=!0,y.stopAccepting(),t.removeListener(`SIGTERM`,T),d(),_?.close(),c(Error(`claude spawn failed: ${e.message}`)))}),l.on(`close`,async e=>{if(v)return;v=!0,y.stopAccepting(),t.removeListener(`SIGTERM`,T),d(),await _?.close();let n=f.trim();if(n)try{w(JSON.parse(n))}catch(e){m.push(`Invalid trailing Claude stream-json output: ${e instanceof Error?e.message:String(e)}`)}let i=h?.structured_output===void 0?(h?.result??``).trim():JSON.stringify(h.structured_output),a=e!==0||h?.is_error===!0||h==null||m.length>0;s({status:+!!a,threadId:h?.session_id??g,turnId:null,finalMessage:i,touchedFiles:[...C],tokens:ni(h?.usage),model:h?.modelUsage&&Object.keys(h.modelUsage).join(`+`)||r.model||null,error:a?{message:m[0]||i||p.trim()||`claude exited ${e}`}:null})})})}const $=`@wular/coder`,mi=`https://registry.npmjs.org/${$}/latest`;function hi(){return A(`update-check.json`)}function gi(e,t){let n=String(e).split(`.`).map(e=>parseInt(e,10)||0),r=String(t).split(`.`).map(e=>parseInt(e,10)||0);for(let e=0;e<3;e+=1){if((n[e]??0)>(r[e]??0))return 1;if((n[e]??0)<(r[e]??0))return-1}return 0}function _i(){try{return JSON.parse(i.readFileSync(hi(),`utf8`))}catch{return null}}function vi(e){try{i.mkdirSync(A(),{recursive:!0}),i.writeFileSync(hi(),JSON.stringify(e))}catch{}}function yi(){try{i.rmSync(hi(),{force:!0})}catch{}}function bi(e,n){if(t.env.CODER_NO_UPDATE_CHECK||t.env.CI)return;let r=_i();if(!r?.checkedAt||Date.now()-r.checkedAt>864e5)try{o(t.execPath,[n,`upgrade`,`refresh`],{detached:!0,stdio:`ignore`}).unref()}catch{}return r?.latest&&gi(r.latest,e)>0?r.latest:void 0}async function xi(e){let t=_i()?.latest??null;try{let e=new AbortController,n=setTimeout(()=>e.abort(),3e3),r=await fetch(mi,{signal:e.signal,headers:{accept:`application/json`}});if(clearTimeout(n),r.ok){let e=await r.json();e?.version&&(t=e.version)}}catch{}vi({checkedAt:Date.now(),latest:t,current:e})}function Si(e){let t=e;try{t=i.realpathSync(e)}catch{}let n=t.replace(/\\/g,`/`);return/\/\.bun\//.test(n)?{pm:`bun`,command:[`bun`,`add`,`-g`,`${$}@latest`]}:/\/\.pnpm\//.test(n)||/\/pnpm(-global)?\//i.test(n)||/\/Library\/pnpm\//.test(n)?{pm:`pnpm`,command:[`pnpm`,`add`,`-g`,`${$}@latest`]}:/\/\.config\/yarn\/global\//.test(n)||/\/yarn\/global\//.test(n)||/\/Yarn\/Data\/global\//.test(n)?{pm:`yarn`,command:[`yarn`,`global`,`add`,`${$}@latest`]}:{pm:`npm`,command:[`npm`,`install`,`-g`,`${$}@latest`]}}function Ci(e){s(`claude`,[`plugin`,`marketplace`,`remove`,`coder-plugins`],{encoding:`utf8`});let t=s(`claude`,[`plugin`,`marketplace`,`add`,e],{encoding:`utf8`}),n=s(`claude`,[`plugin`,`install`,`coder@coder-plugins`],{encoding:`utf8`}),r=t.status===0&&n.status===0;return{marketplace:e,installed:r,note:r?`Plugin installed; restart any running Claude Code session to load it.`:`Automatic install failed (${(n.stderr||t.stderr||`claude not found`).trim()}); run: claude plugin marketplace add "${e}" && claude plugin install coder@coder-plugins`}}function wi(){return e.join(u.homedir(),`.agents`,`skills`,`coder`)}function Ti(){try{let t=i.readFileSync(e.join(wi(),`SKILL.md`),`utf8`);return/^\s*version:\s*(\S+)/m.exec(t)?.[1]??null}catch{return null}}function Ei(t){let n=wi();try{let r=e.join(t,`plugins`,`agents`,`skills`,`coder`);i.rmSync(n,{recursive:!0,force:!0}),i.mkdirSync(n,{recursive:!0}),i.cpSync(r,n,{recursive:!0});let a=e.join(n,`SKILL.md`),o=i.readFileSync(a,`utf8`).replace(`
12
+ ---
13
+ `,`\nmetadata:\n version: ${w()}\n---\n`);return i.writeFileSync(a,o),{marketplace:n,installed:!0,note:`Skill installed to ~/.agents/skills/coder; restart running sessions to load it.`}}catch(e){return{marketplace:n,installed:!1,note:`Skill install failed: ${e instanceof Error?e.message:String(e)}`}}}function Di(e){if(e.available)return null;let t=s(`npm`,[`install`,`-g`,`@openai/codex@latest`],{encoding:`utf8`});return t.status===0?{installed:!0,note:`codex CLI installed (runs your custom models; no login needed for them)`}:{installed:!1,note:`custom models run on the codex CLI and it is not installed; auto-install failed: ${(t.stderr||`npm not found`).trim()}. Run: npm install -g @openai/codex`}}const Oi={codex:{"gpt-6-astra":`0.154.0`,"gpt-6-sol":`0.156.1`,"gpt-6-luna":`0.156.1`,"gpt-6.1-sol":`0.159.1`},claude:{sonnet:`2.1.197`,fable:`2.1.257`,opus:`2.1.280`}};function ki(e){let t=/(\d+\.\d+\.\d+)/.exec(String(e??``));return t?t[1]:null}function Ai(e,t,n){let r=t?Oi[e][t]:void 0,i=ki(n.detail);return!r||!i||gi(i,r)>=0?null:`${e} ${i} predates ${t} (needs ${r}), so it may fail or run another model. Run: ${e} update`}function ji(e){if(!e.available)return null;let t=ki(e.detail);if(!t||gi(t,`0.159.1`)>=0)return null;let n=s(`codex`,[`update`],{encoding:`utf8`});return n.status!==0&&(n=s(`npm`,[`install`,`-g`,`@openai/codex@latest`],{encoding:`utf8`})),n.status===0?{updated:!0,from:t}:{updated:!1,from:t,note:`codex ${t} is too old for the default codex model (needs >= 0.159.1); auto-update failed: ${(n.stderr||`codex/npm not found`).trim()}. Run: codex update`}}async function Mi(e,t={},r){let a=t.hosts??[],o=a.find(e=>![`claude`,`codex`,`agents`].includes(e));if(o)throw new B(`invalid-option`,`Unknown host "${o}". Use claude, codex, or agents.`,{hint:`Codex, Pi, OpenCode, and other Agent Skills hosts: coder setup-host agents`});let s=e=>t[e]||a.includes(e);r?.();let c=Q(e),l=ji(c);l?.updated&&(c=Q(e));let u=c.available?await Gr(e):{loggedIn:!1,detail:c.detail},d=ri(),f=d.available?ii():{loggedIn:!1,detail:d.detail},p=K();if(!i.existsSync(p)){let e=c.available?[`codex`,`claude`]:d.available?[`claude`,`codex`]:[`codex`,`claude`];Dn({...V,chain:e})}let m=te(),h=s(`claude`)?Ci(m):null,g=s(`agents`)||s(`codex`)?Ei(m):null,_=J(e),v=c.available&&u.loggedIn||d.available&&f.loggedIn;return{codex:{available:c.available,detail:c.detail,auth:u.detail,loggedIn:u.loggedIn},...l?{codexUpdate:l}:{},claude:{available:d.available,detail:d.detail,auth:f.detail,loggedIn:f.loggedIn},configFile:p,runtime:n(new URL(`../bin/coder.mjs`,import.meta.url)),...h?{claudePlugin:h}:{},...g?{agentsSkill:g}:{},config:_,ready:v}}async function Ni(t={},n){let r=!t.pluginsOnly,a=!t.cliOnly,o=te(),c=e.join(o,`plugins/claude/.claude-plugin/plugin.json`),l={cli:w(),claude:T(c)},u={};if(r){let e=Si(C),[r,...i]=t.pm===`npm`?[`npm`,`install`,`-g`,`@wular/coder@latest`]:t.pm===`pnpm`?[`pnpm`,`add`,`-g`,`@wular/coder@latest`]:t.pm===`yarn`?[`yarn`,`global`,`add`,`@wular/coder@latest`]:t.pm===`bun`?[`bun`,`add`,`-g`,`@wular/coder@latest`]:e.command,a=t.pm??e.pm;n?.(`via ${a}`);let o=s(r,i,{encoding:`utf8`});if(o.error?.code===`ENOENT`)throw new B(`invalid-option`,`${a} not found on PATH. Re-run with --pm <npm|pnpm|yarn|bun>, or update manually: ${r} ${i.join(` `)}`);if(o.status!==0){let e=(o.stderr||o.stdout||``).trim();throw new B(`invalid-option`,`CLI update failed (${a}).${e?`\n${e}`:``}\nRun manually: ${r} ${i.join(` `)}`)}yi();let c=w();u.cli={pm:a,from:l.cli,to:c,changed:c!==l.cli}}if(a){if(t.claude||!t.codex&&ri().available){let e=Ci(o);u.claudePlugin={installed:e.installed,note:e.note,from:l.claude,to:T(c)}}if(i.existsSync(wi())){let e=Ti(),t=Ei(o);u.agentsSkill={installed:t.installed,note:t.note,from:e,to:Ti()}}}return u}const Pi=new Set(`commit.checkout.switch.restore.stash.reset.rebase.merge.push.pull.cherry-pick.revert.clean.am.apply.tag.branch.worktree.filter-branch.filter-repo.gc.prune.reflog.remote.submodule.config`.split(`.`)),Fi=[/\bsudo\b/,/\brm\s+(-[a-zA-Z]*r[a-zA-Z]*f|-[a-zA-Z]*f[a-zA-Z]*r)\b.*\s(\/\*?|~\/?|\$HOME\/?)(\s|$)/,/\b(shutdown|reboot|halt|poweroff)\b/,/\bmkfs\b|\bdiskutil\s+erase/i,/\b(chmod|chown)\b.*-R.*\s\/(\s|$)/,/\bkill(all)?\s+-9\s+1\b/,/curl[^|;&]*\|\s*(ba|z|da)?sh\b/,/wget[^|;&]*\|\s*(ba|z|da)?sh\b/,/\blaunchctl\b|\bsystemctl\b/,/\bdefaults\s+write\b/,/>\s*\/dev\/(sd|disk)/],Ii=new Set([`status`,`log`,`diff`,`show`,`blame`,`rev-parse`,`ls-files`,`ls-tree`,`cat-file`,`describe`,`shortlog`,`grep`,`branch`,`stash`]);function Li(e){return e.match(/^\s*(?:ba|z|da)?sh\s+(?:-[a-zA-Z]+\s+)*(?:-c\s+)?(["'])([\s\S]*)\1\s*$/)?.[2]??e}function Ri(e){return e.trim().split(/\s+/).filter(Boolean)}function zi(e){let t=e.find((e,t)=>t>0&&!e.startsWith(`-`));if(!t)return{decision:`accept`,reason:`bare git`};if(t===`branch`&&e.some(e=>/^-(d|D|m|M|c|C|f|u)|^--(delete|move|copy|force|set-upstream)/.test(e)))return{decision:`decline`,reason:`git branch write operation (git is read-only for Coder)`};if(t===`stash`){let t=e.find((e,t)=>t>1&&!e.startsWith(`-`));return t===`list`||t===`show`?{decision:`accept`,reason:`git stash ${t} is read-only`}:{decision:`decline`,reason:`git stash write operation (git is read-only for Coder)`}}return Ii.has(t)?{decision:`accept`,reason:`git ${t} is read-only`}:Pi.has(t)?{decision:`decline`,reason:`git ${t} is a write operation (git is read-only for Coder)`}:{decision:`escalate`,reason:`unrecognized git subcommand: ${t}`}}function Bi(t,n={}){let r=Li(String(t??``));if(!r.trim())return{decision:`escalate`,reason:`empty command`};for(let e of Fi)if(e.test(r))return{decision:`decline`,reason:`matches hard-deny pattern ${e}`};if(/\$\(|`|<\(/.test(r))return{decision:`escalate`,reason:`contains command substitution`};let i=r.split(/&&|\|\||;|\||\r?\n/).map(e=>e.trim()).filter(Boolean);if(i.length>1){let e={decision:`accept`,reason:`all segments safe`};for(let t of i){let r=Bi(t,n);if(r.decision===`decline`)return r;r.decision===`escalate`&&(e=r)}return e}let a=Ri(r),o=e.basename(a[0]??``);if(o===`git`)return zi(a);let s=n.networkHost;return s?(n.allowedNetworkHosts??[]).some(e=>s===e||s.endsWith(`.${e}`))?{decision:`accept`,reason:`network host ${s} is allowlisted`}:{decision:`escalate`,reason:`network access to ${s}`}:{decision:`escalate`,reason:`command needs approval: ${o||`(unknown)`}`}}function Vi(t,n){if(!t.length)return{decision:`escalate`,reason:`file change with no resolvable paths`};for(let r of t){let t=e.resolve(n,r),i=e.relative(n,t);if(i.startsWith(`..`)||e.isAbsolute(i))return{decision:`escalate`,reason:`path outside workspace: ${r}`};if(i===`.git`||i.startsWith(`.git${e.sep}`))return{decision:`decline`,reason:`direct .git modification: ${r}`}}return{decision:`accept`,reason:`all paths inside workspace`}}function Hi(t){return e.join(t,`approvals`)}function Ui(t){let n=Hi(t);return i.existsSync(n)?i.readdirSync(n).filter(e=>e.endsWith(`.request.json`)).flatMap(t=>{let r=t.replace(/\.request\.json$/,``),i=m(e.join(n,t));if(!i)return[];let a=m(e.join(n,`${r}.response.json`));return[{...i,id:r,response:a}]}).sort((e,t)=>String(e.createdAt??``).localeCompare(String(t.createdAt??``))):[]}function Wi(t,n,r){let a=Hi(t),o=e.join(a,`${n}.request.json`);if(!i.existsSync(o))throw Error(`No pending approval "${n}" for this task.`);i.writeFileSync(e.join(a,`${n}.response.json`),`${JSON.stringify({decision:r,answeredAt:new Date().toISOString()},null,2)}\n`,`utf8`)}async function Gi(t,n,{timeoutMs:r,onEvent:a}){let o=Hi(t);i.mkdirSync(o,{recursive:!0});let s=`apr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`;i.writeFileSync(e.join(o,`${s}.request.json`),`${JSON.stringify({...n,createdAt:new Date().toISOString()},null,2)}\n`,`utf8`),a?.({kind:`approval-escalated`,approvalId:s,summary:n.summary,message:`Approval needed (${s}): ${n.summary}. Answer with: coder task approve ${e.basename(t)} ${s} [--deny]`});let c=e.join(o,`${s}.response.json`),l=Date.now()+r;for(;Date.now()<l;){if(i.existsSync(c))try{let e=JSON.parse(i.readFileSync(c,`utf8`)).decision===`accept`?`accept`:`decline`;return a?.({kind:`approval-answered`,approvalId:s,decision:e}),e}catch{}await new Promise(e=>setTimeout(e,400))}return a?.({kind:`approval-timeout`,approvalId:s,message:`Approval ${s} timed out; declining.`}),`decline`}function Ki(e,t={}){return Gi(e,{method:`simulate`,summary:`simulated approval probe (--simulate-approval)`},{timeoutMs:t.timeoutMs??12e4,onEvent:t.onEvent??null})}function qi({workspaceRoot:e,taskDir:t,mode:n=`auto`,escalationTimeoutMs:r=12e4,allowedNetworkHosts:i=[],onEvent:a=null}){return async(o,s,c)=>{if(o===`item/commandExecution/requestApproval`){let l=c?.itemIndex?.get(s.itemId??``),u=s.command??l?.command??``,d=s.cwd??l?.cwd??e,f=`Run command. ${u||`Unknown command`}${s.reason?`. ${s.reason}`:``}`;if(n===`deny`)return a?.({kind:`approval-decision`,method:o,decision:`decline`,reason:`deny mode`,summary:f}),{decision:`decline`};let p=Bi(u,{networkHost:s.networkApprovalContext?.host??null,allowedNetworkHosts:i});return a?.({kind:`approval-decision`,method:o,decision:p.decision,reason:p.reason,summary:f}),p.decision===`escalate`?{decision:await Gi(t,{method:o,summary:f,command:u,cwd:d,params:s},{timeoutMs:r,onEvent:a})}:{decision:p.decision}}if(o===`item/fileChange/requestApproval`){let i=(c?.itemIndex?.get(s.itemId??``)?.changes??[]).map(e=>e.path).filter(e=>!!e),l=`Apply file changes. ${i.join(`, `)||`Unknown paths`}${s.reason?`. ${s.reason}`:``}`;if(n===`deny`)return a?.({kind:`approval-decision`,method:o,decision:`decline`,reason:`deny mode`,summary:l}),{decision:`decline`};let u=Vi(i,e);return a?.({kind:`approval-decision`,method:o,decision:u.decision,reason:u.reason,summary:l}),u.decision===`escalate`?{decision:await Gi(t,{method:o,summary:l,paths:i,params:s},{timeoutMs:r,onEvent:a})}:{decision:u.decision}}throw a?.({kind:`approval-unsupported`,method:o}),Error(`Coder does not handle server request ${o}; treating as denied.`)}}const Ji=/usage|quota|rate.?limit|429|401|unauthorized|not authenticated|login|insufficient|exhausted|not available|ENOENT/i;function Yi(e){return Ji.test(e)&&!Wn(e)}var Xi=class extends Error{engine;detail;constructor(e,t){super(t),this.engine=e,this.detail=t}};function Zi(e,t){let n=e.engine,r=!!n,i=e.model,a=e.effort,o=e=>{let n=e?t.models?.[e]:void 0;return n&&on(n)?n:void 0},s=e=>{let n=e?t.models?.[e]:void 0;return n&&W(n)?n:void 0};if(o(i)){let e;try{e=En(i,t)}catch(e){throw new B(`invalid-option`,e instanceof Error?e.message:String(e))}e&&(r||(n=e.engine),i=e.model??void 0,a=a??e.effort??void 0)}if(!n&&i&&(i in U?n=`claude`:i in H?n=`codex`:s(i)?n=`custom`:/^(?:claude-|opus|sonnet|haiku|fable)/i.test(i)&&(n=`claude`)),n=n??t.chain[0]??`codex`,n!==`codex`&&n!==`claude`&&n!==`custom`){let e=n in H||n in U||n in(t.models??{})?` "${n}" is a model; use --model ${n}.`:``;throw new B(`invalid-option`,`Invalid --engine "${n}". Use codex, claude, or custom.${e}`)}let c=t.engines[n]??{},l=i??c.model??null,u=a??c.effort??null;if(o(l)){let e;try{e=En(l,t)}catch(e){throw new B(`invalid-option`,e instanceof Error?e.message:String(e))}e&&(r||(n=e.engine),l=e.model,u=a??e.effort??u)}let d=e.permissions??c.permissions??`auto`;try{Tn(t,l)}catch(e){throw new B(`invalid-option`,e instanceof Error?e.message:String(e))}if(n===`custom`){let e=Object.entries(t.models??{}).filter(([,e])=>W(e)).map(([e])=>e);if(!l&&e.length===1&&(l=e[0]),!l||!s(l))throw new B(`invalid-option`,l?`No custom model named "${l}". Configured: ${e.join(`, `)||`none`}.`:`No custom model to run: pass --model <name> or set engines.custom.model.`,{hint:`Add one: coder model add <name> --base-url <url> --model <id>`})}let f=n===`claude`;if(!(d in Pt))throw new B(`invalid-option`,`Invalid --permissions "${d}". Use one of: ${Object.keys(Pt).join(`, `)}`);if(!f&&u&&!Mt.has(u))throw new B(`invalid-option`,`Invalid codex --effort "${u}". Use one of: ${[...Mt].join(`, `)}`);if(f&&u&&!Nt.has(u))throw new B(`invalid-option`,`Invalid claude --effort "${u}". Use one of: ${[...Nt].join(`, `)}`);return{engine:n,model:l,effort:u,permissions:d}}const Qi=r.strictObject({name:r.string().check(r.minLength(1)),command:r.optional(r.string().check(r.minLength(1))),args:r.optional(r.array(r.string())),env:r.optional(r.record(r.string(),r.string())),url:r.optional(r.string().check(r.minLength(1))),type:r.optional(r.enum([`stdio`,`http`,`sse`])),headers:r.optional(r.record(r.string(),r.string())),tools:r.optional(r.array(r.string()))}).check(r.refine(e=>!!e.command!=!!e.url,`one of command or url`)),$i=r.array(Qi);function ea(e,t={}){let n=e.trim();return/^[\[{]/.test(n)?na(n):(n===`all`?Object.keys(t):n.split(`,`).map(e=>e.trim()).filter(Boolean)).map(e=>{let n=t[e];if(!n)throw new B(`invalid-option`,`Unknown MCP server "${e}".`,{hint:`configured: ${Object.keys(t).join(`, `)||`none`}; or pass a JSON array`});return{name:e,...n}})}function ta(e,t={},n={}){return typeof e==`string`&&!e.trim()&&(e=void 0),{mcp:typeof e==`string`?ea(e,{...t,...n}):e??Object.entries(n).map(([e,t])=>({name:e,...t})),nativeMcp:typeof e==`string`&&e.trim()===`all`}}function na(e){let t;try{t=JSON.parse(e)}catch(e){throw new B(`invalid-option`,`Invalid --mcp JSON: ${e instanceof Error?e.message:String(e)}`)}let n=$i.safeParse(t);if(!n.success)throw new B(`invalid-option`,`Invalid --mcp value: ${r.prettifyError(n.error)}`,{hint:`--mcp '[{"name":"docs","command":"npx","args":["-y","docs-mcp"],"tools":["search"]}]'`});return n.data}function ra(n,r=t.env,a){let o=e=>e.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)(?::-([^}]*))?\}/g,(e,t,n)=>r[t]??n??``),s=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e,o(t)]));return(n??[]).map(t=>{let n={...t,...t.command?{command:o(t.command)}:{},...t.args?{args:t.args.map(o)}:{},...t.url?{url:o(t.url)}:{},...t.env?{env:s(t.env)}:{},...t.headers?{headers:s(t.headers)}:{}};if(!a||!n.command)return n;let c=(n.command.includes(e.sep)?[e.resolve(a,n.command)]:(n.env?.PATH??r.PATH??`/usr/bin:/bin`).split(e.delimiter).map(t=>e.resolve(a,t,n.command))).find(e=>{try{return i.accessSync(e,i.constants.X_OK),i.statSync(e).isFile()}catch{return!1}});if(!c)throw new B(`invalid-option`,`MCP server "${t.name}" command cannot be resolved.`);return n.command=i.realpathSync(c),n.args=n.args?.map(t=>{if(t.startsWith(`-`)||e.isAbsolute(t))return t;let n=e.resolve(a,t),r=i.existsSync(n)&&i.statSync(n).isFile();return!r&&!t.startsWith(`./`)&&!t.startsWith(`../`)?t:r?i.realpathSync(n):n}),n})}function ia(t,n=[]){let r=[...new Set(n.map(n=>e.resolve(t,n)))];for(let e of r)if(!i.statSync(e,{throwIfNoEntry:!1})?.isDirectory())throw new B(`invalid-option`,`--add-dir ${e} is not a directory.`);return r}function aa(e,t){return e===`read-only`&&Lt.test(t??``)}const oa=[`read-only`,`workspace-write`,`auto`];function sa(e,t,n){if(!t)return n.permissions;if(oa.indexOf(t)>oa.indexOf(n.permissions))throw new B(`invalid-option`,`task "${e??`task`}" asks for ${t} but agent "${n.agent}" is ${n.permissions}: lower the task's permissions or raise the agent's`);return t}function ca(n,r){let a=F(n,r),s=i.openSync(e.join(a,`worker.log`),`a`),c=o(t.execPath,[C,`task`,`worker`,r,`--cwd`,n],{cwd:n,detached:!0,stdio:[`ignore`,s,s],env:{...t.env,CODER_WORKER:`1`}});c.unref(),i.closeSync(s),I(n,r,{pid:c.pid??null})}async function la(t,n,r,i,a){let o=r.cwd,s=n.engine===`claude`?ri():Q(o),c=n.model?t.models?.[n.model]:void 0;if(!s.available&&c&&W(c)){let e=Di(s);r.onNote?.(e.note),s=Q(o)}if(!s.available)throw new Xi(n.engine,s.detail);let u=c?null:n.engine===`claude`?Ai(`claude`,n.model,s):Ai(`codex`,Sn(n.model),s);u&&r.onNote?.(u);let d=r.addDirs??[],f=r.taskId??rt(),p=I(o,f,{status:`queued`,...r.taskId?{dispatchId:l()}:{},kind:`task`,name:i.name??null,system:r.system??null,engine:n.engine,prompt:r.prompt,...r.outputSchema?{outputSchema:r.outputSchema}:{},model:n.model,effort:n.effort,permissions:n.permissions,resumeThreadId:null,cwd:o,background:!r.wait,...i.simulateApproval?{simulateApproval:!0}:{},...r.flowRunId?{flowRunId:r.flowRunId}:{},...r.agentId?{agentId:r.agentId}:{},...r.source?{source:r.source}:{},...r.author?{author:r.author}:{},...r.repo?{repo:r.repo}:{},...r.mcp?.length?{mcp:r.mcp}:{},nativeMcp:r.nativeMcp??!1,...d.length?{addDirs:d}:{}});if(ca(o,f),!a)return{taskId:f,task:L(o,f)??p,engine:n.engine,startupCheck:`pending`};let h=2**53-1,g=new Set([`status`,`usage`]),_=()=>z(o,f,h).filter(e=>{let{phase:t,kind:n}=e;return t!==`starting`&&!g.has(String(n??``))}).length,v=Date.now()+15e3,y=p,b=null,x=null;for(;Date.now()<(x??v)&&(y=L(o,f)??y,y.status!==`failed`&&y.status!==`completed`);){if(y.threadId&&b===null&&(b=_(),x=Date.now()+5e3),b!==null&&_()>b){y=L(o,f)??y;break}await new Promise(e=>setTimeout(e,150))}if(y.status===`failed`){let t=m(e.join(F(o,f),`result.json`))?.error?.message??``,r=z(o,f,5).map(e=>e.message??``).join(`
14
+ `),i=t||r;throw aa(n.permissions,i)?new B(`read-only-unavailable`,i):Yi(i)?new Xi(n.engine,i):new B(`startup-failed`,i,{taskId:f})}return{taskId:f,task:y,engine:n.engine,startupCheck:y.threadId?`passed`:`pending`}}function ua(e,t,n,r,i){return{error:`${e} failed to start: ${t}`,fallback:{action:`run-native-subagent`,reason:`no-engine-available`,permissions:n,instructions:`Mention the engine failure to the user, including any limit reset time. If your harness has a native subagent facility, spawn one subagent with fallback.task verbatim, prefixed with: "NEVER run git write operations (commit, checkout, stash, reset, push, etc.); leave changes uncommitted." If fallback.permissions is "read-only", append: "Investigate and report without modifying anything." If it is "workspace-write", append: "Never touch anything outside the workspace." Relay its output when it completes. If your harness has no native subagent facility, report the failure and stop; do not implement the task yourself.`,note:`Every coder engine failed to start. Spawn your own native subagent and forward the task verbatim; tell it to never run git write operations (commit, checkout, stash, reset, push, ...) and to honor the permissions.`,...r?{system:r}:{},task:i}}}async function da(e,n={}){if(t.env.CODER_WORKER&&!n.fromMailbox)throw new B(`nested-dispatch`,`Nested dispatch is disabled inside a worker; do the work directly.`);if(e.outputSchema!==void 0&&(!e.outputSchema||typeof e.outputSchema!=`object`||Array.isArray(e.outputSchema)))throw new B(`invalid-option`,`outputSchema must be an object.`);if(!e.prompt.trim())throw new B(`invalid-option`,`Missing task text.`,{hint:[`Usage: coder run "<task text>"`,`Help: coder task run --help`]});e={...e,addDirs:ia(e.cwd,e.addDirs)};let r=J(e.cwd),i=ta(e.mcp,r.mcp),a={...e,mcp:i.mcp,nativeMcp:e.nativeMcp??i.nativeMcp},o={engine:e.engine,model:e.model,effort:e.effort,permissions:e.permissions},s={name:e.name,simulateApproval:e.simulateApproval};for(;;){let t=Zi(o,r);try{return await la(r,t,a,s,n.waitForStartup!==!1)}catch(n){if(!(n instanceof Xi))throw n;let i=r.chain[r.chain.indexOf(n.engine)+1];if(!i){let r=ua(n.engine,n.detail,t.permissions,e.system,e.prompt);throw new B(`chain-exhausted`,r.error,{payload:r})}e.onFallback?.({engine:n.engine,detail:n.detail,next:i}),o={engine:i,permissions:e.permissions},s={name:void 0,simulateApproval:void 0}}}}function fa(e,t){if(t.status!==`failed`)return;let n=t.result;if(!n||!Yi(n.error?.message??``)||!(!n.touchedFiles?.length&&!n.fileChanges?.length&&!n.commandExecutions?.length))return;let r=J(e).chain;return r[r.indexOf(t.task.engine)+1]}function pa(t,n){return m(e.join(F(t,n),`result.json`))}function ma(e,t,n=0){if(n===0)return[];let r=z(e,t,2**53-1);return n===`all`?r:Et(r,n)}function ha(e,t,n={}){let r=L(e,t);if(!r)throw Error(`No task found for "${t}".`);return{taskId:t,status:r.status,result:Be.includes(r.status)?null:pa(e,t),steps:ma(e,t,n.tail),turns:Tt(e,t),task:r}}async function ga(e,t,n={}){let r=L(e,t);if(!r)throw Error(`No task found for "${t}".`);let i=await _a(e,r);if(i.reason===`approval`){let e=i.approval;throw new B(`approval-pending`,`Approval needed for task ${t}: ${e.summary}`,{taskId:t,approval:e})}n.onSettle?.();let a=i.task;return{taskId:t,status:a.status,result:pa(e,t),steps:ma(e,t,n.tail),turns:Tt(e,t),task:a}}async function _a(e,t,n=400){let r=t;for(;;){if(D.includes(r.status))return{task:r,reason:`terminal`};let t=Ui(F(e,r.id)).filter(e=>!e.response);if(t[0]){let e=t[0].params;return{task:r,reason:`approval`,approval:{id:t[0].id,summary:String(t[0].summary??``),cwd:typeof t[0].cwd==`string`?t[0].cwd:null,networkHost:e?.networkApprovalContext?.host??null}}}await new Promise(e=>setTimeout(e,n)),r=R(e,L(e,r.id)??r)}}export{Cn as $,We as $t,Kr as A,m as An,Ct as At,Jn as B,pt as Bt,Mi as C,S as Cn,Ze as Ct,pi as D,v as Dn,Qe as Dt,xi as E,x as En,wt as Et,rr as F,Dt as Ft,Mt as G,mt as Gt,Nt as H,$e as Ht,tr as I,rt as It,hn as J,R as Jt,H as K,z as Kt,$n as L,O as Lt,qr as M,h as Mn,k as Mt,cr as N,St as Nt,fi as O,g as On,et as Ot,Yn as P,_t as Pt,on as Q,Ge as Qt,Zn as R,yt as Rt,Di as S,C as Sn,B as St,bi as T,te as Tn,Ot as Tt,U,st as Ut,Hn as V,L as Vt,It as W,ht as Wt,jn as X,P as Xt,An as Y,at as Yt,bn as Z,Ue as Zt,Bi as _,Se as _n,fn as _t,Yi as a,j as an,Rn as at,Ui as b,be as bn,jt as bt,ra as c,vt as cn,En as ct,ca as d,I as dn,Sn as dt,Je as en,W as et,fa as f,Be as fn,sn as ft,qi as g,xe as gn,G as gt,Wi as h,Ce as hn,q as ht,aa as i,qe as in,nn as it,Jr as j,p as jn,A as jt,Q as k,_ as kn,He as kt,Zi as l,nt as ln,vn as lt,ga as m,ze as mn,K as mt,sa as n,F as nn,In as nt,pa as o,Et as on,zn as ot,_a as p,D as pn,xn as pt,Pt as q,Tt as qt,da as r,Ke as rn,Ln as rt,ha as s,ut as sn,_n as st,ua as t,M as tn,J as tt,ta as u,bt as un,un as ut,Vi as v,we as vn,Mn as vt,Ni as w,w as wn,kt as wt,Ki as x,le as xn,At as xt,Gi as y,E as yn,Dn as yt,nr as z,gt as zt};
@@ -0,0 +1,2 @@
1
+ import{St as e,Tn as t}from"./dispatch-YW1aqjEg.js";import n from"node:path";import r from"node:fs";const i=[{name:`readme`,file:`README.md`,description:`What Coder is and how to get started.`},{name:`skill`,file:`plugins/agents/skills/coder/SKILL.md`,description:`How a host agent should drive Coder.`}];function a(e){let t=n.join(e,`docs`),a=[];try{a=r.readdirSync(t,{withFileTypes:!0})}catch{a=[]}let c=(t,r)=>({name:t,file:r,description:s(n.join(e,r))}),l=[...new Set(a.filter(e=>e.isDirectory()?o(n.join(t,e.name)):e.name.endsWith(`.md`)).map(e=>e.isDirectory()?e.name:n.basename(e.name,`.md`)))].sort(),u=[];for(let e of l){let i=n.join(t,e);if(!a.some(t=>t.isDirectory()&&t.name===e)){u.push(c(e,n.join(`docs`,`${e}.md`)));continue}u.push(c(e,n.join(`docs`,e,`index.md`)));let o=r.readdirSync(i).filter(e=>e.endsWith(`.md`)&&e!==`index.md`).sort();for(let t of o){let r=n.basename(t,`.md`);u.push(c(`${e}/${r}`,n.join(`docs`,e,t)))}}let d=i.map(e=>({name:e.name,file:e.file,description:e.description}));return[...u,...d]}function o(e){return r.existsSync(n.join(e,`index.md`))}function s(e){let t=``;try{t=r.readFileSync(e,`utf8`)}catch{return``}let n=t.split(`
2
+ `),i=``,a=``,o=!1;for(let e of n){let t=e.trim();if(t.startsWith("```")){o=!o;continue}if(!(o||t===``)){if(t.startsWith(`#`)){i||=t.replace(/^#+\s*/,``);continue}a=t;break}}return c(a)||i}function c(e){if(!e)return``;let t=e.match(/^.*?[.!?](?=\s|$)/);return(t?t[0]:e).trim()}function l(i,o={}){let s=t(),c=a(s);if(!i)return{topics:c.map(e=>({name:e.name,description:e.description}))};let l=i.toLowerCase(),u=c.find(e=>{let t=e.name.toLowerCase();return t===l||t.replace(`/`,`-`)===l});if(u?.name===`skill`&&o.claude&&(u={...u,file:`plugins/claude/skills/dispatch/SKILL.md`}),!u)throw new e(`invalid-option`,`Unknown docs topic "${i}". Available: ${c.map(e=>e.name).join(`, `)}`,{hint:`List topics: coder docs`});let d=n.join(s,u.file),f;try{f=r.readFileSync(d,`utf8`)}catch{throw new e(`invalid-option`,`Could not read docs for "${u.name}" (${u.file}).`)}return{name:u.name,content:f}}export{l as t};
@@ -0,0 +1,2 @@
1
+ import{i as e}from"./cli-msOzZFXW.js";import{g as t,p as n,s as r}from"./output-BKeyLbvt.js";import{n as i}from"./args-DEMOfLz2.js";import{t as a}from"./docs-Byrpar10.js";import o from"node:process";const s=e({name:`docs`,globalFlags:{cwd:!1},help:{usage:`coder docs [topic] [--json]`,summary:"Print bundled documentation. With no topic, list the available topics; with a\ntopic, print that doc's raw markdown to stdout (unstyled, for an agent to\nconsume). Topics with sub-pages list them as `<topic>/<page>` (also accepted as\n`<topic>-<page>`). `coder docs skill` prints the host skill so an engine can\nload it once per session (--claude for the Claude Code flavor).",flags:[[`--claude`,`with the skill topic: print the Claude Code flavor`]],examples:[[`coder docs`,`list the available topics`],[`coder docs flows`,`print the Flows doc`],[`coder docs review`,`print the Review doc`]]},options:{json:i,claude:i},args:1,run:({options:e,args:[t]})=>a(t,e),print:e=>o.stdout.write(`content`in e?e.content.endsWith(`
2
+ `)?e.content:`${e.content}\n`:c(e.topics))});function c(e){let i=n,a=e=>e.includes(`/`)?` ${e}`:e;return t([{header:`topic`,value:e=>a(e.name),paint:e=>i.cyan(e)},{header:`about`,value:e=>e.description,paint:e=>i.light(e)}],e,i)+`\n${r([`Read a topic: coder docs <topic>`],i)}\n`}export{s as commandDocs};
@@ -0,0 +1 @@
1
+ import{toggle as e}from"./disable-CQg5Vybq.js";const t=e(!1,{usage:`coder model enable <name> [--workspace]`,summary:`Re-enable a disabled model.`,flags:[[`--workspace`,`target <repo>/.coder/config.json instead of the user file`]]});export{t as commandModelEnable};
@@ -0,0 +1 @@
1
+ import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{St as t,bn as n}from"./dispatch-YW1aqjEg.js";import r from"node:path";import i from"node:process";import*as a from"zod/mini";import o from"node:os";var s=e({loadServerConfig:()=>g,requireBunServer:()=>v,rerunUnderBun:()=>y});const c=e=>a._default(a.coerce.number().check(a.int(),a.positive()),e),l=a.pipe(a.optional(a.string()),a.transform(e=>e===`1`)),u=(e,t)=>a.string().check(a.overwrite(e=>e.replace(/\/$/,``)),a.refine(e=>URL.canParse(e),{error:`must be a URL`,abort:!0}),a.refine(t=>e(new URL(t)),t)),d=e=>a.pipe(a.transform(e=>e||void 0),e),f=a.pipe(a.string(),a.transform((e,t)=>{try{let t=JSON.parse(e);if(t&&!Array.isArray(t)&&typeof t==`object`)return t}catch{}return t.issues.push({code:`custom`,message:`must be a JSON object`,input:e}),a.NEVER})),p=a.object({AUTH_WULAR_URL:a._default(u(e=>e.protocol===`https:`||e.hostname===`localhost`,`must use HTTPS unless it is localhost`),`https://auth.wular.ai`)}),m=a.object({SERVER_LIMITS:d(a.optional(a.pipe(f,a.strictObject({principalPerMinute:a.optional(a.number().check(a.int(),a.positive())),authPerMinute:a.optional(a.number().check(a.int(),a.positive())),registerPerMinute:a.optional(a.number().check(a.int(),a.positive())),ipPerMinute:a.optional(a.number().check(a.int(),a.positive())),pairingPerMinute:a.optional(a.number().check(a.int(),a.positive())),concurrentTasks:a.optional(a.number().check(a.int(),a.positive()))})))),RUNNER:a.optional(a.enum([`local`,`local-docker`,`vercel-sandbox`,`github-actions`,`http`])),RUNNER_CONFIG:d(a._default(f,{})),WORK_DIR:a.optional(a.string()),SERVER_ENCRYPTION_KEY:a.optional(a.string()),SERVER_ENCRYPTION_KEY_PREVIOUS:a.optional(a.string()),ADMIN_TOKEN:a.optional(a.string()),PUBLIC_URL:d(a.optional(u(e=>e.pathname===`/`&&!e.search&&!e.hash,`must be an origin, with no path, query or fragment`))),SERVER_NAME:a.optional(a.string().check(a.trim())),VERCEL_PROJECT_PRODUCTION_URL:a.optional(a.string()),VERCEL_URL:a.optional(a.string()),VERCEL:a.optional(a.string()),DATABASE_URL:a.optional(a.string()),POSTGRES_URL:a.optional(a.string()),DATABASE_POOL_MAX:a.optional(a.coerce.number().check(a.int(),a.positive())),DATABASE_IDLE_TIMEOUT:a.optional(a.coerce.number().check(a.int(),a.positive())),MAX_TASKS:a.optional(a.coerce.number().check(a.int(),a.positive())),MAX_QUEUED:c(1e3),TASK_STALL:c(3e5),TASK_ATTEMPTS:c(2),TASK_TIMEOUT:c(18e5),CLAUDE_SUBSCRIPTIONS:l,CODEX_SUBSCRIPTIONS:l,SERVER_INTEGRATIONS:d(a.optional(a.string()))});function h(e,n){let r=e.safeParse(n);if(r.success)return r.data;let i=r.error.issues[0];throw new t(`invalid-option`,`Invalid server configuration:${String(i.path[0])} ${i.message}`)}function g(e=i.env,n=`node`){let a=h(m,e),s=a.DATABASE_URL??a.POSTGRES_URL,c=s?`postgres`:`memory`;if(c===`postgres`&&!a.SERVER_ENCRYPTION_KEY)throw new t(`invalid-option`,`SERVER_ENCRYPTION_KEY is required with DATABASE_URL`);let l=n===`vercel`?a.VERCEL_PROJECT_PRODUCTION_URL??a.VERCEL_URL:void 0,u=a.PUBLIC_URL??(l?`https://${l}`:void 0),d=c===`postgres`?h(p,e).AUTH_WULAR_URL:void 0;return{runner:a.RUNNER??(n===`vercel`||a.VERCEL?`vercel-sandbox`:`local`),store:c,workDir:a.WORK_DIR??r.join(o.tmpdir(),`coder`),...a.SERVER_ENCRYPTION_KEY?{encryptionKey:a.SERVER_ENCRYPTION_KEY}:{},...a.SERVER_ENCRYPTION_KEY_PREVIOUS?{previousEncryptionKey:a.SERVER_ENCRYPTION_KEY_PREVIOUS}:{},...a.ADMIN_TOKEN?{adminToken:a.ADMIN_TOKEN}:{},...u?{publicUrl:u}:{},...a.SERVER_NAME?{name:a.SERVER_NAME}:{},...s?{databaseUrl:s,databasePool:{max:a.DATABASE_POOL_MAX??(n===`vercel`||a.VERCEL?2:10),idleTimeout:a.DATABASE_IDLE_TIMEOUT??(n===`vercel`||a.VERCEL?30:240)}}:{},runnerConfig:a.RUNNER_CONFIG,maxTasks:a.MAX_TASKS,limits:a.SERVER_LIMITS,maxQueued:a.MAX_QUEUED,taskTimeoutMs:a.TASK_TIMEOUT,taskStallMs:a.TASK_STALL,taskAttempts:a.TASK_ATTEMPTS,...a.CLAUDE_SUBSCRIPTIONS||a.CODEX_SUBSCRIPTIONS?{subscriptions:{claude:a.CLAUDE_SUBSCRIPTIONS,codex:a.CODEX_SUBSCRIPTIONS}}:{},...d?{auth:{wular:{url:d}}}:{},...a.SERVER_INTEGRATIONS?{integrations:a.SERVER_INTEGRATIONS.split(`,`).map(e=>e.trim()).filter(Boolean)}:{}}}function _(){return new t(`invalid-option`,`The Coder server needs Bun; the CLI itself runs on Node.`,{hint:[i.platform===`win32`?`Install Bun: powershell -c "irm bun.sh/install.ps1 | iex"`:`Install Bun: curl -fsSL https://bun.sh/install | bash`,`Or with npm: npm install -g bun`,`Then run the command again. More: https://bun.sh/docs/installation`]})}function v(){if(typeof Bun>`u`)throw _()}async function y(){if(typeof Bun<`u`)return;let e=i.platform===`win32`?[`bun.exe`,`bun.cmd`,`bun`]:[`bun`];for(let t of e){let e=await n(t);if(e.error?.code!==`ENOENT`&&e.error?.code!==`EINVAL`){if(e.error)throw e.error;if(e.signal){let t=o.constants.signals[e.signal];i.exit(typeof t==`number`?128+t:1)}i.exit(e.status??1)}}throw _()}export{g as n,v as r,s as t};
@@ -0,0 +1,11 @@
1
+ import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{F as t,St as n,Vt as r,c as i,f as a,l as o,m as s,n as c,r as l,tt as u,u as d,z as f}from"./dispatch-YW1aqjEg.js";import{a as p,f as m,o as h}from"./load-DDZfByUe.js";import{t as g}from"./integrations-B2CavXR1.js";import{a as _}from"./discover-CaAtyC0h.js";import{c as v}from"./actions-CmfXOVXQ.js";import{n as y}from"./executor-HWnIIYUL.js";import{REVIEW_PLATFORM as b,postReview as x,resolveReviewTarget as S}from"./flow/builtin/review.js";import{a as C,i as w,n as T,r as E}from"./mcp-DgMoPoUo.js";import D from"node:path";import O from"node:process";import{readFileSync as k,readdirSync as A,realpathSync as j}from"node:fs";import M from"node:os";import N from"node:fs/promises";var P=e({AGENT_TASK_PREFIX:()=>F,agentInstructions:()=>q,agentSystemPrompt:()=>K,agentTaskOptions:()=>W,builtinArgs:()=>U,builtinTaskArgs:()=>V,defaultTask:()=>Q,execAgent:()=>z,postReply:()=>L,renderContext:()=>X,startAgentMailbox:()=>$,taskFromEvent:()=>I,waitForAgentTask:()=>B});const F=`agent:`;function I(e,t,n){let r=g[n.integration];return{id:`local-${n.deliveryId}-${e.id}`,source:n.integration,agent:e.id,flow:t,runner:`local`,event:n,definition:e.definition,...e.usage?{usage:e.usage}:{},tools:r?{[n.integration]:m(e,n.integration,r)}:{}}}async function L(e,t,n,r,i=e.id){if(!t.chat)throw Error(`The ${t.integration} event has no thread to reply in`);let[{Chat:a},{LocalChatState:o}]=await Promise.all([import(`chat`),import(`./chat-3Znsevah.js`).then(e=>e.r)]),s=await e.adapter({fetch,appId:t.appId.slice(e.id.length+1),name:i,installationId:t.installationId,token:async()=>r}),c=new a({userName:i,adapters:{[e.id]:s},state:new o,logger:`error`});await c.initialize();let l=c.thread(t.chat.thread.id);s.reply&&t.chat.message?.id?await l.reply(t.chat.message.id,n):await l.post(n)}function R(e,t){return Object.fromEntries(Object.keys(e.tools).map(n=>[n,t[w(n)]??(n===e.event?.integration?t.APP_TOKEN:void 0)]))}async function z(e){let{cwd:t,flow:n}=e,r=u(t),i=await p(t,g),a=e.task;!a&&e.taskFile&&(a={...JSON.parse(await N.readFile(D.resolve(t,e.taskFile),`utf8`)),flow:n});let s=i.find(t=>t.id===e.agent);if(!s&&a&&(s={id:a.agent,name:a.definition.name??a.agent,definition:a.definition,...a.usage?{usage:a.usage}:{},...a.files?{files:a.files}:{},builtin:!1}),!s)throw Error(`No agent named "${e.agent}".`);a??=await H(t,s,n,e);let c=a.event,f=c&&g[c.integration];if(c&&!f)throw Error(`Unknown integration "${c.integration}".`);if(n==="default"){let i=Q(s,a),u=e.noteFile?void 0:await N.mkdtemp(D.join(M.tmpdir(),`coder-note-`)),p=e.noteFile??D.join(u,`note`);e.noteFile||await N.writeFile(p,a.context?.note??``);let m=o(h(s),r),g=d(a.mcp?.join(`,`),r.mcp,s.definition.mcp),_=[...E(a,e.toolEnvironment?.tokens??R(a,O.env)),T(p),...g.mcp],v=e.resumeTaskId?{taskId:e.resumeTaskId}:await l({taskId:e.taskId,mcp:_,nativeMcp:g.nativeMcp,cwd:t,agentId:a.agent,...a.author?{author:a.author}:{},...c?.repo?{repo:`${c.repo.owner}/${c.repo.name}`}:{},...e.source?{source:e.source}:{name:`${F}${a.id}`},engine:m.engine,model:m.model??void 0,effort:m.effort??void 0,permissions:a.permissions??m.permissions,system:i.system,prompt:i.prompt,outputSchema:a.context?.outputSchema,wait:!0});await e.onTask?.(v.taskId);let y=await B(t,v.taskId,e.onApproval),b=(y.result?.finalMessage??y.result?.error?.message??``).trim(),x=(await N.readFile(p,`utf8`).catch(()=>``)).trim();u&&await N.rm(u,{recursive:!0,force:!0});let S=e.post!==!1&&!!f;return S&&await L(f,c,b,e.postToken??O.env.APP_TOKEN,a.author),{ok:y.status===`completed`,flow:n,reply:b,posted:S,taskId:v.taskId,tokens:y.result?.tokens??void 0,...x===(a.context?.note??``).trim()?{}:{note:x}}}let m=_(n,t),v=m.scope===`builtin`?{...await V(a,s,e.post!==!1),cwd:t,...a.args}:a.args??c,b=await y(m.path,{cwd:t,...e.taskId?{runId:e.taskId}:{},args:v,ceiling:{agent:s.id,permissions:a.permissions??o(h(s),r).permissions},...e.postToken?{integrationToken:e.postToken}:{}},{...e.onTask?{onTaskStart:t=>e.onTask(t.taskId)}:{},...e.onStart?{onStart:e.onStart}:{}});return{ok:!0,flow:n,runId:b.runId,result:b.result,tokens:b.tokens}}async function B(e,t,r,i=s,a=()=>new Promise(e=>setTimeout(e,100))){let o;for(;;)try{return await i(e,t)}catch(e){if(!(e instanceof n)||e.code!==`approval-pending`||!r)throw e;e.approval?.id!==o&&(o=e.approval?.id,await r(e.approval)),await a()}}async function V(e,t,n=!0){if(!e.event)throw Error(`built-in flows need a GitHub pull request event`);return{...await U(e.event,t,e.context,e.author,n),...h(t),...e.permissions?{permissions:e.permissions}:{}}}async function H(e,t,n,r){if(r.taskFile){let t=JSON.parse(await N.readFile(D.resolve(e,r.taskFile),`utf8`));return{...t,flow:n,tools:t.tools??{}}}if(!r.eventFile)throw Error(`Missing --task or --event file.`);return I(t,n,JSON.parse(await N.readFile(D.resolve(e,r.eventFile),`utf8`)))}function U(e,t,n,r,i=!0){let a=g[e.integration]?.repos?.pullRequest(e);if(!a)throw Error(`built-in flows need a pull request event`);return{pr:a,post:i,...r?{author:r}:{}}}async function W(e,t,r){let i=await p(e,g),a=i.find(e=>e.id===t);if(!a)throw new n(`invalid-option`,`No agent named "${t}".`,{hint:`Agents here: ${i.map(e=>e.id).join(`, `)}`});let{definition:o,usage:s}=a,c=o.mcp??{},l=d(r,u(e).mcp,c);return{engine:s?.engine??o.engine,model:s?.model??o.model,effort:s?.effort??o.effort,permissions:s?.permissions??o.permissions,system:q(a)||void 0,...l}}const G=48e3;function K(e){let t=[`You are an agent named "{name}" acting on behalf of a software team. You receive one request, a platform event or a task, and must produce the reply that goes back to its thread verbatim. Be direct and specific, use the attached tools to read context before answering, never invent facts about the repository, and stay within the actions your tools allow. Reply in plain markdown with no preamble.`.replace(`{name}`,e.definition.name??e.id)];e.definition.description&&t.push(`Your role: ${e.definition.description}`);let n=q(e);return n&&t.push(`## Agent instructions\n\n${n}`),t.join(`
2
+
3
+ `)}function q(e){if(!e.dir)return J(e.files??{});let t;try{t=A(e.dir).filter(e=>e.endsWith(`.md`))}catch{return``}t.sort((e,t)=>e===`system.md`?-1:t===`system.md`?1:e.localeCompare(t));let n=``;for(let r of t){let t=`### ${r}\n\n${k(D.join(e.dir,r),`utf8`).trim()}\n`;if(n+=t.slice(0,G-n.length),n.length===G)break}return n.trimEnd()}function J(e){let t=Object.keys(e).filter(e=>e.endsWith(`.md`));t.sort((e,t)=>e===`system.md`?-1:t===`system.md`?1:e.localeCompare(t));let n=``;for(let r of t){let t=`### ${r}\n\n${e[r].trim()}\n`;if(n+=t.slice(0,G-n.length),n.length===G)break}return n.trimEnd()}function Y(e){let t=[`**Integration:** ${e.integration}`,`**Type:** ${e.type}`,`**Actor:** ${e.actor.login??e.actor.id}`];return e.repo&&t.push(`**Repo:** ${e.repo.owner}/${e.repo.name}`),e.chat&&t.push(`**Thread:** ${e.chat.thread.id}${e.chat.thread.isDM?` (direct message)`:``}`),[t.join(`
4
+ `),e.promptContext,e.text].filter(Boolean).join(`
5
+
6
+ `)}function X(e){if(!e)return``;let t=[];return e.messages?.length&&t.push(`## Recent thread\n\n${e.messages.map(e=>`- ${e.user}: ${e.text}`).join(`
7
+ `)}`),e.note&&t.push(`## Note from earlier in this thread\n\n${e.note}`),e.instructions&&t.push(`## Repository instructions\n\n${e.instructions}`),e.user&&t.push(`## Who asked\n\n${e.user.name} (${e.user.email}), a member of this Coder server.`),t.join(`
8
+
9
+ `)}function Z({event:e,prompt:t}){return t===void 0?e?Y(e):``:e?.repo?`**Repo:** ${e.repo.owner}/${e.repo.name}\n\n${t}`:t}function Q(e,t){let n=X(t.context),r=t.prompt===void 0&&t.event?g[t.event.integration]?.hint:void 0,i=Z(t);return{system:[K(e),r?`## Platform\n\n${r}`:``].filter(Boolean).join(`
10
+
11
+ `),prompt:n?`${i}\n\n${n}`:i}}function $(e,o){let u=t(e,o);if(!u)return()=>{};let d={agent:o.agentId,permissions:o.permissions??`auto`},p=j(e),m=new Map((o.mcp??[]).map(e=>[e.name,e])),h=e=>{if(!e.command)return e;let[t]=i([e],O.env,p);return{...e,command:t.command,args:t.args}},g=e=>{try{return j(e)}catch{return null}},_=[e,...o.addDirs??[]].flatMap(e=>g(D.resolve(e))??[]),y=e=>_.some(t=>e===t||e.startsWith(t+D.sep)),w=new Map,T=new Set,E=()=>{let e=C(i(o.mcp),b);return e?{token:e}:{}};return f(u,{async dispatch(e){let t=e.name??`task`;if(e.mcp!==void 0&&(typeof e.mcp!=`string`||/^[\[{]/.test(e.mcp.trim())))throw new n(`invalid-option`,`Mailbox MCP selections must be server names.`);let r=(e.mcp??``).split(`,`).map(e=>e.trim()).filter(Boolean).map(e=>{let t=e===`all`?void 0:m.get(e);if(!t)throw new n(`invalid-option`,`MCP server "${e}" is not authorized for agent "${d.agent}".`);return h(t)}),i=D.resolve(String(e.cwd??p));if(g(i)!==g(p)&&r.some(e=>e.command))throw new n(`invalid-option`,`Inherited stdio MCP servers do not allow a cwd override.`);let a=[i,...(e.addDirs??[]).map(e=>D.resolve(i,e))],o=a.find(e=>!g(e));if(o)throw new n(`invalid-option`,`task "${t}" asks for ${o}, which does not exist`);let[s,...u]=a.map(e=>g(e)),f=[s,...u].find(e=>!y(e));if(f)throw new n(`invalid-option`,`task "${t}" asks for ${f}, outside the workspace of agent "${d.agent}"`);let _=await l({prompt:String(e.prompt??``),outputSchema:e.outputSchema,cwd:s,engine:e.engine,model:e.model,effort:e.effort,mcp:r,permissions:c(t,e.permissions,d),name:e.name,system:e.system,addDirs:u,flowRunId:e.flowRunId,wait:!0},{fromMailbox:!0});return w.set(_.taskId,s),{taskId:_.taskId}},async steer(e){let t=w.get(e.taskId);if(!t)throw new n(`invalid-option`,`No task "${e.taskId}" started by this flow.`);let i=r(t,e.taskId);if(!i)throw new n(`invalid-option`,`No task "${e.taskId}".`);return v(t,i,String(e.text??``),{model:e.model,effort:e.effort,permissions:e.permissions?c(i.name,e.permissions,d):void 0})},async wait(e){let t=w.get(e.taskId);if(!t)throw new n(`invalid-option`,`No task "${e.taskId}" started by this flow.`);let r=await s(t,e.taskId);return{status:r.status,result:r.result,model:r.task.model??null,next:a(t,r)??null}},review(t){if(t.op===`resolveTarget`){let{repo:r,...i}=t.input??{};if(!o.repo&&!/^\d+$/.test(String(i.pr)))throw new n(`invalid-option`,`review target must be a pull request number in this task's repository`);let a=S({...i,cwd:e,...o.repo?{repo:o.repo}:{},...o.author?{author:o.author}:{}},E());return a.pr&&T.add(`${a.pr.repo}#${a.pr.number}`),a}if(t.op!==`post`)throw new n(`invalid-option`,`unknown review action "${t.op}"`);if(!T.has(`${t.input?.repo}#${t.input?.pr}`))throw new n(`invalid-option`,`review post: pull request was not resolved by this task`);return x({...t.input,cwd:e},E())}})}export{I as a,P as i,W as n,z as r,F as t};
@@ -0,0 +1,10 @@
1
+ import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{$t as t,Bt as n,Dn as r,Ft as i,I as a,L as o,Lt as s,On as c,Qt as l,Sn as u,St as d,Tt as f,Ut as ee,Vt as p,f as m,kt as te,m as ne,n as re,pn as h,r as ie}from"./dispatch-YW1aqjEg.js";import{r as ae,s as oe}from"./output-BKeyLbvt.js";import{a as g}from"./discover-CaAtyC0h.js";import{c as se,l as ce,s as le}from"./actions-CmfXOVXQ.js";import{createRequire as ue}from"node:module";import _ from"node:path";import v from"node:process";import{fileURLToPath as de,pathToFileURL as fe}from"node:url";import y from"node:fs";import{spawn as pe,spawnSync as me}from"node:child_process";import he,{randomUUID as ge}from"node:crypto";import _e from"node:os";import{AsyncLocalStorage as ve}from"node:async_hooks";function b(e){return typeof e!=`object`||!e?JSON.stringify(e)??`null`:Array.isArray(e)?`[${e.map(b).join(`,`)}]`:`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${b(e[t])}`).join(`,`)}}`}function ye(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function x(e,t){return he.createHash(`sha256`).update(`${e}\0${b(t)}`).digest(`hex`)}function S(e){return y.existsSync(e)?y.readFileSync(e,`utf8`).split(/\r?\n/).filter(Boolean).map(e=>{try{return JSON.parse(e)}catch{return null}}).filter(e=>e!==null):[]}var be=class{file;recorded;seq=0;constructor(e,t){this.file=t,this.recorded=e.map(e=>({...e})),y.writeFileSync(t,``,`utf8`)}write(e){e.seq=this.seq++,y.appendFileSync(this.file,`${JSON.stringify(e)}\n`,`utf8`)}replay(...e){let t=this.recorded.find(t=>!t.consumed&&e.includes(t.fingerprint));if(!t)return null;t.consumed=!0;let{consumed:n,...r}=t;return this.write(r),r}record(e){this.write({...e,seq:0})}},xe=e({archiveFlaggedRuns:()=>Ie,archiveRun:()=>j,archiveRuns:()=>Pe,collectFlowRuns:()=>ze,deleteRun:()=>M,deleteRuns:()=>Fe,flowSteps:()=>Re,generateRunId:()=>E,latestRun:()=>V,listArchivedRuns:()=>B,listRuns:()=>z,markRunArchived:()=>A,readFlowRecord:()=>F,readRawRecord:()=>N,reconcileRun:()=>P,resumeRun:()=>je,runDirFor:()=>k,runResult:()=>w,startRun:()=>Ae,unarchiveRun:()=>Le,watchRun:()=>T,writeFlowRecord:()=>I});const C=`CODER_FLOW_ATTACH`;function Se(){try{return me(`bun`,[`--version`],{stdio:`ignore`}).status===0}catch{return!1}}function Ce(e,t){if(!e.endsWith(`.ts`)||v.versions.bun||v.features.typescript)return;if(!Se())throw new d(`invalid-option`,`This flow is a TypeScript file (${e}) and this Node cannot run TypeScript.`,{hint:[`Upgrade to Node 23.6+ or install bun: https://bun.sh`,`Or write the flow as .mjs / .js`]});let n=me(`bun`,[u,...t],{stdio:`inherit`});v.exit(n.status??1)}function we(e){v.once(`SIGINT`,()=>{(async()=>{let{runId:t}=e,n=y.existsSync(_.join(k(t),yt));if(v.stderr.write(`\n[flow] Stopping run ${t}. No new tasks will dispatch.\n`),n){let t=e.runningIds();t.length&&v.stderr.write(`[flow] left running: ${t.join(`, `)}\n`)}else{let n=await St(t,e.runningIds());n.length&&v.stderr.write(`[flow] stopped tasks: ${n.join(`, `)}\n`)}v.stderr.write(`\n${oe([`Resume: coder flow resume ${t}`],ae)}\n`),e.requestStop(),v.exit(130)})()})}function Te(e){let t=_.join(k(e),`events.jsonl`),n=e=>{try{y.appendFileSync(t,`${JSON.stringify(e)}\n`,`utf8`)}catch{}};return{onStart:e=>we(e),onTaskStart:e=>n({kind:`task-start`,...e}),onTaskEnd:e=>n({kind:`task-end`,...e}),onGateStart:e=>n({kind:`gate-start`,...e}),onGate:e=>n({kind:`gate`,...e}),onLog:(e,t)=>n({kind:`log`,message:e,depth:t}),onFlowStart:e=>n({kind:`flow-start`,...e}),onReplay:e=>n({kind:`replay`,count:e})}}async function Ee(e){let t=v.env[C];if(t){delete v.env[C];try{await $(t,e,Te(t)),v.exit(0)}catch(e){Z(t,e instanceof Error?e.message:String(e)),v.exit(1)}}}function De(e,t,n){let r=k(e.runId);y.writeFileSync(_.join(r,`events.jsonl`),``,`utf8`);let i=y.openSync(_.join(r,`flow.log`),`a`),a=pe(v.execPath,[u,...t],{detached:!0,stdio:[`ignore`,i,i],env:{...v.env,[C]:e.runId}});return a.unref(),y.closeSync(i),{runId:e.runId,status:`running`,...n?{watch:T(e.runId,{bootPid:a.pid})}:{}}}async function Oe(e,t,n){try{return await n()}catch(n){if(!(n instanceof d)||n.code!==`flow-failed`)throw n;let r=t?`
2
+ [flow] dry-run ended early: a downstream step depends on real task output (stub it or run for real).`:``;throw new d(`flow-failed`,`[flow] ${e} ${n.runId} failed: ${n.message}${r}`,{runId:n.runId,hint:`Resume${e===`resume`?` again`:``}: coder flow resume ${n.runId}`})}}function ke(e,t){let n=e?F(e):V();if(!n)throw new d(`flow-failed`,e?`No flow run "${e}".`:t,{hint:`Run one: coder flow run <name>`});return n}async function Ae(e,t={},n={}){return t.argv&&(Ce(g(e,t.cwd?_.resolve(t.cwd):v.cwd()).path,t.argv),await Ee(t),!t.dryRun)?De(Y(e,t),t.argv,t.wait):Oe(`run`,t.dryRun,()=>Dt(e,t,n))}async function je(e,t={},n={}){let r=ke(e,`No flow runs to resume.`);return t.argv&&(Ce(r.script,t.argv),await Ee(t),!t.dryRun)?De(Y(``,t,r.runId),t.argv,t.wait):Oe(`resume`,t.dryRun,()=>$(r.runId,t,n))}function Me(e){let t=_.join(k(e),`events.jsonl`);return y.existsSync(t)?y.readFileSync(t,`utf8`).split(`
3
+ `).filter(Boolean).flatMap(e=>{try{return[JSON.parse(e)]}catch{return[]}}):[]}function w(e,t={}){let n=e?F(e):V();return n?{...n,steps:Re(n.runId,t.tail),journal:S(_.join(k(n.runId),`journal.jsonl`)).map(e=>({kind:e.kind,taskId:e.taskId,tokens:e.tokens})),events:Me(n.runId)}:null}function T(e,t={}){let n=ke(e,`No flow runs yet.`);return{record:n,events:wt(n.runId,t.bootPid,{tail:t.tail}),final(){let e=w(n.runId,{tail:0});if(!e)throw new d(`flow-failed`,`[flow] run ${n.runId} vanished while following.`,{hint:`Recent runs: coder flow list`});return e}}}function Ne(e){let t=F(e);if(!t)throw new d(`flow-failed`,`No flow run "${e}".`,{hint:`Recent runs: coder flow list`});if(t.status===`running`||t.status===`queued`)throw new d(`flow-failed`,`Run ${t.runId} is still running.`,{runId:t.runId,hint:`Stop it first: coder flow stop ${t.runId}`});return t}function Pe(e,t={}){if(t.allStopped){let e=z().filter(e=>e.status!==`running`&&e.status!==`queued`);for(let t of e)j(t);let t=e.map(e=>e.runId);return{archived:t,count:t.length}}if(!e)throw new d(`invalid-option`,`Missing run id.`,{hint:[`Archive one: coder flow archive <run-id>`,`Archive all stopped: coder flow archive --all-stopped`]});let n=Ne(e);return j(n),{runId:n.runId,archived:!0}}function Fe(e,t={}){if(t.allArchived){let e=B().filter(e=>M(e.runId)).map(e=>e.runId);return{deleted:e,count:e.length}}if(!e)throw new d(`invalid-option`,`Missing run id.`,{hint:[`Delete one: coder flow delete <run-id>`,`Delete all archived: coder flow delete --all-archived`]});let n=Ne(e);return{runId:n.runId,deleted:M(n.runId)}}function E(){return`flow-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}function D(){let e=o();return t(e)}function O(){return l()}function k(e){te(e,`flow run id`);let t=_.join(D(),e);if(y.existsSync(_.join(t,`flow.json`)))return t;let n=_.join(O(),e);return y.existsSync(_.join(n,`flow.json`))?n:t}function A(e){if(e.archived)return e;let t={...e,archived:!0,archivedAt:new Date().toISOString()};return I(k(e.runId),t),t}function j(e){let t=k(e.runId),n=_.join(O(),e.runId);return t!==n&&c(t,n),A(e)}function Ie(e){for(let t of e){let e=F(t);e&&j(e)}}function Le(e){let t=k(e.runId),n=_.join(D(),e.runId);t!==n&&c(t,n);let r={...e,archived:void 0,archivedAt:void 0};return I(k(e.runId),r),r}function M(e){let t=k(e);return y.existsSync(_.join(t,`flow.json`))?(y.rmSync(t,{recursive:!0,force:!0}),!0):!1}function N(e){if(!s(e))return null;let t=_.join(k(e),`flow.json`);if(!y.existsSync(t))return null;try{return JSON.parse(y.readFileSync(t,`utf8`))}catch{return null}}function P(e){return e.status!==`running`||!e.pid||Q(e)?e:(Z(e.runId,`orchestrator died`),N(e.runId)??e)}function F(e){let t=N(e);return t?P(t):null}function I(e,t){y.writeFileSync(_.join(e,`flow.json`),`${JSON.stringify(t,null,2)}\n`,`utf8`)}function L(e){let t=[];try{t=y.readdirSync(e)}catch{return[]}let n=[];for(let r of t)try{n.push(P(JSON.parse(y.readFileSync(_.join(e,r,`flow.json`),`utf8`))))}catch{}return n}const R=(e,t)=>String(t.startedAt).localeCompare(String(e.startedAt));function z(){let e=[];for(let t of L(D()))t.archived?j(t):e.push(t);return e.sort(R)}function B(e){let t=e?.migrate??!0,n=L(O()),r=new Set(n.map(e=>e.runId));for(let e of L(D()))e.archived&&!r.has(e.runId)&&n.push(t?j(e):e);return n.sort(R)}function V(){return[...z(),...B()].sort(R)[0]??null}function Re(e,t=`all`){if(t===0)return[];let r=S(_.join(k(e),`journal.jsonl`)).filter(e=>e.kind===`task`),i=n(v.cwd()),a=new Map(i.map(e=>[e.id,e])),o=e=>e?.name??e?.prompt?.replace(/\s+/g,` `).trim().slice(0,60)??null,s=r.map(e=>{let t=e.taskId?a.get(e.taskId):void 0;return{taskId:e.taskId??null,name:o(t),status:t?.status??e.result?.status??`?`,tokens:e.tokens??null}}),c=new Set(s.map(e=>e.taskId));for(let t of i)t.flowRunId===e&&!c.has(t.id)&&s.push({taskId:t.id,name:o(t),status:t.status,tokens:null});return t===`all`?s:s.slice(-t)}function ze(e={}){let t=e.limit===`all`?void 0:e.limit,n;if(e.archived)n=B();else{let e=[];n=z().filter(t=>t.status===`running`||t.status===`queued`||f(t.endedAt??t.startedAt)<=18e5||(A(t),e.push(t.runId),!1)),le(v.cwd(),e,{flows:!0})}let r=t===void 0?0:Math.max(0,n.length-t);return{runs:t===void 0?n:n.slice(0,t),clipped:r}}const Be=globalThis,H=Be.__coderFlowCtxALS??=new ve,U=Be.__coderFlowScopeALS??=new ve;function Ve(){return U.getStore()?.args}function He(){return H.getStore()?.integrationToken}function W(){return U.getStore()?.depth??0}var Ue=class{limit;active=0;queue=[];constructor(e){this.limit=e}async run(e){this.active<this.limit?this.active+=1:await new Promise(e=>this.queue.push(e));try{return await e()}finally{let e=this.queue.shift();e?e():--this.active}}};function We(e,t){return t?e?{input:e.input+t.input,cachedInput:e.cachedInput+t.cachedInput,output:e.output+t.output,total:e.total+t.total}:{...t}:e}function Ge(e,t){if(!t.tokens)return;let n=t.model??`default`;e.ledger[n]=We(e.ledger[n]??null,t.tokens)}function Ke(e){return!!e&&typeof e.safeParse==`function`}async function G(e){try{let t=await import(`zod`);if(typeof t.toJSONSchema==`function`)return t.toJSONSchema(e)}catch{}return null}async function qe(e){let t=await G(e);return`Reply with only a single JSON object ${t?`matching this JSON Schema:\n${JSON.stringify(t,null,2)}`:`matching the requested shape`}\nUse no prose or markdown fences. Return only the JSON object.`}function Je(e){let t=e.trim(),n=t.match(/```(?:json)?\s*([\s\S]*?)```/i);n&&(t=n[1].trim());let r=t.indexOf(`{`);if(r===-1)throw Error(`no JSON object found in reply`);let i=0,a=!1,o=!1;for(let e=r;e<t.length;e+=1){let n=t[e];if(a){o?o=!1:n===`\\`?o=!0:n===`"`&&(a=!1);continue}if(n===`"`)a=!0;else if(n===`{`)i+=1;else if(n===`}`&&(--i,i===0))return JSON.parse(t.slice(r,e+1))}throw Error(`unterminated JSON object in reply`)}function K(e,t){if(!Ke(e))return{ok:!0,data:t};let n=e.safeParse(t);if(n.success)return{ok:!0,data:n.data};let r=n.error?.issues??n.error?.errors??[];return{ok:!1,errors:Array.isArray(r)?r.map(e=>`${(e.path??[]).join(`.`)||`(root)`}: ${e.message}`).join(`; `):String(n.error)}}function Ye(e,t,n){return{cwd:t,engine:e.engine,model:e.model,effort:e.effort,mcp:e.mcp,permissions:n?.ceiling?re(e.name,e.permissions,n.ceiling):e.permissions,name:e.name,system:e.system,addDirs:e.addDirs,wait:!0,flowRunId:n?.runId}}function Xe(e,t){return{taskId:e,status:t.status,output:t.result?.finalMessage||t.result?.error?.message||``,tokens:t.result?.tokens??null,model:t.result?.model??t.model}}async function Ze(e,t,n){n?.running.add(t);try{if(o())return await a(`wait`,{taskId:t});let n=await ne(e,t);return{status:n.status,result:n.result,model:n.task.model??null,next:m(e,n)??null}}finally{n?.running.delete(t)}}async function Qe(e,t,n,r){let i=r?.cwd??v.cwd();if(o())await a(`steer`,{taskId:e,text:t,...n});else{let a=p(i,e);if(!a)throw new d(`invalid-option`,`No task "${e}".`);await se(a.cwd??i,a,t,{model:n.model,effort:n.effort,permissions:r?.ceiling&&n.permissions?re(a.name,n.permissions,r.ceiling):n.permissions})}return Xe(e,await Ze(i,e,r))}async function $e(e,t,n){let r=t.cwd?_.resolve(t.cwd):n?.cwd??v.cwd(),s=t.returns?await G(t.returns):null,c=t.returns&&!s?[t.system,await qe(t.returns)].filter(Boolean).join(`
4
+
5
+ `):t.system,l;for(;;){let u={prompt:e,...Ye(t,r,n),system:c,...s?{outputSchema:s}:{},...l?{engine:l,model:void 0,effort:void 0}:{}},d=o()?await a(`dispatch`,u):await ie({...u,onFallback:e=>ct(`${e.engine} failed to start. Falling back to ${e.next}. ${e.detail.replace(/\s+/g,` `).slice(0,140)}`)}),f=p(r,d.taskId),ee=f?i(f):void 0;n?.hooks.onTaskStart?.({taskId:d.taskId,name:t.name,prompt:e,engine:ee,depth:W()});let m=await Ze(r,d.taskId,n);if(m.next){let e=m.next;n?.hooks.onTaskEnd?.({taskId:d.taskId,status:`failed`,tokens:null}),l=e;continue}return Xe(d.taskId,m)}}async function et(e,t,n){if(n?.dryRun){v.stdout.write(`\n[dry-run] task${t.name?` (${t.name})`:``}:\n${e}\n`);let n={...t,returns:t.returns?`<schema>`:void 0};return v.stdout.write(`[dry-run] opts: ${JSON.stringify(n)}\n`),{taskId:`dry`,status:`completed`,output:`[dry-run]`,data:void 0,tokens:null,model:t.model??null}}let r=await $e(e,t,n);if(r.status!==`completed`){let e={...r,data:void 0};throw new d(`task-failed`,`Task ${r.taskId} ${r.status}: ${r.output||`no output`}`,{taskId:r.taskId,result:e})}let i=r.output,a=r.tokens,o;if(t.returns){let e;try{e=K(t.returns,Je(i))}catch(t){e={ok:!1,errors:t instanceof Error?t.message:String(t)}}if(e.ok)o=e.data;else{let s=`Your previous reply did not match the required format: ${e.errors}\n\nReply again with the required JSON object.`,c=await Qe(r.taskId,s,{},n);i=c.output||i,a=We(a,c.tokens);try{let e=K(t.returns,Je(i));if(!e.ok)throw Error(e.errors);o=e.data}catch(e){let t={taskId:r.taskId,status:`completed`,output:i,data:void 0,tokens:a,model:r.model};throw new d(`task-failed`,`Task ${r.taskId} produced no valid structured output: ${e instanceof Error?e.message:String(e)}`,{taskId:r.taskId,result:t})}}}return{taskId:r.taskId,status:`completed`,output:i,data:o,tokens:a,model:r.model}}async function tt(e){if(e)return await G(e)??`<schema>`}async function nt(e,t={}){let n=H.getStore();if(!n)return et(e,t);let r={prompt:e,agent:t.engine,model:t.model,effort:t.effort,...t.mcp===void 0?{}:{mcp:t.mcp},permissions:t.permissions,name:t.name,system:t.system,resume:void 0,cwd:t.cwd,...t.addDirs?.length?{addDirs:t.addDirs}:{},returns:await tt(t.returns)},i=x(`task`,ye(r)),a=n.journal.replay(i,x(`task`,r));if(a)return a.result;if(n.taskCount+=1,n.taskCount>n.maxTasks)throw Error(`Flow exceeded --max-tasks (${n.maxTasks}). Raise it with --max-tasks, or fix a runaway loop; the run is resumable.`);return n.semaphore.run(async()=>{let r=new Date().toISOString(),a;try{a=await et(e,t,n)}catch(e){let t=e instanceof d?e.result:void 0;throw t&&n.hooks.onTaskEnd?.({taskId:t.taskId,status:t.status===`completed`?`failed`:t.status,tokens:t.tokens}),e}return Ge(n,a),n.dryRun||n.hooks.onTaskEnd?.({taskId:a.taskId,status:a.status,tokens:a.tokens}),n.journal.record({kind:`task`,fingerprint:i,result:a,taskId:a.taskId,tokens:a.tokens,startedAt:r,endedAt:new Date().toISOString()}),a})}async function rt(e,t,n={}){let r=H.getStore(),i=async()=>{if(r?.dryRun)return v.stdout.write(`\n[dry-run] steer ${e}:\n${t}\n`),{taskId:e,status:`completed`,output:`[dry-run]`,tokens:null,model:n.model??null};let i=await Qe(e,t,n,r);if(i.status!==`completed`)throw new d(`task-failed`,`Task ${e} ${i.status}: ${i.output||`no output`}`,{taskId:e,result:i});return i};if(!r)return i();let a=x(`steer`,ye({taskId:e,text:t,...n})),o=r.journal.replay(a);if(o)return o.result;if(r.taskCount+=1,r.taskCount>r.maxTasks)throw Error(`Flow exceeded --max-tasks (${r.maxTasks}). Raise it with --max-tasks, or fix a runaway loop; the run is resumable.`);return r.semaphore.run(async()=>{let e=new Date().toISOString(),t=await i();return Ge(r,t),r.dryRun||r.hooks.onTaskEnd?.({taskId:t.taskId,status:t.status,tokens:t.tokens}),r.journal.record({kind:`task`,fingerprint:a,result:t,taskId:t.taskId,tokens:t.tokens,startedAt:e,endedAt:new Date().toISOString()}),t})}const q=262144;function it(e){let t=[];for(let n=e;;){t.push(_.join(n,`node_modules`,`.bin`));let e=_.dirname(n);if(e===n)break;n=e}let n=v.platform===`win32`?`;`:`:`;return{...v.env,PATH:[...t,v.env.PATH??``].join(n)}}async function at(e,t){return new Promise(n=>{let r=pe(e,{shell:!0,cwd:t,env:it(t)}),i=``,a=e=>{i.length>=q||(i+=e,i.length>=q&&(i=`${i.slice(0,q)}\n... [gate output truncated]`))};r.stdout?.on(`data`,a),r.stderr?.on(`data`,a),r.on(`error`,e=>n({ok:!1,code:1,output:String(e.message??e).trim()})),r.on(`close`,e=>n({ok:e===0,code:e??0,output:i.trim()}))})}async function ot(e,t={}){let n=H.getStore(),r=t.cwd?_.resolve(t.cwd):n?.cwd??v.cwd();if(!n)return at(e,r);let i=x(`gate`,{cmd:e,cwd:t.cwd}),a=n.journal.replay(i);if(a)return a.result;if(n.dryRun){v.stdout.write(`\n[dry-run] gate: ${e}\n`);let t={ok:!0,code:0,output:``};return n.journal.record({kind:`gate`,fingerprint:i,result:t,startedAt:new Date().toISOString(),endedAt:new Date().toISOString()}),t}let o=new Date().toISOString(),s=`gate-${v.pid}-${ge()}`,c=W();n.hooks.onGateStart?.({gateId:s,cmd:e,depth:c});let l=await at(e,r);return n.hooks.onGate?.({gateId:s,cmd:e,ok:l.ok,code:l.code,depth:c}),n.journal.record({kind:`gate`,fingerprint:i,result:l,startedAt:o,endedAt:new Date().toISOString()}),l}async function st(e,...t){return Promise.all(e.map(async(e,n)=>{let r=e;for(let i of t)try{r=await i(r,e,n)}catch{return null}return r}))}function ct(e){let t=H.getStore();if(t)try{y.appendFileSync(_.join(t.runDir,`flow.log`),`${JSON.stringify({at:new Date().toISOString(),message:e})}\n`,`utf8`)}catch{}t?.hooks.onLog?t.hooks.onLog(e,W()):(v.stderr.isTTY||!t)&&v.stderr.write(`[flow] ${e}\n`)}const lt=ue(import.meta.url);function ut(e){let t=_.dirname(de(import.meta.url));for(;_.basename(t)!==`dist`&&_.dirname(t)!==t;)t=_.dirname(t);return _.basename(t)===`dist`?fe(_.join(t,e)).href:null}function dt(e){if(!(e===`@wular/coder`||e===`@wular/coder/flow`||e===`zod`||e.startsWith(`zod/`)))return null;try{return fe(lt.resolve(e)).href}catch{}return e===`@wular/coder/flow`?ut(`flow/index.js`):e===`@wular/coder`?ut(`sdk.js`):null}const ft=/(\bfrom\s+|\bimport\s+|\bimport\s*\(\s*)(['"])([^'"]+)\2/g;function pt(e){return e.replace(ft,(e,t,n,r)=>{let i=dt(r);return i?`${t}${n}${i}${n}`:e})}async function mt(e){let t=U.getStore(),n=t.imports??={dirs:new Set,node:!1};if(v.versions?.bun){if(n.dirs.has(e))return;n.dirs.add(e);let{plugin:t}=await import(`bun`),r=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);t({name:`coder-flow:${e}`,setup(e){e.onLoad({filter:RegExp(`^${r}/(?!.*node_modules/).*\\.m?[jt]sx?$`)},e=>({contents:pt(y.readFileSync(e.path,`utf8`)),loader:_.extname(e.path).replace(/^\.m?/,``)}))}});return}if(n.node)return;n.node=!0;let{register:r}=await import(`node:module`),i=Object.fromEntries([`@wular/coder`,`@wular/coder/flow`,`zod`].flatMap(e=>{let t=dt(e);return t?[[e,t]]:[]})),a=`const urls = ${JSON.stringify(i)}, parent = ${JSON.stringify(import.meta.url)};
6
+ export function resolve(spec, ctx, next) {
7
+ if (urls[spec]) return { url: urls[spec], shortCircuit: true };
8
+ return next(spec, spec.startsWith('zod/') ? { ...ctx, parentURL: parent } : ctx);
9
+ }`;r(`data:text/javascript,${encodeURIComponent(a)}`)}async function ht(e,t,n){try{return await import(fe(e).href)}catch(e){let r=e instanceof Error?e.message:String(e);throw t===`.ts`&&!v.versions?.bun&&/Unknown file extension|Unexpected token|SyntaxError|Cannot parse|import type|interface/i.test(r)?Error(`Could not run ${_.basename(n)}: TypeScript flows need bun. Run under \`bun\`, or write the flow as .mjs/.js.`):e}}async function gt(e){if(!y.existsSync(e))throw Error(`Cannot read flow file: ${e}`);return await mt(_.dirname(e)),ht(e,_.extname(e),e)}async function J(e,t){let n=U.getStore();n.args=t??{};let r=await gt(e),i=H.getStore();i?.flowConcurrency&&!n.depth&&typeof r.concurrency==`number`&&(i.semaphore.limit=Math.max(1,r.concurrency),I(i.runDir,{...F(i.runId),concurrency:i.semaphore.limit}));let a=r.args,o=n.args;if(Ke(a)){let e=a.safeParse(t??{});if(!e.success){let e=K(a,t??{});throw Error(`Invalid flow args: ${e.errors??`validation failed`}`)}o=e.data,n.args=o}let s=r.default;return typeof s==`function`?s(o):s}async function _t(e,t){let n=H.getStore(),r=n?.cwd??v.cwd(),i=g(e,r);if(!n)return U.run({args:t??{},depth:0},()=>J(i.path,t));let a=U.getStore();if(a&&a.depth>=1)throw Error(`flow("${e}") nesting is one level deep; a sub-flow cannot call flow().`);let o=x(`flow`,{name:i.name,args:t??{}}),s=n.journal.replay(o);if(s)return s.result;let c=new Date().toISOString();n.hooks.onFlowStart?.({name:i.name,depth:(a?.depth??0)+1});let l=await U.run({args:t??{},depth:(a?.depth??0)+1,imports:a?.imports},()=>J(i.path,t));return n.journal.record({kind:`flow`,fingerprint:o,result:l,startedAt:c,endedAt:new Date().toISOString()}),l}var vt=e({STOP_KEEP_TASKS_MARKER:()=>yt,markRunFailed:()=>Z,orchestratorAlive:()=>Q,pidAlive:()=>bt,prepareRun:()=>Y,resumeFlow:()=>$,runFlowByName:()=>Dt,stopFlowTasks:()=>St,stopRun:()=>Ct,streamFlowCore:()=>wt});function Y(e,t={},n){let r,i,a;if(n){let e=F(n);if(!e)throw Error(`No flow run "${n}".`);e.archived&&Le(e),r=e.name,i=e.script,a=t.args??e.args}else{let n=g(e,t.cwd?_.resolve(t.cwd):v.cwd());r=n.name,i=n.path,a=t.args??{}}let o=n??t.runId??E(),s=k(o);y.mkdirSync(s,{recursive:!0});let c={runId:o,name:r,script:i,args:a,status:`running`,startedAt:new Date().toISOString(),concurrency:Math.max(1,t.concurrency??_e.cpus().length),maxTasks:Math.max(1,t.maxTasks??_e.cpus().length*10),taskCount:0,ledger:{}};return I(s,c),c}function X(e,t,n){I(e,{...t,endedAt:new Date().toISOString(),pid:void 0,pidStartedAt:void 0,...n})}function Z(e,t){let n=N(e);!n||n.status!==`running`||X(k(e),n,{status:`failed`,error:t})}const yt=`stop-keep-tasks`;function bt(e){try{return v.kill(e,0),!0}catch{return!1}}function Q(e){if(!e.pid||!bt(e.pid))return!1;let t=ee(e.pid),n=Date.parse(e.pidStartedAt??``);return t===null||!Number.isFinite(n)||t<=n+6e4}function xt(e){let t=n(v.cwd()),r=new Map(t.map(e=>[e.id,e])),i=new Set(t.filter(t=>t.flowRunId===e).map(e=>e.id));for(let t of S(_.join(k(e),`journal.jsonl`)))t.kind===`task`&&t.taskId&&i.add(t.taskId);return[...i].filter(e=>{let t=r.get(e);return!!t&&!h.includes(t.status)})}async function St(e,t=[]){let n=v.cwd(),r=[];for(let i of new Set([...xt(e),...t])){let e=p(n,i);if(!(!e||h.includes(e.status)))try{await ce(n,e),r.push(i)}catch{}}return r}async function Ct(e,t={}){let n=e?F(e):V();if(!n)throw new d(`flow-failed`,e?`No flow run "${e}".`:`No flow runs.`,{hint:`Run one: coder flow run <name>`});if(n.status!==`running`)throw new d(`flow-failed`,`Run ${n.runId} is not running.`,{runId:n.runId,hint:`Result: coder flow result ${n.runId}`});let r=k(n.runId);if(!Q(n))return X(r,n,{status:`failed`,error:`orchestrator died`}),{runId:n.runId,status:`failed`,stoppedTasks:[],keptTasks:xt(n.runId)};let i=xt(n.runId),a=_.join(r,yt);t.keepTasks&&y.writeFileSync(a,``,`utf8`);try{v.kill(n.pid,`SIGINT`);let e=F(n.runId);for(let t=0;t<25&&e?.status===`running`;t+=1)await new Promise(e=>setTimeout(e,200)),e=F(n.runId);if(!e||e.status===`running`)throw new d(`flow-failed`,`Run ${n.runId} did not stop within 5s.`,{runId:n.runId,hint:`Check it: coder flow result ${n.runId}`});let t=v.cwd(),r=[],a=[];for(let e of i){let n=p(t,e);n&&(n.status===`cancelled`?r.push(e):h.includes(n.status)||a.push(e))}return{runId:n.runId,status:e.status,stoppedTasks:r,keptTasks:a}}finally{if(t.keepTasks)try{y.unlinkSync(a)}catch{}}}async function*wt(e,t,n={}){let i=_.join(k(e),`events.jsonl`),a=n.tail??`all`,o=0;if(a!==`all`)try{o=Math.max(0,y.readFileSync(i,`utf8`).split(`
10
+ `).length-1-a)}catch{}let s=r(i),c=()=>{let e=[];for(let t of s()){if(o>0){--o;continue}try{e.push(JSON.parse(t))}catch{}}return e},l=F(e);for(;!l||l.status===`running`;){yield*c();let n=l?.pid?!Q(l):t!==void 0&&!bt(t);if(l&&(l.pid||t!==void 0)&&n){Z(e,`orchestrator died`);break}await new Promise(e=>setTimeout(e,400)),l=F(e)??l}yield*c()}function Tt(e,t,n,r){let i={...Y(e,t,r),pid:v.pid,pidStartedAt:new Date().toISOString()},{runId:a}=i,o=k(a);I(o,i);let s=_.join(o,`journal.jsonl`),c=r?S(s):[],l=new be(c,s),u={runId:a,runDir:o,cwd:t.cwd?_.resolve(t.cwd):v.cwd(),journal:l,semaphore:new Ue(i.concurrency),flowConcurrency:t.concurrency===void 0,maxTasks:i.maxTasks,dryRun:t.dryRun??!1,ledger:{},running:new Set,taskCount:0,stopping:!1,hooks:n,...t.integrationToken?{integrationToken:t.integrationToken}:{},...t.ceiling?{ceiling:t.ceiling}:{}};return{started:{runId:a,runDir:o,ctx:u,markStopped:()=>{u.stopping=!0,X(o,i,{status:`stopped`,concurrency:u.semaphore.limit,taskCount:u.taskCount,ledger:u.ledger})}},args:i.args,name:i.name,replayable:c.length}}async function Et(e,t,n,r){let{ctx:i,runDir:a,runId:o}=e,s=F(o);try{let e=await H.run(i,()=>U.run({args:r??{},depth:0},()=>J(t,r)));return X(a,s,{status:`completed`,concurrency:i.semaphore.limit,taskCount:i.taskCount,ledger:i.ledger,result:e}),{runId:o,name:n,status:`completed`,result:e,tokens:i.ledger,taskCount:i.taskCount}}catch(e){throw i.stopping||X(a,s,{status:`failed`,concurrency:i.semaphore.limit,taskCount:i.taskCount,ledger:i.ledger,error:e instanceof Error?e.message:String(e)}),e instanceof d&&(e.code===`chain-exhausted`||e.code===`approval-pending`)?(e.runId??=o,e):new d(`flow-failed`,e instanceof Error?e.message:String(e),{runId:o})}}async function Dt(e,t={},n={}){let{started:r}=Tt(e,t,n),i=F(r.runId).script;return n.onStart?.({runId:r.runId,requestStop:r.markStopped,runningIds:()=>[...r.ctx.running]}),Et(r,i,F(r.runId).name,t.args??{})}async function $(e,t={},n={}){let{started:r,args:i,name:a,replayable:o}=Tt(``,t,n,e),s=F(e).script;return n.onStart?.({runId:e,requestStop:r.markStopped,runningIds:()=>[...r.ctx.running]}),o&&n.onReplay?.(o),Et(r,s,a,i)}export{T as S,F as _,He as a,xe as b,ot as c,rt as d,nt as f,E as g,Fe as h,Ct as i,ct as l,ze as m,Dt as n,Ve as o,Pe as p,St as r,_t as s,vt as t,st as u,je as v,Ae as x,w as y};
@@ -1,4 +1,4 @@
1
- import{L as e,R as t}from"../../dispatch-BKeAch9E.js";import{a as n}from"../../executor-BvAA7Cgw.js";import r from"node:path";import{existsSync as i,readFileSync as a,realpathSync as o}from"node:fs";import{execFileSync as s}from"node:child_process";import{createHash as c}from"node:crypto";import*as l from"zod";import{CoderError as u,task as d}from"@wular/coder/flow";const f=l.object({pr:l.union([l.number(),l.string()]).optional(),base:l.string().optional(),head:l.string().optional(),since:l.string().optional(),post:l.boolean().optional(),author:l.string().optional(),path:l.array(l.string()).optional(),exclude:l.array(l.string()).optional(),engine:l.string().optional(),model:l.string().optional(),effort:l.enum([`low`,`medium`,`high`]).optional(),cwd:l.string().optional()}),p=4,m=l.enum([`critical`,`major`,`minor`,`nit`]),h=l.enum([`correctness`,`security`,`reliability`,`performance`,`maintainability`,`testing`,`documentation`]),g=l.strictObject({file:l.string(),line:l.number().int().positive(),severity:m,category:h,summary:l.string(),failure_scenario:l.string()}),_={critical:0,major:1,minor:2,nit:3};function v(e){return(t,n,r)=>s(t,n,{cwd:e,input:r,encoding:`utf8`,maxBuffer:67108864,stdio:[`pipe`,`pipe`,`pipe`]})}function y(e){let t=new Map,n=``;for(let r of e.split(`
1
+ import{I as e,L as t}from"../../dispatch-YW1aqjEg.js";import{a as n}from"../../executor-HWnIIYUL.js";import r from"node:path";import{existsSync as i,readFileSync as a,realpathSync as o}from"node:fs";import{execFileSync as s}from"node:child_process";import{createHash as c}from"node:crypto";import*as l from"zod";import{CoderError as u,task as d}from"@wular/coder/flow";const f=l.object({pr:l.union([l.number(),l.string()]).optional(),base:l.string().optional(),head:l.string().optional(),since:l.string().optional(),post:l.boolean().optional(),author:l.string().optional(),path:l.array(l.string()).optional(),exclude:l.array(l.string()).optional(),engine:l.string().optional(),model:l.string().optional(),effort:l.enum([`low`,`medium`,`high`]).optional(),cwd:l.string().optional()}),p=4,m=l.enum([`critical`,`major`,`minor`,`nit`]),h=l.enum([`correctness`,`security`,`reliability`,`performance`,`maintainability`,`testing`,`documentation`]),g=l.strictObject({file:l.string(),line:l.number().int().positive(),severity:m,category:h,summary:l.string(),failure_scenario:l.string()}),_={critical:0,major:1,minor:2,nit:3};function v(e){return(t,n,r)=>s(t,n,{cwd:e,input:r,encoding:`utf8`,maxBuffer:67108864,stdio:[`pipe`,`pipe`,`pipe`]})}function y(e){let t=new Map,n=``;for(let r of e.split(`
2
2
  `)){r.startsWith(`+++ `)&&(n=r.slice(4).replace(/^b\//,``).split(` `)[0]);let e=r.match(/^@@ -\d+(?:,\d+)? \+(\d+)(?:,(\d+))? @@/);if(!e||n===`/dev/null`)continue;let i=Number(e[1]),a=e[2]===void 0?1:Number(e[2]);a>0&&t.set(n,[...t.get(n)??[],[i,i+a-1]])}return t}function b(e,t,n){return c(`sha1`).update(`${e}\n${t}\n${n}`).digest(`hex`)}function x(e,t,n){try{let r=e(`git`,[`show`,`${t}:${n}`]);return r.length>32e3?`${r.slice(0,32e3)}\n[truncated]`:r}catch{return}}function S(e,t){return`## Repository rules\n\n${[[`AGENTS.md`,x(e,t,`AGENTS.md`)],[`CLAUDE.md`,x(e,t,`CLAUDE.md`)],[`.coder/review.md`,x(e,t,`.coder/review.md`)]].filter(([,e])=>e?.trim()).map(([e,t])=>`### ${e}\n\n${t.trim()}`).join(`
3
3
 
4
4
  `)||`(none found)`}`}function C(e){for(let t of[[`symbolic-ref`,`--short`,`refs/remotes/origin/HEAD`],[`rev-parse`,`--verify`,`origin/main`],[`rev-parse`,`--verify`,`origin/master`]])try{return e(`git`,t),e(`git`,[`merge-base`,`HEAD`,t[0]===`symbolic-ref`?e(`git`,t).trim():t[2]]).trim()}catch{}throw new u(`invalid-option`,`Could not detect origin default branch; pass base.`)}const ee={low:`report only confirmed critical or major defects.`,medium:`report confirmed defects of any severity a maintainer would act on.`,high:`also report minor issues and maintainability nits, each verified against the repository.`};async function te(t,n,r,i){if(n.pr===void 0){let e=t(`git`,[`rev-parse`,n.head??`HEAD`]).trim();return{baseSha:n.base?t(`git`,[`rev-parse`,n.base]).trim():C(t),headSha:e,...n.since?{since:n.since}:{}}}let a={pr:n.pr,cwd:r,...n.since?{since:n.since}:{},...n.author?{author:n.author}:{}};return w(i)?e(`review`,{op:`resolveTarget`,input:a}):U(a,i)}function w(e){return!!t()&&!e.token&&!e.exec}const T=e=>[`--`,...e.include.map(e=>`:(top)${e}`),...e.exclude.map(e=>`:(top,exclude)${e}`)];function E(e,t){return!t||e.startsWith(t)?e.slice(t.length):!e||t.startsWith(`${e}/`)?``:void 0}function ne(e,t,n,i){let o=new Map;for(let s of e(n,[`ls-files`,`--others`,`--exclude-standard`,`--full-name`,`-z`,...T(n)]).split(`\0`)){if(s.endsWith(`/`)){i.push(`Skipped ${n.prefix}${s.slice(0,-1)} because it is a nested repository, not a submodule.`);continue}let e=``;try{s&&(e=a(r.join(t,n.prefix,s),`utf8`))}catch{}let c=e?e.split(`
@@ -1,2 +1,2 @@
1
- import { C as FlowTaskResult, S as FlowTaskOptions, _ as task, g as pipeline, h as log, m as gate, n as flowSdk, o as CoderError, p as flow, t as args, w as GateResult, x as FlowStep, y as FlowEvent } from "../index-CZjFX5zV.js";
2
- export { CoderError, type FlowEvent, type FlowStep, type FlowTaskOptions, type FlowTaskResult, type GateResult, args, flowSdk as default, flowSdk, flow, gate, log, pipeline, task };
1
+ import { C as FlowStep, E as GateResult, S as FlowSteerOptions, T as FlowTaskResult, _ as steer, b as FlowEvent, g as pipeline, h as log, m as gate, n as flowSdk, o as CoderError, p as flow, t as args, v as task, w as FlowTaskOptions } from "../index-Xe8n_t2Z.js";
2
+ export { CoderError, type FlowEvent, type FlowSteerOptions, type FlowStep, type FlowTaskOptions, type FlowTaskResult, type GateResult, args, flowSdk as default, flowSdk, flow, gate, log, pipeline, steer, task };
@@ -1 +1 @@
1
- import{xt as e}from"../dispatch-BKeAch9E.js";import{n as t}from"../discover-Dvr_3_Xr.js";import{_ as n,b as r,c as i,d as a,f as o,i as s,l as c,m as l,o as u,p as d,s as f,u as p,v as m,x as h}from"../executor-BvAA7Cgw.js";const g=new Proxy({},{get(e,t){return u()?.[t]},has(e,t){let n=u();return n!=null&&t in Object(n)},ownKeys(){let e=u();return e?Reflect.ownKeys(Object(e)):[]},getOwnPropertyDescriptor(e,t){let n=u();if(n!=null&&t in Object(n))return{enumerable:!0,configurable:!0,value:n[t]}}}),_={run(e,t={}){return r(e,t)},list(e={}){return d(e).runs},discover(e){return t(e??process.cwd())},result(e,t={}){return m(e,t)},stream(e,t={}){return h(e,t).events},stop(e,t={}){return s(e,t)},resume(e,t={}){return n(e,t)},archive:o,delete:l};export{e as CoderError,g as args,_ as default,_ as flowSdk,f as flow,i as gate,c as log,p as pipeline,a as task};
1
+ import{St as e}from"../dispatch-YW1aqjEg.js";import{n as t}from"../discover-CaAtyC0h.js";import{S as n,c as r,d as i,f as a,h as o,i as s,l as c,m as l,o as u,p as d,s as f,u as p,v as m,x as h,y as g}from"../executor-HWnIIYUL.js";const _=new Proxy({},{get(e,t){return u()?.[t]},has(e,t){let n=u();return n!=null&&t in Object(n)},ownKeys(){let e=u();return e?Reflect.ownKeys(Object(e)):[]},getOwnPropertyDescriptor(e,t){let n=u();if(n!=null&&t in Object(n))return{enumerable:!0,configurable:!0,value:n[t]}}}),v={run(e,t={}){return h(e,t)},list(e={}){return l(e).runs},discover(e){return t(e??process.cwd())},result(e,t={}){return g(e,t)},stream(e,t={}){return n(e,t).events},stop(e,t={}){return s(e,t)},resume(e,t={}){return m(e,t)},archive:d,delete:o};export{e as CoderError,_ as args,v as default,v as flowSdk,f as flow,r as gate,c as log,p as pipeline,i as steer,a as task};
@@ -0,0 +1 @@
1
+ import{s as e}from"./cli-msOzZFXW.js";const t=e(`flow`,{run:async()=>(await import(`./run-BFYg-zZt.js`)).commandRun,list:async()=>(await import(`./list-vKOTwd4G.js`)).commandList,ls:async()=>(await import(`./list-vKOTwd4G.js`)).commandList,discover:async()=>(await import(`./discover-bVM8EJEz.js`)).commandDiscover,result:async()=>(await import(`./result-C6ovl_Dn.js`)).commandResult,watch:async()=>(await import(`./watch-DDmHonTf.js`)).commandWatch,stream:async()=>(await import(`./watch-DDmHonTf.js`)).commandWatch,stop:async()=>(await import(`./stop-CD2JW6dI.js`)).commandStop,resume:async()=>(await import(`./resume-T_TXWfqE.js`)).commandResume,archive:async()=>(await import(`./archive-C3JazQuo.js`)).commandArchive,delete:async()=>(await import(`./delete-DNj3leWA.js`)).commandDelete},{menu:[{usage:`run <name|path> [--wait] [--args ...]`,blurb:`run a flow in the background (--wait to follow it live)`},{usage:`list`,blurb:`recent flow runs (by default running + just stopped)`},{usage:`discover`,blurb:`list flows runnable here (workspace + global)`},{usage:`result [run-id]`,blurb:`progress and result of a run`},{usage:`watch [run-id]`,blurb:`watch a run live (replay + follow)`},{usage:`stop [run-id]`,blurb:`stop a run and its still-running tasks`},{usage:`resume [run-id]`,blurb:`continue a stopped or edited run`},{usage:`archive <run-id> | --all-stopped`,blurb:`hide a run (or all stopped) from the list`},{usage:`delete <run-id> | --all-archived`,blurb:`delete a run's record (or all archived)`}],description:[`Orchestrate many coder tasks with a plain TypeScript file: dispatch, gates,`,`concurrency, journaling, and resume. Flows live in .coder/flows/ (workspace)`,"or ~/.coder/flows/ (global). See `coder docs flows`."]},{aliases:{stream:`watch`,ls:`list`},hint:`Run a flow: coder flow run <name>`});export{t as commandFlow};
@@ -0,0 +1,24 @@
1
+ import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{a as t,i as n,n as r,o as i}from"./local-B0GiaLV0.js";var a=e({ACTIONS_WORKFLOW_YAML:()=>o,GithubActionsRunner:()=>c});const o=`name: Coder agent
2
+ run-name: Coder agent \${{ inputs.task }}
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ task: { required: true, type: string }
7
+ server: { required: true, type: string }
8
+ token: { required: true, type: string }
9
+ mode: { required: true, type: string }
10
+ jobs:
11
+ run:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/setup-node@v4
15
+ with: { node-version: 22 }
16
+ - run: npm i -g @wular/coder @anthropic-ai/claude-code @openai/codex
17
+ ${n().map(e=>` - run: sudo sh -c '${e}'\n`).join(``)} - run: coder agent run --task "$TASK"
18
+ env:
19
+ TASK: \${{ inputs.task }}
20
+ CODER_SERVER: \${{ inputs.server }}
21
+ CODER_TASK_TOKEN: \${{ inputs.token }}
22
+ CODER_INBOX_MODE: \${{ inputs.mode }}
23
+ `,s=e=>t(e);var c=class{options;kind=`github-actions`;fetcher;constructor(e={}){this.options=e,this.fetcher=e.fetch??fetch}async request(e,t={},n=1e4){if(!this.options.token)throw Error(`RUNNER_CONFIG.token is required for github-actions`);let r=AbortSignal.timeout(n);for(let n=0;;n++){let i=await this.fetcher(`https://api.github.com${e}`,{...t,signal:r,redirect:`manual`,headers:{accept:`application/vnd.github+json`,authorization:`Bearer ${this.options.token}`,"content-type":`application/json`,"user-agent":`coder`,"x-github-api-version":`2022-11-28`,...t.headers}});if((t.method??`GET`)!==`GET`||n===2||i.status!==429&&i.status<500)return i;let a=Number(i.headers.get(`retry-after`));await i.body?.cancel(),await new Promise((e,t)=>{let i=()=>{clearTimeout(s),r.removeEventListener(`abort`,o)},o=()=>{i(),t(r.reason)},s=setTimeout(()=>{i(),e()},Number.isFinite(a)&&a>0?a*1e3:100*2**n);r.addEventListener(`abort`,o,{once:!0}),r.aborted&&o()})}}async start(e,t){let n=this.options.repo??(e.event?.repo&&`${e.event.repo.owner}/${e.event.repo.name}`);if(!n)throw Error(`The github-actions runner requires a repository`);let r=Date.now()+(this.options.lookupTimeoutMs??25e3),a=encodeURIComponent(this.options.workflow??`coder-agent.yml`),o=e.event?.repo,s=this.options.ref??(o&&`${o.owner}/${o.name}`===n?o.defaultBranch:void 0);if(!s){let e=await this.request(`/repos/${n}`,{},Math.max(1,r-Date.now()));if(!e.ok)throw Error(`GitHub repository lookup failed: ${e.status}`);let t=await e.json();if(!t.default_branch)throw Error(`GitHub repository has no default branch`);s=t.default_branch}let c=`/repos/${n}/actions/workflows/${a}/runs?event=workflow_dispatch&per_page=100&branch=${encodeURIComponent(s)}`,l=await this.request(c,{},Math.max(1,r-Date.now()));if(!l.ok)throw Error(`GitHub workflow run lookup failed: ${l.status}`);let u=await l.json(),d=Math.max(0,...u.workflow_runs.map(e=>e.id)),f=await this.request(`/repos/${n}/actions/workflows/${a}/dispatches`,{method:`POST`,body:JSON.stringify({ref:s,inputs:{task:e.id,server:t.CODER_SERVER,token:t.CODER_TASK_TOKEN,mode:t.CODER_INBOX_MODE}})},Math.max(1,r-Date.now()));if(f.status!==204)throw Error(`GitHub workflow dispatch failed: ${f.status}`);do{for(let t=1;Date.now()<r;t++){let a=await this.request(`${c}&page=${t}`,{},Math.max(1,r-Date.now()));if(!a.ok)throw Error(`GitHub workflow run lookup failed: ${a.status}`);let o=(await a.json()).workflow_runs.find(t=>t.id>d&&t.display_title===`Coder agent ${e.id}`);if(o)return i({repo:n,run:o.id});if(!a.headers.get(`link`)?.includes(`rel="next"`))break}await new Promise(e=>setTimeout(e,Math.min(this.options.pollIntervalMs??1e3,Math.max(0,r-Date.now()))))}while(Date.now()<r);throw Error(`GitHub workflow run for task ${e.id} was not found before timeout`)}async status(e){let{repo:t,run:n}=s(e),r=await this.request(`/repos/${t}/actions/runs/${n}`);if(r.status===404)return{state:`exited`,code:1};if(!r.ok)throw Error(`GitHub workflow status failed: ${r.status}`);let i=await r.json();return i.status===`completed`?{state:`exited`,code:i.conclusion===`success`?0:1}:{state:`running`}}async logs(e,t=-1){let{repo:n,run:i}=s(e),a=[];for(let e=1;;e++){let t=await this.request(`/repos/${n}/actions/runs/${i}/jobs?per_page=100&page=${e}`);if(!t.ok)throw Error(`GitHub workflow jobs failed: ${t.status}`);let r=await t.json();if(a.push(...r.jobs),!t.headers.get(`link`)?.includes(`rel="next"`))break}let o=[];for(let e of a.sort((e,t)=>e.id-t.id)){let r=await this.request(`/repos/${n}/actions/jobs/${e.id}/logs`);if(r.status===404)return{lines:[],next:t};if(r.status===302&&r.headers.get(`location`)){let e=await this.fetcher(r.headers.get(`location`),{redirect:`manual`,signal:AbortSignal.timeout(1e4)});if(!e.ok)throw Error(`GitHub job log download failed: ${e.status}`);o.push(await e.text())}else if(r.ok)o.push(await r.text());else throw Error(`GitHub job logs failed: ${r.status}`)}let c=r(o.join(`
24
+ `));return{lines:c.slice(t+1),next:Math.max(t,c.length-1)}}async stop(e){let{repo:t,run:n}=s(e),r=await this.request(`/repos/${t}/actions/runs/${n}/cancel`,{method:`POST`});if(r.status!==202&&r.status!==409)throw Error(`GitHub workflow cancellation failed: ${r.status}`)}};export{c as n,a as r,o as t};
@@ -0,0 +1 @@
1
+ import{a as e,o as t}from"./local-B0GiaLV0.js";import{Readable as n}from"node:stream";import{pipeline as r}from"node:stream/promises";function i(e,t=200,n={}){return new Response(JSON.stringify(e),{status:t,headers:{"content-type":`application/json`,...n}})}const a=e=>e.searchParams.has(`cursor`);function o(t){if(t)try{return e(t)}catch{return}}const s=e=>o(e.searchParams.get(`cursor`));function c(e,t=50,n=200){let r=Number(e.searchParams.get(`limit`)??t);return Number.isInteger(r)&&r>0?Math.min(r,n):t}function l(e,n,r){let i=e.slice(0,n);return{items:i,...e.length>n?{next:t(r(i.at(-1)))}:{}}}const u=(e,t=302)=>new Response(null,{status:t,headers:{location:e}}),d=()=>new Response(`Forbidden`,{status:403}),f=()=>new Response(`Not found`,{status:404}),p=()=>new Response(`Method not allowed`,{status:405}),m=e=>u(`/login?return=${encodeURIComponent(`${e.pathname}${e.search}`)}`),h=e=>e.startsWith(`/api/auth`)?65536:1048576;async function g(e,t,n){let r=Number(t??0);if(Number.isFinite(r)&&r>n)throw Object.assign(Error(`Payload too large`),{status:413});let i=[],a=0;for await(let t of e){if(a+=t.byteLength,a>n)throw Object.assign(Error(`Payload too large`),{status:413});i.push(t)}let o=new Uint8Array(a),s=0;for(let e of i)o.set(e,s),s+=e.byteLength;return o}function _(e){let t=new Headers;for(let[n,r]of Object.entries(e))r!==void 0&&t.set(n,Array.isArray(r)?r.join(`, `):r);return t}async function v(e,t,n){let r=e.url??`/`,i=await g(e,e.headers[`content-length`],t);return new Request(`http://${e.headers.host??`localhost`}${r}`,{method:e.method,headers:_(e.headers),body:i.byteLength?Buffer.from(i):void 0,signal:n})}function y(e,{limit:t,admit:i=()=>!0}){return async(a,o)=>{if(!i(a))return void o.writeHead(404).end(`Not found`);let s=new AbortController,c=()=>{a.socket.destroyed&&s.abort()};o.once(`close`,()=>s.abort()),c();try{let i=await e(await v(a,t(a.url??`/`),s.signal),a.socket.remoteAddress?.replace(/^::ffff:/,``));c();let l=Object.fromEntries(i.headers.entries()),u=i.headers.getSetCookie();u.length&&(l[`set-cookie`]=u),o.writeHead(i.status,l),i.body?await r(n.fromWeb(i.body),o).catch(()=>{}):o.end()}catch(e){if(o.headersSent)return void o.destroy();let t=typeof e==`object`&&e&&`status`in e;t||console.error(`coder server: request failed`,e);let n=t?e instanceof Error?e.message:String(e):`Internal server error`;o.writeHead(t?Number(e.status):500,{"content-type":`application/json`}),o.end(JSON.stringify({error:n}))}}}async function b(e,t){if(e.method===`GET`||e.method===`HEAD`||!e.body)return e;try{let n=await g(e.body,e.headers.get(`content-length`)??void 0,t);return new Request(e.url,{method:e.method,headers:e.headers,body:n.byteLength?Buffer.from(n):void 0,signal:e.signal})}catch(e){if(e.status===413)return new Response(`Payload too large`,{status:413});throw e}}export{i as a,p as c,c as d,a as f,d as i,f as l,m,s as n,b as o,u as p,o as r,y as s,h as t,l as u};