@wular/coder 0.4.8 → 0.4.10

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 (592) hide show
  1. package/dist/actions-C3Mgpl9J.js +2 -0
  2. package/dist/adapter-BeezVK-B.js +1 -0
  3. package/dist/{adapter-YCvP9H2n.js → adapter-ChaISKgI.js} +42 -42
  4. package/dist/{adapter-B2RXnvqt.js → adapter-MD6ahqPR.js} +6 -6
  5. package/dist/{add-DcR15CL7.js → add-B26QSwPY.js} +2 -2
  6. package/dist/add-BbXuvqj1.js +1 -0
  7. package/dist/add-Bk8drM-8.js +1 -0
  8. package/dist/add-CD_L-WW8.js +2 -0
  9. package/dist/agent-B8ItyuHN.js +8 -0
  10. package/dist/{agent-B2Ikhp7u.js → agent-DHpMqHVi.js} +1 -1
  11. package/dist/alias-CScCzXhS.js +2 -0
  12. package/dist/{app-snjvOKJA.js → app-wHQJHu6N.js} +1 -1
  13. package/dist/approvals-BIGQBbCM.js +2 -0
  14. package/dist/{approve-DAuvq9Eq.js → approve-BnZ3v-3c.js} +1 -1
  15. package/dist/approve-DFSy7Z72.js +2 -0
  16. package/dist/apps-6BgpUsFh.js +372 -0
  17. package/dist/archive-CU0nhUeJ.js +4 -0
  18. package/dist/{archive-BhfGdyuC.js → archive-CY2lvp_c.js} +2 -2
  19. package/dist/args-BekfmD9t.js +1 -0
  20. package/dist/ask-CLDgHB_Y.js +4 -0
  21. package/dist/auth-C3KrIUf1.js +1 -0
  22. package/dist/auth-CGeSfgNb.js +1 -0
  23. package/dist/builtin/coder/agent.json +5 -9
  24. package/dist/chat-AbW-LOHo.js +13 -0
  25. package/dist/chat-bridge-WK-pKNfw.js +2 -0
  26. package/dist/chat-bwKd3y6V.js +1 -0
  27. package/dist/cli-Fp28pM4Y.js +9 -0
  28. package/dist/cli.js +1 -1
  29. package/dist/client-DzwzCsue.js +22 -0
  30. package/dist/config-DoVedq6T.js +3 -0
  31. package/dist/{connection-CQPndo-u.js → connection-5V8doFL7.js} +1 -1
  32. package/dist/connection-Cb0TK201.js +1 -0
  33. package/dist/conversation-DT-35cEt.js +1 -0
  34. package/dist/create-CrjRdQip.js +1 -0
  35. package/dist/credentials-DoL9w8D1.js +1 -0
  36. package/dist/dash/standalone/server/build-index.json +1 -1
  37. package/dist/dash/standalone/server/manifest.json +1731 -1566
  38. package/dist/dash/standalone/server/modules-server-server-react-server/src/client/{index.8e150ef2bc6a5f4e.js → index.843431e3538fd9a4.js} +7 -11
  39. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/{defaults.e6ce0944639198a2.js → defaults.1b615366c56838a1.js} +27 -1
  40. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/event-prompt.87f064ca0141e796.js +30 -0
  41. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/task/{log-view.871cbff2605b5cfd.js → log-view.60308a11f7001eb7.js} +10 -0
  42. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/{load.4f942c7f68b2e273.js → load.7ae462ef36271be8.js} +15 -2
  43. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/{types.9f59e6c761d6aac4.js → types.79f9092cdb5a00d1.js} +4 -0
  44. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/connect/{page.a4ec4bce860e3e71.js → page.806027fde54ab723.js} +5 -5
  45. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/create/[id]/{page.4c818ef18a084013.js → page.bd04d2d3eba00676.js} +2 -2
  46. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{loading.f8373428f20c270b.js → loading.e348ec45e9ed951b.js} +2 -2
  47. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{notify.b0946ff7951ecc11.js → notify.857748e260c691e3.js} +1 -1
  48. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{page.55eef4b0e71415d9.js → page.25153459858542f9.js} +13 -14
  49. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/sign-out.ff98573f362d76f3.js +20 -0
  50. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/agent-menu.2ed0e66d131fc148.js +13 -0
  51. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{agents-grid.3a3c550ff68aeb11.js → agents-grid.8efd14bc39281da9.js} +22 -13
  52. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{connect-apps.7a4cfa5c917e5db9.js → connect-apps.d1e67db29b12dc0a.js} +9 -8
  53. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{loading.fd26a5414b0a06db.js → loading.fac1132ad9c4248e.js} +5 -5
  54. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{page.b2bed855b68a77b2.js → page.0f7d5e3e42462870.js} +15 -20
  55. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{layout.95b8bf3c438955c2.js → layout.05210ffa6038791f.js} +35 -37
  56. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{loading.39c596735b108f80.js → loading.388aeaf0c2edf8f8.js} +1 -1
  57. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{page.1401a08ea4e27c01.js → page.19fe116c0f802cb1.js} +87 -36
  58. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{loading.2d6e75e5923f73f2.js → loading.4da9e2ba3fea937f.js} +2 -2
  59. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{page.848ccc3a609385a9.js → page.f87fd8eb66f73af0.js} +50 -48
  60. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{platform-actions.4b14873a20ebd56c.js → platform-actions.b6c3d3184e167d0b.js} +103 -93
  61. 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 → agent-settings-form.28220621573033d7.js} +54 -82
  62. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{loading.80f597fd04fc4a97.js → loading.ad1a4c9b000d269a.js} +1 -1
  63. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{page.35d01036ce840ff9.js → page.2f7467868f599ebc.js} +15 -21
  64. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{loading.ff54c7100f781fbc.js → loading.ec94096015346f2c.js} +2 -2
  65. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{page.e5a405c518c1d8e6.js → page.a92a36a8ce21088c.js} +1 -1
  66. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{loading.55aa8df7712e6820.js → loading.8f998a9c511e1fb3.js} +3 -3
  67. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{page.67c3489c62b661da.js → page.8935a5fe5c08bcf1.js} +7 -7
  68. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{versions-list.0c20e2100b321316.js → versions-list.5b97ab6d40e2e639.js} +6 -6
  69. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/loading.bedcc1aba372fbce.js +23 -0
  70. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{page.7132b3ef68d33cc4.js → page.14760e9eedd6ff8e.js} +13 -24
  71. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-pills.19e913c8cb22db21.js → agent-pills.f987c12bcbc5c850.js} +18 -13
  72. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-toggle.ec6d07ccd1f9796e.js → agent-toggle.a6ee8bd882178e29.js} +14 -7
  73. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{hero.9de48723967d8546.js → hero.8be1dd4ea3ed6e17.js} +7 -7
  74. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{instructions.6558ffd02a59ad53.js → instructions.85b1cd986a9edbb5.js} +1 -1
  75. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{connect-repositories.258f6c2c5f1b1b17.js → connect-repositories.59d89152fe845af2.js} +1 -1
  76. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{editor.9e1a0945f6880076.js → editor.77f68d431408745b.js} +56 -99
  77. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{import-picker.e54af9841da11373.js → import-picker.a7b01817a821819a.js} +33 -39
  78. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/loading.ee001af7a96e3972.js +28 -0
  79. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{page.6c8e9ef5d72b7ef1.js → page.c4570fd80bdda68c.js} +11 -19
  80. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{layout.c67ccee8b4770821.js → layout.19006c2d7dc8d114.js} +54 -84
  81. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{operator-apps.3365f9248dfe735d.js → operator-apps.d350a52d27f69fa6.js} +20 -23
  82. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{page.c60ebc5afe4dcdae.js → page.4a652f5080c2b863.js} +9 -10
  83. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{page.c720853404d94114.js → page.d39f7a1719f50c6d.js} +2 -2
  84. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{connections-list.544315916300ed07.js → connections-list.ff7e1dadcd4df17f.js} +77 -78
  85. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/credentials-list.87a1f8ab71eb4bed.js +486 -0
  86. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials.c1a312e6ec58db83.js → credentials.a535c9c6dd8b4cdf.js} +10 -11
  87. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{engines-list.75dc69caed34ff8f.js → engines-list.29fffd07c1c3b771.js} +11 -11
  88. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{list.6d6180438e2bd0c8.js → list.0c87d55cf4ef382c.js} +46 -34
  89. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{loading.9d7c30db2ecccda3.js → loading.7ca95dcb4fb3362b.js} +1 -1
  90. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{models-list.04eb5a47bca3bd09.js → models-list.6fea9faddb8300bb.js} +156 -147
  91. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{page.dd00f57d398be882.js → page.295245052b93af90.js} +23 -23
  92. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{runners-list.e644287ae91ea8c3.js → runners-list.a4a38e54d834a1ec.js} +37 -45
  93. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{secrets-list.35fa72bf3f00d1af.js → secrets-list.50f487766f87383c.js} +30 -21
  94. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{layout.3a17085fb262e4ab.js → layout.c42e0ab39cb2c0e0.js} +9 -9
  95. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{model-options.2eacf7f8ac0032df.js → model-options.a96c11d11674f598.js} +13 -0
  96. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{page.bac05d6e87953d0e.js → page.6997506eaa1a4824.js} +1 -1
  97. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{settings-head.a14b9796a8af62dc.js → settings-head.bbc7ced8dd5491eb.js} +1 -1
  98. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{tunnel-guide.1fd664df1fd0e3c1.js → tunnel-guide.29eee1a0b1852168.js} +1 -1
  99. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{create-link.3acdd50e1cc0c729.js → create-link.9458b49dc99bbaaa.js} +6 -7
  100. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{outcome-dialog.d730e0bfbe0cf2f8.js → outcome-dialog.894c73f9abee3ce1.js} +8 -7
  101. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{page.079600422889e725.js → page.77e402bb6e8e7f7e.js} +10 -9
  102. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{activity.ed49ee2686d1ee41.js → activity.fcda6f18c8207c99.js} +23 -28
  103. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{loading.0d973b51fee68801.js → loading.56520888d5270b88.js} +6 -9
  104. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{page.05dd344bada1d4d8.js → page.d0f039221a27b8ef.js} +7 -7
  105. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-actions.ece7ec732352ce70.js → task-actions.f5f2016d2dc7f422.js} +29 -27
  106. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-view.8a5908c42647923f.js → task-view.a292baa2410cdf64.js} +147 -90
  107. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer-data.ff108c0ef82a4d7b.js → composer-data.309a194fc7fa34be.js} +3 -3
  108. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer.c7ec618e215d63ce.js → composer.2d4122eb33addbdd.js} +90 -140
  109. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{task.af5001e51d2f612b.js → task.a0c68180db5fb4c1.js} +26 -2
  110. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-list.0976f1812d6d15f5.js → tasks-list.021bdc2f3d90af2d.js} +44 -41
  111. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-section.fd72404364042b87.js → tasks-section.13f64b0836ae406b.js} +10 -10
  112. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{page.293492d13a9dca2e.js → page.b78f0df100410db0.js} +5 -5
  113. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{custom-range.471edcb853889c2e.js → custom-range.2e21c7f891966c15.js} +25 -26
  114. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{day-chart.d40438efa74b0596.js → day-chart.261b6651df2d3966.js} +2 -2
  115. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{loading.5b28c7d8f3a473a3.js → loading.97d277dbab9c15cf.js} +4 -5
  116. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{metric.ada350d2b7449b39.js → metric.5ff3636065481c44.js} +1 -1
  117. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{page.69adbf6cde427292.js → page.93c2306069c03c68.js} +11 -18
  118. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/range-bar.2197d8f43216d104.js +57 -0
  119. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{top-agents.b00f571862b5b608.js → top-agents.18fc469e781e2305.js} +6 -10
  120. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{layout.ab6f86cc5b8b2dab.js → layout.185dbc99875e208a.js} +11 -3
  121. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/login/{page.088b41424cd6cf3c.js → page.a82be2fd23e9ac67.js} +6 -9
  122. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/zone.0515a688ee5ff6ca.js +17 -0
  123. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{drawer.0e2e3636f33049f5.js → drawer.d3e61538dbc8ec39.js} +8 -9
  124. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{foreign-link.fe46528a6a66c0f4.js → foreign-link.1f4217895ff1e835.js} +4 -4
  125. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/heads.37e35439c02fc636.js +16 -0
  126. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/loading-card.cc76fc9708142525.js +40 -0
  127. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{page-head.e5d2185c1cdac740.js → page-head.85f15db7b648d48c.js} +10 -2
  128. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{stream.2fea238dc4f4f9a4.js → stream.95a2468086aceb84.js} +3 -3
  129. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{task-toasts.4282affa47415a36.js → task-toasts.e1a484113e1df660.js} +12 -8
  130. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{theme-choices.ef190ef1cd197199.js → theme-choices.85100ed66d6f9200.js} +8 -17
  131. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{back.af528135d7e33d6d.js → back.180765bdadf6d602.js} +6 -6
  132. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{org.813dc34bd23a336f.js → org.572ad93c7707ab27.js} +1 -1
  133. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{side-toggle.bafcb4b273b1c4d0.js → side-toggle.489faf1a259479f7.js} +9 -9
  134. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/badge.c0bc352791a95fd6.js +83 -0
  135. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/button.ce9e6cdb08ca86db.js +91 -0
  136. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{card.6227f43fc0ae4bd1.js → card.9f0d45b73bc78b4f.js} +21 -12
  137. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{collapse.dab7f208cbbe6a33.js → collapse.93e4d1b20c2873ed.js} +17 -5
  138. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{combo.0572dd5730c94112.js → combo.54270c0251466fda.js} +14 -40
  139. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/confirm.c1281f9b12854210.js +27 -0
  140. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{copy.9be99c94423eb1ca.js → copy.bd6fc1577a393965.js} +8 -10
  141. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{filter.4f703a4ce7d2a519.js → filter.3a452a262f040973.js} +34 -53
  142. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{icons.868385119bf2de28.js → icons.e36c72f54750663a.js} +1 -1
  143. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/menu-items.1d082ac4dae8f3d4.js +145 -0
  144. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{menu.0f064f75822888be.js → menu.ee45bace979944b6.js} +16 -45
  145. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{modal.92432959e3a3e2c0.js → modal.25d53e5b41b9c4e5.js} +10 -11
  146. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{segmented.5ac52bb38fb64ae5.js → segmented.a08dc08338d080e9.js} +13 -2
  147. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{select.7f481669998074f8.js → select.2eb33e5bea28d804.js} +62 -61
  148. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tail.30913c92f5ca6102.js → tail.04132db0c5033d4f.js} +7 -5
  149. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{toolbar.801bbd3163d3fbb0.js → toolbar.24036899654de6df.js} +10 -5
  150. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{action.568346602027ac74.js → action.968bcab0f5e3665d.js} +2 -2
  151. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{client.d25e6dcc6704eb60.js → client.189224c16057d7a1.js} +1 -1
  152. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/follow.bfb9bcff3c1366d7.js +32 -0
  153. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{format.6a7d1beaf4d09d9c.js → format.ceeaafa10a0563f3.js} +1 -0
  154. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{paged.18f5872fc5aebe96.js → paged.0e54c3044f8ca567.js} +1 -7
  155. package/dist/dash/standalone/static/assets/chunks/action-410bdc82c416bc01.js +1 -0
  156. package/dist/dash/standalone/static/assets/chunks/agent-pills-0c0b8d40b9bfc78f.js +2 -0
  157. package/dist/dash/standalone/static/assets/chunks/agent-settings-form-5a2601316e2ab283.js +1 -0
  158. package/dist/dash/standalone/static/assets/chunks/agent-toggle-5ede0c449e88cb9d.js +1 -0
  159. package/dist/dash/standalone/static/assets/chunks/agents-grid-ffb18df48e951ecb.js +1 -0
  160. package/dist/dash/standalone/static/assets/chunks/back-602db2cfdccf2e7f.js +1 -0
  161. package/dist/dash/standalone/static/assets/chunks/combo-df2685e277db02c0.js +1 -0
  162. package/dist/dash/standalone/static/assets/chunks/composer-08e49d49c0c3ee94.js +1 -0
  163. package/dist/dash/standalone/static/assets/chunks/composer-data-5fed6c271a4791ca.js +1 -0
  164. package/dist/dash/standalone/static/assets/chunks/composer-e1cefed81ea89b7e.js +1 -0
  165. package/dist/dash/standalone/static/assets/chunks/confirm-d163e6865d66dfab.js +1 -0
  166. package/dist/dash/standalone/static/assets/chunks/connect-apps-ce3c9d049ebad459.js +1 -0
  167. package/dist/dash/standalone/static/assets/chunks/{connect-repositories-569c181ff81509f4.js → connect-repositories-0aa9abc77b9c3d48.js} +1 -1
  168. package/dist/dash/standalone/static/assets/chunks/connections-list-6eddeb8583ded10f.js +1 -0
  169. package/dist/dash/standalone/static/assets/chunks/copy-0cc00656953531be.js +1 -0
  170. package/dist/dash/standalone/static/assets/chunks/create-link-bc365f8dfe88e6b3.js +1 -0
  171. package/dist/dash/standalone/static/assets/chunks/credentials-list-1b6a81e9b4934dc8.js +1 -0
  172. package/dist/dash/standalone/static/assets/chunks/custom-range-cae5567874db83ca.js +1 -0
  173. package/dist/dash/standalone/static/assets/chunks/defaults-52f30e83d7666f7a.js +1 -0
  174. package/dist/dash/standalone/static/assets/chunks/editor-d55d247a1d7de5f0.js +6 -0
  175. package/dist/dash/standalone/static/assets/chunks/engines-list-288559344de4d4b9.js +1 -0
  176. package/dist/dash/standalone/static/assets/chunks/{field-f40df6a5289dfe05.js → field-693bb870ad0bdee8.js} +1 -1
  177. package/dist/dash/standalone/static/assets/chunks/format-a27067f0186e78ac.js +1 -0
  178. package/dist/dash/standalone/static/assets/chunks/instructions-3f18e035338b0d0b.js +1 -0
  179. package/dist/dash/standalone/static/assets/chunks/instructions-a3d7688e421f2a08.js +2 -0
  180. package/dist/dash/standalone/static/assets/chunks/list-2a59237cb7cb0a7c.js +1 -0
  181. package/dist/dash/standalone/static/assets/chunks/model-options-8d2170eebe0d061d.js +1 -0
  182. package/dist/dash/standalone/static/assets/chunks/models-list-5ed9ee02f9b66d98.js +1 -0
  183. package/dist/dash/standalone/static/assets/chunks/{notice-84358e912a9f01cc.js → notice-7d84ffab32ff24ca.js} +1 -1
  184. package/dist/dash/standalone/static/assets/chunks/outcome-dialog-3cffe3507ea92af2.js +1 -0
  185. package/dist/dash/standalone/static/assets/chunks/outcome-dialog-f6fb8c69efa66508.js +1 -0
  186. package/dist/dash/standalone/static/assets/chunks/platform-actions-4dc31567d00c4cb2.js +1 -0
  187. package/dist/dash/standalone/static/assets/chunks/platform-actions-ecd7200f7749c258.js +1 -0
  188. package/dist/dash/standalone/static/assets/chunks/runners-list-984246a8f9450da1.js +1 -0
  189. package/dist/dash/standalone/static/assets/chunks/{runtime-37175329f2865f15-1.js → runtime-6e12333f12903a62-1.js} +1 -1
  190. package/dist/dash/standalone/static/assets/chunks/secrets-list-88f8b30abbab52f0.js +1 -0
  191. package/dist/dash/standalone/static/assets/chunks/segmented-79c9c69b702e0b90.js +1 -0
  192. package/dist/dash/standalone/static/assets/chunks/shared-init-6e12333f12903a62-2.js +1 -0
  193. package/dist/dash/standalone/static/assets/chunks/shared-init-962398d15ee67c92.js +5 -0
  194. package/dist/dash/standalone/static/assets/chunks/shared-init-ae95a674d381c095.js +2 -0
  195. package/dist/dash/standalone/static/assets/chunks/side-toggle-7ada95cc7601eb49.js +1 -0
  196. package/dist/dash/standalone/static/assets/chunks/tail-99e29a541a072002.js +1 -0
  197. package/dist/dash/standalone/static/assets/chunks/task-95daa40d39de664f.js +1 -0
  198. package/dist/dash/standalone/static/assets/chunks/task-actions-1cdca1e8d3eee490.js +1 -0
  199. package/dist/dash/standalone/static/assets/chunks/task-view-fdcde0e31f63b737.js +5 -0
  200. package/dist/dash/standalone/static/assets/chunks/tasks-list-3ad1c93deff4fb2e.js +1 -0
  201. package/dist/dash/standalone/static/assets/chunks/types-3eca2c7f47c46054.js +1 -0
  202. package/dist/dash/standalone/static/assets/chunks/versions-list-60ac4d8f715bf5f7.js +1 -0
  203. package/dist/dash/standalone/static/assets/chunks/{wular-pnext-37175329f2865f15-0.js → wular-pnext-6e12333f12903a62-0.js} +1 -1
  204. package/dist/dash/standalone/static/assets/connect-a550b6f3a8c00186.css +1 -0
  205. package/dist/dash/standalone/static/assets/create-param-id-da3f7e20689fe51a.css +1 -0
  206. package/dist/dash/standalone/static/assets/dash-param-org-account-9471bec93c444232.css +1 -0
  207. package/dist/dash/standalone/static/assets/dash-param-org-agents-64500e78caae32df.css +1 -0
  208. package/dist/dash/standalone/static/assets/dash-param-org-agents-new-c067c22928a2d7cc.css +1 -0
  209. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-9dec87710e04f949.css +1 -0
  210. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-779c474301e04440.css +1 -0
  211. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-c7d594b5232630c2.css +1 -0
  212. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-a80e62570716fdb9.css +1 -0
  213. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-ce278252012297b9.css +1 -0
  214. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-d3b6d701eb8e1403.css +1 -0
  215. package/dist/dash/standalone/static/assets/dash-param-org-bcfa3de29341d5ba.css +1 -0
  216. package/dist/dash/standalone/static/assets/dash-param-org-operator-b7bc6447cc27c9ce.css +1 -0
  217. package/dist/dash/standalone/static/assets/dash-param-org-settings-6d6902345d88a687.css +1 -0
  218. package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-85c7af9a89eef06e.css +1 -0
  219. package/dist/dash/standalone/static/assets/dash-param-org-setup-173efecd7b990c2e.css +1 -0
  220. package/dist/dash/standalone/static/assets/dash-param-org-tasks-ae0bc03f468e63cc.css +1 -0
  221. package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-7325d8cff5be3592.css +1 -0
  222. package/dist/dash/standalone/static/assets/dash-param-org-usage-517b2a7ae462ac57.css +1 -0
  223. package/dist/dash/standalone/static/assets/global-87e1762113874559.css +1 -0
  224. package/dist/dash/standalone/static/assets/login-9760b85feae40270.css +1 -0
  225. package/dist/dash/standalone/static/assets/pnext-client-0b3b70f1aefb9947.js +1 -0
  226. package/dist/dash/standalone/static/assets/pnext-client-0d90849808b6eb05.js +1 -0
  227. package/dist/dash/standalone/static/assets/pnext-client-12faa1754e3ef3be.js +1 -0
  228. package/dist/dash/standalone/static/assets/pnext-client-23384b239b81a761.js +1 -0
  229. package/dist/dash/standalone/static/assets/pnext-client-23e200dd9b7a79c0.js +1 -0
  230. package/dist/dash/standalone/static/assets/pnext-client-2562299eef46e62c.js +1 -0
  231. package/dist/dash/standalone/static/assets/pnext-client-3a4ada64991e6a40.js +1 -0
  232. package/dist/dash/standalone/static/assets/pnext-client-71e7ecdfcf86be84.js +1 -0
  233. package/dist/dash/standalone/static/assets/pnext-client-726c29bbb81054c0.js +1 -0
  234. package/dist/dash/standalone/static/assets/pnext-client-825e9f5b63950ef4.js +1 -0
  235. package/dist/dash/standalone/static/assets/pnext-client-894cff70289fb7a3.js +1 -0
  236. package/dist/dash/standalone/static/assets/pnext-client-8f96a4b8a00ff460.js +1 -0
  237. package/dist/dash/standalone/static/assets/pnext-client-9bc9b14c08020649.js +1 -0
  238. package/dist/dash/standalone/static/assets/pnext-client-ab36b406301fd2a4.js +1 -0
  239. package/dist/dash/standalone/static/assets/pnext-client-b8c585cae8da7778.js +1 -0
  240. package/dist/dash/standalone/static/assets/pnext-client-bab4305b41abb15a.js +1 -0
  241. package/dist/dash/standalone/static/assets/pnext-client-bd80926822b3993d.js +1 -0
  242. package/dist/dash/standalone/static/assets/pnext-client-cd4c7b4318fa1846.js +1 -0
  243. package/dist/dash/standalone/static/assets/pnext-client-db55344d00b7888f.js +1 -0
  244. package/dist/dash/standalone/static/assets/pnext-client-eddcd5df2b28120f.js +1 -0
  245. package/dist/default-tTTSBdXq.js +1 -0
  246. package/dist/delete-DM2sA12f.js +2 -0
  247. package/dist/{delete-Dbo9goyQ.js → delete-DR37NTr1.js} +2 -2
  248. package/dist/disable-Dz_zLPX5.js +1 -0
  249. package/dist/{discover-hpHsnxqU.js → discover-CqabH4Fx.js} +2 -2
  250. package/dist/dispatch-BJZqI7sj.js +8 -0
  251. package/dist/{dist-C3wD7GfG.js → dist-B2jiMMxZ.js} +2 -2
  252. package/dist/{dist-DkATuPBB.js → dist-ClCNj65n.js} +2 -2
  253. package/dist/{dist-BTornX7Y.js → dist-DAnSqY1s.js} +2 -2
  254. package/dist/docs-BV9SC67g.js +2 -0
  255. package/dist/{docs-CYMICGEv.js → docs-b2mAKC8Z.js} +1 -1
  256. package/dist/drive-CU2HOCfR.js +1 -0
  257. package/dist/{enable-BmvNVDHO.js → enable-Cfeki-ne.js} +1 -1
  258. package/dist/env-DSddo-fz.js +1 -0
  259. package/dist/exec-DcWxZar6.js +3 -0
  260. package/dist/executor-LkokKTTd.js +11 -0
  261. package/dist/flow/builtin/review.d.ts +2 -2
  262. package/dist/flow/builtin/review.js +7 -14
  263. package/dist/flow/index.d.ts +1 -1
  264. package/dist/flow/index.js +1 -1
  265. package/dist/flow-BQcdyrVK.js +1 -0
  266. package/dist/history-D_A5odLI.js +8 -0
  267. package/dist/http-CXaW1e7x.js +1 -0
  268. package/dist/init-DU_S43NG.js +1 -0
  269. package/dist/integrations-DPxWtNnS.js +2 -0
  270. package/dist/integrations-Dwvxl7i2.js +1 -0
  271. package/dist/lib/broker.js +2 -2
  272. package/dist/{list-uS9iEE0F.js → list-7yd9K7d8.js} +1 -1
  273. package/dist/list-BJ0j5eP9.js +4 -0
  274. package/dist/list-Boaz5b5n.js +2 -0
  275. package/dist/{list-D2eSpGoo.js → list-CIS-GYO1.js} +1 -1
  276. package/dist/list-CR0_Emod2.js +4 -0
  277. package/dist/list-CnHZriYt.js +3 -0
  278. package/dist/list-_EH6c041.js +1 -0
  279. package/dist/list-i2r3Nlyz.js +1 -0
  280. package/dist/load-C-GZnuok.js +2 -0
  281. package/dist/local-Fs-dx_dP.js +5 -0
  282. package/dist/log-view-CL3_S0IQ.js +3 -0
  283. package/dist/{login-CCA0uLsW.js → login-CzD2EMD_.js} +1 -1
  284. package/dist/login-DISw6--d.js +1 -0
  285. package/dist/{logout-Cv0cm9F8.js → logout-DMnc5yri.js} +1 -1
  286. package/dist/{maintenance-B_79IJ_E.js → maintenance-BVDuG9Hg.js} +1 -1
  287. package/dist/match-BfjPZ7gJ.js +1 -0
  288. package/dist/mcp-B-hy3eM-.js +11 -0
  289. package/dist/mcp-CbN-QcpF.js +1 -0
  290. package/dist/mcp-server-DQqSgD3P.js +1 -0
  291. package/dist/model-Ckyoyji3.js +1 -0
  292. package/dist/models-VaiIYlOW.js +1 -0
  293. package/dist/prompt-DQyPCLUo.js +8 -0
  294. package/dist/prompts-CEf7z4i_.js +77 -0
  295. package/dist/push-BNomfHJ3.js +1 -0
  296. package/dist/reconnect-Bd_jna1M.js +1 -0
  297. package/dist/refresh-D-broYEx.js +1 -0
  298. package/dist/remote-f-uny3XZ.js +3 -0
  299. package/dist/remove-CCYHc1FN.js +1 -0
  300. package/dist/remove-DMTz_c25.js +1 -0
  301. package/dist/remove-DdcQ-6by.js +1 -0
  302. package/dist/remove-VtavIuGm.js +1 -0
  303. package/dist/rename-CKMyelWN.js +1 -0
  304. package/dist/{result-70jciKDJ.js → result-CH3_tVXO.js} +2 -2
  305. package/dist/result-DvOqIwhh.js +18 -0
  306. package/dist/{resume-xqhwHn3l.js → resume-6j3RUpqa.js} +2 -2
  307. package/dist/{review-vlPAshsb.js → review-B4ETH5ki.js} +2 -2
  308. package/dist/{index-CVjkwYeS.d.ts → review-DDYD3Yvq.d.ts} +173 -74
  309. package/dist/{rotate-key-CfeZ6Rg7.js → rotate-key-Byk_wI73.js} +1 -1
  310. package/dist/run-DKJW7qwy.js +2 -0
  311. package/dist/run-DkYzyUnp.js +5 -0
  312. package/dist/run-LCE1XiyU.js +2 -0
  313. package/dist/runner-CxtzTgVq.js +1 -0
  314. package/dist/runner-Dnu1Vx_i.js +1 -0
  315. package/dist/runner.json +1 -0
  316. package/dist/runner.tgz +0 -0
  317. package/dist/runners-vsoGeyuc.js +36 -0
  318. package/dist/schema-Brm7WIKd.js +8 -0
  319. package/dist/schema.d.ts +2 -2
  320. package/dist/schema.js +1 -1
  321. package/dist/{sdk-4Vjo5Q6R.d.ts → sdk-CKTCrtGe.d.ts} +649 -365
  322. package/dist/sdk.d.ts +4 -5
  323. package/dist/sdk.js +1 -1
  324. package/dist/serve-C1zag2nr.js +1 -0
  325. package/dist/{serve-BoTW4P2G.js → serve-C6tsUF0D.js} +2 -2
  326. package/dist/serve-CCxSxXgv.js +1 -0
  327. package/dist/serve-D8J-sEqm.js +12 -0
  328. package/dist/{server-B1x8gx33.js → server-B4SRYM2L.js} +1 -1
  329. package/dist/setup-host-EaP4GPKB.js +6 -0
  330. package/dist/show-CjUG_aIp.js +1 -0
  331. package/dist/show-xdsqD6de.js +1 -0
  332. package/dist/slack-Kpj-G9FE.js +5 -0
  333. package/dist/{status-ZN0HYtLa.js → status-BxV_ITeF.js} +1 -1
  334. package/dist/steer-DZ3nkHfC.js +4 -0
  335. package/dist/{stop-DTzpTbg1.js → stop-DGTUYxd6.js} +2 -2
  336. package/dist/stop-qDw_DjOB.js +1 -0
  337. package/dist/task-C506SkPR.js +1 -0
  338. package/dist/task-CQmx_2SI.js +7 -0
  339. package/dist/task-Ls_-kcSx.js +1 -0
  340. package/dist/test-DF_qVK6S.js +1 -0
  341. package/dist/tools-S3eRQOVm.js +1 -0
  342. package/dist/{types-BktBEKW5.d.ts → types-8zO5Tc9c.d.ts} +86 -21
  343. package/dist/{types-B42Oh0zF.js → types-D_xnfP7m.js} +1 -1
  344. package/dist/unalias-CklkAN1B.js +1 -0
  345. package/dist/update-CZaFjwOJ.js +2 -0
  346. package/dist/upgrade-CUhFmPhl.js +2 -0
  347. package/dist/usage-DTAlb2rC.js +1 -0
  348. package/dist/views-LmbLfqpu.js +5 -0
  349. package/dist/watch-CJruitc6.js +5 -0
  350. package/dist/watch-p0j69fVA.js +9 -0
  351. package/dist/wire-DshFMRsS.js +1 -0
  352. package/dist/worker-BHXjDzRp.js +1 -0
  353. package/dist/worker-nyRZuq4g.js +2 -0
  354. package/dist/{workflow-CcC-xbfp.js → workflow-CJJUiSfv.js} +1 -1
  355. package/docs/agents/coder.md +7 -7
  356. package/docs/agents/index.md +17 -19
  357. package/docs/agents/prompt.md +220 -0
  358. package/docs/cli.md +2 -2
  359. package/docs/config.md +5 -3
  360. package/docs/mcp.md +1 -1
  361. package/docs/review.md +1 -1
  362. package/docs/sdk.md +1 -1
  363. package/docs/self-host.md +7 -9
  364. package/package.json +2 -1
  365. package/dist/actions-5TDwmn_z.js +0 -20
  366. package/dist/adapter-sKt1J1Cm.js +0 -1
  367. package/dist/add-BDBCRqKN.js +0 -1
  368. package/dist/add-Df1Ezy3y.js +0 -2
  369. package/dist/add-yIlNqPSu.js +0 -1
  370. package/dist/agent-C1HI4JlI.js +0 -3
  371. package/dist/alias-DghaKDbh.js +0 -2
  372. package/dist/approvals-BziBKWgU.js +0 -2
  373. package/dist/approve-DKrTnZfk.js +0 -2
  374. package/dist/apps-aj_JtpAm.js +0 -242
  375. package/dist/archive-DxWYJ7Zi.js +0 -4
  376. package/dist/archive-sweep-CqTQUafj.js +0 -1
  377. package/dist/args-CxsMr9Un.js +0 -1
  378. package/dist/ask-B_si1yM4.js +0 -4
  379. package/dist/auth-B3RiDPMI.js +0 -1
  380. package/dist/auth-Cx4ePjWG.js +0 -1
  381. package/dist/chat-Bbzlea60.js +0 -1
  382. package/dist/chat-DLolwsuq.js +0 -13
  383. package/dist/chat-bridge-CvspGKBc.js +0 -2
  384. package/dist/cli-D5hyqGq0.js +0 -9
  385. package/dist/config-BdeKsCPh.js +0 -3
  386. package/dist/config-D2FxHWwi.js +0 -14
  387. package/dist/connection-wq0CJZKh.js +0 -1
  388. package/dist/create-8_XbAnHs.js +0 -1
  389. package/dist/credentials-BOAy2_-6.js +0 -1
  390. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/sign-out.1ee9b7f1343376e9.js +0 -13
  391. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/agent-menu.79e38c6e4139b9de.js +0 -12
  392. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/loading.2fa9e225a5c42496.js +0 -29
  393. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/loading.38715a27e2d25ebd.js +0 -30
  394. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/credentials-list.41ce6eb622300bb3.js +0 -540
  395. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/range-bar.884e58b044238e98.js +0 -60
  396. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/zone.dbc84f981415d8f7.js +0 -10
  397. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/heads.20414ddcb2d08bcd.js +0 -51
  398. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/loading-card.df3717186948c93f.js +0 -64
  399. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/badge.3d9163a51e6f6d6e.js +0 -43
  400. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/confirm.fe133a074c2743af.js +0 -26
  401. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/select.32a95ad31c0436ad.css.pnext-asset.js +0 -0
  402. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/toolbar.40284b41c03c5dcb.css.pnext-asset.js +0 -0
  403. package/dist/dash/standalone/static/assets/chunks/action-df9907c7a10bf826.js +0 -1
  404. package/dist/dash/standalone/static/assets/chunks/agent-pills-106a518bef96408e.js +0 -1
  405. package/dist/dash/standalone/static/assets/chunks/agent-settings-form-d1aa82950d30d829.js +0 -1
  406. package/dist/dash/standalone/static/assets/chunks/agent-toggle-44667051d8be2040.js +0 -1
  407. package/dist/dash/standalone/static/assets/chunks/agents-grid-69fabb48962a282a.js +0 -1
  408. package/dist/dash/standalone/static/assets/chunks/back-e02e04679467c05b.js +0 -1
  409. package/dist/dash/standalone/static/assets/chunks/badge-b302b4d707908367.js +0 -1
  410. package/dist/dash/standalone/static/assets/chunks/card-31a2cdcfeda5254f.js +0 -1
  411. package/dist/dash/standalone/static/assets/chunks/combo-fd495e7fa91b69ed.js +0 -1
  412. package/dist/dash/standalone/static/assets/chunks/composer-10f0a825a16e1fc7.js +0 -1
  413. package/dist/dash/standalone/static/assets/chunks/composer-8c1198d45f700738.js +0 -1
  414. package/dist/dash/standalone/static/assets/chunks/confirm-7b6112578a1c4877.js +0 -1
  415. package/dist/dash/standalone/static/assets/chunks/connect-apps-bd95a6cbdc89a438.js +0 -1
  416. package/dist/dash/standalone/static/assets/chunks/connections-list-5bbf7321d9bfd08f.js +0 -1
  417. package/dist/dash/standalone/static/assets/chunks/copy-f057128db8aefd1b.js +0 -1
  418. package/dist/dash/standalone/static/assets/chunks/create-link-6f6e6b87e46f67c8.js +0 -1
  419. package/dist/dash/standalone/static/assets/chunks/credentials-list-8fc72c0331289ac6.js +0 -2
  420. package/dist/dash/standalone/static/assets/chunks/custom-range-d06cd17fcc05183d.js +0 -1
  421. package/dist/dash/standalone/static/assets/chunks/defaults-dcc0eccad4e8585b.js +0 -1
  422. package/dist/dash/standalone/static/assets/chunks/editor-b5a9659f85edea17.js +0 -7
  423. package/dist/dash/standalone/static/assets/chunks/engines-list-c10ca5e7410b790f.js +0 -1
  424. package/dist/dash/standalone/static/assets/chunks/filter-966a9aae3b0b6d77.js +0 -1
  425. package/dist/dash/standalone/static/assets/chunks/format-b19b8eec331414f4.js +0 -1
  426. package/dist/dash/standalone/static/assets/chunks/instructions-c9e1097c4e1b352a.js +0 -2
  427. package/dist/dash/standalone/static/assets/chunks/instructions-e969d4439f6676c9.js +0 -1
  428. package/dist/dash/standalone/static/assets/chunks/list-5db1dd782965a5fc.js +0 -1
  429. package/dist/dash/standalone/static/assets/chunks/model-options-3a57918eaa4a2a82.js +0 -1
  430. package/dist/dash/standalone/static/assets/chunks/models-list-b6237067c9a39f97.js +0 -1
  431. package/dist/dash/standalone/static/assets/chunks/outcome-dialog-c4f75d37645035b8.js +0 -1
  432. package/dist/dash/standalone/static/assets/chunks/paged-c44eccacea100110.js +0 -1
  433. package/dist/dash/standalone/static/assets/chunks/platform-actions-6004e96f54953935.js +0 -1
  434. package/dist/dash/standalone/static/assets/chunks/platform-actions-d8dd016336a3d768.js +0 -1
  435. package/dist/dash/standalone/static/assets/chunks/runners-list-0b288b2b79de8968.js +0 -1
  436. package/dist/dash/standalone/static/assets/chunks/secrets-list-64650cb827e93322.js +0 -1
  437. package/dist/dash/standalone/static/assets/chunks/segmented-5423dcc766dc7abc.js +0 -1
  438. package/dist/dash/standalone/static/assets/chunks/select-53722330d2e3f1c6.js +0 -1
  439. package/dist/dash/standalone/static/assets/chunks/shared-init-35a0e9007eeca198.js +0 -2
  440. package/dist/dash/standalone/static/assets/chunks/shared-init-37175329f2865f15-2.js +0 -1
  441. package/dist/dash/standalone/static/assets/chunks/shared-init-a7f2e71a718bc285.js +0 -5
  442. package/dist/dash/standalone/static/assets/chunks/shared-init-b8184e0e554d5aa4.js +0 -1
  443. package/dist/dash/standalone/static/assets/chunks/shared-init-e0aa7cbf9ac680b5.js +0 -1
  444. package/dist/dash/standalone/static/assets/chunks/side-toggle-34ee3bbe5ac64a60.js +0 -1
  445. package/dist/dash/standalone/static/assets/chunks/tail-7dece33a58f72850.js +0 -1
  446. package/dist/dash/standalone/static/assets/chunks/task-6ae2bb4f1b384140.js +0 -1
  447. package/dist/dash/standalone/static/assets/chunks/task-actions-b36dc5fcd9b2b2c5.js +0 -1
  448. package/dist/dash/standalone/static/assets/chunks/task-view-1696d47594c6dbfa.js +0 -5
  449. package/dist/dash/standalone/static/assets/chunks/tasks-list-7c70210e7121b95a.js +0 -1
  450. package/dist/dash/standalone/static/assets/chunks/versions-list-26475f0d05e2d434.js +0 -1
  451. package/dist/dash/standalone/static/assets/connect-b73a327c12fa5c63.css +0 -1
  452. package/dist/dash/standalone/static/assets/create-param-id-d679f8832eafd7e8.css +0 -1
  453. package/dist/dash/standalone/static/assets/dash-param-org-14abc8f62d04dc4c.css +0 -1
  454. package/dist/dash/standalone/static/assets/dash-param-org-account-aba6d7e7f99c97cb.css +0 -1
  455. package/dist/dash/standalone/static/assets/dash-param-org-agents-570ddee6de22492e.css +0 -1
  456. package/dist/dash/standalone/static/assets/dash-param-org-agents-new-9fa9b19084b3cd2f.css +0 -1
  457. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-0e7e591f05cbddf5.css +0 -1
  458. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-f16fb90321952887.css +0 -1
  459. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-5cf30b084239d643.css +0 -1
  460. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-1c84b31df8c64b88.css +0 -1
  461. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-7da323ffa5be29aa.css +0 -1
  462. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-4900a42b805e90cb.css +0 -1
  463. package/dist/dash/standalone/static/assets/dash-param-org-operator-2f4e497a01a78f29.css +0 -1
  464. package/dist/dash/standalone/static/assets/dash-param-org-settings-0ea983332482dbc6.css +0 -1
  465. package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-e1c1f81610bb925f.css +0 -1
  466. package/dist/dash/standalone/static/assets/dash-param-org-setup-6824fce3862dbb43.css +0 -1
  467. package/dist/dash/standalone/static/assets/dash-param-org-tasks-f914c28afa705d66.css +0 -1
  468. package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-65c8bb06f94ff868.css +0 -1
  469. package/dist/dash/standalone/static/assets/dash-param-org-usage-5dbb2aa369c46eed.css +0 -1
  470. package/dist/dash/standalone/static/assets/global-eecd2b20d5e4b08d.css +0 -1
  471. package/dist/dash/standalone/static/assets/login-ca4c0cd7d65b3269.css +0 -1
  472. package/dist/dash/standalone/static/assets/pnext-client-0bcd0cbf2549bdf2.js +0 -1
  473. package/dist/dash/standalone/static/assets/pnext-client-22414b6c8a870c92.js +0 -1
  474. package/dist/dash/standalone/static/assets/pnext-client-2a02ab5209cae1ea.js +0 -1
  475. package/dist/dash/standalone/static/assets/pnext-client-46d843cfdabf3e71.js +0 -1
  476. package/dist/dash/standalone/static/assets/pnext-client-5a50a2a4da7e870e.js +0 -1
  477. package/dist/dash/standalone/static/assets/pnext-client-5b6ea850cead1482.js +0 -1
  478. package/dist/dash/standalone/static/assets/pnext-client-5b94497ba23568a8.js +0 -1
  479. package/dist/dash/standalone/static/assets/pnext-client-6686f1714e481293.js +0 -1
  480. package/dist/dash/standalone/static/assets/pnext-client-67155accb837a12a.js +0 -1
  481. package/dist/dash/standalone/static/assets/pnext-client-7db5d810ee904f4b.js +0 -1
  482. package/dist/dash/standalone/static/assets/pnext-client-8d779b89650f4b7a.js +0 -1
  483. package/dist/dash/standalone/static/assets/pnext-client-9d7a7a634c9be6ac.js +0 -1
  484. package/dist/dash/standalone/static/assets/pnext-client-9edebc462604c881.js +0 -1
  485. package/dist/dash/standalone/static/assets/pnext-client-aa5a424e38b430a5.js +0 -1
  486. package/dist/dash/standalone/static/assets/pnext-client-b983cd476c808b15.js +0 -1
  487. package/dist/dash/standalone/static/assets/pnext-client-bdf1cb75a3de35ea.js +0 -1
  488. package/dist/dash/standalone/static/assets/pnext-client-c5177dd613b27b84.js +0 -1
  489. package/dist/dash/standalone/static/assets/pnext-client-d998d7077d159f68.js +0 -1
  490. package/dist/dash/standalone/static/assets/pnext-client-f01c6d0c6beb582b.js +0 -1
  491. package/dist/dash/standalone/static/assets/pnext-client-fd4c0f3ecbcc461c.js +0 -1
  492. package/dist/default-CNhVH61w.js +0 -1
  493. package/dist/default-dQC33jLt.js +0 -1
  494. package/dist/delete-BDOtztW_.js +0 -2
  495. package/dist/disable-VvU6oDku.js +0 -1
  496. package/dist/discover-CBP4Uw0N.js +0 -1
  497. package/dist/dispatch-D3Dqxijf.js +0 -8
  498. package/dist/docs-3SW1O9iS.js +0 -2
  499. package/dist/env-C_DoQYl5.js +0 -1
  500. package/dist/exec-BsXFIdTl.js +0 -11
  501. package/dist/executor-5j-Ewzzb.js +0 -11
  502. package/dist/flow-4Rr-2NUz.js +0 -1
  503. package/dist/http-BYMXT_p6.js +0 -1
  504. package/dist/init-kZdO2PF5.js +0 -1
  505. package/dist/integrations-35T26qmP.js +0 -1
  506. package/dist/integrations-D3OgJk6Y.js +0 -1
  507. package/dist/list-CLqNS8_q.js +0 -4
  508. package/dist/list-CbN2giPy.js +0 -1
  509. package/dist/list-ChFFjT_a.js +0 -2
  510. package/dist/list-D0NK3Iqu.js +0 -3
  511. package/dist/list-D3LCULQt.js +0 -1
  512. package/dist/list-P2Ztf1bQ.js +0 -4
  513. package/dist/load-CRmQB1LD.js +0 -2
  514. package/dist/local-XNsjb-UM.js +0 -1
  515. package/dist/log-view-DB4nXHXO.js +0 -3
  516. package/dist/login-BoOBMH4y.js +0 -1
  517. package/dist/match-Kt3vFTl1.js +0 -1
  518. package/dist/mcp-C13n4A3y.js +0 -12
  519. package/dist/mcp-YhyTUMIM.js +0 -11
  520. package/dist/mcp-server-DGzme0YX.js +0 -1
  521. package/dist/model-0sxp5GdI.js +0 -1
  522. package/dist/models-CdvmuaLv.js +0 -1
  523. package/dist/prompt-C--TI1qn.js +0 -8
  524. package/dist/push-IpLeKMp-.js +0 -1
  525. package/dist/reconnect-CR3RaXX0.js +0 -1
  526. package/dist/refresh-D0YjtXBD.js +0 -1
  527. package/dist/remote-oQs6My_3.js +0 -1
  528. package/dist/remove-B01SXfEq.js +0 -1
  529. package/dist/remove-C9eahMDh.js +0 -1
  530. package/dist/remove-D1UOd48O.js +0 -1
  531. package/dist/remove-D65xtbw5.js +0 -1
  532. package/dist/rename-Qwr_XDxD.js +0 -1
  533. package/dist/result-DXL9N9Ip.js +0 -18
  534. package/dist/review-D-U_2KyT.d.ts +0 -157
  535. package/dist/run-CoTg7SkY.js +0 -2
  536. package/dist/run-CvdayZfK.js +0 -5
  537. package/dist/run-VOuS-hHe.js +0 -2
  538. package/dist/runner-D0TLZrrO.js +0 -1
  539. package/dist/runner-DME7ohjt.js +0 -1
  540. package/dist/runners-UNKPlmYE.js +0 -36
  541. package/dist/schema-BSlHRFSP.js +0 -8
  542. package/dist/serve-BQsv2KZs.js +0 -1
  543. package/dist/serve-ByWMT5Gm.js +0 -1
  544. package/dist/serve-HNXk3HMY.js +0 -9
  545. package/dist/setup-host-DExG-bWZ.js +0 -6
  546. package/dist/show-BeacgzZ0.js +0 -1
  547. package/dist/show-D3OC0c35.js +0 -1
  548. package/dist/slack-C_RlVDz7.js +0 -3
  549. package/dist/steer-DwSC8AO4.js +0 -4
  550. package/dist/stop-CEEiI1RA.js +0 -1
  551. package/dist/task-4gw9OZun.js +0 -1
  552. package/dist/task-CB-j4EO8.js +0 -5
  553. package/dist/task-IoBYe7ok.js +0 -1
  554. package/dist/test-BnGF24Hg.js +0 -1
  555. package/dist/tools-ar-D3jOh.js +0 -1
  556. package/dist/unalias-9AwJnbpE.js +0 -1
  557. package/dist/update-DoJEPBvm.js +0 -2
  558. package/dist/upgrade-DRPBwDYe.js +0 -2
  559. package/dist/usage-CItBLFFE.js +0 -1
  560. package/dist/views-BhsnL0nr.js +0 -5
  561. package/dist/watch-BMuVZorc.js +0 -9
  562. package/dist/watch-Bl_pCGfq.js +0 -5
  563. package/dist/wire-B5rc5Av6.js +0 -1
  564. package/dist/worker-BFGETvid.js +0 -1
  565. package/dist/worker-BiJ7jiOr.js +0 -9
  566. /package/dist/dash/standalone/server/modules-server-server-react-server/src/core/{errors.5954bd9bd05e8230.js → errors.0a735590a5412ea6.js} +0 -0
  567. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{page.76589c15dee1732d.css.pnext-asset.js → page.cf7460a024706f75.css.pnext-asset.js} +0 -0
  568. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{page.3ffef848a0b0dda3.css.pnext-asset.js → page.c811938ae8a8f1df.css.pnext-asset.js} +0 -0
  569. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{agent-settings-form.2d19ea3a4d380e0d.css.pnext-asset.js → agent-settings-form.ca926c58d15044aa.css.pnext-asset.js} +0 -0
  570. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{hero.13019680f38b0630.css.pnext-asset.js → hero.1bef5dca89b5942c.css.pnext-asset.js} +0 -0
  571. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{editor.d2e3bc878dcb47da.css.pnext-asset.js → editor.c496247a81ed832c.css.pnext-asset.js} +0 -0
  572. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{layout.3827c440c6421a06.css.pnext-asset.js → layout.a4efa8d807fe5416.css.pnext-asset.js} +0 -0
  573. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{operator/page.9002a449f872a10e.css.pnext-asset.js → settings/[tab]/connections-list.46786fe36b121a43.css.pnext-asset.js} +0 -0
  574. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{connections-list.f742847e4887f072.css.pnext-asset.js → credentials-list.f7c27f170ec1e868.css.pnext-asset.js} +0 -0
  575. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials-list.1236d6680ec02696.css.pnext-asset.js → list.8cbee173a5aff98d.css.pnext-asset.js} +0 -0
  576. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{list.e0ce46919b75ef76.css.pnext-asset.js → runners-list.53c7ea80b6fb734c.css.pnext-asset.js} +0 -0
  577. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{settings/[tab]/runners-list.a835c9a264cf8903.css.pnext-asset.js → tasks/[id]/task-view.57990cfd2bdf5c11.css.pnext-asset.js} +0 -0
  578. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{[id]/task-view.38b1b7ef3976ba71.css.pnext-asset.js → composer.5b8687662e1629fa.css.pnext-asset.js} +0 -0
  579. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer.360b393e5938c60b.css.pnext-asset.js → list/tasks-list.abbbc9ace4d866e5.css.pnext-asset.js} +0 -0
  580. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{tasks/list/tasks-list.2282a7cef8b15bd8.css.pnext-asset.js → usage/range-bar.476c059123ef6c23.css.pnext-asset.js} +0 -0
  581. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{dash/[org]/usage/range-bar.1da88d087e3b5302.css.pnext-asset.js → globals.c8fd2b8b01e7077b.css.pnext-asset.js} +0 -0
  582. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{dash/[org]/usage/usage.775df2f43187c487.css.pnext-asset.js → login/page.586a41a7ab9988e0.css.pnext-asset.js} +0 -0
  583. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{globals.76731787d2a1aa3b.css.pnext-asset.js → responsive.ebc5f7d77b4b86a0.css.pnext-asset.js} +0 -0
  584. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{app/login/page.57e5198339e9ca28.css.pnext-asset.js → comps/frame/drawer.0b0220d1edabce29.css.pnext-asset.js} +0 -0
  585. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{app/responsive.82549d958fae8f00.css.pnext-asset.js → comps/frame/task-toasts.d13d9f628e530552.css.pnext-asset.js} +0 -0
  586. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/{frame/@/comps/ui/toast.a4c3e977997216cf.css.pnext-asset.js → ui/button.d7f4433f4e7faa80.css.pnext-asset.js} +0 -0
  587. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/{frame/drawer.e8201d78154045bc.css.pnext-asset.js → ui/card.f80288cc42f9bcae.css.pnext-asset.js} +0 -0
  588. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{card.15f7435f202831c3.css.pnext-asset.js → copy.fb3240de6c9479cd.css.pnext-asset.js} +0 -0
  589. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{confirm.d18497f656702a16.css.pnext-asset.js → filter.b53f21acc3e2cfef.css.pnext-asset.js} +0 -0
  590. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{copy.991f1efa061e71d6.css.pnext-asset.js → menu.25b184f68cba7b46.css.pnext-asset.js} +0 -0
  591. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{filter.e20fbd035f24ed01.css.pnext-asset.js → select.419208bb34700af2.css.pnext-asset.js} +0 -0
  592. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{menu.1d42c8d0493e2221.css.pnext-asset.js → toolbar.19e1ce5224a23acf.css.pnext-asset.js} +0 -0
@@ -1,3 +0,0 @@
1
- import{qi as e}from"./core-DwsAMCnL.js";var t=e({LogView:()=>o,isApproval:()=>n,logEntry:()=>a,stripCwd:()=>i});const n=e=>e.includes(`approval`)||e===`sidecar-decision`||e===`auto-review`,r=/\x1b\[[0-9;?]*[ -/]*[@-~]|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g;function i(e,t){return t?e.split(`${t}/`).join(``).split(t).join(`.`):e}function a(e){try{let t=JSON.parse(e);if(t&&typeof t==`object`&&!Array.isArray(t)){let e=`kind`in t&&typeof t.kind==`string`?t.kind:void 0,n=`message`in t&&typeof t.message==`string`?t.message:void 0;if(e!==void 0||n!==void 0)return{...t,kind:e,message:n,at:`at`in t&&typeof t.at==`string`?t.at:void 0}}}catch{}}var o=class{cwd;opts;prevKind=null;lastAssistant=``;lastToolText=``;openCalls=[];callIds=new WeakMap;approval;approvals=new Map;lastUsageTotal=0;constructor(e,t={}){this.cwd=e,this.opts=t}get lastAssistantMessage(){return this.lastAssistant}reduce(e){let t=e.entry,r=t?String(t.kind??`status`):`line`,a=t?r===`tool-result`?this.close(e,t):n(r)?this.decide(e,t,r):void 0:void 0;if(a)return this.prevKind=r,[a];let o={seq:e.seq,at:e.at,kind:`status`,title:``,sourceKind:r,separated:!1,tone:`muted`};if(!t)o.kind=e.level===`err`?`error`:e.level===`sys`?`status`:`line`,o.title=i(e.line,this.cwd),e.level===`err`&&(o.tone=`error`);else if(r===`usage`){let e=t.tokens;if(!e)return[];let n=this.lastUsageTotal>0,r=e.total-this.lastUsageTotal;if(!n||r<Math.max(2e4,this.lastUsageTotal*.2))return this.lastUsageTotal=Math.max(this.lastUsageTotal,e.total),[];this.lastUsageTotal=e.total,o.kind=`usage`,o.tokens=e,o.title=`ctx ${c(e.input+e.cachedInput)} · out ${c(e.output)}`}else if(r===`approval-decision`&&t.decision===`escalate`||r===`approval-escalated`){let e=i(t.summary?String(t.summary):``,this.cwd),n=/^(?:run command: |Run command\. |Apply file changes\. |\w+: )?([\s\S]*)$/.exec(e)[1],a=String(t.method??``),s=a&&!a.includes(`/`)?a:this.openCalls.at(-1)?.tool,c=n.startsWith(`{`)?``:n.split(/\s+/)[0],l=i(t.reason?String(t.reason):``,this.cwd);o.kind=`approval`,o.title=[`Approval`,[s,c].filter(Boolean).join(` `)].filter(Boolean).join(` · `),o.detail=[n,l&&`Policy · ${l}`].filter(Boolean).join(`
2
- `),o.state=r===`approval-escalated`?`waiting`:`escalated`,r===`approval-escalated`?this.approvals.set(String(t.approvalId),o):this.approval=o}else if(n(r)&&(t.decision||!t.message)){o.kind=`approval`;let e=r===`sidecar-decision`?`sidecar`:r===`auto-review`?`auto-review`:`approval`,n=t.riskLevel?`(${String(t.riskLevel)} risk)`:``,a=i(t.summary?String(t.summary):``,this.cwd),s=a.slice(a.indexOf(`: `)+2),c=a&&s&&this.lastToolText.includes(s)?``:a,l=c?``:String(t.method??``);o.title=`${[e,String(t.decision??``),n,l].filter(Boolean).join(` `)}${c?` · ${c}`:``}`,o.detail=i(t.reason?String(t.reason):``,this.cwd)}else{let e=t.message?String(t.message):r===`tool-result`?`(no output)`:String(t.tool||t.kind||``);if(!e&&!(r===`tool-result`&&(t.exitCode!=null||t.isError)))return[];o.title=i(e,this.cwd),r===`assistant`?(o.kind=`assistant`,o.tone=void 0,this.lastAssistant=o.title):r===`error`||r===`steer`?(o.kind=r,o.tone=r===`error`?`error`:`warning`):r===`reasoning`?(o.kind=`reasoning`,o.durationMs=typeof t.durationMs==`number`?t.durationMs:0):r===`tool`?(o.kind=`tool`,t.tool&&(o.tool=String(t.tool)),this.lastToolText=o.title,t.callId&&this.callIds.set(o,String(t.callId)),this.openCalls.push(o)):r===`tool-result`&&(o.kind=`tool-result`,o.title=this.output(e),o.exitCode=typeof t.exitCode==`number`?t.exitCode:void 0,o.tone=o.exitCode!==void 0&&o.exitCode!==0||t.isError===!0?`error`:`muted`,o.durationMs=typeof t.durationMs==`number`?t.durationMs:0,t.tool&&(o.tool=String(t.tool)))}return this.prevKind!==null&&(o.separated=[`assistant`,`error`,`steer`].includes(r)||r===`reasoning`&&this.prevKind!==`reasoning`||r===`tool`&&[`assistant`,`reasoning`].includes(this.prevKind)),this.prevKind=r,[o]}close(e,t){let n=t.tool?String(t.tool):void 0,r=t.callId?this.openCalls.findIndex(e=>this.callIds.get(e)===String(t.callId)):-1,a=t.callId?r:n?this.openCalls.findIndex(e=>e.tool===n):this.openCalls.length-1;if(a<0)return;let[o]=this.openCalls.splice(a,1),s=typeof t.exitCode==`number`?t.exitCode:void 0,c=typeof t.durationMs==`number`?t.durationMs:e.at-o.at||0;return{...o,title:t.callMessage?i(String(t.callMessage),this.cwd):o.title,result:{ok:!s&&t.isError!==!0,exitCode:s,durationMs:Math.max(0,c),detail:this.output(t.message?String(t.message):``)}}}decide(e,t,n){let r=String(t.approvalId??``),a=t.decision===`accept`;if(n===`sidecar-decision`&&this.approval){let n=i(t.reason?String(t.reason):``,this.cwd),r={...this.approval,detail:[this.approval.detail,n&&`Sidecar · ${n}`].filter(Boolean).join(`
3
- `)};return t.decision===`escalate`?this.approval=r:(this.approval=void 0,s(r,e,`${a?`accepted`:`denied`} by sidecar`,a))}if(n===`approval-escalated`&&this.approval){let e={...this.approval,state:`waiting`};return this.approval=void 0,this.approvals.set(r,e),e}let o=this.approvals.get(r);if(!(!o||n!==`approval-answered`&&n!==`approval-timeout`))return this.approvals.delete(r),n===`approval-timeout`?s(o,e,`timed out`,!1):s(o,e,`${a?`accepted`:`denied`} by reviewer`,a)}output(e){return i(this.opts.keepAnsi?e:e.replace(r,``),this.cwd)}};function s(e,t,n,r){return{...e,state:n,result:{ok:r,durationMs:Math.max(0,t.at-e.at||0),detail:``}}}function c(e){return e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(+(e<1e4))}k`:`${(e/1e6).toFixed(1)}M`}export{t as n,a as t};
@@ -1 +0,0 @@
1
- import{i as e,t}from"./cli-D5hyqGq0.js";import{p as n,r,s as i}from"./output-BKeyLbvt.js";import{n as a,o}from"./args-CxsMr9Un.js";import s from"node:process";import c from"node:readline/promises";function l(e){e.url&&s.stderr.write(`Open ${n.cyan(e.url)}\n`),e.code&&s.stderr.write(`Enter the code ${n.bold(e.code)}\n`)}async function u(){let e=c.createInterface({input:s.stdin,output:s.stderr}),t=(await e.question(`Paste the code from the sign-in page `)).trim();return e.close(),t}function d(e){if(e.state===`failed`)return void s.stderr.write(`${r.red(e.error??`Sign-in failed.`)}\n\n${i([`Try again`],r)}\n`);s.stdout.write(`Signed in. Personal credential ${n.bold(e.label??e.engine)} is your ${e.engine} default.\n`)}const f=e({name:`credentials login`,globalFlags:{cwd:!1},help:{usage:`coder credentials login <claude|codex> [--server [url]] [--json]`,summary:`Runs the official claude or codex sign-in on the server's runner, prints the sign-in link or device code, and waits. Claude asks you to paste the code the sign-in page shows. The result is your personal default for that engine. Needs CLAUDE_SUBSCRIPTIONS=1 or CODEX_SUBSCRIPTIONS=1 on the server.`,flags:[t]},options:{json:a,server:o,yes:a},args:1,run:async({options:e,args:[t]})=>{let{loginCredential:n}=await import(`./remote-oQs6My_3.js`).then(e=>e.a);return n(t,{...e,onStart:e=>s.once(`SIGINT`,()=>void e().finally(()=>s.exit(130))),onOpen:l,code:u})},print:d,exit:(e,{options:t})=>!t.json&&e.state===`failed`?1:void 0});export{f as commandCredentialsLogin};
@@ -1 +0,0 @@
1
- import{d as e,h as t,m as n,u as r}from"./load-CRmQB1LD.js";import{t as i}from"./integrations-D3OgJk6Y.js";function a(e){let n={};for(let r of Object.keys(e.definition.integrations)){let a=i[r];a&&(n[r]=t(e,r,a))}return n}function o(t,o){if(!i[t.integration]||!n(o,t.integration).includes(t.type))return;let s=r(o.definition.integrations[t.integration],t.type);if(!s||s.match!==void 0&&!new RegExp(s.match).test(t.text))return;let c=o.usage?.permissions??o.definition.permissions;return{flow:s.flow??`default`,tools:a(o),...s.actAs?{actAs:s.actAs}:{},...c?{permissions:e(c,s.permissions)}:s.permissions?{permissions:s.permissions}:{}}}function s(e,t){return t.flatMap(t=>{let n=o(e,t);return n?[{agent:t,...n}]:[]})}export{s as n,o as t};
@@ -1,12 +0,0 @@
1
- import{Ct as e,En as t,Et as n,Yt as r,a as i,ct as a,q as o,wn as s,y as c}from"./config-D2FxHWwi.js";import{_ as l,v as u,y as d}from"./dispatch-D3Dqxijf.js";import{i as f}from"./cli-D5hyqGq0.js";import{s as p}from"./args-CxsMr9Un.js";import{n as m}from"./mcp-server-DGzme0YX.js";import h from"node:path";import g from"node:fs";import{spawn as _}from"node:child_process";import{randomUUID as v}from"node:crypto";function y(e){return h.join(e,`sidecar.json`)}function b(e){return s(y(e))??{sessionId:null,declineStreak:0}}async function x(e){let t=h.join(e,`sidecar.lock`),n=Date.now()+12e4;for(;;)try{return g.mkdirSync(t),()=>{try{g.rmdirSync(t)}catch{}}}catch{try{if(Date.now()-g.statSync(t).mtimeMs>9e4){g.rmdirSync(t);continue}}catch{continue}if(Date.now()>n)throw Error(`sidecar lock wait timed out`);await new Promise(e=>setTimeout(e,250))}}function S(e,t,n,r){return[`-p`,r,`--output-format`,`json`,`--model`,`sonnet`,`--effort`,`low`,`--strict-mcp-config`,`--no-chrome`,`--mcp-config`,`{"mcpServers":{}}`,`--settings`,`{"disableClaudeAiConnectors":true}`,n?`--resume`:`--session-id`,t,...i,`--add-dir`,e]}function C(e,t,n,r,i){let a=S(t,n,r,i);return new Promise((t,n)=>{let r=_(`claude`,a,{cwd:e,stdio:[`ignore`,`pipe`,`pipe`]}),i=``,o=``,s=setTimeout(()=>{r.kill(`SIGKILL`),n(Error(`sidecar call timed out`))},12e4);r.stdout.on(`data`,e=>i+=e),r.stderr.on(`data`,e=>o+=e),r.on(`error`,e=>{clearTimeout(s),n(e)}),r.on(`close`,e=>{if(clearTimeout(s),e!==0){n(Error(`sidecar claude exited ${e}: ${o.trim().slice(0,200)}`));return}try{let e=JSON.parse(i);if(e.is_error){n(Error(`sidecar turn errored: ${String(e.result??``).slice(0,200)}`));return}t(String(e.result??``))}catch{n(Error(`sidecar returned unparseable output`))}})})}function w(e){let t=e.match(/\{[^{}]*"decision"[^{}]*\}/);if(!t)return null;try{let e=JSON.parse(t[0]);if(e.decision===`accept`||e.decision===`decline`||e.decision===`escalate`)return{decision:e.decision,reason:String(e.reason??``)}}catch{}return null}async function T(e,n,r){let i=null;try{i=await x(n);let a=b(n);if(a.declineStreak>=3)return{decision:`escalate`,reason:`sidecar decline streak; needs human review`};if(!a.sessionId){let i=v();await C(e,n,i,!1,`You are the approval reviewer for a "coder" background coding task. The task runs inside an OS sandbox; you review only actions that escape it.
2
-
3
- Rules:
4
- - git stays read-only: decline any git write (commit/push/checkout/reset/...).
5
- - Decline anything destructive or system-level (sudo, rm -rf outside workspace, killing processes, changing system config, piping downloads to shells).
6
- - Temp locations (/tmp, \$TMPDIR, os temp dirs) and paths this task created are workspace scratch. They can be deleted after checking the progress log.
7
- - Accept actions clearly needed for the task goal (package installs in the workspace, running tests/builds/linters, reading system info, network to well-known package registries).
8
- - Escalate when genuinely uncertain, when the action is irreversible beyond the workspace, or when it touches credentials/secrets.
9
-
10
- You may Read/Grep workspace files and the task progress log to inform a decision. Do this only when the action line alone is not enough. Most decisions should not need it.
11
-
12
- Reply with ONLY one line of JSON: {"decision":"accept"|"decline"|"escalate","reason":"<short>"}. Acknowledge now with {"decision":"escalate","reason":"ready"}.${r.taskGoal?`\n\nTask goal: ${r.taskGoal.replace(/\s+/g,` `).slice(0,500)}`:``}${`\nTask progress log: ${h.join(n,`log.jsonl`)}`}`),a.sessionId=i,t(y(n),a)}let o=w(await C(e,n,a.sessionId,!0,`action: ${r.summary.slice(0,500)}`));return o?.decision===`decline`?a.declineStreak+=1:o?.decision===`accept`&&(a.declineStreak=0),t(y(n),a),o??{decision:`escalate`,reason:`sidecar verdict unparseable`}}catch(e){return{decision:`escalate`,reason:`sidecar unavailable: ${e instanceof Error?e.message:String(e)}`}}finally{i?.()}}const E=new Set([`Write`,`Edit`,`MultiEdit`,`NotebookEdit`]);async function D(t,r,i){let s=String(i.tool_name??``),f=i.input??i.tool_input??{},p=n(t),m=e(t,r),h=c(t),g=e=>o(t,r,e),_,v;if(s===`Bash`){let e=String(f.command??``);v=`run command: ${e||`(unknown command)`}`,_=l(e,{allowedNetworkHosts:h.approvals.allowedNetworkHosts})}else if(E.has(s)){let e=String(f.file_path??f.notebook_path??``);v=`${s}: ${e||`(unknown path)`}`,_=u(e?[e]:[],p)}else v=`${s||`(unknown tool)`}: ${JSON.stringify(f).slice(0,200)}`,_={decision:`escalate`,reason:`tool needs approval: ${s}`};g({kind:`approval-decision`,method:s,decision:_.decision,reason:_.reason,summary:v});let y=_.decision,b=_.reason;if(y===`escalate`){let e=await T(t,m,{taskGoal:a(t,r)?.prompt??null,summary:v});g({kind:`sidecar-decision`,decision:e.decision,reason:e.reason,summary:v}),e.decision===`escalate`?(y=await d(m,{method:`claude/${s}`,summary:v,params:{tool_name:s,input:f}},{timeoutMs:h.approvals.escalationTimeoutMs,onEvent:g}),b=`escalated for human review`):(y=e.decision,b=e.reason)}return y===`accept`?{behavior:`allow`,updatedInput:f}:{behavior:`deny`,message:`Denied by coder policy: ${b}`}}const O={approval_prompt:{description:`Coder approval policy for claude permission prompts.`,inputSchema:{type:`object`,additionalProperties:!0},handler:(e,{cwd:t,taskId:n})=>D(t,n,e).catch(e=>({behavior:`deny`,message:`coder mcp tool failed: ${e instanceof Error?e.message:String(e)}`}))}},k=f({name:`task mcp`,options:{cwd:p},args:1,run:({args:e,cwd:t})=>m(`coder`,O,{cwd:t,taskId:e[0]},void 0,r())});export{k as commandTaskMcp};
@@ -1,11 +0,0 @@
1
- import{qi as e}from"./core-DwsAMCnL.js";import{qt as t}from"./config-D2FxHWwi.js";import{t as n}from"./integrations-D3OgJk6Y.js";import{t as r}from"./mcp-server-DGzme0YX.js";import i from"node:path";import a from"node:process";import o from"node:os";import s from"node:fs/promises";var c=e({NOTE_FILE_ENV:()=>h,NOTE_TOOLS:()=>_,agentToolServer:()=>d,agentTools:()=>l,gitToolEnvironment:()=>m,noteToolServer:()=>v,taskToolServers:()=>p,tokenEnvName:()=>u,toolServerToken:()=>f});function l(e,t){if(e===`note`)return _;let r=n[e]?.tools,i=r?.serve;return!i||!t||!Object.values(r.presets).some(e=>e.some(e=>Object.hasOwn(i,e)))?i:Object.fromEntries(Object.entries(i).filter(([e])=>t.includes(e)))}function u(e){return`APP_TOKEN_${e.toUpperCase().replace(/[^A-Z0-9]/g,`_`)}`}function d(e,r,i){let{serve:o,server:s,presets:c}=n[e].tools;if(s){let t=s(r,i.event,i.token),a=Object.entries(t.env??{}).find(([,e])=>e===i.token)?.[0];return{...t,...a?{credentialFields:{env:a}}:{},...n[e].repos?.credentialUsername?{gitCredential:r.some(e=>!c.observe.includes(e))}:{}}}let u=i.scope??(i.event?.chat?{thread:i.event.chat.thread.id}:void 0);return{name:e,command:a.execPath,args:[t,`agent`,`tools`,e],env:{APP_TOKEN:i.token,CODER_AGENT_TOOLS:r.join(`,`),...u?{CODER_AGENT_SCOPE:JSON.stringify(u)}:{}},credentialFields:{env:`APP_TOKEN`},tools:Object.keys(l(e,r)??o??{})}}function f(e,t){if(!n[t])return;let r=d(t,[],{token:`\0`}),i=Object.entries(r.env??{}).find(([,e])=>e===`\0`)?.[0];return i&&e.find(e=>e.name===r.name)?.env?.[i]||void 0}function p(e,t){return Object.entries(e.tools).flatMap(([r,i])=>{let a=t[r];return n[r]&&a&&i.length?[d(r,i,{token:a,...e.event?{event:e.event}:{},scope:e.toolScopes?.[r]})]:[]})}async function m(e){let t=Object.values(n).flatMap(t=>{let n=t.repos,r=f(e.filter(e=>e.gitCredential),t.id);return n?.credentialUsername&&r&&!/[\r\n]/.test(r)?n.cloneHosts.map(e=>({host:e,username:n.credentialUsername,password:r})):[]});if(!t.length)return{env:{},close:async()=>{}};let r=await s.mkdtemp(i.join(o.tmpdir(),`coder-git-`)),c=i.join(r,`credential.cjs`);try{await s.writeFile(i.join(r,`tokens.json`),JSON.stringify(t),{mode:384}),await s.writeFile(c,`const fs = require('node:fs');
2
- let input = '';
3
- process.stdin.on('data', data => input += data);
4
- process.stdin.on('end', () => {
5
- if (process.argv[2] !== 'get') return;
6
- const fields = Object.fromEntries(input.trim().split('\\n').map(line => { const at = line.indexOf('='); return [line.slice(0, at), line.slice(at + 1)]; }));
7
- const entries = JSON.parse(fs.readFileSync(require('node:path').join(__dirname, 'tokens.json'), 'utf8'));
8
- const credential = entries.find(entry => fields.protocol === 'https' && fields.host === entry.host);
9
- if (credential) process.stdout.write('username=' + credential.username + '\\npassword=' + credential.password + '\\n');
10
- });
11
- `,{mode:384});let e=e=>`'${e.replaceAll(`'`,`'\\''`)}'`,n=Number(a.env.GIT_CONFIG_COUNT??0);if(!Number.isInteger(n)||n<0||n>1e3)throw Error(`Invalid git config count`);return{env:{GIT_CONFIG_COUNT:String(n+2),[`GIT_CONFIG_KEY_${n}`]:`credential.helper`,[`GIT_CONFIG_VALUE_${n}`]:``,[`GIT_CONFIG_KEY_${n+1}`]:`credential.helper`,[`GIT_CONFIG_VALUE_${n+1}`]:`!${e(a.execPath)} ${e(c)}`},close:()=>s.rm(r,{recursive:!0,force:!0})}}catch(e){throw await s.rm(r,{recursive:!0,force:!0}),e}}const h=`CODER_NOTE_FILE`,g=2e3,_={note:{description:`Read this thread's note, or replace it by passing text: at most 5 short lines a future turn in this thread must remember. Empty text clears it.`,inputSchema:r({text:`string`},[]),handler:async e=>{let t=a.env[h];if(!t)throw Error(`${h} is not set`);if(typeof e.text!=`string`)return{note:await s.readFile(t,`utf8`).catch(()=>``)};if(e.text.length>g)throw Error(`A note holds at most ${g} characters`);return await s.writeFile(t,e.text.trim()),{saved:!0}}}};function v(e){return{name:`note`,command:a.execPath,args:[t,`agent`,`tools`,`note`],env:{[h]:e},tools:Object.keys(_)}}export{u as a,p as i,c as n,f as o,v as r,m as t};
@@ -1 +0,0 @@
1
- import e from"node:readline";async function t(t,n,r,i={input:process.stdin,write:e=>process.stdout.write(`${e}\n`)},a=`1`){let o=e=>i.write(JSON.stringify(e)),s=e.createInterface({input:i.input,terminal:!1});for await(let e of s){if(!e.trim())continue;let i;try{i=JSON.parse(e)}catch{continue}let{id:s,method:c,params:l}=i;if(c===`initialize`)o({jsonrpc:`2.0`,id:s,result:{protocolVersion:l?.protocolVersion??`2024-11-05`,capabilities:{tools:{}},serverInfo:{name:t,version:a}}});else if(c===`tools/list`)o({jsonrpc:`2.0`,id:s,result:{tools:Object.entries(n).map(([e,t])=>({name:e,description:t.description,inputSchema:t.inputSchema}))}});else if(c===`tools/call`){let e=n[String(l?.name??``)],t,i=!1;try{if(!e)throw Error(`unknown tool: ${l?.name}`);let n=await e.handler(l?.arguments??{},r);t=typeof n==`string`?n:JSON.stringify(n)}catch(e){i=!0,t=e instanceof Error?e.message:String(e)}o({jsonrpc:`2.0`,id:s,result:{content:[{type:`text`,text:t}],isError:i}})}else s!==void 0&&o({jsonrpc:`2.0`,id:s,result:{}})}}function n(e,t=Object.keys(e)){return{type:`object`,properties:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{type:t}])),required:t}}export{t as n,n as t};
@@ -1 +0,0 @@
1
- import{s as e}from"./cli-D5hyqGq0.js";const t=e(`model`,{list:async()=>(await import(`./list-D0NK3Iqu.js`)).commandModelList,ls:async()=>(await import(`./list-D0NK3Iqu.js`)).commandModelList,add:async()=>(await import(`./add-DcR15CL7.js`).then(e=>e.t)).commandModelAdd,setup:async()=>(await import(`./add-DcR15CL7.js`).then(e=>e.t)).commandModelAdd,update:async()=>(await import(`./update-DoJEPBvm.js`)).commandModelUpdate,remove:async()=>(await import(`./remove-D1UOd48O.js`).then(e=>e.n)).commandModelRemove,disable:async()=>(await import(`./disable-VvU6oDku.js`)).commandModelDisable,enable:async()=>(await import(`./enable-BmvNVDHO.js`)).commandModelEnable,alias:async()=>(await import(`./alias-DghaKDbh.js`)).commandModelAlias,unalias:async()=>(await import(`./unalias-9AwJnbpE.js`)).commandModelUnalias},{menu:[{usage:`list`,blurb:`list built-ins, custom models, and aliases`},{usage:`add <name> --base-url <url> --model <id> [--env-key VAR]`,blurb:`connect a model (alias: setup)`},{usage:`update <name> [--base-url|--model|--env-key]`,blurb:`change a model in place`},{usage:`remove <name>`,blurb:`delete a custom model`},{usage:`disable <name>`,blurb:`turn off a model (built-in, custom, or alias)`},{usage:`enable <name>`,blurb:`re-enable a disabled model`},{usage:`alias <name> <spec>`,blurb:`name a spec, e.g. fast codex:luna`},{usage:`unalias <name>`,blurb:`remove an alias`}],description:["Manage the models coder can dispatch to. `add` connects any OpenAI-compatible",`endpoint (Ollama, vLLM, OpenRouter, ...) as the custom engine, alongside the`,"built-in codex/claude models. Name your own shortcuts with `alias`",`(e.g. fast -> codex:luna); disable/enable turns any model off and on.`]});export{t as commandModel};
@@ -1 +0,0 @@
1
- import{Et as e,M as t,O as n,S as r,_ as i,g as a,h as o,k as s,n as c,o as l,s as u,t as d,v as f,w as p,x as m,y as h}from"./config-D2FxHWwi.js";import{H as g,k as _,w as v}from"./dispatch-D3Dqxijf.js";import{t as y}from"./wire-B5rc5Av6.js";import b from"node:process";const x=new Set([`codex`,`claude`,`custom`]);async function S(e,t={}){let n=`key`in t?t.key:e.envKey?b.env[e.envKey]:void 0,r=t.fetch??fetch,i=o(e.baseUrl,`models`),a=null;for(let t of i)try{let i=await r(t,{headers:n?{Authorization:`Bearer ${n}`}:{},signal:AbortSignal.timeout(5e3)});if(!i.ok){a=i.status===404?{reachable:!0,modelListed:null,models:null,detail:`endpoint reachable (no model list to verify against)`}:{reachable:!1,modelListed:null,models:null,detail:`${t} -> HTTP ${i.status}`};continue}let o=await i.json().catch(()=>null),s=Array.isArray(o?.data)?o.data.map(e=>e.id).filter(e=>typeof e==`string`):null;if(!s)return{reachable:!0,modelListed:null,models:null,detail:`endpoint reachable`};if(!e.model)return{reachable:!0,modelListed:null,models:s,detail:`endpoint reachable; ${s.length} models listed`};let c=s.includes(e.model);return{reachable:!0,modelListed:c,models:s,detail:c?`endpoint reachable; model "${e.model}" listed`:`endpoint reachable, but "${e.model}" is not in its model list`}}catch(e){a={reachable:!1,modelListed:null,models:null,detail:`${t} unreachable (${e instanceof Error?e.message:String(e)})`}}return a}function C(e,n){t(e,e=>{e.models=e.models??{},n(e.models)})}function w(t,r){return t.workspace?s(e(r)):n()}function T(e){let t=e.models??{},n=Object.entries(t).filter(e=>f(e[1])),r=e=>`${e.provider}:${e.model}${e.effort?`:${e.effort}`:``}`,o=Object.entries(t).filter(e=>a(e[1])).map(([e,t])=>{let n=t.provider===`claude`?c:u,a=n[t.model]??t.model,o=i(e)?e:Object.entries(n).find(([,e])=>e===a)?.[0];return{name:e,spec:r(t),replaces:o,disabled:!!t.disabled}}),s=new Map;for(let e of o)e.replaces&&(e.name===e.replaces||!s.has(e.replaces))&&s.get(e.replaces)?.name!==e.replaces&&s.set(e.replaces,e);let l=e=>!!t[e]?.disabled,d=o.filter(e=>![...s.values()].some(t=>t.name===e.name));return{models:t,endpoints:n,providerRows:(e,t)=>[...Object.entries(t).map(([e,t])=>{let n=s.get(e);return n?{alias:n.name,spec:n.spec,overrides:e,disabled:n.disabled}:{alias:e,model:t,builtin:!0,disabled:l(e)}}),...d.filter(t=>t.spec.startsWith(`${e}:`)).map(({name:e,spec:t,disabled:n})=>({alias:e,spec:t,disabled:n}))],toggledSlugs:Object.entries(t).filter(([e,t])=>!f(t)&&!a(t)&&!i(e)).map(([e,t])=>({name:e,disabled:!!t.disabled})),disabled:l}}async function E(e){let{endpoints:t,providerRows:n,toggledSlugs:r}=T(h(e)),i=await Promise.all(t.map(async([e,t])=>({name:e,...t,probe:await S(t)})));return{codex:n(`codex`,u),claude:n(`claude`,c),custom:i,...r.length?{toggles:r}:{}}}async function D(e,t,n,r){let i=await y(t),a=i?.wireApi===`responses`;i?(t.wireApi=i.wireApi,t.baseUrl=i.baseUrl??t.baseUrl):delete t.wireApi,C(n,n=>{n[e]=t});let o=await S(t),s=v(_(r)),c=_(r);return{name:e,entry:t,file:n,probe:o,codex:c,install:s,nativeResponses:a,keyMissing:!!(t.envKey&&!b.env[t.envKey]),ready:o.reachable&&c.available}}const O=`Usage: coder model add <name> --base-url <url> --model <id> [--env-key VAR]`,k=`Usage: coder model update <name> [--base-url <url>] [--model <id>] [--env-key VAR]`,A=`Usage: coder model alias <name> <spec> (e.g. coder model alias fast codex:luna)`,j=`List them: coder model list`;function M(e,t,n){if(!e)throw new g(`invalid-option`,`Missing model name.`,{hint:n});if(!/^[a-z][a-z0-9-]*$/.test(e))throw new g(`invalid-option`,`Invalid model name "${e}". Use lowercase kebab-case (e.g. qwen-local).`);if(x.has(e)||t===`model`&&i(e))throw new g(`invalid-option`,`"${e}" is reserved; pick another name.`)}async function N(e,t,n){M(t,`model`,O);let r=h(e).models?.[t];if(r)throw new g(`invalid-option`,f(r)?`Custom model "${t}" already exists.`:`"${t}" is already configured as an ${a(r)?`alias`:`entry`}; remove it first.`,{hint:`Change it: coder model update ${t} [--base-url|--model|--env-key], or remove it first.`});if(!n.baseUrl||!n.model)throw new g(`invalid-option`,`Missing --base-url or --model.`,{hint:O});return D(t,{baseUrl:m(n.baseUrl),model:n.model,...n.envKey?{envKey:n.envKey}:{}},w({workspace:n.workspace},e),e)}async function P(e,t,n){let r=t?h(e).models?.[t]:void 0,i=r&&f(r)?r:void 0;if(!t||!i)throw new g(`invalid-option`,t?`No custom model named "${t}".`:`Missing model name.`,{hint:t?j:k});if(!n.baseUrl&&!n.model&&!n.envKey)throw new g(`invalid-option`,`Nothing to update: pass --base-url, --model, or --env-key.`,{hint:k});return D(t,{...i,...n.baseUrl?{baseUrl:m(n.baseUrl)}:{},...n.model?{model:n.model}:{},...n.envKey?{envKey:n.envKey}:{}},w({workspace:n.workspace},e),e)}function F(e,n,r={}){if(!n||!h(e).models?.[n])throw new g(`invalid-option`,n?`No custom model named "${n}".`:`Missing model name.`,{hint:n?j:`Usage: coder model remove <name>`});let i=w({workspace:r.workspace},e);return t(i,e=>p(e,n)),{removed:n,file:i}}function I(e,t,n,i={}){M(t,`alias`,A);let a=h(e),o=a.models?.[t];if(o&&f(o))throw new g(`invalid-option`,`"${t}" is a custom model name; pick another alias name.`);if(!n)throw new g(`invalid-option`,`Missing alias spec.`,{hint:A});let s;try{s=r(n,a)}catch(e){throw new g(`invalid-option`,e instanceof Error?e.message:String(e),{hint:A})}if(!s||!s.model)throw new g(`invalid-option`,`Alias spec "${n}" does not resolve to a model.`,{hint:A});if(s.engine===`custom`)throw new g(`invalid-option`,`"${n}" names a custom model, which is already dispatchable by name; aliases target codex/claude models.`);let p=n.split(`:`).some(e=>l.has(e.trim())||d.has(e.trim())),m=s.engine===`claude`?c:u,_={provider:s.engine,model:m[s.model]??s.model,...p&&s.effort?{effort:s.effort}:{}},v=w({workspace:i.workspace},e);return C(v,e=>{e[t]=_}),{alias:t,..._,file:v}}function L(e,n,r={}){let i=n?h(e).models?.[n]:void 0;if(!n||!i||!a(i))throw new g(`invalid-option`,n?`No alias named "${n}".`:`Missing alias name.`,{hint:n?j:`Usage: coder model unalias <name>`});let o=w({workspace:r.workspace},e);return t(o,e=>p(e,n)),{unaliased:n,file:o}}function R(e,t,n,r={}){if(!t)throw new g(`invalid-option`,`Missing model name.`,{hint:`Usage: coder model ${n?`disable`:`enable`} <name>`});let i=!!h(e).models?.[t],o=w({workspace:r.workspace},e);return C(o,e=>{let r=e[t];if(!r){n?e[t]={disabled:!0}:i&&(e[t]={disabled:!1});return}f(r)||a(r)?n?r.disabled=!0:delete r.disabled:n?r.disabled=!0:delete e[t]}),{name:t,disabled:n,file:o}}export{R as a,S as c,F as i,I as n,L as o,E as r,P as s,N as t};
@@ -1,8 +0,0 @@
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{p as r,x as i,y as a}from"./output-BKeyLbvt.js";import o from"node:path";import s from"node:process";import c from"node:fs";import{spawn as l}from"node:child_process";var u=class extends n{authenticate;needs;constructor(e,t,n=``,r,i){super(`server`,t,{status:e,...r?{hint:r}:{}}),this.authenticate=n,this.needs=i}};function d(e){try{let t=new URL(e).hostname.toLowerCase();return t===`localhost`||t===`[::1]`||/^127(?:\.\d{1,3}){3}$/.test(t)}catch{return!1}}function f(e){let t;try{t=new URL(e)}catch{throw new n(`invalid-option`,`Give the server as a URL, e.g. https://agents.example.com.`)}if(t.protocol!==`https:`&&!(t.protocol===`http:`&&d(t.origin)))throw new n(`invalid-option`,`Coder servers require HTTPS unless they are loopback.`,{hint:`Use https://, or http://localhost for a local server.`});if(t.username||t.password||t.search||t.hash)throw new n(`invalid-option`,`The server must be an origin without credentials, query, or fragment.`);return t.toString().replace(/\/+$/,``)}const p=(e,t,n)=>`/admin/credentials/${encodeURIComponent(e)}${t}${n?`?workspace`:``}`,m=(e,t)=>{let n=new URLSearchParams;`cursor`in t&&typeof t.cursor==`string`&&n.set(`cursor`,t.cursor);for(let[e,r]of Object.entries(t))e!==`cursor`&&r!==void 0&&r!==!1&&r!==``&&n.set(e,r===!0?`1`:Array.isArray(r)?r.join(`,`):String(r));return`${e}?${n}`},h=new Set([`completed`,`failed`,`cancelled`]);var g=class{url;fetchImpl;organization;renewal;onError;token;cookie;constructor(e,t,r={}){if(this.cookie=`cookie`in t,this.url=e?f(e):``,!this.cookie&&!this.url)throw new n(`invalid-option`,`Bearer clients need a server URL.`);this.token=`token`in t?t.token:void 0,this.fetchImpl=r.fetch??((e,t)=>fetch(e,t)),this.organization=r.organization,this.renewal=r.renewal,this.onError=r.onError}request(e,t={}){let n=this.read(e,t);return n.catch(()=>{}),n}async read(e,t){this.renewal&&this.renewal.expiresAt()-Date.now()<3e4&&(this.token=await this.renewal.renew());let r=await this.send(e,t);r.status===401&&this.renewal&&/invalid_token/.test(r.headers.get(`www-authenticate`)??``)&&(this.token=await this.renewal.renew(),r=await this.send(e,t));let i=await r.text().catch(()=>``),a={},o;try{i&&r.status!==204&&(a=JSON.parse(i))}catch{if(r.ok)throw new n(`server`,`The server answered ${r.status} with a body that is not JSON.`);this.cookie&&i&&(o=i)}if(!r.ok){let e=new u(r.status,a.error??a.message??o??`The server answered ${r.status}.`,r.headers.get(`www-authenticate`)??``,a.hint,a.needs===`key`?a.needs:void 0);throw this.onError?.(e),e}return a}send(e,t){let r=new Headers(t.headers);return t.body&&!r.has(`content-type`)&&r.set(`content-type`,`application/json`),this.cookie||r.set(`authorization`,`Bearer ${this.token}`),this.organization&&r.set(`x-coder-organization`,this.organization),this.fetchImpl(`${this.url}${e}`,{...t,headers:r,...this.cookie?{credentials:`same-origin`}:{}}).catch(e=>{throw e instanceof n||e.name===`AbortError`?e:new n(`server`,this.url?`No Coder server answers at ${this.url}: ${e.message}`:`The server did not answer. Check the connection and try again.`)})}post(e,t){return this.request(e,{method:`POST`,...t===void 0?{}:{body:JSON.stringify(t)}})}me(){return this.request(`/me`)}info(){return this.request(`/api/auth/capabilities`)}linkAccount(e){return this.post(`/connect`,{token:e})}signOut(){return this.post(`/api/auth/sign-out`,{})}agents={list:e=>this.request(m(`/admin/agents`,{...e,...e?.connect?{connect:1}:{}})),get:(e,t)=>this.request(m(`/admin/agents/${encodeURIComponent(e)}`,{...t?.versions===!1?{versions:0}:{},...t?.content===!1?{content:0}:{},...t?.handles?{handles:1}:{}})),versions:(e,t={})=>this.request(m(`/admin/agents/${encodeURIComponent(e)}/versions`,t)),remove:e=>this.request(`/admin/agents/${encodeURIComponent(e)}`,{method:`DELETE`}),preview:(e,t)=>this.request(m(`/admin/agents/import`,{repo:e,ref:t})),version:(e,t)=>this.request(`/admin/agents/${encodeURIComponent(e)}/versions/${t}`),put:(e,t)=>this.request(`/admin/agents/${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify(t)}).then(t=>({id:e,version:t.version,unchanged:t.unchanged,...t.apps?.length?{apps:t.apps}:{}})),settings:(e,t)=>this.request(`/admin/agents/${encodeURIComponent(e)}/settings`,{method:`PATCH`,body:JSON.stringify(t)}),import:(e,t,n)=>this.post(`/admin/agents/import`,{repo:e,ref:t,...n?{agents:n}:{}})};composer(){return this.request(`/admin/composer`)}folders={list:()=>this.request(`/admin/folders`),check:e=>this.post(`/admin/folders/check`,{path:e}),clone:e=>this.post(`/admin/folders/clone`,{url:e}),pick:()=>this.post(`/admin/folders/pick`,{})};tasks={run:e=>this.post(`/admin/tasks`,e),list:e=>this.request(m(`/admin/tasks`,{limit:20,...e,...e?.archived?{archived:1}:{},...e?.summary?{summary:1}:{},...e?.counts?{counts:1}:{}})),get:e=>this.request(`/admin/tasks/${encodeURIComponent(e)}`),logs:(e,t=-1,n)=>this.request(m(`/admin/tasks/${encodeURIComponent(e)}/logs`,{after:t,limit:n})),stream:(e,t=-1,n)=>this.send(`/admin/tasks/${encodeURIComponent(e)}/stream?after=${t}`,{headers:{accept:`text/event-stream`},signal:n}),events:(e,t,n)=>this.send(m(`/admin/events`,{tasks:e}),{headers:{accept:`text/event-stream`,...t?{"last-event-id":t}:{}},signal:n}),cancel:e=>this.post(`/admin/tasks/${encodeURIComponent(e)}/cancel`),steer:(e,t,n={})=>this.post(`/admin/tasks/${encodeURIComponent(e)}/steer`,{text:t,...n}),ask:(e,t)=>this.post(`/admin/tasks/${encodeURIComponent(e)}/ask`,{question:t}),approve:(e,t,n)=>this.post(`/admin/tasks/${encodeURIComponent(e)}/approve`,{approvalId:t,decision:n}),archive:e=>this.post(`/admin/tasks/${encodeURIComponent(e)}/archive`),delete:e=>this.request(`/admin/tasks/${encodeURIComponent(e)}`,{method:`DELETE`}),create:e=>this.post(`/admin/tasks`,e),wait:async(e,t={})=>{let r=-1;for(;;){let i=await this.tasks.stream(e,r);if(!i.ok||!i.body){let t=await this.tasks.get(e);if(h.has(t.status))return t;if(i.status===401)continue;throw new n(`server`,`The task stream answered ${i.status}.`)}let a=!1;for await(let e of _(i.body))if(e.event===`log`){let n=JSON.parse(e.data);r=n.seq,t.onLog?.(n)}else e.event===`end`&&(a=!0);if(a)return this.tasks.get(e)}}};credentials={list:e=>this.request(m(`/admin/credentials`,e??{})),add:e=>this.post(`/admin/credentials`,e),remove:(e,{workspace:t}={})=>this.request(p(e,``,t),{method:`DELETE`}),setDefault:(e,{workspace:t}={})=>this.post(p(e,`/default`,t)),login:e=>this.post(`/admin/logins`,{engine:e}),loginStatus:e=>this.request(`/admin/logins/${encodeURIComponent(e)}`),loginCode:(e,t)=>this.post(`/admin/logins/${encodeURIComponent(e)}`,{code:t}),cancelLogin:e=>this.request(`/admin/logins/${encodeURIComponent(e)}`,{method:`DELETE`})};runners={list:()=>this.request(`/admin/runners`),add:e=>this.post(`/admin/runners`,e),pair:e=>this.post(`/admin/runners/pair`,e),update:(e,t)=>this.request(`/admin/runners/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),test:e=>this.post(`/admin/runners/${encodeURIComponent(e)}/test`,{}),remove:e=>this.request(`/admin/runners/${encodeURIComponent(e)}`,{method:`DELETE`})};integrations={list:e=>this.request(m(`/admin/integrations`,{agent:e}))};repositories={list:()=>this.request(`/admin/repositories`),refresh:()=>this.post(`/admin/repositories/refresh`,{})};engines={status:()=>this.request(`/admin/engines/status`),login:e=>this.post(`/admin/engines/${encodeURIComponent(e)}/login`,{}),logout:e=>this.post(`/admin/engines/${encodeURIComponent(e)}/logout`,{})};apps={list:e=>this.request(m(`/admin/apps`,{agent:e})),install:(e,t,n)=>this.post(m(`/admin/apps/${encodeURIComponent(e)}/install`,{back:t,link:n})),remove:e=>this.request(`/admin/apps/${encodeURIComponent(e)}`,{method:`DELETE`}),update:e=>this.post(`/admin/apps/${encodeURIComponent(e)}/update`,{}),drift:e=>this.request(`/admin/apps/${encodeURIComponent(e)}/drift`),create:(e,t)=>this.post(`/admin/apps/create/${encodeURIComponent(e)}`,t),start:(e,t)=>this.post(m(`/create/${encodeURIComponent(e)}`,t)),finish:(e,t)=>this.request(`/create/${encodeURIComponent(e)}/callback`,{method:`POST`,headers:{accept:`application/json`,"content-type":`application/x-www-form-urlencoded`},body:new URLSearchParams(t)})};operator={apps:()=>this.request(`/admin/operator/apps`),setUp:(e,t)=>this.post(`/admin/operator/apps/${encodeURIComponent(e)}`,t),audit:()=>this.request(`/admin/operator/audit`)};installations={list:(e,t={})=>this.request(m(`/admin/installations`,{agent:e,limit:t.limit,...t.active?{active:1}:{}}))};connections={list:e=>this.request(m(`/admin/connections`,{authorization:e})),add:e=>this.post(`/admin/connections`,e),update:(e,t)=>this.request(`/admin/connections/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),remove:e=>this.request(`/admin/connections/${encodeURIComponent(e)}`,{method:`DELETE`}),authorize:e=>this.post(`/admin/connections/${encodeURIComponent(e)}/authorize`)};config={get:()=>this.request(`/admin/config`),put:e=>this.request(`/admin/config`,{method:`PUT`,body:JSON.stringify(e)}),patch:e=>this.request(`/admin/config`,{method:`PATCH`,headers:{"content-type":`application/merge-patch+json`},body:JSON.stringify(e)})};models={list:()=>this.request(`/admin/models`),add:e=>this.post(`/admin/models`,e),probe:e=>this.post(`/admin/models/probe`,e),remove:e=>this.request(`/admin/models/${encodeURIComponent(e)}`,{method:`DELETE`}),alias:(e,t)=>this.post(`/admin/models/${encodeURIComponent(e)}/alias`,{spec:t}),enable:e=>this.post(`/admin/models/${encodeURIComponent(e)}/enable`),disable:e=>this.post(`/admin/models/${encodeURIComponent(e)}/disable`)};mcp={search:e=>this.request(m(`/admin/mcp-registry`,{q:e}))};flows={list:e=>this.request(m(`/admin/flows`,{repo:e})),run:(e,t)=>this.post(`/admin/flows/${encodeURIComponent(e)}/run`,t)};pulls={list:e=>this.request(m(`/admin/pulls`,{repo:e}))};review(e){return this.post(`/admin/review`,e)}usage(e={}){return this.request(m(`/admin/usage/totals`,{...e,since:e.since??Date.now()-6048e5}))}usageRows(e){return this.request(m(`/admin/usage`,{installation:e}))}};async function*_(e){let t=new TextDecoder,n=``;for await(let r of e){n+=t.decode(r,{stream:!0});let e;for(;(e=n.indexOf(`
2
-
3
- `))>=0;){let t=n.slice(0,e);n=n.slice(e+2);let r=`message`,i,a=[];for(let e of t.split(`
4
- `))e.startsWith(`event: `)?r=e.slice(7):e.startsWith(`data: `)?a.push(e.slice(6)):e.startsWith(`id: `)&&(i=e.slice(4));(a.length||i)&&(yield{event:r,data:a.join(`
5
- `),...i?{id:i}:{}})}}}function v(){return t(`session.json`)}function y(){try{let e=JSON.parse(c.readFileSync(v(),`utf8`));return Object.fromEntries(Object.entries(e).filter(e=>!!(e[1].token&&e[1].refreshToken&&e[1].user)))}catch{return{}}}function b(){try{return JSON.parse(c.readFileSync(v(),`utf8`))}catch{return{}}}const x=e=>e.replace(/\/+$/,``),S=`https://coder.wular.ai`,C=e=>x((e===!0?void 0:e)??process.env.CODER_SERVER??`https://coder.wular.ai`);function w(e){return f(C(e))}function T(e){let t=x(e);return t===`https://coder.wular.ai`||!!b()[t]}function E(e){let t=b(),n=x(e),r=t[n]??{};k({...t,[n]:{...r,confirmedAt:Date.now()}})}function D(e){return y()[x(e)]}function O(e){let t=b(),n=Object.fromEntries(Object.entries(t).map(([e,t])=>[e,{confirmedAt:t.confirmedAt??Date.now()}]));k(Object.fromEntries(Object.entries({...n,...e}).map(([e,n])=>[e,{...n,...t[e]?{confirmedAt:t[e].confirmedAt??Date.now()}:{}}])))}function k(e){let t=v();c.mkdirSync(o.dirname(t),{recursive:!0}),c.writeFileSync(t,`${JSON.stringify(e,null,2)}\n`,{mode:384}),c.chmodSync(t,384)}var A=e({PromptCancelled:()=>N,ask:()=>V,askSecret:()=>B,canPrompt:()=>P,openUrl:()=>H,pick:()=>R,pickDetailed:()=>z});function j(e){let t=a()??80;return Math.max(1,Math.ceil(i(e)/t))}const M={tab:[` `],up:[`\x1B[A`,`k`],down:[`\x1B[B`,`j`],enter:[`\r`,`
6
- `],space:[` `],backspace:[``,`\b`],cancel:[``,`\x1B`]};var N=class extends Error{constructor(){super(`Cancelled.`)}};function P(){return!!(s.stdin.isTTY&&s.stdout.isTTY)}function F(e){let t=[];for(let n=0;n<e.length;)if(e[n]===`\x1B`&&e[n+1]===`[`){let r=n+2;for(;r<e.length&&!/[@-~]/.test(e[r]);)r++;t.push(e.slice(n,r+1)),n=r+1}else t.push(e[n]),n++;return t}const I=[];function L(){return I.length?Promise.resolve(I.shift()):new Promise(e=>{let t=n=>{s.stdin.off(`data`,t);let r=F(n.toString(`utf8`));I.push(...r.slice(1)),e(r[0])};s.stdin.on(`data`,t)})}async function R(e){return(await z(e)).values}async function z(e){let t=r,n=s.stdout,i=Math.max(3,e.window??8),a=new Set(e.selected??[]),o=Math.max(0,e.options.findIndex(e=>a.has(e.value))),c=0,l=``,u=0,d=``,f=new Map(e.options.flatMap(e=>e.input?.value?[[e.value,e.input.value]]:[])),p=!1,m=e.options.some(e=>e.input),h=()=>e.options.filter(e=>!l||e.value.toLowerCase().includes(l.toLowerCase())||(e.label??``).toLowerCase().includes(l.toLowerCase())),g=(r=!1)=>{u&&n.write(`\x1b[${u}A\x1b[J`);let s=h();o=Math.min(o,Math.max(0,s.length-1)),o<c&&(c=o),o>=c+i&&(c=o-i+1);let g=m?` · tab to edit`:``,_=p?`type to edit · enter when done · esc to discard`:e.multi?`↑↓ to move · space to toggle · type to filter${g} · enter to continue · esc to cancel`:`↑↓ to move · type to filter${g} · enter to choose · esc to cancel`,v=[`${t.bold(e.title)} ${t.dim(_)}`];if(r){let r=[...a].map(e=>f.get(e)?`${e} (${f.get(e)})`:e).join(`, `)||`-`;n.write(`${t.green(`✔`)} ${t.bold(e.title)} ${t.cyan(r)}\n\n`),u=0;return}e.hint&&v.push(` ${t.light(e.hint)}`),e.multi&&v.push(` ${t.light(`selected:`)} ${[...a].join(`, `)||t.dim(`none`)}`),l&&v.push(` ${t.light(`filter:`)} ${l}${t.dim(`▏`)}`),s.length||v.push(` ${t.dim(`no matches`)}`),c>0&&v.push(` ${t.dim(`↑ ${c} more`)}`);let y=Math.max(0,...s.map(e=>(e.label??e.value).length));s.slice(c,c+i).forEach((n,r)=>{let i=c+r===o,s=`${e.multi?a.has(n.value)?`◉`:`◯`:i?`●`:`○`} ${(n.label??n.value).padEnd(y)}${n.hint?` ${t.light(n.hint)}`:``}`,l=f.get(n.value)??``,u=n.input&&(l||i&&p)?` ${t.light(`${n.input.label}:`)} ${l}${i&&p?t.dim(`▏`):``}`:n.input&&i&&n.input.placeholder?` ${t.dim(n.input.placeholder)}`:``;v.push(`${i?t.cyan(`❯ `):` `}${i?t.cyan(s):s}${u}`)});let b=s.length-(c+i);b>0&&v.push(` ${t.dim(`↓ ${b} more`)}`),d&&v.push(` ${t.red(d)}`),n.write(`${v.join(`
7
- `)}\n`),u=v.reduce((e,t)=>e+j(t),0)},_=s.stdin,v=_.isRaw;_.setRawMode(!0),_.resume(),n.write(`\x1B[?25l`);try{for(g();;){let t=await L();d=``;let n=h(),r=n[o];if(p&&r?.input){let e=f.get(r.value)??``;if(M.cancel.includes(t))f.delete(r.value),p=!1;else if(M.enter.includes(t)){let t=e?r.input.validate?.(e):void 0;t?d=t:p=!1}else M.backspace.includes(t)?f.set(r.value,e.slice(0,-1)):t.length===1&&t>=` `&&f.set(r.value,e+t);g();continue}if(M.cancel.includes(t))throw new N;if(M.tab.includes(t)&&r?.input){p=!0,e.multi&&a.add(r.value),g();continue}if(M.up.includes(t)&&!(t===`k`&&l))o=Math.max(0,o-1);else if(M.down.includes(t)&&!(t===`j`&&l))o=Math.min(n.length-1,o+1);else if(M.enter.includes(t))if(!e.multi&&n[o]&&(a.clear(),a.add(n[o].value)),e.required&&!a.size)d=`Pick at least one.`;else{g(!0);let e={};for(let[t,n]of f)n&&a.has(t)&&(e[t]=n);return{values:[...a],inputs:e}}else if(e.multi&&M.space.includes(t)&&n[o]){let e=n[o].value;a.has(e)?a.delete(e):a.add(e)}else M.backspace.includes(t)?l=l.slice(0,-1):t.length===1&&t>=` `&&t!==` `&&(l+=t,o=0,c=0);g()}}finally{n.write(`\x1B[?25h`),_.setRawMode(!!v),_.pause()}}async function B(e){let t=s.stdin;if(!t.isTTY){let e=``;for await(let n of t)e+=n.toString();return e.replace(/\r?\n$/,``)}s.stderr.write(`${r.bold(e)} `),t.setRawMode(!0),t.resume();let n=``;try{for(;;){let e=await L();if(M.cancel.includes(e))throw new N;if(M.enter.includes(e))return n;M.backspace.includes(e)?n=n.slice(0,-1):e.length===1&&e>=` `&&(n+=e)}}finally{t.setRawMode(!1),t.pause(),s.stderr.write(`
8
- `)}}async function V(e,t=``,n,i){let a=r;i&&s.stdout.write(`${a.bold(e)}\n ${a.light(i)}\n`);let o=(await import(`node:readline/promises`)).createInterface({input:s.stdin,output:s.stdout}),c=i?j(e)+j(` ${i}`):0;try{for(;;){let r=i?` ${t?a.dim(`[${t}] `):``}`:`${a.bold(e)} ${t?a.dim(`[${t}] `):``}`,l=(await o.question(r)).trim()||t;c+=j(`${i?` `:`${e} `}${t?`[${t}] `:``}${l}`);let u=n?.(l);if(!u)return s.stdout.write(`\x1b[${c}A\x1b[J${a.green(`✔`)} ${a.bold(e)} ${a.cyan(l||`-`)}\n\n`),l;s.stdout.write(` ${a.red(u)}\n`),c+=j(` ${u}`)}}finally{o?.close()}}function H(e){let t=s.env.BROWSER;if(t===`none`||s.env.CI||s.env.NODE_ENV===`test`)return!1;let[n,r]=t?s.platform===`darwin`?[`open`,[`-a`,t,e]]:[t,[e]]:s.platform===`darwin`?[`open`,[e]]:s.platform===`win32`?[`cmd`,[`/c`,`start`,``,e]]:[`xdg-open`,[e]];try{return l(n,r,{detached:!0,stdio:`ignore`}).unref(),!0}catch{return!1}}export{d as _,R as a,S as c,D as d,y as f,g,O as h,H as i,T as l,w as m,V as n,z as o,v as p,P as r,A as s,N as t,E as u};
@@ -1 +0,0 @@
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=e({name:`agent push`,help:{usage:`coder agent push [id] [--server [url]] [--json] [--cwd <dir>]`,summary:`Upload one workspace agent, or every agent in .coder/agents when no id is given. The server creates a new immutable version only when its definition, prompt, or files changed.`,flags:[t],examples:[[`coder agent push helper`,`upload helper`]]},options:{...o,server:r,workspace:a,yes:i},args:1,run:async({options:e,args:[t],cwd:n})=>{let{agents:r}=await import(`./agent-C1HI4JlI.js`).then(e=>e.t);return r.push(t,{...e,cwd:n,organization:e.workspace})},print:e=>{for(let t of e){s.stdout.write(t.unchanged?`Pushed ${n.bold(t.id)} unchanged (version ${t.version})\n`:`Pushed ${n.bold(t.id)} as version ${t.version}\n`);for(let e of t.apps??[])e.error?s.stderr.write(`${e.error}\n`):e.drift&&s.stderr.write(`${e.name} needs changes on ${e.integration}; see Update on the agent's Platforms tab.\n`)}}});export{c as commandAgentPush};
@@ -1 +0,0 @@
1
- import{i as e,r as t}from"./cli-D5hyqGq0.js";import{p as n}from"./output-BKeyLbvt.js";import{t as r}from"./args-CxsMr9Un.js";import{askKey as i,openSignIn as a,serverOptions as o}from"./add-Df1Ezy3y.js";import s from"node:process";const c=e({name:`connection reconnect`,help:{usage:`coder connection reconnect <name> [--server [url]] [--json]`,summary:`Give a key connection its new key, read from stdin or a prompt, or sign in to an OAuth connection again in the browser. The credential an API key connection reads gets the new value, so every connection reading it rotates.`,flags:[t],examples:[[`pbpaste | coder connection reconnect groq`,`the new key from the clipboard`]]},options:{...r,...o},args:1,run:async({options:e,args:[t],cwd:n})=>{let{connection:r}=await import(`./connection-wq0CJZKh.js`).then(e=>e.n);return r.reconnect(t,{...e,cwd:n,askKey:i,onAuthorize:a})},print:e=>s.stdout.write(`Reconnected ${n.bold(e.id)}.\n`)});export{c as commandConnectionReconnect};
@@ -1 +0,0 @@
1
- import{Yt as e}from"./config-D2FxHWwi.js";import{O as t}from"./dispatch-D3Dqxijf.js";import{i as n}from"./cli-D5hyqGq0.js";const r=n({name:`upgrade refresh`,options:{},run:()=>t(e())});export{r as commandRefreshUpdate};
@@ -1 +0,0 @@
1
- import{qi as e}from"./core-DwsAMCnL.js";import{H as t}from"./dispatch-D3Dqxijf.js";import{_ as n,d as r,f as i,g as a,h as o,i as s,l as c,m as l,p as u,u as d}from"./prompt-C--TI1qn.js";import{a as f}from"./load-CRmQB1LD.js";import{t as p}from"./integrations-D3OgJk6Y.js";import{_t as ee,a as m,c as h,f as g,h as _,i as v,l as te,m as ne,p as re,r as ie,s as ae,t as y,u as oe,vt as b}from"./build-CmtlB7pX.js";import x from"node:path";import S from"node:process";import C from"node:fs";import{execFile as w}from"node:child_process";import{createHash as T}from"node:crypto";import E from"node:fs/promises";import{promisify as D}from"node:util";import O from"node:http";const se={"**/":`(?:.*/)?`,"/**":`/.*`,"**":`.*`,"*":`[^/]*`,"?":`[^/]`};function ce(e){return e.split(/\r?\n/).flatMap(e=>{let t=e.trimEnd();if(!t||t.startsWith(`#`))return[];let n=t.startsWith(`!`);n&&(t=t.slice(1));let r=t.endsWith(`/`);r&&(t=t.slice(0,-1));let i=t.replace(/^\//,``).replace(/[.+^${}()|[\]\\]/g,`\\$&`).replace(/\*\*\/|\/\*\*$|\*\*|\*|\?/g,e=>se[e]),a=t.includes(`/`);return[{pattern:RegExp(a?`^${i}$`:`^(?:.*/)?${i}$`),negate:n,directory:r}]})}const k=(e,t,n)=>e.reduce((e,r)=>(!r.directory||n)&&r.pattern.test(t)?!r.negate:e,!1);async function A(e,t,n=``){let r=[];for(let i of await E.readdir(x.join(e,n),{withFileTypes:!0})){let a=n?`${n}/${i.name}`:i.name;i.isDirectory()&&!k(t,a,!0)?r.push(...await A(e,t,a)):i.isFile()&&!k(t,a,!1)&&r.push(a)}return r}async function le(e){return(await D(w)(`git`,[`-C`,e,`ls-files`,`--cached`,`--others`,`--exclude-standard`,`-z`,`--`,`.`],{maxBuffer:67108864}).catch(()=>void 0))?.stdout.split(`\0`).filter(Boolean)}async function ue(e){let t=await le(e)??await A(e,ce(await E.readFile(x.join(e,`.gitignore`),`utf8`).catch(()=>``))),n={};for(let r of t){if(r===`agent.json`||r===`system.md`)continue;let t=x.join(e,r);(await E.lstat(t).catch(()=>void 0))?.isFile()&&(n[r]=await E.readFile(t,`utf8`))}return n}var j=e({deviceSignIn:()=>R,hasBrowser:()=>H,logoutSession:()=>W,loopbackSignIn:()=>L,refreshSignIn:()=>z,revokeSignIn:()=>B,selectLoginOrganization:()=>V,sessions:()=>G,signIn:()=>U});const M=`openid profile email offline_access organizations:read`,N=e=>`${e}/.well-known/oauth-cli-client.json`;async function P(e,n){let r=new URL(e).origin,i=await fetch(`${r}/.well-known/oauth-protected-resource`).catch(n=>{throw new t(`login-failed`,`No Coder server answers at ${e}: ${n.message}`)}),a=await i.json().catch(()=>({})),o=Array.isArray(a.authorization_servers)?a.authorization_servers[0]:void 0;if(!i.ok||a.resource!==r||typeof o!=`string`)throw new t(`login-failed`,`${e} does not offer sign-in.`,{hint:`Sign-in needs a Postgres-backed server; see coder docs self-host`});if(n!==void 0&&o!==n)throw new t(`login-failed`,`The server's sign-in issuer has changed. Sign in again before using this session.`);return{config:await h(new URL(o),N(e),void 0,y(),new URL(o).protocol===`http:`?{execute:[ie]}:void 0).catch(e=>{throw new t(`login-failed`,`Wular Auth at ${o} did not answer: ${e.message}`)}),resource:r}}function F(e,n,r){let i=n.claims(),a=n.refresh_token??r?.refreshToken;if(!a)throw new t(`login-failed`,`Wular Auth returned no refresh token.`);return{token:n.access_token,refreshToken:a,expiresAt:Date.now()+(n.expires_in??600)*1e3,issuer:e.serverMetadata().issuer,user:i?{name:typeof i.name==`string`?i.name:``,email:typeof i.email==`string`?i.email:``}:r?.user??{name:``,email:``}}}const I=e=>new t(`login-failed`,e instanceof b||e instanceof ee?e.error===`access_denied`?`Sign-in was denied in the browser.`:e.error_description??e.error:e instanceof Error?e.message:String(e));async function L(e,n){let{config:r,resource:i}=await P(e),a=g(),o=re(),s=O.createServer();await new Promise(e=>s.listen(0,`127.0.0.1`,e));let{port:c}=s.address(),l=`http://127.0.0.1:${c}/callback`;try{let e=new Promise((e,n)=>{let r=setTimeout(()=>n(new t(`login-failed`,`Sign-in timed out.`)),3e5);s.on(`request`,(t,n)=>{let i=new URL(t.url??`/`,l);if(i.pathname!==`/callback`||i.searchParams.get(`state`)!==o){n.writeHead(404).end();return}n.writeHead(200,{"content-type":`text/plain; charset=utf-8`}).end(i.searchParams.has(`error`)?`Sign-in failed. You can close this tab and return to the terminal.`:`Signed in. You can close this tab and return to the terminal.`),clearTimeout(r),e(i)})});return n(m(r,{redirect_uri:l,scope:M,resource:i,code_challenge:await ae(a),code_challenge_method:`S256`,state:o}).href),F(r,await v(r,await e,{pkceCodeVerifier:a,expectedState:o},{resource:i}).catch(e=>{throw I(e)}))}finally{s.close(),s.closeAllConnections()}}async function R(e,t){let{config:n,resource:r}=await P(e);try{let e=await te(n,{scope:M,resource:r});return t(e.user_code,e.verification_uri_complete??e.verification_uri),F(n,await oe(n,e,{resource:r}))}catch(e){throw I(e)}}async function z(e,n){let{config:r,resource:i}=await P(e,n.issuer);try{return F(r,await ne(r,n.refreshToken,{resource:i}),n)}catch(e){if(e instanceof b&&(e.error===`invalid_grant`||e.error===`invalid_client`))return;throw new t(`server`,`Wular Auth did not refresh the session: ${e instanceof Error?e.message:String(e)}`)}}async function B(e,t){let{config:n}=await P(e,t.issuer);n.serverMetadata().revocation_endpoint&&await _(n,t.refreshToken,{token_type_hint:`refresh_token`})}async function V(e,n,r){if(!e.length)throw new t(`login-failed`,`This account belongs to no workspace.`);if(n){let r=e.find(e=>e.slug===n);if(!r)throw new t(`login-failed`,`You are not a member of workspace "${n}".`);return r}if(e.length<=1)return e[0];if(!r)throw new t(`login-failed`,`Choose a workspace for this server.`,{hint:`Pass --workspace <slug>.`});let i=await r(e);return e.find(e=>e.slug===i)}const H=()=>!S.env.SSH_CONNECTION&&(S.platform!==`linux`||!!(S.env.DISPLAY||S.env.WAYLAND_DISPLAY));async function U(e,n={}){let r=n.device?await R(e,n.onCode??(()=>{})):await L(e,n.open??s),i=await fetch(`${e}/me`,{headers:{authorization:`Bearer ${r.token}`}}).catch(n=>{throw new t(`login-failed`,`No Coder server answers at ${e}: ${n.message}`)}),a=await i.json().catch(()=>({}));if(!i.ok)throw new t(`login-failed`,`Signed in, but the server refused the token.`);let o=await V(a.organizations??[],n.organization,n.chooseOrganization);return{...r,...o?{organization:o}:{},at:Date.now()}}async function W(e){let n=i(),r=n[e];if(!r)throw new t(`login-failed`,`Not signed in to ${e}.`);return await B(e,r).catch(()=>void 0),delete n[e],o(n),{ok:!0,server:e}}const G={async login(e={}){let t=K(e),n=await U(t,e);return e.save!==!1&&o({...i(),[t]:n}),{...n,server:t}},logout:(e={})=>W(K(e)),status:()=>Object.fromEntries(Object.entries(i()).map(([e,t])=>[e,{user:t.user,organization:t.organization,at:t.at}]))};function de(e,t){let n=t,r;return{expiresAt:()=>n.expiresAt,async renew(){return r||=fe(e,n).finally(()=>{r=void 0}),n=await r,n.token}}}async function fe(e,t){let n=T(`sha256`).update(e).digest(`hex`),r=`${u()}.${n}.lock`;for(C.mkdirSync(x.dirname(r),{recursive:!0});;)try{let e=C.openSync(r,`wx`,384);try{C.writeFileSync(e,String(process.pid))}catch(e){throw C.unlinkSync(r),e}finally{C.closeSync(e)}break}catch(e){if(e.code!==`EEXIST`)throw e;try{let e=Number(C.readFileSync(r,`utf8`));e?process.kill(e,0):Date.now()-C.statSync(r).mtimeMs>3e4&&C.unlinkSync(r)}catch(e){if(e.code===`ESRCH`)try{C.unlinkSync(r)}catch{}}await new Promise(e=>setTimeout(e,25))}try{return await pe(e,t)}finally{C.unlinkSync(r)}}async function pe(e,n){let r=e=>e&&e.refreshToken!==n.refreshToken?e:void 0,a=r(i()[e]);if(a&&a.expiresAt>n.expiresAt)return a;let s=await z(e,n),c=i();if(s){let t={...n,...s};return o({...c,[e]:t}),t}let l=r(c[e]);if(l)return l;throw delete c[e],o(c),new t(`login-failed`,`Signed out of ${e}.`,{hint:`Sign in again: coder auth login`})}var me=e({addCredential:()=>Q,coderClient:()=>J,connect:()=>q,loginCredential:()=>$,pushAgents:()=>Y,serverFor:()=>K});function K(e={}){let n=l(e.server);if(!c(n)){if(!e.yes)throw new t(`invalid-option`,`First use of Coder server ${new URL(n).origin} needs confirmation.`,{hint:`Inspect the origin, then pass yes: true.`});d(n)}return n}function q(e={}){let t=K(e);return J(t,{token:e.token,missingHint:`auth.login({ server: '${t}' })`,organization:e.organization})}function J(e,{token:i,missingHint:o,organization:s}={}){let c=l(e),u=r(c),d=u?.token,f=S.env.ADMIN_TOKEN,p=i??d??f;if(p&&p===f&&!n(c))throw new t(`invalid-option`,`ADMIN_TOKEN cannot be sent to a non-loopback server.`);if(!p)throw new t(`login-failed`,`Not signed in to ${c}.`,{...o?{hint:o}:{}});return new a(c,{token:p},{organization:s??u?.organization?.slug,renewal:u&&p===d?de(c,u):void 0})}async function Y(e,n,r){let i=(await f(n,p)).filter(e=>!e.builtin),a=r?i.filter(e=>e.id===r):i;if(r&&!a.length)throw new t(`invalid-option`,`No workspace agent named "${r}".`);let o=[];for(let t of a)o.push(await e.agents.put(t.id,{definition:t.definition,systemPrompt:await E.readFile(x.join(t.dir,`system.md`),`utf8`).catch(()=>``),files:await ue(t.dir),name:t.name,description:t.definition.description}));return o}const he=/^[A-Za-z_][A-Za-z0-9_]*$/,X=[`claude`,`codex`,`custom`],Z=(e,n)=>new t(`invalid-option`,e,n?{hint:n}:{}),ge=()=>new Promise(e=>setTimeout(e,1e3));async function _e(){let e=``;for await(let t of S.stdin)e+=t.toString();return e.replace(/\r?\n$/,``)}async function Q(e,t){let n=Array.isArray(t.env)?t.env:Object.keys(t.env);for(let e of n)if(!he.test(e))throw Z(`Invalid environment variable name ${JSON.stringify(e)}.`);if(!t.engine)throw Z(`Missing required --engine.`,`Use claude, codex, or custom`);let r=X.find(e=>e===t.engine);if(!r)throw Z(`Invalid --engine value.`,`Use claude, codex, or custom`);if(!n.length)throw Z(`At least one --env NAME is required.`);if(t.value!==void 0&&n.length!==1)throw Z(`--value requires exactly one --env NAME.`);let i=Array.isArray(t.env)?Object.fromEntries(await Promise.all(n.map(async e=>{let n=t.value===`-`?await _e():t.value??S.env[e];if(!n)throw Z(`Environment variable ${e} is not set.`);return[e,n]}))):t.env;return q(t).credentials.add({...e?{label:e}:{},env:i,engine:r,workspace:t.workspace,noCheck:t.noCheck,default:t.default})}async function $(e,t={}){if(e!==`claude`&&e!==`codex`)throw Z(`Name the engine to sign in to.`,`Usage: coder credentials login <claude|codex>`);let n=q(t).credentials,r=await n.login(e);t.onStart?.(()=>n.cancelLogin(r.id));let i=async e=>{for(;!e(r.state);)await ge(),r=await n.loginStatus(r.id)};return await i(e=>e!==`starting`),t.onOpen?.(r),e===`claude`&&r.state===`open`&&t.code&&await n.loginCode(r.id,await t.code()),await i(e=>e===`done`||e===`failed`),r}export{me as a,j as c,Y as i,q as n,K as o,$ as r,G as s,Q as t};
@@ -1 +0,0 @@
1
- import{H as e}from"./dispatch-D3Dqxijf.js";import{i as t,t as n}from"./cli-D5hyqGq0.js";import{p as r}from"./output-BKeyLbvt.js";import{n as i,o as a}from"./args-CxsMr9Un.js";import o from"node:process";const s={json:i,server:a,workspace:i,yes:i},c=()=>new e(`invalid-option`,`Missing credential label.`),l=t({name:`credentials remove`,globalFlags:{cwd:!1},help:{usage:`coder credentials remove <label> [--workspace] [--server [url]] [--json]`,flags:[[`--workspace`,`the workspace credential of that label`],n]},options:s,args:1,async run({options:e,args:[t]}){let{connect:n}=await import(`./remote-oQs6My_3.js`).then(e=>e.a);if(!t)throw c();return n(e).credentials.remove(t,e)},print:(e,{args:[t]})=>o.stdout.write(`Removed ${r.bold(t)}.\n`)});export{l as commandCredentialsRemove,s as credentialOptions,c as missingLabel};
@@ -1 +0,0 @@
1
- import{i as e,r as t}from"./cli-D5hyqGq0.js";import{p as n}from"./output-BKeyLbvt.js";import{t as r}from"./args-CxsMr9Un.js";import{serverOptions as i}from"./add-Df1Ezy3y.js";import a from"node:process";const o=e({name:`connection remove`,helpName:`connection rm`,help:{usage:`coder connection rm <name> [--server [url]] [--json]`,summary:`Remove a connection. The credential an API key connection reads stays.`,flags:[t]},options:{...r,...i},args:1,run:async({options:e,args:[t],cwd:n})=>{let{connection:r}=await import(`./connection-wq0CJZKh.js`).then(e=>e.n);return r.remove(t,{...e,cwd:n})},print:e=>a.stdout.write(`Removed ${n.bold(e.id)}.\n`)});export{o as commandConnectionRemove};
@@ -1 +0,0 @@
1
- import{qi as e}from"./core-DwsAMCnL.js";import{i as t}from"./cli-D5hyqGq0.js";import{p as n}from"./output-BKeyLbvt.js";import{i as r}from"./models-CdvmuaLv.js";import{n as i}from"./add-DcR15CL7.js";import a from"node:process";var o=e({commandModelRemove:()=>s,printModelChange:()=>c});const s=t({name:`model remove`,help:{usage:`coder model remove <name>`,summary:`Remove a configured custom model.`,flags:[[`--workspace`,`target <repo>/.coder/config.json instead of the user file`]]},options:i,args:1,run:({options:e,args:[t],cwd:n})=>r(n,t,e),print:e=>c(`removed`,e.removed,e.file)});function c(e,t,r){a.stdout.write(`${e} ${n.cyan(t)} ${n.dim(`(${r})`)}\n`)}export{o as n,c as t};
@@ -1 +0,0 @@
1
- import{H as e}from"./dispatch-D3Dqxijf.js";import{i as t,t as n}from"./cli-D5hyqGq0.js";import{p as r}from"./output-BKeyLbvt.js";import{n as i,o as a}from"./args-CxsMr9Un.js";import o from"node:process";const s={json:i,server:a,yes:i},c=t({name:`runner remove`,globalFlags:{cwd:!1},help:{usage:`coder runner remove <id> [--server [url]] [--json]`,flags:[n]},options:s,args:1,async run({options:t,args:[n]}){let{removeRunner:r}=await import(`./runner-DME7ohjt.js`).then(e=>e.a);if(!n)throw new e(`invalid-option`,`Missing runner id.`);return r(n,t)},print:(e,{args:[t]})=>o.stdout.write(`Removed ${r.bold(t)}.\n`)});export{c as commandRunnerRemove,s as runnerOptions};
@@ -1 +0,0 @@
1
- import{H as e}from"./dispatch-D3Dqxijf.js";import{i as t,t as n}from"./cli-D5hyqGq0.js";import{p as r}from"./output-BKeyLbvt.js";import{runnerOptions as i}from"./remove-D65xtbw5.js";import a from"node:process";const o=t({name:`runner rename`,globalFlags:{cwd:!1},help:{usage:`coder runner rename <id> <name> [--server [url]] [--json]`,flags:[n]},options:i,args:2,async run({options:t,args:[n,r]}){let{updateRunner:i}=await import(`./runner-DME7ohjt.js`).then(e=>e.a);if(!n||!r)throw new e(`invalid-option`,`Usage: coder runner rename <id> <name>`);return i(n,{name:r},t)},print:(e,{args:[t]})=>a.stdout.write(`Renamed ${t} to ${r.bold(e.name)}.\n`)});export{o as commandRunnerRename};
@@ -1,18 +0,0 @@
1
- import{qi as e}from"./core-DwsAMCnL.js";import{K as t,Nt as n,Tn as r,nt as i}from"./config-D2FxHWwi.js";import{i as a,r as o}from"./cli-D5hyqGq0.js";import{S as s,a as c,d as l,m as u,o as d,p as f,s as p,u as m,x as h,y as g}from"./output-BKeyLbvt.js";import{i as _,l as v,n as y,s as b,t as x}from"./args-CxsMr9Un.js";import S from"node:process";var C=e({LogRenderer:()=>z,OUTPUT_PREVIEW_CHARS:()=>500,commandResult:()=>q,finalMessageLine:()=>T,finishedHints:()=>U,printOutcome:()=>W,promptBlock:()=>D,replyOf:()=>H,statusStyle:()=>B,taskHeaderLines:()=>A,taskSummaryLines:()=>M,trimStep:()=>N});const w={server:_,workspace:b,yes:y};function T(e,t,n,r=f){let i=e?.error?.message??t;return e?.finalMessage||(i?`${r.red(`error:`)} ${i}`:n)}const E=1e3;function D(e,t=f,{truncate:n=!0}={}){let r=e=>e.split(`
2
- `).map(e=>` ${t.dim(e)}`);return!n||e.length<=E?[t.dim(`prompt:`),...r(e)]:[t.dim(`prompt:`),...r(e.slice(0,500).trimEnd()),t.light(` … <${e.length-E} chars trimmed> …`),...r(e.slice(-500).trimStart())]}function O(e,t=f){let n=[];e.permissions&&n.push([`perms`,e.permissions]),e.cwd&&n.push([`cwd`,e.cwd]);for(let t of e.addDirs??[])n.push([`add-dir`,t]);return n.map(([e,n])=>`${t.dim(e.padEnd(8))} ${n}`)}function k(e,n){if(n)return e.createdAt?`started ${c(t(e.createdAt))} ago`:``;let r=e.createdAt&&e.completedAt?Date.parse(e.completedAt)-Date.parse(e.createdAt):null;return[e.completedAt?`finished ${c(t(e.completedAt))} ago`:``,r!==null&&r>=0?`took ${c(r)}`:``].filter(Boolean).join(` · `)}function A(e,{status:t,tokens:r,tokenModel:a,files:o,live:s=!1,style:c=f}){let d=k(e,n.includes(e.status)||t===`waiting-approval`),p=e=>c.dim(e.padEnd(8));return[`${p(`task`)} ${c.cyan(e.id)}`,...e.name?[`${p(`name`)} ${e.name}`]:[],`${p(`status`)} ${u(t)}${d?` ${c.dim(`(${d})`)}`:``}`,`${p(`engine`)} ${i(e)}`,...O(e,c),...r?[`${p(`tokens`)} ${s?l(r):m(r,a??e.model)}${s?c.dim(` (so far)`):``}`]:[],...j(o,p,c)]}const j=(e,t,n)=>e?.length?[`${t(`files`)} ${e.join(`, `)} ${n.dim(`(shell edits not included)`)}`]:[];function M(e,{tokens:t,tokenModel:n,files:r,statusChanged:i=!0,style:a=f}){let o=e=>a.dim(e.padEnd(8)),s=e.createdAt&&e.completedAt?Date.parse(e.completedAt)-Date.parse(e.createdAt):null;return[...i?[`${o(`status`)} ${u(e.status)}${s!==null&&s>=0?` ${a.dim(`(took ${c(s)})`)}`:``}`]:[],...t?[`${o(`tokens`)} ${m(t,n??e.model)}`]:[],...j(r,o,a)]}function N(e,t=300,{plain:n=!1,style:r=f}={}){if(e.length<=t)return e;let i=`<${e.length-t} more chars>`;return`${e.slice(0,t)} ${n?i:r.dim(i)}`}const P=` `.repeat(8),F={assistant:`●`,reasoning:`✻`,tool:`→`,"tool-result":` `,usage:`·`,status:`·`,info:`·`,error:`✘`,steer:`⚑`};function I(e,t){let n=/^\x1b\[[0-9;]*m/.exec(t(``))?.[0];return t(n&&e.includes(L)?e.split(L).join(`${L}${n}`):e)}const L=`\x1B[0m`;function R(e,t,n,r,i=r.dim){if(!e)return``;let a=(e.length>t?e.slice(0,t):e).split(`
3
- `).map(e=>I(e,i));return e.length>t&&(a[a.length-1]+=` ${r.light(`<${e.length-t} more chars>`)}`),a.length>n?[...a.slice(0,n),r.light(`… +${a.length-n} more lines`)].join(`
4
- `):a.join(`
5
- `)}var z=class e{opts;presentation;separated=!1;entryAt=null;lastTool;lastCall=``;lastCallSeq=-1;seq=0;view;style;static async create(t={}){return new e(t,await import(`./log-view-DB4nXHXO.js`).then(e=>e.n))}constructor(e,t){this.opts=e,this.presentation=t,this.view=new t.LogView(e.cwd,{keepAnsi:!0}),this.style=e.style??f}get lastAssistantMessage(){return this.view.lastAssistantMessage}render(e){let t=Date.parse(String(e.at??``));this.entryAt=Number.isFinite(t)?t:null;let n=this.seq++,[r]=this.view.reduce({seq:n,at:t,level:`out`,line:``,entry:e});if(!r)return[];this.separated=r.separated&&r.seq===n;let i=this.style,a=r.sourceKind,o=r.title,s=this.opts.trim??500,l=this.opts.explicitTrim||s===1/0?1/0:6;if(r.kind===`usage`)return this.compose(a,i.dim(o),!1);if(r.kind===`approval`&&r.state){let t=e=>this.presentation.stripCwd(String(e??``),this.opts.cwd),i=t(e.summary),s=i.slice(i.indexOf(`: `)+2),l=i&&!this.lastCall.includes(s)?` · ${i}`:``,u=r.result&&r.result.durationMs>=1e3?` · ${c(r.result.durationMs)}`:``,d=r.seq===n?`${o} ${r.state}${l}`:`${r.state}${u}`;return this.compose(a,this.approval(d,t(e.reason??e.message)),!1)}if(r.kind===`approval`)return this.compose(a,this.approval(o,r.detail??``),!1);if(r.kind===`assistant`)return this.compose(a,o,!0);if(r.kind===`steer`)return this.compose(a,i.yellow(o),!0);if(r.kind===`error`)return this.compose(a,i.red(o),!0);if(r.kind===`reasoning`){let e=Math.round((r.durationMs??0)/1e3),t=e>=1?`thought ${c(e*1e3)} · `:``,n=l===1/0?`${i.dim(t)}${R(o,s,1/0,i)}`:this.clip(`${t}${o.split(`
6
- `)[0]??``}`,3,i.dim);return this.compose(a,n,!1)}if(r.kind===`tool`&&r.seq===n)return this.lastTool=r.tool,this.lastCall=o,this.lastCallSeq=r.seq,this.compose(a,this.clip(o.replace(/\s*\n\s*/g,` `),2,i.light),!1);if(r.kind===`tool`||r.kind===`tool-result`){let t=r.kind===`tool`&&(e.callId||e.callMessage)&&(r.seq!==this.lastCallSeq||o!==this.lastCall)?this.compose(`tool`,this.clip(o.replace(/\s*\n\s*/g,` `),2,i.light),!1):[];t.length&&(this.lastTool=r.tool,this.lastCall=o,this.lastCallSeq=r.seq);let n=r.result??{ok:r.tone!==`error`,exitCode:r.exitCode,durationMs:r.durationMs??0,detail:o},a=[r.kind===`tool-result`&&e.callId?i.dim(`from ${r.tool||`tool`} (${String(e.callId)})`):r.tool&&r.tool!==this.lastTool?i.dim(`from ${r.tool}`):``,n.ok?``:i.red(n.exitCode===void 0?`failed`:`exit ${n.exitCode}`),n.durationMs>=3e3?i.dim(c(n.durationMs)):``].filter(Boolean),u=R(n.detail,s,l,i),d=[...a.length?[a.join(i.dim(` · `))]:[],...u?[u]:[]];return[...t,...d.length?this.compose(`tool-result`,d.join(`
7
- `),!1):[]]}return this.compose(a,this.clip(o,3,i.dim),!1)}approval(e,t){let n=this.style,r=this.opts.width?this.opts.width-P.length:1/0,i=`${e}${t?`. ${t}`:``}`;return!t||h(i)<=r?`${n.light(e)}${t?n.dim(`. ${t}`):``}`:[this.clip(e,1,n.light),this.clip(t,2,n.dim)].join(`
8
- `)}clip(e,t,n){let r=this.opts.trim??500;if(this.opts.explicitTrim||r===1/0)return R(e,r,1/0,this.style,n);let i=this.opts.width;return i?s(e,Math.max(i-P.length,24),t).map(e=>I(e,n)).join(`
9
- `):n(e)}compose(e,t,n){let r=this.separated?[``]:[],i=F[e]??(this.presentation.isApproval(e)?`⚑`:`·`),[a=``,...o]=t.split(`
10
- `);return[...r,`${this.gutter(e)}${this.style.dim(i)} ${a}`,...o.map(e=>n?e:`${P}${e}`)]}gutter(e){let t=` `.repeat(6);return e===`tool-result`||!this.opts.startedAt||this.entryAt===null?t:`${this.style.dim(d(this.entryAt-this.opts.startedAt).padStart(5))} `}};const B=(e,t)=>e===`completed`?t.green(e):e===`failed`?t.red(e):e===`running`?t.yellow(e):t.dim(e);function V(e){return e.startedAt===void 0?``:c((e.finishedAt??Date.now())-e.startedAt)}function H(e){let t=(e.result?.output??``).trim().split(`
11
- `);for(let e=t.length-1;e>=0;--e){let n=t[e].trim();if(n.startsWith(`{`))try{let e=JSON.parse(n).reply;return typeof e==`string`?e:void 0}catch{return}}}function U(e,t,n=!1){return p([`Continue on the same task: coder task steer ${e} "<follow-up>"${n?` --server`:``}`],t)}function W(e,t){S.stdout.write(`${t.bold(e.task.id)} ${B(e.status,t)}${e.error?` ${t.red(e.error)}`:``}${V(e)?` ${t.dim(`took ${V(e)}`)}`:``}\n`),e.credential&&S.stdout.write(`${t.dim(`credential`)} ${e.credential}\n`);let n=H(e);n&&S.stdout.write(`\n${t.bold(`Reply`)}\n${n.trim()}\n`),[`completed`,`failed`,`cancelled`].includes(e.status)&&S.stdout.write(`\n${U(e.task.id,t,!0)}\n`)}function G(e,t=!1){let{task:n,steps:r,result:i}=e;return{taskId:n.id,name:n.name??null,prompt:n.prompt??null,system:n.system??null,status:e.status,engine:n.engine,model:n.model??null,effort:n.effort??null,permissions:n.permissions??null,cwd:n.cwd??null,addDirs:n.addDirs??[],createdAt:n.createdAt??null,completedAt:n.completedAt??null,...e.idleMs===void 0?{}:{idleMs:e.idleMs,lastActivityAt:e.lastActivityAt??null,stalled:e.stalled},pendingApprovals:e.pendingApprovals,...r.length?{steps:r}:{},turnCount:e.turns.length,...t?{turns:e.turns}:{},result:i}}async function K(e,t,i={}){let{task:a,steps:o,result:s,turns:l,pendingApprovals:u}=e,d=f,m=n.includes(a.status),h=A(a,{status:e.status,tokens:s?.tokens??e.liveTokens??null,tokenModel:s?.model,files:s?.touchedFiles?.map(e=>r(a.cwd??t,e)),live:!s?.tokens&&!!e.liveTokens,style:d});if(a.prompt&&h.push(...D(a.prompt,d)),u.length){h.push(``,d.dim(`pending approvals:`));for(let e of u)h.push(` ${d.cyan(e.id)} ${e.summary}`),e.cwd&&h.push(` ${d.dim(`runs in ${e.cwd}`)}`),h.push(` ${d.bold(`coder task approve ${a.id} ${e.id}`)} ${d.dim(`(--deny to reject)`)}`)}if(o.length){h.push(``,d.dim(`steps:`));let e=await z.create({cwd:a.cwd??t,startedAt:Date.parse(a.createdAt??``)||void 0,width:g(),style:d}),n=s?.finalMessage&&String(o.at(-1)?.message??``).trim()===String(s.finalMessage).trim()?o.slice(0,-1):o;for(let t of n)h.push(...e.render(t))}if(h.push(``),i.turns&&l.length)l.forEach((e,t)=>{t&&h.push(``),h.push(d.dim(`Turn ${t+1} of ${l.length}. ${N(String(e.prompt??``))}`)),h.push(String(e.finalMessage||d.dim(`(no final message)`)))});else if(s)h.push(T({...s,error:s.error??void 0},a.error,`(no final message)`,d)),l.length>1&&h.push(d.dim(`Turn ${l.length} of ${l.length}. All answers are in coder task result ${a.id} --turns.`));else if(m){let{lastLog:t}=e;h.push(d.dim(e.stalled?`Result pending. No progress for ${c(e.idleMs??0)}. The task may be stalled.${t?` Last: ${N(t.message??t.kind??``)}`:``}`:`Result pending. The task is still running.`))}else h.push(d.dim(`(no result)`));if(m||h.push(``,U(a.id,d)),m&&!i.wait){let t=[`Wait in its own background shell, one per task; do not poll: coder task result ${a.id} --wait`,`Follow live: coder task watch ${a.id}`];e.stalled&&t.push(`Check the transcript: coder task result ${a.id} --tail all`),h.push(``,p(t,d))}S.stdout.write(`${h.join(`
12
- `)}\n`)}const q=a({name:`task result`,help:{usage:`coder task result [task-id] [--server [url]]`,summary:`Show a task's status and its final answer (result pending while it runs), plus
13
- any pending approvals. --wait blocks until it finishes, then prints. --tail <n>
14
- includes the last n progress-log steps (--tail all for the whole transcript).
15
- Defaults to the most recent task. Shortcut: \`coder result\`.
16
-
17
- Run each --wait in its own background shell, one per task. Never wait on several
18
- tasks in one call, or their approvals and answers never reach you one by one.`,flags:[[`--wait`,`block until the task finishes or needs an approval, then print`],[`--turns`,`every turn's answer (a steered task accretes turns)`],[`--tail <n|all>`,`include the last n progress-log steps (default: 0, final result only)`],o],exitCodes:[[`0`,`The task completed successfully.`],[`1`,`The task failed or was cancelled.`],[`4`,`An approval is pending; answer it, then run --wait again.`]],examples:[[`coder result <task-id> --wait`,`block until the task finishes, print the answer`],[`coder result <task-id> --turns`,`every turn's answer for a steered task`]]},options:{...x,tail:v,wait:y,turns:y,...w},args:1,run:async({options:e,args:[t]})=>{let{tasks:n}=await import(`./task-IoBYe7ok.js`).then(e=>e.t);return n.result(t,{...e,organization:e.workspace,onWaiting:e=>S.stderr.write(`${f.dim(`[coder] waiting for task ${e} to finish...`)}\n`)})},json:(e,{options:t})=>`attempts`in e?e:G(e,t.turns),print:(e,{options:t,cwd:n})=>`attempts`in e?W(e,f):K(e,n,t),exit:(e,{options:t})=>t.wait&&!(`attempts`in e)?e.task.status===`completed`?0:1:void 0});export{D as a,B as c,N as d,W as i,A as l,T as n,H as o,U as r,C as s,z as t,M as u};
@@ -1,157 +0,0 @@
1
- import { v as task } from "./index-CVjkwYeS.js";
2
- import * as z from "zod";
3
- //#region src/flow/builtin/review.d.ts
4
- declare const args: z.ZodObject<{
5
- pr: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
6
- base: z.ZodOptional<z.ZodString>;
7
- head: z.ZodOptional<z.ZodString>;
8
- since: z.ZodOptional<z.ZodString>;
9
- post: z.ZodOptional<z.ZodBoolean>;
10
- author: z.ZodOptional<z.ZodString>;
11
- path: z.ZodOptional<z.ZodArray<z.ZodString>>;
12
- exclude: z.ZodOptional<z.ZodArray<z.ZodString>>;
13
- engine: z.ZodOptional<z.ZodString>;
14
- model: z.ZodOptional<z.ZodString>;
15
- effort: z.ZodOptional<z.ZodEnum<{
16
- low: "low";
17
- medium: "medium";
18
- high: "high";
19
- }>>;
20
- cwd: z.ZodOptional<z.ZodString>;
21
- }, z.core.$strip>;
22
- type ReviewArgs = z.infer<typeof args>;
23
- /** Tasks at once unless the caller sets a concurrency. */
24
- declare const concurrency = 4;
25
- declare const Finding: z.ZodObject<{
26
- file: z.ZodString;
27
- line: z.ZodNumber;
28
- severity: z.ZodEnum<{
29
- critical: "critical";
30
- major: "major";
31
- minor: "minor";
32
- nit: "nit";
33
- }>;
34
- category: z.ZodEnum<{
35
- correctness: "correctness";
36
- security: "security";
37
- reliability: "reliability";
38
- performance: "performance";
39
- maintainability: "maintainability";
40
- testing: "testing";
41
- documentation: "documentation";
42
- }>;
43
- summary: z.ZodString;
44
- failure_scenario: z.ZodString;
45
- }, z.core.$strict>;
46
- type Finding = z.infer<typeof Finding> & {
47
- fingerprint: string;
48
- };
49
- interface ReviewSummary {
50
- baseSha: string;
51
- headSha: string;
52
- /** Also covers uncommitted and untracked files on top of `headSha`. */
53
- worktree: boolean;
54
- files: number;
55
- model: string | null;
56
- elapsedMs: number;
57
- posted?: number;
58
- /** Parts left out of the review, such as uninitialized submodules. */
59
- warnings?: string[];
60
- }
61
- interface ReviewResult {
62
- findings: Finding[];
63
- summary: ReviewSummary;
64
- }
65
- type Exec = ReviewExec;
66
- /** New-side line ranges per file from a unified diff. */
67
- declare function changedLines(patch: string): Map<string, Array<[number, number]>>;
68
- /** Stable dedupe key: prose may change between otherwise identical reviews. */
69
- declare function fingerprint(file: string, line: number, category: string): string;
70
- /** AGENTS.md / CLAUDE.md, then .coder/review.md, all read at `sha`. */
71
- declare function repositoryRules(exec: Exec, sha: string): string;
72
- interface ReviewServices {
73
- exec?: Exec;
74
- reviewTask?: typeof task;
75
- /** Test-only override for the transient task credential. */
76
- integrationToken?: string;
77
- }
78
- declare function review(a: ReviewArgs, services?: ReviewServices): Promise<ReviewResult>;
79
- type ReviewExec = (command: string, args: string[], input?: string) => string;
80
- interface ReviewPostFinding {
81
- file: string;
82
- line: number;
83
- severity: 'critical' | 'major' | 'minor' | 'nit';
84
- category: string;
85
- summary: string;
86
- failure_scenario: string;
87
- fingerprint: string;
88
- }
89
- interface ReviewPostSummary {
90
- author: string;
91
- baseSha: string;
92
- headSha: string;
93
- model: string | null;
94
- elapsedMs: number;
95
- }
96
- interface ReviewPostInput {
97
- repo: string;
98
- pr: number;
99
- cwd?: string;
100
- findings: ReviewPostFinding[];
101
- summary: ReviewPostSummary;
102
- since?: string;
103
- }
104
- interface ReviewTargetInput {
105
- pr: number | string;
106
- /** The only repository the target may be in. */
107
- repo?: string;
108
- cwd?: string;
109
- since?: string;
110
- author?: string;
111
- }
112
- interface ReviewTarget {
113
- pr?: {
114
- number: number;
115
- repo: string;
116
- author: string;
117
- };
118
- baseSha: string;
119
- headSha: string;
120
- since?: string;
121
- }
122
- interface ReviewAuth {
123
- /** Installation token from the task context. Omit to use local gh auth. */
124
- token?: string;
125
- exec?: ReviewExec;
126
- }
127
- /** The platform reviews post to; its tool server holds the token. */
128
- declare const REVIEW_PLATFORM = "github";
129
- interface ReviewComment {
130
- id: number;
131
- body?: string | null;
132
- user?: {
133
- login?: string;
134
- } | null;
135
- }
136
- declare function reviewCli(cwd?: string, token?: string): ReviewExec;
137
- declare function parseGithubPr(value: number | string): {
138
- number: number;
139
- repo?: string;
140
- };
141
- declare function reviewFingerprints(comments: Array<{
142
- body?: string | null;
143
- }>): Set<string>;
144
- declare function lastReviewSummary(comments: Array<{
145
- id: number;
146
- body?: string | null;
147
- }>): {
148
- id: number;
149
- head: string;
150
- } | undefined;
151
- declare function ownReviewComments(comments: ReviewComment[], author: string): ReviewComment[];
152
- /** Resolve and fetch a GitHub pull request for the integration-generic review flow. */
153
- declare function resolveReviewTarget(input: ReviewTargetInput, auth?: ReviewAuth): ReviewTarget;
154
- /** Post unseen findings and upsert the sticky summary through GitHub's integration. */
155
- declare function postReview(input: ReviewPostInput, auth?: ReviewAuth): number;
156
- //#endregion
157
- export { repositoryRules as C, reviewFingerprints as D, reviewCli as E, postReview as S, review as T, concurrency as _, ReviewAuth as a, ownReviewComments as b, ReviewPostInput as c, ReviewServices as d, ReviewSummary as f, changedLines as g, args as h, ReviewArgs as i, ReviewPostSummary as l, ReviewTargetInput as m, Finding as n, ReviewExec as o, ReviewTarget as p, REVIEW_PLATFORM as r, ReviewPostFinding as s, Exec as t, ReviewResult as u, fingerprint as v, resolveReviewTarget as w, parseGithubPr as x, lastReviewSummary as y };
@@ -1,2 +0,0 @@
1
- import{d as e,i as t,n,p as r}from"./cli-D5hyqGq0.js";import{p as i,r as a,s as o,u as s}from"./output-BKeyLbvt.js";import{c,i as l,n as u,s as d,t as f}from"./args-CxsMr9Un.js";import{i as p,r as m}from"./result-DXL9N9Ip.js";import{printLine as h}from"./watch-BMuVZorc.js";import{TASK_FLAGS as g}from"./task-4gw9OZun.js";import _ from"node:process";function v(t){let n=e([{usage:`coder task result ${t} --wait`,blurb:`run this in its own background shell, one per task (never wait on several tasks in one call). Returns with the answer or a pending approval.`},{usage:`coder task steer ${t} "<follow-up>"`,blurb:`steer the task with a message (use 'ask' without interrupting main thread)`},{usage:`coder task stop ${t}`,blurb:`stop the task`},{usage:`coder task list`,blurb:`recent tasks`},{usage:`coder task --help`,blurb:`all task commands`}],i,i.blue);return[...r(`Next step`,n.slice(0,1),i),...r(`Related`,n.slice(1),i)].join(`
2
- `)}function y(e,t){_.stdout.write(`${i.dim(`[coder]`)} task ${i.blue(e)} started in the background (${t}).\n`),_.stdout.write(`${v(e)}\n`)}function b(e){_.stderr.write(`${i.dim(`[coder]`)} Task ${i.cyan(e)} started and is waiting to finish. Press Ctrl-C to detach. It keeps running.\n`),_.stderr.write(`${v(e)}\n`)}function x(e){_.stderr.write(`\n${i.dim(`[coder] Detached. The task is still running.`)}\n\n${o([`Wait in its own background shell, one per task: coder task result ${e} --wait`],a)}\n`)}function S(e){_.stdout.write(`\n${e.finalMessage||(e.error?`${i.red(`error:`)} ${e.error}`:`(no final message)`)}\n\n`);let t=e.tokens?` tokens=${s(e.tokens,e.model)}`:``;_.stderr.write(`${i.dim(`[coder] task=${e.taskId} status=${e.status}${t}`)}\n\n${m(e.taskId,a)}\n`)}const C=t({name:`task run`,help:{usage:`coder task run "<task text>"`,summary:`Dispatch a coding task to the configured engine. Backgrounds by default and\nprints a task id; --wait runs in the foreground and prints the answer.\nShortcut: \`coder run "<text>"\`.\n\nWriting a task: one task per focused goal, independent goals as parallel runs.\nThe worker starts with nothing but the text, so include the goal, file paths,\nconstraints and any context only you have. Delegate rather than doing the work\nyourself first, however small it looks.\n\nWaiting: run \`coder task result <task-id> --wait\` in its own background shell, one\nper task. Never wait on several tasks in one call, or their approvals and answers\nnever reach you one by one.\n\n${n}`,flags:[[`--output-schema <json>`,`JSON Schema for the task answer`],[`--name <name>`,`label the task (shown in list/result)`],[`--agent <id>`,`run as that agent: its system.md, engine settings, MCP servers and flows; flags override them`],[`--system <text>`,`standing instructions prepended to the task (kept out of prompt previews)`],...g,[`--server [url] [--workspace <slug>]`,`run the task on your Coder server and follow it here (--background prints its id)`],[`--repo <owner/name>`,`with --server: check out a repo from the workspace's installs`],[`--runner <name>`,`with --server: where it runs (a runner kind or a registered runner)`]],exitCodes:[[`0`,`The task started, or --wait printed a successful answer.`],[`1`,`Dispatch or the task failed.`],[`3`,`No engine could start; follow fallback.instructions in the JSON payload.`],[`4`,`An approval is pending; answer it, then run result --wait again.`],[`130`,`The foreground wait was detached and the task is still running.`]],examples:[[`coder run "add a /health endpoint"`,`dispatch in the background, print a task id`],[`coder result <task-id> --wait`,`then block until it finishes and print the answer`],[`coder run --wait "fix the failing test"`,`or block on the run itself`],[`coder task run --model luna --system "tests live in test/, don't touch anything outside of it" "rename foo to bar"`,`pick an engine via its model alias; --system adds standing instructions`],[`coder task run --agent reviewer "review the last commit"`,`run a repo agent from .coder/agents/reviewer`],[`coder run --add-dir ../api --add-dir ../shared "update the client for the new endpoint"`,`let the task reach sibling repos too`]]},options:{...f,agent:d,"output-schema":d,engine:d,model:d,effort:d,permissions:d,host:d,name:d,system:d,mcp:d,connections:d,"add-dir":c,background:u,wait:u,"simulate-approval":u,server:l,workspace:d,yes:u,repo:d,runner:d},args:1/0,async run({options:e,args:t}){let{tasks:n}=await import(`./task-IoBYe7ok.js`).then(e=>e.t),r=e.json,a;return _.on(`SIGINT`,()=>{a&&x(a),_.exit(130)}),n.run(t.join(` `).trim(),{cwd:e.cwd,agent:e.agent,outputSchema:e[`output-schema`]?JSON.parse(e[`output-schema`]):void 0,engine:e.engine,model:e.model,effort:e.effort,permissions:e.permissions,name:e.name,system:e.system,mcp:e.mcp,connections:e.connections?.split(`,`).map(e=>e.trim()).filter(Boolean),addDirs:e[`add-dir`],wait:e.server===void 0?e.wait:!e.background,simulateApproval:e[`simulate-approval`],repo:e.repo,runner:e.runner,server:e.server,yes:e.yes,organization:e.workspace,onFallback:({engine:e,detail:t,next:n})=>_.stderr.write(`[coder] ${e} failed to start (${t}); falling back to ${n}.\n`),onNote:e=>_.stderr.write(`[coder] ${e}\n`),onWaiting:e=>{a=e,r||b(e)},onLog:e=>r?_.stdout.write(`${JSON.stringify(e,null,2)}\n`):h(e,i)})},print(e,{options:t}){if(`attempts`in e)return t.background?void _.stdout.write(`${e.task.id}\n`):p(e,i);t.wait?S(e):y(e.taskId,e.status)},exit:(e,{options:t})=>(`attempts`in e?!t.background:t.wait)?e.status===`completed`?0:1:void 0});export{C as commandTask};
@@ -1,5 +0,0 @@
1
- import{H as e}from"./dispatch-D3Dqxijf.js";import{i as t}from"./cli-D5hyqGq0.js";import{p as n,s as r}from"./output-BKeyLbvt.js";import{n as i,s as a,t as o}from"./args-CxsMr9Un.js";import{FlowStepRenderer as s,printFollow as c,printRunSummary as l}from"./watch-Bl_pCGfq.js";import u from"node:process";const d={...o,args:a,wait:i,concurrency:a,"max-tasks":a,"dry-run":i};function f(t){let n={};for(let r of t){let t=r.indexOf(`=`);if(t===-1)throw new e(`invalid-option`,`Invalid argument "${r}": expected key=value.`,{hint:`Help: coder flow run --help`});let i=r.slice(0,t),a=r.slice(t+1);try{n[i]=JSON.parse(a)}catch{n[i]=a}}return n}function p(t,n){if(t!==void 0)try{return JSON.parse(t)}catch(t){throw new e(`invalid-option`,`Invalid --args JSON: ${t instanceof Error?t.message:String(t)}`)}return n.length?f(n):{}}const m=e=>e?Number(e):void 0,h=(e,t)=>({cwd:t,dryRun:e[`dry-run`],concurrency:m(e.concurrency),maxTasks:m(e[`max-tasks`]),argv:u.argv.slice(2),wait:e.wait}),g=e=>e[`dry-run`]&&!e.json?v():{},_=t({name:`flow run`,help:{usage:`coder flow run <name|path> [--args '<json>' | key=value...] [--wait] [--concurrency N] [--max-tasks N] [--json] [--dry-run]`,summary:`Run a flow: a TypeScript file that orchestrates many coder tasks with gates,
2
- journaling, and resume. Prints the run id and orchestrates in the background;
3
- --wait follows the run in the foreground with live progress (Ctrl-C detaches;
4
- it keeps running), and \`coder flow watch\` shows the same lines any time.
5
- Stop a run with \`coder flow stop\`.`,flags:[[`--wait`,`follow the run in the foreground (Ctrl-C detaches; it keeps running)`],[`--args <json>`,`the flow's input as a JSON value (or pass bare key=value pairs)`],[`--concurrency <n>`,`tasks running at once (default: CPU count)`],[`--max-tasks <n>`,`total tasks the run may dispatch (default: CPU count x 10)`],[`--dry-run`,`print every resolved prompt and gate command without dispatching`]],examples:[[`coder flow run audit-routes --wait`,`run a discovered flow`],[`coder flow run ./scratch/one-off.ts --wait`,`run a flow by path`],[`coder flow run verify --args '{"clusters":["a","b"]}' --wait`,`pass structured input`]]},options:d,args:1/0,async run({options:t,args:[n,...r],cwd:i}){let{startRun:a}=await import(`./executor-5j-Ewzzb.js`).then(e=>e.b);if(!n)throw new e(`invalid-option`,`Missing flow name or path.`,{hint:[`Usage: coder flow run <name|path>`,`List: coder flow discover`]});let o=await a(n,{...h(t,i),args:p(t.args,r)},g(t));return o.status===`running`&&o.watch&&await c(o.watch,t),o},print:e=>e.status===`running`?y(e):l(e)});function v(){let e=new s,t=t=>e.emit(t);return{onTaskStart:e=>t({kind:`task-start`,...e}),onTaskEnd:e=>t({kind:`task-end`,...e}),onGateStart:e=>t({kind:`gate-start`,...e}),onGate:e=>t({kind:`gate`,...e}),onLog:(e,n)=>t({kind:`log`,message:e,depth:n}),onFlowStart:e=>t({kind:`flow-start`,...e}),onReplay:e=>t({kind:`replay`,count:e})}}function y(e){u.stdout.write(`${n.dim(`[flow]`)} run ${n.cyan(e.runId)} started in the background (running).\n`),u.stdout.write(`\n${r([`Result: coder flow result ${e.runId}`,`Runs: coder flow list`],n)}\n`)}export{d as RUN_FLAGS,_ as commandRun,g as hooks,p as parseRunArgs,y as printDetached,h as runOptions};
@@ -1,2 +0,0 @@
1
- import{m as e}from"./prompt-C--TI1qn.js";import{i as t,r as n}from"./cli-D5hyqGq0.js";import{p as r,s as i}from"./output-BKeyLbvt.js";import{i as a,n as o,s,t as c}from"./args-CxsMr9Un.js";import{i as l}from"./result-DXL9N9Ip.js";import{printLine as u}from"./watch-BMuVZorc.js";import d from"node:process";const f={...c,flow:s,server:a,workspace:s,wait:o,task:s,yes:o},p=t({name:`agent run --task`,options:f,run:async({options:e,cwd:t})=>{let{agents:n}=await import(`./agent-C1HI4JlI.js`).then(e=>e.t);return n.runTask(e.task,{cwd:t})}}),m=t({name:`agent run`,help:{usage:`coder agent run <agent> <file> [--server [url] [--wait]] [--flow <name>] [--json] [--cwd <dir>]`,summary:`Run a recorded platform event (AgentEvent JSON) through an agent. With --server it goes through your Coder server exactly like a webhook: real app, tokens, runner, and the reply is posted. Without it the engine runs here on the agent's prompt and this checkout, platform tools off, and the reply is printed.`,flags:[n,[`--wait`,`with --server: follow the task log here until it finishes, then print the reply`],[`--flow <name>`,`override the matched flow`]],examples:[[`coder agent run helper sample-slack-mention.json`,`offline: print what the agent would reply`],[`coder agent run helper event.json --server`,`for real, through the server`]]},options:f,args:2,run:async({options:e,args:[t,n],cwd:i})=>{let{agents:a}=await import(`./agent-C1HI4JlI.js`).then(e=>e.t);return a.run(t,n,{...e,cwd:i,organization:e.workspace,...e.json?{}:{onLog:e=>u(e,r),onDone:e=>l(e,r)}})},json:e=>Array.isArray(e)&&e.length===1?e[0]:e,print(t,{options:n}){if(!Array.isArray(t)){if(`tasks`in t){if(!t.tasks.length)return void d.stdout.write(`The server accepted the event but no agent matched it.
2
- `);d.stdout.write(`${r.bold(`Queued on the server`)} as task ${t.tasks.join(`, `)}.\n\n${i([`Watch it: coder task watch ${t.tasks[0]} --server ${e(n.server)}`],r)}\n`);return}t.reply===void 0?t.result!==void 0&&d.stdout.write(`${JSON.stringify(t.result,null,2)}\n`):d.stdout.write(`${t.reply.trim()}\n`)}}}),h=Object.assign(e=>(e.some(e=>e===`--task`||e.startsWith(`--task=`))?p:m)(e),{commandName:`agent run`,help:m.help});export{h as commandAgentRun};
@@ -1 +0,0 @@
1
- import{s as e}from"./cli-D5hyqGq0.js";const t=e(`runner`,{add:async()=>(await import(`./add-BDBCRqKN.js`)).commandRunnerAdd,default:async()=>(await import(`./default-dQC33jLt.js`)).commandRunnerDefault,test:async()=>(await import(`./test-BnGF24Hg.js`)).commandRunnerTest,serve:async()=>(await import(`./serve-ByWMT5Gm.js`)).commandRunnerServe,list:async()=>(await import(`./list-D2eSpGoo.js`)).commandRunnerList,rename:async()=>(await import(`./rename-Qwr_XDxD.js`)).commandRunnerRename,remove:async()=>(await import(`./remove-D65xtbw5.js`)).commandRunnerRemove},{menu:[{usage:`add <kind>`,blurb:`connect a runner`},{usage:`default <id>`,blurb:`set the default in its scope`},{usage:`test <id>`,blurb:`check a runner connection`},{usage:`serve --url <public url>`,blurb:`run your server's tasks on this machine`},{usage:`list`,blurb:`list your runners and the workspace's`},{usage:`rename <id> <name>`,blurb:`rename a runner`},{usage:`remove <id>`,blurb:`remove a runner`}],description:[`Run your Coder server's tasks on your own machine, reached through any tunnel.`],exampleCommand:`runner serve`});export{t as commandRunner};
@@ -1 +0,0 @@
1
- import{qi as e}from"./core-DwsAMCnL.js";import{H as t}from"./dispatch-D3Dqxijf.js";import{n}from"./remote-oQs6My_3.js";var r=e({addRunner:()=>a,addRunnerFields:()=>u,listRunners:()=>i,pairRunner:()=>o,removeRunner:()=>l,testRunner:()=>c,updateRunner:()=>s});const i=(e={})=>n(e).runners.list(),a=(e,t={})=>n(t).runners.add(e),o=(e,t={})=>n(t).runners.pair(e),s=(e,t,r={})=>n(r).runners.update(e,t),c=(e,t={})=>n(t).runners.test(e),l=(e,t={})=>n(t).runners.remove(e);async function u(e,r){let i=n(r),{catalog:a}=await i.runners.list(),o=a.find(t=>t.kind===e);if(!o)throw new t(`invalid-option`,`Unknown runner kind.`);if(!o.available)throw new t(`invalid-option`,o.reason??`Runner unavailable.`);let s={};for(let e of r.field??[]){let n=e.indexOf(`=`);if(n<1)throw new t(`invalid-option`,`Use --field key=value.`);let r=e.slice(0,n),i=e.slice(n+1),a=o.fields.find(e=>e.key===r);if(!a)throw new t(`invalid-option`,`Unknown runner field ${r}.`);if(a.secret){if(!/^env:[A-Z_][A-Z0-9_]*$/.test(i)||!process.env[i.slice(4)])throw new t(`invalid-option`,`Read ${r} from the environment with --field ${r}=env:VARIABLE.`);s[r]=process.env[i.slice(4)]}else s[r]=i}let c=r.scope??((await i.me()).user?`personal`:`workspace`);if(c!==`personal`&&c!==`workspace`)throw new t(`invalid-option`,`Scope must be personal or workspace.`);return o.connect===`pair`?i.runners.pair({name:r.name,scope:c}):i.runners.add({kind:o.kind,name:r.name??o.name,scope:c,config:s})}export{r as a,l as i,i as n,c as o,o as r,s,a as t};
@@ -1,36 +0,0 @@
1
- import{Rt as e,qi as t}from"./core-DwsAMCnL.js";import{Hn as n,In as r,Yt as i,c as a,zn as o}from"./config-D2FxHWwi.js";import{u as s}from"./slack-C_RlVDz7.js";import{t as c}from"./integrations-D3OgJk6Y.js";import{n as l,t as u}from"./task-CB-j4EO8.js";import{a as d,i as f,n as p,r as ee,t as te}from"./local-XNsjb-UM.js";import m from"node:process";import{execFile as h}from"node:child_process";import{createCipheriv as g,createDecipheriv as _,createHash as v,createHmac as ne,randomBytes as y,randomUUID as b}from"node:crypto";import x,{isIP as S}from"node:net";import{lookup as re}from"node:dns/promises";import{request as ie}from"node:https";const ae=r({env:o(n(),n().check(e(1)))}),C=`plain`;function w(e,t=`SERVER_ENCRYPTION_KEY`){if(!e)return;let n=Buffer.from(e,`base64`);if(n.length!==32)throw Error(`${t} must be a base64-encoded 32-byte key`);return n}function T(e){return w(e.encryptionKey)}function E(e){let t=w(e);return t?v(`sha256`).update(t).digest().readInt32BE(0):0}function D(e){return[[e.encryptionKey,`SERVER_ENCRYPTION_KEY`],[e.previousEncryptionKey,`SERVER_ENCRYPTION_KEY_PREVIOUS`]].filter(e=>!!e[0]).map(([e,t])=>({value:w(e,t),version:E(e)}))}function O(e){let t=ae.safeParse(e);if(!t.success||!Object.keys(t.data.env).length)throw Error(`Invalid engine credential`);return t.data}function oe(e,t){let n=T(e);if(!n)return{iv:C,tag:``,ciphertext:Buffer.from(JSON.stringify(O(t))).toString(`base64`)};let r=y(12),i=g(`aes-256-gcm`,n,r),a=Buffer.concat([i.update(JSON.stringify(O(t)),`utf8`),i.final()]);return{iv:r.toString(`base64`),tag:i.getAuthTag().toString(`base64`),ciphertext:a.toString(`base64`)}}function se(e,t){if(t.iv===C)return O(JSON.parse(Buffer.from(t.ciphertext,`base64`).toString(`utf8`)));for(let n of D(e))try{let e=_(`aes-256-gcm`,n.value,Buffer.from(t.iv,`base64`));return e.setAuthTag(Buffer.from(t.tag,`base64`)),O(JSON.parse(Buffer.concat([e.update(Buffer.from(t.ciphertext,`base64`)),e.final()]).toString(`utf8`)))}catch{}throw Error(`Stored credential was sealed with an unavailable encryption key`)}function ce(e,t){let n=T(e);if(!n)return`${C}.${Buffer.from(JSON.stringify(t)).toString(`base64`)}`;let r=y(12),i=g(`aes-256-gcm`,n,r),a=Buffer.concat([i.update(JSON.stringify(t),`utf8`),i.final()]);return[r,i.getAuthTag(),a].map(e=>e.toString(`base64`)).join(`.`)}function k(e,t){if(t.startsWith(`${C}.`))return JSON.parse(Buffer.from(t.slice(6),`base64`).toString(`utf8`));let[n,r,i]=t.split(`.`).map(e=>Buffer.from(e,`base64`));for(let t of D(e))try{let e=_(`aes-256-gcm`,t.value,n);return e.setAuthTag(r),JSON.parse(Buffer.concat([e.update(i),e.final()]).toString(`utf8`))}catch{}throw Error(`Stored secret was sealed with an unavailable encryption key`)}function A(e,t){if(t.startsWith(`${C}.`))return 0;let[n,r,i]=t.split(`.`).map(e=>Buffer.from(e,`base64`));for(let t of D(e))try{let e=_(`aes-256-gcm`,t.value,n);return e.setAuthTag(r),e.update(i),e.final(),t.version}catch{}throw Error(`Stored secret was sealed with an unavailable encryption key`)}function le(e,t,n={}){let r=`coder-${e.id.replace(/[^a-zA-Z0-9_.-]/g,`-`).slice(0,48)}-${Date.now()}`;n.tarballUrl&&(t={...t,CODER_RUNNER_TARBALL_URL:n.tarballUrl});let i=Object.keys(t).flatMap(e=>[`-e`,e]);return{args:[`run`,`-d`,`--name`,r,`--memory`,String(n.memory??`4g`),`--cpus`,String(n.cpus??2),`--pids-limit`,String(n.pidsLimit??512),`--network`,n.network??`bridge`,...i,n.image??`ghcr.io/muzam1l/coder-runner:latest`,`sh`,`-c`,q(),`coder-task`,e.id,K],env:t}}var ue=class{options;kind=`local-docker`;constructor(e={}){this.options=e}async start(e,t){let n=this.options.image??`ghcr.io/muzam1l/coder-runner:latest`,r=await p(`docker`,[`run`,`--rm`,`--network`,`none`,`--entrypoint`,`sh`,n,`-c`,`for binary in node bun git curl tar claude codex github-mcp-server; do command -v "$binary" >/dev/null 2>&1 || { printf "%s\\n" "$binary"; exit 127; }; done`],{PATH:m.env.PATH??``});if(r.code!==0)throw r.code===127&&r.stdout.trim()?Error(`Docker image ${n} is missing required binary ${r.stdout.trim()}`):Error(`Docker image ${n} validation failed: ${r.stderr.trim()||`docker run failed`}`);let i=le(e,{...t,CODER_INBOX_SOCKET:l},this.options),a=await p(`docker`,i.args,{PATH:m.env.PATH??``,...i.env});if(a.code!==0)throw Error(a.stderr.trim()||`docker run failed`);return a.stdout.trim()}async status(e){let t=await p(`docker`,[`inspect`,`--format`,`{{.State.Running}} {{.State.ExitCode}}`,e],{PATH:m.env.PATH??``});if(t.code!==0)return{state:`exited`};let[n,r]=t.stdout.trim().split(/\s+/);return n===`true`?{state:`running`}:{state:`exited`,code:Number(r)||0}}async stop(e){await p(`docker`,[`rm`,`-f`,e],{PATH:m.env.PATH??``})}async push(e,t){let n=await p(`docker`,[`exec`,`-e`,`CODER_INBOX_MESSAGES`,e,`node`,`-e`,u],{PATH:m.env.PATH??``,CODER_INBOX_MESSAGES:JSON.stringify(t)});if(n.code!==0)throw Error(`Docker inbox delivery failed`);return JSON.parse(n.stdout)}},de=t({GithubActionsRunner:()=>N,actionsWorkflow:()=>j});function j(){return`name: Coder agent
2
- run-name: Coder agent \${{ inputs.task }}
3
- on:
4
- workflow_dispatch:
5
- inputs:
6
- task: { required: true, type: string }
7
- server: { required: true, type: string }
8
- token: { required: true, type: string }
9
- mode: { required: true, type: string }
10
- tarball: { required: true, type: string }
11
- jobs:
12
- run:
13
- runs-on: ubuntu-latest
14
- container: ${W}
15
- steps:
16
- - run: |
17
- sh -c '${q().replaceAll(`'`,`'\\''`)}' coder-task "$TASK" '${K.replaceAll(`'`,`'\\''`).trim().replaceAll(`
18
- `,` `)}'
19
- env:
20
- TASK: \${{ inputs.task }}
21
- CODER_SERVER: \${{ inputs.server }}
22
- CODER_TASK_TOKEN: \${{ inputs.token }}
23
- CODER_INBOX_MODE: \${{ inputs.mode }}
24
- CODER_RUNNER_TARBALL_URL: \${{ inputs.tarball }}
25
- `}const M=e=>f(e);var N=class{options;kind=`github-actions`;fetcher;constructor(e={}){this.options=e,this.fetcher=e.fetch??fetch}async request(e,t={},n=1e4){if(!this.options.token)throw Error(`RUNNER_CONFIG.token is required for github-actions`);let r=AbortSignal.timeout(n);for(let n=0;;n++){let i=await this.fetcher(`https://api.github.com${e}`,{...t,signal:r,redirect:`manual`,headers:{accept:`application/vnd.github+json`,authorization:`Bearer ${this.options.token}`,"content-type":`application/json`,"user-agent":`coder`,"x-github-api-version":`2022-11-28`,...t.headers}});if((t.method??`GET`)!==`GET`||n===2||i.status!==429&&i.status<500)return i;let a=Number(i.headers.get(`retry-after`));await i.body?.cancel(),await new Promise((e,t)=>{let i=()=>{clearTimeout(s),r.removeEventListener(`abort`,o)},o=()=>{i(),t(r.reason)},s=setTimeout(()=>{i(),e()},Number.isFinite(a)&&a>0?a*1e3:100*2**n);r.addEventListener(`abort`,o,{once:!0}),r.aborted&&o()})}}async start(e,t){let n=this.options.repo??(e.event?.repo&&`${e.event.repo.owner}/${e.event.repo.name}`);if(!n)throw Error(`The github-actions runner requires a repository`);let r=Date.now()+(this.options.lookupTimeoutMs??25e3),i=encodeURIComponent(this.options.workflow??`coder-agent.yml`),a=e.event?.repo,o=this.options.ref??(a&&`${a.owner}/${a.name}`===n?a.defaultBranch:void 0);if(!o){let e=await this.request(`/repos/${n}`,{},Math.max(1,r-Date.now()));if(!e.ok)throw Error(`GitHub repository lookup failed: ${e.status}`);let t=await e.json();if(!t.default_branch)throw Error(`GitHub repository has no default branch`);o=t.default_branch}let s=`/repos/${n}/actions/workflows/${i}/runs?event=workflow_dispatch&per_page=100&branch=${encodeURIComponent(o)}`,c=await this.request(s,{},Math.max(1,r-Date.now()));if(!c.ok)throw Error(`GitHub workflow run lookup failed: ${c.status}`);let l=await c.json(),u=Math.max(0,...l.workflow_runs.map(e=>e.id)),f=await this.request(`/repos/${n}/actions/workflows/${i}/dispatches`,{method:`POST`,body:JSON.stringify({ref:o,inputs:{task:e.id,server:t.CODER_SERVER,token:t.CODER_TASK_TOKEN,mode:t.CODER_INBOX_MODE,tarball:this.options.tarballUrl??G()}})},Math.max(1,r-Date.now()));if(f.status!==204){let e=await f.json().catch(()=>({}));throw f.status===422&&/unexpected inputs provided/i.test(e.message??``)&&/\btarball\b/i.test(e.message??``)?Error(`The saved GitHub workflow lacks the tarball input; regenerate it with coder server workflow.`):Error(`GitHub workflow dispatch failed: ${f.status}`)}do{for(let t=1;Date.now()<r;t++){let i=await this.request(`${s}&page=${t}`,{},Math.max(1,r-Date.now()));if(!i.ok)throw Error(`GitHub workflow run lookup failed: ${i.status}`);let a=(await i.json()).workflow_runs.find(t=>t.id>u&&t.display_title===`Coder agent ${e.id}`);if(a)return d({repo:n,run:a.id});if(!i.headers.get(`link`)?.includes(`rel="next"`))break}await new Promise(e=>setTimeout(e,Math.min(this.options.pollIntervalMs??1e3,Math.max(0,r-Date.now()))))}while(Date.now()<r);throw Error(`GitHub workflow run for task ${e.id} was not found before timeout`)}async status(e){let{repo:t,run:n}=M(e),r=await this.request(`/repos/${t}/actions/runs/${n}`);if(r.status===404)return{state:`exited`,code:1};if(!r.ok)throw Error(`GitHub workflow status failed: ${r.status}`);let i=await r.json();return i.status===`completed`?{state:`exited`,code:i.conclusion===`success`?0:1}:{state:`running`}}async stop(e){let{repo:t,run:n}=M(e),r=await this.request(`/repos/${t}/actions/runs/${n}/cancel`,{method:`POST`});if(r.status!==202&&r.status!==409)throw Error(`GitHub workflow cancellation failed: ${r.status}`)}};function fe(e){if(!S(e))return!0;if(S(e)===6){let t=new URL(`https://[${e}]/`).hostname.slice(1,-1).split(`::`),n=t[0]?t[0].split(`:`):[],r=t[1]?t[1].split(`:`):[],i=[...n,...Array(8-n.length-r.length).fill(`0`),...r].map(e=>parseInt(e,16));if(i.every(e=>e===0)||i.slice(0,7).every(e=>e===0)&&i[7]===1||(i[0]&65024)==64512||(i[0]&65472)==65152||(i[0]&65280)==65280)return!0;let a;if(i.slice(0,5).every(e=>e===0)&&(i[5]===0||i[5]===65535))a=i.slice(6);else if(i.slice(0,4).every(e=>e===0)&&i[4]===65535&&i[5]===0)a=i.slice(6);else if((i[4]===0||i[4]===512)&&i[5]===24318)a=i.slice(6);else if(i[0]===100&&i[1]===65435&&i.slice(2,6).every(e=>e===0))a=i.slice(6);else if(i[0]===8194)a=i.slice(1,3);else if(i[0]===8193&&(i[1]===0||i[1]===3512)||i[0]===100&&i[1]===65435&&i[2]===1)return!0;if(!a)return!1;e=a.flatMap(e=>[e>>8,e&255]).join(`.`)}let t=e.split(`.`).map(Number);return t[0]===0||t[0]===10||t[0]===127||t[0]===169&&t[1]===254||t[0]===172&&t[1]>=16&&t[1]<=31||t[0]===192&&t[1]===168||t[0]===192&&t[1]===0&&(t[2]===0||t[2]===2)||t[0]===198&&t[1]>=18&&t[1]<=19||t[0]===198&&t[1]===51&&t[2]===100||t[0]===203&&t[1]===0&&t[2]===113||t[0]===100&&t[1]>=64&&t[1]<=127||t[0]>=224}var P=class{options;kind=`http`;base;fetcher;resolver;constructor(e){if(this.options=e,!e?.url)throw Error(`The http runner requires RUNNER_CONFIG.url`);if(this.base=new URL(`${e.url.replace(/\/+$/,``)}/`),this.base.protocol!==`https:`)throw Error(`The http runner requires an HTTPS URL`);if(this.base.username||this.base.password)throw Error(`The http runner URL cannot contain credentials`);if(!e.secret)throw Error(`RUNNER_CONFIG.secret is required for the http runner`);this.fetcher=e.fetch,this.resolver=e.lookup??re}async safe(){let e=this.base.hostname.replace(/^\[|\]$/g,``),t=S(e)?[{address:e,family:S(e)}]:await this.resolver(e,{all:!0});if(!t.length)throw Error(`The http runner resolved no address`);if(t.some(e=>fe(e.address)))throw Error(`The http runner refuses private and metadata addresses`);return t[0]}send(e,t,n){return this.fetcher?this.fetcher(e,t):new Promise((r,i)=>{let a=(this.options.request??ie)(e,{method:t.method,headers:t.headers,signal:t.signal??void 0,agent:!1,lookup:(e,t,r)=>{t.all?r(null,[n]):r(null,n.address,n.family)}},e=>{let t=[];e.on(`data`,e=>t.push(Buffer.from(e))),e.on(`error`,i),e.on(`end`,()=>r(new Response(e.statusCode===204?null:Buffer.concat(t),{status:e.statusCode})))});a.on(`error`,i),a.end(t.body)})}async request(e,t=`GET`,n,r){let i=await this.safe(),a=n===void 0?``:JSON.stringify(n),o=String(Date.now()),s=y(16).toString(`base64url`),c=ne(`sha256`,this.options.secret).update(`${a}.${o}.${s}`).digest(`base64url`),l=await this.send(new URL(e.replace(/^\//,``),this.base),{method:t,redirect:`manual`,headers:{...this.options.headers,"content-type":`application/json`,"x-coder-timestamp":o,"x-coder-nonce":s,"x-coder-signature":c},...a?{body:a}:{},signal:r??AbortSignal.timeout(e===`/start`?3e4:1e4)},i);if(l.status>=300&&l.status<400)throw Error(`The http runner refuses redirects`);if(!l.ok)throw Error(`HTTP runner request failed: ${l.status}`);if(l.status===204)return;let u=await l.text();return u?JSON.parse(u):void 0}health(e){return this.request(`/health`,`GET`,void 0,e)}async start(e,t){let n=await this.request(`/start`,`POST`,{task:e.id,env:t});if(!n.handle)throw Error(`HTTP runner returned no handle`);return n.handle}status(e){return this.request(`/status/${encodeURIComponent(e)}`)}async stop(e){await this.request(`/stop/${encodeURIComponent(e)}`,`POST`,{})}push(e,t){return this.request(`/messages/${encodeURIComponent(e)}`,`POST`,{entries:t})}};const F=e=>f(e),I=18e5,L={"eu-north-1":`arn1`,"ap-south-1":`bom1`,"eu-west-3":`cdg1`,"us-east-2":`cle1`,"af-south-1":`cpt1`,"eu-west-1":`dub1`,"eu-central-1":`fra1`,"sa-east-1":`gru1`,"ap-east-1":`hkg1`,"ap-northeast-1":`hnd1`,"us-east-1":`iad1`,"ap-northeast-2":`icn1`,"ap-northeast-3":`kix1`,"eu-west-2":`lhr1`,"us-west-2":`pdx1`,"us-west-1":`sfo1`,"ap-southeast-1":`sin1`,"ap-southeast-2":`syd1`,"ca-central-1":`yul1`};function R(e){if(!e)return;let t=(()=>{try{return new URL(e).hostname}catch{return``}})();return Object.entries(L).find(([e])=>t.includes(e))?.[1]}const z={ANTHROPIC_API_KEY:{host:`api.anthropic.com`,header:`x-api-key`,prefix:``},OPENAI_API_KEY:{host:`api.openai.com`,header:`authorization`,prefix:`Bearer `}},B=`brokered`,V={claude:{api:`api.anthropic.com`,account:[`claude.ai`,`platform.claude.com`]},codex:{api:`api.openai.com`,account:[`auth.openai.com`,`chatgpt.com`]}};function pe(e,t){let n=V[e],r=t.CLAUDE_CODE_OAUTH_TOKEN||t.CODEX_AUTH_JSON,i=[t.ANTHROPIC_BASE_URL,t.OPENAI_BASE_URL].filter(e=>e&&URL.canParse(e));return[...n?[n.api,...r?n.account:[]]:[],...i.map(e=>new URL(e).hostname)]}function me(e={},t){let n=Object.entries(z).filter(([t])=>e[t]).map(([t,n])=>[n.host,[{transform:[{headers:{[n.header]:`${n.prefix}${e[t]}`}}]}]]);if(!t)return n.length?{allow:{...Object.fromEntries(n),"*":[]}}:void 0;let r=t.filter(e=>x.isIP(e)),i=t.filter(e=>!x.isIP(e)).map(e=>[e,[]]);return{allow:{...Object.fromEntries(i),...Object.fromEntries(n)},...r.length?{subnets:{allow:r.map(e=>`${e}/${x.isIPv6(e)?128:32}`)}}:{}}}function he(e,t){return[...[e.CODER_SERVER,t??G()].filter(e=>e&&URL.canParse(e)).map(e=>new URL(e).hostname),...Object.values(c).flatMap(e=>e.tools.installHosts??[])]}async function ge(){try{return(await import(`@vercel/sandbox`)).Sandbox}catch{throw Error(`The vercel-sandbox runner requires @vercel/sandbox in the adapter app.`)}}function H(e){return e&&typeof e==`object`&&`response`in e&&e.response instanceof Response?e.response.status:void 0}function _e(e){if(H(e)!==410||!e||typeof e!=`object`||!(`json`in e))return!1;let t=e.json;if(!t||typeof t!=`object`||!(`error`in t))return!1;let n=t.error;return!!n&&typeof n==`object`&&`code`in n&&n.code===`snapshot_not_found`}var U=class extends Error{snapshotId;constructor(e,t,n){super(e,n),this.snapshotId=t}},ve=class{options;kind=`vercel-sandbox`;constructor(e={}){this.options=e}api(){return this.options.sandbox?Promise.resolve(this.options.sandbox):ge()}now(){return(this.options.now??Date.now)()}auth(){return{...this.options.token?{token:this.options.token,projectId:this.options.projectId??process.env.VERCEL_PROJECT_ID,teamId:this.options.team??process.env.VERCEL_TEAM_ID}:{}}}base(e){return{...e?{source:{type:`snapshot`,snapshotId:e}}:this.options.image?{image:this.options.image}:{},...this.options.region?{region:this.options.region}:{},...this.auth(),resources:{vcpus:this.options.vcpus??1},persistent:!1}}snapshotKey(e){let t=e.event?.repo;if(!t)return;let n=[i(),this.options.image??null,this.options.tarballUrl??null,e.event.appId,e.event.installationId,t.owner,t.name];return`repo:${this.options.region??``}:${s(JSON.stringify(n))}`}async withSandbox(e,t){let n;try{if(n=typeof e==`string`?await(await this.api()).get({...this.auth(),name:e}):e,n.status!==`running`&&n.status!==`pending`)throw new U(`Vercel Sandbox ${n.name} is ${n.status}`);return await t(n)}catch(t){let r=H(t);throw r===410||!n&&typeof e==`string`&&r===404?new U(t instanceof Error?t.message:`Vercel Sandbox expired`,void 0,{cause:t}):t}}withSnapshotLock(e,t){let n=this.options.snapshots;return n.withLock?n.withLock(e,t):t(n)}async finalizeSnapshot(e,t){let n=this.now(),r=b(),i=await this.withSnapshotLock(e,async i=>{let a=await i.get(e)??{};if(!a.build||a.lease&&a.lease.expiresAt>n||t?.build&&(a.build.sandbox!==t.build.sandbox||a.build.command!==t.build.command||a.build.startedAt!==t.build.startedAt))return a;let o={...a,lease:{owner:r,expiresAt:n+I}};return await i.put(e,o),o});if(i.lease?.owner!==r||!i.build)return i;let{build:a,lease:o,...s}=i,c={...s,build:a},l;try{c=await this.withSandbox(a.sandbox,async e=>{let t=await e.getCommand(a.command);if(t.exitCode===null&&n-a.startedAt<I)return c;if(t.exitCode===0){let r=/^coder-snapshot (\S+)$/m.exec(await t.stdout())?.[1];if(r&&r===i.sha)return await e.stop().catch(()=>{}),{...s,checkedAt:n};let a=await e.snapshot({expiration:2592e6});return{...s,snapshotId:a.snapshotId,...r?{sha:r}:{},checkedAt:n}}return await e.stop().catch(()=>{}),{...s,failedAt:n}})}catch(e){if(l=e,e instanceof U){let{failedAt:e,...t}=s;c=t}}let u=await this.withSnapshotLock(e,async t=>{let n=await t.get(e)??{};return n.lease?.owner===r?(await t.put(e,c),c):n});if(l)throw l;return u}async snapshot(e,t,n,r){if(!this.options.snapshots)return;let i=await this.finalizeSnapshot(e);if(i.build)return i.snapshotId;let a=this.now(),o=b(),s=await this.withSnapshotLock(e,async t=>{let r=await t.get(e)??{},i=!r.snapshotId||n&&a-(r.checkedAt??0)>=9e5,s=r.failedAt!==void 0&&a-r.failedAt<36e5;if(r.build||r.lease&&r.lease.expiresAt>a||!i||s)return r;let c={...r,lease:{owner:o,expiresAt:a+I}};return await t.put(e,c),c});if(s.lease?.owner!==o)return s.snapshotId;let c,l;try{c=await t(s.snapshotId)}catch(e){e instanceof U&&(l=e)}let u=await this.withSnapshotLock(e,async t=>{let n=await t.get(e)??{};if(n.lease?.owner!==o)return n;let{lease:r,...i}=n,s={...i,...c?{build:{sandbox:c.sandbox,command:c.command,startedAt:a}}:{}};return await t.put(e,s),s});if(c)if(u.build?.sandbox===c.sandbox&&u.build.command===c.command){let t=(async()=>{await c.wait(),await this.finalizeSnapshot(e,u)})().catch(()=>{});r?.(t)}else await this.withSandbox(c.sandbox,e=>e.stop()).catch(()=>{});if(l)throw l;return u.snapshotId}async detached(e,t,n={}){let r=await(await this.api()).create({...this.base(e),timeout:this.options.timeoutMs??18e5,...n}).catch(t=>{throw e&&_e(t)?new U(t.message,e,{cause:t}):t});try{let e=await this.withSandbox(r,e=>e.runCommand({...t,detached:!0}));return{sandbox:r.name,command:e.cmdId,wait:()=>e.wait({signal:AbortSignal.timeout(I)})}}catch(e){throw await r.stop().catch(()=>{}),e}}async start(e,t,n,r={}){let i=me(n,r.hosts&&[...he(t,this.options.tarballUrl),...r.hosts]);t={...t,[a]:`1`},this.options.tarballUrl&&(t={...t,CODER_RUNNER_TARBALL_URL:this.options.tarballUrl});let o=t=>({cmd:`sh`,args:[`-c`,q(ee().map(e=>`sudo sh -c '${e}'`).join(` && `)),`coder-task`,e.id,K],env:t});for(let n=0;;n++){let a;try{a=this.snapshotKey(e);let n=a?await this.snapshot(a,e=>this.detached(e,o({...t,CODER_PREPARE:`1`})),!0,r.waitUntil):void 0,s=await this.detached(n,o({...t,CODER_INBOX_SOCKET:l}),{...i?{networkPolicy:i}:{},...r.timeoutMs?{timeout:r.timeoutMs}:{}});return d({sandbox:s.sandbox,command:s.command})}catch(e){if(!(e instanceof U))throw e;if(a&&e.snapshotId&&this.options.snapshots){let t=e.snapshotId;await this.withSnapshotLock(a,async e=>{let n=await e.get(a);if(n?.snapshotId!==t)return;let{snapshotId:r,sha:i,checkedAt:o,failedAt:s,...c}=n;await e.put(a,c)})}if(n===2)throw e}}}async status(e){let t=F(e),n=await(await this.api()).get({...this.auth(),name:t.sandbox});if(n.status===`pending`)return{state:`running`};if(n.status!==`running`)return{state:`exited`,code:1};let r=await n.getCommand(t.command);return r.exitCode===null?{state:`running`}:{state:`exited`,code:r.exitCode}}async push(e,t){let n=await(await(await this.api()).get({...this.auth(),name:F(e).sandbox})).runCommand({cmd:`node`,args:[`-e`,u],detached:!1,env:{CODER_INBOX_MESSAGES:JSON.stringify(t)}}),r=await n.stdout();if(n.exitCode!==0)throw Error(`Sandbox inbox delivery failed`);return JSON.parse(r)}async stop(e){await(await(await this.api()).get({...this.auth(),name:F(e).sandbox})).stop()}};const W=`ghcr.io/muzam1l/coder-runner:latest`,G=()=>`https://registry.npmjs.org/@wular/coder/-/coder-${encodeURIComponent(i())}.tgz`,K=`
26
- const [file, id] = process.argv.slice(1);
27
- const lines = require('fs').readFileSync(file, 'utf8').split('\\n').map(line => line.trim()).filter(Boolean);
28
- const error = 'The machine failed: ' + lines.slice(-6).join(' ').slice(-800);
29
- const login = process.env.CODER_LOGIN;
30
- const url = process.env.CODER_SERVER.replace(/\\/+$/, '') + (login ? '/logins/' : '/tasks/') + encodeURIComponent(id) + (login ? '' : '/result');
31
- fetch(url, {
32
- method: 'POST', signal: AbortSignal.timeout(10000),
33
- headers: { authorization: 'Bearer ' + process.env.CODER_TASK_TOKEN, 'content-type': 'application/json' },
34
- body: JSON.stringify(login ? { error } : { status: 'failed', error }),
35
- }).then(response => { if (!response.ok) process.exitCode = 1; }).catch(() => { process.exitCode = 1; });
36
- `;function q(e=``){return[`out=$(mktemp)`,`{ (${[`mkdir -p .coder-runner`,`curl -fsSL --retry 2 --connect-timeout 10 --max-time 30 "\${CODER_RUNNER_TARBALL_URL:-${G()}}" -o .coder-runner/package.tgz`,`tar -xzf .coder-runner/package.tgz -C .coder-runner`,...e?[e]:[],`bun .coder-runner/package/bin/coder.mjs agent run --task "$1"`].join(` && `)}) 2>&1; echo $? >"$out.status"; } | tee "$out"`,`status=$(cat "$out.status")`,`[ "$status" = 0 ] || { [ -n "$CODER_PREPARE" ] || node -e "$2" "$out" "$1"; }`,`rm -f "$out" "$out.status"`,`exit "$status"`].join(`; `)}const ye=[`local`,`local-docker`,`vercel-sandbox`,`github-actions`,`http`];function J(e,t=``){return{get:n=>e.get(`snapshot`,`${t}${n}`),put:(n,r)=>e.put(`snapshot`,`${t}${n}`,r),withLock:(n,r)=>e.withAppLock(`snapshot:${t}${n}`,e=>r({get:n=>e.get(`snapshot`,`${t}${n}`),put:(n,r)=>e.put(`snapshot`,`${t}${n}`,r)}))}}function be(e){let t=e.kind;return e.local===!1&&(t===`local`||t===`local-docker`)?{}:{[t]:Y(t,e)}}function Y(e,t){let n=t.config??{};if(e===`local`)return new te(t.workDir);if(e===`local-docker`)return new ue(n);if(e===`vercel-sandbox`)return new ve({...t.sandbox,...n});if(e===`github-actions`)return new N({...n,...t.fetch?{fetch:t.fetch}:{}});if(typeof n.url!=`string`||typeof n.secret!=`string`)throw Error(`HTTP runner requires a URL and secret`);return new P({url:n.url,secret:n.secret,...t.fetch?{fetch:t.fetch}:{}})}function X(e,t){return e.scope===`workspace`||!!(t&&e.owner===t)}function Z(e){return e.local?`local`:`default`}async function xe(e,t={}){let n=t.runner??t.agent;if(n===Z(e))return{runner:e.config.runner};let r=(await e.store.list(`runner`,{visibleTo:t.requester,...n?{runner:n}:{defaults:!0}})).filter(({value:n})=>X(n,t.requester)&&(e.local||n.kind!==`local`&&n.kind!==`local-docker`)),i=n?r.find(({id:e,value:t})=>e===n||t.name===n):r.find(({value:e})=>e.scope===`personal`&&e.default)??r.find(({value:e})=>e.scope===`workspace`&&e.default);if(n&&!i)throw Error(`Unknown runner "${n}".`);return i?{runner:i.value.kind,runnerId:i.id}:{runner:e.config.runner}}function Q(e,t,n){let r={...t.config,...k(e.config,t.secret)};return Y(t.kind,{workDir:e.config.workDir,config:r,fetch:e.fetch,sandbox:{...n?{snapshots:J(e.store,`runner:${n}:`)}:{}}})}async function Se(e,t){if(!t.runnerId)return e.runners[t.runner];let n=await e.store.get(`runner`,t.runnerId);if(!n||n.kind!==t.runner||!e.local&&(n.kind===`local`||n.kind===`local-docker`)){e.settings?.runnerInstances?.delete(t.runnerId);return}k(e.config,n.secret);let r=(e.settings??={}).runnerInstances??=new Map,i=JSON.stringify([n.kind,n.config,n.secret]),a=r.get(t.runnerId);return a?.signature!==i&&(a={signature:i,runner:Q(e,n,t.runnerId)},r.set(t.runnerId,a)),a.runner}function Ce(e,t){if(Object.keys(t).some(t=>!e.fields.some(e=>e.key===t)))throw Error(`Unknown runner field`);for(let n of e.fields)if(!n.optional&&!t[n.key]?.trim())throw Error(`${n.label} is required`);if(e.kind===`http`){if(t.secret.length<32)throw Error(`Secret must contain at least 32 characters`);new P({url:t.url,secret:t.secret})}if(e.kind===`github-actions`&&!/^[\w.-]+\/[\w.-]+$/.test(t.repo))throw Error(`Repository must be owner/repo`);if(e.kind===`local-docker`&&t.cpus&&!(Number(t.cpus)>0&&Number.isFinite(Number(t.cpus))))throw Error(`CPUs must be positive`)}var $=class extends Error{};async function we(e,t){let n=Date.now(),r=new AbortController,i,a=new Promise((t,n)=>{i=setTimeout(()=>{r.abort(),n(new $(`Runner check timed out`))},e.runnerTimeoutMs??5e3)});try{return{ok:!0,detail:await Promise.race([a,(async()=>{let n=t?.kind??e.config.runner,i=t?{...t.config,...k(e.config,t.secret)}:e.config.runnerConfig??{};if(n===`local`){if(!e.local)throw new $(`Local runners require a local server`);return`This machine is available`}if(n===`http`){let n=t?Q(e,t):e.runners.http;if(!(n instanceof P)||!(await n.health(r.signal)).ok)throw new $(`Runner health check failed`);return`Runner is reachable`}if(n===`local-docker`){if(!e.local)throw new $(`Docker runners require a local server`);return await new Promise((t,n)=>{(e.runnerExec??h)(`docker`,[`info`],{timeout:5e3,signal:r.signal},e=>e?n(new $(`Docker is unavailable`)):t())}),`Docker is available`}let a=async t=>{let n=await(e.fetch??fetch)(t,{signal:r.signal,redirect:`manual`,headers:{authorization:`Bearer ${i.token}`,accept:`application/json`,"user-agent":`coder`}});if(!n.ok)throw new $(`Runner check failed with HTTP ${n.status}`);return n};if(n===`github-actions`){let e=String(i.repo).split(`/`).map(encodeURIComponent).join(`/`);return await a(`https://api.github.com/repos/${e}`),await a(`https://api.github.com/repos/${e}/actions/workflows/${encodeURIComponent(String(i.workflow))}`),`Repository and workflow are accessible`}let o=await(await a(`https://api.vercel.com/v2/teams?limit=100`)).json();if(!Array.isArray(o.teams))throw new $(`Invalid team response`);if(i.team&&!o.teams.some(e=>e.id===i.team||e.slug===i.team))throw new $(`Team is not accessible`);return`Teams are accessible`})()]),ms:Date.now()-n}}catch(e){return{ok:!1,detail:e instanceof $?e.message:`Runner check failed`,ms:Date.now()-n}}finally{clearTimeout(i)}}export{E as C,ce as S,j as _,J as a,k as b,we as c,z as d,B as f,P as g,R as h,be as i,Ce as l,pe as m,ye as n,Z as o,V as p,xe as r,Se as s,W as t,X as u,de as v,A as w,oe as x,se as y};