@wular/coder 0.4.12 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (528) hide show
  1. package/README.md +3 -3
  2. package/dist/actions-CkMAM1Km.js +3 -0
  3. package/dist/agent-Bi5nbUhA.js +1 -0
  4. package/dist/app-server-BTpa5GBV.js +6 -0
  5. package/dist/approvals-CRwkc9vB.js +5 -0
  6. package/dist/apps-B6mUToTa.js +18 -0
  7. package/dist/args-CJsHYWbt.js +66 -0
  8. package/dist/async-CNhQ4wyZ.js +3 -0
  9. package/dist/auth-oCvlHitk.js +1 -0
  10. package/dist/builtin/coder/agent.json +6 -7
  11. package/dist/builtin/coder/system.md +5 -6
  12. package/dist/chat-4AiZEqKh.js +13 -0
  13. package/dist/{chat-bwKd3y6V.js → chat-Bfu9XKRa.js} +1 -1
  14. package/dist/cli.js +16 -11
  15. package/dist/{client-C4QCT6cG.js → client-nBo9Mhsr.js} +4 -4
  16. package/dist/cmd-Cu3OquA_.js +122 -0
  17. package/dist/config-D_RuO6gX.js +5 -0
  18. package/dist/connection-BXjn7gCC.js +1 -0
  19. package/dist/connections-Cswv7r8Z.js +2 -0
  20. package/dist/context-CFrDYenS.js +6 -0
  21. package/dist/crypto-Ittsv-m4.js +1 -0
  22. package/dist/dash/standalone/server/build-index.json +1 -1
  23. package/dist/dash/standalone/server/manifest.json +1686 -1428
  24. package/dist/dash/standalone/server/modules-server-server-react-server/src/agent/event-json.856d33f567e58d0e.js +30 -0
  25. package/dist/dash/standalone/server/modules-server-server-react-server/src/client/http.e78b470f4ecf125b.js +58 -0
  26. package/dist/dash/standalone/server/modules-server-server-react-server/src/client/{index.0de14cb4e30bd70d.js → index.54c45900f2153d34.js} +57 -77
  27. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/task/{log-view.60308a11f7001eb7.js → view.e20379d8f741754a.js} +78 -48
  28. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/types.5bf5a41cedb54154.js +37 -0
  29. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/{load.be791a5eaf328738.js → load.252f972b42c690e2.js} +18 -11
  30. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/create/[id]/{page.70913bd4075da914.js → page.11efd0e175db9053.js} +24 -4
  31. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{loading.e348ec45e9ed951b.js → loading.56c14183236be231.js} +2 -2
  32. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{notify.61aab176baeefebd.js → notify.59ae138dc182d7c3.js} +1 -1
  33. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{page.815371ed0d5dd4fa.js → page.e9386951cedea737.js} +9 -9
  34. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{sign-out.1d6af804f9ec043d.js → sign-out.713d3ec10951fde5.js} +4 -4
  35. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{agent-menu.2ed0e66d131fc148.js → agent-menu.5c780867b82081b1.js} +3 -3
  36. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{agents-grid.f43bcc1148ce3650.js → agents-grid.f989d6f2d9ece6e4.js} +9 -9
  37. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{loading.fac1132ad9c4248e.js → loading.0130f8533d8f1b1e.js} +4 -4
  38. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/page.0f88720e52db99a2.js +48 -0
  39. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{layout.a795379254982121.js → layout.8d2f0997462fc958.js} +90 -33
  40. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{loading.388aeaf0c2edf8f8.js → loading.90bf37c903ce6f0d.js} +1 -1
  41. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{page.a2cb6d1f1714259a.js → page.bc93891522c8120d.js} +22 -88
  42. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{loading.4da9e2ba3fea937f.js → loading.d56ef50b0694f975.js} +2 -2
  43. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{page.996172c951739b35.js → page.cf5cf9afe38ab0e4.js} +51 -111
  44. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{platform-actions.8e7ca54dd1821e98.js → platform-actions.c44c7df7841719f2.js} +235 -109
  45. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/platform-state.6b6132518ca61635.js +21 -0
  46. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/platform-step.6e90cbfe308f28a0.js +82 -0
  47. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{agent-settings-form.aa9e157d141481d7.js → agent-settings-form.61de585104c2be10.js} +44 -66
  48. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{loading.ad1a4c9b000d269a.js → loading.2800c65e45a4a1d9.js} +1 -1
  49. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{page.44d886e60ae04303.js → page.4d06f759984a63b3.js} +11 -11
  50. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{loading.521c9e7b8d77f557.js → loading.ea2925eab1d2e594.js} +1 -1
  51. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{page.828cfb8112404792.js → page.fb069bf82b727d27.js} +1 -1
  52. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{loading.8f998a9c511e1fb3.js → loading.3a615597ca648452.js} +4 -4
  53. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{page.45e18b6dc3019af4.js → page.0a472a0e269b8c01.js} +6 -6
  54. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{versions-list.c8d76988c734dda2.js → versions-list.7ef7dfd5d8f5de43.js} +3 -3
  55. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{loading.b1367e864b4fb406.js → loading.007326a04f05d46c.js} +5 -5
  56. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{page.dd11f2618e08becd.js → page.a26aa7bc6ab655f0.js} +10 -10
  57. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/platforms/[app]/app-cards.361918fe58349aa1.js +142 -0
  58. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/platforms/[app]/loading.f0d91d48e2b79e50.js +14 -0
  59. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/platforms/[app]/page.3f60cf67517d0d31.js +99 -0
  60. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-pills.f987c12bcbc5c850.js → agent-pills.1012e04bfbc7bffd.js} +5 -5
  61. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-toggle.1579dc8acbaacf92.js → agent-toggle.ffbf9a8b8b2fbde7.js} +3 -3
  62. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{hero.ad5cc342db794e5d.js → hero.0ae015a4fbe6321e.js} +6 -6
  63. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{instructions.85b1cd986a9edbb5.js → instructions.1b8c9189961c5a4f.js} +13 -4
  64. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{connect-repositories.43b4b28f194ea842.js → connect-repositories.9abe365f0098d358.js} +1 -1
  65. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{editor.776856fe1ed1a642.js → editor.6548f8f757578f90.js} +164 -116
  66. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{import-picker.eafa5b41a2ed571f.js → import-picker.577b1d84c7ab84e1.js} +11 -11
  67. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{loading.ee001af7a96e3972.js → loading.9b65a8c1cdc8346f.js} +5 -5
  68. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{page.7d84ef2b178b34d2.js → page.2b326d00ccef5544.js} +9 -8
  69. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{layout.393cf7429eea189e.js → layout.45a09107b19f0a7e.js} +89 -26
  70. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/operator-apps.f8d679f2d06b0ebc.js +155 -0
  71. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{page.980adfb7c5714752.js → page.5aa3ddc669366703.js} +37 -10
  72. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{page.24a1987405ed7b17.js → page.5a5188f0fc75dcd2.js} +1 -1
  73. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/advanced-list.73cdadb2968a39d2.js +63 -0
  74. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/connection-add.353ec01fbb814f78.js +526 -0
  75. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/connections-list.cf4061ae909272c3.js +439 -0
  76. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials-list.683476f62a9ecde7.js → credentials-list.fc4cff0289267551.js} +120 -103
  77. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials.b43dd3d97c536c2a.js → credentials.db01de2581ac65f3.js} +9 -9
  78. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/list.e7d6a422f6a869ea.js +201 -0
  79. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{loading.7ca95dcb4fb3362b.js → loading.71ca4f6c99a8a9d5.js} +1 -1
  80. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/models-list.acb92b39cab1d11c.js +635 -0
  81. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{page.dfed4ae6ffc74434.js → page.95fe939e36e5be55.js} +67 -41
  82. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{runners-list.3afa989490bbe77c.js → runners-list.5764eac3307d67cc.js} +42 -37
  83. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{secrets-list.0d175ee815b22cd7.js → secrets-list.d316bb157f747f6c.js} +19 -17
  84. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/chain-hint.65c4cc04c78e8bfd.js +18 -0
  85. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{layout.3e8289f888fa444c.js → layout.4eb70f2de8674f93.js} +7 -7
  86. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/model-options.dc630cb6e2cbf83a.js +150 -0
  87. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/model-pick.a143e77f5ed5f9d3.js +160 -0
  88. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{page.06feaa5fbb06f1e6.js → page.70cad0e981c33fa5.js} +1 -1
  89. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{settings-head.bbc7ced8dd5491eb.js → settings-head.004ced21e02ffa48.js} +5 -5
  90. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{tunnel-guide.29eee1a0b1852168.js → tunnel-guide.1bc6bff9d8019098.js} +1 -1
  91. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{create-link.ff95e4b6977d0474.js → create-link.18bd2b92cd23b73f.js} +5 -5
  92. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{outcome-dialog.894c73f9abee3ce1.js → outcome-dialog.a74e686aaed0c584.js} +3 -3
  93. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/outcome-toast.95f7be49430248eb.js +24 -0
  94. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{outcome.cbbc8cd1bbbee01b.js → outcome.22a83d756e4020a7.js} +3 -6
  95. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{page.f06fda0df59beeb5.js → page.e39ee9236664d043.js} +8 -8
  96. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{activity.3c79cf14feff12bf.js → activity.441e82ab00344fb2.js} +12 -6
  97. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{loading.47cbb34ea8d2e33f.js → loading.779ecdd9c9d2ff09.js} +6 -6
  98. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{page.abed2a8424ef3da0.js → page.24e121ea6eb578ba.js} +16 -9
  99. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/task-actions.4a4052a38db4bad3.js +408 -0
  100. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/task-missing.33ec27a4a5eafefe.js +27 -0
  101. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-view.dc294bb94b7437e1.js → task-view.0cd3ec2655f44cc7.js} +53 -44
  102. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer-data.309a194fc7fa34be.js → composer-data.73225456d60d63e3.js} +4 -6
  103. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer.5072aacdce127689.js → composer.ee326fbf5e526fb1.js} +114 -121
  104. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/pending-approvals.7607998094780fdd.js +40 -0
  105. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/status.d2c05c397780b833.js +25 -0
  106. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{task.0a1b5878dccd3b37.js → task.a25847399a4dfb30.js} +14 -18
  107. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-list.1162926f7498c732.js → tasks-list.e486cbd16ea3e963.js} +62 -39
  108. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-section.1d687c986db53a73.js → tasks-section.01510523d1556d59.js} +16 -10
  109. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{page.d5d8cb5033823c9c.js → page.ede64f82388f9480.js} +5 -5
  110. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{custom-range.2e21c7f891966c15.js → custom-range.fe91164d7a311356.js} +3 -3
  111. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{day-chart.261b6651df2d3966.js → day-chart.20faaaf57c81ad9e.js} +1 -1
  112. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{loading.97d277dbab9c15cf.js → loading.5b973a8bb29197d5.js} +3 -3
  113. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{page.fb21ebe90d49dac1.js → page.0499098badd3f5f8.js} +7 -7
  114. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{range-bar.2197d8f43216d104.js → range-bar.0b9038e9df707843.js} +5 -5
  115. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{top-agents.18fc469e781e2305.js → top-agents.93c916167299ffb6.js} +2 -2
  116. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{layout.185dbc99875e208a.js → layout.94ea3908b03bede6.js} +2 -2
  117. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/login/{page.a82be2fd23e9ac67.js → page.4827d64c71c0690a.js} +2 -2
  118. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{drawer.d3e61538dbc8ec39.js → drawer.1a08ff611df7fe38.js} +2 -2
  119. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{foreign-link.1f4217895ff1e835.js → foreign-link.1d4f63a0379cbd1d.js} +3 -3
  120. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{loading-card.cc76fc9708142525.js → loading-card.77bea8c5870b5d3c.js} +5 -5
  121. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{page-head.85f15db7b648d48c.js → page-head.2eb1e0213eb50349.js} +5 -4
  122. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{stream.e2915852cf82c86b.js → stream.e3800e736f832124.js} +2 -2
  123. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{task-toasts.0ed8ccaae81b9d53.js → task-toasts.3b7eeee29fc327de.js} +29 -19
  124. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{theme-choices.85100ed66d6f9200.js → theme-choices.fc86071c1b634176.js} +2 -2
  125. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{back.180765bdadf6d602.js → back.7aa0ae82dbec38cd.js} +3 -3
  126. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{org.572ad93c7707ab27.js → org.853d173b55368728.js} +1 -1
  127. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{side-toggle.489faf1a259479f7.js → side-toggle.be7d2a7529557435.js} +2 -2
  128. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{badge.c0bc352791a95fd6.js → badge.9f63fd615cf0ee22.js} +2 -2
  129. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{button.ce9e6cdb08ca86db.js → button.b62fa52e18fa338b.js} +2 -2
  130. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{card.9f0d45b73bc78b4f.js → card.c0030eafd76587e3.js} +21 -9
  131. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{collapse.93e4d1b20c2873ed.js → collapse.eb578fdf42029754.js} +1 -1
  132. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{combo.54270c0251466fda.js → combo.e4e08287494081a3.js} +2 -2
  133. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{confirm.c1281f9b12854210.js → confirm.e21b7f5e486dafb8.js} +3 -3
  134. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{copy.bd6fc1577a393965.js → copy.043e0695c08c72f9.js} +2 -2
  135. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{filter.3a452a262f040973.js → filter.0730dccad6332327.js} +6 -6
  136. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{icons.e36c72f54750663a.js → icons.f769275420d072ce.js} +4 -0
  137. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{menu-items.1d082ac4dae8f3d4.js → menu-items.759a1b1f7c5ee365.js} +2 -2
  138. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{menu.ee45bace979944b6.js → menu.7f558c7c6f6345d5.js} +3 -3
  139. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{modal.25d53e5b41b9c4e5.js → modal.08ac85d31f4c76c1.js} +8 -7
  140. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/modal.a533234c7c831be4.css.pnext-asset.js +0 -0
  141. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{segmented.a08dc08338d080e9.js → segmented.633abe26ff760e37.js} +1 -1
  142. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/segmented.c6f30b839fd27f35.css.pnext-asset.js +0 -0
  143. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{select.2eb33e5bea28d804.js → select.0ee9e8f04ddd8b47.js} +9 -6
  144. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{sentinel.17cffebfc3103b9f.js → sentinel.0ddf515b8f09ef9f.js} +1 -1
  145. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/sentinel.d17e2bfcbeb9df31.css.pnext-asset.js +0 -0
  146. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/tabs.025b532d6cc51736.css.pnext-asset.js +0 -0
  147. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tabs.66b2e54963f6901b.js → tabs.1600a0b563a5c7dd.js} +1 -1
  148. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tail.04132db0c5033d4f.js → tail.7eb303330802ac18.js} +2 -2
  149. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/toolbar.cdbd0357f2c5e1fe.css.pnext-asset.js +0 -0
  150. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{toolbar.24036899654de6df.js → toolbar.ff8367c641d28c1e.js} +3 -3
  151. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{action.b9a5c37272250e82.js → action.f22057e7dfac40fe.js} +1 -1
  152. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{client.a3928fa2dcd27b75.js → client.c8d7efefb6194d7d.js} +1 -1
  153. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/routes/http.394704f4f12ada08.js +165 -0
  154. package/dist/dash/standalone/server/modules-server-server-react-server/src/utils/crypto.24a6439ff8d10d3d.js +11 -0
  155. package/dist/dash/standalone/static/assets/chunks/advanced-list-850a950afe4f6996.js +1 -0
  156. package/dist/dash/standalone/static/assets/chunks/agent-pills-9f6fa120182db948.js +2 -0
  157. package/dist/dash/standalone/static/assets/chunks/agent-settings-form-a8ee12513a02b1c5.js +1 -0
  158. package/dist/dash/standalone/static/assets/chunks/agent-toggle-521136f20a71400d.js +1 -0
  159. package/dist/dash/standalone/static/assets/chunks/agents-grid-bcd13cd7a46224a6.js +1 -0
  160. package/dist/dash/standalone/static/assets/chunks/{back-fa9d6e37f9828093.js → back-2d67134b122334f4.js} +1 -1
  161. package/dist/dash/standalone/static/assets/chunks/chain-hint-53675e299a865420.js +1 -0
  162. package/dist/dash/standalone/static/assets/chunks/{combo-86f3e11d1f6f6cee.js → combo-cb2c62fe580a8903.js} +1 -1
  163. package/dist/dash/standalone/static/assets/chunks/composer-4a46a458495ce3ba.js +1 -0
  164. package/dist/dash/standalone/static/assets/chunks/composer-92553de43276510b.js +1 -0
  165. package/dist/dash/standalone/static/assets/chunks/composer-data-890f71bade4f0616.js +1 -0
  166. package/dist/dash/standalone/static/assets/chunks/{confirm-c29a1db0130638d2.js → confirm-d6b2c5b1deccd1e8.js} +1 -1
  167. package/dist/dash/standalone/static/assets/chunks/{connect-repositories-0de82daaf654b1d3.js → connect-repositories-226bf70aa81c29d8.js} +1 -1
  168. package/dist/dash/standalone/static/assets/chunks/connections-list-a33d6637e2d52fcf.js +1 -0
  169. package/dist/dash/standalone/static/assets/chunks/{copy-445c11202f136275.js → copy-294c6052b3b69424.js} +1 -1
  170. package/dist/dash/standalone/static/assets/chunks/create-link-b2480a7601967e94.js +1 -0
  171. package/dist/dash/standalone/static/assets/chunks/credentials-list-90fc1c6d202e1461.js +1 -0
  172. package/dist/dash/standalone/static/assets/chunks/custom-range-efa1b6a71ba84597.js +1 -0
  173. package/dist/dash/standalone/static/assets/chunks/editor-53a3e1a893644fff.js +6 -0
  174. package/dist/dash/standalone/static/assets/chunks/{field-b82a0f895266791c.js → field-4d374d5ed3f43d7e.js} +1 -1
  175. package/dist/dash/standalone/static/assets/chunks/instructions-734d21dfb8f6393e.js +1 -0
  176. package/dist/dash/standalone/static/assets/chunks/instructions-d3dc01b2f90820db.js +2 -0
  177. package/dist/dash/standalone/static/assets/chunks/list-16247e39898cd20e.js +1 -0
  178. package/dist/dash/standalone/static/assets/chunks/model-options-d29e934a3de20ab4.js +1 -0
  179. package/dist/dash/standalone/static/assets/chunks/models-list-6d93523660503dfb.js +1 -0
  180. package/dist/dash/standalone/static/assets/chunks/{outcome-dialog-5cf575a5e6921a5d.js → outcome-dialog-755fc581cbc2836e.js} +1 -1
  181. package/dist/dash/standalone/static/assets/chunks/outcome-dialog-77e13c848000a3dc.js +1 -0
  182. package/dist/dash/standalone/static/assets/chunks/outcome-toast-9d5e9713c23882f5.js +1 -0
  183. package/dist/dash/standalone/static/assets/chunks/platform-actions-08e9b3816dcd62b1.js +1 -0
  184. package/dist/dash/standalone/static/assets/chunks/platform-actions-832904f5694ef902.js +1 -0
  185. package/dist/dash/standalone/static/assets/chunks/platform-step-29469fd4eaddc42a.js +1 -0
  186. package/dist/dash/standalone/static/assets/chunks/platform-step-5881a8be1e761e00.js +1 -0
  187. package/dist/dash/standalone/static/assets/chunks/runners-list-dd759d408c643a29.js +1 -0
  188. package/dist/dash/standalone/static/assets/chunks/{runtime-6e12333f12903a62-1.js → runtime-9b28886f3cbe0ed3-1.js} +1 -1
  189. package/dist/dash/standalone/static/assets/chunks/secrets-list-be1f634a1b077baa.js +1 -0
  190. package/dist/dash/standalone/static/assets/chunks/segmented-f646bfa8aa0aa449.js +1 -0
  191. package/dist/dash/standalone/static/assets/chunks/shared-init-926144b364908b3c.js +9 -0
  192. package/dist/dash/standalone/static/assets/chunks/shared-init-953965859f7bf6b9.js +1 -0
  193. package/dist/dash/standalone/static/assets/chunks/shared-init-9b28886f3cbe0ed3-2.js +1 -0
  194. package/dist/dash/standalone/static/assets/chunks/shared-init-b42d2c06c25d1e2b.js +1 -0
  195. package/dist/dash/standalone/static/assets/chunks/side-toggle-8c21d39a1e284887.js +1 -0
  196. package/dist/dash/standalone/static/assets/chunks/{tail-b1c46587301ef397.js → tail-d13c4cc0cf11ffd1.js} +1 -1
  197. package/dist/dash/standalone/static/assets/chunks/task-423e6a3f2527f534.js +1 -0
  198. package/dist/dash/standalone/static/assets/chunks/task-actions-5917357eac6504ca.js +3 -0
  199. package/dist/dash/standalone/static/assets/chunks/task-view-c6ee43d2ddb6db90.js +3 -0
  200. package/dist/dash/standalone/static/assets/chunks/tasks-list-2c5ce592e00fda45.js +1 -0
  201. package/dist/dash/standalone/static/assets/chunks/versions-list-177ae397ad64dcea.js +1 -0
  202. package/dist/dash/standalone/static/assets/chunks/{wular-pnext-6e12333f12903a62-0.js → wular-pnext-9b28886f3cbe0ed3-0.js} +1 -1
  203. package/dist/dash/standalone/static/assets/create-param-id-2c72f3e32e7f8b8d.css +1 -0
  204. package/dist/dash/standalone/static/assets/dash-param-org-a7f30a8c5a6fa651.css +1 -0
  205. package/dist/dash/standalone/static/assets/dash-param-org-account-76fffb9337b633f2.css +1 -0
  206. package/dist/dash/standalone/static/assets/dash-param-org-agents-cc5d59edfc3cf0b1.css +1 -0
  207. package/dist/dash/standalone/static/assets/dash-param-org-agents-new-170499c849114150.css +1 -0
  208. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-00243b34eb094b95.css +1 -0
  209. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-199a9991de1bf2d9.css +1 -0
  210. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-25ae07e0b3f5b252.css +1 -0
  211. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-param-app-a6d559f0e26bd01b.css +1 -0
  212. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-9f8faa8f7d714699.css +1 -0
  213. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-129adcdc293ceac8.css +1 -0
  214. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-0e037c66e3977f33.css +1 -0
  215. package/dist/dash/standalone/static/assets/dash-param-org-operator-8d5ef55834d8deba.css +1 -0
  216. package/dist/dash/standalone/static/assets/dash-param-org-settings-7138821f5422d087.css +1 -0
  217. package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-586fec34f285e9cb.css +1 -0
  218. package/dist/dash/standalone/static/assets/dash-param-org-setup-67679c1f84f352cf.css +1 -0
  219. package/dist/dash/standalone/static/assets/dash-param-org-tasks-8a44e171984d32a1.css +1 -0
  220. package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-b9d3a7a1bd1dd666.css +1 -0
  221. package/dist/dash/standalone/static/assets/dash-param-org-usage-c534db20ce538fd2.css +1 -0
  222. package/dist/dash/standalone/static/assets/global-df2c26ad15039e8a.css +1 -0
  223. package/dist/dash/standalone/static/assets/{login-9760b85feae40270.css → login-148795638d6ff5d4.css} +1 -1
  224. package/dist/dash/standalone/static/assets/pnext-client-095026242a079175.js +1 -0
  225. package/dist/dash/standalone/static/assets/pnext-client-1dfeb8c3ef155f87.js +1 -0
  226. package/dist/dash/standalone/static/assets/pnext-client-2358423351524403.js +1 -0
  227. package/dist/dash/standalone/static/assets/pnext-client-28a6557216627768.js +1 -0
  228. package/dist/dash/standalone/static/assets/pnext-client-31a4ee73945fee19.js +1 -0
  229. package/dist/dash/standalone/static/assets/pnext-client-3dfdc76bb8712b82.js +1 -0
  230. package/dist/dash/standalone/static/assets/pnext-client-4355ac87961d78c1.js +1 -0
  231. package/dist/dash/standalone/static/assets/pnext-client-43c7a0046572e0c9.js +1 -0
  232. package/dist/dash/standalone/static/assets/pnext-client-53dc7db68d67e0b1.js +1 -0
  233. package/dist/dash/standalone/static/assets/pnext-client-5835cb35488bdf7f.js +1 -0
  234. package/dist/dash/standalone/static/assets/pnext-client-638b390bc23ab1ae.js +1 -0
  235. package/dist/dash/standalone/static/assets/pnext-client-67f832c6c51a66cd.js +1 -0
  236. package/dist/dash/standalone/static/assets/pnext-client-6fc99f0abe77c2ea.js +1 -0
  237. package/dist/dash/standalone/static/assets/pnext-client-7d99965f28ac7604.js +1 -0
  238. package/dist/dash/standalone/static/assets/pnext-client-7ecbd7a0cbe4e231.js +1 -0
  239. package/dist/dash/standalone/static/assets/pnext-client-8250bd3b86d038a3.js +1 -0
  240. package/dist/dash/standalone/static/assets/pnext-client-bfd06805a43c6dee.js +1 -0
  241. package/dist/dash/standalone/static/assets/pnext-client-ce2943f17e9d9ac3.js +1 -0
  242. package/dist/dash/standalone/static/assets/pnext-client-ed31510d4615a5a5.js +1 -0
  243. package/dist/dash/standalone/static/assets/pnext-client-f0496bf51e161ddd.js +1 -0
  244. package/dist/definition-4on4SG5J.js +1 -0
  245. package/dist/discover-DvzAbQvU.js +1 -0
  246. package/dist/dispatch-BaW2X6Sc.js +12 -0
  247. package/dist/{dist-DAnSqY1s.js → dist-B5qUdWUG.js} +35 -35
  248. package/dist/{dist-B2jiMMxZ.js → dist-Clxdruuu.js} +3 -3
  249. package/dist/{dist-ClCNj65n.js → dist-CymLGfHl.js} +4 -4
  250. package/dist/{adapter-CVd5klMH.js → dist-DX0JzVC6.js} +990 -990
  251. package/dist/{adapter-CU9H4g6c.js → dist-DfD9WmV8.js} +39 -39
  252. package/dist/dist-node-B8VIVzUc.js +20 -0
  253. package/dist/docs-CbgaMPvq.js +2 -0
  254. package/dist/drive-Tk6JvQK5.js +1 -0
  255. package/dist/drizzle-orm-CYU7WOQS.js +2 -0
  256. package/dist/emit-BgeqsCkC.js +11 -0
  257. package/dist/env-_AxrvBXP.js +1 -0
  258. package/dist/errors-DK_trCff.js +1 -0
  259. package/dist/exec-CAaYFJD1.js +3 -0
  260. package/dist/executor-Chc0zawh.js +11 -0
  261. package/dist/flow/builtin/review/index.d.ts +2 -2
  262. package/dist/flow/builtin/review/index.js +9 -9
  263. package/dist/flow/index.d.ts +1 -1
  264. package/dist/flow/index.js +1 -1
  265. package/dist/github-actions-2RjyRseX.js +36 -0
  266. package/dist/hook-COWDSO4a.js +1 -0
  267. package/dist/http-615JJgHo.js +5 -0
  268. package/dist/http-DRk8cDjf.js +1 -0
  269. package/dist/{index-BdkdNI1v.d.ts → index-ezhbF5wC.d.ts} +369 -413
  270. package/dist/integrations-BVmsk64f.js +9 -0
  271. package/dist/lib/broker.js +2 -2
  272. package/dist/load-PqaDHiHX.js +2 -0
  273. package/dist/local-BMGcCk8N.js +1 -0
  274. package/dist/local-BzZuOwgI.js +5 -0
  275. package/dist/login-BDKTNynK.js +8 -0
  276. package/dist/maintenance-d43Ml540.js +1 -0
  277. package/dist/mcp-BGam3G_B.js +1 -0
  278. package/dist/mcp-BGx48pyR.js +25 -0
  279. package/dist/mcp-BNz_l5TV2.js +1 -0
  280. package/dist/metadata-D_bBfr3H.js +1 -0
  281. package/dist/models-D1NXi6ni.js +1 -0
  282. package/dist/output-BKeyLbvt.js +5 -0
  283. package/dist/permission-BkYxjiFR.js +1 -0
  284. package/dist/prompt-CpwbsEWM.js +4 -0
  285. package/dist/refresh-yfEi5SQs.js +1 -0
  286. package/dist/remote-BbXx6S9P.js +1 -0
  287. package/dist/remote-rArUa01V.js +2 -0
  288. package/dist/runner-DG9jrX5H.js +1 -0
  289. package/dist/runner.json +1 -1
  290. package/dist/runner.tgz +0 -0
  291. package/dist/schema.d.ts +2 -2
  292. package/dist/schema.js +2 -3
  293. package/dist/sdk.d.ts +3264 -1601
  294. package/dist/sdk.js +1 -1
  295. package/dist/serve-B-5rDiZm.js +1 -0
  296. package/dist/serve-CvnrGAj7.js +12 -0
  297. package/dist/serve-DoYbHm_k.js +5 -0
  298. package/dist/session-Dtje9y-r.js +1 -0
  299. package/dist/sessions-DIz9fyRN.js +1 -0
  300. package/dist/shared--aE4olIO.js +1 -0
  301. package/dist/sign-in-wWkyaq5X.js +3 -0
  302. package/dist/state-Br-Fuaxg.js +6 -0
  303. package/dist/store-CzQLgCzt.js +352 -0
  304. package/dist/task-CFt85vTy.js +1 -0
  305. package/dist/task-N0qhnKpK.js +7 -0
  306. package/dist/tool-search-BkdgVolu.js +6 -0
  307. package/dist/tools-DNgEptor.js +1 -0
  308. package/dist/tools-oQvFAnh5.js +1 -0
  309. package/dist/tools-search-D1zArRyJ.js +1 -0
  310. package/dist/turn-Cc-v-eSy.js +3 -0
  311. package/dist/types-DHBqXFE2.js +1 -0
  312. package/dist/update-check-UyRob3yy.js +1 -0
  313. package/dist/view-D-rbQ1Kz.js +4 -0
  314. package/dist/views-3TxH367C.js +2 -0
  315. package/dist/worker-BMuKKiIa.js +1 -0
  316. package/dist/worker-CIHY9L42.js +7 -0
  317. package/dist/zod-_-snqfdO.js +1 -0
  318. package/dist/zod.js +65 -1
  319. package/docs/agents/coder.md +5 -12
  320. package/docs/agents/index.md +53 -82
  321. package/docs/approvals.md +47 -0
  322. package/docs/cli/agent.md +40 -19
  323. package/docs/cli/auth.md +1 -1
  324. package/docs/cli/connection.md +27 -26
  325. package/docs/cli/flow.md +9 -9
  326. package/docs/cli/index.md +17 -15
  327. package/docs/cli/model.md +23 -21
  328. package/docs/cli/runner.md +1 -1
  329. package/docs/cli/server.md +2 -2
  330. package/docs/cli/task.md +50 -50
  331. package/docs/config.md +37 -75
  332. package/docs/connections.md +80 -0
  333. package/docs/dash.md +23 -19
  334. package/docs/flows.md +46 -213
  335. package/docs/models.md +48 -77
  336. package/docs/review.md +20 -17
  337. package/docs/runners.md +49 -0
  338. package/docs/sdk.md +49 -73
  339. package/docs/self-host.md +79 -81
  340. package/package.json +4 -5
  341. package/plugins/agents/skills/coder/SKILL.md +3 -3
  342. package/plugins/claude/.claude-plugin/plugin.json +1 -1
  343. package/plugins/claude/skills/dispatch/SKILL.md +3 -3
  344. package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
  345. package/plugins/cursor/README.md +3 -3
  346. package/plugins/cursor/skills/coder/SKILL.md +3 -3
  347. package/dist/actions-BT7_eKXm.js +0 -10
  348. package/dist/adapter-BT8ECcRG.js +0 -1
  349. package/dist/agent-BA6xr8QY.js +0 -8
  350. package/dist/apps-D-v5sQJk.js +0 -367
  351. package/dist/args-CbO_Ck9Z.js +0 -11
  352. package/dist/async-XNO3nqum.js +0 -3
  353. package/dist/auth-DuXnSNf9.js +0 -1
  354. package/dist/base64url-CsVsW4Id.js +0 -1
  355. package/dist/chat-CgQdDRhs.js +0 -13
  356. package/dist/cmd-DX5ByXo3.js +0 -119
  357. package/dist/connection-DNxi2btM.js +0 -1
  358. package/dist/context-65bOofts.js +0 -7
  359. package/dist/conversation-DT-35cEt.js +0 -1
  360. package/dist/core-DwsAMCnL.js +0 -65
  361. package/dist/dash/standalone/node_modules/contextjsx/dist/index.mjs +0 -1
  362. package/dist/dash/standalone/node_modules/contextjsx/dist/jsx-runtime.mjs +0 -1
  363. package/dist/dash/standalone/node_modules/contextjsx/dist/src-BJ0QFeB8.mjs +0 -2
  364. package/dist/dash/standalone/node_modules/contextjsx/package.json +0 -70
  365. package/dist/dash/standalone/server/modules-server-server-react-server/src/agent/context/turn.dac8eb211c500271.js +0 -141
  366. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/defaults.1b615366c56838a1.js +0 -57
  367. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/auth/sign-in.661b3a4139af5bd7.js +0 -11
  368. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/connect/page.0fbfdba5254f7ae5.js +0 -26
  369. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/connect-apps.f3af8cc8540719d7.js +0 -36
  370. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/page.c6efd5432c1a4a75.js +0 -65
  371. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/operator-apps.a244f3199e7cf09c.js +0 -144
  372. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/connections-list.21ec9dc73ce68656.js +0 -642
  373. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/engines-list.9e116751bd34e2cc.js +0 -73
  374. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/list.083f5c665df04b1b.js +0 -156
  375. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/models-list.537f63f8e5dd085d.js +0 -410
  376. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/model-options.a96c11d11674f598.js +0 -100
  377. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/task-actions.587da79d68ab8d14.js +0 -151
  378. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/status.16190fdd5fd7daad.js +0 -16
  379. package/dist/dash/standalone/static/assets/chunks/action-71685b2d5ad9f359.js +0 -1
  380. package/dist/dash/standalone/static/assets/chunks/agent-pills-15da36c2cb81991b.js +0 -2
  381. package/dist/dash/standalone/static/assets/chunks/agent-settings-form-6e6a87d6e673daa8.js +0 -1
  382. package/dist/dash/standalone/static/assets/chunks/agent-toggle-ca98586e3b4ce9ae.js +0 -1
  383. package/dist/dash/standalone/static/assets/chunks/agents-grid-29c399e46b4e9e2b.js +0 -1
  384. package/dist/dash/standalone/static/assets/chunks/composer-85e0ec7163ae18b7.js +0 -1
  385. package/dist/dash/standalone/static/assets/chunks/composer-910bb87127972f62.js +0 -1
  386. package/dist/dash/standalone/static/assets/chunks/composer-data-5fed6c271a4791ca.js +0 -1
  387. package/dist/dash/standalone/static/assets/chunks/connect-apps-b73490e04ae6398d.js +0 -1
  388. package/dist/dash/standalone/static/assets/chunks/connections-list-c50f58b4b28d10bb.js +0 -1
  389. package/dist/dash/standalone/static/assets/chunks/create-link-6d64a2d5f9ce6de0.js +0 -1
  390. package/dist/dash/standalone/static/assets/chunks/credentials-list-bee95799b2319b3b.js +0 -1
  391. package/dist/dash/standalone/static/assets/chunks/custom-range-a0630599f907b30e.js +0 -1
  392. package/dist/dash/standalone/static/assets/chunks/defaults-52f30e83d7666f7a.js +0 -1
  393. package/dist/dash/standalone/static/assets/chunks/editor-b9951819f21b2e43.js +0 -6
  394. package/dist/dash/standalone/static/assets/chunks/engines-list-2720c3e8fa12b2f7.js +0 -1
  395. package/dist/dash/standalone/static/assets/chunks/format-a27067f0186e78ac.js +0 -1
  396. package/dist/dash/standalone/static/assets/chunks/instructions-affaaeff366b1725.js +0 -2
  397. package/dist/dash/standalone/static/assets/chunks/instructions-fd7402ac5aa8b50e.js +0 -1
  398. package/dist/dash/standalone/static/assets/chunks/list-d918f79562d497eb.js +0 -1
  399. package/dist/dash/standalone/static/assets/chunks/model-options-8d2170eebe0d061d.js +0 -1
  400. package/dist/dash/standalone/static/assets/chunks/models-list-12bc7aceaa52f5b0.js +0 -1
  401. package/dist/dash/standalone/static/assets/chunks/notice-57db7a1f05b7308c.js +0 -1
  402. package/dist/dash/standalone/static/assets/chunks/outcome-dialog-b219595be320108a.js +0 -1
  403. package/dist/dash/standalone/static/assets/chunks/platform-actions-1d27d2ba7eee9ff1.js +0 -1
  404. package/dist/dash/standalone/static/assets/chunks/platform-actions-dba96dcb0f6513db.js +0 -1
  405. package/dist/dash/standalone/static/assets/chunks/runners-list-36f8c5ecfcf8e9ae.js +0 -1
  406. package/dist/dash/standalone/static/assets/chunks/secrets-list-d7dbafd24dd18481.js +0 -1
  407. package/dist/dash/standalone/static/assets/chunks/segmented-8f809ebe712e92a7.js +0 -1
  408. package/dist/dash/standalone/static/assets/chunks/shared-init-6e12333f12903a62-2.js +0 -1
  409. package/dist/dash/standalone/static/assets/chunks/shared-init-cc13a835f3508618.js +0 -2
  410. package/dist/dash/standalone/static/assets/chunks/shared-init-f475017dd5811e33.js +0 -5
  411. package/dist/dash/standalone/static/assets/chunks/side-toggle-0aa237eba3dfe9c1.js +0 -1
  412. package/dist/dash/standalone/static/assets/chunks/task-681061023bdf0a49.js +0 -5
  413. package/dist/dash/standalone/static/assets/chunks/task-actions-c9e46e81604e85c5.js +0 -1
  414. package/dist/dash/standalone/static/assets/chunks/task-view-134186a544917ceb.js +0 -5
  415. package/dist/dash/standalone/static/assets/chunks/tasks-list-352a3222d878de0f.js +0 -1
  416. package/dist/dash/standalone/static/assets/chunks/versions-list-21cb854e6a7108a7.js +0 -1
  417. package/dist/dash/standalone/static/assets/connect-a550b6f3a8c00186.css +0 -1
  418. package/dist/dash/standalone/static/assets/create-param-id-da3f7e20689fe51a.css +0 -1
  419. package/dist/dash/standalone/static/assets/dash-param-org-account-9471bec93c444232.css +0 -1
  420. package/dist/dash/standalone/static/assets/dash-param-org-agents-64500e78caae32df.css +0 -1
  421. package/dist/dash/standalone/static/assets/dash-param-org-agents-new-c067c22928a2d7cc.css +0 -1
  422. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-9dec87710e04f949.css +0 -1
  423. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-779c474301e04440.css +0 -1
  424. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-c7d594b5232630c2.css +0 -1
  425. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-a80e62570716fdb9.css +0 -1
  426. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-ce278252012297b9.css +0 -1
  427. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-d3b6d701eb8e1403.css +0 -1
  428. package/dist/dash/standalone/static/assets/dash-param-org-bcfa3de29341d5ba.css +0 -1
  429. package/dist/dash/standalone/static/assets/dash-param-org-operator-b7bc6447cc27c9ce.css +0 -1
  430. package/dist/dash/standalone/static/assets/dash-param-org-settings-6d6902345d88a687.css +0 -1
  431. package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-85c7af9a89eef06e.css +0 -1
  432. package/dist/dash/standalone/static/assets/dash-param-org-setup-173efecd7b990c2e.css +0 -1
  433. package/dist/dash/standalone/static/assets/dash-param-org-tasks-ae0bc03f468e63cc.css +0 -1
  434. package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-7325d8cff5be3592.css +0 -1
  435. package/dist/dash/standalone/static/assets/dash-param-org-usage-517b2a7ae462ac57.css +0 -1
  436. package/dist/dash/standalone/static/assets/global-87e1762113874559.css +0 -1
  437. package/dist/dash/standalone/static/assets/pnext-client-05df74b071ddb0b3.js +0 -1
  438. package/dist/dash/standalone/static/assets/pnext-client-2c19cca257f78ae6.js +0 -1
  439. package/dist/dash/standalone/static/assets/pnext-client-2db05dfa62642a65.js +0 -1
  440. package/dist/dash/standalone/static/assets/pnext-client-36b0d6085a073880.js +0 -1
  441. package/dist/dash/standalone/static/assets/pnext-client-576c06599e241231.js +0 -1
  442. package/dist/dash/standalone/static/assets/pnext-client-6aa0f19a30d58d63.js +0 -1
  443. package/dist/dash/standalone/static/assets/pnext-client-6b30b71f452f2f07.js +0 -1
  444. package/dist/dash/standalone/static/assets/pnext-client-6ccb4d4fff812db3.js +0 -1
  445. package/dist/dash/standalone/static/assets/pnext-client-74eb465defba421e.js +0 -1
  446. package/dist/dash/standalone/static/assets/pnext-client-8c692d12b2fd90d6.js +0 -1
  447. package/dist/dash/standalone/static/assets/pnext-client-92e17d39063a9ced.js +0 -1
  448. package/dist/dash/standalone/static/assets/pnext-client-93246aea268c2682.js +0 -1
  449. package/dist/dash/standalone/static/assets/pnext-client-9954dcbc0c579e0d.js +0 -1
  450. package/dist/dash/standalone/static/assets/pnext-client-c0dfa1cdde9a9855.js +0 -1
  451. package/dist/dash/standalone/static/assets/pnext-client-c28d38d4aafd4af6.js +0 -1
  452. package/dist/dash/standalone/static/assets/pnext-client-c2c30dcb6dc31d60.js +0 -1
  453. package/dist/dash/standalone/static/assets/pnext-client-dbf741073e11eac0.js +0 -1
  454. package/dist/dash/standalone/static/assets/pnext-client-e29194a27280333f.js +0 -1
  455. package/dist/dash/standalone/static/assets/pnext-client-f8a7e692b27caad9.js +0 -1
  456. package/dist/dash/standalone/static/assets/pnext-client-fc5b8cfcba2a9f63.js +0 -1
  457. package/dist/discover-CPZdprlQ.js +0 -1
  458. package/dist/dist-node-Bv1kCqyi.js +0 -20
  459. package/dist/docs-x-l7gjFE.js +0 -2
  460. package/dist/drive-Y-ZlgiUW.js +0 -1
  461. package/dist/env-B9JG6gwo.js +0 -1
  462. package/dist/errors-XBA-Ls4n.js +0 -10
  463. package/dist/exec-iFssTO5V.js +0 -3
  464. package/dist/executor-Dt2FFT-y.js +0 -11
  465. package/dist/http-BZfjbiov.js +0 -1
  466. package/dist/integrations-DyInAa5g.js +0 -2
  467. package/dist/load-zhcrwSRF.js +0 -2
  468. package/dist/local-D55UkW93.js +0 -5
  469. package/dist/log-view-CL3_S0IQ.js +0 -3
  470. package/dist/maintenance-BfxcatXH.js +0 -1
  471. package/dist/match-Bq4sDuCy.js +0 -1
  472. package/dist/mcp-Bta09QCU.js +0 -13
  473. package/dist/mcp-CUITALl1.js +0 -1
  474. package/dist/models-C1O2DrXx.js +0 -1
  475. package/dist/output-D95NoAA9.js +0 -16
  476. package/dist/prompt-onpyIyXK.js +0 -8
  477. package/dist/prompts-B8pKhMcu.js +0 -4
  478. package/dist/refresh-D-0K9fo3.js +0 -1
  479. package/dist/remote-CDm0YUU3.js +0 -3
  480. package/dist/runner-CTFTuaz_.js +0 -1
  481. package/dist/runners-CYTicTb7.js +0 -36
  482. package/dist/serve-Bzs_lEg-.js +0 -1
  483. package/dist/serve-CWtLyyTz.js +0 -12
  484. package/dist/serve-DE6A-rBk.js +0 -4
  485. package/dist/slack-Bo5l13Rs.js +0 -5
  486. package/dist/task-BU1JEK9X.js +0 -7
  487. package/dist/task-CPzBITsp.js +0 -1
  488. package/dist/tools-BMaKWTa6.js +0 -1
  489. package/dist/tools-CM4UCsId.js +0 -1
  490. package/dist/turn-DMvPfhb5.js +0 -3
  491. package/dist/types-D_xnfP7m.js +0 -1
  492. package/dist/views-DEdKqLm_.js +0 -5
  493. package/dist/wire-JMNPv8f6.js +0 -1
  494. package/dist/worker-BuP_Lem1.js +0 -9
  495. package/dist/worker-C1tuzq5n.js +0 -1
  496. package/dist/zod-BoqHoRCH.js +0 -1
  497. package/docs/mcp.md +0 -54
  498. /package/dist/dash/standalone/server/modules-server-server-react-server/src/core/{errors.0a735590a5412ea6.js → errors.200335e62a9d9564.js} +0 -0
  499. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{page.061f6006f2685f5e.css.pnext-asset.js → page.abe7a6d16eb15c41.css.pnext-asset.js} +0 -0
  500. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{page.c811938ae8a8f1df.css.pnext-asset.js → page.1c7947d6f79d6447.css.pnext-asset.js} +0 -0
  501. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{settings/agent-settings-form.ca926c58d15044aa.css.pnext-asset.js → platforms/platform-step.a722e3b8539a0f85.css.pnext-asset.js} +0 -0
  502. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/{agent/hero.1bef5dca89b5942c.css.pnext-asset.js → [slug]/(tabs)/settings/agent-settings-form.bf5430862c505c55.css.pnext-asset.js} +0 -0
  503. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/{agent/instructions.446bccc375f30eeb.css.pnext-asset.js → [slug]/platforms/[app]/@/app/dash/[org]/agents/[slug]/(tabs)/platforms/page.db05694ed4113dab.css.pnext-asset.js} +0 -0
  504. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/{editor/editor.c496247a81ed832c.css.pnext-asset.js → [slug]/platforms/[app]/app-cards.d2f5c8d620066e05.css.pnext-asset.js} +0 -0
  505. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{layout.a4efa8d807fe5416.css.pnext-asset.js → agents/agent/hero.243d85cac1f22df2.css.pnext-asset.js} +0 -0
  506. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{settings/[tab]/@/app/dash/[org]/setup/outcome.3ad5f7ec67e5238d.css.pnext-asset.js → agents/agent/instructions.4c31196fcbf9846c.css.pnext-asset.js} +0 -0
  507. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{settings/[tab]/connections-list.46786fe36b121a43.css.pnext-asset.js → agents/editor/editor.6b9a1d5c0a490153.css.pnext-asset.js} +0 -0
  508. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{settings/[tab]/credentials-list.f7c27f170ec1e868.css.pnext-asset.js → layout.52abe52dcfa736d7.css.pnext-asset.js} +0 -0
  509. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{engines-list.9927d602ebe9e7fc.css.pnext-asset.js → advanced-list.819e410e4178b328.css.pnext-asset.js} +0 -0
  510. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{list.8cbee173a5aff98d.css.pnext-asset.js → connections-list.87962937438296f1.css.pnext-asset.js} +0 -0
  511. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{runners-list.53c7ea80b6fb734c.css.pnext-asset.js → credentials-list.973f91751525bcb6.css.pnext-asset.js} +0 -0
  512. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{tasks/[id]/task-view.57990cfd2bdf5c11.css.pnext-asset.js → settings/[tab]/list.69d1b62c4066015b.css.pnext-asset.js} +0 -0
  513. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{tasks/composer.5b8687662e1629fa.css.pnext-asset.js → settings/[tab]/models-list.efd3f5781314c1d9.css.pnext-asset.js} +0 -0
  514. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{tasks/list/tasks-list.abbbc9ace4d866e5.css.pnext-asset.js → settings/[tab]/runners-list.df35d33aba0c8b07.css.pnext-asset.js} +0 -0
  515. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{globals.c8fd2b8b01e7077b.css.pnext-asset.js → dash/[org]/settings/model-pick.74fababc0cc0bba7.css.pnext-asset.js} +0 -0
  516. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{responsive.ebc5f7d77b4b86a0.css.pnext-asset.js → dash/[org]/tasks/[id]/task-view.aae9fa481b9015d1.css.pnext-asset.js} +0 -0
  517. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/frame/page-head.364ec93a8e7857b3.css.pnext-asset.js → app/dash/[org]/tasks/composer.33d49ad218253703.css.pnext-asset.js} +0 -0
  518. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/frame/task-toasts.d13d9f628e530552.css.pnext-asset.js → app/dash/[org]/tasks/list/pending-approvals.07e59a9cae7ccf29.css.pnext-asset.js} +0 -0
  519. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/ui/badge.0cb1513f8b077560.css.pnext-asset.js → app/dash/[org]/tasks/list/tasks-list.f3737549b4696cc8.css.pnext-asset.js} +0 -0
  520. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/ui/button.d7f4433f4e7faa80.css.pnext-asset.js → app/globals.3b53a3feaa1d72e1.css.pnext-asset.js} +0 -0
  521. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/ui/card.f80288cc42f9bcae.css.pnext-asset.js → app/responsive.2979ffa0161a5afd.css.pnext-asset.js} +0 -0
  522. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/{ui/filter.b53f21acc3e2cfef.css.pnext-asset.js → frame/page-head.9fcc49ddf7119d75.css.pnext-asset.js} +0 -0
  523. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/{ui/menu.25b184f68cba7b46.css.pnext-asset.js → frame/task-toasts.682322f6f729b33e.css.pnext-asset.js} +0 -0
  524. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{modal.9db07d368dcf5981.css.pnext-asset.js → badge.8e2a9842b28f44a6.css.pnext-asset.js} +0 -0
  525. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{segmented.0bd8652fdbc05eb0.css.pnext-asset.js → button.2b18ba19ae01e2bb.css.pnext-asset.js} +0 -0
  526. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{sentinel.1e3ec9bd6008d811.css.pnext-asset.js → card.4ab7ad42a0770726.css.pnext-asset.js} +0 -0
  527. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tabs.ca13e40ff54128d0.css.pnext-asset.js → filter.6fdff1e7355aaa0e.css.pnext-asset.js} +0 -0
  528. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{toolbar.19e1ce5224a23acf.css.pnext-asset.js → menu.cd96fa0495fe0fde.css.pnext-asset.js} +0 -0
@@ -1,10 +0,0 @@
1
- import{$t as e,Cr as t,Di as n,Ei as r,Er as i,Fi as a,Gr as o,Ir as s,Jr as c,Kn as l,Lr as u,Ni as d,Oi as f,Or as ee,Pn as te,Pr as ne,Rt as re,Tn as ie,Tr as ae,Ui as p,Ur as oe,Vr as se,Wt as ce,X as le,Yn as ue,Yr as de,Yt as fe,_i as pe,bi as me,br as he,er as ge,gn as _e,gt as ve,hr as ye,in as be,kr as xe,nt as Se,vi as Ce,vn as we,wr as Te,yi as Ee,yt as De,zi as Oe,zn as ke}from"./core-DwsAMCnL.js";import m from"node:path";import h from"node:process";import{fileURLToPath as Ae}from"node:url";import g from"node:fs";import{execFileSync as _,spawn as v,spawnSync as je}from"node:child_process";import{createHash as y,randomUUID as b}from"node:crypto";import x from"node:os";import Me from"node:net";import Ne from"node:readline";import{channel as Pe}from"node:diagnostics_channel";function Fe(e,t){return{type:e,props:t}}const Ie=Fe;function Le(e){return e.children}function Re(e){return e.children}const ze={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&apos;`},Be=(e,t)=>e.replace(t,e=>ze[e]);function S(e,t,n){if(e==null||typeof e==`boolean`)return;if(typeof e==`string`||typeof e==`number`){let r=String(e);n.push(t?Be(r,/[&<>]/g):r);return}if(Array.isArray(e)){for(let r of e)S(r,t,n);return}let{type:r,props:i}=e,a=i.children;if(r===Re)return i.value!==void 0&&S(JSON.stringify(i.value,null,2),!0,n),S(a,!0,n);if(typeof r==`function`)return S(r(i),t,n);let o=[];S(a,t,o);let s=Ve(o);if(!s.length&&!i.keep)return;let c=``;for(let e in i){let t=i[e];if(e!==`children`&&e!==`keep`&&t!=null){if(typeof t!=`string`&&typeof t!=`number`&&typeof t!=`boolean`)throw Error(`contextjsx: attribute ${e} on <${r}> must be a string, number or boolean`);c+=` ${e}="${Be(String(t),/[&<>"']/g)}"`}}n.push({name:r,attributes:c,children:s})}function Ve(e){let t=[],n=``,r=()=>{let e=n.trim();e&&t.push(e),n=``};for(let i of e)typeof i==`string`?n+=i:(r(),t.push(i));return r(),t}function He(e,t,n){return e.map(e=>typeof e==`string`?t?e.replace(/^(?=.)/gm,t):e:e.children.length?`${t}<${e.name}${e.attributes}>\n${He(e.children,t+n,n)}\n${t}</${e.name}>`:`${t}<${e.name}${e.attributes}/>`).join(`
2
- `)}function Ue(e,t={}){let n=[];return S(e,!1,n),He(Ve(n),``,` `.repeat(t.indent??1))}function We(e){return e}function Ge(e){return e}function Ke(e){return e}function qe(e){return e}function Je(e,t){if(!t)return``;if(!m.isAbsolute(t))return t;let n=m.relative(e,t);return n&&!n.startsWith(`..`)?n:t}function Ye(e){try{return JSON.parse(g.readFileSync(e,`utf8`))}catch{return null}}function Xe(e,t){g.mkdirSync(m.dirname(e),{recursive:!0});let n=`${e}.${process.pid}.${b()}.tmp`;try{g.writeFileSync(n,t,{encoding:`utf8`,flag:`wx`}),g.renameSync(n,e)}finally{g.rmSync(n,{force:!0})}}function Ze(e,t){Xe(e,`${JSON.stringify(t,null,2)}\n`)}function Qe(e,t){if(g.mkdirSync(m.dirname(t),{recursive:!0}),g.existsSync(t))throw Object.assign(Error(`Directory already exists: ${t}`),{code:`EEXIST`});try{g.renameSync(e,t);return}catch(e){if(e.code!==`EXDEV`)throw e}let n=`${t}.${process.pid}.${b()}.tmp`;try{g.cpSync(e,n,{recursive:!0,preserveTimestamps:!0,verbatimSymlinks:!0,errorOnExist:!0,force:!1}),g.renameSync(n,t),g.rmSync(e,{recursive:!0})}finally{g.rmSync(n,{recursive:!0,force:!0})}}async function $e(e,t){if(await g.promises.mkdir(m.dirname(t),{recursive:!0}),await g.promises.lstat(t).catch(e=>{if(e.code!==`ENOENT`)throw e}))throw Object.assign(Error(`Directory already exists: ${t}`),{code:`EEXIST`});try{await g.promises.rename(e,t);return}catch(e){if(e.code!==`EXDEV`)throw e}let n=`${t}.${process.pid}.${b()}.tmp`;try{await g.promises.cp(e,n,{recursive:!0,preserveTimestamps:!0,verbatimSymlinks:!0,errorOnExist:!0,force:!1}),await g.promises.rename(n,t),await g.promises.rm(e,{recursive:!0})}finally{await g.promises.rm(n,{recursive:!0,force:!0})}}function et(e,t=0){let n=t,r=``;return()=>{let t;try{t=g.statSync(e).size}catch{return[]}if(t<n&&(n=0,r=``),t===n)return[];let i;try{i=g.openSync(e,`r`)}catch{return[]}try{let e=Buffer.alloc(t-n),a=g.readSync(i,e,0,e.length,n);n+=a;let o=(r+e.toString(`utf8`,0,a)).split(`
3
- `);return r=o.pop()??``,o.filter(Boolean)}finally{g.closeSync(i)}}}function C(e,t){let n=!1,r=!1,i=new Set,a=()=>{n=!0;for(let e of[...i])e()},o=e?setImmediate(()=>{a(),t?.(null)}):void 0,s;try{e&&(s=g.watch(e,{persistent:!1},(e,n)=>{a(),t?.(n)})),s?.on(`error`,a)}catch{}return{notify:a,wait(e,t){return r||n||t?.aborted||e<=0?(n=!1,Promise.resolve()):new Promise(r=>{let a=()=>{clearTimeout(o),t?.removeEventListener(`abort`,a),i.delete(a),n=!1,r()},o=setTimeout(a,e);i.add(a),t?.addEventListener(`abort`,a,{once:!0})})},async until(e,t,n,i=3e4){let a=Date.now()+t;try{for(;;){let t=await e();if(t!==void 0||r||Date.now()>=a||n?.aborted)return t;await this.wait(Math.min(i,a-Date.now()),n)}}finally{this.close()}},close(){r=!0,clearImmediate(o),s?.close();for(let e of[...i])e()}}}async function tt(e,t,n=3e4,r=1/0){g.mkdirSync(m.dirname(e),{recursive:!0});let i=g.mkdtempSync(`${e}-`),a=`${process.pid}-${b()}`;g.mkdirSync(m.join(i,a));let o=C(m.dirname(e)),s=Date.now()+r,c=!1,l;try{for(;!c;)try{if(g.existsSync(e))throw Object.assign(Error(`Lock is held`),{code:`EEXIST`});g.renameSync(i,e),c=!0}catch(t){if(![`EEXIST`,`ENOTEMPTY`,`ENOTDIR`].includes(t.code??``))throw t;try{let t=g.statSync(e).isFile(),r=t?[``]:g.readdirSync(e);for(let i of r){let r=t?e:m.join(e,i),a=Number(t?g.readFileSync(e,`utf8`):i.split(`-`)[0]),o=(!t||!a)&&Date.now()-g.statSync(r).mtimeMs>n;if(a)try{process.kill(a,0)}catch(e){o||=e.code===`ESRCH`}o&&(t?g.unlinkSync(r):g.rmdirSync(r))}!t&&(r.length||n===1/0||Date.now()-g.statSync(e).mtimeMs>n)&&g.rmdirSync(e)}catch{}if(Date.now()>=s)throw Error(`File lock wait timed out`);await o.wait(Math.min(3e4,n,s-Date.now()))}return l=setInterval(()=>{try{g.utimesSync(m.join(e,a),new Date,new Date)}catch{}},1e3),l.unref(),await t()}finally{if(o.close(),clearInterval(l),c){try{g.rmdirSync(m.join(e,a))}catch{}try{g.rmdirSync(e)}catch{}}else g.rmSync(i,{recursive:!0,force:!0})}}const w=p(`ZodMiniType`,(e,t)=>{if(!e._zod)throw Error(`Uninitialized schema in ZodMiniType.`);oe.init(e,t),e.def=t,e.type=t.type,e.parse=(t,n)=>pe(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>Ee(e,t,n),e.parseAsync=async(t,n)=>Ce(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>me(e,t,n),e.check=(...n)=>e.clone({...t,checks:[...t.checks??[],...n.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]},{parent:!0}),e.with=e.check,e.clone=(t,n)=>r(e,t,n),e.brand=()=>e,e.register=((t,n)=>(t.add(e,n),e)),e.apply=t=>t(e)}),nt=p(`ZodMiniString`,(e,t)=>{s.init(e,t),w.init(e,t)});function T(e){return be(nt,e)}const rt=p(`ZodMiniStringFormat`,(e,t)=>{u.init(e,t),nt.init(e,t)}),it=p(`ZodMiniURL`,(e,t)=>{o.init(e,t),rt.init(e,t)});function at(e){return we(it,e)}const ot=p(`ZodMiniNumber`,(e,t)=>{Te.init(e,t),w.init(e,t)});function st(e){return fe(ot,e)}const ct=p(`ZodMiniNumberFormat`,(e,t)=>{ae.init(e,t),ot.init(e,t)});function lt(e){return De(ct,e)}const ut=p(`ZodMiniBoolean`,(e,t)=>{ke.init(e,t),w.init(e,t)});function dt(e){return le(ut,e)}const ft=p(`ZodMiniUnknown`,(e,t)=>{de.init(e,t),w.init(e,t)});function pt(){return _e(ft)}const mt=p(`ZodMiniNever`,(e,t)=>{he.init(e,t),w.init(e,t)});function ht(e){return ce(mt,e)}const gt=p(`ZodMiniArray`,(e,t)=>{te.init(e,t),w.init(e,t)});function _t(e,t){return new gt({type:`array`,element:e,...d(t)})}const vt=p(`ZodMiniObject`,(e,t)=>{i.init(e,t),w.init(e,t),n(e,`shape`,()=>t.shape)});function yt(e,t){let n={type:`object`,shape:e??{},...d(t)};return new vt(n)}function bt(e,t){return new vt({type:`object`,shape:e,catchall:ht(),...d(t)})}function xt(e,t){return f(e,t)}function St(e,t){return a(Nt,e,t)}const Ct=p(`ZodMiniUnion`,(e,t)=>{c.init(e,t),w.init(e,t)});function wt(e,t){return new Ct({type:`union`,options:e,...d(t)})}const Tt=p(`ZodMiniRecord`,(e,t)=>{ne.init(e,t),w.init(e,t)});function Et(e,t,n){return!t||!t._zod?new Tt({type:`record`,keyType:T(),valueType:e,...d(t)}):new Tt({type:`record`,keyType:e,valueType:t,...d(n)})}const Dt=p(`ZodMiniEnum`,(e,t)=>{ge.init(e,t),w.init(e,t),e.options=Object.values(t.entries)});function Ot(e,t){let n=Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e;return new Dt({type:`enum`,entries:n,...d(t)})}const kt=p(`ZodMiniLiteral`,(e,t)=>{ye.init(e,t),w.init(e,t)});function At(e,t){return new kt({type:`literal`,values:Array.isArray(e)?e:[e],...d(t)})}const jt=p(`ZodMiniTransform`,(e,t)=>{se.init(e,t),w.init(e,t)});function Mt(e){return new jt({type:`transform`,transform:e})}const Nt=p(`ZodMiniOptional`,(e,t)=>{ee.init(e,t),w.init(e,t)});function E(e){return new Nt({type:`optional`,innerType:e})}const Pt=p(`ZodMiniNullable`,(e,n)=>{t.init(e,n),w.init(e,n)});function Ft(e){return new Pt({type:`nullable`,innerType:e})}const It=p(`ZodMiniDefault`,(e,t)=>{ue.init(e,t),w.init(e,t)});function Lt(e,t){return new It({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():Oe(t)}})}const Rt=p(`ZodMiniPipe`,(e,t)=>{xe.init(e,t),w.init(e,t)});function zt(e,t){return new Rt({type:`pipe`,in:e,out:t})}const Bt=p(`ZodMiniCustom`,(e,t)=>{l.init(e,t),w.init(e,t)});function Vt(t,n={}){return e(Bt,t,n)}const Ht=ie;function Ut(e){return Se(ot,e)}const D=T().check(re(1)),Wt=yt({access_token:D,token_type:T().check(Vt(e=>e.toLowerCase()===`bearer`)),refresh_token:E(D),expires_in:E(st().check(ve(0))),scope:E(T()),name:E(D),preferred_username:E(D),email:E(D)}),Gt=yt({error:D});function Kt(e){let t=new URL(e),n=t.hostname===`localhost`||t.hostname===`[::1]`||/^127\.(?:\d{1,3}\.){2}\d{1,3}$/.test(t.hostname);if(t.protocol!==`https:`&&!(t.protocol===`http:`&&n)||t.username||t.password||t.hash)throw Error(`OAuth URLs require HTTPS or loopback and no credentials or fragment.`);return t}async function qt(e,t,n={}){let r=Kt(t).origin;for(let i=0;i<5;i++){let i=await e(t,{...n,redirect:`manual`,signal:n.signal??AbortSignal.timeout(15e3)});if(i.status<300||i.status>=400)return i;let a=i.headers.get(`location`);if(!a)throw Error(`OAuth redirect has no location.`);let o=Kt(new URL(a,t).href);if(o.origin!==r)throw Error(`OAuth redirect changed origin.`);if(await i.body?.cancel(),i.status===303||(i.status===301||i.status===302)&&n.method===`POST`)throw Error(`OAuth redirect would discard the request body.`);t=o.href}throw Error(`Too many OAuth redirects.`)}function Jt(e,t){let n=new Headers({"content-type":`application/x-www-form-urlencoded`,accept:`application/json`}),r=e.tokenEndpointAuthMethod??(e.clientSecret?`client_secret_basic`:`none`);if(r!==`none`&&!e.clientSecret)throw Error(`OAuth client secret is missing.`);if(r===`client_secret_basic`){let t=e=>new URLSearchParams({v:e}).toString().slice(2);n.set(`authorization`,`Basic ${Buffer.from(`${t(e.clientId)}:${t(e.clientSecret)}`).toString(`base64`)}`)}else t.set(`client_id`,e.clientId),r===`client_secret_post`&&t.set(`client_secret`,e.clientSecret);return n}async function Yt(e,t,n){n.set(`resource`,t.resource);let r=Jt(t,n),i=await qt(e,t.tokenEndpoint,{method:`POST`,headers:r,body:n}),a=await i.json();if(!i.ok){let e=Gt.safeParse(a);throw n.get(`grant_type`)===`refresh_token`&&i.status>=400&&i.status<500&&e.success&&[`invalid_grant`,`invalid_client`].includes(e.data.error)?new O(`The OAuth connection must be reconnected.`):Error(`OAuth token request failed.`)}return Wt.parse(a)}function Xt(e,t,n){return{...e,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,expiresAt:t.expires_in===void 0?void 0:n+t.expires_in*1e3,scope:t.scope??e.scope}}async function Zt(e){let{secret:t,now:n}=e;if(!e.force&&t.accessToken&&(t.expiresAt===void 0?!t.refreshToken:t.expiresAt-n>=6e4))return t.accessToken;if(!t.refreshToken)throw new O(`The OAuth connection must be reconnected.`);let r=Xt(t,await Yt(e.fetch,t,new URLSearchParams({grant_type:`refresh_token`,refresh_token:t.refreshToken})),n);return await e.save(r),r.accessToken}var O=class extends Error{},k=class extends Error{authenticate;constructor(e,t){super(e),this.authenticate=t}};function A(e){return/^[A-Z][A-Z0-9_]*$/.test(e)&&!/^(CODER_|CODEX_|LD_|DYLD_|GIT_|APP_TOKEN(?:_|$))/.test(e)&&![`PATH`,`HOME`,`SHELL`,`USER`,`PWD`,`TMPDIR`,`NODE_OPTIONS`,`NODE_PATH`,`BASH_ENV`,`ENV`,`OPENAI_API_KEY`,`ANTHROPIC_API_KEY`,`CLAUDE_CODE_OAUTH_TOKEN`,`CODEX_AUTH_JSON`,`CODEX_HOME`,`CLAUDE_CONFIG_DIR`,`OPENAI_BASE_URL`,`ANTHROPIC_BASE_URL`].includes(e)}function Qt(e,t){return t?e?t.filter(t=>e.includes(t)):t:e}function $t(e){let t=new Set,n=new Set;for(let r of e){if(r.provider!==`env`||!r.keyIn||!(`env`in r.keyIn))continue;let e=r.keyIn.env;t.has(e)&&n.add(e),t.add(e)}return n}function j(e=process.env){let t=JSON.parse(e.CODER_CONNECTION_ENV_VALUES??`{}`);return Object.fromEntries(Object.entries(t).filter(e=>A(e[0])&&typeof e[1]==`string`))}function en(e=process.env){let t=Object.entries(j(e)).sort(([e],[t])=>e.localeCompare(t));return t.length?y(`sha256`).update(JSON.stringify(t)).digest(`hex`):void 0}function M(e=process.env){return{...Object.fromEntries(Object.entries(e).filter(([e])=>!e.startsWith(`CODER_CONNECTION_`)&&e!==`CODER_MCP_CONNECTION_ENV`)),...Object.fromEntries(Object.entries(j(e)).filter(([t])=>e[t]===void 0))}}function tn(e){let t={};for(let n of Object.values(e))for(let[e,r]of Object.entries(n.env??{}))t[e]=Object.hasOwn(t,e)?null:r;return t}const nn=e=>e instanceof k||e instanceof O,N=(e,t)=>nn(t)?`${e} needs reconnecting.`:`${e} is temporarily unavailable; skipped for this task.`;function rn(e){if(e.status===401||e.status===403)throw new k(`MCP credential was refused`,e.headers.get(`www-authenticate`)??void 0);if(!e.ok)throw Error(`MCP did not answer`)}const an=e=>/^[a-zA-Z0-9_.-]{1,128}$/.test(e);function on(e,t){return!e.username&&!e.password&&(t||!/^(?:(?:[a-z0-9_-]+\.)*localhost\.?|127\.\d+\.\d+\.\d+|\[::1\]|\[::ffff:7f[0-9a-f]{2}:[0-9a-f]{1,4}\])$/i.test(e.hostname))&&(e.protocol===`https:`||e.protocol===`http:`&&[`localhost`,`127.0.0.1`,`[::1]`].includes(e.hostname))}function P(e,t){try{return JSON.parse(g.readFileSync(e,`utf8`))}catch(e){if(e.code===`ENOENT`)return t;throw e}}function F(e,t){g.mkdirSync(m.dirname(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;try{g.writeFileSync(n,`${JSON.stringify(t,null,2)}\n`,{mode:384}),g.chmodSync(n,384),g.renameSync(n,e)}finally{g.rmSync(n,{force:!0})}}var sn=class{secrets;file;credentialFile;lock;constructor(e=H(),t=process.platform,n){this.file=m.join(e,`connections.json`),this.credentialFile=m.join(e,`local-credentials.json`),this.lock=m.join(e,`state`,`global`,`connections.lock`);let r=m.join(e,`credentials.json`);this.secrets=n??(t===`darwin`?{get(e){try{return _(`security`,[`find-generic-password`,`-s`,`coder`,`-a`,e,`-w`],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`pipe`]}).trimEnd()}catch(e){if(e.status===44)return;throw Error(`Could not read the connection keychain`)}},put(e,t){try{let n=e=>`"`+e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`)+`"`;if(/[\r\n\0]/.test(e+t))throw Error(`Invalid keychain value`);_(`security`,[`-i`],{input:`add-generic-password -U -s coder -a ${n(e)} -w ${n(t)}\n`,stdio:[`pipe`,`pipe`,`pipe`]})}catch{throw Error(`Could not save the connection keychain`)}},delete(e){try{_(`security`,[`delete-generic-password`,`-s`,`coder`,`-a`,e],{stdio:[`ignore`,`pipe`,`pipe`]})}catch(e){if(e.status!==44)throw Error(`Could not remove the connection keychain`)}}}:{get:e=>P(r,{})[e],put(e,t){F(r,{...P(r,{}),[e]:t})},delete(e){let t=P(r,{});delete t[e],F(r,t)}})}async withLock(e,t){return tt(t===void 0?this.lock:`${this.lock}-${y(`sha256`).update(t).digest(`hex`)}`,e)}list(){return Object.values(P(this.file,{}))}get(e){let t=this.list().find(t=>t.id===e);if(!t)return;let n;try{n=t.auth===`none`?void 0:this.secrets.get(e)}catch{return{...t,broken:{at:Date.now(),reason:`Needs reconnecting`}}}return{...t,...n?{secret:n}:{}}}put(e){if(e.provider===`env`&&(e.auth!==`key`||e.access!==`write`||e.endpoint||e.secret||!e.credential||!e.keyIn||!(`env`in e.keyIn)||!A(e.keyIn.env)))throw Error(`Invalid environment connection`);let{secret:t,...n}=e,r=P(this.file,{});t?this.secrets.put(e.id,t):r[e.id]?.auth!==`none`&&r[e.id]&&this.secrets.delete(e.id),r[e.id]=n,F(this.file,r)}delete(e){let t=P(this.file,{}),n=t[e]&&t[e].auth!==`none`;delete t[e],F(this.file,t),n&&this.secrets.delete(e)}credentials(){return Object.entries(P(this.credentialFile,{})).flatMap(([e,t])=>{let n=this.secrets.get(`credential/${e}`);return n?[{id:e,value:{...t,...JSON.parse(n)}}]:[]})}credential(e){let t=P(this.credentialFile,{})[e];if(!t)return;let n=this.secrets.get(`credential/${e}`);return n?{...t,...JSON.parse(n)}:void 0}putCredential(e,t){let{iv:n,tag:r,ciphertext:i,...a}=t;this.secrets.put(`credential/${e}`,JSON.stringify({iv:n,tag:r,ciphertext:i})),F(this.credentialFile,{...P(this.credentialFile,{}),[e]:a})}deleteCredential(e){let t=P(this.credentialFile,{});delete t[e],F(this.credentialFile,t),this.secrets.delete(`credential/${e}`)}};async function cn(e,t=fetch,n){let r=`2025-11-25`,i=e=>n?Promise.race([e,new Promise((e,t)=>{let r=()=>t(n.reason??Error(`MCP startup timed out`));n.aborted&&r(),n.addEventListener(`abort`,r,{once:!0})})]):e,a=await i(e.command?ln(e):un(e,t,()=>r)),o=1,s=(e,t,n)=>a.rpc(e,t,o++,n),c,l={initialize:()=>c??=i(s(`initialize`,{protocolVersion:r,capabilities:{},clientInfo:{name:`coder`,version:`1`}},n).then(async e=>{r=e?.protocolVersion??r,await a.rpc(`notifications/initialized`)})),async tools(){await l.initialize();let e=[],t=new Set,r;do{let a=await i(s(`tools/list`,r===void 0?{}:{cursor:r},n));if(!Array.isArray(a?.tools))throw Error(`Invalid tools`);if(e.push(...a.tools.filter(e=>typeof e.name==`string`)),r=a.nextCursor,r!==void 0){if(typeof r!=`string`||t.has(r))throw Error(`Invalid tools cursor`);t.add(r)}}while(r!==void 0);return e},close:()=>a.close()};return l}async function ln(e){let{spawn:t}=await import(`node:child_process`),n=await import(`node:readline`),r=t(e.command,e.args??[],{env:{...process.env,...e.env},stdio:[`pipe`,`pipe`,`inherit`]}),i=new Map,a,o=e=>{a=e;for(let t of i.values())t.reject(e);i.clear()};return r.once(`error`,t=>o(Error(`MCP server ${e.name} could not start: ${t.message}`))),r.once(`close`,t=>o(Error(`MCP server ${e.name} exited with status ${t}`))),r.stdin.on(`error`,o),n.createInterface({input:r.stdout,terminal:!1}).on(`line`,e=>{let t;try{t=JSON.parse(e)}catch{return}let n=t.id===void 0?void 0:i.get(t.id);n&&(i.delete(t.id),t.error?n.reject(Error(t.error.message??`MCP error`)):n.resolve(t.result))}),{rpc(e,t,n,o){if(a)return Promise.reject(a);let s=n===void 0?Promise.resolve(void 0):new Promise((e,t)=>i.set(n,{resolve:e,reject:t}));return r.stdin.write(`${JSON.stringify({jsonrpc:`2.0`,method:e,...n===void 0?{}:{id:n},...t?{params:t}:{}})}\n`),s},async close(){r.stdin.end(),r.kill()}}}async function un(e,t,n){let r,i=()=>({...e.headers,"mcp-protocol-version":n(),...r?{"mcp-session-id":r}:{}});return{async rpc(n,a,o,s){let c=await t(e.url,{method:`POST`,redirect:`manual`,...s?{signal:s}:{},headers:{...i(),"content-type":`application/json`,accept:`application/json, text/event-stream`},body:JSON.stringify({jsonrpc:`2.0`,method:n,...o===void 0?{}:{id:o},...a?{params:a}:{}})});if(rn(c),r=c.headers.get(`mcp-session-id`)??r,o===void 0){await c.body?.cancel();return}let l=await c.text(),u=(c.headers.get(`content-type`)?.includes(`text/event-stream`)?l.split(/\r?\n\r?\n/).flatMap(e=>{let t=e.split(/\r?\n/).filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trimStart()).join(`
4
- `);return t?[JSON.parse(t)]:[]}):[JSON.parse(l)]).find(e=>e.id===o);if(!u?.result||u.error)throw Error(`Invalid MCP response`);return u.result},async close(){r&&await t(e.url,{method:`DELETE`,redirect:`manual`,headers:i()}).then(e=>e.body?.cancel()).catch(()=>{})}}}async function dn(e,t,n=fetch){if(!e.endpoint)throw Error(`Missing endpoint`);let r={...e.endpoint,name:e.id};if(t)if(r.command){if(!e.keyIn||!(`env`in e.keyIn))throw Error(`Missing key env`);r.env={...r.env,[e.keyIn.env]:t},r.credentialFields={env:e.keyIn.env}}else{let n=e.keyIn&&`header`in e.keyIn?e.keyIn.header:`Authorization`;r.headers={...r.headers,[n]:n.toLowerCase()===`authorization`?`Bearer ${t}`:t},r.credentialFields={header:n}}if(r.command){if(e.access===`read`&&!r.tools?.length)throw Error(`Read-only requires tools`);return r}let i=await cn(r,n,AbortSignal.timeout(5e3));try{return await i.initialize(),e.access===`write`?r:(r.tools=(await i.tools()).filter(t=>an(t.name)&&t.annotations?.readOnlyHint===!0&&(!e.endpoint?.tools?.length||e.endpoint.tools.includes(t.name))).map(e=>e.name),r.tools.length?r:void 0)}finally{await i.close()}}function fn(e,t={}){let n=new Set(mn()),r=Object.keys(t).length?{CODER_CONNECTION_ENV_VALUES:JSON.stringify(t)}:{};return{mcp:Object.fromEntries(Object.entries(e).map(([e,t])=>{let{credentialFields:i,...a}=t,o=a=>t[a]&&Object.fromEntries(Object.entries(t[a]).map(([t,o])=>{if(!(t===i?.[a===`env`?`env`:`header`]||n.has(o)))return[t,o];let s=`CODER_CONNECTION_${y(`sha256`).update(`${e}:${a}:${t}`).digest(`hex`).slice(0,24).toUpperCase()}`;return r[s]=o,[t,"${"+s+`}`]}));return[e,{...a,...t.env?{env:o(`env`)}:{},...t.headers?{headers:o(`headers`)}:{}}]})),env:r}}async function pn(e,t,n=new sn,r=`write`){let i=t??n.list().filter(t=>!t.owner&&(e===void 0||e.includes(t.id))).map(e=>e.id),a={},o={},s=[],c=$t(n.list().filter(e=>i.includes(e.id)&&!e.owner));return await Promise.all(i.map(async e=>{let t=n.get(e);if(!t||t.owner||![`mcp`,`env`].includes(t.provider))return;if(t.provider===`env`&&(t.auth!==`key`||t.access!==`write`||t.endpoint||!t.credential||!t.keyIn||!(`env`in t.keyIn)||!A(t.keyIn.env)||c.has(t.keyIn.env)||process.env[t.keyIn.env]!==void 0)){s.push(N(t.name,Error(`Invalid environment connection`)));return}if(t.broken){s.push(`${t.name} needs reconnecting.`);return}if(t.provider===`env`){let e=t.keyIn.env;try{let r=n.credential(t.credential),i=r?.iv===`plain`?JSON.parse(Buffer.from(r.ciphertext,`base64`).toString(`utf8`)).env[e]:void 0;if(!i)throw Error(`Missing credential`);o[e]=i}catch(e){s.push(N(t.name,e))}return}let i=async(r=!1,i)=>n.withLock(async()=>{let a=n.get(e);if(!a||a.owner||a.broken||a.auth!==t.auth)throw Error(`Connection changed during resolution`);if(t=a,!a.secret)throw Error(`Missing credential`);let o=a.secret.startsWith(`plain.`)?JSON.parse(Buffer.from(a.secret.slice(6),`base64`).toString(`utf8`)):{key:a.secret};return a.auth===`key`?o.key:Zt({secret:o,fetch,now:Date.now(),force:r&&o.accessToken===i,save:async t=>n.withLock(async()=>{let r=n.get(e);if(!r||r.secret!==a.secret||r.auth!==a.auth||r.owner!==a.owner)throw Error(`Connection changed during refresh`);a.secret=`plain.${Buffer.from(JSON.stringify(t)).toString(`base64`)}`,n.put(a)})})},e);try{let n=t.auth===`none`?void 0:await i();if(t.auth!==`none`&&!n)throw Error(`Missing credential`);let o;try{o=await dn({...t,access:t.access??r},n)}catch(e){if(!(e instanceof k)||t.auth!==`oauth`)throw e;n=await i(!0,n),o=await dn({...t,access:t.access??r},n)}o&&(a[e]={...o,description:t.name,access:t.access??r})}catch(r){nn(r)&&await n.withLock(async()=>{let r=n.get(e);r&&r.secret===t.secret&&n.put({...r,broken:{at:Date.now(),reason:`Needs reconnecting`}})}),s.push(N(t.name,r))}})),{...fn(a,o),ids:i,warnings:s}}function mn(){return Object.entries(process.env).filter(([e,t])=>/^CODER_CONNECTION_[A-F0-9]{24}$/.test(e)&&t).flatMap(([,e])=>[e,...e.startsWith(`Bearer `)?[e.slice(7)]:[]])}function hn(e,t=[]){let n=Object.entries(j()).filter(([,e])=>e.length>=8).map(([e,t])=>[t,`[${e}]`]),r=[...t,...mn()].filter(Boolean).map(e=>[e,`[REDACTED]`]),i=[...n,...r].sort(([e],[t])=>t.length-e.length);return JSON.stringify(e,(e,t)=>typeof t==`string`?i.reduce((e,[t,n])=>e.replaceAll(t,n),t):t)}function gn(e){return String(e??``).replace(/[^A-Za-z0-9._-]/g,`-`).replace(/^-+|-+$/g,``)}function _n(e,t=h.platform){return t===`win32`?`pipe:\\\\.\\pipe\\${gn(`${m.win32.basename(e)}-codex-app-server`)}`:`unix:${m.join(e,`broker.sock`)}`}function I(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 vn(){let e=m.dirname(Ae(import.meta.url));for(let t=0;t<10;t++){let t=m.join(e,`package.json`);try{if(JSON.parse(g.readFileSync(t,`utf8`)).name===`@wular/coder`)return e}catch{}let n=m.dirname(e);if(n===e)break;e=n}return m.resolve(m.dirname(Ae(import.meta.url)),`..`)}const L=vn(),yn=g.existsSync(m.join(L,`dist/cli.js`))?m.join(L,`dist/cli.js`):m.join(L,`src/cli.ts`);function bn(){try{return JSON.parse(g.readFileSync(m.join(L,`package.json`),`utf8`)).version??`unknown`}catch{return`unknown`}}function xn(e){try{return JSON.parse(g.readFileSync(e,`utf8`)).version??null}catch{return null}}function Sn(){return L}const Cn={false:`broker.json`,true:`broker-network.json`};function wn(e=`coder-`){return g.mkdtempSync(m.join(x.tmpdir(),e))}function Tn(e){let t=I(e);return Me.createConnection({path:t.path})}async function En(e,t=2e3){let n=I(e);return!!await C(m.dirname(n.path)).until(()=>new Promise(t=>{let n=Tn(e);n.on(`connect`,()=>{n.end(),t(!0)}),n.on(`error`,()=>t(void 0))}),t,void 0,n.kind===`pipe`?250:1e3)}function Dn({scriptPath:e,cwd:t,endpoint:n,pidFile:r,logFile:i,networkAccess:a=!1,env:o=h.env}){let s=g.openSync(i,`a`),c=v(h.execPath,[e,`serve`,`--endpoint`,n,`--cwd`,t,`--pid-file`,r,`--network-access`,String(a)],{cwd:t,env:{...M(o),...o.CODER_CONNECTION_ENV_VALUES?{CODER_CONNECTION_ENV_VALUES:o.CODER_CONNECTION_ENV_VALUES}:{}},detached:!0,stdio:[`ignore`,s,s]});return c.unref(),g.closeSync(s),c}function On(){let e=[new URL(`./lib/broker.js`,import.meta.url),new URL(`./main.js`,import.meta.url)];for(let t of e){let e=Ae(t);if(g.existsSync(e))return e}throw Error("Coder broker script not found next to the runtime. Rebuild with `bun run build`.")}function kn(e,t=!1,n){let r=Cn[t?`true`:`false`];return m.join(W(e),n?r.replace(`.json`,`-${n}.json`):r)}function R(e,t=!1,n){let r=kn(e,t,n);if(!g.existsSync(r))return null;try{let e=JSON.parse(g.readFileSync(r,`utf8`));return(e.networkAccess??!1)===t?e:null}catch{return null}}function An(e){let t=W(e),n;try{n=g.readdirSync(t)}catch{return[]}return n.flatMap(e=>{if(!/^broker(?:-network)?(?:-[a-f0-9]{64})?\.json$/.test(e))return[];try{let n=JSON.parse(g.readFileSync(m.join(t,e),`utf8`));return typeof n.endpoint==`string`?[n]:[]}catch{return[]}})}function jn(e,t,n=t.networkAccess??!1,r){let i=W(e);g.mkdirSync(i,{recursive:!0}),g.writeFileSync(kn(e,n,r),`${JSON.stringify(t,null,2)}\n`,`utf8`)}function Mn(e,t=!1,n){let r=kn(e,t,n);g.existsSync(r)&&g.unlinkSync(r)}async function Nn(e){if(!e)return!1;try{return await En(e,150)}catch{return!1}}async function Pn(e,t={}){let n=t.scriptPath??On(),r=bn(),i=t.networkAccess??!1,a=R(e,i,t.connectionKey),o=a?.version===r&&a?.scriptPath===n&&(a?.networkAccess??!1)===i;if(a&&o&&await Nn(a.endpoint))return a;a&&(Fn({endpoint:a.endpoint??null,pidFile:a.pidFile??null,logFile:a.logFile??null,sessionDir:a.sessionDir??null,pid:a.pid??null,killProcess:t.killProcess??null}),Mn(e,i,t.connectionKey));let s=wn(),c=(t.createBrokerEndpoint??_n)(s,t.platform),l=m.join(s,`broker.pid`),u=m.join(s,`broker.log`),d=Dn({scriptPath:n,cwd:e,endpoint:c,pidFile:l,logFile:u,networkAccess:i,env:t.env??h.env});if(!await En(c,t.timeoutMs??2e3))return Fn({endpoint:c,pidFile:l,logFile:u,sessionDir:s,pid:d.pid??null,killProcess:t.killProcess??null}),null;let f={endpoint:c,pidFile:l,logFile:u,sessionDir:s,pid:d.pid??null,networkAccess:i,version:r,scriptPath:n};return jn(e,f,i,t.connectionKey),f}function Fn({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&&g.existsSync(t)&&g.unlinkSync(t),n&&g.existsSync(n)&&g.unlinkSync(n),e)try{let t=I(e);t.kind===`unix`&&g.existsSync(t.path)&&g.unlinkSync(t.path)}catch{}let o=r??(t?m.dirname(t):n?m.dirname(n):null);if(o&&g.existsSync(o))try{g.rmdirSync(o)}catch{}}function z(e,t){let n=Pe(`coder.timing`);n.hasSubscribers&&n.publish({at:Date.now(),pid:h.pid,stage:e,...t})}function In(e,t=[],n={}){let r=je(e,t,{cwd:n.cwd,env:n.env,encoding:`utf8`,input:n.input,maxBuffer:n.maxBuffer,stdio:n.stdio??`pipe`,shell:h.platform===`win32`?h.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 Ln(e,t=[`--version`],n={}){let r=In(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 Rn(e){return new Promise(t=>{let n=v(e,h.argv.slice(1),{env:h.env,shell:!1,stdio:`inherit`}),r=()=>n.kill(`SIGINT`),i=()=>n.kill(`SIGTERM`);h.once(`SIGINT`,r),h.once(`SIGTERM`,i);let a=e=>{h.off(`SIGINT`,r),h.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}))})}const zn=`CODER_APP_SERVER_ENDPOINT`,Bn=-32001,Vn=`coder/notice`,Hn=`coder/appServerExited`,Un=`broker/recycle`;function Wn(){return{title:`Coder`,name:`coder`,version:bn()}}const Gn={experimentalApi:!0,requestAttestation:!1,optOutNotificationMethods:[`item/agentMessage/delta`,`item/reasoning/summaryTextDelta`,`item/reasoning/summaryPartAdded`,`item/reasoning/textDelta`]};function Kn(e,t,n){return n===void 0?{code:e,message:t}:{code:e,message:t,data:n}}function B(e,t){let n=Error(e);return n.data=t,t?.code!==void 0&&(n.rpcCode=t.code),n}var qn=class{cwd;options;pending;nextId;stderr;closed;exitError;notificationHandler;serverRequestHandler;noticeHandler;lineBuffer;transport;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(`
5
- `);for(;t!==-1;){let e=this.lineBuffer.slice(0,t);this.lineBuffer=this.lineBuffer.slice(t+1),this.handleLine(e),t=this.lineBuffer.indexOf(`
6
- `)}}handleLine(e){if(!e.trim())return;let t;try{t=JSON.parse(e)}catch(t){this.handleExit(B(`Failed to parse codex app-server JSONL: ${t instanceof Error?t.message:String(t)}`,{line:e}));return}if(t.id!==void 0&&t.method){this.handleServerRequest(t);return}if(t.id!==void 0){let e=this.pending.get(t.id);if(!e)return;this.pending.delete(t.id),t.error?e.reject(B(t.error.message??`codex app-server ${e.method} failed.`,t.error)):e.resolve(t.result??{});return}if(t.method===`coder/notice`){this.noticeHandler?.(String(t.params?.message??``));return}if(t.method===`coder/appServerExited`){this.handleExit(B(String(t.params?.message??`codex app-server exited.`)));return}t.method&&this.notificationHandler&&this.notificationHandler(t)}defaultHandleServerRequest(e){let t=this.serverRequestHandler;if(!t){this.sendMessage({id:e.id,error:Kn(-32601,`Unsupported server request: ${e.method}`)});return}Promise.resolve().then(()=>t(e.method,e.params??{})).then(t=>{this.sendMessage({id:e.id,result:t??{}})}).catch(t=>{this.sendMessage({id:e.id,error:Kn(-32e3,t instanceof Error?t.message:String(t))})})}handleExit(e){if(!this.exitResolved){this.exitResolved=!0,this.exitError=e??null;for(let e of this.pending.values())e.reject(this.exitError??Error(`codex app-server connection closed.`));this.pending.clear(),this.resolveExit(void 0)}}sendMessage(e){throw Error(`sendMessage must be implemented by subclasses.`)}},Jn=class extends qn{proc;readline;constructor(e,t={}){super(e,t),this.transport=`direct`}async initialize(){let e=this.options.networkAccess??!1;z(`codex.spawn`),this.proc=v(`codex`,Yn(e,this.options.nativeMcp),{cwd:this.cwd,env:M(this.options.env??h.env),stdio:[`pipe`,`pipe`,`pipe`],shell:h.platform===`win32`?h.env.SHELL||!0:!1,windowsHide:!0});let t=this.proc.stdout,n=this.proc.stderr;if(!t||!n)throw Error(`codex app-server did not expose stdio streams.`);t.setEncoding(`utf8`),n.setEncoding(`utf8`),n.on(`data`,e=>{this.stderr+=e}),this.proc.on(`error`,e=>{this.handleExit(e)}),this.proc.stdin?.on(`error`,()=>{}),this.proc.on(`exit`,(e,t)=>{let n=this.stderr.trim(),r=e===0?null:B(`codex app-server exited unexpectedly (${t?`signal ${t}`:`exit ${e}`}).${n?`\n${n}`:``}`);this.handleExit(r)}),this.readline=Ne.createInterface({input:t}),this.readline.on(`line`,e=>{this.handleLine(e)}),await this.request(`initialize`,{clientInfo:this.options.clientInfo??Wn(),capabilities:this.options.capabilities??Gn}),this.notify(`initialized`,{}),z(`codex.initialized`)}async close(){if(this.closed){await this.exitPromise;return}this.closed=!0,this.readline&&this.readline.close(),this.proc&&!this.proc.killed&&(this.proc.stdin?.end(),setTimeout(()=>{if(this.proc&&!this.proc.killed&&this.proc.exitCode===null)if(h.platform===`win32`)try{je(`taskkill`,[`/PID`,String(this.proc.pid),`/T`,`/F`],{stdio:`ignore`})}catch{}else this.proc.kill(`SIGTERM`)},50).unref?.()),await this.exitPromise}sendMessage(e){let t=`${JSON.stringify(e)}\n`,n=this.proc?.stdin;if(!n)throw Error(`codex app-server stdin is not available.`);n.write(t)}};function Yn(e,t=!1){return[`-c`,`sandbox_workspace_write.network_access=${e}`,`app-server`,...t?[]:[`--disable`,`plugins`,`--disable`,`apps`]]}var Xn=class extends qn{endpoint;socket;constructor(e,t={}){super(e,t),this.transport=`broker`,this.endpoint=t.brokerEndpoint}async initialize(){await new Promise((e,t)=>{let n=I(this.endpoint);this.socket=Me.createConnection({path:n.path}),this.socket.setEncoding(`utf8`),this.socket.on(`connect`,e),this.socket.on(`data`,e=>{this.handleChunk(e)}),this.socket.on(`error`,e=>{this.exitResolved||t(e),this.handleExit(e)}),this.socket.on(`close`,()=>{this.handleExit(this.exitError)})}),await this.request(`initialize`,{clientInfo:this.options.clientInfo??Wn(),capabilities:this.options.capabilities??Gn}),this.notify(`initialized`,{}),z(`codex.initialized`)}async close(){if(this.closed){await this.exitPromise;return}this.closed=!0,this.socket&&this.socket.end(),await this.exitPromise}sendMessage(e){let t=`${JSON.stringify(e)}\n`,n=this.socket;if(!n)throw Error(`codex app-server broker connection is not connected.`);n.write(t)}},Zn=class{static async connect(e,t={}){let n=t.env??h.env,r=en(n);t={...t,env:M(n)};let i=t.networkAccess??!1,a=null;!t.disableBroker&&!t.nativeMcp&&(a=r?null:t.brokerEndpoint??t.env?.CODER_APP_SERVER_ENDPOINT??h.env.CODER_APP_SERVER_ENDPOINT??null,!a&&t.reuseExistingBroker&&(a=R(e,i,r)?.endpoint??null),!a&&!t.reuseExistingBroker&&(a=(await Pn(e,{env:n,networkAccess:i,connectionKey:r}))?.endpoint??null));let o=a?new Xn(e,{...t,brokerEndpoint:a}):new Jn(e,t);return await o.initialize(),o}};function Qn(){return process.env.CODEX_HOME||m.join(x.homedir(),`.codex`)}async function $n(e,t,n){for(let r of An(e)){let i=null;try{return i=await Zn.connect(e,{env:M(),brokerEndpoint:r.endpoint,networkAccess:r.networkAccess??!1,reuseExistingBroker:!0}),await i.request(t,{threadId:n}),!0}catch{}finally{await i?.close().catch(()=>{})}}return!1}function er(e){try{let t=v(`codex`,e,{detached:!0,stdio:`ignore`,env:M()});t.on(`error`,()=>{}),t.unref()}catch{}}async function tr(e,t){await $n(e,`thread/archive`,t)||er([`archive`,t])}function nr(e){let t=m.join(Qn(),`archived_sessions`);try{return g.readdirSync(t).some(t=>t.endsWith(`-${e}.jsonl`))}catch{return!1}}function rr(e){return new Promise(t=>{try{let n=v(`codex`,[`unarchive`,e],{stdio:`ignore`,env:M()});n.on(`error`,()=>t(!1)),n.on(`close`,e=>t(e===0))}catch{t(!1)}})}async function ir(e,t){return await $n(e,`thread/delete`,t)?!0:je(`codex`,[`delete`,`--force`,t],{encoding:`utf8`,env:M()}).status===0}const ar=`Background processes will not re-invoke you.`,or="Wait on each task with `coder task result <task-id> --wait` in its own background shell, one per task, never several tasks in one call, so each approval and answer reaches you.",sr=[`completed`,`failed`,`cancelled`],cr=[`queued`,`running`],lr=`History lost, starting fresh`,ur=/^[a-z0-9][a-z0-9_-]*$/i;function V(e){return ur.test(e)}function dr(e,t){if(!V(e))throw Error(`Invalid ${t} "${e}".`)}function H(...e){return m.join(m.resolve(process.env.CODER_HOME||m.join(x.homedir(),`.coder`)),...e)}function U(...e){let t=x.homedir(),n=x.platform(),r=process.env.CODER_CACHE_HOME||(n===`darwin`?m.join(t,`Library`,`Caches`,`wular-coder`):n===`win32`?m.join(process.env.LOCALAPPDATA||m.join(t,`AppData`,`Local`),`wular-coder`,`cache`):m.join(process.env.XDG_CACHE_HOME||m.join(t,`.cache`),`wular-coder`));return m.join(m.resolve(r),...e)}function fr(){return H(`state`,`global`,`flows`)}function pr(){return U(`flows-archived`)}function mr(){return U(`usage.json`)}function hr(e=mr()){return`${e}.${process.pid}.${b()}.tmp`}function gr(){return U(`runner`,`usage.json`)}function _r(e){try{return _(`git`,[`rev-parse`,`--show-toplevel`],{cwd:e,encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()}catch{return e}}function W(e){return H(`state`,`global`)}function G(e){return m.join(W(e),`jobs`)}const vr=18e5,yr=(e,t=Date.now())=>t-e>vr;function K(e){return U(`archive`)}function q(e,t){dr(t,`task id`);let n=m.join(G(e),t);if(g.existsSync(m.join(n,`job.json`)))return n;let r=m.join(K(e),t);return g.existsSync(m.join(r,`job.json`))?r:n}function br(e,t,n={}){let r=cr.includes(t.status);if(!r){let n=q(e,t.id),r=m.join(K(e),t.id);n!==r&&Qe(n,r)}let i=t.archived?n.auto||!t.autoArchived?t:X(e,t.id,{autoArchived:void 0}):X(e,t.id,{archived:!0,archivedAt:new Date().toISOString(),...n.auto?{autoArchived:!0}:{}},{touch:!n.auto});return!r&&t.engine!==`claude`&&t.threadId&&tr(e,t.threadId),i}function J(e){return!!e.archived&&(e.resumedAt??``)>(e.archivedAt??``)}function Y(e,t){let n=q(e,t.id),r=m.join(G(e),t.id);return n!==r&&Qe(n,r),X(e,t.id,{archived:void 0,archivedAt:void 0,autoArchived:void 0})}function xr(){let e=Math.random().toString(36).slice(2,8);return`task-${Date.now().toString(36)}-${e}`}function X(e,t,n,r={}){let i=q(e,t);g.mkdirSync(i,{recursive:!0});let a=m.join(i,`job.json`),o=Z(e,t)??{id:t,createdAt:new Date().toISOString(),status:`queued`},s={...o,...n,updatedAt:r.touch===!1?o.updatedAt:new Date().toISOString()};return Xe(a,`${hn(s)}\n`),s}function Z(e,t){if(!V(t))return null;let n=m.join(q(e,t),`job.json`);if(!g.existsSync(n))return null;try{return JSON.parse(g.readFileSync(n,`utf8`))}catch{return null}}function Sr(e,t){let n=q(e,t);return g.existsSync(n)?(g.rmSync(n,{recursive:!0,force:!0}),!0):!1}function Cr(e){if(!e)return!1;try{return process.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function Q(e){try{let t=_(`ps`,[`-o`,`lstart=`,`-p`,String(e)],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`],env:{...process.env,TZ:Intl.DateTimeFormat().resolvedOptions().timeZone}}).trim(),n=t?Date.parse(t):NaN;return Number.isFinite(n)?n:null}catch{return null}}function wr(e,t,n=Q){if(!Cr(e))return!1;let r=n(e),i=Date.parse(t.resumedAt??t.createdAt??``);return r===null||!Number.isFinite(i)||r<=i+6e4}function $(e,t,n=Q){let r=t.status===`running`||t.status===`queued`;if(!r&&!t.rollingOver)return t;let i;if(t.pid)i=!wr(t.pid,t,n);else{let e=Date.parse(t.updatedAt??t.createdAt??``);i=Number.isFinite(e)&&Date.now()-e>6e4}if(i){let i=Z(e,t.id);return i&&(i.status!==t.status||i.updatedAt!==t.updatedAt)?$(e,i,n):r?X(e,t.id,{status:`failed`,rollingOver:!1,error:`worker exited without finishing`,completedAt:new Date().toISOString()}):X(e,t.id,{rollingOver:!1},{touch:!1})}return t}function Tr(e){try{return g.readdirSync(e)}catch{return[]}}function Er(e,t=new Set){return Tr(e).flatMap(n=>{if(t.has(n))return[];try{let r=JSON.parse(g.readFileSync(m.join(e,n,`job.json`),`utf8`));return t.add(n),[r]}catch{return[]}})}async function*Dr(e){let t=[{dir:G(e),archived:!1},{dir:K(e),archived:!0}];for(let{dir:e,archived:n}of t){let t=await g.promises.readdir(e,{withFileTypes:!0}).catch(()=>[]);for(let r of t)r.isDirectory()&&V(r.name)&&(yield{id:r.name,dir:m.join(e,r.name),archived:n})}}const Or=(e,t)=>String(t.updatedAt??``).localeCompare(String(e.updatedAt??``));function kr(){let e=new Map,t=Date.now()+3e4;return n=>(Date.now()>=t&&(e.clear(),t=Date.now()+3e4),e.has(n)||e.set(n,Q(n)),e.get(n))}function Ar(e){let t=kr(),n=[];for(let r of Er(G(e))){let i=$(e,r,t);i.archived&&!J(i)?br(e,i,{auto:!0}):n.push(i.archived?Y(e,i):i)}return n.sort(Or)}function jr(e,t,n=!1){if(t.status===`queued`)return!0;let r=t.generation??0;if(n&&!r)return!1;let i=Z(e,t.task.id);return i?r?t.startedAt===void 0||(Date.parse(i.resumedAt??``)||0)<t.startedAt:!1:!0}function Mr(e){let t=Ye(m.join(W(e),`runner`,`task.json`))??{},n=e=>e===void 0?void 0:new Date(e).toISOString();return Object.values(t).map(({value:e})=>e).filter(t=>jr(e,t)).map(e=>{let t=e.status===`waiting`?`running`:e.status,r=e.archivedAt??(sr.includes(t)&&yr(e.finishedAt??e.updatedAt)?e.finishedAt??e.updatedAt:void 0);return{id:e.task.id,status:t,...e.task.name?{name:e.task.name}:{},...e.task.prompt?{prompt:e.task.prompt}:{},...e.task.cwd?{cwd:e.task.cwd}:{},...e.task.agent?{agentId:e.task.agent}:{},source:e.task.source??`dashboard`,...e.error?{error:e.error}:{},createdAt:n(e.createdAt),updatedAt:n(e.updatedAt),...e.finishedAt?{completedAt:n(e.finishedAt)}:{},...r===void 0?{}:{archived:!0,archivedAt:n(r)}}})}function Nr(e,t){let n=kr(),r=t?.migrate??!0,i=new Set,a=[];for(let t of Er(K(e),i))J(t)?r&&Y(e,$(e,t,n)):a.push($(e,t,n));for(let t of Er(G(e),i))if(t.archived&&!J(t)){let i=$(e,t,n);a.push(r?br(e,i,{auto:!0}):i)}return a.sort(Or)}function Pr(e,t){if(!t){let t=Nr(e);return[...Ar(e),...t].sort(Or)[0]??null}let n=t=>{let n=$(e,t);return J(n)?Y(e,n):n},r=Z(e,t);if(r)return n(r);if(!V(t))return null;let i=[...new Set([G(e),K(e)].flatMap(e=>Tr(e).filter(e=>e.startsWith(t))))].flatMap(t=>{let n=Z(e,t);return n?[n]:[]});if(i.length>1)throw Error(`Task reference "${t}" is ambiguous. Use a longer id.`);return i[0]?n(i[0]):null}function Fr(e,t){let n=q(e,t);try{g.mkdirSync(n,{recursive:!0}),g.writeFileSync(m.join(n,`heartbeat`),``,`utf8`)}catch{}}function Ir(e,t){let n=q(e,t.id),r=Date.parse(t.updatedAt??``)||0;for(let e of[`log.jsonl`,`heartbeat`])try{r=Math.max(r,g.statSync(m.join(n,e)).mtimeMs)}catch{}return r?new Date(r).toISOString():void 0}const Lr=`steer-queue.jsonl`;function Rr(e,t,n){return dr(t,`task id`),tt(m.join(W(e),`steer`,`${t}.lock`),n)}function zr(e,t,n){let r=q(e,t);g.mkdirSync(r,{recursive:!0}),g.appendFileSync(m.join(r,Lr),`${JSON.stringify({at:new Date().toISOString(),text:n})}\n`,`utf8`)}function Br(e,t){return g.existsSync(m.join(q(e,t),Lr))}function Vr(e,t){let n=q(e,t),r=m.join(n,Lr),i=m.join(n,`steer-claim-${process.pid}-${Date.now()}.tmp`);try{g.renameSync(r,i)}catch{return[]}try{return g.readFileSync(i,`utf8`).split(/\r?\n/).filter(Boolean).map(e=>{try{return String(JSON.parse(e).text??``)}catch{return``}}).filter(Boolean)}finally{try{g.unlinkSync(i)}catch{}}}function Hr(e,t,n){Ur(q(e,t),n)}function Ur(e,t){g.mkdirSync(e,{recursive:!0}),g.appendFileSync(m.join(e,`log.jsonl`),`${hn({at:new Date().toISOString(),...t})}\n`,`utf8`)}const Wr=`Steer accepted live:
7
- `;function Gr(e,t,n){let r=C(q(e,t));return n?.on(`message`,r.notify),n?.on(`exit`,r.notify),n?.on(`error`,r.notify),{wait:r.wait,close(){n?.off(`message`,r.notify),n?.off(`exit`,r.notify),n?.off(`error`,r.notify),r.close()}}}function Kr(e,t){let n=m.join(q(e,t),`results.jsonl`);return g.existsSync(n)?g.readFileSync(n,`utf8`).split(`
8
- `).flatMap(e=>{try{return[JSON.parse(e)]}catch{return[]}}):[]}function qr(e,t){if(t<=0)return[];let n=0;for(let r=e.length-1;r>=0;--r)if(e[r]?.kind!==`usage`&&(n+=1)===t)return e.slice(r);return e}function Jr(e,t,n=40){if(n<=0)return[];let r=m.join(q(e,t),`log.jsonl`),i;try{i=g.openSync(r,`r`)}catch(e){if(e.code===`ENOENT`)return[];throw e}try{let e=g.fstatSync(i).size,t=Math.min(e,65536);for(;;){let r=e-t,a=Buffer.alloc(t),o=g.readSync(i,a,0,t,r),s=a.toString(`utf8`,0,o),c=(r?s.slice(s.indexOf(`
9
- `)+1):s).split(/\r?\n/).filter(Boolean);if(r===0||s.includes(`
10
- `)&&c.length>=n)return c.slice(-n).map(e=>{try{return JSON.parse(e)}catch{return{message:e}}});t=Math.min(e,t*2)}}finally{g.closeSync(i)}}function Yr(e){return[e.engine??`-`,e.model,e.model?e.effort:null].filter(Boolean).join(`/`)}function Xr(e){let t=Date.parse(e??``);return Number.isFinite(t)?Math.max(0,Date.now()-t):0}const Zr=6e5,Qr=/access token could not be refreshed/i,$r=/model is not supported|Codex cannot run model/i;function ei(e){return e instanceof Error?e.message:String(e??``)}function ti(e){return Qr.test(e??``)}function ni(e){return $r.test(e??``)}function ri(e,t){return!ni(e)||/Codex cannot run model/.test(e??``)?null:`Codex cannot run model ${/'([^']+)' model/.exec(e??``)?.[1]??t??`this model`} on the signed-in account. Run \`codex login\` with an account that has it, or pick another alias (coder model list).`}function ii(e=process.env){return m.join(e.CODEX_HOME||m.join(x.homedir(),`.codex`),`auth.json`)}function ai(e){try{let t=JSON.parse(Buffer.from(String(e).split(`.`)[1]??``,`base64url`).toString(`utf8`));return String(t.sub??t.email??``)}catch{return``}}function oi(e=process.env,t){let n=ii(e),r;try{r=g.statSync(n).mtimeMs}catch{return``}if(t?.file===n&&t.mtimeMs===r)return t.fingerprint??``;try{let e=JSON.parse(g.readFileSync(n,`utf8`)),i=e.OPENAI_API_KEY?y(`sha256`).update(String(e.OPENAI_API_KEY)).digest(`hex`):``,a=[e.auth_mode??``,e.tokens?.account_id??``,ai(e.tokens?.id_token),i].join(`|`);return t&&Object.assign(t,{file:n,mtimeMs:r,fingerprint:a}),a}catch{return t?.file===n?t.fingerprint??``:``}}export{X as $,_t as $t,Q as A,Ue as An,fn as At,fr as B,pn as Bt,Cr as C,Je as Cn,bn as Ct,Ar as D,Ge as Dn,sn as Dt,Nr as E,Ze as En,k as Et,Kr as F,Ie as Fn,on as Ft,hr as G,Zt as Gt,W as H,Qt as Ht,$ as I,tn as It,Dr as J,Yt as Jt,_r as K,qt as Kt,Sr as L,N as Lt,Mr as M,qe as Mn,dn as Mt,jr as N,Fe as Nn,nn as Nt,Z as O,Re as On,$t as Ot,Jr as P,Le as Pn,an as Pt,Rr as Q,Ot as Qt,K as R,M as Rt,Br as S,Ye as Sn,xn as St,Ir as T,tt as Tn,I as Tt,q as U,hn as Ut,gr as V,cn as Vt,mr as W,O as Wt,Y as X,Ut as Xt,Fr as Y,Xt as Yt,Gr as Z,Lt as Zt,H as _,pt as _n,Rn as _t,ni as a,Ft as an,Qn as at,Yr as b,Qe as bn,yn as bt,Zr as c,E as cn,rr as ct,Hr as d,Et as dn,zn as dt,dt as en,cr as et,yr as f,Vt as fn,Vn as ft,U as g,wt as gn,z as gt,Vr as h,Mt as hn,Ln as ht,ti as i,At as in,sr as it,kr as j,We as jn,en as jt,wr as k,Ke as kn,A as kt,Xr as l,St as ln,Hn as lt,dr as m,T as mn,Zn as mt,ri as n,xt as nn,ar as nt,vr as o,st as on,ir as ot,br as p,bt as pn,Un as pt,qr as q,Kt as qt,ei as r,lt as rn,or as rt,Wr as s,yt as sn,nr as st,oi as t,Ht as tn,lr as tt,Ur as u,zt as un,Bn as ut,zr as v,at as vn,Mn as vt,V as w,C as wn,Sn as wt,xr as x,$e as xn,L as xt,Pr as y,et as yn,R as yt,pr as z,j as zt};
@@ -1,3 +0,0 @@
1
- import{qi as e}from"./core-DwsAMCnL.js";import{$ as t,At as n,Bt as r,En as i,F as a,Ht as o,O as s,Sn as c,U as l,Z as u,d,x as ee}from"./errors-XBA-Ls4n.js";import{Ct as f,E as p,Gt as m,I as te,Kt as ne,M as re,P as ie,Zt as h,j as g}from"./output-D95NoAA9.js";import{d as _,l as v,m as y,o as b,u as x}from"./load-zhcrwSRF.js";import{t as S}from"./integrations-DyInAa5g.js";import{i as C}from"./dist-DAnSqY1s.js";import{a as w}from"./discover-CPZdprlQ.js";import{o as T}from"./executor-Dt2FFT-y.js";import{i as E,r as D}from"./mcp-Bta09QCU.js";import{i as O,o as k,r as A,s as j}from"./turn-DMvPfhb5.js";import M from"node:path";import N from"node:process";import{readFileSync as P,readdirSync as F,writeFileSync as I}from"node:fs";import L from"node:fs/promises";var R=e({AGENT_TASK_PREFIX:()=>z,agentDeveloperInstructions:()=>Q,agentInstructions:()=>de,agentTaskOptions:()=>ue,builtinArgs:()=>ce,builtinTaskArgs:()=>oe,defaultTask:()=>pe,execAgent:()=>Y,isConversation:()=>$,localAgentPrompt:()=>le,postReply:()=>G,postReplyParts:()=>W,postTurnReply:()=>K,reactToMessage:()=>q,replyParts:()=>U,taskFromEvent:()=>B,threadReply:()=>H,waitForAgentTask:()=>X});const z=`agent:`;function B(e,t,n){let r=S[n.integration];return{id:`local-${n.deliveryId}-${e.id}`,source:n.integration,agent:e.id,flow:t,runner:`local`,event:n,definition:e.definition,...e.usage?{usage:e.usage}:{},tools:r?{[n.integration]:r.tools.presets[v(e)]}:{}}}function V(e){return e.normalize(`NFKC`).toLowerCase().replace(/[“”„‟«»‘’‚‛"'`]/g,``).replace(/[‐‑‒–—―−]/g,`-`).replace(/[.!?,;:…]+(?=\s|$)/g,``).replace(/\s+/g,` `).trim()}function H(e,t,n,r){let i=t?.finalMessage?.trim(),a=e.event&&S[e.event.integration]?.progressReplies,o=r?.lastReply?.trim();if(i&&i.replace(/^`+|`+$/g,``).trim()!==`__EMPTY__`&&!t?.error)return{text:i,problem:!1,...!a&&o&&V(i)===V(o)?{duplicate:!0}:{}};let s=t?.error?.message?.trim()??``;if(t?.error&&o&&!a)return{text:``,problem:!0,duplicate:!0};if(n)return{text:s,problem:!1};if(t&&!t.error){if(a&&o)return{text:o,problem:!1};if(r?.lastReply?.trim()||k(r?.prompt,e.context?.mustReply??e.event?.mustReply,r?.steers)===!1)return{text:``,problem:!1,skipped:!0};let t=e.taskUrl?` [See the task](${e.taskUrl})`:``;return{text:`${m}${t}`,problem:!1}}return{text:e.failureReply??s,problem:!0}}function U(e,t){if(!t||e.length<=t)return[e];let n=[],r=``,i=!1,a=()=>{r.trim()&&n.push(r.trimEnd()),r=``};for(let o of e.split(/\n\n/)){r&&!i&&`${r}\n\n${o}`.length>t&&a();let e=r?`${r}\n\n${o}`:o;for(;e.length>t;){let r=e.lastIndexOf(`
2
- `,t),i=r>0?r:t;n.push(e.slice(0,i).trimEnd()),e=e.slice(i).replace(/^\n/,``)}r=e,(o.match(/^```/gm)??[]).length%2==1&&(i=!i)}return a(),n}async function W(e,t,n,r,i=!1){let a=[],o=i&&e.adapter.postProgress;for(let i of U(t,n))a.push(o?await o.call(e.adapter,e.id,i):r&&e.adapter.reply?await e.reply(r,{markdown:i}):await e.post({markdown:i}));return a}async function G(e,t,n,r,i=e.id,a=!1,o=!1,s){let c=s??await ae(e,t,r,i),l=c.adapter,u=l.postProblem;if(a&&u){let e=(await u.call(l,c.id,n))?.id;return e?[e]:[]}return(await W(c,n,e.replyLimit,t.chat?.message?.id,o)).flatMap(e=>e.id?[e.id]:[])}async function K(e,t,n,r){let a=M.join(l(e,t),`post-${n}.json`),o=c(a);if(o)return o;I(a,`null`,{flag:`wx`});let s=await r();return i(a,s),s}async function ae(e,t,n,r){if(!t.chat)throw Error(`The ${t.integration} event has no conversation`);let[{Chat:i},{LocalChatState:a}]=await Promise.all([import(`./dist-DAnSqY1s.js`).then(e=>e.a),import(`./chat-bwKd3y6V.js`).then(e=>e.r)]),o=await e.adapter({fetch,appId:t.appId.slice(e.id.length+1),name:r,installationId:t.installationId,token:async()=>n,privateState:()=>new a}),s=new i({userName:r,adapters:{[e.id]:o},state:new a,logger:`error`});return await s.initialize(),s.thread(t.chat.thread.id)}async function q(e,t,n){if(!n)throw Error(`This turn has no message to react to; give a message id`);let r=C.fromSlack(C.fromGChat(t).name);await e.adapter.addReaction(e.id,n,r)}function J(e,t){return Object.fromEntries(Object.keys(e.tools).map(n=>[n,t[E(n)]??(n===e.event?.integration?t.APP_TOKEN:void 0)]))}async function Y(e){let{cwd:r,flow:o}=e,c=f(r),u=await b(r,S),m=e.task;!m&&e.taskFile&&(m={...JSON.parse(await L.readFile(M.resolve(r,e.taskFile),`utf8`)),flow:o});let v=u.find(t=>t.id===e.agent);if(m&&(v={id:m.agent,name:m.definition.name??m.agent,definition:y(m.agent,m.definition),...m.usage?{usage:m.usage}:{},...m.files?{files:m.files}:{},builtin:!1}),!v)throw Error(`No agent named "${e.agent}".`);m??=await se(r,v,o,e);let x=m.event,C=x&&S[x.integration];if(x&&!C)throw Error(`Unknown integration "${x.integration}".`);let E=n(e.connections??{},e.connectionEnv),O=D(m,e.toolEnvironment?.tokens??J(m,N.env),e.replyEndpoint,e.toolEnvironment?.native);if(o==="default"){let n=e.post!==!1&&!!C,u=e.postToken??N.env.APP_TOKEN,f=n?ae(C,x,u,m.author??C.id):void 0;f?.catch(()=>{});let y=pe(v,m),b=e.resumeTaskId&&s(r,e.resumeTaskId)?.engine,S=g(b&&b!==_(v).engine?{engine:b}:_(v),c),w=re(m.mcp?.join(`,`),c.mcp,v.definition.mcp,E.mcp),T=[...Object.values(O.mcp),...w.mcp],D=e.resumeTurn??(e.resumeTaskId?a(r,e.resumeTaskId).length:0),k,A=e.resumeTaskId??e.taskId??ee(),j=m.engineChain??[S.engine],P=Math.max(0,j.indexOf(S.engine)),F=!1;for(let e of j.slice(0,P))d(r,A,{kind:`warning`,message:`${e} skipped because no applicable credential is connected`});let I,R;for(;;){let n=j[P];S=g(F?{engine:n}:{..._(v),engine:n},c);let o=!1;try{if(await e.onEngine?.(n)===!1)throw new h(`chain-exhausted`,`No applicable credential is connected for ${n}`);F&&t(r,A,{status:`queued`,pid:null,threadId:null,resumeThreadId:null,resumedAt:new Date().toISOString(),error:void 0,completedAt:void 0}),I=e.resumeTaskId?{taskId:e.resumeTaskId}:await p({onWorker:(t,n)=>{k=n,e.onWorker?.(t,n)},availability:e.availability,taskId:A,...e.resume?{resume:e.resume}:{},mcp:T,mcpBindings:w.mcpBindings,mcpWarnings:w.warnings,nativeMcp:w.nativeMcp,connectionEnv:{...E.env,...O.env},connections:m.connections,cwd:r,agentId:m.agent,...$(m)?{conversation:!0}:{},...m.author?{author:m.author}:{},...x?.repo?{repo:`${x.repo.owner}/${x.repo.name}`}:{},...e.source?{source:e.source}:{name:`${z}${m.id}`,source:m.source},engine:S.engine,model:S.model??void 0,effort:S.effort??void 0,permissions:m.permissions??S.permissions,agentPrompt:y.agentPrompt,prompt:y.prompt,outputSchema:m.context?.outputSchema,wait:!0},m.engineChain?{config:{...c,chain:[S.engine]},waitForStartup:!1}:{}),await e.onTask?.(I.taskId,D),R=await X(r,I.taskId,e.onApproval,(e,t)=>te(e,t,{turn:D,worker:k}))}catch(n){if(!m.engineChain||!(n instanceof h)||n.code!==`chain-exhausted`)throw n;o=!0;let s=n.payload?.error??n.message,c=t(r,A,{status:`failed`,engine:S.engine,prompt:y.prompt,error:s,pid:null}),u={status:1,threadId:null,error:{message:s}};i(M.join(l(r,c.id),`result.json`),u),await L.appendFile(M.join(l(r,c.id),`results.jsonl`),JSON.stringify({...u,prompt:y.prompt})+`
3
- `),I={taskId:c.id},await e.onTask?.(c.id,D),R={taskId:c.id,task:c,status:`failed`,result:u,turns:a(r,c.id),steps:[]}}let s=o?j[P+1]??null:m.engineChain?ie(r,R,{...c,chain:j}):void 0;if(s!==void 0&&d(r,A,{kind:`warning`,message:`${S.engine} skipped because ${R.result?.error?.message??`the engine could not start`}`}),s==null)break;D=a(r,I.taskId).length,k&&await new Promise(e=>{if(k.exitCode!==null||k.signalCode)return e();k.once(`exit`,()=>e())}),P++,F=!0,e={...e,resumeTaskId:void 0,resume:void 0}}let B=a(r,I.taskId)[D],{text:V,problem:U,skipped:W,duplicate:q}=B?H(m,B,!1,B):H(m,R.result,R.status===`cancelled`);W&&n&&d(r,I.taskId,{kind:`status`,message:ne});let J=n&&!!V&&!q,Y=J?await K(r,I.taskId,D,async()=>G(C,x,V,u,m.author,U,!1,await f)):[];return{ok:R.status===`completed`,flow:o,reply:V,posted:J,...Y.length?{postedMessages:Y}:{},taskId:I.taskId,turn:D,tokens:R.result?.tokens??void 0}}let k=w(o,r),A=k.scope===`builtin`?{...await oe(m,v,e.post!==!1),cwd:r,...m.args}:m.args??x,j=await T(k.path,{cwd:r,...e.taskId?{runId:e.taskId}:{},args:A,ceiling:{agent:v.id,permissions:m.permissions??g(_(v),c).permissions},...e.postToken?{integrationToken:e.postToken}:{},connections:{mcp:{...E.mcp,...O.mcp},env:{...E.env,...O.env},ids:m.connections??[]}},{...e.onTask?{onEvent:t=>{t.kind===`task-start`&&e.onTask(t.taskId)}}:{},...e.onStart?{onStart:e.onStart}:{}});return{ok:!0,flow:o,runId:j.runId,result:j.result,tokens:j.tokens}}async function X(e,t,n,r=te,i){let a,o=u(e,t);try{for(;;)try{return await r(e,t)}catch(e){if(!(e instanceof h)||e.code!==`approval-pending`||!n)throw e;if(e.approval?.id!==a){a=e.approval?.id,await n(e.approval);continue}await(i?i():o.wait(3e4))}}finally{o.close()}}async function oe(e,t,n=!0){if(!e.event)throw Error(`built-in flows need a GitHub pull request event`);return{...await ce(e.event,t,e.context,e.author,n),..._(t),...e.permissions?{permissions:e.permissions}:{}}}async function se(e,t,n,r){if(r.taskFile){let t=JSON.parse(await L.readFile(M.resolve(e,r.taskFile),`utf8`));return{...t,flow:n,tools:t.tools??{}}}if(!r.eventFile)throw Error(`Missing --task or --event file.`);return B(t,n,JSON.parse(await L.readFile(M.resolve(e,r.eventFile),`utf8`)))}function ce(e,t,n,r,i=!0){let a=S[e.integration]?.repos?.pullRequest(e);if(!a)throw Error(`built-in flows need a pull request event`);return{pr:a,post:i,...r?{author:r}:{}}}async function le(e,t){let n=(await b(e,S).catch(()=>[])).find(e=>e.id===t);return n?{access:v(n),developer:Q(n)}:{access:`read`}}async function ue(e,t,n,i,a){let s=await b(e,S),c=s.find(e=>e.id===t);if(!c)throw new h(`invalid-option`,`No agent named "${t}".`,{hint:`Agents here: ${s.map(e=>e.id).join(`, `)}`});let{definition:l,usage:u}=c,d=i===void 0?await r(o(u?.connections,a),void 0,void 0,v(c)):void 0,ee=l.mcp??{},p=re(n,f(e).mcp,ee,i??d?.mcp);return{engine:u?.engine??l.engine,model:u?.model??l.model,effort:u?.effort??l.effort,permissions:u?.permissions??l.permissions,developer:Q(c),...p,mcpWarnings:p.warnings,connections:u?.connections,...d?{connected:d}:{}}}const Z=48e3;function Q(e,t){return{description:e.definition.description,instructions:de(e),notes:t?.instructions}}function de(e){if(!e.dir)return fe(e.files??{});let t;try{t=F(e.dir).filter(e=>e.endsWith(`.md`))}catch{return``}t.sort((e,t)=>e===`system.md`?-1:t===`system.md`?1:e.localeCompare(t));let n=``;for(let r of t){let t=`### ${r}\n\n${P(M.join(e.dir,r),`utf8`).trim()}\n`;if(n+=t.slice(0,Z-n.length),n.length===Z)break}return n.trimEnd()}function fe(e){let t=Object.keys(e).filter(e=>e.endsWith(`.md`));t.sort((e,t)=>e===`system.md`?-1:t===`system.md`?1:e.localeCompare(t));let n=``;for(let r of t){let t=`### ${r}\n\n${e[r].trim()}\n`;if(n+=t.slice(0,Z-n.length),n.length===Z)break}return n.trimEnd()}const $=e=>!!(e.event&&e.source===e.event.integration);function pe(e,t){let{event:n,context:r}=t,i=$(t),a=t.prompt===void 0?r?.user:void 0,o=n&&S[n.integration],s=t.prompt===void 0?n?A([n],a):``:j(t.prompt,n?.repo,n&&o?.repos?.pullRequest(n));return{agentPrompt:{developer:Q(e,r),...i?{platform:{name:n.integration,prompt:o?.prompt},events:x(e.definition.integrations[n.integration])}:{},access:v(e)},prompt:O(r?.messages??[],s)}}export{G as a,q as c,X as d,R as i,B as l,ue as n,W as o,Y as r,K as s,z as t,H as u};
@@ -1,11 +0,0 @@
1
- import{qi as e}from"./core-DwsAMCnL.js";import{A as t,B as n,I as r,O as i,b as a,bn as o,bt as s,it as c,j as l,l as u,m as d,w as f,wn as p,yn as ee,z as m}from"./errors-XBA-Ls4n.js";import{Ct as te,E as ne,I as re,M as ie,P as ae,T as oe,Zt as h,r as se,s as ce}from"./output-D95NoAA9.js";import{a as g}from"./discover-CPZdprlQ.js";import{a as le,i as ue}from"./prompts-B8pKhMcu.js";import{c as de,s as fe}from"./actions-BT7_eKXm.js";import{t as pe}from"./log-view-CL3_S0IQ.js";import{createRequire as me}from"node:module";import _ from"node:path";import v from"node:process";import{fileURLToPath as he,pathToFileURL as ge}from"node:url";import y from"node:fs";import{spawn as _e,spawnSync as ve}from"node:child_process";import ye,{randomUUID as be}from"node:crypto";import xe from"node:os";import{AsyncLocalStorage as Se}from"node:async_hooks";function b(e){return typeof e!=`object`||!e?JSON.stringify(e)??`null`:Array.isArray(e)?`[${e.map(b).join(`,`)}]`:`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${b(e[t])}`).join(`,`)}}`}function Ce(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function x(e,t){return ye.createHash(`sha256`).update(`${e}\0${b(t)}`).digest(`hex`)}function S(e){return y.existsSync(e)?y.readFileSync(e,`utf8`).split(/\r?\n/).filter(Boolean).map(e=>{try{return JSON.parse(e)}catch{return null}}).filter(e=>e!==null):[]}var we=class{file;recorded;seq=0;constructor(e,t){this.file=t,this.recorded=e.map(e=>({...e})),y.writeFileSync(t,``,`utf8`)}write(e){e.seq=this.seq++,y.appendFileSync(this.file,`${JSON.stringify(e)}\n`,`utf8`)}replay(...e){let t=this.recorded.find(t=>!t.consumed&&e.includes(t.fingerprint));if(!t)return null;t.consumed=!0;let{consumed:n,...r}=t;return this.write(r),r}record(e){this.write({...e,seq:0})}},Te=e({archiveRun:()=>k,archiveRuns:()=>Fe,collectFlowRuns:()=>Be,deleteRun:()=>A,deleteRuns:()=>Ie,detachRun:()=>C,driveRun:()=>ke,flowSteps:()=>ze,flowTaskIds:()=>z,generateRunId:()=>D,latestRun:()=>R,listArchivedRuns:()=>L,listRuns:()=>I,readFlowRecord:()=>N,readRawRecord:()=>j,reconcileRun:()=>M,resumeRun:()=>Ne,runDirFor:()=>O,runResult:()=>T,startRun:()=>Me,unarchiveRun:()=>Le,watchRun:()=>E,writeFlowRecord:()=>P});function Ee(){try{return ve(`bun`,[`--version`],{stdio:`ignore`}).status===0}catch{return!1}}function De(e,t){if(!e.endsWith(`.ts`)||v.versions.bun||v.features.typescript)return;if(!Ee())throw new h(`invalid-option`,`This flow is a TypeScript file (${e}) and this Node cannot run TypeScript.`,{hint:[`Upgrade to Node 23.6+ or install bun: https://bun.sh`,`Or write the flow as .mjs / .js`]});let n=ve(`bun`,[s,...t],{stdio:`inherit`});v.exit(n.status??1)}function Oe(e){let t=!1,n=n=>{t||(t=!0,(async()=>{let{runId:t}=e;v.stderr.write(`\n[flow] Stopping run ${t}. No new tasks will dispatch.\n`);let r=n?e.runningIds():await bt(t,e.runningIds());r.length&&v.stderr.write(`[flow] ${n?`left running`:`stopped tasks`}: ${r.join(`, `)}\n`),v.stderr.write(`\n${ce([`Resume: coder flow resume ${t}`],se)}\n`),e.requestStop(),v.exit(130)})())};v.once(`SIGINT`,()=>n(!1)),v.once(`SIGTERM`,()=>n(!0))}async function ke(e,t){let n=j(e);if(!n)throw Error(`No flow run "${e}".`);try{await $(n,t,{onStart:Oe})}catch(t){throw Y(e,t instanceof Error?t.message:String(t)),t}}function C(e,t,n={}){let r=e.script.endsWith(`.ts`)&&!v.versions.bun&&!v.features.typescript;if(r&&!Ee())throw Error(`TypeScript flows need bun or Node 23.6+.`);let i=y.openSync(_.join(O(e.runId),`flow.log`),`a`),a=_e(r?`bun`:v.execPath,[s,`flow`,`drive`,e.runId,`--cwd`,t,...n.drive??[]],{detached:!0,stdio:[`ignore`,i,i],env:n.env??v.env});return a.unref(),y.closeSync(i),{runId:e.runId,status:`running`,...n.wait?{watch:E(e.runId,{bootPid:a.pid})}:{}}}async function Ae(e,t,n){try{return await n()}catch(n){if(!(n instanceof h)||n.code!==`flow-failed`)throw n;let r=t?`
2
- [flow] dry-run ended early: a downstream step depends on real task output (stub it or run for real).`:``;throw new h(`flow-failed`,`[flow] ${e} ${n.runId} failed: ${n.message}${r}`,{runId:n.runId,hint:`Resume${e===`resume`?` again`:``}: coder flow resume ${n.runId}`})}}function je(e,t){let n=e?N(e):R();if(!n)throw new h(`flow-failed`,e?`No flow run "${e}".`:t,{hint:`Run one: coder flow run <name>`});return n}async function Me(e,t={},n={}){if(t.detached){if(!t.dryRun)return C(q(e,t),t.cwd?_.resolve(t.cwd):v.cwd(),{wait:t.wait});De(g(e,t.cwd?_.resolve(t.cwd):v.cwd()).path,v.argv.slice(2))}return Ae(`run`,t.dryRun,()=>Q(e,t,n))}async function Ne(e,t={},n={}){let r=je(e,`No flow runs to resume.`);if(t.detached){if(!t.dryRun)return C(q(``,t,r.runId),t.cwd?_.resolve(t.cwd):v.cwd(),{wait:t.wait});De(r.script,v.argv.slice(2))}return Ae(`resume`,t.dryRun,()=>Et(r.runId,t,n))}function w(e){let t=_.join(O(e),`events.jsonl`);return y.existsSync(t)?y.readFileSync(t,`utf8`).split(`
3
- `).filter(Boolean).flatMap(e=>{try{return[JSON.parse(e)]}catch{return[]}}):[]}function T(e,t={}){let n=e?N(e):R();return n?{...n,steps:ze(n.runId,t.tail),journal:S(_.join(O(n.runId),`journal.jsonl`)).map(e=>({kind:e.kind,taskId:e.taskId,tokens:e.tokens})),events:w(n.runId)}:null}function E(e,t={}){let n=je(e,`No flow runs yet.`),r=t.from;return{record:n,events:r===void 0?St(n.runId,t.bootPid,{tail:t.tail}):(async function*(){yield*w(n.runId).slice(r)})(),final(){let e=T(n.runId,{tail:0});if(!e)throw new h(`flow-failed`,`[flow] run ${n.runId} vanished while following.`,{hint:`Recent runs: coder flow list`});return e}}}function Pe(e){let t=N(e);if(!t)throw new h(`flow-failed`,`No flow run "${e}".`,{hint:`Recent runs: coder flow list`});if(t.status===`running`)throw new h(`flow-failed`,`Run ${t.runId} is still running.`,{runId:t.runId,hint:`Stop it first: coder flow stop ${t.runId}`});return t}function Fe(e,t={}){if(t.allStopped){let e=I().filter(e=>e.status!==`running`);for(let t of e)k(t);let t=e.map(e=>e.runId);return{archived:t,count:t.length}}if(!e)throw new h(`invalid-option`,`Missing run id.`,{hint:[`Archive one: coder flow archive <run-id>`,`Archive all stopped: coder flow archive --all-stopped`]});let n=Pe(e);return k(n),{runId:n.runId,archived:!0}}function Ie(e,t={}){if(t.allArchived){let e=L().filter(e=>A(e.runId)).map(e=>e.runId);return{deleted:e,count:e.length}}if(!e)throw new h(`invalid-option`,`Missing run id.`,{hint:[`Delete one: coder flow delete <run-id>`,`Delete all archived: coder flow delete --all-archived`]});let n=Pe(e);return{runId:n.runId,deleted:A(n.runId)}}function D(){return`flow-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}function O(e){d(e,`flow run id`);let t=_.join(n(),e);if(y.existsSync(_.join(t,`flow.json`)))return t;let r=_.join(m(),e);return y.existsSync(_.join(r,`flow.json`))?r:t}function k(e){let t=O(e.runId),n=_.join(m(),e.runId);t!==n&&o(t,n);let r={...e,archived:!0,archivedAt:e.archivedAt??new Date().toISOString()};return P(n,r),r}function Le(e){let t=O(e.runId),r=_.join(n(),e.runId);t!==r&&o(t,r);let i={...e,archived:void 0,archivedAt:void 0};return P(O(e.runId),i),i}function A(e){let t=O(e);return y.existsSync(_.join(t,`flow.json`))?(y.rmSync(t,{recursive:!0,force:!0}),!0):!1}function j(e){if(!f(e))return null;let t=_.join(O(e),`flow.json`);if(!y.existsSync(t))return null;try{return JSON.parse(y.readFileSync(t,`utf8`))}catch{return null}}function M(e,n=t){return e.status!==`running`||!e.pid||Z(e,n)?e:(Y(e.runId,`orchestrator died`),j(e.runId)??e)}function N(e){let t=j(e);return t?M(t):null}function P(e,t){y.writeFileSync(_.join(e,`flow.json`),`${JSON.stringify(t,null,2)}\n`,`utf8`)}function Re(e){let t=[];try{t=y.readdirSync(e)}catch{return[]}let n=[],r=l();for(let i of t)try{n.push(M(JSON.parse(y.readFileSync(_.join(e,i,`flow.json`),`utf8`)),r))}catch{}return n}const F=(e,t)=>String(t.startedAt).localeCompare(String(e.startedAt));function I(){return Re(n()).sort(F)}function L(){return Re(m()).sort(F)}function R(){return[...I(),...L()].sort(F)[0]??null}function z(e){let t=S(_.join(O(e),`journal.jsonl`));return[...new Set([...t.flatMap(e=>e.kind===`task`&&e.taskId?[e.taskId]:[]),...w(e).flatMap(e=>e.kind===`task-start`?[e.taskId]:[])])]}function ze(e,t=`all`){if(t===0)return[];let n=S(_.join(O(e),`journal.jsonl`)).filter(e=>e.kind===`task`),a=v.cwd(),o=l(),s=z(e).flatMap(e=>{let t=i(a,e);return t?[r(a,t,o)]:[]}),c=new Map(s.map(e=>[e.id,e])),u=e=>e?.name??e?.prompt?.replace(/\s+/g,` `).trim().slice(0,60)??null,d=n.map(e=>{let t=e.taskId?c.get(e.taskId):void 0;return{taskId:e.taskId??null,name:u(t),status:t?.status??e.result?.status??`?`,tokens:e.tokens??null}}),f=new Set(d.map(e=>e.taskId));for(let t of s)t.flowRunId===e&&!f.has(t.id)&&d.push({taskId:t.id,name:u(t),status:t.status,tokens:null});return t===`all`?d:d.slice(-t)}function Be(e={}){let t=e.limit===`all`?void 0:e.limit,n;n=e.archived?L():I().filter(e=>e.status===`running`||u(e.endedAt??e.startedAt)<=18e5||(k(e),!1));let r=t===void 0?0:Math.max(0,n.length-t);return{runs:t===void 0?n:n.slice(0,t),clipped:r}}function B(e,t){e&&(y.appendFileSync(_.join(e.runDir,`events.jsonl`),`${JSON.stringify(t)}\n`,`utf8`),e.hooks.onEvent?.(t))}const Ve=globalThis,V=Ve.__coderFlowCtxALS??=new Se,H=Ve.__coderFlowScopeALS??=new Se;function He(){return H.getStore()?.args}function Ue(){return V.getStore()?.integrationToken}function U(){return H.getStore()?.depth??0}var We=class{limit;active=0;queue=[];constructor(e){this.limit=e}async run(e){this.active<this.limit?this.active+=1:await new Promise(e=>this.queue.push(e));try{return await e()}finally{let e=this.queue.shift();e?e():--this.active}}};function Ge(e,t){if(!t.tokens)return;let n=t.model??`default`;e.ledger[n]=pe(e.ledger[n]??null,t.tokens)}function Ke(e){return!!e&&typeof e.safeParse==`function`}async function qe(e){try{let t=await import(`./zod-BoqHoRCH.js`).then(e=>e.n);if(typeof t.toJSONSchema==`function`)return t.toJSONSchema(e)}catch{}return null}function Je(e){let t=e.trim(),n=t.match(/```(?:json)?\s*([\s\S]*?)```/i);n&&(t=n[1].trim());let r=t.indexOf(`{`);if(r===-1)throw Error(`no JSON object found in reply`);let i=0,a=!1,o=!1;for(let e=r;e<t.length;e+=1){let n=t[e];if(a){o?o=!1:n===`\\`?o=!0:n===`"`&&(a=!1);continue}if(n===`"`)a=!0;else if(n===`{`)i+=1;else if(n===`}`&&(--i,i===0))return JSON.parse(t.slice(r,e+1))}throw Error(`unterminated JSON object in reply`)}function W(e,t){if(!Ke(e))return{ok:!0,data:t};let n=e.safeParse(t);if(n.success)return{ok:!0,data:n.data};let r=n.error?.issues??n.error?.errors??[];return{ok:!1,errors:Array.isArray(r)?r.map(e=>`${(e.path??[]).join(`.`)||`(root)`}: ${e.message}`).join(`; `):String(n.error)}}function Ye(e,t,n){return{cwd:t,engine:e.engine,model:e.model,effort:e.effort,mcp:e.mcp,permissions:n?.ceiling?oe(e.name,e.permissions,n.ceiling):e.permissions,name:e.name,system:e.system,addDirs:e.addDirs,wait:!0,flowRunId:n?.runId}}function Xe(e,t){return{taskId:e,status:t.status,output:t.result?.finalMessage||t.result?.error?.message||``,tokens:t.result?.tokens??null,model:t.result?.model??t.model}}async function Ze(e,t,n){n?.running.add(t);try{let n=await re(e,t);return{status:n.status,result:n.result,model:n.task.model??null,next:ae(e,n)??null}}finally{n?.running.delete(t)}}async function Qe(e,t,n,r){let a=r?.cwd??v.cwd(),o=i(a,e);if(!o)throw new h(`invalid-option`,`No task "${e}".`);return await fe(o.cwd??a,o,t,{...r?.connections?{resolveConnections:async e=>({mcp:Object.fromEntries(Object.entries(r.connections.mcp).filter(([t])=>e.includes(t))),env:r.connections.env,warnings:[]})}:{},model:n.model,effort:n.effort,permissions:r?.ceiling&&n.permissions?oe(o.name,n.permissions,r.ceiling):n.permissions}),Xe(e,await Ze(a,e,r))}async function $e(e,t,n,r){let o=t.cwd?_.resolve(t.cwd):n?.cwd??v.cwd(),s=t.returns&&!r?[t.system,ue(null)].filter(Boolean).join(`
4
-
5
- `):t.system,c;for(;;){let l={prompt:e,...Ye(t,o,n),system:s,...r?{outputSchema:r}:{},...c?{engine:c,model:void 0,effort:void 0}:{}},u=n?.connections?ie(l.mcp,te(o).mcp,{},n.connections.mcp):void 0,d=r=>{let s=i(o,r),c=s?a(s):void 0;B(n,{kind:`task-start`,taskId:r,name:t.name,prompt:e,engine:c,depth:U()})},f=await ne({...l,onWorker:d,...n?.connections?{...u,mcpWarnings:u?.warnings,connectionEnv:n.connections.env,connections:n.connections.ids,connectionSource:`server`}:{},onFallback:e=>K(`${e.engine} failed to start. Falling back to ${e.next}. ${e.detail.replace(/\s+/g,` `).slice(0,140)}`)}),p=await Ze(o,f.taskId,n);if(p.next){let e=p.next;B(n,{kind:`task-end`,taskId:f.taskId,status:`failed`,tokens:null}),c=e;continue}return Xe(f.taskId,p)}}async function et(e,t,n,r=null){if(n?.dryRun){v.stdout.write(`\n[dry-run] task${t.name?` (${t.name})`:``}:\n${e}\n`);let n={...t,returns:t.returns?`<schema>`:void 0};return v.stdout.write(`[dry-run] opts: ${JSON.stringify(n)}\n`),{taskId:`dry`,status:`completed`,output:`[dry-run]`,data:void 0,tokens:null,model:t.model??null}}let i=await $e(e,t,n,r);if(i.status!==`completed`){let e={...i,data:void 0};throw new h(`task-failed`,`Task ${i.taskId} ${i.status}: ${i.output||`no output`}`,{taskId:i.taskId,result:e})}let a=i.output,o=i.tokens,s;if(t.returns){let e;try{e=W(t.returns,Je(a))}catch(t){e={ok:!1,errors:t instanceof Error?t.message:String(t)}}if(e.ok)s=e.data;else{let r=await Qe(i.taskId,le(e.errors),{},n);a=r.output||a,o=pe(o,r.tokens);try{let e=W(t.returns,Je(a));if(!e.ok)throw Error(e.errors);s=e.data}catch(e){let t={taskId:i.taskId,status:`completed`,output:a,data:void 0,tokens:o,model:i.model};throw new h(`task-failed`,`Task ${i.taskId} produced no valid structured output: ${e instanceof Error?e.message:String(e)}`,{taskId:i.taskId,result:t})}}}return{taskId:i.taskId,status:`completed`,output:a,data:s,tokens:o,model:i.model}}async function tt(e,t,n){let r=e.journal.replay(t);if(r)return r.result;if(++e.taskCount>e.maxTasks)throw Error(`Flow exceeded --max-tasks (${e.maxTasks}). Raise it with --max-tasks, or fix a runaway loop; the run is resumable.`);return e.semaphore.run(async()=>{let r=new Date().toISOString(),i;try{i=await n()}catch(t){let n=t instanceof h?t.result:void 0;throw n&&B(e,{kind:`task-end`,taskId:n.taskId,status:n.status===`completed`?`failed`:n.status,tokens:n.tokens}),t}return Ge(e,i),e.dryRun||B(e,{kind:`task-end`,taskId:i.taskId,status:i.status,tokens:i.tokens}),e.journal.record({kind:`task`,fingerprint:t,result:i,taskId:i.taskId,tokens:i.tokens,startedAt:r,endedAt:new Date().toISOString()}),i})}async function nt(e,t={}){let n=V.getStore(),r=t.returns?await qe(t.returns):null,i=()=>et(e,t,n,r);if(!n)return i();let{returns:a,...o}=t;return tt(n,x(`task`,Ce({prompt:e,...o,returns:a?r??`<schema>`:void 0})),i)}async function rt(e,t,n={}){let r=V.getStore(),i=async()=>{if(r?.dryRun)return v.stdout.write(`\n[dry-run] steer ${e}:\n${t}\n`),{taskId:e,status:`completed`,output:`[dry-run]`,tokens:null,model:n.model??null};let i=await Qe(e,t,n,r);if(i.status!==`completed`)throw new h(`task-failed`,`Task ${e} ${i.status}: ${i.output||`no output`}`,{taskId:e,result:i});return i};return r?tt(r,x(`steer`,Ce({taskId:e,text:t,...n})),i):i()}const G=262144;function it(e){let t=[];for(let n=e;;){t.push(_.join(n,`node_modules`,`.bin`));let e=_.dirname(n);if(e===n)break;n=e}let n=v.platform===`win32`?`;`:`:`;return{...v.env,PATH:[...t,v.env.PATH??``].join(n)}}async function at(e,t){return new Promise(n=>{let r=_e(e,{shell:!0,cwd:t,env:it(t)}),i=``,a=e=>{i.length>=G||(i+=e,i.length>=G&&(i=`${i.slice(0,G)}\n... [gate output truncated]`))};r.stdout?.on(`data`,a),r.stderr?.on(`data`,a),r.on(`error`,e=>n({ok:!1,code:1,output:String(e.message??e).trim()})),r.on(`close`,e=>n({ok:e===0,code:e??0,output:i.trim()}))})}async function ot(e,t={}){let n=V.getStore(),r=t.cwd?_.resolve(t.cwd):n?.cwd??v.cwd();if(!n)return at(e,r);let i=x(`gate`,{cmd:e,cwd:t.cwd}),a=n.journal.replay(i);if(a)return a.result;if(n.dryRun){v.stdout.write(`\n[dry-run] gate: ${e}\n`);let t={ok:!0,code:0,output:``};return n.journal.record({kind:`gate`,fingerprint:i,result:t,startedAt:new Date().toISOString(),endedAt:new Date().toISOString()}),t}let o=new Date().toISOString(),s=`gate-${v.pid}-${be()}`,c=U();B(n,{kind:`gate-start`,gateId:s,cmd:e,depth:c});let l=await at(e,r);return B(n,{kind:`gate`,gateId:s,cmd:e,ok:l.ok,code:l.code,depth:c}),n.journal.record({kind:`gate`,fingerprint:i,result:l,startedAt:o,endedAt:new Date().toISOString()}),l}async function st(e,...t){return Promise.all(e.map(async(e,n)=>{let r=e;for(let[i,a]of t.entries())try{r=await a(r,e,n)}catch(e){return K(`stage ${i+1} failed: ${e instanceof Error?e.message:String(e)}`),null}return r}))}function K(e){let t=V.getStore();B(t,{kind:`log`,message:e,depth:U()}),(!t||v.stderr.isTTY&&!t.hooks.onEvent)&&v.stderr.write(`[flow] ${e}\n`)}const ct=me(import.meta.url);function lt(e){let t=_.dirname(he(import.meta.url));for(;_.basename(t)!==`dist`&&_.dirname(t)!==t;)t=_.dirname(t);return _.basename(t)===`dist`?ge(_.join(t,e)).href:null}function ut(e){if(e===`zod`||e.startsWith(`zod/`)){let e=lt(`zod.js`)??new URL(`./zod.js`,import.meta.url).href;if(y.existsSync(he(e)))return e}if(!(e===`@wular/coder`||e===`@wular/coder/flow`||e===`zod`||e.startsWith(`zod/`)))return null;try{return ge(ct.resolve(e)).href}catch{}return e===`@wular/coder/flow`?lt(`flow/index.js`):e===`@wular/coder`?lt(`sdk.js`):null}const dt=/(\bfrom\s+|\bimport\s+|\bimport\s*\(\s*)(['"])([^'"]+)\2/g;function ft(e){return e.replace(dt,(e,t,n,r)=>{let i=ut(r);return i?`${t}${n}${i}${n}`:e})}async function pt(e){e=y.realpathSync(e);let t=H.getStore(),n=t.imports??={dirs:new Set,node:!1};if(v.versions?.bun){if(n.dirs.has(e))return;n.dirs.add(e);let{plugin:t}=await import(`bun`),r=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);t({name:`coder-flow:${e}`,setup(e){e.onLoad({filter:RegExp(`^${r}/(?!.*node_modules/).*\\.m?[jt]sx?$`)},e=>({contents:ft(y.readFileSync(e.path,`utf8`)),loader:_.extname(e.path).replace(/^\.m?/,``)}))}});return}if(n.node)return;n.node=!0;let{register:r}=await import(`node:module`),i=Object.fromEntries([`@wular/coder`,`@wular/coder/flow`,`zod`].flatMap(e=>{let t=ut(e);return t?[[e,t]]:[]})),a=`const urls = ${JSON.stringify(i)}, parent = ${JSON.stringify(import.meta.url)};
6
- export function resolve(spec, ctx, next) {
7
- if (spec.startsWith('zod/') && urls.zod) return { url: urls.zod, shortCircuit: true };
8
- if (urls[spec]) return { url: urls[spec], shortCircuit: true };
9
- return next(spec, spec.startsWith('zod/') ? { ...ctx, parentURL: parent } : ctx);
10
- }`;r(`data:text/javascript,${encodeURIComponent(a)}`)}async function mt(e,t,n){try{return await import(ge(e).href)}catch(e){let r=e instanceof Error?e.message:String(e);throw t===`.ts`&&!v.versions?.bun&&/Unknown file extension|Unexpected token|SyntaxError|Cannot parse|import type|interface/i.test(r)?Error(`Could not run ${_.basename(n)}: TypeScript flows need bun. Run under \`bun\`, or write the flow as .mjs/.js.`):e}}async function ht(e){if(!y.existsSync(e))throw Error(`Cannot read flow file: ${e}`);return await pt(_.dirname(e)),mt(e,_.extname(e),e)}async function gt(e,t,n){let r=H.getStore();r.args=t??{};let i=await ht(e),a=V.getStore();a?.flowConcurrency&&!r.depth&&typeof i.concurrency==`number`&&(a.semaphore.limit=Math.max(1,i.concurrency),n&&(n.concurrency=a.semaphore.limit,P(a.runDir,n)));let o=i.args,s=r.args;if(Ke(o)){let e=W(o,t??{});if(!e.ok)throw Error(`Invalid flow args: ${e.errors}`);s=e.data,r.args=s}let c=i.default;return typeof c==`function`?c(s):c}async function _t(e,t){let n=V.getStore(),r=n?.cwd??v.cwd(),i=g(e,r);if(!n)return H.run({args:t??{},depth:0},()=>gt(i.path,t));let a=H.getStore();if(a&&a.depth>=1)throw Error(`flow("${e}") nesting is one level deep; a sub-flow cannot call flow().`);let o=x(`flow`,{name:i.name,args:t??{}}),s=n.journal.replay(o);if(s)return s.result;let c=new Date().toISOString();B(n,{kind:`flow-start`,name:i.name,depth:(a?.depth??0)+1});let l=await H.run({args:t??{},depth:(a?.depth??0)+1,imports:a?.imports},()=>gt(i.path,t));return n.journal.record({kind:`flow`,fingerprint:o,result:l,startedAt:c,endedAt:new Date().toISOString()}),l}var vt=e({drivePreparedRun:()=>$,markRunFailed:()=>Y,orchestratorAlive:()=>Z,pidAlive:()=>X,prepareRun:()=>q,resumeFlow:()=>Et,review:()=>Dt,runFlowByName:()=>Q,stopFlowTasks:()=>bt,stopRun:()=>xt,streamFlowCore:()=>St});function q(e,t={},n,r){let i,a,o;if(n){let e=N(n);if(!e)throw Error(`No flow run "${n}".`);e.archived&&Le(e),i=e.name,a=e.script,o=t.args??e.args}else{let n=g(e,t.cwd?_.resolve(t.cwd):v.cwd());i=n.name,a=n.path,o=t.args??{}}let s=n??t.runId??D(),c=O(s);y.mkdirSync(c,{recursive:!0});let l={runId:s,name:i,script:a,args:o,status:`running`,startedAt:new Date().toISOString(),concurrency:Math.max(1,t.concurrency??xe.cpus().length),maxTasks:Math.max(1,t.maxTasks??xe.cpus().length*10),taskCount:0,ledger:{},...r?{pid:r,pidStartedAt:new Date().toISOString()}:{},...t.concurrency===void 0?{}:{concurrencySet:!0}};return P(c,l),l}function J(e,t,n){P(e,{...t,endedAt:new Date().toISOString(),pid:void 0,pidStartedAt:void 0,...n})}function Y(e,t){let n=j(e);!n||n.status!==`running`||J(O(e),n,{status:`failed`,error:t})}function X(e){try{return v.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function Z(e,n=t){if(!e.pid||!X(e.pid))return!1;let r=n(e.pid),i=Date.parse(e.pidStartedAt??``);return r===null||!Number.isFinite(i)||r<=i+6e4}function yt(e){return z(e).filter(e=>{let t=i(v.cwd(),e);return t&&!c.includes(t.status)})}async function bt(e,t=[]){let n=v.cwd(),r=[];for(let a of new Set([...yt(e),...t])){let e=i(n,a);if(!(!e||c.includes(e.status)))try{await de(n,e),r.push(a)}catch{}}return r}async function xt(e,t={}){let n=e?N(e):R();if(!n)throw new h(`flow-failed`,e?`No flow run "${e}".`:`No flow runs.`,{hint:`Run one: coder flow run <name>`});if(n.status!==`running`)throw new h(`flow-failed`,`Run ${n.runId} is not running.`,{runId:n.runId,hint:`Result: coder flow result ${n.runId}`});let r=O(n.runId);if(!Z(n))return J(r,n,{status:`failed`,error:`orchestrator died`}),{runId:n.runId,status:`failed`,stoppedTasks:[],keptTasks:yt(n.runId)};let a=yt(n.runId),o=p(r);try{v.kill(n.pid,t.keepTasks?`SIGTERM`:`SIGINT`)}catch(e){throw o.close(),e}let s=await o.until(()=>{let e=j(n.runId);return e?.status===`running`?void 0:e},5e3);if(!s||s.status===`running`)throw new h(`flow-failed`,`Run ${n.runId} did not stop within 5s.`,{runId:n.runId,hint:`Check it: coder flow result ${n.runId}`});let l=v.cwd(),u=[],d=[];for(let e of a){let t=i(l,e);t&&(t.status===`cancelled`?u.push(e):c.includes(t.status)||d.push(e))}return{runId:n.runId,status:s.status,stoppedTasks:u,keptTasks:d}}async function*St(e,t,n={}){let r=p(O(e));try{let i=_.join(O(e),`events.jsonl`),a=n.tail??`all`,o=0;if(a!==`all`)try{o=Math.max(0,y.readFileSync(i,`utf8`).split(`
11
- `).length-1-a)}catch{}let s=ee(i),c=()=>{let e=[];for(let t of s()){if(o>0){--o;continue}try{e.push(JSON.parse(t))}catch{}}return e},u=l(),d=j(e);for(;(!d||d.status===`running`)&&(yield*c(),d=j(e)??d,!(d&&d.status!==`running`));){let n=d?.pid?!Z(d,u):t!==void 0&&!X(t);if(d&&(d.pid||t!==void 0)&&n){Y(e,`orchestrator died`);break}await r.wait(1e3)}yield*c()}finally{r.close()}}function Ct(e,t,n,r,i){let a=i?{...i,pid:v.pid,pidStartedAt:new Date().toISOString()}:q(e,t,r,v.pid),{runId:o}=a,s=O(o);i&&P(s,a),y.writeFileSync(_.join(s,`events.jsonl`),``,`utf8`);let c=_.join(s,`journal.jsonl`),l=r?S(c):[],u=new we(l,c),d={runId:o,runDir:s,cwd:t.cwd?_.resolve(t.cwd):v.cwd(),journal:u,semaphore:new We(a.concurrency),flowConcurrency:t.concurrency===void 0,maxTasks:a.maxTasks,dryRun:t.dryRun??!1,ledger:{},running:new Set,taskCount:0,stopping:!1,hooks:n,...t.integrationToken?{integrationToken:t.integrationToken}:{},...t.connections?{connections:t.connections}:{},...t.ceiling?{ceiling:t.ceiling}:{}};return{record:a,ctx:d,markStopped:()=>{d.stopping=!0,J(s,a,{status:`stopped`,concurrency:d.semaphore.limit,taskCount:d.taskCount,ledger:d.ledger})},replayable:l.length}}async function wt(e){let{ctx:t,record:n}=e,{runDir:r,runId:i}=t,{script:a,name:o,args:s}=n;try{let e=await V.run(t,()=>H.run({args:s??{},depth:0},()=>gt(a,s,n)));return J(r,n,{status:`completed`,concurrency:t.semaphore.limit,taskCount:t.taskCount,ledger:t.ledger,result:e}),{runId:i,name:o,status:`completed`,result:e,tokens:t.ledger,taskCount:t.taskCount}}catch(e){throw t.stopping||J(r,n,{status:`failed`,concurrency:t.semaphore.limit,taskCount:t.taskCount,ledger:t.ledger,error:e instanceof Error?e.message:String(e)}),e instanceof h&&(e.code===`chain-exhausted`||e.code===`approval-pending`)?(e.runId??=i,e):new h(`flow-failed`,e instanceof Error?e.message:String(e),{runId:i})}}async function Tt(e,t,n,r,i){let a=Ct(e,t,n,r,i);return n.onStart?.({runId:a.ctx.runId,requestStop:a.markStopped,runningIds:()=>[...a.ctx.running]}),a.replayable&&B(a.ctx,{kind:`replay`,count:a.replayable}),wt(a)}function Q(e,t={},n={}){return Tt(e,t,n)}function Et(e,t={},n={}){return Tt(``,t,n,e)}function $(e,t,n){return Tt(``,{cwd:t,concurrency:e.concurrencySet?e.concurrency:void 0,maxTasks:e.maxTasks},n,e.runId,e)}const Dt={async run(e={}){let t=await Q(`review`,{cwd:e.cwd,args:e});return{...t.result,runId:t.runId}}};export{N as C,Te as D,T as E,Me as O,D as S,Ne as T,Fe as _,Dt as a,C as b,xt as c,_t as d,ot as f,nt as g,rt as h,q as i,E as k,Ue as l,st as m,vt as n,Q as o,K as p,X as r,bt as s,$ as t,He as u,Be as v,j as w,ke as x,Ie as y};
@@ -1 +0,0 @@
1
- import{bt as e}from"./errors-XBA-Ls4n.js";import{t}from"./integrations-DyInAa5g.js";import{a as n,i as r,l as i,s as a}from"./task-BU1JEK9X.js";import{n as o,t as s}from"./base64url-CsVsW4Id.js";import c from"node:path";import l from"node:process";import u from"node:fs";import{execFile as d,spawn as f}from"node:child_process";import p from"node:fs/promises";import{promisify as m}from"node:util";import{Readable as h}from"node:stream";import{pipeline as g}from"node:stream/promises";const _=m(d);async function v(e){if(l.platform===`linux`){let t=await p.readFile(`/proc/${e}/stat`,`utf8`).catch(()=>``);return t.slice(t.lastIndexOf(`)`)+2).split(` `)[19]}return(await _(`ps`,[`-p`,String(e),`-o`,`lstart=`]).catch(()=>void 0))?.stdout.trim()||void 0}function y(e){let t=s(e);if(!Number.isInteger(t.pid)||typeof t.dir!=`string`||typeof t.started!=`string`)throw Error(`Invalid local runner handle`);return t}var b=class{workDir;kind=`local`;children=new Map;constructor(e){this.workDir=e}async start(t,i){await p.mkdir(this.workDir,{recursive:!0});let s=await p.mkdtemp(c.join(this.workDir,`task-`)),d=t.runner===`local`?r(t):void 0,m=u.openSync(c.join(s,`runner.log`),`a`);await p.mkdir(c.join(s,`bin`)),await p.writeFile(c.join(s,`bin/coder`),`#!/bin/sh\nexec "${l.execPath}" "${e}" "$@"\n`,{mode:493});let h=f(l.execPath,[e,`agent`,`run`,`--task`,t.id],{cwd:s,detached:!0,env:{PATH:[c.join(s,`bin`),l.env.PATH??``].join(c.delimiter),HOME:l.env.HOME??``,TMPDIR:l.env.TMPDIR??``,...l.env.CODER_HOME?{CODER_HOME:l.env.CODER_HOME}:{},...i,...d?{CODER_CHECKOUT_CACHE:d}:{},CODER_INBOX_SOCKET:n(s)},stdio:[`ignore`,m,m]});await new Promise((e,t)=>{h.once(`spawn`,e),h.once(`error`,t)}),u.closeSync(m);let g={child:h};this.children.set(h.pid,g),h.once(`close`,e=>{g.code=e,a(c.join(s,`repo`)).catch(e=>console.error(`coder runner: checkout cleanup failed`,e))}),h.unref();let _=await v(h.pid);if(!_)throw Error(`Could not identify the local runner process`);return o({pid:h.pid,dir:s,started:_})}async status(e){let{pid:t,dir:n,started:r}=y(e),i=this.children.get(t);if(i?.code===void 0)try{if(l.kill(t,0),await v(t)===r)return{state:`running`}}catch{}return await a(c.join(n,`repo`)),{state:`exited`,...i?.code==null?{}:{code:i.code}}}async stop(e){let{pid:t,started:n}=y(e);if(await v(t)===n)try{l.kill(-t,`SIGTERM`)}catch{try{l.kill(t,`SIGTERM`)}catch{}}}async push(e,t){let{pid:r,dir:a,started:o}=y(e);if(await v(r)!==o)throw Error(`The task process exited`);return i(n(a),t)}};function x(e,t,n={}){return new Promise((r,i)=>{let a=f(e,t,{env:n,stdio:[`ignore`,`pipe`,`pipe`]}),o=``,s=``;a.stdout.on(`data`,e=>o+=String(e)),a.stderr.on(`data`,e=>s+=String(e)),a.once(`error`,i),a.once(`close`,e=>r({code:e,stdout:o,stderr:s}))})}function S(){return Object.values(t).flatMap(e=>e.tools.install?[`(${e.tools.install})`]:[])}function C(e,t=200,n={}){return new Response(JSON.stringify(e),{status:t,headers:{"content-type":`application/json`,...n}})}const w=e=>e.searchParams.has(`cursor`);function T(e){if(e)try{return s(e)}catch{return}}const E=e=>T(e.searchParams.get(`cursor`));function D(e,t=50,n=200){let r=Number(e.searchParams.get(`limit`)??t);return Number.isInteger(r)&&r>0?Math.min(r,n):t}function O(e,t,n){let r=e.slice(0,t);return{items:r,...e.length>t?{next:o(n(r.at(-1)))}:{}}}const k=(e,t=302)=>new Response(null,{status:t,headers:{location:e}}),A=()=>new Response(`Forbidden`,{status:403}),j=()=>new Response(`Not found`,{status:404,headers:{"content-type":`text/plain; charset=utf-8`}}),M=()=>new Response(`Method not allowed`,{status:405}),N=e=>k(`/login?return=${encodeURIComponent(`${e.pathname}${e.search}`)}`),P=e=>e.startsWith(`/api/auth`)?65536:/\/tasks\/[^/]+\/history$/.test(e)?4194304:1048576;async function F(e,t,n){let r=Number(t??0);if(Number.isFinite(r)&&r>n)throw Object.assign(Error(`Payload too large`),{status:413});let i=[],a=0;for await(let t of e){if(a+=t.byteLength,a>n)throw Object.assign(Error(`Payload too large`),{status:413});i.push(t)}let o=new Uint8Array(a),s=0;for(let e of i)o.set(e,s),s+=e.byteLength;return o}function I(e){let t=new Headers;for(let[n,r]of Object.entries(e))r!==void 0&&t.set(n,Array.isArray(r)?r.join(`, `):r);return t}function L(e,t){let n=e.url??`/`,r=e.method===`GET`||e.method===`HEAD`?void 0:h.toWeb(e);return new Request(`http://${e.headers.host??`localhost`}${n}`,{method:e.method,headers:I(e.headers),body:r,duplex:`half`,signal:t})}function R(e,{admit:t=()=>!0}={}){return async(n,r)=>{if(!t(n))return void r.writeHead(404).end(`Not found`);let i=new AbortController,a=()=>{n.socket.destroyed&&i.abort()};r.once(`close`,()=>i.abort()),a();try{let t=await e(L(n,i.signal),n.socket.remoteAddress?.replace(/^::ffff:/,``));a();let o=Object.fromEntries(t.headers.entries()),s=t.headers.getSetCookie();s.length&&(o[`set-cookie`]=s),r.writeHead(t.status,o),t.body?await g(h.fromWeb(t.body),r).catch(()=>{}):r.end()}catch(e){if(r.headersSent)return void r.destroy();let t=typeof e==`object`&&e&&`status`in e;t||console.error(`coder server: request failed`,e);let n=t?e instanceof Error?e.message:String(e):`Internal server error`;r.writeHead(t?Number(e.status):500,{"content-type":`application/json`}),r.end(JSON.stringify({error:n}))}}}async function z(e,t){if(e.method===`GET`||e.method===`HEAD`||!e.body)return e;try{let n=await F(e.body,e.headers.get(`content-length`)??void 0,t);return new Request(e.url,{method:e.method,headers:e.headers,body:n.byteLength?Buffer.from(n):void 0,signal:e.signal})}catch(e){if(e.status===413)return new Response(`Payload too large`,{status:413});throw e}}export{S as _,C as a,M as c,D as d,w as f,x as g,b as h,A as i,j as l,N as m,E as n,z as o,k as p,T as r,R as s,P as t,O as u};
@@ -1,2 +0,0 @@
1
- import{qi as e}from"./core-DwsAMCnL.js";import{c as t,d as n,o as r,r as i,s as a}from"./slack-Bo5l13Rs.js";import{randomUUID as o}from"node:crypto";async function s(e,t){let r=new URLSearchParams(await e.text()),i=Object.fromEntries(t.map(e=>[e,r.get(e)?.trim()??``])),a=t.filter(e=>!i[e]);if(a.length)throw new n(`invalid-field`,a[0],`Missing ${a.join(`, `)}`);return i}async function c(e,t,r=fetch,i=Date.now()){let a=await r(e,{method:`POST`,headers:{accept:`application/json`,"content-type":`application/x-www-form-urlencoded`},body:new URLSearchParams(t)}),o=await a.json().catch(()=>({}));if(!a.ok||!o.access_token)throw new n(`platform-error`,o.error??String(a.status),`${new URL(e).host} refused the token request: ${o.error_description??o.error??a.status}`);return{accessToken:o.access_token,...o.refresh_token?{refreshToken:o.refresh_token}:{},...o.expires_in?{expiresAt:i+o.expires_in*1e3}:{},...o.id_token?{idToken:o.id_token}:{}}}async function l(e,t,n,r=Date.now()){if(!e)throw Error(`The installation has no token; connect it again from the dashboard`);let i=JSON.parse(e);if(!i.refreshToken||(i.expiresAt??1/0)-3e5>r)return i.accessToken;let{idToken:a,...o}=await t(i.refreshToken),s={...o,refreshToken:o.refreshToken??i.refreshToken},c=await n?.(JSON.stringify(s));return c?JSON.parse(c).accessToken:s.accessToken}const u=`https://api.linear.app/oauth/token`,d=[`clientId`,`clientSecret`,`webhookSecret`],f=e=>e.replace(/\/$/,``);async function p(e,t,n){let r=await n(`https://api.linear.app/graphql`,{method:`POST`,headers:{authorization:`Bearer ${e}`,"content-type":`application/json`},body:JSON.stringify({query:t})}),i=await r.json().catch(()=>({}));if(!r.ok||!i.data)throw Error(`Linear refused the query: ${r.status}`);return i.data}function m(e,t,n,r,i=!1){return`https://linear.app/oauth/authorize?${new URLSearchParams({client_id:e.clientId,redirect_uri:t,response_type:`code`,scope:r?`read,write,app:mentionable,app:assignable`:i?`read,write`:`read`,state:n,...r?{actor:`app`}:{}})}`}function h(e,t,r,i){let a=new URL(e.url).searchParams.get(`code`);if(!a)throw new n(`missing-code`);let{clientId:o,clientSecret:s}=t;return c(u,{grant_type:`authorization_code`,code:a,redirect_uri:r,client_id:o,client_secret:s},i)}function g(e,t,n){let r=new URLSearchParams(n?{"oauth.client_name":n}:{});return r.set(`developer.name`,f(e).replace(/^https?:\/\//,``)),r.set(`oauth.client_uri`,f(e)),r.append(`oauth.redirect_uris`,`${f(e)}/install/linear/callback`),r.append(`oauth.redirect_uris`,`${f(e)}/connect/linear/callback`),r.set(`webhook.enabled`,`true`),r.set(`webhook.url`,`${f(e)}/hooks/linear?app=${t}`),r.set(`webhook.resourceTypes`,`AgentSessionEvent`),`https://linear.app/settings/api/applications/new?${r}`}const _={builtin:`shared`,createStep:(e,{name:t}={},n=o())=>({intro:`Linear runs the agent as an app of your own OAuth application.`,link:g(e,n,t),steps:[{text:`Open the link signed in to Linear, check the form and click **Create**.`},{text:`Copy the client ID, the client secret and the webhook signing secret into the fields below.`}],notes:[`The link fills in the name, the callback URLs and the webhook.`,`To install the app in other Linear workspaces, make it public in its Linear settings.`],hidden:{key:n},fields:[{name:`clientId`,label:`Client ID`,placeholder:`9f3c2a7d1e8b4c6a0d5e7f1a2b3c4d5e`,required:!0},{name:`clientSecret`,label:`Client secret`,placeholder:`4b1e9c7a2d0f8e3c5a6b9d1f0e2c4a7b`,required:!0},{name:`webhookSecret`,label:`Webhook signing secret`,hint:`shown with the webhook settings`,placeholder:`lin_wh_…`,required:!0}],submit:`Create Linear app`}),settingsUrl:()=>`https://linear.app/settings/api`,values:(e,{publicUrl:t,definition:n})=>({url:`https://linear.app/settings/api`,label:`Open application`,lines:[{text:`Application name`,copy:n.name??e.agent},{text:`Callback URL`,copy:`${f(t)}/install/linear/callback`},{text:`Callback URL`,copy:`${f(t)}/connect/linear/callback`},{text:`Webhook URL`,copy:`${f(t)}/hooks/linear?app=${e.id.slice(e.id.indexOf(`:`)+1)}`},{text:`Webhook resource types`,copy:`AgentSessionEvent`}]}),async createCallback(e,{state:t,definition:r}){let{key:i,...a}=await s(e,[...d,`key`]);if(!/^[0-9a-f-]{36}$/.test(i))throw new n(`invalid-field`,`key`);return{platformAppId:i,name:r.name??t.agent,credentials:a}},accountUrl:({login:e})=>`https://linear.app/${encodeURIComponent(e)}`,installUrl(e,t,{publicUrl:n,state:r}){return m(t,`${f(n)}/install/linear/callback`,r,!0)},async installCallback(e,{credentials:t,publicUrl:n,fetch:r}){let{idToken:i,...a}=await h(e,t,`${f(n)}/install/linear/callback`,r),{organization:o,viewer:s}=await p(a.accessToken,`query { organization { id name urlKey } viewer { id } }`,r);return{platformInstallId:o.id,account:{login:o.urlKey},token:JSON.stringify(a),self:s.id}}},v={authorizeUrl:(e,{publicUrl:t,state:n,access:r})=>m(e,`${f(t)}/connect/linear/callback`,n,!1,!!r),async exchange(e,t,{publicUrl:n,fetch:r,access:i}){let{idToken:a,...o}=await h(e,t,`${f(n)}/connect/linear/callback`,r),{viewer:s}=await p(o.accessToken,`query { viewer { id displayName } }`,r);return{id:s.id,login:s.displayName,...i?{token:JSON.stringify(o)}:{}}},async access(e,t,{fetch:n,now:r}){let{clientId:i,clientSecret:a}=t,o;return{accessToken:await l(e,e=>c(u,{grant_type:`refresh_token`,refresh_token:e,client_id:i,client_secret:a},n,r),async e=>{o=e},r),...o?{refreshed:o}:{}}}};function y(e,t,n,r){let{clientId:i,clientSecret:a}=t;return l(e.token,e=>c(u,{grant_type:`refresh_token`,refresh_token:e,client_id:i,client_secret:a},r),n)}const b={read:[`read`],write:[`read`,`write`]};function x(e,t,n){return{name:`linear`,url:`https://mcp.linear.app/mcp${e.includes(`write`)?``:`/readonly`}`,headers:{Authorization:`Bearer ${n}`},credentialFields:{header:`Authorization`}}}const S={id:`linear`,brand:{color:`#222326`,icon:`M2.886 4.18A11.982 11.982 0 0 1 11.99 0C18.624 0 24 5.376 24 12.009c0 3.64-1.62 6.903-4.18 9.105L2.887 4.18ZM1.817 5.626l16.556 16.556c-.524.33-1.075.62-1.65.866L.951 7.277c.247-.575.537-1.126.866-1.65ZM.322 9.163l14.515 14.515c-.71.172-1.443.282-2.195.322L0 11.358a12 12 0 0 1 .322-2.195Zm-.17 4.862 9.823 9.824a12.02 12.02 0 0 1-9.824-9.824Z`,svg:`<svg xmlns="http://www.w3.org/2000/svg" fill="#222326" viewBox="0 0 100 100" style="fill:light-dark(#222326,#fff)"><path d="M 1.23 61.52 c -0.22 -0.95 0.91 -1.55 1.6 -0.86 L 39.33 97.18 c 0.69 0.69 0.09 1.82 -0.86 1.6 C 20.05 94.45 5.55 79.95 1.23 61.52 Z M 0 46.89 c -0.02 0.28 0.09 0.56 0.29 0.76 L 52.35 99.71 c 0.2 0.2 0.48 0.31 0.76 0.29 2.37 -0.15 4.69 -0.46 6.96 -0.93 0.76 -0.16 1.03 -1.1 0.48 -1.65 L 2.58 39.45 c -0.55 -0.55 -1.49 -0.29 -1.65 0.48 -0.47 2.27 -0.78 4.59 -0.93 6.96 Z M 4.21 29.71 c -0.17 0.37 -0.08 0.81 0.21 1.1 l 64.78 64.78 c 0.29 0.29 0.73 0.37 1.1 0.21 1.79 -0.8 3.52 -1.69 5.19 -2.68 0.55 -0.33 0.64 -1.09 0.18 -1.54 L 8.44 24.34 c -0.45 -0.45 -1.21 -0.37 -1.54 0.18 -0.99 1.67 -1.89 3.4 -2.68 5.19 Z M 12.66 18.07 c -0.37 -0.37 -0.39 -0.96 -0.04 -1.35 C 21.78 6.46 35.11 0 49.95 0 77.59 0 100 22.41 100 50.05 c 0 14.84 -6.46 28.17 -16.72 37.34 -0.39 0.35 -0.98 0.33 -1.35 -0.04 L 12.66 18.07 Z"/></svg>`},name:`Linear`,description:`Agent sessions on Linear issues: mentions and assignments`,installLabel:`Connect Linear`,use:`Mention @{handle} or delegate an issue to it.`,answersEveryPrompt:!0,progressReplies:!0,sample:`linear:2f1e6a1c-0000-4000-8000-000000000001:s:5b7d3c2a-0000-4000-8000-000000000002`,prompt:[`A conversation is a Linear agent session on an issue.`,`get_issue reads the issue by its id or identifier, such as ENG-123.`,`reply posts progress in the agent session; your final message completes it. save_comment posts an issue comment outside the session.`,`Replies are Markdown about the issue; link pull requests you open.`].join(`
2
- `),events:{mention:{description:`Agent session started or prompted by mentioning or assigning the agent`,on:`mention`,addressed:!0}},tools:{presets:b,server:x},hosts:[`api.linear.app`,`mcp.linear.app`],get app(){return _},auth:{canWrite:r,token:(e,t,n,{save:r,fetch:i}={})=>y(e,t,r,i),get user(){return v}},target(e,t){let n=new URL(e.url).searchParams.get(`app`),r;try{r=JSON.parse(t).organizationId}catch{return}return n&&typeof r==`string`?{app:n,installation:r}:void 0},adapter:async e=>(await import(`./adapter-CVd5klMH.js`)).linearAdapter(e),ownEvents(e,t,n,r){let i=JSON.parse(t);if(i.type!==`OAuthApp`||i.action!==`revoked`)return;let o=r.webhookSecret;return a(t,e.headers.get(`linear-signature`),o)&&i.organizationId&&i.oauthClientId===n.id.slice(7)?{uninstalled:`${n.id}:${i.organizationId}`}:{invalid:!0}},event(e,t,n){t.startTyping(`Reading the issue`).catch(()=>{});let r=n.raw.agentSessionPromptContext;return{type:e,actor:{id:n.author.userId,login:n.author.userName},...r?{promptContext:r.slice(0,16384)}:{}}}};var C=e({INTEGRATIONS:()=>w,enabledIntegrations:()=>T,repositoryReader:()=>E});const w={slack:i,github:t,linear:S};function T(e){if(!e)return w;let t=e.filter(e=>!w[e]);if(t.length)throw Error(`Unknown integration ${t.join(`, `)} in SERVER_INTEGRATIONS; pick from ${Object.keys(w).join(`, `)}`);return Object.fromEntries(e.map(e=>[e,w[e]]))}const E=e=>Object.values(e).find(e=>e.repos);export{T as n,C as r,w as t};
@@ -1,2 +0,0 @@
1
- import{Rt as e,en as t,qi as n}from"./core-DwsAMCnL.js";import{$t as r,K as i,Qt as a,Zt as o,_ as s,cn as c,dn as l,en as u,gn as d,in as f,mn as p,pn as m}from"./errors-XBA-Ls4n.js";import{Ct as h,Nt as ee,Rt as g,wt as te}from"./output-D95NoAA9.js";import _ from"node:path";import{fileURLToPath as v}from"node:url";import y from"node:fs";var b={name:`Coder`,description:`Answers engineering questions, reviews pull requests, and makes requested changes.`,permissions:`workspace-write`,integrations:{github:{events:{pull_request:{flow:`review`,permissions:`read-only`},mention:!0,issue:!0,comment:{match:`[Cc]oder`}}},slack:{events:{mention:!0,dm:!0,command:!0,channel:{match:`[Cc]oder`}}},linear:{events:{mention:!0}}}};const x=p().check(t(/^[a-z0-9][a-z0-9_-]*$/i,`agent or flow name`)),S=a([`low`,`medium`,`high`]),C=a([`read-only`,`workspace-write`,`auto`]),w=a([`read`,`write`]),T=m({flow:c(x),match:c(p().check(e(1))),permissions:c(C),actAs:c(f(`requester`))}),E=m({events:c(d([r(p()),l(p(),d([x,T,f(!0)]))]))}),ne=m({$schema:c(p()),name:c(p().check(e(1))),description:c(p()),engine:c(p()),runner:c(p().check(e(1))),model:c(p()),effort:c(S),permissions:c(C),access:c(w),mcp:c(l(x,te)),integrations:o(l(p(),E),{})}),re=m({allowedEvents:c(r(p()))}),D=m({connections:c(r(p())),engine:c(p()),model:c(p()),effort:c(S),permissions:c(C),access:c(w),integrations:c(l(p(),re)),disabled:c(u())}),O=l(x,d([u(),D]));function k(e){return e.issues.map(e=>`${e.path.map(String).join(`.`)||`(root)`}: ${e.message}`).join(`; `)}function A(e){let t=e?.mcp;return!t||typeof t!=`object`?e:{...e,mcp:Object.fromEntries(Object.entries(t).map(([e,t])=>{if(!t||typeof t!=`object`)return[e,t];let{repository:n,...r}=t;return[e,r]}))}}function j(e,t,n=!0){let r=ne.safeParse(A(t));if(!r.success)throw Error(`Invalid agent definition "${e}": ${k(r.error)}`);let{$schema:i,...a}=r.data;return g(a.mcp,n),a}function M(e){if(e===void 0)return{};let t=O.safeParse(e);if(!t.success)throw Error(`Invalid agents usage: ${k(t.error)}`);return t.data}function N(e){return e?.events?Array.isArray(e.events)?e.events:Object.keys(e.events):[]}function P(e,t){if(!e?.events)return;if(Array.isArray(e.events))return e.events.includes(t)?{}:void 0;if(!Object.prototype.hasOwnProperty.call(e.events,t))return;let n=e.events[t];return n===!0?{}:typeof n==`string`?{flow:n}:n}function F(e,t){let n=[],r=Object.keys(t).sort().join(`, `)||`none`;for(let i of e){for(let[e,a]of Object.entries(i.definition.integrations)){let o=`agents.${i.id}.integrations.${e}`,s=t[e];if(!s){n.push(`${o}: unknown integration; valid: ${r}`);continue}let c=Object.keys(s.events).sort().join(`, `)||`none`;for(let e of N(a)){e in s.events||n.push(`${o}.events.${e}: unknown event; valid: ${c}`);let t=P(a,e)?.match;if(t!==void 0)try{new RegExp(t)}catch{n.push(`${o}.events.${e}.match: invalid regex`)}}}for(let[e,a]of Object.entries(i.usage?.integrations??{})){let o=`agents.${i.id}.integrations.${e}`,s=t[e];if(!s){n.push(`${o}: unknown integration; valid: ${r}`);continue}let c=Object.keys(s.events).sort().join(`, `)||`none`;for(let e of a.allowedEvents??[])e in s.events||n.push(`${o}.allowedEvents: unknown event "${e}"; valid: ${c}`)}}return n}function I(e){return e.definition.access===`read`||e.usage?.access===`read`?`read`:`write`}function L(e,t){let n=N(e.definition.integrations[t]),r=e.usage?.integrations?.[t]?.allowedEvents;return r===void 0?n:n.filter(e=>r.includes(e))}function R(e){return{engine:e.usage?.engine??e.definition.engine,model:e.usage?.model??e.definition.model,effort:e.usage?.effort??e.definition.effort,permissions:e.usage?.permissions??e.definition.permissions??`auto`}}const z={"read-only":0,"workspace-write":1,auto:2};function B(e,t){return t&&z[t]<=z[e]?t:e}var V=n({AgentLoadError:()=>H,agentsFromSources:()=>Y,assertNotReserved:()=>X,builtinDefinitions:()=>K,defaultAgent:()=>q,loadAgents:()=>$,repoAgentOverride:()=>Q}),H=class extends Error{};const U=v(new URL(`./builtin/coder/`,import.meta.url)),W={coder:{json:b,builtin:!0,dir:U,systemPrompt:y.readFileSync(_.join(U,`system.md`),`utf8`)}};function G(e,t=!1){let n={},r;try{r=y.readdirSync(e,{withFileTypes:!0}).filter(e=>e.isDirectory()).map(e=>e.name)}catch{return n}for(let i of r){let r=_.join(e,i),a=_.join(r,`agent.json`);y.statSync(a,{throwIfNoEntry:!1})?.isFile()&&(n[i]={json:JSON.parse(y.readFileSync(a,`utf8`)),builtin:t,dir:r})}return n}function K(){return W}function q(){return`coder`}function J(e,t){let n=Object.entries(e.integrations).flatMap(([e,n])=>{let r=t[e]?.events;if(!r)return[];let i=Array.isArray(n.events)?n.events.filter(e=>e in r):n.events&&Object.fromEntries(Object.entries(n.events).filter(([e])=>e in r));return[[e,{...n,...i?{events:i}:{}}]]});return{...e,integrations:Object.fromEntries(n)}}function Y(e,t,n){let r=M(e.usage),i=Object.keys(r).filter(t=>!(t in e.definitions));if(i.length){let t=Object.keys(e.definitions).sort().join(`, `)||`none`;throw Error(`Invalid agents:\n agents.${i.sort().join(`, agents.`)}: no agent definition; known ids: ${t}`)}let a=[];for(let[n,i]of Object.entries(e.definitions)){let o=r[n],s=o===!1?{disabled:!0}:o,c=typeof s==`object`&&s.disabled;if(c&&!e.includeDisabled)continue;let l;try{l=j(n,i.json,i.repository??!i.builtin)}catch(e){if(c)continue;throw new H(e instanceof Error?e.message:String(e))}let u=i.builtin?J(l,t):l;a.push({id:n,name:u.name??n,definition:u,...typeof s==`object`?{usage:s}:{},...i.dir?{dir:i.dir}:{},builtin:i.builtin})}let o=F(a.filter(e=>!e.usage?.disabled),t);if(o.length)throw new H(`Invalid agents:\n ${o.join(`
2
- `)}`);return a}function X(e){let t=e.filter(e=>e in K()).sort();if(t.length)throw Error(`Invalid agents:\n agents.${t.join(`, agents.`)}: built-in agent ids are reserved`)}function Z(e){let t=ee(i(_.resolve(e)));return{file:t,usage:y.existsSync(t)?JSON.parse(y.readFileSync(t,`utf8`)).agents??{}:{}}}function Q(e,t,n){let{file:r,usage:i}=Z(e),a=i[t],o=typeof a==`boolean`?!a:a?.disabled;return o===void 0||o===n?void 0:r}async function $(e,t,{includeDisabled:n=!1}={}){e=_.resolve(e);let r={...K()},i=G(s(`agents`));for(let e of Object.values(i))e.repository=!1;let a=G(_.join(e,`.coder`,`agents`));X([...Object.keys(i),...Object.keys(a)]),Object.assign(r,i,a);let o={...h(e).agents},{usage:c}=Z(e);for(let e of Object.keys(o))!(e in r)&&!(e in c)&&delete o[e];return Y({definitions:r,usage:o,includeDisabled:n},t,e)}export{q as a,Q as c,R as d,P as f,L as g,M as h,K as i,I as l,j as m,Y as n,$ as o,B as p,X as r,V as s,H as t,N as u};
@@ -1,5 +0,0 @@
1
- import{qi as e}from"./core-DwsAMCnL.js";import{Ct as t,Dt as n,H as r,V as i,_ as a,wn as o}from"./errors-XBA-Ls4n.js";import{i as s,m as c,n as l,o as u}from"./load-zhcrwSRF.js";import{t as d}from"./integrations-DyInAa5g.js";import"./turn-DMvPfhb5.js";import f from"node:path";import p from"node:fs";import{execFile as ee}from"node:child_process";import{randomUUID as te}from"node:crypto";import{isDeepStrictEqual as m}from"node:util";const h=(e,t=``)=>`token:${e}:${t}`,g=e=>`token-drop:${e}`;var ne=e({agentProblems:()=>D,agentWithVersion:()=>x,diskFiles:()=>k,ensureBuiltinAgents:()=>M,getAgent:()=>v,getVersion:()=>b,listAgents:()=>y,publishAgent:()=>S,publishVersion:()=>C,seedBuiltinAgent:()=>A,seedBuiltinAgents:()=>j,setAgentSettings:()=>w,toAgent:()=>O,versionKey:()=>_});const _=(e,t)=>`${e}:${String(t).padStart(6,`0`)}`;function v(e,t){return e.get(`agent`,t)}async function y(e){return(await e.list(`agent`)).map(e=>e.value)}async function b(e,t,n){let r=n??(await v(e,t))?.currentVersion;return r===void 0?void 0:e.get(`agentversion`,_(t,r))}async function x(e,t){return(await e.listAgentsWithVersions(t))[0]??{}}async function S(e,t,n){let r=c(t.id,t.definition),i=t.files&&Object.keys(t.files).length?t.files:void 0;return e.publishAgent({id:t.id,name:t.name??r.name??t.id,...t.description??r.description?{description:t.description??r.description}:{},source:t.source,...t.repo?{repo:t.repo}:{},...t.path?{path:t.path}:{},currentVersion:0,createdAt:n,updatedAt:n},{agent:t.id,version:0,definition:r,systemPrompt:t.systemPrompt,...i?{files:i}:{},...t.commit?{commit:t.commit}:{},...t.origin?{source:t.origin}:{},importedFrom:t.importedFrom,createdAt:n})}async function C(e,t,n,r){if(!r)return(await S(e,t,n)).version;let i=c(t.id,t.definition),a=t.files&&Object.keys(t.files).length?t.files:void 0,o=r?r.record:await v(e,t.id),s=r?r.version:o?await b(e,t.id,o.currentVersion):void 0,l=(e,r)=>({id:t.id,name:t.name??i.name??t.id,...t.description??i.description?{description:t.description??i.description}:{},source:t.source,...t.repo?{repo:t.repo}:{},...t.path?{path:t.path}:{},currentVersion:e,...o?.settings?{settings:o.settings}:{},createdAt:o?.createdAt??n,updatedAt:r}),u=e=>m(e.definition,i)&&e.systemPrompt===t.systemPrompt&&m(e.files,a);if(s&&u(s)){let r=l(s.version,o.updatedAt);return m(o,r)||await e.put(`agent`,t.id,l(s.version,n)),s}o||await e.put(`agent`,t.id,l(0,n));let d;for(let r=(o?.currentVersion??0)+1;d={agent:t.id,version:r,definition:i,systemPrompt:t.systemPrompt,...a?{files:a}:{},...t.commit?{commit:t.commit}:{},...t.origin?{source:t.origin}:{},importedFrom:t.importedFrom,createdAt:n},!await e.create(`agentversion`,_(t.id,r),d);r++){let n=await e.get(`agentversion`,_(t.id,r));if(n&&u(n)){d=n;break}}let f=await v(e,t.id);return(!f||f.currentVersion<d.version)&&await e.put(`agent`,t.id,l(d.version,n)),d}async function w(e,t,n,r=Date.now()){let i=await v(e,t);if(!i)throw Error(`No agent named "${t}".`);let a={...i,settings:n,updatedAt:r};return await e.put(`agent`,t,a),a}const T=[`read-only`,`workspace-write`,`auto`];function E(e,t,n,r){if(!t&&!n)return;let i=t??{},a=n??{},o=new Set([...Object.keys(i.integrations??{}),...Object.keys(a.integrations??{})]),s=Object.fromEntries([...o].map(e=>{let t=i.integrations?.[e],n=a.integrations?.[e],r=t?.allowedEvents&&n?.allowedEvents?t.allowedEvents.filter(e=>n.allowedEvents.includes(e)):n?.allowedEvents??t?.allowedEvents;return[e,r?{allowedEvents:r}:{}]})),c=i.permissions??e.permissions??`auto`,l=a.permissions,u=l&&T.indexOf(l)<=T.indexOf(c)?l:c,d=i.access===`read`||a.access===`read`?`read`:a.access??i.access;return{...i,...a,permissions:u,...d?{access:d}:{},...o.size?{integrations:s}:{},...i.connections!==void 0||a.connections!==void 0?{connections:i.connections&&a.connections?i.connections.filter(e=>a.connections.includes(e)):a.connections??i.connections}:{}}}function D(e,t,n){if(e.problems?.length)return e.problems;if(!t)return[`No version ${e.currentVersion} for agent "${e.id}".`];try{return l({definitions:{[e.id]:{json:t.definition,builtin:e.source===`builtin`}},usage:e.settings?{[e.id]:e.settings}:void 0,includeDisabled:!0},n),[]}catch(e){return[e instanceof Error?e.message:String(e)]}}function O(e,t,n,r=d){let i=E(t.definition,void 0,e.settings,r),a=E(t.definition,i,n,r),[o]=l({definitions:{[e.id]:{json:t.definition,builtin:e.source===`builtin`}},usage:a?{[e.id]:a}:void 0},r);if(!o)throw Error(`Agent "${e.id}" is disabled.`);return{...o,files:{...t.files??{},"system.md":t.systemPrompt}}}function k(e,t=``){let n={};for(let r of p.readdirSync(f.join(e,t),{withFileTypes:!0})){let i=t?`${t}/${r.name}`:r.name;r.isDirectory()?Object.assign(n,k(e,i)):r.isFile()&&i!==`agent.json`&&i!==`system.md`&&(n[i]=p.readFileSync(f.join(e,i),`utf8`))}return n}async function A(e,n,r,i){let a=s()[r];return a?await C(e,{id:r,source:`builtin`,definition:a.json,systemPrompt:a.systemPrompt,importedFrom:`builtin:${t()}`},n,i)!==i.version:!1}async function j(e,t,n){let r=n??await Promise.all(Object.keys(s()).map(t=>x(e,t))),i=!1;for(let n of Object.keys(s()))await A(e,t,n,r.find(({record:e})=>e?.id===n)??{})&&(i=!0);return i}async function M(e,t){let n=e.settings??={};return n.builtinAgents||=j(e.store,t).then(()=>{}).catch(e=>{throw delete n.builtinAgents,e}),n.builtinAgents}const N=3e4;var P=class extends Error{};function F(e,t,n,r){let i=t;return(!n.runner||n.runner===e||n.runner===i.name)&&(!n.defaults||!!i.default)&&(!n.ids||n.ids.includes(e))&&(!n.agent||(r??i.agent)===n.agent)&&(!Object.hasOwn(n,`visibleTo`)||!i.owner||i.owner===n.visibleTo)&&(!n.active||i.deletedAt===void 0||!!(n.includeUninstalled&&i.uninstalled))&&(!n.installation||i.installationId===n.installation)&&(!n.apps||!!i.app&&n.apps.includes(i.app))}const I=(e,t)=>e===`credential`?`credential:${t.slice(0,Math.max(0,t.lastIndexOf(`/`)))}`:e===`runner`?`runners:`:`installation:${t}`;async function L(e,t,n,r){let{parseCredentialId:i}=await import(`./apps-D-v5sQJk.js`).then(e=>e.wt),a=i(n).owner,o=(await e.list(t)).filter(e=>t===`credential`?i(e.id).owner===a:e.id===n),s=await r(o.find(e=>e.id===n)?.value,o,e);for(let n of s??[])n.value===null?await e.delete(t,n.id):await e.put(t,n.id,n.value);return!!s?.length}function R(e,t,n){if(n.deletedAt!==void 0)return;let r=n.app.split(`/`)[0],i=(e,t)=>[e.slice(t.app.length+1),...t.covers??[]],a=new Set(i(t,n));if(e.some(([e,n])=>{let o=n;return e!==t&&!o.deletedAt&&(o.app===r||o.app.startsWith(`${r}/`))&&i(e,o).some(e=>a.has(e))}))throw new P(`Installation "${t}" is bound through another app.`)}function z(e,t,n,r){let i=e?.sending?.count??0,a=[...e?.items.slice(i)??[],...n],o=a.slice(0,Math.max(0,a.length-50));return{...e,owner:t,at:r,items:[...e?.items.slice(0,i)??[],...a.slice(-50)],more:(e?.more??0)+o.length,mustReply:e?.mustReply||o.some(e=>e?.event?.mustReply===!0)}}function B(e,t){let n=e.sending?.count??0;return t===void 0?n:e.items.findIndex((e,r)=>r<n&&e.admission===t)+1}function V(e,t,n,r){let{sending:i,...a}=e,o=t?B(e,n):0;if(t&&i&&o<i.count)return{...e,items:e.items.slice(o),sending:{...i,count:i.count-o,until:r+N}};let s={...a,items:t?e.items.slice(i?.count??0):e.items,more:(e.more??0)+(t?0:i?.more??0),mustReply:e.mustReply||!t&&i?.mustReply};return t?s:z(s,s.owner,[],s.at)}function H(e,t,n=0,r){let i=e??{messages:[],more:0,epoch:te()},a=i.version??i.messages.length+i.more,o=i.messages.map((e,t)=>({sequence:t+1,...e}));if(t)return{...i,version:a+1,messages:o.length<50?[...o,{...t,sequence:a+1}]:o,more:i.more+(o.length<50?0:1)};if(i.epoch!==r)return i;let s=Math.max(i.acknowledged??0,Math.min(n,a)),c=o.filter(e=>e.sequence>s);return{...i,version:a,acknowledged:s,messages:c,more:a-s-c.length}}function U(e){let{sending:t,...n}=e;return z({...n,more:(e.more??0)+(t?.more??0),mustReply:e.mustReply||t?.mustReply},e.owner,[],e.at)}var W=class{now;recordEvents=new EventTarget;async watch(e,t){let n=`${e}:${t}`,r=o();return this.recordEvents.addEventListener(n,r.notify),{...r,close:()=>{this.recordEvents.removeEventListener(n,r.notify),r.close()}}}appUpdates=new Map;values=new Map;configUpdate;constructor(e=Date.now){this.now=e}async withAppLock(e,t){e.startsWith(`runners:`)&&(e=`runners:`);let n=(this.appUpdates.get(e)??Promise.resolve()).catch(()=>{}).then(()=>t(this));this.appUpdates.set(e,n);try{return await n}finally{this.appUpdates.get(e)===n&&this.appUpdates.delete(e)}}async withConfigLock(e){let t=(this.configUpdate??Promise.resolve()).catch(()=>{}).then(()=>e(this));this.configUpdate=t;try{return await t}finally{this.configUpdate===t&&delete this.configUpdate}}withCredential(e,t,n){return this.withAppLock(I(e,t),()=>L(this,e,t,n))}async listAgentsWithVersions(e){let t=Array.isArray(e)?await this.list(`agent`,{ids:e}):e?[{value:await this.get(`agent`,e)}]:await this.list(`agent`);return Promise.all(t.flatMap(({value:e})=>e?[this.get(`agentversion`,`${e.id}:${String(e.currentVersion).padStart(6,`0`)}`).then(t=>({record:e,version:t}))]:[]))}async listAgentSummaries(e={}){return(await this.listAgentsWithVersions(e.slug)).filter(({record:t,version:n})=>(!e.after||t.id>e.after)&&(!e.source||t.source===e.source)&&(!e.platform||!!n?.definition.integrations?.[e.platform])&&(!e.q||[t.id,t.name,t.description,t.repo].some(t=>t?.toLowerCase().includes(e.q.toLowerCase())))).slice(0,e.limit).map(({record:e,version:t})=>{if(!t)return{record:e};let{systemPrompt:n,files:r,...i}=t;return{record:e,version:i}})}async listVersions(e,t,n){let r=await this.get(`agent`,e),i=n??(t===void 0?1/0:(r?.currentVersion??0)+1);return(await this.list(`agentversion`,{prefix:`${e}:`})).filter(({value:e})=>e.version<i&&(t===void 0||e.version>=i-t)).map(({id:e,value:{systemPrompt:t,files:n,...r}})=>({id:e,value:r}))}async publishAgent(e,t){let{publishVersion:n}=await Promise.resolve().then(()=>ne);return this.withAppLock(`agent:${e.id}`,async()=>{let r=(await this.listAgentsWithVersions(e.id))[0]??{},i=await n(this,{...e,definition:t.definition,systemPrompt:t.systemPrompt,files:t.files,commit:t.commit,origin:t.source,importedFrom:t.importedFrom},e.updatedAt,r);return{record:await this.get(`agent`,e.id),version:i,unchanged:i.version===r.record?.currentVersion}})}async listCredentials(e){return(await this.list(`credential`)).filter(({value:t})=>!t.owner||t.owner===e.owner).slice(0,e.limit)}async installationApp(e){let t=await this.get(`installation`,e);if(!t||t.deletedAt)return;let n=await this.get(`app`,t.app);return n?{installation:t,app:n}:void 0}async getApps(e){return(await Promise.all([...new Set(e)].map(async e=>({id:e,value:await this.get(`app`,e)})))).filter(e=>!!e.value)}async updateMetadata(e,t,n){let r=await this.get(e,t);return r?(await this.put(e,t,{...r,...n}),!0):!1}async listHistory(e){return(await this.list(`history`,{prefix:`${e}:`})).map(({value:{engine:e,conversation:t,savedAt:n}})=>({engine:e,conversation:t,savedAt:n})).sort((e,t)=>e.savedAt-t.savedAt)}async conversationState(e){let[t,n,r]=await Promise.all([this.get(`delivery`,e),this.get(`delivery`,`since:${e}`),this.get(`delivery`,`batch:${e}`)]),i=t&&await this.get(`task`,t.taskId);return{record:t,unseen:n,batch:r,...i?.task.flow==="default"?{status:i}:{}}}async markConversation(e,t,n,r,i){let a=await this.get(`delivery`,e);a?.taskId===t&&await this.put(`delivery`,e,{...a,at:r,seen:n},{ttlMs:i})}async heldTokens(e,t){let n={held:new Map,drops:new Map};for(let t of e)for(let e of await this.list(`snapshot`,{prefix:h(t)}))n.held.set(e.id,e.value);for(let r of[...e,...t])n.drops.set(g(r),(await this.get(`snapshot`,g(r)))?.drop);return n}async holdToken(e){(await Promise.all(e.drops.map(async e=>(await this.get(`snapshot`,e.key))?.drop===e.drop))).every(Boolean)&&await this.put(`snapshot`,e.key,e.value,{ttlMs:e.ttlMs})}saveTaskSecrets(e,t){return this.withAppLock(`connections:${e}`,async n=>{let r=await n.get(`task`,e),i=!!(r&&![`completed`,`failed`,`cancelled`].includes(r.status));if(i)for(let e of t)await n.put(`snapshot`,e.id,{secret:e.value,expiresAt:e.expiresAt},{ttlMs:Math.max(1,e.expiresAt-this.now())});return i})}async dispatchState(e){let{key:t,owner:n,at:r,ttlMs:i}=e.delivery,a=this.live(`delivery`).get(t)?.value,o=a?.pending!==void 0&&(!a.owner||(a.at??0)+i<=r);return a&&!o?{claimed:!1}:(await this.put(`delivery`,t,{at:r,owner:n,pending:a?.pending??!0},a?.pending&&a.pending!==!0?{}:{ttlMs:i}),{claimed:!0})}async usageTotals(e){let{sumUsageTotals:t}=await import(`./apps-D-v5sQJk.js`).then(e=>e.wn);return t(this,e)}async usageSummary(e,t){let{usageSummary:n}=await import(`./apps-D-v5sQJk.js`).then(e=>e.wn);return n((await this.list(`usage`)).map(e=>e.value),e,t).totals}bucket(e){let t=this.values.get(e);return t||(t=new Map,this.values.set(e,t)),t}changed(e){}read(e,t){let n=t;if(e!==`app`||!n.shared)return t;let r=this.live(`app`).get(n.shared)?.value;return{...n,credentials:r?.credentials??``}}live(e){let t=this.bucket(e),n=this.now();for(let[e,r]of t)r.expiresAt!==void 0&&r.expiresAt<=n&&t.delete(e);return t}async get(e,t){let n=this.live(e).get(t);return n&&this.read(e,n.value)}async patchLogin(e,t,n={}){let r=this.live(`login`).get(e),i=r?.value;if(!i||!(i.expiresAt>this.now())||Object.entries(n).some(([e,t])=>Array.isArray(t)?!t.includes(i[e]):i[e]!==t))return;let a={...i,...t};return a.input===null&&delete a.input,r.value=a,this.recordEvents.dispatchEvent(new Event(`login:${e}`)),a}async completeLogin(e,t,n){let{completeLogin:r}=await import(`./apps-D-v5sQJk.js`).then(e=>e.wt);return r(this,e,t,n)}async put(e,t,n,r={}){e===`installation`&&R([...this.live(e)].map(([e,t])=>[e,t.value]),t,n);let i=r.ttlMs===void 0?void 0:this.now()+r.ttlMs,a=this.bucket(e),o=e===`task`&&!r.unarchive?a.get(t)?.value?.archivedAt:void 0;a.set(t,{value:o===void 0?e===`app`&&n.shared?{...n,credentials:``}:n:Object.assign({},n,{archivedAt:o}),expiresAt:i}),(e===`delivery`||e===`login`)&&this.recordEvents.dispatchEvent(new Event(`${e}:${t}`)),this.changed(e)}async putMany(e,t,n={}){if(e===`task`){await Promise.all(t.map(t=>this.put(e,t.id,t.value,n)));return}let r=this.bucket(e);for(let e of t)r.set(e.id,{value:e.value,...n.ttlMs===void 0?{}:{expiresAt:this.now()+n.ttlMs}});this.changed(e)}async list(e,t={}){let n=e===`installation`&&t.agent?this.live(`app`):void 0;return[...this.live(e).entries()].filter(([e])=>!t.prefix||e.startsWith(t.prefix)).filter(([e])=>!t.after||e>t.after).filter(([r,i])=>F(r,i.value,t,e===`agent`?r:n?.get(i.value.app)?.value?.agent)).sort(([e],[t])=>e.localeCompare(t)).slice(0,t.limit).map(([t,n])=>({id:t,value:this.read(e,n.value)}))}async delete(e,t){this.bucket(e).delete(t),e===`login`&&this.recordEvents.dispatchEvent(new Event(`login:${t}`)),this.changed(e);for(let n of e===`task`?[`history`,`tasklog`]:e===`agent`?[`agentversion`]:[]){for(let e of this.bucket(n).keys())e.startsWith(`${t}:`)&&this.bucket(n).delete(e);this.changed(n)}}async create(e,t,n,r={}){let i=this.live(e);if(i.has(t))return!1;let a=r.ttlMs===void 0?void 0:this.now()+r.ttlMs;return i.set(t,{value:n,expiresAt:a}),this.changed(e),!0}async claimDeliveryLease(e,t,n){let r=this.live(`delivery`);if(r.has(e))return;let i=this.live(`snapshot`).get(`delivery:${e}`)?.value?.failures??0;return r.set(e,{value:{owner:t,failures:i},expiresAt:this.now()+n}),this.changed(`delivery`),i}async updateDeliveryLease(e,t,n,r={ttlMs:3e4}){let i=this.live(`delivery`);if(i.get(e)?.value?.owner!==t)return!1;if(!n)i.delete(e),this.bucket(`snapshot`).delete(`delivery:${e}`);else{let t=n.next===void 0?n:{...n,next:this.now()+r.ttlMs};i.set(e,{value:t,expiresAt:this.now()+r.ttlMs}),n.next!==void 0&&this.bucket(`snapshot`).set(`delivery:${e}`,{value:t,expiresAt:this.now()+864e5})}return this.changed(`delivery`),this.changed(`snapshot`),!0}async updateDelivery(e,t,n,r={}){let i=this.live(`delivery`);return i.get(e)?.value?.owner===t&&(n===void 0?i.delete(e):i.set(e,{value:n,...r.ttlMs===void 0?{}:{expiresAt:this.now()+r.ttlMs}}),this.changed(`delivery`),!0)}async appendUnseen(e,t,n){let r=this.live(`delivery`);if(!r.has(e))return;let i=`since:${e}`,a=r.get(i)?.value;r.set(i,{value:H(a,t),expiresAt:this.now()+n}),this.changed(`delivery`)}async acknowledgeUnseen(e,t,n){let r=this.live(`delivery`).get(`since:${e}`);r&&(r.value=H(r.value,void 0,t,n),this.changed(`delivery`))}async appendBatch(e,t,n,r,i){let a=this.live(`delivery`).get(e)?.value,o=z(a,t,n,r),s=this.now()+i;this.bucket(`delivery`).set(e,{value:o,expiresAt:s}),this.changed(`delivery`)}async claimBatch(e,t){return this.withAppLock(`batch:${e}`,async()=>{let n=this.live(`delivery`).get(e),r=n?.value;if(r?.owner!==t||!r.items.length)return;if(r.sending&&(r.sending.until??0)>this.now())return null;r.sending&&(r=U(r));let i={...r,more:0,mustReply:!1,sending:{owner:t,until:this.now()+N,count:r.items.length,more:r.more,mustReply:r.mustReply}},a=n.expiresAt;return this.bucket(`delivery`).set(e,{value:i,expiresAt:a}),this.changed(`delivery`),r})}async finishBatch(e,t,n,r){let i=this.live(`delivery`).get(e),a=i?.value;if(a?.sending?.owner!==t)return!1;let o=V(a,n,r,this.now());return this.bucket(`delivery`).set(e,{value:o,expiresAt:i.expiresAt}),this.changed(`delivery`),!0}async take(e,t,n){let r=this.live(e),i=r.get(t);if(!(!i||Object.entries(n??{}).some(([e,t])=>i.value[e]!==t)))return r.delete(t),this.changed(e),this.read(e,i.value)}},re=e({LocalStore:()=>X,deleteLocalAgent:()=>$,syncLocalAgents:()=>Z,writeLocalAgent:()=>Q});const G=new Set([`app`,`installation`,`runner`]),K=new Set([`connection`,`credential`]),q=new Set([`agent`,`agentversion`]);function J(e,t){try{return JSON.parse(p.readFileSync(e,`utf8`))}catch(e){if(e.code===`ENOENT`)return t;throw e}}function Y(e,t){p.mkdirSync(f.dirname(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;try{p.writeFileSync(n,t,{mode:384}),p.renameSync(n,e)}finally{p.rmSync(n,{force:!0})}}var X=class extends W{connections;revisions=new Map;logBuckets=new Map;writes=Promise.resolve();constructor(e=Date.now,t=()=>new n){super(e),this.connections=t}withAppLock(e,t){return e.startsWith(`connection:`)||e.startsWith(`connection-import:`)?this.connections().withLock(()=>t(this),e.replace(/^connection:/,``)):super.withAppLock(e,t)}withConfigLock(e){return super.withConfigLock(e)}withCredential(e,t,n){let r=()=>L(this,e,t,n);return e===`credential`?this.connections().withLock(r,I(e,t)):super.withAppLock(I(e,t),r)}get appsFile(){return a(`apps.json`)}get deliveriesFile(){return f.join(r(``),`deliveries.json`)}serial(e,t=!1){let n=this.writes.then(()=>t?this.connections().withLock(async()=>e()):e());return this.writes=n.catch(()=>{}),n}apps(){return J(this.appsFile,{})}recordsFile(e){return e===`delivery`?this.deliveriesFile:e===`usage`?i():e===`snapshot`?f.join(r(``),`snapshots.json`):f.join(r(``),`runner`,`${e}.json`)}bucket(e){let t=super.bucket(e);if(G.has(e)||K.has(e)||q.has(e)||e===`tasklog`)return t;let n=this.recordsFile(e),r=p.statSync(n,{throwIfNoEntry:!1}),i=r?`${r.ino}:${r.mtimeMs}:${r.size}`:``;if(this.revisions.get(e)!==i){for(let n of t.keys())(e!==`snapshot`||!n.startsWith(`connection`))&&t.delete(n);for(let[e,r]of Object.entries(J(n,{})))t.set(e,r);this.revisions.set(e,i)}return t}changed(e){!G.has(e)&&!K.has(e)&&!q.has(e)&&e!==`tasklog`&&Y(this.recordsFile(e),`${JSON.stringify(Object.fromEntries([...this.bucket(e)].filter(([t])=>e!==`snapshot`||!t.startsWith(`connection`))))}\n`)}logFile(e){return f.join(r(``),`runner`,`logs`,`${encodeURIComponent(e)}.jsonl`)}loadLog(e){let t=this.logBuckets.get(e);if(t)return t;t=new Map;try{let n=p.readFileSync(this.logFile(e),`utf8`);for(let e of n.split(`
2
- `).filter(Boolean)){let{id:n,...r}=JSON.parse(e);t.set(n,r)}}catch(e){if(e.code!==`ENOENT`)throw e}return this.logBuckets.set(e,t),t}entries(e){if(e===`connection`)return this.connections().list().map(e=>[e.id,e]);if(e===`credential`)return this.connections().credentials().map(e=>[e.id,e.value]);if(G.has(e)){let t=this.apps(),n=Object.entries(t[e]??{});return e===`app`?n.map(([e,n])=>{let r=n,i=r.shared?t.app?.[r.shared]:void 0;return[e,r.shared?{...r,credentials:i?.credentials??``}:r]}):n}return[]}refuse(e){throw Error(`A local server keeps no ${e} records`)}async get(e,t){if(e===`connection`)return this.connections().get(t);if(e===`tasklog`){let e=this.loadLog(t.slice(0,t.lastIndexOf(`:`))).get(t);return e&&(e.expiresAt===void 0||e.expiresAt>this.now())?e.value:void 0}return!G.has(e)&&!K.has(e)?super.get(e,t):this.entries(e).find(([e])=>e===t)?.[1]}async completeLogin(){return this.refuse(`login`)}async patchLogin(){return this.refuse(`login`)}async put(e,t,n,r={}){if(e===`tasklog`)return this.putMany(e,[{id:t,value:n}],r);if(!G.has(e)&&!K.has(e))return super.put(e,t,n,r);await this.serial(()=>this.write(e,t,n),K.has(e))}write(e,t,n){if(e===`connection`){this.connections().put(n);return}if(e===`credential`&&t!==`claude`&&t!==`codex`){this.connections().putCredential(t,n);return}if(G.has(e)){let r=this.apps();e===`installation`&&R(Object.entries(r.installation??{}),t,n),e===`app`&&n.shared&&(n={...n,credentials:``}),r[e]={...r[e],[t]:n},Y(this.appsFile,`${JSON.stringify(r,null,2)}\n`)}else this.refuse(e)}remove(e,t){if(e===`connection`){let e=this.connections(),n=!!e.get(t);return e.delete(t),n}if(e===`credential`){let e=this.connections(),n=e.credentials().some(e=>e.id===t);return e.deleteCredential(t),n}if(G.has(e)){let n=this.apps(),r=n[e];return!r||!(t in r)?!1:(delete r[t],Y(this.appsFile,`${JSON.stringify(n,null,2)}\n`),!0)}return!1}async putMany(e,t,n={}){if(e===`tasklog`){let e=new Map;for(let{id:r,value:i}of t){let t=r.slice(0,r.lastIndexOf(`:`)),a=e.get(t)??[];a.push(JSON.stringify({id:r,value:i,...n.ttlMs===void 0?{}:{expiresAt:this.now()+n.ttlMs}})),e.set(t,a)}for(let[t,n]of e){let e=this.logFile(t);p.mkdirSync(f.dirname(e),{recursive:!0}),p.appendFileSync(e,`${n.join(`
3
- `)}\n`,{mode:384})}for(let{id:e,value:r}of t)this.loadLog(e.slice(0,e.lastIndexOf(`:`))).set(e,{value:r,...n.ttlMs===void 0?{}:{expiresAt:this.now()+n.ttlMs}})}else if(!G.has(e)&&!K.has(e))await super.putMany(e,t,n);else for(let r of t)await this.put(e,r.id,r.value,n)}async list(e,t={}){if(e===`tasklog`){let e=t.prefix?.endsWith(`:`)?t.prefix.slice(0,-1):void 0;if(e!==void 0)this.loadLog(e);else{let e=f.dirname(this.logFile(``));if(p.existsSync(e))for(let t of p.readdirSync(e))t.endsWith(`.jsonl`)&&this.loadLog(decodeURIComponent(t.slice(0,-6)))}return(e===void 0?[...this.logBuckets.values()]:[this.loadLog(e)]).flatMap(e=>[...e]).filter(([e,n])=>(!t.prefix||e.startsWith(t.prefix))&&(!t.after||e>t.after)&&(n.expiresAt===void 0||n.expiresAt>this.now())).sort(([e],[t])=>e.localeCompare(t)).slice(0,t.limit).map(([e,t])=>({id:e,value:t.value}))}if(!G.has(e)&&!K.has(e))return super.list(e,t);let n=e===`installation`&&t.agent?this.apps().app:void 0;return this.entries(e).filter(([e])=>(!t.prefix||e.startsWith(t.prefix))&&(!t.after||e>t.after)).filter(([e,r])=>F(e,r,t,n?.[r.app]?.agent)).sort(([e],[t])=>e.localeCompare(t)).slice(0,t.limit).map(([n,r])=>{let i=r;return{id:n,value:(e===`connection`&&t.secrets&&(t.secrets===`all`||i.provider===`mcp`&&i.auth===`oauth`)?this.connections().get(n):void 0)??r}})}async delete(e,t){if(e===`tasklog`){let e=t.slice(0,t.lastIndexOf(`:`)),n=this.loadLog(e);n.delete(t),Y(this.logFile(e),[...n].map(([e,t])=>JSON.stringify({id:e,...t})).join(`
4
- `)+`
5
- `);return}if(!G.has(e)&&!K.has(e)){await super.delete(e,t),e===`task`&&(p.rmSync(this.logFile(t),{force:!0}),this.logBuckets.delete(t));return}await this.serial(()=>this.remove(e,t),K.has(e))}async create(e,t,n,r={}){return e===`tasklog`?this.serial(async()=>!await this.get(e,t)&&(await this.put(e,t,n,r),!0)):!G.has(e)&&!K.has(e)?super.create(e,t,n,r):this.serial(()=>!this.entries(e).some(([e])=>e===t)&&(this.write(e,t,n),!0),K.has(e))}async take(e,t,n){return!G.has(e)&&!K.has(e)&&e!==`tasklog`?super.take(e,t,n):this.serial(async()=>{let r=await this.get(e,t);if(!(r===void 0||Object.entries(n??{}).some(([e,t])=>r[e]!==t)))return e===`tasklog`?await this.delete(e,t):this.remove(e,t),r},K.has(e))}};function ie(e){let t=f.resolve(e);for(;!p.existsSync(f.join(t,`.git`));){let e=f.dirname(t);if(e===t)return Promise.resolve(void 0);t=e}return new Promise(t=>ee(`git`,[`log`,`-1`,`--format=%H`,`--`,`.`],{cwd:e},(e,n)=>t(e?void 0:n.trim()||void 0)))}async function Z(e,t,n,r){let i=await u(t,n,{includeDisabled:!0}),o=await Promise.all(i.filter(e=>!r||e.id===r).map(async t=>{let n=t.usage?{settings:t.usage}:{};if(t.builtin){let{record:r,version:i}=await x(e,t.id);if(!r)return;let a={...r,settings:void 0,...n,local:!0};return await e.put(`agent`,t.id,a),{record:a,version:i}}if(!t.dir)return;let r=await ie(t.dir),i=p.statSync(f.join(t.dir,`agent.json`)),o=f.join(t.dir,`system.md`),s={agent:t.id,version:1,definition:t.definition,systemPrompt:p.existsSync(o)?p.readFileSync(o,`utf8`):``,files:k(t.dir),...r?{commit:r}:{},importedFrom:`local:${t.dir}`,createdAt:i.mtimeMs},c={id:t.id,name:t.name,...t.definition.description?{description:t.definition.description}:{},source:f.resolve(t.dir)===a(`agents`,t.id)?`home`:`repo`,path:t.dir,currentVersion:1,...n,local:!0,...r?{commit:r}:{},createdAt:i.birthtimeMs||i.mtimeMs,updatedAt:i.mtimeMs};return await e.put(`agentversion`,_(t.id,1),s),await e.put(`agent`,t.id,c),{record:c,version:s}}));if(!r){let t=new Set(i.map(e=>e.id));for(let n of await y(e))n.local&&n.path&&!t.has(n.id)&&await e.delete(`agent`,n.id)}return o.filter(e=>!!e).sort((e,t)=>e.record.id<t.record.id?-1:+(e.record.id>t.record.id))}async function Q(e,t,n,r){let i=(await u(e,t,{includeDisabled:!0})).find(e=>e.id===n&&!e.builtin)?.dir??a(`agents`,n),o={...r.files,"agent.json":`${JSON.stringify(r.definition,null,2)}\n`,"system.md":r.systemPrompt};for(let[e,t]of Object.entries(o))p.mkdirSync(f.dirname(f.join(i,e)),{recursive:!0}),p.writeFileSync(f.join(i,e),t)}async function $(e,t,n){let r=(await u(e,t,{includeDisabled:!0})).find(e=>e.id===n&&!e.builtin);if(!r?.dir)throw Error(`No local agent named "${n}".`);return f.resolve(r.dir)===a(`agents`,n)&&(p.rmSync(r.dir,{recursive:!0}),!0)}export{g as C,O as S,S as _,Q as a,j as b,R as c,P as d,D as f,b as g,v as h,Z as i,L as l,M as m,$ as n,W as o,x as p,re as r,z as s,X as t,N as u,C as v,h as w,w as x,A as y};
@@ -1,3 +0,0 @@
1
- import{qi as e}from"./core-DwsAMCnL.js";var t=e({LogView:()=>s,addTokens:()=>n,isApproval:()=>r,logEntry:()=>o,stripCwd:()=>a});function n(e,t){return t?e?{input:e.input+t.input,cachedInput:e.cachedInput+t.cachedInput,output:e.output+t.output,total:e.total+t.total}:{...t}:e}const r=e=>e.includes(`approval`)||e===`sidecar-decision`||e===`auto-review`,i=/\x1b\[[0-9;?]*[ -/]*[@-~]|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g;function a(e,t){return t?e.split(`${t}/`).join(``).split(t).join(`.`):e}function o(e){try{let t=JSON.parse(e);if(t&&typeof t==`object`&&!Array.isArray(t)){let e=`kind`in t&&typeof t.kind==`string`?t.kind:void 0,n=`message`in t&&typeof t.message==`string`?t.message:void 0;if(e!==void 0||n!==void 0)return{...t,kind:e,message:n,at:`at`in t&&typeof t.at==`string`?t.at:void 0}}}catch{}}var s=class{cwd;opts;prevKind=null;lastAssistant=``;lastToolText=``;openCalls=[];callIds=new WeakMap;approval;approvals=new Map;lastUsageTotal=0;constructor(e,t={}){this.cwd=e,this.opts=t}get lastAssistantMessage(){return this.lastAssistant}reduce(e){let t=e.entry,n=t?String(t.kind??`status`):`line`,i=t?n===`tool-result`?this.close(e,t):r(n)?this.decide(e,t,n):void 0:void 0;if(i)return this.prevKind=n,[i];let o={seq:e.seq,at:e.at,kind:`status`,title:``,sourceKind:n,separated:!1,tone:`muted`};if(!t)o.kind=e.level===`err`?`error`:e.level===`sys`?`status`:`line`,o.title=a(e.line,this.cwd),e.level===`err`&&(o.tone=`error`);else if(n===`usage`){let e=t.tokens;if(!e)return[];let n=this.lastUsageTotal>0,r=e.total-this.lastUsageTotal;if(!n||r<Math.max(2e4,this.lastUsageTotal*.2))return this.lastUsageTotal=Math.max(this.lastUsageTotal,e.total),[];this.lastUsageTotal=e.total,o.kind=`usage`,o.tokens=e,o.title=`ctx ${l(e.input+e.cachedInput)} · out ${l(e.output)}`}else if(n===`approval-decision`&&t.decision===`escalate`||n===`approval-escalated`){let e=a(t.summary?String(t.summary):``,this.cwd),r=/^(?:run command: |Run command\. |Apply file changes\. |\w+: )?([\s\S]*)$/.exec(e)[1],i=String(t.method??``),s=i&&!i.includes(`/`)?i:this.openCalls.at(-1)?.tool,c=r.startsWith(`{`)?``:r.split(/\s+/)[0],l=a(t.reason?String(t.reason):``,this.cwd);o.kind=`approval`,o.title=[`Approval`,[s,c].filter(Boolean).join(` `)].filter(Boolean).join(` · `),o.detail=[r,l&&`Policy · ${l}`].filter(Boolean).join(`
2
- `),o.state=n===`approval-escalated`?`waiting`:`escalated`,n===`approval-escalated`?this.approvals.set(String(t.approvalId),o):this.approval=o}else if(r(n)&&(t.decision||!t.message)){o.kind=`approval`;let e=n===`sidecar-decision`?`sidecar`:n===`auto-review`?`auto-review`:`approval`,r=t.riskLevel?`(${String(t.riskLevel)} risk)`:``,i=a(t.summary?String(t.summary):``,this.cwd),s=i.slice(i.indexOf(`: `)+2),c=i&&s&&this.lastToolText.includes(s)?``:i,l=c?``:String(t.method??``);o.title=`${[e,String(t.decision??``),r,l].filter(Boolean).join(` `)}${c?` · ${c}`:``}`,o.detail=a(t.reason?String(t.reason):``,this.cwd)}else{let e=t.message?String(t.message):n===`tool-result`?`(no output)`:String(t.tool||t.kind||``);if(!e&&!(n===`tool-result`&&(t.exitCode!=null||t.isError)))return[];o.title=a(e,this.cwd),n===`assistant`?(o.kind=`assistant`,o.tone=void 0,this.lastAssistant=o.title):n===`error`||n===`steer`?(o.kind=n,o.tone=n===`error`?`error`:`warning`):n===`reasoning`?(o.kind=`reasoning`,o.durationMs=typeof t.durationMs==`number`?t.durationMs:0):n===`tool`?(o.kind=`tool`,t.tool&&(o.tool=String(t.tool)),this.lastToolText=o.title,t.callId&&this.callIds.set(o,String(t.callId)),this.openCalls.push(o)):n===`tool-result`&&(o.kind=`tool-result`,o.title=this.output(e),o.exitCode=typeof t.exitCode==`number`?t.exitCode:void 0,o.tone=o.exitCode!==void 0&&o.exitCode!==0||t.isError===!0?`error`:`muted`,o.durationMs=typeof t.durationMs==`number`?t.durationMs:0,t.tool&&(o.tool=String(t.tool)))}return this.prevKind!==null&&(o.separated=[`assistant`,`error`,`steer`].includes(n)||n===`reasoning`&&this.prevKind!==`reasoning`||n===`tool`&&[`assistant`,`reasoning`].includes(this.prevKind)),this.prevKind=n,[o]}close(e,t){let n=t.tool?String(t.tool):void 0,r=t.callId?this.openCalls.findIndex(e=>this.callIds.get(e)===String(t.callId)):-1,i=t.callId?r:n?this.openCalls.findIndex(e=>e.tool===n):this.openCalls.length-1;if(i<0)return;let[o]=this.openCalls.splice(i,1),s=typeof t.exitCode==`number`?t.exitCode:void 0,c=typeof t.durationMs==`number`?t.durationMs:e.at-o.at||0;return{...o,title:t.callMessage?a(String(t.callMessage),this.cwd):o.title,result:{ok:!s&&t.isError!==!0,exitCode:s,durationMs:Math.max(0,c),detail:this.output(t.message?String(t.message):``)}}}decide(e,t,n){let r=String(t.approvalId??``),i=t.decision===`accept`;if(n===`sidecar-decision`&&this.approval){let n=a(t.reason?String(t.reason):``,this.cwd),r={...this.approval,detail:[this.approval.detail,n&&`Sidecar · ${n}`].filter(Boolean).join(`
3
- `)};return t.decision===`escalate`?this.approval=r:(this.approval=void 0,c(r,e,`${i?`accepted`:`denied`} by sidecar`,i))}if(n===`approval-escalated`&&this.approval){let e={...this.approval,state:`waiting`};return this.approval=void 0,this.approvals.set(r,e),e}let o=this.approvals.get(r);if(!(!o||n!==`approval-answered`&&n!==`approval-timeout`))return this.approvals.delete(r),n===`approval-timeout`?c(o,e,`timed out`,!1):c(o,e,`${i?`accepted`:`denied`} by reviewer`,i)}output(e){return a(this.opts.keepAnsi?e:e.replace(i,``),this.cwd)}};function c(e,t,n,r){return{...e,state:n,result:{ok:r,durationMs:Math.max(0,t.at-e.at||0),detail:``}}}function l(e){return e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(+(e<1e4))}k`:`${(e/1e6).toFixed(1)}M`}export{o as n,t as r,n as t};
@@ -1 +0,0 @@
1
- import{qi as e}from"./core-DwsAMCnL.js";import{Zt as t}from"./output-D95NoAA9.js";import{Dt as n,xn as r,zn as i}from"./apps-D-v5sQJk.js";import{n as a}from"./env-B9JG6gwo.js";import{C as o,T as s,w as c,x as l}from"./runners-CYTicTb7.js";import{chatState as u,m as d,platformLink as f,secret as p,x as m,y as h}from"./schema.js";import g from"node:process";var _=e({rotateKey:()=>y});async function v(e){try{return await e()}catch(e){throw e instanceof t?e:new t(`server`,e instanceof Error?e.message:String(e))}}function y(e={}){return v(async()=>{let _=a(e.env??g.env);if(!_.encryptionKey)throw new t(`invalid-option`,`SERVER_ENCRYPTION_KEY is required to rotate keys.`,{hint:`Set the new key in SERVER_ENCRYPTION_KEY and the old key in SERVER_ENCRYPTION_KEY_PREVIOUS.`});let v=await i(_);try{let e=new Set([v.defaultOrganizationId]);if(v.connection){let t=v.connection.db,[n,i,a]=await Promise.all([t.selectDistinct({id:p.organizationId}).from(p),t.select({key:u.key}).from(u).where(m(u.key,`o:%,"config"]:workspace`)),t.select({key:u.key}).from(u).where(m(u.key,`o:%,"connection"]:%`))]);for(let t of n)e.add(t.id);for(let t of i){let n;try{n=JSON.parse(t.key.slice(2,-10))}catch{continue}Array.isArray(n)&&n.length===2&&typeof n[0]==`string`&&n[1]===`config`&&t.key===r(n[0],`config`,`workspace`)&&e.add(n[0])}for(let t of a){let n=t.key.lastIndexOf(`,"connection"]:`);try{let r=JSON.parse(t.key.slice(2,n+14));Array.isArray(r)&&r.length===2&&typeof r[0]==`string`&&r[1]===`connection`&&e.add(r[0])}catch{}}}let t=0;for(let r of e)t+=await n(v.store(r),_);let i=v.connection?.db,a=c(_.encryptionKey);for(let e of i?await i.select().from(f).where(h(f.token)):[])s(_,e.token)!==a&&(await i.update(f).set({token:o(_,l(_,e.token))}).where(d(f.id,e.id)),t++);return{moved:t}}finally{await v.close()}})}export{y as n,_ as t};
@@ -1 +0,0 @@
1
- import{f as e,g as t,l as n,p as r}from"./load-zhcrwSRF.js";import{t as i}from"./integrations-DyInAa5g.js";function a(e){let t={};for(let r of Object.keys(e.definition.integrations)){let a=i[r];a&&(t[r]=a.tools.presets[n(e)])}return t}function o(n,o){if(!i[n.integration]||!t(o,n.integration).includes(n.type))return;let s=e(o.definition.integrations[n.integration],n.type);if(!s||s.match!==void 0&&!new RegExp(s.match).test(n.text))return;let c=o.usage?.permissions??o.definition.permissions;return{flow:s.flow??`default`,tools:a(o),...s.actAs?{actAs:s.actAs}:{},...c?{permissions:r(c,s.permissions)}:s.permissions?{permissions:s.permissions}:{}}}function s(e,t){return t.flatMap(t=>{let n=o(e,t);return n?[{agent:t,...n}]:[]})}export{o as n,s as r,a as t};
@@ -1,13 +0,0 @@
1
- import{At as e}from"./errors-XBA-Ls4n.js";import{t}from"./integrations-DyInAa5g.js";import n from"node:path";import r from"node:process";import i from"node:os";import a from"node:fs/promises";function o(e){return`APP_TOKEN_${e.toUpperCase().replace(/[^A-Z0-9]/g,`_`)}`}const s=e=>e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``);function c(e,n,r){let{name:i,tools:a,repos:o}=t[e],{readOnly:c,...u}=a.server(n,r.event,r.token),d=Object.entries(u.env??{}).find(([,e])=>e===r.token)?.[0],f=n.some(e=>!a.presets.read.includes(e))?`write`:`read`;return{...u,name:s(l(e,r.account)),integration:e,...r.account?{account:r.account}:{},description:r.account?`${i} ${r.account}`:`${i}, the account this task started in`,access:f,...c?{readOnly:c}:{},...d?{credentialFields:{env:d}}:{},...o?.credentialUsername?{gitCredential:!0}:{}}}const l=(e,t)=>t?`${e}:${t}`:e;function u(e){if(!e?.integration||!t[e.integration])return;let n=c(e.integration,[],{token:`\0`}),r=Object.entries(n.env??{}).find(([,e])=>e===`\0`)?.[0],i=n.credentialFields?.header;return r?e.env?.[r]||void 0:i?e.headers?.[i]?.replace(/^Bearer /,``):void 0}function d(e,n,r=[]){let i=new Set,a=new Set(r);return Object.entries(n).flatMap(([n,r])=>{let[o,s]=n.split(/:(.*)/),l=e.tools[o];if(!t[o]||!r||!l?.length)return[];let u=c(o,l,{token:r,...e.event?{event:e.event}:{},...s?{account:s}:{}});a.has(n)&&u.access===`read`&&delete u.gitCredential;let d=u.name;for(let e=2;i.has(d);e++)d=`${u.name}-${e}`;return i.add(d),[{...u,name:d}]})}function f(t,n,r,i=[]){return e(Object.fromEntries([...d(t,n,i).map(e=>[`native:${e.name}`,{...e,resolved:!0}]),...r?[[`native:conversation`,{name:`conversation`,resolved:!0,env:{CODER_REPLY_URL:r.url,CODER_REPLY_TOKEN:r.token},credentialFields:{env:`CODER_REPLY_TOKEN`}}]]:[]]))}async function p(e){let o=e.flatMap(e=>{let n=e.integration?t[e.integration]?.repos:void 0,r=e.gitCredential&&n?.credentialUsername&&u(e);return r&&!/[\r\n]/.test(r)?n.cloneHosts.map(t=>({host:t,username:n.credentialUsername,password:r,...e.account?{owner:e.account.toLowerCase()}:{}})):[]});if(!o.length)return{env:{},close:async()=>{}};let s=await a.mkdtemp(n.join(i.tmpdir(),`coder-git-`)),c=n.join(s,`credential.cjs`);try{await a.writeFile(n.join(s,`tokens.json`),JSON.stringify(o),{mode:384}),await a.writeFile(c,`const fs = require('node:fs');
2
- let input = '';
3
- process.stdin.on('data', data => input += data);
4
- process.stdin.on('end', () => {
5
- if (process.argv[2] !== 'get') return;
6
- const fields = Object.fromEntries(input.trim().split('\\n').map(line => { const at = line.indexOf('='); return [line.slice(0, at), line.slice(at + 1)]; }));
7
- const entries = JSON.parse(fs.readFileSync(require('node:path').join(__dirname, 'tokens.json'), 'utf8'));
8
- const owner = (fields.path || '').split('/')[0].toLowerCase();
9
- const hosted = entries.filter(entry => fields.protocol === 'https' && fields.host === entry.host);
10
- const credential = hosted.find(entry => entry.owner === owner) || hosted.find(entry => !entry.owner) || hosted[0];
11
- if (credential) process.stdout.write('username=' + credential.username + '\\npassword=' + credential.password + '\\n');
12
- });
13
- `,{mode:384});let e=e=>`'${e.replaceAll(`'`,`'\\''`)}'`,t=Number(r.env.GIT_CONFIG_COUNT??0);if(!Number.isInteger(t)||t<0||t>1e3)throw Error(`Invalid git config count`);return{env:{GIT_CONFIG_COUNT:String(t+3),[`GIT_CONFIG_KEY_${t}`]:`credential.helper`,[`GIT_CONFIG_VALUE_${t}`]:``,[`GIT_CONFIG_KEY_${t+1}`]:`credential.helper`,[`GIT_CONFIG_VALUE_${t+1}`]:`!${e(r.execPath)} ${e(c)}`,[`GIT_CONFIG_KEY_${t+2}`]:`credential.useHttpPath`,[`GIT_CONFIG_VALUE_${t+2}`]:`true`},close:()=>a.rm(s,{recursive:!0,force:!0})}}catch(e){throw await a.rm(s,{recursive:!0,force:!0}),e}}export{o as i,l as n,f as r,p as t};
@@ -1 +0,0 @@
1
- import{En as e,K as t,O as n,Sn as r,Tn as i,U as a,_n as o,cn as s,d as c,dn as l,jn as u,kn as d,mn as f}from"./errors-XBA-Ls4n.js";import{s as p,t as m}from"./args-CbO_Ck9Z.js";import{B as h,Ct as g,V as _,dt as v,z as y}from"./output-D95NoAA9.js";import{command as b}from"./cli.js";import{n as x,t as S}from"./prompts-B8pKhMcu.js";import{serve as C}from"./serve-DE6A-rBk.js";import w from"node:path";import{spawn as T}from"node:child_process";import{randomUUID as E}from"node:crypto";function D(e){return w.join(e,`sidecar.json`)}function O(e){return r(D(e))??{sessionId:null,declineStreak:0}}function k(e,t,n,r){return[`-p`,r,`--output-format`,`json`,`--model`,`sonnet`,`--effort`,`low`,`--strict-mcp-config`,`--no-chrome`,`--mcp-config`,`{"mcpServers":{}}`,`--settings`,`{"disableClaudeAiConnectors":true}`,n?`--resume`:`--session-id`,t,...v,`--add-dir`,e]}function A(e,t,n,r,i){let a=k(t,n,r,i);return new Promise((t,n)=>{let r=T(`claude`,a,{cwd:e,stdio:[`ignore`,`pipe`,`pipe`]}),i=``,o=``,s=setTimeout(()=>{r.kill(`SIGKILL`),n(Error(`sidecar call timed out`))},12e4);r.stdout.on(`data`,e=>i+=e),r.stderr.on(`data`,e=>o+=e),r.on(`error`,e=>{clearTimeout(s),n(e)}),r.on(`close`,e=>{if(clearTimeout(s),e!==0){n(Error(`sidecar claude exited ${e}: ${o.trim().slice(0,200)}`));return}try{let e=JSON.parse(i);if(e.is_error){n(Error(`sidecar turn errored: ${String(e.result??``).slice(0,200)}`));return}t(String(e.result??``))}catch{n(Error(`sidecar returned unparseable output`))}})})}function j(e){let t=e.match(/\{[^{}]*"decision"[^{}]*\}/);if(!t)return null;try{let e=JSON.parse(t[0]);if(e.decision===`accept`||e.decision===`decline`||e.decision===`escalate`)return{decision:e.decision,reason:String(e.reason??``)}}catch{}return null}async function M(t,n,r){try{return await i(w.join(n,`sidecar.lock`),async()=>{let i=O(n);if(i.declineStreak>=3)return{decision:`escalate`,reason:`sidecar decline streak; needs human review`};if(!i.sessionId){let a=E();await A(t,n,a,!1,x(r.taskGoal,w.join(n,`log.jsonl`))),i.sessionId=a,e(D(n),i)}let a=j(await A(t,n,i.sessionId,!0,S(r.summary)));return a?.decision===`decline`?i.declineStreak+=1:a?.decision===`accept`&&(i.declineStreak=0),e(D(n),i),a??{decision:`escalate`,reason:`sidecar verdict unparseable`}},9e4,12e4)}catch(e){return{decision:`escalate`,reason:`sidecar unavailable: ${e instanceof Error?e.message:String(e)}`}}}const N=new Set([`Write`,`Edit`,`MultiEdit`,`NotebookEdit`]);async function P(e,r,i){let o=String(i.tool_name??``),s=i.input??i.tool_input??{},l=t(e),u=a(e,r),d=g(e),f=t=>c(e,r,t),p,m;if(o===`Bash`){let e=String(s.command??``);m=`run command: ${e||`(unknown command)`}`,p=y(e,{allowedNetworkHosts:d.approvals.allowedNetworkHosts})}else if(N.has(o)){let e=String(s.file_path??s.notebook_path??``);m=`${o}: ${e||`(unknown path)`}`,p=h(e?[e]:[],l)}else m=`${o||`(unknown tool)`}: ${JSON.stringify(s).slice(0,200)}`,p={decision:`escalate`,reason:`tool needs approval: ${o}`};f({kind:`approval-decision`,method:o,decision:p.decision,reason:p.reason,summary:m});let v=p.decision,b=p.reason;if(v===`escalate`){let t=await M(e,u,{taskGoal:n(e,r)?.prompt??null,summary:m});f({kind:`sidecar-decision`,decision:t.decision,reason:t.reason,summary:m}),t.decision===`escalate`?(v=await _(u,{method:`claude/${o}`,summary:m,params:{tool_name:o,input:s}},{timeoutMs:d.approvals.escalationTimeoutMs,onEvent:f}),b=`escalated for human review`):(v=t.decision,b=t.reason)}return v===`accept`?{behavior:`allow`,updatedInput:s}:{behavior:`deny`,message:`Denied by coder policy: ${b}`}}const F=m(s(l(f(),o())),`The tool's input.`),I=(e,t)=>d({name:`coder`,description:`Coder approval policy`,commands:[u({name:`approval_prompt`,description:`Coder approval policy for claude permission prompts.`,args:{tool_name:p(`The tool Claude asks to run.`),input:F,tool_input:F},access:`read`,run:n=>P(e,t,n).catch(e=>({behavior:`deny`,message:`coder mcp tool failed: ${e instanceof Error?e.message:String(e)}`})),mcp:{text:e=>JSON.stringify(e)}})]}),L=b({name:`mcp`,description:`the coder MCP server engines call back into`,access:`write`,args:{"task-id":p()},globalFlags:{json:!1},cli:{positional:[`task-id`]},mcp:!1,run:async({args:e,cwd:t})=>{await(await C(I(t,e[0]),`stdio`)).done}});export{L as commandTaskMcp};
@@ -1 +0,0 @@
1
- import{qi as e}from"./core-DwsAMCnL.js";import{Ct as t,Et as n,It as r,Ot as i,St as a,Tt as o,Y as s,Zt as c,bt as l,ft as u,lt as d,pt as f,tt as p,ut as m,vt as h,xt as g,yt as _}from"./output-D95NoAA9.js";import{t as v}from"./wire-JMNPv8f6.js";import y from"node:path";import b from"node:process";var x=e({RESERVED:()=>S,buildModelRows:()=>T,modelAddCore:()=>N,modelAliasCore:()=>I,modelListData:()=>E,modelRemoveCore:()=>F,modelToggleCore:()=>R,modelUnaliasCore:()=>L,modelUpdateCore:()=>P,models:()=>z,persistModel:()=>D,probeEndpoint:()=>C});const S=new Set([`codex`,`claude`,`custom`]);async function C(e,t={}){let n=`key`in t?t.key:e.envKey?b.env[e.envKey]:void 0,r=t.fetch??fetch,i=_(e.baseUrl,`models`),a=null;for(let t of i)try{let i=await r(t,{headers:n?{Authorization:`Bearer ${n}`}:{},signal:AbortSignal.timeout(5e3)});if(!i.ok){a=i.status===404?{reachable:!0,modelListed:null,models:null,detail:`endpoint reachable (no model list to verify against)`}:{reachable:!1,modelListed:null,models:null,detail:`${t} -> HTTP ${i.status}`};continue}let o=await i.json().catch(()=>null),s=Array.isArray(o?.data)?o.data.map(e=>e.id).filter(e=>typeof e==`string`):null;if(!s)return{reachable:!0,modelListed:null,models:null,detail:`endpoint reachable`};if(!e.model)return{reachable:!0,modelListed:null,models:s,detail:`endpoint reachable; ${s.length} models listed`};let c=s.includes(e.model);return{reachable:!0,modelListed:c,models:s,detail:c?`endpoint reachable; model "${e.model}" listed`:`endpoint reachable, but "${e.model}" is not in its model list`}}catch(e){a={reachable:!1,modelListed:null,models:null,detail:`${t} unreachable (${e instanceof Error?e.message:String(e)})`}}return a}function w(e,t){r(e,e=>{e.models=e.models??{},t(e.models)})}function T(e){let t=e.models??{},n=Object.entries(t).filter(e=>a(e[1])),r=e=>`${e.provider}:${e.model}${e.effort?`:${e.effort}`:``}`,i=Object.entries(t).filter(e=>l(e[1])).map(([e,t])=>{let n=t.provider===`claude`?m:f,i=n[t.model]??t.model,a=g(e)?e:Object.entries(n).find(([,e])=>e===i)?.[0];return{name:e,spec:r(t),replaces:a,disabled:!!t.disabled}}),o=new Map;for(let e of i)e.replaces&&(e.name===e.replaces||!o.has(e.replaces))&&o.get(e.replaces)?.name!==e.replaces&&o.set(e.replaces,e);let s=e=>!!t[e]?.disabled,c=i.filter(e=>![...o.values()].some(t=>t.name===e.name));return{models:t,endpoints:n,providerRows:(e,t)=>[...Object.entries(t).map(([e,t])=>{let n=o.get(e);return n?{alias:n.name,spec:n.spec,overrides:e,disabled:n.disabled}:{alias:e,model:t,builtin:!0,disabled:s(e)}}),...c.filter(t=>t.spec.startsWith(`${e}:`)).map(({name:e,spec:t,disabled:n})=>({alias:e,spec:t,disabled:n}))],toggledSlugs:Object.entries(t).filter(([e,t])=>!a(t)&&!l(t)&&!g(e)).map(([e,t])=>({name:e,disabled:!!t.disabled})),disabled:s}}async function E(e){let{endpoints:n,providerRows:r,toggledSlugs:i}=T(t(e)),a=await Promise.all(n.map(async([e,t])=>({name:e,...t,probe:await C(t)})));return{codex:r(`codex`,f),claude:r(`claude`,m),custom:a,...i.length?{toggles:i}:{}}}async function D(e,t,n,r){let i=await v(t),a=i?.wireApi===`responses`;i?(t.wireApi=i.wireApi,t.baseUrl=i.baseUrl??t.baseUrl):delete t.wireApi,w(n,n=>{n[e]=t});let o=await C(t),c=s(p(r)),l=p(r);return{name:e,entry:t,file:n,probe:o,codex:l,install:c,nativeResponses:a,keyMissing:!!(t.envKey&&!b.env[t.envKey]),ready:o.reachable&&l.available}}const O=`Usage: coder model add <name> --base-url <url> --model <id> [--env-key VAR]`,k=`Usage: coder model update <name> [--base-url <url>] [--model <id>] [--env-key VAR]`,A=`Usage: coder model alias <name> <spec> (e.g. coder model alias fast codex:luna)`,j=`List them: coder model list`;function M(e,t,n){if(!e)throw new c(`invalid-option`,`Missing model name.`,{hint:n});if(!/^[a-z][a-z0-9-]*$/.test(e))throw new c(`invalid-option`,`Invalid model name "${e}". Use lowercase kebab-case (e.g. qwen-local).`);if(S.has(e)||t===`model`&&g(e))throw new c(`invalid-option`,`"${e}" is reserved; pick another name.`)}async function N(e,n,r){M(n,`model`,O);let i=t(e).models?.[n];if(i)throw new c(`invalid-option`,a(i)?`Custom model "${n}" already exists.`:`"${n}" is already configured as an ${l(i)?`alias`:`entry`}; remove it first.`,{hint:`Change it: coder model update ${n} [--base-url|--model|--env-key], or remove it first.`});if(!r.baseUrl||!r.model)throw new c(`invalid-option`,`Missing --base-url or --model.`,{hint:O});return D(n,{baseUrl:o(r.baseUrl),model:r.model,...r.envKey?{envKey:r.envKey}:{}},h(e,r.workspace),e)}async function P(e,n,r){let i=n?t(e).models?.[n]:void 0,s=i&&a(i)?i:void 0;if(!n||!s)throw new c(`invalid-option`,n?`No custom model named "${n}".`:`Missing model name.`,{hint:n?j:k});if(!r.baseUrl&&!r.model&&!r.envKey)throw new c(`invalid-option`,`Nothing to update: pass --base-url, --model, or --env-key.`,{hint:k});return D(n,{...s,...r.baseUrl?{baseUrl:o(r.baseUrl)}:{},...r.model?{model:r.model}:{},...r.envKey?{envKey:r.envKey}:{}},h(e,r.workspace),e)}function F(e,n,a={}){if(!n||!t(e).models?.[n])throw new c(`invalid-option`,n?`No custom model named "${n}".`:`Missing model name.`,{hint:n?j:`Usage: coder model remove <name>`});let o=h(e,a.workspace);return r(o,e=>i(e,n)),{removed:n,file:o}}function I(e,r,i,o={}){M(r,`alias`,A);let s=t(e),l=s.models?.[r];if(l&&a(l))throw new c(`invalid-option`,`"${r}" is a custom model name; pick another alias name.`);if(!i)throw new c(`invalid-option`,`Missing alias spec.`,{hint:A});let p;try{p=n(i,s)}catch(e){throw new c(`invalid-option`,e instanceof Error?e.message:String(e),{hint:A})}if(!p||!p.model)throw new c(`invalid-option`,`Alias spec "${i}" does not resolve to a model.`,{hint:A});if(p.engine===`custom`)throw new c(`invalid-option`,`"${i}" names a custom model, which is already dispatchable by name; aliases target codex/claude models.`);let g=i.split(`:`).some(e=>u.has(e.trim())||d.has(e.trim())),_=p.engine===`claude`?m:f,v={provider:p.engine,model:_[p.model]??p.model,...g&&p.effort?{effort:p.effort}:{}},y=h(e,o.workspace);return w(y,e=>{e[r]=v}),{alias:r,...v,file:y}}function L(e,n,a={}){let o=n?t(e).models?.[n]:void 0;if(!n||!o||!l(o))throw new c(`invalid-option`,n?`No alias named "${n}".`:`Missing alias name.`,{hint:n?j:`Usage: coder model unalias <name>`});let s=h(e,a.workspace);return r(s,e=>i(e,n)),{unaliased:n,file:s}}function R(e,n,r,i={}){if(!n)throw new c(`invalid-option`,`Missing model name.`,{hint:`Usage: coder model ${r?`disable`:`enable`} <name>`});let o=!!t(e).models?.[n],s=h(e,i.workspace);return w(s,e=>{let t=e[n];if(!t){r?e[n]={disabled:!0}:o&&(e[n]={disabled:!1});return}a(t)||l(t)?r?t.disabled=!0:delete t.disabled:r?t.disabled=!0:delete e[n]}),{name:n,disabled:r,file:s}}const z={add:(e,t)=>N(y.resolve(t.cwd??`.`),e,t),update:(e,t)=>P(y.resolve(t.cwd??`.`),e,t),remove:(e,t={})=>F(y.resolve(t.cwd??`.`),e,t),list:(e={})=>E(y.resolve(e.cwd??`.`)),alias:(e,t,n={})=>I(y.resolve(n.cwd??`.`),e,t,n),unalias:(e,t={})=>L(y.resolve(t.cwd??`.`),e,t),disable:(e,t={})=>R(y.resolve(t.cwd??`.`),e,!0,t),enable:(e,t={})=>R(y.resolve(t.cwd??`.`),e,!1,t)};export{x as n,C as r,z as t};