@wular/coder 0.4.8 → 0.4.9

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 (402) hide show
  1. package/dist/{add-yIlNqPSu.js → add-BftLUw05.js} +1 -1
  2. package/dist/{add-BDBCRqKN.js → add-CXAGrCnC.js} +1 -1
  3. package/dist/{add-Df1Ezy3y.js → add-Ck_y_nKX.js} +2 -2
  4. package/dist/{add-DcR15CL7.js → add-CvBTpxgY.js} +1 -1
  5. package/dist/agent-ChnedLBv.js +8 -0
  6. package/dist/{agent-B2Ikhp7u.js → agent-vYm7Geh-.js} +1 -1
  7. package/dist/{alias-DghaKDbh.js → alias-BpgVDY6_.js} +1 -1
  8. package/dist/{app-snjvOKJA.js → app-CJPFaLIV.js} +1 -1
  9. package/dist/{approvals-BziBKWgU.js → approvals-CE8dXZhE.js} +1 -1
  10. package/dist/{approve-DAuvq9Eq.js → approve-CBuGu3du.js} +1 -1
  11. package/dist/{approve-DKrTnZfk.js → approve-dWW4qt76.js} +1 -1
  12. package/dist/{apps-aj_JtpAm.js → apps-B60OpAHX.js} +2 -2
  13. package/dist/{archive-BhfGdyuC.js → archive-C89Z4kSx.js} +1 -1
  14. package/dist/{archive-DxWYJ7Zi.js → archive-CmRVm4iS.js} +1 -1
  15. package/dist/{archive-sweep-CqTQUafj.js → archive-sweep-EiiXIqjr.js} +1 -1
  16. package/dist/{ask-B_si1yM4.js → ask-Bou8zg-4.js} +1 -1
  17. package/dist/auth-CImjIcG5.js +1 -0
  18. package/dist/{auth-B3RiDPMI.js → auth-CWzSsiSC.js} +1 -1
  19. package/dist/{chat-DLolwsuq.js → chat-Djps0Seg.js} +1 -1
  20. package/dist/{cli-D5hyqGq0.js → cli-ZUdhZnuW.js} +1 -1
  21. package/dist/cli.js +1 -1
  22. package/dist/{config-BdeKsCPh.js → config-CF3_A3NX.js} +1 -1
  23. package/dist/{connection-wq0CJZKh.js → connection-BCRJHTgp.js} +1 -1
  24. package/dist/{connection-CQPndo-u.js → connection-BtUZA2St.js} +1 -1
  25. package/dist/{create-8_XbAnHs.js → create-Z0QxarzN.js} +1 -1
  26. package/dist/credentials-Dt2uP3AQ.js +1 -0
  27. package/dist/dash/standalone/server/build-index.json +1 -1
  28. package/dist/dash/standalone/server/manifest.json +1614 -1463
  29. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/connect/{page.a4ec4bce860e3e71.js → page.a2a16ead424b2185.js} +3 -3
  30. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/create/[id]/{page.4c818ef18a084013.js → page.90e312759b87cfa2.js} +2 -2
  31. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{loading.f8373428f20c270b.js → loading.787d09fb0b2b6b57.js} +2 -2
  32. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{notify.b0946ff7951ecc11.js → notify.5fc5e4346dcbfc32.js} +1 -1
  33. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{page.55eef4b0e71415d9.js → page.1641da62504df30a.js} +11 -12
  34. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/sign-out.5dac3bf780c74354.js +20 -0
  35. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/agent-menu.f1dacbfebc27a656.js +13 -0
  36. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{agents-grid.3a3c550ff68aeb11.js → agents-grid.5da78e9a741b028a.js} +7 -7
  37. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{connect-apps.7a4cfa5c917e5db9.js → connect-apps.722bc3e4ec1f9fad.js} +8 -7
  38. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{loading.fd26a5414b0a06db.js → loading.2815a010098aa676.js} +4 -4
  39. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{page.b2bed855b68a77b2.js → page.b01992337eeca2dc.js} +7 -7
  40. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{layout.95b8bf3c438955c2.js → layout.8aeb0fddffe22ad5.js} +24 -26
  41. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{loading.39c596735b108f80.js → loading.50692149df9abb28.js} +1 -1
  42. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{page.1401a08ea4e27c01.js → page.e2e23101c05b9548.js} +15 -14
  43. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{loading.2d6e75e5923f73f2.js → loading.31d2c13229ae9222.js} +2 -2
  44. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{page.848ccc3a609385a9.js → page.11c7b50d6119efe6.js} +32 -37
  45. 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.92ac7aa258e706a4.js} +49 -66
  46. 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.fc530622fa2292a0.js} +16 -19
  47. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{loading.80f597fd04fc4a97.js → loading.bf17bd39f41db826.js} +1 -1
  48. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{page.35d01036ce840ff9.js → page.6e95dfe07dfebf4b.js} +4 -4
  49. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{loading.ff54c7100f781fbc.js → loading.7b17368ee81275ab.js} +1 -1
  50. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{page.e5a405c518c1d8e6.js → page.0bd3da9b3227b12f.js} +1 -1
  51. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{loading.55aa8df7712e6820.js → loading.d2cc33cf044a92a3.js} +3 -3
  52. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{page.67c3489c62b661da.js → page.91c43fbc54e37646.js} +4 -4
  53. 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.23e4131cdf71daa5.js} +2 -2
  54. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/loading.47c4c8f31b4f17cc.js +23 -0
  55. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{page.7132b3ef68d33cc4.js → page.cbd2bad8fede6fef.js} +6 -6
  56. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-pills.19e913c8cb22db21.js → agent-pills.d8e785c45f5410a6.js} +9 -10
  57. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-toggle.ec6d07ccd1f9796e.js → agent-toggle.a6e27ac4171bfdb0.js} +13 -6
  58. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{hero.9de48723967d8546.js → hero.96bdca9762ff3e2e.js} +5 -5
  59. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{instructions.6558ffd02a59ad53.js → instructions.ca0c09d4849bfc30.js} +1 -1
  60. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{editor.9e1a0945f6880076.js → editor.20c42102ed262db7.js} +33 -36
  61. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{import-picker.e54af9841da11373.js → import-picker.b8093a7ca97656a5.js} +27 -32
  62. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{loading.38715a27e2d25ebd.js → loading.6012b36c10c68657.js} +11 -13
  63. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{page.6c8e9ef5d72b7ef1.js → page.1ebdb0247922fc14.js} +4 -4
  64. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{layout.c67ccee8b4770821.js → layout.6d2242d49ae9dd35.js} +51 -81
  65. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{operator-apps.3365f9248dfe735d.js → operator-apps.a56516bc0ba79187.js} +18 -21
  66. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{page.c60ebc5afe4dcdae.js → page.af19494c89ac62c0.js} +6 -6
  67. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{connections-list.544315916300ed07.js → connections-list.9b96914a4fa4e2a9.js} +52 -58
  68. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials-list.41ce6eb622300bb3.js → credentials-list.dbaa8f3d82445b90.js} +147 -165
  69. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials.c1a312e6ec58db83.js → credentials.c4b01484d183549d.js} +7 -7
  70. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{engines-list.75dc69caed34ff8f.js → engines-list.5c03e83663a6a9b7.js} +9 -9
  71. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{list.6d6180438e2bd0c8.js → list.df5ee5d74bec0f5b.js} +10 -8
  72. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{loading.9d7c30db2ecccda3.js → loading.480b8f915bae18c1.js} +1 -1
  73. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{models-list.04eb5a47bca3bd09.js → models-list.2835a48d1edeb6d1.js} +17 -18
  74. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{page.dd00f57d398be882.js → page.1d53415d55e77fee.js} +15 -15
  75. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{runners-list.e644287ae91ea8c3.js → runners-list.bf5746f48e3f78f5.js} +30 -37
  76. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{secrets-list.35fa72bf3f00d1af.js → secrets-list.b0dedc1567efc09f.js} +14 -13
  77. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{layout.3a17085fb262e4ab.js → layout.567d27e39d42d719.js} +8 -8
  78. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{settings-head.a14b9796a8af62dc.js → settings-head.5e2dff2550b3b73e.js} +1 -1
  79. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{tunnel-guide.1fd664df1fd0e3c1.js → tunnel-guide.d6fae1c5d62f2c74.js} +1 -1
  80. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{create-link.3acdd50e1cc0c729.js → create-link.03989d2f7585a045.js} +5 -6
  81. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{outcome-dialog.d730e0bfbe0cf2f8.js → outcome-dialog.4debc1a8c644df4b.js} +6 -6
  82. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{page.079600422889e725.js → page.43c969f59a710781.js} +9 -8
  83. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{activity.ed49ee2686d1ee41.js → activity.3755ae6065c3fc28.js} +3 -3
  84. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{loading.0d973b51fee68801.js → loading.9efbed6531879838.js} +4 -4
  85. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{page.05dd344bada1d4d8.js → page.7b92dcd08095b934.js} +4 -4
  86. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-actions.ece7ec732352ce70.js → task-actions.62422b873f98ee8e.js} +24 -24
  87. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-view.8a5908c42647923f.js → task-view.ae0e9c9dffe0ff9f.js} +32 -38
  88. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer.c7ec618e215d63ce.js → composer.fdad306647cbaa59.js} +71 -109
  89. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-list.0976f1812d6d15f5.js → tasks-list.952f37a9486aebe7.js} +28 -28
  90. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-section.fd72404364042b87.js → tasks-section.1247d4765d0e1bdc.js} +4 -4
  91. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{page.293492d13a9dca2e.js → page.cf74c55e6528c7c9.js} +2 -2
  92. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{custom-range.471edcb853889c2e.js → custom-range.2d55812ec086b540.js} +25 -26
  93. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{day-chart.d40438efa74b0596.js → day-chart.08d378cca93d3ab1.js} +1 -1
  94. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{loading.5b28c7d8f3a473a3.js → loading.7aed78a276b08a4f.js} +3 -3
  95. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{page.69adbf6cde427292.js → page.fed9345ebac3e1b3.js} +6 -6
  96. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/range-bar.b1296c2378128472.js +57 -0
  97. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{top-agents.b00f571862b5b608.js → top-agents.e215d44e00192271.js} +2 -2
  98. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{layout.ab6f86cc5b8b2dab.js → layout.b7e3af142b17941b.js} +1 -1
  99. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/login/{page.088b41424cd6cf3c.js → page.226544940a39fd3a.js} +5 -3
  100. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{drawer.0e2e3636f33049f5.js → drawer.8287e5a02144e4f1.js} +8 -9
  101. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{foreign-link.fe46528a6a66c0f4.js → foreign-link.86f0cc228353da6e.js} +4 -4
  102. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/loading-card.0c6ac62ff3ccf38a.js +40 -0
  103. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{page-head.e5d2185c1cdac740.js → page-head.bd54e52ac4a7a89c.js} +8 -1
  104. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{stream.2fea238dc4f4f9a4.js → stream.1cc355a530dcc5e3.js} +1 -1
  105. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{task-toasts.4282affa47415a36.js → task-toasts.63f673632770924d.js} +2 -2
  106. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{theme-choices.ef190ef1cd197199.js → theme-choices.5f59814a635caeec.js} +8 -17
  107. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{back.af528135d7e33d6d.js → back.5681714d0cf45454.js} +6 -6
  108. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{org.813dc34bd23a336f.js → org.4d84ad0ac340fbe2.js} +1 -1
  109. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{side-toggle.bafcb4b273b1c4d0.js → side-toggle.249400957d6a7527.js} +9 -9
  110. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/badge.0851f234f300c694.js +83 -0
  111. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/button.983daea9e687fc5d.js +91 -0
  112. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{card.6227f43fc0ae4bd1.js → card.c08471eaa0bc1cec.js} +14 -9
  113. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{collapse.dab7f208cbbe6a33.js → collapse.762eba56417214ca.js} +5 -3
  114. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{combo.0572dd5730c94112.js → combo.efb84f0cca771948.js} +13 -20
  115. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/confirm.53edc755945b0563.js +27 -0
  116. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{copy.9be99c94423eb1ca.js → copy.0b23d7dc05757df5.js} +8 -10
  117. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{filter.4f703a4ce7d2a519.js → filter.1983b85dd0679af6.js} +33 -52
  118. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{icons.868385119bf2de28.js → icons.a34176f37808cd66.js} +1 -0
  119. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/menu-items.a8e580a0c90631ff.js +145 -0
  120. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{menu.0f064f75822888be.js → menu.a41edd5cde1c90cf.js} +16 -45
  121. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{modal.92432959e3a3e2c0.js → modal.b5f74ebf59590fa6.js} +10 -11
  122. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{segmented.5ac52bb38fb64ae5.js → segmented.a08dc08338d080e9.js} +13 -2
  123. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{select.7f481669998074f8.js → select.36c6f21ce6aa720f.js} +36 -40
  124. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tail.30913c92f5ca6102.js → tail.a8a951c757376590.js} +5 -4
  125. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{toolbar.801bbd3163d3fbb0.js → toolbar.9621ef221a896a8e.js} +9 -4
  126. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{action.568346602027ac74.js → action.1a6356d5b722cafb.js} +1 -1
  127. package/dist/dash/standalone/static/assets/chunks/action-977f2355e308d7d0.js +1 -0
  128. package/dist/dash/standalone/static/assets/chunks/agent-pills-e75e6ac80d515ffc.js +1 -0
  129. package/dist/dash/standalone/static/assets/chunks/agent-settings-form-09f23ed893d441c7.js +1 -0
  130. package/dist/dash/standalone/static/assets/chunks/agent-toggle-b2f2c22e63dedc1f.js +1 -0
  131. package/dist/dash/standalone/static/assets/chunks/agents-grid-bb4f3e4d38b2f459.js +1 -0
  132. package/dist/dash/standalone/static/assets/chunks/back-1d1b062f0e1b29b7.js +1 -0
  133. package/dist/dash/standalone/static/assets/chunks/combo-126d5709a0b3a5bd.js +1 -0
  134. package/dist/dash/standalone/static/assets/chunks/composer-6bf94d1087a6e6a6.js +1 -0
  135. package/dist/dash/standalone/static/assets/chunks/composer-9c1fe67a0de73997.js +1 -0
  136. package/dist/dash/standalone/static/assets/chunks/confirm-1cb4d8df3974f34a.js +1 -0
  137. package/dist/dash/standalone/static/assets/chunks/connect-apps-32c169b6e00711ff.js +1 -0
  138. package/dist/dash/standalone/static/assets/chunks/{connect-repositories-569c181ff81509f4.js → connect-repositories-995d55b3f166337d.js} +1 -1
  139. package/dist/dash/standalone/static/assets/chunks/connections-list-a102e909edff14d4.js +1 -0
  140. package/dist/dash/standalone/static/assets/chunks/copy-c938369a1bfe75fd.js +1 -0
  141. package/dist/dash/standalone/static/assets/chunks/create-link-a147953f343355ec.js +1 -0
  142. package/dist/dash/standalone/static/assets/chunks/credentials-list-31e0fbc1ef0d003e.js +1 -0
  143. package/dist/dash/standalone/static/assets/chunks/custom-range-4eeb710748887f3a.js +1 -0
  144. package/dist/dash/standalone/static/assets/chunks/editor-79560c0f91cfc2f6.js +7 -0
  145. package/dist/dash/standalone/static/assets/chunks/engines-list-d22f50040e6842ae.js +1 -0
  146. package/dist/dash/standalone/static/assets/chunks/{field-f40df6a5289dfe05.js → field-657227821326b5b3.js} +1 -1
  147. package/dist/dash/standalone/static/assets/chunks/instructions-a08bb02650dedb8d.js +2 -0
  148. package/dist/dash/standalone/static/assets/chunks/instructions-a1f10bc3c2866e3f.js +1 -0
  149. package/dist/dash/standalone/static/assets/chunks/list-a0cc9bdb05fc71d4.js +1 -0
  150. package/dist/dash/standalone/static/assets/chunks/models-list-63ab774de3bf3788.js +1 -0
  151. package/dist/dash/standalone/static/assets/chunks/{notice-84358e912a9f01cc.js → notice-cd32ca98bbc10844.js} +1 -1
  152. package/dist/dash/standalone/static/assets/chunks/outcome-dialog-4ab62d613bee243a.js +1 -0
  153. package/dist/dash/standalone/static/assets/chunks/platform-actions-40824017c7b5b910.js +1 -0
  154. package/dist/dash/standalone/static/assets/chunks/platform-actions-a515643f341df568.js +1 -0
  155. package/dist/dash/standalone/static/assets/chunks/runners-list-a9f4f71695f7b376.js +1 -0
  156. package/dist/dash/standalone/static/assets/chunks/{runtime-37175329f2865f15-1.js → runtime-e8b9eb1e537215ed-1.js} +1 -1
  157. package/dist/dash/standalone/static/assets/chunks/secrets-list-34e09c332363564c.js +1 -0
  158. package/dist/dash/standalone/static/assets/chunks/segmented-24da438244eedc8f.js +1 -0
  159. package/dist/dash/standalone/static/assets/chunks/shared-init-02aaa49ed4606a76.js +2 -0
  160. package/dist/dash/standalone/static/assets/chunks/shared-init-03e620f936463465.js +5 -0
  161. package/dist/dash/standalone/static/assets/chunks/shared-init-6f8c76316a2cd9da.js +1 -0
  162. package/dist/dash/standalone/static/assets/chunks/shared-init-e8b9eb1e537215ed-2.js +1 -0
  163. package/dist/dash/standalone/static/assets/chunks/side-toggle-8563e6056e862225.js +1 -0
  164. package/dist/dash/standalone/static/assets/chunks/tail-ebdefca4d5c23266.js +1 -0
  165. package/dist/dash/standalone/static/assets/chunks/task-actions-462507b76bda4657.js +1 -0
  166. package/dist/dash/standalone/static/assets/chunks/{task-view-1696d47594c6dbfa.js → task-view-341d79730a341007.js} +5 -5
  167. package/dist/dash/standalone/static/assets/chunks/tasks-list-6037ecd098332564.js +1 -0
  168. package/dist/dash/standalone/static/assets/chunks/versions-list-31f31eb1923a0ded.js +1 -0
  169. package/dist/dash/standalone/static/assets/chunks/{wular-pnext-37175329f2865f15-0.js → wular-pnext-e8b9eb1e537215ed-0.js} +1 -1
  170. package/dist/dash/standalone/static/assets/connect-a550b6f3a8c00186.css +1 -0
  171. package/dist/dash/standalone/static/assets/create-param-id-8fa3e9101430f26a.css +1 -0
  172. package/dist/dash/standalone/static/assets/dash-param-org-67f7811b1343c064.css +1 -0
  173. package/dist/dash/standalone/static/assets/dash-param-org-account-3f646d473e3bd795.css +1 -0
  174. package/dist/dash/standalone/static/assets/dash-param-org-agents-0ddb989cab5b0fbf.css +1 -0
  175. package/dist/dash/standalone/static/assets/dash-param-org-agents-new-504d1a906feabb6f.css +1 -0
  176. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-7cd987a1a42a3b44.css +1 -0
  177. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-fcdddf2dc26453ce.css +1 -0
  178. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-26b84d659dbca7f4.css +1 -0
  179. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-97ff652f9fe5979d.css +1 -0
  180. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-d47377c0f877c5c0.css +1 -0
  181. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-6a09580f11d669b7.css +1 -0
  182. package/dist/dash/standalone/static/assets/dash-param-org-operator-56742192a9aafc19.css +1 -0
  183. package/dist/dash/standalone/static/assets/dash-param-org-settings-a851a659784d94b5.css +1 -0
  184. package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-06283106fffbd5c6.css +1 -0
  185. package/dist/dash/standalone/static/assets/dash-param-org-setup-1b708aa5bb2f83ef.css +1 -0
  186. package/dist/dash/standalone/static/assets/dash-param-org-tasks-9cb2bb12389c9a04.css +1 -0
  187. package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-a87fa0eaa02e4008.css +1 -0
  188. package/dist/dash/standalone/static/assets/dash-param-org-usage-786c91a7640542e6.css +1 -0
  189. package/dist/dash/standalone/static/assets/global-eee296f070a9bb95.css +1 -0
  190. package/dist/dash/standalone/static/assets/login-9760b85feae40270.css +1 -0
  191. package/dist/dash/standalone/static/assets/pnext-client-17c3ee29b7487596.js +1 -0
  192. package/dist/dash/standalone/static/assets/pnext-client-1eaa8deb5395345f.js +1 -0
  193. package/dist/dash/standalone/static/assets/pnext-client-29e2b964470f6587.js +1 -0
  194. package/dist/dash/standalone/static/assets/pnext-client-2a1e756934e7be1a.js +1 -0
  195. package/dist/dash/standalone/static/assets/pnext-client-31e64d49f6132b26.js +1 -0
  196. package/dist/dash/standalone/static/assets/pnext-client-3d13328ad0b1148b.js +1 -0
  197. package/dist/dash/standalone/static/assets/pnext-client-4ac29d3e9f1a91be.js +1 -0
  198. package/dist/dash/standalone/static/assets/pnext-client-7d479b3375e3c07e.js +1 -0
  199. package/dist/dash/standalone/static/assets/pnext-client-9eac45990b233b55.js +1 -0
  200. package/dist/dash/standalone/static/assets/pnext-client-a8c9c169322e7e3d.js +1 -0
  201. package/dist/dash/standalone/static/assets/pnext-client-b622d087a38b1b77.js +1 -0
  202. package/dist/dash/standalone/static/assets/pnext-client-b7fea94dfda72453.js +1 -0
  203. package/dist/dash/standalone/static/assets/pnext-client-cc8e5e6c95040688.js +1 -0
  204. package/dist/dash/standalone/static/assets/pnext-client-d16e2a42b0a274c0.js +1 -0
  205. package/dist/dash/standalone/static/assets/pnext-client-dbccfef0cbb6b18d.js +1 -0
  206. package/dist/dash/standalone/static/assets/pnext-client-e74706ae238018e5.js +1 -0
  207. package/dist/dash/standalone/static/assets/pnext-client-ebe7c9692619ea00.js +1 -0
  208. package/dist/dash/standalone/static/assets/pnext-client-ef8d348060493085.js +1 -0
  209. package/dist/dash/standalone/static/assets/pnext-client-fcdfa8b2c8824449.js +1 -0
  210. package/dist/dash/standalone/static/assets/pnext-client-ff36e2f8a0522759.js +1 -0
  211. package/dist/{default-CNhVH61w.js → default-DcYwZCnl.js} +1 -1
  212. package/dist/{default-dQC33jLt.js → default-EXRzdZUY.js} +1 -1
  213. package/dist/{delete-BDOtztW_.js → delete-Bmn2_TiV.js} +1 -1
  214. package/dist/{delete-Dbo9goyQ.js → delete-DS6P_fun.js} +1 -1
  215. package/dist/{disable-VvU6oDku.js → disable-CnCxTC3X.js} +1 -1
  216. package/dist/{discover-hpHsnxqU.js → discover-pKrMDvpW.js} +1 -1
  217. package/dist/{docs-CYMICGEv.js → docs-sFUXzJbk.js} +1 -1
  218. package/dist/{enable-BmvNVDHO.js → enable-BWvDv7dP.js} +1 -1
  219. package/dist/flow/builtin/review.d.ts +1 -1
  220. package/dist/flow/index.d.ts +1 -1
  221. package/dist/{flow-4Rr-2NUz.js → flow-CuUq-MDm.js} +1 -1
  222. package/dist/{http-BYMXT_p6.js → http-Cg_wYcZT.js} +1 -1
  223. package/dist/{index-CVjkwYeS.d.ts → index-vd37q3fn.d.ts} +1 -1
  224. package/dist/{init-kZdO2PF5.js → init-Dgj6V-aS.js} +1 -1
  225. package/dist/integrations-DsFX2KCq.js +1 -0
  226. package/dist/{list-D3LCULQt.js → list-B6lwbCEp.js} +1 -1
  227. package/dist/{list-uS9iEE0F.js → list-BDpYPbJF.js} +1 -1
  228. package/dist/{list-CbN2giPy.js → list-BE3xmX_4.js} +1 -1
  229. package/dist/{list-P2Ztf1bQ.js → list-BVIAyAAE.js} +1 -1
  230. package/dist/{list-CLqNS8_q.js → list-Bggy3HZY.js} +1 -1
  231. package/dist/{list-ChFFjT_a.js → list-CLtqMYPK.js} +2 -2
  232. package/dist/{list-D2eSpGoo.js → list-CaFQOnfI.js} +1 -1
  233. package/dist/{list-D0NK3Iqu.js → list-DkO78ZEF.js} +1 -1
  234. package/dist/{local-XNsjb-UM.js → local-ccKBhpQc.js} +1 -1
  235. package/dist/{login-BoOBMH4y.js → login-BCdXHQ7z.js} +1 -1
  236. package/dist/{login-CCA0uLsW.js → login-CpHx_RCq.js} +1 -1
  237. package/dist/{logout-Cv0cm9F8.js → logout-zSQBDPCK.js} +1 -1
  238. package/dist/{maintenance-B_79IJ_E.js → maintenance-DuIspk-y.js} +1 -1
  239. package/dist/{mcp-C13n4A3y.js → mcp-O8VTfzdL.js} +1 -1
  240. package/dist/{model-0sxp5GdI.js → model-Bzpwl_95.js} +1 -1
  241. package/dist/{push-IpLeKMp-.js → push-vt81gcxD.js} +1 -1
  242. package/dist/{reconnect-CR3RaXX0.js → reconnect-BfghDbl1.js} +1 -1
  243. package/dist/{refresh-D0YjtXBD.js → refresh-yXJ13FAf.js} +1 -1
  244. package/dist/{remove-B01SXfEq.js → remove-5iAM2aTO.js} +1 -1
  245. package/dist/{remove-D65xtbw5.js → remove-BZCA-gdU.js} +1 -1
  246. package/dist/{remove-D1UOd48O.js → remove-BcewhH1U.js} +1 -1
  247. package/dist/{remove-C9eahMDh.js → remove-BwhcR6ig.js} +1 -1
  248. package/dist/{rename-Qwr_XDxD.js → rename-lyssPQfD.js} +1 -1
  249. package/dist/{result-70jciKDJ.js → result-Bg557zR6.js} +1 -1
  250. package/dist/{result-DXL9N9Ip.js → result-jeiRJTzA.js} +1 -1
  251. package/dist/{resume-xqhwHn3l.js → resume-fnx4FUQF.js} +1 -1
  252. package/dist/{review-vlPAshsb.js → review-CAHDqPq8.js} +1 -1
  253. package/dist/{review-D-U_2KyT.d.ts → review-CJS59vO-.d.ts} +1 -1
  254. package/dist/{rotate-key-CfeZ6Rg7.js → rotate-key-Dpx_WmuU.js} +1 -1
  255. package/dist/{run-VOuS-hHe.js → run-CLy9a2MO.js} +1 -1
  256. package/dist/{run-CoTg7SkY.js → run-DU4G8gNw.js} +1 -1
  257. package/dist/{run-CvdayZfK.js → run-D_pl9GF_.js} +1 -1
  258. package/dist/runner-zT5Oyrfr.js +1 -0
  259. package/dist/{runners-UNKPlmYE.js → runners-CNhxPjg8.js} +1 -1
  260. package/dist/schema.d.ts +1 -1
  261. package/dist/{sdk-4Vjo5Q6R.d.ts → sdk-CWerLcF5.d.ts} +19 -19
  262. package/dist/sdk.d.ts +4 -4
  263. package/dist/sdk.js +1 -1
  264. package/dist/{serve-HNXk3HMY.js → serve-FG2LgXxM.js} +2 -2
  265. package/dist/{serve-ByWMT5Gm.js → serve-UE1fcf4t.js} +1 -1
  266. package/dist/{serve-BoTW4P2G.js → serve-w-9qRCP1.js} +2 -2
  267. package/dist/{serve-BQsv2KZs.js → serve-wQgyxwdY.js} +1 -1
  268. package/dist/{server-B1x8gx33.js → server-Bw_YmgCf.js} +1 -1
  269. package/dist/{setup-host-DExG-bWZ.js → setup-host-BsbDs4lJ.js} +1 -1
  270. package/dist/{show-BeacgzZ0.js → show-Cajmf606.js} +1 -1
  271. package/dist/{show-D3OC0c35.js → show-D0qTuXRU.js} +1 -1
  272. package/dist/{status-ZN0HYtLa.js → status-PO1YXbt4.js} +1 -1
  273. package/dist/{steer-DwSC8AO4.js → steer-i6w87g_t.js} +1 -1
  274. package/dist/{stop-CEEiI1RA.js → stop-CJ0PHvKp.js} +1 -1
  275. package/dist/{stop-DTzpTbg1.js → stop-CkvoZEAH.js} +1 -1
  276. package/dist/{task-4gw9OZun.js → task-DTN_fIGC.js} +1 -1
  277. package/dist/task-DXHKWB_J.js +5 -0
  278. package/dist/{test-BnGF24Hg.js → test-BTkKFbnx.js} +1 -1
  279. package/dist/{tools-ar-D3jOh.js → tools-B-2oi2wI.js} +1 -1
  280. package/dist/{types-BktBEKW5.d.ts → types-C1tWi5lP.d.ts} +5 -5
  281. package/dist/{unalias-9AwJnbpE.js → unalias-Cqx7i_L0.js} +1 -1
  282. package/dist/{update-DoJEPBvm.js → update-MNyeVXyy.js} +1 -1
  283. package/dist/{upgrade-DRPBwDYe.js → upgrade-CGSkY0FY.js} +2 -2
  284. package/dist/{usage-CItBLFFE.js → usage-sx-FR0bz.js} +1 -1
  285. package/dist/{watch-BMuVZorc.js → watch-IL2eEgwD.js} +1 -1
  286. package/dist/{watch-Bl_pCGfq.js → watch-qfr7aSfo.js} +1 -1
  287. package/dist/{worker-BFGETvid.js → worker-BBZ36xL0.js} +1 -1
  288. package/dist/{worker-BiJ7jiOr.js → worker-D2csFtoH.js} +1 -1
  289. package/dist/{workflow-CcC-xbfp.js → workflow-BKxG9OUk.js} +1 -1
  290. package/package.json +1 -1
  291. package/dist/agent-C1HI4JlI.js +0 -3
  292. package/dist/auth-Cx4ePjWG.js +0 -1
  293. package/dist/credentials-BOAy2_-6.js +0 -1
  294. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/sign-out.1ee9b7f1343376e9.js +0 -13
  295. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/agent-menu.79e38c6e4139b9de.js +0 -12
  296. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/loading.2fa9e225a5c42496.js +0 -29
  297. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/range-bar.884e58b044238e98.js +0 -60
  298. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/loading-card.df3717186948c93f.js +0 -64
  299. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/badge.3d9163a51e6f6d6e.js +0 -43
  300. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/confirm.fe133a074c2743af.js +0 -26
  301. package/dist/dash/standalone/static/assets/chunks/action-df9907c7a10bf826.js +0 -1
  302. package/dist/dash/standalone/static/assets/chunks/agent-pills-106a518bef96408e.js +0 -1
  303. package/dist/dash/standalone/static/assets/chunks/agent-settings-form-d1aa82950d30d829.js +0 -1
  304. package/dist/dash/standalone/static/assets/chunks/agent-toggle-44667051d8be2040.js +0 -1
  305. package/dist/dash/standalone/static/assets/chunks/agents-grid-69fabb48962a282a.js +0 -1
  306. package/dist/dash/standalone/static/assets/chunks/back-e02e04679467c05b.js +0 -1
  307. package/dist/dash/standalone/static/assets/chunks/badge-b302b4d707908367.js +0 -1
  308. package/dist/dash/standalone/static/assets/chunks/card-31a2cdcfeda5254f.js +0 -1
  309. package/dist/dash/standalone/static/assets/chunks/combo-fd495e7fa91b69ed.js +0 -1
  310. package/dist/dash/standalone/static/assets/chunks/composer-10f0a825a16e1fc7.js +0 -1
  311. package/dist/dash/standalone/static/assets/chunks/composer-8c1198d45f700738.js +0 -1
  312. package/dist/dash/standalone/static/assets/chunks/confirm-7b6112578a1c4877.js +0 -1
  313. package/dist/dash/standalone/static/assets/chunks/connect-apps-bd95a6cbdc89a438.js +0 -1
  314. package/dist/dash/standalone/static/assets/chunks/connections-list-5bbf7321d9bfd08f.js +0 -1
  315. package/dist/dash/standalone/static/assets/chunks/copy-f057128db8aefd1b.js +0 -1
  316. package/dist/dash/standalone/static/assets/chunks/create-link-6f6e6b87e46f67c8.js +0 -1
  317. package/dist/dash/standalone/static/assets/chunks/credentials-list-8fc72c0331289ac6.js +0 -2
  318. package/dist/dash/standalone/static/assets/chunks/custom-range-d06cd17fcc05183d.js +0 -1
  319. package/dist/dash/standalone/static/assets/chunks/editor-b5a9659f85edea17.js +0 -7
  320. package/dist/dash/standalone/static/assets/chunks/engines-list-c10ca5e7410b790f.js +0 -1
  321. package/dist/dash/standalone/static/assets/chunks/filter-966a9aae3b0b6d77.js +0 -1
  322. package/dist/dash/standalone/static/assets/chunks/instructions-c9e1097c4e1b352a.js +0 -2
  323. package/dist/dash/standalone/static/assets/chunks/instructions-e969d4439f6676c9.js +0 -1
  324. package/dist/dash/standalone/static/assets/chunks/list-5db1dd782965a5fc.js +0 -1
  325. package/dist/dash/standalone/static/assets/chunks/models-list-b6237067c9a39f97.js +0 -1
  326. package/dist/dash/standalone/static/assets/chunks/outcome-dialog-c4f75d37645035b8.js +0 -1
  327. package/dist/dash/standalone/static/assets/chunks/paged-c44eccacea100110.js +0 -1
  328. package/dist/dash/standalone/static/assets/chunks/platform-actions-6004e96f54953935.js +0 -1
  329. package/dist/dash/standalone/static/assets/chunks/platform-actions-d8dd016336a3d768.js +0 -1
  330. package/dist/dash/standalone/static/assets/chunks/runners-list-0b288b2b79de8968.js +0 -1
  331. package/dist/dash/standalone/static/assets/chunks/secrets-list-64650cb827e93322.js +0 -1
  332. package/dist/dash/standalone/static/assets/chunks/segmented-5423dcc766dc7abc.js +0 -1
  333. package/dist/dash/standalone/static/assets/chunks/select-53722330d2e3f1c6.js +0 -1
  334. package/dist/dash/standalone/static/assets/chunks/shared-init-35a0e9007eeca198.js +0 -2
  335. package/dist/dash/standalone/static/assets/chunks/shared-init-37175329f2865f15-2.js +0 -1
  336. package/dist/dash/standalone/static/assets/chunks/shared-init-a7f2e71a718bc285.js +0 -5
  337. package/dist/dash/standalone/static/assets/chunks/shared-init-b8184e0e554d5aa4.js +0 -1
  338. package/dist/dash/standalone/static/assets/chunks/shared-init-e0aa7cbf9ac680b5.js +0 -1
  339. package/dist/dash/standalone/static/assets/chunks/side-toggle-34ee3bbe5ac64a60.js +0 -1
  340. package/dist/dash/standalone/static/assets/chunks/tail-7dece33a58f72850.js +0 -1
  341. package/dist/dash/standalone/static/assets/chunks/task-actions-b36dc5fcd9b2b2c5.js +0 -1
  342. package/dist/dash/standalone/static/assets/chunks/tasks-list-7c70210e7121b95a.js +0 -1
  343. package/dist/dash/standalone/static/assets/chunks/versions-list-26475f0d05e2d434.js +0 -1
  344. package/dist/dash/standalone/static/assets/connect-b73a327c12fa5c63.css +0 -1
  345. package/dist/dash/standalone/static/assets/create-param-id-d679f8832eafd7e8.css +0 -1
  346. package/dist/dash/standalone/static/assets/dash-param-org-14abc8f62d04dc4c.css +0 -1
  347. package/dist/dash/standalone/static/assets/dash-param-org-account-aba6d7e7f99c97cb.css +0 -1
  348. package/dist/dash/standalone/static/assets/dash-param-org-agents-570ddee6de22492e.css +0 -1
  349. package/dist/dash/standalone/static/assets/dash-param-org-agents-new-9fa9b19084b3cd2f.css +0 -1
  350. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-0e7e591f05cbddf5.css +0 -1
  351. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-f16fb90321952887.css +0 -1
  352. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-5cf30b084239d643.css +0 -1
  353. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-1c84b31df8c64b88.css +0 -1
  354. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-7da323ffa5be29aa.css +0 -1
  355. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-4900a42b805e90cb.css +0 -1
  356. package/dist/dash/standalone/static/assets/dash-param-org-operator-2f4e497a01a78f29.css +0 -1
  357. package/dist/dash/standalone/static/assets/dash-param-org-settings-0ea983332482dbc6.css +0 -1
  358. package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-e1c1f81610bb925f.css +0 -1
  359. package/dist/dash/standalone/static/assets/dash-param-org-setup-6824fce3862dbb43.css +0 -1
  360. package/dist/dash/standalone/static/assets/dash-param-org-tasks-f914c28afa705d66.css +0 -1
  361. package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-65c8bb06f94ff868.css +0 -1
  362. package/dist/dash/standalone/static/assets/dash-param-org-usage-5dbb2aa369c46eed.css +0 -1
  363. package/dist/dash/standalone/static/assets/global-eecd2b20d5e4b08d.css +0 -1
  364. package/dist/dash/standalone/static/assets/login-ca4c0cd7d65b3269.css +0 -1
  365. package/dist/dash/standalone/static/assets/pnext-client-0bcd0cbf2549bdf2.js +0 -1
  366. package/dist/dash/standalone/static/assets/pnext-client-22414b6c8a870c92.js +0 -1
  367. package/dist/dash/standalone/static/assets/pnext-client-2a02ab5209cae1ea.js +0 -1
  368. package/dist/dash/standalone/static/assets/pnext-client-46d843cfdabf3e71.js +0 -1
  369. package/dist/dash/standalone/static/assets/pnext-client-5a50a2a4da7e870e.js +0 -1
  370. package/dist/dash/standalone/static/assets/pnext-client-5b6ea850cead1482.js +0 -1
  371. package/dist/dash/standalone/static/assets/pnext-client-5b94497ba23568a8.js +0 -1
  372. package/dist/dash/standalone/static/assets/pnext-client-6686f1714e481293.js +0 -1
  373. package/dist/dash/standalone/static/assets/pnext-client-67155accb837a12a.js +0 -1
  374. package/dist/dash/standalone/static/assets/pnext-client-7db5d810ee904f4b.js +0 -1
  375. package/dist/dash/standalone/static/assets/pnext-client-8d779b89650f4b7a.js +0 -1
  376. package/dist/dash/standalone/static/assets/pnext-client-9d7a7a634c9be6ac.js +0 -1
  377. package/dist/dash/standalone/static/assets/pnext-client-9edebc462604c881.js +0 -1
  378. package/dist/dash/standalone/static/assets/pnext-client-aa5a424e38b430a5.js +0 -1
  379. package/dist/dash/standalone/static/assets/pnext-client-b983cd476c808b15.js +0 -1
  380. package/dist/dash/standalone/static/assets/pnext-client-bdf1cb75a3de35ea.js +0 -1
  381. package/dist/dash/standalone/static/assets/pnext-client-c5177dd613b27b84.js +0 -1
  382. package/dist/dash/standalone/static/assets/pnext-client-d998d7077d159f68.js +0 -1
  383. package/dist/dash/standalone/static/assets/pnext-client-f01c6d0c6beb582b.js +0 -1
  384. package/dist/dash/standalone/static/assets/pnext-client-fd4c0f3ecbcc461c.js +0 -1
  385. package/dist/integrations-35T26qmP.js +0 -1
  386. package/dist/runner-D0TLZrrO.js +0 -1
  387. package/dist/task-CB-j4EO8.js +0 -5
  388. /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
  389. /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
  390. /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 → credentials-list.98e0b34932a6ee4c.css.pnext-asset.js} +0 -0
  391. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer.360b393e5938c60b.css.pnext-asset.js → composer.79c015348f861749.css.pnext-asset.js} +0 -0
  392. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{range-bar.1da88d087e3b5302.css.pnext-asset.js → range-bar.476c059123ef6c23.css.pnext-asset.js} +0 -0
  393. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{globals.76731787d2a1aa3b.css.pnext-asset.js → globals.dccea8b03fa4b6d2.css.pnext-asset.js} +0 -0
  394. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/login/{page.57e5198339e9ca28.css.pnext-asset.js → page.586a41a7ab9988e0.css.pnext-asset.js} +0 -0
  395. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{@/comps/ui/toast.a4c3e977997216cf.css.pnext-asset.js → drawer.0b0220d1edabce29.css.pnext-asset.js} +0 -0
  396. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{drawer.e8201d78154045bc.css.pnext-asset.js → task-toasts.d13d9f628e530552.css.pnext-asset.js} +0 -0
  397. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{confirm.d18497f656702a16.css.pnext-asset.js → button.d7f4433f4e7faa80.css.pnext-asset.js} +0 -0
  398. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{copy.991f1efa061e71d6.css.pnext-asset.js → copy.fb3240de6c9479cd.css.pnext-asset.js} +0 -0
  399. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{filter.e20fbd035f24ed01.css.pnext-asset.js → filter.b53f21acc3e2cfef.css.pnext-asset.js} +0 -0
  400. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{menu.1d42c8d0493e2221.css.pnext-asset.js → menu.25b184f68cba7b46.css.pnext-asset.js} +0 -0
  401. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{select.32a95ad31c0436ad.css.pnext-asset.js → select.419208bb34700af2.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 → toolbar.19e1ce5224a23acf.css.pnext-asset.js} +0 -0
@@ -1,2 +1,2 @@
1
- import{Zt as e}from"./core-DwsAMCnL.js";import{Dn as t,Ln as n,Mn as r,vt as i}from"./config-D2FxHWwi.js";import{H as a}from"./dispatch-D3Dqxijf.js";import{i as o}from"./prompt-C--TI1qn.js";import{i as s}from"./cli-D5hyqGq0.js";import{p as c,s as l}from"./output-BKeyLbvt.js";import{n as u,s as d,t as f}from"./args-CxsMr9Un.js";import p from"node:process";function m(e){let t=c,n=[...e.publicUrl===e.address?[]:[[`public`,e.publicUrl]],[`store`,e.database??(e.mode===`local`?i():e.store)],[`runner`,e.runner],...e.signIn?[[`sign-in`,e.signIn]]:[],...e.mintedToken?[[`token`,e.mintedToken]]:[]],r=Math.max(...n.map(([e])=>e.length))+2;p.stdout.write(`${t.bold({local:`Coder local server`,memory:`Coder test server`,cloud:`Coder server`}[e.mode])} ${t.dim(`listening on ${e.address}`)}\n`);for(let[e,i]of n)p.stdout.write(` ${t.light(e.padEnd(r))}${i}\n`);e.warnings.length&&p.stdout.write(`
2
- `);for(let n of e.warnings)p.stdout.write(` ${t.yellow(`!`)} ${n}\n`);if(e.cacheMigration?.then(e=>{(e.tasks||e.flows||e.files)&&p.stdout.write(`\n moved ${e.tasks.toLocaleString(`en-US`)} archived tasks to ${e.cache}\n`)}).catch(e=>p.stderr.write(`\n Cache migration failed: ${e instanceof Error?e.message:String(e)}\n`)),e.mode===`memory`&&p.stdout.write(`\n${l([`the CLI reaches this server with its token in ADMIN_TOKEN: coder task list --server ${e.publicUrl}`],t)}\n`),e.dashboard){let n=p.stdout.isTTY&&o(e.dashboard);p.stdout.write(n?`\nOpening the dashboard in your browser. If it doesn't open, go to:\n ${e.dashboard}\n`:`\n ${t.light(`dashboard`)} ${e.dashboard}\n`)}}const h=s({name:`server serve`,help:{usage:`coder server serve [--port <n>] [--host <address>] [--memory] [--runner <name>] [--json] [--cwd <dir>]`,summary:`Run the Coder server on Bun: the address platforms deliver events to, the dashboard, and the worker that runs tasks. With DATABASE_URL it is a full server with sign-in and workspaces. Without one it is the dashboard for this machine's CLI: its config, agents, tasks and engine logins, on loopback only. --memory makes a throwaway test server that keeps everything in memory. Configured through the environment; every variable is in coder docs self-host.`,flags:[[`--port <n>`,`listen port (default: PORT, else the port in a localhost PUBLIC_URL, else 8787)`],[`--host <address>`,`listen address (default: HOST, else 127.0.0.1 without a database, else every interface)`],[`--memory`,`a throwaway test server: everything in memory, no sign-in, admin token only`],[`--runner <name>`,`local, local-docker, vercel-sandbox, github-actions, or http`]],env:[[`PUBLIC_URL`,`the address platforms and browsers reach the server at (default http://localhost:<port>)`],[`PORT`,`listen port, as hosts set it (default 8787)`],[`HOST`,`listen address, as --host`],[`DATABASE_URL`,`Postgres, set up with drizzle-kit push; turns on sign-in and workspaces`],[`AUTH_WULAR_URL`,`the Wular Auth issuer people sign in with (default https://auth.wular.ai)`],[`SERVER_ENCRYPTION_KEY`,`encrypts stored secrets and derives the sign-in keys; required with DATABASE_URL (openssl rand -base64 32)`],[`RUNNER`,`where tasks run: local (default), local-docker, vercel-sandbox, github-actions, http`],[`MAX_TASKS, TASK_TIMEOUT, TASK_STALL, TASK_ATTEMPTS`,`runner capacity and lifecycle limits`],[`ADMIN_TOKEN`,`local and memory servers: the dashboard and CLI key; minted and shown when unset`],[`CODER_CACHE_HOME`,`archived tasks, flows and usage (default OS cache directory/wular-coder)`],[`WORK_DIR`,`where tasks check out repositories`],[`SERVER_NAME`,`what the dashboard calls this server (default Coder)`]],examples:[[`PUBLIC_URL=https://abc.ngrok.app coder server serve`,`receive GitHub and Slack events through a tunnel; the tunnel serves only their webhooks and callbacks`],[`PUBLIC_URL=https://agents.example.com DATABASE_URL=postgres://... coder server serve`,`on your own host, backed by Postgres`]]},options:{...f,port:n(t().check(r(),e())),host:d,runner:d,memory:u},async run({options:e,cwd:t}){let{rerunUnderBun:n}=await import(`./env-C_DoQYl5.js`).then(e=>e.t);if(await n(),e.memory&&!p.env.ADMIN_TOKEN&&!p.stdout.isTTY)throw new a(`invalid-option`,`Memory server needs an admin token: set ADMIN_TOKEN, or run in a terminal to get a printed one.`);let{serve:r}=await import(`./serve-HNXk3HMY.js`).then(e=>e.n),i=await r({cwd:t,port:e.port,...e.host?{host:e.host}:{},...e.runner?{runner:e.runner}:{},...e.memory?{memory:!0}:{}}),o=()=>void i.close().finally(()=>p.exit(0));return p.once(`SIGINT`,o),p.once(`SIGTERM`,o),i},json:e=>({ok:!0,address:e.address,publicUrl:e.publicUrl,runner:e.runner,store:e.store,mode:e.mode,maxTasks:e.maxTasks,...e.signIn?{signIn:e.signIn}:{},...e.mintedToken?{adminToken:e.mintedToken}:{},warnings:e.warnings}),print:m});export{h as commandServerServe};
1
+ import{Zt as e}from"./core-DwsAMCnL.js";import{Dn as t,Ln as n,Mn as r,vt as i}from"./config-D2FxHWwi.js";import{H as a}from"./dispatch-D3Dqxijf.js";import{i as o}from"./prompt-C--TI1qn.js";import{i as s}from"./cli-ZUdhZnuW.js";import{p as c,s as l}from"./output-BKeyLbvt.js";import{n as u,s as d,t as f}from"./args-CxsMr9Un.js";import p from"node:process";function m(e){let t=c,n=[...e.publicUrl===e.address?[]:[[`public`,e.publicUrl]],[`store`,e.database??(e.mode===`local`?i():e.store)],[`runner`,e.runner],...e.signIn?[[`sign-in`,e.signIn]]:[],...e.mintedToken?[[`token`,e.mintedToken]]:[]],r=Math.max(...n.map(([e])=>e.length))+2;p.stdout.write(`${t.bold({local:`Coder local server`,memory:`Coder test server`,cloud:`Coder server`}[e.mode])} ${t.dim(`listening on ${e.address}`)}\n`);for(let[e,i]of n)p.stdout.write(` ${t.light(e.padEnd(r))}${i}\n`);e.warnings.length&&p.stdout.write(`
2
+ `);for(let n of e.warnings)p.stdout.write(` ${t.yellow(`!`)} ${n}\n`);if(e.cacheMigration?.then(e=>{(e.tasks||e.flows||e.files)&&p.stdout.write(`\n moved ${e.tasks.toLocaleString(`en-US`)} archived tasks to ${e.cache}\n`)}).catch(e=>p.stderr.write(`\n Cache migration failed: ${e instanceof Error?e.message:String(e)}\n`)),e.mode===`memory`&&p.stdout.write(`\n${l([`the CLI reaches this server with its token in ADMIN_TOKEN: coder task list --server ${e.publicUrl}`],t)}\n`),e.dashboard){let n=p.stdout.isTTY&&o(e.dashboard);p.stdout.write(n?`\nOpening the dashboard in your browser. If it doesn't open, go to:\n ${e.dashboard}\n`:`\n ${t.light(`dashboard`)} ${e.dashboard}\n`)}}const h=s({name:`server serve`,help:{usage:`coder server serve [--port <n>] [--host <address>] [--memory] [--runner <name>] [--json] [--cwd <dir>]`,summary:`Run the Coder server on Bun: the address platforms deliver events to, the dashboard, and the worker that runs tasks. With DATABASE_URL it is a full server with sign-in and workspaces. Without one it is the dashboard for this machine's CLI: its config, agents, tasks and engine logins, on loopback only. --memory makes a throwaway test server that keeps everything in memory. Configured through the environment; every variable is in coder docs self-host.`,flags:[[`--port <n>`,`listen port (default: PORT, else the port in a localhost PUBLIC_URL, else 8787)`],[`--host <address>`,`listen address (default: HOST, else 127.0.0.1 without a database, else every interface)`],[`--memory`,`a throwaway test server: everything in memory, no sign-in, admin token only`],[`--runner <name>`,`local, local-docker, vercel-sandbox, github-actions, or http`]],env:[[`PUBLIC_URL`,`the address platforms and browsers reach the server at (default http://localhost:<port>)`],[`PORT`,`listen port, as hosts set it (default 8787)`],[`HOST`,`listen address, as --host`],[`DATABASE_URL`,`Postgres, set up with drizzle-kit push; turns on sign-in and workspaces`],[`AUTH_WULAR_URL`,`the Wular Auth issuer people sign in with (default https://auth.wular.ai)`],[`SERVER_ENCRYPTION_KEY`,`encrypts stored secrets and derives the sign-in keys; required with DATABASE_URL (openssl rand -base64 32)`],[`RUNNER`,`where tasks run: local (default), local-docker, vercel-sandbox, github-actions, http`],[`MAX_TASKS, TASK_TIMEOUT, TASK_STALL, TASK_ATTEMPTS`,`runner capacity and lifecycle limits`],[`ADMIN_TOKEN`,`local and memory servers: the dashboard and CLI key; minted and shown when unset`],[`CODER_CACHE_HOME`,`archived tasks, flows and usage (default OS cache directory/wular-coder)`],[`WORK_DIR`,`where tasks check out repositories`],[`SERVER_NAME`,`what the dashboard calls this server (default Coder)`]],examples:[[`PUBLIC_URL=https://abc.ngrok.app coder server serve`,`receive GitHub and Slack events through a tunnel; the tunnel serves only their webhooks and callbacks`],[`PUBLIC_URL=https://agents.example.com DATABASE_URL=postgres://... coder server serve`,`on your own host, backed by Postgres`]]},options:{...f,port:n(t().check(r(),e())),host:d,runner:d,memory:u},async run({options:e,cwd:t}){let{rerunUnderBun:n}=await import(`./env-C_DoQYl5.js`).then(e=>e.t);if(await n(),e.memory&&!p.env.ADMIN_TOKEN&&!p.stdout.isTTY)throw new a(`invalid-option`,`Memory server needs an admin token: set ADMIN_TOKEN, or run in a terminal to get a printed one.`);let{serve:r}=await import(`./serve-FG2LgXxM.js`).then(e=>e.n),i=await r({cwd:t,port:e.port,...e.host?{host:e.host}:{},...e.runner?{runner:e.runner}:{},...e.memory?{memory:!0}:{}}),o=()=>void i.close().finally(()=>p.exit(0));return p.once(`SIGINT`,o),p.once(`SIGTERM`,o),i},json:e=>({ok:!0,address:e.address,publicUrl:e.publicUrl,runner:e.runner,store:e.store,mode:e.mode,maxTasks:e.maxTasks,...e.signIn?{signIn:e.signIn}:{},...e.mintedToken?{adminToken:e.mintedToken}:{},warnings:e.warnings}),print:m});export{h as commandServerServe};
@@ -1 +1 @@
1
- import{qi as e}from"./core-DwsAMCnL.js";import{$ as t}from"./config-D2FxHWwi.js";import{H as n}from"./dispatch-D3Dqxijf.js";import{n as r,o as i}from"./remote-oQs6My_3.js";import{l as a}from"./slack-C_RlVDz7.js";import{t as o}from"./local-XNsjb-UM.js";import{s,t as c}from"./http-BYMXT_p6.js";import l from"node:path";import u from"node:fs";import{createHmac as d,randomBytes as f}from"node:crypto";import p from"node:os";import m from"node:http";var h=e({runnerController:()=>C,serveRunner:()=>b});const g=()=>t(`runners.json`);function _(){try{return JSON.parse(u.readFileSync(g(),`utf8`))}catch{return{}}}function v(e){u.mkdirSync(l.dirname(g()),{recursive:!0}),u.writeFileSync(g(),JSON.stringify(e,null,2),{mode:384})}const y=e=>[`cloudflared tunnel --url http://localhost:${e}`,`ngrok http ${e}`,`tailscale funnel ${e}`,`VS Code: forward port ${e} in the Ports view and set its visibility to Public`];async function b(e={}){let a=e.port??4100,l=e.token?e.runnerUrl??process.env.CODER_RUNNER_URL:e.url;if(!l)throw new n(`invalid-option`,e.token?`Expose this runner and set CODER_RUNNER_URL or --runner-url to its public HTTPS address.`:`Expose this runner with a tunnel, then pass its public URL with --url.`,{hint:y(a)});let u=e.token?i({...e,server:e.url??e.server,yes:!0}):i(e),d=_(),h=d[u]??{secret:f(32).toString(`base64url`)},g=new o(t(`runner`)),b=C({secret:h.secret,server:u,runner:g}),x=m.createServer(s(b,{limit:c}));await new Promise((e,t)=>{x.once(`error`,t),x.listen(a,`127.0.0.1`,e)});let S=()=>new Promise(e=>x.close(()=>e())),w=e.name??p.hostname(),T=async(e,t)=>{let r=await fetch(`${u}/runners/register`,{method:`POST`,redirect:`manual`,signal:AbortSignal.timeout(5e3),headers:{"content-type":`application/json`},body:JSON.stringify({...e?{token:e}:{id:h.id,organizationId:h.organizationId},name:w,url:l,secret:h.secret,...t?{offline:t}:{}})});if(!r.ok)throw new n(`server`,`Runner registration failed`,{status:r.status});return r.json()},E;try{if(e.token){let t=await T(e.token);E=t,h.organizationId=t.organizationId}else{let t=h.id&&h.organizationId?await T().catch(e=>{if(!(e instanceof n&&e.status===401))throw e}):void 0;if(t)E=t;else{let t=r(e),n=await t.me();E=await t.runners.add({kind:`http`,name:w,scope:e.workspace||!n.user?`workspace`:`personal`,config:{url:l,secret:h.secret}}),h.organizationId=n.organization?.id,h.id=E.id,E=await T()}}h.id=E.id,v({...d,[u]:h})}catch(e){throw await S(),e}let D=Promise.resolve(),O=setInterval(()=>{D=D.then(()=>T().then(()=>{})).catch(()=>{})},6e4);return{...E,port:a,server:u,close:async()=>{clearInterval(O),await D,await T(void 0,!0).catch(()=>{}),await S()}}}const x=3e5,S=(e,t=200)=>new Response(JSON.stringify(e),{status:t,headers:{"content-type":`application/json`}});function C(e){let t=e.now??Date.now,n=new Map,r=(r,i)=>{let o=r.headers.get(`x-coder-timestamp`)??``,s=r.headers.get(`x-coder-nonce`)??``,c=r.headers.get(`x-coder-signature`)??``,l=Number(o);if(!s||!Number.isFinite(l)||Math.abs(t()-l)>x)return!1;let u=d(`sha256`,e.secret).update(`${i}.${o}.${s}`).digest(`base64url`);if(!a(c,u))return!1;for(let[e,r]of n)r<t()&&n.delete(e);return!n.has(s)&&(n.set(s,l+x),!0)};return async t=>{let n=t.method===`GET`?``:await t.text();if(!r(t,n))return S({error:`Unauthorized`},401);let[,i,a]=new URL(t.url).pathname.split(`/`).map(decodeURIComponent);try{if(t.method===`POST`&&i===`start`&&!a){let t=JSON.parse(n);if(typeof t.task!=`string`||!t.env)return S({error:`Invalid start`},400);let r=t.env.CODER_TASK_TOKEN;if(typeof r!=`string`)return S({error:`Invalid start`},400);let i={CODER_SERVER:e.server,CODER_TASK_TOKEN:r,CODER_INBOX_MODE:e.runner.push?`push`:`poll`,...t.env.CODER_LOGIN===`claude`||t.env.CODER_LOGIN===`codex`?{CODER_LOGIN:t.env.CODER_LOGIN}:{}};return S({handle:await e.runner.start({id:t.task},i)})}if(t.method===`GET`&&i===`health`&&!a)return S({ok:!0});if(!a)return S({error:`Not found`},404);if(t.method===`POST`&&i===`messages`&&e.runner.push){let{entries:t}=JSON.parse(n);return!Array.isArray(t)||!t.length?S({error:`Invalid messages`},400):S(await e.runner.push(a,t))}return t.method===`GET`&&i===`status`?S(await e.runner.status(a)):t.method===`POST`&&i===`stop`?(await e.runner.stop(a),new Response(null,{status:204})):S({error:`Not found`},404)}catch(e){return S({error:e instanceof Error?e.message:String(e)},400)}}}export{h as n,b as t};
1
+ import{qi as e}from"./core-DwsAMCnL.js";import{$ as t}from"./config-D2FxHWwi.js";import{H as n}from"./dispatch-D3Dqxijf.js";import{n as r,o as i}from"./remote-oQs6My_3.js";import{l as a}from"./slack-C_RlVDz7.js";import{t as o}from"./local-ccKBhpQc.js";import{s,t as c}from"./http-Cg_wYcZT.js";import l from"node:path";import u from"node:fs";import{createHmac as d,randomBytes as f}from"node:crypto";import p from"node:os";import m from"node:http";var h=e({runnerController:()=>C,serveRunner:()=>b});const g=()=>t(`runners.json`);function _(){try{return JSON.parse(u.readFileSync(g(),`utf8`))}catch{return{}}}function v(e){u.mkdirSync(l.dirname(g()),{recursive:!0}),u.writeFileSync(g(),JSON.stringify(e,null,2),{mode:384})}const y=e=>[`cloudflared tunnel --url http://localhost:${e}`,`ngrok http ${e}`,`tailscale funnel ${e}`,`VS Code: forward port ${e} in the Ports view and set its visibility to Public`];async function b(e={}){let a=e.port??4100,l=e.token?e.runnerUrl??process.env.CODER_RUNNER_URL:e.url;if(!l)throw new n(`invalid-option`,e.token?`Expose this runner and set CODER_RUNNER_URL or --runner-url to its public HTTPS address.`:`Expose this runner with a tunnel, then pass its public URL with --url.`,{hint:y(a)});let u=e.token?i({...e,server:e.url??e.server,yes:!0}):i(e),d=_(),h=d[u]??{secret:f(32).toString(`base64url`)},g=new o(t(`runner`)),b=C({secret:h.secret,server:u,runner:g}),x=m.createServer(s(b,{limit:c}));await new Promise((e,t)=>{x.once(`error`,t),x.listen(a,`127.0.0.1`,e)});let S=()=>new Promise(e=>x.close(()=>e())),w=e.name??p.hostname(),T=async(e,t)=>{let r=await fetch(`${u}/runners/register`,{method:`POST`,redirect:`manual`,signal:AbortSignal.timeout(5e3),headers:{"content-type":`application/json`},body:JSON.stringify({...e?{token:e}:{id:h.id,organizationId:h.organizationId},name:w,url:l,secret:h.secret,...t?{offline:t}:{}})});if(!r.ok)throw new n(`server`,`Runner registration failed`,{status:r.status});return r.json()},E;try{if(e.token){let t=await T(e.token);E=t,h.organizationId=t.organizationId}else{let t=h.id&&h.organizationId?await T().catch(e=>{if(!(e instanceof n&&e.status===401))throw e}):void 0;if(t)E=t;else{let t=r(e),n=await t.me();E=await t.runners.add({kind:`http`,name:w,scope:e.workspace||!n.user?`workspace`:`personal`,config:{url:l,secret:h.secret}}),h.organizationId=n.organization?.id,h.id=E.id,E=await T()}}h.id=E.id,v({...d,[u]:h})}catch(e){throw await S(),e}let D=Promise.resolve(),O=setInterval(()=>{D=D.then(()=>T().then(()=>{})).catch(()=>{})},6e4);return{...E,port:a,server:u,close:async()=>{clearInterval(O),await D,await T(void 0,!0).catch(()=>{}),await S()}}}const x=3e5,S=(e,t=200)=>new Response(JSON.stringify(e),{status:t,headers:{"content-type":`application/json`}});function C(e){let t=e.now??Date.now,n=new Map,r=(r,i)=>{let o=r.headers.get(`x-coder-timestamp`)??``,s=r.headers.get(`x-coder-nonce`)??``,c=r.headers.get(`x-coder-signature`)??``,l=Number(o);if(!s||!Number.isFinite(l)||Math.abs(t()-l)>x)return!1;let u=d(`sha256`,e.secret).update(`${i}.${o}.${s}`).digest(`base64url`);if(!a(c,u))return!1;for(let[e,r]of n)r<t()&&n.delete(e);return!n.has(s)&&(n.set(s,l+x),!0)};return async t=>{let n=t.method===`GET`?``:await t.text();if(!r(t,n))return S({error:`Unauthorized`},401);let[,i,a]=new URL(t.url).pathname.split(`/`).map(decodeURIComponent);try{if(t.method===`POST`&&i===`start`&&!a){let t=JSON.parse(n);if(typeof t.task!=`string`||!t.env)return S({error:`Invalid start`},400);let r=t.env.CODER_TASK_TOKEN;if(typeof r!=`string`)return S({error:`Invalid start`},400);let i={CODER_SERVER:e.server,CODER_TASK_TOKEN:r,CODER_INBOX_MODE:e.runner.push?`push`:`poll`,...t.env.CODER_LOGIN===`claude`||t.env.CODER_LOGIN===`codex`?{CODER_LOGIN:t.env.CODER_LOGIN}:{}};return S({handle:await e.runner.start({id:t.task},i)})}if(t.method===`GET`&&i===`health`&&!a)return S({ok:!0});if(!a)return S({error:`Not found`},404);if(t.method===`POST`&&i===`messages`&&e.runner.push){let{entries:t}=JSON.parse(n);return!Array.isArray(t)||!t.length?S({error:`Invalid messages`},400):S(await e.runner.push(a,t))}return t.method===`GET`&&i===`status`?S(await e.runner.status(a)):t.method===`POST`&&i===`stop`?(await e.runner.stop(a),new Response(null,{status:204})):S({error:`Not found`},404)}catch(e){return S({error:e instanceof Error?e.message:String(e)},400)}}}export{h as n,b as t};
@@ -1 +1 @@
1
- import{s as e}from"./cli-D5hyqGq0.js";const t=e(`server`,{serve:async()=>(await import(`./serve-BoTW4P2G.js`)).commandServerServe,"rotate-key":async()=>(await import(`./rotate-key-CfeZ6Rg7.js`)).commandServerRotateKey,app:async()=>(await import(`./app-snjvOKJA.js`)).commandServerApp,workflow:async()=>(await import(`./workflow-CcC-xbfp.js`)).commandServerWorkflow},{menu:[{usage:`serve [--port <n>]`,blurb:`run the server`},{usage:`rotate-key`,blurb:`re-seal secrets with SERVER_ENCRYPTION_KEY`},{usage:`app create <integration>`,blurb:`create the built-in agent's public app`},{usage:`workflow`,blurb:`print the GitHub Actions workflow for RUNNER=github-actions`}],description:[`Self-host Coder: the server your agents and platform apps talk to, with a dashboard and sign-in. We run one as the hosted service; you can run your own.`],exampleCommand:`server serve`},{nested:[`app`]});export{t as commandServer};
1
+ import{s as e}from"./cli-ZUdhZnuW.js";const t=e(`server`,{serve:async()=>(await import(`./serve-w-9qRCP1.js`)).commandServerServe,"rotate-key":async()=>(await import(`./rotate-key-Dpx_WmuU.js`)).commandServerRotateKey,app:async()=>(await import(`./app-CJPFaLIV.js`)).commandServerApp,workflow:async()=>(await import(`./workflow-BKxG9OUk.js`)).commandServerWorkflow},{menu:[{usage:`serve [--port <n>]`,blurb:`run the server`},{usage:`rotate-key`,blurb:`re-seal secrets with SERVER_ENCRYPTION_KEY`},{usage:`app create <integration>`,blurb:`create the built-in agent's public app`},{usage:`workflow`,blurb:`print the GitHub Actions workflow for RUNNER=github-actions`}],description:[`Self-host Coder: the server your agents and platform apps talk to, with a dashboard and sign-in. We run one as the hosted service; you can run your own.`],exampleCommand:`server serve`},{nested:[`app`]});export{t as commandServer};
@@ -1,4 +1,4 @@
1
- import{T as e}from"./dispatch-D3Dqxijf.js";import{i as t}from"./cli-D5hyqGq0.js";import{f as n,p as r,t as i}from"./output-BKeyLbvt.js";import{n as a,t as o}from"./args-CxsMr9Un.js";import s from"node:process";const c=t({name:`setup-host`,help:{usage:`coder setup-host [claude] [codex] [agents] [--json]`,summary:`Set up coder in your host: check engines and auth, seed the config, and
1
+ import{T as e}from"./dispatch-D3Dqxijf.js";import{i as t}from"./cli-ZUdhZnuW.js";import{f as n,p as r,t as i}from"./output-BKeyLbvt.js";import{n as a,t as o}from"./args-CxsMr9Un.js";import s from"node:process";const c=t({name:`setup-host`,help:{usage:`coder setup-host [claude] [codex] [agents] [--json]`,summary:`Set up coder in your host: check engines and auth, seed the config, and
2
2
  install the host plugin/skill for the named host(s). Claude Code gets its
3
3
  marketplace plugin; "agents" installs a skill into ~/.agents/skills for
4
4
  every host that reads the Agent Skills standard dir (Codex, Pi, OpenCode,
@@ -1 +1 @@
1
- import{i as e,r as t}from"./cli-D5hyqGq0.js";import{g as n,p as r}from"./output-BKeyLbvt.js";import{i,n as a,s as o,t as s}from"./args-CxsMr9Un.js";import{isLocal as c}from"./list-ChFFjT_a.js";import l from"node:path";import u from"node:process";const d={server:i,workspace:o,yes:a};function f(e,t){return c(e)?{id:e.id,name:e.name,source:e.builtin?`builtin`:`repo`,...e.dir&&!e.builtin?{dir:l.relative(t,e.dir)}:{},definition:e.definition,...e.usage?{usage:e.usage}:{}}:{id:e.id,name:e.name,source:e.source,definition:e.definition,...e.settings?{usage:e.settings}:{}}}function p(e){let t=r,{definition:i,usage:a}=e,o=`dir`in e?e.dir:void 0,s=[[`name`,e.name],[`source`,o?`${e.source} (${o})`:e.source],[`description`,i.description],[`permissions`,a?.permissions??i.permissions],[`engine`,a?.engine??i.engine],[`model`,a?.model??i.model],[`effort`,a?.effort??i.effort]],c=Math.max(...s.map(([e])=>e.length))+2;for(let[e,n]of s)n&&u.stdout.write(`${t.dim(e.padEnd(c))}${n}\n`);let l=Object.entries(i.integrations).map(([e,t])=>{let n=a?.integrations?.[e],r=Array.isArray(t.events)?t.events:Object.keys(t.events??{}),i=n?.allowedEvents?r.filter(e=>n.allowedEvents.includes(e)):r,o=n?.allowedTools??t.tools;return{id:e,events:i.join(`, `)||`-`,tools:Array.isArray(o)?o.join(`, `):o??`-`}});u.stdout.write(`\n${n([{header:`integration`,value:e=>e.id,paint:e=>t.cyan(e)},{header:`events`,value:e=>e.events},{header:`tools`,value:e=>e.tools}],l,{style:t,border:!0})}`)}const m=e({name:`agent show`,help:{usage:`coder agent show <id> [--server [url]] [--json] [--cwd <dir>]`,summary:`Describe one agent as it will run here, or its active version on a server: its settings and per-integration events and tools.`,flags:[t],examples:[[`coder agent show coder`,`what the built-in agent listens to and may do`]]},options:{...s,...d},args:1,run:async({options:e,args:[t],cwd:n})=>{let{agents:r}=await import(`./agent-C1HI4JlI.js`).then(e=>e.t);return r.show(t,{...e,cwd:n,organization:e.workspace})},json:(e,{cwd:t})=>f(e,t),print:(e,{cwd:t})=>p(f(e,t))});export{m as commandAgentShow};
1
+ import{i as e,r as t}from"./cli-ZUdhZnuW.js";import{g as n,p as r}from"./output-BKeyLbvt.js";import{i,n as a,s as o,t as s}from"./args-CxsMr9Un.js";import{isLocal as c}from"./list-CLtqMYPK.js";import l from"node:path";import u from"node:process";const d={server:i,workspace:o,yes:a};function f(e,t){return c(e)?{id:e.id,name:e.name,source:e.builtin?`builtin`:`repo`,...e.dir&&!e.builtin?{dir:l.relative(t,e.dir)}:{},definition:e.definition,...e.usage?{usage:e.usage}:{}}:{id:e.id,name:e.name,source:e.source,definition:e.definition,...e.settings?{usage:e.settings}:{}}}function p(e){let t=r,{definition:i,usage:a}=e,o=`dir`in e?e.dir:void 0,s=[[`name`,e.name],[`source`,o?`${e.source} (${o})`:e.source],[`description`,i.description],[`permissions`,a?.permissions??i.permissions],[`engine`,a?.engine??i.engine],[`model`,a?.model??i.model],[`effort`,a?.effort??i.effort]],c=Math.max(...s.map(([e])=>e.length))+2;for(let[e,n]of s)n&&u.stdout.write(`${t.dim(e.padEnd(c))}${n}\n`);let l=Object.entries(i.integrations).map(([e,t])=>{let n=a?.integrations?.[e],r=Array.isArray(t.events)?t.events:Object.keys(t.events??{}),i=n?.allowedEvents?r.filter(e=>n.allowedEvents.includes(e)):r,o=n?.allowedTools??t.tools;return{id:e,events:i.join(`, `)||`-`,tools:Array.isArray(o)?o.join(`, `):o??`-`}});u.stdout.write(`\n${n([{header:`integration`,value:e=>e.id,paint:e=>t.cyan(e)},{header:`events`,value:e=>e.events},{header:`tools`,value:e=>e.tools}],l,{style:t,border:!0})}`)}const m=e({name:`agent show`,help:{usage:`coder agent show <id> [--server [url]] [--json] [--cwd <dir>]`,summary:`Describe one agent as it will run here, or its active version on a server: its settings and per-integration events and tools.`,flags:[t],examples:[[`coder agent show coder`,`what the built-in agent listens to and may do`]]},options:{...s,...d},args:1,run:async({options:e,args:[t],cwd:n})=>{let{agents:r}=await import(`./agent-ChnedLBv.js`).then(e=>e.t);return r.show(t,{...e,cwd:n,organization:e.workspace})},json:(e,{cwd:t})=>f(e,t),print:(e,{cwd:t})=>p(f(e,t))});export{m as commandAgentShow};
@@ -1 +1 @@
1
- import{i as e}from"./cli-D5hyqGq0.js";import{g as t,p as n}from"./output-BKeyLbvt.js";import{n as r}from"./args-CxsMr9Un.js";import i from"node:process";function a(e){let r=n,a=[...Object.entries(e.events).map(([e,t])=>({kind:`event`,name:e,does:t})),...Object.entries(e.tools).map(([e,t])=>({kind:`tools`,name:e,does:t.join(`, `)}))];i.stdout.write(t([{header:`kind`,value:e=>e.kind,paint:e=>r.light(e)},{header:`name`,value:e=>e.name},{header:`does`,value:e=>e.does}],a,r))}const o=e({name:`agent integrations show`,globalFlags:{cwd:!1},help:{usage:`coder agent integrations show <id> [--json]`,summary:`Describe one integration: each event with what triggers it, and the tools each preset (observe, comment, write) allows.`,examples:[[`coder agent integrations show github`,`the GitHub integration in full`]]},options:{json:r},args:1,run:async({args:[e]})=>{let{agents:t}=await import(`./agent-C1HI4JlI.js`).then(e=>e.t);return t.integrations.show(e)},print:a});export{o as commandIntegrationsShow};
1
+ import{i as e}from"./cli-ZUdhZnuW.js";import{g as t,p as n}from"./output-BKeyLbvt.js";import{n as r}from"./args-CxsMr9Un.js";import i from"node:process";function a(e){let r=n,a=[...Object.entries(e.events).map(([e,t])=>({kind:`event`,name:e,does:t})),...Object.entries(e.tools).map(([e,t])=>({kind:`tools`,name:e,does:t.join(`, `)}))];i.stdout.write(t([{header:`kind`,value:e=>e.kind,paint:e=>r.light(e)},{header:`name`,value:e=>e.name},{header:`does`,value:e=>e.does}],a,r))}const o=e({name:`agent integrations show`,globalFlags:{cwd:!1},help:{usage:`coder agent integrations show <id> [--json]`,summary:`Describe one integration: each event with what triggers it, and the tools each preset (observe, comment, write) allows.`,examples:[[`coder agent integrations show github`,`the GitHub integration in full`]]},options:{json:r},args:1,run:async({args:[e]})=>{let{agents:t}=await import(`./agent-ChnedLBv.js`).then(e=>e.t);return t.integrations.show(e)},print:a});export{o as commandIntegrationsShow};
@@ -1 +1 @@
1
- import{i as e}from"./cli-D5hyqGq0.js";import{g as t,p as n,s as r}from"./output-BKeyLbvt.js";import{n as i}from"./args-CxsMr9Un.js";import a from"node:process";const o=e({name:`auth status`,globalFlags:{cwd:!1},help:{usage:`coder auth status [--json]`,summary:`List saved sessions with their server, user, and workspace.`,env:[[`CODER_SERVER`,`the server to use instead of https://coder.wular.ai`]]},options:{json:i},run:async()=>{let{sessions:e}=await import(`./remote-oQs6My_3.js`).then(e=>e.c);return e.status()},print:e=>{let i=n,o=Object.entries(e);if(!o.length)return void a.stdout.write(`${i.dim(`Not signed in`)}\n\n${r([`Sign in: coder auth login`],i)}\n`);a.stdout.write(`${t([{header:`server`,value:([e])=>e,paint:e=>i.cyan(e)},{header:`user`,value:([,e])=>e.user.email},{header:`workspace`,value:([,e])=>e.organization?`${e.organization.name} (${e.organization.slug})`:`-`}],o,i)}\n`)}});export{o as commandStatus};
1
+ import{i as e}from"./cli-ZUdhZnuW.js";import{g as t,p as n,s as r}from"./output-BKeyLbvt.js";import{n as i}from"./args-CxsMr9Un.js";import a from"node:process";const o=e({name:`auth status`,globalFlags:{cwd:!1},help:{usage:`coder auth status [--json]`,summary:`List saved sessions with their server, user, and workspace.`,env:[[`CODER_SERVER`,`the server to use instead of https://coder.wular.ai`]]},options:{json:i},run:async()=>{let{sessions:e}=await import(`./remote-oQs6My_3.js`).then(e=>e.c);return e.status()},print:e=>{let i=n,o=Object.entries(e);if(!o.length)return void a.stdout.write(`${i.dim(`Not signed in`)}\n\n${r([`Sign in: coder auth login`],i)}\n`);a.stdout.write(`${t([{header:`server`,value:([e])=>e,paint:e=>i.cyan(e)},{header:`user`,value:([,e])=>e.user.email},{header:`workspace`,value:([,e])=>e.organization?`${e.organization.name} (${e.organization.slug})`:`-`}],o,i)}\n`)}});export{o as commandStatus};
@@ -1,4 +1,4 @@
1
- import{H as e}from"./dispatch-D3Dqxijf.js";import{i as t,r as n}from"./cli-D5hyqGq0.js";import{p as r,r as i,s as a}from"./output-BKeyLbvt.js";import{i as o,n as s,s as c,t as l}from"./args-CxsMr9Un.js";import{i as u,r as d}from"./result-DXL9N9Ip.js";import f from"node:process";const p={server:o,workspace:c,yes:s};function m(t,n,r){let[i,...a]=t,o=a.join(` `).trim();if(!i||!o)throw new e(`invalid-option`,n,{hint:r});return{id:i,text:o}}function h(e,t=!1){let{taskId:n,steered:o}=e;if(o===`queued`){f.stdout.write(`${r.dim(`[coder]`)} follow-up queued for task ${r.cyan(n)}; it runs when the current turn finishes.\n`),t&&f.stdout.write(`\n${r.dim(`[coder] --wait is not available for a queued follow-up.`)}\n\n${a([`Wait in its own background shell, one per task: coder task result ${n} --wait`],r)}\n`);return}if(!t){f.stdout.write(o===`live`?`${r.dim(`[coder]`)} steered follow-up into running task ${r.cyan(n)}.\n`:`${r.dim(`[coder]`)} resumed task ${r.cyan(n)} with the follow-up (same thread, same id).\n`),f.stdout.write(`\n${a([`Wait in its own background shell, one per task: coder task result ${n} --wait`],r)}\n`);return}f.stdout.write(`\n${e.finalMessage||`(no final message)`}\n\n`),f.stderr.write(`${r.dim(`[coder] task=${n} status=${e.status??`unknown`}`)}\n\n${d(n,i)}\n`)}const g=t({name:`task steer`,help:{usage:`coder task steer <task-id> "<follow-up instructions>" [--wait] [--server [url]]`,summary:`Continue a task's thread with new instructions. They are injected into a live Codex or
1
+ import{H as e}from"./dispatch-D3Dqxijf.js";import{i as t,r as n}from"./cli-ZUdhZnuW.js";import{p as r,r as i,s as a}from"./output-BKeyLbvt.js";import{i as o,n as s,s as c,t as l}from"./args-CxsMr9Un.js";import{i as u,r as d}from"./result-jeiRJTzA.js";import f from"node:process";const p={server:o,workspace:c,yes:s};function m(t,n,r){let[i,...a]=t,o=a.join(` `).trim();if(!i||!o)throw new e(`invalid-option`,n,{hint:r});return{id:i,text:o}}function h(e,t=!1){let{taskId:n,steered:o}=e;if(o===`queued`){f.stdout.write(`${r.dim(`[coder]`)} follow-up queued for task ${r.cyan(n)}; it runs when the current turn finishes.\n`),t&&f.stdout.write(`\n${r.dim(`[coder] --wait is not available for a queued follow-up.`)}\n\n${a([`Wait in its own background shell, one per task: coder task result ${n} --wait`],r)}\n`);return}if(!t){f.stdout.write(o===`live`?`${r.dim(`[coder]`)} steered follow-up into running task ${r.cyan(n)}.\n`:`${r.dim(`[coder]`)} resumed task ${r.cyan(n)} with the follow-up (same thread, same id).\n`),f.stdout.write(`\n${a([`Wait in its own background shell, one per task: coder task result ${n} --wait`],r)}\n`);return}f.stdout.write(`\n${e.finalMessage||`(no final message)`}\n\n`),f.stderr.write(`${r.dim(`[coder] task=${n} status=${e.status??`unknown`}`)}\n\n${d(n,i)}\n`)}const g=t({name:`task steer`,help:{usage:`coder task steer <task-id> "<follow-up instructions>" [--wait] [--server [url]]`,summary:`Continue a task's thread with new instructions. They are injected into a live Codex or
2
2
  Claude turn at its next tool boundary and queued across a startup or completion race.
3
3
  A stopped, finished, or archived task resumes on the same task id. It reuses the
4
4
  task's engine, model, and permissions unless overridden.`,flags:[[`--wait`,`run in the foreground and block until the answer is ready`],[`--model <alias|slug>`,`override the task's model for this follow-up`],[`--effort <low|medium|high>`,`override the task's reasoning effort`],[`--permissions <mode>`,`read-only · workspace-write · auto`],n],examples:[[`coder task steer task-abc "now add tests"`,`continue that task with a follow-up`]]},options:{...l,model:c,effort:c,permissions:c,wait:s,...p},args:1/0,async run({options:e,args:t}){let{tasks:n}=await import(`./task-IoBYe7ok.js`).then(e=>e.t),{id:r,text:i}=m(t,`Missing task id or follow-up text.`,[`Usage: coder task steer <task-id> "<follow-up>" [--wait]`,`Help: coder task steer --help`]);return n.steer(r,i,{...e,organization:e.workspace})},json(e,{options:t}){let n=e;return t.server!==void 0||!t.wait||n.steered===`queued`?e:{taskId:n.taskId,status:n.status??null,finalMessage:n.finalMessage??null}},print(e,{options:t,args:[n]}){if(t.server===void 0)return h(e,t.wait);if(t.wait)return u(e,r);f.stdout.write(`Steered server task ${r.cyan(n)}.\n`)},exit(e,{options:t}){let n=e;if(t.wait&&(t.server!==void 0||n.steered!==`queued`))return n.status===`completed`?0:1}});export{g as commandSteer,m as idAndText};
@@ -1 +1 @@
1
- import{i as e,r as t}from"./cli-D5hyqGq0.js";import{p as n}from"./output-BKeyLbvt.js";import{i as r,n as i,s as a,t as o}from"./args-CxsMr9Un.js";import s from"node:process";const c={server:r,workspace:a,yes:i},l=e({name:`task stop`,help:{usage:`coder task stop <task-id> [--server [url]]`,summary:`Interrupt a running task and mark it cancelled.`,flags:[t]},options:{...o,...c},args:1,run:async({options:e,args:[t]})=>{let{tasks:n}=await import(`./task-IoBYe7ok.js`).then(e=>e.t);return n.stop(t,{...e,organization:e.workspace})},print:(e,{options:t,args:[r]})=>s.stdout.write(t.server===void 0?`Stopped task ${n.cyan(e.taskId)} ${n.dim(`(${e.interrupt})`)}\n`:`Stopped server task ${n.cyan(r)}.\n`)});export{l as commandStop};
1
+ import{i as e,r as t}from"./cli-ZUdhZnuW.js";import{p as n}from"./output-BKeyLbvt.js";import{i as r,n as i,s as a,t as o}from"./args-CxsMr9Un.js";import s from"node:process";const c={server:r,workspace:a,yes:i},l=e({name:`task stop`,help:{usage:`coder task stop <task-id> [--server [url]]`,summary:`Interrupt a running task and mark it cancelled.`,flags:[t]},options:{...o,...c},args:1,run:async({options:e,args:[t]})=>{let{tasks:n}=await import(`./task-IoBYe7ok.js`).then(e=>e.t);return n.stop(t,{...e,organization:e.workspace})},print:(e,{options:t,args:[r]})=>s.stdout.write(t.server===void 0?`Stopped task ${n.cyan(e.taskId)} ${n.dim(`(${e.interrupt})`)}\n`:`Stopped server task ${n.cyan(r)}.\n`)});export{l as commandStop};
@@ -1,3 +1,3 @@
1
- import{i as e}from"./cli-D5hyqGq0.js";import{m as t,p as n,s as r}from"./output-BKeyLbvt.js";import{n as i,t as a}from"./args-CxsMr9Un.js";import o from"node:process";const s=e({name:`flow stop`,help:{usage:`coder flow stop [run-id] [--keep-tasks] [--json]`,summary:`Stop a running flow: signal the orchestrator so it stops dispatching, stamp the
1
+ import{i as e}from"./cli-ZUdhZnuW.js";import{m as t,p as n,s as r}from"./output-BKeyLbvt.js";import{n as i,t as a}from"./args-CxsMr9Un.js";import o from"node:process";const s=e({name:`flow stop`,help:{usage:`coder flow stop [run-id] [--keep-tasks] [--json]`,summary:`Stop a running flow: signal the orchestrator so it stops dispatching, stamp the
2
2
  run stopped, and stop its still-running tasks. Defaults to the most recent run;
3
3
  the journal stays ready for \`coder flow resume\`.`,flags:[[`--keep-tasks`,`leave the run's still-running tasks running`]]},options:{...a,"keep-tasks":i},args:1,run:async({options:e,args:[t]})=>{let{stopRun:n}=await import(`./executor-5j-Ewzzb.js`).then(e=>e.t);return n(t,{keepTasks:e[`keep-tasks`]})},print:c});function c(e){let i=n;e.status===`failed`?o.stdout.write(`${i.dim(`[flow]`)} Run ${i.cyan(e.runId)} orchestrator died. Marked ${t(`failed`)}.\n`):o.stdout.write(`${i.dim(`[flow]`)} run ${i.cyan(e.runId)} ${t(e.status)}.\n`),e.stoppedTasks.length&&o.stdout.write(`${i.dim(`[flow]`)} stopped tasks: ${e.stoppedTasks.join(`, `)}\n`),e.keptTasks.length&&o.stdout.write(`${i.dim(`[flow]`)} left running: ${e.keptTasks.join(`, `)}\n`),o.stdout.write(`\n${r([`Resume: coder flow resume ${e.runId}`],i)}\n`)}export{s as commandStop};
@@ -1 +1 @@
1
- import{s as e}from"./cli-D5hyqGq0.js";const t=[[`--wait`,`run in the foreground and block until the answer is ready`],[`--engine <codex|claude|custom>`,`engine to use; custom runs your configured custom models (default: first in the chain)`],[`--model <alias|slug>`,`luna/sol/astra (codex) · sonnet/opus/fable (claude) · a custom model (coder model list)`],[`--effort <low|medium|high>`,`reasoning effort`],[`--permissions <mode>`,`read-only · workspace-write · auto (default: auto)`],[`--mcp <names|all|json>`,'attach MCP servers from `mcp` in .coder/config.json by name (or all), or an inline JSON array [{"name","command","args","env","tools"}]; none by default, all adds your engine\'s own MCP servers'],[`--connections <ids>`,`use only these connections (coder connection list), within the agent's`],[`--add-dir <dir>`,`give the task another directory beyond --cwd (repeatable); read-only can only read it, other modes can also write`]],n=e(`task`,{"archive-sweep":async()=>(await import(`./archive-sweep-CqTQUafj.js`)).commandArchiveSweep,worker:async()=>(await import(`./worker-BFGETvid.js`)).commandWorker,mcp:async()=>(await import(`./mcp-C13n4A3y.js`)).commandTaskMcp,run:async()=>(await import(`./run-CoTg7SkY.js`)).commandTask,list:async()=>(await import(`./list-CLqNS8_q.js`)).commandTasks,ls:async()=>(await import(`./list-CLqNS8_q.js`)).commandTasks,watch:async()=>(await import(`./watch-BMuVZorc.js`)).commandWatch,stream:async()=>(await import(`./watch-BMuVZorc.js`)).commandWatch,result:async()=>(await import(`./result-DXL9N9Ip.js`).then(e=>e.s)).commandResult,steer:async()=>(await import(`./steer-DwSC8AO4.js`)).commandSteer,ask:async()=>(await import(`./ask-B_si1yM4.js`)).commandAsk,stop:async()=>(await import(`./stop-CEEiI1RA.js`)).commandStop,archive:async()=>(await import(`./archive-DxWYJ7Zi.js`)).commandArchive,delete:async()=>(await import(`./delete-BDOtztW_.js`)).commandDelete,approvals:async()=>(await import(`./approvals-BziBKWgU.js`)).commandApprovals,approve:async()=>(await import(`./approve-DKrTnZfk.js`)).commandApprove},{menu:[{sub:`run`,usage:`run "<text>"`,blurb:`run a task (background; --wait blocks)`,alias:`run`},{sub:`list`,usage:`list`,blurb:`list recent tasks (by default running + just stopped)`,alias:`list`},{sub:`result`,usage:`result [task-id]`,blurb:`status + final answer (--wait blocks)`,alias:`result`},{sub:`watch`,usage:`watch [task-id]`,blurb:`stream a task's live transcript`},{sub:`steer`,usage:`steer <task-id> "<follow-up>"`,blurb:`continue a task's thread`},{sub:`ask`,usage:`ask <task-id> "<question>"`,blurb:`ask about a task without interrupting it`},{sub:`stop`,usage:`stop <task-id>`,blurb:`interrupt a running task`},{sub:`archive`,usage:`archive <task-id>`,blurb:`archive a session (or --all-stopped)`},{sub:`delete`,usage:`delete <task-id>`,blurb:`delete a session (or --all-archived)`},{sub:`approvals`,usage:`approvals [task-id]`,blurb:`pending approvals (all tasks, or one)`},{sub:`approve`,usage:`approve <id>`,blurb:`answer an escalated permission`}].map(e=>({usage:e.usage,blurb:e.blurb,...e.alias?{note:`(coder ${e.alias})`}:{}}))},{aliases:{stream:`watch`,ls:`list`},hint:`Run a task: coder run "<text>"`});export{t as TASK_FLAGS,n as commandTaskGroup};
1
+ import{s as e}from"./cli-ZUdhZnuW.js";const t=[[`--wait`,`run in the foreground and block until the answer is ready`],[`--engine <codex|claude|custom>`,`engine to use; custom runs your configured custom models (default: first in the chain)`],[`--model <alias|slug>`,`luna/sol/astra (codex) · sonnet/opus/fable (claude) · a custom model (coder model list)`],[`--effort <low|medium|high>`,`reasoning effort`],[`--permissions <mode>`,`read-only · workspace-write · auto (default: auto)`],[`--mcp <names|all|json>`,'attach MCP servers from `mcp` in .coder/config.json by name (or all), or an inline JSON array [{"name","command","args","env","tools"}]; none by default, all adds your engine\'s own MCP servers'],[`--connections <ids>`,`use only these connections (coder connection list), within the agent's`],[`--add-dir <dir>`,`give the task another directory beyond --cwd (repeatable); read-only can only read it, other modes can also write`]],n=e(`task`,{"archive-sweep":async()=>(await import(`./archive-sweep-EiiXIqjr.js`)).commandArchiveSweep,worker:async()=>(await import(`./worker-BBZ36xL0.js`)).commandWorker,mcp:async()=>(await import(`./mcp-O8VTfzdL.js`)).commandTaskMcp,run:async()=>(await import(`./run-DU4G8gNw.js`)).commandTask,list:async()=>(await import(`./list-Bggy3HZY.js`)).commandTasks,ls:async()=>(await import(`./list-Bggy3HZY.js`)).commandTasks,watch:async()=>(await import(`./watch-IL2eEgwD.js`)).commandWatch,stream:async()=>(await import(`./watch-IL2eEgwD.js`)).commandWatch,result:async()=>(await import(`./result-jeiRJTzA.js`).then(e=>e.s)).commandResult,steer:async()=>(await import(`./steer-i6w87g_t.js`)).commandSteer,ask:async()=>(await import(`./ask-Bou8zg-4.js`)).commandAsk,stop:async()=>(await import(`./stop-CJ0PHvKp.js`)).commandStop,archive:async()=>(await import(`./archive-CmRVm4iS.js`)).commandArchive,delete:async()=>(await import(`./delete-Bmn2_TiV.js`)).commandDelete,approvals:async()=>(await import(`./approvals-CE8dXZhE.js`)).commandApprovals,approve:async()=>(await import(`./approve-dWW4qt76.js`)).commandApprove},{menu:[{sub:`run`,usage:`run "<text>"`,blurb:`run a task (background; --wait blocks)`,alias:`run`},{sub:`list`,usage:`list`,blurb:`list recent tasks (by default running + just stopped)`,alias:`list`},{sub:`result`,usage:`result [task-id]`,blurb:`status + final answer (--wait blocks)`,alias:`result`},{sub:`watch`,usage:`watch [task-id]`,blurb:`stream a task's live transcript`},{sub:`steer`,usage:`steer <task-id> "<follow-up>"`,blurb:`continue a task's thread`},{sub:`ask`,usage:`ask <task-id> "<question>"`,blurb:`ask about a task without interrupting it`},{sub:`stop`,usage:`stop <task-id>`,blurb:`interrupt a running task`},{sub:`archive`,usage:`archive <task-id>`,blurb:`archive a session (or --all-stopped)`},{sub:`delete`,usage:`delete <task-id>`,blurb:`delete a session (or --all-archived)`},{sub:`approvals`,usage:`approvals [task-id]`,blurb:`pending approvals (all tasks, or one)`},{sub:`approve`,usage:`approve <id>`,blurb:`answer an escalated permission`}].map(e=>({usage:e.usage,blurb:e.blurb,...e.alias?{note:`(coder ${e.alias})`}:{}}))},{aliases:{stream:`watch`,ls:`list`},hint:`Run a task: coder run "<text>"`});export{t as TASK_FLAGS,n as commandTaskGroup};
@@ -0,0 +1,5 @@
1
+ import{qi as e}from"./core-DwsAMCnL.js";import{Ct as t,En as n,Q as r,c as i,cn as a,ct as o,et as s,st as c,u as l,wn as u,xn as d}from"./config-D2FxHWwi.js";import{I as f,R as p,h as m,z as h}from"./dispatch-D3Dqxijf.js";import{t as g}from"./integrations-D3OgJk6Y.js";import{c as _,l as v,n as y}from"./actions-5TDwmn_z.js";import{a as b}from"./mcp-YhyTUMIM.js";import{r as x}from"./exec-BsXFIdTl.js";import S from"node:path";import C from"node:process";import{execFile as w}from"node:child_process";import{createHash as T,randomUUID as E}from"node:crypto";import D from"node:os";import O from"node:net";import k from"node:fs/promises";import{promisify as A}from"node:util";import j from"node:http";var M=e({INBOX_COMMAND:()=>Q,INBOX_SOCKET:()=>Y,applyTaskMessage:()=>K,checkout:()=>L,checkoutCache:()=>R,inboxSocket:()=>X,prepareRepo:()=>W,receiveInbox:()=>$,releaseCheckout:()=>B,requestInboxControl:()=>G,runTask:()=>J,sendInbox:()=>Z,startInboxControl:()=>ne,taskServer:()=>P,withCheckoutLock:()=>z});const N=A(w);function P(){let e=C.env.CODER_SERVER?.replace(/\/+$/,``),t=C.env.CODER_TASK_TOKEN;if(!e||!t)throw Error(`CODER_SERVER and CODER_TASK_TOKEN are required with --task`);return{server:e,token:t}}async function F(e,t,n,r=``,i={}){let a=await fetch(`${e}/tasks/${encodeURIComponent(n)}${r}`,{...i,signal:i.signal?AbortSignal.any([i.signal,AbortSignal.timeout(3e4)]):AbortSignal.timeout(3e4),headers:{authorization:`Bearer ${t}`,...i.body?{"content-type":`application/json`}:{},...i.headers}}),o=await a.json().catch(()=>({}));if(!a.ok)throw Object.assign(Error(o.error??`Coder server answered ${a.status}`),{status:a.status});return o}function I(e){return e.length>0&&!e.startsWith(`-`)&&!e.endsWith(`/`)&&!e.endsWith(`.`)&&!e.endsWith(`.lock`)&&!/[\x00-\x20\x7f~^:?*[\\]/.test(e)&&!e.includes(`..`)&&!e.includes(`@{`)&&!e.includes(`//`)}async function L(e,t,n,r,i){let a=e.event?.repo;if(!a)return t;let o=S.join(t,`repo`);if(!I(a.ref)||!I(a.defaultBranch))throw Error(`Invalid repository ref`);let s=new URL(a.cloneUrl),c=g[e.event.integration]?.repos?.cloneHosts??[];if(s.protocol!==`https:`||!c.includes(s.hostname))throw Error(`Repository clone host does not match the integration`);await k.mkdir(t,{recursive:!0});let l=await k.mkdtemp(S.join(t,`.git-credential-`)),u=S.join(l,`token`),d=S.join(l,`askpass.sh`);n&&(await k.writeFile(u,n,{mode:384}),await k.writeFile(d,`#!/bin/sh
2
+ case "$1" in *Username*) printf x-access-token;; *) command cat "$CODER_GIT_TOKEN_FILE";; esac
3
+ `,{mode:448}));let f=n?{env:{...C.env,GIT_ASKPASS:d,CODER_GIT_TOKEN_FILE:u,GIT_TERMINAL_PROMPT:`0`}}:void 0;try{let e={...f,signal:i,maxBuffer:67108864};if(r)return await z(r,async()=>{if(!await k.stat(S.join(r,`.git`)).catch(()=>void 0)){let t=await k.mkdtemp(`${r}-clone-`);try{await N(`git`,[`clone`,`--depth`,`50`,a.cloneUrl,t],e),await k.rename(t,r)}finally{await k.rm(t,{recursive:!0,force:!0})}}await N(`git`,[`-C`,r,`worktree`,`prune`,`--expire`,`now`],e),await N(`git`,[`-C`,r,`remote`,`set-url`,`origin`,a.cloneUrl],e),await N(`git`,[`-C`,r,`fetch`,`--depth`,`50`,`origin`,a.defaultBranch],e),await N(`git`,[`-C`,r,`fetch`,`--depth`,`50`,`origin`,a.ref],e),await N(`git`,[`-C`,r,`worktree`,`add`,`--detach`,o,`FETCH_HEAD`],e)}),o;await k.stat(S.join(o,`.git`)).then(()=>!0).catch(()=>!1)||await N(`git`,[`clone`,`--depth`,`50`,a.cloneUrl,o],e),await N(`git`,[`-C`,o,`fetch`,`--depth`,`50`,`origin`,a.ref],e),await N(`git`,[`-C`,o,`checkout`,`--detach`,`FETCH_HEAD`],e),await N(`git`,[`-C`,o,`fetch`,`--depth`,`50`,`origin`,a.defaultBranch],e)}finally{await k.rm(l,{recursive:!0,force:!0})}return o}function R(e){let t=e.event?.repo;if(t){if(![t.owner,t.name].every(e=>/^[\w.-]+$/.test(e)&&!/^\.+$/.test(e)))throw Error(`Invalid repository name`);return r(`checkouts`,new URL(t.cloneUrl).hostname,t.owner,t.name)}}async function z(e,t){await k.mkdir(S.dirname(e),{recursive:!0});let n=`${e}.lock`,r=await k.mkdtemp(`${n}-`),i=`${C.pid}-${E()}`,a=Date.now()+3e5,o=!1;try{for(await k.mkdir(S.join(r,i));;)try{await k.rename(r,n),o=!0;break}catch(e){if(![`EEXIST`,`ENOTEMPTY`].includes(e.code??``))throw e;for(let e of await k.readdir(n).catch(()=>[])){let t=Number(e.split(`-`)[0]);if(!(!Number.isInteger(t)||t<=0))try{C.kill(t,0)}catch(t){t.code===`ESRCH`&&await k.rmdir(S.join(n,e)).catch(()=>{})}}if(await k.rmdir(n).catch(()=>{}),Date.now()>=a)throw Error(`Repository cache lock timed out`);await new Promise(e=>setTimeout(e,100))}return await t()}finally{o?(await k.rmdir(S.join(n,i)),await k.rmdir(n).catch(()=>{})):await k.rm(r,{recursive:!0,force:!0})}}async function B(e){if(!(await k.stat(S.join(e,`.git`)).catch(()=>void 0))?.isFile())return;let t=await N(`git`,[`-C`,e,`rev-parse`,`--git-common-dir`]).catch(async t=>{if(await k.stat(S.join(e,`.git`)).catch(()=>void 0))throw t});if(!t)return;let{stdout:n}=t,r=S.resolve(e,n.trim());await z(S.dirname(r),async()=>{await k.stat(S.join(e,`.git`)).catch(()=>void 0)&&await N(`git`,[`--git-dir`,r,`worktree`,`remove`,`--force`,e])})}const V=1048576;async function H(e){let t={maxBuffer:67108864};await N(`git`,[`-C`,e,`add`,`--intent-to-add`,`--all`],t);let{stdout:n}=await N(`git`,[`-C`,e,`diff`,`HEAD`],t);return Buffer.byteLength(n)>V?`${Buffer.from(n).subarray(0,V).toString()}\n[diff truncated]`:n}async function U(e,t){delete C.env.CODER_SERVER,delete C.env.CODER_TASK_TOKEN,delete C.env.APP_TOKEN;for(let t of Object.keys(e.tokens))delete C.env[b(t)];let{CODEX_AUTH_JSON:n,[i]:r,...o}=e.credential.env;if(Object.assign(C.env,o),C.env[l]=JSON.stringify(e.config??{}),C.env.CODER_MCP_MODE=`cloud`,C.env.CODER_MCP_CONNECTION_ENV=JSON.stringify(a(e.connections??{})),!n)return;let s=await k.mkdtemp(S.join(t,`.codex-`));return await k.writeFile(S.join(s,`auth.json`),n,{mode:384}),C.env.CODEX_HOME=s,s}async function ee(e,t,n,r){if(!r)return;let i=await k.readFile(S.join(r,`auth.json`),`utf8`).catch(()=>``);i&&i!==n.credential.env.CODEX_AUTH_JSON&&await F(e.server,e.token,t,`/credential`,{method:`POST`,body:JSON.stringify({authJson:i})}).catch(()=>{}),await k.rm(r,{recursive:!0,force:!0})}const te=[[`bun.lock`,`bun`,[`install`,`--frozen-lockfile`]],[`bun.lockb`,`bun`,[`install`,`--frozen-lockfile`]],[`pnpm-lock.yaml`,`npx`,[`-y`,`pnpm`,`install`,`--frozen-lockfile`]],[`yarn.lock`,`npx`,[`-y`,`yarn`,`install`,`--frozen-lockfile`]],[`package-lock.json`,`npm`,[`ci`]]];async function W(e,t){let n=P(),r=await F(n.server,n.token,e),i=r.task.event;if(!i?.repo)throw Error(`The task has no repository`);let a=await L({...r.task,event:{...i,repo:{...i.repo,ref:i.repo.defaultBranch}}},t,r.tokens[i.integration]);for(let[e,t,n]of te)if(await k.stat(S.join(a,e)).catch(()=>void 0)){await N(t,n,{cwd:a,maxBuffer:67108864}).catch(()=>{});break}let o=(await N(`git`,[`-C`,a,`rev-parse`,`HEAD`])).stdout.trim();return console.log(`coder-snapshot ${o}`),{sha:o}}function ne(e,t,n){let r=new Set,i=h(S.join(e,`inbox-control`),{apply(e){let i=e.entry;if(e.task!==t||!Number.isInteger(i?.seq)||i.seq<0||!Number.isInteger(i.generation)||i.generation<0||![`steer`,`ask`,`approve`].includes(i.kind))throw Error(`Invalid engine inbox command`);let a=n(i);return r.add(a),a.finally(()=>r.delete(a)).catch(()=>{}),a}});return{close:async()=>{i(),await Promise.allSettled([...r])}}}function G(e,t,n){let r=p({task:t,generation:n.generation,seq:n.seq});return f(`apply`,{task:t,entry:n},{dir:S.join(e,`inbox-control`),id:r,keepReply:!0,timeoutMs:3e4})}async function K(e,n,r){let i={task:n.name?.slice(6)??n.id,generation:r.generation,seq:r.seq},a=S.join(t(e,n.id),`inbox-control`,`${p(i)}.transcript.jsonl`),o=await k.readFile(a,`utf8`).catch(e=>{if(e.code===`ENOENT`)return``;throw e});for(let e of o.split(`
4
+ `)){if(!e.trim())continue;let t;try{t=JSON.parse(e)}catch{continue}if(p(t.command)===p(i)&&Object.hasOwn(t,`result`))return t.result}let c=r.value;if(r.kind===`steer`){let t=String(c?.text??r.value??``);n.threadId?await _(e,n,t,{command:i}):s(e,n.id,t)}else if(r.kind===`ask`){let t=await y(e,n,String(c?.question??r.value??``),{command:i});return t.finalMessage??t.error?.message??``}else r.kind===`approve`&&m(t(e,n.id),String(c?.approvalId??c?.id??``),c?.decision===`deny`||c?.decision===`decline`?`decline`:`accept`);await k.mkdir(S.dirname(a),{recursive:!0}),await k.appendFile(a,JSON.stringify({command:i,result:null})+`
5
+ `)}async function q(e){for(let t=1;;t++)try{return await e()}catch(e){let n=e.status;if(n!==void 0&&n<500||t>=6)throw e;console.error(`coder runner: Coder server did not take the request, trying again: ${e instanceof Error?e.message:e}`),await new Promise(e=>setTimeout(e,1e3*2**(t-1)))}}async function J(e,t){let n=P(),r=await q(()=>F(n.server,n.token,e)).catch(async t=>{throw await F(n.server,n.token,e,`/result`,{method:`POST`,body:JSON.stringify({status:`failed`,error:t instanceof Error?t.message:String(t)})}).catch(()=>{}),t}),i=r.task.event,a=i&&r.tokens[i.integration],o=C.env.CODER_INBOX_MODE===`poll`;delete C.env.CODER_INBOX_MODE;let s=C.env.CODER_CHECKOUT_CACHE;delete C.env.CODER_CHECKOUT_CACHE;let c=await U(r,t),u=new AbortController,d=setTimeout(()=>u.abort(Error(`timeout`)),r.timeoutMs??18e5),f=setInterval(()=>{F(n.server,n.token,e,`/heartbeat`,{method:`POST`,signal:AbortSignal.timeout(1e4)}).catch(()=>{})},3e4),p,m=()=>ee(n,e,r,c),h=!1,g=async t=>{h=!0,await m(),await q(()=>F(n.server,n.token,e,`/result`,{method:`POST`,body:JSON.stringify(t)}))};try{return p=await Promise.race([L(r.task,t,a,s,u.signal),new Promise((e,t)=>u.signal.addEventListener(`abort`,()=>t(u.signal.reason),{once:!0}))]),u.signal.throwIfAborted(),await re(e,t,n,r,p,a,o,u.signal,m,g)}catch(e){throw h||await g({status:`failed`,error:e instanceof Error?e.message:String(e)}).catch(e=>console.error(`coder runner: result delivery failed`,e)),e}finally{clearTimeout(d),clearInterval(f);try{p&&await B(p)}finally{delete C.env[l],delete C.env.CODER_MCP_MODE,delete C.env.CODER_MCP_CONNECTION_ENV}}}async function re(e,r,i,a,s,l,f,p,m,h){let g=a.task.event,_=new AbortController,y,b,C=!1,w=await $({root:r,generation:a.generation,apply:async n=>{let r=y&&o(s,y);if(!r)throw Error(`The task is not ready`);if(n.kind===`cancel`){await v(s,r),C=!0,await B(),await m();return}return G(t(s,r.id),e,n)}}),T=w.ack().seq>=0?w.ack():void 0,E,D=()=>{if(E)return E;if(!T)return Promise.resolve();let t=T;return E=F(i.server,i.token,e,`/ack`,{method:`POST`,body:JSON.stringify(t),signal:_.signal}).then(()=>{T&&T.seq<=t.seq&&(T=void 0)}).catch(e=>{throw(e.status===401||e.status===403)&&(T=void 0),e}).finally(()=>{E=void 0}),E},O=async()=>{let t=await F(i.server,i.token,e,`/messages?after=${w.ack().seq}`,{signal:_.signal});try{t.length&&await w.apply(t)}finally{t.length&&w.ack().seq>=0&&(T=w.ack()),await D().catch(()=>{})}},A=setInterval(()=>{D().catch(()=>{})},1e3),j=u(S.join(r,`.runner-task.json`)),M,N=new Map,P=(a.logCursor??-1)+1,I=0,L=[],R,z=()=>{for(let e of N.values())for(let t of e()){if(I>=2097152)continue;let e=Buffer.byteLength(t)>65536?`A task log entry exceeded 64 KB`:t;L.push({seq:P++,at:Date.now(),level:`out`,line:e}),I+=Buffer.byteLength(e)}return R||(R=(async()=>{for(;L.length;){let t=0,n=L.slice(0,100).filter(e=>(t+=Buffer.byteLength(JSON.stringify(e)))<524288);if(!n.length)throw Error(`Task log batch is too large`);let r=!1;for(let t=0;t<3;t++)try{await F(i.server,i.token,e,`/logs`,{method:`POST`,signal:AbortSignal.timeout(5e3),body:JSON.stringify({entries:n})}),r=!0;break}catch(e){if(t===2)throw e;await new Promise(e=>setTimeout(e,1e3))}r&&L.splice(0,n.length)}})().finally(()=>{R=void 0}),R)},B=()=>z().catch(e=>{console.error(`coder runner: log delivery failed`,e)}),V,U;try{j?.generation!==a.generation&&await k.writeFile(S.join(r,`.runner-note`),a.task.context?.note??``,{mode:384});let c=x({cwd:s,...j?.generation===a.generation?{resumeTaskId:j.id}:{},noteFile:S.join(r,`.runner-note`),agent:a.task.agent,flow:a.task.flow,task:a.task,toolEnvironment:{tokens:{...a.tokens,...a.nativeTokens}},connections:a.connections,connectionEnv:a.connectionEnv,post:a.task.source===g?.integration,...l?{postToken:l}:{},onStart(e){b=e},async onTask(e){if(y=e,p.aborted){let t=o(s,e);throw t&&await v(s,t),p.reason}N.has(e)||N.set(e,d(S.join(t(s,e),`log.jsonl`))),z().catch(()=>{}),M??=setInterval(()=>{z().catch(()=>{})},1e3),n(S.join(r,`.runner-task.json`),{generation:a.generation,id:e}),await D().catch(()=>{}),await O().catch(()=>{}),clearInterval(V),f&&(V=setInterval(()=>{U||=O().catch(()=>{}).finally(()=>{U=void 0})},4e3))},onApproval(t){return F(i.server,i.token,e,`/result`,{method:`POST`,body:JSON.stringify({status:`waiting`,approval:t})})}}),u=await Promise.race([c,new Promise((e,t)=>{let n=()=>t(p.reason);p.addEventListener(`abort`,n,{once:!0}),p.aborted&&n()})]);for(await B();T;)p.throwIfAborted(),await D().catch(()=>{}),T&&await new Promise(e=>setTimeout(e,1e3));return await h({status:C?`cancelled`:u.ok?`completed`:`failed`,result:u.reply??u.result,tokens:u.tokens,...u.note===void 0?{}:{note:u.note},...s===r?{}:{diff:await H(s).catch(()=>void 0)}}),u}catch(n){if(p.aborted){b?.requestStop();let n=new Set([...y?[y]:[],...b?.runningIds()??[],...c(s).filter(t=>t.name===`agent:${e}`||b&&t.flowRunId===b.runId).map(e=>e.id)]);for(let e of n){N.has(e)||N.set(e,d(S.join(t(s,e),`log.jsonl`)));let n=o(s,e);n&&await v(s,n)}}throw await B(),n}finally{clearInterval(M),await R?.catch(()=>{}),clearInterval(A),clearInterval(V),_.abort(),await Promise.allSettled([U,E]),await w.close()}}const Y=`/tmp/coder-inbox.sock`,X=e=>S.join(D.tmpdir(),`coder-${T(`sha256`).update(e).digest(`hex`).slice(0,24)}.sock`);function Z(e,t){return new Promise((n,r)=>{let i=j.request({socketPath:e,path:`/messages`,method:`POST`,headers:{"content-type":`application/json`}},e=>{let t=``;e.on(`data`,e=>{t+=e}),e.on(`end`,()=>{if(e.statusCode!==200)return r(Error(`Task inbox answered ${e.statusCode}`));try{n(JSON.parse(t))}catch(e){r(e)}}),e.on(`error`,r)});i.setTimeout(1e4,()=>i.destroy(Error(`Task inbox timed out`))),i.on(`error`,r),i.end(JSON.stringify({entries:t}))})}const Q=`const http=require('node:http');const req=http.request({socketPath:process.env.CODER_INBOX_SOCKET||'/tmp/coder-inbox.sock',path:'/messages',method:'POST',headers:{'content-type':'application/json'}},res=>{res.pipe(process.stdout);res.on('end',()=>{if(res.statusCode!==200)process.exitCode=1})});req.on('error',()=>{process.exitCode=1});req.setTimeout(10000,()=>req.destroy());req.end(JSON.stringify({entries:JSON.parse(process.env.CODER_INBOX_MESSAGES)}));`;async function $(e){let t=S.join(e.root,`.runner-inbox.json`),r=u(t),i=r?.generation===e.generation?r:{generation:e.generation,seq:-1,answers:[]},a=Promise.resolve(),o=r=>{let o=async()=>{if(!Array.isArray(r)||r.some(t=>!Number.isInteger(t.seq)||t.seq<0||t.generation!==e.generation||![`steer`,`ask`,`approve`,`cancel`].includes(t.kind)))throw Error(`Invalid task messages`);for(let a of[...r].sort((e,t)=>e.seq-t.seq)){if(a.seq<=i.seq)continue;let r=await e.apply(a),o={generation:e.generation,seq:a.seq,answers:[...i.answers??[],...a.kind===`ask`?[{seq:a.seq,value:r}]:[]]};n(t,o),i=o}return i},s=a.then(o,o);return a=s.then(()=>{},()=>{}),s},s=e.socketPath??C.env.CODER_INBOX_SOCKET??X(e.root);if(await k.lstat(s).then(()=>!0,()=>!1)){if(!await new Promise((e,t)=>{let n=O.connect(s);n.once(`connect`,()=>{n.destroy(),e(!1)}),n.once(`error`,n=>n.code===`ECONNREFUSED`?e(!0):t(n))}))throw Error(`The task inbox is already running`);await k.unlink(s)}let c=j.createServer(async(e,t)=>{if(e.method!==`POST`||e.url!==`/messages`){t.writeHead(404).end();return}let n=``;try{for await(let t of e)if(n+=t,Buffer.byteLength(n)>1048576)throw Error(`Messages too large`);let r=await o(JSON.parse(n).entries);t.writeHead(200,{"content-type":`application/json`}).end(JSON.stringify(r))}catch{t.writeHead(409).end()}});return await k.mkdir(e.root,{recursive:!0}),await new Promise((e,t)=>{c.once(`error`,t),c.listen(s,e)}),await k.chmod(s,384),{apply:o,ack:()=>i,close:async()=>{await a,await new Promise(e=>c.close(()=>e()))}}}export{X as a,J as c,M as d,z as f,R as i,Z as l,Y as n,W as o,K as r,B as s,Q as t,P as u};
@@ -1 +1 @@
1
- import{H as e}from"./dispatch-D3Dqxijf.js";import{i as t,t as n}from"./cli-D5hyqGq0.js";import{runnerOptions as r}from"./remove-D65xtbw5.js";import i from"node:process";const a=t({name:`runner test`,globalFlags:{cwd:!1},args:1,help:{usage:`coder runner test <id> [--server [url]] [--json]`,summary:`Check the runner connection.`,flags:[n]},options:r,async run({options:t,args:[n]}){if(!n)throw new e(`invalid-option`,`Missing runner id.`);let{testRunner:r}=await import(`./runner-DME7ohjt.js`).then(e=>e.a);return r(n,t)},print:e=>i.stdout.write(`${e.ok?`OK`:`Failed`} ${e.detail} (${e.ms} ms).\n`)});export{a as commandRunnerTest};
1
+ import{H as e}from"./dispatch-D3Dqxijf.js";import{i as t,t as n}from"./cli-ZUdhZnuW.js";import{runnerOptions as r}from"./remove-BZCA-gdU.js";import i from"node:process";const a=t({name:`runner test`,globalFlags:{cwd:!1},args:1,help:{usage:`coder runner test <id> [--server [url]] [--json]`,summary:`Check the runner connection.`,flags:[n]},options:r,async run({options:t,args:[n]}){if(!n)throw new e(`invalid-option`,`Missing runner id.`);let{testRunner:r}=await import(`./runner-DME7ohjt.js`).then(e=>e.a);return r(n,t)},print:e=>i.stdout.write(`${e.ok?`OK`:`Failed`} ${e.detail} (${e.ms} ms).\n`)});export{a as commandRunnerTest};
@@ -1 +1 @@
1
- import{i as e}from"./cli-D5hyqGq0.js";import{n as t}from"./mcp-server-DGzme0YX.js";import n from"node:process";const r=e({name:`agent tools`,options:{},args:1,async run({args:e}){let{INTEGRATIONS:r}=await import(`./integrations-D3OgJk6Y.js`).then(e=>e.r),{agentTools:i}=await import(`./mcp-YhyTUMIM.js`).then(e=>e.n),a=e[0]??``,o=(n.env.CODER_AGENT_TOOLS??``).split(`,`).filter(Boolean),s=i(a,o);if(!s)throw Error(`Unknown tool set "${a}"; known: ${[...Object.keys(r).filter(e=>r[e].tools.serve),`note`].join(`, `)}`);let c=n.env.APP_TOKEN??``;if(!c&&a!==`note`)throw Error(`APP_TOKEN is not set`);let l=n.env.CODER_AGENT_SCOPE?JSON.parse(n.env.CODER_AGENT_SCOPE):void 0;await t(`coder-${a}`,s,{token:c,fetch,tools:o,...l?{scope:l}:{}})}});export{r as commandTools};
1
+ import{i as e}from"./cli-ZUdhZnuW.js";import{n as t}from"./mcp-server-DGzme0YX.js";import n from"node:process";const r=e({name:`agent tools`,options:{},args:1,async run({args:e}){let{INTEGRATIONS:r}=await import(`./integrations-D3OgJk6Y.js`).then(e=>e.r),{agentTools:i}=await import(`./mcp-YhyTUMIM.js`).then(e=>e.n),a=e[0]??``,o=(n.env.CODER_AGENT_TOOLS??``).split(`,`).filter(Boolean),s=i(a,o);if(!s)throw Error(`Unknown tool set "${a}"; known: ${[...Object.keys(r).filter(e=>r[e].tools.serve),`note`].join(`, `)}`);let c=n.env.APP_TOKEN??``;if(!c&&a!==`note`)throw Error(`APP_TOKEN is not set`);let l=n.env.CODER_AGENT_SCOPE?JSON.parse(n.env.CODER_AGENT_SCOPE):void 0;await t(`coder-${a}`,s,{token:c,fetch,tools:o,...l?{scope:l}:{}})}});export{r as commandTools};
@@ -2,8 +2,8 @@ import * as z from "zod/mini";
2
2
  //#region src/core/config.d.ts
3
3
  declare const engineSchema: z.ZodMiniEnum<{
4
4
  custom: "custom";
5
- claude: "claude";
6
5
  codex: "codex";
6
+ claude: "claude";
7
7
  }>;
8
8
  declare const effortSchema: z.ZodMiniEnum<{
9
9
  low: "low";
@@ -33,8 +33,8 @@ declare const mcpEntrySchema: z.ZodMiniObject<{
33
33
  env: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
34
34
  url: z.ZodMiniOptional<z.ZodMiniString<string>>;
35
35
  type: z.ZodMiniOptional<z.ZodMiniEnum<{
36
- http: "http";
37
36
  stdio: "stdio";
37
+ http: "http";
38
38
  sse: "sse";
39
39
  }>>;
40
40
  headers: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
@@ -44,8 +44,8 @@ declare const mcpEntrySchema: z.ZodMiniObject<{
44
44
  declare const effectiveConfigSchema: z.ZodMiniObject<{
45
45
  chain: z.ZodMiniArray<z.ZodMiniEnum<{
46
46
  custom: "custom";
47
- claude: "claude";
48
47
  codex: "codex";
48
+ claude: "claude";
49
49
  }>>;
50
50
  engines: z.ZodMiniObject<{
51
51
  codex: z.ZodMiniOptional<z.ZodMiniObject<{
@@ -100,8 +100,8 @@ declare const effectiveConfigSchema: z.ZodMiniObject<{
100
100
  disabled: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
101
101
  }, z.core.$strict>, z.ZodMiniObject<{
102
102
  provider: z.ZodMiniEnum<{
103
- claude: "claude";
104
103
  codex: "codex";
104
+ claude: "claude";
105
105
  }>;
106
106
  model: z.ZodMiniString<string>;
107
107
  effort: z.ZodMiniOptional<z.ZodMiniEnum<{
@@ -150,8 +150,8 @@ declare const effectiveConfigSchema: z.ZodMiniObject<{
150
150
  env: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
151
151
  url: z.ZodMiniOptional<z.ZodMiniString<string>>;
152
152
  type: z.ZodMiniOptional<z.ZodMiniEnum<{
153
- http: "http";
154
153
  stdio: "stdio";
154
+ http: "http";
155
155
  sse: "sse";
156
156
  }>>;
157
157
  headers: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
@@ -1 +1 @@
1
- import{i as e}from"./cli-D5hyqGq0.js";import{o as t}from"./models-CdvmuaLv.js";import{n}from"./add-DcR15CL7.js";import{t as r}from"./remove-D1UOd48O.js";const i=e({name:`model unalias`,help:{usage:`coder model unalias <name> [--workspace]`,summary:`Remove a user-defined alias.`,flags:[[`--workspace`,`target <repo>/.coder/config.json instead of the user file`]]},options:n,args:1,run:({options:e,args:[n],cwd:r})=>t(r,n,e),print:e=>r(`unaliased`,e.unaliased,e.file)});export{i as commandModelUnalias};
1
+ import{i as e}from"./cli-ZUdhZnuW.js";import{o as t}from"./models-CdvmuaLv.js";import{n}from"./add-CvBTpxgY.js";import{t as r}from"./remove-BcewhH1U.js";const i=e({name:`model unalias`,help:{usage:`coder model unalias <name> [--workspace]`,summary:`Remove a user-defined alias.`,flags:[[`--workspace`,`target <repo>/.coder/config.json instead of the user file`]]},options:n,args:1,run:({options:e,args:[n],cwd:r})=>t(r,n,e),print:e=>r(`unaliased`,e.unaliased,e.file)});export{i as commandModelUnalias};
@@ -1,2 +1,2 @@
1
- import{i as e}from"./cli-D5hyqGq0.js";import{s as t}from"./models-CdvmuaLv.js";import{a as n,i as r,n as i,r as a}from"./add-DcR15CL7.js";const o=e({name:`model update`,help:{usage:`coder model update <name> [--base-url <url>] [--model <id>] [--env-key VAR]`,summary:`Update a configured custom model. Only the flags you pass change; the endpoint
1
+ import{i as e}from"./cli-ZUdhZnuW.js";import{s as t}from"./models-CdvmuaLv.js";import{a as n,i as r,n as i,r as a}from"./add-CvBTpxgY.js";const o=e({name:`model update`,help:{usage:`coder model update <name> [--base-url <url>] [--model <id>] [--env-key VAR]`,summary:`Update a configured custom model. Only the flags you pass change; the endpoint
2
2
  is re-probed and the wire protocol re-detected.`,flags:[[`--base-url <url>`,`new API base`],[`--model <id>`,`new provider model id`],[`--env-key <VAR>`,`new API-key env var`],[`--workspace`,`write to <repo>/.coder/config.json instead of the user file`]]},options:i,args:1,run:({options:e,args:[r],cwd:i})=>t(i,r,n(e)),json:a,print:e=>r(e,`updated`)});export{o as commandModelUpdate};
@@ -1,2 +1,2 @@
1
- import{E as e}from"./dispatch-D3Dqxijf.js";import{i as t}from"./cli-D5hyqGq0.js";import{f as n,p as r,t as i}from"./output-BKeyLbvt.js";import{n as a,s as o}from"./args-CxsMr9Un.js";import s from"node:process";const c=t({name:`upgrade`,globalFlags:{json:!1,cwd:!1},help:{usage:`coder upgrade [--cli-only] [--plugins-only] [--codex] [--claude] [--pm <mgr>]`,summary:`Update the coder CLI through whichever package manager installed it, then refresh
2
- the host plugins to match. Alias: update.`,flags:[[`--cli-only`,`update just the CLI`],[`--plugins-only`,`refresh just the host plugins`],[`--codex`,`limit the refresh to the Agent Skills copy (Codex, Pi, ...)`],[`--claude`,`limit the refresh to the Claude Code plugin`],[`--pm <npm|pnpm|yarn|bun>`,`force a package manager instead of auto-detecting`]]},options:{pm:o,"cli-only":a,"plugins-only":a,codex:a,claude:a},run:({options:t})=>e({...t,cliOnly:t[`cli-only`],pluginsOnly:t[`plugins-only`]},l),print:u});function l(e){s.stdout.write(`${r.bold(`Updating coder CLI`)} ${r.dim(`${e}...`)}\n`)}function u(e){let t=r.bold,a=r.dim,o=(e,n)=>n&&e&&n!==e?`${e} ${a(`->`)} ${t(n)}`:`${n??e??`?`} ${a(`(unchanged)`)}`,c=(e,t)=>`${t.installed?n(`${e} ${o(t.from,t.to)} ${a(`- ${t.note}`)}`):i(`${e} ${t.note}`)}\n`;e.cli&&s.stdout.write(e.cli.changed?`${n(`coder CLI ${o(e.cli.from,e.cli.to)}`)}\n`:`${n(`coder CLI ${e.cli.from} ${a(`(already latest)`)}`)}\n`),e.claudePlugin&&s.stdout.write(c(`claude plugin`,e.claudePlugin)),e.agentsSkill&&s.stdout.write(c(`agents skill `,e.agentsSkill))}const d=async()=>(await import(`./refresh-D0YjtXBD.js`)).commandRefreshUpdate,f=Object.assign(async e=>e[0]===`refresh`?(await d())(e.slice(1)):c(e),c,{subcommands:{refresh:d}});export{f as commandUpgrade};
1
+ import{E as e}from"./dispatch-D3Dqxijf.js";import{i as t}from"./cli-ZUdhZnuW.js";import{f as n,p as r,t as i}from"./output-BKeyLbvt.js";import{n as a,s as o}from"./args-CxsMr9Un.js";import s from"node:process";const c=t({name:`upgrade`,globalFlags:{json:!1,cwd:!1},help:{usage:`coder upgrade [--cli-only] [--plugins-only] [--codex] [--claude] [--pm <mgr>]`,summary:`Update the coder CLI through whichever package manager installed it, then refresh
2
+ the host plugins to match. Alias: update.`,flags:[[`--cli-only`,`update just the CLI`],[`--plugins-only`,`refresh just the host plugins`],[`--codex`,`limit the refresh to the Agent Skills copy (Codex, Pi, ...)`],[`--claude`,`limit the refresh to the Claude Code plugin`],[`--pm <npm|pnpm|yarn|bun>`,`force a package manager instead of auto-detecting`]]},options:{pm:o,"cli-only":a,"plugins-only":a,codex:a,claude:a},run:({options:t})=>e({...t,cliOnly:t[`cli-only`],pluginsOnly:t[`plugins-only`]},l),print:u});function l(e){s.stdout.write(`${r.bold(`Updating coder CLI`)} ${r.dim(`${e}...`)}\n`)}function u(e){let t=r.bold,a=r.dim,o=(e,n)=>n&&e&&n!==e?`${e} ${a(`->`)} ${t(n)}`:`${n??e??`?`} ${a(`(unchanged)`)}`,c=(e,t)=>`${t.installed?n(`${e} ${o(t.from,t.to)} ${a(`- ${t.note}`)}`):i(`${e} ${t.note}`)}\n`;e.cli&&s.stdout.write(e.cli.changed?`${n(`coder CLI ${o(e.cli.from,e.cli.to)}`)}\n`:`${n(`coder CLI ${e.cli.from} ${a(`(already latest)`)}`)}\n`),e.claudePlugin&&s.stdout.write(c(`claude plugin`,e.claudePlugin)),e.agentsSkill&&s.stdout.write(c(`agents skill `,e.agentsSkill))}const d=async()=>(await import(`./refresh-yXJ13FAf.js`)).commandRefreshUpdate,f=Object.assign(async e=>e[0]===`refresh`?(await d())(e.slice(1)):c(e),c,{subcommands:{refresh:d}});export{f as commandUpgrade};
@@ -1 +1 @@
1
- import{i as e,r as t}from"./cli-D5hyqGq0.js";import{g as n,p as r}from"./output-BKeyLbvt.js";import{i,n as a,s as o,t as s}from"./args-CxsMr9Un.js";import c from"node:process";const l={server:i,workspace:o,yes:a};function u(e,t){let i=Array.isArray(e.totals)?e.totals.map(e=>({group:t??``,...e})):Object.entries(e.totals).flatMap(([e,t])=>t.map(t=>({group:e,...t})));if(!i.length)return void c.stdout.write(`${r.dim(`No usage in this period.`)}\n`);c.stdout.write(`${n([{header:`by`,value:e=>e.group},{header:`key`,value:e=>e.key,paint:e=>r.cyan(e)},{header:`tasks`,value:e=>String(e.tasks)},{header:`runner ms`,value:e=>String(e.runnerMs)},{header:`tokens`,value:e=>e.tokens===void 0?``:JSON.stringify(e.tokens)}],i,r)}\n`)}const d=e({name:`agent usage`,help:{usage:`coder agent usage [--since 7d|24h|<ms>] [--by agent|installation|engine] [--server [url]] [--json] [--cwd <dir>]`,flags:[[`--since <period|ms>`,`period such as 7d or 24h, or milliseconds since epoch`],[`--by <group>`,`agent, installation, or engine`],t]},options:{...s,...l,since:o,by:o},run:async({options:e,cwd:t})=>{let{agents:n}=await import(`./agent-C1HI4JlI.js`).then(e=>e.t);return n.usage({...e,cwd:t,organization:e.workspace,since:e.since??`7d`})},print:(e,{options:t})=>u(e,t.by)});export{d as commandAgentUsage};
1
+ import{i as e,r as t}from"./cli-ZUdhZnuW.js";import{g as n,p as r}from"./output-BKeyLbvt.js";import{i,n as a,s as o,t as s}from"./args-CxsMr9Un.js";import c from"node:process";const l={server:i,workspace:o,yes:a};function u(e,t){let i=Array.isArray(e.totals)?e.totals.map(e=>({group:t??``,...e})):Object.entries(e.totals).flatMap(([e,t])=>t.map(t=>({group:e,...t})));if(!i.length)return void c.stdout.write(`${r.dim(`No usage in this period.`)}\n`);c.stdout.write(`${n([{header:`by`,value:e=>e.group},{header:`key`,value:e=>e.key,paint:e=>r.cyan(e)},{header:`tasks`,value:e=>String(e.tasks)},{header:`runner ms`,value:e=>String(e.runnerMs)},{header:`tokens`,value:e=>e.tokens===void 0?``:JSON.stringify(e.tokens)}],i,r)}\n`)}const d=e({name:`agent usage`,help:{usage:`coder agent usage [--since 7d|24h|<ms>] [--by agent|installation|engine] [--server [url]] [--json] [--cwd <dir>]`,flags:[[`--since <period|ms>`,`period such as 7d or 24h, or milliseconds since epoch`],[`--by <group>`,`agent, installation, or engine`],t]},options:{...s,...l,since:o,by:o},run:async({options:e,cwd:t})=>{let{agents:n}=await import(`./agent-ChnedLBv.js`).then(e=>e.t);return n.usage({...e,cwd:t,organization:e.workspace,since:e.since??`7d`})},print:(e,{options:t})=>u(e,t.by)});export{d as commandAgentUsage};
@@ -1,4 +1,4 @@
1
- import{Zt as e}from"./core-DwsAMCnL.js";import{Dn as t,Ln as n,Mn as r,Nn as i,Nt as a,Tn as o,Wn as s}from"./config-D2FxHWwi.js";import{i as c,r as l}from"./cli-D5hyqGq0.js";import{p as u,y as d}from"./output-BKeyLbvt.js";import{i as f,l as p,n as m,s as h,t as g}from"./args-CxsMr9Un.js";import{a as _,d as v,i as y,l as b,n as x,t as S,u as C}from"./result-DXL9N9Ip.js";import w from"node:process";const T={server:f,workspace:h,yes:m};function E(e,t){let n=e.level===`sys`?t.dim(`· ${e.line}`):e.level===`err`?t.light(e.line):e.line;w.stdout.write(`${n}\n`)}async function D(e,t,n){let r=n.trim===void 0?500:n.trim===`none`?1/0:n.trim;if(`attempts`in e.task){let{logEntry:i}=await import(`./log-view-DB4nXHXO.js`).then(e=>e.n),a=await S.create({cwd:e.task.task.cwd??t,startedAt:e.task.startedAt??e.task.createdAt,trim:r,explicitTrim:n.trim!==void 0,width:d()});for await(let t of e.events){let e=t;if(n.json){w.stdout.write(`${JSON.stringify(e,null,2)}\n`);continue}let r=e.entry??i(e.line);if(!r){E(e,u);continue}let o=a.render({...r,at:r.at??new Date(e.at).toISOString()});o.length&&w.stdout.write(`${o.join(`
1
+ import{Zt as e}from"./core-DwsAMCnL.js";import{Dn as t,Ln as n,Mn as r,Nn as i,Nt as a,Tn as o,Wn as s}from"./config-D2FxHWwi.js";import{i as c,r as l}from"./cli-ZUdhZnuW.js";import{p as u,y as d}from"./output-BKeyLbvt.js";import{i as f,l as p,n as m,s as h,t as g}from"./args-CxsMr9Un.js";import{a as _,d as v,i as y,l as b,n as x,t as S,u as C}from"./result-jeiRJTzA.js";import w from"node:process";const T={server:f,workspace:h,yes:m};function E(e,t){let n=e.level===`sys`?t.dim(`· ${e.line}`):e.level===`err`?t.light(e.line):e.line;w.stdout.write(`${n}\n`)}async function D(e,t,n){let r=n.trim===void 0?500:n.trim===`none`?1/0:n.trim;if(`attempts`in e.task){let{logEntry:i}=await import(`./log-view-DB4nXHXO.js`).then(e=>e.n),a=await S.create({cwd:e.task.task.cwd??t,startedAt:e.task.startedAt??e.task.createdAt,trim:r,explicitTrim:n.trim!==void 0,width:d()});for await(let t of e.events){let e=t;if(n.json){w.stdout.write(`${JSON.stringify(e,null,2)}\n`);continue}let r=e.entry??i(e.line);if(!r){E(e,u);continue}let o=a.render({...r,at:r.at??new Date(e.at).toISOString()});o.length&&w.stdout.write(`${o.join(`
2
2
  `)}\n`)}let o=await e.final();n.json||y(o,u),w.exit(0)}let i=e.task,s=await S.create({cwd:i.cwd??t,startedAt:Date.parse(i.createdAt??``)||void 0,trim:r,explicitTrim:n.trim!==void 0,width:d()});if(!n.json){let e=[...b(i,{status:i.status}),...a.includes(i.status)?[u.dim(`Watching. Press Ctrl-C to stop.`)]:[],...i.prompt?_(i.prompt,u,{truncate:!1}):[],``];w.stdout.write(`${e.join(`
3
3
  `)}\n`)}let c=null,l=null,f=e=>{let t=s.render(e);t.length&&w.stdout.write(`${t.join(`
4
4
  `)}\n`)};for await(let t of e.events){let e=t;if(e.kind===`usage`&&e.tokens&&(c=e.tokens),n.json){let t=e.kind===`steer`?1/0:r,n=e.message?{...e,message:v(e.message,t,{plain:!0})}:e;w.stdout.write(`${JSON.stringify(n)}\n`);continue}e.kind!==`usage`&&(l&&=(f(l),null),e.kind===`assistant`?l=e:f(e))}let{status:p,result:m,task:h}=await e.final();if(n.json)w.stdout.write(`${JSON.stringify({taskId:i.id,status:p,result:m},null,2)}\n`);else{let e=p===`completed`?`(no final message)`:`(task ${p})`,n=C(h,{tokens:m?.tokens??c,tokenModel:m?.model,files:m?.touchedFiles?.map(e=>o(i.cwd??t,e)),statusChanged:p!==i.status});n.length&&w.stderr.write(`\n${n.join(`
@@ -1,4 +1,4 @@
1
- import{pt as e}from"./config-D2FxHWwi.js";import{i as t}from"./cli-D5hyqGq0.js";import{_ as n,a as r,b as i,c as a,h as o,l as s,n as c,p as l,s as u,u as d,v as f,y as p}from"./output-BKeyLbvt.js";import{l as m,t as h}from"./args-CxsMr9Un.js";import g from"node:process";const _=t({name:`flow watch`,help:{usage:`coder flow watch [run-id] [--tail <n|all>] [--json]`,summary:`Watch a flow run live: replay its progress lines from the start, then keep
1
+ import{pt as e}from"./config-D2FxHWwi.js";import{i as t}from"./cli-ZUdhZnuW.js";import{_ as n,a as r,b as i,c as a,h as o,l as s,n as c,p as l,s as u,u as d,v as f,y as p}from"./output-BKeyLbvt.js";import{l as m,t as h}from"./args-CxsMr9Un.js";import g from"node:process";const _=t({name:`flow watch`,help:{usage:`coder flow watch [run-id] [--tail <n|all>] [--json]`,summary:`Watch a flow run live: replay its progress lines from the start, then keep
2
2
  following while it runs (Ctrl-C detaches; it keeps running). Blocks until it
3
3
  finishes; exits 0 on success, 1 otherwise. Defaults to the most recent run.
4
4
  For the result alone, prefer \`coder flow result\`. Alias: stream.`,flags:[[`--tail <n|all>`,`replay only the last n events first (default: all)`]],examples:[[`coder flow watch`,`follow the most recent run to completion`]]},options:{...h,tail:m},args:1,run:async({options:e,args:[t]})=>{let{watchRun:n}=await import(`./executor-5j-Ewzzb.js`).then(e=>e.b);return N(n(t,{tail:e.tail}),{json:e.json,stream:!0})}}),v=[`⣾`,`⣽`,`⣻`,`⢿`,`⡿`,`⣟`,`⣯`,`⣷`];function y(e,t=!1){let n=l;return t?c(`[${x(e)}]`,10):e===`completed`?n.bold(n.green(`✔`)):e===`failed`||e===`cancelled`||e===`stopped`?n.bold(n.red(`✘`)):e===`running`?n.bold(n.cyan(`●`)):n.dim(`○`)}function b(){return c(`[start]`,10)}function x(e){return e===`completed`?`done`:e===`cancelled`?`failed`:e}function S(e,t){return e??t.replace(/\s+/g,` `).trim().slice(0,60)}function C(e,t,n,r,i,a){let o=l,u=c(t??n,32);return[`${e} ${a?o.bold(u):u}`,o.dim(c(n,24)),o.light(c(i??``,20)),r?o.light(`${s(r.total)} tok`):``].join(` `).trimEnd()}function w(e,t=!1){let n=l;return`${y(e.ok?`completed`:`failed`,t)} ${n.dim(`gate`)} ${n.light(e.cmd)}${e.ok?``:n.dim(` · exit ${e.code}`)}`}function T(e,t,n){let i=l,a=n!==void 0&&n>=1e3?i.dim(` · ${r(n)}`):``;return`${t} ${i.dim(`gate`)} ${i.light(e)}${a}`}function E(e,t=!1){return l.dim(`${`│ `.repeat(e)}${t?`└─`:`├─`}`)}function D(e){return l.dim(`${`│ `.repeat(e)}│ `)}function O(e){return`${` `.repeat(e.depth)}${e.log?`${c(`[log]`,10)} `:``}${e.body}`}function k(e,t,n=!1){return n?O(e):`${e.log?D(e.depth):E(e.depth,t)} ${e.body}`}function A(e){return l.dim(`${`│ `.repeat(Math.max(0,e))}│`)}var j=class{stream;names=new Map;active=new Map;activeGates=new Map;pending;previews=new Map;frame=0;hasCommitted=!1;timer;tty;region;constructor(e=g.stdout){this.stream=e,this.tty=!!e.isTTY,this.region=new n(e)}emit(e){let t=l;switch(e.kind){case`task-start`:{let t={name:S(e.name,e.prompt),engine:e.engine,depth:e.depth??0};if(this.names.set(e.taskId,t),!this.tty){this.final(t.depth,C(b(),t.name,e.taskId,null,t.engine));return}this.active.set(e.taskId,t),this.spin(!0),this.repaint();return}case`task-end`:{this.active.delete(e.taskId),this.previews.delete(e.taskId),this.idle();let t=this.names.get(e.taskId);this.final(t?.depth??0,C(y(e.status,!this.tty),t?.name??null,e.taskId,e.tokens,t?.engine));return}case`gate-start`:{let t={cmd:e.cmd,depth:e.depth??0,startedAt:Date.now()};if(!this.tty){this.final(t.depth,T(t.cmd,b()));return}this.activeGates.set(e.gateId,t),this.spin(!0),this.repaint();return}case`gate`:e.gateId&&this.activeGates.delete(e.gateId),this.idle(),this.final(e.depth??0,w(e,!this.tty));return;case`log`:for(let n of e.message.split(`
@@ -1 +1 @@
1
- import{ct as e}from"./config-D2FxHWwi.js";import{i as t}from"./cli-D5hyqGq0.js";import{i as n}from"./output-BKeyLbvt.js";import{s as r}from"./args-CxsMr9Un.js";import i from"node:process";const a=t({name:`task worker`,options:{cwd:r},args:1,async run({args:[t],cwd:r}){let{startAgentMailbox:a}=await import(`./exec-BsXFIdTl.js`).then(e=>e.i),{runWorker:o}=await import(`./worker-BiJ7jiOr.js`),s=e(r,t);s||n(`Worker: task ${t} not found.`),await o(r,s,a).catch(()=>i.exit(1))}});export{a as commandWorker};
1
+ import{ct as e}from"./config-D2FxHWwi.js";import{i as t}from"./cli-ZUdhZnuW.js";import{i as n}from"./output-BKeyLbvt.js";import{s as r}from"./args-CxsMr9Un.js";import i from"node:process";const a=t({name:`task worker`,options:{cwd:r},args:1,async run({args:[t],cwd:r}){let{startAgentMailbox:a}=await import(`./exec-BsXFIdTl.js`).then(e=>e.i),{runWorker:o}=await import(`./worker-D2csFtoH.js`),s=e(r,t);s||n(`Worker: task ${t} not found.`),await o(r,s,a).catch(()=>i.exit(1))}});export{a as commandWorker};
@@ -6,4 +6,4 @@ Your turn is one-shot: background processes will not re-invoke you after it ends
6
6
  Never run git write operations (commit, checkout, stash, reset, rebase, merge, push, etc.); leave changes uncommitted for the caller to review.${e.agentId?"\nFlows are the exception: run one from your shell with `coder flow run <name> --wait --json --args '<json>'`; it runs as a script in your sandbox.":``}${t}
7
7
  </system>
8
8
 
9
- ${e.prompt??``}`}function j(e,t){let n=0;return()=>{Date.now()-n>=1e4&&(n=Date.now(),d(e,t))}}function M(e,t,{echo:n}){let r=r=>{let i=JSON.parse(p(typeof r==`string`?{message:r}:r));m(e,t,i),n&&i.message&&O.stderr.write(`[coder] ${i.message}\n`)};for(let e of Object.keys(u()))O.env[e]!==void 0&&r({kind:`warning`,message:`${e} is temporarily unavailable; skipped for this task.`});return r}async function N(i,c,{echo:l,env:u={}}){let d=a(i),p=t(i,c.id),y=g(i),C=M(i,c.id,{echo:l}),T=f[c.permissions??`auto`]??f.auto,D=T.approvalPolicy===`never`?void 0:x({workspaceRoot:d,taskDir:p,mode:T.approvalMode,escalationTimeoutMs:y.approvals.escalationTimeoutMs,allowedNetworkHosts:y.approvals.allowedNetworkHosts,onEvent:e=>C(e)}),k=c.model?y.models?.[c.model]:void 0,N=k&&h(k)?k:void 0;if(N&&!N.wireApi&&c.model){let t=await E(N);t&&(N={...N,...t},y.models[c.model]=N,e(i,c.model,t),m(i,c.id,{kind:`info`,message:`detected wire api for ${c.model}: ${t.wireApi} @ ${N.baseUrl}`}))}if(N?.envKey&&!O.env[N.envKey])throw Error(`Missing environment variable: \`${N.envKey}\`.`);let P=N?await w(N,N.wireApi??`chat`):null,I=n(y,c.model,P??void 0),L=_(i,c);try{let e=await S(i,{prompt:A(c),outputSchema:c.outputSchema,model:I?.model??s(c.model),modelProvider:I?.modelProvider??null,configOverrides:L||Object.keys(u).length?{...I?.configOverrides,"shell_environment_policy.set":{...u,...L?{[v]:L}:{}}}:I?.configOverrides??null,effort:c.effort,sandbox:T.sandbox,approvalPolicy:T.approvalPolicy,networkAccess:r(c.permissions??`auto`,y.engines.codex?.network),approvalsReviewer:T.approvalMode===`auto`?`auto_review`:null,mcpServers:b(c.mcp,O.env,void 0,{onWarning:e=>C({kind:`warning`,message:e})}),nativeMcp:c.nativeMcp??!1,writableRoots:[...T.sandbox===`read-only`?[]:c.addDirs??[],...L?[L]:[]],onApprovalRequest:D,onHeartbeat:j(i,c.id),resumeThreadId:c.resumeThreadId??null,onControlReady:(e,t,n)=>{o(i,c.id,{status:`running`,steerEndpoint:e,threadId:t,turnId:n})},onProgress:e=>{C(e);let t=typeof e==`object`?e.threadId:null,n=typeof e==`object`?e.turnId:null;(t||n)&&o(i,c.id,{status:`running`,...t?{threadId:t}:{},...n?{turnId:n}:{}})}});return o(i,c.id,{status:e.status===0?`completed`:`failed`,threadId:e.threadId,turnId:e.turnId,steerEndpoint:null,completedAt:new Date().toISOString()}),F(i,c,p,e),e}finally{o(i,c.id,{steerEndpoint:null}),await P?.close()}}async function P(e,n,{echo:r,env:i={}}){let a=t(e,n.id),s=g(e),c=M(e,n.id,{echo:r}),l=f[n.permissions??`auto`]??f.auto,u=_(e,n);try{let t=await y(e,{env:{...i,...u?{[v]:u}:{}},prompt:A(n),outputSchema:n.outputSchema,model:n.model,effort:n.effort,permissions:n.permissions,approvalTaskId:l.approvalMode===`auto`?n.id:null,allowedNetworkHosts:s.approvals.allowedNetworkHosts,additionalDirectories:n.addDirs,...u?{writableDirectories:[u]}:{},mcpServers:b(n.mcp,O.env,void 0,{onWarning:e=>c({kind:`warning`,message:e})}),nativeMcp:n.nativeMcp??!1,taskRoot:a,resumeSessionId:n.resumeThreadId??null,onHeartbeat:j(e,n.id),onSteerReady:t=>{o(e,n.id,{status:`running`,steerEndpoint:t})},onProgress:t=>{c(t),t.threadId&&o(e,n.id,{status:`running`,threadId:t.threadId})}});return o(e,n.id,{status:t.status===0?`completed`:`failed`,threadId:t.threadId,steerEndpoint:null,completedAt:new Date().toISOString()}),F(e,n,a,t),t}finally{o(e,n.id,{steerEndpoint:null})}}function F(e,t,n,r){i(D.join(n,`result.json`),JSON.parse(p(r)));let a={at:new Date().toISOString(),prompt:t.currentPrompt??t.prompt??null,...r};k.appendFileSync(D.join(n,`results.jsonl`),`${p(a)}\n`,`utf8`)}function I(e){return async(e,t,n)=>{let r=await T(b(t.mcp,O.env,void 0,{onWarning:()=>{}}));try{return await(t.engine===`claude`?P:N)(e,t,{...n,env:r.env})}finally{await r.close()}}}async function L(e,t){for(let n=0;n<2;){let r=l(e,t);if(!r||r.status===`failed`||r.status===`cancelled`)return;let i=c(e,t);if(i.length===0){n+=1,await new Promise(e=>setTimeout(e,300));continue}n=0;for(let n of i){let i=o(e,t,{status:`running`,currentPrompt:n,resumeThreadId:r.threadId??null});m(e,t,{message:`Running steered follow-up.`});try{await I(i)(e,i,{echo:!1})}catch(n){let r=n instanceof Error?n.message:String(n);o(e,t,{status:`failed`,error:r}),m(e,t,{kind:`error`,message:r});return}}}}async function R(e,n,r){if(n.dispatchId&&!n.resumedAt)try{k.writeFileSync(D.join(t(e,n.id),`start-${n.dispatchId}`),``,{flag:`wx`})}catch(e){if(e.code===`EEXIST`)return;throw e}o(e,n.id,{status:`running`,pid:O.pid});let i=()=>{},a;try{if(i=r(e,n),n.name?.startsWith(`agent:`)){let{startInboxControl:r,applyTaskMessage:i}=await import(`./task-CB-j4EO8.js`).then(e=>e.d);a=r(t(e,n.id),n.name.slice(6),t=>i(e,l(e,n.id)??n,t))}if(n.simulateApproval){let r=await C(t(e,n.id),{onEvent:t=>m(e,n.id,t)});if(m(e,n.id,{message:`simulated approval: ${r}`}),r===`decline`){o(e,n.id,{status:`cancelled`,completedAt:new Date().toISOString(),error:`simulated approval denied`});return}}await I(n)(e,n,{echo:!1}),await L(e,n.id)}catch(t){let r=t instanceof Error?t.message:String(t);throw o(e,n.id,{status:`failed`,error:r}),m(e,n.id,{kind:`error`,message:r}),t}finally{i(),await a?.close()}}export{R as runWorker};
9
+ ${e.prompt??``}`}function j(e,t){let n=0;return()=>{Date.now()-n>=1e4&&(n=Date.now(),d(e,t))}}function M(e,t,{echo:n}){let r=r=>{let i=JSON.parse(p(typeof r==`string`?{message:r}:r));m(e,t,i),n&&i.message&&O.stderr.write(`[coder] ${i.message}\n`)};for(let e of Object.keys(u()))O.env[e]!==void 0&&r({kind:`warning`,message:`${e} is temporarily unavailable; skipped for this task.`});return r}async function N(i,c,{echo:l,env:u={}}){let d=a(i),p=t(i,c.id),y=g(i),C=M(i,c.id,{echo:l}),T=f[c.permissions??`auto`]??f.auto,D=T.approvalPolicy===`never`?void 0:x({workspaceRoot:d,taskDir:p,mode:T.approvalMode,escalationTimeoutMs:y.approvals.escalationTimeoutMs,allowedNetworkHosts:y.approvals.allowedNetworkHosts,onEvent:e=>C(e)}),k=c.model?y.models?.[c.model]:void 0,N=k&&h(k)?k:void 0;if(N&&!N.wireApi&&c.model){let t=await E(N);t&&(N={...N,...t},y.models[c.model]=N,e(i,c.model,t),m(i,c.id,{kind:`info`,message:`detected wire api for ${c.model}: ${t.wireApi} @ ${N.baseUrl}`}))}if(N?.envKey&&!O.env[N.envKey])throw Error(`Missing environment variable: \`${N.envKey}\`.`);let P=N?await w(N,N.wireApi??`chat`):null,I=n(y,c.model,P??void 0),L=_(i,c);try{let e=await S(i,{prompt:A(c),outputSchema:c.outputSchema,model:I?.model??s(c.model),modelProvider:I?.modelProvider??null,configOverrides:L||Object.keys(u).length?{...I?.configOverrides,"shell_environment_policy.set":{...u,...L?{[v]:L}:{}}}:I?.configOverrides??null,effort:c.effort,sandbox:T.sandbox,approvalPolicy:T.approvalPolicy,networkAccess:r(c.permissions??`auto`,y.engines.codex?.network),approvalsReviewer:T.approvalMode===`auto`?`auto_review`:null,mcpServers:b(c.mcp,O.env,void 0,{onWarning:e=>C({kind:`warning`,message:e})}),nativeMcp:c.nativeMcp??!1,writableRoots:[...T.sandbox===`read-only`?[]:c.addDirs??[],...L?[L]:[]],onApprovalRequest:D,onHeartbeat:j(i,c.id),resumeThreadId:c.resumeThreadId??null,onControlReady:(e,t,n)=>{o(i,c.id,{status:`running`,steerEndpoint:e,threadId:t,turnId:n})},onProgress:e=>{C(e);let t=typeof e==`object`?e.threadId:null,n=typeof e==`object`?e.turnId:null;(t||n)&&o(i,c.id,{status:`running`,...t?{threadId:t}:{},...n?{turnId:n}:{}})}});return o(i,c.id,{status:e.status===0?`completed`:`failed`,threadId:e.threadId,turnId:e.turnId,steerEndpoint:null,completedAt:new Date().toISOString()}),F(i,c,p,e),e}finally{o(i,c.id,{steerEndpoint:null}),await P?.close()}}async function P(e,n,{echo:r,env:i={}}){let a=t(e,n.id),s=g(e),c=M(e,n.id,{echo:r}),l=f[n.permissions??`auto`]??f.auto,u=_(e,n);try{let t=await y(e,{env:{...i,...u?{[v]:u}:{}},prompt:A(n),outputSchema:n.outputSchema,model:n.model,effort:n.effort,permissions:n.permissions,approvalTaskId:l.approvalMode===`auto`?n.id:null,allowedNetworkHosts:s.approvals.allowedNetworkHosts,additionalDirectories:n.addDirs,...u?{writableDirectories:[u]}:{},mcpServers:b(n.mcp,O.env,void 0,{onWarning:e=>c({kind:`warning`,message:e})}),nativeMcp:n.nativeMcp??!1,taskRoot:a,resumeSessionId:n.resumeThreadId??null,onHeartbeat:j(e,n.id),onSteerReady:t=>{o(e,n.id,{status:`running`,steerEndpoint:t})},onProgress:t=>{c(t),t.threadId&&o(e,n.id,{status:`running`,threadId:t.threadId})}});return o(e,n.id,{status:t.status===0?`completed`:`failed`,threadId:t.threadId,steerEndpoint:null,completedAt:new Date().toISOString()}),F(e,n,a,t),t}finally{o(e,n.id,{steerEndpoint:null})}}function F(e,t,n,r){i(D.join(n,`result.json`),JSON.parse(p(r)));let a={at:new Date().toISOString(),prompt:t.currentPrompt??t.prompt??null,...r};k.appendFileSync(D.join(n,`results.jsonl`),`${p(a)}\n`,`utf8`)}function I(e){return async(e,t,n)=>{let r=await T(b(t.mcp,O.env,void 0,{onWarning:()=>{}}));try{return await(t.engine===`claude`?P:N)(e,t,{...n,env:r.env})}finally{await r.close()}}}async function L(e,t){for(let n=0;n<2;){let r=l(e,t);if(!r||r.status===`failed`||r.status===`cancelled`)return;let i=c(e,t);if(i.length===0){n+=1,await new Promise(e=>setTimeout(e,300));continue}n=0;for(let n of i){let i=o(e,t,{status:`running`,currentPrompt:n,resumeThreadId:r.threadId??null});m(e,t,{message:`Running steered follow-up.`});try{await I(i)(e,i,{echo:!1})}catch(n){let r=n instanceof Error?n.message:String(n);o(e,t,{status:`failed`,error:r}),m(e,t,{kind:`error`,message:r});return}}}}async function R(e,n,r){if(n.dispatchId&&!n.resumedAt)try{k.writeFileSync(D.join(t(e,n.id),`start-${n.dispatchId}`),``,{flag:`wx`})}catch(e){if(e.code===`EEXIST`)return;throw e}o(e,n.id,{status:`running`,pid:O.pid});let i=()=>{},a;try{if(i=r(e,n),n.name?.startsWith(`agent:`)){let{startInboxControl:r,applyTaskMessage:i}=await import(`./task-DXHKWB_J.js`).then(e=>e.d);a=r(t(e,n.id),n.name.slice(6),t=>i(e,l(e,n.id)??n,t))}if(n.simulateApproval){let r=await C(t(e,n.id),{onEvent:t=>m(e,n.id,t)});if(m(e,n.id,{message:`simulated approval: ${r}`}),r===`decline`){o(e,n.id,{status:`cancelled`,completedAt:new Date().toISOString(),error:`simulated approval denied`});return}}await I(n)(e,n,{echo:!1}),await L(e,n.id)}catch(t){let r=t instanceof Error?t.message:String(t);throw o(e,n.id,{status:`failed`,error:r}),m(e,n.id,{kind:`error`,message:r}),t}finally{i(),await a?.close()}}export{R as runWorker};
@@ -1 +1 @@
1
- import{i as e}from"./cli-D5hyqGq0.js";import t from"node:process";const n=e({name:`server workflow`,globalFlags:{json:!1,cwd:!1},help:{usage:`coder server workflow`,summary:`Print the workflow the github-actions runner dispatches. Save it as .github/workflows/coder-agent.yml in every repo the agent runs on, and set RUNNER=github-actions on the server.`,examples:[[`coder server workflow > .github/workflows/coder-agent.yml`,`add it to a repo`]]},options:{},run:async()=>{let{actionsWorkflow:e}=await import(`./runners-UNKPlmYE.js`).then(e=>e.v);return e()},print:e=>t.stdout.write(e)});export{n as commandServerWorkflow};
1
+ import{i as e}from"./cli-ZUdhZnuW.js";import t from"node:process";const n=e({name:`server workflow`,globalFlags:{json:!1,cwd:!1},help:{usage:`coder server workflow`,summary:`Print the workflow the github-actions runner dispatches. Save it as .github/workflows/coder-agent.yml in every repo the agent runs on, and set RUNNER=github-actions on the server.`,examples:[[`coder server workflow > .github/workflows/coder-agent.yml`,`add it to a repo`]]},options:{},run:async()=>{let{actionsWorkflow:e}=await import(`./runners-CNhxPjg8.js`).then(e=>e.v);return e()},print:e=>t.stdout.write(e)});export{n as commandServerWorkflow};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wular/coder",
3
- "version": "0.4.8",
3
+ "version": "0.4.9",
4
4
  "description": "Delegating coding-agent runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/sdk.js",
@@ -1,3 +0,0 @@
1
- import{qi as e}from"./core-DwsAMCnL.js";import{H as t}from"./dispatch-D3Dqxijf.js";import{t as n}from"./types-B42Oh0zF.js";import{a as r}from"./load-CRmQB1LD.js";import{i,n as a}from"./remote-oQs6My_3.js";import{t as o}from"./integrations-D3OgJk6Y.js";import{a as s,r as c}from"./exec-BsXFIdTl.js";import{c as l,o as u,u as d}from"./task-CB-j4EO8.js";import{n as f}from"./match-Kt3vFTl1.js";import p from"node:path";import m from"node:process";import h from"node:fs";import{spawn as g}from"node:child_process";import _ from"node:os";import v from"node:fs/promises";const y=/\x1b\[[0-9;?]*[ -/]*[@-~]|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)|\x1b[()][A-Z0-9]|\r/g;function b(e,t){if(e===`codex`)return{file:`codex`,args:[`login`,`--device-auth`],env:{CODEX_HOME:t}};let n=`stty cols 4000 rows 50 2>/dev/null; exec claude setup-token`;return{file:`sh`,args:[`-c`,`cat | { ${m.platform===`darwin`?`script -q /dev/null sh -c '${n}'`:`script -qfec '${n}' /dev/null`}; kill 0; }`],env:{CLAUDE_CONFIG_DIR:t,BROWSER:`true`}}}function x(e){try{return JSON.parse(Buffer.from(String(e).split(`.`)[1]??``,`base64url`).toString())}catch{return{}}}function S(e){let t=x(JSON.parse(e).tokens?.id_token),n=t[`https://api.openai.com/auth`];return{...typeof t.email==`string`?{email:t.email}:{},...typeof n?.chatgpt_plan_type==`string`?{plan:n.chatgpt_plan_type}:{}}}function C(e,t){let n=t.replace(y,``),r=/\x1b\]8;[^;]*;(https:\/\/[^\x07\x1b]+)(?:\x07|\x1b\\)/.exec(t)?.[1],i=e===`claude`?r??/https:\/\/\S*(?:oauth|authorize)\S*(?=\s)/.exec(n)?.[0]:/https:\/\/\S+(?=\s)/.exec(n)?.[0],a=e===`codex`?/\b[A-Z0-9]{4,}-[A-Z0-9]{4,}\b/.exec(n)?.[0]:void 0;if(!(!i||e===`codex`&&!a))return{url:i,...a?{code:a}:{}}}async function w(e,t){let{server:n,token:r}=d();delete m.env.CODER_TASK_TOKEN,delete m.env.CODER_LOGIN;let i=new AbortController,a=async(t,a)=>{let o=await fetch(`${n}/logins/${encodeURIComponent(e)}${t}`,{method:a===void 0?`GET`:`POST`,...t?{signal:i.signal}:{},headers:{authorization:`Bearer ${r}`,...a===void 0?{}:{"content-type":`application/json`}},...a===void 0?{}:{body:JSON.stringify(a)}});if(!o.ok)throw Error(`Coder server answered ${o.status}`);return await o.json()},{engine:o}=await a(``),s=await v.mkdtemp(p.join(t,`.login-`)),c=b(o,s),l=g(c.file,c.args,{env:{...m.env,...c.env},stdio:[`pipe`,`pipe`,`pipe`],detached:!0}),u=()=>{try{m.kill(-l.pid,`SIGTERM`)}catch{}},f=``,h=``,_=!1,x=new Promise((e,t)=>{l.once(`error`,t),l.once(`close`,e)}),w=setTimeout(u,6e5),T=async()=>{for(;!i.signal.aborted;){let{code:e}=await a(`/input`);if(e)return void l.stdin.write(`${e}\r`)}},E=e=>{if(f+=e.toString(),h=f.replace(y,``),!_){let e=C(o,f);e&&(_=!0,m.stdout.write(`Sign-in link ready
2
- `),a(``,e).catch(()=>u()),o===`claude`&&T().catch(()=>{i.signal.aborted||u()}))}o===`claude`&&/sk-ant-oat[\w-]+\s/.test(h)&&u()};l.stdout.on(`data`,E),l.stderr.on(`data`,E);try{let e=await x;i.abort();let t=/sk-ant-oat[A-Za-z0-9_-]+/.exec(h)?.[0];if(o===`claude`&&t){let e=/[\w.+-]+@[\w-]+(?:\.[\w-]+)+/.exec(h)?.[0];await a(``,{result:{env:{CLAUDE_CODE_OAUTH_TOKEN:t},...e?{account:{email:e}}:{}}})}else if(o===`codex`&&e===0){let e=await v.readFile(p.join(s,`auth.json`),`utf8`);await a(``,{result:{env:{CODEX_AUTH_JSON:e},account:S(e)}})}else await a(``,{error:_?`Sign-in did not finish. Start again.`:`${o} sign-in could not start.`}).catch(()=>{});m.stdout.write(`Sign-in finished
3
- `)}finally{clearTimeout(w),i.abort(),u(),await v.rm(s,{recursive:!0,force:!0})}}var T=e({agentIdError:()=>k,agents:()=>P,regexError:()=>A});const E=e=>e.cwd?p.resolve(e.cwd):m.cwd(),D=e=>(Array.isArray(e)?e:(e??``).split(`,`)).map(e=>e.trim()).filter(Boolean),O=/^[a-z0-9][a-z0-9_-]*$/;function k(e,t){if(!O.test(t))return`Use lowercase letters, digits, - or _, starting with a letter or digit.`;let n=p.join(e,`.coder`,`agents`,t);if(h.existsSync(n)&&h.readdirSync(n).length>0)return`${p.relative(e,n)} is not empty; clear it to start over, or edit what is there.`}function A(e){try{new RegExp(e);return}catch{return`Not a valid regular expression.`}}function j(e,t){let n=o[e]?.sample;return{integration:e,type:t,appId:`${e}:sample`,installationId:`sample`,deliveryId:`sample-1`,actor:{id:`user-1`,login:`someone`,role:`member`},text:`Replace me with the text a real event would carry.`,...n?{chat:{thread:{_type:`chat:Thread`,adapterName:e,channelId:n.slice(0,n.lastIndexOf(`:`)),id:n,isDM:!1}}}:{}}}async function M(e,r={}){let i=E(r);if(!e&&r.askId&&(e=await r.askId(e=>k(i,e))),!e)throw new t(`invalid-option`,`Missing agent id.`,{hint:`Usage: coder agent init <id>`});let a=k(i,e);if(a)throw new t(`invalid-option`,a.includes(`not empty`)?a:`Agent id "${e}": ${a}`);let s=p.join(i,`.coder`,`agents`,e),c=r.askPicks?await r.askPicks(e):{...r.name?{name:r.name}:{},integrations:D(r.integrations).length?D(r.integrations):[Object.keys(o)[0]],events:{},matches:{},tools:r.tools??`comment`};if(!n.includes(c.tools))throw new t(`invalid-option`,`Unknown preset "${c.tools}"; valid: ${n.join(`, `)}`);let l={},u=D(r.events),d=e=>Object.keys(o[e]?.events??{});for(let e of c.integrations)if(!o[e])throw new t(`invalid-option`,`Unknown integration "${e}"; valid: ${Object.keys(o).join(`, `)}`);for(let e of u)if(!c.integrations.some(t=>d(t).includes(e)))throw new t(`invalid-option`,`No chosen integration has event "${e}".`,{hint:`Events per integration: coder agent integrations show <id>`});let f=Object.fromEntries(D(r.match).map(e=>{let n=e.indexOf(`=`);if(n<1)throw new t(`invalid-option`,`Bad --match "${e}"; use event=regex.`);let r=e.slice(n+1);if(A(r))throw new t(`invalid-option`,`Bad --match for ${e.slice(0,n)}: ${A(r)}`);return[e.slice(0,n),r]}));for(let e of c.integrations){let n=d(e),r=c.events[e]??(u.length?u.filter(e=>n.includes(e)):[n.includes(`mention`)?`mention`:n[0]]);for(let i of r)if(!n.includes(i))throw new t(`invalid-option`,`${e} has no event "${i}"; valid: ${n.join(`, `)}`);let i={...f,...c.matches[e]??{}},a=r.filter(e=>i[e]);r.length&&(l[e]={events:a.length?Object.fromEntries(r.map(e=>[e,!i[e]||{match:i[e]}])):r,tools:c.tools})}let m={...c.name?{name:c.name}:{},...r.description?{description:r.description}:{},permissions:r.permissions??`read-only`,integrations:l};await v.mkdir(s,{recursive:!0}),await v.writeFile(p.join(s,`agent.json`),`${JSON.stringify(m,null,2)}\n`),await v.writeFile(p.join(s,`system.md`),`You are ${c.name??e}.\n`);let h=p.join(_.tmpdir(),`coder-agent-samples`,e),g=[];for(let[e,t]of Object.entries(l)){let n=(Array.isArray(t.events)?t.events:Object.keys(t.events??{}))[0];await v.mkdir(h,{recursive:!0});let r=p.join(h,`sample-${e}-${n}.json`);await v.writeFile(r,`${JSON.stringify(j(e,n),null,2)}\n`),g.push(r)}return{id:e,dir:s,files:[`agent.json`,`system.md`],samples:g,integrations:Object.keys(l)}}function N(e){if(e===void 0||typeof e==`number`)return e;if(/^\d+$/.test(e))return Number(e);let n=/^(\d+)([dh])$/.exec(e);if(!n)throw new t(`invalid-option`,`Invalid --since value.`,{hint:`Use 7d, 24h, or milliseconds since epoch`});return Date.now()-Number(n[1])*(n[2]===`d`?864e5:36e5)}const P={list:(e={})=>e.server===void 0?r(E(e),o):a(e).agents.list(),async show(e,n={}){if(!e)throw new t(`invalid-option`,`Missing agent id.`,{hint:`Usage: coder agent show <id>`});if(n.server===void 0){let i=(await r(E(n),o)).find(t=>t.id===e);if(!i)throw new t(`invalid-option`,`No agent named "${e}".`,{hint:`List agents: coder agent list`});return i}let i=a(n),s=await i.agents.get(e),c=await i.agents.version(e,s.currentVersion);return{...s,definition:c.definition}},init:M,push:(e,t={})=>i(a(t),E(t),e),async run(e,n,i={}){if(i.wait&&i.server===void 0)throw new t(`invalid-option`,`--wait needs --server.`,{hint:`Offline runs print their reply as they finish`});if(!e||!n)throw new t(`invalid-option`,`Missing agent id or event file.`,{hint:`Usage: coder agent run <agent> <event.json>`});let l=E(i),u=typeof n==`string`?JSON.parse(await v.readFile(p.resolve(l,n),`utf8`)):n;if(i.server!==void 0){let t=a(i),n=await t.tasks.create({agent:e,event:u});if(!i.wait||!n.tasks.length)return n;let r=[];for(let e of n.tasks){let n=await t.tasks.wait(e,{onLog:i.onLog});r.push(n),i.onDone?.(n)}return r}let d=await r(l,o),m=d.find(t=>t.id===e);if(!m)throw new t(`invalid-option`,`No agent named "${e}".`);let h=f(u,d).find(t=>t.agent.id===e),g=i.flow??h?.flow;if(!g)throw new t(`invalid-option`,`Agent "${e}" does not match event "${u.type}".`);return c({cwd:l,agent:e,flow:g,task:{...s(m,g,u),tools:{},...h?.permissions?{permissions:h.permissions}:{}},post:!1})},runTask(e,t={}){let n=E(t);return m.env.CODER_LOGIN?w(e,n):m.env.CODER_PREPARE?u(e,n):l(e,n)},async usage(e={}){if(e.by&&![`agent`,`installation`,`engine`].includes(e.by))throw new t(`invalid-option`,`Invalid --by value.`,{hint:`Use agent, installation, or engine`});let n=e.by;if(e.server!==void 0)return a(e).usage({since:N(e.since),by:n});let[{localUsage:r},{usageSummary:i}]=await Promise.all([import(`./apps-aj_JtpAm.js`).then(e=>e.At),import(`./apps-aj_JtpAm.js`).then(e=>e.xn)]);return i(r(E(e)).map(([,e])=>e),N(e.since)??0,n)},integrations:{list:()=>Object.entries(o).map(([e,t])=>({id:e,description:t.description,events:Object.keys(t.events),tools:t.tools.presets.write})),show(e){if(!e)throw new t(`invalid-option`,`Missing integration id.`,{hint:`Usage: coder agent integrations show <id>`});let n=o[e];if(!n)throw new t(`invalid-option`,`Unknown integration "${e}".`,{hint:`List integrations: coder agent integrations list`});return{id:e,events:Object.fromEntries(Object.entries(n.events).map(([e,t])=>[e,t.description])),tools:n.tools.presets}}}};export{P as n,T as t};
@@ -1 +0,0 @@
1
- import{s as e}from"./cli-D5hyqGq0.js";const t=e(`auth`,{login:async()=>(await import(`./login-CCA0uLsW.js`)).commandLogin,logout:async()=>(await import(`./logout-Cv0cm9F8.js`)).commandLogout,status:async()=>(await import(`./status-ZN0HYtLa.js`)).commandStatus},{menu:[{usage:`login`,blurb:`sign in through the browser`},{usage:`logout`,blurb:`sign out and forget the saved session`},{usage:`status`,blurb:`show where you are signed in`}],description:[`Sign in to Coder and manage saved server sessions.`],exampleCommand:`auth login`});export{t as commandAuth};
@@ -1 +0,0 @@
1
- import{s as e}from"./cli-D5hyqGq0.js";const t=e(`credentials`,{list:async()=>(await import(`./list-CbN2giPy.js`)).commandCredentialsList,add:async()=>(await import(`./add-yIlNqPSu.js`)).commandCredentialsAdd,login:async()=>(await import(`./login-BoOBMH4y.js`)).commandCredentialsLogin,remove:async()=>(await import(`./remove-B01SXfEq.js`)).commandCredentialsRemove,default:async()=>(await import(`./default-CNhVH61w.js`)).commandCredentialsDefault},void 0,{help:{usage:`coder credentials [list|add|login|remove|default] ...`,summary:`Manage engine credentials. Your personal ones are yours alone; workspace ones serve every member, and only owners and admins change them. A task runs on its requester's default for the engine, else the workspace's.`}});export{t as commandCredentials};
@@ -1,13 +0,0 @@
1
- "use client";
2
- import { signOut } from "../../../../utils/client.d25e6dcc6704eb60.js";
3
- import { iOut } from "../../../../comps/ui/icons.868385119bf2de28.js";
4
- import { Icon } from "../../../../comps/ui/icon.0874ca2f58f7db14.js";
5
- import { jsx as _jsx, jsxs as _jsxs } from "../../../../../../../../../node_modules/preact/jsx-runtime/dist/jsxRuntime.mjs";
6
- export function SignOut({ class: cls, icon, children }) {
7
- return /* @__PURE__ */ _jsxs("button", {
8
- type: "button",
9
- class: cls,
10
- onClick: () => void signOut().catch(() => location.reload()),
11
- children: [icon ? /* @__PURE__ */ _jsx(Icon, { d: iOut }) : null, children]
12
- });
13
- }
@@ -1,12 +0,0 @@
1
- import { iAgent } from "../../../../../comps/ui/icons.868385119bf2de28.js";
2
- import { Icon } from "../../../../../comps/ui/icon.0874ca2f58f7db14.js";
3
- import { OrgLink } from "../../../../../comps/nav/org.813dc34bd23a336f.js";
4
- import { jsx as _jsx, jsxs as _jsxs } from "../../../../../../../../../../node_modules/preact/jsx-runtime/dist/jsxRuntime.mjs";
5
- /** Make a dashboard agent; importing from a repository starts from the same page. */
6
- export function NewAgentMenu() {
7
- return /* @__PURE__ */ _jsxs(OrgLink, {
8
- class: "btn",
9
- href: "/dash/[org]/agents/new",
10
- children: [/* @__PURE__ */ _jsx(Icon, { d: iAgent }), "New agent"]
11
- });
12
- }
@@ -1,29 +0,0 @@
1
- import { iLeft, iUpload } from "../../../../../../comps/ui/icons.868385119bf2de28.js";
2
- import { BLANK, LoadingCard } from "../../../../../../comps/frame/loading-card.df3717186948c93f.js";
3
- import { LoadingHero } from "../../agent/hero.9de48723967d8546.js";
4
- import { Page } from "../../../../../../comps/frame/page-head.e5d2185c1cdac740.js";
5
- import { Icon } from "../../../../../../comps/ui/icon.0874ca2f58f7db14.js";
6
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "../../../../../../../../../../../node_modules/preact/jsx-runtime/dist/jsxRuntime.mjs";
7
- export default function AgentEditLoading() {
8
- return /* @__PURE__ */ _jsxs(Page, { children: [/* @__PURE__ */ _jsx(LoadingHero, {
9
- back: /* @__PURE__ */ _jsxs("span", {
10
- class: "back",
11
- "aria-hidden": "true",
12
- children: [/* @__PURE__ */ _jsx(Icon, { d: iLeft }), BLANK]
13
- }),
14
- actions: /* @__PURE__ */ _jsxs(_Fragment, { children: [/* @__PURE__ */ _jsx("button", {
15
- type: "button",
16
- class: "btn ghost",
17
- disabled: true,
18
- children: "Cancel"
19
- }), /* @__PURE__ */ _jsxs("button", {
20
- type: "button",
21
- class: "btn",
22
- disabled: true,
23
- children: [/* @__PURE__ */ _jsx(Icon, { d: iUpload }), "Publish new version"]
24
- })] })
25
- }), /* @__PURE__ */ _jsx(LoadingCard, {
26
- label: "Loading editor",
27
- h: 472
28
- })] });
29
- }
@@ -1,60 +0,0 @@
1
- import "./@/comps/ui/segmented.41728247cda62f82.css.pnext-asset.js";
2
- import "./range-bar.1da88d087e3b5302.css.pnext-asset.js";
3
- import { Link } from "../../../../../../../../../node_modules/@wular/pnext/src/api/link.tsx";
4
- import { PRESETS, dayOf } from "../../../../utils/range.f73ba9cac0a60af1.js";
5
- import { CustomRange } from "./custom-range.471edcb853889c2e.js";
6
- import { linkOf, withSearch } from "../../../../comps/nav/to.a2c840c09bd4bf4a.js";
7
- import { iDown } from "../../../../comps/ui/icons.868385119bf2de28.js";
8
- import { Icon } from "../../../../comps/ui/icon.0874ca2f58f7db14.js";
9
- import { BLANK } from "../../../../comps/frame/loading-card.df3717186948c93f.js";
10
- import { jsx as _jsx, jsxs as _jsxs } from "../../../../../../../../../node_modules/preact/jsx-runtime/dist/jsxRuntime.mjs";
11
- /** Presets and a custom span, for the usage pages. */
12
- export function RangeBar({ range, to, tz }) {
13
- const today = dayOf(Date.now(), tz);
14
- return /* @__PURE__ */ _jsxs("div", {
15
- class: "range-line",
16
- children: [/* @__PURE__ */ _jsxs("div", {
17
- class: "seg-btns",
18
- role: "group",
19
- "aria-label": "Range",
20
- children: [Object.entries(PRESETS).map(([key, preset]) => /* @__PURE__ */ _jsx(Link, {
21
- ...linkOf(to),
22
- search: withSearch(to.search, { range: key }),
23
- scroll: false,
24
- "aria-current": range.key === key ? "page" : undefined,
25
- children: preset.short
26
- }, key)), /* @__PURE__ */ _jsx(CustomRange, {
27
- page: to,
28
- from: range.from ?? dayOf(range.since, tz),
29
- to: range.to ?? today,
30
- today,
31
- on: range.key === "custom"
32
- })]
33
- }), /* @__PURE__ */ _jsx("span", {
34
- class: "muted",
35
- children: range.label
36
- })]
37
- });
38
- }
39
- /** A usage range bar before its page arrives; the range it shows comes with the page. */
40
- export function LoadingRange() {
41
- return /* @__PURE__ */ _jsxs("div", {
42
- class: "range-line",
43
- "aria-hidden": "true",
44
- children: [/* @__PURE__ */ _jsxs("div", {
45
- class: "seg-btns",
46
- children: [Object.values(PRESETS).map((preset) => /* @__PURE__ */ _jsx("a", { children: preset.short }, preset.short)), /* @__PURE__ */ _jsx("span", {
47
- class: "menu custom",
48
- children: /* @__PURE__ */ _jsxs("button", {
49
- type: "button",
50
- disabled: true,
51
- tabIndex: -1,
52
- children: ["Custom", /* @__PURE__ */ _jsx(Icon, { d: iDown })]
53
- })
54
- })]
55
- }), /* @__PURE__ */ _jsx("span", {
56
- class: "muted",
57
- children: BLANK
58
- })]
59
- });
60
- }