@wular/coder 0.4.13 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (519) hide show
  1. package/README.md +3 -3
  2. package/dist/actions-DO8MvHwc.js +3 -0
  3. package/dist/agent-Cgala63h.js +1 -0
  4. package/dist/app-server-dnlLhhZb.js +6 -0
  5. package/dist/approvals-C8XV7CK2.js +5 -0
  6. package/dist/apps-BORri-28.js +18 -0
  7. package/dist/args-CJsHYWbt.js +66 -0
  8. package/dist/async-BS9tyhva.js +3 -0
  9. package/dist/auth-C16ylySv.js +1 -0
  10. package/dist/builtin/coder/agent.json +6 -6
  11. package/dist/builtin/coder/system.md +7 -5
  12. package/dist/{chat-bwKd3y6V.js → chat-Bfu9XKRa.js} +1 -1
  13. package/dist/chat-czruXAt3.js +13 -0
  14. package/dist/cli.js +18 -13
  15. package/dist/{client-C4QCT6cG.js → client-nBo9Mhsr.js} +4 -4
  16. package/dist/cmd-C1gHyVG7.js +122 -0
  17. package/dist/config-_32PHl9g.js +5 -0
  18. package/dist/connection-CgA5_NJ7.js +1 -0
  19. package/dist/connections-B90TemYf.js +2 -0
  20. package/dist/context-C1XBbfEL.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 +1690 -1452
  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.de1f1311bab4252f.js → index.91e126d7a389d4bd.js} +46 -75
  27. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/task/{log-view.ec6391dbf3063330.js → view.e20379d8f741754a.js} +38 -0
  28. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/types.9d22123d6296f5af.js +37 -0
  29. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/{load.30ed8c28774a1a82.js → load.858c062c7891a2c1.js} +18 -11
  30. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/create/[id]/{page.118a70787eff1761.js → page.9375ab741dc9791e.js} +5 -5
  31. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{loading.fcdfd50c21031895.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.98dfcd316c306258.js → notify.c36570a56d279ce2.js} +1 -1
  33. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{page.74c59322f5fe8a2c.js → page.13fdd9cc55ad3a52.js} +9 -9
  34. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{sign-out.730aa96b086ac996.js → sign-out.38a7f39cddc670f7.js} +4 -4
  35. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{agent-menu.1be5795272b245c8.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.2c30ace077893029.js → agents-grid.2385ffa8fdad08d6.js} +9 -9
  37. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{loading.733f0acc2af5ceda.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.5ca6921e50484f8c.js +48 -0
  39. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{layout.b26006f060cd48f0.js → layout.afc4a8a5a8360975.js} +89 -32
  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.4b23e9df21433bd3.js → page.ba65063a1aa99a62.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.e06845585ca67abc.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.4048048acb374c67.js → page.03c5e72b0fe50ba9.js} +51 -123
  44. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{platform-actions.000f2f87a48bfbc6.js → platform-actions.7c8c75bd0c05df4a.js} +234 -134
  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.d6a980d1181dc940.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.ee0bb2dc4d403ec3.js → agent-settings-form.b5299f5130a4e8af.js} +53 -76
  48. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{loading.0e3641f3e4abaa7c.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.649b4ba135ded99b.js → page.fad77cea17947d47.js} +10 -11
  50. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{loading.195e168e8e41d797.js → loading.4120e6979eaed441.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.96f7573208644f40.js → page.474b3524d5ea53b7.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.905293c9aa9afbc9.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.5f2b8585db8b27ad.js → page.7868a07efcaa26f4.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.8700f0106f4e8c15.js → versions-list.ba93a53773cab8a8.js} +3 -3
  55. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{loading.f94b2f9ab04aaf21.js → loading.6e53829bd1f3021d.js} +5 -5
  56. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{page.e898c4b5ef16ecb0.js → page.5798ede8ba8ace97.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.55778a4b3177846d.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.ce391cad0d78795f.js +99 -0
  60. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-pills.44e689e546fb042b.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.4c67dfbb7d28a416.js → agent-toggle.0cec822c6099f058.js} +3 -3
  62. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{hero.9740a8e2f4b41f28.js → hero.7151c467e7ecf6a5.js} +4 -4
  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.ff8b78a03153239b.js → connect-repositories.4e121d31ed0cfe02.js} +1 -1
  65. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{editor.471af698b8060eba.js → editor.f314d92af0bb33b0.js} +164 -127
  66. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{import-picker.b7b5c89e618e8f89.js → import-picker.11028d5329ad537b.js} +11 -11
  67. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{loading.ecb9dfd4d0f9d107.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.880bdac7fe843635.js → page.1476d31e4554e88b.js} +9 -8
  69. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{layout.81f7e055829854a3.js → layout.150d950d191db477.js} +89 -26
  70. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/operator-apps.3e72de86b86a7338.js +155 -0
  71. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{page.8f8697b1b6b34ad7.js → page.6a4be3b1a473ff8c.js} +10 -10
  72. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{page.fe608b8e661aba1d.js → page.262ed73437c17872.js} +1 -1
  73. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/advanced-list.7180570379e2625c.js +63 -0
  74. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/connection-add.632b1847c16ecd42.js +526 -0
  75. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/connections-list.4378ae707b2092ed.js +439 -0
  76. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials-list.a4d8338c7f6a5702.js → credentials-list.e47897acb6867df8.js} +116 -101
  77. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials.1443bbed1ff1d441.js → credentials.6bd06f96afbe7329.js} +9 -9
  78. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/list.38e70272eeb98cd0.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.a08cd37d0f7ff86c.js +635 -0
  81. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{page.805d0f8a2c5817d6.js → page.f096b5a9ac419326.js} +67 -41
  82. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{runners-list.1e83449aa6593224.js → runners-list.0df1f9329df1b67d.js} +42 -37
  83. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{secrets-list.17ac06593005b8ba.js → secrets-list.6d2f56fa7d6fcab0.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.8c4a2b31b194ba3e.js → layout.0fd865c865e5bab4.js} +6 -6
  86. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/model-options.0d6077fe68db3af9.js +147 -0
  87. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/model-pick.695538b2edf9dd15.js +160 -0
  88. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{page.a77996786278cda0.js → page.c57b81c2197cce0f.js} +1 -1
  89. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{settings-head.705be0b1129b97af.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.19b4c50ef497aca1.js → create-link.60aadbe43ea1e39c.js} +5 -5
  92. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{outcome-dialog.18cf32fa42247b91.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.e2b9ef0344b1a1a2.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.616f0b36bf7925bc.js → page.c456ad99c8a9f875.js} +8 -8
  96. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{activity.a911169a820ba604.js → activity.2ec05d78d609b7b2.js} +12 -6
  97. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{loading.76f851da5cc5268d.js → loading.779ecdd9c9d2ff09.js} +5 -5
  98. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{page.ddb594bb6567ee13.js → page.578be2f6c89fcba0.js} +16 -9
  99. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/task-actions.d131453dd2a423c3.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.3276538e8306fd8a.js → task-view.3d72a4ecd2b3826e.js} +44 -81
  102. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer-data.05fc39e1a7fd1ab7.js → composer-data.c16854be11a561e4.js} +4 -6
  103. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer.dbf06b05c5e2eba3.js → composer.97be3e67214889c1.js} +130 -195
  104. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/pending-approvals.9175908da02960e1.js +40 -0
  105. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{status.cb704b48ce86cc7d.js → status.d2c05c397780b833.js} +7 -1
  106. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{task.f089c1c122ed6dd2.js → task.a25847399a4dfb30.js} +9 -26
  107. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-list.5a00d69851dae119.js → tasks-list.028798c79227a366.js} +43 -35
  108. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-section.36e70c93f7d0feee.js → tasks-section.9a9d13057b326f25.js} +16 -10
  109. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{page.185b1ba0c803db3f.js → page.045c6db0c56975b2.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.a7e0ec01bfa769e3.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.d41fea7676e37bfc.js → page.938d29ff7edb678d.js} +7 -7
  114. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{range-bar.69e68c9dae09f238.js → range-bar.0b9038e9df707843.js} +4 -4
  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.296d70b95894209f.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.8c6adf9c5a6f467c.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.1cea8a722c10b998.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.87b92529dbb53ceb.js → page-head.2eb1e0213eb50349.js} +3 -2
  122. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{stream.c32d78562f75db25.js → stream.2cdb8eabd8f6df70.js} +2 -2
  123. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{task-toasts.44075fa7e04575e8.js → task-toasts.8733901ca0e4c246.js} +28 -18
  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.d6109e72fbd04b45.js → back.7aa0ae82dbec38cd.js} +3 -3
  126. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{org.d3abfd4053b711ce.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.2b18ba19ae01e2bb.css.pnext-asset.js +0 -0
  130. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{button.ce9e6cdb08ca86db.js → button.b62fa52e18fa338b.js} +2 -2
  131. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/card.4ab7ad42a0770726.css.pnext-asset.js +0 -0
  132. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{card.9f0d45b73bc78b4f.js → card.c0030eafd76587e3.js} +21 -9
  133. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{collapse.93e4d1b20c2873ed.js → collapse.eb578fdf42029754.js} +1 -1
  134. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{combo.54270c0251466fda.js → combo.e4e08287494081a3.js} +2 -2
  135. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{confirm.29e198be34578222.js → confirm.e21b7f5e486dafb8.js} +3 -3
  136. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{copy.bd6fc1577a393965.js → copy.043e0695c08c72f9.js} +2 -2
  137. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{filter.81bb9a5c60cd1089.js → filter.0730dccad6332327.js} +6 -6
  138. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/filter.6fdff1e7355aaa0e.css.pnext-asset.js +0 -0
  139. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{icons.e36c72f54750663a.js → icons.f769275420d072ce.js} +4 -0
  140. 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
  141. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{menu.ee45bace979944b6.js → menu.7f558c7c6f6345d5.js} +3 -3
  142. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/menu.cd96fa0495fe0fde.css.pnext-asset.js +0 -0
  143. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{modal.0b69c7fd9db025b9.js → modal.08ac85d31f4c76c1.js} +7 -6
  144. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{select.2eb33e5bea28d804.js → select.0ee9e8f04ddd8b47.js} +9 -6
  145. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tail.04132db0c5033d4f.js → tail.7eb303330802ac18.js} +2 -2
  146. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/toolbar.cdbd0357f2c5e1fe.css.pnext-asset.js +0 -0
  147. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{toolbar.8b3a460a65edf85a.js → toolbar.ff8367c641d28c1e.js} +2 -2
  148. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{action.67dd6f8ab1ae067d.js → action.56cea462eb725c39.js} +1 -1
  149. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{client.78267fa3d7905d17.js → client.685154f230716834.js} +1 -1
  150. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/routes/http.394704f4f12ada08.js +165 -0
  151. package/dist/dash/standalone/server/modules-server-server-react-server/src/utils/crypto.24a6439ff8d10d3d.js +11 -0
  152. package/dist/dash/standalone/static/assets/chunks/advanced-list-b75a9c2bd11026de.js +1 -0
  153. package/dist/dash/standalone/static/assets/chunks/agent-pills-54564413a57d7fa7.js +2 -0
  154. package/dist/dash/standalone/static/assets/chunks/agent-settings-form-55d294dad2ce5a0d.js +1 -0
  155. package/dist/dash/standalone/static/assets/chunks/agent-toggle-b5dcc4ea6292fb3d.js +1 -0
  156. package/dist/dash/standalone/static/assets/chunks/agents-grid-69461c53abbba433.js +1 -0
  157. package/dist/dash/standalone/static/assets/chunks/{back-e29cb10f5548ddae.js → back-ba5e4340a9f8bbd2.js} +1 -1
  158. package/dist/dash/standalone/static/assets/chunks/chain-hint-491eb09a20a15702.js +1 -0
  159. package/dist/dash/standalone/static/assets/chunks/{combo-702c94817bf6ac17.js → combo-6df61e8a1cc31037.js} +1 -1
  160. package/dist/dash/standalone/static/assets/chunks/composer-198b844da57b82a3.js +1 -0
  161. package/dist/dash/standalone/static/assets/chunks/composer-b26a3332a1243461.js +1 -0
  162. package/dist/dash/standalone/static/assets/chunks/composer-data-b05f3d93fdc472d7.js +1 -0
  163. package/dist/dash/standalone/static/assets/chunks/{confirm-a78147b6ecef3847.js → confirm-14d018653fbe50fc.js} +1 -1
  164. package/dist/dash/standalone/static/assets/chunks/{connect-repositories-7770ab805160028d.js → connect-repositories-5118edc019fc7890.js} +1 -1
  165. package/dist/dash/standalone/static/assets/chunks/connections-list-5412dad7e0def52f.js +1 -0
  166. package/dist/dash/standalone/static/assets/chunks/{copy-bdc60bdafe336316.js → copy-04781f9af4e10f06.js} +1 -1
  167. package/dist/dash/standalone/static/assets/chunks/create-link-0651addf1461f901.js +1 -0
  168. package/dist/dash/standalone/static/assets/chunks/credentials-list-e64c973aee5602d3.js +1 -0
  169. package/dist/dash/standalone/static/assets/chunks/custom-range-b6919bab9846ebf7.js +1 -0
  170. package/dist/dash/standalone/static/assets/chunks/editor-68e9ccd1764fc512.js +6 -0
  171. package/dist/dash/standalone/static/assets/chunks/{field-bb8191aa02d07282.js → field-adcb6e6a5f9b7131.js} +1 -1
  172. package/dist/dash/standalone/static/assets/chunks/instructions-0022dd3bdd57c13f.js +1 -0
  173. package/dist/dash/standalone/static/assets/chunks/instructions-7b274685ceb26457.js +2 -0
  174. package/dist/dash/standalone/static/assets/chunks/list-662f042656857c82.js +1 -0
  175. package/dist/dash/standalone/static/assets/chunks/model-options-5e07b3318d69d218.js +1 -0
  176. package/dist/dash/standalone/static/assets/chunks/models-list-ae1e2eff30d21824.js +1 -0
  177. package/dist/dash/standalone/static/assets/chunks/outcome-dialog-546fe090efc129c2.js +1 -0
  178. package/dist/dash/standalone/static/assets/chunks/{outcome-dialog-fde11a52c282301d.js → outcome-dialog-fd86ded4c44c2de7.js} +1 -1
  179. package/dist/dash/standalone/static/assets/chunks/outcome-toast-c00becdb638cd9a8.js +1 -0
  180. package/dist/dash/standalone/static/assets/chunks/platform-actions-2be223e68e648134.js +1 -0
  181. package/dist/dash/standalone/static/assets/chunks/platform-actions-f3979ab69a6ceb53.js +1 -0
  182. package/dist/dash/standalone/static/assets/chunks/platform-step-5454b6c0a19caefd.js +1 -0
  183. package/dist/dash/standalone/static/assets/chunks/platform-step-9a52703f4c4f6a31.js +1 -0
  184. package/dist/dash/standalone/static/assets/chunks/runners-list-20d42f19fb4bec8a.js +1 -0
  185. package/dist/dash/standalone/static/assets/chunks/{runtime-6e12333f12903a62-1.js → runtime-3fcac605fffcc273-1.js} +1 -1
  186. package/dist/dash/standalone/static/assets/chunks/secrets-list-89f89ee70edb3856.js +1 -0
  187. package/dist/dash/standalone/static/assets/chunks/{segmented-0b6dc6b93c35e0f5.js → segmented-66a8c77c6294fec3.js} +1 -1
  188. package/dist/dash/standalone/static/assets/chunks/shared-init-3fcac605fffcc273-2.js +1 -0
  189. package/dist/dash/standalone/static/assets/chunks/shared-init-96225b8c7758de9d.js +1 -0
  190. package/dist/dash/standalone/static/assets/chunks/shared-init-96cde32cd50254c0.js +1 -0
  191. package/dist/dash/standalone/static/assets/chunks/shared-init-abd7653140f37a0c.js +9 -0
  192. package/dist/dash/standalone/static/assets/chunks/side-toggle-8a410cc6d6bd9b1d.js +1 -0
  193. package/dist/dash/standalone/static/assets/chunks/{tail-f8804b80cf32f8d0.js → tail-40f16e09eade7eee.js} +1 -1
  194. package/dist/dash/standalone/static/assets/chunks/task-396d849e58e50d59.js +1 -0
  195. package/dist/dash/standalone/static/assets/chunks/task-actions-0b3054dc0f8d17c0.js +3 -0
  196. package/dist/dash/standalone/static/assets/chunks/task-view-9e026dc5da58af5b.js +3 -0
  197. package/dist/dash/standalone/static/assets/chunks/tasks-list-04c6568d7f7237b7.js +1 -0
  198. package/dist/dash/standalone/static/assets/chunks/versions-list-ceb756236e69b761.js +1 -0
  199. package/dist/dash/standalone/static/assets/chunks/{wular-pnext-6e12333f12903a62-0.js → wular-pnext-3fcac605fffcc273-0.js} +1 -1
  200. package/dist/dash/standalone/static/assets/create-param-id-2c72f3e32e7f8b8d.css +1 -0
  201. package/dist/dash/standalone/static/assets/dash-param-org-a7f30a8c5a6fa651.css +1 -0
  202. package/dist/dash/standalone/static/assets/dash-param-org-account-76fffb9337b633f2.css +1 -0
  203. package/dist/dash/standalone/static/assets/dash-param-org-agents-cc5d59edfc3cf0b1.css +1 -0
  204. package/dist/dash/standalone/static/assets/dash-param-org-agents-new-170499c849114150.css +1 -0
  205. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-dd4ac319a0d62432.css +1 -0
  206. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-199a9991de1bf2d9.css +1 -0
  207. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-9d2e1439f3f7e81b.css +1 -0
  208. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-param-app-a6d559f0e26bd01b.css +1 -0
  209. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-f21d4fcd3948139b.css +1 -0
  210. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-c8d6aa06f6e75f4c.css +1 -0
  211. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-9cc128ba8af6ef62.css +1 -0
  212. package/dist/dash/standalone/static/assets/dash-param-org-operator-8d5ef55834d8deba.css +1 -0
  213. package/dist/dash/standalone/static/assets/dash-param-org-settings-7138821f5422d087.css +1 -0
  214. package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-586fec34f285e9cb.css +1 -0
  215. package/dist/dash/standalone/static/assets/dash-param-org-setup-67679c1f84f352cf.css +1 -0
  216. package/dist/dash/standalone/static/assets/dash-param-org-tasks-be3cb3d64573f3d9.css +1 -0
  217. package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-c20a0537bc82620d.css +1 -0
  218. package/dist/dash/standalone/static/assets/dash-param-org-usage-c534db20ce538fd2.css +1 -0
  219. package/dist/dash/standalone/static/assets/global-df2c26ad15039e8a.css +1 -0
  220. package/dist/dash/standalone/static/assets/{login-9760b85feae40270.css → login-148795638d6ff5d4.css} +1 -1
  221. package/dist/dash/standalone/static/assets/pnext-client-07b41bfab64b61c0.js +1 -0
  222. package/dist/dash/standalone/static/assets/pnext-client-0d388d56250f9f46.js +1 -0
  223. package/dist/dash/standalone/static/assets/pnext-client-1443e45181b60bb0.js +1 -0
  224. package/dist/dash/standalone/static/assets/pnext-client-27207e4f43f9a21b.js +1 -0
  225. package/dist/dash/standalone/static/assets/pnext-client-435db60553fa3a67.js +1 -0
  226. package/dist/dash/standalone/static/assets/pnext-client-523dd4071aa294ba.js +1 -0
  227. package/dist/dash/standalone/static/assets/pnext-client-5f6bda3919f68382.js +1 -0
  228. package/dist/dash/standalone/static/assets/pnext-client-684fd8ad16563ed3.js +1 -0
  229. package/dist/dash/standalone/static/assets/pnext-client-6b952cdda9a1eb2b.js +1 -0
  230. package/dist/dash/standalone/static/assets/pnext-client-6fe9e98f7dd8dcbf.js +1 -0
  231. package/dist/dash/standalone/static/assets/pnext-client-730c2c507a159f9e.js +1 -0
  232. package/dist/dash/standalone/static/assets/pnext-client-7c46573e45b67166.js +1 -0
  233. package/dist/dash/standalone/static/assets/pnext-client-83a865c3d75705bd.js +1 -0
  234. package/dist/dash/standalone/static/assets/pnext-client-907d1db4fb398a1d.js +1 -0
  235. package/dist/dash/standalone/static/assets/pnext-client-9baf701f3e641d09.js +1 -0
  236. package/dist/dash/standalone/static/assets/pnext-client-a57705e4e1047a9e.js +1 -0
  237. package/dist/dash/standalone/static/assets/pnext-client-b1af82c6f0db0033.js +1 -0
  238. package/dist/dash/standalone/static/assets/pnext-client-cede3bd7b2735942.js +1 -0
  239. package/dist/dash/standalone/static/assets/pnext-client-d9a3996f22b6816b.js +1 -0
  240. package/dist/dash/standalone/static/assets/pnext-client-f95364a0073ca4ce.js +1 -0
  241. package/dist/definition-D0OpQfGX.js +1 -0
  242. package/dist/discover-BfYHHJN_.js +1 -0
  243. package/dist/dispatch-BkoIU4GU.js +12 -0
  244. package/dist/{dist-DAnSqY1s.js → dist-B5qUdWUG.js} +35 -35
  245. package/dist/{dist-B2jiMMxZ.js → dist-Clxdruuu.js} +3 -3
  246. package/dist/{dist-ClCNj65n.js → dist-CymLGfHl.js} +4 -4
  247. package/dist/{adapter-Bz0E-DAY.js → dist-DX0JzVC6.js} +990 -990
  248. package/dist/{adapter-CsacmMmv.js → dist-DfD9WmV8.js} +39 -39
  249. package/dist/dist-node-B8VIVzUc.js +20 -0
  250. package/dist/docs-CxklYa3P.js +2 -0
  251. package/dist/drive-B7SBFfcb.js +1 -0
  252. package/dist/drizzle-orm-CYU7WOQS.js +2 -0
  253. package/dist/{emit-BrkJJPUE.js → emit-BgeqsCkC.js} +3 -3
  254. package/dist/env-BwFCHakK.js +1 -0
  255. package/dist/errors-DK_trCff.js +1 -0
  256. package/dist/exec-D9jF2F-H.js +3 -0
  257. package/dist/executor-DBW7R7Tf.js +11 -0
  258. package/dist/flow/builtin/review/index.d.ts +2 -2
  259. package/dist/flow/builtin/review/index.js +10 -15
  260. package/dist/flow/index.d.ts +2 -2
  261. package/dist/flow/index.js +1 -1
  262. package/dist/github-actions-2RjyRseX.js +36 -0
  263. package/dist/{hook-CIipj9MJ.js → hook-DN__zYOG.js} +1 -1
  264. package/dist/http-615JJgHo.js +5 -0
  265. package/dist/http-DRk8cDjf.js +1 -0
  266. package/dist/{index-ChcxzFdB.d.ts → index-CTAQrCRU.d.ts} +403 -307
  267. package/dist/integrations-DSZSa8Rc.js +9 -0
  268. package/dist/lib/broker.js +2 -2
  269. package/dist/load-BtIDghgd.js +2 -0
  270. package/dist/local-BzMvgiwL.js +5 -0
  271. package/dist/local-GIxwz_Or.js +1 -0
  272. package/dist/login-LlZrIlxb.js +8 -0
  273. package/dist/maintenance-DyiyHI8S.js +1 -0
  274. package/dist/mcp-Caq72REF.js +1 -0
  275. package/dist/mcp-CrtKQoVi.js +1 -0
  276. package/dist/mcp-cEIva8Pd.js +27 -0
  277. package/dist/metadata-D_bBfr3H.js +1 -0
  278. package/dist/models-BVxs3I8o.js +1 -0
  279. package/dist/output-BKeyLbvt.js +5 -0
  280. package/dist/permission-RSZM3DUk.js +1 -0
  281. package/dist/post-DLenID75.js +11 -0
  282. package/dist/prompt-CpwbsEWM.js +4 -0
  283. package/dist/refresh-CWEpTAkD.js +1 -0
  284. package/dist/remote-BDMuKaON.js +2 -0
  285. package/dist/remote-CY-qYX2C.js +1 -0
  286. package/dist/runner-CKMOh5Q3.js +1 -0
  287. package/dist/runner.json +1 -1
  288. package/dist/runner.tgz +0 -0
  289. package/dist/schema.d.ts +2 -2
  290. package/dist/schema.js +2 -3
  291. package/dist/sdk.d.ts +2857 -1405
  292. package/dist/sdk.js +1 -1
  293. package/dist/serve-D23JqDip.js +12 -0
  294. package/dist/serve-DoYbHm_k.js +5 -0
  295. package/dist/serve-YlU04KO7.js +1 -0
  296. package/dist/session-D7eeJIaH.js +1 -0
  297. package/dist/sessions-BGUfSe8L.js +1 -0
  298. package/dist/shared-BzNReirj.js +1 -0
  299. package/dist/sign-in-Dr6sU7vz.js +3 -0
  300. package/dist/state-CxAUec80.js +6 -0
  301. package/dist/store-BrnWdtRw.js +349 -0
  302. package/dist/task-CyqtCXo3.js +1 -0
  303. package/dist/task-DN4assR8.js +7 -0
  304. package/dist/tool-search-C9Ty3hhL.js +6 -0
  305. package/dist/tools-Ck-ZWtmB.js +1 -0
  306. package/dist/tools-DVtBtED6.js +1 -0
  307. package/dist/tools-search-BNDea9vZ.js +1 -0
  308. package/dist/turn-eI4iRPsq.js +3 -0
  309. package/dist/types-DHBqXFE2.js +1 -0
  310. package/dist/update-check-Bap3dwaj.js +1 -0
  311. package/dist/view-D-rbQ1Kz.js +4 -0
  312. package/dist/views-Bxm_5J6T.js +2 -0
  313. package/dist/worker-DJANNSCT.js +1 -0
  314. package/dist/worker-DeuC38Vp.js +7 -0
  315. package/dist/zod-_-snqfdO.js +1 -0
  316. package/dist/zod.js +65 -1
  317. package/docs/agents/coder.md +5 -1
  318. package/docs/agents/index.md +53 -82
  319. package/docs/approvals.md +47 -0
  320. package/docs/cli/agent.md +34 -13
  321. package/docs/cli/auth.md +1 -1
  322. package/docs/cli/connection.md +22 -21
  323. package/docs/cli/index.md +18 -14
  324. package/docs/cli/model.md +11 -11
  325. package/docs/cli/task.md +28 -30
  326. package/docs/config.md +37 -65
  327. package/docs/connections.md +80 -0
  328. package/docs/dash.md +23 -19
  329. package/docs/flows.md +46 -213
  330. package/docs/models.md +48 -78
  331. package/docs/review.md +49 -18
  332. package/docs/runners.md +49 -0
  333. package/docs/sdk.md +49 -73
  334. package/docs/self-host.md +81 -82
  335. package/package.json +4 -5
  336. package/plugins/agents/skills/coder/SKILL.md +3 -3
  337. package/plugins/claude/.claude-plugin/plugin.json +1 -1
  338. package/plugins/claude/skills/dispatch/SKILL.md +3 -3
  339. package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
  340. package/plugins/cursor/README.md +3 -3
  341. package/plugins/cursor/skills/coder/SKILL.md +3 -3
  342. package/dist/actions-D12xDiQS.js +0 -4
  343. package/dist/adapter-DzpdWewB.js +0 -1
  344. package/dist/agent-JJStALIx.js +0 -8
  345. package/dist/apps-Bnk7F3A2.js +0 -379
  346. package/dist/args-Dqf5Y1RP.js +0 -1
  347. package/dist/async-Tj4zKHXR.js +0 -3
  348. package/dist/auth-BhpnOCbn.js +0 -1
  349. package/dist/base64url-CsVsW4Id.js +0 -1
  350. package/dist/chat-CSepnsrK.js +0 -13
  351. package/dist/cmd-BHZwhrfa.js +0 -118
  352. package/dist/connection-BkYTuJjV.js +0 -1
  353. package/dist/context-zhSlmXOp.js +0 -7
  354. package/dist/conversation-DT-35cEt.js +0 -1
  355. package/dist/core-DwsAMCnL.js +0 -65
  356. package/dist/dash/standalone/node_modules/contextjsx/dist/index.mjs +0 -1
  357. package/dist/dash/standalone/node_modules/contextjsx/dist/jsx-runtime.mjs +0 -1
  358. package/dist/dash/standalone/node_modules/contextjsx/dist/src-BJ0QFeB8.mjs +0 -2
  359. package/dist/dash/standalone/node_modules/contextjsx/package.json +0 -70
  360. package/dist/dash/standalone/server/modules-server-server-react-server/src/agent/context/turn.6bb73458768e222e.js +0 -129
  361. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/defaults.e972c134a1ae918f.js +0 -55
  362. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/auth/sign-in.661b3a4139af5bd7.js +0 -11
  363. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/connect/page.04762872666a6f0a.js +0 -26
  364. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/connect-apps.8a20501ccb244421.js +0 -36
  365. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/page.d066b77dd3187026.js +0 -65
  366. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/operator-apps.09bf294d753ee9d7.js +0 -115
  367. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/connections-list.97381888bfdd711b.js +0 -642
  368. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/engines-list.d47db60d7dc01ebd.js +0 -73
  369. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/list.a5b273558fb7f0f0.js +0 -156
  370. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/models-list.31d369f1b7ab45da.js +0 -444
  371. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/model-options.73f8d0d54f79d8e3.js +0 -100
  372. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/task-actions.51fbeac76459433a.js +0 -240
  373. package/dist/dash/standalone/static/assets/chunks/action-a76e495fb39a73d3.js +0 -1
  374. package/dist/dash/standalone/static/assets/chunks/agent-pills-4d3c6a2aa9eb1522.js +0 -2
  375. package/dist/dash/standalone/static/assets/chunks/agent-settings-form-f7231a66e391f6b6.js +0 -1
  376. package/dist/dash/standalone/static/assets/chunks/agent-toggle-d7d27123f2070f18.js +0 -1
  377. package/dist/dash/standalone/static/assets/chunks/agents-grid-185ecb3d86c6c447.js +0 -1
  378. package/dist/dash/standalone/static/assets/chunks/composer-56ebf36d63400423.js +0 -1
  379. package/dist/dash/standalone/static/assets/chunks/composer-a686289a79f64bae.js +0 -1
  380. package/dist/dash/standalone/static/assets/chunks/composer-data-f46a9bc7a14b4f9a.js +0 -1
  381. package/dist/dash/standalone/static/assets/chunks/connect-apps-696726aedab42c96.js +0 -1
  382. package/dist/dash/standalone/static/assets/chunks/connections-list-07559f145f3e3da3.js +0 -1
  383. package/dist/dash/standalone/static/assets/chunks/create-link-426b0a5871ee41dd.js +0 -1
  384. package/dist/dash/standalone/static/assets/chunks/credentials-list-f07d090410104148.js +0 -1
  385. package/dist/dash/standalone/static/assets/chunks/custom-range-6618f32ef6cd4e80.js +0 -1
  386. package/dist/dash/standalone/static/assets/chunks/editor-0860e370cbfc6b03.js +0 -6
  387. package/dist/dash/standalone/static/assets/chunks/engines-list-31b9bb7885924b05.js +0 -1
  388. package/dist/dash/standalone/static/assets/chunks/format-a27067f0186e78ac.js +0 -1
  389. package/dist/dash/standalone/static/assets/chunks/instructions-06b63e558f879da5.js +0 -1
  390. package/dist/dash/standalone/static/assets/chunks/instructions-2d9fbcbfadac4f40.js +0 -2
  391. package/dist/dash/standalone/static/assets/chunks/list-2773686bf8df64c7.js +0 -1
  392. package/dist/dash/standalone/static/assets/chunks/model-options-8d2170eebe0d061d.js +0 -1
  393. package/dist/dash/standalone/static/assets/chunks/models-list-03611e64b6a07efe.js +0 -1
  394. package/dist/dash/standalone/static/assets/chunks/notice-d14fdac28139c0a8.js +0 -1
  395. package/dist/dash/standalone/static/assets/chunks/outcome-dialog-d3ba8ef89c59f801.js +0 -1
  396. package/dist/dash/standalone/static/assets/chunks/platform-actions-2a71c62b9f7eaef3.js +0 -1
  397. package/dist/dash/standalone/static/assets/chunks/platform-actions-70600c9943320152.js +0 -1
  398. package/dist/dash/standalone/static/assets/chunks/runners-list-edf536eb8003eab5.js +0 -1
  399. package/dist/dash/standalone/static/assets/chunks/secrets-list-e86122f73525ff95.js +0 -1
  400. package/dist/dash/standalone/static/assets/chunks/shared-init-6e12333f12903a62-2.js +0 -1
  401. package/dist/dash/standalone/static/assets/chunks/shared-init-b281027d465e004f.js +0 -5
  402. package/dist/dash/standalone/static/assets/chunks/shared-init-c3bd249cf1eca6d1.js +0 -2
  403. package/dist/dash/standalone/static/assets/chunks/side-toggle-9b3af821cfe4c824.js +0 -1
  404. package/dist/dash/standalone/static/assets/chunks/task-a37e7c26e82eb77d.js +0 -1
  405. package/dist/dash/standalone/static/assets/chunks/task-actions-705395565f2d83b8.js +0 -1
  406. package/dist/dash/standalone/static/assets/chunks/task-view-cb21169f38b56d15.js +0 -6
  407. package/dist/dash/standalone/static/assets/chunks/tasks-list-d7dccfd7e0623ae0.js +0 -1
  408. package/dist/dash/standalone/static/assets/chunks/versions-list-f8f2e71df691efda.js +0 -1
  409. package/dist/dash/standalone/static/assets/connect-a550b6f3a8c00186.css +0 -1
  410. package/dist/dash/standalone/static/assets/create-param-id-c2c756f652f2fc30.css +0 -1
  411. package/dist/dash/standalone/static/assets/dash-param-org-account-702f8a1b213e4026.css +0 -1
  412. package/dist/dash/standalone/static/assets/dash-param-org-agents-aad2f9f93c06e9ab.css +0 -1
  413. package/dist/dash/standalone/static/assets/dash-param-org-agents-new-f9dcbcec36586f2b.css +0 -1
  414. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-8ff47f5d622c1f9b.css +0 -1
  415. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-907036d553cfeb36.css +0 -1
  416. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-5cc77badad15f00c.css +0 -1
  417. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-705d7c15868b4fd6.css +0 -1
  418. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-04e189c045098772.css +0 -1
  419. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-76fcd1ce7b3dae71.css +0 -1
  420. package/dist/dash/standalone/static/assets/dash-param-org-eccb6bb9297a53e6.css +0 -1
  421. package/dist/dash/standalone/static/assets/dash-param-org-operator-635a121f7a9a95bd.css +0 -1
  422. package/dist/dash/standalone/static/assets/dash-param-org-settings-a3297dc4d9e0c961.css +0 -1
  423. package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-bcb06f81d9e8268d.css +0 -1
  424. package/dist/dash/standalone/static/assets/dash-param-org-setup-df4be8b188b9777f.css +0 -1
  425. package/dist/dash/standalone/static/assets/dash-param-org-tasks-16f9866a1b4801cd.css +0 -1
  426. package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-02ae551dcd852b57.css +0 -1
  427. package/dist/dash/standalone/static/assets/dash-param-org-usage-f2175403069aab99.css +0 -1
  428. package/dist/dash/standalone/static/assets/global-e1de614478b64717.css +0 -1
  429. package/dist/dash/standalone/static/assets/pnext-client-0dc829ba60df5c26.js +0 -1
  430. package/dist/dash/standalone/static/assets/pnext-client-14d191f7f1da6602.js +0 -1
  431. package/dist/dash/standalone/static/assets/pnext-client-169eaa63783b71fd.js +0 -1
  432. package/dist/dash/standalone/static/assets/pnext-client-1e34cfefafa70fac.js +0 -1
  433. package/dist/dash/standalone/static/assets/pnext-client-285d61f00a80f40b.js +0 -1
  434. package/dist/dash/standalone/static/assets/pnext-client-35b89c3ba23ee845.js +0 -1
  435. package/dist/dash/standalone/static/assets/pnext-client-6c42784e005d4b87.js +0 -1
  436. package/dist/dash/standalone/static/assets/pnext-client-6cd93f9bd4cf6ffd.js +0 -1
  437. package/dist/dash/standalone/static/assets/pnext-client-7355f473fade532d.js +0 -1
  438. package/dist/dash/standalone/static/assets/pnext-client-815c3c297f75efb0.js +0 -1
  439. package/dist/dash/standalone/static/assets/pnext-client-87fe73c10a4dc33c.js +0 -1
  440. package/dist/dash/standalone/static/assets/pnext-client-98b56a142d441260.js +0 -1
  441. package/dist/dash/standalone/static/assets/pnext-client-b4bafe68a40f720b.js +0 -1
  442. package/dist/dash/standalone/static/assets/pnext-client-bf61ff39bdc0db48.js +0 -1
  443. package/dist/dash/standalone/static/assets/pnext-client-c9fa86c244813f74.js +0 -1
  444. package/dist/dash/standalone/static/assets/pnext-client-d2e7a75e16221224.js +0 -1
  445. package/dist/dash/standalone/static/assets/pnext-client-d34e774405ea8da8.js +0 -1
  446. package/dist/dash/standalone/static/assets/pnext-client-d511822afdb41d1d.js +0 -1
  447. package/dist/dash/standalone/static/assets/pnext-client-e113aa2f25ecfe01.js +0 -1
  448. package/dist/dash/standalone/static/assets/pnext-client-eb62f461d0c32266.js +0 -1
  449. package/dist/discover-CHfF4cEz.js +0 -1
  450. package/dist/dist-node-Bv1kCqyi.js +0 -20
  451. package/dist/docs-KHc0_gFX.js +0 -2
  452. package/dist/drive-Bwl7Bjme.js +0 -1
  453. package/dist/env-6Y-NNnYD.js +0 -1
  454. package/dist/errors-DO_IltpP.js +0 -16
  455. package/dist/exec-BmTa0vcO.js +0 -4
  456. package/dist/executor-ufWRqhdS.js +0 -11
  457. package/dist/http-Cg8PSe-c.js +0 -1
  458. package/dist/integrations-I7fRDk_l.js +0 -4
  459. package/dist/load-BDlEFetB.js +0 -2
  460. package/dist/local-COlczLwI.js +0 -5
  461. package/dist/log-view-CfX9lakH.js +0 -4
  462. package/dist/maintenance-CKCIWOvn.js +0 -1
  463. package/dist/match-CufHAZQH.js +0 -1
  464. package/dist/mcp-BkwmRHI9.js +0 -2
  465. package/dist/mcp-CGU7aoJ-.js +0 -1
  466. package/dist/mcp-DAHbhfUh.js +0 -13
  467. package/dist/models-CzggS7p2.js +0 -1
  468. package/dist/output-SNqdgh9A.js +0 -17
  469. package/dist/permission-MWFjKxqX.js +0 -1
  470. package/dist/prompt-CIx4jwQF.js +0 -8
  471. package/dist/refresh-CxsaX5R9.js +0 -1
  472. package/dist/remote-C9Hj2cby.js +0 -2
  473. package/dist/remote-HUZCWgfl.js +0 -3
  474. package/dist/runner-DYysY1-G.js +0 -1
  475. package/dist/runners-CfaGE0nV.js +0 -36
  476. package/dist/serve-DdAdw7Su.js +0 -4
  477. package/dist/serve-NQykWAKV.js +0 -1
  478. package/dist/serve-vKNqVaVy.js +0 -12
  479. package/dist/slack-BtKvW_4v.js +0 -5
  480. package/dist/task-CFxs0E_J.js +0 -1
  481. package/dist/task-iuYQ0zAK.js +0 -7
  482. package/dist/tools-B6ZxcqRi.js +0 -2
  483. package/dist/tools-FVop8XYG.js +0 -1
  484. package/dist/tools-search-kjKKolwp.js +0 -1
  485. package/dist/turn-DQ13lkPF.js +0 -2
  486. package/dist/types-DPtbvoo3.js +0 -1
  487. package/dist/types-DmThhjcW.js +0 -1
  488. package/dist/views-CMHXBMJp.js +0 -3
  489. package/dist/wire-C9CupY_A.js +0 -1
  490. package/dist/worker-BQpx1dPr.js +0 -9
  491. package/dist/worker-sTJL2eoe.js +0 -1
  492. package/dist/zod-BoqHoRCH.js +0 -1
  493. package/docs/access.md +0 -33
  494. package/docs/mcp.md +0 -54
  495. /package/dist/dash/standalone/server/modules-server-server-react-server/src/core/{errors.1bd0542d832ae0c0.js → errors.200335e62a9d9564.js} +0 -0
  496. /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
  497. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{page.107e622830bff31d.css.pnext-asset.js → page.1c7947d6f79d6447.css.pnext-asset.js} +0 -0
  498. /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
  499. /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]/(tabs)/settings/agent-settings-form.bf5430862c505c55.css.pnext-asset.js} +0 -0
  500. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/{editor/editor.1eb1bce282b289c9.css.pnext-asset.js → [slug]/platforms/[app]/@/app/dash/[org]/agents/[slug]/(tabs)/platforms/page.db05694ed4113dab.css.pnext-asset.js} +0 -0
  501. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{layout.a4efa8d807fe5416.css.pnext-asset.js → agents/[slug]/platforms/[app]/app-cards.d2f5c8d620066e05.css.pnext-asset.js} +0 -0
  502. /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
  503. /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
  504. /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
  505. /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
  506. /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
  507. /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
  508. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{tasks/[id]/task-view.42337a0d7c6ad0b6.css.pnext-asset.js → settings/[tab]/list.69d1b62c4066015b.css.pnext-asset.js} +0 -0
  509. /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
  510. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{tasks/list/tasks-list.2f90c4410f843fff.css.pnext-asset.js → settings/[tab]/runners-list.df35d33aba0c8b07.css.pnext-asset.js} +0 -0
  511. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{globals.f8ac779f0ebf888b.css.pnext-asset.js → dash/[org]/settings/model-pick.74fababc0cc0bba7.css.pnext-asset.js} +0 -0
  512. /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.440367ae07204ee7.css.pnext-asset.js} +0 -0
  513. /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/composer.33d49ad218253703.css.pnext-asset.js} +0 -0
  514. /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/pending-approvals.07e59a9cae7ccf29.css.pnext-asset.js} +0 -0
  515. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/ui/button.d7f4433f4e7faa80.css.pnext-asset.js → app/dash/[org]/tasks/list/tasks-list.f3737549b4696cc8.css.pnext-asset.js} +0 -0
  516. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/ui/card.f80288cc42f9bcae.css.pnext-asset.js → app/globals.3b53a3feaa1d72e1.css.pnext-asset.js} +0 -0
  517. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/ui/filter.b53f21acc3e2cfef.css.pnext-asset.js → app/responsive.2979ffa0161a5afd.css.pnext-asset.js} +0 -0
  518. /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
  519. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{toolbar.19e1ce5224a23acf.css.pnext-asset.js → badge.8e2a9842b28f44a6.css.pnext-asset.js} +0 -0
@@ -1,100 +0,0 @@
1
- export const NO_MODELS = {
2
- builtin: {},
3
- models: {}
4
- };
5
- export const ENGINES = [
6
- "claude",
7
- "codex",
8
- "custom"
9
- ];
10
- export const EFFORTS = [
11
- ["low", "Low"],
12
- ["medium", "Medium"],
13
- ["high", "High"]
14
- ];
15
- export const PERMISSIONS = [
16
- ["read-only", "Read only"],
17
- ["workspace-write", "Edit files"],
18
- ["auto", "Auto"]
19
- ];
20
- export const SCOPES = [["personal", "Just me"], ["workspace", "Workspace"]];
21
- /** Connections and secrets: `me` is the person's own, blank the workspace's. */
22
- export const CONNECTION_SCOPES = [["me", "Just me"], ["", "Workspace"]];
23
- export const ENGINE_NAMES = {
24
- claude: "Claude",
25
- codex: "Codex",
26
- custom: "Custom"
27
- };
28
- /** Each engine's usable model names: built-ins, then aliases and endpoints; turned-off ones left out. */
29
- export function modelsByEngine(shape) {
30
- const own = Object.entries(shape.models).filter(([, entry]) => !entry.disabled);
31
- return Object.fromEntries(ENGINES.map((engine) => [engine, [...Object.keys(shape.builtin[engine] ?? {}).filter((name) => !shape.models[name]?.disabled), ...own.filter(([, entry]) => engine === "custom" ? entry.baseUrl : entry.provider === engine).map(([name]) => name)]]));
32
- }
33
- /** An unset setting's label, naming what it resolves to; the engine picks when nothing sets it. */
34
- export const defaultLabel = (value) => `Default (${value || "engine's own"})`;
35
- /** One picker for engine and model: `engine:model`, or `engine:` for an engine's own default. */
36
- export function modelOptions(byEngine, blank) {
37
- return [["", blank], ...ENGINES.filter((engine) => byEngine[engine]?.length).flatMap((engine) => [[`${engine}:`, "Its default model"], ...byEngine[engine].map((model) => [`${engine}:${model}`, model])])];
38
- }
39
- export const modelValue = (engine, model) => engine || model ? `${engine ?? ""}:${model ?? ""}` : "";
40
- export function splitModel(value) {
41
- const at = value.indexOf(":");
42
- return at < 0 ? {
43
- engine: "",
44
- model: ""
45
- } : {
46
- engine: value.slice(0, at),
47
- model: value.slice(at + 1)
48
- };
49
- }
50
- /** Section titles for `modelOptions`: each engine's name above its first option. */
51
- export const modelHeadings = (byEngine) => Object.fromEntries(ENGINES.filter((engine) => byEngine[engine]?.length).map((engine) => [`${engine}:`, ENGINE_NAMES[engine]]));
52
- /** OpenAI-compatible providers the custom endpoint form prefills. */
53
- export const CUSTOM_PROVIDERS = [
54
- {
55
- id: "openrouter",
56
- name: "OpenRouter",
57
- baseUrl: "https://openrouter.ai/api/v1",
58
- envKey: "OPENROUTER_API_KEY",
59
- keyUrl: "https://openrouter.ai/keys",
60
- needsKey: true
61
- },
62
- {
63
- id: "vercel",
64
- name: "Vercel AI Gateway",
65
- baseUrl: "https://ai-gateway.vercel.sh/v1",
66
- envKey: "AI_GATEWAY_API_KEY",
67
- keyUrl: "https://vercel.com/d?to=%2F%5Bteam%5D%2F~%2Fai-gateway%2Fapi-keys&title=AI+Gateway+API+Keys",
68
- needsKey: true
69
- },
70
- {
71
- id: "groq",
72
- name: "Groq",
73
- baseUrl: "https://api.groq.com/openai/v1",
74
- envKey: "GROQ_API_KEY",
75
- keyUrl: "https://console.groq.com/keys",
76
- needsKey: true
77
- },
78
- {
79
- id: "together",
80
- name: "Together AI",
81
- baseUrl: "https://api.together.xyz/v1",
82
- envKey: "TOGETHER_API_KEY",
83
- keyUrl: "https://api.together.ai/settings/api-keys",
84
- needsKey: true
85
- },
86
- {
87
- id: "ollama",
88
- name: "Ollama",
89
- baseUrl: "http://localhost:11434/v1",
90
- envKey: "",
91
- needsKey: false
92
- },
93
- {
94
- id: "other",
95
- name: "Other",
96
- baseUrl: "",
97
- envKey: "",
98
- needsKey: true
99
- }
100
- ];
@@ -1,240 +0,0 @@
1
- "use client";
2
- import { useState } from "../../../../../../../../../../node_modules/preact/hooks/dist/hooks.mjs";
3
- import { client } from "../../../../../utils/client.78267fa3d7905d17.js";
4
- import { useAction } from "../../../../../utils/action.67dd6f8ab1ae067d.js";
5
- import { useRouter } from "../../../../../../../../../../node_modules/@wular/pnext/src/api/client-navigation.ts";
6
- import { useOrg } from "../../../../../comps/nav/org.d3abfd4053b711ce.js";
7
- import { Button } from "../../../../../comps/ui/button.ce9e6cdb08ca86db.js";
8
- import { Card } from "../../../../../comps/ui/card.9f0d45b73bc78b4f.js";
9
- import { Field } from "../../../../../comps/ui/field.75588c33b72824a7.js";
10
- import { ConfirmDialog } from "../../../../../comps/ui/confirm.29e198be34578222.js";
11
- import { Menu } from "../../../../../comps/ui/menu.ee45bace979944b6.js";
12
- import { MenuItem } from "../../../../../comps/ui/menu-items.1d082ac4dae8f3d4.js";
13
- import { Icon } from "../../../../../comps/ui/icon.0874ca2f58f7db14.js";
14
- import { iDots } from "../../../../../comps/ui/icons.e36c72f54750663a.js";
15
- import { showToast } from "../../../../../comps/frame/task-toasts.44075fa7e04575e8.js";
16
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "../../../../../../../../../../node_modules/preact/jsx-runtime/dist/jsxRuntime.mjs";
17
- /** Archive, Stop while it runs, and Delete behind the ⋯ menu; phones keep Archive in the menu too, away from Stop. */
18
- export function TaskActions({ task, live }) {
19
- const nav = useRouter();
20
- const org = useOrg();
21
- const action = useAction();
22
- const removing = useAction({ leaves: true });
23
- const [outcome, setOutcome] = useState("");
24
- // Archived here shows at once; the task's events bring `archivedAt` after.
25
- const [archivedHere, setArchivedHere] = useState(false);
26
- const archived = archivedHere || Boolean(task.archivedAt);
27
- const [confirming, setConfirming] = useState(false);
28
- const act = async (name) => {
29
- setOutcome("");
30
- const ok = await action.run(name, () => client.tasks[name](task.task.id));
31
- if (ok) setOutcome(name === "cancel" ? "Stop requested." : "Archived.");
32
- return ok;
33
- };
34
- const remove = () => void removing.run("delete", async () => {
35
- await client.tasks.delete(task.task.id);
36
- nav.push("/dash/[org]/tasks", { params: { org } });
37
- }).then((ok) => ok || setConfirming(false));
38
- const archive = () => void act("archive").then(setArchivedHere);
39
- return /* @__PURE__ */ _jsxs(_Fragment, { children: [
40
- /* @__PURE__ */ _jsx("span", {
41
- class: "flash",
42
- role: "status",
43
- children: outcome
44
- }),
45
- live ? /* @__PURE__ */ _jsx(Button, {
46
- variant: "outline",
47
- disabled: Boolean(action.pending),
48
- loading: action.pending === "cancel",
49
- onClick: () => void act("cancel"),
50
- children: "Stop"
51
- }) : archived ? null : /* @__PURE__ */ _jsx(Button, {
52
- variant: "outline",
53
- class: "archive",
54
- disabled: Boolean(action.pending),
55
- loading: action.pending === "archive",
56
- onClick: archive,
57
- children: "Archive"
58
- }),
59
- /* @__PURE__ */ _jsxs(Menu, {
60
- summary: /* @__PURE__ */ _jsx(Icon, { d: iDots }),
61
- button: "icon",
62
- label: "More actions",
63
- children: [
64
- live && !archived ? /* @__PURE__ */ _jsx(MenuItem, {
65
- title: "Archive",
66
- onClick: archive
67
- }) : null,
68
- /* @__PURE__ */ _jsx(MenuItem, {
69
- title: "Copy task id",
70
- onClick: () => void navigator.clipboard.writeText(task.task.id).then(() => showToast("Copied", task.task.id))
71
- }),
72
- /* @__PURE__ */ _jsx(MenuItem, {
73
- title: "Delete",
74
- danger: true,
75
- onClick: () => setConfirming(true)
76
- })
77
- ]
78
- }),
79
- /* @__PURE__ */ _jsx(ConfirmDialog, {
80
- open: confirming,
81
- title: "Delete this task?",
82
- body: "Its conversation, activity and diff go with it.",
83
- confirmLabel: "Delete",
84
- busy: Boolean(removing.pending),
85
- onConfirm: remove,
86
- onClose: () => setConfirming(false)
87
- })
88
- ] });
89
- }
90
- /** The escalation waiting on a decision: the first unanswered one of the task's list, else the one it announced unless the list answers it. */
91
- export const pendingApproval = (task) => task.approvals?.find((approval) => !approval.response) ?? (task.approvals?.some((approval) => approval.id === task.approval?.id) ? undefined : task.approval);
92
- /** The turn an escalation was raised in: the first one still running or finished after it. */
93
- export const raisedIn = (turns, approval) => {
94
- const at = Date.parse(approval.createdAt ?? "");
95
- const index = turns.findIndex((turn) => !turn.finishedAt || turn.finishedAt >= at);
96
- return index < 0 ? turns.length - 1 : index;
97
- };
98
- /** Who decided what, as the platforms word it: `Denied by @muzam`, `Approved in Coder`, `Task stopped`. */
99
- const decidedBy = ({ decision, by }) => decision === "closed" ? "Task stopped" : `${decision === "accept" ? "Approved" : "Denied"} ${by ? `by ${by}` : "in Coder"}`;
100
- /** An approval's exact actions, folded under their count. */
101
- function ApprovalActions({ actions }) {
102
- return /* @__PURE__ */ _jsxs("details", {
103
- class: "approval-actions",
104
- children: [/* @__PURE__ */ _jsxs("summary", { children: [
105
- actions.length,
106
- " action",
107
- actions.length === 1 ? "" : "s"
108
- ] }), /* @__PURE__ */ _jsx("ol", { children: actions.map((action, index) => /* @__PURE__ */ _jsx("li", { children: /* @__PURE__ */ _jsx("code", { children: action }) }, index)) })]
109
- });
110
- }
111
- /** An answered escalation where the conversation raised it: the reason, its actions and the decision. */
112
- export function ApprovalEntry({ approval }) {
113
- const response = approval.response;
114
- return /* @__PURE__ */ _jsx(Card, {
115
- title: "Approval needed",
116
- children: /* @__PURE__ */ _jsxs("div", {
117
- class: "body",
118
- children: [
119
- /* @__PURE__ */ _jsx("p", {
120
- class: "approval",
121
- children: approval.reason
122
- }),
123
- /* @__PURE__ */ _jsx(ApprovalActions, { actions: approval.actions }),
124
- /* @__PURE__ */ _jsxs("p", {
125
- class: "decision",
126
- children: [/* @__PURE__ */ _jsx("strong", { children: decidedBy(response) }), response.reason ? `: ${response.reason}` : null]
127
- })
128
- ]
129
- })
130
- });
131
- }
132
- /** A decision as the conversation shows it: who decided, approved or denied, and why. */
133
- export function DecisionTurn({ approval }) {
134
- const response = approval.response;
135
- return /* @__PURE__ */ _jsxs("div", {
136
- class: `turn decision ${response.decision}`,
137
- children: [
138
- /* @__PURE__ */ _jsx("p", {
139
- class: "who",
140
- children: decidedBy(response)
141
- }),
142
- response.reason ? /* @__PURE__ */ _jsx("div", {
143
- class: "prose",
144
- children: response.reason
145
- }) : null,
146
- /* @__PURE__ */ _jsx(ApprovalActions, { actions: approval.actions })
147
- ]
148
- });
149
- }
150
- // Stable, so the field takes focus once, when Deny shows it.
151
- const focus = (input) => input?.focus();
152
- export function Approval({ task }) {
153
- const action = useAction({ toast: "Not sent" });
154
- const busy = action.pending;
155
- // A sent decision shows on the card at once; the events stream catches up after.
156
- const [decided, setDecided] = useState();
157
- // Deny first asks why, in the card; leaving it empty is fine.
158
- const [denying, setDenying] = useState();
159
- const approval = pendingApproval(task);
160
- const { id, reason, actions } = approval ?? { actions: [] };
161
- const response = approval?.response ?? (decided?.id === id ? decided?.response : undefined);
162
- const decide = async (decision, why) => {
163
- const ok = await action.run(decision, () => client.tasks.approve(task.task.id, id ?? "", decision, why ? { reason: why } : {}));
164
- if (!ok) return;
165
- setDecided({
166
- id,
167
- response: {
168
- decision,
169
- ...why ? { reason: why } : {}
170
- }
171
- });
172
- };
173
- if (!approval) return null;
174
- return /* @__PURE__ */ _jsx(Card, {
175
- tone: response ? undefined : "accent",
176
- title: "Approval needed",
177
- actions: !response && task.task.flow === "default" && denying !== id ? /* @__PURE__ */ _jsxs(_Fragment, { children: [/* @__PURE__ */ _jsx(Button, {
178
- variant: "outline",
179
- size: "sm",
180
- disabled: Boolean(busy),
181
- onClick: () => setDenying(id),
182
- children: "Deny"
183
- }), /* @__PURE__ */ _jsx(Button, {
184
- size: "sm",
185
- disabled: Boolean(busy),
186
- loading: busy === "accept",
187
- onClick: () => void decide("accept"),
188
- children: "Approve"
189
- })] }) : undefined,
190
- children: /* @__PURE__ */ _jsxs("div", {
191
- class: "body",
192
- children: [
193
- denying === id && !response ? /* @__PURE__ */ _jsxs("form", {
194
- class: "deny-why",
195
- onSubmit: (event) => {
196
- event.preventDefault();
197
- const why = new FormData(event.currentTarget).get("why");
198
- void decide("decline", String(why ?? "").trim());
199
- },
200
- onKeyDown: (event) => event.key === "Escape" && setDenying(undefined),
201
- children: [/* @__PURE__ */ _jsx(Field, {
202
- label: "Why?",
203
- hint: "optional, the task reads it",
204
- children: /* @__PURE__ */ _jsx("input", {
205
- name: "why",
206
- placeholder: "Use the staging bucket instead",
207
- autocomplete: "off",
208
- ref: focus
209
- })
210
- }), /* @__PURE__ */ _jsxs("span", {
211
- class: "deny-why-actions",
212
- children: [/* @__PURE__ */ _jsx(Button, {
213
- variant: "ghost",
214
- disabled: Boolean(busy),
215
- onClick: () => setDenying(undefined),
216
- children: "Cancel"
217
- }), /* @__PURE__ */ _jsx(Button, {
218
- type: "submit",
219
- danger: true,
220
- loading: busy === "decline",
221
- children: "Deny"
222
- })]
223
- })]
224
- }) : null,
225
- reason ? /* @__PURE__ */ _jsx("p", {
226
- class: "approval",
227
- children: reason
228
- }) : null,
229
- /* @__PURE__ */ _jsx(ApprovalActions, { actions }),
230
- response ? /* @__PURE__ */ _jsxs("p", {
231
- class: "decision",
232
- children: [/* @__PURE__ */ _jsx("strong", { children: decidedBy(response) }), response.reason ? `: ${response.reason}` : null]
233
- }) : /* @__PURE__ */ _jsx("p", {
234
- class: "muted",
235
- children: "Your decision reaches the task as a message."
236
- })
237
- ]
238
- })
239
- });
240
- }
@@ -1 +0,0 @@
1
- import{h as e}from"./format-a27067f0186e78ac.js";import{$3k as o}from"./shared-init-c3bd249cf1eca6d1.js";import{$0a as s}from"./shared-init-c3bd249cf1eca6d1.js";import{$3h as r}from"./shared-init-6e12333f12903a62-2.js";var i="Something went wrong",b=n=>o(i,e(n));function k(n={}){let a=s(),[u,t]=r();return{pending:u,run:async(f,c,p={})=>{let{toast:m=i,refresh:g,leaves:l}={...n,...p};t(f);try{await c()}catch(d){return t(void 0),o(m,e(d)),!1}return l||t(void 0),g&&a.refresh(),!0}}}export{b as a,k as b};
@@ -1,2 +0,0 @@
1
- import{$0C as b}from"./shared-init-c3bd249cf1eca6d1.js";import{$2k as h,$2m as m,$2n as f,$2o as n}from"./shared-init-c3bd249cf1eca6d1.js";import{$0a as e,$0b as l,$0r as a}from"./shared-init-b281027d465e004f.js";import{$3c as u,$3n as g}from"./shared-init-6e12333f12903a62-2.js";var k=(r,o)=>r.replace(/\bid="([^"]+)"/g,`id="$1${o}"`).replace(/url\(#([^)]+)\)/g,`url(#$1${o})`).replace(/href="#([^"]+)"/g,`href="#$1${o}"`);function y({brand:r}){let o=g().replace(/[^a-zA-Z0-9_-]/g,"");return r.svg?e("span",{class:"brand-icon","aria-hidden":"true",dangerouslySetInnerHTML:{__html:k(r.svg,`-${o}`)}}):e("svg",{class:"brand-icon",width:"12",height:"12",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",style:{color:r.dark?`light-dark(${r.color}, ${r.dark})`:r.color},children:e("path",{d:r.icon})})}function B({id:r,info:o,state:s}){let i=o?.name??r;return e("span",{class:`pf ${s}`,children:[o?e(y,{brand:o.brand}):null,i]})}function S({platforms:r,catalog:o,agent:s}){let i=r.length>=m?f:r.length,c=({id:t,state:I},d)=>{let p=e(B,{id:t,info:o.find(L=>L.id===t),state:I});return s?e(b,{class:d,href:"/dash/[org]/agents/[slug]/platforms",params:{slug:s},children:p},t):e("span",{class:d,children:p},t)};return e("span",{class:"pfs",children:[r.slice(0,i).map(t=>c(t)),r.length>i?e(h,{label:`+${r.length-i}`,children:r.map(t=>c(t,"pf-row"))}):null]})}var R={builtin:"built-in",upload:"dashboard",repo:"repository",home:"local"};function w(){return e(n,{tone:"warn",title:"Disabled in this workspace",children:"disabled"})}function E({agent:r,fix:o}){return e(u,{children:[r.source==="repo"&&r.repo?r.sourceUrl?e(n,{class:"link-pill",href:r.sourceUrl,external:!0,title:`Repository agent, opens ${r.repo}`,children:[e(l,{d:a}),r.repo]}):e(n,{class:"link-pill",title:"Repository agent",children:[e(l,{d:a}),r.repo]}):e(n,{tone:r.source==="builtin"?"acc":void 0,title:r.local&&r.source==="repo"?"Repo agent, a folder in this repository":r.source==="home"?"Local agent, a folder on this machine":r.source!=="upload"?"Ships with Coder":r.local?"Local agent, a folder on this machine":"Dashboard agent, made and edited here",children:r.local&&r.source==="upload"?"local":R[r.source]??r.source}),r.local?r.commit&&e(n,{title:"Last commit of the agent's folder",children:r.commit.slice(0,7)}):e(n,{children:["v",r.currentVersion]}),r.settings?.disabled?e(w,{}):null,r.problems?.length?e(n,{tone:"warn",title:r.problems.join(`
2
- `),...o,children:"not running"}):null]})}export{y as a,S as b,w as c,E as d};
@@ -1 +0,0 @@
1
- "use client";import{a as re}from"./agent-pills-4d3c6a2aa9eb1522.js";import{a as ce}from"./agent-toggle-d7d27123f2070f18.js";import{b as te,c as se,f as oe,h as k,i as ae,j as B,k as $,l as ie}from"./model-options-8d2170eebe0d061d.js";import{b as j,c as le}from"./types-3eca2c7f47c46054.js";import{a as ne}from"./confirm-a78147b6ecef3847.js";import{a as y}from"./field-bb8191aa02d07282.js";import{b as x}from"./action-a76e495fb39a73d3.js";import"./format-a27067f0186e78ac.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$0B as ee,$0a as Y,$0t as Z,$0x as b}from"./shared-init-c3bd249cf1eca6d1.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$1c as H}from"./shared-init-b281027d465e004f.js";import{$0L as q,$0a as e,$0e as M}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3c as L,$3h as d,$3k as W,$3l as X}from"./shared-init-6e12333f12903a62-2.js";var de=[["read","Read-only"],["write","Read-write"]];function V({name:t,label:w,hint:S,value:c,options:m,blank:A}){let O=c&&!m.some(([p])=>p===c)?[...m,[c,c]]:m;return e(y,{label:w,hint:S,group:!0,children:e(b,{name:t,label:w,defaultValue:c??"",options:[["",A],...O]})})}function xe({agent:t,catalog:w,models:S,defaults:c,runners:m,connections:A}){let O=Y(),p=ee(),[u,U]=d("run"),_=x({refresh:!0}),G=x({leaves:!0}),me=!!_.pending,[Q,z]=d(""),[T,pe]=d(""),[C,ue]=d(),[fe,D]=d(!1),J=X(null),a=t.settings??{},[P,ge]=d(B(a.engine,a.model)),[F,he]=d(a.connections?"some":""),I=t.definition?.integrations??{},E=Object.keys(I).sort(),f=t.definition,g=f?.engine,K=t.source!=="builtin";W(()=>{let n=T.trim().toLowerCase(),i=[];J.current.querySelectorAll(".vpanel").forEach(r=>{let l=!1;r.querySelectorAll(".field").forEach(o=>{let s=[...o.querySelectorAll("input")].map(R=>R.value).join(" "),h=o.closest(".vplatform")?.querySelector("h3")?.textContent??"",v=!n||`${h} ${o.textContent} ${s}`.toLowerCase().includes(n);o.hidden=!v,l||=v}),r.querySelectorAll(".vplatform").forEach(o=>{o.hidden=!o.querySelector(".field:not([hidden])")}),l&&i.push(r.dataset.panel)}),ue(n?i:void 0),n&&i.length&&!i.includes(u)&&U(i[0])},[T]);let ve=()=>void G.run("delete",async()=>{await H.agents.remove(t.id),O.push("/dash/[org]/agents",{params:{org:p}})}).then(n=>n||D(!1)),N=(n,i)=>e("button",{type:"button","aria-current":u===n?"true":void 0,class:C&&!C.includes(n)?"miss":void 0,onClick:()=>U(n),children:i});return e("form",{ref:J,class:"vsettings card frame",onSubmit:async n=>{n.preventDefault();let i=new FormData(n.currentTarget),r=s=>String(i.get(s)??"").trim(),l={};for(let s of["effort","permissions","access","runner"])r(s)&&(l[s]=r(s));let o=$(P);o.engine&&(l.engine=o.engine),o.model&&(l.model=o.model),F&&(l.connections=i.getAll("connection").map(String));for(let s of E){let h={},v=j(I[s]?.events),R=i.getAll(`event:${s}`).map(String);v.length&&R.length<v.length&&(h.allowedEvents=R),Object.keys(h).length&&((l.integrations??={})[s]=h)}t.settings?.disabled&&(l.disabled=!0),z(""),await _.run("save",()=>H.agents.settings(t.id,l))&&z("Saved. New tasks use these settings.")},children:[e("nav",{class:"tabs vertical","aria-label":"Settings sections",children:[e("p",{class:"tabs-label",children:"Runtime"}),N("run","How it runs"),E.length?N("platforms","Platforms"):null,e("p",{class:"tabs-label",children:"Agent"}),N("manage","Manage")]}),e("div",{class:"vbody",children:[e("div",{class:"vsearch",children:[e(Z,{value:T,label:"Search settings",onInput:pe}),C&&!C.length?e("span",{class:"muted",children:"No setting matches."}):null]}),e("section",{class:"vpanel","data-panel":"run",hidden:u!=="run",children:[e("h2",{children:"How it runs"}),e("p",{class:"muted",children:"Anything left on Default follows the agent's own definition."}),e("div",{class:"fields",children:[e(y,{label:"Model",hint:"picking a model picks its engine",group:!0,children:e(b,{label:"Model",value:P,options:[...ae(S,k(g?[oe[g]??g,f?.model??c.engines[g]?.model].filter(Boolean).join(" \xB7 "):"first available engine")),...!a.engine&&a.model?[[B(void 0,a.model),a.model]]:[]],headings:ie(S),onChange:ge})}),e(V,{name:"effort",label:"Effort",value:a.effort,options:te,blank:k(f?.effort??c.engines[$(P).engine??g]?.effort)}),e(V,{name:"permissions",label:"Permissions",hint:"what the runner may change in the checkout",value:a.permissions,options:se,blank:k(f?.permissions??"auto")}),e(V,{name:"access",label:"Access",hint:"what it may do on its platforms and connections",value:a.access,options:f?.access==="read"?de.slice(0,1):de,blank:k(f?.access==="read"?"Read-only":"Read-write")}),m.length>1?e(y,{label:"Runs on",group:!0,children:e(b,{name:"runner",label:"Runs on",defaultValue:a.runner??"",options:m})}):null,e(y,{label:"Connections",hint:"which workspace connections its tasks can use",group:!0,children:e(b,{label:"Connections",value:F,options:[["","Every workspace connection"],["some","Only the ones picked"]],onChange:he})}),F?e("div",{class:"field picked",children:[e("span",{children:["Picked connections ",e("small",{children:"tasks can use only these"})]}),A.length?e("div",{class:"checks",children:A.map(n=>e("label",{class:"check",children:[e("input",{type:"checkbox",name:"connection",value:n.id,defaultChecked:a.connections?.includes(n.id)}),n.name]},n.id))}):e("span",{class:"muted",children:["This workspace has no connections yet."," ",e(M,{class:"link",href:"/dash/[org]/settings/[tab]",params:{org:p,tab:"connections"},children:"Add one in Settings"})]})]}):null]})]}),E.length?e("section",{class:"vpanel","data-panel":"platforms",hidden:u!=="platforms",children:[e("h2",{children:"Platforms"}),e("p",{class:"muted",children:["Turn events off for this workspace."," ",le(t)?e(L,{children:["To add an event or a platform,"," ",e(M,{href:"/dash/[org]/agents/[slug]/edit",params:{org:p,slug:t.id},search:{section:"platforms"},children:["edit ",t.name]}),"."]}):t.source==="repo"?e(L,{children:[t.name," comes from ",t.repo??"a repository","; add an event or a platform in its"," ",t.sourceUrl?e("a",{href:t.sourceUrl,target:"_blank",rel:"noreferrer",children:"agent.json"}):"agent.json"," ","there."]}):e(L,{children:[t.name," is built in, so its events and platforms ship with Coder. To listen anywhere else,"," ",e(M,{href:"/dash/[org]/agents/new",params:{org:p},children:"create your own agent"}),"."]})]}),E.map(n=>{let i=a.integrations?.[n]??{},r=j(I[n]?.events),l=i.allowedEvents,o=w.find(s=>s.id===n);return e("div",{class:"vplatform",children:[e("h3",{children:[o?e(re,{brand:o.brand}):null,o?.name??n]}),r.length?e("div",{class:"field",children:[e("span",{children:["Events"," ",e("small",{children:"the definition's events; turn off any it should ignore here"})]}),e("div",{class:"checks",children:r.map(s=>e("label",{class:"check",children:[e("input",{type:"checkbox",name:`event:${n}`,value:s,defaultChecked:!l||l.includes(s)}),s]},s))})]}):null]},n)})]}):null,e("section",{class:"vpanel","data-panel":"manage",hidden:u!=="manage",children:[e("h2",{children:"Manage"}),e("div",{class:"field row-action",children:[e("span",{children:["Disable agent",e("small",{children:"stops its events and new tasks in this workspace; its apps and tasks stay"})]}),e(ce,{agent:t})]}),e("div",{class:"field row-action",children:[e("span",{children:["Delete agent",e("small",{children:K?"removes it and every version; its tasks and platform apps stay":`${t.name} is built in and cannot be deleted; disable it above instead`})]}),e(q,{variant:"secondary",danger:!0,disabled:!K,onClick:()=>D(!0),children:"Delete agent"})]})]}),u==="manage"?null:e("div",{class:"form-actions save",children:[Q?e("span",{class:"flash",role:"status",children:Q}):null,e(q,{type:"submit",loading:me,children:"Save"})]})]}),fe?e(ne,{open:!0,title:`Delete ${t.name}?`,body:"It stops answering on every platform. This cannot be undone.",confirmLabel:"Delete agent",busy:!!G.pending,onClose:()=>D(!1),onConfirm:ve}):null]})}export{xe as AgentSettingsForm};
@@ -1 +0,0 @@
1
- import{b}from"./action-a76e495fb39a73d3.js";import{$1c as r}from"./shared-init-b281027d465e004f.js";import{$0L as c,$0a as s}from"./shared-init-b281027d465e004f.js";import{$3h as g}from"./shared-init-6e12333f12903a62-2.js";function A({agent:o,link:u}){let i=b({refresh:!0}),e=!!i.pending,t=!!o.settings?.disabled,[l,m]=g({saved:t,disabled:t}),n=l.saved===t?l.disabled:t,a=()=>void i.run("toggle",async()=>{await r.agents.settings(o.id,{...o.settings,disabled:!n}),m({saved:t,disabled:!n})}),d=n?"Enable":"Disable";return u?s("button",{type:"button",class:"link",disabled:e,"aria-busy":e,onClick:a,children:d}):s(c,{variant:"outline",loading:e,onClick:a,children:d})}export{A as a};
@@ -1 +0,0 @@
1
- "use client";import{a as P,b as R,d as q}from"./agent-pills-4d3c6a2aa9eb1522.js";import{a as L}from"./tail-f8804b80cf32f8d0.js";import{c as N}from"./types-3eca2c7f47c46054.js";import{g}from"./format-a27067f0186e78ac.js";import{$0B as a,$0r as w,$0s as C,$0t as I,$0u as v,$0v as k}from"./shared-init-c3bd249cf1eca6d1.js";import{$2c as b,$2e as A}from"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import{$1c as f}from"./shared-init-b281027d465e004f.js";import{$0M as y,$0a as e,$0e as u,$0f as h}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3c as c}from"./shared-init-6e12333f12903a62-2.js";function x(){return e(y,{href:"/dash/[org]/agents/new",params:{org:a()},leftIcon:h,children:"New agent"})}function $({agent:t,catalog:i}){let n=a(),o=`/dash/${n}/agents/${encodeURIComponent(t.id)}`,l=N(t)?{href:`${o}/edit?section=platforms`}:t.source==="repo"&&t.sourceUrl?{href:t.sourceUrl,external:!0}:{href:`${o}/settings`};return e("li",{class:"agent-card",children:[e("div",{class:"bc-head",children:[e("span",{class:"mark",children:g(t.name)}),e("div",{class:"grow",children:[e("h3",{children:e(u,{class:"cover",href:"/dash/[org]/agents/[slug]",params:{org:n,slug:t.id},children:t.name})}),e("span",{class:"pills",children:e(q,{agent:t,fix:l})})]})]}),e("div",{class:"lead-clamp",children:e("span",{children:t.problems?.length?t.problems.join(" "):t.description??"No description yet."})}),t.platforms.length?e(R,{platforms:t.platforms,catalog:i,agent:t.id}):e("span",{class:"pfs muted",children:"No handles yet"})]})}var O=[["","All agents"],["dashboard","Dashboard agents"],["repository","Repository agents"],["builtin","Built-in"]];function te({first:t,limit:i,filters:n,catalog:o,head:l,children:B}){let{values:m,set:p,query:K}=C(n),s=A({name:"agents",fetchPage:r=>f.agents.list({cursor:r,limit:i,...m}),query:K,first:t,initial:w(n)});return e(c,{children:[e(v,{head:l,action:e(x,{}),children:[e(I,{value:m.q,label:"Search agents",onInput:r=>p("q",r,250)}),e(k,{name:"agents",facets:[{key:"platform",label:"Platform",options:o.map(r=>[r.id,r.name]),icon:r=>{let d=o.find(S=>S.id===r);return d?e(P,{brand:d.brand}):void 0}},{key:"type",label:"Source",options:O}],values:m,onChange:p})]}),B,s.rows.length?e("ul",{class:"agent-grid","aria-busy":s.stale,children:s.rows.map(r=>e($,{agent:r,catalog:o},r.id))}):s.stale?null:e(b,{title:"No agents match",children:"Try another search or filter."}),e(L,{noun:"agents",...s})]})}export{te as AgentsGrid,O as KINDS};
@@ -1 +0,0 @@
1
- "use client";import{a,b,c,d}from"./composer-a686289a79f64bae.js";import"./composer-data-f46a9bc7a14b4f9a.js";import"./task-a37e7c26e82eb77d.js";import"./connect-repositories-7770ab805160028d.js";import"./model-options-8d2170eebe0d061d.js";import"./notice-d14fdac28139c0a8.js";import"./types-3eca2c7f47c46054.js";import"./back-e29cb10f5548ddae.js";import"./action-a76e495fb39a73d3.js";import"./format-a27067f0186e78ac.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-b281027d465e004f.js";import"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";export{b as Composer,c as LoadingComposer,a as NeedsCredential,d as NewTaskButton};
@@ -1 +0,0 @@
1
- import{a as fe,b as et,c as tt,d as nt,f as ot}from"./composer-data-f46a9bc7a14b4f9a.js";import{n as Ye}from"./task-a37e7c26e82eb77d.js";import{a as Ve}from"./connect-repositories-7770ab805160028d.js";import{a as Xe,b as Ze,c as _e,f as de,h as pe,j as V,k as Qe}from"./model-options-8d2170eebe0d061d.js";import{a as rt}from"./notice-d14fdac28139c0a8.js";import{a as st}from"./back-e29cb10f5548ddae.js";import{a as A,b as Je}from"./action-a76e495fb39a73d3.js";import{a as Te,h as T}from"./format-a27067f0186e78ac.js";import{$3l as Ge}from"./shared-init-c3bd249cf1eca6d1.js";import{$0B as We,$0a as He,$0k as je,$0l as J,$0m as ze,$0n as x,$0o as Ke,$0p as Ue,$0q as ue,$0x as H}from"./shared-init-c3bd249cf1eca6d1.js";import{$2d as qe}from"./shared-init-c3bd249cf1eca6d1.js";import{$1c as g}from"./shared-init-b281027d465e004f.js";import{$0B as De,$0E as Fe,$0K as Ie,$0L as ce,$0N as Be,$0a as t,$0b as G,$0k as Ae,$0t as Pe,$0z as ae}from"./shared-init-b281027d465e004f.js";import{$3c as h,$3h as f,$3j as le,$3k as Se,$3l as C,$3n as Ne}from"./shared-init-6e12333f12903a62-2.js";var X="coder:draft",Z="+connect",it="+refresh",me="+other",ge="+pick",he="+clone",Ct=/^\/(review|flow)(?:\s+(\S+))?\s*([\s\S]*)$/,Lt=(a,i,l)=>[["",a],...[...new Set([i,...l])].filter(Boolean).map(c=>[c,c])],lt=(a,i,l)=>{let c=[...a.recent,...i].map(d=>d.path);return[["","No folder"],...[...new Set([...c,l])].filter(d=>d&&d!==a.current.path).map(d=>[d,Ye(d)]),a.picker?[ge,"Choose\u2026"]:[me,"Type a path\u2026"],[he,"Repository\u2026"]]};function Rt(a,i){let l=[["",[["",`Default \xB7 ${[de[i.engine]??i.engine,i.engines[i.engine]?.model].filter(Boolean).join(" ")}`]]]];for(let c of Xe)a[c]?.length&&l.push([de[c]??c,[[V(c,""),pe(i.engines[c]?.model)],...a[c].map(d=>[V(c,d),d])]]);return l}var at=(a,i)=>{let l=a.find(([c])=>c===i)?.[1];return[["",pe(l?.toLowerCase())],...a]};function $t(a){let i=a.currentTarget,l=document.querySelector(`[popovertarget="${i.id}"]`)?.getBoundingClientRect();if(a.newState!=="open"||!l)return;let c=Math.round(l.bottom+6);i.style.top=`${c}px`,i.style.right=`${Math.round(document.documentElement.clientWidth-l.right)}px`,i.style.maxHeight=`${Math.max(160,window.innerHeight-c-16)}px`}function Ot(a){return Object.fromEntries(a.split(/\s+/).filter(Boolean).map(i=>{let l=i.indexOf("="),c=l<0?"true":i.slice(l+1);try{return[l<0?i:i.slice(0,l),JSON.parse(c)]}catch{return[i.slice(0,l),c]}}))}function xt({id:a,entries:i,active:l,selected:c,onActive:d}){return t(h,{children:i.flatMap((m,w)=>[m.head?t(x,{role:"presentation",children:m.head},`h:${m.key}`):null,t(ze,{id:`${a}-${w}`,active:w===l,selected:c===void 0?w===l:m.key===c,check:c!==void 0,end:m.hint?t("small",{children:m.hint}):null,onMouseDown:y=>y.preventDefault(),onPointerMove:()=>w!==l&&d(w),onClick:m.pick,children:m.label},m.key)])})}var St=(a,i,l,c)=>{let d={ArrowDown:1,ArrowUp:-1}[a.key];return!d||!l?!1:(a.preventDefault(),c((i+d+l)%l),!0)};function Nt({reason:a,label:i}){return t(rt,{tone:"warning",slim:!0,children:[t(G,{d:Fe}),t("span",{class:"grow",children:a||"Tasks need a model credential to run."}),t(st,{variant:"outline",size:"sm",label:i,children:"Add credential"})]})}function Tt({initial:a,data:i,defaults:l,missing:c,connectLabel:d,tz:m}){let w=He(),y=We(),[r,be]=f(()=>tt({...et,...a},i)),[u,_]=f(i),[q,Q]=f(),[Y,we]=f(!1),[ke,ct]=f(),[ut,dt]=f(),[S,ee]=f(""),[pt,L]=f(!1),[ft,j]=f(0),[te,mt]=f([]),[R,P]=f(""),[N,ye]=f(!1),ve=C(null),b=C(null),Ee=C(null),Me=C(null),v=Ne();le(()=>void(R&&Me.current?.focus()),[R]),le(()=>{let e=localStorage.getItem(X);e&&b.current&&!b.current.value&&(b.current.value=e),ee(b.current?.value??""),z(b.current?.value??""),b.current?.focus(),L(!0)},[]);let z=(e,n=r.repo)=>{!n&&/^\/review\s/.test(e)&&Ce(),!(!e.startsWith("/")||!n||q?.repo===n)&&(Q({repo:n}),g.pulls.list(n).then(s=>Q({repo:n,items:s})).catch(s=>{Q({repo:n,items:[]}),A(s)}),g.flows.list(n).then(s=>_(o=>({...o,flows:s.map(k=>k.name)}))).catch(s=>console.error("coder dashboard: flows",s)))},ne=C(!!i.repos),Ce=()=>{ne.current||(ne.current=!0,g.repositories.list().catch(e=>(console.error("coder dashboard: repositories",e),[])).then(e=>_(n=>({...n,repos:e.map(s=>s.repo)}))))},Le=Je(),Re=!!Le.pending,gt=()=>{ne.current=!0,Le.run("refresh",async()=>{let e=await g.repositories.refresh();_(n=>({...n,repos:e.map(s=>s.repo)}))})},D=(e,n)=>{if(n===me)return P("path");if(n===he)return P("url");if(n===ge)return void bt();if(n===it)return Re?void 0:gt();if(n===Z)return void Ve(`/dash/${y}/tasks`).catch(A);$({[e]:n}),(e==="repo"||e==="cwd")&&b.current?.focus({preventScroll:!0})},$=e=>{let n={...r,...e};be(n),z(S,n.repo),document.cookie=`compose=${encodeURIComponent(JSON.stringify(n))}; path=/; max-age=31536000; samesite=lax`},oe=e=>{if(!e.ok)return A(e.detail);P(""),mt(n=>[...n.filter(s=>s.path!==e.folder.path),e.folder]),D("cwd",e.folder.path===u.folders?.current.path?"":e.folder.path)},ht=async e=>{e.trim()&&oe(await g.folders.check(e.trim()).catch(n=>({ok:!1,detail:T(n)})))},bt=async()=>{document.body.style.cursor="progress";let e=await g.folders.pick().catch(n=>({ok:!1,detail:T(n)}));document.body.style.cursor="",(e.ok||e.detail)&&oe(e)},wt=async e=>{if(!e.trim())return;ye(!0),document.body.style.cursor="progress";let n=await g.folders.clone(e.trim()).catch(s=>({ok:!1,detail:T(s)}));document.body.style.cursor="",ye(!1),oe(n)},re=e=>{let n=b.current;n.value=e,localStorage.setItem(X,e),ee(e),z(e),j(0),L(!1),n.focus(),n.setSelectionRange(e.length,e.length)},K=async e=>{let n=b.current?.value.trim()??"";if(Y||N||u.agentsOff||!(n||e))return;let[,s,o="",k=""]=Ct.exec(n)??[];if(!e&&s&&!(s==="flow"?o:/^#?\d+$/.test(o)))return void L(!1);let E=e??(s==="review"?Number(o.replace("#","")):void 0);if(E&&!r.repo)return A("Pick a repository first.");let{agent:I,engine:W,model:B,effort:O,permissions:se,runner:yt}=r,[vt,Et]=u.folders?["",r.cwd]:[r.repo,""],ie=Object.fromEntries(Object.entries({repo:vt,cwd:Et,engine:W,model:B,effort:O,permissions:se,runner:yt}).filter(([,M])=>M));we(!0);try{let M=E?await g.review({...ie,repo:r.repo,pr:E}):s==="flow"?await g.flows.run(o,{...ie,agent:I,args:Ot(k)}):await g.tasks.create({...ie,agent:I,prompt:n});(!e||s)&&localStorage.removeItem(X),Ge(M.task.id,"queued",n||`Review of #${E}`),w.push("/dash/[org]/tasks/[id]",{params:{org:y,id:M.task.id}})}catch(M){we(!1),M.status===409?ct(T(M)):A(M)}},p=(()=>{let e=/^\/(\S*)$/.exec(S)?.[1]?.toLowerCase();if(e!==void 0)return{label:"Commands",entries:[{key:"review",label:"/review",hint:"Review a pull request",pick:()=>re("/review ")},...u.flows.map(o=>({key:`flow ${o}`,label:`/flow ${o}`,hint:`Run the ${o} flow`,pick:()=>re(`/flow ${o} `)}))].filter(o=>o.key.includes(e)),note:"No command matches."};let n=/^\/flow\s+(\S*)$/.exec(S)?.[1];if(n!==void 0)return{label:"Flows",entries:u.flows.filter(o=>o.includes(n)).map(o=>({key:o,label:o,hint:`Run the ${o} flow`,pick:()=>o===n?void K():re(`/flow ${o} `)})),note:"No flow matches."};let s=/^\/review\s+#?(\S*)$/.exec(S)?.[1];if(s!==void 0)return r.repo?q?.items?{label:`Pull requests in ${r.repo}`,entries:[...q.items.filter(o=>String(o.number).startsWith(s)||o.title.toLowerCase().includes(s.toLowerCase())).sort((o,k)=>+(String(k.number)===s)-+(String(o.number)===s)).map(o=>({key:`#${o.number}`,label:`#${o.number} ${o.title}`,hint:[o.author,o.createdAt?Te(Date.parse(o.createdAt),m):""].filter(Boolean).join(" \xB7 "),pick:()=>void K(o.number)})),...s?[]:[{key:"",label:r.repo,hint:"Pick another repository",pick:()=>$({repo:""})}]],note:q.items.length?"No open pull request matches.":"No open pull requests."}:{label:`Pull requests in ${r.repo}`,entries:[],note:"loading"}:{label:"Pick a repository",entries:[...(u.repos??[]).filter(o=>o.includes(s)).map(o=>({key:o,label:o,pick:()=>D("repo",o)})),{key:Z,label:d,pick:()=>D("repo",Z)}]}})(),F=!!(p&&!pt),U=p?Math.min(ft,Math.max(0,p.entries.length-1)):0;Se(()=>{let e=Ee.current;if(!e)return;if(!F)return void(e.matches(":popover-open")&&e.hidePopover());let n=()=>{let s=ve.current.getBoundingClientRect();e.style.top=`${Math.round(s.bottom+6)}px`,e.style.left=`${Math.round(s.left)}px`,e.style.width=`${Math.round(Math.min(s.width,460))}px`};return n(),e.matches(":popover-open")||e.showPopover(),addEventListener("scroll",n,!0),addEventListener("resize",n),()=>{removeEventListener("scroll",n,!0),removeEventListener("resize",n)}},[F,S]);let kt=r.engine||l.engine,$e=l.engines[kt]??{},Oe=u.agents.some(([e])=>e===r.agent)?u.agents:[...u.agents,[r.agent,r.agent]],xe=[r.agent!==u.defaultAgent&&r.agent,r.engine!==l.engine&&r.engine,...["model","effort","permissions"].map(e=>r[e]!==$e[e]&&r[e]),r.runner&&(u.runners.find(([e])=>e===r.runner)?.[1]??r.runner)].filter(Boolean).join(" \xB7 ");return t(h,{children:[t("form",{ref:ve,class:"composer",onSubmit:e=>{e.preventDefault(),K()},children:[t("textarea",{ref:b,name:"prompt",rows:1,role:"combobox","aria-label":"What should the agent do?","aria-autocomplete":"list","aria-expanded":F,"aria-controls":`${v}-slash`,"aria-activedescendant":F&&p?.entries.length?`${v}-slash-${U}`:void 0,placeholder:fe,autofocus:!0,onFocus:()=>L(!1),onBlur:()=>L(!0),onInput:e=>{let n=e.currentTarget.value;localStorage.setItem(X,n),ee(n),z(n),j(0),L(!1)},onKeyDown:e=>{if(!e.isComposing){if(F&&p){if(St(e,U,p.entries.length,j))return;if(e.key==="Escape")return e.preventDefault(),L(!0);if(p.entries.length&&(e.key==="Enter"&&!e.shiftKey||e.key==="Tab"))return e.preventDefault(),p.entries[U].pick()}e.key!=="Enter"||e.shiftKey||(e.preventDefault(),K())}}}),t("div",{class:"composer-line",children:[u.folders?R?t(h,{children:[t("input",{class:"folder-path","aria-label":R==="url"?"Repository URL":"Folder path",ref:Me,placeholder:R==="url"?"https://github.com/owner/repo":"Absolute path or ~/\u2026",readOnly:N,"aria-busy":N,onKeyDown:e=>{if(N)return e.preventDefault();if(e.key==="Escape")return e.preventDefault(),P("");e.key!=="Enter"||e.isComposing||(e.preventDefault(),(R==="url"?wt:ht)(e.currentTarget.value))},onBlur:e=>!N&&!e.currentTarget.value.trim()&&P("")}),N?t("span",{class:"folder-busy",children:"Cloning\u2026"}):null]}):t("span",{class:"folder",title:r.cwd||u.folders.current.path,children:t(H,{label:"Folder",value:r.cwd,options:lt(u.folders,te,r.cwd),subs:Object.fromEntries(lt(u.folders,te,r.cwd).flatMap(([e])=>e&&e!==me&&e!==ge&&e!==he?[[e,te.find(n=>n.path===e)?.url??e]]:[])),onChange:e=>D("cwd",e)})}):t(H,{label:"Repository",value:r.repo,options:[...Lt("No repository",r.repo,u.repos??[]),[it,Re?"Refreshing repositories\u2026":"Refresh repositories"],[Z,d]],onChange:e=>D("repo",e),onFocus:Ce}),t("button",{type:"button",class:"quiet",popovertarget:`${v}-settings`,"aria-label":"Run options",title:"Model, effort, permissions and more",children:[t(G,{d:Ie}),xe?t("span",{children:xe}):null]}),t(ce,{type:"submit",size:"sm",class:"send",leftIcon:De,disabled:!S.trim()||u.agentsOff,loading:Y,"aria-label":Y?"Starting task":"Start task",title:"Start task (Enter)"})]}),u.agentsOff?t("small",{class:"folder-hint",children:"Every agent here is disabled. Enable one in its settings to start tasks."}):null,R==="url"?t("small",{class:"folder-hint",children:"Uses this machine's git logins"}):null,t(ue,{id:`${v}-settings`,class:"composer-settings",popover:"auto",onBeforeToggle:$t,children:[t(x,{children:"Model"}),t("div",{role:"group","aria-label":"Model",class:"pop-radios",children:[Rt(u.models,l).map(([e,n])=>t(h,{children:[e?t("p",{class:"pop-group",children:e}):null,n.map(([s,o])=>{let k=s===V(r.engine,r.model),E=Qe(s),I=at(Ze,l.engines[E.engine||l.engine]?.effort),W=k&&r.effort?I.find(([O])=>O===r.effort)?.[1]:void 0,B=ut===s;return t(h,{children:[t(Ue,{children:[t(J,{on:k,onPick:()=>{$({...E,effort:""}),document.getElementById(`${v}-settings`)?.hidePopover()},end:W?t("small",{children:W.toLowerCase()}):null,children:o}),t("button",{type:"button",class:"pop-chev","data-keep":!0,"aria-label":`Effort for ${o}`,"aria-expanded":B,onClick:()=>dt(B?void 0:s),children:t(G,{d:Ae})})]}),B?t("div",{role:"group","aria-label":`Effort for ${o}`,class:"pop-sub",children:I.map(([O,se])=>t(J,{on:k&&r.effort===O,onPick:()=>{$({...E,effort:O}),document.getElementById(`${v}-settings`)?.hidePopover()},children:se},O))}):null]},s)})]},e)),t(je,{class:"add-models",href:"/dash/[org]/settings/[tab]",params:{org:y,tab:"models"},icon:ae,children:"Add models"})]}),t(x,{children:"Permissions"}),t("div",{role:"group","aria-label":"Permissions",children:at(_e,$e.permissions??"auto").map(([e,n])=>t(J,{on:r.permissions===e,onPick:()=>$({permissions:e}),children:n},e))}),Oe.length>1?t(h,{children:[t(x,{children:"Agent"}),t(H,{label:"Agent",value:r.agent,options:Oe,onChange:e=>$({agent:e})})]}):null,u.runners.length>1?t(h,{children:[t(x,{children:"Runs on"}),t(H,{label:"Runs on",options:u.runners,value:r.runner,onChange:e=>$({runner:e})})]}):null]}),t(ue,{panelRef:Ee,id:`${v}-slash`,class:"composer-slash",popover:"manual",role:"listbox","aria-label":p?.label??"Commands",children:p?t(h,{children:[t(x,{children:p.label}),t(xt,{id:`${v}-slash`,entries:p.entries,active:U,onActive:j}),p.note==="loading"?t(qe,{label:"Loading pull requests",inline:!0}):p.note&&!p.entries.length?t(Ke,{children:p.note}):null]}):null})]}),ke===void 0||c?null:t(Nt,{reason:ke})]})}function At(){return t("div",{class:"composer","aria-hidden":"true",children:[t("textarea",{rows:1,disabled:!0,tabIndex:-1,placeholder:fe}),t("div",{class:"composer-line"})]})}function sn({agent:a}){let i=C(null),[l,c]=f(),[d,m]=f(""),[w,y]=f(!1),r=C();return t(h,{children:[t(ce,{class:"new-task",leftIcon:ae,onClick:()=>{y(!0),i.current?.showModal(),r.current??=ot(g).then(c,u=>m(T(u)))},children:"New task"}),t("dialog",{ref:i,class:"compose-dialog","aria-label":a?`New task for ${a}`:"New task",onClose:()=>y(!1),onClick:u=>u.target===u.currentTarget&&i.current?.close(),children:[t("header",{children:[t("h2",{children:"New task"}),a?t("span",{class:"sub",children:a}):null,t(Be,{icon:Pe,label:"Close",onClick:()=>i.current?.close()})]}),w?l?t(Tt,{...l,initial:{...nt(document.cookie),...a?{agent:a}:{}},tz:Intl.DateTimeFormat().resolvedOptions().timeZone}):d?t("p",{class:"flash err",role:"alert",children:d}):t(At,{}):null]})]})}export{Nt as a,Tt as b,At as c,sn as d};
@@ -1 +0,0 @@
1
- import{g as i}from"./model-options-8d2170eebe0d061d.js";import{$3a as s}from"./shared-init-c3bd249cf1eca6d1.js";var C="What should the agent do? Type / for flows and reviews.",h={repo:"",cwd:"",agent:"",engine:"",model:"",effort:"",permissions:"",runner:""};function w(t,e){let n=e.agents.map(([r])=>r);return!n.length||n.includes(t.agent)?t:{...t,agent:e.defaultAgent??n[0]}}function x(t){let e=t.match(/(?:^|; )compose=([^;]*)/)?.[1];try{return e?JSON.parse(decodeURIComponent(e)):{}}catch{return{}}}var l=t=>[...t].sort((e,n)=>Number(n.default)-Number(e.default)||e.name.localeCompare(n.name)),d=t=>{let e=t.find(n=>n.default);return[["",e?`Default \xB7 ${e.name}`:"Default"],...l(t).filter(n=>n!==e).map(n=>[n.id,n.name])]};async function y(t){let e=await t.composer(),n=e.agents.find(o=>o.default)?.id,r={agents:e.agents.map(({id:o,name:c})=>[o,c]),...n?{defaultAgent:n}:{},...e.agents.length?{}:{agentsOff:!0},models:i(e.models),runners:d(e.runners),flows:e.flows,folders:e.folders},a={engine:e.engine??s,engines:e.engines};return{data:r,defaults:a,connectLabel:e.connectLabel??"Connect repositories"}}export{C as a,h as b,w as c,x as d,l as e,y as f};
@@ -1 +0,0 @@
1
- "use client";import{a as c}from"./notice-d14fdac28139c0a8.js";import{b as l}from"./action-a76e495fb39a73d3.js";import"./format-a27067f0186e78ac.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$0B as a}from"./shared-init-c3bd249cf1eca6d1.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import{$1c as i}from"./shared-init-b281027d465e004f.js";import{$0L as s,$0a as o,$0b as e,$0z as r}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";function C({apps:d}){let m=a(),t=l({toast:"Not installed",leaves:!0}),g=({id:n,agent:p})=>void t.run(n,async()=>{let u=`/dash/${m}/agents/${encodeURIComponent(p)}/platforms`;location.href=(await i.apps.install(n,u)).url});return o(c,{children:[o(e,{d:r}),o("span",{class:"grow",children:"Add the built-in agent to your repositories and channels."}),d.map(n=>o(s,{variant:"outline",size:"sm",disabled:!!t.pending,loading:t.pending===n.id,onClick:()=>g(n),children:n.label},n.id))]})}export{C as ConnectApps};
@@ -1 +0,0 @@
1
- "use client";import{a as O}from"./agent-pills-4d3c6a2aa9eb1522.js";import{a as ue}from"./segmented-0b6dc6b93c35e0f5.js";import{e as me}from"./model-options-8d2170eebe0d061d.js";import{a as pe}from"./notice-d14fdac28139c0a8.js";import{f as fe}from"./list-2773686bf8df64c7.js";import"./confirm-a78147b6ecef3847.js";import{a as C}from"./field-bb8191aa02d07282.js";import{a as de,b as N}from"./action-a76e495fb39a73d3.js";import{h as Z}from"./format-a27067f0186e78ac.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$0B as le,$0j as ie,$0t as ce,$0x as M}from"./shared-init-c3bd249cf1eca6d1.js";import{$2a as oe,$2b as ae,$2c as re,$2d as se,$2o as F}from"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$1c as R}from"./shared-init-b281027d465e004f.js";import{$0E as ne,$0L as I,$0M as te,$0a as e,$0b as ee}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3c as B,$3h as m,$3j as X,$3l as L}from"./shared-init-6e12333f12903a62-2.js";var $e=o=>(o.match(/"[^"]*"|'[^']*'|(?:\{[^}]+\}|[^\s])+/g)??[]).map(s=>s.replace(/^(["'])(.*)\1$/,"$2")),$=o=>/^https?:\/\//.test(o.trim()),ge=o=>o.url??[o.command,...(o.args??[]).map(s=>s.replace(/\{((?:runtime|package):[^}]+)\}/g,(r,i)=>`{${o.argumentInputs?.find(c=>c.name===i)?.label??i}}`))].join(" ").trim(),he=o=>o.split("/")[0].split(".").reverse().join("."),ve=o=>[...o?.headers??[],...o?.env??[]].filter(s=>s.secret),ye=o=>o.map(s=>s.name).join(", "),De=[["platform","Platform"],["mcp","MCP server"]],ze={platform:"Sign in with OAuth, and tasks use the account through Coder\u2019s own tools.",mcp:"Search known servers, or paste a URL or command."},be=["default","Default"],He=["read","Read-only"],ke=["write","Read-write"],Ce={ok:{tone:"ok",label:"connected"},authorize:{tone:"warn",label:"not signed in"},reconnect:{tone:"warn",label:"reconnect needed"}};function Ke({row:o,catalog:s}){let r=s.find(c=>c.id===o.provider),i=r?r.name:o.env?o.env:o.url?URL.canParse(o.url)?new URL(o.url).host:o.url:o.command;return e("span",{class:"reach",children:[r?e(O,{brand:r.brand}):null,[i,o.account].filter(Boolean).join(" \xB7 ")]})}function U({kind:o,list:s}){return e(B,{children:s.map(r=>e(C,{label:e("span",{class:"mono",children:r.label??r.name}),hint:r.description??(r.required?"required":"optional"),children:e("input",{name:`${o}:${r.name}`,placeholder:r.placeholder,defaultValue:o==="arg"?r.placeholder:void 0,autocomplete:"off",required:r.required})},r.name))})}function qe({local:o,admin:s,value:r,onChange:i}){return o||!s?null:e(C,{label:"Scope",group:!0,children:e(M,{label:"Scope",options:me,value:r,onChange:i})})}function we({value:o,onChange:s,write:r}){return e(C,{label:"Access",group:!0,children:e(M,{label:"Access",options:r?[be,ke]:[be,He,ke],value:o,onChange:s})})}function Ae({local:o,admin:s,onAdded:r}){let i=N({leaves:!0}),[c,a]=m(s||o?"":"me"),p=(f,u)=>void i.run("add",async()=>{let{authorize:g,...b}=await R.connections.add({...f,...c?{owner:"me"}:{}}).catch(t=>{throw u?.(t),t});if(g)return location.assign(g);r(b)}),d=e(qe,{local:o,admin:s,value:c,onChange:a});return{busy:!!i.pending,add:p,who:d}}function Ue({catalog:o,rows:s,...r}){let i=le(),c=o.filter(l=>l.personal),[a,p]=m(c[0]?.id??""),[d,f]=m("default"),{busy:u,add:g,who:b}=Ae(r),t=c.find(l=>l.id===a),v=s.find(l=>l.provider===a&&l.mine);return e("form",{class:"add-form",method:"post",onSubmit:l=>{l.preventDefault(),t?.connectable&&g({name:t.name,provider:t.id,...d==="default"?{}:{access:d}})},children:[e("div",{class:"add-grid",children:[e(C,{label:"Platform",group:!0,children:e(M,{label:"Platform",options:c.map(l=>[l.id,l.name]),icons:Object.fromEntries(c.map(l=>[l.id,e(O,{brand:l.brand})])),value:a,onChange:p})}),e(we,{value:d,onChange:f}),b]}),t&&!t.connectable?e(pe,{tone:"warning",slim:!0,children:[e(ee,{d:ne}),e("span",{class:"grow",children:["This server has no shared ",t.name," app yet.",r.operator?null:" Ask whoever runs this server to add one."]}),r.operator?e(te,{variant:"outline",size:"sm",href:"/dash/[org]/operator",params:{org:i},children:"Set it up"}):null]}):null,e("div",{class:"add-foot",children:[e("p",{class:"muted grow",children:t?v&&t.connectable?`Connected as ${v.account??"you"}.`:null:"No platform here offers sign-in yet."}),e(I,{type:"submit",disabled:!t?.connectable,loading:u,children:[t?e(O,{brand:t.brand}):null,"Sign in to ",t?.name??"a platform"]})]})]})}function _e(o){let[s,r]=m(""),[i,c]=m(),[a,p]=m(),[d,f]=m(""),[u,g]=m(""),[b,t]=m(!1),[v,l]=m("default"),{busy:Re,add:Ie,who:Fe}=Ae(o),_=L(),D=L(null),w=!u.trim()||$(u),Se=!w||b||ve(a).length>0,z=w||v!=="read"?v:"default",P=ve(a),S=P.find(n=>n.required)??P[0],H=P.filter(n=>n!==S),K=H.some(n=>n.required),Te=[...a?.argumentInputs??[],...a?.env??[],...a?.headers??[]].some(n=>!n.secret),q=n=>{if(!n.trim()){R.mcp.search("").then(y=>y.length&&c(h=>h??{q:n,items:y}),y=>console.error("coder dashboard: known servers",y));return}c({q:n}),R.mcp.search(n.trim()).then(y=>c(h=>h?.q===n?{q:n,items:y}:h)).catch(y=>c(h=>h?.q===n?{q:n,error:Z(y)}:h))},Ee=n=>{r(n),clearTimeout(_.current),(!n.trim()||$(n)||/\s/.test(n.trim()))&&c(void 0),!($(n)||/\s/.test(n.trim()))&&(_.current=setTimeout(()=>q(n),250))},Pe=n=>{p(n),c(void 0),r(n.title),f(n.title),g(ge(n)),t(!1),requestAnimationFrame(()=>D.current?.querySelector("input[name^='arg:'], input[name^='env:'], input[name^='header:'], input[name=key]")?.focus())},Be=n=>{let y=[...new FormData(n)].map(([k,A])=>[k,String(A).trim()]),h=k=>y.find(([A])=>A===k)?.[1]??"",j=k=>Object.fromEntries(y.filter(([A,T])=>A.startsWith(k)&&T).map(([A,T])=>[A.slice(k.length),T])),E=u.trim();if(!d.trim()||!E||K)return;let Le=a?.command?ge(a):void 0,Me=a&&E===Le?[a.command,...a.args??[]]:$e(E),[Ne,...W]=Me.map(k=>k.replace(/\{([^}]+)\}/g,(A,T)=>{let Q=a?.argumentInputs?.find(J=>J.name===T||J.label===T);return Q?h(`arg:${Q.name}`):A})),V=j("env:"),G=j("header:"),Y=w?{url:E,...a?.url===E?{type:a.type}:{},...Object.keys(G).length?{headers:G}:{}}:{command:Ne,...W.length?{args:W}:{},...Object.keys(V).length?{env:V}:{}};a?.description&&(Y.description=a.description);let x=h("key");Ie({name:d.trim(),provider:"mcp",...z==="default"?{}:{access:z},endpoint:Y,...x?{auth:"key",key:x,keyIn:w?{header:h("header")}:{env:h("env")}}:w?{}:{auth:"none"}},k=>{k.needs==="key"&&(t(!0),requestAnimationFrame(()=>D.current?.querySelector("input[name=key]")?.focus()))})};return e("form",{ref:D,class:"add-form",method:"post",onSubmit:n=>{n.preventDefault(),Be(n.currentTarget)},children:[e("div",{class:"registry",onKeyDown:n=>{n.key==="Enter"&&n.preventDefault(),n.key==="Escape"&&c(void 0)},onFocusIn:()=>{!i&&!$(s)&&q(s)},onFocusOut:n=>{n.currentTarget.contains(n.relatedTarget)||c(void 0)},children:[e(ce,{value:s,label:"Search known MCP servers",onInput:Ee}),i?e("div",{class:"registry-pop","aria-live":"polite","aria-busy":!i.items&&!i.error,children:i.error?e("div",{class:"registry-note err",role:"alert",children:[e("span",{children:i.error}),e(I,{variant:"ghost",size:"sm",onMouseDown:n=>n.preventDefault(),onClick:()=>q(i.q),children:"Retry"})]}):i.items?i.items.length?i.items.map(n=>e(ie,{onClick:()=>Pe(n),title:e(B,{children:[e("b",{children:n.title}),n.verified?e("span",{title:`The MCP registry checked that the publisher owns ${he(n.name)}`,children:e(F,{tone:"ok",children:["by ",he(n.name)]})}):null,n.curated?e("span",{title:"In GitHub's reviewed list of MCP servers",children:e(F,{children:"GitHub list"})}):null,e(F,{children:n.type})]}),sub:n.description||n.name},n.name)):e("p",{class:"registry-note",children:"No known server matches. Paste its URL or command below."}):e("div",{class:"registry-note",children:e(se,{label:"Searching known servers",inline:!0,dots:!0,late:!0})})}):null]}),a?.description?e("p",{class:"muted registry-picked",children:a.description}):null,e("div",{class:"add-grid",children:[e(C,{label:"Name",children:e("input",{name:"name",value:d,onInput:n=>f(n.currentTarget.value),placeholder:"Acme docs",autocomplete:"off",required:!0})}),e(C,{label:"URL or command",children:e("input",{name:"target",class:"mono",value:u,onInput:n=>g(n.currentTarget.value),placeholder:"https://mcp.acme.dev/mcp",autocomplete:"off",spellcheck:!1,required:!0})})]}),Te?e("div",{class:"add-grid",children:[e(U,{kind:"arg",list:a?.argumentInputs??[]}),e(U,{kind:"env",list:(a?.env??[]).filter(n=>!n.secret)}),e(U,{kind:"header",list:(a?.headers??[]).filter(n=>!n.secret)})]}):null,H.length?e("p",{class:"muted",role:"note",children:K?`This server needs ${ye(P.filter(n=>n.required))}, and a connection holds one key. Add it in the server's own config instead.`:`A connection holds one key, sent as ${S.name}. Add ${ye(H)} in the server's own config if you use them.`}):null,e("div",{class:"add-grid",children:[e(we,{value:z,onChange:l,write:!w}),Fe]}),Se?e("div",{class:"add-grid",children:[e(C,{label:"API key",hint:w?void 0:"optional",children:e("input",{name:"key",type:"password",placeholder:"acme_live_4f9a\u2026",autocomplete:"off",required:!!w},a?.name)}),w?e(C,{label:"Header",children:e("input",{name:"header",class:"mono",defaultValue:S?.name??"Authorization",placeholder:"Authorization",autocomplete:"off",required:!0},`header:${S?.name}`)}):e(C,{label:"Environment variable",children:e("input",{name:"env",class:"mono",defaultValue:S?.name,placeholder:"ACME_API_KEY",autocomplete:"off"},`env:${S?.name}`)})]}):null,e("div",{class:"add-foot",children:e(I,{type:"submit",disabled:K,loading:Re,children:"Add connection"})})]})}function je({catalog:o,rows:s,local:r,admin:i,operator:c,empty:a,onAdded:p}){let[d,f]=m(o.some(t=>t.personal)?"platform":"mcp"),[u,g]=m(0),b={local:r,admin:i,operator:c,onAdded:t=>{p(t),g(u+1)}};return e(ae,{opened:a,title:"Add a connection",note:"A platform account, or any MCP server",children:[e("div",{class:"conn-add",children:[e(ue,{label:"What to connect",options:De,value:d,onChange:f}),e("p",{class:"muted",children:ze[d]})]}),d==="platform"?e(Ue,{...b,catalog:o,rows:s},u):e(_e,{...b},u)]})}function We({row:o,onSaved:s,onClose:r}){let i=N({leaves:!0}),c=!!i.pending,a=L(null);return X(()=>a.current?.focus(),[]),e("form",{class:"add-row conn-key",method:"post",onSubmit:p=>{p.preventDefault();let d=String(new FormData(p.currentTarget).get("key")??"").trim();d&&i.run("save",async()=>s(await R.connections.update(o.id,{key:d})))},children:[e("input",{name:"key",type:"password","aria-label":`New key for ${o.name}`,placeholder:`New key for ${o.name}, then Enter`,ref:a,autocomplete:"off",required:!0}),e(I,{type:"submit",loading:c,children:"Save key"}),e(I,{variant:"ghost",disabled:c,onClick:r,children:"Cancel"})]})}function gn({first:o,catalog:s,local:r,admin:i,operator:c}){let[a,p]=m(o.filter(t=>t.provider!=="env")),[d,f]=m(),u=N({leaves:!0}),g=t=>p(v=>v.some(l=>l.id===t.id)?v.map(l=>l.id===t.id?t:l):[...v,t]),b=t=>{if(t.auth==="key")return f(t);u.run(t.id,async()=>location.assign((await R.connections.authorize(t.id)).url))};return e(B,{children:[e(je,{catalog:s,rows:a,local:r,admin:i,operator:c,empty:!o.some(t=>t.provider!=="env"),onAdded:g}),e(oe,{title:"Connections",count:a.length,children:[a.length?e("div",{class:"table-scroll",children:e("table",{class:"rows settings conns",children:e("tbody",{children:a.map(t=>e(fe,{title:t.name,badges:e("span",{class:"conn-badges",children:[e(F,{children:t.owner?t.mine?"yours":"member":"workspace"}),e(F,{children:t.access==="read"?"Read-only":t.access?"Read-write":"Default"}),e(F,{tone:Ce[t.status].tone,children:Ce[t.status].label})]}),sub:e(Ke,{row:t,catalog:s}),actions:t.status==="ok"?null:e(I,{variant:"outline",size:"sm",loading:u.pending===t.id,onClick:()=>b(t),children:"Reconnect"}),remove:{title:`Remove ${t.name}?`,body:"Tasks stop using it, and its key or sign-in is deleted.",onRemove:()=>R.connections.remove(t.id).then(()=>p(v=>v.filter(l=>l.id!==t.id)),de)}},t.id))})})}):e(re,{title:"No connections yet",children:"Add one above so tasks can use another service, like an issue tracker or a database."}),d?e(We,{row:d,onSaved:t=>{g(t),f(void 0)},onClose:()=>f(void 0)}):null]})]})}export{gn as ConnectionsList};
@@ -1 +0,0 @@
1
- "use client";import{b as u,d as g}from"./platform-actions-70600c9943320152.js";import"./copy-bdc60bdafe336316.js";import"./segmented-0b6dc6b93c35e0f5.js";import"./outcome-dialog-fde11a52c282301d.js";import"./confirm-a78147b6ecef3847.js";import"./field-bb8191aa02d07282.js";import{a as l}from"./action-a76e495fb39a73d3.js";import"./format-a27067f0186e78ac.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$2d as f}from"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$1c as c}from"./shared-init-b281027d465e004f.js";import{$0L as m,$0a as e}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3h as t,$3j as p}from"./shared-init-6e12333f12903a62-2.js";function v({integration:r,state:i,info:o}){let[d,C]=t(!1),[b,a]=t(!0),[n,h]=t(),s=()=>c.apps.start(r,i);return p(()=>{u(o?.create,i,s).then(h).catch(y=>{C(!0),l(y)})},[]),d?null:n?b?e(g,{integration:r,step:n,start:s,unreachable:o?.unreachable,onClose:()=>a(!1)}):e(m,{onClick:()=>a(!0),children:n.submit}):e(f,{label:`Opening ${o?.name??r}`})}export{v as CreateLink};
@@ -1 +0,0 @@
1
- "use client";import{a as ne}from"./combo-702c94817bf6ac17.js";import{a as J}from"./copy-bdc60bdafe336316.js";import{d as V,m as Q}from"./model-options-8d2170eebe0d061d.js";import{a as X}from"./types-3eca2c7f47c46054.js";import{d as Z,e as ee,f as K}from"./list-2773686bf8df64c7.js";import"./confirm-a78147b6ecef3847.js";import{a as A,b as B}from"./action-a76e495fb39a73d3.js";import{h as D}from"./format-a27067f0186e78ac.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$0B as W,$0a as z,$0j as H,$0x as j}from"./shared-init-c3bd249cf1eca6d1.js";import{$2a as L,$2d as T,$2o as G}from"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import{$1a as q}from"./shared-init-c3bd249cf1eca6d1.js";import{$1c as f,$1e as $}from"./shared-init-b281027d465e004f.js";import{$0L as I,$0a as e,$0b as U,$0u as x}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3c as E,$3h as b,$3j as _,$3l as R}from"./shared-init-6e12333f12903a62-2.js";var O=[{id:"claude",name:"Claude",key:"ANTHROPIC_API_KEY",signIn:"Claude"},{id:"codex",name:"Codex",key:"OPENAI_API_KEY",signIn:"ChatGPT"}],ie=[...O.map(t=>t.key),...Q.flatMap(t=>t.envKey||[])];function ae({keys:t,admin:u,focus:p,ask:k}){let[c,h]=b(O.find(l=>l.id===p)?.key??"OPENAI_API_KEY"),[m,C]=b(u?"workspace":"personal"),o=R(null),r=B({toast:"Not saved",refresh:!0});return _(()=>{p&&o.current?.focus()},[]),e("form",{class:"cred-add",method:"post",onSubmit:l=>{l.preventDefault();let g=l.currentTarget,y=c.trim(),v=String(new FormData(g).get("key")??"").trim();if(!y||!v)return;let S=()=>void r.run("add",async()=>{await f.credentials.add({env:{[y]:v},...m==="workspace"?{workspace:!0}:{}}),g.reset(),h("OPENAI_API_KEY")});t.some(w=>w.name===y&&w.scope===m)?k(Z(y,m),S):S()},children:[e(ne,{label:"Variable",name:"name",class:"mono cred-var",options:ie,placeholder:"OPENAI_API_KEY",value:c,onChange:h}),e("input",{type:"password",name:"key",autocomplete:"off","aria-label":"API key",placeholder:"API key",ref:o,"aria-busy":!!r.pending,required:!0}),u?e(j,{label:"Who can use this key",options:V,value:m,onChange:C}):null,e(I,{type:"submit",loading:!!r.pending,children:"Add"})]})}function re({login:t,engine:u,onChange:p,onDone:k,onError:c,onCancel:h}){let[m,C]=b(),[o,r]=b();$(t.id&&t.state!=="done"&&t.state!=="failed"?a=>f.credentials.loginStatus(t.id).then(i=>{if(!a.aborted){if(i.state==="done")return k();if(i.state==="failed")return c(i.error??"Sign-in failed. Try again.");t.state==="verifying"&&i.state==="open"&&i.url===o||p(i)}}).catch(i=>{if(a.aborted)return;let P=i.status;if(P===void 0||P>=500)return console.error("coder dashboard: sign-in status",i);c(D(i))}):void 0,800,[t.id]);let l=a=>{r(t.url),p({...t,state:"verifying"}),f.credentials.loginCode(t.id,a).catch(i=>c(D(i)))},g=!!t.url,y=t.state==="verifying",v=!!t.url&&m===t.url,S=!!o&&t.state==="open"&&t.url!==o,w=`Open ${u.signIn} sign-in`;return e(q,{class:"sign-in",title:`Sign in with ${u.signIn}`,cancelDanger:!0,focus:"actions",onClose:h,actions:e(I,{href:t.url,external:!0,variant:v?"outline":"primary",loading:!g,autoFocus:!0,onClick:()=>C(t.url),children:v?"Open again":w}),children:[e("p",{class:"muted",children:"Coder signs in on a private machine and keeps the sign-in for your tasks."}),e("ol",{class:"steps-list sign-steps",role:"status",children:[e("li",{children:g?"The sign-in machine is ready.":e(T,{label:"Starting the sign-in machine\u2026",inline:!0})}),t.engine==="codex"?e(E,{children:[e("li",{children:["Open the sign-in page and enter this code.",t.code?e("span",{class:"code-box",children:[t.code,e(J,{value:t.code,label:"Copy code"})]}):null]}),e("li",{children:g?e(T,{label:"Waiting for your approval on the sign-in page\u2026",inline:!0}):"Approve it there."})]}):e(E,{children:[e("li",{children:["Open the ",u.signIn," sign-in and approve it."]}),e("li",{children:[S?e("span",{class:"rejected",role:"alert",children:"That code did not work. Open the sign-in again and paste the new code."}):"Paste the code it shows.",e("input",{class:"mono",autocomplete:"off","aria-label":`Code from the ${u.signIn} sign-in page`,placeholder:"Paste the code from the sign-in page",disabled:t.state!=="open",onPaste:a=>{let i=a.clipboardData?.getData("text").trim();i&&(a.preventDefault(),a.currentTarget.value=i,l(i))},onKeyDown:a=>{let i=a.currentTarget.value.trim();a.key==="Enter"&&i&&l(i)}},t.url),y?e(T,{label:"Checking the code\u2026",inline:!0}):null]})]})]})]})}function Te({status:t}){let[u,p]=b(t),k=B(),[c,h]=b(),m=k.pending??(c?`${c.engine}:login`:"");$(c?async o=>{let r=await f.engines.status();o.aborted||(p(r),(r[c.engine]?.signedIn||Date.now()>c.until)&&h(void 0))}:void 0,2e3,[c]);let C=(o,r)=>void k.run(`${o}:${r}`,async()=>{p(await f.engines[r](o)),r==="login"&&h({engine:o,until:Date.now()+5*6e4})});return e(E,{children:[O.map(o=>{let r=u[o.id],l=m===`${o.id}:login`;return e(L,{title:o.name,children:e("div",{class:"cred-new",children:[r?.signedIn?e("span",{class:"signed grow",children:[e(U,{d:x}),"Signed in to ",o.name]}):l?e("span",{class:"grow muted",children:["Finish signing in in the window ",o.name," opened."]}):e("span",{class:"grow muted",children:"Not signed in on this machine."}),r?.signedIn?e(I,{variant:"secondary",danger:!0,size:"sm",loading:m===`${o.id}:logout`,onClick:()=>C(o.id,"logout"),children:"Sign out"}):e(I,{variant:"secondary",size:"sm",loading:l,disabled:!!m,onClick:()=>C(o.id,"login"),children:"Sign in"}),l?e(I,{variant:"ghost",size:"sm",onClick:()=>h(void 0),children:"Cancel"}):null]})},o.id)}),e("p",{class:"muted",children:"On the local server, custom models read their key variable from this machine's environment."})]})}function Be({rows:t,me:u,focus:p}){let k=z(),c=W(),[h,m]=b({}),[C,o]=b(!1),r=X(u),l=O.filter(n=>u.user&&u.server?.subscriptions?.[n.id]),g=t.filter(n=>!n.subscription),y=B({refresh:!0}),v=ee(),S=`coder-logins:${c}`,w=()=>{try{return JSON.parse(sessionStorage.getItem(S)??"{}")}catch{return{}}},a=(n,s)=>{m(d=>({...d,[n]:s}));try{let d={...w(),[n]:s?.id||void 0};sessionStorage.setItem(S,JSON.stringify(d))}catch{}},i=R(new Set);_(()=>{for(let[n,s]of Object.entries(w()))f.credentials.loginStatus(s).then(d=>{if(!i.current.has(n)){if(d.state==="done")return P(n);if(d.state==="failed")return a(n),A(d.error??"Sign-in failed. Try again.");a(n,d)}}).catch(()=>{i.current.has(n)||a(n)})},[]);let P=n=>{a(n),k.refresh()},te=n=>{i.current.add(n),a(n,{id:"",engine:n,state:"starting"}),f.credentials.login(n).then(s=>a(n,s)).catch(s=>{a(n),A(s)})},M=n=>t.find(s=>s.subscription&&s.name===n),Y=(n,s)=>M(n.id)?v.ask(`Replace your ${n.name} subscription?`,s):s(),F=n=>y.run(`remove:${n.scope}/${n.name}`,()=>f.credentials.remove(n.name,{workspace:n.scope==="workspace"}));return e(E,{children:[l.length?e(L,{title:"Subscriptions",children:e("div",{class:"cred-engine",children:[e("p",{class:"muted cred-note",children:"Personal only: a subscription runs your own tasks and your 1:1 DMs with agents, never the workspace's shared threads."}),e("table",{class:"rows creds",children:e("tbody",{children:l.map(n=>{let s=M(n.id),d=h[n.id],se=[s?.account?.email,s?.account?.plan,s?.masked];return e(K,{title:n.name,sub:s?se.filter(Boolean).join(" \xB7 "):void 0,actions:e(E,{children:[e(I,{...s?{variant:"ghost",size:"sm"}:{},autoFocus:p===n.id&&!s,disabled:!!d,onClick:()=>Y(n,()=>te(n.id)),children:s?"Sign in again":`Sign in with ${n.signIn}`}),d?e(re,{login:d,engine:n,onChange:N=>a(d.engine,N),onDone:()=>P(d.engine),onError:N=>{a(d.engine),A(N)},onCancel:()=>{a(d.engine),d.id&&f.credentials.cancelLogin(d.id).catch(A)}}):null]}),alignMenu:!0,menu:n.id==="claude"?e(H,{title:"Paste a setup token",onClick:()=>o(!0)}):void 0,remove:s?{label:"Sign out",title:`Sign out of ${n.name}?`,body:"Tasks that use it stop running.",onRemove:()=>F(s)}:void 0},n.id)})})}),C?e("div",{class:"cred-new",children:e("form",{class:"cred-add",method:"post",onSubmit:n=>{n.preventDefault();let s=String(new FormData(n.currentTarget).get("token")??"");s.trim()&&Y(O[0],()=>void y.run("token",async()=>{await f.credentials.add({env:{CLAUDE_CODE_OAUTH_TOKEN:s.trim()}}),o(!1)}))},children:[e("input",{type:"password",name:"token",autocomplete:"off","aria-label":"Your claude setup-token",placeholder:"Paste a claude setup-token",ref:n=>n?.focus(),required:!0}),e(I,{type:"submit",loading:y.pending==="token",children:"Add"})]})}):null]})}):null,e(L,{title:"API keys",count:g.length||void 0,children:e("div",{class:"cred-engine",children:[e("p",{class:"muted cred-note",children:["Tasks read each key as its variable. Claude uses ANTHROPIC_API_KEY, Codex uses OPENAI_API_KEY, and a"," ",e("a",{class:"link",href:`/dash/${c}/settings/models`,children:"custom model"})," ","uses the one it names."]}),g.length?e("table",{class:"rows creds",children:e("tbody",{children:g.map(n=>e(K,{title:n.name,badges:e(G,{children:n.scope}),sub:n.masked,remove:n.scope==="personal"||r?{title:`Remove ${n.name}?`,body:"Tasks that use it stop running.",onRemove:()=>F(n)}:void 0},`${n.scope}/${n.name}`))})}):null,e("div",{class:"cred-new",children:e(ae,{keys:g,admin:r,focus:l.some(n=>n.id===p)?"":p,ask:v.ask})})]})}),v.dialog]})}export{Be as CredentialsList,Te as EngineLogins};
@@ -1 +0,0 @@
1
- import{a as e}from"./field-bb8191aa02d07282.js";import{$0a as l,$0e as p,$0g as f}from"./shared-init-c3bd249cf1eca6d1.js";import{$2j as c}from"./shared-init-c3bd249cf1eca6d1.js";import{$0L as u,$0a as t,$0b as s,$0j as i}from"./shared-init-b281027d465e004f.js";import{$3c as n}from"./shared-init-6e12333f12903a62-2.js";function x({page:o,from:d,to:g,today:m,on:h}){let y=l();return t(c,{class:h?"custom on":"custom",align:"left",summary:t(n,{children:["Custom",t(s,{d:i})]}),children:t("form",{class:"date-pop",onSubmit:r=>{r.preventDefault();let a=new FormData(r.currentTarget),[S,T]=[String(a.get("from")),String(a.get("to"))].sort();r.currentTarget.closest("[popover]")?.hidePopover(),y.push(o.href,{params:p(o).params,search:f(o.search,{from:String(S),to:String(T)}),scroll:!1})},children:[t(e,{label:"From",children:t("input",{type:"date",name:"from",defaultValue:d,max:m,required:!0})}),t(e,{label:"To",children:t("input",{type:"date",name:"to",defaultValue:g,max:m,required:!0})}),t(u,{type:"submit",size:"sm","data-keep":!0,children:"Apply"})]})})}export{x as a};
@@ -1,6 +0,0 @@
1
- "use client";import{a as We,b as Ve,c as Ge,d as Ue}from"./agent-pills-4d3c6a2aa9eb1522.js";import{b as Qe}from"./instructions-2d9fbcbfadac4f40.js";import{a as O}from"./segmented-0b6dc6b93c35e0f5.js";import{a as ze}from"./agent-toggle-d7d27123f2070f18.js";import{a as xe}from"./connect-repositories-7770ab805160028d.js";import{b as Me,c as te,f as se,h as ne,i as Fe,j as qe,k as He,l as je}from"./model-options-8d2170eebe0d061d.js";import{a as Ke}from"./notice-d14fdac28139c0a8.js";import{b as _e}from"./types-3eca2c7f47c46054.js";import{a as E}from"./field-bb8191aa02d07282.js";import{a as V,b as G}from"./action-a76e495fb39a73d3.js";import{g as q}from"./format-a27067f0186e78ac.js";import{$3j as Oe,$3k as ee}from"./shared-init-c3bd249cf1eca6d1.js";import{$0A as De,$0B as W,$0a as _,$0h as Re,$0i as Pe,$0j as X,$0o as Be,$0t as K,$0x as $e,$0z as Z}from"./shared-init-c3bd249cf1eca6d1.js";import{$2b as Ae,$2d as J,$2k as Ee,$2o as D,$2p as Ne,$2q as Te,$2r as Le}from"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import{$1c as $}from"./shared-init-b281027d465e004f.js";import{$0C as Se,$0L as A,$0M as Ie,$0a as e,$0b as H,$0e as ye,$0j as ke,$0r as j,$0w as Ce,$0z as Y}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3c as I,$3h as k,$3j as F,$3l as we}from"./shared-init-6e12333f12903a62-2.js";var U=2,Ye=({name:s,platform:i})=>e("li",{children:[e("b",{children:["@",s]})," on ",i]},`${i} ${s}`);function Je({agent:s,actions:i,back:v}){return e(I,{children:[e(Pe,{}),e("header",{class:"hero",children:[e("span",{class:"hero-mark",children:q(s.name)}),e("div",{class:"grow",children:[v,e("div",{class:"title-row",children:[e("h1",{children:s.name}),e(Ue,{agent:s}),s.settings?.disabled?e(ze,{agent:s,link:!0}):null]}),e("p",{class:"lead",children:s.description??"No description yet."})]}),i||s.handles?.length?e("div",{class:"hero-side",children:[i?e("div",{class:"actions",children:i}):null,s.handles?.length?e("ul",{class:"handles",title:"Mention it on its platforms by these names",children:[s.handles.slice(0,U).map(Ye),s.handles.length>U?e("li",{children:e(Ee,{label:`+${s.handles.length-U} more`,children:e("ul",{class:"handles",children:s.handles.slice(U).map(Ye)})})}):null]}):null]}):null]})]})}function Xe({port:s}){return e(Ae,{title:"Receive platform events",note:`Expose port ${s} so platforms can reach this server`,open:"Show",children:e("div",{class:"guide",children:[e("p",{children:["Platforms reach this server through a public address. Expose port ",s," with one of these."]}),e("ul",{class:"steps-list",children:[e("li",{children:e("code",{children:["ngrok http ",s]})}),e("li",{children:e("code",{children:["cloudflared tunnel --url http://localhost:",s]})}),e("li",{children:"VS Code's Ports panel, with the port's visibility set to Public"})]}),e("p",{children:["Then restart with ",e("code",{children:"PUBLIC_URL=<tunnel URL> coder server serve"}),". The tunnel serves only webhooks and app setup, never this dashboard."]})]})})}var Ze=/^[\w.-]+\/[\w.-]+$/,wt=s=>/^[0-9a-f]{12,}$/i.test(s)?s.slice(0,7):s;function yt({preview:s,onDone:i}){let[v,m]=k(new Set),h=G({leaves:!0});if(s.failed)return null;if(!s.agents)return e(J,{label:`Reading ${s.repo}`,h:180,late:!0});if(!s.agents.length)return e("p",{class:"muted",children:[s.repo," has no agents yet. Add a folder per agent under ",e("code",{children:".coder/agents"}),", with an ",e("code",{children:"agent.json"})," and a ",e("code",{children:"system.md"}),"."]});let r=s.agents.filter(o=>!o.taken&&!v.has(o.id)).map(o=>o.id);return e("form",{class:"import-agents",onSubmit:async o=>{o.preventDefault(),r.length&&await h.run("import",async()=>i((await $.agents.import(s.repo,void 0,r)).imported))},children:[e("ul",{class:"picks-list",children:s.agents.map(o=>e("li",{children:e("label",{class:"check",children:[e("input",{type:"checkbox",checked:!o.taken&&!v.has(o.id),disabled:o.taken,onChange:b=>{let d=new Set(v);b.currentTarget.checked?d.delete(o.id):d.add(o.id),m(d)}}),e("span",{children:[e("b",{children:o.name})," ",e(Le,{value:o.id}),o.version?e(D,{children:["v",o.version,o.commit?` \xB7 ${wt(o.commit)}`:""]}):null,e("small",{children:o.taken?"An agent with this id already exists here.":o.description??"No description."}),o.warnings?.map(b=>e("small",{role:"status",children:b},b))]})]})},o.id))}),e("p",{class:"muted",children:["Each push to ",s.repo," that changes an agent publishes its new version here."]}),e("div",{class:"form-actions end",children:e(A,{type:"submit",disabled:!!h.pending||!r.length,children:["Import ",r.length===1?"1 agent":`${r.length} agents`]})})]})}function et({connected:s,connectLabel:i,tunnel:v,port:m}){let h=_(),r=W(),[o,b]=k(),[d,x]=k(""),[R,P]=k(),y=we("");F(()=>{s&&$.repositories.list().then(c=>b(c.map(T=>T.repo))).catch(c=>{b([]),V(c)})},[]);let f=c=>{y.current=c,P({repo:c}),$.agents.preview(c).then(({agents:T})=>y.current===c&&P({repo:c,agents:T})).catch(T=>{y.current===c&&(P({repo:c,failed:!0}),V(T))})},L=c=>c.length===1?h.push("/dash/[org]/agents/[slug]",{params:{org:r,slug:c[0]}}):h.push("/dash/[org]/agents",{params:{org:r}}),z=d.trim().toLowerCase(),n=(o??[]).filter(c=>c.toLowerCase().includes(z)),w=Ze.test(d.trim())&&!o?.includes(d.trim())?d.trim():"";return e("div",{class:"import",children:[e("div",{class:"import-repos",children:[s?e(K,{value:d,label:"Search repositories or type owner/repo",onInput:x}):e(I,{children:[e(Ke,{children:[e(H,{d:j}),e("span",{class:"grow",children:"Connect to list your repositories here."}),e(A,{variant:"outline",size:"sm",onClick:()=>void xe(`/dash/${r}/agents/new?template=import`).catch(V),children:i})]}),e("form",{class:"with-btn",onSubmit:c=>{c.preventDefault(),Ze.test(d.trim())&&f(d.trim())},children:[e("input",{class:"mono","aria-label":"Repository",placeholder:"owner/repo",autocomplete:"off",value:d,onInput:c=>x(c.currentTarget.value)}),e(A,{type:"submit",variant:"outline",children:"Look up"})]})]}),s?e("div",{class:"repo-list scroll-box",role:"list",children:o?e(I,{children:[w?e(X,{"aria-pressed":R?.repo===w,icon:j,title:w,onClick:()=>f(w)}):null,n.map(c=>e(X,{"aria-pressed":R?.repo===c,icon:j,title:c,onClick:()=>f(c)},c)),!n.length&&!w?e(Be,{children:"No repository matches. Type owner/repo to use another."}):null]}):e(J,{label:"Loading repositories",h:240,late:!0})}):null,!s&&v?e(Xe,{port:m}):null]}),e("div",{class:"import-preview",children:R?e(I,{children:[e("h3",{children:["Agents in ",R.repo]}),e(yt,{preview:R,onDone:L},R.repo)]}):e("p",{class:"muted",children:"Pick a repository to see the agents in its .coder/agents folder."})})]})}var tt=[["Brisk","Calm","Clever","Keen","Nimble","Quiet","Steady","Swift","Tidy","Bright","Patient","Lucky"],["Heron","Otter","Falcon","Lynx","Badger","Relay","Beacon","Compass","Lantern","Pilot","Sparrow","Harbor"]],st=s=>s[Math.floor(Math.random()*s.length)],nt=()=>`${st(tt[0])} ${st(tt[1])}`;var ot="never asks you; anything outside its sandbox fails",kt={"read-only":`reads the repository and changes nothing; ${ot}`,"workspace-write":`edits files inside the repository; ${ot}`,auto:"edits files, reaches the network, and asks you when it needs more"},Ct=te.map(([s,i])=>s==="auto"?[s,e(I,{children:[i," ",e(D,{tone:"acc",children:"escalates"})]})]:[s,i]),St=[["read","Read-only"],["write","Read-write"]],It={read:"reads its platforms and connections; replies and reacts in the conversation",write:"also changes things there, like opening pull requests"},Rt=[["blank","Blank","start from nothing"],["helper","Slack helper","answers questions in chat"],["reviewer","GitHub reviewer","reviews pull requests"]],Pt=6,At=`Review each pull request for bugs, risky changes and missing tests.
2
- Comment on the lines that matter and keep it short.
3
- When mentioned, answer questions about the code and cite file paths.`,Et=`Answer the team's questions in the thread.
4
- Read the code before you answer, cite file paths, and say when you are unsure.
5
- If asked to change code, describe the change and stop.`,rt=s=>s.toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40);function Nt(s,i,v){let m=s?.definition,h={name:s?.name??i,id:s?.id??rt(i),description:s?.description??m?.description??"",platforms:[],events:{},match:{},access:m?.access??"write",permissions:m?.permissions??"auto",systemPrompt:s?.systemPrompt??"",engine:m?.engine??"",model:m?.model??"",effort:m?.effort??""};for(let[r,o]of Object.entries(m?.integrations??{}))if(v.some(b=>b.id===r)&&(h.platforms.push(r),h.events[r]=_e(o.events),h.match[r]={},o.events&&!Array.isArray(o.events)))for(let[b,d]of Object.entries(o.events))d&&typeof d=="object"&&"match"in d&&(h.match[r][b]=String(d.match));return h}var at=s=>Object.entries(s?.events??{}).filter(([,i])=>!i.noisy).map(([i])=>i);function it(s,i){let v=m=>{let h=i.filter(m).map(r=>r.id);return{platforms:h,events:Object.fromEntries(h.map(r=>[r,at(i.find(o=>o.id===r))])),match:{}}};return s==="reviewer"?{...v(m=>"pull_request"in m.events),description:"Reviews pull requests and answers questions about the code.",systemPrompt:At}:s==="helper"?{...v(m=>m.id==="slack"),description:"Answers the team's questions in chat.",systemPrompt:Et}:{platforms:[],events:{},match:{},description:"",systemPrompt:""}}function Tt(s,i,v){let m=s?.events&&!Array.isArray(s.events)?s.events:{},h=Object.fromEntries(i.map(r=>{let o=m[r],b=v[r]?.trim(),d=o&&typeof o=="object"?{...o}:{};return b?d.match=b:delete d.match,Object.keys(d).length?[r,d]:[r,o===void 0||typeof o=="object"?!0:o]}));return Object.values(h).every(r=>r===!0)?i:h}function Qs({catalog:s,agent:i,suggested:v="",section:m,models:h,defaults:r={engine:"",engines:{},builtin:{}},template:o,connected:b=!1,connectLabel:d="Connect",tunnel:x=!1,port:R=""}){let P=_(),y=W(),f=!i,[L,z]=k(o??"blank"),[n,w]=k(()=>({...Nt(i,v,s),...f?it(o??"blank",s):{}})),[c,T]=k(!1),[oe,lt]=k("write"),[ie,ct]=k(""),re=G({toast:f?"Agent not created":"Not published",leaves:!0}),dt=!!re.pending,B=(t,l)=>w(p=>({...p,[t]:l})),ae=(t,l)=>Object.entries(r.builtin[t]??{}).find(([,p])=>p===l)?.[0]??l,M=n.engine||r.engine,Q=r.engines[M]??{},pt=[se[r.engine]??r.engine,ae(r.engine,r.engines[r.engine]?.model)].filter(Boolean).join(" \xB7 "),le=te.find(([t])=>t===n.permissions)?.[1].toLowerCase(),mt=f?"you can change these later in its settings":(n.engine||n.model||n.effort?[se[M]??M,n.model||ae(M,Q.model),n.effort||Q.effort,le]:["Default models",le]).filter(Boolean).join(" \xB7 ");F(()=>{if(!m)return;let t=document.getElementById(`agent-${m}`);t?.scrollIntoView({block:"start"}),t?.querySelector("input, textarea, button")?.focus({preventScroll:!0})},[]);let ce=t=>{z(t),t!=="import"&&w(l=>({...l,...it(t,s)}))},de=t=>w(l=>({...l,name:t,...f&&!c?{id:rt(t)}:{}})),ut=(t,l)=>w(p=>{let g=Object.keys(s.find(a=>a.id===t)?.events??{});return{...p,platforms:l?s.map(a=>a.id).filter(a=>a===t||p.platforms.includes(a)):p.platforms.filter(a=>a!==t),events:l&&!p.events[t]?.length?{...p.events,[t]:at(s.find(a=>a.id===t))}:p.events}}),ht=(t,l,p)=>w(g=>{let a=g.events[t]??[],u=p?g.match:{...g.match,[t]:{...g.match[t],[l]:""}};return{...g,events:{...g.events,[t]:p?[...new Set([...a,l])]:a.filter(C=>C!==l)},match:u}}),ft=(t,l,p)=>w(g=>({...g,match:{...g.match,[t]:{...g.match[t],[l]:p}}})),gt=async()=>{let t=n.platforms.find(u=>!n.events[u]?.length);if(t)return ee("Not published",`Pick at least one event on ${t}, or turn ${t} off.`);let l={};for(let u of n.platforms)l[u]={events:Tt(i?.definition?.integrations?.[u],n.events[u]??[],n.match[u]??{})};let p={...i?.definition,integrations:l,permissions:n.permissions,access:n.access};for(let u of["name","description","engine","model","effort"]){let C=n[u].trim();C?p[u]=C:delete p[u]}let g=f?n.id:i.id,a=n.name.trim();await re.run("publish",async()=>{let u=i?.files,{apps:C=[]}=await $.agents.put(g,{definition:p,...u?{files:u}:{},systemPrompt:n.systemPrompt,...a?{name:a}:{},...n.description.trim()?{description:n.description.trim()}:{}});for(let S of C){let be=s.find(bt=>bt.id===S.integration)?.name??S.integration;S.updated&&Oe(`${be} app updated`,`${S.name} now matches the agent.`,"success"),S.error&&ee(`${be} app not updated`,S.error)}let ve=C.filter(S=>S.drift).map(S=>S.id);ve.length?P.push("/dash/[org]/agents/[slug]/platforms",{params:{org:y,slug:g},search:{update:ve.join(",")}}):f&&n.platforms.length?P.push("/dash/[org]/agents/[slug]/platforms",{params:{org:y,slug:g}}):P.push("/dash/[org]/agents/[slug]",{params:{org:y,slug:g}})})},pe=e(I,{children:[f?e(A,{variant:"outline","aria-pressed":L==="import",onClick:()=>ce("import"),children:"Import from repo"}):null,f?null:e(Ie,{variant:"ghost",href:"/dash/[org]/agents/[slug]",params:{org:y,slug:i.id},children:"Cancel"}),e(A,{type:"submit",leftIcon:f?Y:Ce,disabled:!n.name.trim()||L==="import",loading:dt,children:f?"Create agent":"Publish new version"})]}),me=f?e(De,{...Re.newAgent,back:e(Z,{href:"/dash/[org]/agents",params:{org:y},label:"Agents"}),actions:pe}):e(Je,{agent:i,back:e(Z,{href:"/dash/[org]/agents/[slug]",params:{org:y,slug:i.id},label:i.name}),actions:pe}),ue=f?e("div",{class:"templates",role:"radiogroup","aria-label":"Start from",children:Rt.map(([t,l,p])=>e("button",{type:"button",role:"radio","aria-checked":L===t,class:"tile",onClick:()=>ce(t),children:[e("b",{children:l}),e("small",{children:p})]},t))}):null;if(L==="import"&&f)return e("div",{class:"agent-new",children:[me,ue,e(et,{connected:b,connectLabel:d,tunnel:x,port:R})]});let vt=ie.trim().toLowerCase(),he=s.filter(t=>`${t.id} ${t.description}`.toLowerCase().includes(vt)),fe=t=>!!t.featured||n.platforms.includes(t.id),ge=[...he.filter(fe),...he.filter(t=>!fe(t))];return e("form",{class:"agent-new",onSubmit:t=>{t.preventDefault(),gt()},children:[me,ue,e("div",{class:"agent-form",children:[e("div",{class:"agent-main",children:[e("section",{id:"agent-name",class:"form-part",children:[e("h2",{children:"Name and description"}),e("div",{class:"fields",children:[e(E,{label:"Name",hint:"its handle on every platform",children:e("span",{class:"with-btn",children:[e("input",{name:"name",required:!0,value:n.name,onInput:t=>de(t.currentTarget.value)}),f?e(A,{variant:"outline",leftIcon:Se,title:"Suggest another name",onClick:()=>de(nt()),children:"Suggest"}):null]})}),f?e(E,{label:"Id",hint:"the folder and command name",children:e("input",{class:"mono",name:"id",required:!0,pattern:"[a-z0-9][a-z0-9_\\-]*",autocomplete:"off",value:n.id,onInput:t=>{T(!0),B("id",t.currentTarget.value)}})}):e("div",{class:"field",children:[e("span",{children:["Id ",e("small",{children:"fixed once created"})]}),e("p",{class:"fixed mono",children:i.id})]})]}),e(E,{label:"Description",hint:"optional, shown in lists and added to the prompt",children:e("input",{name:"description",maxLength:240,placeholder:"Answers engineering questions about acme/app.",value:n.description,onInput:t=>B("description",t.currentTarget.value)})})]}),e("section",{id:"agent-instructions",class:"form-part",children:[e("div",{class:"part-head",children:[e("h2",{children:"Instructions"}),e(O,{label:"Instructions view",options:[["write","Write"],["preview","Preview"]],value:oe,onChange:lt})]}),oe==="write"?e("textarea",{name:"systemPrompt",rows:10,"aria-label":"Instructions",placeholder:`Markdown. The system prompt every task starts from.
6
- You answer questions about acme/app from its source. Cite file paths.`,value:n.systemPrompt,onInput:t=>B("systemPrompt",t.currentTarget.value)}):e("div",{class:"body md md-preview",children:n.systemPrompt.trim()?Qe(n.systemPrompt):e("p",{class:"muted",children:"Nothing written yet."})})]}),e("section",{id:"agent-platforms",class:"form-part",children:[e("div",{class:"part-head",onKeyDown:t=>t.key==="Enter"&&t.preventDefault(),children:[e("h2",{children:"Handles"}),s.length>Pt?e(K,{value:ie,label:"Search platforms",onInput:ct}):null]}),e("p",{class:"muted",children:["Each platform becomes the agent's handle there: its own app, set up on the next page, where ",e("span",{class:"semi",children:"@mentions"})," and events start tasks. The dashboard, the CLI and the SDK can always start it."]}),e("p",{class:"muted",children:[e("b",{children:"Connections"})," are separate and shared by all agents: add as many as tasks need, like an API key, an MCP server or a member's own account, in"," ",e(ye,{class:"link",href:"/dash/[org]/settings/[tab]",params:{org:y,tab:"connections"},children:"Settings"}),"."]}),e("ul",{class:"listen",children:[ge.map(t=>{let l=n.platforms.includes(t.id),p=n.events[t.id]??[],g=Object.entries(t.events);return e("li",{class:l?"on":void 0,children:[e("label",{class:"listen-row",children:[e("span",{class:"pf-mark","aria-hidden":"true",children:e(We,{brand:t.brand})}),e("span",{class:"grow",children:[e("b",{children:t.name}),e("small",{title:t.description,children:t.description})]}),e("input",{type:"checkbox",role:"switch",class:"switch",name:"platform",value:t.id,checked:l,onChange:a=>ut(t.id,a.currentTarget.checked)})]}),l?e("div",{class:"events",children:[e(Te,{label:`What wakes it on ${t.id}`,children:g.map(([a,u])=>{let C=p.includes(a);return e(Ne,{"aria-pressed":C,title:u.description,onClick:()=>ht(t.id,a,!C),children:a.replace(/_/g," ")},a)})}),g.filter(([a,u])=>u.noisy&&p.includes(a)).map(([a])=>e("label",{class:"match",children:[e("span",{children:a.replace(/_/g," ")}),e("input",{class:"mono",name:`match:${t.id}:${a}`,placeholder:"only when the text matches, like ^help\\b","aria-label":`Text filter for ${a} on ${t.id}`,value:n.match[t.id]?.[a]??"",onInput:u=>ft(t.id,a,u.currentTarget.value)})]},a))]}):null]},t.id)}),ge.length?null:e("li",{class:"listen-none muted",children:"No platform matches."})]}),e(E,{label:"Access",hint:It[n.access],group:!0,children:e(O,{label:"Access",options:St,value:n.access,onChange:t=>B("access",t)})})]}),e("details",{id:"agent-run",class:"form-part run",open:m==="run",children:[e("summary",{children:[e("h2",{children:"Run settings"}),e("span",{class:"grow muted",children:mt}),e(H,{d:ke})]}),e("div",{class:"run-body",children:[e("div",{class:"fields",children:[e(E,{label:"Engine and model",hint:"what runs each task",group:!0,children:e($e,{label:"Model",value:qe(n.engine,n.model),options:Fe(h,ne(pt)),headings:je(h),action:{label:"Add models",icon:Y,onPick:()=>P.push("/dash/[org]/settings/[tab]",{params:{org:y,tab:"models"}})},onChange:t=>w(l=>({...l,...He(t)}))})}),e(E,{label:"Effort",hint:"how hard the model thinks",group:!0,children:e(O,{label:"Effort",options:[["",ne(Q.effort)],...Me],value:n.effort,onChange:t=>B("effort",t)})})]}),e(E,{label:"Repository access",group:!0,children:[e("p",{class:n.permissions==="auto"?"access-note":"access-note warn-hint",children:kt[n.permissions]}),e(O,{label:"Repository access",options:Ct,value:n.permissions,onChange:t=>B("permissions",t)})]})]})]})]}),e("aside",{class:"agent-side","aria-label":"Preview",children:[e("span",{class:"side-label",children:"Preview"}),e("div",{class:"agent-card preview",children:[e("div",{class:"bc-head",children:[e("span",{class:"mark",children:q(n.name)}),e("div",{class:"grow",children:[e("h3",{children:n.name.trim()||"Unnamed agent"}),e("span",{class:"pills",children:[e(D,{children:"dashboard"}),i?.local?null:e(D,{children:["v",f?1:i.currentVersion+1]}),i?.settings?.disabled?e(Ge,{}):null]})]})]}),e("div",{class:"lead-clamp",children:e("span",{children:n.description.trim()||"No description yet."})}),n.platforms.length?e(Ve,{platforms:n.platforms.map(t=>({id:t,state:"none"})),catalog:s}):e("span",{class:"pfs muted",children:"No handles yet"})]})]})]})]})}export{Qs as AgentEditor};
@@ -1 +0,0 @@
1
- "use client";import{a as r,b as w,c as S,f,h as b}from"./model-options-8d2170eebe0d061d.js";import{a as k,b as N,f as p,g as u}from"./list-2773686bf8df64c7.js";import"./confirm-a78147b6ecef3847.js";import"./action-a76e495fb39a73d3.js";import"./format-a27067f0186e78ac.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$0j as d,$0x as m}from"./shared-init-c3bd249cf1eca6d1.js";import{$2o as a}from"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./shared-init-b281027d465e004f.js";import{$0L as E,$0a as t}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3c as c,$3h as v}from"./shared-init-6e12333f12903a62-2.js";function P({first:s,defaults:C}){let[R,g]=v(""),n=k(s.config),o=n.value.chain??s.effective.chain??r,l=n.value.approvals?.allowedNetworkHosts??[],B=[...o.filter(e=>r.includes(e)),...r.filter(e=>!o.includes(e))],I=(e,i)=>(s.config.engines?.[e]?.[i]?void 0:s.effective.engines?.[e]?.[i])??C[e]?.[i],h=(e,i,L)=>t("label",{children:[i,t(m,{label:`${f[e]} ${i}`,value:n.value.engines?.[e]?.[i]??"",options:[["",b(I(e,i)??(i==="permissions"?"auto":void 0))],...L],onChange:M=>void n.patch({engines:{[e]:{[i]:M||null}}})})]});return t(c,{children:[t(u,{title:"Engines",count:o.length,children:B.map(e=>t(p,{title:f[e],badges:t(c,{children:[o[0]===e?t(a,{tone:"acc",children:"default"}):null,o.includes(e)?null:t(a,{children:"off"})]}),sub:t("span",{class:"inline-picks",children:[h(e,"effort",w),h(e,"permissions",S)]}),actions:o[0]===e?null:t(E,{variant:"secondary",size:"sm",loading:R===e,onClick:()=>{g(e),n.patch({chain:[e,...o.filter(i=>i!==e)]}).finally(()=>g(""))},children:"Make default"}),menu:o.includes(e)?o.length>1?t(d,{title:"Disable",onClick:()=>void n.patch({chain:o.filter(i=>i!==e)})}):void 0:t(d,{title:"Enable",onClick:()=>void n.patch({chain:[...o,e]})})},e))}),t(u,{title:"Allowed network hosts",count:l.length,add:t(N,{fields:[["host","Host, like registry.npmjs.org"]],onAdd:({host:e})=>n.patch({approvals:{allowedNetworkHosts:[...new Set([...l,e])]}})}),children:l.map(e=>t(p,{title:e,remove:{title:`Remove ${e}?`,body:"Tasks lose access to it.",onRemove:()=>n.patch({approvals:{allowedNetworkHosts:l.filter(i=>i!==e)}})}},e))})]})}export{P as EnginesList};
@@ -1 +0,0 @@
1
- var m=(t,r,n)=>Object.fromEntries(new Intl.DateTimeFormat("en-US",{...n,timeZone:r}).formatToParts(t).map(e=>[e.type,e.value]));function d(t,r,n){if(!t)return"Not available";let e={month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",hour12:!0},o=m(t,r,e),i=`${o.hour}:${o.minute} ${o.dayPeriod}`;if(!n)return`${o.month} ${o.day}, ${o.year}, ${i}`;let a=m(Date.now(),r,e);return o.year!==a.year?`${o.month} ${o.day}, ${o.year}, ${i}`:o.month===a.month&&o.day===a.day?i:`${o.month} ${o.day}, ${i}`}function f(t,r){let n=m(t,r,{hour:"numeric",minute:"2-digit",second:"2-digit",hour12:!0});return`${n.hour}:${n.minute}:${n.second} ${n.dayPeriod}`}function $(t,r){let n=m(t,r,{month:"short",day:"numeric",year:"numeric"});return`${n.month} ${n.day}, ${n.year}`}var u=new Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1});function c(t){if(t===void 0)return"Not available";if(t<1e3)return`${Math.round(t)} ms`;if(t<6e4)return`${(t/1e3).toFixed(1)} s`;let[r,n]=t<36e5?["min",t/6e4]:["h",t/36e5];return`${n>=1e4?u.format(n):n.toLocaleString("en-US",{minimumFractionDigits:1,maximumFractionDigits:1})} ${r}`}var p=t=>Date.now()-t<6e4?"just now":`${c(Date.now()-t).replace(/\.\d/,"")} ago`,h=t=>t.toLocaleString("en-US");function y(t){return(t??"?").trim().charAt(0).toUpperCase()||"?"}var g=t=>t instanceof Error?t.message:String(t);export{d as a,f as b,$ as c,c as d,p as e,h as f,y as g,g as h};
@@ -1 +0,0 @@
1
- "use client";import{b as a,c as b}from"./instructions-2d9fbcbfadac4f40.js";import"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";export{b as Instructions,a as markdown};