@wular/coder 0.3.18 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/README.md +18 -16
  2. package/bin/coder.mjs +3 -1
  3. package/dist/actions-Mk3FSlpJ.js +20 -0
  4. package/dist/adapter-B0oYCI0S.js +1 -0
  5. package/dist/adapter-BKVzTDnn.js +1 -0
  6. package/dist/adapter-DPInwbJG.js +1 -0
  7. package/dist/adapter-DaiJMOYo.js +1 -0
  8. package/dist/adapter-PeKziOUg.js +1 -0
  9. package/dist/add-BxpLHnvD.js +1 -0
  10. package/dist/add-CE-70LFs.js +1 -0
  11. package/dist/add-U-pty9qJ.js +6 -0
  12. package/dist/add-ej0X9e3a.js +1 -0
  13. package/dist/add-json-CEa-6luW.js +1 -0
  14. package/dist/agent-BsYx3Odz.js +3 -0
  15. package/dist/agent-JdtZozvP.js +1 -0
  16. package/dist/alias-DX-Bm86x.js +2 -0
  17. package/dist/app-BT5f7zL5.js +1 -0
  18. package/dist/approvals-C-AvFt6s.js +2 -0
  19. package/dist/approve-DOmpQRNd.js +2 -0
  20. package/dist/apps-CjfrZyM5.js +1 -0
  21. package/dist/archive-BUB8gFKD.js +4 -0
  22. package/dist/archive-BziJ1rQ-.js +3 -0
  23. package/dist/archive-sweep-CtBcARgN.js +1 -0
  24. package/dist/args-BOEEdpWk.js +1 -0
  25. package/dist/ask-dE3U3ss2.js +4 -0
  26. package/dist/auth-BFny--17.js +1 -0
  27. package/dist/auth-DWHIzqbA.js +1 -0
  28. package/dist/builtin/coder/agent.json +24 -0
  29. package/dist/builtin/coder/system.md +17 -0
  30. package/dist/chat-3Znsevah.js +1 -0
  31. package/dist/chat-B_yhNTo0.js +13 -0
  32. package/dist/chat-bridge-BS9WtP3X.js +2 -0
  33. package/dist/cli-BilSDkvE.js +9 -0
  34. package/dist/cli.d.ts +71 -1
  35. package/dist/cli.js +1 -91
  36. package/dist/client-D9IoAuDD.js +1 -0
  37. package/dist/config-Da_cwoxI.js +3 -0
  38. package/dist/create-C_iMJV4Y.js +1 -0
  39. package/dist/credentials-B1jv6dkg.js +1 -0
  40. package/dist/dash/manifest.json +3427 -0
  41. package/dist/dash/public/assets/apple-touch-icon.png +0 -0
  42. package/dist/dash/public/assets/chunks/agent-pills-69c965aae1737cef.js +1 -0
  43. package/dist/dash/public/assets/chunks/agent-settings-form-a1ce70812eea3f20.js +1 -0
  44. package/dist/dash/public/assets/chunks/agents-grid-f62180478e43c192.js +1 -0
  45. package/dist/dash/public/assets/chunks/badge-d07f35e9abc80e14.js +1 -0
  46. package/dist/dash/public/assets/chunks/card-be04148b64223a52.js +1 -0
  47. package/dist/dash/public/assets/chunks/combo-32c321a7a84fa902.js +1 -0
  48. package/dist/dash/public/assets/chunks/composer-aec9c3c691f1f79a.js +1 -0
  49. package/dist/dash/public/assets/chunks/composer-data-6f7608fed13f3dd7.js +1 -0
  50. package/dist/dash/public/assets/chunks/composer-e56860d72742379e.js +1 -0
  51. package/dist/dash/public/assets/chunks/confirm-b4e2c16aef4b3431.js +1 -0
  52. package/dist/dash/public/assets/chunks/connect-apps-a5a63941e287c33f.js +1 -0
  53. package/dist/dash/public/assets/chunks/connect-repositories-e4c049b5b4384623.js +1 -0
  54. package/dist/dash/public/assets/chunks/credentials-list-2b7d0c771b89f9c5.js +2 -0
  55. package/dist/dash/public/assets/chunks/custom-range-53b70e0d9eeae84e.js +1 -0
  56. package/dist/dash/public/assets/chunks/editor-691d2bcecb1ecb87.js +7 -0
  57. package/dist/dash/public/assets/chunks/engines-list-a5fe1671601ce3b0.js +1 -0
  58. package/dist/dash/public/assets/chunks/field-9e12e5fc8774b6e5.js +1 -0
  59. package/dist/dash/public/assets/chunks/format-eb03fc9d9744d960.js +1 -0
  60. package/dist/dash/public/assets/chunks/heads-4041a925d63ab116.js +1 -0
  61. package/dist/dash/public/assets/chunks/instructions-4e0d18b9b40edbd7.js +2 -0
  62. package/dist/dash/public/assets/chunks/instructions-b00959bd4bb70502.js +1 -0
  63. package/dist/dash/public/assets/chunks/list-d7eb9e02cf261fbe.js +1 -0
  64. package/dist/dash/public/assets/chunks/mcp-list-a450533109045ef5.js +1 -0
  65. package/dist/dash/public/assets/chunks/model-options-15c53331a2f28a4f.js +1 -0
  66. package/dist/dash/public/assets/chunks/models-list-1e273c6843858148.js +1 -0
  67. package/dist/dash/public/assets/chunks/paged-bc6fa0c2b9d52ed7.js +1 -0
  68. package/dist/dash/public/assets/chunks/platform-actions-87f3f76ec1b840cb.js +1 -0
  69. package/dist/dash/public/assets/chunks/runners-list-fc7cdae4fa93e78b.js +1 -0
  70. package/dist/dash/public/assets/chunks/runtime-246221e985d863e5-1.js +2 -0
  71. package/dist/dash/public/assets/chunks/segmented-6091dfb2f954799f.js +1 -0
  72. package/dist/dash/public/assets/chunks/select-dd09a6b9544cfde2.js +1 -0
  73. package/dist/dash/public/assets/chunks/sentinel-ff7143a47fd22835.js +1 -0
  74. package/dist/dash/public/assets/chunks/shared-init-246221e985d863e5-2.js +1 -0
  75. package/dist/dash/public/assets/chunks/shared-init-8f2ac936c95a7f7b.js +1 -0
  76. package/dist/dash/public/assets/chunks/shared-init-986901c810947c12.js +5 -0
  77. package/dist/dash/public/assets/chunks/shared-init-baceed9fd2d43661.js +2 -0
  78. package/dist/dash/public/assets/chunks/tail-5a5bfcd308535d70.js +1 -0
  79. package/dist/dash/public/assets/chunks/task-actions-7919ca0e901131f4.js +1 -0
  80. package/dist/dash/public/assets/chunks/task-fa8b82e95e771c4a.js +1 -0
  81. package/dist/dash/public/assets/chunks/task-view-e8a0f99c992fa11e.js +3 -0
  82. package/dist/dash/public/assets/chunks/tasks-list-7b72f5b295349532.js +1 -0
  83. package/dist/dash/public/assets/chunks/toolbar-9b18a5d26dee37c3.js +1 -0
  84. package/dist/dash/public/assets/chunks/versions-list-8cdf3a41c56b2152.js +1 -0
  85. package/dist/dash/public/assets/chunks/wular-pnext-246221e985d863e5-0.js +1 -0
  86. package/dist/dash/public/assets/connect-382b1729a7ae7808.css +1 -0
  87. package/dist/dash/public/assets/dash-9e02d5d1a6d42ee3.css +1 -0
  88. package/dist/dash/public/assets/dash-account-04859899c1838ada.css +1 -0
  89. package/dist/dash/public/assets/dash-agents-9e678137267dec07.css +1 -0
  90. package/dist/dash/public/assets/dash-agents-new-26fa27b17ef9b8d8.css +1 -0
  91. package/dist/dash/public/assets/dash-agents-param-slug-b975c48f8abf3444.css +1 -0
  92. package/dist/dash/public/assets/dash-agents-param-slug-edit-e13fda599bb04843.css +1 -0
  93. package/dist/dash/public/assets/dash-agents-param-slug-platforms-70292932cb27bc96.css +1 -0
  94. package/dist/dash/public/assets/dash-agents-param-slug-settings-71f9a86251723fcc.css +1 -0
  95. package/dist/dash/public/assets/dash-agents-param-slug-tasks-fb8eb2ed71006601.css +1 -0
  96. package/dist/dash/public/assets/dash-agents-param-slug-usage-7c8740f1cdd52c71.css +1 -0
  97. package/dist/dash/public/assets/dash-settings-8eb818da462227e8.css +1 -0
  98. package/dist/dash/public/assets/dash-settings-param-tab-849a1a9542e273f5.css +1 -0
  99. package/dist/dash/public/assets/dash-tasks-81e510e0b6931b42.css +1 -0
  100. package/dist/dash/public/assets/dash-tasks-param-id-bbd2a83342f2ec10.css +1 -0
  101. package/dist/dash/public/assets/dash-usage-8e0259e03eaed1bd.css +1 -0
  102. package/dist/dash/public/assets/favicon.ico +0 -0
  103. package/dist/dash/public/assets/favicon.svg +1 -0
  104. package/dist/dash/public/assets/fonts/LICENSE-fira-code +93 -0
  105. package/dist/dash/public/assets/fonts/fira-code-latin-400-normal-717ee080.woff2 +0 -0
  106. package/dist/dash/public/assets/fonts/fira-code-latin-500-normal-530b6706.woff2 +0 -0
  107. package/dist/dash/public/assets/fonts/fira-code-latin-700-normal-98730669.woff2 +0 -0
  108. package/dist/dash/public/assets/global-d2adbf01910d9df5.css +1 -0
  109. package/dist/dash/public/assets/login-c129b1ce237be260.css +1 -0
  110. package/dist/dash/public/assets/pnext-client-073464b8f422ef57.js +1 -0
  111. package/dist/dash/public/assets/pnext-client-0b6720fdec66eeb0.js +1 -0
  112. package/dist/dash/public/assets/pnext-client-1e9cb2f4f6387a87.js +1 -0
  113. package/dist/dash/public/assets/pnext-client-2f0e78dd006fed0f.js +1 -0
  114. package/dist/dash/public/assets/pnext-client-3c62e2aa2cbe9fe1.js +1 -0
  115. package/dist/dash/public/assets/pnext-client-43a88896ed42dd39.js +1 -0
  116. package/dist/dash/public/assets/pnext-client-4cf2e27d0b9c0365.js +1 -0
  117. package/dist/dash/public/assets/pnext-client-587008fa987d3073.js +1 -0
  118. package/dist/dash/public/assets/pnext-client-676360cc86f31573.js +1 -0
  119. package/dist/dash/public/assets/pnext-client-813427605f424145.js +1 -0
  120. package/dist/dash/public/assets/pnext-client-82de7cf6dfc35b98.js +1 -0
  121. package/dist/dash/public/assets/pnext-client-831e8004c09f0b5b.js +1 -0
  122. package/dist/dash/public/assets/pnext-client-9b557fe468a45ca3.js +1 -0
  123. package/dist/dash/public/assets/pnext-client-ab7c900c802fe827.js +1 -0
  124. package/dist/dash/public/assets/pnext-client-d87d00e402811f0c.js +1 -0
  125. package/dist/dash/public/assets/pnext-client-fbdb7c1da7eda7e5.js +1 -0
  126. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/boot-B2MFTRO2.js +28 -0
  127. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/build-tier-XJJSL5FR.js +2702 -0
  128. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-2HFY3DQT.js +206 -0
  129. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-2ICEVELW.js +832 -0
  130. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-3UPROT2C.js +33 -0
  131. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-4P5CMIYT.js +1580 -0
  132. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-4TKZKZ3Q.js +129 -0
  133. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-5RDEILQB.js +435 -0
  134. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-62KEQM43.js +23 -0
  135. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-6KQSWT6D.js +829 -0
  136. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-7DCNCW6O.js +722 -0
  137. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-B4THCTQP.js +20 -0
  138. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-C2LIV2MM.js +170 -0
  139. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-CCATPVTW.js +376 -0
  140. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-COXJAPTU.js +87 -0
  141. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-E6IXL2NJ.js +6268 -0
  142. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-FLGRBFAH.js +1196 -0
  143. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-FTJVHFWD.js +59 -0
  144. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-H523KSIH.js +5149 -0
  145. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-HT6KKX6A.js +18 -0
  146. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-JESFYECC.js +436 -0
  147. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-JRPJM2XY.js +15 -0
  148. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-L2IWDUXG.js +105 -0
  149. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-L5P4Y4UC.js +181 -0
  150. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-NQE46AZN.js +645 -0
  151. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-PA4QEARJ.js +127 -0
  152. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-PZ5AXOLW.js +7144 -0
  153. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-SNVPTULL.js +2395 -0
  154. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-T3QZT3PG.js +218 -0
  155. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-VC5O2SDP.js +70 -0
  156. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-WZX4V6CM.js +229 -0
  157. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-XUUIDXY5.js +625 -0
  158. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-ZHFDO3PR.js +263 -0
  159. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/compile-CE2DN7ZA.js +16 -0
  160. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/config-UREY7XJT.js +14 -0
  161. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/config-loader-UI2XE3PZ.js +15 -0
  162. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/entry.js +217 -0
  163. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/generate-I2PPTDFD.js +14 -0
  164. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/modules-UVOCE4C2.js +46 -0
  165. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/pipeline-UW47K537.js +961 -0
  166. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/proxy-ITGOVJBW.js +24 -0
  167. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/register-4SA55SWT.js +12577 -0
  168. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/router-JNKHLBCZ.js +503 -0
  169. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/routes-PD6J2NXW.js +52 -0
  170. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/tsconfig-defaults-ZXEH7RQK.js +13 -0
  171. package/dist/default-Bobztoxf.js +1 -0
  172. package/dist/default-vYPT26DR.js +1 -0
  173. package/dist/delete-D8gEwoOj.js +4 -0
  174. package/dist/delete-z1_86nf6.js +2 -0
  175. package/dist/disable-DVKd-0Xb.js +1 -0
  176. package/dist/discover-Df-a8K4R.js +3 -0
  177. package/dist/discover-Dvr_3_Xr.js +1 -0
  178. package/dist/dispatch-BKeAch9E.js +14 -0
  179. package/dist/docs-BX65z2Iu.js +2 -0
  180. package/dist/docs-DKJnqZqt.js +2 -0
  181. package/dist/enable-C8Zf_wpN.js +1 -0
  182. package/dist/env-CRf6wkM2.js +1 -0
  183. package/dist/exec-RZFLclKX.js +11 -0
  184. package/dist/executor-BvAA7Cgw.js +10 -0
  185. package/dist/flow/builtin/review.d.ts +157 -0
  186. package/dist/flow/builtin/review.js +19 -0
  187. package/dist/flow/index.d.ts +1 -1
  188. package/dist/flow/index.js +1 -1
  189. package/dist/flow-17k25MHt.js +1 -0
  190. package/dist/github-actions-DwUzm4hC.js +24 -0
  191. package/dist/http-Bkg_OQ6r.js +1 -0
  192. package/dist/{index-BQ-b77or.d.ts → index-DT7EST00.d.ts} +116 -238
  193. package/dist/init-CoMfFxbG.js +1 -0
  194. package/dist/integrations-5xCaXSd-.js +1 -0
  195. package/dist/integrations-BAgdVDhj.js +5 -0
  196. package/dist/lib/broker.js +3 -3
  197. package/dist/list-BAKvxSbh.js +4 -0
  198. package/dist/list-BYiG8Zav.js +2 -0
  199. package/dist/list-BxEywhHU.js +1 -0
  200. package/dist/list-C5w01-8q.js +1 -0
  201. package/dist/list-CIW2joV1.js +1 -0
  202. package/dist/list-DX-z3SBp.js +3 -0
  203. package/dist/list-DpCf4G-H.js +4 -0
  204. package/dist/list-VToARh3C.js +1 -0
  205. package/dist/load-BpEsAn51.js +2 -0
  206. package/dist/local-H3uvqEbq.js +1 -0
  207. package/dist/log-view-dg0TlKLA.js +1 -0
  208. package/dist/login-BFxX4jJy.js +1 -0
  209. package/dist/login-DkkslfBx.js +1 -0
  210. package/dist/logout-BHAtw4Z8.js +1 -0
  211. package/dist/maintenance-C5FklUw3.js +1 -0
  212. package/dist/match-CXAjDhg7.js +1 -0
  213. package/dist/mcp-BgKb2Cdk.js +1 -0
  214. package/dist/mcp-CCZOAo06.js +1 -0
  215. package/dist/mcp-server-DGzme0YX.js +1 -0
  216. package/dist/migrate-C4vM7DQN.js +2 -0
  217. package/dist/migrate-N-85_N7J.js +1 -0
  218. package/dist/model-Bs1StDo3.js +1 -0
  219. package/dist/models-_5LVGC3m.js +1 -0
  220. package/dist/output-BKeyLbvt.js +5 -0
  221. package/dist/prompt-CEuBMNhk.js +7 -0
  222. package/dist/push-CUC55Bqd.js +1 -0
  223. package/dist/queue-6io_NOP3.js +116 -0
  224. package/dist/refresh-BIrmrWYq.js +1 -0
  225. package/dist/remote-miQNTVRa.js +1 -0
  226. package/dist/remove-B93LNkZI.js +1 -0
  227. package/dist/remove-C5_xggx7.js +1 -0
  228. package/dist/remove-CuH8a3L9.js +1 -0
  229. package/dist/remove-eQ8y5C5p.js +1 -0
  230. package/dist/rename-CYfy03FE.js +1 -0
  231. package/dist/result-BEtQZHaY.js +5 -0
  232. package/dist/result-BzaM3inj.js +15 -0
  233. package/dist/resume-DYzKvyEw.js +3 -0
  234. package/dist/review-oIBeECZE.js +7 -0
  235. package/dist/rolldown-runtime-DT7IzrpZ.js +1 -0
  236. package/dist/rotate-key-IdMYH7gg.js +1 -0
  237. package/dist/run-BDYl0CKl.js +2 -0
  238. package/dist/run-CTtd0Znc.js +5 -0
  239. package/dist/run-CawRGnOg.js +2 -0
  240. package/dist/runner-D7ScbIHJ.js +1 -0
  241. package/dist/runner-sUpWJ_k0.js +1 -0
  242. package/dist/schema-CU2iFkp8.js +1 -0
  243. package/dist/sdk.d.ts +1166 -191
  244. package/dist/sdk.js +1 -1
  245. package/dist/serve-BTeomYxW.js +1 -0
  246. package/dist/serve-CE8YV2e9.js +1 -0
  247. package/dist/serve-CPnmrKyf.js +2 -0
  248. package/dist/serve-CQKZxzFE.js +4 -0
  249. package/dist/serve-GmRO89s5.js +12 -0
  250. package/dist/server-Kb22cWfF.js +1 -0
  251. package/dist/setup-host-GFTUzzZJ.js +6 -0
  252. package/dist/shared-DVtzWhUT.js +1 -0
  253. package/dist/show-CMUg8SJu.js +1 -0
  254. package/dist/show-COTZEYgc.js +1 -0
  255. package/dist/status-D26U--p8.js +1 -0
  256. package/dist/steer-C6uARLp5.js +4 -0
  257. package/dist/stop-BrGI3hSS.js +1 -0
  258. package/dist/stop-ByCAlbmN.js +3 -0
  259. package/dist/store-B94tSate.js +42 -0
  260. package/dist/store-DzqXS2wT.js +8 -0
  261. package/dist/task-C6VAg5WU.js +1 -0
  262. package/dist/task-CgOKgkEG.js +1 -0
  263. package/dist/task-DeglY79z.js +5 -0
  264. package/dist/test-NEbhlxvo.js +1 -0
  265. package/dist/tools-D0Zfs8Hx.js +1 -0
  266. package/dist/types-D0q15RJa.js +1 -0
  267. package/dist/types-Dve7Z0ZP.d.ts +389 -0
  268. package/dist/unalias-C9NqmSDq.js +1 -0
  269. package/dist/update-BTxYQj7Z.js +2 -0
  270. package/dist/upgrade-hA0yWBvx.js +2 -0
  271. package/dist/usage-BhqoCjvE.js +1 -0
  272. package/dist/usage-C4d9X2Uq.js +1 -0
  273. package/dist/watch-CSdj24ct.js +5 -0
  274. package/dist/watch-DtRuC0Wc.js +8 -0
  275. package/dist/wire-BeT1Axeo.js +1 -0
  276. package/dist/worker-CXndxmGF.js +9 -0
  277. package/dist/worker-DX7P9kWl.js +1 -0
  278. package/dist/workflow-Dcmdooi8.js +1 -0
  279. package/docs/agents/coder.md +26 -0
  280. package/docs/agents/index.md +120 -0
  281. package/docs/config.md +51 -30
  282. package/docs/dash.md +64 -0
  283. package/docs/flows.md +20 -15
  284. package/docs/mcp.md +62 -0
  285. package/docs/models.md +41 -23
  286. package/docs/review.md +41 -0
  287. package/docs/sdk.md +57 -38
  288. package/docs/self-host.md +188 -0
  289. package/migrations/0000_initial.sql +252 -0
  290. package/migrations/meta/0000_snapshot.json +1787 -0
  291. package/migrations/meta/_journal.json +13 -0
  292. package/package.json +37 -7
  293. package/plugins/agents/skills/coder/SKILL.md +14 -60
  294. package/plugins/claude/.claude-plugin/plugin.json +1 -1
  295. package/plugins/claude/commands/setup.md +2 -2
  296. package/plugins/claude/skills/dispatch/SKILL.md +14 -58
  297. package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
  298. package/plugins/cursor/README.md +5 -5
  299. package/plugins/cursor/assets/logo.png +0 -0
  300. package/plugins/cursor/skills/coder/SKILL.md +14 -59
  301. package/src/client/index.ts +573 -0
  302. package/src/client/types.ts +506 -0
  303. package/src/core/errors.ts +72 -0
  304. package/src/core/task/log-view.ts +173 -0
  305. package/src/server/auth/sign-in.ts +14 -0
  306. package/src/server/dash/api/load.ts +62 -0
  307. package/src/server/dash/api/types.ts +11 -0
  308. package/src/server/dash/app/connect/page.tsx +42 -0
  309. package/src/server/dash/app/dash/account/loading.tsx +11 -0
  310. package/src/server/dash/app/dash/account/notify.tsx +42 -0
  311. package/src/server/dash/app/dash/account/page.css +81 -0
  312. package/src/server/dash/app/dash/account/page.tsx +126 -0
  313. package/src/server/dash/app/dash/account/sign-out.tsx +24 -0
  314. package/src/server/dash/app/dash/agents/(list)/agent-menu.tsx +10 -0
  315. package/src/server/dash/app/dash/agents/(list)/agents-grid.tsx +143 -0
  316. package/src/server/dash/app/dash/agents/(list)/connect-apps.tsx +46 -0
  317. package/src/server/dash/app/dash/agents/(list)/loading.tsx +14 -0
  318. package/src/server/dash/app/dash/agents/(list)/page.css +72 -0
  319. package/src/server/dash/app/dash/agents/(list)/page.tsx +89 -0
  320. package/src/server/dash/app/dash/agents/[slug]/(tabs)/layout.tsx +135 -0
  321. package/src/server/dash/app/dash/agents/[slug]/(tabs)/loading.tsx +5 -0
  322. package/src/server/dash/app/dash/agents/[slug]/(tabs)/page.css +21 -0
  323. package/src/server/dash/app/dash/agents/[slug]/(tabs)/page.tsx +173 -0
  324. package/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/loading.tsx +18 -0
  325. package/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/page.css +87 -0
  326. package/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/page.tsx +258 -0
  327. package/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/platform-actions.tsx +111 -0
  328. package/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/agent-settings-form.css +114 -0
  329. package/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/agent-settings-form.tsx +294 -0
  330. package/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/loading.tsx +5 -0
  331. package/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/page.tsx +54 -0
  332. package/src/server/dash/app/dash/agents/[slug]/(tabs)/tasks/loading.tsx +5 -0
  333. package/src/server/dash/app/dash/agents/[slug]/(tabs)/tasks/page.tsx +14 -0
  334. package/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/loading.tsx +31 -0
  335. package/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/page.css +12 -0
  336. package/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/page.tsx +163 -0
  337. package/src/server/dash/app/dash/agents/[slug]/(tabs)/versions-list.tsx +53 -0
  338. package/src/server/dash/app/dash/agents/[slug]/edit/loading.tsx +31 -0
  339. package/src/server/dash/app/dash/agents/[slug]/edit/page.tsx +91 -0
  340. package/src/server/dash/app/dash/agents/agent/agent-pills.css +27 -0
  341. package/src/server/dash/app/dash/agents/agent/agent-pills.tsx +133 -0
  342. package/src/server/dash/app/dash/agents/agent/hero.css +40 -0
  343. package/src/server/dash/app/dash/agents/agent/hero.tsx +60 -0
  344. package/src/server/dash/app/dash/agents/agent/instructions.css +29 -0
  345. package/src/server/dash/app/dash/agents/agent/instructions.tsx +82 -0
  346. package/src/server/dash/app/dash/agents/editor/connect-repositories.ts +16 -0
  347. package/src/server/dash/app/dash/agents/editor/editor.css +263 -0
  348. package/src/server/dash/app/dash/agents/editor/editor.tsx +774 -0
  349. package/src/server/dash/app/dash/agents/editor/import-picker.css +48 -0
  350. package/src/server/dash/app/dash/agents/editor/import-picker.tsx +253 -0
  351. package/src/server/dash/app/dash/agents/editor/names.ts +35 -0
  352. package/src/server/dash/app/dash/agents/new/loading.tsx +25 -0
  353. package/src/server/dash/app/dash/agents/new/page.tsx +72 -0
  354. package/src/server/dash/app/dash/layout.css +265 -0
  355. package/src/server/dash/app/dash/layout.tsx +332 -0
  356. package/src/server/dash/app/dash/page.tsx +14 -0
  357. package/src/server/dash/app/dash/settings/[tab]/credentials-list.css +94 -0
  358. package/src/server/dash/app/dash/settings/[tab]/credentials-list.tsx +619 -0
  359. package/src/server/dash/app/dash/settings/[tab]/credentials.tsx +36 -0
  360. package/src/server/dash/app/dash/settings/[tab]/engines-list.css +16 -0
  361. package/src/server/dash/app/dash/settings/[tab]/engines-list.tsx +135 -0
  362. package/src/server/dash/app/dash/settings/[tab]/list.css +98 -0
  363. package/src/server/dash/app/dash/settings/[tab]/list.tsx +215 -0
  364. package/src/server/dash/app/dash/settings/[tab]/loading.tsx +6 -0
  365. package/src/server/dash/app/dash/settings/[tab]/mcp-list.css +43 -0
  366. package/src/server/dash/app/dash/settings/[tab]/mcp-list.tsx +290 -0
  367. package/src/server/dash/app/dash/settings/[tab]/models-list.tsx +513 -0
  368. package/src/server/dash/app/dash/settings/[tab]/page.tsx +89 -0
  369. package/src/server/dash/app/dash/settings/[tab]/runners-list.css +153 -0
  370. package/src/server/dash/app/dash/settings/[tab]/runners-list.tsx +457 -0
  371. package/src/server/dash/app/dash/settings/layout.tsx +50 -0
  372. package/src/server/dash/app/dash/settings/model-options.ts +117 -0
  373. package/src/server/dash/app/dash/settings/page.tsx +7 -0
  374. package/src/server/dash/app/dash/settings/settings-head.tsx +24 -0
  375. package/src/server/dash/app/dash/settings/tunnel-guide.tsx +28 -0
  376. package/src/server/dash/app/dash/tasks/[id]/activity.tsx +202 -0
  377. package/src/server/dash/app/dash/tasks/[id]/loading.tsx +31 -0
  378. package/src/server/dash/app/dash/tasks/[id]/page.tsx +30 -0
  379. package/src/server/dash/app/dash/tasks/[id]/task-actions.tsx +164 -0
  380. package/src/server/dash/app/dash/tasks/[id]/task-view.css +407 -0
  381. package/src/server/dash/app/dash/tasks/[id]/task-view.tsx +513 -0
  382. package/src/server/dash/app/dash/tasks/composer-data.ts +96 -0
  383. package/src/server/dash/app/dash/tasks/composer.css +316 -0
  384. package/src/server/dash/app/dash/tasks/composer.tsx +890 -0
  385. package/src/server/dash/app/dash/tasks/list/status.css +50 -0
  386. package/src/server/dash/app/dash/tasks/list/status.tsx +20 -0
  387. package/src/server/dash/app/dash/tasks/list/task.ts +45 -0
  388. package/src/server/dash/app/dash/tasks/list/tasks-list.css +85 -0
  389. package/src/server/dash/app/dash/tasks/list/tasks-list.tsx +402 -0
  390. package/src/server/dash/app/dash/tasks/list/tasks-section.tsx +96 -0
  391. package/src/server/dash/app/dash/tasks/page.tsx +53 -0
  392. package/src/server/dash/app/dash/token-from-hash.tsx +17 -0
  393. package/src/server/dash/app/dash/usage/custom-range.tsx +63 -0
  394. package/src/server/dash/app/dash/usage/day-chart.css +109 -0
  395. package/src/server/dash/app/dash/usage/day-chart.tsx +110 -0
  396. package/src/server/dash/app/dash/usage/loading.tsx +17 -0
  397. package/src/server/dash/app/dash/usage/metric.ts +13 -0
  398. package/src/server/dash/app/dash/usage/page.tsx +117 -0
  399. package/src/server/dash/app/dash/usage/range-bar.css +13 -0
  400. package/src/server/dash/app/dash/usage/range-bar.tsx +69 -0
  401. package/src/server/dash/app/dash/usage/stats.css +52 -0
  402. package/src/server/dash/app/dash/usage/stats.tsx +19 -0
  403. package/src/server/dash/app/dash/usage/top-agents.css +40 -0
  404. package/src/server/dash/app/dash/usage/top-agents.tsx +138 -0
  405. package/src/server/dash/app/dash/usage/usage.css +0 -0
  406. package/src/server/dash/app/globals.css +692 -0
  407. package/src/server/dash/app/layout.tsx +52 -0
  408. package/src/server/dash/app/login/page.css +26 -0
  409. package/src/server/dash/app/login/page.tsx +57 -0
  410. package/src/server/dash/app/page.tsx +5 -0
  411. package/src/server/dash/app/responsive.css +49 -0
  412. package/src/server/dash/app/zone.tsx +13 -0
  413. package/src/server/dash/comps/frame/auth-panel.css +60 -0
  414. package/src/server/dash/comps/frame/auth-panel.tsx +44 -0
  415. package/src/server/dash/comps/frame/drawer.css +28 -0
  416. package/src/server/dash/comps/frame/drawer.tsx +39 -0
  417. package/src/server/dash/comps/frame/heads.ts +41 -0
  418. package/src/server/dash/comps/frame/loading-card.tsx +65 -0
  419. package/src/server/dash/comps/frame/page-head.css +83 -0
  420. package/src/server/dash/comps/frame/page-head.tsx +71 -0
  421. package/src/server/dash/comps/frame/stream.tsx +50 -0
  422. package/src/server/dash/comps/frame/task-toasts.tsx +214 -0
  423. package/src/server/dash/comps/frame/theme-choices.tsx +46 -0
  424. package/src/server/dash/comps/nav/current-link.tsx +53 -0
  425. package/src/server/dash/comps/nav/side-toggle.tsx +30 -0
  426. package/src/server/dash/comps/nav/to.ts +22 -0
  427. package/src/server/dash/comps/ui/badge.css +64 -0
  428. package/src/server/dash/comps/ui/badge.tsx +41 -0
  429. package/src/server/dash/comps/ui/card.css +93 -0
  430. package/src/server/dash/comps/ui/card.tsx +77 -0
  431. package/src/server/dash/comps/ui/collapse.css +32 -0
  432. package/src/server/dash/comps/ui/collapse.tsx +49 -0
  433. package/src/server/dash/comps/ui/combo.tsx +154 -0
  434. package/src/server/dash/comps/ui/confirm.css +36 -0
  435. package/src/server/dash/comps/ui/confirm.tsx +67 -0
  436. package/src/server/dash/comps/ui/field.css +25 -0
  437. package/src/server/dash/comps/ui/field.tsx +34 -0
  438. package/src/server/dash/comps/ui/icon.css +22 -0
  439. package/src/server/dash/comps/ui/icon.tsx +17 -0
  440. package/src/server/dash/comps/ui/icons.ts +44 -0
  441. package/src/server/dash/comps/ui/menu.css +178 -0
  442. package/src/server/dash/comps/ui/menu.tsx +152 -0
  443. package/src/server/dash/comps/ui/segmented.css +44 -0
  444. package/src/server/dash/comps/ui/segmented.tsx +58 -0
  445. package/src/server/dash/comps/ui/select.css +103 -0
  446. package/src/server/dash/comps/ui/select.tsx +250 -0
  447. package/src/server/dash/comps/ui/sentinel.css +58 -0
  448. package/src/server/dash/comps/ui/sentinel.tsx +67 -0
  449. package/src/server/dash/comps/ui/tabs.css +81 -0
  450. package/src/server/dash/comps/ui/tabs.tsx +32 -0
  451. package/src/server/dash/comps/ui/tail.css +12 -0
  452. package/src/server/dash/comps/ui/tail.tsx +37 -0
  453. package/src/server/dash/comps/ui/toast.css +72 -0
  454. package/src/server/dash/comps/ui/toolbar.css +143 -0
  455. package/src/server/dash/comps/ui/toolbar.tsx +93 -0
  456. package/src/server/dash/package.json +5 -0
  457. package/src/server/dash/pnext-env.d.ts +4 -0
  458. package/src/server/dash/pnext.config.ts +5 -0
  459. package/src/server/dash/public/assets/apple-touch-icon.png +0 -0
  460. package/src/server/dash/public/assets/favicon.ico +0 -0
  461. package/src/server/dash/public/assets/favicon.svg +1 -0
  462. package/src/server/dash/public/assets/fonts/LICENSE-fira-code +93 -0
  463. package/src/server/dash/public/assets/fonts/fira-code-latin-400-normal-717ee080.woff2 +0 -0
  464. package/src/server/dash/public/assets/fonts/fira-code-latin-500-normal-530b6706.woff2 +0 -0
  465. package/src/server/dash/public/assets/fonts/fira-code-latin-700-normal-98730669.woff2 +0 -0
  466. package/src/server/dash/tsconfig.json +10 -0
  467. package/src/server/dash/utils/client.ts +19 -0
  468. package/src/server/dash/utils/format.ts +75 -0
  469. package/src/server/dash/utils/paged.ts +184 -0
  470. package/src/server/dash/utils/range.ts +117 -0
  471. package/dist/app-server-CW93J9zJ.js +0 -3
  472. package/dist/runtime-D-U1DNkI.js +0 -26
  473. package/dist/upgrade-DOj06r5b.js +0 -37
@@ -0,0 +1 @@
1
+ import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{xt as t}from"./dispatch-BKeAch9E.js";import{c as n,d as r,f as i,g as a,h as o,i as s,l as c,m as l,p as u,u as ee}from"./prompt-CEuBMNhk.js";import{a as d}from"./load-BpEsAn51.js";import{t as f}from"./integrations-BAgdVDhj.js";import p from"node:path";import m from"node:process";import h from"node:fs";import{execFile as g}from"node:child_process";import{createHash as _}from"node:crypto";import v from"node:fs/promises";import{promisify as y}from"node:util";import te from"node:http";import*as b from"openid-client";const x={"**/":`(?:.*/)?`,"/**":`/.*`,"**":`.*`,"*":`[^/]*`,"?":`[^/]`};function S(e){return e.split(/\r?\n/).flatMap(e=>{let t=e.trimEnd();if(!t||t.startsWith(`#`))return[];let n=t.startsWith(`!`);n&&(t=t.slice(1));let r=t.endsWith(`/`);r&&(t=t.slice(0,-1));let i=t.replace(/^\//,``).replace(/[.+^${}()|[\]\\]/g,`\\$&`).replace(/\*\*\/|\/\*\*$|\*\*|\*|\?/g,e=>x[e]),a=t.includes(`/`);return[{pattern:RegExp(a?`^${i}$`:`^(?:.*/)?${i}$`),negate:n,directory:r}]})}const C=(e,t,n)=>e.reduce((e,r)=>(!r.directory||n)&&r.pattern.test(t)?!r.negate:e,!1);async function w(e,t,n=``){let r=[];for(let i of await v.readdir(p.join(e,n),{withFileTypes:!0})){let a=n?`${n}/${i.name}`:i.name;i.isDirectory()&&!C(t,a,!0)?r.push(...await w(e,t,a)):i.isFile()&&!C(t,a,!1)&&r.push(a)}return r}async function T(e){return(await y(g)(`git`,[`-C`,e,`ls-files`,`--cached`,`--others`,`--exclude-standard`,`-z`,`--`,`.`],{maxBuffer:67108864}).catch(()=>void 0))?.stdout.split(`\0`).filter(Boolean)}async function E(e){let t=await T(e)??await w(e,S(await v.readFile(p.join(e,`.gitignore`),`utf8`).catch(()=>``))),n={};for(let r of t){if(r===`agent.json`||r===`system.md`)continue;let t=p.join(e,r);(await v.lstat(t).catch(()=>void 0))?.isFile()&&(n[r]=await v.readFile(t,`utf8`))}return n}var D=e({deviceSignIn:()=>P,hasBrowser:()=>ne,logoutSession:()=>z,loopbackSignIn:()=>N,refreshSignIn:()=>F,revokeSignIn:()=>I,selectLoginOrganization:()=>L,sessions:()=>B,signIn:()=>R});const O=`openid profile email offline_access organizations:read`,k=e=>`${e}/.well-known/oauth-cli-client.json`;async function A(e,n){let r=new URL(e).origin,i=await fetch(`${r}/.well-known/oauth-protected-resource`).catch(n=>{throw new t(`login-failed`,`No Coder server answers at ${e}: ${n.message}`)}),a=await i.json().catch(()=>({})),o=Array.isArray(a.authorization_servers)?a.authorization_servers[0]:void 0;if(!i.ok||a.resource!==r||typeof o!=`string`)throw new t(`login-failed`,`${e} does not offer sign-in.`,{hint:`Sign-in needs a Postgres-backed server; see coder docs self-host`});if(n!==void 0&&o!==n)throw new t(`login-failed`,`The server's sign-in issuer has changed. Sign in again before using this session.`);return{config:await b.discovery(new URL(o),k(e),void 0,b.None(),new URL(o).protocol===`http:`?{execute:[b.allowInsecureRequests]}:void 0).catch(e=>{throw new t(`login-failed`,`Wular Auth at ${o} did not answer: ${e.message}`)}),resource:r}}function j(e,n,r){let i=n.claims(),a=n.refresh_token??r?.refreshToken;if(!a)throw new t(`login-failed`,`Wular Auth returned no refresh token.`);return{token:n.access_token,refreshToken:a,expiresAt:Date.now()+(n.expires_in??600)*1e3,issuer:e.serverMetadata().issuer,user:i?{name:typeof i.name==`string`?i.name:``,email:typeof i.email==`string`?i.email:``}:r?.user??{name:``,email:``}}}const M=e=>new t(`login-failed`,e instanceof b.ResponseBodyError||e instanceof b.AuthorizationResponseError?e.error===`access_denied`?`Sign-in was denied in the browser.`:e.error_description??e.error:e instanceof Error?e.message:String(e));async function N(e,n){let{config:r,resource:i}=await A(e),a=b.randomPKCECodeVerifier(),o=b.randomState(),s=te.createServer();await new Promise(e=>s.listen(0,`127.0.0.1`,e));let{port:c}=s.address(),l=`http://127.0.0.1:${c}/callback`;try{let e=new Promise((e,n)=>{let r=setTimeout(()=>n(new t(`login-failed`,`Sign-in timed out.`)),3e5);s.on(`request`,(t,n)=>{let i=new URL(t.url??`/`,l);if(i.pathname!==`/callback`||i.searchParams.get(`state`)!==o){n.writeHead(404).end();return}n.writeHead(200,{"content-type":`text/plain; charset=utf-8`}).end(i.searchParams.has(`error`)?`Sign-in failed. You can close this tab and return to the terminal.`:`Signed in. You can close this tab and return to the terminal.`),clearTimeout(r),e(i)})});return n(b.buildAuthorizationUrl(r,{redirect_uri:l,scope:O,resource:i,code_challenge:await b.calculatePKCECodeChallenge(a),code_challenge_method:`S256`,state:o}).href),j(r,await b.authorizationCodeGrant(r,await e,{pkceCodeVerifier:a,expectedState:o},{resource:i}).catch(e=>{throw M(e)}))}finally{s.close(),s.closeAllConnections()}}async function P(e,t){let{config:n,resource:r}=await A(e);try{let e=await b.initiateDeviceAuthorization(n,{scope:O,resource:r});return t(e.user_code,e.verification_uri_complete??e.verification_uri),j(n,await b.pollDeviceAuthorizationGrant(n,e,{resource:r}))}catch(e){throw M(e)}}async function F(e,n){let{config:r,resource:i}=await A(e,n.issuer);try{return j(r,await b.refreshTokenGrant(r,n.refreshToken,{resource:i}),n)}catch(e){if(e instanceof b.ResponseBodyError&&(e.error===`invalid_grant`||e.error===`invalid_client`))return;throw new t(`server`,`Wular Auth did not refresh the session: ${e instanceof Error?e.message:String(e)}`)}}async function I(e,t){let{config:n}=await A(e,t.issuer);n.serverMetadata().revocation_endpoint&&await b.tokenRevocation(n,t.refreshToken,{token_type_hint:`refresh_token`})}async function L(e,n,r){if(!e.length)throw new t(`login-failed`,`This account belongs to no workspace.`);if(n){let r=e.find(e=>e.slug===n);if(!r)throw new t(`login-failed`,`You are not a member of workspace "${n}".`);return r}if(e.length<=1)return e[0];if(!r)throw new t(`login-failed`,`Choose a workspace for this server.`,{hint:`Pass --workspace <slug>.`});let i=await r(e);return e.find(e=>e.slug===i)}const ne=()=>!m.env.SSH_CONNECTION&&(m.platform!==`linux`||!!(m.env.DISPLAY||m.env.WAYLAND_DISPLAY));async function R(e,n={}){let r=n.device?await P(e,n.onCode??(()=>{})):await N(e,n.open??s),i=await fetch(`${e}/me`,{headers:{authorization:`Bearer ${r.token}`}}).catch(n=>{throw new t(`login-failed`,`No Coder server answers at ${e}: ${n.message}`)}),a=await i.json().catch(()=>({}));if(!i.ok)throw new t(`login-failed`,`Signed in, but the server refused the token.`);let o=await L(a.organizations??[],n.organization,n.chooseOrganization);return{...r,...o?{organization:o}:{},at:Date.now()}}async function z(e){let n=r(),i=n[e];if(!i)throw new t(`login-failed`,`Not signed in to ${e}.`);return await I(e,i).catch(()=>void 0),delete n[e],l(n),{ok:!0,server:e}}const B={async login(e={}){let t=G(e),n=await R(t,e);return e.save!==!1&&l({...r(),[t]:n}),{...n,server:t}},logout:(e={})=>z(G(e)),status:()=>Object.fromEntries(Object.entries(r()).map(([e,t])=>[e,{user:t.user,organization:t.organization,at:t.at}]))};function V(e,t){let n=t,r;return{expiresAt:()=>n.expiresAt,async renew(){return r||=H(e,n).finally(()=>{r=void 0}),n=await r,n.token}}}async function H(e,t){let n=_(`sha256`).update(e).digest(`hex`),r=`${i()}.${n}.lock`;for(h.mkdirSync(p.dirname(r),{recursive:!0});;)try{let e=h.openSync(r,`wx`,384);try{h.writeFileSync(e,String(process.pid))}catch(e){throw h.unlinkSync(r),e}finally{h.closeSync(e)}break}catch(e){if(e.code!==`EEXIST`)throw e;try{let e=Number(h.readFileSync(r,`utf8`));e?process.kill(e,0):Date.now()-h.statSync(r).mtimeMs>3e4&&h.unlinkSync(r)}catch(e){if(e.code===`ESRCH`)try{h.unlinkSync(r)}catch{}}await new Promise(e=>setTimeout(e,25))}try{return await U(e,t)}finally{h.unlinkSync(r)}}async function U(e,n){let i=e=>e&&e.refreshToken!==n.refreshToken?e:void 0,a=i(r()[e]);if(a&&a.expiresAt>n.expiresAt)return a;let o=await F(e,n),s=r();if(o){let t={...n,...o};return l({...s,[e]:t}),t}let c=i(s[e]);if(c)return c;throw delete s[e],l(s),new t(`login-failed`,`Signed out of ${e}.`,{hint:`Sign in again: coder auth login`})}var W=e({addCredential:()=>Q,coderClient:()=>q,connect:()=>K,loginCredential:()=>$,pushAgents:()=>J,serverFor:()=>G});function G(e={}){let r=u(e.server);if(!n(r)){if(!e.yes)throw new t(`invalid-option`,`First use of Coder server ${new URL(r).origin} needs confirmation.`,{hint:`Inspect the origin, then pass yes: true.`});c(r)}return r}function K(e={}){let t=G(e);return q(t,{token:e.token,missingHint:`auth.login({ server: '${t}' })`,organization:e.organization})}function q(e,{token:n,missingHint:r,organization:i}={}){let s=u(e),c=ee(s),l=c?.token,d=m.env.ADMIN_TOKEN,f=n??l??d;if(f&&f===d&&!a(s))throw new t(`invalid-option`,`ADMIN_TOKEN cannot be sent to a non-loopback server.`);if(!f)throw new t(`login-failed`,`Not signed in to ${s}.`,{...r?{hint:r}:{}});return new o(s,{token:f},{organization:i??c?.organization?.slug,renewal:c&&f===l?V(s,c):void 0})}async function J(e,n,r){let i=(await d(n,f)).filter(e=>!e.builtin),a=r?i.filter(e=>e.id===r):i;if(r&&!a.length)throw new t(`invalid-option`,`No workspace agent named "${r}".`);let o=[];for(let t of a)o.push(await e.agents.put(t.id,{definition:t.definition,systemPrompt:await v.readFile(p.join(t.dir,`system.md`),`utf8`).catch(()=>``),files:await E(t.dir),name:t.name,description:t.definition.description}));return o}const Y=/^[A-Za-z_][A-Za-z0-9_]*$/,X=[`claude`,`codex`,`custom`],Z=(e,n)=>new t(`invalid-option`,e,n?{hint:n}:{}),re=()=>new Promise(e=>setTimeout(e,1e3));async function ie(){let e=``;for await(let t of m.stdin)e+=t.toString();return e.replace(/\r?\n$/,``)}async function Q(e,t){let n=Array.isArray(t.env)?t.env:Object.keys(t.env);for(let e of n)if(!Y.test(e))throw Z(`Invalid environment variable name ${JSON.stringify(e)}.`);if(!t.engine)throw Z(`Missing required --engine.`,`Use claude, codex, or custom`);let r=X.find(e=>e===t.engine);if(!r)throw Z(`Invalid --engine value.`,`Use claude, codex, or custom`);if(!n.length)throw Z(`At least one --env NAME is required.`);if(t.value!==void 0&&n.length!==1)throw Z(`--value requires exactly one --env NAME.`);let i=Array.isArray(t.env)?Object.fromEntries(await Promise.all(n.map(async e=>{let n=t.value===`-`?await ie():t.value??m.env[e];if(!n)throw Z(`Environment variable ${e} is not set.`);return[e,n]}))):t.env;return K(t).credentials.add({...e?{label:e}:{},env:i,engine:r,workspace:t.workspace,noCheck:t.noCheck,default:t.default})}async function $(e,t={}){if(e!==`claude`&&e!==`codex`)throw Z(`Name the engine to sign in to.`,`Usage: coder credentials login <claude|codex>`);let n=K(t).credentials,r=await n.login(e);t.onStart?.(()=>n.cancelLogin(r.id));let i=async e=>{for(;!e(r.state);)await re(),r=await n.loginStatus(r.id)};return await i(e=>e!==`starting`),t.onOpen?.(r),e===`claude`&&r.state===`open`&&t.code&&await n.loginCode(r.id,await t.code()),await i(e=>e===`done`||e===`failed`),r}export{W as a,D as c,J as i,K as n,G as o,$ as r,B as s,Q as t};
@@ -0,0 +1 @@
1
+ import{xt as e}from"./dispatch-BKeAch9E.js";import{i as t,t as n}from"./cli-BilSDkvE.js";import{p as r}from"./output-BKeyLbvt.js";import{n as i,o as a}from"./args-BOEEdpWk.js";import o from"node:process";const s={json:i,server:a,yes:i},c=t({name:`runner remove`,globalFlags:{cwd:!1},help:{usage:`coder runner remove <id> [--server [url]] [--json]`,flags:[n]},options:s,args:1,async run({options:t,args:[n]}){let{removeRunner:r}=await import(`./runner-sUpWJ_k0.js`).then(e=>e.a);if(!n)throw new e(`invalid-option`,`Missing runner id.`);return r(n,t)},print:(e,{args:[t]})=>o.stdout.write(`Removed ${r.bold(t)}.\n`)});export{c as commandRunnerRemove,s as runnerOptions};
@@ -0,0 +1 @@
1
+ import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{i as t}from"./cli-BilSDkvE.js";import{p as n}from"./output-BKeyLbvt.js";import{i as r}from"./models-_5LVGC3m.js";import{n as i}from"./add-U-pty9qJ.js";import a from"node:process";var o=e({commandModelRemove:()=>s,printModelChange:()=>c});const s=t({name:`model remove`,help:{usage:`coder model remove <name>`,summary:`Remove a configured custom model.`,flags:[[`--workspace`,`target <repo>/.coder/config.json instead of the user file`]]},options:i,args:1,run:({options:e,args:[t],cwd:n})=>r(n,t,e),print:e=>c(`removed`,e.removed,e.file)});function c(e,t,r){a.stdout.write(`${e} ${n.cyan(t)} ${n.dim(`(${r})`)}\n`)}export{o as n,c as t};
@@ -0,0 +1 @@
1
+ import{st as e}from"./dispatch-BKeAch9E.js";import{i as t}from"./cli-BilSDkvE.js";import{n,t as r}from"./args-BOEEdpWk.js";import i from"node:process";const a=t({name:`mcp remove`,helpName:`mcp rm`,help:{usage:`coder mcp rm <name> [--user] [--cwd <dir>]`,summary:"Remove `mcp.<name>` from the repo config (or the user config with --user).",flags:[[`--user`,`edit ~/.coder config`]]},options:{...r,user:n},args:1,run:({options:t,args:[n],cwd:r})=>e(r,n,t),print:({name:e,file:t})=>i.stdout.write(`Removed MCP server "${e}" from ${t}.\n`)});export{a as commandMcpRemove};
@@ -0,0 +1 @@
1
+ import{xt as e}from"./dispatch-BKeAch9E.js";import{i as t,t as n}from"./cli-BilSDkvE.js";import{p as r}from"./output-BKeyLbvt.js";import{n as i,o as a}from"./args-BOEEdpWk.js";import o from"node:process";const s={json:i,server:a,workspace:i,yes:i},c=()=>new e(`invalid-option`,`Missing credential label.`),l=t({name:`credentials remove`,globalFlags:{cwd:!1},help:{usage:`coder credentials remove <label> [--workspace] [--server [url]] [--json]`,flags:[[`--workspace`,`the workspace credential of that label`],n]},options:s,args:1,async run({options:e,args:[t]}){let{connect:n}=await import(`./remote-miQNTVRa.js`).then(e=>e.a);if(!t)throw c();return n(e).credentials.remove(t,e)},print:(e,{args:[t]})=>o.stdout.write(`Removed ${r.bold(t)}.\n`)});export{l as commandCredentialsRemove,s as credentialOptions,c as missingLabel};
@@ -0,0 +1 @@
1
+ import{xt as e}from"./dispatch-BKeAch9E.js";import{i as t,t as n}from"./cli-BilSDkvE.js";import{p as r}from"./output-BKeyLbvt.js";import{runnerOptions as i}from"./remove-B93LNkZI.js";import a from"node:process";const o=t({name:`runner rename`,globalFlags:{cwd:!1},help:{usage:`coder runner rename <id> <name> [--server [url]] [--json]`,flags:[n]},options:i,args:2,async run({options:t,args:[n,r]}){let{updateRunner:i}=await import(`./runner-sUpWJ_k0.js`).then(e=>e.a);if(!n||!r)throw new e(`invalid-option`,`Usage: coder runner rename <id> <name>`);return i(n,{name:r},t)},print:(e,{args:[t]})=>a.stdout.write(`Renamed ${t} to ${r.bold(e.name)}.\n`)});export{o as commandRunnerRename};
@@ -0,0 +1,5 @@
1
+ import{ln as e,xt as t}from"./dispatch-BKeAch9E.js";import{i as n}from"./cli-BilSDkvE.js";import{c as r,m as i,p as a,s as o}from"./output-BKeyLbvt.js";import{l as s,t as c}from"./args-BOEEdpWk.js";import{gateLine as l,gateRunningLine as u,paintPlain as d,printLedger as f,resultJson as p,stepSymbol as m,taskLabel as h,taskLine as g}from"./watch-CSdj24ct.js";import _ from"node:process";const v=n({name:`flow result`,help:{usage:`coder flow result [run-id] [--tail <n|all>] [--json]`,summary:`Show a flow run's status and result, with its tasks, gates, and token ledger.
2
+ --tail <n> caps the step rows (0 for the result alone). Defaults to the most
3
+ recent run. To watch a run live, prefer \`coder flow watch\`.`,flags:[[`--tail <n|all>`,`show the last n step rows (default: all; 0 hides them)`]],examples:[[`coder flow result --tail 0`,`the most recent run's result, no step rows`]]},options:{...c,tail:s},args:1,async run({options:e,args:[n]}){let{runResult:r}=await import(`./executor-BvAA7Cgw.js`).then(e=>e.y),i=r(n);if(!i&&!e.json)throw new t(`flow-failed`,n?`No flow run "${n}".`:`No flow runs yet.`,{hint:`Run one: coder flow run <name>`});return i},json:e=>e&&p(e),print:(e,{options:t})=>b(e,t.tail)});function y(e,t=!1){let n=a;if(t)return e.map(d);let r=(t,n)=>{for(let r=t+1;r<e.length;r+=1){let t=e[r].depth;if(t<n)return!1;if(t===n)return!0}return!1};return e.map((e,t)=>{let i=``;for(let n=0;n<e.depth;n+=1)i+=r(t,n)?`│ `:` `;return i+=e.log?`│ `:r(t,e.depth)?`├─`:`└─`,`${n.dim(i)} ${e.body}`})}function b(t,n=`all`){let s=a,c=!_.stdout.isTTY;_.stdout.write(`${s.bold(`Flow`)} ${s.cyan(t.name)} ${s.dim(`(${t.runId})`)}. ${s.bold(i(t.status))}\n`);let d=t.steps,p=d.filter(t=>e.includes(t.status)).length,v=t.status===`running`?`${p}/${d.length} tasks`:`${t.taskCount} tasks`;if(_.stdout.write(`${s.dim(`started ${t.startedAt}${t.endedAt?` · ended ${t.endedAt}`:``} · ${v}`)}\n`),n!==0){let e=new Map,r=new Map,i=new Map,a=[];for(let n of t.events)if(n.kind===`task-start`){let t={name:h(n.name,n.prompt),engine:n.engine,depth:n.depth??0};e.set(n.taskId,t),r.set(n.taskId,t)}else if(n.kind===`task-end`){r.delete(n.taskId);let t=e.get(n.taskId);a.push({depth:t?.depth??0,body:g(m(n.status,c),t?.name??null,n.taskId,n.tokens,t?.engine)})}else if(n.kind===`gate-start`)i.set(n.gateId,{cmd:n.cmd,depth:n.depth??0});else if(n.kind===`gate`)n.gateId&&i.delete(n.gateId),a.push({depth:n.depth??0,body:l(n,c)});else if(n.kind===`log`)for(let e of n.message.split(`
4
+ `))a.push({depth:n.depth??0,body:s.light(e),log:!0});else n.kind===`flow-start`&&a.push({depth:n.depth-1,body:s.bold(`flow ${n.name}`)});for(let[e,t]of r)a.push({depth:t.depth??0,body:g(m(`running`,c),t.name,e,null,t.engine)+(c?``:` ${s.light(`running`)}`)});for(let e of i.values())a.push({depth:e.depth,body:u(e.cmd,m(`running`,c))+(c?``:` ${s.light(`running`)}`)});if(!a.length)for(let e of n===`all`?d:d.slice(-n))a.push({depth:0,body:g(m(e.status,c),e.name,e.taskId??`-`,e.tokens)});let o=y(a,c),f=n===`all`?o:o.slice(-n);f.length&&_.stdout.write(`\n${f.join(`
5
+ `)}\n`)}t.endedAt&&t.result!==void 0&&_.stdout.write(`\n${s.bold(`Result:`)}\n${r(t.result)}\n`),t.error&&_.stdout.write(`\n${s.red(`error:`)} ${t.error}\n`),f(t.ledger);let b=t.status===`running`?[`Follow live: coder flow watch ${t.runId}`,`Stop it: coder flow stop ${t.runId}`]:t.status===`stopped`||t.status===`failed`?[`Resume: coder flow resume ${t.runId}`]:[];b.length&&_.stdout.write(`\n${o(b,s)}\n`)}export{v as commandResult};
@@ -0,0 +1,15 @@
1
+ import{Dn as e,Nt as t,cn as n,wt as r}from"./dispatch-BKeAch9E.js";import{i,r as a}from"./cli-BilSDkvE.js";import{S as o,a as s,d as c,m as l,o as u,p as d,s as f,u as p,x as m,y as h}from"./output-BKeyLbvt.js";import{i as g,l as _,n as v,s as y,t as b}from"./args-BOEEdpWk.js";import x from"node:process";const S={server:g,workspace:y,yes:v};function C(e,t,n,r=d){let i=e?.error?.message??t;return e?.finalMessage||(i?`${r.red(`error:`)} ${i}`:n)}const w=1e3;function T(e,t=d,{truncate:n=!0}={}){let r=e=>e.split(`
2
+ `).map(e=>` ${t.dim(e)}`);return!n||e.length<=w?[t.dim(`prompt:`),...r(e)]:[t.dim(`prompt:`),...r(e.slice(0,500).trimEnd()),t.light(` … <${e.length-w} chars trimmed> …`),...r(e.slice(-500).trimStart())]}function E(e,t=d){let n=[];e.permissions&&n.push([`perms`,e.permissions]),e.cwd&&n.push([`cwd`,e.cwd]);for(let t of e.addDirs??[])n.push([`add-dir`,t]);return n.map(([e,n])=>`${t.dim(e.padEnd(8))} ${n}`)}function D(e,t){if(t)return e.createdAt?`started ${s(r(e.createdAt))} ago`:``;let n=e.createdAt&&e.completedAt?Date.parse(e.completedAt)-Date.parse(e.createdAt):null;return[e.completedAt?`finished ${s(r(e.completedAt))} ago`:``,n!==null&&n>=0?`took ${s(n)}`:``].filter(Boolean).join(` · `)}function O(e,{status:r,tokens:i,tokenModel:a,files:o,live:s=!1,style:u=d}){let f=D(e,n.includes(e.status)||r===`waiting-approval`),m=e=>u.dim(e.padEnd(8));return[`${m(`task`)} ${u.cyan(e.id)}`,...e.name?[`${m(`name`)} ${e.name}`]:[],`${m(`status`)} ${l(r)}${f?` ${u.dim(`(${f})`)}`:``}`,`${m(`engine`)} ${t(e)}`,...E(e,u),...i?[`${m(`tokens`)} ${s?c(i):p(i,a??e.model)}${s?u.dim(` (so far)`):``}`]:[],...k(o,m,u)]}const k=(e,t,n)=>e?.length?[`${t(`files`)} ${e.join(`, `)} ${n.dim(`(shell edits not included)`)}`]:[];function A(e,{tokens:t,tokenModel:n,files:r,statusChanged:i=!0,style:a=d}){let o=e=>a.dim(e.padEnd(8)),c=e.createdAt&&e.completedAt?Date.parse(e.completedAt)-Date.parse(e.createdAt):null;return[...i?[`${o(`status`)} ${l(e.status)}${c!==null&&c>=0?` ${a.dim(`(took ${s(c)})`)}`:``}`]:[],...t?[`${o(`tokens`)} ${p(t,n??e.model)}`]:[],...k(r,o,a)]}function j(e,t=300,{plain:n=!1,style:r=d}={}){if(e.length<=t)return e;let i=`<${e.length-t} more chars>`;return`${e.slice(0,t)} ${n?i:r.dim(i)}`}const M=` `.repeat(8),N={assistant:`●`,reasoning:`✻`,tool:`→`,"tool-result":` `,usage:`·`,status:`·`,info:`·`,error:`✘`,steer:`⚑`};function P(e,t){let n=/^\x1b\[[0-9;]*m/.exec(t(``))?.[0];return t(n&&e.includes(F)?e.split(F).join(`${F}${n}`):e)}const F=`\x1B[0m`;function I(e,t,n,r,i=r.dim){if(!e)return``;let a=(e.length>t?e.slice(0,t):e).split(`
3
+ `).map(e=>P(e,i));return e.length>t&&(a[a.length-1]+=` ${r.light(`<${e.length-t} more chars>`)}`),a.length>n?[...a.slice(0,n),r.light(`… +${a.length-n} more lines`)].join(`
4
+ `):a.join(`
5
+ `)}var L=class e{opts;view;isApproval;separated=!1;entryAt=null;style;static async create(t={}){let n=await import(`./log-view-dg0TlKLA.js`).then(e=>e.n);return new e(t,new n.LogView(t.cwd),n.isApproval)}constructor(e,t,n){this.opts=e,this.view=t,this.isApproval=n,this.style=e.style??d}get lastAssistantMessage(){return this.view.lastAssistantMessage}render(e){let t=Date.parse(String(e.at??``));this.entryAt=Number.isFinite(t)?t:null;let[n]=this.view.reduce({seq:0,at:t,level:`out`,line:``,entry:e});if(!n)return[];this.separated=n.separated;let r=this.style,i=n.sourceKind,a=n.title,o=this.opts.trim??500,c=this.opts.explicitTrim||o===1/0?1/0:6;if(n.kind===`usage`)return this.compose(i,r.dim(a),!1);if(n.kind===`approval`)return this.compose(i,this.approval(a,n.detail??``),!1);if(n.kind===`assistant`)return this.compose(i,a,!0);if(n.kind===`steer`)return this.compose(i,r.yellow(a),!0);if(n.kind===`error`)return this.compose(i,r.red(a),!0);if(n.kind===`reasoning`){let e=Math.round((n.durationMs??0)/1e3),t=e>=1?`thought ${s(e*1e3)} · `:``,l=c===1/0?`${r.dim(t)}${I(a,o,1/0,r)}`:this.clip(`${t}${a.split(`
6
+ `)[0]??``}`,3,r.dim);return this.compose(i,l,!1)}if(n.kind===`tool`)return this.compose(i,this.clip(a.replace(/\s*\n\s*/g,` `),2,r.light),!1);if(n.kind===`tool-result`){let e=[n.tool?r.dim(`from ${n.tool}`):``,n.tone===`error`?r.red(n.exitCode===void 0?`failed`:`exit ${n.exitCode}`):``,(n.durationMs??0)>=3e3?r.dim(s(n.durationMs)):``].filter(Boolean),t=I(a,o,c,r),l=[...e.length?[e.join(r.dim(` · `))]:[],...t?[t]:[]];return this.compose(i,l.join(`
7
+ `),!1)}return this.compose(i,this.clip(a,3,r.dim),!1)}approval(e,t){let n=this.style,r=this.opts.width?this.opts.width-M.length:1/0,i=`${e}${t?`. ${t}`:``}`;return!t||m(i)<=r?`${n.light(e)}${t?n.dim(`. ${t}`):``}`:[this.clip(e,1,n.light),this.clip(t,2,n.dim)].join(`
8
+ `)}clip(e,t,n){let r=this.opts.trim??500;if(this.opts.explicitTrim||r===1/0)return I(e,r,1/0,this.style,n);let i=this.opts.width;return i?o(e,Math.max(i-M.length,24),t).map(e=>P(e,n)).join(`
9
+ `):n(e)}compose(e,t,n){let r=this.separated?[``]:[],i=N[e]??(this.isApproval(e)?`⚑`:`·`),[a=``,...o]=t.split(`
10
+ `);return[...r,`${this.gutter(e)}${this.style.dim(i)} ${a}`,...o.map(e=>n?e:`${M}${e}`)]}gutter(e){let t=` `.repeat(6);return e===`tool-result`||!this.opts.startedAt||this.entryAt===null?t:`${this.style.dim(u(this.entryAt-this.opts.startedAt).padStart(5))} `}};const R=(e,t)=>e===`completed`?t.green(e):e===`failed`?t.red(e):e===`running`?t.yellow(e):t.dim(e);function z(e){return e.startedAt===void 0?``:s((e.finishedAt??Date.now())-e.startedAt)}function B(e){let t=(e.result?.output??``).trim().split(`
11
+ `);for(let e=t.length-1;e>=0;--e){let n=t[e].trim();if(n.startsWith(`{`))try{let e=JSON.parse(n).reply;return typeof e==`string`?e:void 0}catch{return}}}function V(e,t){x.stdout.write(`${t.bold(e.task.id)} ${R(e.status,t)}${e.error?` ${t.red(e.error)}`:``}${z(e)?` ${t.dim(`took ${z(e)}`)}`:``}\n`),e.credential&&x.stdout.write(`${t.dim(`credential`)} ${e.credential}\n`);let n=B(e);n&&x.stdout.write(`\n${t.bold(`Reply`)}\n${n.trim()}\n`)}function H(e,t=!1){let{task:n,steps:r,result:i}=e;return{taskId:n.id,name:n.name??null,prompt:n.prompt??null,system:n.system??null,status:e.status,engine:n.engine,model:n.model??null,effort:n.effort??null,permissions:n.permissions??null,cwd:n.cwd??null,addDirs:n.addDirs??[],createdAt:n.createdAt??null,completedAt:n.completedAt??null,...e.idleMs===void 0?{}:{idleMs:e.idleMs,lastActivityAt:e.lastActivityAt??null,stalled:e.stalled},pendingApprovals:e.pendingApprovals,...r.length?{steps:r}:{},turnCount:e.turns.length,...t?{turns:e.turns}:{},result:i}}async function U(t,r,i={}){let{task:a,steps:o,result:c,turns:l,pendingApprovals:u}=t,p=d,m=n.includes(a.status),g=O(a,{status:t.status,tokens:c?.tokens??t.liveTokens??null,tokenModel:c?.model,files:c?.touchedFiles?.map(t=>e(a.cwd??r,t)),live:!c?.tokens&&!!t.liveTokens,style:p});if(a.prompt&&g.push(...T(a.prompt,p)),u.length){g.push(``,p.dim(`pending approvals:`));for(let e of u)g.push(` ${p.cyan(e.id)} ${e.summary}`),e.cwd&&g.push(` ${p.dim(`runs in ${e.cwd}`)}`),g.push(` ${p.bold(`coder task approve ${a.id} ${e.id}`)} ${p.dim(`(--deny to reject)`)}`)}if(o.length){g.push(``,p.dim(`steps:`));let e=await L.create({cwd:a.cwd??r,startedAt:Date.parse(a.createdAt??``)||void 0,width:h(),style:p}),t=c?.finalMessage&&String(o.at(-1)?.message??``).trim()===String(c.finalMessage).trim()?o.slice(0,-1):o;for(let n of t)g.push(...e.render(n))}if(g.push(``),i.turns&&l.length)l.forEach((e,t)=>{t&&g.push(``),g.push(p.dim(`Turn ${t+1} of ${l.length}. ${j(String(e.prompt??``))}`)),g.push(String(e.finalMessage||p.dim(`(no final message)`)))});else if(c)g.push(C({...c,error:c.error??void 0},a.error,`(no final message)`,p)),l.length>1&&g.push(p.dim(`Turn ${l.length} of ${l.length}. All answers are in coder task result ${a.id} --turns.`));else if(m){let{lastLog:e}=t;g.push(p.dim(t.stalled?`Result pending. No progress for ${s(t.idleMs??0)}. The task may be stalled.${e?` Last: ${j(e.message??e.kind??``)}`:``}`:`Result pending. The task is still running.`))}else g.push(p.dim(`(no result)`));if(m&&!i.wait){let e=[`Wait in a background shell; do not poll: coder task result ${a.id} --wait`,`Follow live: coder task watch ${a.id}`];t.stalled&&e.push(`Check the transcript: coder task result ${a.id} --tail all`),g.push(``,f(e,p))}x.stdout.write(`${g.join(`
12
+ `)}\n`)}const W=i({name:`task result`,help:{usage:`coder task result [task-id] [--server [url]]`,summary:`Show a task's status and its final answer (result pending while it runs), plus
13
+ any pending approvals. --wait blocks until it finishes, then prints. --tail <n>
14
+ includes the last n progress-log steps (--tail all for the whole transcript).
15
+ Defaults to the most recent task. Shortcut: \`coder result\`.`,flags:[[`--wait`,`block until the task finishes, then print`],[`--turns`,`every turn's answer (a steered task accretes turns)`],[`--tail <n|all>`,`include the last n progress-log steps (default: 0, final result only)`],a],exitCodes:[[`0`,`The task completed successfully.`],[`1`,`The task failed or was cancelled.`],[`4`,`An approval is pending; answer it, then run --wait again.`]],examples:[[`coder result <task-id> --wait`,`block until the task finishes, print the answer`],[`coder result <task-id> --turns`,`every turn's answer for a steered task`]]},options:{...b,tail:_,wait:v,turns:v,...S},args:1,run:async({options:e,args:[t]})=>{let{tasks:n}=await import(`./task-C6VAg5WU.js`).then(e=>e.t);return n.result(t,{...e,organization:e.workspace,onWaiting:e=>x.stderr.write(`${d.dim(`[coder] waiting for task ${e} to finish...`)}\n`)})},json:(e,{options:t})=>`attempts`in e?e:H(e,t.turns),print:(e,{options:t,cwd:n})=>`attempts`in e?V(e,d):U(e,n,t),exit:(e,{options:t})=>t.wait&&!(`attempts`in e)?e.task.status===`completed`?0:1:void 0});export{L as LogRenderer,W as commandResult,C as finalMessageLine,V as printOutcome,T as promptBlock,B as replyOf,R as statusStyle,O as taskHeaderLines,A as taskSummaryLines,j as trimStep};
@@ -0,0 +1,3 @@
1
+ import{i as e}from"./cli-BilSDkvE.js";import{printFollow as t,printRunSummary as n}from"./watch-CSdj24ct.js";import{RUN_FLAGS as r,hooks as i,parseRunArgs as a,printDetached as o,runOptions as s}from"./run-CTtd0Znc.js";const c=e({name:`flow resume`,help:{usage:`coder flow resume [run-id] [--wait] [--json] [--dry-run]`,summary:`Re-run a flow from its journal: finished steps replay instantly, the first
2
+ changed or new step onward runs live. Defaults to the most recent run.
3
+ Accepts the same flags as flow run.`,flags:[[`--wait`,`follow the run in the foreground (Ctrl-C detaches; it keeps running)`],[`--concurrency <n>`,`tasks running at once`],[`--max-tasks <n>`,`total tasks the run may dispatch`]],examples:[[`coder flow resume`,`continue the most recent run`]]},options:r,args:1,async run({options:e,args:[n],cwd:r}){let{resumeRun:o}=await import(`./executor-BvAA7Cgw.js`).then(e=>e.y),c=await o(n,{...s(e,r),...e.args===void 0?{}:{args:a(e.args,[])}},i(e));return c.status===`running`&&c.watch&&await t(c.watch,e),c},print:e=>e.status===`running`?o(e):n(e)});export{c as commandResume};
@@ -0,0 +1,7 @@
1
+ import{xt as e}from"./dispatch-BKeAch9E.js";import{i as t}from"./cli-BilSDkvE.js";import{c as n,n as r,s as i,t as a}from"./args-BOEEdpWk.js";import o from"node:process";import*as s from"zod/mini";function c(e){let{summary:t}=e,n=`\`${t.baseSha}\`${t.worktree?` through the working tree`:`..\`${t.headSha}\``}`,r=(t.warnings??[]).flatMap(e=>[e,``]);if(t.worktree&&!t.files)return`${[`# Coder review`,``,`Nothing to review from ${n}.`,``,...r,`Flow run: \`${e.runId}\``].join(`
2
+ `)}\n`;let i=[`# Coder review`,``,`Reviewed ${n}${t.model?` with ${t.model}`:``} in ${(t.elapsedMs/1e3).toFixed(1)}s.`,``,...r,...e.findings.length?e.findings.flatMap(e=>[`- **${e.severity.toUpperCase()}** [\`${e.file}:${e.line}\`]. ${e.summary}`,` ${e.failure_scenario}`]):[`No findings after checking against the repository.`]];return t.posted!==void 0&&i.push(``,`Posted ${t.posted} new inline comment${t.posted===1?``:`s`}.`),i.push(``,`Flow run: \`${e.runId}\``),`${i.join(`
3
+ `)}\n`}const l=t({name:`review`,help:{usage:`coder review [--base <ref>] [--head <ref>] [--pr <n|url>] [--since <sha>] [--path <p>]... [--exclude <p>]... [--post] [--json|--md] [--engine <name>] [--model <alias|slug>] [--effort <low|medium|high>] [--cwd <dir>]`,summary:`Review changed code with a read-only agent. Every reported finding is checked
4
+ against the repository. Runs the built-in \`review\` flow. A local review covers
5
+ everything since the merge-base with the origin default branch, including
6
+ uncommitted and untracked files. Changed submodules are reviewed file by file.
7
+ PR reviews can post deduplicated inline comments.`,flags:[[`--base <ref>`,`local comparison base (default: merge-base with origin default)`],[`--head <ref>`,`review commits through this ref only (default: the working tree)`],[`--pr <n|url>`,`review a pull request by number (origin repo) or URL; GitHub via gh for now`],[`--since <sha>`,`keep only PR files and hunks changed since this commit`],[`--path <p>`,`review only this path, relative to cwd (repeatable)`],[`--exclude <p>`,`leave this path out, relative to cwd (repeatable)`],[`--post`,`post deduplicated inline comments and sticky PR summary`],[`--md`,`markdown output (the default)`],[`--engine <name>`,`codex, claude, or custom`],[`--model <alias|slug>`,`model for the review task`],[`--effort <low|medium|high>`,`reasoning effort and review depth (default: medium depth)`]],examples:[[`coder review`,`review the branch plus uncommitted work`],[`coder review --base main`,`review everything since main locally`],[`coder review --path src --exclude src/gen`,`review src without generated code`],[`coder review --pr 42 --post`,`review and post to pull request 42`]],seeAlso:`flow watch · docs review`},options:{...a,base:i,head:i,pr:i,since:i,path:n,exclude:n,post:r,md:r,engine:i,model:i,effort:s.optional(s.enum([`low`,`medium`,`high`],{error:`expected "low", "medium", or "high"`}))},async run({options:t,cwd:n}){let{runFlowByName:r}=await import(`./executor-BvAA7Cgw.js`).then(e=>e.t);if(t.json&&t.md)throw new e(`invalid-option`,`--json and --md are mutually exclusive.`);let i=await r(`review`,{cwd:n,args:{...t,cwd:n}});return{...i.result,runId:i.runId}},print:e=>o.stdout.write(c(e))});export{l as commandReview};
@@ -0,0 +1 @@
1
+ import"node:module";var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r};export{t};
@@ -0,0 +1 @@
1
+ import{i as e}from"./cli-BilSDkvE.js";import{n as t}from"./args-BOEEdpWk.js";import n from"node:process";const r=e({name:`server rotate-key`,globalFlags:{cwd:!1},help:{usage:`coder server rotate-key [--json]`,summary:`Re-seal stored app, installation, engine, and linked user secrets with the current key.`,env:[[`SERVER_ENCRYPTION_KEY`,`the new key`],[`SERVER_ENCRYPTION_KEY_PREVIOUS`,`the old key, still accepted while rotating`]]},options:{json:t},run:async()=>{let{rotateKey:e}=await import(`./maintenance-C5FklUw3.js`).then(e=>e.t);return e()},json:({moved:e})=>({ok:!0,moved:e}),print:({moved:e})=>n.stdout.write(`Re-sealed ${e} secret${e===1?``:`s`}.\n`)});export{r as commandServerRotateKey};
@@ -0,0 +1,2 @@
1
+ import{d as e,i as t,n,p as r}from"./cli-BilSDkvE.js";import{p as i,r as a,s as o,u as s}from"./output-BKeyLbvt.js";import{c,i as l,n as u,s as d,t as f}from"./args-BOEEdpWk.js";import{printOutcome as p}from"./result-BzaM3inj.js";import{printLine as m}from"./watch-DtRuC0Wc.js";import{TASK_FLAGS as h}from"./task-CgOKgkEG.js";import g from"node:process";function _(t){let n=e([{usage:`coder task result ${t} --wait`,blurb:`run in a background shell; returns with the answer or a pending approval`},{usage:`coder task steer ${t} "<follow-up>"`,blurb:`steer the task with a message (use 'ask' without interrupting main thread)`},{usage:`coder task stop ${t}`,blurb:`stop the task`},{usage:`coder task list`,blurb:`recent tasks`},{usage:`coder task --help`,blurb:`all task commands`}],i,i.blue);return[...r(`Next step`,n.slice(0,1),i),...r(`Related`,n.slice(1),i)].join(`
2
+ `)}function v(e,t){g.stdout.write(`${i.dim(`[coder]`)} task ${i.blue(e)} started in the background (${t}).\n`),g.stdout.write(`${_(e)}\n`)}function y(e){g.stderr.write(`${i.dim(`[coder]`)} Task ${i.cyan(e)} started and is waiting to finish. Press Ctrl-C to detach. It keeps running.\n`),g.stderr.write(`${_(e)}\n`)}function b(e){g.stderr.write(`\n${i.dim(`[coder] Detached. The task is still running.`)}\n\n${o([`Wait for the answer: coder task result ${e} --wait`],a)}\n`)}function x(e){g.stdout.write(`\n${e.finalMessage||(e.error?`${i.red(`error:`)} ${e.error}`:`(no final message)`)}\n\n`);let t=e.tokens?` tokens=${s(e.tokens,e.model)}`:``;g.stderr.write(`${i.dim(`[coder] task=${e.taskId} status=${e.status}${t}`)}\n`)}const S=t({name:`task run`,help:{usage:`coder task run "<task text>"`,summary:`Dispatch a coding task to the configured engine. Backgrounds by default and\nprints a task id; --wait runs in the foreground and prints the answer.\nShortcut: \`coder run "<text>"\`.\n\nWriting a task: one task per focused goal, independent goals as parallel runs.\nThe worker starts with nothing but the text, so include the goal, file paths,\nconstraints and any context only you have. Delegate rather than doing the work\nyourself first, however small it looks.\n\n${n}`,flags:[[`--output-schema <json>`,`JSON Schema for the task answer`],[`--name <name>`,`label the task (shown in list/result)`],[`--agent <id>`,`run as that agent: its system.md, engine settings, MCP servers and flows; flags override them`],[`--system <text>`,`standing instructions prepended to the task (kept out of prompt previews)`],...h,[`--server [url] [--workspace <slug>]`,`run the task on your Coder server and follow it here (--background prints its id); --resume continues a finished server task`],[`--repo <owner/name>`,`with --server: check out a repo from the workspace's installs`],[`--runner <name>`,`with --server: where it runs (a runner kind or a registered runner)`]],exitCodes:[[`0`,`The task started, or --wait printed a successful answer.`],[`1`,`Dispatch or the task failed.`],[`3`,`No engine could start; follow fallback.instructions in the JSON payload.`],[`4`,`An approval is pending; answer it, then run result --wait again.`],[`130`,`The foreground wait was detached and the task is still running.`]],examples:[[`coder run "add a /health endpoint"`,`dispatch in the background, print a task id`],[`coder result <task-id> --wait`,`then block until it finishes and print the answer`],[`coder run --wait "fix the failing test"`,`or block on the run itself`],[`coder task run --model luna --system "tests live in test/, don't touch anything outside of it" "rename foo to bar"`,`pick an engine via its model alias; --system adds standing instructions`],[`coder task run --agent reviewer "review the last commit"`,`run a repo agent from .coder/agents/reviewer`],[`coder run --add-dir ../api --add-dir ../shared "update the client for the new endpoint"`,`let the task reach sibling repos too`]]},options:{...f,agent:d,"output-schema":d,engine:d,model:d,effort:d,permissions:d,resume:d,host:d,name:d,system:d,mcp:d,"add-dir":c,background:u,wait:u,"simulate-approval":u,server:l,workspace:d,yes:u,repo:d,runner:d},args:1/0,async run({options:e,args:t}){let{tasks:n}=await import(`./task-C6VAg5WU.js`).then(e=>e.t),r=e.json,a;return g.on(`SIGINT`,()=>{a&&b(a),g.exit(130)}),n.run(t.join(` `).trim(),{cwd:e.cwd,agent:e.agent,outputSchema:e[`output-schema`]?JSON.parse(e[`output-schema`]):void 0,engine:e.engine,model:e.model,effort:e.effort,permissions:e.permissions,name:e.name,system:e.system,resume:e.resume,mcp:e.mcp,addDirs:e[`add-dir`],wait:e.server===void 0?e.wait:!e.background,simulateApproval:e[`simulate-approval`],repo:e.repo,runner:e.runner,server:e.server,yes:e.yes,organization:e.workspace,onFallback:({engine:e,detail:t,next:n})=>g.stderr.write(`[coder] ${e} failed to start (${t}); falling back to ${n}.\n`),onNote:e=>g.stderr.write(`[coder] ${e}\n`),onWaiting:e=>{a=e,r||y(e)},onLog:e=>r?g.stdout.write(`${JSON.stringify(e,null,2)}\n`):m(e,i)})},print(e,{options:t}){if(`attempts`in e)return t.background?void g.stdout.write(`${e.task.id}\n`):p(e,i);t.wait?x(e):v(e.taskId,e.status)},exit:(e,{options:t})=>(`attempts`in e?!t.background:t.wait)?e.status===`completed`?0:1:void 0});export{S as commandTask};
@@ -0,0 +1,5 @@
1
+ import{xt as e}from"./dispatch-BKeAch9E.js";import{i as t}from"./cli-BilSDkvE.js";import{p as n,s as r}from"./output-BKeyLbvt.js";import{n as i,s as a,t as o}from"./args-BOEEdpWk.js";import{FlowStepRenderer as s,printFollow as c,printRunSummary as l}from"./watch-CSdj24ct.js";import u from"node:process";const d={...o,args:a,wait:i,concurrency:a,"max-tasks":a,"dry-run":i};function f(t){let n={};for(let r of t){let t=r.indexOf(`=`);if(t===-1)throw new e(`invalid-option`,`Invalid argument "${r}": expected key=value.`,{hint:`Help: coder flow run --help`});let i=r.slice(0,t),a=r.slice(t+1);try{n[i]=JSON.parse(a)}catch{n[i]=a}}return n}function p(t,n){if(t!==void 0)try{return JSON.parse(t)}catch(t){throw new e(`invalid-option`,`Invalid --args JSON: ${t instanceof Error?t.message:String(t)}`)}return n.length?f(n):{}}const m=e=>e?Number(e):void 0,h=(e,t)=>({cwd:t,dryRun:e[`dry-run`],concurrency:m(e.concurrency),maxTasks:m(e[`max-tasks`]),argv:u.argv.slice(2),wait:e.wait}),g=e=>e[`dry-run`]&&!e.json?v():{},_=t({name:`flow run`,help:{usage:`coder flow run <name|path> [--args '<json>' | key=value...] [--wait] [--concurrency N] [--max-tasks N] [--json] [--dry-run]`,summary:`Run a flow: a TypeScript file that orchestrates many coder tasks with gates,
2
+ journaling, and resume. Prints the run id and orchestrates in the background;
3
+ --wait follows the run in the foreground with live progress (Ctrl-C detaches;
4
+ it keeps running), and \`coder flow watch\` shows the same lines any time.
5
+ Stop a run with \`coder flow stop\`.`,flags:[[`--wait`,`follow the run in the foreground (Ctrl-C detaches; it keeps running)`],[`--args <json>`,`the flow's input as a JSON value (or pass bare key=value pairs)`],[`--concurrency <n>`,`tasks running at once (default: CPU count)`],[`--max-tasks <n>`,`total tasks the run may dispatch (default: CPU count x 10)`],[`--dry-run`,`print every resolved prompt and gate command without dispatching`]],examples:[[`coder flow run audit-routes --wait`,`run a discovered flow`],[`coder flow run ./scratch/one-off.ts --wait`,`run a flow by path`],[`coder flow run verify --args '{"clusters":["a","b"]}' --wait`,`pass structured input`]]},options:d,args:1/0,async run({options:t,args:[n,...r],cwd:i}){let{startRun:a}=await import(`./executor-BvAA7Cgw.js`).then(e=>e.y);if(!n)throw new e(`invalid-option`,`Missing flow name or path.`,{hint:[`Usage: coder flow run <name|path>`,`List: coder flow discover`]});let o=await a(n,{...h(t,i),args:p(t.args,r)},g(t));return o.status===`running`&&o.watch&&await c(o.watch,t),o},print:e=>e.status===`running`?y(e):l(e)});function v(){let e=new s,t=t=>e.emit(t);return{onTaskStart:e=>t({kind:`task-start`,...e}),onTaskEnd:e=>t({kind:`task-end`,...e}),onGateStart:e=>t({kind:`gate-start`,...e}),onGate:e=>t({kind:`gate`,...e}),onLog:(e,n)=>t({kind:`log`,message:e,depth:n}),onFlowStart:e=>t({kind:`flow-start`,...e}),onReplay:e=>t({kind:`replay`,count:e})}}function y(e){u.stdout.write(`${n.dim(`[flow]`)} run ${n.cyan(e.runId)} started in the background (running).\n`),u.stdout.write(`\n${r([`Result: coder flow result ${e.runId}`,`Runs: coder flow list`],n)}\n`)}export{d as RUN_FLAGS,_ as commandRun,g as hooks,p as parseRunArgs,y as printDetached,h as runOptions};
@@ -0,0 +1,2 @@
1
+ import{p as e}from"./prompt-CEuBMNhk.js";import{i as t,r as n}from"./cli-BilSDkvE.js";import{p as r,s as i}from"./output-BKeyLbvt.js";import{i as a,n as o,s,t as c}from"./args-BOEEdpWk.js";import{printOutcome as l}from"./result-BzaM3inj.js";import{printLine as u}from"./watch-DtRuC0Wc.js";import d from"node:process";const f={...c,flow:s,server:a,workspace:s,wait:o,task:s,yes:o},p=t({name:`agent run --task`,options:f,run:async({options:e,cwd:t})=>{let{agents:n}=await import(`./agent-BsYx3Odz.js`).then(e=>e.t);return n.runTask(e.task,{cwd:t})}}),m=t({name:`agent run`,help:{usage:`coder agent run <agent> <file> [--server [url] [--wait]] [--flow <name>] [--json] [--cwd <dir>]`,summary:`Run a recorded platform event (AgentEvent JSON) through an agent. With --server it goes through your Coder server exactly like a webhook: real app, tokens, runner, and the reply is posted. Without it the engine runs here on the agent's prompt and this checkout, platform tools off, and the reply is printed.`,flags:[n,[`--wait`,`with --server: follow the task log here until it finishes, then print the reply`],[`--flow <name>`,`override the matched flow`]],examples:[[`coder agent run helper sample-slack-mention.json`,`offline: print what the agent would reply`],[`coder agent run helper event.json --server`,`for real, through the server`]]},options:f,args:2,run:async({options:e,args:[t,n],cwd:i})=>{let{agents:a}=await import(`./agent-BsYx3Odz.js`).then(e=>e.t);return a.run(t,n,{...e,cwd:i,organization:e.workspace,...e.json?{}:{onLog:e=>u(e,r),onDone:e=>l(e,r)}})},json:e=>Array.isArray(e)&&e.length===1?e[0]:e,print(t,{options:n}){if(!Array.isArray(t)){if(`tasks`in t){if(!t.tasks.length)return void d.stdout.write(`The server accepted the event but no agent matched it.
2
+ `);d.stdout.write(`${r.bold(`Queued on the server`)} as task ${t.tasks.join(`, `)}.\n\n${i([`Watch it: coder task watch ${t.tasks[0]} --server ${e(n.server)}`],r)}\n`);return}t.reply===void 0?t.result!==void 0&&d.stdout.write(`${JSON.stringify(t.result,null,2)}\n`):d.stdout.write(`${t.reply.trim()}\n`)}}}),h=Object.assign(e=>(e.some(e=>e===`--task`||e.startsWith(`--task=`))?p:m)(e),{commandName:`agent run`,help:m.help});export{h as commandAgentRun};
@@ -0,0 +1 @@
1
+ import{s as e}from"./cli-BilSDkvE.js";const t=e(`runner`,{add:async()=>(await import(`./add-BxpLHnvD.js`)).commandRunnerAdd,default:async()=>(await import(`./default-Bobztoxf.js`)).commandRunnerDefault,test:async()=>(await import(`./test-NEbhlxvo.js`)).commandRunnerTest,serve:async()=>(await import(`./serve-CE8YV2e9.js`)).commandRunnerServe,list:async()=>(await import(`./list-C5w01-8q.js`)).commandRunnerList,rename:async()=>(await import(`./rename-CYfy03FE.js`)).commandRunnerRename,remove:async()=>(await import(`./remove-B93LNkZI.js`)).commandRunnerRemove},{menu:[{usage:`add <kind>`,blurb:`connect a runner`},{usage:`default <id>`,blurb:`set the default in its scope`},{usage:`test <id>`,blurb:`check a runner connection`},{usage:`serve --url <public url>`,blurb:`run your server's tasks on this machine`},{usage:`list`,blurb:`list your runners and the workspace's`},{usage:`rename <id> <name>`,blurb:`rename a runner`},{usage:`remove <id>`,blurb:`remove a runner`}],description:[`Run your Coder server's tasks on your own machine, reached through any tunnel.`],exampleCommand:`runner serve`});export{t as commandRunner};
@@ -0,0 +1 @@
1
+ import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{xt as t}from"./dispatch-BKeAch9E.js";import{n}from"./remote-miQNTVRa.js";var r=e({addRunner:()=>a,addRunnerFields:()=>u,listRunners:()=>i,pairRunner:()=>o,removeRunner:()=>l,testRunner:()=>c,updateRunner:()=>s});const i=(e={})=>n(e).runners.list(),a=(e,t={})=>n(t).runners.add(e),o=(e,t={})=>n(t).runners.pair(e),s=(e,t,r={})=>n(r).runners.update(e,t),c=(e,t={})=>n(t).runners.test(e),l=(e,t={})=>n(t).runners.remove(e);async function u(e,r){let i=n(r),{catalog:a}=await i.runners.list(),o=a.find(t=>t.kind===e);if(!o)throw new t(`invalid-option`,`Unknown runner kind.`);if(!o.available)throw new t(`invalid-option`,o.reason??`Runner unavailable.`);let s={};for(let e of r.field??[]){let n=e.indexOf(`=`);if(n<1)throw new t(`invalid-option`,`Use --field key=value.`);let r=e.slice(0,n),i=e.slice(n+1),a=o.fields.find(e=>e.key===r);if(!a)throw new t(`invalid-option`,`Unknown runner field ${r}.`);if(a.secret){if(!/^env:[A-Z_][A-Z0-9_]*$/.test(i)||!process.env[i.slice(4)])throw new t(`invalid-option`,`Read ${r} from the environment with --field ${r}=env:VARIABLE.`);s[r]=process.env[i.slice(4)]}else s[r]=i}let c=r.scope??((await i.me()).user?`personal`:`workspace`);if(c!==`personal`&&c!==`workspace`)throw new t(`invalid-option`,`Scope must be personal or workspace.`);return o.connect===`pair`?i.runners.pair({name:r.name,scope:c}):i.runners.add({kind:o.kind,name:r.name??o.name,scope:c,config:s})}export{r as a,l as i,i as n,c as o,o as r,s,a as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{sql as t}from"drizzle-orm";import{bigint as n,bigserial as r,boolean as i,index as a,integer as o,jsonb as s,pgSchema as c,primaryKey as l,text as u,timestamp as d,unique as f}from"drizzle-orm/pg-core";var p=e({agent:()=>b,agentVersion:()=>x,chatItem:()=>M,chatState:()=>j,coder:()=>m,engineCredential:()=>T,integrationApp:()=>C,integrationAppInstallation:()=>w,platformLink:()=>y,runner:()=>E,secret:()=>S,tables:()=>N,task:()=>D,taskInbox:()=>O,taskLog:()=>k,usage:()=>A});const m=c(`coder`),h=m.table,g=()=>d({withTimezone:!0}),_={createdAt:g().notNull().defaultNow(),updatedAt:g().notNull().defaultNow()},v={id:r({mode:`number`}).primaryKey(),organizationId:u().notNull()},y=h(`platform_link`,{id:r({mode:`number`}).primaryKey(),platform:u().notNull(),platformUserId:u().notNull(),userId:u().notNull(),name:u().notNull(),email:u().notNull(),organizations:s().$type(),token:u(),createdAt:g().notNull().defaultNow()},e=>[f().on(e.platform,e.platformUserId),a().on(e.userId)]),b=h(`agent`,{...v,slug:u().notNull(),name:u().notNull(),description:u(),source:u().$type().notNull(),repo:u(),path:u(),currentVersion:o().notNull(),settings:s().$type(),..._},e=>[f().on(e.organizationId,e.slug)]),x=h(`agent_version`,{id:r({mode:`number`}).primaryKey(),agentId:n({mode:`number`}).notNull().references(()=>b.id),version:o().notNull(),definition:s().$type().notNull(),systemPrompt:u().notNull(),files:s().$type(),commit:u(),importedFrom:u().notNull(),createdAt:g().notNull().defaultNow()},e=>[f().on(e.agentId,e.version)]),S=h(`secret`,{...v,kind:u().$type().notNull(),iv:u().notNull(),tag:u().notNull(),ciphertext:u().notNull(),keyVersion:o().notNull(),..._},e=>[a().on(e.organizationId,e.kind)]),C=h(`integration_app`,{...v,key:u().notNull(),integration:u().notNull(),platformAppId:u().notNull(),agent:u().notNull(),name:u().notNull(),agentsRepo:u(),branch:u(),credentialsSecretId:n({mode:`number`}).notNull().references(()=>S.id),..._},e=>[f().on(e.organizationId,e.key),f().on(e.integration,e.platformAppId)]),w=h(`integration_app_installation`,{...v,key:u().notNull(),appId:n({mode:`number`}).notNull().references(()=>C.id),platformInstallId:u().notNull(),account:s().$type().notNull(),tokenSecretId:n({mode:`number`}).references(()=>S.id),installer:u(),connections:s().$type(),settings:s().$type(),..._,deletedAt:g()},e=>[f().on(e.key),a().on(e.organizationId,e.appId)]),T=h(`engine_credential`,{...v,secretId:n({mode:`number`}).notNull().references(()=>S.id).unique(),owner:u(),engine:u().$type().notNull(),label:u().notNull(),isDefault:i().notNull().default(!1),account:s().$type(),..._},e=>[f().on(e.organizationId,e.owner,e.label).nullsNotDistinct()]),E=h(`runner`,{...v,publicId:u().notNull(),owner:u(),name:u().notNull(),kind:u().$type().notNull(),scope:u().$type().notNull(),config:s().$type().notNull(),createdBy:u(),isDefault:i().notNull().default(!1),lastSeen:d({withTimezone:!0}),secretId:n({mode:`number`}).notNull().references(()=>S.id),..._},e=>[f().on(e.organizationId,e.publicId)]),D=h(`task`,{...v,publicId:u().notNull(),source:u().$type().notNull(),status:u().$type().notNull(),agent:u().notNull(),flow:u().notNull(),runner:u().notNull(),permissions:u().$type(),appId:n({mode:`number`}).references(()=>C.id),installationId:n({mode:`number`}).references(()=>w.id),event:s().$type(),prompt:u(),args:s().$type(),mcp:s().$type(),author:u(),definition:s().$type().notNull(),credential:u(),requester:u(),runnerId:u(),usage:s().$type(),tools:s().$type().notNull(),toolScopes:s().$type(),context:s().$type(),files:s().$type(),result:s().$type(),error:u(),tokens:s(),handle:u(),tokenHash:u(),lastSeenAt:g(),logCursor:o(),logSeq:o(),logBytes:o(),archivedAt:g(),approval:s(),answer:s(),attempts:o().notNull().default(0),inboxSeq:o().notNull().default(-1),inboxAck:o().notNull().default(-1),generation:o().notNull().default(0),lockedAt:g(),startedAt:g(),finishedAt:g(),cancelRequestedAt:g(),..._},e=>[f().on(e.organizationId,e.publicId),a().on(e.publicId),a().on(e.organizationId,e.createdAt.desc(),e.publicId.desc()),a().on(e.organizationId).where(t`${e.status} = 'queued'`),a().on(e.status,e.createdAt)]),O=h(`task_inbox`,{...v,taskId:n({mode:`number`}).notNull().references(()=>D.id,{onDelete:`cascade`}),seq:o().notNull(),generation:o().notNull().default(0),kind:u().$type().notNull(),value:s(),at:g().notNull()},e=>[f().on(e.taskId,e.seq),a().on(e.taskId,e.generation,e.seq)]),k=h(`task_log`,{...v,taskId:n({mode:`number`}).notNull().references(()=>D.id,{onDelete:`cascade`}),seq:o().notNull(),at:g().notNull(),level:u().$type().notNull(),line:u().notNull()},e=>[f().on(e.taskId,e.seq)]),A=h(`usage`,{...v,taskId:n({mode:`number`}).notNull().references(()=>D.id,{onDelete:`cascade`}).unique(),installationId:n({mode:`number`}).references(()=>w.id),agent:u().notNull(),target:u().notNull(),engine:u(),model:u(),credential:u().notNull(),runnerMs:o().notNull(),tokens:s(),at:g().notNull(),..._},e=>[a().on(e.organizationId,e.at)]),j=h(`chat_state`,{key:u().primaryKey(),value:s().notNull(),expiresAt:g()},e=>[a().on(e.expiresAt).where(t`${e.expiresAt} is not null`)]),M=h(`chat_item`,{key:u().notNull(),seq:n({mode:`number`}).generatedAlwaysAsIdentity(),value:s().notNull(),expiresAt:g()},e=>[l({columns:[e.key,e.seq]}),a().on(e.expiresAt).where(t`${e.expiresAt} is not null`)]),N={platformLink:y,agent:b,agentVersion:x,secret:S,integrationApp:C,integrationAppInstallation:w,engineCredential:T,runner:E,task:D,taskInbox:O,taskLog:k,usage:A,chatState:j,chatItem:M};export{T as a,y as c,S as d,N as f,A as g,k as h,j as i,E as l,O as m,x as n,C as o,D as p,M as r,w as s,b as t,p as u};