@wular/coder 0.4.6 → 0.4.8

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 (842) hide show
  1. package/README.md +2 -2
  2. package/dist/actions-5TDwmn_z.js +20 -0
  3. package/dist/adapter-B2RXnvqt.js +49845 -0
  4. package/dist/adapter-YCvP9H2n.js +94 -0
  5. package/dist/adapter-sKt1J1Cm.js +1 -0
  6. package/dist/add-BDBCRqKN.js +1 -0
  7. package/dist/add-DcR15CL7.js +6 -0
  8. package/dist/add-Df1Ezy3y.js +2 -0
  9. package/dist/add-yIlNqPSu.js +1 -0
  10. package/dist/agent-B2Ikhp7u.js +1 -0
  11. package/dist/agent-C1HI4JlI.js +3 -0
  12. package/dist/alias-DghaKDbh.js +2 -0
  13. package/dist/api-qdpx8FD0.js +1 -0
  14. package/dist/app-snjvOKJA.js +1 -0
  15. package/dist/approvals-BziBKWgU.js +2 -0
  16. package/dist/approve-DAuvq9Eq.js +1 -0
  17. package/dist/approve-DKrTnZfk.js +2 -0
  18. package/dist/apps-aj_JtpAm.js +242 -0
  19. package/dist/archive-BhfGdyuC.js +3 -0
  20. package/dist/archive-DxWYJ7Zi.js +4 -0
  21. package/dist/archive-sweep-CqTQUafj.js +1 -0
  22. package/dist/args-CxsMr9Un.js +1 -0
  23. package/dist/ask-B_si1yM4.js +4 -0
  24. package/dist/auth-B3RiDPMI.js +1 -0
  25. package/dist/auth-Cx4ePjWG.js +1 -0
  26. package/dist/build-CmtlB7pX.js +1 -0
  27. package/dist/builtin/coder/agent.json +19 -4
  28. package/dist/chat-Bbzlea60.js +1 -0
  29. package/dist/chat-DLolwsuq.js +13 -0
  30. package/dist/chat-bridge-CvspGKBc.js +2 -0
  31. package/dist/chunk-7WDLOIRP-B_IWkVtZ.js +1 -0
  32. package/dist/cli-D5hyqGq0.js +9 -0
  33. package/dist/cli.js +1 -1
  34. package/dist/config-BdeKsCPh.js +3 -0
  35. package/dist/config-D2FxHWwi.js +14 -0
  36. package/dist/connection-CQPndo-u.js +1 -0
  37. package/dist/connection-wq0CJZKh.js +1 -0
  38. package/dist/core-DwsAMCnL.js +65 -0
  39. package/dist/create-8_XbAnHs.js +1 -0
  40. package/dist/credentials-BOAy2_-6.js +1 -0
  41. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/boot-8aj7efqk.js +38 -0
  42. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/build-tier-qrkpfsk1.js +2456 -0
  43. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/config-7h84p6q8.js +24 -0
  44. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/generate-d8vb1d21.js +22 -0
  45. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-0qt2vapb.js +483 -0
  46. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-0wm2p3ks.js +207 -0
  47. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-1y0cesgn.js +1071 -0
  48. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-26gwrm07.js +736 -0
  49. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-3r6qpe8a.js +1599 -0
  50. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-42fef2rv.js +86 -0
  51. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-47gx7trn.js +17 -0
  52. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-4qsce64w.js +297 -0
  53. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-6tb725m8.js +851 -0
  54. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-912z4mfx.js +105 -0
  55. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-aarf1brn.js +198 -0
  56. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-cqcwwxfp.js +266 -0
  57. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-e176wk6x.js +1270 -0
  58. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-fpghsgb4.js +352 -0
  59. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-jexsy9a8.js +101 -0
  60. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-jjppzw0s.js +590 -0
  61. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-kpdph69z.js +9438 -0
  62. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-md5jchzy.js +92 -0
  63. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-n814hcky.js +128 -0
  64. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-qjrh7w2g.js +2530 -0
  65. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-s61bx2aj.js +112 -0
  66. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-veycp46e.js +296 -0
  67. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-vqs3rebe.js +472 -0
  68. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-xrsg0041.js +152 -0
  69. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-xs3411qh.js +1299 -0
  70. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-y9bygr95.js +92 -0
  71. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-yghskk8w.js +6166 -0
  72. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-yzcpr3yw.js +107 -0
  73. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-zedjt25v.js +284 -0
  74. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/pipeline-yjdnwbhm.js +836 -0
  75. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/proxy-config-9r9e0jvn.js +23 -0
  76. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/proxy-pnevsbfd.js +35 -0
  77. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/router-rzge0vz8.js +501 -0
  78. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/routes-0x8wjvcj.js +66 -0
  79. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/tsconfig-defaults-qe9wd6ne.js +21 -0
  80. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/cli/start.js +5 -5
  81. package/dist/dash/standalone/node_modules/@wular/pnext/package.json +1 -1
  82. package/dist/dash/standalone/server/build-index.json +1 -1
  83. package/dist/dash/standalone/server/manifest.json +2479 -1458
  84. package/dist/dash/standalone/server/modules-server-server-react-server/src/client/index.8e150ef2bc6a5f4e.js +388 -0
  85. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/defaults.e6ce0944639198a2.js +31 -0
  86. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/errors.5954bd9bd05e8230.js +22 -0
  87. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/task/log-view.871cbff2605b5cfd.js +212 -0
  88. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/load.4f942c7f68b2e273.js +50 -0
  89. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/connect/page.a4ec4bce860e3e71.js +26 -0
  90. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/create/[id]/page.4c818ef18a084013.js +29 -0
  91. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/loading.f8373428f20c270b.js +9 -0
  92. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/notify.b0946ff7951ecc11.js +34 -0
  93. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/page.55eef4b0e71415d9.js +120 -0
  94. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/sign-out.1ee9b7f1343376e9.js +13 -0
  95. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/agent-menu.79e38c6e4139b9de.js +12 -0
  96. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/agents-grid.3a3c550ff68aeb11.js +120 -0
  97. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/connect-apps.7a4cfa5c917e5db9.js +35 -0
  98. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/loading.fd26a5414b0a06db.js +18 -0
  99. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/page.b2bed855b68a77b2.js +70 -0
  100. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/layout.95b8bf3c438955c2.js +122 -0
  101. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/loading.39c596735b108f80.js +5 -0
  102. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/page.1401a08ea4e27c01.js +125 -0
  103. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/loading.2d6e75e5923f73f2.js +29 -0
  104. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/page.848ccc3a609385a9.js +348 -0
  105. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/platform-actions.4b14873a20ebd56c.js +591 -0
  106. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/agent-settings-form.dd8f3cbc00876ebd.js +408 -0
  107. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/loading.80f597fd04fc4a97.js +8 -0
  108. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/page.35d01036ce840ff9.js +46 -0
  109. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/loading.ff54c7100f781fbc.js +5 -0
  110. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/page.e5a405c518c1d8e6.js +11 -0
  111. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/loading.55aa8df7712e6820.js +56 -0
  112. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/page.67c3489c62b661da.js +209 -0
  113. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/versions-list.0c20e2100b321316.js +41 -0
  114. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/loading.2fa9e225a5c42496.js +29 -0
  115. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/page.7132b3ef68d33cc4.js +73 -0
  116. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/agent-pills.19e913c8cb22db21.js +101 -0
  117. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/agent-toggle.ec6d07ccd1f9796e.js +35 -0
  118. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/hero.9de48723967d8546.js +94 -0
  119. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/instructions.6558ffd02a59ad53.js +74 -0
  120. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/connect-repositories.258f6c2c5f1b1b17.js +11 -0
  121. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/editor.9e1a0945f6880076.js +733 -0
  122. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/import-picker.e54af9841da11373.js +209 -0
  123. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/loading.38715a27e2d25ebd.js +30 -0
  124. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/page.6c8e9ef5d72b7ef1.js +56 -0
  125. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/layout.c67ccee8b4770821.js +395 -0
  126. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/operator-apps.3365f9248dfe735d.js +147 -0
  127. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/page.c60ebc5afe4dcdae.js +84 -0
  128. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/page.c720853404d94114.js +11 -0
  129. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/connections-list.544315916300ed07.js +643 -0
  130. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/credentials-list.41ce6eb622300bb3.js +540 -0
  131. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/credentials.c1a312e6ec58db83.js +44 -0
  132. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/engines-list.75dc69caed34ff8f.js +73 -0
  133. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/list.6d6180438e2bd0c8.js +144 -0
  134. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/loading.9d7c30db2ecccda3.js +6 -0
  135. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/models-list.04eb5a47bca3bd09.js +401 -0
  136. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/page.dd00f57d398be882.js +133 -0
  137. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/runners-list.e644287ae91ea8c3.js +336 -0
  138. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/secrets-list.35fa72bf3f00d1af.js +136 -0
  139. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/layout.3a17085fb262e4ab.js +49 -0
  140. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/page.bac05d6e87953d0e.js +11 -0
  141. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/settings-head.a14b9796a8af62dc.js +33 -0
  142. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/tunnel-guide.1fd664df1fd0e3c1.js +33 -0
  143. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/create-link.3acdd50e1cc0c729.js +34 -0
  144. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/outcome-dialog.d730e0bfbe0cf2f8.js +32 -0
  145. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/outcome.cbbc8cd1bbbee01b.js +71 -0
  146. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/page.079600422889e725.js +44 -0
  147. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/activity.ed49ee2686d1ee41.js +318 -0
  148. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/loading.0d973b51fee68801.js +37 -0
  149. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/page.05dd344bada1d4d8.js +24 -0
  150. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/task-actions.ece7ec732352ce70.js +149 -0
  151. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/task-view.8a5908c42647923f.js +604 -0
  152. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/composer-data.ff108c0ef82a4d7b.js +69 -0
  153. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/composer.c7ec618e215d63ce.js +765 -0
  154. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/status.16190fdd5fd7daad.js +16 -0
  155. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/task.af5001e51d2f612b.js +64 -0
  156. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/tasks-list.0976f1812d6d15f5.js +433 -0
  157. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/tasks-section.fd72404364042b87.js +80 -0
  158. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/page.293492d13a9dca2e.js +16 -0
  159. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/custom-range.471edcb853889c2e.js +64 -0
  160. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/day-chart.d40438efa74b0596.js +70 -0
  161. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/loading.5b28c7d8f3a473a3.js +15 -0
  162. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/metric.ada350d2b7449b39.js +10 -0
  163. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/page.69adbf6cde427292.js +133 -0
  164. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/range-bar.884e58b044238e98.js +60 -0
  165. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/stats.de820599cf126120.js +12 -0
  166. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/top-agents.b00f571862b5b608.js +95 -0
  167. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/layout.ab6f86cc5b8b2dab.js +41 -0
  168. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/login/page.088b41424cd6cf3c.js +53 -0
  169. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/auth-panel.5712a8d190b003b4.js +48 -0
  170. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/drawer.0e2e3636f33049f5.js +32 -0
  171. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/foreign-link.fe46528a6a66c0f4.js +28 -0
  172. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/heads.20414ddcb2d08bcd.js +51 -0
  173. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/loading-card.df3717186948c93f.js +64 -0
  174. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/page-head.e5d2185c1cdac740.js +66 -0
  175. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/stream.2fea238dc4f4f9a4.js +39 -0
  176. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/task-toasts.4282affa47415a36.js +408 -0
  177. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/theme-choices.ef190ef1cd197199.js +49 -0
  178. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/back-cookie.942c0904e944d8d6.js +12 -0
  179. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/back.af528135d7e33d6d.js +42 -0
  180. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/current-link.727b350a40b9ca13.js +34 -0
  181. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/org.813dc34bd23a336f.js +29 -0
  182. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/side-toggle.bafcb4b273b1c4d0.js +36 -0
  183. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/to.a2c840c09bd4bf4a.js +13 -0
  184. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/badge.3d9163a51e6f6d6e.js +43 -0
  185. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/card.6227f43fc0ae4bd1.js +74 -0
  186. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/collapse.dab7f208cbbe6a33.js +33 -0
  187. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/combo.0572dd5730c94112.js +115 -0
  188. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/confirm.fe133a074c2743af.js +26 -0
  189. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/copy.9be99c94423eb1ca.js +33 -0
  190. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/field.75588c33b72824a7.js +9 -0
  191. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/filter.4f703a4ce7d2a519.js +252 -0
  192. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/icon.0874ca2f58f7db14.js +19 -0
  193. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/icons.868385119bf2de28.js +39 -0
  194. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/menu.0f064f75822888be.js +123 -0
  195. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/modal.92432959e3a3e2c0.js +67 -0
  196. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/modal.9db07d368dcf5981.css.pnext-asset.js +0 -0
  197. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/notice.f395f231cbb96445.js +13 -0
  198. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/segmented.0bd8652fdbc05eb0.css.pnext-asset.js +0 -0
  199. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/segmented.5ac52bb38fb64ae5.js +38 -0
  200. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/select.32a95ad31c0436ad.css.pnext-asset.js +0 -0
  201. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/select.7f481669998074f8.js +228 -0
  202. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/sentinel.17cffebfc3103b9f.js +59 -0
  203. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/sentinel.1e3ec9bd6008d811.css.pnext-asset.js +0 -0
  204. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/tabs.66b2e54963f6901b.js +28 -0
  205. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/tabs.ca13e40ff54128d0.css.pnext-asset.js +0 -0
  206. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/tail.0a5f3c0595e68610.css.pnext-asset.js +0 -0
  207. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/tail.30913c92f5ca6102.js +25 -0
  208. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/toolbar.40284b41c03c5dcb.css.pnext-asset.js +0 -0
  209. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/toolbar.801bbd3163d3fbb0.js +80 -0
  210. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/action.568346602027ac74.js +34 -0
  211. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/client.d25e6dcc6704eb60.js +59 -0
  212. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/paged.18f5872fc5aebe96.js +153 -0
  213. package/dist/dash/standalone/static/assets/chunks/action-df9907c7a10bf826.js +1 -0
  214. package/dist/dash/standalone/static/assets/chunks/agent-pills-106a518bef96408e.js +1 -0
  215. package/dist/dash/standalone/static/assets/chunks/agent-settings-form-d1aa82950d30d829.js +1 -0
  216. package/dist/dash/standalone/static/assets/chunks/agent-toggle-44667051d8be2040.js +1 -0
  217. package/dist/dash/standalone/static/assets/chunks/agents-grid-69fabb48962a282a.js +1 -0
  218. package/dist/dash/standalone/static/assets/chunks/back-e02e04679467c05b.js +1 -0
  219. package/dist/dash/standalone/static/assets/chunks/badge-b302b4d707908367.js +1 -0
  220. package/dist/dash/standalone/static/assets/chunks/card-31a2cdcfeda5254f.js +1 -0
  221. package/dist/dash/standalone/static/assets/chunks/combo-fd495e7fa91b69ed.js +1 -0
  222. package/dist/dash/standalone/static/assets/chunks/composer-10f0a825a16e1fc7.js +1 -0
  223. package/dist/dash/standalone/static/assets/chunks/composer-8c1198d45f700738.js +1 -0
  224. package/dist/dash/standalone/static/assets/chunks/confirm-7b6112578a1c4877.js +1 -0
  225. package/dist/dash/standalone/static/assets/chunks/connect-apps-bd95a6cbdc89a438.js +1 -0
  226. package/dist/dash/standalone/static/assets/chunks/connect-repositories-569c181ff81509f4.js +1 -0
  227. package/dist/dash/standalone/static/assets/chunks/connections-list-5bbf7321d9bfd08f.js +1 -0
  228. package/dist/dash/standalone/static/assets/chunks/copy-f057128db8aefd1b.js +1 -0
  229. package/dist/dash/standalone/static/assets/chunks/create-link-6f6e6b87e46f67c8.js +1 -0
  230. package/dist/dash/standalone/static/assets/chunks/credentials-list-8fc72c0331289ac6.js +2 -0
  231. package/dist/dash/standalone/static/assets/chunks/custom-range-d06cd17fcc05183d.js +1 -0
  232. package/dist/dash/standalone/static/assets/chunks/defaults-dcc0eccad4e8585b.js +1 -0
  233. package/dist/dash/standalone/static/assets/chunks/editor-b5a9659f85edea17.js +7 -0
  234. package/dist/dash/standalone/static/assets/chunks/engines-list-c10ca5e7410b790f.js +1 -0
  235. package/dist/dash/standalone/static/assets/chunks/field-f40df6a5289dfe05.js +1 -0
  236. package/dist/dash/standalone/static/assets/chunks/filter-966a9aae3b0b6d77.js +1 -0
  237. package/dist/dash/standalone/static/assets/chunks/instructions-c9e1097c4e1b352a.js +2 -0
  238. package/dist/dash/standalone/static/assets/chunks/instructions-e969d4439f6676c9.js +1 -0
  239. package/dist/dash/standalone/static/assets/chunks/list-5db1dd782965a5fc.js +1 -0
  240. package/dist/dash/standalone/static/assets/chunks/model-options-3a57918eaa4a2a82.js +1 -0
  241. package/dist/dash/standalone/static/assets/chunks/models-list-b6237067c9a39f97.js +1 -0
  242. package/dist/dash/standalone/static/assets/chunks/notice-84358e912a9f01cc.js +1 -0
  243. package/dist/dash/standalone/static/assets/chunks/outcome-dialog-c4f75d37645035b8.js +1 -0
  244. package/dist/dash/standalone/static/assets/chunks/paged-c44eccacea100110.js +1 -0
  245. package/dist/dash/standalone/static/assets/chunks/platform-actions-6004e96f54953935.js +1 -0
  246. package/dist/dash/standalone/static/assets/chunks/platform-actions-d8dd016336a3d768.js +1 -0
  247. package/dist/dash/standalone/static/assets/chunks/runners-list-0b288b2b79de8968.js +1 -0
  248. package/dist/dash/standalone/static/assets/chunks/secrets-list-64650cb827e93322.js +1 -0
  249. package/dist/dash/standalone/static/assets/chunks/segmented-5423dcc766dc7abc.js +1 -0
  250. package/dist/dash/standalone/static/assets/chunks/select-53722330d2e3f1c6.js +1 -0
  251. package/dist/dash/standalone/static/assets/chunks/shared-init-35a0e9007eeca198.js +2 -0
  252. package/dist/dash/standalone/static/assets/chunks/shared-init-a7f2e71a718bc285.js +5 -0
  253. package/dist/dash/standalone/static/assets/chunks/shared-init-b8184e0e554d5aa4.js +1 -0
  254. package/dist/dash/standalone/static/assets/chunks/shared-init-e0aa7cbf9ac680b5.js +1 -0
  255. package/dist/dash/standalone/static/assets/chunks/side-toggle-34ee3bbe5ac64a60.js +1 -0
  256. package/dist/dash/standalone/static/assets/chunks/tail-7dece33a58f72850.js +1 -0
  257. package/dist/dash/standalone/static/assets/chunks/task-6ae2bb4f1b384140.js +1 -0
  258. package/dist/dash/standalone/static/assets/chunks/task-actions-b36dc5fcd9b2b2c5.js +1 -0
  259. package/dist/dash/standalone/static/assets/chunks/task-view-1696d47594c6dbfa.js +5 -0
  260. package/dist/dash/standalone/static/assets/chunks/tasks-list-7c70210e7121b95a.js +1 -0
  261. package/dist/dash/standalone/static/assets/chunks/versions-list-26475f0d05e2d434.js +1 -0
  262. package/dist/dash/standalone/static/assets/connect-b73a327c12fa5c63.css +1 -0
  263. package/dist/dash/standalone/static/assets/create-param-id-d679f8832eafd7e8.css +1 -0
  264. package/dist/dash/standalone/static/assets/dash-param-org-14abc8f62d04dc4c.css +1 -0
  265. package/dist/dash/standalone/static/assets/dash-param-org-account-aba6d7e7f99c97cb.css +1 -0
  266. package/dist/dash/standalone/static/assets/dash-param-org-agents-570ddee6de22492e.css +1 -0
  267. package/dist/dash/standalone/static/assets/dash-param-org-agents-new-9fa9b19084b3cd2f.css +1 -0
  268. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-0e7e591f05cbddf5.css +1 -0
  269. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-f16fb90321952887.css +1 -0
  270. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-5cf30b084239d643.css +1 -0
  271. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-1c84b31df8c64b88.css +1 -0
  272. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-7da323ffa5be29aa.css +1 -0
  273. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-4900a42b805e90cb.css +1 -0
  274. package/dist/dash/standalone/static/assets/dash-param-org-operator-2f4e497a01a78f29.css +1 -0
  275. package/dist/dash/standalone/static/assets/dash-param-org-settings-0ea983332482dbc6.css +1 -0
  276. package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-e1c1f81610bb925f.css +1 -0
  277. package/dist/dash/standalone/static/assets/dash-param-org-setup-6824fce3862dbb43.css +1 -0
  278. package/dist/dash/standalone/static/assets/dash-param-org-tasks-f914c28afa705d66.css +1 -0
  279. package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-65c8bb06f94ff868.css +1 -0
  280. package/dist/dash/standalone/static/assets/dash-param-org-usage-5dbb2aa369c46eed.css +1 -0
  281. package/dist/dash/standalone/static/assets/global-eecd2b20d5e4b08d.css +1 -0
  282. package/dist/dash/standalone/static/assets/login-ca4c0cd7d65b3269.css +1 -0
  283. package/dist/dash/standalone/static/assets/pnext-client-0bcd0cbf2549bdf2.js +1 -0
  284. package/dist/dash/standalone/static/assets/pnext-client-22414b6c8a870c92.js +1 -0
  285. package/dist/dash/standalone/static/assets/pnext-client-2a02ab5209cae1ea.js +1 -0
  286. package/dist/dash/standalone/static/assets/pnext-client-46d843cfdabf3e71.js +1 -0
  287. package/dist/dash/standalone/static/assets/pnext-client-5a50a2a4da7e870e.js +1 -0
  288. package/dist/dash/standalone/static/assets/pnext-client-5b6ea850cead1482.js +1 -0
  289. package/dist/dash/standalone/static/assets/pnext-client-5b94497ba23568a8.js +1 -0
  290. package/dist/dash/standalone/static/assets/pnext-client-6686f1714e481293.js +1 -0
  291. package/dist/dash/standalone/static/assets/pnext-client-67155accb837a12a.js +1 -0
  292. package/dist/dash/standalone/static/assets/pnext-client-7db5d810ee904f4b.js +1 -0
  293. package/dist/dash/standalone/static/assets/pnext-client-8d779b89650f4b7a.js +1 -0
  294. package/dist/dash/standalone/static/assets/pnext-client-9d7a7a634c9be6ac.js +1 -0
  295. package/dist/dash/standalone/static/assets/pnext-client-9edebc462604c881.js +1 -0
  296. package/dist/dash/standalone/static/assets/pnext-client-aa5a424e38b430a5.js +1 -0
  297. package/dist/dash/standalone/static/assets/pnext-client-b983cd476c808b15.js +1 -0
  298. package/dist/dash/standalone/static/assets/pnext-client-bdf1cb75a3de35ea.js +1 -0
  299. package/dist/dash/standalone/static/assets/pnext-client-c5177dd613b27b84.js +1 -0
  300. package/dist/dash/standalone/static/assets/pnext-client-d998d7077d159f68.js +1 -0
  301. package/dist/dash/standalone/static/assets/pnext-client-f01c6d0c6beb582b.js +1 -0
  302. package/dist/dash/standalone/static/assets/pnext-client-fd4c0f3ecbcc461c.js +1 -0
  303. package/dist/default-CNhVH61w.js +1 -0
  304. package/dist/default-dQC33jLt.js +1 -0
  305. package/dist/delete-BDOtztW_.js +2 -0
  306. package/dist/delete-Dbo9goyQ.js +4 -0
  307. package/dist/disable-VvU6oDku.js +1 -0
  308. package/dist/discover-CBP4Uw0N.js +1 -0
  309. package/dist/discover-hpHsnxqU.js +3 -0
  310. package/dist/dispatch-D3Dqxijf.js +8 -0
  311. package/dist/dist-BTornX7Y.js +101 -0
  312. package/dist/dist-C3wD7GfG.js +4 -0
  313. package/dist/dist-DkATuPBB.js +6 -0
  314. package/dist/dist-node-Bv1kCqyi.js +20 -0
  315. package/dist/docs-3SW1O9iS.js +2 -0
  316. package/dist/docs-CYMICGEv.js +2 -0
  317. package/dist/enable-BmvNVDHO.js +1 -0
  318. package/dist/env-C_DoQYl5.js +1 -0
  319. package/dist/exec-BsXFIdTl.js +11 -0
  320. package/dist/executor-5j-Ewzzb.js +11 -0
  321. package/dist/flow/builtin/review.d.ts +1 -156
  322. package/dist/flow/builtin/review.js +7 -7
  323. package/dist/flow/index.d.ts +1 -1
  324. package/dist/flow/index.js +1 -1
  325. package/dist/flow-4Rr-2NUz.js +1 -0
  326. package/dist/http-BYMXT_p6.js +1 -0
  327. package/dist/index-CVjkwYeS.d.ts +467 -0
  328. package/dist/init-kZdO2PF5.js +1 -0
  329. package/dist/integrations-35T26qmP.js +1 -0
  330. package/dist/integrations-D3OgJk6Y.js +1 -0
  331. package/dist/lib/broker.js +2 -2
  332. package/dist/list-CLqNS8_q.js +4 -0
  333. package/dist/list-CbN2giPy.js +1 -0
  334. package/dist/list-ChFFjT_a.js +2 -0
  335. package/dist/list-D0NK3Iqu.js +3 -0
  336. package/dist/list-D2eSpGoo.js +1 -0
  337. package/dist/list-D3LCULQt.js +1 -0
  338. package/dist/list-P2Ztf1bQ.js +4 -0
  339. package/dist/list-uS9iEE0F.js +1 -0
  340. package/dist/load-CRmQB1LD.js +2 -0
  341. package/dist/local-XNsjb-UM.js +1 -0
  342. package/dist/log-view-DB4nXHXO.js +3 -0
  343. package/dist/login-BoOBMH4y.js +1 -0
  344. package/dist/login-CCA0uLsW.js +1 -0
  345. package/dist/logout-Cv0cm9F8.js +1 -0
  346. package/dist/maintenance-B_79IJ_E.js +1 -0
  347. package/dist/match-Kt3vFTl1.js +1 -0
  348. package/dist/mcp-C13n4A3y.js +12 -0
  349. package/dist/mcp-YhyTUMIM.js +11 -0
  350. package/dist/model-0sxp5GdI.js +1 -0
  351. package/dist/models-CdvmuaLv.js +1 -0
  352. package/dist/prompt-C--TI1qn.js +8 -0
  353. package/dist/push-IpLeKMp-.js +1 -0
  354. package/dist/reconnect-CR3RaXX0.js +1 -0
  355. package/dist/refresh-D0YjtXBD.js +1 -0
  356. package/dist/remote-oQs6My_3.js +1 -0
  357. package/dist/remove-B01SXfEq.js +1 -0
  358. package/dist/remove-C9eahMDh.js +1 -0
  359. package/dist/remove-D1UOd48O.js +1 -0
  360. package/dist/remove-D65xtbw5.js +1 -0
  361. package/dist/rename-Qwr_XDxD.js +1 -0
  362. package/dist/result-70jciKDJ.js +5 -0
  363. package/dist/result-DXL9N9Ip.js +18 -0
  364. package/dist/resume-xqhwHn3l.js +3 -0
  365. package/dist/review-D-U_2KyT.d.ts +157 -0
  366. package/dist/review-vlPAshsb.js +7 -0
  367. package/dist/rotate-key-CfeZ6Rg7.js +1 -0
  368. package/dist/run-CoTg7SkY.js +2 -0
  369. package/dist/run-CvdayZfK.js +5 -0
  370. package/dist/run-VOuS-hHe.js +2 -0
  371. package/dist/runner-D0TLZrrO.js +1 -0
  372. package/dist/runner-DME7ohjt.js +1 -0
  373. package/dist/runners-UNKPlmYE.js +36 -0
  374. package/dist/schema-BSlHRFSP.js +8 -0
  375. package/dist/schema.config.d.ts +12 -0
  376. package/dist/schema.config.js +1 -0
  377. package/dist/schema.d.ts +2 -0
  378. package/dist/schema.js +1 -0
  379. package/dist/sdk-4Vjo5Q6R.d.ts +12371 -0
  380. package/dist/sdk.d.ts +5 -1549
  381. package/dist/sdk.js +1 -1
  382. package/dist/serve-BQsv2KZs.js +1 -0
  383. package/dist/serve-BoTW4P2G.js +2 -0
  384. package/dist/serve-ByWMT5Gm.js +1 -0
  385. package/dist/serve-HNXk3HMY.js +9 -0
  386. package/dist/server-B1x8gx33.js +1 -0
  387. package/dist/setup-host-DExG-bWZ.js +6 -0
  388. package/dist/show-BeacgzZ0.js +1 -0
  389. package/dist/show-D3OC0c35.js +1 -0
  390. package/dist/slack-C_RlVDz7.js +3 -0
  391. package/dist/status-ZN0HYtLa.js +1 -0
  392. package/dist/steer-DwSC8AO4.js +4 -0
  393. package/dist/stop-CEEiI1RA.js +1 -0
  394. package/dist/stop-DTzpTbg1.js +3 -0
  395. package/dist/task-4gw9OZun.js +1 -0
  396. package/dist/task-CB-j4EO8.js +5 -0
  397. package/dist/task-IoBYe7ok.js +1 -0
  398. package/dist/test-BnGF24Hg.js +1 -0
  399. package/dist/tools-ar-D3jOh.js +1 -0
  400. package/dist/types-B42Oh0zF.js +1 -0
  401. package/dist/types-BktBEKW5.d.ts +1710 -0
  402. package/dist/unalias-9AwJnbpE.js +1 -0
  403. package/dist/update-DoJEPBvm.js +2 -0
  404. package/dist/upgrade-DRPBwDYe.js +2 -0
  405. package/dist/usage-CItBLFFE.js +1 -0
  406. package/dist/views-BhsnL0nr.js +5 -0
  407. package/dist/watch-BMuVZorc.js +9 -0
  408. package/dist/watch-Bl_pCGfq.js +5 -0
  409. package/dist/wire-B5rc5Av6.js +1 -0
  410. package/dist/worker-BFGETvid.js +1 -0
  411. package/dist/worker-BiJ7jiOr.js +9 -0
  412. package/dist/workflow-CcC-xbfp.js +1 -0
  413. package/dist/zod-BoqHoRCH.js +1 -0
  414. package/dist/zod.d.ts +3 -0
  415. package/dist/zod.js +1 -0
  416. package/docs/agents/coder.md +9 -2
  417. package/docs/agents/index.md +28 -18
  418. package/docs/cli.md +24 -13
  419. package/docs/config.md +1 -1
  420. package/docs/dash.md +3 -3
  421. package/docs/flows.md +3 -3
  422. package/docs/mcp.md +8 -16
  423. package/docs/sdk.md +4 -4
  424. package/docs/self-host.md +30 -19
  425. package/package.json +23 -15
  426. package/plugins/claude/.claude-plugin/plugin.json +1 -1
  427. package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
  428. package/dist/actions-CmfXOVXQ.js +0 -20
  429. package/dist/adapter-7SEiVsmp.js +0 -1
  430. package/dist/adapter-BLEfUqoQ.js +0 -1
  431. package/dist/adapter-DaiJMOYo.js +0 -1
  432. package/dist/adapter-H4GlcKQz.js +0 -1
  433. package/dist/adapter-PeKziOUg.js +0 -1
  434. package/dist/add-BIp1t_pT.js +0 -1
  435. package/dist/add-CKENklTr.js +0 -6
  436. package/dist/add-DrbKvzAF.js +0 -1
  437. package/dist/add-KkLx1WbE.js +0 -1
  438. package/dist/add-json-GHTfZV_U.js +0 -1
  439. package/dist/agent-CR8UFMa-.js +0 -1
  440. package/dist/agent-D0pQ_ewc.js +0 -3
  441. package/dist/alias--pfI-nvH.js +0 -2
  442. package/dist/app-C7sw1ZkI.js +0 -1
  443. package/dist/approvals-9-G-QxOy.js +0 -2
  444. package/dist/approve-CAk8qPqG.js +0 -2
  445. package/dist/apps-CaHoLNE7.js +0 -1
  446. package/dist/archive-Ylxh0HIl.js +0 -3
  447. package/dist/archive-fs5RjYHc.js +0 -4
  448. package/dist/archive-sweep-BrqWj4kr.js +0 -1
  449. package/dist/args-DEMOfLz2.js +0 -1
  450. package/dist/ask-Dmk0HGtI.js +0 -4
  451. package/dist/auth-CS0cH0gq.js +0 -1
  452. package/dist/auth-cZ0FrkBv.js +0 -1
  453. package/dist/chat-3Znsevah.js +0 -1
  454. package/dist/chat-bridge-18koyS7c.js +0 -2
  455. package/dist/chat-cknlIhVh.js +0 -13
  456. package/dist/cli-IfrPgeYz.js +0 -9
  457. package/dist/cli.d.ts +0 -71
  458. package/dist/client-31YzOj-i.js +0 -1
  459. package/dist/config-Duf8jCkd.js +0 -3
  460. package/dist/create-Ik613gJw.js +0 -1
  461. package/dist/credentials-Dxpb5jCT.js +0 -1
  462. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/boot-bhemypxz.js +0 -38
  463. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/build-tier-0a96kmx3.js +0 -2456
  464. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/config-0tvz03a6.js +0 -24
  465. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/generate-myw9hef7.js +0 -22
  466. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-0yjv5v47.js +0 -105
  467. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-11xpbfej.js +0 -17
  468. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-29pq0kax.js +0 -590
  469. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-3e075kny.js +0 -128
  470. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-3ycf5ckv.js +0 -472
  471. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-4da76t62.js +0 -297
  472. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-71885zaq.js +0 -284
  473. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-8ct7rqy3.js +0 -198
  474. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-9hz3s0m8.js +0 -851
  475. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-b7j671dj.js +0 -207
  476. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-cn86z041.js +0 -296
  477. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-cvr4z22m.js +0 -92
  478. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-d158y67j.js +0 -152
  479. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-dgr390q7.js +0 -9438
  480. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-gcmj16xy.js +0 -92
  481. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-gkndxkxf.js +0 -736
  482. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-hdbwtdv2.js +0 -352
  483. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-he6n2bvp.js +0 -1270
  484. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-j681c48a.js +0 -2530
  485. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-jn9rbhrx.js +0 -1599
  486. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-kdhxpwyq.js +0 -483
  487. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-n629dy38.js +0 -1071
  488. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-nf3df4jy.js +0 -266
  489. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-qcrvt6er.js +0 -112
  490. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-rgj5mx84.js +0 -101
  491. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-tq3b39a5.js +0 -107
  492. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-x2m17v9c.js +0 -6166
  493. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-xh1nbk46.js +0 -1299
  494. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-yrjkqtfj.js +0 -86
  495. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/pipeline-4t9q43ht.js +0 -836
  496. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/proxy-config-60gprphe.js +0 -23
  497. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/proxy-gfhmktbk.js +0 -35
  498. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/router-xnrva921.js +0 -501
  499. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/routes-ht868pdc.js +0 -66
  500. package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/tsconfig-defaults-bcn34eqb.js +0 -21
  501. package/dist/dash/standalone/server/modules-server-server-react-server/src/client/index.2feb1c162fab6033.js +0 -336
  502. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/defaults.f8b4eee28e030eda.js +0 -27
  503. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/errors.5e991e43e42bd943.js +0 -21
  504. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/task/log-view.d6aae19495a81adb.js +0 -211
  505. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/load.bdbf17006af803d1.js +0 -45
  506. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/connect/page.0a054a6c9dda53b3.js +0 -23
  507. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/account/loading.02d57ab48022f8d8.js +0 -9
  508. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/account/notify.b7451fdf9c3bb62a.js +0 -34
  509. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/account/page.f9ab6ed02876880e.js +0 -113
  510. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/account/sign-out.3368aed882d8f1ac.js +0 -13
  511. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/agent-menu.e4b6d486442476b5.js +0 -12
  512. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/agents-grid.0dbc57156286a18e.js +0 -118
  513. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/connect-apps.3a5673bcd9aa57d9.js +0 -42
  514. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/loading.8df9f4459410cfaa.js +0 -18
  515. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/page.8f85fbaff456c5fe.js +0 -71
  516. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/layout.d3aec63db0f5230d.js +0 -105
  517. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/loading.d53d174ffe56aab3.js +0 -5
  518. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/page.7fd1bfcf08e25919.js +0 -116
  519. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/loading.849dc6e6050a7e21.js +0 -10
  520. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/page.31687af871d75d39.js +0 -170
  521. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/platform-actions.754eff65aec1ab59.js +0 -70
  522. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/agent-settings-form.861ed9832cbe89c1.js +0 -268
  523. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/loading.2ec7a3b893925df0.js +0 -8
  524. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/page.1ed5379637860fab.js +0 -35
  525. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/tasks/loading.20a52282c5806719.js +0 -5
  526. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/tasks/page.4fd369ba79ed9943.js +0 -11
  527. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/loading.43b58c5eef3d4253.js +0 -48
  528. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/page.78bf188a8077c64e.js +0 -160
  529. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/versions-list.0c6811b66b2fcc49.js +0 -41
  530. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/edit/loading.a18042397ffeaf55.js +0 -29
  531. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/edit/page.1798dbd9cd334e8f.js +0 -69
  532. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/agent-pills.c5710a4f634f9d6a.js +0 -67
  533. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/hero.e5c5af2f9fab6a63.js +0 -62
  534. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/instructions.403838f7cb218391.js +0 -74
  535. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/editor/connect-repositories.6c7088fd2fcd54f4.js +0 -11
  536. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/editor/editor.4b164e6eb19daa2f.js +0 -691
  537. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/editor/import-picker.4bff9b5642aeab17.js +0 -214
  538. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/new/loading.72e1b274c475e39a.js +0 -28
  539. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/new/page.44f60b1a32344f70.js +0 -55
  540. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/layout.96376d18592adfa9.js +0 -391
  541. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/page.669f5926ae12d101.js +0 -10
  542. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/credentials-list.3fbc413d972a0447.js +0 -538
  543. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/credentials.6423846391b20446.js +0 -34
  544. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/engines-list.5bad79f0d4e12e07.js +0 -75
  545. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/list.2cafbe93b7b2dc0f.js +0 -172
  546. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/loading.1a810cc50ea61706.js +0 -6
  547. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/mcp-list.1fc0f6165dd85b8c.js +0 -249
  548. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/models-list.520cb30b291794c3.js +0 -396
  549. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/page.04b07f9c365be073.js +0 -86
  550. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/runners-list.67786d7d51692d19.js +0 -380
  551. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/layout.a619ac4fe999d1b5.js +0 -39
  552. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/page.5edeae58f2154a50.js +0 -6
  553. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/settings-head.d726e31e4dd04d60.js +0 -32
  554. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/tunnel-guide.22448081e9e042d6.js +0 -31
  555. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/activity.b23683e6be363068.js +0 -177
  556. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/loading.a8f2aa099bd76606.js +0 -37
  557. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/page.d1ded90712ca586f.js +0 -24
  558. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/task-actions.f2be118dd5a02896.js +0 -184
  559. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/task-view.97433b52e6f7175c.js +0 -593
  560. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/composer-data.e2d442d6ecbaa6d3.js +0 -63
  561. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/composer.78b7d3000d615c7c.js +0 -730
  562. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/list/status.d78e769ff1411932.js +0 -16
  563. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/list/task.674ebeabafa0a7e1.js +0 -53
  564. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/list/tasks-list.9698bdff71c3b3c7.js +0 -429
  565. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/list/tasks-section.c77194f05c3f58fb.js +0 -79
  566. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/page.157ac3a0938206b0.js +0 -16
  567. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/custom-range.9343f6115e244cb4.js +0 -64
  568. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/day-chart.c7f6c8981a7acb15.js +0 -70
  569. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/loading.1716941ff725f152.js +0 -15
  570. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/metric.5481ab0e025e218e.js +0 -10
  571. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/page.4159d729e8aa0439.js +0 -132
  572. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/range-bar.8c9b18116c8eb5f0.js +0 -60
  573. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/stats.7b8db8c56920b311.js +0 -12
  574. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/top-agents.8af5d53eb64bae9c.js +0 -89
  575. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/layout.77960a272f19bf24.js +0 -41
  576. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/login/page.33464bce52044759.js +0 -50
  577. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/auth-panel.3e020d19aa5ab464.js +0 -48
  578. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/drawer.cf0eb4936a2c7222.js +0 -30
  579. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/heads.5407f7793f985b16.js +0 -47
  580. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/loading-card.9648c7782502babc.js +0 -64
  581. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/page-head.857951b5dc1ad827.js +0 -65
  582. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/stream.4c04416dab6ffc52.js +0 -39
  583. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/task-toasts.b14bb1f66ed75e75.js +0 -324
  584. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/theme-choices.60d3a5adbd49989f.js +0 -49
  585. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/current-link.87758179b507850c.js +0 -34
  586. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/side-toggle.581456c353d76d67.js +0 -36
  587. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/to.248665fde7daaf07.js +0 -11
  588. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/badge.e52db98d78836f9a.js +0 -31
  589. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/card.e6876039e375b849.js +0 -40
  590. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/collapse.730d674a8f7eeeae.js +0 -33
  591. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/combo.d478120a76502dd1.js +0 -115
  592. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/confirm.cd23ea20bdf120d2.js +0 -53
  593. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/field.37f93068217e1470.js +0 -16
  594. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/filter.3e8df59ca8abf397.js +0 -252
  595. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/icon.93605083edf7efe3.js +0 -19
  596. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/icons.e17bdd0b5504787f.js +0 -36
  597. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/menu.3b3026ecd4dc31f0.js +0 -103
  598. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/segmented.620f07f6b949d7f1.js +0 -38
  599. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/select.14e820c8a26ab8b5.js +0 -218
  600. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/sentinel.50afec82b0fd53a1.js +0 -59
  601. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/tabs.051c87be5bbb7f2b.js +0 -27
  602. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/tail.2d57d68076cef3e1.js +0 -25
  603. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/toolbar.32503820243ede06.js +0 -80
  604. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/client.f37a313f4811ddb8.js +0 -26
  605. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/paged.64ead375df845ff2.js +0 -152
  606. package/dist/dash/standalone/static/assets/chunks/agent-pills-65087e563e7f928c.js +0 -1
  607. package/dist/dash/standalone/static/assets/chunks/agent-settings-form-51f5d16c5b35b0c4.js +0 -1
  608. package/dist/dash/standalone/static/assets/chunks/agents-grid-8d8fb47aa05c1022.js +0 -1
  609. package/dist/dash/standalone/static/assets/chunks/badge-b8e1e1429e8418e8.js +0 -1
  610. package/dist/dash/standalone/static/assets/chunks/card-abb16544e8e5a5e0.js +0 -1
  611. package/dist/dash/standalone/static/assets/chunks/combo-0feaff3c2ab55606.js +0 -1
  612. package/dist/dash/standalone/static/assets/chunks/composer-08a1aad17120af8a.js +0 -1
  613. package/dist/dash/standalone/static/assets/chunks/composer-261cde2206340a07.js +0 -1
  614. package/dist/dash/standalone/static/assets/chunks/composer-data-6f7608fed13f3dd7.js +0 -1
  615. package/dist/dash/standalone/static/assets/chunks/confirm-d804955ec454f00f.js +0 -1
  616. package/dist/dash/standalone/static/assets/chunks/connect-apps-c4b8fc9d3a25e545.js +0 -1
  617. package/dist/dash/standalone/static/assets/chunks/connect-repositories-2cf520006ed18949.js +0 -1
  618. package/dist/dash/standalone/static/assets/chunks/credentials-list-a1b81c1b630a8415.js +0 -2
  619. package/dist/dash/standalone/static/assets/chunks/custom-range-79011164d1e2529c.js +0 -1
  620. package/dist/dash/standalone/static/assets/chunks/editor-b86137d54feb4ba1.js +0 -7
  621. package/dist/dash/standalone/static/assets/chunks/engines-list-0cf0dd6427e45add.js +0 -1
  622. package/dist/dash/standalone/static/assets/chunks/field-329f272ef3edae30.js +0 -1
  623. package/dist/dash/standalone/static/assets/chunks/filter-673d0e6dbc95293c.js +0 -1
  624. package/dist/dash/standalone/static/assets/chunks/heads-bdb3900291e3ba2c.js +0 -1
  625. package/dist/dash/standalone/static/assets/chunks/instructions-7f289881a4d96d85.js +0 -2
  626. package/dist/dash/standalone/static/assets/chunks/instructions-c175184f89172c15.js +0 -1
  627. package/dist/dash/standalone/static/assets/chunks/list-074a086ab5e19d77.js +0 -1
  628. package/dist/dash/standalone/static/assets/chunks/mcp-list-c97f883efa3f7d03.js +0 -1
  629. package/dist/dash/standalone/static/assets/chunks/model-options-15c53331a2f28a4f.js +0 -1
  630. package/dist/dash/standalone/static/assets/chunks/models-list-3f869a70740e4244.js +0 -1
  631. package/dist/dash/standalone/static/assets/chunks/paged-3ddb6077bef42752.js +0 -1
  632. package/dist/dash/standalone/static/assets/chunks/platform-actions-b317343915219089.js +0 -1
  633. package/dist/dash/standalone/static/assets/chunks/runners-list-33a7339bd7cb3e18.js +0 -1
  634. package/dist/dash/standalone/static/assets/chunks/segmented-c9d58f98a7d32b4d.js +0 -1
  635. package/dist/dash/standalone/static/assets/chunks/select-f4ea2f12a2298e4a.js +0 -1
  636. package/dist/dash/standalone/static/assets/chunks/sentinel-9e882d8ad784d4bd.js +0 -1
  637. package/dist/dash/standalone/static/assets/chunks/shared-init-8f2ac936c95a7f7b.js +0 -1
  638. package/dist/dash/standalone/static/assets/chunks/shared-init-bee5eaed36ee3dc4.js +0 -5
  639. package/dist/dash/standalone/static/assets/chunks/shared-init-cf66e1c1a2f30ef1.js +0 -2
  640. package/dist/dash/standalone/static/assets/chunks/tail-5a5f739bca637202.js +0 -1
  641. package/dist/dash/standalone/static/assets/chunks/task-actions-37ed047ca8c5b129.js +0 -1
  642. package/dist/dash/standalone/static/assets/chunks/task-ddfddeaf07fb684c.js +0 -1
  643. package/dist/dash/standalone/static/assets/chunks/task-view-efe402c64d6a3c9b.js +0 -5
  644. package/dist/dash/standalone/static/assets/chunks/tasks-list-eae2a32d61b437c5.js +0 -1
  645. package/dist/dash/standalone/static/assets/chunks/toolbar-7aee851cfcc688cc.js +0 -1
  646. package/dist/dash/standalone/static/assets/chunks/versions-list-836e397952b5d251.js +0 -1
  647. package/dist/dash/standalone/static/assets/connect-382b1729a7ae7808.css +0 -1
  648. package/dist/dash/standalone/static/assets/dash-49ca85b59ac65c20.css +0 -1
  649. package/dist/dash/standalone/static/assets/dash-account-edc56e85dbaaabe0.css +0 -1
  650. package/dist/dash/standalone/static/assets/dash-agents-edba57b67e4005d0.css +0 -1
  651. package/dist/dash/standalone/static/assets/dash-agents-new-fe22253fbada2fbf.css +0 -1
  652. package/dist/dash/standalone/static/assets/dash-agents-param-slug-adf52e9dacb2d825.css +0 -1
  653. package/dist/dash/standalone/static/assets/dash-agents-param-slug-edit-a2937a347689ef29.css +0 -1
  654. package/dist/dash/standalone/static/assets/dash-agents-param-slug-platforms-265ba13db32a460d.css +0 -1
  655. package/dist/dash/standalone/static/assets/dash-agents-param-slug-settings-8afc52eb0372bc4b.css +0 -1
  656. package/dist/dash/standalone/static/assets/dash-agents-param-slug-tasks-6193e646be68dbd2.css +0 -1
  657. package/dist/dash/standalone/static/assets/dash-agents-param-slug-usage-ceadb3a1c911c402.css +0 -1
  658. package/dist/dash/standalone/static/assets/dash-settings-cf1997cd7f72e518.css +0 -1
  659. package/dist/dash/standalone/static/assets/dash-settings-param-tab-b44dac8e79a560e6.css +0 -1
  660. package/dist/dash/standalone/static/assets/dash-tasks-916c7100a8058aa3.css +0 -1
  661. package/dist/dash/standalone/static/assets/dash-tasks-param-id-24265771fd1e3f78.css +0 -1
  662. package/dist/dash/standalone/static/assets/dash-usage-40940b289f85e0b6.css +0 -1
  663. package/dist/dash/standalone/static/assets/global-d2adbf01910d9df5.css +0 -1
  664. package/dist/dash/standalone/static/assets/login-c129b1ce237be260.css +0 -1
  665. package/dist/dash/standalone/static/assets/pnext-client-00c2425020b8564c.js +0 -1
  666. package/dist/dash/standalone/static/assets/pnext-client-091090fd50a6c9cd.js +0 -1
  667. package/dist/dash/standalone/static/assets/pnext-client-0b8b6a688cfb5246.js +0 -1
  668. package/dist/dash/standalone/static/assets/pnext-client-0cc2ff4668470e6f.js +0 -1
  669. package/dist/dash/standalone/static/assets/pnext-client-11f56cbcfd2a3fca.js +0 -1
  670. package/dist/dash/standalone/static/assets/pnext-client-146cb2e293fd710e.js +0 -1
  671. package/dist/dash/standalone/static/assets/pnext-client-1cdaef1ffee188d4.js +0 -1
  672. package/dist/dash/standalone/static/assets/pnext-client-3298ffa52f79e244.js +0 -1
  673. package/dist/dash/standalone/static/assets/pnext-client-415baafb72caaf21.js +0 -1
  674. package/dist/dash/standalone/static/assets/pnext-client-50de47aa1f3aed6f.js +0 -1
  675. package/dist/dash/standalone/static/assets/pnext-client-802be87d22e144c4.js +0 -1
  676. package/dist/dash/standalone/static/assets/pnext-client-9ec55ee4d6315657.js +0 -1
  677. package/dist/dash/standalone/static/assets/pnext-client-9fb279f4c6135368.js +0 -1
  678. package/dist/dash/standalone/static/assets/pnext-client-a543b7bfddcdae35.js +0 -1
  679. package/dist/dash/standalone/static/assets/pnext-client-a9f7e73b9a3252b9.js +0 -1
  680. package/dist/dash/standalone/static/assets/pnext-client-e9f4f42456943129.js +0 -1
  681. package/dist/default-BfXXngYf.js +0 -1
  682. package/dist/default-zMKQ15xH.js +0 -1
  683. package/dist/delete-BbsEN7tF.js +0 -2
  684. package/dist/delete-CZuI4sJi.js +0 -4
  685. package/dist/disable-B860lJDh.js +0 -1
  686. package/dist/discover-CaAtyC0h.js +0 -1
  687. package/dist/discover-tM_915iZ.js +0 -3
  688. package/dist/dispatch-YW1aqjEg.js +0 -14
  689. package/dist/docs-BdmVTydv.js +0 -2
  690. package/dist/docs-Byrpar10.js +0 -2
  691. package/dist/enable-DD4OsTnA.js +0 -1
  692. package/dist/env-LsVTi18f.js +0 -1
  693. package/dist/exec-DgI3boHa.js +0 -11
  694. package/dist/executor-HWnIIYUL.js +0 -10
  695. package/dist/flow-DwhBWoSx.js +0 -1
  696. package/dist/github-actions-CvLya8ve.js +0 -24
  697. package/dist/http-DG54kyx4.js +0 -1
  698. package/dist/index-JcLiq1ac.d.ts +0 -365
  699. package/dist/init-Bo3RS_va.js +0 -1
  700. package/dist/integrations-B2CavXR1.js +0 -5
  701. package/dist/integrations-CstFKLTr.js +0 -1
  702. package/dist/lib/broker.d.ts +0 -1
  703. package/dist/list-Bu1S3hPM.js +0 -3
  704. package/dist/list-CLVoliXi.js +0 -4
  705. package/dist/list-DWeYdLMU.js +0 -1
  706. package/dist/list-DYzczkQZ.js +0 -2
  707. package/dist/list-DaQ14K1K.js +0 -1
  708. package/dist/list-DhJOorrE.js +0 -1
  709. package/dist/list-Motuarjd.js +0 -1
  710. package/dist/list-P1Zi9bhT.js +0 -4
  711. package/dist/load-DDZfByUe.js +0 -2
  712. package/dist/local-B0GiaLV0.js +0 -1
  713. package/dist/log-view-DeJstSkw.js +0 -3
  714. package/dist/login-C-VTh_6i.js +0 -1
  715. package/dist/login-KHrM3MI3.js +0 -1
  716. package/dist/logout-CqUKg0lc.js +0 -1
  717. package/dist/maintenance-CVfHIraw.js +0 -1
  718. package/dist/match-DMI54zg4.js +0 -1
  719. package/dist/mcp-DCydEehH.js +0 -1
  720. package/dist/mcp-DgMoPoUo.js +0 -1
  721. package/dist/migrate-DAC6sFgg.js +0 -1
  722. package/dist/migrate-DPprwsbm.js +0 -2
  723. package/dist/model-_e9f9Oth.js +0 -1
  724. package/dist/models-DGPrMV51.js +0 -1
  725. package/dist/prompt-K7-bKcTC.js +0 -7
  726. package/dist/push-HLTHyhsP.js +0 -1
  727. package/dist/queue-EvplGOuk.js +0 -117
  728. package/dist/refresh-ZbMy3Y9T.js +0 -1
  729. package/dist/remote-AcWWfKVS.js +0 -1
  730. package/dist/remove-B6PskfkD.js +0 -1
  731. package/dist/remove-CC7UyWNI.js +0 -1
  732. package/dist/remove-CWd4Qs4F.js +0 -1
  733. package/dist/remove-CZmO4BSd.js +0 -1
  734. package/dist/rename-ODyRelrw.js +0 -1
  735. package/dist/result-CRIAetqH.js +0 -5
  736. package/dist/result-DtXZusqj.js +0 -18
  737. package/dist/resume-CI-swBxa.js +0 -3
  738. package/dist/review-IRsckIiU.js +0 -7
  739. package/dist/rolldown-runtime-DT7IzrpZ.js +0 -1
  740. package/dist/rotate-key-CmvHXXnp.js +0 -1
  741. package/dist/run-Dd9HdNSL.js +0 -5
  742. package/dist/run-FYA9XIij.js +0 -2
  743. package/dist/run-IWXjB5OD.js +0 -2
  744. package/dist/runner-CbDswgji.js +0 -1
  745. package/dist/runner-c-2w6Eoj.js +0 -1
  746. package/dist/schema-DoNO0dPh.js +0 -1
  747. package/dist/serve-CML2mkKG.js +0 -12
  748. package/dist/serve-CY46ohfr.js +0 -1
  749. package/dist/serve-D_XiZzYd.js +0 -8
  750. package/dist/serve-t38OrDrk.js +0 -2
  751. package/dist/serve-xMihn4g-.js +0 -1
  752. package/dist/server-83YZ2Kkh.js +0 -1
  753. package/dist/setup-host-DRuUX8zg.js +0 -6
  754. package/dist/shared-D64pQ0XU.js +0 -1
  755. package/dist/show-DlKWR0Hy.js +0 -1
  756. package/dist/show-aCUICSoc.js +0 -1
  757. package/dist/status-C09SKASS.js +0 -1
  758. package/dist/steer-BGKYpW4T.js +0 -4
  759. package/dist/stop-CiAJVnU2.js +0 -3
  760. package/dist/stop-svJYkhTt.js +0 -1
  761. package/dist/store-B0RLMUR9.js +0 -42
  762. package/dist/store-Cxc2GYyj.js +0 -19
  763. package/dist/task-DEp3GHwH.js +0 -1
  764. package/dist/task-DhZ5vhyY.js +0 -5
  765. package/dist/task-DvPkqHCF.js +0 -1
  766. package/dist/test-9FHRw5Jc.js +0 -1
  767. package/dist/tools-DhlrB8xV.js +0 -1
  768. package/dist/types-CdIo1Zbm.d.ts +0 -391
  769. package/dist/types-D0q15RJa.js +0 -1
  770. package/dist/unalias-D6UESHzK.js +0 -1
  771. package/dist/update-DTYOhoQC.js +0 -2
  772. package/dist/upgrade-BOYs5Vyi.js +0 -2
  773. package/dist/usage-BlT_poNA.js +0 -1
  774. package/dist/usage-Bw7fQeFC.js +0 -1
  775. package/dist/watch-BlGYjH88.js +0 -5
  776. package/dist/watch-Y82ubvGH.js +0 -8
  777. package/dist/wire-DxxfWapP.js +0 -1
  778. package/dist/worker-4TKVAB01.js +0 -1
  779. package/dist/worker-C4Lo6rLS.js +0 -9
  780. package/dist/workflow-Mi1OCrOI.js +0 -1
  781. package/migrations/0000_initial.sql +0 -260
  782. package/migrations/meta/0000_snapshot.json +0 -1861
  783. package/migrations/meta/_journal.json +0 -13
  784. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/auth/{sign-in.7ee1680af722840f.js → sign-in.661b3a4139af5bd7.js} +0 -0
  785. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/{types.0cf02e7714d7c1a2.js → types.9f59e6c761d6aac4.js} +0 -0
  786. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{account/page.1df2bb5150dd9575.css.pnext-asset.js → [org]/account/page.061f6006f2685f5e.css.pnext-asset.js} +0 -0
  787. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/(list)/page.9ea9df9d5f80f310.css.pnext-asset.js → [org]/agents/(list)/page.76589c15dee1732d.css.pnext-asset.js} +0 -0
  788. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/[slug]/(tabs)/page.3120ea9ec90cb9cc.css.pnext-asset.js → [org]/agents/[slug]/(tabs)/page.1a97b8d4b955c464.css.pnext-asset.js} +0 -0
  789. /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 → [org]/agents/[slug]/(tabs)/platforms/page.3ffef848a0b0dda3.css.pnext-asset.js} +0 -0
  790. /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 → [org]/agents/[slug]/(tabs)/settings/agent-settings-form.2d19ea3a4d380e0d.css.pnext-asset.js} +0 -0
  791. /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 → [org]/agents/[slug]/(tabs)/usage/@/app/dash/[org]/usage/range-bar.e8f6f0c7ee443262.css.pnext-asset.js} +0 -0
  792. /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 → [org]/agents/[slug]/(tabs)/usage/@/comps/ui/segmented.2cb43dc7d1f1588a.css.pnext-asset.js} +0 -0
  793. /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 → [org]/agents/[slug]/(tabs)/usage/page.80adb3d2ea31d080.css.pnext-asset.js} +0 -0
  794. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/agent/agent-pills.dcf7e785044cc900.css.pnext-asset.js → [org]/agents/agent/agent-pills.183f03f1e7e5ac9f.css.pnext-asset.js} +0 -0
  795. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/agent/hero.a794a01218c5c9ce.css.pnext-asset.js → [org]/agents/agent/hero.13019680f38b0630.css.pnext-asset.js} +0 -0
  796. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/agent/instructions.2176859ec1028fc0.css.pnext-asset.js → [org]/agents/agent/instructions.446bccc375f30eeb.css.pnext-asset.js} +0 -0
  797. /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 → [org]/agents/editor/@/app/dash/[org]/agents/(list)/page.81c825592da30a32.css.pnext-asset.js} +0 -0
  798. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/editor/editor.6b13621790a6d5d6.css.pnext-asset.js → [org]/agents/editor/editor.d2e3bc878dcb47da.css.pnext-asset.js} +0 -0
  799. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/editor/names.cf9e376a918a5341.js → [org]/agents/editor/names.1ee5bba8d2b6ac41.js} +0 -0
  800. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{layout.946ec7c4ebb1d7c6.css.pnext-asset.js → [org]/layout.3827c440c6421a06.css.pnext-asset.js} +0 -0
  801. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/[tab]/credentials-list.3bd27b14c0d60e48.css.pnext-asset.js → [org]/operator/@/app/dash/[org]/agents/[slug]/(tabs)/platforms/page.944b02c09bbf6c22.css.pnext-asset.js} +0 -0
  802. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/[tab]/engines-list.39cd71b7dc568516.css.pnext-asset.js → [org]/operator/@/app/dash/[org]/settings/[tab]/list.83f35dd8a36acdfd.css.pnext-asset.js} +0 -0
  803. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/[tab]/list.2a204889b73638d9.css.pnext-asset.js → [org]/operator/page.9002a449f872a10e.css.pnext-asset.js} +0 -0
  804. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/[tab]/mcp-list.d743e37cd6dc85d8.css.pnext-asset.js → [org]/settings/[tab]/@/app/dash/[org]/setup/outcome.3ad5f7ec67e5238d.css.pnext-asset.js} +0 -0
  805. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/[tab]/runners-list.3dac92fb9f64e2be.css.pnext-asset.js → [org]/settings/[tab]/connections-list.f742847e4887f072.css.pnext-asset.js} +0 -0
  806. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{tasks/[id]/task-view.c2288044c9032a89.css.pnext-asset.js → [org]/settings/[tab]/credentials-list.1236d6680ec02696.css.pnext-asset.js} +0 -0
  807. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{tasks/composer.41721fb98004e79e.css.pnext-asset.js → [org]/settings/[tab]/engines-list.9927d602ebe9e7fc.css.pnext-asset.js} +0 -0
  808. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{tasks/list/status.9516cc22cbd5d84b.css.pnext-asset.js → [org]/settings/[tab]/list.e0ce46919b75ef76.css.pnext-asset.js} +0 -0
  809. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{tasks/list/tasks-list.55fa11c945f9c6db.css.pnext-asset.js → [org]/settings/[tab]/runners-list.a835c9a264cf8903.css.pnext-asset.js} +0 -0
  810. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/model-options.2ca6c87aedf3588c.js → [org]/settings/model-options.2eacf7f8ac0032df.js} +0 -0
  811. /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 → [org]/setup/outcome.2a3073f895357275.css.pnext-asset.js} +0 -0
  812. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/@/comps/ui/segmented.81631cafb8e3b260.css.pnext-asset.js → [org]/tasks/[id]/task-view.38b1b7ef3976ba71.css.pnext-asset.js} +0 -0
  813. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/day-chart.c7b7d04403f0fc79.css.pnext-asset.js → [org]/tasks/composer.360b393e5938c60b.css.pnext-asset.js} +0 -0
  814. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/range-bar.671afdd0798f4de9.css.pnext-asset.js → [org]/tasks/list/status.7e63f2b02469ca40.css.pnext-asset.js} +0 -0
  815. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/stats.3b02ee8317b9c4e3.css.pnext-asset.js → [org]/tasks/list/tasks-list.2282a7cef8b15bd8.css.pnext-asset.js} +0 -0
  816. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/top-agents.441006da5b4eae17.css.pnext-asset.js → [org]/usage/@/app/dash/[org]/usage/range-bar.85d30ec5f022f124.css.pnext-asset.js} +0 -0
  817. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/usage.d6df7cb6980171ce.css.pnext-asset.js → [org]/usage/@/comps/ui/segmented.41728247cda62f82.css.pnext-asset.js} +0 -0
  818. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{globals.89a59affc5df947b.css.pnext-asset.js → dash/[org]/usage/day-chart.4b3dbef8704de0e0.css.pnext-asset.js} +0 -0
  819. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{login/page.f852a09edc8b6b44.css.pnext-asset.js → dash/[org]/usage/range-bar.1da88d087e3b5302.css.pnext-asset.js} +0 -0
  820. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{responsive.1fd73ea94977bfc0.css.pnext-asset.js → dash/[org]/usage/stats.bb7cb568c0174557.css.pnext-asset.js} +0 -0
  821. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/frame/@/comps/ui/toast.8d599c6821860a1c.css.pnext-asset.js → app/dash/[org]/usage/top-agents.20a1d4451784792b.css.pnext-asset.js} +0 -0
  822. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/frame/auth-panel.e5af611567239b13.css.pnext-asset.js → app/dash/[org]/usage/usage.775df2f43187c487.css.pnext-asset.js} +0 -0
  823. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/frame/drawer.9090aa789dffa730.css.pnext-asset.js → app/globals.76731787d2a1aa3b.css.pnext-asset.js} +0 -0
  824. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/frame/page-head.53db3a3d313c0473.css.pnext-asset.js → app/login/page.57e5198339e9ca28.css.pnext-asset.js} +0 -0
  825. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{page.7e7f8611a9bb7b22.js → page.2c6a0a292ea8ab67.js} +0 -0
  826. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/ui/badge.d21391f2f8573db8.css.pnext-asset.js → app/responsive.82549d958fae8f00.css.pnext-asset.js} +0 -0
  827. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{zone.66f36b17e74cf5f8.js → zone.dbc84f981415d8f7.js} +0 -0
  828. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/{ui/card.4f9265213510ffd3.css.pnext-asset.js → frame/@/comps/ui/toast.a4c3e977997216cf.css.pnext-asset.js} +0 -0
  829. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/{ui/collapse.60c9038c70fb9c46.css.pnext-asset.js → frame/auth-panel.c6e05b4540b3d555.css.pnext-asset.js} +0 -0
  830. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/{ui/confirm.fc6d4da835b75a30.css.pnext-asset.js → frame/drawer.e8201d78154045bc.css.pnext-asset.js} +0 -0
  831. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/{ui/field.8db4420dfb447e42.css.pnext-asset.js → frame/page-head.364ec93a8e7857b3.css.pnext-asset.js} +0 -0
  832. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{filter.9311d535531caaf3.css.pnext-asset.js → badge.0cb1513f8b077560.css.pnext-asset.js} +0 -0
  833. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{icon.476b846e39908951.css.pnext-asset.js → card.15f7435f202831c3.css.pnext-asset.js} +0 -0
  834. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{menu.d412af459c187b41.css.pnext-asset.js → collapse.fb687b120ea60247.css.pnext-asset.js} +0 -0
  835. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{segmented.171b067d7cb36977.css.pnext-asset.js → confirm.d18497f656702a16.css.pnext-asset.js} +0 -0
  836. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{select.5dbceaae2ba7ace4.css.pnext-asset.js → copy.991f1efa061e71d6.css.pnext-asset.js} +0 -0
  837. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{sentinel.332fb99b3a214f0e.css.pnext-asset.js → field.7e73edc204cd38df.css.pnext-asset.js} +0 -0
  838. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tabs.87bc5cdfc4d1b85e.css.pnext-asset.js → filter.e20fbd035f24ed01.css.pnext-asset.js} +0 -0
  839. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tail.25fd24d6cd0564b7.css.pnext-asset.js → icon.424a21694f121010.css.pnext-asset.js} +0 -0
  840. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{toolbar.5e35e79f4d575452.css.pnext-asset.js → menu.1d42c8d0493e2221.css.pnext-asset.js} +0 -0
  841. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{format.ba382c381ea40e77.js → format.6a7d1beaf4d09d9c.js} +0 -0
  842. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{range.f0a5ef1763ff3cb9.js → range.f73ba9cac0a60af1.js} +0 -0
package/dist/sdk.js CHANGED
@@ -1 +1 @@
1
- import{C as e,St as t,X as n,Y as r,at as i,nt as a,ot as o,rt as s,w as c}from"./dispatch-YW1aqjEg.js";import{n as l,r as u,s as ee,t as d}from"./remote-AcWWfKVS.js";import{n as f}from"./executor-HWnIIYUL.js";import{n as p}from"./agent-D0pQ_ewc.js";import{t as m}from"./docs-Byrpar10.js";import{a as h,i as g,n as _,o as v,r as y,s as b,t as x}from"./models-DGPrMV51.js";import{n as S}from"./task-DEp3GHwH.js";import C from"./flow/index.js";import{i as w,n as T,o as E,r as D,s as O,t as k}from"./runner-c-2w6Eoj.js";import{t as A}from"./serve-xMihn4g-.js";import{t as j}from"./github-actions-CvLya8ve.js";import{n as M}from"./apps-CaHoLNE7.js";import{n as N,r as P}from"./maintenance-CVfHIraw.js";import{r as F,t as I}from"./serve-D_XiZzYd.js";import L from"node:path";import R from"node:process";function z(e){return e?L.resolve(e):R.cwd()}const B=S,V={add:(e,t)=>x(z(t.cwd),e,t),update:(e,t)=>b(z(t.cwd),e,t),remove:(e,t={})=>g(z(t.cwd),e,t),list:(e={})=>y(z(e.cwd)),alias:(e,t,n={})=>_(z(n.cwd),e,t,n),unalias:(e,t={})=>v(z(t.cwd),e,t),disable:(e,t={})=>h(z(t.cwd),e,!0,t),enable:(e,t={})=>h(z(t.cwd),e,!1,t)},H={get:(e,t={})=>r(z(t.cwd),e),set:(e,t,r={})=>n(z(r.cwd),e,t,r)},U={add:(e,t)=>a(z(t.cwd),e,t),addJson:(e,t,n={})=>s(z(n.cwd),e,t,n),list:(e={})=>i(z(e.cwd)),remove:(e,t={})=>o(z(t.cwd),e,t)};function W(t=[],n={}){return e(z(n.cwd),{hosts:t})}function G(e={}){return c(e)}function K(e,t={}){return m(e,t)}const q={async run(e={}){let t=await f(`review`,{cwd:e.cwd,args:e});return{...t.result,runId:t.runId}}},J=ee,Y={serve:I,migrate:N,rotateKey:P,workflow:()=>j,app:{create:M},handler:F},X={list:(e={})=>l(e).credentials.list(),add:d,remove:(e,t={})=>l(t).credentials.remove(e,t),default:(e,t={})=>l(t).credentials.setDefault(e,t),login:u},Z={list:(e={})=>l(e).folders.list(),check:(e,t={})=>l(t).folders.check(e)},Q={list:T,add:k,pair:D,update:O,default:(e,t={})=>O(e,{default:!0},t),test:E,rename:(e,t,n={})=>O(e,{name:t},n),remove:w,serve:A},$=p;var te={task:B,flow:C,model:V,config:H,mcp:U,setupHost:W,upgrade:G,docs:K,review:q,auth:J,agent:$,credentials:X,folders:Z,runner:Q,server:Y};export{t as CoderError,$ as agent,J as auth,H as config,X as credentials,te as default,K as docs,C as flow,Z as folders,U as mcp,V as model,q as review,Q as runner,Y as server,W as setupHost,B as task,G as upgrade};
1
+ import{m as e,p as t}from"./config-D2FxHWwi.js";import{E as n,H as r,T as i}from"./dispatch-D3Dqxijf.js";import{n as a,r as o,s,t as c}from"./remote-oQs6My_3.js";import{n as l}from"./executor-5j-Ewzzb.js";import{n as u}from"./agent-C1HI4JlI.js";import{t as d}from"./connection-wq0CJZKh.js";import{t as f}from"./docs-3SW1O9iS.js";import{a as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./models-CdvmuaLv.js";import{n as b}from"./task-IoBYe7ok.js";import x from"./flow/index.js";import{i as S,n as C,o as w,r as T,s as E,t as D}from"./runner-DME7ohjt.js";import{t as O}from"./serve-BQsv2KZs.js";import{n as k}from"./apps-aj_JtpAm.js";import{_ as A}from"./runners-UNKPlmYE.js";import{n as j}from"./maintenance-B_79IJ_E.js";import{r as M,t as N}from"./serve-HNXk3HMY.js";import P from"node:path";import F from"node:process";function I(e){return e?P.resolve(e):F.cwd()}const L=b,R={add:(e,t)=>y(I(t.cwd),e,t),update:(e,t)=>v(I(t.cwd),e,t),remove:(e,t={})=>m(I(t.cwd),e,t),list:(e={})=>_(I(e.cwd)),alias:(e,t,n={})=>h(I(n.cwd),e,t,n),unalias:(e,t={})=>g(I(t.cwd),e,t),disable:(e,t={})=>p(I(t.cwd),e,!0,t),enable:(e,t={})=>p(I(t.cwd),e,!1,t)},z={get:(e,n={})=>t(I(n.cwd),e),set:(t,n,r={})=>e(I(r.cwd),t,n,r)},B=d;function V(e=[],t={}){return i(I(t.cwd),{hosts:e})}function H(e={}){return n(e)}function U(e,t={}){return f(e,t)}const W={async run(e={}){let t=await l(`review`,{cwd:e.cwd,args:e});return{...t.result,runId:t.runId}}},G=s,K={serve:N,rotateKey:j,workflow:A,app:{create:k},handler:M},q={list:(e={})=>a(e).credentials.list(),add:c,remove:(e,t={})=>a(t).credentials.remove(e,t),default:(e,t={})=>a(t).credentials.setDefault(e,t),login:o},J={list:(e={})=>a(e).folders.list(),check:(e,t={})=>a(t).folders.check(e)},Y={list:C,add:D,pair:T,update:E,default:(e,t={})=>E(e,{default:!0},t),test:w,rename:(e,t,n={})=>E(e,{name:t},n),remove:S,serve:O},X=u;var Z={task:L,flow:x,model:R,config:z,connection:B,setupHost:V,upgrade:H,docs:U,review:W,auth:G,agent:X,credentials:q,folders:J,runner:Y,server:K};export{r as CoderError,X as agent,G as auth,z as config,B as connection,q as credentials,Z as default,U as docs,x as flow,J as folders,R as model,W as review,Y as runner,K as server,V as setupHost,L as task,H as upgrade};
@@ -0,0 +1 @@
1
+ import{qi as e}from"./core-DwsAMCnL.js";import{$ as t}from"./config-D2FxHWwi.js";import{H as n}from"./dispatch-D3Dqxijf.js";import{n as r,o as i}from"./remote-oQs6My_3.js";import{l as a}from"./slack-C_RlVDz7.js";import{t as o}from"./local-XNsjb-UM.js";import{s,t as c}from"./http-BYMXT_p6.js";import l from"node:path";import u from"node:fs";import{createHmac as d,randomBytes as f}from"node:crypto";import p from"node:os";import m from"node:http";var h=e({runnerController:()=>C,serveRunner:()=>b});const g=()=>t(`runners.json`);function _(){try{return JSON.parse(u.readFileSync(g(),`utf8`))}catch{return{}}}function v(e){u.mkdirSync(l.dirname(g()),{recursive:!0}),u.writeFileSync(g(),JSON.stringify(e,null,2),{mode:384})}const y=e=>[`cloudflared tunnel --url http://localhost:${e}`,`ngrok http ${e}`,`tailscale funnel ${e}`,`VS Code: forward port ${e} in the Ports view and set its visibility to Public`];async function b(e={}){let a=e.port??4100,l=e.token?e.runnerUrl??process.env.CODER_RUNNER_URL:e.url;if(!l)throw new n(`invalid-option`,e.token?`Expose this runner and set CODER_RUNNER_URL or --runner-url to its public HTTPS address.`:`Expose this runner with a tunnel, then pass its public URL with --url.`,{hint:y(a)});let u=e.token?i({...e,server:e.url??e.server,yes:!0}):i(e),d=_(),h=d[u]??{secret:f(32).toString(`base64url`)},g=new o(t(`runner`)),b=C({secret:h.secret,server:u,runner:g}),x=m.createServer(s(b,{limit:c}));await new Promise((e,t)=>{x.once(`error`,t),x.listen(a,`127.0.0.1`,e)});let S=()=>new Promise(e=>x.close(()=>e())),w=e.name??p.hostname(),T=async(e,t)=>{let r=await fetch(`${u}/runners/register`,{method:`POST`,redirect:`manual`,signal:AbortSignal.timeout(5e3),headers:{"content-type":`application/json`},body:JSON.stringify({...e?{token:e}:{id:h.id,organizationId:h.organizationId},name:w,url:l,secret:h.secret,...t?{offline:t}:{}})});if(!r.ok)throw new n(`server`,`Runner registration failed`,{status:r.status});return r.json()},E;try{if(e.token){let t=await T(e.token);E=t,h.organizationId=t.organizationId}else{let t=h.id&&h.organizationId?await T().catch(e=>{if(!(e instanceof n&&e.status===401))throw e}):void 0;if(t)E=t;else{let t=r(e),n=await t.me();E=await t.runners.add({kind:`http`,name:w,scope:e.workspace||!n.user?`workspace`:`personal`,config:{url:l,secret:h.secret}}),h.organizationId=n.organization?.id,h.id=E.id,E=await T()}}h.id=E.id,v({...d,[u]:h})}catch(e){throw await S(),e}let D=Promise.resolve(),O=setInterval(()=>{D=D.then(()=>T().then(()=>{})).catch(()=>{})},6e4);return{...E,port:a,server:u,close:async()=>{clearInterval(O),await D,await T(void 0,!0).catch(()=>{}),await S()}}}const x=3e5,S=(e,t=200)=>new Response(JSON.stringify(e),{status:t,headers:{"content-type":`application/json`}});function C(e){let t=e.now??Date.now,n=new Map,r=(r,i)=>{let o=r.headers.get(`x-coder-timestamp`)??``,s=r.headers.get(`x-coder-nonce`)??``,c=r.headers.get(`x-coder-signature`)??``,l=Number(o);if(!s||!Number.isFinite(l)||Math.abs(t()-l)>x)return!1;let u=d(`sha256`,e.secret).update(`${i}.${o}.${s}`).digest(`base64url`);if(!a(c,u))return!1;for(let[e,r]of n)r<t()&&n.delete(e);return!n.has(s)&&(n.set(s,l+x),!0)};return async t=>{let n=t.method===`GET`?``:await t.text();if(!r(t,n))return S({error:`Unauthorized`},401);let[,i,a]=new URL(t.url).pathname.split(`/`).map(decodeURIComponent);try{if(t.method===`POST`&&i===`start`&&!a){let t=JSON.parse(n);if(typeof t.task!=`string`||!t.env)return S({error:`Invalid start`},400);let r=t.env.CODER_TASK_TOKEN;if(typeof r!=`string`)return S({error:`Invalid start`},400);let i={CODER_SERVER:e.server,CODER_TASK_TOKEN:r,CODER_INBOX_MODE:e.runner.push?`push`:`poll`,...t.env.CODER_LOGIN===`claude`||t.env.CODER_LOGIN===`codex`?{CODER_LOGIN:t.env.CODER_LOGIN}:{}};return S({handle:await e.runner.start({id:t.task},i)})}if(t.method===`GET`&&i===`health`&&!a)return S({ok:!0});if(!a)return S({error:`Not found`},404);if(t.method===`POST`&&i===`messages`&&e.runner.push){let{entries:t}=JSON.parse(n);return!Array.isArray(t)||!t.length?S({error:`Invalid messages`},400):S(await e.runner.push(a,t))}return t.method===`GET`&&i===`status`?S(await e.runner.status(a)):t.method===`POST`&&i===`stop`?(await e.runner.stop(a),new Response(null,{status:204})):S({error:`Not found`},404)}catch(e){return S({error:e instanceof Error?e.message:String(e)},400)}}}export{h as n,b as t};
@@ -0,0 +1,2 @@
1
+ import{Zt as e}from"./core-DwsAMCnL.js";import{Dn as t,Ln as n,Mn as r,vt as i}from"./config-D2FxHWwi.js";import{H as a}from"./dispatch-D3Dqxijf.js";import{i as o}from"./prompt-C--TI1qn.js";import{i as s}from"./cli-D5hyqGq0.js";import{p as c,s as l}from"./output-BKeyLbvt.js";import{n as u,s as d,t as f}from"./args-CxsMr9Un.js";import p from"node:process";function m(e){let t=c,n=[...e.publicUrl===e.address?[]:[[`public`,e.publicUrl]],[`store`,e.database??(e.mode===`local`?i():e.store)],[`runner`,e.runner],...e.signIn?[[`sign-in`,e.signIn]]:[],...e.mintedToken?[[`token`,e.mintedToken]]:[]],r=Math.max(...n.map(([e])=>e.length))+2;p.stdout.write(`${t.bold({local:`Coder local server`,memory:`Coder test server`,cloud:`Coder server`}[e.mode])} ${t.dim(`listening on ${e.address}`)}\n`);for(let[e,i]of n)p.stdout.write(` ${t.light(e.padEnd(r))}${i}\n`);e.warnings.length&&p.stdout.write(`
2
+ `);for(let n of e.warnings)p.stdout.write(` ${t.yellow(`!`)} ${n}\n`);if(e.cacheMigration?.then(e=>{(e.tasks||e.flows||e.files)&&p.stdout.write(`\n moved ${e.tasks.toLocaleString(`en-US`)} archived tasks to ${e.cache}\n`)}).catch(e=>p.stderr.write(`\n Cache migration failed: ${e instanceof Error?e.message:String(e)}\n`)),e.mode===`memory`&&p.stdout.write(`\n${l([`the CLI reaches this server with its token in ADMIN_TOKEN: coder task list --server ${e.publicUrl}`],t)}\n`),e.dashboard){let n=p.stdout.isTTY&&o(e.dashboard);p.stdout.write(n?`\nOpening the dashboard in your browser. If it doesn't open, go to:\n ${e.dashboard}\n`:`\n ${t.light(`dashboard`)} ${e.dashboard}\n`)}}const h=s({name:`server serve`,help:{usage:`coder server serve [--port <n>] [--host <address>] [--memory] [--runner <name>] [--json] [--cwd <dir>]`,summary:`Run the Coder server on Bun: the address platforms deliver events to, the dashboard, and the worker that runs tasks. With DATABASE_URL it is a full server with sign-in and workspaces. Without one it is the dashboard for this machine's CLI: its config, agents, tasks and engine logins, on loopback only. --memory makes a throwaway test server that keeps everything in memory. Configured through the environment; every variable is in coder docs self-host.`,flags:[[`--port <n>`,`listen port (default: PORT, else the port in a localhost PUBLIC_URL, else 8787)`],[`--host <address>`,`listen address (default: HOST, else 127.0.0.1 without a database, else every interface)`],[`--memory`,`a throwaway test server: everything in memory, no sign-in, admin token only`],[`--runner <name>`,`local, local-docker, vercel-sandbox, github-actions, or http`]],env:[[`PUBLIC_URL`,`the address platforms and browsers reach the server at (default http://localhost:<port>)`],[`PORT`,`listen port, as hosts set it (default 8787)`],[`HOST`,`listen address, as --host`],[`DATABASE_URL`,`Postgres, set up with drizzle-kit push; turns on sign-in and workspaces`],[`AUTH_WULAR_URL`,`the Wular Auth issuer people sign in with (default https://auth.wular.ai)`],[`SERVER_ENCRYPTION_KEY`,`encrypts stored secrets and derives the sign-in keys; required with DATABASE_URL (openssl rand -base64 32)`],[`RUNNER`,`where tasks run: local (default), local-docker, vercel-sandbox, github-actions, http`],[`MAX_TASKS, TASK_TIMEOUT, TASK_STALL, TASK_ATTEMPTS`,`runner capacity and lifecycle limits`],[`ADMIN_TOKEN`,`local and memory servers: the dashboard and CLI key; minted and shown when unset`],[`CODER_CACHE_HOME`,`archived tasks, flows and usage (default OS cache directory/wular-coder)`],[`WORK_DIR`,`where tasks check out repositories`],[`SERVER_NAME`,`what the dashboard calls this server (default Coder)`]],examples:[[`PUBLIC_URL=https://abc.ngrok.app coder server serve`,`receive GitHub and Slack events through a tunnel; the tunnel serves only their webhooks and callbacks`],[`PUBLIC_URL=https://agents.example.com DATABASE_URL=postgres://... coder server serve`,`on your own host, backed by Postgres`]]},options:{...f,port:n(t().check(r(),e())),host:d,runner:d,memory:u},async run({options:e,cwd:t}){let{rerunUnderBun:n}=await import(`./env-C_DoQYl5.js`).then(e=>e.t);if(await n(),e.memory&&!p.env.ADMIN_TOKEN&&!p.stdout.isTTY)throw new a(`invalid-option`,`Memory server needs an admin token: set ADMIN_TOKEN, or run in a terminal to get a printed one.`);let{serve:r}=await import(`./serve-HNXk3HMY.js`).then(e=>e.n),i=await r({cwd:t,port:e.port,...e.host?{host:e.host}:{},...e.runner?{runner:e.runner}:{},...e.memory?{memory:!0}:{}}),o=()=>void i.close().finally(()=>p.exit(0));return p.once(`SIGINT`,o),p.once(`SIGTERM`,o),i},json:e=>({ok:!0,address:e.address,publicUrl:e.publicUrl,runner:e.runner,store:e.store,mode:e.mode,maxTasks:e.maxTasks,...e.signIn?{signIn:e.signIn}:{},...e.mintedToken?{adminToken:e.mintedToken}:{},warnings:e.warnings}),print:m});export{h as commandServerServe};
@@ -0,0 +1 @@
1
+ import{Zt as e}from"./core-DwsAMCnL.js";import{Dn as t,Ln as n,Mn as r}from"./config-D2FxHWwi.js";import{i,t as a}from"./cli-D5hyqGq0.js";import{p as o,s}from"./output-BKeyLbvt.js";import{n as c,o as l,s as u,t as d}from"./args-CxsMr9Un.js";import f from"node:process";const p=i({name:`runner serve`,help:{usage:`coder runner serve --url <public url> [--token <token>] [--runner-url <url>] [--port <n>] [--name <name>] [--workspace] [--server [url]] [--json]`,summary:`Run tasks on this machine with its own claude and codex logins. Expose the port with any tunnel (cloudflared, ngrok, Tailscale Funnel or a public VS Code port) and pass the tunnel's URL; each start registers the current URL, so a changing tunnel URL is fine. Choose a default with coder runner default. Tasks use their named runner, the agent setting, your default, the workspace default, then the server default.`,flags:[[`--url <public url>`,`the HTTPS address the server reaches this runner at`],[`--token <token>`,`one-use pairing token, --url is the Coder server`],[`--runner-url <url>`,`public tunnel address when pairing, or CODER_RUNNER_URL`],[`--port <n>`,`local port the tunnel forwards to (default 4100)`],[`--name <name>`,`shown in the dashboard (default: this machine's hostname)`],[`--workspace`,`run every member's tasks, not only yours (owners and admins)`],a],examples:[[`cloudflared tunnel --url http://localhost:4100`,`expose the port in one terminal`],[`coder runner serve --url https://abc.trycloudflare.com`,`then serve through it`]]},options:{...d,port:n(t().check(r(),e())),url:u,name:u,token:u,"runner-url":u,workspace:c,server:l,yes:c},async run({options:e}){let{serveRunner:t}=await import(`./serve-BQsv2KZs.js`).then(e=>e.n),n=await t({...e,runnerUrl:e[`runner-url`]}),r=()=>void n.close().finally(()=>f.exit(0));return f.once(`SIGINT`,r),f.once(`SIGTERM`,r),n},json:({server:e,close:t,...n})=>({ok:!0,...n}),print:e=>f.stdout.write(`Runner ${o.bold(e.name)} serves ${e.server} at ${o.cyan(e.config.url??``)} (${e.scope}), listening on localhost:${e.port}.\n${s([`Tasks run here with this machine's own claude and codex logins`,`Stop with Ctrl-C; the server marks the runner offline`],o,o.cyan)}\n`)});export{p as commandRunnerServe};
@@ -0,0 +1,9 @@
1
+ import{qi as e}from"./core-DwsAMCnL.js";import{$ as t,B as n,Cn as r,Ct as i,Q as a,R as o,S as s,_ as c,ct as l,g as u,j as d,n as f,o as p,s as m,t as h,v as g,w as _}from"./config-D2FxHWwi.js";import{H as v}from"./dispatch-D3Dqxijf.js";import{i as y,n as b,p as x,r as ee,s as S,t as C}from"./load-CRmQB1LD.js";import{s as w,u as T}from"./slack-C_RlVDz7.js";import{n as E}from"./integrations-D3OgJk6Y.js";import{i as D,t as te}from"./discover-CBP4Uw0N.js";import{c as ne}from"./models-CdvmuaLv.js";import{a as re}from"./local-XNsjb-UM.js";import{a as O,d as ie,f as ae,l as k,n as oe,o as se,p as ce,r as le,s as ue,t as de,u as fe}from"./http-BYMXT_p6.js";import{$ as pe,$n as A,$t as me,A as he,An as ge,Ar as _e,B as ve,Bn as ye,Bt as be,C as xe,D as Se,Dn as Ce,Dr as j,Dt as we,E as Te,En as Ee,Er as M,Et as De,F as Oe,Fn as ke,Ft as Ae,G as je,Gn as Me,Gt as Ne,H as Pe,Hn as Fe,Ht as Ie,I as Le,In as Re,It as N,J as ze,Jn as Be,Jt as Ve,K as He,Kn as Ue,Kt as We,L as Ge,Ln as Ke,Lt as qe,M as Je,Mn as Ye,Mt as Xe,N as Ze,Nn as Qe,Nt as $e,O as P,On as et,Or as F,Ot as I,P as tt,Pn as nt,Pt as rt,Q as it,Qn as L,Qt as at,R as ot,Rn as st,Rt as R,S as z,Sn as ct,Sr as lt,St as ut,T as dt,Tn as ft,Tr as pt,Tt as mt,U as ht,Un as gt,Ut as _t,V as vt,Vt as yt,W as bt,Wn as xt,Wt as St,X as Ct,Xn as wt,Xt as Tt,Y as Et,Yn as Dt,Yt as Ot,Z as kt,Zn as At,Zt as jt,_ as Mt,_r as Nt,_t as Pt,a as Ft,an as It,ar as Lt,at as Rt,b as zt,bn as Bt,br as Vt,bt as Ht,c as B,cn as Ut,cr as Wt,ct as Gt,d as Kt,dn as qt,dr as Jt,dt as V,en as Yt,er as Xt,et as Zt,f as Qt,fn as $t,fr as en,ft as tn,g as nn,gn as rn,gr as an,gt as on,h as H,hn as sn,hr as cn,i as ln,in as un,ir as dn,it as fn,j as U,jn as pn,jt as mn,k as hn,kn as gn,kr as _n,kt as W,l as vn,ln as yn,lr as bn,lt as xn,m as Sn,mn as Cn,mr as wn,mt as Tn,nn as En,nr as G,nt as Dn,o as On,on as kn,or as An,ot as jn,p as Mn,pn as Nn,pr as Pn,pt as Fn,q as In,qn as Ln,qt as Rn,r as zn,rn as Bn,rr as Vn,rt as Hn,s as Un,sn as Wn,sr as Gn,tn as Kn,tr as qn,tt as Jn,u as Yn,un as Xn,ur as Zn,ut as Qn,v as $n,vr as er,vt as tr,w as nr,wn as rr,wt as ir,x as ar,xr as or,xt as sr,y as cr,yn as lr,yr as ur,zn as dr,zt as fr}from"./apps-aj_JtpAm.js";import{n as pr,r as mr}from"./env-C_DoQYl5.js";import{S as hr,a as gr,b as K,h as _r,i as vr,n as yr,p as br,x as xr}from"./runners-UNKPlmYE.js";import{X as Sr}from"./schema-BSlHRFSP.js";import q from"node:path";import J from"node:process";import Cr from"node:fs";import{spawnSync as wr}from"node:child_process";import{createHash as Tr,randomBytes as Er,randomUUID as Dr}from"node:crypto";import Y from"node:fs/promises";import{isDeepStrictEqual as Or}from"node:util";import kr from"node:http";async function Ar(e){try{return await Y.readdir(e,{withFileTypes:!0})}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function X(e){try{return await Y.lstat(e),!0}catch(e){if(e.code===`ENOENT`)return!1;throw e}}async function jr(e,t){if(e===t||!await X(e))return 0;let n=await Ar(e),i=n.filter(e=>e.isDirectory()).length;if(!await X(t))return await r(e,t),i;for(let i of n)await r(q.join(e,i.name),q.join(t,i.name));return await Y.rmdir(e),i}async function Mr(e){let t=q.dirname(e),n=q.basename(e);for(let e of await Ar(t)){let r=e.name.startsWith(n)?e.name.slice(n.length):``;if(!e.isFile()||!(r===`.tmp`||/^\.\d+(?:\.[a-f0-9-]{36})?\.tmp$/.test(r)))continue;let i=Number(e.name.slice(n.length+1).split(`.`)[0]);if(Number.isInteger(i)&&i>0)try{process.kill(i,0);continue}catch(e){if(e.code!==`ESRCH`)continue}await Y.unlink(q.join(t,e.name)).catch(e=>{if(e.code!==`ENOENT`)throw e})}}async function Nr(e,t){if(await Mr(e),e===t||!await X(e))return 0;if(!await X(t))return await r(e,t),1;let n=JSON.parse(await Y.readFile(e,`utf8`)),i=JSON.parse(await Y.readFile(t,`utf8`)),a={...n,...i,...n.rows||i.rows?{rows:{...n.rows,...i.rows}}:{}},o=`${t}.${process.pid}.${Dr()}.tmp`;try{await Y.writeFile(o,`${JSON.stringify(a)}\n`,{mode:384,flag:`wx`}),await Y.rename(o,t),await Y.unlink(e)}finally{await Y.rm(o,{force:!0})}return 1}async function Pr(){let e=a(),n=t(`state`),r=a(`archive`),i=a(`flows-archived`),o=a(`usage.json`),s=a(`runner`,`usage.json`),c={from:t(`checkouts`),to:a(`checkouts`)},l={from:t(`update-check.json`),to:a(`update-check.json`)},u={cache:e,tasks:0,flows:0,files:0},d=(await Ar(n)).filter(e=>e.isDirectory()).map(e=>({archive:t(`state`,e.name,`archive`),flows:t(`state`,e.name,`flows-archived`),usage:t(`state`,e.name,`usage.json`),runnerUsage:t(`state`,e.name,`runner`,`usage.json`)}));await Mr(o),await Mr(s);for(let e of d)u.tasks+=await jr(e.archive,r),u.flows+=await jr(e.flows,i),u.files+=await Nr(e.usage,o),u.files+=await Nr(e.runnerUsage,s);return await jr(c.from,c.to),u.files+=await Nr(l.from,l.to),u}async function Fr(e){let t=(e.now??Date.now)(),n=await e.store.list(`runner`);return{online:1+n.filter(({value:e})=>e.lastSeen!==void 0&&t-e.lastSeen<3e5).length,total:1+n.length}}async function Ir(e){let t=(e.now??Date.now)(),n=e.healthyAt!==void 0&&t-e.healthyAt<5e3,r=n||await Lr(e);return e.healthyAt=r?n?e.healthyAt:t:void 0,O({ok:r},r?200:503,{"cache-control":`no-store`})}async function Lr(e){return e.config.store===`postgres`?e.databaseHealth?e.databaseHealth().then(()=>!0,()=>!1):!1:!0}async function Rr(e){let t=(e.now??Date.now)();if(e.queue.metrics&&!e.local)return{...await e.queue.metrics(e.organizationId,t-864e5),runnersOnline:(await Fr(e)).online,requests:e.limits?.requests??0,rateLimitRejections:e.limits?.rejections??0};let n=await e.queue.list(e.organizationId),r=e.local?[...W(e.local.cwd,!1),...W(e.local.cwd,!0)]:[],i=new Map([...r,...n.map(e=>e.status===`queued`?e:r.find(t=>t.task.id===e.task.id)??e)].map(e=>[e.task.id,e])),a={queued:0,running:0,waiting:0,completed:0,failed:0,cancelled:0},o=0;for(let e of i.values())e.createdAt>=t-864e5&&a[e.status]++,e.status===`queued`&&o++;return{tasks:a,queueDepth:o,runnersOnline:(await Fr(e)).online,requests:e.limits?.requests??0,rateLimitRejections:e.limits?.rejections??0}}async function zr(e,t,n,r){let i=t.session.user.id;n.id;let a=(await e.json().catch(()=>({}))).engine??``;if(!Wr.has(a)||!t.config.subscriptions?.[a])return O({error:`Sign in with ${a||`that engine`} is off on this server.`},403);let o=t.runners[t.config.runner];if(!o||o.kind===`github-actions`)return O({error:`Sign-in cannot run on the ${t.config.runner} runner.`},409);let s=(await t.store.list(`login`)).find(({value:e})=>e.owner===i&&e.engine===a&&e.state!==`done`&&e.state!==`failed`&&e.expiresAt>Z(t));if(s)return O(Kr(s.id,s.value));let c=`login-${Er(12).toString(`base64url`)}`,l=rn(c,t.organizationId,0),u={owner:i,engine:a,state:`starting`,tokenHash:l.hash,runner:o.kind,createdAt:Z(t),expiresAt:Z(t)+Ur};await Gr(t,c,u);let d;try{let e=await o.start({id:c},{CODER_SERVER:t.config.publicUrl??``,CODER_TASK_TOKEN:l.token,CODER_LOGIN:a},void 0,{timeoutMs:Ur,hosts:[br[a].api,...br[a].account]}),n=await t.store.patchLogin(c,{handle:e},{tokenHash:u.tokenHash});if(!n)return await o.stop(e).catch(()=>{}),O({error:`This sign-in is gone. Start again.`},409);d=n}catch(e){return await t.store.delete(`login`,c),O({error:e instanceof Error?e.message:String(e)},502)}return O(Kr(c,d),201)}async function Br(e,t,n,r){t.session.user.id;let i=n.id??``,a=i&&!i.includes(`/`)?await qr(t,i):void 0;return a?O(Kr(i,a)):O({error:`This sign-in is gone. Start again.`},404)}async function Vr(e,t,n,r){t.session.user.id;let i=n.id??``,a=i&&!i.includes(`/`)?await qr(t,i):void 0;if(!a)return O({error:`This sign-in is gone. Start again.`},404);let o=await e.json().catch(()=>({})),s=typeof o.code==`string`?o.code.trim():``;return a.engine!==`claude`||a.state!==`open`||!s||!await t.store.patchLogin(i,{state:`verifying`,input:hr(t.config,s)},{state:`open`,tokenHash:a.tokenHash})?O({error:`This sign-in is not waiting for a code.`},409):O({ok:!0})}async function Hr(e,t,n,r){t.session.user.id;let i=n.id??``,a=i&&!i.includes(`/`)?await qr(t,i):void 0;return a?(await t.store.delete(`login`,i),a.handle&&await t.runners[a.runner]?.stop(a.handle).catch(()=>{}),O({ok:!0})):O({error:`This sign-in is gone. Start again.`},404)}const Ur=6e5,Wr=new Set([`claude`,`codex`]),Z=e=>(e.now??Date.now)();function Gr(e,t,n){return e.store.put(`login`,t,n,{ttlMs:Math.max(1,n.expiresAt-Z(e))})}function Kr(e,t){return{id:e,engine:t.engine,state:t.state,expiresAt:t.expiresAt,...t.url?{url:t.url}:{},...t.code?{code:t.code}:{},...t.error?{error:t.error}:{},...t.label?{label:t.label}:{}}}async function qr(e,t){let n=await e.store.get(`login`,t);return n&&n.owner===e.session?.user.id?n:void 0}function Jr(e,t){let n=t.handle&&e.runners[t.runner]?.stop(t.handle);if(!n)return;let r=n.catch(e=>console.error(`coder server: could not stop the machine of a finished ${t.engine} sign-in`,e));e.waitUntil?.(r)}async function Yr(e,t,n,r){let i=n.id,a=t.callbackLogin,o=Date.now()+25e3;for(;!a.input&&Date.now()<o&&!e.signal.aborted;){await new Promise(e=>setTimeout(e,250));let e=await t.store.get(`login`,i);if(!e)return new Response(`Unauthorized`,{status:401});a=e}if(!a.input)return O({});let s=await t.store.patchLogin(i,{input:null},{input:a.input,tokenHash:a.tokenHash});return O(s?{code:K(t.config,a.input)}:{})}async function Xr(e,t,n,r){n.id;let i=t.callbackLogin;return O({engine:i.engine})}async function Zr(e,t,n,r){let i=n.id,a=t.callbackLogin,o=await e.json().catch(()=>({}));if(a.state===`done`||a.state===`failed`)return O({ok:!0});let s={state:[`starting`,`open`,`verifying`],tokenHash:a.tokenHash};if(typeof o.error==`string`)return await t.store.patchLogin(i,{state:`failed`,error:o.error.slice(0,500)},s)&&Jr(t,a),O({ok:!0});let c=o.result?.env;if(c){let e=a.engine===`claude`?`CLAUDE_CODE_OAUTH_TOKEN`:`CODEX_AUTH_JSON`;if(Object.keys(c).join()!==e||typeof c[e]!=`string`)return O({error:`Invalid sign-in result`},400);let n=`${a.engine}-subscription`,r=o.result?.account;return await t.store.completeLogin(i,a.tokenHash,n,{...xr(t.config,{env:c}),engine:a.engine,createdAt:(t.now??Date.now)(),...r?.email||r?.plan?{account:{...typeof r.email==`string`?{email:r.email}:{},...typeof r.plan==`string`?{plan:r.plan}:{}}}:{}})?(Jr(t,a),O({ok:!0})):O({error:`This sign-in changed. Try again.`},409)}let l={...typeof o.url==`string`&&/^https:\/\//.test(o.url)?{url:o.url}:{},...typeof o.code==`string`?{code:o.code.slice(0,64)}:{}};return(a.state===`starting`?await t.store.patchLogin(i,{...l,state:`open`},{state:`starting`,tokenHash:a.tokenHash})??await t.store.patchLogin(i,l,{...s,state:[`open`,`verifying`]}):await t.store.patchLogin(i,l,s))?O({ok:!0}):O({error:`This sign-in changed. Try again.`},409)}const Qr=e=>`audit:${String(9999999999999-e).padStart(13,`0`)}:${Er(4).toString(`hex`)}`,$r=e=>e.config.name??`Wular`,ei=e=>wn(e,e.serverOrganizationId??e.organizationId);async function ti(e,t,n){let r=(e.now??Date.now)(),i=e.session?.user,a={at:r,actor:i?{id:i.id,name:i.name,email:i.email}:{id:`admin-token`},action:t,target:n};await ei(e).store.put(`snapshot`,Qr(r),a)}async function ni(e,t){let n=await ei(t).store.list(`app`),r=Object.values(t.integrations).filter(e=>e.app.builtin===`shared`).map(e=>{let t=n.find(({value:t})=>t.builtin&&t.integration===e.id)?.value;return{integration:e.id,name:e.name,brand:e.brand,organizationApps:e.organizationApps===!0,...t?{app:{id:t.id,name:t.name,createdAt:t.createdAt}}:{}}}),i=t.config.publicUrl,a=!!i&&H.has(new URL(i).hostname);return O({name:$r(t),platforms:r,...a?{unreachable:!0}:{}})}async function ri(e,t,n){let r=t.integrations[n.integration];if(!r)return O({error:`Unknown integration "${n.integration}".`},404);if(r.app.builtin!==`shared`)return O({error:`Create ${r.name} apps in your workspace from the agent's Platforms tab.`},400);if(!t.config.publicUrl)return O({error:`Set PUBLIC_URL on this server first. Platforms call it.`},400);let i=await e.json().catch(()=>void 0),a=e=>typeof e==`string`&&e.trim()||void 0,o=a(i?.name)??$r(t),s=r.organizationApps?a(i?.owner):void 0,c=await zn(ei(t),r.id,{name:o,owner:s});return await ti(t,`Started setting up a shared app`,`${o} on ${r.name}`),O({url:c})}async function ii(e,t){let n=await ei(t).store.list(`snapshot`,{prefix:`audit:`,limit:100});return O(n.map(e=>e.value))}const ai=e=>`create-finished:${T(e)}`;async function oi(e,t){let n=await e.store.get(`delivery`,ai(t));return n&&`target`in n?n.target:void 0}async function si(e,t,n){let r=e.operatorApp??!1,i=r?`*`:e.session?.user.id??`anonymous`;if(!e.integrations[t])return{error:`Unknown integration "${t}"; run coder agent integrations list to see them`,status:404};if(!e.config.publicUrl)return{error:`PUBLIC_URL is not set on this server; set it to the address platforms should call and restart`,status:400};if(r&&e.integrations[t].app.builtin!==`shared`)return{error:`Create this app in your workspace from the agent's Platforms tab.`,status:400};let a=Yn(n);if(!a)return{error:`Setup link is missing or malformed; start again from the agent's Platforms tab`,status:400};if(!a.definition.integrations[t])return{error:`This agent declares no ${t} integration in its agent.json`,status:400};if(a.state.public&&!r&&!e.integrations[t].publicApps)return{error:`${e.integrations[t].name} apps cannot be public here. Create a private one.`,status:400};let o=On(t,a.state),s=a.state.tx?await _n(e,a.state.tx,`create`,i)===o?a.state.tx:void 0:await _e(e,`create`,i,o);return s?{state:{...a.state,tx:s},definition:a.definition}:{error:`This app creation link is invalid, expired, or already used`,status:403}}async function ci(e,t,n,r){if(!/^[a-z0-9_-]+$/.test(r.pathname.split(`/`)[2]))return;let i=r.searchParams.get(`tx`);if(t.operatorApp&&i&&(await _n(t,i,`create`,`*`)||await oi(t,i)===n.id))return await or(e,void 0,t.dashboardHosts)??new Response(`UI is not built`,{status:503});let a=new URLSearchParams(r.searchParams);return a.set(`create`,n.id),ce(`${Un(t)}${Qt(Sn(t),`/setup`)}?${a}`)}async function li(e,t,n){let r=await si(e,t,n);if(`error`in r)return O({error:r.error},r.status);let{app:i}=e.integrations[t],a=r.state.tx,o=i.createStep&&(e.operatorApp||r.state.public)?i.createStep(e.config.publicUrl,{name:r.definition.name,public:r.state.public}):void 0,s=e.config.publicUrl;if(i.createPost&&H.has(new URL(s).hostname))return O({error:`${e.integrations[t].name} cannot reach ${s}. Set a public address first.`},400);let c=e.operatorApp?void 0:vn(e,r.state.agent),l=i.createPost?.({publicUrl:s,...r,encodedState:re({tx:a,...c?{back:c}:{}})});return O({tx:a,...l?{post:l}:{},...o?{create:o}:{}})}async function ui(e,t,n,r){if(/^[a-z0-9_-]+$/.test(r.pathname.split(`/`)[2]))return li(t,n.id,r.searchParams)}async function di(e,t,n){let r=await e.json().catch(()=>void 0);return li(t,n.integration,new URLSearchParams(r&&typeof r==`object`?r:{}))}async function fi(e,t,n,r,i){let a=t.operatorApp??!1,o=a?`*`:t.session?.user.id??`anonymous`,s=t.integrations[n];if(!s)return B(t,`unknown-integration`,{platform:n},i);if(a&&s.app.builtin!==`shared`)return O({error:`Create this app in your workspace from the agent's Platforms tab.`},400);let c=t.config.publicUrl;if(!c)return B(t,`no-public-url`,{},i);let l=r?await Kt(t,r,n,o):void 0;if(!l)return B(t,`create-expired`,{platform:n},i);a&&await t.store.put(`delivery`,ai(r),{at:t.now?.()??Date.now(),target:n},{ttlMs:6e5});let u=a?`/create/${n}`:vn(t,l.state.agent),d=a?{tx:r}:{},f=a?void 0:(await ln(t)).find(e=>e.integration===n),p=await s.app.createCallback(e,{publicUrl:c,...l,fetch:t.fetch??fetch,...f?{shared:K(t.config,f.credentials)}:{}}).catch(r=>r instanceof w&&r.code===`invalid-field`&&e.headers.get(`accept`)===`application/json`?O({error:r.message},400):r instanceof w?B(t,r.code,{platform:n,error:r.error,...d},u):(console.error(`coder server: creating the ${n} app failed`,r),B(t,`failed`,{platform:n,...d},u)));if(p instanceof Response)return p;let m={id:`${n}:${p.platformAppId}`,integration:n,agent:l.state.agent,name:p.name,...l.state.repo?{agentsRepo:l.state.repo}:{},...l.state.repo?{branch:l.state.branch??`main`}:{},...a?{builtin:!0}:{},...`shared`in p?{shared:f.id,credentials:``}:{credentials:hr(t.config,p.credentials)},createdAt:t.now?.()??Date.now()};if(await t.store.put(`app`,m.id,m),s.app.values&&await t.store.put(`delivery`,Be(m.id),{version:0,manifest:s.app.values(m,{publicUrl:c,definition:l.definition}).lines,changed:!1}),a)return await ti(t,`Created the shared app`,`${p.name} on ${s.name}`),B(t,`created`,{platform:n,app:p.name,...d},u);let h=await _e(t,`install`,o,m.id);return ce(`${c}/install/${n}?app=${encodeURIComponent(m.id)}&state=${re({tx:h,back:u})}`)}async function pi(e,t,n,r){if(!/^[a-z0-9_-]+$/.test(r.pathname.split(`/`)[2]))return;let i=le(r.searchParams.get(`state`));return fi(e,t,n.id,i?.tx,Ft(i?.back))}async function mi(e,t,n,r){if(!/^[a-z0-9_-]+$/.test(r.pathname.split(`/`)[2]))return;let i=new URLSearchParams(await e.clone().text()).get(`tx`),a=await fi(e,t,n.id,i,void 0),o=a.headers.get(`location`);return o&&e.headers.get(`accept`)===`application/json`?O({url:o}):a}async function hi(e,t,n,r){if(t.source!==`repo`||!t.repo)return;let i=(await(r??e.store.list(`app`))).find(({value:e})=>e.agent===t.id&&e.agentsRepo===t.repo)?.value;return((i&&e.integrations[i.integration])??Object.values(e.integrations).find(e=>e.repos))?.repos?.url(t.repo,t.path,i?.branch??n?.commit)}async function gi(e,t,n){let r=await wt(e.store,t);return await qn(e.store,n,t,r)?wt(e.store,t):r}async function Q(e,t){let n=(e.now??Date.now)(),r=e.local?await Fe(e.store,e.local.cwd,e.integrations,t).catch(()=>void 0):void 0;return{now:n,local:r,loadCurrent:()=>r?Promise.resolve(r.find(({record:e})=>e.id===t)??{}):gi(e,t,n)}}async function _i(e,t,{after:n,q:r,source:i,platform:a,limit:o}){return!t&&e.store.listAgentSummaries?(await e.store.listAgentSummaries({after:n,q:r,source:i,platform:a,limit:o})).map(({record:e})=>e):(t??(a?await At(e.store):(await e.store.list(`agent`)).map(({value:e})=>({record:e,version:void 0})))).filter(({version:e})=>!a||!!e?.definition?.integrations?.[a]).map(({record:e})=>e).filter(e=>(!n||e.id>n)&&(!i||e.source===i)&&(!r||[e.id,e.name,e.description,e.repo].some(e=>e?.toLowerCase().includes(r)))).sort((e,t)=>e.id.localeCompare(t.id)).slice(0,o)}async function vi(e,t,n,r){let i=n.slug;if(n.version&&Number(n.version),n.version&&!/^\d+$/.test(r.pathname.split(`/`).at(-1)))return k();let a=r.searchParams.get(`fields`);if(a&&![`id`,`id,name`].includes(a))return O({error:`Invalid fields`},400);let{now:o,local:s,loadCurrent:c}=await Q(t,i);if(!s&&t.store.listAgentSummaries&&(await G(t.store,o),ae(r)&&!a))return O(await Ci(t,r));let l=ie(r,200);if(a){!s&&!t.store.listAgentSummaries&&await G(t.store,o);let e=await _i(t,s,{after:oe(r),q:r.searchParams.get(`q`)?.trim().toLowerCase(),source:Si[r.searchParams.get(`type`)??``],platform:r.searchParams.get(`platform`)??void 0,limit:l+ +!!ae(r)}),n=e=>a===`id`?{id:e.id}:{id:e.id,name:e.name},i=fe(e,l,e=>e.id);return O(ae(r)?{...i,items:i.items.map(n)}:e.map(n))}let u=s??(t.store.listAgentSummaries?await t.store.listAgentSummaries({limit:l}):await At(t.store));if(!s&&!t.store.listAgentSummaries&&await G(t.store,o,u)&&(u=await At(t.store)),ae(r))return O(await Ci(t,r,u));let d,f=y();return O(await Promise.all(u.slice(0,l).map(async({record:e,version:n})=>{e.source===`repo`&&e.repo&&(d??=t.store.list(`app`));let r=await hi(t,e,n,d);return{...e,...e.id===f?{default:!0}:{},definition:n?.definition,...r?{sourceUrl:r}:{}}})))}async function yi(e,t,n,r){let i=n.slug;if(n.version&&Number(n.version),n.version&&!/^\d+$/.test(r.pathname.split(`/`).at(-1)))return k();let{now:a,local:o,loadCurrent:s}=await Q(t,i),c=ie(r,10,50),l=oe(r),[u,d]=await Promise.all([o?s().then(e=>e.record):L(t.store,i),o?Promise.resolve(o.flatMap(({version:e})=>e?[{value:e}]:[])):t.store.listVersions?.(i,c+1,l)]);return u?O(await wi(t,u,c,l??u.currentVersion+1,d)):O({error:`No agent named "${i}"`},404)}async function bi(e,t,n,r){let i=n.slug,a=n.version?Number(n.version):void 0;if(n.version&&!/^\d+$/.test(r.pathname.split(`/`).at(-1)))return k();let{now:o,local:s,loadCurrent:c}=await Q(t,i),l=s?s.find(({version:e})=>e?.version===a)?.version:await A(t.store,i,a);return l?O(l):O({error:`No version ${a} for agent "${i}"`},404)}async function xi(e,t,r,i){let a=r.slug;if(r.version&&Number(r.version),r.version&&!/^\d+$/.test(i.pathname.split(`/`).at(-1)))return k();let{now:o,local:s,loadCurrent:c}=await Q(t,a),l=i.searchParams.get(`versions`)!==`0`,u=i.searchParams.get(`content`)!==`0`,d=i.searchParams.get(`handles`)===`1`,f=t.session?.user.id,[{record:p,version:m},h,g,_,v]=await Promise.all([!u&&!s&&t.store.listAgentSummaries&&!ee()[a]?t.store.listAgentSummaries({slug:a}).then(e=>e[0]??{}):c(),l?s?s.flatMap(({version:e})=>e?[{value:e}]:[]):t.store.listVersions?t.store.listVersions(a):t.store.list(`agentversion`,{prefix:`${a}:`}):[],d?pn(t,a):[],d?Cn(t.store,a):void 0,d?t.store.listCredentials?t.store.listCredentials({owner:f}):t.store.list(`credential`):void 0]);if(!p)return O({error:`No agent named "${a}"`},404);let y=p.settings?.engine??m?.definition.engine??n,b=v!==void 0&&!v.some(({value:e})=>e.engine===y&&(!e.owner||e.owner===f))&&!await mn(t,p.settings?.engine??m?.definition.engine),x=m?.definition.integrations??{},S=e=>{let t=x[e]?.events;return Array.isArray(t)?t.includes(`mention`):!!(t&&`mention`in t)},C=[],w=Object.keys(t.integrations),T=(e,t)=>w.indexOf(e.value.integration)-w.indexOf(t.value.integration);for(let{value:e}of[...g].sort(T))S(e.integration)&&!C.some(t=>t.integration===e.integration&&t.name.toLowerCase()===e.name.toLowerCase())&&C.push({name:e.name,integration:e.integration,platform:t.integrations[e.integration]?.name??e.integration});let E=h.map(({value:e})=>{let{systemPrompt:t,files:n,...r}=e;return r}),D=await hi(t,p,m);return O({...p,...m?{definition:m.definition,...u&&`systemPrompt`in m?{systemPrompt:m.systemPrompt,...m.files?{files:m.files}:{}}:{}}:{},...D?{sourceUrl:D}:{},...l?{versions:E}:{},...C.length?{handles:C}:{},..._?.failed?{deliveries:{failed:_.failed,recent:_.recent.map(e=>({at:e.at,platform:t.integrations[e.integration]?.name??e.integration,...e.type?{type:e.type}:{},error:e.error,...e.url?{url:e.url}:{}}))}}:{},...b?{needsModel:!0}:{}})}const Si={builtin:`builtin`,dashboard:`upload`,repository:`repo`};async function Ci(e,t,n){let r=ie(t,24,100),i=oe(t),a=t.searchParams.get(`q`)?.trim().toLowerCase(),o=Si[t.searchParams.get(`type`)??``],s=t.searchParams.get(`platform`),c=t.searchParams.get(`connect`)===`1`,l=e.serverOrganizationId,u=e.store.list(`app`),[d,f,p,m]=await Promise.all([u,e.store.list(`installation`),c&&l!==void 0&&l!==e.organizationId&&e.scope?e.scope(l).store.list(`app`):[],n?n.filter(({record:e})=>(!i||e.id>i)&&(!o||e.source===o)&&(!a||[e.id,e.name,e.description,e.repo].some(e=>e?.toLowerCase().includes(a)))):e.store.listAgentSummaries({after:i,source:o,q:a,platform:s??void 0,limit:r+1})]),h=new Set(f.filter(({value:e})=>!e.deletedAt).map(({value:e})=>e.app)),g=(e,t)=>{let n=d.filter(({value:n})=>n.agent===e&&n.integration===t);return n.length?n.some(({value:e})=>h.has(e.id))?`installed`:`created`:`none`},_=[];for(let{record:e,version:t}of m){let n=Object.keys(t?.definition?.integrations??{}).sort();if(!(s&&!n.includes(s))&&(_.push({record:e,version:t,ids:n}),_.length>r))break}let v=fe(_,r,e=>e.record.id),b=y();return{...v,...c?{connectable:[...d,...p].filter(({value:t})=>t.builtin&&e.integrations[t.integration]?.app.builtin===`shared`&&!h.has(t.id)).map(({value:e})=>({id:e.id,integration:e.integration,agent:e.agent}))}:{},items:await Promise.all(v.items.map(async({record:t,version:n,ids:r})=>{let i=await hi(e,t,n,u);return{...t,...t.id===b?{default:!0}:{},definition:n?.definition,...i?{sourceUrl:i}:{},platforms:r.map(e=>({id:e,state:g(t.id,e)}))}}))}}async function wi(e,t,n,r,i){let a=r-n-2,o=(i??await e.store.list(`agentversion`,{prefix:`${t.id}:`,...a>0?{after:Lt(t.id,a)}:{},limit:n+1})).map(({value:e})=>{let{systemPrompt:t,files:n,definition:r,...i}=e;return i}).filter(e=>e.version<r).reverse();return fe(o,n,e=>e.version)}var Ti=class{options;entries=new Map;pending=new Map;constructor(e={ttlMs:6e5,max:100}){this.options=e}get size(){return this.entries.size}get inFlight(){return this.pending.size}has(e){return this.entries.has(e)}keys(){return this.entries.keys()}async get(e,t){let n=this.options.now??Date.now,r=n(),i=this.entries.get(e);if(i&&r-i.at<this.options.ttlMs)return i.value;for(let[t,n]of this.entries)t!==e&&r-n.at>=this.options.ttlMs&&this.entries.delete(t);let a=this.pending.get(e);return a||(a=Promise.resolve().then(t).then(t=>{if(t===void 0)return i?.value;if(this.options.accept&&!this.options.accept(t))return i?.value??t;this.entries.set(e,{value:t,at:n()});let r=this.entries.keys().next().value;return this.entries.size>this.options.max&&r!==void 0&&this.entries.delete(r),t}).catch(()=>i?.value).finally(()=>this.pending.delete(e)),this.pending.set(e,a)),a}};const Ei=/^[a-z0-9][a-z0-9-]*$/,Di=new Set([`openrouter.ai`,`ai-gateway.vercel.sh`,`api.groq.com`,`api.together.xyz`]);function Oi(e){return{builtin:{codex:m,claude:f},models:e.models??{}}}async function ki(e,t){let{baseUrl:n,envKey:r,key:i}=await qe(e);if(!n||!/^https?:\/\//.test(n)||!URL.canParse(n))return O({error:`An http or https base URL is required`},400);let a=!i&&r&&await Ai(t,n,r)?await tr(t,r):void 0,o=i||a,s=t.settings??={},c=s.probes??=new Ti({ttlMs:6e5,max:100,now:t.now,accept:e=>e.reachable}),l=`${new URL(n).host}|${r??``}|${T(String(o??``))}`;return O(await c.get(l,()=>ne({baseUrl:n},{key:o,fetch:t.fetch})))}async function Ai(e,t,n){let r=new URL(t).host;if(Di.has(r))return!0;let i=(await _t(e)).models??{};return Object.values(i).some(e=>`baseUrl`in e&&e.envKey===n&&new URL(e.baseUrl).host===r)}async function ji(e,t,n,r){return O(Oi(await _t(t)))}async function Mi(e,t,n,r){let{name:i=``,...a}=await qe(e);return!Ei.test(i)||c(i)?O({error:`Invalid model name "${i}"`},400):R(t,e=>{if(e.models?.[i])throw new N(`"${i}" already exists`);e.models={...e.models,[i]:a}})}async function Ni(e,t,n,r){let i=n.name;return R(t,e=>{if(!e.models?.[i])throw new N(`No model "${i}"`);_(e,i)})}async function Pi(e,t,n,r){let i=n.name,{spec:a}=await qe(e);return R(t,e=>{if(!Ei.test(i))throw new N(`Invalid alias name "${i}"`);let t=e.models?.[i];if(t&&g(t))throw new N(`"${i}" is a custom model name`);let n=s(a,d(e));if(!n?.model||n.engine===`custom`)throw new N(`"${a}" does not name a codex or claude model`);let r=n.engine===`claude`?f:m,o=a.split(`:`).some(e=>p.has(e)||h.has(e));e.models={...e.models,[i]:{provider:n.engine,model:r[n.model]??n.model,...o&&n.effort?{effort:n.effort}:{}}}})}async function Fi(e,t,n,r){let i=n.name;return R(t,e=>{let t=e.models??={},n=t[i];n&&(g(n)||u(n))?n.disabled=!0:t[i]={disabled:!0}})}async function Ii(e,t,n,r){let i=n.name;return R(t,e=>{let t=e.models??={},n=t[i];n&&(g(n)||u(n))?delete n.disabled:delete t[i]})}async function Li(e,t){let{now:n,local:r}=await Q(t);r||await G(t.store,n);let[i,a,o]=await Promise.all([_i(t,r,{limit:200}),_t(t),t.store.list(`runner`)]),s=y(),c=i.filter(e=>!e.settings?.disabled).sort((e,t)=>Number(t.id===s)-Number(e.id===s)).map(({id:e,name:t})=>({id:e,name:t,...e===s?{default:!0}:{}})),l=fr(t,a),u=Object.values(t.integrations).find(e=>e.repos);return O({agents:c,...l.chain?.[0]?{engine:l.chain[0]}:{},engines:l.engines??{},models:Oi(a),runners:fn(t,o,n).map(({id:e,name:t,default:n})=>({id:e,name:t,default:n})),flows:D(te(),`builtin`).map(e=>e.name),...t.local?{folders:Wt(t.local.cwd)}:{},...u?{connectLabel:u.installLabel??`Connect ${u.id}`}:{}})}async function Ri(e,t){let n=(await e.store.list(`installation`)).filter(({value:t})=>!t.deletedAt&&e.integrations[t.integration]?.repos),r=new Map((await dr(e.store,n.map(({value:e})=>e.app))).map(({id:e,value:t})=>[e,t]));for(let{value:i}of n){let n=e.integrations[i.integration];if(i.deletedAt||!n?.repos)continue;let a=r.get(i.app);if(!(!a||a.integration!==n.id))try{let r=i.token?{...i,token:K(e.config,i.token)}:i,o=await n.auth.token(r,K(e.config,a.credentials));if((await n.repos.list(r,o)).includes(t))return{contents:n,token:o,app:a,installation:i}}catch{}}}async function zi(e,t,n){let r=await Ri(e,t);if(!r)return O({error:`No installed app can read ${t}`},400);let i=await r.contents.repos.listDir(t,xt,r.token,n).catch(()=>[]),a=await Promise.all(i.map(async i=>{let a=await r.contents.repos.readFile(t,`${xt}/${i}/agent.json`,r.token,n).catch(()=>void 0);if(a===void 0)return;let s={};try{let e=JSON.parse(a);e&&typeof e==`object`&&(s=e)}catch{}let c=Object.entries(s.mcp&&typeof s.mcp==`object`&&!Array.isArray(s.mcp)?s.mcp:{}).flatMap(([e,t])=>o(e,t)),l=await L(e.store,i),u=l?.source===`repo`&&l.repo===t,d=u?await A(e.store,i):void 0;return{id:i,name:typeof s.name==`string`?s.name:i,...c.length?{warnings:c}:{},...typeof s.description==`string`?{description:s.description}:{},...u?{version:l.currentVersion,...d?.source?{commit:d.source.commit}:{}}:{},...l&&!u?{taken:!0}:{}}}));return O({repo:t,agents:a.filter(Boolean)})}async function Bi(e,t,n,r){let i=r.searchParams.get(`repo`);return i?zi(t,i,r.searchParams.get(`ref`)||`HEAD`):O({error:`repo is required`},400)}async function Vi(e,t,n,r){let i=await e.json().catch(()=>void 0),a=i?.agents;if(typeof i?.repo!=`string`||i.ref!==void 0&&typeof i.ref!=`string`||a!==void 0&&!(Array.isArray(a)&&a.every(e=>typeof e==`string`)))return O({error:`repo is required, ref must be a string and agents a list of ids`},400);try{let e=await Ri(t,i.repo);if(!e)return O({error:`No installed app can read ${i.repo}`},400);let n=i.ref??`HEAD`,r=a??await e.contents.repos.listDir(i.repo,`.coder/agents`,e.token,n);for(let e of r){let n=await L(t.store,e);if(n&&(n.source!==`repo`||n.repo!==i.repo))return O({error:`Agent id "${e}" is already taken`},409)}let o=await Me(t.store,e.contents,i.repo,n,e.token,(t.now??Date.now)(),{slugs:r});return await Dt(t,o),O({imported:o.map(e=>e.agent)})}catch(e){return O({error:e instanceof Error?e.message:String(e)},400)}}function Hi(e){if(!e||Array.isArray(e)||typeof e!=`object`)return!1;let t=Object.entries(e);if(t.length>100)return!1;let n=0;for(let[e,r]of t){if(typeof r!=`string`||e.startsWith(`/`)||e.includes(`\\`)||e.includes(`\0`)||e.split(`/`).includes(`..`)||e===`agent.json`||e===`system.md`)return!1;n+=Buffer.byteLength(e)+Buffer.byteLength(r)}return n<=262144}async function Ui(e,t){return(await Ln(e,[t])).flatMap(({app:e,error:t,check:n})=>{let r={id:e.id,integration:e.integration,name:e.name};return t?[{...r,error:t}]:n?n.changed?[{...r,drift:!0}]:[]:[{...r,updated:!0}]})}async function Wi(e,t,n,r){let i=n.slug;if(n.version&&Number(n.version),n.version&&!/^\d+$/.test(r.pathname.split(`/`).at(-1)))return k();let{now:a,local:o,loadCurrent:s}=await Q(t,i),c=await e.json().catch(()=>void 0);try{let e=x({[i]:c})[i];if(!e||typeof e!=`object`)throw Error(`settings must be an object`);let{disabled:n,...r}=e,a=n?{...r,disabled:n}:r,{record:o,version:l}=await s();if(!o||!l)throw Error(`No agent named "${i}".`);if(dn({...o,settings:void 0},l,r,t.integrations),t.local){let e=S(t.local.cwd,i,!!n);return e?O({error:`Agent "${i}" is ${n?`enabled`:`disabled`} by agents.${i} in ${e}. Change it there.`},409):(await St(t,e=>{e.agents={...e.agents,[i]:a}}),await Fe(t.store,t.local.cwd,t.integrations),O(await L(t.store,i)))}return O(await Vn(t.store,i,a,(t.now??Date.now)()))}catch(e){return O({error:e instanceof Error?e.message:String(e)},400)}}async function Gi(e,t,n,r){let i=n.slug;if(n.version&&Number(n.version),n.version&&!/^\d+$/.test(r.pathname.split(`/`).at(-1)))return k();let{now:a,local:o,loadCurrent:s}=await Q(t,i),{record:c}=await s();if(!c)return O({error:`No agent named "${i}"`},404);if(c.source===`builtin`)return O({error:`Built-in agents cannot be deleted.`},400);if(t.local&&!await ye(t.local.cwd,t.integrations,i))return O({error:`Delete .coder/agents/${i} in the repo`},409);for(let{id:e}of await t.store.list(`agentversion`,{prefix:`${i}:`}))await t.store.delete(`agentversion`,e);return await t.store.delete(`agent`,i),O({ok:!0})}async function Ki(e,t,n,r){let i=n.slug;if(n.version&&Number(n.version),n.version&&!/^\d+$/.test(r.pathname.split(`/`).at(-1)))return k();let{now:a,local:o,loadCurrent:s}=await Q(t,i),c=await e.json().catch(()=>void 0);if(!c||typeof c.systemPrompt!=`string`||c.files!==void 0&&!Hi(c.files)||c.name!==void 0&&typeof c.name!=`string`||c.description!==void 0&&typeof c.description!=`string`)return O({error:`definition and systemPrompt are required; files must contain strings`},400);try{b([i]);let[e]=C({definitions:{[i]:{json:c.definition,builtin:!1}},usage:void 0},t.integrations);if(!e)throw Error(`No agent named "${i}".`);let n=t.local?await L(t.store,i):void 0,r=t.local&&n?await A(t.store,i):void 0,a=c.files;t.local&&(await gt(t.local.cwd,t.integrations,i,{definition:{...c.definition,...c.name===void 0?{}:{name:c.name},...c.description===void 0?{}:{description:c.description}},systemPrompt:c.systemPrompt,...a?{files:a}:{}}),await Fe(t.store,t.local.cwd,t.integrations));let o=t.local?void 0:await Xt(t.store,{id:i,name:c.name??e.name,description:c.description??e.definition.description,source:`upload`,definition:e.definition,systemPrompt:c.systemPrompt,files:a,importedFrom:`upload`},(t.now??Date.now)()),s=o?.version??await A(t.store,i),l=o?.unchanged??Or(r&&{...r,createdAt:0},{...s,createdAt:0}),u=await Ui(t,s),d=o?.record??await L(t.store,i);return O({...d,definition:s.definition,version:s.version,unchanged:l,apps:u})}catch(e){return O({error:e instanceof Error?e.message:String(e)},400)}}async function qi(e,t,n,r){let i=n.id,a=Number(r.searchParams.get(`after`)??-1),o=Number.isFinite(a)?a:-1;r.searchParams.has(`limit`)&&ie(r,500,2e3);let s=await t.store.get(`task`,i);if(!s||t.local&&s.handle?.startsWith(`cli:`)&&s.task.flow==="default"){let n=s?.task.cwd??t.local?.cwd;if(!n||!I(n,i,!1))return O({error:`No task "${i}"`},404);{let r=Number(e.headers.get(`last-event-id`)??o);return ta(e,t,`cli:${n}:${i}`,Number.isFinite(r)?r:o,async e=>{let t=I(n,i);if(t)return{status:t,lines:we(n,i,e,500),pendingResult:Ji(n,t,!t.result)}})}}let c=Number(e.headers.get(`last-event-id`)??o),l=t.statementTimeout??((e,t)=>t());return ta(e,t,i,Number.isFinite(c)?c:o,e=>l($i,async()=>{let n=await t.store.get(`task`,i);if(n)return{status:await rr(t,n),lines:await sn(t.store,i,e,500)}}))}function Ji(e,t,n=!1){if(!Ne.has(t.status)||t.error||t.status===`cancelled`)return!1;let r=l(e,t.task.id),a=Date.parse(r?.resumedAt??r?.createdAt??``)||0;return n||(Cr.statSync(q.join(i(e,t.task.id),`result.json`),{throwIfNoEntry:!1})?.mtimeMs??0)<a}const Yi=1e3,$=3e4;function Xi(e,t,n,r){let i=[...new Set((r.searchParams.get(`tasks`)??``).split(`,`).filter(Boolean))].slice(0,100),a=Date.now(),o=t.taskWatcher??new Qi,s=o.tag(t),[c,l]=(e.headers.get(`last-event-id`)??``).split(`-`),u=Number(c),d=u>0&&`-${l}`===s,f=d?Math.min(Math.max(u,a-29e4),a):a,p=u>0&&(!d||u<f)?`event: reset
2
+ data: {}
3
+
4
+ `:``,m=new TextEncoder,h=()=>{},g=new ReadableStream({start(n){n.enqueue(m.encode(`retry: ${Yi}\nid: ${f}${s}\n\n${p}`)),h=o.watch(t,i,f,e=>n.enqueue(m.encode(e)),()=>n.close(),d);let r=()=>{h();try{n.close()}catch{}};e.signal.aborted?r():e.signal.addEventListener(`abort`,r)},cancel(){h()}});return new Response(g,{headers:{"content-type":`text/event-stream; charset=utf-8`,"cache-control":`no-cache, no-transform`}})}function Zi(e,t){let{task:n,approval:r,archivedAt:i,createdAt:a,startedAt:o,finishedAt:s}=e;return{id:n.id,agent:n.agent,status:e.status,approval:r??null,archivedAt:e.autoArchived&&!t?void 0:i,createdAt:a,startedAt:o,finishedAt:s,...t?{result:e.result??null,error:e.error??null,answer:e.answer??null}:{}}}var Qi=class{options;watches=new Set;timer;counts=new Map;runners=new Map;reading=!1;closed=!1;last=Date.now();scans=new Map;left=new Map;archived=new Map;reads=0;generation=Dr().slice(0,8);constructor(e={}){this.options=e}watch(e,t,n,r,i,a=!1){if(this.closed)return queueMicrotask(i),()=>{};let o=Date.now();this.watches.size||(this.last=o);let s={ctx:e,ids:new Set(t),sent:new Map,gone:new Set,from:n,fresh:!0,...a?{runners:``}:{},tag:this.tag(e),beat:o,marked:o,until:o+(this.options.lifeMs??29e4),send:r,close:i};return this.watches.add(s),this.timer||(this.timer=setInterval(()=>this.tick(),this.options.pollMs??1e3),this.timer.unref?.()),this.tick(),()=>this.drop(s)}tag(e){return`-${Tr(`sha256`).update(e.organizationId).digest(`hex`).slice(0,8)}${e.queue instanceof jn?`.${this.generation}`:``}`}runnersChanged(e){this.runners.delete(e)}close(){this.closed=!0;for(let e of[...this.watches]){this.drop(e);try{e.close()}catch{}}}drop(e){this.watches.delete(e)&&([...this.watches].some(t=>t.ctx.organizationId===e.ctx.organizationId)||(this.counts.delete(e.ctx.organizationId),this.runners.delete(e.ctx.organizationId)),this.watches.size||(clearInterval(this.timer),this.timer=void 0,this.counts.clear(),this.runners.clear()))}tick(){let e=Date.now();for(let t of[...this.watches])if(e>=t.until){this.drop(t);try{t.close()}catch{}}else e-t.beat>=(this.options.heartbeatMs??2e4)&&(t.beat=e,this.send(t,`: ping
5
+
6
+ `));this.reading||!this.watches.size||(this.reading=!0,this.read(e).finally(()=>this.reading=!1))}send(e,t){try{e.send(t)}catch{this.drop(e)}}async read(e){let t=[...this.watches],n=new Map;for(let e of t){let t=n.get(e.ctx.organizationId)??{ctx:e.ctx,ids:new Set};for(let n of e.ids)t.ids.add(n);n.set(e.ctx.organizationId,t)}let r=Math.min(this.last,...t.flatMap(e=>e.fresh?[e.from]:[]));this.reads++;let i=await this.changes(n,r-$,e).catch(e=>{console.error(`coder server: task events failed`,e)});if(i){this.last=e;try{for(let[e,{ctx:t}]of n){let n=this.counts.get(e),r=JSON.stringify([[...i.rows.get(e)??[]].map(([e,t])=>[e,t.status,t.archivedAt]).sort(),[...i.deleted.get(e)?.keys()??[]].sort()]),a=n?.fingerprint!==r,o=t.local?[...i.rows.get(e)?.values()??[]].filter(e=>!e.archivedAt&&[`queued`,`running`,`waiting`].includes(e.status)).length:a?(await t.queue.counts(e,{archived:!1,statuses:[`queued`,`running`,`waiting`]})).active:n.active;[...this.watches].some(t=>t.ctx.organizationId===e)&&this.counts.set(e,{active:o,fingerprint:r})}}catch(e){console.error(`coder server: task counts failed`,e);return}await Promise.all([...n].filter(([t])=>e-(this.runners.get(t)?.at??-1/0)>=15e3).map(async([t,{ctx:n}])=>{try{this.runners.set(t,{at:e,records:await n.store.list(`runner`)})}catch(e){console.error(`coder server: runner events failed`,e)}}));for(let n of t){if(!this.watches.has(n))continue;let t=[];try{t=this.news(n,i,e);let r=this.counts.get(n.ctx.organizationId)?.active;r!==void 0&&r!==n.active&&(n.active=r,t.push(`id: ${e}${n.tag}\nevent: counts\ndata: ${JSON.stringify({active:r})}\n\n`)),t.push(...this.runnerNews(n,e))}catch{}!t.length&&e-n.marked>=(this.options.heartbeatMs??2e4)&&t.push(`id: ${e}${n.tag}\n\n`),t.length&&(n.marked=e,this.send(n,t.join(``)))}}}runnerNews(e,t){let n=this.runners.get(e.ctx.organizationId);if(!n)return[];let r=fn(e.ctx,n.records,t),i=JSON.stringify(r.map(({lastSeen:e,...t})=>t.online?t:{...t,lastSeen:e})),a=e.runners;return e.runners=i,a===void 0||a===i?[]:[`id: ${t}${e.tag}\nevent: runners\ndata: ${JSON.stringify({items:r})}\n\n`]}async changes(e,t,n){let r=await[...e.values()][0].ctx.queue.changes([...e].map(([e,t])=>({organizationId:e,ids:[...t.ids]})),t),i=new Map;for(let{organizationId:e,status:t}of r.rows){let n=i.get(e)??new Map;i.set(e,n.set(t.task.id,t))}let a=new Map;for(let{organizationId:e,id:t,at:n}of r.deleted){let r=a.get(e)??new Map;a.set(e,r.set(t,n))}for(let[t,{ctx:r}]of e){if(!r.local)continue;let e=[...i.get(t)?.values()??[]],a=this.scans.get(r.local.cwd);if(!a||n-a.at>=(this.options.localScanMs??4e3)||e.some(e=>e.updatedAt>a.at)){let e=!a||n-a.archivedAt>=(this.options.archiveScanMs??15e3);await rt(r,r.local.cwd);let t=e?W(r.local.cwd,!0):a.archived,i=W(r.local.cwd,!1),o=new Set(i.map(e=>e.task.id)),s=[...i,...t.filter(e=>!o.has(e.task.id))],c=new Set(s.map(e=>e.task.id)),u=this.left.get(r.local.cwd)??new Map;for(let e of a?.rows??[])c.has(e.task.id)||u.set(e.task.id,a.at);for(let[e,t]of u)(t<n-6e5||c.has(e))&&u.delete(e);let d=this.archived.get(r.local.cwd)??new Set;for(let e of d)c.has(e)?d.delete(e):l(r.local.cwd,e)||(u.set(e,a?.at??n),d.delete(e));this.left.set(r.local.cwd,u),this.scans.set(r.local.cwd,a={at:n,rows:s,archived:t,archivedAt:e?n:a.archivedAt})}i.set(t,new Map(at(r.local.cwd,a.rows,e).map(e=>[e.task.id,e])))}return{rows:i,deleted:a}}news(e,{rows:t,deleted:n},r){let{ctx:i}=e,a=t.get(i.organizationId)??new Map,o=[],s=(t,n)=>{let i=JSON.stringify(n);e.sent.get(t)!==i&&(e.sent.set(t,i),o.push(`id: ${r}${e.tag}\nevent: task\ndata: ${i}\n\n`))},c=e=>({id:e,deleted:!0}),l=t=>{let n=i.local&&I(i.local.cwd,t,e.ids.has(t));if(s(t,n?Zi(n,e.ids.has(t)):c(t)),e.gone.add(t),n&&i.local){let e=this.archived.get(i.local.cwd)??new Set;this.archived.set(i.local.cwd,e.add(t))}};for(let[t,n]of a){let a=e.ids.has(t);e.gone.delete(t);let o=Zi(a&&i.local&&n.local&&Ne.has(n.status)?I(i.local.cwd,t)??n:n,a);if(i.local&&n.local&&e.sent.get(t)!==JSON.stringify(o)&&r-(n.finishedAt??0)<$&&Ji(i.local.cwd,n)){e.sent.has(t)||e.sent.set(t,``);continue}a||i.local&&!e.fresh||n.updatedAt>e.from-$?s(t,o):e.fresh&&e.sent.set(t,JSON.stringify(o))}for(let t of e.ids)a.has(t)||l(t);for(let[t,r]of n.get(i.organizationId)??[])r>e.from-$&&s(t,c(t));if(i.local){for(let t of e.sent.keys())!a.has(t)&&!e.ids.has(t)&&!e.gone.has(t)&&l(t);for(let[t,n]of this.left.get(i.local.cwd)??[])n>e.from-$&&!a.has(t)&&e.sent.get(t)!==JSON.stringify(c(t))&&l(t)}return e.fresh=!1,e.from=r,o}};const $i=1e4;var ea=class{options;feeds=new Map;closed=!1;reads=0;constructor(e={}){this.options=e}watch(e,t,n,r,i){if(this.closed)return queueMicrotask(i),()=>{};let a=this.feeds.get(e),o=a?.reading!==void 0&&Date.now()-a.reading>=(this.options.stallMs??1e4);if(!a||o){let t={key:e,read:n,watches:new Set,head:1/0};if(a){clearTimeout(a.timer);for(let e of a.watches)t.watches.add(Object.assign(e,{feed:t}));a.watches.clear()}this.feeds.set(e,a=t)}let s={cursor:t,feed:a,timers:[],send:r,close:i};s.timers=[setTimeout(()=>this.end(s),this.options.lifeMs??5e4),setInterval(()=>this.send(s,`: ping
7
+
8
+ `),this.options.heartbeatMs??2e4)];for(let e of s.timers)e.unref?.();return a.watches.add(s),a.reading===void 0&&t<a.head&&(clearTimeout(a.timer),this.read(a)),()=>this.drop(s)}close(){this.closed=!0;for(let e of[...this.feeds.values()])for(let t of[...e.watches])this.end(t)}drop(e){let{feed:t}=e;for(let t of e.timers)clearTimeout(t);!t.watches.delete(e)||t.watches.size||(clearTimeout(t.timer),this.feeds.get(t.key)===t&&this.feeds.delete(t.key))}end(e,t=``){try{t&&e.send(t),e.close()}catch{}this.drop(e)}send(e,t){try{e.send(t)}catch{this.drop(e)}}async read(e){if(e.timer=void 0,this.feeds.get(e.key)!==e||!e.watches.size)return;let t=[...e.watches],n=Math.min(...t.map(e=>e.cursor));e.reading=Date.now(),this.reads++;let r=await e.read(n).catch(()=>null);if(e.reading=void 0,this.feeds.get(e.key)!==e)return;let i=t.filter(t=>e.watches.has(t)),a=i.length<e.watches.size?0:this.options.pollMs??1e3;if(r===void 0)for(let e of i)this.end(e);else if(r){let{status:t,lines:o,pendingLogs:s,pendingResult:c}=r,l=o.length===500,u=Ne.has(t.status)&&!l&&!s&&!c,d=o.map(e=>[e.seq,`id: ${e.seq}\nevent: log\ndata: ${JSON.stringify(e)}\n\n`]);e.head=Math.max(n,o.at(-1)?.seq??n),l&&(a=0);for(let e of i){let t=d.flatMap(([t,n])=>t>e.cursor?[n]:[]).join(``);e.cursor=Math.max(e.cursor,o.at(-1)?.seq??-1),u?this.end(e,`${t}event: end\ndata: {}\n\n`):t&&this.send(e,t)}}this.feeds.get(e.key)===e&&(e.timer=setTimeout(()=>void this.read(e),a),e.timer.unref?.())}};function ta(e,t,n,r,i){let a=t.logWatcher??new ea,o=new TextEncoder,s=()=>{},c=new ReadableStream({start(c){c.enqueue(o.encode(`retry: ${Yi}\n\n`)),s=a.watch(`${t.organizationId}:${n}`,r,i,e=>c.enqueue(o.encode(e)),()=>c.close());let l=()=>{s();try{c.close()}catch{}};e.signal.aborted?l():e.signal.addEventListener(`abort`,l)},cancel(){s()}});return new Response(c,{headers:{"content-type":`text/event-stream; charset=utf-8`,"cache-control":`no-cache, no-transform`}})}const na={npm:[`npx`,`-y`],pypi:[`uvx`],oci:[`docker`,`run`,`-i`,`--rm`]},ra=(e=[])=>e.map(({name:e,description:t,isRequired:n,isSecret:r,value:i,default:a})=>({name:e,...t?{description:t}:{},...i??a?{placeholder:i??a}:{},required:n===!0,secret:r===!0}));function ia(e=[],t,n){return e.flatMap((e,r)=>{let i=`${t}:${r}`,a=Object.entries(e.variables??{}),o=e.value??e.default,s=(e,t,r)=>{let[i]=ra([{...r,name:e}]);return n.push({...i,label:t}),`{${e}}`};if(a.length)for(let[e,t]of a)o=o?.replaceAll(`{${e}}`,s(`${i}:${e}`,e,t));else o===void 0&&(e.valueHint||e.isRequired)&&(o=s(i,e.valueHint??e.name??i,e));return[...e.type===`named`&&e.name?[e.name]:[],...o===void 0?[]:[o]]})}function aa(e){let t=e.remotes?.find(e=>e.type===`streamable-http`||e.type===`sse`);if(t)return{type:t.type===`sse`?`sse`:`http`,url:t.url,env:[],headers:ra(t.headers)};let n=e.packages?.find(e=>na[e.registryType]&&(e.transport?.type??`stdio`)===`stdio`);if(!n)return;let[r,...i]=na[n.registryType],a=[],o=ia(n.runtimeArguments,`runtime`,a),s=ia(n.packageArguments,`package`,a);return{type:`stdio`,command:n.runtimeHint??r,args:[...!n.runtimeHint||n.runtimeHint===r?i:[],...o,n.identifier,...s],...a.length?{argumentInputs:a}:{},env:ra(n.environmentVariables),headers:[]}}function oa(e,t){let[n=``,r]=e.replace(/^v/,``).split(`+`)[0].split(/-(.*)/),[i=``,a]=t.replace(/^v/,``).split(`+`)[0].split(/-(.*)/),o=n.localeCompare(i,`en`,{numeric:!0});if(o)return o;if(r===void 0||a===void 0)return Number(r===void 0)-Number(a===void 0);let s=r.split(`.`),c=a.split(`.`);for(let e=0;e<Math.max(s.length,c.length);e++){let t=s[e],n=c[e];if(t===void 0||n===void 0)return Number(t!==void 0)-Number(n!==void 0);let r=/^\d+$/.test(t),i=/^\d+$/.test(n),a=r===i?t.localeCompare(n,`en`,{numeric:r}):Number(i)-Number(r);if(a)return a}return 0}var sa=class{sources=[{url:`https://api.mcp.github.com/v0.1/servers`,curated:!0,rows:new Map,ready:!1,failed:!1},{url:`https://registry.modelcontextprotocol.io/v0.1/servers`,curated:!1,rows:new Map,ready:!1,failed:!1}];refreshAt=0;timer;controller;closed=!1;inFlight;response(e,t){if((e.now??Date.now)()>=this.refreshAt&&this.refresh(e),!this.inFlight&&this.sources.some(e=>e.failed)&&!this.sources.some(e=>[...e.rows.values()].some(e=>e.found)))return O({error:`The MCP registry did not answer. Try again.`},502);let n=t.trim().toLowerCase(),r=new Set,i=this.sources.flatMap(e=>[...e.rows].flatMap(([t,{found:i}],a)=>{if(r.has(t)||(r.add(t),!i))return[];let o=[i.name.split(`/`).pop(),i.title].map(e=>e.toLowerCase()),s=!n||o.includes(n)?0:o.some(e=>e.startsWith(n))?1:o.some(e=>e.includes(n))?2:i.description.toLowerCase().includes(n)?3:4;if(s===4)return[];let c=n&&i.verified&&s<3?0:1;return[{found:i,curated:e.curated,order:a,vendor:c,quality:s}]})),a=e=>Number(e===3);return i.sort((e,t)=>a(e.quality)-a(t.quality)||Number(t.curated)-Number(e.curated)||(e.curated?e.order-t.order:e.vendor-t.vendor||e.quality-t.quality||e.found.name.localeCompare(t.found.name))),O(i.slice(0,30).map(({found:e})=>e),200,this.sources.every(e=>e.ready)?{}:{partial:`true`})}refresh(e){if(this.inFlight||this.closed)return;this.timer&&clearTimeout(this.timer);let t=this.controller=new AbortController;this.inFlight=Promise.all(this.sources.map(n=>this.fill(e,n,t.signal))).then(()=>{}).finally(()=>{this.inFlight=void 0,this.refreshAt=(e.now??Date.now)()+36e5,this.closed||(this.timer=setTimeout(()=>this.refresh(e),36e5),this.timer.unref())}),e.waitUntil?.(this.inFlight)}async fill(e,t,n){let r=new Map,i=new Set,a;try{do{let o=new URLSearchParams({limit:`100`});a&&o.set(`cursor`,a);let s=await(e.fetch??fetch)(`${t.url}?${o}`,{headers:{accept:`application/json`},signal:AbortSignal.any([n,AbortSignal.timeout(2e4)])});if(!s.ok)throw Error(`Registry unavailable`);let{servers:c,metadata:l}=await s.json();for(let{server:e,_meta:n}of c){let i=n?.[`io.modelcontextprotocol.registry/official`]?.isLatest===!0,a=e.version??``,o=r.get(e.name);if(o&&(o.latest===i?oa(o.version,a)>=0:o.latest))continue;let s=aa(e),c=/^[a-z0-9-]+(?:\.[a-z0-9-]+)+\//i.test(e.name)&&!/^io\.github(?:\.|\/)/i.test(e.name);r.set(e.name,{version:a,latest:i,found:s?{name:e.name,title:e._meta?.[`io.modelcontextprotocol.registry/publisher-provided`]?.github?.displayName??e.title??e.name.split(`/`).pop()??e.name,description:e.description??``,...c?{verified:!0}:{},...t.curated?{curated:!0}:{},...s}:void 0})}if(t.ready||(t.rows=new Map(r)),a=l?.nextCursor,a&&i.has(a))throw Error(`Registry cursor repeated`);a&&i.add(a)}while(a);t.rows=r,t.ready=!0,t.failed=!1}catch{t.failed=!0}}close(){this.closed=!0,this.timer&&clearTimeout(this.timer),this.controller?.abort()}};async function ca(e,t,n){let r=t.settings??={};return(r.registry??=new sa).response(t,n.searchParams.get(`q`)??``)}const la=`/api/auth/callback`,ua=`/.well-known/oauth-client.json`,da=`/.well-known/oauth-cli-client.json`,fa=`openid profile email offline_access organizations:read`;function pa(e,t){return{client_id:`${e}${ua}`,client_name:`Coder at ${new URL(e).host}`,redirect_uris:[`${e}${la}`],post_logout_redirect_uris:[`${e}/?signed_out=1`],grant_types:[`authorization_code`,`refresh_token`],response_types:[`code`],token_endpoint_auth_method:`private_key_jwt`,token_endpoint_auth_signing_alg:`ES256`,jwks:t,scope:fa}}function ma(e){return{client_id:`${e}${da}`,client_name:`Coder CLI for ${new URL(e).host}`,redirect_uris:[`http://127.0.0.1/callback`],grant_types:[`authorization_code`,`refresh_token`,`urn:ietf:params:oauth:grant-type:device_code`],response_types:[`code`],token_endpoint_auth_method:`none`,scope:fa}}function ha(e,t){return{resource:new URL(e).origin,authorization_servers:[t],bearer_methods_supported:[`header`],scopes_supported:fa.split(` `)}}function ga(e){let t=O(e);return t.headers.set(`cache-control`,`public, max-age=3600`),t}function _a(e,t,n,r){return t.config.publicUrl&&t.auth?ga(pa(t.config.publicUrl,t.auth.jwks)):void 0}function va(e,t,n,r){return t.config.publicUrl&&t.auth?ga(ma(t.config.publicUrl)):void 0}function ya(e,t,n,r){return t.config.publicUrl&&t.auth?ga(ha(t.config.publicUrl,t.auth.issuer)):void 0}const ba=[F(`GET`,Zn,en),F(`GET`,ua,_a,Ze),F(`GET`,da,va,Ze),F(`GET`,`/.well-known/oauth-protected-resource`,ya,Ze),F(`GET`,`/health`,(e,t)=>Ir(t)),F(`GET`,`/`,er,Ge),F(`GET`,`/login`,lt,vt),...j(`/login`,ur,vt).filter(e=>e.method!==`GET`),F(`POST`,`/dash/token`,Nt,dt),...j(`/dash/:org/operator`,an,Le),...j(`/dash`,an,nr)],xa=[F(`GET`,`/api/auth/capabilities`,(e,t)=>O({wular:t.auth?.issuer??null})),...j(`/api/auth`,(e,t)=>t.auth.handler(e),cr),F(`GET`,`/me`,Mn,nn)],Sa=[...M(`/tasks`,[F(`GET`,`/:id/messages`,ze,Se),F(`POST`,`/:id/ack`,je,Se),F(`POST`,`/:id/heartbeat`,He,Se),F(`POST`,`/:id/logs`,Ct,zt),F(`POST`,`/:id/result`,kt,zt),F(`POST`,`/:id/credential`,Et,zt),F(`GET`,`/:id`,In,ht)]),...M(`/logins`,[F(`GET`,`/:id/input`,Yr,Je),F(`GET`,`/:id`,Xr,Je),F(`POST`,`/:id`,Zr,Je)]),...M(`/runners`,[F(`POST`,`/register`,Hn)])],Ca=[...M(`/create`,[F(`GET`,`/:id`,ci,z),F(`POST`,`/:id`,ui,z),F(`GET`,`/:id/callback`,pi,z),F(`POST`,`/:id/callback`,mi,z)]),...M(`/install`,[F(`GET`,`/:id`,yn,P),F(`POST`,`/:id`,yn,P),F(`GET`,`/:id/callback`,Ut,P),F(`POST`,`/:id/callback`,Ut,P)])],wa=M(`/connect`,[F(`GET`,``,Nn,bt),F(`POST`,``,qt,bt),F(`GET`,`/:integration`,$t,tt),F(`GET`,`/:integration/callback`,Xn,tt)]),Ta=[...M(`/hooks`,[F(`POST`,`/*`,(e,t,n)=>Bn(e,t,n[`*`]),(e,t,n)=>t.integrations[n[`*`]]?t:k())]),...Ca,...wa],Ea=[F(`GET`,`/metrics`,async(e,t)=>O(await Rr(t),200,{"cache-control":`no-store`}),$n),F(`GET`,`/usage`,lr),F(`GET`,`/usage/totals`,Bt)],Da=M(``,[F(`GET`,`/folders`,(e,t)=>O(Wt(t.local.cwd))),F(`POST`,`/folders/check`,async(e,t)=>{let n=await e.json().catch(()=>void 0);return O(An(n?.path))}),F(`POST`,`/folders/clone`,async(e,t)=>{let n=await e.json().catch(()=>void 0);return O(await Gn(n?.url))}),F(`POST`,`/folders/pick`,async(e,t)=>O(await bn()))],he),Oa=M(``,[F(`GET`,`/engines/status`,async(e,t)=>O(await De())),F(`POST`,`/engines/:engine/login`,ir),F(`POST`,`/engines/:engine/logout`,mt)],Te),ka=[F(`POST`,`/apps/:id/install`,(e,t,n,r)=>gn(e,t,n.id,r.searchParams.get(`back`),r.searchParams.get(`link`))),F(`POST`,`/apps/create/:integration`,di),F(`GET`,`/apps`,Qe),F(`DELETE`,`/apps/:id`,Re),F(`GET`,`/apps/:id/drift`,ke),F(`POST`,`/apps/:id/update`,Ke),F(`GET`,`/installations`,nt),F(`GET`,`/connections`,Tn,V),F(`POST`,`/connections`,tn,V),F(`PATCH`,`/connections/:id`,on,V),F(`DELETE`,`/connections/:id`,Fn,V),F(`POST`,`/connections/:id/authorize`,Qn,V),F(`GET`,`/integrations`,(e,t,n,r)=>Ye(t,r)),F(`GET`,`/repositories`,(e,t)=>ge(t)),F(`POST`,`/repositories/refresh`,(e,t)=>ge(t,!0))],Aa=[F(`GET`,`/agents/import`,Bi),F(`POST`,`/agents/import`,Vi),F(`GET`,`/agents`,vi),F(`PATCH`,`/agents/:slug/settings`,Wi),F(`GET`,`/agents/:slug/versions`,yi),F(`GET`,`/agents/:slug/versions/:version`,bi),F(`GET`,`/agents/:slug`,xi),F(`DELETE`,`/agents/:slug`,Gi,(e,t)=>ot(t,`Only an owner or admin can delete an agent.`)),F(`PUT`,`/agents/:slug`,Ki)],ja=[F(`GET`,`/credentials`,ut),F(`POST`,`/credentials`,Pt,xe),F(`POST`,`/credentials/:label/default`,Ht),F(`DELETE`,`/credentials/:label`,sr),F(`POST`,`/logins`,zr,U),F(`GET`,`/logins/:id`,Br,U),F(`POST`,`/logins/:id`,Vr,U),F(`DELETE`,`/logins/:id`,Hr,U)],Ma=[F(`GET`,`/runners`,Jn),F(`POST`,`/runners`,pe),F(`POST`,`/runners/pair`,Dn),F(`POST`,`/runners/:id/test`,it),F(`PATCH`,`/runners/:id`,Rt),F(`DELETE`,`/runners/:id`,Zt)],Na=[F(`GET`,`/composer`,Li),F(`GET`,`/tasks`,jt),F(`POST`,`/tasks`,We),F(`GET`,`/tasks/:id`,me),F(`DELETE`,`/tasks/:id`,Yt),F(`GET`,`/tasks/:id/logs`,En),F(`GET`,`/tasks/:id/stream`,qi),F(`POST`,`/tasks/:id/steer`,Kn),F(`POST`,`/tasks/:id/ask`,Ot),F(`POST`,`/tasks/:id/approve`,Rn),F(`POST`,`/tasks/:id/cancel`,Tt),F(`POST`,`/tasks/:id/archive`,Ve),F(`GET`,`/events`,Xi)],Pa=[F(`GET`,`/config`,yt),F(`PATCH`,`/config`,be),F(`PUT`,`/config`,Ie)],Fa=[F(`POST`,`/models/probe`,(e,t)=>ki(e,t)),F(`GET`,`/models`,ji),F(`POST`,`/models`,Mi),F(`DELETE`,`/models/:name`,Ni),F(`POST`,`/models/:name/alias`,Pi),F(`POST`,`/models/:name/disable`,Fi),F(`POST`,`/models/:name/enable`,Ii)],Ia=[F(`GET`,`/mcp-registry`,(e,t,n,r)=>ca(e,t,r))],La=M(`/operator`,[F(`GET`,`/apps`,ni),F(`POST`,`/apps/:integration`,ri),F(`GET`,`/audit`,ii)],Oe),Ra=[F(`GET`,`/flows`,un),F(`GET`,`/pulls`,It),F(`POST`,`/flows/:name/run`,Wn),F(`POST`,`/review`,kn)],za=M(`/admin`,[...Ea,...Da,...Oa,...ka,...Aa,...ja,...Ma,...Na,...Pa,...Fa,...Ia,...Ra,...La]).map(e=>({...e,guard:Mt(e.guard)})),Ba=[F(`GET`,`/connections/oauth/callback`,(e,t,n,r)=>Jt(e,t,r),ar),...Sa,...za,...xa,...Ta,...ba];async function Va(e,t,n){if(!hn(e,t))return k();let r=new URL(e.url);return n.scope instanceof Response?n.scope:(t=n.scope??t,await pt(Ba,e,t,r)??Vt(e,t,r))}const Ha=`x-coder-request-scope`;function Ua(e,{sessions:t,operators:n,cookies:r}){let i=e.auth;return i?{...e,auth:{...i,session(e,n){let a=JSON.stringify([...[`cookie`,`authorization`].map(t=>e.get(t)),!!n]),o=t.get(a);if(!o){let s=new Headers(e);s.delete(`x-coder-organization`),o=i.session(s,n,r),t.set(a,o)}let s=e.get(`x-coder-organization`);return s?o.then(e=>e&&(e.stale?e:Pn(e,s))):o},setOrganization:(e,t)=>i.setOrganization(e,t,r),operator(e){let t=e.get(`cookie`)??``,a=n.get(t);return a||(a=i.operator(e,r),n.set(t,a)),a}}}:e}function Wa(e,t,n){let r=t.requestScopes??=new Map,i=e.headers.get(Ha),a=n&&i?r.get(i):void 0;if(a)return{req:e,ctx:Ua(t,a),end(){}};let o=new Headers(e.headers);if(o.delete(Ha),!t.auth)return{req:i?new Request(e,{headers:o}):e,ctx:t,end(){}};let s=Dr(),c={sessions:new Map,operators:new Map,cookies:[]};return r.set(s,c),o.set(Ha,s),{req:new Request(e,{headers:o}),ctx:Ua(t,c),cookies:c.cookies,end:()=>r.delete(s)}}async function Ga(e,t,n={}){t.limits??=new Ce((t.now??Date.now)()),t.limits.requests++,t.settings??={},t.taskWatcher??=new Qi,t.logWatcher??=new ea,t.dashboardHosts??=new cn;let r=()=>Ka(e,t,n);return t.dbProfile?t.dbProfile.request(n.inProcess===!0,r):r()}async function Ka(e,t,n){let r=await se(e,de(new URL(e.url).pathname));if(r instanceof Response)return r;let i=Wa(r,t,n.inProcess===!0),a=!1;try{let r=n.clientIp??`unknown`,o=await et(i.req,i.ctx,r),s=qa(o instanceof Response?o:await Va(i.req,i.ctx,o),i.cookies),c=new URL(e.url).pathname.split(`/`),l=c[1]===`tasks`,u=c[1]===`admin`&&c[2]===`tasks`;if(e.method!==`GET`&&s.ok&&![`hooks`,`tasks`,`logins`].includes(c[1])&&!(o instanceof Response)){let e=o.scope instanceof Response?void 0:o.scope??i.ctx;e&&xn(e,e.organizationId)}return e.method!==`GET`&&s.ok&&!(l&&c.length===4&&c[2]&&[`heartbeat`,`logs`].includes(c[3]))&&!(u&&c.length===5&&c[3]&&[`steer`,`ask`,`approve`,`archive`].includes(c[4]))&&(l||u||c[1]===`admin`&&c[2]===`review`||c[1]===`admin`&&c[2]===`flows`&&c.length===5&&c[3]&&c[4]===`run`)&&Ee(t,u&&c.length===3&&e.method===`POST`),a=!!s.body&&(s.headers.get(`content-type`)??``).includes(`text/html`),a?Ja(s,i.end):s}finally{a||i.end()}}function qa(e,t=[]){if(!t.length)return e;let n=new Headers(e.headers);for(let e of t)n.append(`set-cookie`,e);return new Response(e.body,{status:e.status,statusText:e.statusText,headers:n})}function Ja(e,t){let n=e.body.getReader(),r=new ReadableStream({async pull(e){try{let{done:r,value:i}=await n.read();r?(t(),e.close()):e.enqueue(i)}catch(n){t(),e.error(n)}},cancel(e){return t(),n.cancel(e)}});return new Response(r,e)}async function Ya(e={}){let t=e.env??J.env,n=pr(t,e.host??`node`),r=e.runner??n.runner;if((e.host===`vercel`||t.VERCEL)&&(r===`local`||r===`local-docker`))throw new v(`invalid-option`,`The ${r} runner cannot run on Vercel.`,{hint:`Leave RUNNER unset to use vercel-sandbox.`});if(n.store===`memory`&&r!==`local`&&r!==`local-docker`)throw new v(`invalid-option`,`The ${r} runner needs a database.`,{hint:`Set DATABASE_URL, or use RUNNER=local for a memory server.`});if(!n.publicUrl)throw new v(`invalid-option`,`PUBLIC_URL is required to start a Coder server.`,{hint:`Set PUBLIC_URL to the address platforms and browsers use.`});let i=[];if(n.store===`memory`&&!e.local&&i.push(`test server, not for production: everything is in memory, nothing survives a restart, no sign-in; set DATABASE_URL for a real deployment`),!t.SERVER_ENCRYPTION_KEY&&!e.local&&i.push(`secrets are stored unencrypted; set SERVER_ENCRYPTION_KEY (openssl rand -base64 32)`),n.store===`postgres`&&!n.encryptionKey)throw new v(`invalid-option`,`SERVER_ENCRYPTION_KEY is required for a Postgres server.`,{hint:`Set SERVER_ENCRYPTION_KEY (openssl rand -base64 32); sign-in keys derive from it.`});let a=E(n.integrations),o=n.store===`memory`&&!n.adminToken?Er(18).toString(`base64url`):void 0;n.store===`postgres`&&n.adminToken&&i.push(`ADMIN_TOKEN is ignored with Postgres; owners and admins sign in with coder auth login`);let s={...n,...n.store===`postgres`?{adminToken:void 0}:{},...o?{adminToken:o}:{},...e.runner?{runner:e.runner}:{}},c=await st(s,{local:!!e.local});try{s.store===`memory`&&await G(c.store(c.defaultOrganizationId),Date.now());let n=c.connection&&s.auth?await(await import(`./auth-B3RiDPMI.js`)).createAuth(c.connection.db,s):void 0,r=e.cwd??J.cwd(),l=c.store(c.defaultOrganizationId),u=vr({kind:s.runner,workDir:s.workDir,config:s.runnerConfig,local:!(e.host===`vercel`||t.VERCEL),sandbox:{region:_r(s.databaseUrl),snapshots:gr(l)}});if(!u[s.runner])throw await c.close(),new v(`invalid-option`,`Runner ${s.runner} is not configured.`,{hint:`Set RUNNER_CONFIG to JSON containing url and secret.`});let d=new cn,f=new Ce,p=new sa,m=new Map,h=new Map,g=new Qi,_=new ea,y=t=>{let i=m.get(t);if(i)return i;let o=c.store(t),l=new Map,v={limits:f,...c.connection?{databaseHealth:async()=>{await c.connection.db.execute(Sr`select 1`)},statementTimeout:c.connection.statementTimeout}:{},config:s,settings:{registry:p},organizationId:t,integrations:a,runners:u,store:o,queue:c.queue,requestScopes:h,taskWatcher:g,logWatcher:_,dashboardHosts:d,dbProfile:c.connection?.profile,chatState:c.chatState,fileReads:l,repositoryLists:new Map,loadAgent:Ue(a,{cwd:r,config:s,store:o,fileReads:l}),...n?{auth:n}:{},scope:y,webhookTarget:(e,t)=>c.webhookTarget(e,t),appRecord:e=>c.appRecord(e),apps:e=>c.apps(e),installationOrganization:e=>c.installationOrganization(e),installations:e=>c.installations(e),serverOrganizationId:c.defaultOrganizationId,taskOrganization:(e,t)=>c.taskOrganization(e,t),...e.local?{local:e.local}:{}};return m.set(t,v),v};globalThis.__coder={handle:e=>Ga(e,y(c.defaultOrganizationId),{inProcess:!0})};let b=y(c.defaultOrganizationId),x;return e.local&&(await Xe(b),x=setImmediate(()=>{Ae(b).catch(()=>void 0)})),{config:s,context:y,defaultContext:b,warnings:i,...o?{mintedToken:o}:{},sweep:c.sweep,close:async()=>{p.close(),g.close(),_.close(),x&&clearImmediate(x),await b.local?.usageSync?.catch(()=>void 0),await $e(b),await c.close()}}}catch(e){throw await c.close(),e}}var Xa=e({serve:()=>no,serverHandler:()=>Qa});function Za(e){try{let t=new URL(e);return H.has(t.hostname)?Number(t.port||(t.protocol===`https:`?443:80)):void 0}catch{return}}function Qa(e=J.env,t=e.VERCEL?`vercel`:`node`){mr();let n,r=()=>n??=Ya({env:e,host:t}).catch(e=>{throw n=void 0,e});return Object.assign(async(t,n)=>{let i=await r(),a=n?e=>n(e):e=>void e.catch(()=>{}),o=e=>({...i.context(e),waitUntil:a,scope:o});return Ga(t,o(i.defaultContext.organizationId),{clientIp:e.VERCEL?t.headers.get(`x-forwarded-for`)?.split(`,`,1)[0]?.trim():void 0})},{scheduled:async()=>{let e=await r();await Promise.all([e.sweep(),ft(e.defaultContext,!1,!0),Gt(e.defaultContext)])},close:async()=>{let e=n;n=void 0,await(await e)?.close()}})}function $a(e){let t=wr(`lsof`,[`-nP`,`-iTCP:${e}`,`-sTCP:LISTEN`,`-t`],{encoding:`utf8`}),n=Number(t.stdout?.split(`
9
+ `)[0]);if(n)return{pid:n,command:wr(`ps`,[`-o`,`command=`,`-p`,String(n)],{encoding:`utf8`}).stdout?.trim().slice(0,120)||`another process`}}function eo(e){let t=$a(e),n=t&&/\bcoder (dash|server serve)\b/.test(t.command);return new v(`server`,t?n?`Coder is already running on port ${e} (pid ${t.pid}): http://localhost:${e}`:`Port ${e} is in use by ${t.command} (pid ${t.pid}).`:`Port ${e} is in use.`,{hint:t?`Stop it with \`kill ${t.pid}\`, or use another port: --port ${e+1}`:`Use another port: --port ${e+1}`})}async function to(e={}){mr();let t=e.env??J.env;if(e.runner&&!yr.includes(e.runner))throw new v(`invalid-option`,`Invalid --runner value: use ${yr.join(`, `)}`);if(e.port!==void 0&&(!Number.isInteger(e.port)||e.port<1||e.port>65535))throw new v(`invalid-option`,`Invalid port: use 1 through 65535.`);let n=t.PORT&&/^\d+$/.test(t.PORT)?Number(t.PORT):void 0,r=Za(t.PUBLIC_URL),i=e.port??n??r??8787;if(!Number.isInteger(i)||i<1||i>65535)throw new v(`invalid-option`,`Invalid PORT: use 1 through 65535.`);let a=t.PUBLIC_URL?t:{...t,PUBLIC_URL:`http://localhost:${i}`},o=!!(t.DATABASE_URL||t.POSTGRES_URL);if(o&&e.memory)throw new v(`invalid-option`,`A memory server cannot use DATABASE_URL.`,{hint:`Unset DATABASE_URL, or drop --memory.`});let s=(e.host??t.HOST??(o?void 0:`127.0.0.1`))?.replace(/^\[(.*)\]$/,`$1`),c=!o&&!e.memory;if(c&&!H.has(s))throw new v(`invalid-option`,`A local server listens on loopback only.`,{hint:`Reach it through a tunnel or a proxy on this machine; set DATABASE_URL for a deployment, or use --memory for a test server.`});if(e.memory&&t.VERCEL)throw new v(`invalid-option`,`A memory server cannot run on Vercel.`,{hint:`Set DATABASE_URL for a real deployment.`});let l,u,d=c?new Promise((e,t)=>{u=t,l=()=>{Pr().then(e,t)}}):void 0,f=d?.then(()=>void 0).catch(()=>void 0),p=c?{cwd:e.cwd??J.cwd(),port:i,cacheMaintenance:f}:void 0,m=await Ya({cwd:e.cwd,env:a,runner:e.runner,...p?{local:p}:{}}),h=m.defaultContext,g=()=>{m.sweep().catch(()=>{})};g();let _=setInterval(g,36e5);_.unref();let y=setInterval(()=>{ft(h,!1,!0).catch(()=>{}),Gt(h).catch(()=>{})},6e4);y.unref();let b=kr.createServer(ue((e,t)=>Ga(e,h,{clientIp:t}),{limit:de,admit:e=>o||Pe(e.socket.remoteAddress,e.url??`/`)})),x=m.config.publicUrl;r!==void 0&&r!==i&&m.warnings.push(`PUBLIC_URL points at port ${r} but the server listens on ${i}`),await new Promise((e,t)=>{b.once(`error`,t),b.listen(i,s,e)}).catch(async e=>{throw u?.(e),clearInterval(y),clearInterval(_),await m.close(),e.code===`EADDRINUSE`?eo(i):e});let ee=l?setTimeout(l,0):void 0,S=!1,C=async()=>{S||(S=!0,clearInterval(y),clearInterval(_),h.taskWatcher?.close(),h.logWatcher?.close(),await new Promise((e,t)=>b.close(n=>n?t(n):e())),await f,ee&&clearTimeout(ee),await m.close())},w=h.auth?`Wular Auth (${h.auth.issuer})`:void 0,T=`http://localhost:${i}`,E=ve(h),D=E===`local`?T:x,te=m.config.store===`memory`?m.mintedToken??t.ADMIN_TOKEN:void 0;return{address:T,publicUrl:x,warnings:m.warnings,close:C,runner:m.config.runner,store:m.config.store,mode:E,...d?{cacheMigration:d}:{},maxTasks:m.config.maxTasks??m.config.limits?.concurrentTasks??10,...w?{signIn:w}:{},...m.mintedToken?{mintedToken:m.mintedToken}:{},...m.config.store===`postgres`&&t.DATABASE_URL?{database:ct(t.DATABASE_URL)}:{},...H.has(new URL(D).hostname)?{dashboard:`${D}/dash${te?`#token=${encodeURIComponent(te)}`:``}`}:{}}}async function no(e={}){try{return await to(e)}catch(e){if(e instanceof v)throw e;let t=e instanceof Error&&e.cause instanceof Error?`: ${e.cause.message}`:``;throw new v(`server`,`${e instanceof Error?e.message:String(e)}${t}`)}}export{fa as a,la as i,Xa as n,ua as o,Qa as r,no as t};
@@ -0,0 +1 @@
1
+ import{s as e}from"./cli-D5hyqGq0.js";const t=e(`server`,{serve:async()=>(await import(`./serve-BoTW4P2G.js`)).commandServerServe,"rotate-key":async()=>(await import(`./rotate-key-CfeZ6Rg7.js`)).commandServerRotateKey,app:async()=>(await import(`./app-snjvOKJA.js`)).commandServerApp,workflow:async()=>(await import(`./workflow-CcC-xbfp.js`)).commandServerWorkflow},{menu:[{usage:`serve [--port <n>]`,blurb:`run the server`},{usage:`rotate-key`,blurb:`re-seal secrets with SERVER_ENCRYPTION_KEY`},{usage:`app create <integration>`,blurb:`create the built-in agent's public app`},{usage:`workflow`,blurb:`print the GitHub Actions workflow for RUNNER=github-actions`}],description:[`Self-host Coder: the server your agents and platform apps talk to, with a dashboard and sign-in. We run one as the hosted service; you can run your own.`],exampleCommand:`server serve`},{nested:[`app`]});export{t as commandServer};
@@ -0,0 +1,6 @@
1
+ import{T as e}from"./dispatch-D3Dqxijf.js";import{i as t}from"./cli-D5hyqGq0.js";import{f as n,p as r,t as i}from"./output-BKeyLbvt.js";import{n as a,t as o}from"./args-CxsMr9Un.js";import s from"node:process";const c=t({name:`setup-host`,help:{usage:`coder setup-host [claude] [codex] [agents] [--json]`,summary:`Set up coder in your host: check engines and auth, seed the config, and
2
+ install the host plugin/skill for the named host(s). Claude Code gets its
3
+ marketplace plugin; "agents" installs a skill into ~/.agents/skills for
4
+ every host that reads the Agent Skills standard dir (Codex, Pi, OpenCode,
5
+ ...). "codex" is an alias for agents. With no host, checks and seeds.`,examples:[[`coder setup-host claude`,`install the Claude Code plugin`],[`coder setup-host agents`,`install the skill into ~/.agents/skills (Codex, Pi, OpenCode, ...)`]]},options:{...o,codex:a,claude:a,agents:a},args:1/0,run:({options:t,args:n,cwd:r})=>e(r,{...t,hosts:n},()=>t.json||l()),print:u});function l(){s.stdout.write(`${r.bold(`Coder host setup`)}\n\n`)}function u(e){let t=r.bold,a=r.dim,{codex:o,claude:c,codexUpdate:l,config:u,configFile:d,claudePlugin:f,agentsSkill:p,ready:m}=e,h=[],g=o.available?o.loggedIn?n(`codex ${a(`${o.detail}; ${o.auth}`)}`):i(`codex not logged in ${a(`(${o.auth})`)} - run: codex login`):i(`codex CLI not installed - run: npm install -g @openai/codex`),_=c.available?c.loggedIn?n(`claude ${a(`${c.detail}; ${c.auth}`)}`):i(`claude not logged in - run: claude auth login`):i(`claude CLI not installed - run: npm install -g @anthropic-ai/claude-code`);h.push(t(`Available Engines`),g,_,` ${a(`custom models (local/provider endpoints): coder model --help`)}`),l?.updated?h.push(n(`codex ${a(`updated ${l.from} -> ${o.detail} (GPT-6 support)`)}`)):l&&h.push(i(`codex ${l.note}`)),h.push(``);let v=e=>{let t=u.engines?.[e]??{};return[t.model,t.effort,t.permissions].filter(Boolean).join(`/`)};h.push(t(`Config`),` chain: ${(u.chain??[]).join(` -> `)} codex: ${v(`codex`)} claude: ${v(`claude`)}`,` ${a(d)} ${a(`(coder config set <key> <value> to change)`)}`,``);let y=[[`claude plugin`,f??null],[`agents skill `,p??null]];for(let[e,t]of y)t&&h.push(t.installed?n(`${e} ${a(t.note)}`):i(`${e} ${t.note}`),``);h.push(m?n(`ready - try: coder run --wait "explain this repo's layout"`):i(`not ready - install an engine CLI to run tasks: codex (npm install -g @openai/codex, then codex login) or claude (npm install -g @anthropic-ai/claude-code, then claude auth login)`)),s.stdout.write(`${h.join(`
6
+ `)}\n`)}export{c as commandSetupHost};
@@ -0,0 +1 @@
1
+ import{i as e,r as t}from"./cli-D5hyqGq0.js";import{g as n,p as r}from"./output-BKeyLbvt.js";import{i,n as a,s as o,t as s}from"./args-CxsMr9Un.js";import{isLocal as c}from"./list-ChFFjT_a.js";import l from"node:path";import u from"node:process";const d={server:i,workspace:o,yes:a};function f(e,t){return c(e)?{id:e.id,name:e.name,source:e.builtin?`builtin`:`repo`,...e.dir&&!e.builtin?{dir:l.relative(t,e.dir)}:{},definition:e.definition,...e.usage?{usage:e.usage}:{}}:{id:e.id,name:e.name,source:e.source,definition:e.definition,...e.settings?{usage:e.settings}:{}}}function p(e){let t=r,{definition:i,usage:a}=e,o=`dir`in e?e.dir:void 0,s=[[`name`,e.name],[`source`,o?`${e.source} (${o})`:e.source],[`description`,i.description],[`permissions`,a?.permissions??i.permissions],[`engine`,a?.engine??i.engine],[`model`,a?.model??i.model],[`effort`,a?.effort??i.effort]],c=Math.max(...s.map(([e])=>e.length))+2;for(let[e,n]of s)n&&u.stdout.write(`${t.dim(e.padEnd(c))}${n}\n`);let l=Object.entries(i.integrations).map(([e,t])=>{let n=a?.integrations?.[e],r=Array.isArray(t.events)?t.events:Object.keys(t.events??{}),i=n?.allowedEvents?r.filter(e=>n.allowedEvents.includes(e)):r,o=n?.allowedTools??t.tools;return{id:e,events:i.join(`, `)||`-`,tools:Array.isArray(o)?o.join(`, `):o??`-`}});u.stdout.write(`\n${n([{header:`integration`,value:e=>e.id,paint:e=>t.cyan(e)},{header:`events`,value:e=>e.events},{header:`tools`,value:e=>e.tools}],l,{style:t,border:!0})}`)}const m=e({name:`agent show`,help:{usage:`coder agent show <id> [--server [url]] [--json] [--cwd <dir>]`,summary:`Describe one agent as it will run here, or its active version on a server: its settings and per-integration events and tools.`,flags:[t],examples:[[`coder agent show coder`,`what the built-in agent listens to and may do`]]},options:{...s,...d},args:1,run:async({options:e,args:[t],cwd:n})=>{let{agents:r}=await import(`./agent-C1HI4JlI.js`).then(e=>e.t);return r.show(t,{...e,cwd:n,organization:e.workspace})},json:(e,{cwd:t})=>f(e,t),print:(e,{cwd:t})=>p(f(e,t))});export{m as commandAgentShow};
@@ -0,0 +1 @@
1
+ import{i as e}from"./cli-D5hyqGq0.js";import{g as t,p as n}from"./output-BKeyLbvt.js";import{n as r}from"./args-CxsMr9Un.js";import i from"node:process";function a(e){let r=n,a=[...Object.entries(e.events).map(([e,t])=>({kind:`event`,name:e,does:t})),...Object.entries(e.tools).map(([e,t])=>({kind:`tools`,name:e,does:t.join(`, `)}))];i.stdout.write(t([{header:`kind`,value:e=>e.kind,paint:e=>r.light(e)},{header:`name`,value:e=>e.name},{header:`does`,value:e=>e.does}],a,r))}const o=e({name:`agent integrations show`,globalFlags:{cwd:!1},help:{usage:`coder agent integrations show <id> [--json]`,summary:`Describe one integration: each event with what triggers it, and the tools each preset (observe, comment, write) allows.`,examples:[[`coder agent integrations show github`,`the GitHub integration in full`]]},options:{json:r},args:1,run:async({args:[e]})=>{let{agents:t}=await import(`./agent-C1HI4JlI.js`).then(e=>e.t);return t.integrations.show(e)},print:a});export{o as commandIntegrationsShow};
@@ -0,0 +1,3 @@
1
+ import{An as e,Hn as t,In as n,Ln as r,Nn as i,Pn as a,Wn as o,jn as s,kn as c}from"./config-D2FxHWwi.js";import{t as l}from"./types-B42Oh0zF.js";import{createHash as u,createHmac as d,timingSafeEqual as f}from"node:crypto";import{isIP as ee}from"node:net";function p(e,t){let n=typeof e==`string`?Buffer.from(e):e,r=typeof t==`string`?Buffer.from(t):t;return n.length===r.length&&f(n,r)}const te=e=>u(`sha256`).update(e).digest(`base64url`),m=`https://api.github.com`;function h(e,t=`application/vnd.github+json`){return{accept:t,...e?{authorization:`Bearer ${e}`}:{},"user-agent":`coder`,"x-github-api-version":`2022-11-28`}}function g(e,t){return e.hook.before(`request`,e=>{e.request={...e.request,fetch:t}}),e}async function _(e,t=fetch){let[{createGitHubAdapter:n},{ConsoleLogger:r}]=await Promise.all([import(`./dist-C3wD7GfG.js`),import(`./dist-BTornX7Y.js`).then(e=>e.a)]);return g(n({...typeof e==`string`?{installationToken:e}:e,apiUrl:m,webhookVerifier:()=>!1,logger:new r(`error`)}).octokit,t)}const v=e=>t=>{if(!e.includes(t.status??0))throw t},y=e=>{let[t=``,n=``]=e.split(`/`);return{owner:t,repo:n}};async function ne(e,t,n,r){let i=await(await _(n)).repos.getContent({...y(e),path:t,...r?{ref:r}:{},mediaType:{format:`raw`}}).catch(v([404]));return typeof i?.data==`string`?i.data:void 0}async function re(e,t,n,r){let i=new URL(`${m}/repos/${e}/contents/${t}`);r.ref&&i.searchParams.set(`ref`,r.ref);let a=await r.fetch(i,{headers:{...h(n),...r.etag?{"if-none-match":r.etag}:{}}});if(a.status===304)return`unchanged`;let o=a.headers.get(`etag`)??void 0;if(a.status===404)return o?{etag:o}:{};if(!a.ok)throw Error(`GitHub answered ${a.status} reading ${e}/${t}`);let s=await a.json(),c=s.type===`file`&&s.encoding===`base64`?Buffer.from(s.content??``,`base64`).toString():void 0;return{...c===void 0?{}:{text:c},...o?{etag:o}:{}}}async function ie(e,t,n){let r=await(await _(n)).repos.getCommit({...y(e),ref:t,mediaType:{format:`sha`}}).catch(v([404,422]));return r?String(r.data).trim():void 0}async function ae(e,t,n,r){let i=await(await _(n)).repos.getContent({...y(e),path:t,...r?{ref:r}:{}}).catch(v([404]));return Array.isArray(i?.data)?i.data.map(e=>e.name):[]}async function oe(e,t=fetch){let n=[];for(let r=1;;r++){let i=await t(`${m}/installation/repositories?per_page=100&page=${r}`,{headers:{...h(e),authorization:`token ${e}`},signal:AbortSignal.timeout(1e4)});if(!i.ok)throw Error(`GitHub repositories failed: ${i.status}`);let a=await i.json();if(n.push(...a.repositories.map(e=>e.full_name)),n.length>=a.total_count||a.repositories.length<100)break}return[...new Set(n)]}async function se(e,t){let{data:n}=await(await _(t)).pulls.list({...y(e),state:`open`,sort:`created`,direction:`desc`,per_page:50});return n.map(e=>({number:e.number,title:e.title,author:e.user?.login,createdAt:e.created_at}))}async function ce(e,t){let{data:n}=await(await _(t)).repos.get(y(e));return{owner:n.owner.login,name:n.name,cloneUrl:n.clone_url,ref:n.default_branch,defaultBranch:n.default_branch}}async function le(e,t,n,r){let i=await(await _(n,r)).repos.getCollaboratorPermissionLevel({...y(e),username:t}).catch(()=>void 0);return[`admin`,`maintain`,`write`].includes(i?.data.permission??``)}function ue(e,t,n){let r=`https://github.com/${e}`;return t?`${r}/tree/${n??`HEAD`}/${t}`:r}var b=class extends Error{code;error;constructor(e,t,n){super(n??(t?`${e} (${t})`:e)),this.code=e,this.error=t}};const x={observe:[`read`],comment:[`read`,`comment`],write:[`read`,`comment`,`write`]},de=[`repos`,`pull_requests`,`issues`],fe=[`repos`,`issues`];function pe(e){return e?.type===`pull_request`||/^github:[^:]+:\d+(:|$)/.test(e?.chat?.thread.id??``)?de:fe}function me(e,t,n){let r=!e.some(e=>e!==`read`);return{name:`github`,command:`github-mcp-server`,args:[`stdio`,`--toolsets=${pe(t).join(`,`)}`,...r?[`--read-only`]:[]],env:{GITHUB_PERSONAL_ACCESS_TOKEN:n}}}function he(e,{name:t,description:n,permissions:r,events:i,isPublic:a=!1}){let o=e.replace(/\/$/,``);return{name:t,...n?{description:n}:{},url:o,hook_attributes:{url:`${o}/hooks/github`,active:!0},redirect_url:`${o}/create/github/callback`,callback_urls:[`${o}/install/github/callback`,`${o}/connect/github/callback`],request_oauth_on_install:!0,public:a,default_permissions:r,default_events:[...new Set([...i,`repository`])]}}function ge(e,t){let n=e?`https://github.com/organizations/${encodeURIComponent(e)}/settings/apps/new`:`https://github.com/settings/apps/new`;return t?`${n}?state=${encodeURIComponent(t)}`:n}async function _e(e,t=fetch){let n=await t(`${m}/app-manifests/${encodeURIComponent(e)}/conversions`,{method:`POST`,headers:h()});if(!n.ok)throw Error(`GitHub App manifest conversion failed: ${n.status}`);let r=await n.json(),i=r.app_id??r.id;if(!i||!r.slug||!r.pem||!r.webhook_secret||!r.client_id||!r.client_secret)throw Error(`GitHub App manifest conversion response was incomplete`);return{appId:String(i),slug:r.slug,privateKey:r.pem,webhookSecret:r.webhook_secret,clientId:r.client_id,clientSecret:r.client_secret,...r.owner?.login?{owner:{login:r.owner.login,type:r.owner.type}}:{}}}const S=`https://github.com/login/oauth`,C=e=>`${e.replace(/\/$/,``)}/install/github/callback`;function w(e){let{clientId:t,clientSecret:n}=e;if(!t||!n)throw Error(`This GitHub App has no OAuth client; create it again from the dashboard`);return{clientId:t,clientSecret:n}}async function T(e,t,n,r){let{clientId:i,clientSecret:a}=w(e),o=await n(`${S}/access_token`,{method:`POST`,headers:{accept:`application/json`,"content-type":`application/x-www-form-urlencoded`},body:new URLSearchParams({client_id:i,client_secret:a,...t})}),s=await o.json().catch(()=>({}));if(!o.ok||!s.access_token)throw new b(`platform-error`,s.error??String(o.status),`GitHub authorization failed: ${s.error??o.status}`);return{accessToken:s.access_token,...s.refresh_token?{refreshToken:s.refresh_token}:{},...s.expires_in?{expiresAt:r+s.expires_in*1e3}:{}}}async function ve(e,t){let n=await t(`${m}/user`,{headers:h(e)}),r=await n.json().catch(()=>({}));if(!n.ok||!r.id||!r.login)throw Error(`GitHub user lookup failed: ${n.status}`);return{id:r.id,login:r.login}}async function ye(e,t,n,r=fetch){for(let i=1;i<=10;i++){let a=await r(`${m}/user/installations?per_page=100&page=${i}`,{headers:h(e)});if(!a.ok)throw Error(`GitHub installation check failed: ${a.status}`);let o=(await a.json()).installations??[],s=o.find(e=>String(e.id)===n&&String(e.app_id)===t);if(s)return{login:s.account?.login??`unknown`,...s.account?.type?{type:s.account.type}:{}};if(o.length<100)return}}async function E(e){let{createAppAuth:t}=await import(`./dist-node-Bv1kCqyi.js`).then(e=>e.n),{token:n}=await t({appId:e.appId,privateKey:e.privateKey})({type:`app`});return n}async function be(e,t,n=fetch){let r=await E(e),i=await n(`${m}/app/installations/${encodeURIComponent(t)}`,{headers:h(r)});if(i.status===404)return!1;if(!i.ok)throw Error(`GitHub installation lookup failed: ${i.status}`);return!0}async function D(e,t,n,r){let i=new URL(e.url).searchParams.get(`code`);if(!i)throw new b(`missing-code`);let a=await T(t,{code:i,...n?{redirect_uri:n}:{}},r,Date.now()),o=await ve(a.accessToken,r);return{id:String(o.id),login:o.login,token:JSON.stringify(a),accessToken:a.accessToken}}const xe={authorizeUrl(e,{publicUrl:t,state:n}){let r=new URLSearchParams({client_id:w(e).clientId,redirect_uri:`${t.replace(/\/$/,``)}/connect/github/callback`,state:n});return`${S}/authorize?${r}`},async exchange(e,t,{publicUrl:n,fetch:r}){let{accessToken:i,...a}=await D(e,t,`${n.replace(/\/$/,``)}/connect/github/callback`,r);return a},async access(e,t,{fetch:n,now:r}){let i=JSON.parse(e);if(!i.expiresAt||i.expiresAt-3e5>r||!i.refreshToken)return{accessToken:i.accessToken};let a=await T(t,{grant_type:`refresh_token`,refresh_token:i.refreshToken},n,r);return{accessToken:a.accessToken,refreshed:JSON.stringify(a)}}};function Se(e){return Array.isArray(e)?l.find(t=>e.every(e=>x[t].includes(e)))??`write`:e}const Ce={observe:{metadata:`read`,contents:`read`,pull_requests:`read`,issues:`read`},comment:{metadata:`read`,contents:`read`,pull_requests:`write`,issues:`write`},write:{metadata:`read`,contents:`write`,pull_requests:`write`,issues:`write`}};function O(e=`observe`){return{...Ce[Se(e)]}}const we={pull_request:`pull_request`,issue:`issues`,comment:`issue_comment`,mention:`issue_comment`};function Te(e){let t=e.map(e=>we[e]).filter(e=>!!e);return[...new Set([...t,`push`])]}function k(e,t,n,r){let i=t.integrations.github??{},a=Array.isArray(i.events)?i.events:Object.keys(i.events??{});return he(e,{name:t.name??n,description:t.description,permissions:O(i.tools),events:Te(a),isPublic:r})}const A=(e,t)=>t?.type===`Organization`?`https://github.com/organizations/${encodeURIComponent(t.login)}/settings/apps/${e}`:`https://github.com/settings/apps/${e}`,j={read:1,write:2,admin:3},Ee={read:`Read-only`,write:`Read and write`,admin:`Admin`},M=e=>e[0].toUpperCase()+e.slice(1).replaceAll(`_`,` `);async function De(e,t,{publicUrl:n,definition:r,fetch:i}){let a=await i(`${m}/app`,{headers:h(await E(t))});if(!a.ok)throw Error(`GitHub app lookup failed: ${a.status}`);let o=await a.json(),s=k(n,r,e.agent),c=new Set(o.events??[]),l=o.permissions??{},u=[];s.name!==o.name&&u.push({text:`Rename the app to **${s.name}**`,copy:s.name});let d=s.description??``;d!==(o.description??``)&&u.push(d?{text:`Set the **Description**`,copy:d}:{text:`Clear the **Description**`});for(let[e,t]of Object.entries(s.default_permissions))(j[l[e]??``]??0)<(j[t]??0)&&u.push({text:`Set **${M(e)}** to **${Ee[t]??t}**`});for(let e of s.default_events)c.has(e)||u.push({text:`Check the **${M(e)}** event`});for(let e of c)s.default_events.includes(e)||u.push({text:`Uncheck the **${M(e)}** event`});let f=o.owner?.login?{login:o.owner.login,type:o.owner.type}:t.owner;return{url:`${A(o.slug??t.slug,f)}/permissions`,label:`Open app settings`,lines:u}}const Oe={builtin:`shared`,postOrigins:[`https://github.com`],createPost({publicUrl:e,state:t,definition:n,encodedState:r}){let i=k(e,n,t.agent,t.public===!0);return{url:ge(t.owner,r),fields:{manifest:JSON.stringify(i)}}},async createCallback(e,{fetch:t}){let n=new URL(e.url).searchParams.get(`code`);if(!n)throw new b(`missing-code`);let r=await _e(n,t),i={appId:r.appId,slug:r.slug,privateKey:r.privateKey,webhookSecret:r.webhookSecret,clientId:r.clientId,clientSecret:r.clientSecret,...r.owner?{owner:r.owner}:{}};return{platformAppId:r.appId,name:r.slug,credentials:i}},accountUrl:({login:e})=>`https://github.com/${encodeURIComponent(e)}`,settingsUrl(e,t){let{slug:n,owner:r}=t;return r?A(n,r):void 0},drift:(e,t,n)=>De(e,t,n),installUrl(e,t,{publicUrl:n,state:r,installation:i}){let{slug:a}=t;if(!i)return`https://github.com/apps/${a}/installations/new?state=${encodeURIComponent(r)}`;let o=new URLSearchParams({client_id:w(t).clientId,redirect_uri:C(n),state:r});return`${S}/authorize?${o}`},async installedApp(e,{apps:t,fetch:n}){let r=new URL(e.url).searchParams.get(`installation_id`);if(!(!r||!/^\d+$/.test(r))){for(let{app:e,credentials:i}of t)if(await be(i,r,n).catch(t=>(console.error(`coder server: asking GitHub whether ${e.id} owns installation ${r} failed`,t),!1)))return{app:e,installation:r}}},async installCallback(e,{credentials:t,publicUrl:n,fetch:r,installation:i}){let a=i??new URL(e.url).searchParams.get(`installation_id`);if(!a)throw new b(`missing-code`);let{accessToken:o,...s}=await D(e,t,i?C(n):void 0,r),c=await ye(o,t.appId,a,r);if(!c)throw new b(`not-yours`);return{platformInstallId:a,account:c,installer:s.id,user:s}}};function N(e){return e&&typeof e==`object`?e:{}}function P(e){return e?.agent===!0||e?.type===`Bot`||e?.login?.endsWith(`[bot]`)===!0}function F(e,t){return[e,t].filter(e=>!!e).join(`
2
+
3
+ `)}const ke=[`OWNER`,`MEMBER`],Ae=[`issue_comment`,`pull_request_review_comment`,`ping`];function I(e){try{return JSON.parse(e)}catch{return}}function L(e,t,n){if(!n||!t?.startsWith(`sha256=`))return!1;let r=Buffer.from(d(`sha256`,n).update(e).digest(`hex`),`hex`);return p(Buffer.from(t.slice(7),`hex`),r)}function R(e,t,n,r,i){let a=n.installation?.id,o=z(n,i.headSha),s=i.user??n.sender;if(a===void 0||!o||!i.number)return;let c=s?.author_association;return{integration:`github`,type:r,appId:t.id,installationId:String(a),deliveryId:e.headers.get(`x-github-delivery`)??``,actor:{id:String(s?.id??s?.login??``),...s?.login?{login:s.login}:{},...c?{role:c}:{},...P(s)?{agent:!0}:{}},text:i.body??``,repo:o,chat:{thread:B(`${o.owner}/${o.name}`,i.number,i.kind===`pull`)}}}function z(e,t){let n=e.repository;return n?.owner?.login&&n.name&&n.clone_url&&n.default_branch?{owner:n.owner.login,name:n.name,cloneUrl:n.clone_url,ref:t??n.default_branch,defaultBranch:n.default_branch}:void 0}function B(e,t,n){return{_type:`chat:Thread`,adapterName:`github`,channelId:`github:${e}`,id:`github:${e}:${n?``:`issue:`}${t}`,isDM:!1}}function je(e,t,n,r){let i=N(t),a=e.headers.get(`x-github-event`);if(a===`pull_request`){let t=i.pull_request,a=i.action??``,o=i.requested_reviewer?.login?.toLowerCase();if(!t||![`opened`,`synchronize`,`reopened`,`ready_for_review`,`review_requested`].includes(a)||a===`review_requested`&&o!==`${r.slug}[bot]`.toLowerCase()||t.draft||a!==`review_requested`&&P(t.user)||!t.number||!t.head?.sha||!t.base?.sha)return[];let s=R(e,n,i,`pull_request`,{user:i.sender??t.user,body:F(t.title,t.body),number:t.number,kind:`pull`,headSha:t.head.sha});return s?[s]:[]}if(a===`issues`){let t=i.issue;if(!t||![`opened`,`edited`].includes(i.action??``)||P(i.sender??t.user)||!t.number)return[];let r=R(e,n,i,`issue`,{user:i.sender??t.user,body:F(t.title,t.body),number:t.number});return r?[r]:[]}return[]}async function Me(e,t,n={},r){let{token:i,expiresAt:a}=await(await _({appId:e.appId,privateKey:e.privateKey,installationId:Number(t)},r)).auth({type:`installation`,installationId:t,...n.repositories?{repositoryNames:n.repositories}:{},...n.permissions?{permissions:n.permissions}:{}});return{token:i,expiresAt:Date.parse(a)}}function Ne(e,t){let{appId:n,privateKey:r}=e,{repositories:i,permissions:a}=V(t);return u(`sha256`).update(JSON.stringify([n,r,i?[...i].sort():null,a?Object.entries(a).sort():null])).digest(`base64url`)}const Pe={installation:[`created`,`deleted`,`suspend`,`unsuspend`,`new_permissions_accepted`],installation_repositories:[`added`,`removed`],repository:[`created`,`deleted`,`renamed`]};function Fe(e,t,n){let r=N(t),i=r.installation?.id,a=r.action;if(i===void 0||!Pe[e??``]?.includes(a??``))return;let o=r.installation?.account,s=Date.now(),c=e===`installation`&&(a===`deleted`||a===`suspend`);return{op:c?`delete`:`upsert`,...e===`repository`&&r.repository?.full_name?{repos:{add:a===`created`||a===`renamed`?[r.repository.full_name]:[],remove:a===`deleted`?[r.repository.full_name]:a===`renamed`&&r.changes?.repository?.name?.from?[`${r.repository.full_name.split(`/`)[0]}/${r.changes.repository.name.from}`]:[]}}:{},...e===`installation_repositories`?{repos:{...r.repository_selection&&(a===`removed`?!r.repositories_removed?.length:!r.repositories_added?.length)?{refresh:!0}:{},add:(r.repositories_added??[]).flatMap(e=>e.full_name?[e.full_name]:[]),remove:(r.repositories_removed??[]).flatMap(e=>e.full_name?[e.full_name]:[])}}:{},installation:{integration:`github`,id:`${n.id}:${i}`,app:n.id,account:{login:o?.login??r.repository?.owner?.login??`unknown`,...o?.type?{type:o.type}:{}},createdAt:s,...r.repositories?{repos:r.repositories.flatMap(e=>e.full_name?[e.full_name]:[])}:{},...c?{deletedAt:s}:{}}}}function Ie(e,t){let n=N(e),r=n.repository?.full_name,i=t.branch??n.repository?.default_branch;if(!r||r!==t.agentsRepo||!i||n.ref!==`refs/heads/${i}`||!n.after||!n.commits)return;let a=[...new Set(n.commits.flatMap(e=>[...e.added??[],...e.modified??[],...e.removed??[]]))].filter(e=>e.startsWith(`.coder/agents/`));return a.length?{repo:r,ref:n.after,branch:i,paths:a}:void 0}function Le(e,t){let n=N(e),r=n.repository?.full_name,i=n.ref?.startsWith(`refs/heads/`)&&n.ref.slice(11),a=n.installation?.id;if(!r||!i||a===void 0)return;let o=n.commits??[],s=o.flatMap(e=>[...e.added??[],...e.modified??[],...e.removed??[]]);if(!(o.length&&o.length<2048&&!s.some(e=>e.startsWith(`.coder/`))))return{installation:`${t.id}:${a}`,repo:r,branch:i,...n.repository?.default_branch?{defaultBranch:n.repository.default_branch}:{}}}function V(e={}){return{...e.repo?{repositories:[e.repo.name]}:{},...e.tools?{permissions:O(e.tools)}:{}}}const Re={id:`github`,brand:{color:`#000000`,icon:`M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12`,dark:`#fff`,svg:`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 98 96" fill="none" style="color:light-dark(#000,#fff)"><g clip-path="url(#github-mark-4)"><path d="M 41.44 69.38 C 28.81 67.85 19.91 58.76 19.91 46.99 C 19.91 42.21 21.63 37.04 24.5 33.59 C 23.26 30.43 23.45 23.73 24.88 20.96 C 28.71 20.48 33.88 22.49 36.94 25.27 C 40.58 24.12 44.41 23.54 49.1 23.54 C 53.79 23.54 57.61 24.12 61.06 25.17 C 64.03 22.49 69.29 20.48 73.12 20.96 C 74.46 23.54 74.65 30.24 73.4 33.5 C 76.47 37.13 78.09 42.01 78.09 46.99 C 78.09 58.76 69.19 67.66 56.37 69.29 C 59.62 71.39 61.82 75.99 61.82 81.25 L 61.82 91.21 C 61.82 94.08 64.22 95.7 67.09 94.55 C 84.41 87.95 98 70.63 98 49.19 C 98 22.11 75.99 0 48.9 0 C 21.82 0 0 22.11 0 49.19 C 0 70.44 13.49 88.05 31.68 94.65 C 34.26 95.61 36.75 93.88 36.75 91.3 L 36.75 83.64 C 35.41 84.22 33.69 84.6 32.16 84.6 C 25.84 84.6 22.11 81.16 19.43 74.74 C 18.38 72.16 17.23 70.63 15.03 70.34 C 13.88 70.25 13.49 69.77 13.49 69.19 C 13.49 68.04 15.41 67.18 17.32 67.18 C 20.1 67.18 22.49 68.91 24.98 72.45 C 26.89 75.22 28.9 76.47 31.29 76.47 C 33.69 76.47 35.22 75.61 37.42 73.4 C 39.05 71.78 40.29 70.34 41.44 69.38 Z" fill="black" style="fill:currentColor"/></g><defs><clipPath id="github-mark-4"><rect width="98" height="96" fill="white"/></clipPath></defs></svg>`},name:`GitHub`,featured:!0,description:`Pull requests, issues, and comments on GitHub repositories`,installLabel:`Connect GitHub`,use:`Mention @{handle} in an issue or pull request.`,organizationApps:!0,publicApps:!0,hint:`Cite repository file paths when discussing code. After making changes, link the pull request.`,sample:`github:owner/repo:1`,author:e=>`${e}[bot]`,events:{mention:{description:`Comment from a repo owner or org member mentioning @<agent>; text has the mention stripped.`,on:`mention`,addressed:!0},pull_request:{description:`Opened, updated, or ready non-draft pull request.`},issue:{description:`Opened or edited issue.`},comment:{description:`New non-agent issue or pull-request comment.`,on:`message`,noisy:!0}},tools:{presets:x,server:me,install:`arch=$(uname -m); [ "$arch" = aarch64 ] && arch=arm64; curl -fsSL "https://github.com/github/github-mcp-server/releases/latest/download/github-mcp-server_Linux_$arch.tar.gz" | tar -xz -C /usr/local/bin github-mcp-server`,installHosts:[`github.com`,`release-assets.githubusercontent.com`]},hosts:[`github.com`,`api.github.com`,`codeload.github.com`],get app(){return Oe},auth:{token:async(e,t,n,{fetch:r,hold:i}={})=>{let a=()=>Me(t,e.id.split(`:`).pop(),V(n),r);return i?i(Ne(t,n),a):(await a()).token},get user(){return xe},canWrite:async(e,t,n)=>!!(e.repo&&e.actor.login)&&le(`${e.repo.owner}/${e.repo.name}`,e.actor.login,t,n)},repos:{cloneHosts:[`github.com`],credentialUsername:`x-access-token`,readFile:ne,revalidate:re,listDir:ae,commit:ie,list:(e,t,n)=>oe(t,n),get:ce,url:ue,pullRequests:se,pullRequest:e=>{let t=/^github:[^:]+:(\d+)(?::|$)/.exec(e.chat?.thread.id??``);return t?Number(t[1]):void 0},pullRequestThread:(e,t)=>B(e,t,!0)},target(e,t){let n=e.headers.get(`x-github-hook-installation-target-id`);if(!n)return;let r=N(I(t)),i=z(r);return{app:n,...r.installation?.id===void 0?{}:{installation:String(r.installation.id)},...i?{repo:i}:{}}},adapter:async e=>(await import(`./adapter-sKt1J1Cm.js`)).githubAdapter(e),link(e){let t=/^github:([^:]+):(issue:)?(\d+)(?::|$)/.exec(e.chat?.thread.id??``);return t?`https://github.com/${t[1]}/${t[2]?`issues`:`pull`}/${t[3]}`:void 0},ownEvents(e,t,n,r){let i=e.headers.get(`x-github-event`);if(!i||Ae.includes(i))return;let{webhookSecret:a,slug:o}=r;if(!L(t,e.headers.get(`x-hub-signature-256`),a))return{invalid:!0};let s=I(t),c=Fe(i,s,n);if(c)return{installation:c};let l=Ie(s,n),u=i===`push`?Le(s,n):void 0;return l?{changes:l,...u?{pushed:u}:{}}:u?{pushed:u}:{events:je(e,s,n,{slug:o})}},event(e,t,n){let r=n.raw.comment?.author_association;return{type:e===`mention`&&!ke.includes(r??``)?`comment`:e,actor:{id:n.author.userId,login:n.author.userName,...r?{role:r}:{}}}}};async function ze(e,t,n=fetch){let r=e.within??e.installationId;if(!r||!e.actor.id)throw Error(`Slack event has no workspace or actor`);let i=await n(`https://slack.com/api/users.info`,{method:`POST`,headers:{authorization:`Bearer ${t}`,"content-type":`application/x-www-form-urlencoded`},body:new URLSearchParams({user:e.actor.id,team_id:r}),redirect:`error`,signal:AbortSignal.timeout(5e3)}),a=await i.json(),o=a.user;if(!i.ok||a.ok!==!0||!o)throw Error(`Slack returned no valid workspace member`);return o.id===e.actor.id&&o.deleted===!1&&o.is_bot===!1&&o.is_restricted===!1&&o.is_ultra_restricted===!1&&(o.is_external===void 0||o.is_external===!1)&&(o.team_id===r||Array.isArray(o.enterprise_user?.teams)&&o.enterprise_user.teams.includes(r))}const H=[`channels:history`,`groups:history`,`im:history`,`mpim:history`],U=[`channels:read`,`groups:read`,`im:read`,`mpim:read`],W={"conversations.history":H,"conversations.replies":H,"conversations.info":U,"conversations.list":U,"users.info":[`users:read`],"users.list":[`users:read`],"reactions.get":[`reactions:read`]},G={"chat.postMessage":[`chat:write`],"reactions.add":[`reactions:write`]},K={"chat.postMessage":`thread_ts`,"reactions.add":`timestamp`},q={...W,...G};async function Be(e,t,n={}){let r=e.tools??[];if(!r.includes(t)||!q[t])throw Error(`Slack method ${t} is not allowed for this task; allowed: ${r.join(`, `)||`none`}`);if(t in G){let[,r,i]=(e.scope?.thread??``).split(`:`);if(!r||n.channel!==r)throw Error(`This task may only write to its connected channel.`);let a=Object.hasOwn(K,t)?K[t]:void 0;if(!i||!a||n[a]!==i||n.reply_broadcast)throw Error(`This task may only write to its triggering thread.`)}let i=e.scope?.within,{callSlackApi:a}=await import(`./api-qdpx8FD0.js`),o=await a(t,i?{...n,team_id:i}:n,{token:e.token,fetch:e.fetch,contentType:`json`});if(o.error===`missing_scope`)throw Error(`Slack method ${t} needs the ${q[t].join(` or `)} scope, which this app does not have`);if(!o.ok)throw Error(`Slack ${t} failed: ${o.error}`);return o}const Ve={slack_api:{description:`Call a Slack Web API method, such as conversations.replies or chat.postMessage, with its JSON arguments. Only the methods this task allows work; others fail with the allowed list.`,inputSchema:{type:`object`,properties:{method:{type:`string`},args:{type:`object`}},required:[`method`]},handler:(e,t)=>Be(t,String(e.method??``),e.args??{})}};function J(e){return e.replace(/\/$/,``)}function He(e,{name:t,description:n,scopes:r,events:i,extras:a}){let o=J(e),s=new URL(o).hostname;return{display_information:{name:t,...n?{description:n.slice(0,140)}:{}},features:{bot_user:{display_name:t,always_online:!0},app_home:{home_tab_enabled:!0,messages_tab_enabled:!0,messages_tab_read_only_enabled:!1},...s.includes(`.`)&&!ee(s)?{unfurl_domains:[s]}:{},...a},oauth_config:{redirect_urls:[`${o}/install/slack/callback`],scopes:{bot:r}},settings:{org_deploy_enabled:!0,event_subscriptions:{request_url:`${o}/hooks/slack`,bot_events:i},interactivity:{is_enabled:!0,request_url:`${o}/hooks/slack`}}}}async function Y(e,t,n,r){let{assertSlackOk:i,callSlackApi:a}=await import(`./api-qdpx8FD0.js`),o=await a(e,t,{token:n,fetch:r});return i(e,o),o}async function Ue(e,t,n=fetch){let r=await Y(`apps.manifest.create`,{manifest:JSON.stringify(t)},e,n);return{appId:r.app_id,clientId:r.credentials.client_id,clientSecret:r.credentials.client_secret,signingSecret:r.credentials.signing_secret}}const X=e=>Ye(e.integrations.slack?.tools);function Z(e,t,n){let r=n.integrations.slack??{},i=Array.isArray(r.events)?r.events:Object.keys(r.events??{});return He(e,{name:t,description:n.description,scopes:X(n),events:Ze(i),extras:Qe(e,n)})}async function Q(e,t=fetch){let n=await t(`https://slack.com/api/tooling.tokens.rotate`,{method:`POST`,headers:{"content-type":`application/x-www-form-urlencoded`},body:new URLSearchParams({refresh_token:e})}),r=await n.json();if(!n.ok||!r.ok||!r.token||!r.refresh_token)throw new b(`platform-error`,r.error??String(n.status));return{configToken:r.token,configRefreshToken:r.refresh_token,configTokenExpires:(r.exp??0)*1e3}}function We(e,t,n,r=[]){let i=new URLSearchParams({client_id:e.clientId,state:n,redirect_uri:`${J(t)}/install/slack/callback`});return r.length&&i.set(`scope`,r.join(`,`)),`https://slack.com/oauth/v2/authorize?${i}`}async function Ge(e,t,n,r=fetch){let i=await r(`https://slack.com/api/oauth.v2.access`,{method:`POST`,headers:{"content-type":`application/x-www-form-urlencoded`},body:new URLSearchParams({client_id:t.clientId,client_secret:t.clientSecret,code:e,redirect_uri:`${J(n)}/install/slack/callback`})}),a=await i.json(),o=a.is_enterprise_install===!0,s=o?a.enterprise:a.team;if(!i.ok||!a.ok||!a.access_token||!s?.id||!s.name)throw new b(`platform-error`,a.error??String(i.status));return{id:s.id,name:s.name,org:o,accessToken:a.access_token,...a.authed_user?.id?{installer:a.authed_user.id}:{}}}async function Ke(e,t){let n=[],r=``;do{let i=await Y(`auth.teams.list`,{limit:1e3,...r?{cursor:r}:{}},e,t);n.push(...i.teams.map(e=>e.id)),r=i.response_metadata?.next_cursor??``}while(r);return n}const qe={builtin:`own`,createStep:()=>({intro:`Coder creates the Slack app with a configuration token and installs its bot in the token's whole workspace.`,link:`https://api.slack.com/apps`,steps:[{text:`Under **Your App Configuration Tokens**, click **Generate Token** and pick the workspace the agent should join.`},{text:`Paste the refresh token below, then approve the install when Slack asks.`}],notes:[`A workspace that requires app approval sends the install to its admins first. In Enterprise Grid, only an org admin can install org-wide.`,`To install the app in other Slack workspaces, click **Activate Public Distribution** under the app's **Manage Distribution**.`],fields:[{name:`refreshToken`,label:`Refresh token`,hint:`Starts with xoxe-1-.`,placeholder:`xoxe-1-…`,required:!0}],submit:`Create Slack app`}),async createCallback(e,{publicUrl:t,state:n,definition:r,fetch:i}){let a=new URLSearchParams(await e.text()).get(`refreshToken`);if(!a)throw Error(`Missing refresh token`);if(a.startsWith(`xoxe.xoxp-`))throw new b(`invalid-field`,`access-token`,`That is the access token, xoxe.xoxp-…. Paste the refresh token next to it, which starts with xoxe-1-.`);if(!a.startsWith(`xoxe-1-`))throw new b(`invalid-field`,`refresh-token`,`That is not a refresh token; they start with xoxe-1-. Copy it from Your App Configuration Tokens.`);let o=await Q(a,i),s=r.name??n.agent,c=await Ue(o.configToken,Z(t,s,r),i);return{platformAppId:c.appId,name:s,credentials:{...c,...o,scopes:X(r)}}},manifest:(e,{publicUrl:t,definition:n})=>Z(t,e.name,n),async update(e,t,{publicUrl:n,definition:r,fetch:i,saveCredentials:a}){let o=t;if(!o.configRefreshToken)return;(!o.configToken||(o.configTokenExpires??0)<=Date.now()+6e4)&&(o={...o,...await Q(o.configRefreshToken,i)},await a(o)),await Y(`apps.manifest.update`,{app_id:o.appId,manifest:JSON.stringify(Z(n,e.name,r))},o.configToken,i);let s=X(r);s.join()!==o.scopes?.join()&&await a({...o,scopes:s})},settingsUrl:(e,t)=>`https://api.slack.com/apps/${encodeURIComponent(t.appId)}`,installUrl(e,t,{publicUrl:n,state:r}){let i=t;return We(i,n,r,i.scopes??Ye(`write`))},async installCallback(e,{app:t,credentials:n,publicUrl:r,fetch:i}){let a=new URL(e.url).searchParams.get(`code`);if(!a)throw new b(`missing-code`);let o=await Ge(a,n,r,i),s=await Y(`auth.test`,{},o.accessToken,i).then(e=>e.url?.replace(/\/$/,``)).catch(()=>void 0),c=o.org?await Ke(o.accessToken,i).catch(()=>null):void 0;return{platformInstallId:o.id,account:{login:o.name,...o.org?{type:`Organization`}:{},...s?{url:s}:{}},token:o.accessToken,...o.org?{covers:c}:{},installer:o.installer,...o.installer?{user:{id:o.installer}}:{}}}},Je=[`app_mentions:read`,`channels:history`,`groups:history`,`im:history`,`channels:read`,`users:read`,`reactions:read`,`commands`,`links:read`,`links:write`];function Ye(e=`observe`){let t=new Set(Object.keys(W));return(Array.isArray(e)?e.every(e=>t.has(e)):e===`observe`)?[...Je]:[...Je,`chat:write`,`reactions:write`,`im:write`,`assistant:write`]}const Xe={mention:[`app_mention`],message:[`message.channels`,`message.groups`,`message.im`],reaction:[`reaction_added`]};function Ze(e){return[...new Set(e.flatMap(e=>Xe[e]??[])),`team_access_granted`,`team_access_revoked`,`app_home_opened`,`link_shared`]}function Qe(e,t){return{slash_commands:[{command:`/setup`,url:`${e.replace(/\/$/,``)}/hooks/slack`,description:`Configure this agent`,usage_hint:`repo owner/name | model <name> | show`}],agent_view:{agent_description:t.description??`${t.name??`Coder`} in your workspace.`}}}const $e=n({type:r(t()),team_id:r(t()),enterprise_id:r(t()),is_enterprise_install:r(o([s(),t()])),api_app_id:r(t()),challenge:r(t()),authorizations:r(e(n({user_id:r(t()),team_id:r(a(t())),enterprise_id:r(a(t())),is_enterprise_install:r(s())})))}),et=n({enterprise_id:r(t()),authorizations:r(e(n({enterprise_id:r(t())}))),event:n({type:c([`team_access_granted`,`team_access_revoked`]),team_ids:e(t())})}),tt=n({type:i(`app_home_opened`),user:t(),tab:i(`home`)}),nt=n({type:i(`link_shared`),channel:t(),message_ts:t(),unfurl_id:r(t()),source:r(t()),links:e(n({url:t()}))}),rt=`link:`,it=n({type:i(`block_actions`),actions:e(n({action_id:t()}))});function $(e){try{return JSON.parse(e)}catch{let t=new URLSearchParams(e),n=t.get(`payload`);if(!n)return Object.fromEntries(t);try{return JSON.parse(n)}catch{return{}}}}function at(e,t){let n=tt.safeParse(e.event).data;if(n)return{work:async e=>(await import(`./views-BhsnL0nr.js`)).publishHome(e,n.user)};let r=nt.safeParse(e.event).data;if(r)return{work:async e=>(await import(`./views-BhsnL0nr.js`)).unfurl(e,r)};let i=it.safeParse(e).data?.actions;if(i?.length&&i.every(e=>e.action_id.startsWith(`link:`)))return{ack:!0};if(e.type&&e.type!==`event_callback`&&e.type!==`url_verification`)return{unhandled:`Slack interaction ${e.type}`};let a=et.safeParse(e).data,o=a?.enterprise_id??a?.authorizations?.[0]?.enterprise_id;if(!a||!o)return;let s=a.event.team_ids;return{covers:{installation:`${t}:${o}`,...a.event.type===`team_access_granted`?{add:s}:{remove:s}}}}function ot(e,t,n){let r=e.headers.get(`x-slack-request-timestamp`)??``;if(!n||!(Math.abs(Date.now()/1e3-Number(r))<=300))return!1;let i=`v0=${d(`sha256`,n).update(`v0:${r}:${t}`).digest(`hex`)}`;return p(e.headers.get(`x-slack-signature`)??``,i)}const st={id:`slack`,brand:{color:`#E3066A`,icon:`M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z`,svg:`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400"><g><path d="M 84.04 252.77 c 0 23.13 -18.89 42.02 -42.02 42.02 S 0 275.9 0 252.77 s 18.89 -42.02 42.02 -42.02 h 42.02 v 42.02 Z" fill="#e3066a"/><path d="M 105.21 252.77 c 0 -23.13 18.89 -42.02 42.02 -42.02 s 42.02 18.89 42.02 42.02 v 105.21 c 0 23.13 -18.89 42.02 -42.02 42.02 s -42.02 -18.89 -42.02 -42.02 c 0 0 0 -105.21 0 -105.21 Z" fill="#e3066a"/></g><g><path d="M 147.23 84.04 c -23.13 0 -42.02 -18.89 -42.02 -42.02 S 124.1 0 147.23 0 s 42.02 18.89 42.02 42.02 v 42.02 h -42.02 Z" fill="#00b3ff"/><path d="M 147.23 105.21 c 23.13 0 42.02 18.89 42.02 42.02 s -18.89 42.02 -42.02 42.02 H 42.02 c -23.13 0 -42.02 -18.89 -42.02 -42.02 s 18.89 -42.02 42.02 -42.02 c 0 0 105.21 0 105.21 0 Z" fill="#00b3ff"/></g><g><path d="M 315.96 147.23 c 0 -23.13 18.89 -42.02 42.02 -42.02 s 42.02 18.89 42.02 42.02 -18.89 42.02 -42.02 42.02 h -42.02 v -42.02 Z" fill="#41b658"/><path d="M 294.79 147.23 c 0 23.13 -18.89 42.02 -42.02 42.02 s -42.02 -18.89 -42.02 -42.02 V 42.02 c 0 -23.13 18.89 -42.02 42.02 -42.02 s 42.02 18.89 42.02 42.02 v 105.21 Z" fill="#41b658"/></g><g><path d="M 252.77 315.96 c 23.13 0 42.02 18.89 42.02 42.02 s -18.89 42.02 -42.02 42.02 -42.02 -18.89 -42.02 -42.02 v -42.02 h 42.02 Z" fill="#fcc003"/><path d="M 252.77 294.79 c -23.13 0 -42.02 -18.89 -42.02 -42.02 s 18.89 -42.02 42.02 -42.02 h 105.21 c 23.13 0 42.02 18.89 42.02 42.02 s -18.89 42.02 -42.02 42.02 h -105.21 Z" fill="#fcc003"/></g></svg>`},name:`Slack`,featured:!0,description:`Mentions, messages, and reactions in a Slack workspace`,installLabel:`Add to Slack`,use:`Message {handle} or mention it in a channel.`,covered:`Slack workspace`,sample:`slack:C0000000000:1700000000.000100`,hint:`Do not use Markdown headings. Use short paragraphs and code spans, and reply only in the thread where you were addressed.`,events:{mention:{description:`Slack app mention`,on:`mention`,addressed:!0},command:{description:`/setup and other slash commands`,on:`command`},reaction:{description:`Reaction added`,on:`reaction`},message:{description:`Channel, group, or direct message`,on:`message`,noisy:!0,addressed:!0}},tools:{presets:{observe:Object.keys(W),comment:[...Object.keys(W),...Object.keys(G)],write:[...Object.keys(W),...Object.keys(G)]},serve:Ve},hosts:[`slack.com`],get app(){return qe},target(e,t){let n=$(t),r=$e.safeParse(n).data;if(r?.type===`url_verification`&&r.challenge)return new Response(r.challenge);let i=r?.authorizations?.[0],a=i?.team_id??r?.team_id??n.team?.id,o=String(i?.is_enterprise_install??r?.is_enterprise_install)===`true`,s=o?i?.enterprise_id??r?.enterprise_id??n.enterprise?.id:a,c=i?.user_id;return r?.api_app_id?{app:r.api_app_id,...s?{installation:s}:{},...o&&a?{within:a}:{},...c?{self:c}:{}}:void 0},welcome:async(e,t,n)=>(await import(`./views-BhsnL0nr.js`)).welcome(e,t,n),link(e){let t=/^slack:([^:]+):(\d+)\.(\d+)$/.exec(e.chat?.thread.id??``);return t?`https://slack.com/archives/${t[1]}/p${t[2]}${t[3]}`:void 0},ownEvents(e,t,n,r){let i=at($(t),n.id);if(i)return ot(e,t,r?.signingSecret)?i:{invalid:!0}},adapter:async e=>(await import(`./adapter-YCvP9H2n.js`)).slackAdapter(e),reactionId:e=>e.raw.event_ts,auth:{canWrite:ze,async token(e){if(!e.token)throw Error(`Slack installation ${e.id} has no bot token`);return e.token}}};export{L as a,g as c,Re as i,p as l,st as n,x as o,Y as r,b as s,rt as t,te as u};
@@ -0,0 +1 @@
1
+ import{i as e}from"./cli-D5hyqGq0.js";import{g as t,p as n,s as r}from"./output-BKeyLbvt.js";import{n as i}from"./args-CxsMr9Un.js";import a from"node:process";const o=e({name:`auth status`,globalFlags:{cwd:!1},help:{usage:`coder auth status [--json]`,summary:`List saved sessions with their server, user, and workspace.`,env:[[`CODER_SERVER`,`the server to use instead of https://coder.wular.ai`]]},options:{json:i},run:async()=>{let{sessions:e}=await import(`./remote-oQs6My_3.js`).then(e=>e.c);return e.status()},print:e=>{let i=n,o=Object.entries(e);if(!o.length)return void a.stdout.write(`${i.dim(`Not signed in`)}\n\n${r([`Sign in: coder auth login`],i)}\n`);a.stdout.write(`${t([{header:`server`,value:([e])=>e,paint:e=>i.cyan(e)},{header:`user`,value:([,e])=>e.user.email},{header:`workspace`,value:([,e])=>e.organization?`${e.organization.name} (${e.organization.slug})`:`-`}],o,i)}\n`)}});export{o as commandStatus};
@@ -0,0 +1,4 @@
1
+ import{H as e}from"./dispatch-D3Dqxijf.js";import{i as t,r as n}from"./cli-D5hyqGq0.js";import{p as r,r as i,s as a}from"./output-BKeyLbvt.js";import{i as o,n as s,s as c,t as l}from"./args-CxsMr9Un.js";import{i as u,r as d}from"./result-DXL9N9Ip.js";import f from"node:process";const p={server:o,workspace:c,yes:s};function m(t,n,r){let[i,...a]=t,o=a.join(` `).trim();if(!i||!o)throw new e(`invalid-option`,n,{hint:r});return{id:i,text:o}}function h(e,t=!1){let{taskId:n,steered:o}=e;if(o===`queued`){f.stdout.write(`${r.dim(`[coder]`)} follow-up queued for task ${r.cyan(n)}; it runs when the current turn finishes.\n`),t&&f.stdout.write(`\n${r.dim(`[coder] --wait is not available for a queued follow-up.`)}\n\n${a([`Wait in its own background shell, one per task: coder task result ${n} --wait`],r)}\n`);return}if(!t){f.stdout.write(o===`live`?`${r.dim(`[coder]`)} steered follow-up into running task ${r.cyan(n)}.\n`:`${r.dim(`[coder]`)} resumed task ${r.cyan(n)} with the follow-up (same thread, same id).\n`),f.stdout.write(`\n${a([`Wait in its own background shell, one per task: coder task result ${n} --wait`],r)}\n`);return}f.stdout.write(`\n${e.finalMessage||`(no final message)`}\n\n`),f.stderr.write(`${r.dim(`[coder] task=${n} status=${e.status??`unknown`}`)}\n\n${d(n,i)}\n`)}const g=t({name:`task steer`,help:{usage:`coder task steer <task-id> "<follow-up instructions>" [--wait] [--server [url]]`,summary:`Continue a task's thread with new instructions. They are injected into a live Codex or
2
+ Claude turn at its next tool boundary and queued across a startup or completion race.
3
+ A stopped, finished, or archived task resumes on the same task id. It reuses the
4
+ task's engine, model, and permissions unless overridden.`,flags:[[`--wait`,`run in the foreground and block until the answer is ready`],[`--model <alias|slug>`,`override the task's model for this follow-up`],[`--effort <low|medium|high>`,`override the task's reasoning effort`],[`--permissions <mode>`,`read-only · workspace-write · auto`],n],examples:[[`coder task steer task-abc "now add tests"`,`continue that task with a follow-up`]]},options:{...l,model:c,effort:c,permissions:c,wait:s,...p},args:1/0,async run({options:e,args:t}){let{tasks:n}=await import(`./task-IoBYe7ok.js`).then(e=>e.t),{id:r,text:i}=m(t,`Missing task id or follow-up text.`,[`Usage: coder task steer <task-id> "<follow-up>" [--wait]`,`Help: coder task steer --help`]);return n.steer(r,i,{...e,organization:e.workspace})},json(e,{options:t}){let n=e;return t.server!==void 0||!t.wait||n.steered===`queued`?e:{taskId:n.taskId,status:n.status??null,finalMessage:n.finalMessage??null}},print(e,{options:t,args:[n]}){if(t.server===void 0)return h(e,t.wait);if(t.wait)return u(e,r);f.stdout.write(`Steered server task ${r.cyan(n)}.\n`)},exit(e,{options:t}){let n=e;if(t.wait&&(t.server!==void 0||n.steered!==`queued`))return n.status===`completed`?0:1}});export{g as commandSteer,m as idAndText};
@@ -0,0 +1 @@
1
+ import{i as e,r as t}from"./cli-D5hyqGq0.js";import{p as n}from"./output-BKeyLbvt.js";import{i as r,n as i,s as a,t as o}from"./args-CxsMr9Un.js";import s from"node:process";const c={server:r,workspace:a,yes:i},l=e({name:`task stop`,help:{usage:`coder task stop <task-id> [--server [url]]`,summary:`Interrupt a running task and mark it cancelled.`,flags:[t]},options:{...o,...c},args:1,run:async({options:e,args:[t]})=>{let{tasks:n}=await import(`./task-IoBYe7ok.js`).then(e=>e.t);return n.stop(t,{...e,organization:e.workspace})},print:(e,{options:t,args:[r]})=>s.stdout.write(t.server===void 0?`Stopped task ${n.cyan(e.taskId)} ${n.dim(`(${e.interrupt})`)}\n`:`Stopped server task ${n.cyan(r)}.\n`)});export{l as commandStop};
@@ -0,0 +1,3 @@
1
+ import{i as e}from"./cli-D5hyqGq0.js";import{m as t,p as n,s as r}from"./output-BKeyLbvt.js";import{n as i,t as a}from"./args-CxsMr9Un.js";import o from"node:process";const s=e({name:`flow stop`,help:{usage:`coder flow stop [run-id] [--keep-tasks] [--json]`,summary:`Stop a running flow: signal the orchestrator so it stops dispatching, stamp the
2
+ run stopped, and stop its still-running tasks. Defaults to the most recent run;
3
+ the journal stays ready for \`coder flow resume\`.`,flags:[[`--keep-tasks`,`leave the run's still-running tasks running`]]},options:{...a,"keep-tasks":i},args:1,run:async({options:e,args:[t]})=>{let{stopRun:n}=await import(`./executor-5j-Ewzzb.js`).then(e=>e.t);return n(t,{keepTasks:e[`keep-tasks`]})},print:c});function c(e){let i=n;e.status===`failed`?o.stdout.write(`${i.dim(`[flow]`)} Run ${i.cyan(e.runId)} orchestrator died. Marked ${t(`failed`)}.\n`):o.stdout.write(`${i.dim(`[flow]`)} run ${i.cyan(e.runId)} ${t(e.status)}.\n`),e.stoppedTasks.length&&o.stdout.write(`${i.dim(`[flow]`)} stopped tasks: ${e.stoppedTasks.join(`, `)}\n`),e.keptTasks.length&&o.stdout.write(`${i.dim(`[flow]`)} left running: ${e.keptTasks.join(`, `)}\n`),o.stdout.write(`\n${r([`Resume: coder flow resume ${e.runId}`],i)}\n`)}export{s as commandStop};
@@ -0,0 +1 @@
1
+ import{s as e}from"./cli-D5hyqGq0.js";const t=[[`--wait`,`run in the foreground and block until the answer is ready`],[`--engine <codex|claude|custom>`,`engine to use; custom runs your configured custom models (default: first in the chain)`],[`--model <alias|slug>`,`luna/sol/astra (codex) · sonnet/opus/fable (claude) · a custom model (coder model list)`],[`--effort <low|medium|high>`,`reasoning effort`],[`--permissions <mode>`,`read-only · workspace-write · auto (default: auto)`],[`--mcp <names|all|json>`,'attach MCP servers from `mcp` in .coder/config.json by name (or all), or an inline JSON array [{"name","command","args","env","tools"}]; none by default, all adds your engine\'s own MCP servers'],[`--connections <ids>`,`use only these connections (coder connection list), within the agent's`],[`--add-dir <dir>`,`give the task another directory beyond --cwd (repeatable); read-only can only read it, other modes can also write`]],n=e(`task`,{"archive-sweep":async()=>(await import(`./archive-sweep-CqTQUafj.js`)).commandArchiveSweep,worker:async()=>(await import(`./worker-BFGETvid.js`)).commandWorker,mcp:async()=>(await import(`./mcp-C13n4A3y.js`)).commandTaskMcp,run:async()=>(await import(`./run-CoTg7SkY.js`)).commandTask,list:async()=>(await import(`./list-CLqNS8_q.js`)).commandTasks,ls:async()=>(await import(`./list-CLqNS8_q.js`)).commandTasks,watch:async()=>(await import(`./watch-BMuVZorc.js`)).commandWatch,stream:async()=>(await import(`./watch-BMuVZorc.js`)).commandWatch,result:async()=>(await import(`./result-DXL9N9Ip.js`).then(e=>e.s)).commandResult,steer:async()=>(await import(`./steer-DwSC8AO4.js`)).commandSteer,ask:async()=>(await import(`./ask-B_si1yM4.js`)).commandAsk,stop:async()=>(await import(`./stop-CEEiI1RA.js`)).commandStop,archive:async()=>(await import(`./archive-DxWYJ7Zi.js`)).commandArchive,delete:async()=>(await import(`./delete-BDOtztW_.js`)).commandDelete,approvals:async()=>(await import(`./approvals-BziBKWgU.js`)).commandApprovals,approve:async()=>(await import(`./approve-DKrTnZfk.js`)).commandApprove},{menu:[{sub:`run`,usage:`run "<text>"`,blurb:`run a task (background; --wait blocks)`,alias:`run`},{sub:`list`,usage:`list`,blurb:`list recent tasks (by default running + just stopped)`,alias:`list`},{sub:`result`,usage:`result [task-id]`,blurb:`status + final answer (--wait blocks)`,alias:`result`},{sub:`watch`,usage:`watch [task-id]`,blurb:`stream a task's live transcript`},{sub:`steer`,usage:`steer <task-id> "<follow-up>"`,blurb:`continue a task's thread`},{sub:`ask`,usage:`ask <task-id> "<question>"`,blurb:`ask about a task without interrupting it`},{sub:`stop`,usage:`stop <task-id>`,blurb:`interrupt a running task`},{sub:`archive`,usage:`archive <task-id>`,blurb:`archive a session (or --all-stopped)`},{sub:`delete`,usage:`delete <task-id>`,blurb:`delete a session (or --all-archived)`},{sub:`approvals`,usage:`approvals [task-id]`,blurb:`pending approvals (all tasks, or one)`},{sub:`approve`,usage:`approve <id>`,blurb:`answer an escalated permission`}].map(e=>({usage:e.usage,blurb:e.blurb,...e.alias?{note:`(coder ${e.alias})`}:{}}))},{aliases:{stream:`watch`,ls:`list`},hint:`Run a task: coder run "<text>"`});export{t as TASK_FLAGS,n as commandTaskGroup};
@@ -0,0 +1,5 @@
1
+ import{qi as e}from"./core-DwsAMCnL.js";import{Ct as t,En as n,Q as r,c as i,cn as a,ct as o,et as s,st as c,u as l,wn as u,xn as d}from"./config-D2FxHWwi.js";import{I as f,R as p,h as m,z as h}from"./dispatch-D3Dqxijf.js";import{t as g}from"./integrations-D3OgJk6Y.js";import{c as _,l as v,n as y}from"./actions-5TDwmn_z.js";import{a as b}from"./mcp-YhyTUMIM.js";import{r as x}from"./exec-BsXFIdTl.js";import S from"node:path";import C from"node:process";import{execFile as w}from"node:child_process";import{createHash as T,randomUUID as E}from"node:crypto";import D from"node:os";import O from"node:net";import k from"node:fs/promises";import{promisify as A}from"node:util";import j from"node:http";var M=e({INBOX_COMMAND:()=>Q,INBOX_SOCKET:()=>Y,applyTaskMessage:()=>q,checkout:()=>L,checkoutCache:()=>R,inboxSocket:()=>X,prepareRepo:()=>G,receiveInbox:()=>$,releaseCheckout:()=>B,requestInboxControl:()=>K,runTask:()=>J,sendInbox:()=>Z,startInboxControl:()=>te,taskServer:()=>P,withCheckoutLock:()=>z});const N=A(w);function P(){let e=C.env.CODER_SERVER?.replace(/\/+$/,``),t=C.env.CODER_TASK_TOKEN;if(!e||!t)throw Error(`CODER_SERVER and CODER_TASK_TOKEN are required with --task`);return{server:e,token:t}}async function F(e,t,n,r=``,i={}){let a=await fetch(`${e}/tasks/${encodeURIComponent(n)}${r}`,{...i,signal:i.signal?AbortSignal.any([i.signal,AbortSignal.timeout(3e4)]):AbortSignal.timeout(3e4),headers:{authorization:`Bearer ${t}`,...i.body?{"content-type":`application/json`}:{},...i.headers}}),o=await a.json().catch(()=>({}));if(!a.ok)throw Object.assign(Error(o.error??`Coder server answered ${a.status}`),{status:a.status});return o}function I(e){return e.length>0&&!e.startsWith(`-`)&&!e.endsWith(`/`)&&!e.endsWith(`.`)&&!e.endsWith(`.lock`)&&!/[\x00-\x20\x7f~^:?*[\\]/.test(e)&&!e.includes(`..`)&&!e.includes(`@{`)&&!e.includes(`//`)}async function L(e,t,n,r,i){let a=e.event?.repo;if(!a)return t;let o=S.join(t,`repo`);if(!I(a.ref)||!I(a.defaultBranch))throw Error(`Invalid repository ref`);let s=new URL(a.cloneUrl),c=g[e.event.integration]?.repos?.cloneHosts??[];if(s.protocol!==`https:`||!c.includes(s.hostname))throw Error(`Repository clone host does not match the integration`);await k.mkdir(t,{recursive:!0});let l=await k.mkdtemp(S.join(t,`.git-credential-`)),u=S.join(l,`token`),d=S.join(l,`askpass.sh`);n&&(await k.writeFile(u,n,{mode:384}),await k.writeFile(d,`#!/bin/sh
2
+ case "$1" in *Username*) printf x-access-token;; *) command cat "$CODER_GIT_TOKEN_FILE";; esac
3
+ `,{mode:448}));let f=n?{env:{...C.env,GIT_ASKPASS:d,CODER_GIT_TOKEN_FILE:u,GIT_TERMINAL_PROMPT:`0`}}:void 0;try{let e={...f,signal:i,maxBuffer:67108864};if(r)return await z(r,async()=>{if(!await k.stat(S.join(r,`.git`)).catch(()=>void 0)){let t=await k.mkdtemp(`${r}-clone-`);try{await N(`git`,[`clone`,`--depth`,`50`,a.cloneUrl,t],e),await k.rename(t,r)}finally{await k.rm(t,{recursive:!0,force:!0})}}await N(`git`,[`-C`,r,`worktree`,`prune`,`--expire`,`now`],e),await N(`git`,[`-C`,r,`remote`,`set-url`,`origin`,a.cloneUrl],e),await N(`git`,[`-C`,r,`fetch`,`--depth`,`50`,`origin`,a.defaultBranch],e),await N(`git`,[`-C`,r,`fetch`,`--depth`,`50`,`origin`,a.ref],e),await N(`git`,[`-C`,r,`worktree`,`add`,`--detach`,o,`FETCH_HEAD`],e)}),o;await k.stat(S.join(o,`.git`)).then(()=>!0).catch(()=>!1)||await N(`git`,[`clone`,`--depth`,`50`,a.cloneUrl,o],e),await N(`git`,[`-C`,o,`fetch`,`--depth`,`50`,`origin`,a.ref],e),await N(`git`,[`-C`,o,`checkout`,`--detach`,`FETCH_HEAD`],e),await N(`git`,[`-C`,o,`fetch`,`--depth`,`50`,`origin`,a.defaultBranch],e)}finally{await k.rm(l,{recursive:!0,force:!0})}return o}function R(e){let t=e.event?.repo;if(t){if(![t.owner,t.name].every(e=>/^[\w.-]+$/.test(e)&&!/^\.+$/.test(e)))throw Error(`Invalid repository name`);return r(`checkouts`,new URL(t.cloneUrl).hostname,t.owner,t.name)}}async function z(e,t){await k.mkdir(S.dirname(e),{recursive:!0});let n=`${e}.lock`,r=await k.mkdtemp(`${n}-`),i=`${C.pid}-${E()}`,a=Date.now()+3e5,o=!1;try{for(await k.mkdir(S.join(r,i));;)try{await k.rename(r,n),o=!0;break}catch(e){if(![`EEXIST`,`ENOTEMPTY`].includes(e.code??``))throw e;for(let e of await k.readdir(n).catch(()=>[])){let t=Number(e.split(`-`)[0]);if(!(!Number.isInteger(t)||t<=0))try{C.kill(t,0)}catch(t){t.code===`ESRCH`&&await k.rmdir(S.join(n,e)).catch(()=>{})}}if(await k.rmdir(n).catch(()=>{}),Date.now()>=a)throw Error(`Repository cache lock timed out`);await new Promise(e=>setTimeout(e,100))}return await t()}finally{o?(await k.rmdir(S.join(n,i)),await k.rmdir(n).catch(()=>{})):await k.rm(r,{recursive:!0,force:!0})}}async function B(e){if(!(await k.stat(S.join(e,`.git`)).catch(()=>void 0))?.isFile())return;let t=await N(`git`,[`-C`,e,`rev-parse`,`--git-common-dir`]).catch(async t=>{if(await k.stat(S.join(e,`.git`)).catch(()=>void 0))throw t});if(!t)return;let{stdout:n}=t,r=S.resolve(e,n.trim());await z(S.dirname(r),async()=>{await k.stat(S.join(e,`.git`)).catch(()=>void 0)&&await N(`git`,[`--git-dir`,r,`worktree`,`remove`,`--force`,e])})}const V=1048576;async function H(e){let t={maxBuffer:67108864};await N(`git`,[`-C`,e,`add`,`--intent-to-add`,`--all`],t);let{stdout:n}=await N(`git`,[`-C`,e,`diff`,`HEAD`],t);return Buffer.byteLength(n)>V?`${Buffer.from(n).subarray(0,V).toString()}\n[diff truncated]`:n}async function U(e,t){delete C.env.CODER_SERVER,delete C.env.CODER_TASK_TOKEN,delete C.env.APP_TOKEN;for(let t of Object.keys(e.tokens))delete C.env[b(t)];let{CODEX_AUTH_JSON:n,[i]:r,...o}=e.credential.env;if(Object.assign(C.env,o),C.env[l]=JSON.stringify(e.config??{}),C.env.CODER_MCP_MODE=`cloud`,C.env.CODER_MCP_CONNECTION_ENV=JSON.stringify(a(e.connections??{})),!n)return;let s=await k.mkdtemp(S.join(t,`.codex-`));return await k.writeFile(S.join(s,`auth.json`),n,{mode:384}),C.env.CODEX_HOME=s,s}async function W(e,t,n,r){if(!r)return;let i=await k.readFile(S.join(r,`auth.json`),`utf8`).catch(()=>``);i&&i!==n.credential.env.CODEX_AUTH_JSON&&await F(e.server,e.token,t,`/credential`,{method:`POST`,body:JSON.stringify({authJson:i})}).catch(()=>{}),await k.rm(r,{recursive:!0,force:!0})}const ee=[[`bun.lock`,`bun`,[`install`,`--frozen-lockfile`]],[`bun.lockb`,`bun`,[`install`,`--frozen-lockfile`]],[`pnpm-lock.yaml`,`npx`,[`-y`,`pnpm`,`install`,`--frozen-lockfile`]],[`yarn.lock`,`npx`,[`-y`,`yarn`,`install`,`--frozen-lockfile`]],[`package-lock.json`,`npm`,[`ci`]]];async function G(e,t){let n=P(),r=await F(n.server,n.token,e),i=r.task.event;if(!i?.repo)throw Error(`The task has no repository`);let a=await L({...r.task,event:{...i,repo:{...i.repo,ref:i.repo.defaultBranch}}},t,r.tokens[i.integration]);for(let[e,t,n]of ee)if(await k.stat(S.join(a,e)).catch(()=>void 0)){await N(t,n,{cwd:a,maxBuffer:67108864}).catch(()=>{});break}let o=(await N(`git`,[`-C`,a,`rev-parse`,`HEAD`])).stdout.trim();return console.log(`coder-snapshot ${o}`),{sha:o}}function te(e,t,n){let r=new Set,i=h(S.join(e,`inbox-control`),{apply(e){let i=e.entry;if(e.task!==t||!Number.isInteger(i?.seq)||i.seq<0||!Number.isInteger(i.generation)||i.generation<0||![`steer`,`ask`,`approve`].includes(i.kind))throw Error(`Invalid engine inbox command`);let a=n(i);return r.add(a),a.finally(()=>r.delete(a)).catch(()=>{}),a}});return{close:async()=>{i(),await Promise.allSettled([...r])}}}function K(e,t,n){let r=p({task:t,generation:n.generation,seq:n.seq});return f(`apply`,{task:t,entry:n},{dir:S.join(e,`inbox-control`),id:r,keepReply:!0,timeoutMs:3e4})}async function q(e,n,r){let i={task:n.name?.slice(6)??n.id,generation:r.generation,seq:r.seq},a=S.join(t(e,n.id),`inbox-control`,`${p(i)}.transcript.jsonl`),o=await k.readFile(a,`utf8`).catch(e=>{if(e.code===`ENOENT`)return``;throw e});for(let e of o.split(`
4
+ `)){if(!e.trim())continue;let t;try{t=JSON.parse(e)}catch{continue}if(p(t.command)===p(i)&&Object.hasOwn(t,`result`))return t.result}let c=r.value;if(r.kind===`steer`){let t=String(c?.text??r.value??``);n.threadId?await _(e,n,t,{command:i}):s(e,n.id,t)}else if(r.kind===`ask`){let t=await y(e,n,String(c?.question??r.value??``),{command:i});return t.finalMessage??t.error?.message??``}else r.kind===`approve`&&m(t(e,n.id),String(c?.approvalId??c?.id??``),c?.decision===`deny`||c?.decision===`decline`?`decline`:`accept`);await k.mkdir(S.dirname(a),{recursive:!0}),await k.appendFile(a,JSON.stringify({command:i,result:null})+`
5
+ `)}async function J(e,t){let n=P(),r=await F(n.server,n.token,e).catch(async t=>{throw await F(n.server,n.token,e,`/result`,{method:`POST`,body:JSON.stringify({status:`failed`,error:t instanceof Error?t.message:String(t)})}).catch(()=>{}),t}),i=r.task.event,a=i&&r.tokens[i.integration],o=C.env.CODER_INBOX_MODE===`poll`;delete C.env.CODER_INBOX_MODE;let s=C.env.CODER_CHECKOUT_CACHE;delete C.env.CODER_CHECKOUT_CACHE;let c=await U(r,t),u=new AbortController,d=setTimeout(()=>u.abort(Error(`timeout`)),r.timeoutMs??18e5),f=setInterval(()=>{F(n.server,n.token,e,`/heartbeat`,{method:`POST`,signal:AbortSignal.timeout(1e4)}).catch(()=>{})},3e4),p,m=()=>W(n,e,r,c),h=!1,g=async t=>{h=!0,await m(),await F(n.server,n.token,e,`/result`,{method:`POST`,body:JSON.stringify(t)})};try{return p=await Promise.race([L(r.task,t,a,s,u.signal),new Promise((e,t)=>u.signal.addEventListener(`abort`,()=>t(u.signal.reason),{once:!0}))]),u.signal.throwIfAborted(),await ne(e,t,n,r,p,a,o,u.signal,m,g)}catch(e){throw h||await g({status:`failed`,error:e instanceof Error?e.message:String(e)}).catch(e=>console.error(`coder runner: result delivery failed`,e)),e}finally{clearTimeout(d),clearInterval(f);try{p&&await B(p)}finally{delete C.env[l],delete C.env.CODER_MCP_MODE,delete C.env.CODER_MCP_CONNECTION_ENV}}}async function ne(e,r,i,a,s,l,f,p,m,h){let g=a.task.event,_=new AbortController,y,b,C=!1,w=await $({root:r,generation:a.generation,apply:async n=>{let r=y&&o(s,y);if(!r)throw Error(`The task is not ready`);if(n.kind===`cancel`){await v(s,r),C=!0,await B(),await m();return}return K(t(s,r.id),e,n)}}),T=w.ack().seq>=0?w.ack():void 0,E,D=()=>{if(E)return E;if(!T)return Promise.resolve();let t=T;return E=F(i.server,i.token,e,`/ack`,{method:`POST`,body:JSON.stringify(t),signal:_.signal}).then(()=>{T&&T.seq<=t.seq&&(T=void 0)}).catch(e=>{throw(e.status===401||e.status===403)&&(T=void 0),e}).finally(()=>{E=void 0}),E},O=async()=>{let t=await F(i.server,i.token,e,`/messages?after=${w.ack().seq}`,{signal:_.signal});try{t.length&&await w.apply(t)}finally{t.length&&w.ack().seq>=0&&(T=w.ack()),await D().catch(()=>{})}},A=setInterval(()=>{D().catch(()=>{})},1e3),j=u(S.join(r,`.runner-task.json`)),M,N=new Map,P=(a.logCursor??-1)+1,I=0,L=[],R,z=()=>{for(let e of N.values())for(let t of e()){if(I>=2097152)continue;let e=Buffer.byteLength(t)>65536?`A task log entry exceeded 64 KB`:t;L.push({seq:P++,at:Date.now(),level:`out`,line:e}),I+=Buffer.byteLength(e)}return R||(R=(async()=>{for(;L.length;){let t=0,n=L.slice(0,100).filter(e=>(t+=Buffer.byteLength(JSON.stringify(e)))<524288);if(!n.length)throw Error(`Task log batch is too large`);let r=!1;for(let t=0;t<3;t++)try{await F(i.server,i.token,e,`/logs`,{method:`POST`,signal:AbortSignal.timeout(5e3),body:JSON.stringify({entries:n})}),r=!0;break}catch(e){if(t===2)throw e;await new Promise(e=>setTimeout(e,1e3))}r&&L.splice(0,n.length)}})().finally(()=>{R=void 0}),R)},B=()=>z().catch(e=>{console.error(`coder runner: log delivery failed`,e)}),V,U;try{j?.generation!==a.generation&&await k.writeFile(S.join(r,`.runner-note`),a.task.context?.note??``,{mode:384});let c=x({cwd:s,...j?.generation===a.generation?{resumeTaskId:j.id}:{},noteFile:S.join(r,`.runner-note`),agent:a.task.agent,flow:a.task.flow,task:a.task,toolEnvironment:{tokens:{...a.tokens,...a.nativeTokens}},connections:a.connections,connectionEnv:a.connectionEnv,post:a.task.source===g?.integration,...l?{postToken:l}:{},onStart(e){b=e},async onTask(e){if(y=e,p.aborted){let t=o(s,e);throw t&&await v(s,t),p.reason}N.has(e)||N.set(e,d(S.join(t(s,e),`log.jsonl`))),z().catch(()=>{}),M??=setInterval(()=>{z().catch(()=>{})},1e3),n(S.join(r,`.runner-task.json`),{generation:a.generation,id:e}),await D().catch(()=>{}),await O().catch(()=>{}),clearInterval(V),f&&(V=setInterval(()=>{U||=O().catch(()=>{}).finally(()=>{U=void 0})},4e3))},onApproval(t){return F(i.server,i.token,e,`/result`,{method:`POST`,body:JSON.stringify({status:`waiting`,approval:t})})}}),u=await Promise.race([c,new Promise((e,t)=>{let n=()=>t(p.reason);p.addEventListener(`abort`,n,{once:!0}),p.aborted&&n()})]);for(await B();T;)p.throwIfAborted(),await D().catch(()=>{}),T&&await new Promise(e=>setTimeout(e,1e3));return await h({status:C?`cancelled`:u.ok?`completed`:`failed`,result:u.reply??u.result,tokens:u.tokens,...u.note===void 0?{}:{note:u.note},...s===r?{}:{diff:await H(s).catch(()=>void 0)}}),u}catch(n){if(p.aborted){b?.requestStop();let n=new Set([...y?[y]:[],...b?.runningIds()??[],...c(s).filter(t=>t.name===`agent:${e}`||b&&t.flowRunId===b.runId).map(e=>e.id)]);for(let e of n){N.has(e)||N.set(e,d(S.join(t(s,e),`log.jsonl`)));let n=o(s,e);n&&await v(s,n)}}throw await B(),n}finally{clearInterval(M),await R?.catch(()=>{}),clearInterval(A),clearInterval(V),_.abort(),await Promise.allSettled([U,E]),await w.close()}}const Y=`/tmp/coder-inbox.sock`,X=e=>S.join(D.tmpdir(),`coder-${T(`sha256`).update(e).digest(`hex`).slice(0,24)}.sock`);function Z(e,t){return new Promise((n,r)=>{let i=j.request({socketPath:e,path:`/messages`,method:`POST`,headers:{"content-type":`application/json`}},e=>{let t=``;e.on(`data`,e=>{t+=e}),e.on(`end`,()=>{if(e.statusCode!==200)return r(Error(`Task inbox answered ${e.statusCode}`));try{n(JSON.parse(t))}catch(e){r(e)}}),e.on(`error`,r)});i.setTimeout(1e4,()=>i.destroy(Error(`Task inbox timed out`))),i.on(`error`,r),i.end(JSON.stringify({entries:t}))})}const Q=`const http=require('node:http');const req=http.request({socketPath:process.env.CODER_INBOX_SOCKET||'/tmp/coder-inbox.sock',path:'/messages',method:'POST',headers:{'content-type':'application/json'}},res=>{res.pipe(process.stdout);res.on('end',()=>{if(res.statusCode!==200)process.exitCode=1})});req.on('error',()=>{process.exitCode=1});req.setTimeout(10000,()=>req.destroy());req.end(JSON.stringify({entries:JSON.parse(process.env.CODER_INBOX_MESSAGES)}));`;async function $(e){let t=S.join(e.root,`.runner-inbox.json`),r=u(t),i=r?.generation===e.generation?r:{generation:e.generation,seq:-1,answers:[]},a=Promise.resolve(),o=r=>{let o=async()=>{if(!Array.isArray(r)||r.some(t=>!Number.isInteger(t.seq)||t.seq<0||t.generation!==e.generation||![`steer`,`ask`,`approve`,`cancel`].includes(t.kind)))throw Error(`Invalid task messages`);for(let a of[...r].sort((e,t)=>e.seq-t.seq)){if(a.seq<=i.seq)continue;let r=await e.apply(a),o={generation:e.generation,seq:a.seq,answers:[...i.answers??[],...a.kind===`ask`?[{seq:a.seq,value:r}]:[]]};n(t,o),i=o}return i},s=a.then(o,o);return a=s.then(()=>{},()=>{}),s},s=e.socketPath??C.env.CODER_INBOX_SOCKET??X(e.root);if(await k.lstat(s).then(()=>!0,()=>!1)){if(!await new Promise((e,t)=>{let n=O.connect(s);n.once(`connect`,()=>{n.destroy(),e(!1)}),n.once(`error`,n=>n.code===`ECONNREFUSED`?e(!0):t(n))}))throw Error(`The task inbox is already running`);await k.unlink(s)}let c=j.createServer(async(e,t)=>{if(e.method!==`POST`||e.url!==`/messages`){t.writeHead(404).end();return}let n=``;try{for await(let t of e)if(n+=t,Buffer.byteLength(n)>1048576)throw Error(`Messages too large`);let r=await o(JSON.parse(n).entries);t.writeHead(200,{"content-type":`application/json`}).end(JSON.stringify(r))}catch{t.writeHead(409).end()}});return await k.mkdir(e.root,{recursive:!0}),await new Promise((e,t)=>{c.once(`error`,t),c.listen(s,e)}),await k.chmod(s,384),{apply:o,ack:()=>i,close:async()=>{await a,await new Promise(e=>c.close(()=>e()))}}}export{X as a,J as c,M as d,z as f,R as i,Z as l,Y as n,G as o,q as r,B as s,Q as t,P as u};
@@ -0,0 +1 @@
1
+ import{qi as e}from"./core-DwsAMCnL.js";import{Ct as t,K as n,Nt as r,Pt as i,Y as a,at as o,ct as s,fn as c,ht as l,jt as u,mt as d,ot as f,pt as p,st as m,tt as h,wn as g,y as _}from"./config-D2FxHWwi.js";import{H as v,a as y,b,h as ee,i as x,m as S,p as C,r as w,s as T,t as E,u as D}from"./dispatch-D3Dqxijf.js";import{n as O}from"./remote-oQs6My_3.js";import{a as k,c as A,i as j,l as M,n as N,r as P,u as F}from"./actions-5TDwmn_z.js";import I from"node:path";import L from"node:process";var R=e({tasks:()=>$});function z(e){return{cwd:e.cwd?I.resolve(e.cwd):L.cwd(),...e.server===void 0?{}:{api:O(e)}}}function B(e,t){let n=h(e,t);if(n)return n;throw new v(`invalid-option`,t?`No task found for "${t}".`:`No tasks found for this workspace.`,{hint:t?[`List tasks: coder task list`,`Start one: coder run "<text>"`]:[`Start one: coder run "<text>"`]})}async function V(e,t){if(t)return e.tasks.get(t);let[n]=await e.tasks.list({limit:1});if(!n)throw new v(`server`,`No server tasks found.`);return n}function H(e){throw new v(`invalid-option`,`Missing task id.`,{hint:e})}async function U(e,t={}){if(t.outputSchema!==void 0&&(!t.outputSchema||typeof t.outputSchema!=`object`||Array.isArray(t.outputSchema)))throw new v(`invalid-option`,`outputSchema must be an object.`);let{cwd:n,api:r}=z(t);if(r){let n=await r.tasks.create({source:`cli`,prompt:e,...t.cwd?{cwd:t.cwd}:{},...t.outputSchema?{outputSchema:t.outputSchema}:{},...t.repo?{repo:t.repo}:{},...t.agent?{agent:t.agent}:{},...t.engine?{engine:t.engine}:{},...t.model?{model:t.model}:{},...t.effort?{effort:t.effort}:{},...t.permissions?{permissions:t.permissions}:{},...t.runner?{runner:t.runner}:{},...t.mcp?{mcp:t.mcp.split(`,`).map(e=>e.trim())}:{},...t.connections?{connections:t.connections}:{}});return t.wait?r.tasks.wait(n.task.id,{onLog:t.onLog}):n}let i=t.agent?await(await import(`./exec-BsXFIdTl.js`).then(e=>e.i)).agentTaskOptions(n,t.agent,t.mcp,void 0,t.connections):void 0,a=i?.connected??await c(t.connections);for(let e of a.warnings)t.onNote?.(e);let o=i??D(t.mcp,_(n).mcp,{},a.mcp),s={prompt:e,outputSchema:t.outputSchema,cwd:n,engine:t.engine??i?.engine,model:t.model??(t.engine?void 0:i?.model),effort:t.effort??(t.engine?void 0:i?.effort),permissions:t.permissions??i?.permissions,name:t.name,system:t.system??i?.system,wait:t.wait,simulateApproval:t.simulateApproval,addDirs:t.addDirs,...t.agent?{agentId:t.agent}:{},mcp:o.mcp,mcpBindings:o.mcpBindings,mcpWarnings:o.warnings,connectionEnv:a.env,connections:a.ids,nativeMcp:o.nativeMcp,...t.onFallback?{onFallback:t.onFallback}:{},...t.onNote?{onNote:t.onNote}:{}},l=await w(s);if(!t.wait){let e=l.taskId;return{taskId:e,status:l.task.status,startupCheck:l.startupCheck,commands:{result:`coder task result ${e} --wait`,steer:`coder task steer ${e} "<follow-up>"`,stop:`coder task stop ${e}`,list:`coder task list`}}}for(;;){let r=l.taskId;t.onWaiting?.(r);let{task:i,result:a}=await S(n,r),o=a?.error?.message??``;if(i.status===`failed`&&x(i.permissions??`auto`,o))throw new v(`read-only-unavailable`,o);if(i.status===`failed`&&y(o)){let r=_(n).chain,a=r[r.indexOf(l.engine)+1];if(!a)throw new v(`chain-exhausted`,o,{payload:E(l.engine,o,i.permissions??`auto`,t.system,e)});t.onFallback?.({engine:l.engine,detail:o,next:a}),l=await w({...s,engine:a,model:void 0,effort:void 0,name:void 0,simulateApproval:void 0});continue}return{taskId:r,status:i.status,finalMessage:a?.finalMessage,...o?{error:o}:{},tokens:a?.tokens??null,model:a?.model??i.model??null}}}async function W(e,i={}){let{cwd:a,api:s}=z(i);if(s){let t=await V(s,e);return i.wait?s.tasks.wait(t.task.id):t}let c=B(a,e);if(i.wait){r.includes(c.status)&&i.onWaiting?.(c.id);let e=await C(a,c);if(c=e.task,e.reason===`approval`)throw new v(`approval-pending`,`Approval needed for task ${c.id}: ${e.approval.summary}`,{taskId:c.id,approval:e.approval})}let{steps:l,result:u}=T(a,c.id,{tail:i.tail}),f=b(t(a,c.id)).filter(e=>!e.response),m=r.includes(c.status),h=m?o(a,c):c.updatedAt,g=n(h);return{taskId:c.id,status:m&&f.length?`waiting-approval`:c.status,task:c,result:u,steps:l,turns:d(a,c.id),pendingApprovals:f.map(e=>({id:e.id,summary:e.summary,cwd:e.cwd??null})),...m?{idleMs:g,lastActivityAt:h??null,stalled:f.length===0&&g>6e5,lastLog:p(a,c.id,1)[0],liveTokens:p(a,c.id,200).reverse().find(e=>e.kind===`usage`&&String(e.at??``)>=(c.resumedAt??``))?.tokens??null}:{}}}async function G(e={}){let{cwd:a,api:s}=z(e);if(s){let t=await s.tasks.list({status:e.running?`running`:void 0,limit:e.limit===`all`?200:e.limit,archived:e.archived});return e.stopped?t.filter(e=>i.includes(e.status)):t}let{tasks:c,clipped:l}=j(a,{...e,dir:e.dir??e.cwd}),u=c.map(e=>{let i=r.includes(e.status)?b(t(a,e.id)).filter(e=>!e.response).length:0;return{taskId:e.id,status:i?`waiting-approval`:e.status,pendingApprovals:i,engine:e.engine??null,model:e.model??null,effort:e.effort??null,name:e.name??null,cwd:e.cwd??null,prompt:String(e.prompt??``).replace(/\s+/g,` `).trim().slice(0,80),updatedAt:e.updatedAt,archived:e.archived??!1,flowRunId:e.flowRunId??null,idleMs:r.includes(e.status)?n(o(a,e)):null}}),d=!u.length&&!e.archived?f(a,{migrate:!1}).length:0;return Object.assign(u,{clipped:l,archived:d})}async function*K(e,t){let n=-1;for(;;){let r=await e.tasks.get(t);for(let r of await e.tasks.logs(t,n))n=r.seq,yield r;if(i.includes(r.status))return;await new Promise(e=>setTimeout(e,1e3))}}async function q(e,n={}){let{cwd:r,api:i}=z(n);if(i){let t=await V(i,e);return{task:t,events:K(i,t.task.id),final:()=>i.tasks.get(t.task.id)}}let a=B(r,e);return{task:a,events:F(r,a.id,{tail:n.tail}),async final(){let e=l(r,s(r,a.id)??a),n=g(I.join(t(r,a.id),`result.json`));return{taskId:a.id,status:e.status,result:n,task:e}}}}async function J(e,n,r={}){let{cwd:i,api:a}=z(r);if(a){let t=await a.tasks.steer(e,n,{...r.model?{model:r.model}:{},...r.effort?{effort:r.effort}:{},...r.permissions?{permissions:r.permissions}:{}});return r.wait?a.tasks.wait(e):t}let o=await A(i,B(i,e),n,{model:r.model,effort:r.effort,permissions:r.permissions});if(!r.wait||o.steered===`queued`)return o;let c=s(i,o.taskId),l=c?await u(i,c):null,d=g(I.join(t(i,o.taskId),`result.json`));return{...o,status:l?.status??null,finalMessage:d?.finalMessage??null}}async function Y(e,t,n={}){let{cwd:r,api:i}=z(n);if(i)return i.tasks.ask(e,t);let a=B(r,e);n.onAsking?.(a.id);let o=await N(r,a,t,{model:n.model,effort:n.effort});return{taskId:a.id,answer:o.finalMessage||null,...o.error?{error:o.error.message}:{},ok:o.status===0}}async function X(e,n={}){let{cwd:r,api:i}=z(n);if(i)return(e?[await i.tasks.get(e)]:await i.tasks.list({limit:200})).flatMap(e=>e.approval?[{taskId:e.task.id,...e.approval}]:[]);if(!e)return P(r);let a=B(r,e);return b(t(r,a.id)).map(e=>({taskId:a.id,id:e.id,summary:e.summary,cwd:e.cwd??null,createdAt:e.createdAt,answered:e.response?.decision??null}))}async function Z(e,n,r={}){let{cwd:i,api:a}=z(r),o=r.deny?`decline`:`accept`;if(a){if(!e||!n)throw new v(`invalid-option`,`Server approvals need a task id and approval id.`,{hint:`Usage: coder task approve <task-id> <approval-id> --server <url>`});return a.tasks.approve(e,n,o)}if(e&&!n&&e.startsWith(`apr-`)&&(n=e,e=P(i).find(e=>e.id===n)?.taskId,!e))throw new v(`invalid-option`,`No pending approval "${n}".`,{hint:`List them: coder task approvals`});if(!e||!n)throw new v(`invalid-option`,`Missing approval id.`,{hint:[`List them: coder task approvals`,`Usage: coder task approve [task-id] <approval-id> [--deny]`]});let s=B(i,e);return ee(t(i,s.id),n,o),{taskId:s.id,approvalId:n,decision:o}}async function Q(e,t={}){let{cwd:n,api:r}=z(t);if(r)return r.tasks.cancel(e??H([]));let i=B(n,e),{interrupt:a}=await M(n,i);return{taskId:i.id,status:`cancelled`,interrupt:a}}async function te(e,t={}){let{cwd:n,api:r}=z(t);if(r){let n=t.allStopped?(await r.tasks.list({limit:200})).filter(e=>i.includes(e.status)).map(e=>e.task.id):[e??H([])];return await Promise.all(n.map(e=>r.tasks.archive(e))),{archived:n,count:n.length}}if(t.allStopped){let e=m(n).filter(e=>i.includes(e.status));for(let t of e)a(n,t);return{archived:e.map(e=>e.id),count:e.length}}e||H([`Archive one: coder task archive <task-id>`,`Archive all stopped: coder task archive --all-stopped`]);let o=B(n,e);return a(n,o),{taskId:o.id,archived:!0}}async function ne(e,t={}){let{cwd:n,api:r}=z(t);if(r){let n=t.allArchived?(await r.tasks.list({limit:200,archived:!0})).map(e=>e.task.id):[e??H([])];return await Promise.all(n.map(e=>r.tasks.delete(e))),{deleted:n,count:n.length}}if(t.allArchived){let e=f(n).filter(e=>k(n,e)).map(e=>e.id);return{deleted:e,count:e.length}}e||H([`Delete one: coder task delete <task-id>`,`Delete all archived: coder task delete --all-archived`]);let i=B(n,e);if(i.status===`running`)throw new v(`invalid-option`,`Task ${i.id} is still running.`,{hint:`Stop it first: coder task stop ${i.id}`});return k(n,i),{taskId:i.id,deleted:!0}}async function*re(e,t={}){yield*(await q(e,t)).events}const $={run:U,result:W,list:G,watch:q,stream:re,steer:J,ask:Y,approvals:X,approve:Z,stop:Q,archive:te,delete:ne};export{$ as n,R as t};
@@ -0,0 +1 @@
1
+ import{H as e}from"./dispatch-D3Dqxijf.js";import{i as t,t as n}from"./cli-D5hyqGq0.js";import{runnerOptions as r}from"./remove-D65xtbw5.js";import i from"node:process";const a=t({name:`runner test`,globalFlags:{cwd:!1},args:1,help:{usage:`coder runner test <id> [--server [url]] [--json]`,summary:`Check the runner connection.`,flags:[n]},options:r,async run({options:t,args:[n]}){if(!n)throw new e(`invalid-option`,`Missing runner id.`);let{testRunner:r}=await import(`./runner-DME7ohjt.js`).then(e=>e.a);return r(n,t)},print:e=>i.stdout.write(`${e.ok?`OK`:`Failed`} ${e.detail} (${e.ms} ms).\n`)});export{a as commandRunnerTest};
@@ -0,0 +1 @@
1
+ import{i as e}from"./cli-D5hyqGq0.js";import{n as t}from"./mcp-server-DGzme0YX.js";import n from"node:process";const r=e({name:`agent tools`,options:{},args:1,async run({args:e}){let{INTEGRATIONS:r}=await import(`./integrations-D3OgJk6Y.js`).then(e=>e.r),{agentTools:i}=await import(`./mcp-YhyTUMIM.js`).then(e=>e.n),a=e[0]??``,o=(n.env.CODER_AGENT_TOOLS??``).split(`,`).filter(Boolean),s=i(a,o);if(!s)throw Error(`Unknown tool set "${a}"; known: ${[...Object.keys(r).filter(e=>r[e].tools.serve),`note`].join(`, `)}`);let c=n.env.APP_TOKEN??``;if(!c&&a!==`note`)throw Error(`APP_TOKEN is not set`);let l=n.env.CODER_AGENT_SCOPE?JSON.parse(n.env.CODER_AGENT_SCOPE):void 0;await t(`coder-${a}`,s,{token:c,fetch,tools:o,...l?{scope:l}:{}})}});export{r as commandTools};
@@ -0,0 +1 @@
1
+ import{qi as e}from"./core-DwsAMCnL.js";var t=e({PRESETS:()=>n});const n=[`observe`,`comment`,`write`];export{t as n,n as t};