@wular/coder 0.5.0 → 0.5.1

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 (266) hide show
  1. package/dist/{actions-CkMAM1Km.js → actions-DO8MvHwc.js} +2 -2
  2. package/dist/{agent-Bi5nbUhA.js → agent-Cgala63h.js} +1 -1
  3. package/dist/{app-server-BTpa5GBV.js → app-server-dnlLhhZb.js} +1 -1
  4. package/dist/{approvals-CRwkc9vB.js → approvals-C8XV7CK2.js} +1 -1
  5. package/dist/apps-BORri-28.js +18 -0
  6. package/dist/async-BS9tyhva.js +3 -0
  7. package/dist/{auth-oCvlHitk.js → auth-C16ylySv.js} +1 -1
  8. package/dist/builtin/coder/system.md +6 -3
  9. package/dist/{chat-4AiZEqKh.js → chat-czruXAt3.js} +1 -1
  10. package/dist/cli.js +3 -3
  11. package/dist/{cmd-Cu3OquA_.js → cmd-C1gHyVG7.js} +34 -34
  12. package/dist/{config-D_RuO6gX.js → config-_32PHl9g.js} +1 -1
  13. package/dist/{connection-BXjn7gCC.js → connection-CgA5_NJ7.js} +1 -1
  14. package/dist/{connections-Cswv7r8Z.js → connections-B90TemYf.js} +1 -1
  15. package/dist/{context-CFrDYenS.js → context-C1XBbfEL.js} +1 -1
  16. package/dist/dash/standalone/server/build-index.json +1 -1
  17. package/dist/dash/standalone/server/manifest.json +1391 -1391
  18. package/dist/dash/standalone/server/modules-server-server-react-server/src/client/{index.54c45900f2153d34.js → index.91e126d7a389d4bd.js} +0 -3
  19. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/{load.252f972b42c690e2.js → load.858c062c7891a2c1.js} +2 -2
  20. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/create/[id]/{page.11efd0e175db9053.js → page.9375ab741dc9791e.js} +3 -3
  21. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{notify.59ae138dc182d7c3.js → notify.c36570a56d279ce2.js} +1 -1
  22. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{page.e9386951cedea737.js → page.13fdd9cc55ad3a52.js} +3 -3
  23. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{sign-out.713d3ec10951fde5.js → sign-out.38a7f39cddc670f7.js} +1 -1
  24. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{agents-grid.f989d6f2d9ece6e4.js → agents-grid.2385ffa8fdad08d6.js} +1 -1
  25. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{page.0f88720e52db99a2.js → page.5ca6921e50484f8c.js} +6 -6
  26. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{layout.8d2f0997462fc958.js → layout.afc4a8a5a8360975.js} +7 -7
  27. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{page.bc93891522c8120d.js → page.ba65063a1aa99a62.js} +7 -7
  28. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{page.cf5cf9afe38ab0e4.js → page.03c5e72b0fe50ba9.js} +11 -11
  29. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{platform-actions.c44c7df7841719f2.js → platform-actions.7c8c75bd0c05df4a.js} +3 -3
  30. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{platform-step.6e90cbfe308f28a0.js → platform-step.d6a980d1181dc940.js} +1 -1
  31. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{agent-settings-form.61de585104c2be10.js → agent-settings-form.b5299f5130a4e8af.js} +16 -17
  32. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{page.4d06f759984a63b3.js → page.fad77cea17947d47.js} +8 -9
  33. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{loading.ea2925eab1d2e594.js → loading.4120e6979eaed441.js} +1 -1
  34. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{page.fb069bf82b727d27.js → page.474b3524d5ea53b7.js} +1 -1
  35. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{page.0a472a0e269b8c01.js → page.7868a07efcaa26f4.js} +3 -3
  36. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{versions-list.7ef7dfd5d8f5de43.js → versions-list.ba93a53773cab8a8.js} +1 -1
  37. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{loading.007326a04f05d46c.js → loading.6e53829bd1f3021d.js} +1 -1
  38. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{page.a26aa7bc6ab655f0.js → page.5798ede8ba8ace97.js} +6 -6
  39. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/platforms/[app]/{app-cards.361918fe58349aa1.js → app-cards.55778a4b3177846d.js} +2 -2
  40. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/platforms/[app]/{page.3f60cf67517d0d31.js → page.ce391cad0d78795f.js} +3 -3
  41. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-toggle.ffbf9a8b8b2fbde7.js → agent-toggle.0cec822c6099f058.js} +2 -2
  42. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{hero.0ae015a4fbe6321e.js → hero.7151c467e7ecf6a5.js} +1 -1
  43. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{connect-repositories.9abe365f0098d358.js → connect-repositories.4e121d31ed0cfe02.js} +1 -1
  44. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{editor.6548f8f757578f90.js → editor.f314d92af0bb33b0.js} +8 -8
  45. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{import-picker.577b1d84c7ab84e1.js → import-picker.11028d5329ad537b.js} +3 -3
  46. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{page.2b326d00ccef5544.js → page.1476d31e4554e88b.js} +4 -4
  47. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{layout.45a09107b19f0a7e.js → layout.150d950d191db477.js} +3 -3
  48. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{operator-apps.f8d679f2d06b0ebc.js → operator-apps.3e72de86b86a7338.js} +6 -6
  49. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{page.5aa3ddc669366703.js → page.6a4be3b1a473ff8c.js} +5 -5
  50. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{page.5a5188f0fc75dcd2.js → page.262ed73437c17872.js} +1 -1
  51. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{advanced-list.73cdadb2968a39d2.js → advanced-list.7180570379e2625c.js} +1 -1
  52. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{connection-add.353ec01fbb814f78.js → connection-add.632b1847c16ecd42.js} +4 -4
  53. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{connections-list.cf4061ae909272c3.js → connections-list.4378ae707b2092ed.js} +5 -5
  54. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials-list.fc4cff0289267551.js → credentials-list.e47897acb6867df8.js} +4 -4
  55. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials.db01de2581ac65f3.js → credentials.6bd06f96afbe7329.js} +8 -8
  56. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{list.e7d6a422f6a869ea.js → list.38e70272eeb98cd0.js} +3 -3
  57. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{models-list.acb92b39cab1d11c.js → models-list.a08cd37d0f7ff86c.js} +6 -6
  58. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{page.95fe939e36e5be55.js → page.f096b5a9ac419326.js} +13 -13
  59. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{runners-list.5764eac3307d67cc.js → runners-list.0df1f9329df1b67d.js} +6 -6
  60. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{secrets-list.d316bb157f747f6c.js → secrets-list.6d2f56fa7d6fcab0.js} +4 -4
  61. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{layout.4eb70f2de8674f93.js → layout.0fd865c865e5bab4.js} +1 -1
  62. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{model-options.dc630cb6e2cbf83a.js → model-options.0d6077fe68db3af9.js} +2 -5
  63. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{model-pick.a143e77f5ed5f9d3.js → model-pick.695538b2edf9dd15.js} +1 -1
  64. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{page.70cad0e981c33fa5.js → page.c57b81c2197cce0f.js} +1 -1
  65. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{create-link.18bd2b92cd23b73f.js → create-link.60aadbe43ea1e39c.js} +3 -3
  66. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{outcome-toast.95f7be49430248eb.js → outcome-toast.e2b9ef0344b1a1a2.js} +1 -1
  67. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{page.e39ee9236664d043.js → page.c456ad99c8a9f875.js} +4 -4
  68. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{activity.441e82ab00344fb2.js → activity.2ec05d78d609b7b2.js} +1 -1
  69. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{page.24e121ea6eb578ba.js → page.578be2f6c89fcba0.js} +6 -6
  70. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-actions.4a4052a38db4bad3.js → task-actions.d131453dd2a423c3.js} +4 -4
  71. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-view.0cd3ec2655f44cc7.js → task-view.3d72a4ecd2b3826e.js} +7 -53
  72. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer-data.73225456d60d63e3.js → composer-data.c16854be11a561e4.js} +1 -1
  73. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer.ee326fbf5e526fb1.js → composer.97be3e67214889c1.js} +24 -82
  74. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{pending-approvals.7607998094780fdd.js → pending-approvals.9175908da02960e1.js} +1 -1
  75. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-list.e486cbd16ea3e963.js → tasks-list.028798c79227a366.js} +8 -8
  76. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-section.01510523d1556d59.js → tasks-section.9a9d13057b326f25.js} +4 -4
  77. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{page.ede64f82388f9480.js → page.045c6db0c56975b2.js} +3 -3
  78. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{page.0499098badd3f5f8.js → page.938d29ff7edb678d.js} +2 -2
  79. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{stream.e3800e736f832124.js → stream.2cdb8eabd8f6df70.js} +1 -1
  80. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{task-toasts.3b7eeee29fc327de.js → task-toasts.8733901ca0e4c246.js} +1 -1
  81. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{action.f22057e7dfac40fe.js → action.56cea462eb725c39.js} +1 -1
  82. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{client.c8d7efefb6194d7d.js → client.685154f230716834.js} +1 -1
  83. package/dist/dash/standalone/static/assets/chunks/{advanced-list-850a950afe4f6996.js → advanced-list-b75a9c2bd11026de.js} +1 -1
  84. package/dist/dash/standalone/static/assets/chunks/{agent-pills-9f6fa120182db948.js → agent-pills-54564413a57d7fa7.js} +1 -1
  85. package/dist/dash/standalone/static/assets/chunks/agent-settings-form-55d294dad2ce5a0d.js +1 -0
  86. package/dist/dash/standalone/static/assets/chunks/{agent-toggle-521136f20a71400d.js → agent-toggle-b5dcc4ea6292fb3d.js} +1 -1
  87. package/dist/dash/standalone/static/assets/chunks/{agents-grid-bcd13cd7a46224a6.js → agents-grid-69461c53abbba433.js} +1 -1
  88. package/dist/dash/standalone/static/assets/chunks/{back-2d67134b122334f4.js → back-ba5e4340a9f8bbd2.js} +1 -1
  89. package/dist/dash/standalone/static/assets/chunks/{chain-hint-53675e299a865420.js → chain-hint-491eb09a20a15702.js} +1 -1
  90. package/dist/dash/standalone/static/assets/chunks/{combo-cb2c62fe580a8903.js → combo-6df61e8a1cc31037.js} +1 -1
  91. package/dist/dash/standalone/static/assets/chunks/composer-198b844da57b82a3.js +1 -0
  92. package/dist/dash/standalone/static/assets/chunks/composer-b26a3332a1243461.js +1 -0
  93. package/dist/dash/standalone/static/assets/chunks/{composer-data-890f71bade4f0616.js → composer-data-b05f3d93fdc472d7.js} +1 -1
  94. package/dist/dash/standalone/static/assets/chunks/{confirm-d6b2c5b1deccd1e8.js → confirm-14d018653fbe50fc.js} +1 -1
  95. package/dist/dash/standalone/static/assets/chunks/{connect-repositories-226bf70aa81c29d8.js → connect-repositories-5118edc019fc7890.js} +1 -1
  96. package/dist/dash/standalone/static/assets/chunks/{connections-list-a33d6637e2d52fcf.js → connections-list-5412dad7e0def52f.js} +1 -1
  97. package/dist/dash/standalone/static/assets/chunks/{copy-294c6052b3b69424.js → copy-04781f9af4e10f06.js} +1 -1
  98. package/dist/dash/standalone/static/assets/chunks/create-link-0651addf1461f901.js +1 -0
  99. package/dist/dash/standalone/static/assets/chunks/{credentials-list-90fc1c6d202e1461.js → credentials-list-e64c973aee5602d3.js} +1 -1
  100. package/dist/dash/standalone/static/assets/chunks/{custom-range-efa1b6a71ba84597.js → custom-range-b6919bab9846ebf7.js} +1 -1
  101. package/dist/dash/standalone/static/assets/chunks/{editor-53a3e1a893644fff.js → editor-68e9ccd1764fc512.js} +3 -3
  102. package/dist/dash/standalone/static/assets/chunks/{field-4d374d5ed3f43d7e.js → field-adcb6e6a5f9b7131.js} +1 -1
  103. package/dist/dash/standalone/static/assets/chunks/instructions-0022dd3bdd57c13f.js +1 -0
  104. package/dist/dash/standalone/static/assets/chunks/{instructions-d3dc01b2f90820db.js → instructions-7b274685ceb26457.js} +1 -1
  105. package/dist/dash/standalone/static/assets/chunks/{list-16247e39898cd20e.js → list-662f042656857c82.js} +1 -1
  106. package/dist/dash/standalone/static/assets/chunks/model-options-5e07b3318d69d218.js +1 -0
  107. package/dist/dash/standalone/static/assets/chunks/{models-list-6d93523660503dfb.js → models-list-ae1e2eff30d21824.js} +1 -1
  108. package/dist/dash/standalone/static/assets/chunks/outcome-dialog-546fe090efc129c2.js +1 -0
  109. package/dist/dash/standalone/static/assets/chunks/{outcome-dialog-755fc581cbc2836e.js → outcome-dialog-fd86ded4c44c2de7.js} +1 -1
  110. package/dist/dash/standalone/static/assets/chunks/outcome-toast-c00becdb638cd9a8.js +1 -0
  111. package/dist/dash/standalone/static/assets/chunks/platform-actions-2be223e68e648134.js +1 -0
  112. package/dist/dash/standalone/static/assets/chunks/{platform-actions-08e9b3816dcd62b1.js → platform-actions-f3979ab69a6ceb53.js} +1 -1
  113. package/dist/dash/standalone/static/assets/chunks/{platform-step-5881a8be1e761e00.js → platform-step-5454b6c0a19caefd.js} +1 -1
  114. package/dist/dash/standalone/static/assets/chunks/platform-step-9a52703f4c4f6a31.js +1 -0
  115. package/dist/dash/standalone/static/assets/chunks/{runners-list-dd759d408c643a29.js → runners-list-20d42f19fb4bec8a.js} +1 -1
  116. package/dist/dash/standalone/static/assets/chunks/{runtime-9b28886f3cbe0ed3-1.js → runtime-3fcac605fffcc273-1.js} +1 -1
  117. package/dist/dash/standalone/static/assets/chunks/{secrets-list-be1f634a1b077baa.js → secrets-list-89f89ee70edb3856.js} +1 -1
  118. package/dist/dash/standalone/static/assets/chunks/{segmented-f646bfa8aa0aa449.js → segmented-66a8c77c6294fec3.js} +1 -1
  119. package/dist/dash/standalone/static/assets/chunks/shared-init-3fcac605fffcc273-2.js +1 -0
  120. package/dist/dash/standalone/static/assets/chunks/{shared-init-953965859f7bf6b9.js → shared-init-96225b8c7758de9d.js} +1 -1
  121. package/dist/dash/standalone/static/assets/chunks/shared-init-96cde32cd50254c0.js +1 -0
  122. package/dist/dash/standalone/static/assets/chunks/shared-init-abd7653140f37a0c.js +9 -0
  123. package/dist/dash/standalone/static/assets/chunks/side-toggle-8a410cc6d6bd9b1d.js +1 -0
  124. package/dist/dash/standalone/static/assets/chunks/{tail-d13c4cc0cf11ffd1.js → tail-40f16e09eade7eee.js} +1 -1
  125. package/dist/dash/standalone/static/assets/chunks/{task-423e6a3f2527f534.js → task-396d849e58e50d59.js} +1 -1
  126. package/dist/dash/standalone/static/assets/chunks/{task-actions-5917357eac6504ca.js → task-actions-0b3054dc0f8d17c0.js} +1 -1
  127. package/dist/dash/standalone/static/assets/chunks/task-view-9e026dc5da58af5b.js +3 -0
  128. package/dist/dash/standalone/static/assets/chunks/{tasks-list-2c5ce592e00fda45.js → tasks-list-04c6568d7f7237b7.js} +1 -1
  129. package/dist/dash/standalone/static/assets/chunks/{versions-list-177ae397ad64dcea.js → versions-list-ceb756236e69b761.js} +1 -1
  130. package/dist/dash/standalone/static/assets/chunks/{wular-pnext-9b28886f3cbe0ed3-0.js → wular-pnext-3fcac605fffcc273-0.js} +1 -1
  131. package/dist/dash/standalone/static/assets/{dash-param-org-agents-param-slug-00243b34eb094b95.css → dash-param-org-agents-param-slug-dd4ac319a0d62432.css} +1 -1
  132. package/dist/dash/standalone/static/assets/{dash-param-org-agents-param-slug-settings-9f8faa8f7d714699.css → dash-param-org-agents-param-slug-platforms-9d2e1439f3f7e81b.css} +1 -1
  133. package/dist/dash/standalone/static/assets/{dash-param-org-agents-param-slug-usage-0e037c66e3977f33.css → dash-param-org-agents-param-slug-settings-f21d4fcd3948139b.css} +1 -1
  134. package/dist/dash/standalone/static/assets/{dash-param-org-agents-param-slug-tasks-129adcdc293ceac8.css → dash-param-org-agents-param-slug-tasks-c8d6aa06f6e75f4c.css} +1 -1
  135. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-9cc128ba8af6ef62.css +1 -0
  136. package/dist/dash/standalone/static/assets/{dash-param-org-tasks-8a44e171984d32a1.css → dash-param-org-tasks-be3cb3d64573f3d9.css} +1 -1
  137. package/dist/dash/standalone/static/assets/{dash-param-org-tasks-param-id-b9d3a7a1bd1dd666.css → dash-param-org-tasks-param-id-c20a0537bc82620d.css} +1 -1
  138. package/dist/dash/standalone/static/assets/pnext-client-07b41bfab64b61c0.js +1 -0
  139. package/dist/dash/standalone/static/assets/pnext-client-0d388d56250f9f46.js +1 -0
  140. package/dist/dash/standalone/static/assets/pnext-client-1443e45181b60bb0.js +1 -0
  141. package/dist/dash/standalone/static/assets/pnext-client-27207e4f43f9a21b.js +1 -0
  142. package/dist/dash/standalone/static/assets/{pnext-client-7ecbd7a0cbe4e231.js → pnext-client-435db60553fa3a67.js} +1 -1
  143. package/dist/dash/standalone/static/assets/pnext-client-523dd4071aa294ba.js +1 -0
  144. package/dist/dash/standalone/static/assets/pnext-client-5f6bda3919f68382.js +1 -0
  145. package/dist/dash/standalone/static/assets/pnext-client-684fd8ad16563ed3.js +1 -0
  146. package/dist/dash/standalone/static/assets/pnext-client-6b952cdda9a1eb2b.js +1 -0
  147. package/dist/dash/standalone/static/assets/pnext-client-6fe9e98f7dd8dcbf.js +1 -0
  148. package/dist/dash/standalone/static/assets/pnext-client-730c2c507a159f9e.js +1 -0
  149. package/dist/dash/standalone/static/assets/pnext-client-7c46573e45b67166.js +1 -0
  150. package/dist/dash/standalone/static/assets/pnext-client-83a865c3d75705bd.js +1 -0
  151. package/dist/dash/standalone/static/assets/pnext-client-907d1db4fb398a1d.js +1 -0
  152. package/dist/dash/standalone/static/assets/pnext-client-9baf701f3e641d09.js +1 -0
  153. package/dist/dash/standalone/static/assets/pnext-client-a57705e4e1047a9e.js +1 -0
  154. package/dist/dash/standalone/static/assets/{pnext-client-ed31510d4615a5a5.js → pnext-client-b1af82c6f0db0033.js} +1 -1
  155. package/dist/dash/standalone/static/assets/pnext-client-cede3bd7b2735942.js +1 -0
  156. package/dist/dash/standalone/static/assets/pnext-client-d9a3996f22b6816b.js +1 -0
  157. package/dist/dash/standalone/static/assets/pnext-client-f95364a0073ca4ce.js +1 -0
  158. package/dist/{definition-4on4SG5J.js → definition-D0OpQfGX.js} +1 -1
  159. package/dist/{discover-DvzAbQvU.js → discover-BfYHHJN_.js} +1 -1
  160. package/dist/{dispatch-BaW2X6Sc.js → dispatch-BkoIU4GU.js} +2 -2
  161. package/dist/{docs-CbgaMPvq.js → docs-CxklYa3P.js} +1 -1
  162. package/dist/{drive-Tk6JvQK5.js → drive-B7SBFfcb.js} +1 -1
  163. package/dist/env-BwFCHakK.js +1 -0
  164. package/dist/{exec-CAaYFJD1.js → exec-D9jF2F-H.js} +2 -2
  165. package/dist/{executor-Chc0zawh.js → executor-DBW7R7Tf.js} +6 -6
  166. package/dist/flow/builtin/review/index.d.ts +2 -2
  167. package/dist/flow/builtin/review/index.js +10 -15
  168. package/dist/flow/index.d.ts +2 -2
  169. package/dist/flow/index.js +1 -1
  170. package/dist/{hook-COWDSO4a.js → hook-DN__zYOG.js} +1 -1
  171. package/dist/{index-ezhbF5wC.d.ts → index-CTAQrCRU.d.ts} +71 -66
  172. package/dist/integrations-DSZSa8Rc.js +9 -0
  173. package/dist/lib/broker.js +1 -1
  174. package/dist/{load-PqaDHiHX.js → load-BtIDghgd.js} +2 -2
  175. package/dist/{local-BzZuOwgI.js → local-BzMvgiwL.js} +1 -1
  176. package/dist/{local-BMGcCk8N.js → local-GIxwz_Or.js} +1 -1
  177. package/dist/{login-BDKTNynK.js → login-LlZrIlxb.js} +1 -1
  178. package/dist/maintenance-DyiyHI8S.js +1 -0
  179. package/dist/{mcp-BGam3G_B.js → mcp-Caq72REF.js} +1 -1
  180. package/dist/{mcp-BNz_l5TV2.js → mcp-CrtKQoVi.js} +1 -1
  181. package/dist/{mcp-BGx48pyR.js → mcp-cEIva8Pd.js} +6 -4
  182. package/dist/{models-D1NXi6ni.js → models-BVxs3I8o.js} +1 -1
  183. package/dist/{permission-BkYxjiFR.js → permission-RSZM3DUk.js} +1 -1
  184. package/dist/post-DLenID75.js +11 -0
  185. package/dist/{refresh-yfEi5SQs.js → refresh-CWEpTAkD.js} +1 -1
  186. package/dist/{remote-rArUa01V.js → remote-BDMuKaON.js} +1 -1
  187. package/dist/{remote-BbXx6S9P.js → remote-CY-qYX2C.js} +1 -1
  188. package/dist/{runner-DG9jrX5H.js → runner-CKMOh5Q3.js} +1 -1
  189. package/dist/runner.json +1 -1
  190. package/dist/runner.tgz +0 -0
  191. package/dist/schema.js +1 -1
  192. package/dist/sdk.d.ts +15 -45
  193. package/dist/sdk.js +1 -1
  194. package/dist/serve-D23JqDip.js +12 -0
  195. package/dist/{serve-B-5rDiZm.js → serve-YlU04KO7.js} +1 -1
  196. package/dist/{session-Dtje9y-r.js → session-D7eeJIaH.js} +1 -1
  197. package/dist/{sessions-DIz9fyRN.js → sessions-BGUfSe8L.js} +1 -1
  198. package/dist/{shared--aE4olIO.js → shared-BzNReirj.js} +1 -1
  199. package/dist/{sign-in-wWkyaq5X.js → sign-in-Dr6sU7vz.js} +2 -2
  200. package/dist/{state-Br-Fuaxg.js → state-CxAUec80.js} +1 -1
  201. package/dist/store-BrnWdtRw.js +349 -0
  202. package/dist/{task-CFt85vTy.js → task-CyqtCXo3.js} +1 -1
  203. package/dist/task-DN4assR8.js +7 -0
  204. package/dist/{tool-search-BkdgVolu.js → tool-search-C9Ty3hhL.js} +1 -1
  205. package/dist/{tools-DNgEptor.js → tools-Ck-ZWtmB.js} +1 -1
  206. package/dist/{tools-oQvFAnh5.js → tools-DVtBtED6.js} +1 -1
  207. package/dist/{tools-search-D1zArRyJ.js → tools-search-BNDea9vZ.js} +1 -1
  208. package/dist/{turn-Cc-v-eSy.js → turn-eI4iRPsq.js} +1 -1
  209. package/dist/{update-check-UyRob3yy.js → update-check-Bap3dwaj.js} +1 -1
  210. package/dist/{views-3TxH367C.js → views-Bxm_5J6T.js} +1 -1
  211. package/dist/{worker-BMuKKiIa.js → worker-DJANNSCT.js} +1 -1
  212. package/dist/worker-DeuC38Vp.js +7 -0
  213. package/docs/agents/coder.md +1 -1
  214. package/docs/cli/index.md +5 -3
  215. package/docs/connections.md +1 -1
  216. package/docs/flows.md +1 -1
  217. package/docs/review.md +36 -8
  218. package/docs/self-host.md +2 -1
  219. package/package.json +1 -1
  220. package/plugins/claude/.claude-plugin/plugin.json +1 -1
  221. package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
  222. package/dist/apps-B6mUToTa.js +0 -18
  223. package/dist/async-CNhQ4wyZ.js +0 -3
  224. package/dist/dash/standalone/static/assets/chunks/agent-settings-form-a8ee12513a02b1c5.js +0 -1
  225. package/dist/dash/standalone/static/assets/chunks/composer-4a46a458495ce3ba.js +0 -1
  226. package/dist/dash/standalone/static/assets/chunks/composer-92553de43276510b.js +0 -1
  227. package/dist/dash/standalone/static/assets/chunks/create-link-b2480a7601967e94.js +0 -1
  228. package/dist/dash/standalone/static/assets/chunks/instructions-734d21dfb8f6393e.js +0 -1
  229. package/dist/dash/standalone/static/assets/chunks/model-options-d29e934a3de20ab4.js +0 -1
  230. package/dist/dash/standalone/static/assets/chunks/outcome-dialog-77e13c848000a3dc.js +0 -1
  231. package/dist/dash/standalone/static/assets/chunks/outcome-toast-9d5e9713c23882f5.js +0 -1
  232. package/dist/dash/standalone/static/assets/chunks/platform-actions-832904f5694ef902.js +0 -1
  233. package/dist/dash/standalone/static/assets/chunks/platform-step-29469fd4eaddc42a.js +0 -1
  234. package/dist/dash/standalone/static/assets/chunks/shared-init-926144b364908b3c.js +0 -9
  235. package/dist/dash/standalone/static/assets/chunks/shared-init-9b28886f3cbe0ed3-2.js +0 -1
  236. package/dist/dash/standalone/static/assets/chunks/shared-init-b42d2c06c25d1e2b.js +0 -1
  237. package/dist/dash/standalone/static/assets/chunks/side-toggle-8c21d39a1e284887.js +0 -1
  238. package/dist/dash/standalone/static/assets/chunks/task-view-c6ee43d2ddb6db90.js +0 -3
  239. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-25ae07e0b3f5b252.css +0 -1
  240. package/dist/dash/standalone/static/assets/pnext-client-095026242a079175.js +0 -1
  241. package/dist/dash/standalone/static/assets/pnext-client-1dfeb8c3ef155f87.js +0 -1
  242. package/dist/dash/standalone/static/assets/pnext-client-2358423351524403.js +0 -1
  243. package/dist/dash/standalone/static/assets/pnext-client-28a6557216627768.js +0 -1
  244. package/dist/dash/standalone/static/assets/pnext-client-31a4ee73945fee19.js +0 -1
  245. package/dist/dash/standalone/static/assets/pnext-client-3dfdc76bb8712b82.js +0 -1
  246. package/dist/dash/standalone/static/assets/pnext-client-4355ac87961d78c1.js +0 -1
  247. package/dist/dash/standalone/static/assets/pnext-client-43c7a0046572e0c9.js +0 -1
  248. package/dist/dash/standalone/static/assets/pnext-client-53dc7db68d67e0b1.js +0 -1
  249. package/dist/dash/standalone/static/assets/pnext-client-5835cb35488bdf7f.js +0 -1
  250. package/dist/dash/standalone/static/assets/pnext-client-638b390bc23ab1ae.js +0 -1
  251. package/dist/dash/standalone/static/assets/pnext-client-67f832c6c51a66cd.js +0 -1
  252. package/dist/dash/standalone/static/assets/pnext-client-6fc99f0abe77c2ea.js +0 -1
  253. package/dist/dash/standalone/static/assets/pnext-client-7d99965f28ac7604.js +0 -1
  254. package/dist/dash/standalone/static/assets/pnext-client-8250bd3b86d038a3.js +0 -1
  255. package/dist/dash/standalone/static/assets/pnext-client-bfd06805a43c6dee.js +0 -1
  256. package/dist/dash/standalone/static/assets/pnext-client-ce2943f17e9d9ac3.js +0 -1
  257. package/dist/dash/standalone/static/assets/pnext-client-f0496bf51e161ddd.js +0 -1
  258. package/dist/env-_AxrvBXP.js +0 -1
  259. package/dist/integrations-BVmsk64f.js +0 -9
  260. package/dist/maintenance-d43Ml540.js +0 -1
  261. package/dist/serve-CvnrGAj7.js +0 -12
  262. package/dist/store-CzQLgCzt.js +0 -352
  263. package/dist/task-N0qhnKpK.js +0 -7
  264. package/dist/worker-CIHY9L42.js +0 -7
  265. /package/dist/dash/standalone/server/modules-server-server-react-server/src/core/{types.5bf5a41cedb54154.js → types.9d22123d6296f5af.js} +0 -0
  266. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-view.aae9fa481b9015d1.css.pnext-asset.js → task-view.440367ae07204ee7.css.pnext-asset.js} +0 -0
@@ -1,3 +1,3 @@
1
- import{Ea as e,l as t}from"./args-CJsHYWbt.js";import{t as n}from"./errors-DK_trCff.js";import{$ as r,A as i,C as a,F as o,J as s,M as c,O as l,P as u,Q as d,S as f,T as p,V as m,W as h,b as g,c as _,dt as ee,et as v,ft as y,g as te,gt as ne,h as re,i as ie,k as ae,m as oe,mt as se,n as ce,o as b,ot as x,q as le,s as ue,tt as S,w as C}from"./state-Br-Fuaxg.js";import{C as de,M as fe,R as pe,w,z as me}from"./config-D_RuO6gX.js";import{_ as he,a as ge}from"./connections-Cswv7r8Z.js";import{m as _e}from"./app-server-BTpa5GBV.js";import{n as ve,t as ye}from"./crypto-Ittsv-m4.js";import{i as be,n as xe}from"./http-615JJgHo.js";import{n as Se,t as Ce}from"./remote-BbXx6S9P.js";import{F as we,I as Te,N as Ee,P as De,R as T,T as Oe,_ as E,a as ke,b as Ae,c as je,d as D,f as O,g as Me,i as Ne,m as Pe,n as Fe,o as Ie,p as Le,r as k,u as Re,w as ze,x as Be,z as Ve}from"./dispatch-BaW2X6Sc.js";import{n as He}from"./sessions-DIz9fyRN.js";import{_ as A,b as j,f as Ue,h as M,l as We,o as Ge,v as Ke}from"./approvals-CRwkc9vB.js";import{c as qe,s as Je,u as Ye}from"./view-D-rbQ1Kz.js";import{a as N,i as P,n as F,o as I,r as Xe,t as Ze}from"./remote-rArUa01V.js";import L from"node:path";import R from"node:process";import z from"node:fs";import{randomUUID as Qe}from"node:crypto";var $e=e({answerTaskApproval:()=>U,approvals:()=>Tt,approve:()=>$,archive:()=>Dt,ask:()=>Ct,askTask:()=>V,claudeAskOptions:()=>ct,collectApprovals:()=>H,collectTasks:()=>ut,deleteTask:()=>K,heldConnections:()=>et,list:()=>vt,recentTasks:()=>W,remove:()=>Ot,result:()=>gt,run:()=>ht,steer:()=>xt,steerTask:()=>B,stop:()=>Et,stopTask:()=>G,stream:()=>kt,streamTask:()=>dt,turnServers:()=>tt,watch:()=>Q});function et(e,t,n=e=>e){return async r=>({...ge(Object.fromEntries(Re(e,R.env,t).flatMap(e=>{let t=e.connection??e.name;return r.includes(t)?[[t,n(e)]]:[]}))),warnings:[]})}function tt(e,t){let n=e.mcp?.map(t=>{let n=t.connection??(t.resolved&&e.connections?.includes(t.name)?t.name:void 0);return n?{...t,connection:n,resolved:!1}:t})??[],r=e.mcpBindings??n.filter(e=>e.connection).map(({name:e,connection:t,tools:n})=>({name:e,connection:t,...n?{tools:n}:{}})),i=new Set(r.map(e=>e.connection));return{selected:O([...r,...n.filter(e=>!i.has(e.connection))],{},{},t),bindings:r}}async function nt(e,t,n,r,i={}){if(t.status!==`running`)return null;let a=t.engine===`claude`?await(i.claude??Be)(t.steerEndpoint,n,void 0,r):await(i.codex??we)(e,{endpoint:t.steerEndpoint,threadId:t.threadId,turnId:t.turnId,text:n,command:r});if(a.steered)return b(e,t.id,{kind:`steer`,message:`${ce}${n}`}),{taskId:t.id,steered:`live`};if(!a.retryable)throw b(e,t.id,{kind:`error`,message:`Live steer failed: ${a.detail}`}),Error(`Could not steer running task ${t.id}: ${a.detail}`);return null}function rt(e,t,n,r){oe(e,t,n,r)&&b(e,t,{kind:`steer`,message:`Steer queued for the next turn:\n${n}`})}async function B(e,t,r,i={},a={}){if(t=p(e,t.id)??t,!t.threadId)throw new n(`invalid-option`,`Task ${t.id} has no thread to steer yet (status: ${t.status}).`,{hint:`Wait for it to start: coder task watch ${t.id}`});let o=await nt(e,t,r,i.command,a);if(o){let n=p(e,t.id)??t;return n.archived&&d(e,n),o}return{taskId:t.id,steered:await at(e,t,r,i)}}function it(e){let t=z.mkdtempSync(`${e}-`),n=`${R.pid}-${l(R.pid)??0}-${Qe()}`;z.mkdirSync(L.join(t,n));try{for(let n=0;n<2;n++){try{return z.renameSync(t,e),!0}catch(e){if(![`EEXIST`,`ENOTEMPTY`,`ENOTDIR`].includes(e.code??``))throw e}try{if(z.statSync(e).isFile()){if(Date.now()-z.statSync(e).mtimeMs<6e4)return!1;z.unlinkSync(e);continue}for(let t of z.readdirSync(e)){let n=t.split(`-`),r=Number(n[0]),i=Number(n[1]),a=!1;if(Number.isInteger(r)&&r>0)try{R.kill(r,0),a=!0}catch(e){a=e.code===`EPERM`}let o=a?l(r):null;if(a&&(!i||o===null||o===i))return!1;z.rmdirSync(L.join(e,t))}z.rmdirSync(e)}catch(e){if(![`ENOENT`,`ENOTEMPTY`].includes(e.code??``))throw e}}return!1}finally{z.rmSync(t,{recursive:!0,force:!0})}}async function at(e,t,n,r){if(t.connectionSource===`server`&&!r.resolveConnections)throw Error(`Server connection resolver is required to resume this task`);let{model:i,effort:a}=ot(e,t,r.model),o=await v(e,t.id,()=>{let r=p(e,t.id)??t,i=r.resumeOwner&&!g(r.resumeOwner)?u(e,r):r,a=[i?.completedAt,i?.resumedAt].map(e=>Date.parse(e??``)||0),o=L.join(m(e,t.id),`resume-${a.join(`-`)}`);if(i&&!i.steerClosed&&(x.includes(i.status)||i.status===`completed`&&i.steerClosed===!1&&g(i.pid))||!it(o)){i.archived&&d(e,i),rt(e,t.id,n);return}return i.archived&&d(e,i),{fresh:i,claim:o,preparing:S(e,t.id,{status:`queued`,pid:null,resumeOwner:R.pid,dispatchId:Qe(),resumedAt:new Date().toISOString(),currentPrompt:n,resumeThreadId:i.threadId,steerClosed:!1,steerEndpoint:null,error:void 0})}});if(!o)return`queued`;let{fresh:s,claim:c,preparing:l}=o;t=s??t;try{for(let n of z.readdirSync(m(e,t.id)))/^resume-\d+-\d+$/.test(n)&&n!==L.basename(c)&&z.rmSync(L.join(m(e,t.id),n),{recursive:!0,force:!0});let o=t.agentId?await(await import(`./exec-CAaYFJD1.js`).then(e=>e.i)).localAgentPrompt(e,t.agentId):void 0,s=me(r.access,t.access),u=r.resolveConnections?await r.resolveConnections(t.connections??[]):await he(void 0,t.connections??[],void 0,me(o?.access,s)),{selected:f,bindings:h}=tt(t,u.mcp);t.archived&&d(e,t),await v(e,t.id,()=>{let c=p(e,t.id);if(c?.status!==`queued`||c.dispatchId!==l.dispatchId||c.resumeOwner!==R.pid)throw Error(`Task changed while preparing its resumed turn`);S(e,t.id,{...o?.developer&&t.promptParts?{promptParts:{...t.promptParts,developer:{...o.developer,notes:t.promptParts.developer?.notes}}}:{},mcp:f.mcp,mcpBindings:h,status:`queued`,pid:null,steerClosed:!1,resumeOwner:void 0,currentPrompt:n,...r.outputSchema?{outputSchema:r.outputSchema}:{},resumeThreadId:t.threadId,steerEndpoint:null,model:i,effort:a,access:s,error:void 0}),b(e,t.id,{kind:`steer`,message:`Resuming with steer:\n${n}`});for(let n of[...u.warnings,...f.warnings??[]])b(e,t.id,{kind:`status`,message:n});let d=Le(t.cwd??e,t.id,{...Object.fromEntries(Object.keys(R.env).filter(e=>e.startsWith(`CODER_CONNECTION_`)).map(e=>[e,void 0])),...u.env,...r.credentialEnv});r.onWorker?.(d)})}catch(n){let r=p(e,t.id);throw r&&r.dispatchId===l.dispatchId&&x.includes(r.status)&&S(e,t.id,{status:`failed`,resumeOwner:void 0,steerClosed:!0,completedAt:new Date().toISOString(),error:n instanceof Error?n.message:String(n)}),z.rmSync(L.join(m(e,t.id),L.basename(c)),{recursive:!0,force:!0}),n}return`resumed`}function ot(e,t,r){if(!r)return{model:t.model??null,effort:t.effort??null};let i=pe(r),{engine:a,model:o,effort:s}=D({...i.model?{}:{engine:t.engine},model:r},w(e));if(a!==t.engine)throw new n(`invalid-option`,`Task ${t.id} runs on ${t.engine}, so its follow-ups take a ${t.engine} model.`);return{model:o,effort:s}}const st=[`Read`,`Glob`,`Grep`];function ct(e,t,n,r){return{prompt:n,model:r.model??e.model,effort:r.effort,access:`read-only`,additionalDirectories:[t],taskRoot:t,readOnlyAllowedTools:st}}async function V(e,t,n,r={}){let{model:i,effort:a}=ot(e,t,r.model),o=m(e,t.id),s=_e(t,{log:L.join(o,`log.jsonl`),result:L.join(o,`result.json`),worker:L.join(o,`worker.log`)},n,r.command?T(r.command):void 0),c=r.command?e=>{let t=L.join(o,`inbox-control`);z.mkdirSync(t,{recursive:!0}),z.appendFileSync(L.join(t,`${T(r.command)}.transcript.jsonl`),JSON.stringify({command:r.command,result:e.finalMessage??e.error?.message??``})+`
1
+ import{Ea as e,l as t}from"./args-CJsHYWbt.js";import{t as n}from"./errors-DK_trCff.js";import{$ as r,A as i,C as a,F as o,J as s,M as c,O as l,P as u,Q as d,S as f,T as p,V as m,W as h,b as g,c as _,dt as ee,et as v,ft as y,g as te,gt as ne,h as re,i as ie,k as ae,m as oe,mt as se,n as ce,o as b,ot as x,q as le,s as ue,tt as S,w as C}from"./state-CxAUec80.js";import{C as de,M as fe,R as pe,w,z as me}from"./config-_32PHl9g.js";import{_ as he,a as ge}from"./connections-B90TemYf.js";import{m as _e}from"./app-server-dnlLhhZb.js";import{n as ve,t as ye}from"./crypto-Ittsv-m4.js";import{i as be,n as xe}from"./http-615JJgHo.js";import{n as Se,t as Ce}from"./remote-CY-qYX2C.js";import{F as we,I as Te,N as Ee,P as De,R as T,T as Oe,_ as E,a as ke,b as Ae,c as je,d as D,f as O,g as Me,i as Ne,m as Pe,n as Fe,o as Ie,p as Le,r as k,u as Re,w as ze,x as Be,z as Ve}from"./dispatch-BkoIU4GU.js";import{n as He}from"./sessions-BGUfSe8L.js";import{_ as A,b as j,f as Ue,h as M,l as We,o as Ge,v as Ke}from"./approvals-C8XV7CK2.js";import{c as qe,s as Je,u as Ye}from"./view-D-rbQ1Kz.js";import{a as N,i as P,n as F,o as I,r as Xe,t as Ze}from"./remote-BDMuKaON.js";import L from"node:path";import R from"node:process";import z from"node:fs";import{randomUUID as Qe}from"node:crypto";var $e=e({answerTaskApproval:()=>U,approvals:()=>Tt,approve:()=>$,archive:()=>Dt,ask:()=>Ct,askTask:()=>V,claudeAskOptions:()=>ct,collectApprovals:()=>H,collectTasks:()=>ut,deleteTask:()=>K,heldConnections:()=>et,list:()=>vt,recentTasks:()=>W,remove:()=>Ot,result:()=>gt,run:()=>ht,steer:()=>xt,steerTask:()=>B,stop:()=>Et,stopTask:()=>G,stream:()=>kt,streamTask:()=>dt,turnServers:()=>tt,watch:()=>Q});function et(e,t,n=e=>e){return async r=>({...ge(Object.fromEntries(Re(e,R.env,t).flatMap(e=>{let t=e.connection??e.name;return r.includes(t)?[[t,n(e)]]:[]}))),warnings:[]})}function tt(e,t){let n=e.mcp?.map(t=>{let n=t.connection??(t.resolved&&e.connections?.includes(t.name)?t.name:void 0);return n?{...t,connection:n,resolved:!1}:t})??[],r=e.mcpBindings??n.filter(e=>e.connection).map(({name:e,connection:t,tools:n})=>({name:e,connection:t,...n?{tools:n}:{}})),i=new Set(r.map(e=>e.connection));return{selected:O([...r,...n.filter(e=>!i.has(e.connection))],{},{},t),bindings:r}}async function nt(e,t,n,r,i={}){if(t.status!==`running`)return null;let a=t.engine===`claude`?await(i.claude??Be)(t.steerEndpoint,n,void 0,r):await(i.codex??we)(e,{endpoint:t.steerEndpoint,threadId:t.threadId,turnId:t.turnId,text:n,command:r});if(a.steered)return b(e,t.id,{kind:`steer`,message:`${ce}${n}`}),{taskId:t.id,steered:`live`};if(!a.retryable)throw b(e,t.id,{kind:`error`,message:`Live steer failed: ${a.detail}`}),Error(`Could not steer running task ${t.id}: ${a.detail}`);return null}function rt(e,t,n,r){oe(e,t,n,r)&&b(e,t,{kind:`steer`,message:`Steer queued for the next turn:\n${n}`})}async function B(e,t,r,i={},a={}){if(t=p(e,t.id)??t,!t.threadId)throw new n(`invalid-option`,`Task ${t.id} has no thread to steer yet (status: ${t.status}).`,{hint:`Wait for it to start: coder task watch ${t.id}`});let o=await nt(e,t,r,i.command,a);if(o){let n=p(e,t.id)??t;return n.archived&&d(e,n),o}return{taskId:t.id,steered:await at(e,t,r,i)}}function it(e){let t=z.mkdtempSync(`${e}-`),n=`${R.pid}-${l(R.pid)??0}-${Qe()}`;z.mkdirSync(L.join(t,n));try{for(let n=0;n<2;n++){try{return z.renameSync(t,e),!0}catch(e){if(![`EEXIST`,`ENOTEMPTY`,`ENOTDIR`].includes(e.code??``))throw e}try{if(z.statSync(e).isFile()){if(Date.now()-z.statSync(e).mtimeMs<6e4)return!1;z.unlinkSync(e);continue}for(let t of z.readdirSync(e)){let n=t.split(`-`),r=Number(n[0]),i=Number(n[1]),a=!1;if(Number.isInteger(r)&&r>0)try{R.kill(r,0),a=!0}catch(e){a=e.code===`EPERM`}let o=a?l(r):null;if(a&&(!i||o===null||o===i))return!1;z.rmdirSync(L.join(e,t))}z.rmdirSync(e)}catch(e){if(![`ENOENT`,`ENOTEMPTY`].includes(e.code??``))throw e}}return!1}finally{z.rmSync(t,{recursive:!0,force:!0})}}async function at(e,t,n,r){if(t.connectionSource===`server`&&!r.resolveConnections)throw Error(`Server connection resolver is required to resume this task`);let{model:i,effort:a}=ot(e,t,r.model),o=await v(e,t.id,()=>{let r=p(e,t.id)??t,i=r.resumeOwner&&!g(r.resumeOwner)?u(e,r):r,a=[i?.completedAt,i?.resumedAt].map(e=>Date.parse(e??``)||0),o=L.join(m(e,t.id),`resume-${a.join(`-`)}`);if(i&&!i.steerClosed&&(x.includes(i.status)||i.status===`completed`&&i.steerClosed===!1&&g(i.pid))||!it(o)){i.archived&&d(e,i),rt(e,t.id,n);return}return i.archived&&d(e,i),{fresh:i,claim:o,preparing:S(e,t.id,{status:`queued`,pid:null,resumeOwner:R.pid,dispatchId:Qe(),resumedAt:new Date().toISOString(),currentPrompt:n,resumeThreadId:i.threadId,steerClosed:!1,steerEndpoint:null,error:void 0})}});if(!o)return`queued`;let{fresh:s,claim:c,preparing:l}=o;t=s??t;try{for(let n of z.readdirSync(m(e,t.id)))/^resume-\d+-\d+$/.test(n)&&n!==L.basename(c)&&z.rmSync(L.join(m(e,t.id),n),{recursive:!0,force:!0});let o=t.agentId?await(await import(`./exec-D9jF2F-H.js`).then(e=>e.i)).localAgentPrompt(e,t.agentId):void 0,s=me(r.access,t.access),u=r.resolveConnections?await r.resolveConnections(t.connections??[]):await he(void 0,t.connections??[],void 0,me(o?.access,s)),{selected:f,bindings:h}=tt(t,u.mcp);t.archived&&d(e,t),await v(e,t.id,()=>{let c=p(e,t.id);if(c?.status!==`queued`||c.dispatchId!==l.dispatchId||c.resumeOwner!==R.pid)throw Error(`Task changed while preparing its resumed turn`);S(e,t.id,{...o?.developer&&t.promptParts?{promptParts:{...t.promptParts,developer:{...o.developer,notes:t.promptParts.developer?.notes}}}:{},mcp:f.mcp,mcpBindings:h,status:`queued`,pid:null,steerClosed:!1,resumeOwner:void 0,currentPrompt:n,...r.outputSchema?{outputSchema:r.outputSchema}:{},resumeThreadId:t.threadId,steerEndpoint:null,model:i,effort:a,access:s,error:void 0}),b(e,t.id,{kind:`steer`,message:`Resuming with steer:\n${n}`});for(let n of[...u.warnings,...f.warnings??[]])b(e,t.id,{kind:`status`,message:n});let d=Le(t.cwd??e,t.id,{...Object.fromEntries(Object.keys(R.env).filter(e=>e.startsWith(`CODER_CONNECTION_`)).map(e=>[e,void 0])),...u.env,...r.credentialEnv});r.onWorker?.(d)})}catch(n){let r=p(e,t.id);throw r&&r.dispatchId===l.dispatchId&&x.includes(r.status)&&S(e,t.id,{status:`failed`,resumeOwner:void 0,steerClosed:!0,completedAt:new Date().toISOString(),error:n instanceof Error?n.message:String(n)}),z.rmSync(L.join(m(e,t.id),L.basename(c)),{recursive:!0,force:!0}),n}return`resumed`}function ot(e,t,r){if(!r)return{model:t.model??null,effort:t.effort??null};let i=pe(r),{engine:a,model:o,effort:s}=D({...i.model?{}:{engine:t.engine},model:r},w(e));if(a!==t.engine)throw new n(`invalid-option`,`Task ${t.id} runs on ${t.engine}, so its follow-ups take a ${t.engine} model.`);return{model:o,effort:s}}const st=[`Read`,`Glob`,`Grep`];function ct(e,t,n,r){return{prompt:n,model:r.model??e.model,effort:r.effort,access:`read-only`,additionalDirectories:[t],taskRoot:t,readOnlyAllowedTools:st}}async function V(e,t,n,r={}){let{model:i,effort:a}=ot(e,t,r.model),o=m(e,t.id),s=_e(t,{log:L.join(o,`log.jsonl`),result:L.join(o,`result.json`),worker:L.join(o,`worker.log`)},n,r.command?T(r.command):void 0),c=r.command?e=>{let t=L.join(o,`inbox-control`);z.mkdirSync(t,{recursive:!0}),z.appendFileSync(L.join(t,`${T(r.command)}.transcript.jsonl`),JSON.stringify({command:r.command,result:e.finalMessage??e.error?.message??``})+`
2
2
  `)}:void 0;if(t.engine===`claude`)return Ae(t.cwd??e,{...ct(t,o,s,{model:i??void 0,effort:a}),command:r.command,onResult:c});let l=w(e),u=i?l.models?.[i]:void 0;return De(t.cwd??e,{prompt:s,model:fe(i??null),...u&&i&&de(u)?{customModel:{alias:i,entry:u}}:{},effort:a,sandbox:`read-only`,approvalPolicy:`never`,ephemeral:!0,onResult:c})}function H(e,t,n=`active`){return C(e).filter(e=>n===`all`||x.includes(e.status)).flatMap(n=>t(m(e,n.id)).map(e=>({...e,taskId:n.id})))}async function U(e,t,n,r,i={}){let a=m(e,t.id),o=A(a).find(e=>e.id===n),s=o?.response?.decision===r&&!o.response.deliveredAt?o:null,c=s??Ge(a,n,r,i.reason,i.by);return s||b(e,t.id,{kind:`approval-answered`,approvalId:n,decision:r,summary:c.actions.join(`
3
- `),...i.reason?{reason:i.reason}:{},...c.response?.by?{by:c.response.by}:{},message:We(c)}),await lt(e,t,c,i),Ke(a,c)}async function lt(e,t,n,r){let i=We(n),a=`${n.id}:${n.response.answeredAt}`,o=r.command??Ve(t.id,a),s=p(e,t.id)??t;if((s.currentPrompt??s.prompt)===i&&x.includes(s.status))return;let c=await v(e,t.id,()=>{let n=p(e,t.id)??s;return le(e,t.id,a)?!0:n.steerClosed||!x.includes(n.status)||n.threadId?!1:(rt(e,t.id,i,a),!0)}),l=!x.includes((p(e,t.id)??s).status);!c&&!(l&&await r.resume?.(i))&&await B(e,s,i,{command:o,...r.resolveConnections?{resolveConnections:r.resolveConnections}:{}})}function W(e){return C(e).filter(t=>!y.includes(t.status)||!ue(Date.parse(t.completedAt??t.updatedAt??t.createdAt??``))||(_(e,t,{auto:!0}),!1))}function ut(e,t={}){let n=t.limit===`all`?void 0:t.limit,r=e=>y.includes(e.status),o=i(e),s=new Set(o.map(e=>e.id)),c=e=>e.filter(e=>!s.has(e.id)),l=[...c(W(e)),...o.filter(e=>!e.archived)];if(t.archived?l=[...c(a(e)),...o.filter(e=>e.archived)]:t.running?l=l.filter(e=>x.includes(e.status)):t.stopped&&(l=l.filter(r)),t.dir){let e=h(L.resolve(String(t.dir))),n=new Map;l=l.filter(t=>t.cwd?(n.has(t.cwd)||n.set(t.cwd,h(t.cwd)),n.get(t.cwd)===e):!1)}let u=e=>({rank:qe(e.status),createdAt:Date.parse(e.createdAt??``)||0,id:e.id});l=[...l].sort((e,t)=>Je(u(e),u(t)));let d=n===void 0?0:Math.max(0,l.length-n);return n!==void 0&&(l=l.slice(0,n)),{tasks:l,clipped:d}}async function*dt(e,t,n={}){let i=r(e,t);try{let r=ae(),a=p(e,t);if(!a)throw Error(`No task found for "${t}".`);let o=n.tail??1,c=se(L.join(m(e,t),`log.jsonl`)),l=!0,d=()=>{let e=c().map(e=>{try{return JSON.parse(e)}catch{return{message:e}}});return l?(l=!1,o===`all`?e:s(e,o)):e};for(yield*d();a=u(e,p(e,t)??a,r),!y.includes(a.status);)await i.wait(1e3),yield*d();yield*d()}finally{i.close()}}async function G(e,t,n={}){let r=t.engine===`claude`?{detail:`claude worker terminated`}:await(n.interrupt??Ee)(e,{endpoint:t.steerEndpoint,threadId:t.threadId,turnId:t.turnId});if(t.engine!==`claude`&&Te(t.steerEndpoint),t.pid&&t.status===`running`)try{R.kill(t.pid,`SIGTERM`)}catch{}return S(e,t.id,{status:`cancelled`,error:ee,steerEndpoint:null,completedAt:new Date().toISOString()}),Ue(m(e,t.id)),{taskId:t.id,status:`cancelled`,interrupt:r.detail}}function K(e,t){for(let n of ze(t))t.engine===`claude`?Oe(n):He(e,n);return o(e,t.id)}function ft(){let{CODER_SERVER:e,CODER_TASK_TOKEN:t}=R.env;if(!(!R.env.CODER_WORKER||R.env.CODER_MCP_MODE===`cloud`||!e||!t))return xe(e)?Ce(e,{token:t}):void 0}function q(e){let t=e.server===void 0?ft():Se(e);return{cwd:e.cwd?L.resolve(e.cwd):R.cwd(),...t?{api:t}:{}}}function J(e,t){let r=re(e,t);if(r)return r;throw new n(`invalid-option`,t?`No task found for "${t}".`:`No tasks found for this workspace.`,{hint:t?[`List tasks: coder task list`,`Start one: coder run "<text>"`]:[`Start one: coder run "<text>"`]})}async function Y(e,t){if(t)return e.tasks.get(t);let[r]=await e.tasks.list({limit:1});if(!r)throw new n(`server`,`No server tasks found.`);return r}function X(e){throw new n(`invalid-option`,`Missing task id.`,{hint:e})}async function Z(e,t){for(;;){let r=await e.tasks.wait(t),i=F(r).find(e=>!e.answered);if(i)throw new n(`approval-pending`,`Approval needed for task ${t}: ${i.reason}`,{taskId:t,approval:i});if(y.includes(r.status))return r}}function pt(e,n){let r=t({server:n.server,workspace:n.organization});return{result:`coder task result ${e} --wait${r}`,steer:`coder task steer ${e} "<follow-up>"${r}`,stop:`coder task stop ${e}${r}`,list:`coder task list${r}`}}function mt(e,t){let n=t?.error?.message||e.error;return{taskId:e.id,status:e.status,finalMessage:t?.finalMessage,...n?{error:n}:{},tokens:t?.tokens??null,model:t?.model??e.model??null}}async function ht(e,t={}){if(t.outputSchema!==void 0&&(!t.outputSchema||typeof t.outputSchema!=`object`||Array.isArray(t.outputSchema)))throw new n(`invalid-option`,`outputSchema must be an object.`);let{cwd:r,api:i}=q(t),a=t.server===void 0;if(i){let n=await i.tasks.create({source:`cli`,prompt:e,...t.cwd&&!a?{cwd:t.cwd}:{},...t.outputSchema?{outputSchema:t.outputSchema}:{},...t.repo?{repo:t.repo}:{},...t.agent?{agent:t.agent}:{},...t.model?{model:t.model}:{},...t.access?{access:t.access}:{},...t.runner?{runner:t.runner}:{},...t.mcp?{mcp:t.mcp.split(`,`).map(e=>e.trim())}:{},...t.connections?{connections:t.connections}:{},...t.name?{name:t.name}:{},...t.appendSystem?{appendSystem:t.appendSystem}:{},...t.addDirs?.length?{addDirs:t.addDirs.map(e=>L.resolve(r,e))}:{}}),o=n.task.id,s=t.addDirs?.length?Ne(n.task.runner):void 0;if(s&&t.onNote?.(s),!t.wait)return{taskId:o,status:n.status,startupCheck:`pending`,commands:pt(o,t)};t.onWaiting?.(o);let c=await Z(i,o);return mt(I(c),P(c))}let o=t.agent?await(await import(`./exec-CAaYFJD1.js`).then(e=>e.i)).agentTaskOptions(r,t.agent,t.mcp,void 0,t.connections,t.access):void 0,s=o?.connected??await he(t.connections,void 0,void 0,t.access);for(let e of s.warnings)t.onNote?.(e);let c=w(r),l=o??O(t.mcp,c.mcp,{},s.mcp),u={prompt:e,outputSchema:t.outputSchema,cwd:r,engine:t.model?void 0:o?.engine,model:t.model??o?.model,effort:t.model?void 0:o?.effort,access:o?.access??t.access,name:t.name,appendSystem:t.appendSystem,...o?{agentPrompt:{developer:o.developer}}:{},wait:t.wait,addDirs:t.addDirs,...t.agent?{agentId:t.agent}:{},mcp:l.mcp,mcpBindings:l.mcpBindings,mcpWarnings:l.warnings,connectionEnv:s.env,connections:s.ids,nativeMcp:l.nativeMcp,...t.onFallback?{onFallback:t.onFallback}:{},...t.onNote?{onNote:t.onNote}:{}},d=Ie(c,D(u,c)),f=await k(u,{config:c,models:d});if(!t.wait){let e=f.taskId;return{taskId:e,status:f.task.status,startupCheck:f.startupCheck,commands:pt(e,t)}}for(;;){let i=f.taskId;t.onWaiting?.(i);let a=await E(r,i),{task:o,result:s}=a,l=s?.error?.message??``;if(o.status===`failed`&&ke(o.access??`auto`,l))throw new n(`read-only-unavailable`,l);let p=Pe(r,a,d);if(p!==void 0){if(p===null)throw new n(`chain-exhausted`,l,{payload:Fe(f.engine,l,o.access??`auto`,t.appendSystem,e)});t.onFallback?.({model:te(o),detail:l,next:te(p)}),f=await k({...u,name:void 0},{config:c,models:d.slice(d.indexOf(p))});continue}return mt(o,s)}}async function gt(e,t={}){let{cwd:r,api:i}=q(t);if(i){let n=await Y(i,e);t.wait&&([`completed`,`failed`,`cancelled`].includes(n.status)||t.onWaiting?.(n.task.id),n=await Z(i,n.task.id));let r=t.tail?await i.tasks.logs(n.task.id):[],a=(t.tail===`all`?r:r.slice(-Number(t.tail))).map(N);return Xe(n,a)}let a=J(r,e);if(t.wait){x.includes(a.status)&&t.onWaiting?.(a.id);let e=await Me(r,a);if(a=e.task,e.reason===`approval`)throw new n(`approval-pending`,`Approval needed for task ${a.id}: ${e.approval.reason}`,{taskId:a.id,approval:e.approval})}let{steps:o,result:s,turns:l}=je(r,a.id,{tail:t.tail,task:a}),u=j(m(r,a.id)),d=x.includes(a.status),p=d?f(r,a):a.updatedAt,h=ie(p),g=d?c(r,a.id,200):[];return{taskId:a.id,status:d&&u.length?`waiting-approval`:a.status,task:a,result:s,steps:o,turns:l,pendingApprovals:u.map(({id:e,reason:t,actions:n})=>({id:e,reason:t,actions:n})),...d?{idleMs:h,lastActivityAt:p??null,stalled:u.length===0&&h>6e5,lastLog:g.at(-1),liveTokens:g.reverse().find(e=>e.kind===`usage`&&String(e.at??``)>=(a.resumedAt??``))?.tokens??null}:{}}}function _t(e,t,n,r=Ye(e.prompt)){let i=x.includes(e.status);return{taskId:e.id,status:i&&t?`waiting-approval`:e.status,pendingApprovals:t,engine:e.engine??null,model:e.model??null,effort:e.effort??null,name:e.name??null,cwd:e.cwd??null,prompt:String(r??``).replace(/\s+/g,` `).trim().slice(0,80),updatedAt:e.updatedAt,archived:e.archived??!1,flowRunId:e.flowRunId??null,idleMs:i?ie(n??void 0):null}}async function vt(e={}){let{cwd:t,api:r}=q(e),i=e.limit??50;if(r){let t=[],n=e.cursor??``,a;do{let o=await r.tasks.list({cursor:n,limit:i===`all`?200:Math.min(200,i-t.length),status:e.running?`active`:void 0,archived:e.archived});for(let n of o.items)(!e.stopped||y.includes(n.status))&&t.push(_t(I(n),F(n).filter(e=>!e.answered).length,Ze(n.lastActivityAt??n.updatedAt),Ye(n.turns?.[0]?.prompt??n.task.prompt,n.task.event?.text)));a=o.next,n=a??``}while(a&&(i===`all`||t.length<i));return{items:Object.assign(t,{archived:0}),...a?{next:a}:{}}}let{tasks:o}=ut(t,{...e,limit:`all`,dir:e.dir??e.cwd}),s=o.map(e=>_t(e,x.includes(e.status)?j(m(t,e.id)).length:0,x.includes(e.status)?f(t,e):null)),c=0;if(e.cursor){let t;try{if(t=ye(e.cursor),typeof t!=`string`)throw Error()}catch{throw new n(`invalid-option`,`Invalid task list cursor.`)}let r=s.findIndex(e=>e.taskId===t);if(r<0)throw new n(`invalid-option`,`Task list cursor is no longer available; start a new list.`);c=r+1}let l=s.slice(c,i===`all`?void 0:c+i),u=!s.length&&!e.archived?a(t,{migrate:!1}).length:0;return{items:Object.assign(l,{archived:u}),...c+l.length<s.length?{next:ve(l.at(-1).taskId)}:{}}}async function*yt(e,t){let r=-1;for(;;){let i=await e.tasks.stream(t,r);if(!i.ok||!i.body){let r=await e.tasks.get(t);if(y.includes(r.status))return;if(i.status===401)continue;throw new n(`server`,`The task stream answered ${i.status}.`)}let a=!1;for await(let e of be(i.body))if(e.event===`log`){let t=JSON.parse(e.data);r=t.seq,yield N(t)}else e.event===`end`&&(a=!0);if(a)return}}async function*bt(e){yield*await e}async function Q(e,t={}){let{cwd:n,api:r}=q(t);if(r){let n=I(await Y(r,e));return{task:n,events:t.from===void 0?yt(r,n.id):bt(r.tasks.logs(n.id,t.from-1).then(e=>e.map(N))),async final(){let e=await r.tasks.get(n.id),t=I(e);return{taskId:n.id,status:t.status,result:P(e),task:t}}}}let i=J(n,e);return{task:i,events:t.from===void 0?dt(n,i.id,{tail:t.tail}):bt(c(n,i.id,1/0).slice(t.from)),async final(){let e=u(n,p(n,i.id)??i),t=ne(L.join(m(n,i.id),`result.json`));return{taskId:i.id,status:e.status,result:t,task:e}}}}async function xt(e,t,n={}){let{cwd:r,api:i}=q(n);if(i){let r=await i.tasks.steer(e,t,{...n.model?{model:n.model}:{},...n.access?{access:n.access}:{}}),a=r.steered??(r.task?`resumed`:`live`);if(!n.wait||a===`queued`)return{taskId:e,steered:a};let o=await Z(i,e);return{taskId:e,steered:a,status:I(o).status,finalMessage:P(o)?.finalMessage??null}}let a=await B(r,J(r,e),t,{model:n.model,access:n.access});if(!n.wait||a.steered===`queued`)return a;let o=p(r,a.taskId),s=o?(await E(r,o.id)).task:null,c=ne(L.join(m(r,a.taskId),`result.json`));return{...a,status:s?.status??null,finalMessage:c?.finalMessage??null}}async function St(e,t,r,i){let a=(await e.tasks.get(t)).answer?.length??0,o=new AbortController,s=await e.tasks.events([t],void 0,o.signal);try{let c=(await e.tasks.ask(t,r,i?{model:i}:{})).answer,l=!1,u;for(;c===void 0&&!l;){if(!s.ok||!s.body)throw new n(`server`,`The task events stream answered ${s.status}.`);for await(let e of be(s.body)){if(u=e.id??u,e.event!==`task`)continue;let n=JSON.parse(e.data);if(n.id===t&&((n.answer?.length??0)>a?c=n.answer[a]:l=!!n.deleted||y.includes(n.status),c!==void 0||l))break}c===void 0&&!l&&(s=await e.tasks.events([t],u,o.signal))}let d=typeof c==`string`?c:``;return{taskId:t,answer:d||null,...c===void 0?{error:`The task ended before it answered.`}:{},ok:!!d}}finally{o.abort()}}async function Ct(e,t,n={}){let{cwd:r,api:i}=q(n);if(i)return n.onAsking?.(e),St(i,e,t,n.model);let a=J(r,e);n.onAsking?.(a.id);let o=await V(r,a,t,{model:n.model});return{taskId:a.id,answer:o.finalMessage||null,...o.error?{error:o.error.message}:{},ok:o.status===0}}const wt=(e,t)=>({taskId:e,id:t.id,reason:t.reason,actions:t.actions,createdAt:t.createdAt,answered:t.response?.decision??null,deniedReason:t.response?.decision===`decline`?t.response.reason??null:null});async function Tt(e,t={}){let{cwd:n,api:r}=q(t);if(r)return(e?[await r.tasks.get(e)]:await r.tasks.list({limit:200})).flatMap(n=>F(n).filter(n=>t.denied?n.answered===`decline`:e||!n.answered).map(e=>({taskId:n.task.id,...e})));let i=t.denied?M:j;if(!e)return H(n,i,`all`).map(({taskId:e,...t})=>wt(e,t));let a=J(n,e);return(t.denied?M:A)(m(n,a.id)).map(e=>wt(a.id,e))}async function $(e,t,r={}){let{cwd:i,api:a}=q(r),o=r.deny?`decline`:`accept`;if(a){if(!e||!t)throw new n(`invalid-option`,`Server approvals need a task id and approval id.`,{hint:`Usage: coder task approve <task-id> <approval-id> --server <url>`});return await a.tasks.approve(e,t,o,r.reason?{reason:r.reason}:{}),{taskId:e,approvalId:t,decision:o}}if(e&&!t&&e.startsWith(`apr-`)&&(t=e,e=H(i,A,`all`).find(e=>e.id===t)?.taskId,!e))throw new n(`invalid-option`,`No approval "${t}".`,{hint:`List them: coder task approvals`});if(!e||!t)throw new n(`invalid-option`,`Missing approval id.`,{hint:[`List them: coder task approvals`,`Usage: coder task approve [task-id] <approval-id> [--deny] [--reason <why>]`]});let s=J(i,e);return await U(i,s,t,o,{reason:r.reason}),{taskId:s.id,approvalId:t,decision:o}}async function Et(e,t={}){let{cwd:n,api:r}=q(t);if(r){let t=e??(await Y(r)).task.id;return await r.tasks.cancel(t),{taskId:t,status:`cancelled`,interrupt:`stop requested on the server`}}let i=J(n,e),{interrupt:a}=await G(n,i);return{taskId:i.id,status:`cancelled`,interrupt:a}}async function Dt(e,t={}){let{cwd:n,api:r}=q(t);if(r){let n=t.allStopped?(await r.tasks.list({limit:200})).filter(e=>y.includes(e.status)).map(e=>e.task.id):[];return t.allStopped?(await Promise.all(n.map(e=>r.tasks.archive(e))),{archived:n,count:n.length}):(e||X([`Archive one: coder task archive <task-id> --server`]),await r.tasks.archive(e),{taskId:e,archived:!0})}if(t.allStopped){let e=C(n).filter(e=>y.includes(e.status));for(let t of e)_(n,t);return{archived:e.map(e=>e.id),count:e.length}}e||X([`Archive one: coder task archive <task-id>`,`Archive all stopped: coder task archive --all-stopped`]);let i=J(n,e);return _(n,i),{taskId:i.id,archived:!0}}async function Ot(e,t={}){let{cwd:r,api:i}=q(t);if(i){let n=t.allArchived?(await i.tasks.list({limit:200,archived:!0})).map(e=>e.task.id):[];return t.allArchived?(await Promise.all(n.map(e=>i.tasks.delete(e))),{deleted:n,count:n.length}):(e||X([`Delete one: coder task delete <task-id> --server`]),await i.tasks.delete(e),{taskId:e,deleted:!0})}if(t.allArchived){let e=a(r).filter(e=>K(r,e)).map(e=>e.id);return{deleted:e,count:e.length}}e||X([`Delete one: coder task delete <task-id>`,`Delete all archived: coder task delete --all-archived`]);let o=J(r,e);if(o.status===`running`)throw new n(`invalid-option`,`Task ${o.id} is still running.`,{hint:`Stop it first: coder task stop ${o.id}`});return K(r,o),{taskId:o.id,deleted:!0}}async function*kt(e,t={}){yield*(await Q(e,t)).events}export{Et as _,Dt as a,Q as b,K as c,W as d,Ot as f,B as g,xt as h,$ as i,et as l,ht as m,U as n,Ct as o,gt as p,Tt as r,V as s,$e as t,vt as u,G as v,kt as y};
3
+ `),...i.reason?{reason:i.reason}:{},...c.response?.by?{by:c.response.by}:{},message:We(c)}),await lt(e,t,c,i),Ke(a,c)}async function lt(e,t,n,r){let i=We(n),a=`${n.id}:${n.response.answeredAt}`,o=r.command??Ve(t.id,a),s=p(e,t.id)??t;if((s.currentPrompt??s.prompt)===i&&x.includes(s.status))return;let c=await v(e,t.id,()=>{let n=p(e,t.id)??s;return le(e,t.id,a)?!0:n.steerClosed||!x.includes(n.status)||n.threadId?!1:(rt(e,t.id,i,a),!0)}),l=!x.includes((p(e,t.id)??s).status);!c&&!(l&&await r.resume?.(i))&&await B(e,s,i,{command:o,...r.resolveConnections?{resolveConnections:r.resolveConnections}:{}})}function W(e){return C(e).filter(t=>!y.includes(t.status)||!ue(Date.parse(t.completedAt??t.updatedAt??t.createdAt??``))||(_(e,t,{auto:!0}),!1))}function ut(e,t={}){let n=t.limit===`all`?void 0:t.limit,r=e=>y.includes(e.status),o=i(e),s=new Set(o.map(e=>e.id)),c=e=>e.filter(e=>!s.has(e.id)),l=[...c(W(e)),...o.filter(e=>!e.archived)];if(t.archived?l=[...c(a(e)),...o.filter(e=>e.archived)]:t.running?l=l.filter(e=>x.includes(e.status)):t.stopped&&(l=l.filter(r)),t.dir){let e=h(L.resolve(String(t.dir))),n=new Map;l=l.filter(t=>t.cwd?(n.has(t.cwd)||n.set(t.cwd,h(t.cwd)),n.get(t.cwd)===e):!1)}let u=e=>({rank:qe(e.status),createdAt:Date.parse(e.createdAt??``)||0,id:e.id});l=[...l].sort((e,t)=>Je(u(e),u(t)));let d=n===void 0?0:Math.max(0,l.length-n);return n!==void 0&&(l=l.slice(0,n)),{tasks:l,clipped:d}}async function*dt(e,t,n={}){let i=r(e,t);try{let r=ae(),a=p(e,t);if(!a)throw Error(`No task found for "${t}".`);let o=n.tail??1,c=se(L.join(m(e,t),`log.jsonl`)),l=!0,d=()=>{let e=c().map(e=>{try{return JSON.parse(e)}catch{return{message:e}}});return l?(l=!1,o===`all`?e:s(e,o)):e};for(yield*d();a=u(e,p(e,t)??a,r),!y.includes(a.status);)await i.wait(1e3),yield*d();yield*d()}finally{i.close()}}async function G(e,t,n={}){let r=t.engine===`claude`?{detail:`claude worker terminated`}:await(n.interrupt??Ee)(e,{endpoint:t.steerEndpoint,threadId:t.threadId,turnId:t.turnId});if(t.engine!==`claude`&&Te(t.steerEndpoint),t.pid&&t.status===`running`)try{R.kill(t.pid,`SIGTERM`)}catch{}return S(e,t.id,{status:`cancelled`,error:ee,steerEndpoint:null,completedAt:new Date().toISOString()}),Ue(m(e,t.id)),{taskId:t.id,status:`cancelled`,interrupt:r.detail}}function K(e,t){for(let n of ze(t))t.engine===`claude`?Oe(n):He(e,n);return o(e,t.id)}function ft(){let{CODER_SERVER:e,CODER_TASK_TOKEN:t}=R.env;if(!(!R.env.CODER_WORKER||R.env.CODER_MCP_MODE===`cloud`||!e||!t))return xe(e)?Ce(e,{token:t}):void 0}function q(e){let t=e.server===void 0?ft():Se(e);return{cwd:e.cwd?L.resolve(e.cwd):R.cwd(),...t?{api:t}:{}}}function J(e,t){let r=re(e,t);if(r)return r;throw new n(`invalid-option`,t?`No task found for "${t}".`:`No tasks found for this workspace.`,{hint:t?[`List tasks: coder task list`,`Start one: coder run "<text>"`]:[`Start one: coder run "<text>"`]})}async function Y(e,t){if(t)return e.tasks.get(t);let[r]=await e.tasks.list({limit:1});if(!r)throw new n(`server`,`No server tasks found.`);return r}function X(e){throw new n(`invalid-option`,`Missing task id.`,{hint:e})}async function Z(e,t){for(;;){let r=await e.tasks.wait(t),i=F(r).find(e=>!e.answered);if(i)throw new n(`approval-pending`,`Approval needed for task ${t}: ${i.reason}`,{taskId:t,approval:i});if(y.includes(r.status))return r}}function pt(e,n){let r=t({server:n.server,workspace:n.organization});return{result:`coder task result ${e} --wait${r}`,steer:`coder task steer ${e} "<follow-up>"${r}`,stop:`coder task stop ${e}${r}`,list:`coder task list${r}`}}function mt(e,t){let n=t?.error?.message||e.error;return{taskId:e.id,status:e.status,finalMessage:t?.finalMessage,...n?{error:n}:{},tokens:t?.tokens??null,model:t?.model??e.model??null}}async function ht(e,t={}){if(t.outputSchema!==void 0&&(!t.outputSchema||typeof t.outputSchema!=`object`||Array.isArray(t.outputSchema)))throw new n(`invalid-option`,`outputSchema must be an object.`);let{cwd:r,api:i}=q(t),a=t.server===void 0;if(i){let n=await i.tasks.create({source:`cli`,prompt:e,...t.cwd&&!a?{cwd:t.cwd}:{},...t.outputSchema?{outputSchema:t.outputSchema}:{},...t.repo?{repo:t.repo}:{},...t.agent?{agent:t.agent}:{},...t.model?{model:t.model}:{},...t.access?{access:t.access}:{},...t.runner?{runner:t.runner}:{},...t.mcp?{mcp:t.mcp.split(`,`).map(e=>e.trim())}:{},...t.connections?{connections:t.connections}:{},...t.name?{name:t.name}:{},...t.appendSystem?{appendSystem:t.appendSystem}:{},...t.addDirs?.length?{addDirs:t.addDirs.map(e=>L.resolve(r,e))}:{}}),o=n.task.id,s=t.addDirs?.length?Ne(n.task.runner):void 0;if(s&&t.onNote?.(s),!t.wait)return{taskId:o,status:n.status,startupCheck:`pending`,commands:pt(o,t)};t.onWaiting?.(o);let c=await Z(i,o);return mt(I(c),P(c))}let o=t.agent?await(await import(`./exec-D9jF2F-H.js`).then(e=>e.i)).agentTaskOptions(r,t.agent,t.mcp,void 0,t.connections,t.access):void 0,s=o?.connected??await he(t.connections,void 0,void 0,t.access);for(let e of s.warnings)t.onNote?.(e);let c=w(r),l=o??O(t.mcp,c.mcp,{},s.mcp),u={prompt:e,outputSchema:t.outputSchema,cwd:r,engine:t.model?void 0:o?.engine,model:t.model??o?.model,effort:t.model?void 0:o?.effort,access:o?.access??t.access,name:t.name,appendSystem:t.appendSystem,...o?{agentPrompt:{developer:o.developer}}:{},wait:t.wait,addDirs:t.addDirs,...t.agent?{agentId:t.agent}:{},mcp:l.mcp,mcpBindings:l.mcpBindings,mcpWarnings:l.warnings,connectionEnv:s.env,connections:s.ids,nativeMcp:l.nativeMcp,...t.onFallback?{onFallback:t.onFallback}:{},...t.onNote?{onNote:t.onNote}:{}},d=Ie(c,D(u,c)),f=await k(u,{config:c,models:d});if(!t.wait){let e=f.taskId;return{taskId:e,status:f.task.status,startupCheck:f.startupCheck,commands:pt(e,t)}}for(;;){let i=f.taskId;t.onWaiting?.(i);let a=await E(r,i),{task:o,result:s}=a,l=s?.error?.message??``;if(o.status===`failed`&&ke(o.access??`auto`,l))throw new n(`read-only-unavailable`,l);let p=Pe(r,a,d);if(p!==void 0){if(p===null)throw new n(`chain-exhausted`,l,{payload:Fe(f.engine,l,o.access??`auto`,t.appendSystem,e)});t.onFallback?.({model:te(o),detail:l,next:te(p)}),f=await k({...u,name:void 0},{config:c,models:d.slice(d.indexOf(p))});continue}return mt(o,s)}}async function gt(e,t={}){let{cwd:r,api:i}=q(t);if(i){let n=await Y(i,e);t.wait&&([`completed`,`failed`,`cancelled`].includes(n.status)||t.onWaiting?.(n.task.id),n=await Z(i,n.task.id));let r=t.tail?await i.tasks.logs(n.task.id):[],a=(t.tail===`all`?r:r.slice(-Number(t.tail))).map(N);return Xe(n,a)}let a=J(r,e);if(t.wait){x.includes(a.status)&&t.onWaiting?.(a.id);let e=await Me(r,a);if(a=e.task,e.reason===`approval`)throw new n(`approval-pending`,`Approval needed for task ${a.id}: ${e.approval.reason}`,{taskId:a.id,approval:e.approval})}let{steps:o,result:s,turns:l}=je(r,a.id,{tail:t.tail,task:a}),u=j(m(r,a.id)),d=x.includes(a.status),p=d?f(r,a):a.updatedAt,h=ie(p),g=d?c(r,a.id,200):[];return{taskId:a.id,status:d&&u.length?`waiting-approval`:a.status,task:a,result:s,steps:o,turns:l,pendingApprovals:u.map(({id:e,reason:t,actions:n})=>({id:e,reason:t,actions:n})),...d?{idleMs:h,lastActivityAt:p??null,stalled:u.length===0&&h>6e5,lastLog:g.at(-1),liveTokens:g.reverse().find(e=>e.kind===`usage`&&String(e.at??``)>=(a.resumedAt??``))?.tokens??null}:{}}}function _t(e,t,n,r=Ye(e.prompt)){let i=x.includes(e.status);return{taskId:e.id,status:i&&t?`waiting-approval`:e.status,pendingApprovals:t,engine:e.engine??null,model:e.model??null,effort:e.effort??null,name:e.name??null,cwd:e.cwd??null,prompt:String(r??``).replace(/\s+/g,` `).trim().slice(0,80),updatedAt:e.updatedAt,archived:e.archived??!1,flowRunId:e.flowRunId??null,idleMs:i?ie(n??void 0):null}}async function vt(e={}){let{cwd:t,api:r}=q(e),i=e.limit??50;if(r){let t=[],n=e.cursor??``,a;do{let o=await r.tasks.list({cursor:n,limit:i===`all`?200:Math.min(200,i-t.length),status:e.running?`active`:void 0,archived:e.archived});for(let n of o.items)(!e.stopped||y.includes(n.status))&&t.push(_t(I(n),F(n).filter(e=>!e.answered).length,Ze(n.lastActivityAt??n.updatedAt),Ye(n.turns?.[0]?.prompt??n.task.prompt,n.task.event?.text)));a=o.next,n=a??``}while(a&&(i===`all`||t.length<i));return{items:Object.assign(t,{archived:0}),...a?{next:a}:{}}}let{tasks:o}=ut(t,{...e,limit:`all`,dir:e.dir??e.cwd}),s=o.map(e=>_t(e,x.includes(e.status)?j(m(t,e.id)).length:0,x.includes(e.status)?f(t,e):null)),c=0;if(e.cursor){let t;try{if(t=ye(e.cursor),typeof t!=`string`)throw Error()}catch{throw new n(`invalid-option`,`Invalid task list cursor.`)}let r=s.findIndex(e=>e.taskId===t);if(r<0)throw new n(`invalid-option`,`Task list cursor is no longer available; start a new list.`);c=r+1}let l=s.slice(c,i===`all`?void 0:c+i),u=!s.length&&!e.archived?a(t,{migrate:!1}).length:0;return{items:Object.assign(l,{archived:u}),...c+l.length<s.length?{next:ve(l.at(-1).taskId)}:{}}}async function*yt(e,t){let r=-1;for(;;){let i=await e.tasks.stream(t,r);if(!i.ok||!i.body){let r=await e.tasks.get(t);if(y.includes(r.status))return;if(i.status===401)continue;throw new n(`server`,`The task stream answered ${i.status}.`)}let a=!1;for await(let e of be(i.body))if(e.event===`log`){let t=JSON.parse(e.data);r=t.seq,yield N(t)}else e.event===`end`&&(a=!0);if(a)return}}async function*bt(e){yield*await e}async function Q(e,t={}){let{cwd:n,api:r}=q(t);if(r){let n=I(await Y(r,e));return{task:n,events:t.from===void 0?yt(r,n.id):bt(r.tasks.logs(n.id,t.from-1).then(e=>e.map(N))),async final(){let e=await r.tasks.get(n.id),t=I(e);return{taskId:n.id,status:t.status,result:P(e),task:t}}}}let i=J(n,e);return{task:i,events:t.from===void 0?dt(n,i.id,{tail:t.tail}):bt(c(n,i.id,1/0).slice(t.from)),async final(){let e=u(n,p(n,i.id)??i),t=ne(L.join(m(n,i.id),`result.json`));return{taskId:i.id,status:e.status,result:t,task:e}}}}async function xt(e,t,n={}){let{cwd:r,api:i}=q(n);if(i){let r=await i.tasks.steer(e,t,{...n.model?{model:n.model}:{},...n.access?{access:n.access}:{}}),a=r.steered??(r.task?`resumed`:`live`);if(!n.wait||a===`queued`)return{taskId:e,steered:a};let o=await Z(i,e);return{taskId:e,steered:a,status:I(o).status,finalMessage:P(o)?.finalMessage??null}}let a=await B(r,J(r,e),t,{model:n.model,access:n.access});if(!n.wait||a.steered===`queued`)return a;let o=p(r,a.taskId),s=o?(await E(r,o.id)).task:null,c=ne(L.join(m(r,a.taskId),`result.json`));return{...a,status:s?.status??null,finalMessage:c?.finalMessage??null}}async function St(e,t,r,i){let a=(await e.tasks.get(t)).answer?.length??0,o=new AbortController,s=await e.tasks.events([t],void 0,o.signal);try{let c=(await e.tasks.ask(t,r,i?{model:i}:{})).answer,l=!1,u;for(;c===void 0&&!l;){if(!s.ok||!s.body)throw new n(`server`,`The task events stream answered ${s.status}.`);for await(let e of be(s.body)){if(u=e.id??u,e.event!==`task`)continue;let n=JSON.parse(e.data);if(n.id===t&&((n.answer?.length??0)>a?c=n.answer[a]:l=!!n.deleted||y.includes(n.status),c!==void 0||l))break}c===void 0&&!l&&(s=await e.tasks.events([t],u,o.signal))}let d=typeof c==`string`?c:``;return{taskId:t,answer:d||null,...c===void 0?{error:`The task ended before it answered.`}:{},ok:!!d}}finally{o.abort()}}async function Ct(e,t,n={}){let{cwd:r,api:i}=q(n);if(i)return n.onAsking?.(e),St(i,e,t,n.model);let a=J(r,e);n.onAsking?.(a.id);let o=await V(r,a,t,{model:n.model});return{taskId:a.id,answer:o.finalMessage||null,...o.error?{error:o.error.message}:{},ok:o.status===0}}const wt=(e,t)=>({taskId:e,id:t.id,reason:t.reason,actions:t.actions,createdAt:t.createdAt,answered:t.response?.decision??null,deniedReason:t.response?.decision===`decline`?t.response.reason??null:null});async function Tt(e,t={}){let{cwd:n,api:r}=q(t);if(r)return(e?[await r.tasks.get(e)]:await r.tasks.list({limit:200})).flatMap(n=>F(n).filter(n=>t.denied?n.answered===`decline`:e||!n.answered).map(e=>({taskId:n.task.id,...e})));let i=t.denied?M:j;if(!e)return H(n,i,`all`).map(({taskId:e,...t})=>wt(e,t));let a=J(n,e);return(t.denied?M:A)(m(n,a.id)).map(e=>wt(a.id,e))}async function $(e,t,r={}){let{cwd:i,api:a}=q(r),o=r.deny?`decline`:`accept`;if(a){if(!e||!t)throw new n(`invalid-option`,`Server approvals need a task id and approval id.`,{hint:`Usage: coder task approve <task-id> <approval-id> --server <url>`});return await a.tasks.approve(e,t,o,r.reason?{reason:r.reason}:{}),{taskId:e,approvalId:t,decision:o}}if(e&&!t&&e.startsWith(`apr-`)&&(t=e,e=H(i,A,`all`).find(e=>e.id===t)?.taskId,!e))throw new n(`invalid-option`,`No approval "${t}".`,{hint:`List them: coder task approvals`});if(!e||!t)throw new n(`invalid-option`,`Missing approval id.`,{hint:[`List them: coder task approvals`,`Usage: coder task approve [task-id] <approval-id> [--deny] [--reason <why>]`]});let s=J(i,e);return await U(i,s,t,o,{reason:r.reason}),{taskId:s.id,approvalId:t,decision:o}}async function Et(e,t={}){let{cwd:n,api:r}=q(t);if(r){let t=e??(await Y(r)).task.id;return await r.tasks.cancel(t),{taskId:t,status:`cancelled`,interrupt:`stop requested on the server`}}let i=J(n,e),{interrupt:a}=await G(n,i);return{taskId:i.id,status:`cancelled`,interrupt:a}}async function Dt(e,t={}){let{cwd:n,api:r}=q(t);if(r){let n=t.allStopped?(await r.tasks.list({limit:200})).filter(e=>y.includes(e.status)).map(e=>e.task.id):[];return t.allStopped?(await Promise.all(n.map(e=>r.tasks.archive(e))),{archived:n,count:n.length}):(e||X([`Archive one: coder task archive <task-id> --server`]),await r.tasks.archive(e),{taskId:e,archived:!0})}if(t.allStopped){let e=C(n).filter(e=>y.includes(e.status));for(let t of e)_(n,t);return{archived:e.map(e=>e.id),count:e.length}}e||X([`Archive one: coder task archive <task-id>`,`Archive all stopped: coder task archive --all-stopped`]);let i=J(n,e);return _(n,i),{taskId:i.id,archived:!0}}async function Ot(e,t={}){let{cwd:r,api:i}=q(t);if(i){let n=t.allArchived?(await i.tasks.list({limit:200,archived:!0})).map(e=>e.task.id):[];return t.allArchived?(await Promise.all(n.map(e=>i.tasks.delete(e))),{deleted:n,count:n.length}):(e||X([`Delete one: coder task delete <task-id> --server`]),await i.tasks.delete(e),{taskId:e,deleted:!0})}if(t.allArchived){let e=a(r).filter(e=>K(r,e)).map(e=>e.id);return{deleted:e,count:e.length}}e||X([`Delete one: coder task delete <task-id>`,`Delete all archived: coder task delete --all-archived`]);let o=J(r,e);if(o.status===`running`)throw new n(`invalid-option`,`Task ${o.id} is still running.`,{hint:`Stop it first: coder task stop ${o.id}`});return K(r,o),{taskId:o.id,deleted:!0}}async function*kt(e,t={}){yield*(await Q(e,t)).events}export{Et as _,Dt as a,Q as b,K as c,W as d,Ot as f,B as g,xt as h,$ as i,et as l,ht as m,U as n,Ct as o,gt as p,Tt as r,V as s,$e as t,vt as u,G as v,kt as y};
@@ -1 +1 @@
1
- import{Ea as e}from"./args-CJsHYWbt.js";import{t}from"./errors-DK_trCff.js";import{c as n,s as r}from"./load-PqaDHiHX.js";import{t as i}from"./integrations-BVmsk64f.js";import{c as a,f as o,m as s}from"./definition-4on4SG5J.js";import{i as c,n as l}from"./remote-BbXx6S9P.js";import"./dispatch-BaW2X6Sc.js";import{l as u,r as d}from"./exec-CAaYFJD1.js";import f from"node:path";import p from"node:process";import m from"node:fs/promises";var h=e({agents:()=>_});const g=e=>e.cwd?f.resolve(e.cwd):p.cwd(),_={list:(e={})=>e.server===void 0?n(g(e),i):l(e).agents.list(),async show(e,r={}){if(!e)throw new t(`invalid-option`,`Missing agent id.`,{hint:`Usage: coder agent show <id>`});if(r.server===void 0){let a=(await n(g(r),i)).find(t=>t.id===e);if(!a)throw new t(`invalid-option`,`No agent named "${e}".`,{hint:`List agents: coder agent list`});return a}let a=l(r),o=await a.agents.get(e,{installations:!0}),s=await a.agents.version(e,o.currentVersion);return{...o,definition:s.definition}},async settings(e,n){if(!e)throw new t(`invalid-option`,`Missing agent id.`,{hint:`Usage: coder agent settings <id> --model <name[/effort]|engine/model[/effort]>`});let r=Object.fromEntries([`model`,`access`].flatMap(e=>n[e]?[[e,n[e]]]:[]));n.connections!==void 0&&(r.connections=n.connections);let i=Object.entries(n.events??{}),a=n.matches??{},c=n.instructions!==void 0||Object.keys(a).length;if(!Object.keys(r).length&&!i.length&&!c)throw new t(`invalid-option`,`Give --model, --access, --connections, --events, --instructions or --match.`);let u=l(n),d=await u.agents.get(e);i.length&&(r.integrations={...d.settings?.integrations,...Object.fromEntries(i.map(([e,t])=>[e,{allowedEvents:t}]))});let f=[],p=e=>e.catch(e=>{if(!(e instanceof t)||e.code!==`approval-pending`)throw e;f.push(e)});if(c){let t=await u.agents.version(e,d.currentVersion);await p(u.agents.put(e,{definition:s(t.definition,a),systemPrompt:n.instructions??t.systemPrompt,...t.files?{files:t.files}:{}}))}let m=o(d.settings??{}),h=Object.keys(r).length?await p(u.agents.settings(e,{...m,...r})):void 0;if(f.length)throw new t(`approval-pending`,f.map(e=>e.message).join(` `),{approval:f[0].approval});return h??u.agents.get(e)},init:r,push:(e,t={})=>c(l(t),g(t),e),async run(e,r,o={}){if(o.wait&&o.server===void 0)throw new t(`invalid-option`,`--wait needs --server.`,{hint:`Offline runs print their reply as they finish`});if(!e||!r)throw new t(`invalid-option`,`Missing agent id or event file.`,{hint:`Usage: coder agent run <agent> <event.json>`});let s=g(o),c=typeof r==`string`?JSON.parse(await m.readFile(f.resolve(s,r),`utf8`)):r;if(o.server!==void 0){let t=l(o),n=await t.tasks.create({agent:e,event:c});if(!o.wait||!n.tasks.length)return n;let r=[];for(let e of n.tasks){let n=await t.tasks.wait(e,{onLog:o.onLog});r.push(n),o.onDone?.(n)}return r}let p=await n(s,i),h=p.find(t=>t.id===e);if(!h)throw new t(`invalid-option`,`No agent named "${e}".`);if(!a(c,p).some(t=>t.agent.id===e))throw new t(`invalid-option`,`Agent "${e}" does not match event "${c.type}".`);return d({cwd:s,agent:e,flow:`default`,task:{...u(h,c),tools:{}},post:!1})},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 l(e).usage({since:e.since,by:n});let[{localUsage:r},{usageSummary:i}]=await Promise.all([import(`./apps-B6mUToTa.js`).then(e=>e.on),import(`./apps-B6mUToTa.js`).then(e=>e.bt)]);return i(r(g(e)).map(([,e])=>e),e.since??0,n)},integrations:{list:()=>Object.entries(i).map(([e,t])=>({id:e,description:t.description,events:Object.keys(t.events),tools:t.tools.presets.auto})),show(e){if(!e)throw new t(`invalid-option`,`Missing integration id.`,{hint:`Usage: coder agent integrations show <id>`});let n=i[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{_ as n,h as t};
1
+ import{Ea as e}from"./args-CJsHYWbt.js";import{t}from"./errors-DK_trCff.js";import{c as n,s as r}from"./load-BtIDghgd.js";import{t as i}from"./integrations-DSZSa8Rc.js";import{c as a,f as o,m as s}from"./definition-D0OpQfGX.js";import{i as c,n as l}from"./remote-CY-qYX2C.js";import"./dispatch-BkoIU4GU.js";import{l as u,r as d}from"./exec-D9jF2F-H.js";import f from"node:path";import p from"node:process";import m from"node:fs/promises";var h=e({agents:()=>_});const g=e=>e.cwd?f.resolve(e.cwd):p.cwd(),_={list:(e={})=>e.server===void 0?n(g(e),i):l(e).agents.list(),async show(e,r={}){if(!e)throw new t(`invalid-option`,`Missing agent id.`,{hint:`Usage: coder agent show <id>`});if(r.server===void 0){let a=(await n(g(r),i)).find(t=>t.id===e);if(!a)throw new t(`invalid-option`,`No agent named "${e}".`,{hint:`List agents: coder agent list`});return a}let a=l(r),o=await a.agents.get(e,{installations:!0}),s=await a.agents.version(e,o.currentVersion);return{...o,definition:s.definition}},async settings(e,n){if(!e)throw new t(`invalid-option`,`Missing agent id.`,{hint:`Usage: coder agent settings <id> --model <name[/effort]|engine/model[/effort]>`});let r=Object.fromEntries([`model`,`access`].flatMap(e=>n[e]?[[e,n[e]]]:[]));n.connections!==void 0&&(r.connections=n.connections);let i=Object.entries(n.events??{}),a=n.matches??{},c=n.instructions!==void 0||Object.keys(a).length;if(!Object.keys(r).length&&!i.length&&!c)throw new t(`invalid-option`,`Give --model, --access, --connections, --events, --instructions or --match.`);let u=l(n),d=await u.agents.get(e);i.length&&(r.integrations={...d.settings?.integrations,...Object.fromEntries(i.map(([e,t])=>[e,{allowedEvents:t}]))});let f=[],p=e=>e.catch(e=>{if(!(e instanceof t)||e.code!==`approval-pending`)throw e;f.push(e)});if(c){let t=await u.agents.version(e,d.currentVersion);await p(u.agents.put(e,{definition:s(t.definition,a),systemPrompt:n.instructions??t.systemPrompt,...t.files?{files:t.files}:{}}))}let m=o(d.settings??{}),h=Object.keys(r).length?await p(u.agents.settings(e,{...m,...r})):void 0;if(f.length)throw new t(`approval-pending`,f.map(e=>e.message).join(` `),{approval:f[0].approval});return h??u.agents.get(e)},init:r,push:(e,t={})=>c(l(t),g(t),e),async run(e,r,o={}){if(o.wait&&o.server===void 0)throw new t(`invalid-option`,`--wait needs --server.`,{hint:`Offline runs print their reply as they finish`});if(!e||!r)throw new t(`invalid-option`,`Missing agent id or event file.`,{hint:`Usage: coder agent run <agent> <event.json>`});let s=g(o),c=typeof r==`string`?JSON.parse(await m.readFile(f.resolve(s,r),`utf8`)):r;if(o.server!==void 0){let t=l(o),n=await t.tasks.create({agent:e,event:c});if(!o.wait||!n.tasks.length)return n;let r=[];for(let e of n.tasks){let n=await t.tasks.wait(e,{onLog:o.onLog});r.push(n),o.onDone?.(n)}return r}let p=await n(s,i),h=p.find(t=>t.id===e);if(!h)throw new t(`invalid-option`,`No agent named "${e}".`);if(!a(c,p).some(t=>t.agent.id===e))throw new t(`invalid-option`,`Agent "${e}" does not match event "${c.type}".`);return d({cwd:s,agent:e,flow:`default`,task:{...u(h,c),tools:{}},post:!1})},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 l(e).usage({since:e.since,by:n});let[{localUsage:r},{usageSummary:i}]=await Promise.all([import(`./apps-BORri-28.js`).then(e=>e.an),import(`./apps-BORri-28.js`).then(e=>e.bt)]);return i(r(g(e)).map(([,e])=>e),e.since??0,n)},integrations:{list:()=>Object.entries(i).map(([e,t])=>({id:e,description:t.description,events:Object.keys(t.events),tools:t.tools.presets.auto})),show(e){if(!e)throw new t(`invalid-option`,`Missing integration id.`,{hint:`Usage: coder agent integrations show <id>`});let n=i[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{_ as n,h as t};
@@ -1,4 +1,4 @@
1
- import{Ca as e,Sa as t,_a as n,ma as r,wa as i,ya as a}from"./args-CJsHYWbt.js";import{B as o,vt as s}from"./state-Br-Fuaxg.js";import{b as c,n as l}from"./config-D_RuO6gX.js";import{g as u,o as d}from"./connections-Cswv7r8Z.js";import f from"node:path";import p from"node:process";import{fileURLToPath as m}from"node:url";import h from"node:fs";import{spawn as g,spawnSync as _}from"node:child_process";import v from"node:net";import y from"node:os";import ee from"node:readline";import b,{createHash as te}from"node:crypto";import{channel as ne}from"node:diagnostics_channel";import re from"node:http";const x={false:`broker.json`,true:`broker-network.json`};function S(e=`coder-`){return h.mkdtempSync(f.join(y.tmpdir(),e))}function C(e){let t=j(e);return v.createConnection({path:t.path})}async function w(e,t=2e3){let n=j(e);return!!await s(f.dirname(n.path)).until(()=>new Promise(t=>{let n=C(e);n.on(`connect`,()=>{n.end(),t(!0)}),n.on(`error`,()=>t(void 0))}),t,void 0,n.kind===`pipe`?250:1e3)}function ie({scriptPath:e,cwd:t,endpoint:n,pidFile:r,logFile:i,networkAccess:a=!1,env:o=p.env}){let s=h.openSync(i,`a`),c=g(p.execPath,[e,`serve`,`--endpoint`,n,`--cwd`,t,`--pid-file`,r,`--network-access`,String(a)],{cwd:t,env:{...u(o),...o.CODER_CONNECTION_ENV_VALUES?{CODER_CONNECTION_ENV_VALUES:o.CODER_CONNECTION_ENV_VALUES}:{}},detached:!0,stdio:[`ignore`,s,s]});return c.unref(),h.closeSync(s),c}function ae(){let e=[new URL(`./lib/broker.js`,import.meta.url),new URL(`./main.js`,import.meta.url)];for(let t of e){let e=m(t);if(h.existsSync(e))return e}throw Error("Coder broker script not found next to the runtime. Rebuild with `bun run build`.")}function T(e,t=!1,n){let r=x[t?`true`:`false`];return f.join(o(e),n?r.replace(`.json`,`-${n}.json`):r)}function E(e,t=!1,n){let r=T(e,t,n);if(!h.existsSync(r))return null;try{let e=JSON.parse(h.readFileSync(r,`utf8`));return(e.networkAccess??!1)===t?e:null}catch{return null}}function D(e){let t=o(e),n;try{n=h.readdirSync(t)}catch{return[]}return n.flatMap(e=>{if(!/^broker(?:-network)?(?:-[a-f0-9]{64})?\.json$/.test(e))return[];try{let n=JSON.parse(h.readFileSync(f.join(t,e),`utf8`));return typeof n.endpoint==`string`?[n]:[]}catch{return[]}})}function O(e,t,n=t.networkAccess??!1,r){let i=o(e);h.mkdirSync(i,{recursive:!0}),h.writeFileSync(T(e,n,r),`${JSON.stringify(t,null,2)}\n`,`utf8`)}function k(e,t=!1,n){let r=T(e,t,n);h.existsSync(r)&&h.unlinkSync(r)}async function oe(e){if(!e)return!1;try{return await w(e,150)}catch{return!1}}async function se(e,t={}){let n=t.scriptPath??ae(),i=r(),a=t.networkAccess??!1,o=E(e,a,t.connectionKey),s=o?.version===i&&o?.scriptPath===n&&(o?.networkAccess??!1)===a;if(o&&s&&await oe(o.endpoint))return o;o&&(A({endpoint:o.endpoint??null,pidFile:o.pidFile??null,logFile:o.logFile??null,sessionDir:o.sessionDir??null,pid:o.pid??null,killProcess:t.killProcess??null}),k(e,a,t.connectionKey));let c=S(),l=le(c),u=f.join(c,`broker.pid`),d=f.join(c,`broker.log`),m=ie({scriptPath:n,cwd:e,endpoint:l,pidFile:u,logFile:d,networkAccess:a,env:t.env??p.env});if(!await w(l,t.timeoutMs??2e3))return A({endpoint:l,pidFile:u,logFile:d,sessionDir:c,pid:m.pid??null,killProcess:t.killProcess??null}),null;let h={endpoint:l,pidFile:u,logFile:d,sessionDir:c,pid:m.pid??null,networkAccess:a,version:i,scriptPath:n};return O(e,h,a,t.connectionKey),h}function A({endpoint:e=null,pidFile:t,logFile:n,sessionDir:r=null,pid:i=null,killProcess:a=null}){if(Number.isFinite(i)&&a)try{a(i)}catch{}if(t&&h.existsSync(t)&&h.unlinkSync(t),n&&h.existsSync(n)&&h.unlinkSync(n),e)try{let t=j(e);t.kind===`unix`&&h.existsSync(t.path)&&h.unlinkSync(t.path)}catch{}let o=r??(t?f.dirname(t):n?f.dirname(n):null);if(o&&h.existsSync(o))try{h.rmdirSync(o)}catch{}}function ce(e){return String(e??``).replace(/[^A-Za-z0-9._-]/g,`-`).replace(/^-+|-+$/g,``)}function le(e){return p.platform===`win32`?`pipe:\\\\.\\pipe\\${ce(`${f.win32.basename(e)}-codex-app-server`)}`:`unix:${f.join(e,`broker.sock`)}`}function j(e){if(typeof e!=`string`||e.length===0)throw Error(`Missing broker endpoint.`);if(e.startsWith(`pipe:`)){let t=e.slice(5);if(!t)throw Error(`Broker pipe endpoint is missing its path.`);return{kind:`pipe`,path:t}}if(e.startsWith(`unix:`)){let t=e.slice(5);if(!t)throw Error(`Broker Unix socket endpoint is missing its path.`);return{kind:`unix`,path:t}}throw Error(`Unsupported broker endpoint: ${e}`)}function M(e,t){let n=ne(`coder.timing`);n.hasSubscribers&&n.publish({at:Date.now(),pid:p.pid,stage:e,...t})}function N(e,t=[],n={}){let r=_(e,t,{cwd:n.cwd,env:n.env,encoding:`utf8`,input:n.input,maxBuffer:n.maxBuffer,stdio:n.stdio??`pipe`,shell:p.platform===`win32`?p.env.SHELL||!0:!1,windowsHide:!0});return{command:e,args:t,status:r.status??0,signal:r.signal??null,stdout:r.stdout??``,stderr:r.stderr??``,error:r.error??null}}function P(e,t=[`--version`],n={}){let r=N(e,t,n);return r.error&&r.error.code===`ENOENT`?{available:!1,detail:`not found`}:r.error?{available:!1,detail:r.error.message}:r.status===0?{available:!0,detail:r.stdout.trim()||r.stderr.trim()||`ok`}:{available:!1,detail:r.stderr.trim()||r.stdout.trim()||`exit ${r.status}`}}function F(e){return new Promise(t=>{let n=g(e,p.argv.slice(1),{env:p.env,shell:!1,stdio:`inherit`}),r=()=>n.kill(`SIGINT`),i=()=>n.kill(`SIGTERM`);p.once(`SIGINT`,r),p.once(`SIGTERM`,i);let a=e=>{p.off(`SIGINT`,r),p.off(`SIGTERM`,i),t(e)};n.once(`error`,e=>a({error:e,status:null,signal:null})),n.once(`close`,(e,t)=>a({status:e,signal:t}))})}function I(r,o,s,c){let l=a(i(e,{children:[t(`instructions`,{children:[`Answer one question about a Coder task, read-only.`,`You are not the task: never continue, redo or fix its work. The task never sees this question or your answer.`,`Grep or read the files selectively; events can be large.`,`Answer directly and concisely.`].join(`
1
+ import{Ca as e,Sa as t,_a as n,ma as r,wa as i,ya as a}from"./args-CJsHYWbt.js";import{B as o,vt as s}from"./state-CxAUec80.js";import{b as c,n as l}from"./config-_32PHl9g.js";import{g as u,o as d}from"./connections-B90TemYf.js";import f from"node:path";import p from"node:process";import{fileURLToPath as m}from"node:url";import h from"node:fs";import{spawn as g,spawnSync as _}from"node:child_process";import v from"node:net";import y from"node:os";import ee from"node:readline";import b,{createHash as te}from"node:crypto";import{channel as ne}from"node:diagnostics_channel";import re from"node:http";const x={false:`broker.json`,true:`broker-network.json`};function S(e=`coder-`){return h.mkdtempSync(f.join(y.tmpdir(),e))}function C(e){let t=j(e);return v.createConnection({path:t.path})}async function w(e,t=2e3){let n=j(e);return!!await s(f.dirname(n.path)).until(()=>new Promise(t=>{let n=C(e);n.on(`connect`,()=>{n.end(),t(!0)}),n.on(`error`,()=>t(void 0))}),t,void 0,n.kind===`pipe`?250:1e3)}function ie({scriptPath:e,cwd:t,endpoint:n,pidFile:r,logFile:i,networkAccess:a=!1,env:o=p.env}){let s=h.openSync(i,`a`),c=g(p.execPath,[e,`serve`,`--endpoint`,n,`--cwd`,t,`--pid-file`,r,`--network-access`,String(a)],{cwd:t,env:{...u(o),...o.CODER_CONNECTION_ENV_VALUES?{CODER_CONNECTION_ENV_VALUES:o.CODER_CONNECTION_ENV_VALUES}:{}},detached:!0,stdio:[`ignore`,s,s]});return c.unref(),h.closeSync(s),c}function ae(){let e=[new URL(`./lib/broker.js`,import.meta.url),new URL(`./main.js`,import.meta.url)];for(let t of e){let e=m(t);if(h.existsSync(e))return e}throw Error("Coder broker script not found next to the runtime. Rebuild with `bun run build`.")}function T(e,t=!1,n){let r=x[t?`true`:`false`];return f.join(o(e),n?r.replace(`.json`,`-${n}.json`):r)}function E(e,t=!1,n){let r=T(e,t,n);if(!h.existsSync(r))return null;try{let e=JSON.parse(h.readFileSync(r,`utf8`));return(e.networkAccess??!1)===t?e:null}catch{return null}}function D(e){let t=o(e),n;try{n=h.readdirSync(t)}catch{return[]}return n.flatMap(e=>{if(!/^broker(?:-network)?(?:-[a-f0-9]{64})?\.json$/.test(e))return[];try{let n=JSON.parse(h.readFileSync(f.join(t,e),`utf8`));return typeof n.endpoint==`string`?[n]:[]}catch{return[]}})}function O(e,t,n=t.networkAccess??!1,r){let i=o(e);h.mkdirSync(i,{recursive:!0}),h.writeFileSync(T(e,n,r),`${JSON.stringify(t,null,2)}\n`,`utf8`)}function k(e,t=!1,n){let r=T(e,t,n);h.existsSync(r)&&h.unlinkSync(r)}async function oe(e){if(!e)return!1;try{return await w(e,150)}catch{return!1}}async function se(e,t={}){let n=t.scriptPath??ae(),i=r(),a=t.networkAccess??!1,o=E(e,a,t.connectionKey),s=o?.version===i&&o?.scriptPath===n&&(o?.networkAccess??!1)===a;if(o&&s&&await oe(o.endpoint))return o;o&&(A({endpoint:o.endpoint??null,pidFile:o.pidFile??null,logFile:o.logFile??null,sessionDir:o.sessionDir??null,pid:o.pid??null,killProcess:t.killProcess??null}),k(e,a,t.connectionKey));let c=S(),l=le(c),u=f.join(c,`broker.pid`),d=f.join(c,`broker.log`),m=ie({scriptPath:n,cwd:e,endpoint:l,pidFile:u,logFile:d,networkAccess:a,env:t.env??p.env});if(!await w(l,t.timeoutMs??2e3))return A({endpoint:l,pidFile:u,logFile:d,sessionDir:c,pid:m.pid??null,killProcess:t.killProcess??null}),null;let h={endpoint:l,pidFile:u,logFile:d,sessionDir:c,pid:m.pid??null,networkAccess:a,version:i,scriptPath:n};return O(e,h,a,t.connectionKey),h}function A({endpoint:e=null,pidFile:t,logFile:n,sessionDir:r=null,pid:i=null,killProcess:a=null}){if(Number.isFinite(i)&&a)try{a(i)}catch{}if(t&&h.existsSync(t)&&h.unlinkSync(t),n&&h.existsSync(n)&&h.unlinkSync(n),e)try{let t=j(e);t.kind===`unix`&&h.existsSync(t.path)&&h.unlinkSync(t.path)}catch{}let o=r??(t?f.dirname(t):n?f.dirname(n):null);if(o&&h.existsSync(o))try{h.rmdirSync(o)}catch{}}function ce(e){return String(e??``).replace(/[^A-Za-z0-9._-]/g,`-`).replace(/^-+|-+$/g,``)}function le(e){return p.platform===`win32`?`pipe:\\\\.\\pipe\\${ce(`${f.win32.basename(e)}-codex-app-server`)}`:`unix:${f.join(e,`broker.sock`)}`}function j(e){if(typeof e!=`string`||e.length===0)throw Error(`Missing broker endpoint.`);if(e.startsWith(`pipe:`)){let t=e.slice(5);if(!t)throw Error(`Broker pipe endpoint is missing its path.`);return{kind:`pipe`,path:t}}if(e.startsWith(`unix:`)){let t=e.slice(5);if(!t)throw Error(`Broker Unix socket endpoint is missing its path.`);return{kind:`unix`,path:t}}throw Error(`Unsupported broker endpoint: ${e}`)}function M(e,t){let n=ne(`coder.timing`);n.hasSubscribers&&n.publish({at:Date.now(),pid:p.pid,stage:e,...t})}function N(e,t=[],n={}){let r=_(e,t,{cwd:n.cwd,env:n.env,encoding:`utf8`,input:n.input,maxBuffer:n.maxBuffer,stdio:n.stdio??`pipe`,shell:p.platform===`win32`?p.env.SHELL||!0:!1,windowsHide:!0});return{command:e,args:t,status:r.status??0,signal:r.signal??null,stdout:r.stdout??``,stderr:r.stderr??``,error:r.error??null}}function P(e,t=[`--version`],n={}){let r=N(e,t,n);return r.error&&r.error.code===`ENOENT`?{available:!1,detail:`not found`}:r.error?{available:!1,detail:r.error.message}:r.status===0?{available:!0,detail:r.stdout.trim()||r.stderr.trim()||`ok`}:{available:!1,detail:r.stderr.trim()||r.stdout.trim()||`exit ${r.status}`}}function F(e){return new Promise(t=>{let n=g(e,p.argv.slice(1),{env:p.env,shell:!1,stdio:`inherit`}),r=()=>n.kill(`SIGINT`),i=()=>n.kill(`SIGTERM`);p.once(`SIGINT`,r),p.once(`SIGTERM`,i);let a=e=>{p.off(`SIGINT`,r),p.off(`SIGTERM`,i),t(e)};n.once(`error`,e=>a({error:e,status:null,signal:null})),n.once(`close`,(e,t)=>a({status:e,signal:t}))})}function I(r,o,s,c){let l=a(i(e,{children:[t(`instructions`,{children:[`Answer one question about a Coder task, read-only.`,`You are not the task: never continue, redo or fix its work. The task never sees this question or your answer.`,`Grep or read the files selectively; events can be large.`,`Answer directly and concisely.`].join(`
2
2
  `)}),t(`task`,{children:t(n,{value:{id:r.id,name:r.name??void 0,status:r.status,engine:r.engine,model:r.model??void 0,effort:r.effort??void 0,workspace:r.cwd??void 0,created:r.createdAt??void 0,finished:r.completedAt??void 0}})}),t(`task-prompt`,{children:t(n,{children:r.prompt??`(unknown)`})}),t(`files`,{children:[`progress log, one JSON event per line: ${o.log}`,`final result: ${o.result}`,`worker output: ${o.worker}`,r.cwd&&`workspace with the task's code and changes: ${r.cwd}`].filter(Boolean).join(`
3
3
  `)}),t(`question`,{children:t(n,{children:s})})]}));return c?`${l}\n\nCoder command ${c}`:l}function L(e){return e?`Reply with only one JSON object matching this JSON Schema, without prose or markdown fences:\n${JSON.stringify(e)}`:`Reply with only one JSON object matching the requested shape, without prose or markdown fences.`}const R=e=>`Your last reply did not match the required JSON: ${e}\nReply again with only the JSON object.`,z=e=>e.namespace?`${e.namespace}__${e.name}`:e.name;function B(e){let t=new Map;for(let n of Array.isArray(e.tools)?e.tools:[])if(n?.type===`function`&&t.set(n.name,{name:n.name,tool:n}),n?.type===`namespace`&&Array.isArray(n.tools))for(let e of n.tools)e?.type===`function`&&t.set(z({name:e.name,namespace:n.name}),{name:e.name,namespace:n.name,tool:e});return t}function V(e){let t=[];typeof e.instructions==`string`&&e.instructions&&t.push({role:`system`,content:e.instructions});let n=Array.isArray(e.input)?e.input:[];for(let e of n)switch(e?.type){case`message`:{let n=Array.isArray(e.content)?e.content.map(e=>e?.text??``).join(``):String(e.content??``);t.push({role:e.role===`developer`?`system`:e.role,content:n});break}case`function_call`:{let n={id:e.call_id,type:`function`,function:{name:z(e),arguments:e.arguments??`{}`}},r=t.at(-1);r?.role===`assistant`&&r.tool_calls?r.tool_calls.push(n):t.push({role:`assistant`,content:null,tool_calls:[n]});break}case`function_call_output`:{let n=e.output;t.push({role:`tool`,tool_call_id:e.call_id,content:typeof n==`string`?n:JSON.stringify(n??``)});break}}return t}function H(e){let t=[...B(e)].map(([e,{tool:t}])=>({type:`function`,function:{name:e,description:t.description??``,parameters:t.parameters??{type:`object`,properties:{}}}})),n=e.text?.format;return{model:e.model,messages:V(e),...t.length?{tools:t,tool_choice:e.tool_choice??`auto`}:{},...typeof e.parallel_tool_calls==`boolean`?{parallel_tool_calls:e.parallel_tool_calls}:{},...e.reasoning?.effort?{reasoning:{effort:e.reasoning.effort}}:{},...n?.type===`json_schema`?{response_format:{type:`json_schema`,json_schema:{name:n.name,schema:n.schema,strict:n.strict??!1}}}:{},stream:!0,stream_options:{include_usage:!0}}}var U=class{send;model;functions;responseId=`resp_bridge_${b.randomUUID()}`;text=``;textOpen=!1;toolCalls=new Map;usage=null;buffer=``;constructor(e,t,n){this.model=e,this.functions=t,this.send=n,this.send({type:`response.created`,response:{id:this.responseId,object:`response`,status:`in_progress`,model:e,output:[]}})}push(e){this.buffer+=e;let t=this.buffer.split(`
4
4
  `);this.buffer=t.pop()??``;for(let e of t){let t=e.trim();if(!t.startsWith(`data:`))continue;let n=t.slice(5).trim();if(!n||n===`[DONE]`)continue;let r;try{r=JSON.parse(n)}catch{continue}r.usage&&(this.usage=r.usage);let i=r.choices?.[0]?.delta;if(i){typeof i.content==`string`&&i.content&&(this.textOpen||(this.textOpen=!0,this.send({type:`response.output_item.added`,output_index:0,item:{type:`message`,id:`msg_bridge_0`,status:`in_progress`,role:`assistant`,content:[]}})),this.text+=i.content,this.send({type:`response.output_text.delta`,item_id:`msg_bridge_0`,output_index:0,content_index:0,delta:i.content}));for(let e of i.tool_calls??[]){let t=this.toolCalls.get(e.index)??{id:``,name:``,args:``};e.id&&(t.id=e.id),e.function?.name&&(t.name+=e.function.name),e.function?.arguments&&(t.args+=e.function.arguments),this.toolCalls.set(e.index,t)}}}}finish(){let e=[];if(this.text){let t={type:`message`,id:`msg_bridge_0`,status:`completed`,role:`assistant`,content:[{type:`output_text`,text:this.text,annotations:[]}]};e.push(t),this.send({type:`response.output_item.done`,output_index:0,item:t})}let t=e.length;for(let n of this.toolCalls.values()){let r=this.functions.get(n.name),i={type:`function_call`,id:`fc_bridge_${t}`,call_id:n.id||`call_bridge_${t}`,name:r?.name??n.name,...r?.namespace?{namespace:r.namespace}:{},arguments:n.args||`{}`,status:`completed`};e.push(i),this.send({type:`response.output_item.done`,output_index:t,item:i}),t+=1}this.send({type:`response.completed`,response:{id:this.responseId,object:`response`,status:`completed`,model:this.model,output:e,usage:{input_tokens:this.usage?.prompt_tokens??0,input_tokens_details:{cached_tokens:this.usage?.prompt_tokens_details?.cached_tokens??0},output_tokens:this.usage?.completion_tokens??0,output_tokens_details:{reasoning_tokens:this.usage?.completion_tokens_details?.reasoning_tokens??0},total_tokens:this.usage?.total_tokens??0}}})}};async function W(){let e=new Map;async function t(t,n,r){let i=t.wireApi===`responses`,a=c(t.baseUrl,i?`responses`:`chat/completions`),o=`${t.wireApi} ${t.baseUrl}`,s=e.get(o)??{resolvedTarget:null,schemaSupported:!0};e.set(o,s);async function l(e){let t=s.resolvedTarget?[s.resolvedTarget]:a,n=null;for(let i of t)if(n=await fetch(i,{method:`POST`,headers:{"content-type":`application/json`,...r?{authorization:r}:{}},body:e}),n.status!==404)return s.resolvedTarget=i,n;return n}let u=n.text?.format,d=i?n:H(n),f=()=>{let e=L(u.schema);if(i){let{format:t,...r}=n.text;return{...n,text:r,input:[...n.input??[],{type:`message`,role:`user`,content:[{type:`input_text`,text:e}]}]}}let{response_format:t,...r}=d;return{...r,messages:[...V(n),{role:`user`,content:e}]}};if(u?.type!==`json_schema`)return l(JSON.stringify(d));if(!s.schemaSupported)return l(JSON.stringify(f()));let p=await l(JSON.stringify(d));if(![400,422,501].includes(p.status))return p;let m=await p.clone().text();return/(invalid.{0,30}schema|schema.{0,30}invalid|unsupported.{0,30}(keyword|constraint)|(keyword|constraint).{0,30}unsupported)/i.test(m)||!/(response_format|json_schema|text[.\s]format)/i.test(m)||!/(not supported|unsupported|unknown parameter|unrecognized|not available)/i.test(m)?p:(s.schemaSupported=!1,await p.body?.cancel(),l(JSON.stringify(f())))}let n=b.randomBytes(16).toString(`hex`),r=re.createServer((e,r)=>{let i=t=>[e.headers[t]].flat()[0],a=i(l.baseUrl),o=i(l.wireApi)===`responses`?`responses`:`chat`;if(e.method!==`POST`||!RegExp(`^/${n}/v1/responses/*$`).test(e.url??``)||!a){r.writeHead(404,{"content-type":`application/json`}),r.end(JSON.stringify({error:{message:`coder chat bridge: only POST /v1/responses with ${l.baseUrl} is supported`}}));return}let s={baseUrl:a,wireApi:o},c=``;e.on(`data`,e=>c+=e),e.on(`end`,async()=>{let n;try{n=JSON.parse(c)}catch{r.writeHead(400,{"content-type":`application/json`}),r.end(JSON.stringify({error:{message:`invalid JSON`}}));return}try{let i=await t(s,n,e.headers.authorization);if(s.wireApi===`responses`){if(r.writeHead(i.status,{"content-type":i.headers.get(`content-type`)??`application/json`,"cache-control":`no-store`}),i.body)for await(let e of i.body)r.write(e);r.end();return}if(!i.ok||!i.body){let e=await i.text().catch(()=>``);r.writeHead(i.status,{"content-type":`application/json`}),r.end(e||JSON.stringify({error:{message:`upstream HTTP ${i.status}`}}));return}r.writeHead(200,{"content-type":`text/event-stream`,"cache-control":`no-store`});let a=new U(n.model,B(n),e=>r.write(`data: ${JSON.stringify(e)}\n\n`)),o=new TextDecoder;for await(let e of i.body)a.push(o.decode(e,{stream:!0}));a.finish(),r.end()}catch(e){let t=e instanceof Error?e.message:String(e);r.writeHead(502,{"content-type":`application/json`}),r.end(JSON.stringify({error:{message:`coder chat bridge: ${t}`}}))}})});await new Promise(e=>r.listen(0,`127.0.0.1`,e));let i=r.address();return{url:`http://127.0.0.1:${typeof i==`object`&&i?i.port:0}/${n}`,close:()=>new Promise(e=>{r.close(()=>e()),r.closeAllConnections?.()})}}const ue=-32001,de=`coder/notice`,fe=`coder/appServerExited`,G=`broker/recycle`;function K(){return{title:`Coder`,name:`coder`,version:r()}}const q={experimentalApi:!0,requestAttestation:!1,optOutNotificationMethods:[`item/agentMessage/delta`,`item/reasoning/summaryTextDelta`,`item/reasoning/summaryPartAdded`,`item/reasoning/textDelta`]};function J(e,t,n){return n===void 0?{code:e,message:t}:{code:e,message:t,data:n}}function Y(e,t){let n=Error(e);return n.data=t,t?.code!==void 0&&(n.rpcCode=t.code),n}var X=class{cwd;options;pending;nextId;stderr;closed;exitError;notificationHandler;serverRequestHandler;noticeHandler;lineBuffer;transport;bridgeUrl;exitPromise;exitResolved;resolveExit;handleServerRequest;constructor(e,t={}){this.cwd=e,this.options=t,this.pending=new Map,this.nextId=1,this.stderr=``,this.closed=!1,this.exitError=null,this.notificationHandler=null,this.serverRequestHandler=null,this.noticeHandler=null,this.lineBuffer=``,this.transport=`unknown`,this.handleServerRequest=e=>this.defaultHandleServerRequest(e),this.exitPromise=new Promise(e=>{this.resolveExit=e})}setNotificationHandler(e){this.notificationHandler=e}setServerRequestHandler(e){this.serverRequestHandler=e}setNoticeHandler(e){this.noticeHandler=e}request(e,t){if(this.closed)throw Error(`codex app-server client is closed.`);if(this.exitResolved)return Promise.reject(this.exitError??Error(`codex app-server connection closed.`));let n=this.nextId;return this.nextId+=1,new Promise((r,i)=>{this.pending.set(n,{resolve:r,reject:i,method:e}),this.sendMessage({id:n,method:e,params:t})})}notify(e,t={}){this.closed||this.sendMessage({method:e,params:t})}handleChunk(e){this.lineBuffer+=e;let t=this.lineBuffer.indexOf(`
@@ -1,4 +1,4 @@
1
- import{Ea as e}from"./args-CJsHYWbt.js";import{gt as t,o as n}from"./state-Br-Fuaxg.js";import r from"node:path";import i from"node:fs";var a=e({APPROVERS:()=>s,ApprovalRefusedError:()=>S,NOT_ALLOWED:()=>o,SIMULATE_APPROVAL_ENV:()=>v,actionLines:()=>k,answerApproval:()=>y,approvalActionsLabel:()=>A,approvalFor:()=>u,approvalMessage:()=>D,changeDecisionMessage:()=>E,closeApprovals:()=>h,closedResponse:()=>m,codexApprovalHandler:()=>j,deniedApprovals:()=>f,escalate:()=>_,listApprovals:()=>l,markDelivered:()=>b,mergeApprovals:()=>T,pendingApprovals:()=>d,refusedAnswer:()=>C,requestApproval:()=>g,restoreApprovals:()=>w,stoppedMessage:()=>p,withDecisions:()=>O});const o=`Not allowed here. If the task truly needs this, escalate it with the exact command and why, then continue or end your turn; the decision arrives as a message, in this turn while it runs, else in a new one.`,s={agent:`a linked member`,workspace:`a workspace admin`,personal:`the member who asked`},c=e=>r.join(e,`approvals`);function l(e){let n=c(e);return i.existsSync(n)?i.readdirSync(n).filter(e=>e.endsWith(`.request.json`)).flatMap(e=>{let i=e.replace(/\.request\.json$/,``),a=t(r.join(n,e));if(!a)return[];let o=t(r.join(n,`${i}.response.json`));return[{...a,id:i,response:o}]}).sort((e,t)=>String(e.createdAt).localeCompare(String(t.createdAt))):[]}const u=(e,t)=>l(e).find(e=>e.response?.decision===`accept`&&e.actions.some(e=>e.trim()===t.trim())),d=e=>l(e).filter(e=>!e.response),f=e=>l(e).filter(e=>e.response?.decision===`decline`),p=e=>`The task was stopped, so approval "${e}" is closed.`,m=(e=new Date().toISOString())=>({decision:`closed`,answeredAt:e,deliveredAt:e});function h(e){let t=m();return d(e).map(n=>(x(e,n.id,t),{...n,response:t}))}function g(e,t){let n=c(e);i.mkdirSync(n,{recursive:!0});let a=`apr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`,o={id:a,reason:t.reason,actions:t.actions,createdAt:new Date().toISOString()},{id:s,response:l,...u}=o;return i.writeFileSync(r.join(n,`${a}.request.json`),`${JSON.stringify(u,null,2)}\n`,`utf8`),o}function _(e,t,r,i){let a=g(r,i);return n(e,t,{kind:`approval-escalated`,approvalId:a.id,summary:a.actions.join(`
1
+ import{Ea as e}from"./args-CJsHYWbt.js";import{gt as t,o as n}from"./state-CxAUec80.js";import r from"node:path";import i from"node:fs";var a=e({APPROVERS:()=>s,ApprovalRefusedError:()=>S,NOT_ALLOWED:()=>o,SIMULATE_APPROVAL_ENV:()=>v,actionLines:()=>k,answerApproval:()=>y,approvalActionsLabel:()=>A,approvalFor:()=>u,approvalMessage:()=>D,changeDecisionMessage:()=>E,closeApprovals:()=>h,closedResponse:()=>m,codexApprovalHandler:()=>j,deniedApprovals:()=>f,escalate:()=>_,listApprovals:()=>l,markDelivered:()=>b,mergeApprovals:()=>T,pendingApprovals:()=>d,refusedAnswer:()=>C,requestApproval:()=>g,restoreApprovals:()=>w,stoppedMessage:()=>p,withDecisions:()=>O});const o=`Not allowed here. If the task truly needs this, escalate it with the exact command and why, then continue or end your turn; the decision arrives as a message, in this turn while it runs, else in a new one.`,s={agent:`a linked member`,workspace:`a workspace admin`,personal:`the member who asked`},c=e=>r.join(e,`approvals`);function l(e){let n=c(e);return i.existsSync(n)?i.readdirSync(n).filter(e=>e.endsWith(`.request.json`)).flatMap(e=>{let i=e.replace(/\.request\.json$/,``),a=t(r.join(n,e));if(!a)return[];let o=t(r.join(n,`${i}.response.json`));return[{...a,id:i,response:o}]}).sort((e,t)=>String(e.createdAt).localeCompare(String(t.createdAt))):[]}const u=(e,t)=>l(e).find(e=>e.response?.decision===`accept`&&e.actions.some(e=>e.trim()===t.trim())),d=e=>l(e).filter(e=>!e.response),f=e=>l(e).filter(e=>e.response?.decision===`decline`),p=e=>`The task was stopped, so approval "${e}" is closed.`,m=(e=new Date().toISOString())=>({decision:`closed`,answeredAt:e,deliveredAt:e});function h(e){let t=m();return d(e).map(n=>(x(e,n.id,t),{...n,response:t}))}function g(e,t){let n=c(e);i.mkdirSync(n,{recursive:!0});let a=`apr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`,o={id:a,reason:t.reason,actions:t.actions,createdAt:new Date().toISOString()},{id:s,response:l,...u}=o;return i.writeFileSync(r.join(n,`${a}.request.json`),`${JSON.stringify(u,null,2)}\n`,`utf8`),o}function _(e,t,r,i){let a=g(r,i);return n(e,t,{kind:`approval-escalated`,approvalId:a.id,summary:a.actions.join(`
2
2
  `),actions:a.actions,reason:a.reason,message:`Approval needed (${a.id}): ${a.reason}`}),a}const v=`CODER_SIMULATE_APPROVAL`;function y(e,t,n,r,i){let a=l(e).find(e=>e.id===t);if(!a)throw Error(`No approval "${t}" for this task.`);if(a.response?.decision===`closed`)throw Error(p(t));if(a.response?.decision===`accept`)throw Error(`Approval "${t}" is already approved.`);let o={decision:n,...r?{reason:r}:{},answeredAt:new Date().toISOString(),...i?{by:i}:{}};return x(e,t,o),{...a,response:o}}function b(e,t){let n=l(e).find(e=>e.id===t.id)?.response;if(n?.decision!==t.response?.decision||n?.answeredAt!==t.response?.answeredAt)return t;let r={...t.response,deliveredAt:new Date().toISOString()};return x(e,t.id,r),{...t,response:r}}function x(e,t,n){i.writeFileSync(r.join(c(e),`${t}.response.json`),`${JSON.stringify(n,null,2)}\n`,`utf8`)}var S=class extends Error{};function C(e,t){return e?.response?.decision===`closed`&&t.response?.decision!==`closed`?p(t.id):e?.response?.decision===`accept`&&t.response?.decision!==`accept`?`Approval "${t.id}" is already approved`:null}function w(e,t){if(!t.length)return;let n=c(e);i.mkdirSync(n,{recursive:!0});for(let{id:e,response:a,...o}of t){let t=r.join(n,`${e}.request.json`);i.existsSync(t)||i.writeFileSync(t,`${JSON.stringify(o,null,2)}\n`,`utf8`),a&&i.writeFileSync(r.join(n,`${e}.response.json`),`${JSON.stringify(a,null,2)}\n`,`utf8`)}}function T(e,t){let n=new Set(e.filter(e=>e.change).map(e=>e.id));t=t.filter(e=>!n.has(e.id)||e.change);let r=new Map(e.map(e=>[e.id,e.response])),i=new Set(t.map(e=>e.id)),a=(e,t)=>e?.decision!==`closed`&&(!e||!t||String(t.answeredAt??``)>=String(e.answeredAt??``))?t??e:e;return[...t.map(e=>({...e,response:(n.has(e.id)&&r.get(e.id)?.decision!==`closed`?e.response:a(r.get(e.id),e.response))??null})),...e.filter(e=>!i.has(e.id))].sort((e,t)=>String(e.createdAt).localeCompare(String(t.createdAt)))}function E(e){let{decision:t,reason:n,by:r}=e.response,i=r?` by ${r}`:``;return t===`accept`?`Approved${i} and applied: ${e.reason}`:`Denied${i}: ${e.reason}${n?` ${n}`:``}`}function D(e){let{decision:t,reason:n}=e.response,{actions:r}=e,i=r.map((e,t)=>`${t+1}. ${e}`).join(` `);return t===`decline`?`Denied: ${i}${n?`: ${n}`:``}`:t===`closed`?`Closed, the task was stopped: ${i}`:r.length===1?`The user approved doing exactly this outside the sandbox for the rest of this task: ${r[0]}. Retry it outside the sandbox now, exactly as written.`:`The user approved doing exactly these outside the sandbox for the rest of this task: ${i}. Retry them outside the sandbox now, each exactly as written.`}const O=(e,t=[])=>e.map(e=>{let n=t.find(t=>t.response&&D(t)===e.prompt);return n?{...e,approval:n.id}:e}),k=e=>e.map((e,t)=>` ${t+1}. ${e.replaceAll(`
3
3
  `,`
4
4
  `)}`).join(`