@wular/coder 0.4.10 → 0.4.11

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 (315) hide show
  1. package/dist/actions-Cwe3IDVs.js +2 -0
  2. package/dist/{adapter-BeezVK-B.js → adapter-Bi768A94.js} +1 -1
  3. package/dist/{adapter-ChaISKgI.js → adapter-CkL4PqXE.js} +1 -1
  4. package/dist/{adapter-MD6ahqPR.js → adapter-DYxjaefw.js} +1 -1
  5. package/dist/{add-Bk8drM-8.js → add-B6vPKZEr.js} +1 -1
  6. package/dist/{add-CD_L-WW8.js → add-n6c9OINP.js} +2 -2
  7. package/dist/{add-BbXuvqj1.js → add-v1Pv00HX.js} +1 -1
  8. package/dist/{add-B26QSwPY.js → add-wC8ByRgM.js} +1 -1
  9. package/dist/{agent-B8ItyuHN.js → agent-6GooVMsq.js} +2 -2
  10. package/dist/{agent-DHpMqHVi.js → agent-BkxXgha0.js} +1 -1
  11. package/dist/{alias-CScCzXhS.js → alias-A8ObWElH.js} +1 -1
  12. package/dist/{app-wHQJHu6N.js → app-CaxTL1H3.js} +1 -1
  13. package/dist/{approvals-BIGQBbCM.js → approvals-h5lytkey.js} +2 -2
  14. package/dist/{approve-DFSy7Z72.js → approve-BNhg0MLi.js} +2 -2
  15. package/dist/{approve-BnZ3v-3c.js → approve-BiHM8kSo.js} +1 -1
  16. package/dist/apps-BNe86LfS.js +367 -0
  17. package/dist/{archive-CU0nhUeJ.js → archive-CMHRsVYf.js} +2 -2
  18. package/dist/{archive-CY2lvp_c.js → archive-H2B7Me8E.js} +2 -2
  19. package/dist/{args-BekfmD9t.js → args-CURX44CA.js} +1 -1
  20. package/dist/{ask-CLDgHB_Y.js → ask-D8TIVhPl.js} +2 -2
  21. package/dist/{auth-C3KrIUf1.js → auth-BSMPjhnz.js} +1 -1
  22. package/dist/auth-D3quZAKT.js +1 -0
  23. package/dist/{chat-AbW-LOHo.js → chat-3AvUDOwf.js} +1 -1
  24. package/dist/{chat-bridge-WK-pKNfw.js → chat-bridge-BmqYsASZ.js} +1 -1
  25. package/dist/{cli-Fp28pM4Y.js → cli-BBlH53hA.js} +4 -4
  26. package/dist/cli.js +1 -1
  27. package/dist/{client-DzwzCsue.js → client-sqXb-y09.js} +1 -1
  28. package/dist/{config-DoVedq6T.js → config-K6Rrjsee.js} +1 -1
  29. package/dist/{connection-Cb0TK201.js → connection-B-IB8tlP.js} +1 -1
  30. package/dist/{connection-5V8doFL7.js → connection-BXBDeoax.js} +1 -1
  31. package/dist/{create-CrjRdQip.js → create-CP_JmJnh.js} +1 -1
  32. package/dist/{credentials-DoL9w8D1.js → credentials-BRFajC0d.js} +1 -1
  33. package/dist/dash/standalone/server/build-index.json +1 -1
  34. package/dist/dash/standalone/server/manifest.json +1273 -1273
  35. package/dist/dash/standalone/server/modules-server-server-react-server/src/client/{index.843431e3538fd9a4.js → index.0de14cb4e30bd70d.js} +1 -5
  36. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/{load.7ae462ef36271be8.js → load.be791a5eaf328738.js} +1 -1
  37. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/connect/{page.806027fde54ab723.js → page.0fbfdba5254f7ae5.js} +1 -1
  38. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/create/[id]/{page.bd04d2d3eba00676.js → page.70913bd4075da914.js} +2 -2
  39. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{notify.857748e260c691e3.js → notify.61aab176baeefebd.js} +1 -1
  40. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{page.25153459858542f9.js → page.815371ed0d5dd4fa.js} +3 -3
  41. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{sign-out.ff98573f362d76f3.js → sign-out.1d6af804f9ec043d.js} +1 -1
  42. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{agents-grid.8efd14bc39281da9.js → agents-grid.f43bcc1148ce3650.js} +1 -1
  43. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{connect-apps.d1e67db29b12dc0a.js → connect-apps.f3af8cc8540719d7.js} +2 -2
  44. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{page.0f7d5e3e42462870.js → page.5f88059c03cf82b4.js} +7 -7
  45. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{layout.05210ffa6038791f.js → layout.b7392d534ce0410e.js} +7 -7
  46. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{page.19fe116c0f802cb1.js → page.5aae24bbfd90c434.js} +7 -7
  47. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{page.f87fd8eb66f73af0.js → page.91c992fdd3b4a493.js} +12 -16
  48. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{platform-actions.b6c3d3184e167d0b.js → platform-actions.8e7ca54dd1821e98.js} +3 -3
  49. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{agent-settings-form.28220621573033d7.js → agent-settings-form.eb707a9e32718374.js} +3 -3
  50. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{page.2f7467868f599ebc.js → page.9ec1ec08ba05da59.js} +6 -6
  51. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{loading.ec94096015346f2c.js → loading.dd9088a4581b1d65.js} +1 -1
  52. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{page.a92a36a8ce21088c.js → page.71dc042821133e82.js} +1 -1
  53. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{page.8935a5fe5c08bcf1.js → page.45e18b6dc3019af4.js} +3 -3
  54. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{versions-list.5b97ab6d40e2e639.js → versions-list.c8d76988c734dda2.js} +1 -1
  55. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{loading.bedcc1aba372fbce.js → loading.b1367e864b4fb406.js} +1 -1
  56. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{page.14760e9eedd6ff8e.js → page.e3179ddf20a7e55d.js} +6 -6
  57. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-toggle.a6ee8bd882178e29.js → agent-toggle.1579dc8acbaacf92.js} +2 -2
  58. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{hero.8be1dd4ea3ed6e17.js → hero.ad5cc342db794e5d.js} +1 -1
  59. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{connect-repositories.59d89152fe845af2.js → connect-repositories.43b4b28f194ea842.js} +1 -1
  60. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{editor.77f68d431408745b.js → editor.62cb8207218e6437.js} +5 -5
  61. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{import-picker.a7b01817a821819a.js → import-picker.eafa5b41a2ed571f.js} +3 -3
  62. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{page.c4570fd80bdda68c.js → page.dffb05f2d256d81a.js} +4 -4
  63. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{layout.19006c2d7dc8d114.js → layout.393cf7429eea189e.js} +3 -3
  64. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{operator-apps.d350a52d27f69fa6.js → operator-apps.a244f3199e7cf09c.js} +4 -4
  65. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{page.4a652f5080c2b863.js → page.980adfb7c5714752.js} +4 -4
  66. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{page.d39f7a1719f50c6d.js → page.24a1987405ed7b17.js} +1 -1
  67. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{connections-list.ff7e1dadcd4df17f.js → connections-list.21ec9dc73ce68656.js} +3 -3
  68. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials-list.87a1f8ab71eb4bed.js → credentials-list.683476f62a9ecde7.js} +3 -3
  69. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials.a535c9c6dd8b4cdf.js → credentials.b43dd3d97c536c2a.js} +8 -8
  70. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{engines-list.29fffd07c1c3b771.js → engines-list.9e116751bd34e2cc.js} +1 -1
  71. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{list.0c87d55cf4ef382c.js → list.083f5c665df04b1b.js} +2 -2
  72. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{models-list.6fea9faddb8300bb.js → models-list.537f63f8e5dd085d.js} +3 -3
  73. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{page.295245052b93af90.js → page.dfed4ae6ffc74434.js} +12 -12
  74. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{runners-list.a4a38e54d834a1ec.js → runners-list.3afa989490bbe77c.js} +4 -4
  75. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{secrets-list.50f487766f87383c.js → secrets-list.0d175ee815b22cd7.js} +3 -3
  76. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{layout.c42e0ab39cb2c0e0.js → layout.3e8289f888fa444c.js} +1 -1
  77. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{page.6997506eaa1a4824.js → page.06feaa5fbb06f1e6.js} +1 -1
  78. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{create-link.9458b49dc99bbaaa.js → create-link.ff95e4b6977d0474.js} +3 -3
  79. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{page.77e402bb6e8e7f7e.js → page.f06fda0df59beeb5.js} +4 -4
  80. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{activity.fcda6f18c8207c99.js → activity.3c79cf14feff12bf.js} +1 -1
  81. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{page.d0f039221a27b8ef.js → page.25b29e72df84806b.js} +4 -4
  82. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-actions.f5f2016d2dc7f422.js → task-actions.587da79d68ab8d14.js} +3 -3
  83. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-view.a292baa2410cdf64.js → task-view.f2e902c8208b2e78.js} +6 -6
  84. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer.2d4122eb33addbdd.js → composer.b0bb1faaac8e0b6c.js} +4 -4
  85. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-list.021bdc2f3d90af2d.js → tasks-list.b52a49fb5faeefd0.js} +7 -7
  86. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-section.13f64b0836ae406b.js → tasks-section.80f9c9a42ecae854.js} +4 -4
  87. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{page.b78f0df100410db0.js → page.20b5c22658eae312.js} +2 -2
  88. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{page.93c2306069c03c68.js → page.fb21ebe90d49dac1.js} +2 -2
  89. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{stream.95a2468086aceb84.js → stream.e2915852cf82c86b.js} +1 -1
  90. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{task-toasts.e1a484113e1df660.js → task-toasts.0ed8ccaae81b9d53.js} +2 -2
  91. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{action.968bcab0f5e3665d.js → action.b9a5c37272250e82.js} +1 -1
  92. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{client.189224c16057d7a1.js → client.a3928fa2dcd27b75.js} +1 -1
  93. package/dist/dash/standalone/static/assets/chunks/action-fc8716cda7527d8c.js +1 -0
  94. package/dist/dash/standalone/static/assets/chunks/{agent-pills-0c0b8d40b9bfc78f.js → agent-pills-bd32cb89331aff7e.js} +1 -1
  95. package/dist/dash/standalone/static/assets/chunks/{agent-settings-form-5a2601316e2ab283.js → agent-settings-form-f5576a2c50fce094.js} +1 -1
  96. package/dist/dash/standalone/static/assets/chunks/{agent-toggle-5ede0c449e88cb9d.js → agent-toggle-a45b95908d62f926.js} +1 -1
  97. package/dist/dash/standalone/static/assets/chunks/{agents-grid-ffb18df48e951ecb.js → agents-grid-9f79b5074899c8be.js} +1 -1
  98. package/dist/dash/standalone/static/assets/chunks/{back-602db2cfdccf2e7f.js → back-b0cd2b85c9d8403e.js} +1 -1
  99. package/dist/dash/standalone/static/assets/chunks/{combo-df2685e277db02c0.js → combo-1050768988cd0347.js} +1 -1
  100. package/dist/dash/standalone/static/assets/chunks/{composer-e1cefed81ea89b7e.js → composer-87f138e21d68370d.js} +1 -1
  101. package/dist/dash/standalone/static/assets/chunks/composer-8f0e8b1d07e74aad.js +1 -0
  102. package/dist/dash/standalone/static/assets/chunks/{confirm-d163e6865d66dfab.js → confirm-01d5814b1c5f7721.js} +1 -1
  103. package/dist/dash/standalone/static/assets/chunks/connect-apps-857dc9fa3f6f5bbc.js +1 -0
  104. package/dist/dash/standalone/static/assets/chunks/{connect-repositories-0aa9abc77b9c3d48.js → connect-repositories-49098298b3a82647.js} +1 -1
  105. package/dist/dash/standalone/static/assets/chunks/{connections-list-6eddeb8583ded10f.js → connections-list-46d48443d8fc8a0d.js} +1 -1
  106. package/dist/dash/standalone/static/assets/chunks/{copy-0cc00656953531be.js → copy-5db9d328f8f65d82.js} +1 -1
  107. package/dist/dash/standalone/static/assets/chunks/create-link-6b6e9eeac436c4af.js +1 -0
  108. package/dist/dash/standalone/static/assets/chunks/{credentials-list-1b6a81e9b4934dc8.js → credentials-list-3cccc85ef335cb22.js} +1 -1
  109. package/dist/dash/standalone/static/assets/chunks/{custom-range-cae5567874db83ca.js → custom-range-fdf1946aac09cfc3.js} +1 -1
  110. package/dist/dash/standalone/static/assets/chunks/{editor-d55d247a1d7de5f0.js → editor-d2460c315bb1fd32.js} +1 -1
  111. package/dist/dash/standalone/static/assets/chunks/{engines-list-288559344de4d4b9.js → engines-list-0159c8baa0b3e711.js} +1 -1
  112. package/dist/dash/standalone/static/assets/chunks/{field-693bb870ad0bdee8.js → field-c530e261587d94df.js} +1 -1
  113. package/dist/dash/standalone/static/assets/chunks/{instructions-a3d7688e421f2a08.js → instructions-3ea5afeea1992bf2.js} +1 -1
  114. package/dist/dash/standalone/static/assets/chunks/instructions-d8884576a18e6cdb.js +1 -0
  115. package/dist/dash/standalone/static/assets/chunks/{list-2a59237cb7cb0a7c.js → list-b67ce61483dd6acb.js} +1 -1
  116. package/dist/dash/standalone/static/assets/chunks/{models-list-5ed9ee02f9b66d98.js → models-list-98c956ba00913a73.js} +1 -1
  117. package/dist/dash/standalone/static/assets/chunks/{notice-7d84ffab32ff24ca.js → notice-8939183c8a889bae.js} +1 -1
  118. package/dist/dash/standalone/static/assets/chunks/{outcome-dialog-3cffe3507ea92af2.js → outcome-dialog-6323cb5300b6d3c9.js} +1 -1
  119. package/dist/dash/standalone/static/assets/chunks/outcome-dialog-be3fbe8c4b43d180.js +1 -0
  120. package/dist/dash/standalone/static/assets/chunks/{platform-actions-4dc31567d00c4cb2.js → platform-actions-aafbf038008de64f.js} +1 -1
  121. package/dist/dash/standalone/static/assets/chunks/platform-actions-ed27388f722b4a4c.js +1 -0
  122. package/dist/dash/standalone/static/assets/chunks/{runners-list-984246a8f9450da1.js → runners-list-a13d0f8f6583c6d2.js} +1 -1
  123. package/dist/dash/standalone/static/assets/chunks/{runtime-6e12333f12903a62-1.js → runtime-71b727f8f5906f08-1.js} +1 -1
  124. package/dist/dash/standalone/static/assets/chunks/{secrets-list-88f8b30abbab52f0.js → secrets-list-53a0c079492199c9.js} +1 -1
  125. package/dist/dash/standalone/static/assets/chunks/{segmented-79c9c69b702e0b90.js → segmented-a3642b8169857fb1.js} +1 -1
  126. package/dist/dash/standalone/static/assets/chunks/shared-init-6cad28f8cc696d91.js +2 -0
  127. package/dist/dash/standalone/static/assets/chunks/shared-init-71b727f8f5906f08-2.js +1 -0
  128. package/dist/dash/standalone/static/assets/chunks/shared-init-94883db7bc70a5a8.js +5 -0
  129. package/dist/dash/standalone/static/assets/chunks/side-toggle-a2f67a8671a0309b.js +1 -0
  130. package/dist/dash/standalone/static/assets/chunks/{tail-99e29a541a072002.js → tail-81b69d49bfebfd4c.js} +1 -1
  131. package/dist/dash/standalone/static/assets/chunks/{task-actions-1cdca1e8d3eee490.js → task-actions-25c70b47b5a53cd2.js} +1 -1
  132. package/dist/dash/standalone/static/assets/chunks/{task-view-fdcde0e31f63b737.js → task-view-e5ee0ada38552918.js} +1 -1
  133. package/dist/dash/standalone/static/assets/chunks/{tasks-list-3ad1c93deff4fb2e.js → tasks-list-d58f3063ae31d9d2.js} +1 -1
  134. package/dist/dash/standalone/static/assets/chunks/{versions-list-60ac4d8f715bf5f7.js → versions-list-fbeed95c0b4e5f0f.js} +1 -1
  135. package/dist/dash/standalone/static/assets/chunks/{wular-pnext-6e12333f12903a62-0.js → wular-pnext-71b727f8f5906f08-0.js} +1 -1
  136. package/dist/dash/standalone/static/assets/pnext-client-037852a9f274c8c8.js +1 -0
  137. package/dist/dash/standalone/static/assets/pnext-client-10eac8df53f62104.js +1 -0
  138. package/dist/dash/standalone/static/assets/pnext-client-12635905e9754177.js +1 -0
  139. package/dist/dash/standalone/static/assets/pnext-client-12955733c71cc641.js +1 -0
  140. package/dist/dash/standalone/static/assets/pnext-client-26999113ea61d5b9.js +1 -0
  141. package/dist/dash/standalone/static/assets/pnext-client-27b6e4b7d1697094.js +1 -0
  142. package/dist/dash/standalone/static/assets/pnext-client-34fec171024dd082.js +1 -0
  143. package/dist/dash/standalone/static/assets/pnext-client-44eb6d4096f7e875.js +1 -0
  144. package/dist/dash/standalone/static/assets/pnext-client-4c558a168b95d9b1.js +1 -0
  145. package/dist/dash/standalone/static/assets/pnext-client-5d21f3dd3f4407af.js +1 -0
  146. package/dist/dash/standalone/static/assets/pnext-client-5fe04a4e1dff28a3.js +1 -0
  147. package/dist/dash/standalone/static/assets/pnext-client-88bbc009041aa776.js +1 -0
  148. package/dist/dash/standalone/static/assets/pnext-client-b36106c6b8a6cd35.js +1 -0
  149. package/dist/dash/standalone/static/assets/pnext-client-b47dda1cd4cfac04.js +1 -0
  150. package/dist/dash/standalone/static/assets/pnext-client-b556f5611fdcf545.js +1 -0
  151. package/dist/dash/standalone/static/assets/pnext-client-b8485144ca29d436.js +1 -0
  152. package/dist/dash/standalone/static/assets/pnext-client-c5c3c90b3518c5a8.js +1 -0
  153. package/dist/dash/standalone/static/assets/{pnext-client-ab36b406301fd2a4.js → pnext-client-e4c659a371f4cd79.js} +1 -1
  154. package/dist/dash/standalone/static/assets/pnext-client-f139547dc55d7d76.js +1 -0
  155. package/dist/dash/standalone/static/assets/pnext-client-fd280710b31af681.js +1 -0
  156. package/dist/{default-tTTSBdXq.js → default-Ojx5oFuw.js} +1 -1
  157. package/dist/{delete-DM2sA12f.js → delete-D1hEPpsk.js} +2 -2
  158. package/dist/{delete-DR37NTr1.js → delete-UyzcQPoG.js} +2 -2
  159. package/dist/{disable-Dz_zLPX5.js → disable-Dml_Slph.js} +1 -1
  160. package/dist/{discover-CqabH4Fx.js → discover-CyIfIBGD.js} +2 -2
  161. package/dist/dispatch-CFZ9Crvg.js +8 -0
  162. package/dist/{docs-b2mAKC8Z.js → docs-BUHKbQjM.js} +1 -1
  163. package/dist/{docs-BV9SC67g.js → docs-CvjWiada.js} +1 -1
  164. package/dist/drive-BqunNi9n.js +1 -0
  165. package/dist/{enable-Cfeki-ne.js → enable-xye-Nanc.js} +1 -1
  166. package/dist/{env-DSddo-fz.js → env-BgE9ipvN.js} +1 -1
  167. package/dist/exec-Cprez703.js +3 -0
  168. package/dist/{executor-LkokKTTd.js → executor-3QMa-XRY.js} +5 -5
  169. package/dist/flow/builtin/review.d.ts +1 -1
  170. package/dist/flow/builtin/review.js +1 -1
  171. package/dist/flow/index.d.ts +1 -1
  172. package/dist/flow/index.js +1 -1
  173. package/dist/{flow-BQcdyrVK.js → flow-CtillCQY.js} +1 -1
  174. package/dist/{history-D_A5odLI.js → history-C53URBjs.js} +1 -1
  175. package/dist/{http-CXaW1e7x.js → http-CDZKt5ln.js} +1 -1
  176. package/dist/hub-B0WCXtsP.js +2 -0
  177. package/dist/{init-DU_S43NG.js → init-HdSVUozH.js} +1 -1
  178. package/dist/integrations-BdLs4W6o.js +1 -0
  179. package/dist/{integrations-DPxWtNnS.js → integrations-IGnXBrPw.js} +2 -2
  180. package/dist/lib/broker.js +2 -2
  181. package/dist/{list-_EH6c041.js → list-1IMeVNg3.js} +1 -1
  182. package/dist/{list-CIS-GYO1.js → list-BTjIMvNs.js} +1 -1
  183. package/dist/{list-BJ0j5eP9.js → list-BlOB32n6.js} +2 -2
  184. package/dist/{list-CR0_Emod2.js → list-CZGTVKcS.js} +2 -2
  185. package/dist/{list-CnHZriYt.js → list-CquHtsmW.js} +1 -1
  186. package/dist/{list-i2r3Nlyz.js → list-CxjPT0Il.js} +1 -1
  187. package/dist/{list-7yd9K7d8.js → list-DvFVuGT_.js} +1 -1
  188. package/dist/{list-Boaz5b5n.js → list-gFnOS9Hk.js} +2 -2
  189. package/dist/load-Q9fL4VC6.js +2 -0
  190. package/dist/{local-Fs-dx_dP.js → local-Bzdmzc1o.js} +1 -1
  191. package/dist/{login-DISw6--d.js → login-C723kHh6.js} +1 -1
  192. package/dist/{login-CzD2EMD_.js → login-Dq3r6gh6.js} +1 -1
  193. package/dist/{logout-DMnc5yri.js → logout-DEg0aTmq.js} +1 -1
  194. package/dist/{maintenance-BVDuG9Hg.js → maintenance-DYOstY6V.js} +1 -1
  195. package/dist/{match-BfjPZ7gJ.js → match-BwcxeAZF.js} +1 -1
  196. package/dist/{mcp-CbN-QcpF.js → mcp-CKqinFkk.js} +1 -1
  197. package/dist/mcp-Dsl3Xdd3.js +13 -0
  198. package/dist/mcp-server-BlP9lACI.js +1 -0
  199. package/dist/{model-Ckyoyji3.js → model-Bs27g5EX.js} +1 -1
  200. package/dist/{models-VaiIYlOW.js → models-Cb0ZTKZ7.js} +1 -1
  201. package/dist/{prompt-DQyPCLUo.js → prompt-PEgcMJO7.js} +1 -1
  202. package/dist/prompts-Bj4Fbd_n.js +78 -0
  203. package/dist/{push-BNomfHJ3.js → push-DpEW4XbQ.js} +1 -1
  204. package/dist/{reconnect-Bd_jna1M.js → reconnect-BmP_XXDv.js} +1 -1
  205. package/dist/refresh-SHNJq9Cx.js +1 -0
  206. package/dist/{remote-f-uny3XZ.js → remote-D3JZ4MMQ.js} +1 -1
  207. package/dist/{remove-DdcQ-6by.js → remove-BZZgJq8Z.js} +1 -1
  208. package/dist/{remove-VtavIuGm.js → remove-CId1EwPg.js} +1 -1
  209. package/dist/{remove-DMTz_c25.js → remove-Ci87WQq0.js} +1 -1
  210. package/dist/{remove-CCYHc1FN.js → remove-DxCv9BB4.js} +1 -1
  211. package/dist/{rename-CKMyelWN.js → rename-DJaf5SwH.js} +1 -1
  212. package/dist/{result-CH3_tVXO.js → result-BesDQ-b1.js} +2 -2
  213. package/dist/{result-DvOqIwhh.js → result-D0dpv2O_.js} +4 -4
  214. package/dist/{resume-6j3RUpqa.js → resume-2Y0uC5MM.js} +2 -2
  215. package/dist/{review-B4ETH5ki.js → review-DIm9oK_W.js} +2 -2
  216. package/dist/{review-DDYD3Yvq.d.ts → review-Dxs-idTn.d.ts} +1 -1
  217. package/dist/{rotate-key-Byk_wI73.js → rotate-key-CS1G6ReH.js} +1 -1
  218. package/dist/{run-LCE1XiyU.js → run-BKUd6B8S.js} +1 -1
  219. package/dist/{run-DkYzyUnp.js → run-DjTTb8oA.js} +2 -2
  220. package/dist/{run-DKJW7qwy.js → run-UPW-7pKo.js} +2 -2
  221. package/dist/runner-BLS_ReEw.js +1 -0
  222. package/dist/{runner-CxtzTgVq.js → runner-BM_98EQl.js} +1 -1
  223. package/dist/runner.json +1 -1
  224. package/dist/runner.tgz +0 -0
  225. package/dist/{runners-vsoGeyuc.js → runners-DyLnqHKy.js} +2 -2
  226. package/dist/{schema-Brm7WIKd.js → schema-CjHmulYJ.js} +1 -1
  227. package/dist/schema.d.ts +1 -1
  228. package/dist/schema.js +1 -1
  229. package/dist/{sdk-CKTCrtGe.d.ts → sdk-B4Cl0Hbw.d.ts} +18 -122
  230. package/dist/sdk.d.ts +3 -3
  231. package/dist/sdk.js +1 -1
  232. package/dist/{serve-D8J-sEqm.js → serve-BApfeXk8.js} +2 -2
  233. package/dist/{serve-CCxSxXgv.js → serve-DE1cKoGa.js} +1 -1
  234. package/dist/{serve-C6tsUF0D.js → serve-lF97RlpX.js} +2 -2
  235. package/dist/{serve-C1zag2nr.js → serve-mXTjboT1.js} +1 -1
  236. package/dist/{server-B4SRYM2L.js → server-CUsxAflx.js} +1 -1
  237. package/dist/{setup-host-EaP4GPKB.js → setup-host-tlsilI6C.js} +1 -1
  238. package/dist/{show-xdsqD6de.js → show-Dn7zTz-9.js} +1 -1
  239. package/dist/{show-CjUG_aIp.js → show-uyUpeqa9.js} +1 -1
  240. package/dist/{slack-Kpj-G9FE.js → slack-DhPhLuWb.js} +4 -4
  241. package/dist/{status-BxV_ITeF.js → status-D_1VGn9F.js} +1 -1
  242. package/dist/{steer-DZ3nkHfC.js → steer-CMp-a7v2.js} +2 -2
  243. package/dist/{stop-qDw_DjOB.js → stop-C7YjN2sB.js} +1 -1
  244. package/dist/{stop-DGTUYxd6.js → stop-D8G7AtdY.js} +2 -2
  245. package/dist/{task-C506SkPR.js → task-DJ6nruuA.js} +1 -1
  246. package/dist/task-DeFLNmQH.js +1 -0
  247. package/dist/task-bkoi8_NN.js +7 -0
  248. package/dist/{test-DF_qVK6S.js → test-BD9rvefN.js} +1 -1
  249. package/dist/tools-CdWkwI1g.js +1 -0
  250. package/dist/{types-8zO5Tc9c.d.ts → types-C6NAqGqn.d.ts} +20 -31
  251. package/dist/{unalias-CklkAN1B.js → unalias-bL5t8Isc.js} +1 -1
  252. package/dist/{update-CZaFjwOJ.js → update-DIYW08ME.js} +1 -1
  253. package/dist/{upgrade-CUhFmPhl.js → upgrade-3fH6dGJw.js} +2 -2
  254. package/dist/{usage-DTAlb2rC.js → usage-Dr8F0xt0.js} +1 -1
  255. package/dist/{views-LmbLfqpu.js → views-CE2d9x6T.js} +1 -1
  256. package/dist/{watch-CJruitc6.js → watch-BiyN4NxE.js} +3 -3
  257. package/dist/{watch-p0j69fVA.js → watch-DJXu13jK.js} +5 -5
  258. package/dist/{wire-DshFMRsS.js → wire-nJ7sEi-M.js} +1 -1
  259. package/dist/worker-CHD_OiQS.js +1 -0
  260. package/dist/worker-KfrTK_Dk.js +2 -0
  261. package/dist/{workflow-CJJUiSfv.js → workflow-C21qQ4rT.js} +1 -1
  262. package/docs/agents/index.md +2 -2
  263. package/docs/agents/prompt.md +19 -8
  264. package/docs/mcp.md +1 -1
  265. package/package.json +1 -1
  266. package/plugins/claude/.claude-plugin/plugin.json +1 -1
  267. package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
  268. package/dist/actions-C3Mgpl9J.js +0 -2
  269. package/dist/apps-6BgpUsFh.js +0 -372
  270. package/dist/auth-CGeSfgNb.js +0 -1
  271. package/dist/dash/standalone/static/assets/chunks/action-410bdc82c416bc01.js +0 -1
  272. package/dist/dash/standalone/static/assets/chunks/composer-08e49d49c0c3ee94.js +0 -1
  273. package/dist/dash/standalone/static/assets/chunks/connect-apps-ce3c9d049ebad459.js +0 -1
  274. package/dist/dash/standalone/static/assets/chunks/create-link-bc365f8dfe88e6b3.js +0 -1
  275. package/dist/dash/standalone/static/assets/chunks/instructions-3f18e035338b0d0b.js +0 -1
  276. package/dist/dash/standalone/static/assets/chunks/outcome-dialog-f6fb8c69efa66508.js +0 -1
  277. package/dist/dash/standalone/static/assets/chunks/platform-actions-ecd7200f7749c258.js +0 -1
  278. package/dist/dash/standalone/static/assets/chunks/shared-init-6e12333f12903a62-2.js +0 -1
  279. package/dist/dash/standalone/static/assets/chunks/shared-init-962398d15ee67c92.js +0 -5
  280. package/dist/dash/standalone/static/assets/chunks/shared-init-ae95a674d381c095.js +0 -2
  281. package/dist/dash/standalone/static/assets/chunks/side-toggle-7ada95cc7601eb49.js +0 -1
  282. package/dist/dash/standalone/static/assets/pnext-client-0b3b70f1aefb9947.js +0 -1
  283. package/dist/dash/standalone/static/assets/pnext-client-0d90849808b6eb05.js +0 -1
  284. package/dist/dash/standalone/static/assets/pnext-client-12faa1754e3ef3be.js +0 -1
  285. package/dist/dash/standalone/static/assets/pnext-client-23384b239b81a761.js +0 -1
  286. package/dist/dash/standalone/static/assets/pnext-client-23e200dd9b7a79c0.js +0 -1
  287. package/dist/dash/standalone/static/assets/pnext-client-2562299eef46e62c.js +0 -1
  288. package/dist/dash/standalone/static/assets/pnext-client-3a4ada64991e6a40.js +0 -1
  289. package/dist/dash/standalone/static/assets/pnext-client-71e7ecdfcf86be84.js +0 -1
  290. package/dist/dash/standalone/static/assets/pnext-client-726c29bbb81054c0.js +0 -1
  291. package/dist/dash/standalone/static/assets/pnext-client-825e9f5b63950ef4.js +0 -1
  292. package/dist/dash/standalone/static/assets/pnext-client-894cff70289fb7a3.js +0 -1
  293. package/dist/dash/standalone/static/assets/pnext-client-8f96a4b8a00ff460.js +0 -1
  294. package/dist/dash/standalone/static/assets/pnext-client-9bc9b14c08020649.js +0 -1
  295. package/dist/dash/standalone/static/assets/pnext-client-b8c585cae8da7778.js +0 -1
  296. package/dist/dash/standalone/static/assets/pnext-client-bab4305b41abb15a.js +0 -1
  297. package/dist/dash/standalone/static/assets/pnext-client-bd80926822b3993d.js +0 -1
  298. package/dist/dash/standalone/static/assets/pnext-client-cd4c7b4318fa1846.js +0 -1
  299. package/dist/dash/standalone/static/assets/pnext-client-db55344d00b7888f.js +0 -1
  300. package/dist/dash/standalone/static/assets/pnext-client-eddcd5df2b28120f.js +0 -1
  301. package/dist/dispatch-BJZqI7sj.js +0 -8
  302. package/dist/drive-CU2HOCfR.js +0 -1
  303. package/dist/exec-DcWxZar6.js +0 -3
  304. package/dist/integrations-Dwvxl7i2.js +0 -1
  305. package/dist/load-C-GZnuok.js +0 -2
  306. package/dist/mcp-B-hy3eM-.js +0 -11
  307. package/dist/mcp-server-DQqSgD3P.js +0 -1
  308. package/dist/prompts-CEf7z4i_.js +0 -77
  309. package/dist/refresh-D-broYEx.js +0 -1
  310. package/dist/runner-Dnu1Vx_i.js +0 -1
  311. package/dist/task-CQmx_2SI.js +0 -7
  312. package/dist/task-Ls_-kcSx.js +0 -1
  313. package/dist/tools-S3eRQOVm.js +0 -1
  314. package/dist/worker-BHXjDzRp.js +0 -1
  315. package/dist/worker-nyRZuq4g.js +0 -2
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { useEffect, useRef } from "../../../../../../node_modules/preact/hooks/dist/hooks.mjs";
3
- import { ServerClient } from "../../../client/index.843431e3538fd9a4.js";
3
+ import { ServerClient } from "../../../client/index.0de14cb4e30bd70d.js";
4
4
  export const client = new ServerClient("", { cookie: true }, {
5
5
  // The page's organization, so a tab open in another one never changes what this one acts on.
6
6
  fetch(input, init) {
@@ -0,0 +1 @@
1
+ import{h as e}from"./format-a27067f0186e78ac.js";import{$3d as o}from"./shared-init-6cad28f8cc696d91.js";import{$2a as s}from"./shared-init-6cad28f8cc696d91.js";import{$2h as r}from"./shared-init-71b727f8f5906f08-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 +1,2 @@
1
- import{$0C as b}from"./shared-init-ae95a674d381c095.js";import{$1k as h,$1m as m,$1n as f,$1o as n}from"./shared-init-ae95a674d381c095.js";import{$0a as e,$0b as l,$0r as a}from"./shared-init-962398d15ee67c92.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(`
1
+ import{$2C as b}from"./shared-init-6cad28f8cc696d91.js";import{$0k as h,$0m as m,$0n as f,$0o as n}from"./shared-init-6cad28f8cc696d91.js";import{$1a as e,$1b as l,$1r as a}from"./shared-init-94883db7bc70a5a8.js";import{$2c as u,$2n as g}from"./shared-init-71b727f8f5906f08-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
2
  `),...o,children:"not running"}):null]})}export{y as a,S as b,w as c,E as d};
@@ -1 +1 @@
1
- "use client";import{a as re}from"./agent-pills-0c0b8d40b9bfc78f.js";import{a as ce}from"./agent-toggle-5ede0c449e88cb9d.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-d163e6865d66dfab.js";import{a as y}from"./field-693bb870ad0bdee8.js";import{b as x}from"./action-410bdc82c416bc01.js";import"./format-a27067f0186e78ac.js";import"./shared-init-ae95a674d381c095.js";import{$0B as ee,$0a as Y,$0t as Z,$0x as b}from"./shared-init-ae95a674d381c095.js";import"./shared-init-ae95a674d381c095.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-ae95a674d381c095.js";import{$1c as H}from"./shared-init-962398d15ee67c92.js";import{$0L as q,$0a as e,$0e as M}from"./shared-init-962398d15ee67c92.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??"read-only")}),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
+ "use client";import{a as re}from"./agent-pills-bd32cb89331aff7e.js";import{a as ce}from"./agent-toggle-a45b95908d62f926.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-01d5814b1c5f7721.js";import{a as y}from"./field-c530e261587d94df.js";import{b as x}from"./action-fc8716cda7527d8c.js";import"./format-a27067f0186e78ac.js";import"./shared-init-6cad28f8cc696d91.js";import{$2B as ee,$2a as Y,$2t as Z,$2x as b}from"./shared-init-6cad28f8cc696d91.js";import"./shared-init-6cad28f8cc696d91.js";import"./wular-pnext-71b727f8f5906f08-0.js";import"./shared-init-6cad28f8cc696d91.js";import{$0c as H}from"./shared-init-94883db7bc70a5a8.js";import{$1L as q,$1a as e,$1e as M}from"./shared-init-94883db7bc70a5a8.js";import"./shared-init-71b727f8f5906f08-2.js";import"./shared-init-71b727f8f5906f08-2.js";import{$2c as L,$2h as d,$2k as W,$2l as X}from"./shared-init-71b727f8f5906f08-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??"read-only")}),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 +1 @@
1
- import{b}from"./action-410bdc82c416bc01.js";import{$1c as r}from"./shared-init-962398d15ee67c92.js";import{$0L as c,$0a as s}from"./shared-init-962398d15ee67c92.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
+ import{b}from"./action-fc8716cda7527d8c.js";import{$0c as r}from"./shared-init-94883db7bc70a5a8.js";import{$1L as c,$1a as s}from"./shared-init-94883db7bc70a5a8.js";import{$2h as g}from"./shared-init-71b727f8f5906f08-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 +1 @@
1
- "use client";import{a as P,b as R,d as q}from"./agent-pills-0c0b8d40b9bfc78f.js";import{a as L}from"./tail-99e29a541a072002.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-ae95a674d381c095.js";import{$1c as b,$1e as A}from"./shared-init-ae95a674d381c095.js";import"./wular-pnext-6e12333f12903a62-0.js";import{$1c as f}from"./shared-init-962398d15ee67c92.js";import{$0M as y,$0a as e,$0e as u,$0f as h}from"./shared-init-962398d15ee67c92.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
+ "use client";import{a as P,b as R,d as q}from"./agent-pills-bd32cb89331aff7e.js";import{a as L}from"./tail-81b69d49bfebfd4c.js";import{c as N}from"./types-3eca2c7f47c46054.js";import{g}from"./format-a27067f0186e78ac.js";import{$2B as a,$2r as w,$2s as C,$2t as I,$2u as v,$2v as k}from"./shared-init-6cad28f8cc696d91.js";import{$0c as b,$0e as A}from"./shared-init-6cad28f8cc696d91.js";import"./wular-pnext-71b727f8f5906f08-0.js";import{$0c as f}from"./shared-init-94883db7bc70a5a8.js";import{$1M as y,$1a as e,$1e as u,$1f as h}from"./shared-init-94883db7bc70a5a8.js";import"./shared-init-71b727f8f5906f08-2.js";import"./shared-init-71b727f8f5906f08-2.js";import{$2c as c}from"./shared-init-71b727f8f5906f08-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 +1 @@
1
- import{$0B as a,$0z as c}from"./shared-init-ae95a674d381c095.js";import{$0M as i,$0a as r}from"./shared-init-962398d15ee67c92.js";import{$3j as m}from"./shared-init-6e12333f12903a62-2.js";var n="coder-back";function s(o){let t=new RegExp(`(?:^|; )${n}=([^;]*)`).exec(o)?.[1];try{let e=t&&JSON.parse(decodeURIComponent(t));return e&&typeof e.path=="string"&&e.path.startsWith("/dash/")?e:null}catch{return null}}function x({label:o,children:t,...e}){let p=()=>{let l=encodeURIComponent(JSON.stringify({path:location.pathname,label:o}));document.cookie=`${n}=${l}; path=/dash; max-age=600; samesite=lax`};return r(i,{...e,href:"/dash/[org]/settings/[tab]",params:{org:a(),tab:"credentials"},onClick:p,children:t})}function B({initial:o}){let t=a(),e=typeof document>"u"?o:s(document.cookie);return m(()=>()=>void setTimeout(()=>{location.pathname.split("/")[3]!=="settings"&&(document.cookie=`${n}=; path=/dash; max-age=0`)}),[]),e?r(c,{href:"/dash/[org]",params:{org:t},label:"Back",back:e.path,named:e.label}):null}export{x as a,B as b};
1
+ import{$2B as a,$2z as c}from"./shared-init-6cad28f8cc696d91.js";import{$1M as i,$1a as r}from"./shared-init-94883db7bc70a5a8.js";import{$2j as m}from"./shared-init-71b727f8f5906f08-2.js";var n="coder-back";function s(o){let t=new RegExp(`(?:^|; )${n}=([^;]*)`).exec(o)?.[1];try{let e=t&&JSON.parse(decodeURIComponent(t));return e&&typeof e.path=="string"&&e.path.startsWith("/dash/")?e:null}catch{return null}}function x({label:o,children:t,...e}){let p=()=>{let l=encodeURIComponent(JSON.stringify({path:location.pathname,label:o}));document.cookie=`${n}=${l}; path=/dash; max-age=600; samesite=lax`};return r(i,{...e,href:"/dash/[org]/settings/[tab]",params:{org:a(),tab:"credentials"},onClick:p,children:t})}function B({initial:o}){let t=a(),e=typeof document>"u"?o:s(document.cookie);return m(()=>()=>void setTimeout(()=>{location.pathname.split("/")[3]!=="settings"&&(document.cookie=`${n}=; path=/dash; max-age=0`)}),[]),e?r(c,{href:"/dash/[org]",params:{org:t},label:"Back",back:e.path,named:e.label}):null}export{x as a,B as b};
@@ -1 +1 @@
1
- import{$0m as E,$0w as M,$0y as S}from"./shared-init-ae95a674d381c095.js";import{$0a as r}from"./shared-init-962398d15ee67c92.js";import{$3c as L,$3h as u,$3k as $,$3l as d,$3n as C}from"./shared-init-6e12333f12903a62-2.js";var H=50;function F({label:m,name:D,class:I,options:g,placeholder:O,value:f,onChange:k,onOpen:y}){let[T,o]=u(!1),[A,a]=u(!1),[l,c]=u(0),h=d(null),p=d(null),i=C(),w=A?f.trim().toLowerCase():"",s=(w?g.filter(e=>e.toLowerCase().includes(w)):g).slice(0,H),n=T&&s.length>0,b=e=>{let t=s[e];t&&k(t),o(!1),a(!1)},v=M(h,p,n,360,[s.length]);return $(()=>{n&&p.current?.querySelector(`[data-index="${l}"]`)?.scrollIntoView({block:"nearest"})},[n,l,v]),r(L,{children:[r("input",{ref:h,name:D,class:I,role:"combobox","aria-label":m,"aria-autocomplete":"list","aria-expanded":n,"aria-controls":`${i}-list`,"aria-activedescendant":n?`${i}-${l}`:void 0,autocomplete:"off",placeholder:O,value:f,onInput:e=>{k(e.currentTarget.value),a(!0),c(0),o(!0)},onFocus:()=>{a(!1),o(!0),y?.()},onClick:()=>{o(!0),y?.()},onBlur:()=>{o(!1),a(!1)},onKeyDown:e=>{if(n){if(e.key==="ArrowDown")c((l+1)%s.length);else if(e.key==="ArrowUp")c((l-1+s.length)%s.length);else if(e.key==="Enter")b(l);else if(e.key==="Escape")o(!1);else return;e.preventDefault()}}}),n?r(S,{id:i,label:m,listRef:p,place:v,children:s.map((e,t)=>r(E,{id:`${i}-${t}`,"data-index":t,active:t===l,selected:e===f,check:!0,onPointerMove:()=>t!==l&&c(t),onClick:()=>b(t),children:e},e))}):null]})}export{F as a};
1
+ import{$2m as E,$2w as M,$2y as S}from"./shared-init-6cad28f8cc696d91.js";import{$1a as r}from"./shared-init-94883db7bc70a5a8.js";import{$2c as L,$2h as u,$2k as $,$2l as d,$2n as C}from"./shared-init-71b727f8f5906f08-2.js";var H=50;function F({label:m,name:D,class:I,options:g,placeholder:O,value:f,onChange:k,onOpen:y}){let[T,o]=u(!1),[A,a]=u(!1),[l,c]=u(0),h=d(null),p=d(null),i=C(),w=A?f.trim().toLowerCase():"",s=(w?g.filter(e=>e.toLowerCase().includes(w)):g).slice(0,H),n=T&&s.length>0,b=e=>{let t=s[e];t&&k(t),o(!1),a(!1)},v=M(h,p,n,360,[s.length]);return $(()=>{n&&p.current?.querySelector(`[data-index="${l}"]`)?.scrollIntoView({block:"nearest"})},[n,l,v]),r(L,{children:[r("input",{ref:h,name:D,class:I,role:"combobox","aria-label":m,"aria-autocomplete":"list","aria-expanded":n,"aria-controls":`${i}-list`,"aria-activedescendant":n?`${i}-${l}`:void 0,autocomplete:"off",placeholder:O,value:f,onInput:e=>{k(e.currentTarget.value),a(!0),c(0),o(!0)},onFocus:()=>{a(!1),o(!0),y?.()},onClick:()=>{o(!0),y?.()},onBlur:()=>{o(!1),a(!1)},onKeyDown:e=>{if(n){if(e.key==="ArrowDown")c((l+1)%s.length);else if(e.key==="ArrowUp")c((l-1+s.length)%s.length);else if(e.key==="Enter")b(l);else if(e.key==="Escape")o(!1);else return;e.preventDefault()}}}),n?r(S,{id:i,label:m,listRef:p,place:v,children:s.map((e,t)=>r(E,{id:`${i}-${t}`,"data-index":t,active:t===l,selected:e===f,check:!0,onPointerMove:()=>t!==l&&c(t),onClick:()=>b(t),children:e},e))}):null]})}export{F as a};
@@ -1 +1 @@
1
- import{a as fe,b as et,c as tt,d as nt,f as ot}from"./composer-data-5fed6c271a4791ca.js";import{m as Ye}from"./task-95daa40d39de664f.js";import{a as Ve}from"./connect-repositories-0aa9abc77b9c3d48.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-7d84ffab32ff24ca.js";import{a as st}from"./back-602db2cfdccf2e7f.js";import{a as A,b as Je}from"./action-410bdc82c416bc01.js";import{a as Te,h as T}from"./format-a27067f0186e78ac.js";import{$2e as Ge}from"./shared-init-ae95a674d381c095.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-ae95a674d381c095.js";import{$1d as qe}from"./shared-init-ae95a674d381c095.js";import{$1c as g}from"./shared-init-962398d15ee67c92.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-962398d15ee67c92.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
+ import{a as fe,b as et,c as tt,d as nt,f as ot}from"./composer-data-5fed6c271a4791ca.js";import{m as Ye}from"./task-95daa40d39de664f.js";import{a as Ve}from"./connect-repositories-49098298b3a82647.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-8939183c8a889bae.js";import{a as st}from"./back-b0cd2b85c9d8403e.js";import{a as A,b as Je}from"./action-fc8716cda7527d8c.js";import{a as Te,h as T}from"./format-a27067f0186e78ac.js";import{$3e as Ge}from"./shared-init-6cad28f8cc696d91.js";import{$2B as We,$2a as He,$2k as je,$2l as J,$2m as ze,$2n as x,$2o as Ke,$2p as Ue,$2q as ue,$2x as H}from"./shared-init-6cad28f8cc696d91.js";import{$0d as qe}from"./shared-init-6cad28f8cc696d91.js";import{$0c as g}from"./shared-init-94883db7bc70a5a8.js";import{$1B as De,$1E as Fe,$1K as Ie,$1L as ce,$1N as Be,$1a as t,$1b as G,$1k as Ae,$1t as Pe,$1z as ae}from"./shared-init-94883db7bc70a5a8.js";import{$2c as h,$2h as f,$2j as le,$2k as Se,$2l as C,$2n as Ne}from"./shared-init-71b727f8f5906f08-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};
@@ -0,0 +1 @@
1
+ "use client";import{a,b,c,d}from"./composer-87f138e21d68370d.js";import"./composer-data-5fed6c271a4791ca.js";import"./task-95daa40d39de664f.js";import"./connect-repositories-49098298b3a82647.js";import"./model-options-8d2170eebe0d061d.js";import"./types-3eca2c7f47c46054.js";import"./notice-8939183c8a889bae.js";import"./back-b0cd2b85c9d8403e.js";import"./defaults-52f30e83d7666f7a.js";import"./action-fc8716cda7527d8c.js";import"./format-a27067f0186e78ac.js";import"./shared-init-6cad28f8cc696d91.js";import"./shared-init-6cad28f8cc696d91.js";import"./shared-init-6cad28f8cc696d91.js";import"./wular-pnext-71b727f8f5906f08-0.js";import"./shared-init-94883db7bc70a5a8.js";import"./shared-init-94883db7bc70a5a8.js";import"./shared-init-71b727f8f5906f08-2.js";import"./shared-init-71b727f8f5906f08-2.js";import"./shared-init-71b727f8f5906f08-2.js";export{b as Composer,c as LoadingComposer,a as NeedsCredential,d as NewTaskButton};
@@ -1 +1 @@
1
- import{$3a as r}from"./shared-init-ae95a674d381c095.js";import{$0L as i,$0a as o,$0v as e}from"./shared-init-962398d15ee67c92.js";function b({open:l,title:m,body:n,confirmLabel:p,onConfirm:a,onClose:f,busy:t}){return o(r,{open:l,class:"confirm",title:m,busy:t,onSubmit:C=>{C.preventDefault(),a()},onClose:f,actions:o(i,{type:"submit",danger:!0,leftIcon:e,loading:t,children:p}),children:n?o("p",{children:n}):null})}export{b as a};
1
+ import{$1a as r}from"./shared-init-6cad28f8cc696d91.js";import{$1L as i,$1a as o,$1v as e}from"./shared-init-94883db7bc70a5a8.js";function b({open:l,title:m,body:n,confirmLabel:p,onConfirm:a,onClose:f,busy:t}){return o(r,{open:l,class:"confirm",title:m,busy:t,onSubmit:C=>{C.preventDefault(),a()},onClose:f,actions:o(i,{type:"submit",danger:!0,leftIcon:e,loading:t,children:p}),children:n?o("p",{children:n}):null})}export{b as a};
@@ -0,0 +1 @@
1
+ "use client";import{a as c}from"./notice-8939183c8a889bae.js";import{b as l}from"./action-fc8716cda7527d8c.js";import"./format-a27067f0186e78ac.js";import"./shared-init-6cad28f8cc696d91.js";import{$2B as a}from"./shared-init-6cad28f8cc696d91.js";import"./shared-init-6cad28f8cc696d91.js";import"./wular-pnext-71b727f8f5906f08-0.js";import{$0c as i}from"./shared-init-94883db7bc70a5a8.js";import{$1L as s,$1a as o,$1b as e,$1z as r}from"./shared-init-94883db7bc70a5a8.js";import"./shared-init-71b727f8f5906f08-2.js";import"./shared-init-71b727f8f5906f08-2.js";import"./shared-init-71b727f8f5906f08-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 +1 @@
1
- import{$1c as i}from"./shared-init-962398d15ee67c92.js";async function u(o){let[a,n]=await Promise.all([i.apps.list(),i.integrations.list()]),r=new Set(n.filter(t=>t.repositories).map(t=>t.id)),e=a.map(t=>t.value).sort((t,l)=>+!!l.builtin-+!!t.builtin).find(t=>r.has(t.integration));if(!e)throw new Error("No app here can reach repositories yet.");let{url:s}=await i.apps.install(e.id,o);location.href=s}export{u as a};
1
+ import{$0c as i}from"./shared-init-94883db7bc70a5a8.js";async function u(o){let[a,n]=await Promise.all([i.apps.list(),i.integrations.list()]),r=new Set(n.filter(t=>t.repositories).map(t=>t.id)),e=a.map(t=>t.value).sort((t,l)=>+!!l.builtin-+!!t.builtin).find(t=>r.has(t.integration));if(!e)throw new Error("No app here can reach repositories yet.");let{url:s}=await i.apps.install(e.id,o);location.href=s}export{u as a};
@@ -1 +1 @@
1
- "use client";import{a as O}from"./agent-pills-0c0b8d40b9bfc78f.js";import{a as ue}from"./segmented-79c9c69b702e0b90.js";import{e as me}from"./model-options-8d2170eebe0d061d.js";import{a as pe}from"./notice-7d84ffab32ff24ca.js";import{f as fe}from"./list-2a59237cb7cb0a7c.js";import"./confirm-d163e6865d66dfab.js";import{a as C}from"./field-693bb870ad0bdee8.js";import"./defaults-52f30e83d7666f7a.js";import{a as de,b as N}from"./action-410bdc82c416bc01.js";import{h as Z}from"./format-a27067f0186e78ac.js";import"./shared-init-ae95a674d381c095.js";import{$0B as le,$0j as ie,$0t as ce,$0x as M}from"./shared-init-ae95a674d381c095.js";import{$1a as oe,$1b as ae,$1c as re,$1d as se,$1o as F}from"./shared-init-ae95a674d381c095.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-ae95a674d381c095.js";import{$1c as R}from"./shared-init-962398d15ee67c92.js";import{$0E as ne,$0L as I,$0M as te,$0a as e,$0b as ee}from"./shared-init-962398d15ee67c92.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
+ "use client";import{a as O}from"./agent-pills-bd32cb89331aff7e.js";import{a as ue}from"./segmented-a3642b8169857fb1.js";import{e as me}from"./model-options-8d2170eebe0d061d.js";import{a as pe}from"./notice-8939183c8a889bae.js";import{f as fe}from"./list-b67ce61483dd6acb.js";import"./confirm-01d5814b1c5f7721.js";import{a as C}from"./field-c530e261587d94df.js";import"./defaults-52f30e83d7666f7a.js";import{a as de,b as N}from"./action-fc8716cda7527d8c.js";import{h as Z}from"./format-a27067f0186e78ac.js";import"./shared-init-6cad28f8cc696d91.js";import{$2B as le,$2j as ie,$2t as ce,$2x as M}from"./shared-init-6cad28f8cc696d91.js";import{$0a as oe,$0b as ae,$0c as re,$0d as se,$0o as F}from"./shared-init-6cad28f8cc696d91.js";import"./wular-pnext-71b727f8f5906f08-0.js";import"./shared-init-6cad28f8cc696d91.js";import{$0c as R}from"./shared-init-94883db7bc70a5a8.js";import{$1E as ne,$1L as I,$1M as te,$1a as e,$1b as ee}from"./shared-init-94883db7bc70a5a8.js";import"./shared-init-71b727f8f5906f08-2.js";import"./shared-init-71b727f8f5906f08-2.js";import{$2c as B,$2h as m,$2j as X,$2l as L}from"./shared-init-71b727f8f5906f08-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 +1 @@
1
- import{$0J as l,$0N as c,$0a as e,$0u as r}from"./shared-init-962398d15ee67c92.js";import{$3h as n}from"./shared-init-6e12333f12903a62-2.js";function p({value:o,label:i="Copy"}){let[t,d]=n(!1);return e(c,{icon:t?r:l,label:t?"Copied":i,class:t?"copied":void 0,onClick:()=>void navigator.clipboard.writeText(o).then(()=>d(!0))})}function g({value:o,label:i="Copy command",link:t}){return e("div",{class:"copy-line",children:[t?e("a",{href:o,target:"_blank",rel:"noreferrer",children:e("code",{children:o})}):e("code",{children:o}),e(p,{value:o,label:i})]})}export{p as a,g as b};
1
+ import{$1J as l,$1N as c,$1a as e,$1u as r}from"./shared-init-94883db7bc70a5a8.js";import{$2h as n}from"./shared-init-71b727f8f5906f08-2.js";function p({value:o,label:i="Copy"}){let[t,d]=n(!1);return e(c,{icon:t?r:l,label:t?"Copied":i,class:t?"copied":void 0,onClick:()=>void navigator.clipboard.writeText(o).then(()=>d(!0))})}function g({value:o,label:i="Copy command",link:t}){return e("div",{class:"copy-line",children:[t?e("a",{href:o,target:"_blank",rel:"noreferrer",children:e("code",{children:o})}):e("code",{children:o}),e(p,{value:o,label:i})]})}export{p as a,g as b};
@@ -0,0 +1 @@
1
+ "use client";import{b as u,d as g}from"./platform-actions-aafbf038008de64f.js";import"./copy-5db9d328f8f65d82.js";import"./segmented-a3642b8169857fb1.js";import"./outcome-dialog-6323cb5300b6d3c9.js";import"./confirm-01d5814b1c5f7721.js";import"./field-c530e261587d94df.js";import{a as l}from"./action-fc8716cda7527d8c.js";import"./format-a27067f0186e78ac.js";import"./shared-init-6cad28f8cc696d91.js";import"./shared-init-6cad28f8cc696d91.js";import{$0d as f}from"./shared-init-6cad28f8cc696d91.js";import"./wular-pnext-71b727f8f5906f08-0.js";import"./shared-init-6cad28f8cc696d91.js";import{$0c as c}from"./shared-init-94883db7bc70a5a8.js";import{$1L as m,$1a as e}from"./shared-init-94883db7bc70a5a8.js";import"./shared-init-71b727f8f5906f08-2.js";import"./shared-init-71b727f8f5906f08-2.js";import{$2h as t,$2j as p}from"./shared-init-71b727f8f5906f08-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 +1 @@
1
- "use client";import{a as ne}from"./combo-df2685e277db02c0.js";import{a as J}from"./copy-0cc00656953531be.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-2a59237cb7cb0a7c.js";import"./confirm-d163e6865d66dfab.js";import"./defaults-52f30e83d7666f7a.js";import{a as A,b as B}from"./action-410bdc82c416bc01.js";import{h as D}from"./format-a27067f0186e78ac.js";import"./shared-init-ae95a674d381c095.js";import{$0B as W,$0a as z,$0j as H,$0x as j}from"./shared-init-ae95a674d381c095.js";import{$1a as L,$1d as T,$1o as G}from"./shared-init-ae95a674d381c095.js";import"./wular-pnext-6e12333f12903a62-0.js";import{$3a as q}from"./shared-init-ae95a674d381c095.js";import{$1c as f,$1e as $}from"./shared-init-962398d15ee67c92.js";import{$0L as I,$0a as e,$0b as U,$0u as x}from"./shared-init-962398d15ee67c92.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
+ "use client";import{a as ne}from"./combo-1050768988cd0347.js";import{a as J}from"./copy-5db9d328f8f65d82.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-b67ce61483dd6acb.js";import"./confirm-01d5814b1c5f7721.js";import"./defaults-52f30e83d7666f7a.js";import{a as A,b as B}from"./action-fc8716cda7527d8c.js";import{h as D}from"./format-a27067f0186e78ac.js";import"./shared-init-6cad28f8cc696d91.js";import{$2B as W,$2a as z,$2j as H,$2x as j}from"./shared-init-6cad28f8cc696d91.js";import{$0a as L,$0d as T,$0o as G}from"./shared-init-6cad28f8cc696d91.js";import"./wular-pnext-71b727f8f5906f08-0.js";import{$1a as q}from"./shared-init-6cad28f8cc696d91.js";import{$0c as f,$0e as $}from"./shared-init-94883db7bc70a5a8.js";import{$1L as I,$1a as e,$1b as U,$1u as x}from"./shared-init-94883db7bc70a5a8.js";import"./shared-init-71b727f8f5906f08-2.js";import"./shared-init-71b727f8f5906f08-2.js";import{$2c as E,$2h as b,$2j as _,$2l as R}from"./shared-init-71b727f8f5906f08-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 +1 @@
1
- import{a as e}from"./field-693bb870ad0bdee8.js";import{$0a as l,$0e as p,$0g as f}from"./shared-init-ae95a674d381c095.js";import{$1j as c}from"./shared-init-ae95a674d381c095.js";import{$0L as u,$0a as t,$0b as s,$0j as i}from"./shared-init-962398d15ee67c92.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
+ import{a as e}from"./field-c530e261587d94df.js";import{$2a as l,$2e as p,$2g as f}from"./shared-init-6cad28f8cc696d91.js";import{$0j as c}from"./shared-init-6cad28f8cc696d91.js";import{$1L as u,$1a as t,$1b as s,$1j as i}from"./shared-init-94883db7bc70a5a8.js";import{$2c as n}from"./shared-init-71b727f8f5906f08-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,4 +1,4 @@
1
- "use client";import{a as We,b as Ge,c as Ue,d as Ve}from"./agent-pills-0c0b8d40b9bfc78f.js";import{b as Qe}from"./instructions-a3d7688e421f2a08.js";import{a as x}from"./segmented-79c9c69b702e0b90.js";import{a as ze}from"./agent-toggle-5ede0c449e88cb9d.js";import{a as Oe}from"./connect-repositories-0aa9abc77b9c3d48.js";import{b as Me,c as te,f as ne,h as se,i as Fe,j as qe,k as He,l as je}from"./model-options-8d2170eebe0d061d.js";import{a as Ke}from"./notice-7d84ffab32ff24ca.js";import{b as _e}from"./types-3eca2c7f47c46054.js";import{a as E}from"./field-693bb870ad0bdee8.js";import{a as G,b as U}from"./action-410bdc82c416bc01.js";import{g as q}from"./format-a27067f0186e78ac.js";import{$2c as xe,$2d as ee}from"./shared-init-ae95a674d381c095.js";import{$0A as $e,$0B as W,$0a as _,$0h as Re,$0i as Pe,$0j as X,$0o as Be,$0t as K,$0x as De,$0z as Z}from"./shared-init-ae95a674d381c095.js";import{$1b as Ae,$1d as J,$1k as Ee,$1o as $,$1p as Te,$1q as Le,$1r as Ne}from"./shared-init-ae95a674d381c095.js";import"./wular-pnext-6e12333f12903a62-0.js";import{$1c as D}from"./shared-init-962398d15ee67c92.js";import{$0C as Ie,$0L as A,$0M as Se,$0a as e,$0b as H,$0e as ye,$0j as ke,$0r as j,$0w as Ce,$0z as Y}from"./shared-init-962398d15ee67c92.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3c as P,$3h as k,$3j as F,$3l as we}from"./shared-init-6e12333f12903a62-2.js";var V=2,Ye=({name:n,platform:i})=>e("li",{children:[e("b",{children:["@",n]})," on ",i]},`${i} ${n}`);function Je({agent:n,actions:i,back:v}){return e(P,{children:[e(Pe,{}),e("header",{class:"hero",children:[e("span",{class:"hero-mark",children:q(n.name)}),e("div",{class:"grow",children:[v,e("div",{class:"title-row",children:[e("h1",{children:n.name}),e(Ve,{agent:n}),n.settings?.disabled?e(ze,{agent:n,link:!0}):null]}),e("p",{class:"lead",children:n.description??"No description yet."})]}),i||n.handles?.length?e("div",{class:"hero-side",children:[i?e("div",{class:"actions",children:i}):null,n.handles?.length?e("ul",{class:"handles",title:"Mention it on its platforms by these names",children:[n.handles.slice(0,V).map(Ye),n.handles.length>V?e("li",{children:e(Ee,{label:`+${n.handles.length-V} more`,children:e("ul",{class:"handles",children:n.handles.slice(V).map(Ye)})})}):null]}):null]}):null]})]})}function Xe({port:n}){return e(Ae,{title:"Receive platform events",note:`Expose port ${n} 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 ",n," with one of these."]}),e("ul",{class:"steps-list",children:[e("li",{children:e("code",{children:["ngrok http ",n]})}),e("li",{children:e("code",{children:["cloudflared tunnel --url http://localhost:",n]})}),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.-]+$/,bt=n=>/^[0-9a-f]{12,}$/i.test(n)?n.slice(0,7):n;function wt({preview:n,onDone:i}){let[v,m]=k(new Set),h=U({leaves:!0});if(n.failed)return null;if(!n.agents)return e(J,{label:`Reading ${n.repo}`,h:180,late:!0});if(!n.agents.length)return e("p",{class:"muted",children:[n.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=n.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 D.agents.import(n.repo,void 0,r)).imported))},children:[e("ul",{class:"picks-list",children:n.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(Ne,{value:o.id}),o.version?e($,{children:["v",o.version,o.commit?` \xB7 ${bt(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 ",n.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:n,connectLabel:i,tunnel:v,port:m}){let h=_(),r=W(),[o,b]=k(),[d,O]=k(""),[S,R]=k(),y=we("");F(()=>{n&&D.repositories.list().then(c=>b(c.map(L=>L.repo))).catch(c=>{b([]),G(c)})},[]);let f=c=>{y.current=c,R({repo:c}),D.agents.preview(c).then(({agents:L})=>y.current===c&&R({repo:c,agents:L})).catch(L=>{y.current===c&&(R({repo:c,failed:!0}),G(L))})},N=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(),s=(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:[n?e(K,{value:d,label:"Search repositories or type owner/repo",onInput:O}):e(P,{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 Oe(`/dash/${r}/agents/new?template=import`).catch(G),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=>O(c.currentTarget.value)}),e(A,{type:"submit",variant:"outline",children:"Look up"})]})]}),n?e("div",{class:"repo-list scroll-box",role:"list",children:o?e(P,{children:[w?e(X,{"aria-pressed":S?.repo===w,icon:j,title:w,onClick:()=>f(w)}):null,s.map(c=>e(X,{"aria-pressed":S?.repo===c,icon:j,title:c,onClick:()=>f(c)},c)),!s.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,!n&&v?e(Xe,{port:m}):null]}),e("div",{class:"import-preview",children:S?e(P,{children:[e("h3",{children:["Agents in ",S.repo]}),e(wt,{preview:S,onDone:N},S.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"]],nt=n=>n[Math.floor(Math.random()*n.length)],st=()=>`${nt(tt[0])} ${nt(tt[1])}`;var yt={"read-only":"reads the repository and changes nothing","workspace-write":"edits files inside the repository",auto:"edits files, reaches the network, and asks when it needs more"},kt=[["read","Read-only"],["write","Read-write"]],Ct={read:"reads its platforms and connections; replies and reacts in the conversation",write:"also changes things there, like opening pull requests"},It=[["blank","Blank","start from nothing"],["helper","Slack helper","answers questions in chat"],["reviewer","GitHub reviewer","reviews pull requests"]],St=6,Rt=`Review each pull request for bugs, risky changes and missing tests.
1
+ "use client";import{a as We,b as Ge,c as Ue,d as Ve}from"./agent-pills-bd32cb89331aff7e.js";import{b as Qe}from"./instructions-3ea5afeea1992bf2.js";import{a as x}from"./segmented-a3642b8169857fb1.js";import{a as ze}from"./agent-toggle-a45b95908d62f926.js";import{a as Oe}from"./connect-repositories-49098298b3a82647.js";import{b as Me,c as te,f as ne,h as se,i as Fe,j as qe,k as He,l as je}from"./model-options-8d2170eebe0d061d.js";import{b as _e}from"./types-3eca2c7f47c46054.js";import{a as Ke}from"./notice-8939183c8a889bae.js";import{a as E}from"./field-c530e261587d94df.js";import{a as G,b as U}from"./action-fc8716cda7527d8c.js";import{g as q}from"./format-a27067f0186e78ac.js";import{$3c as xe,$3d as ee}from"./shared-init-6cad28f8cc696d91.js";import{$2A as $e,$2B as W,$2a as _,$2h as Re,$2i as Pe,$2j as X,$2o as Be,$2t as K,$2x as De,$2z as Z}from"./shared-init-6cad28f8cc696d91.js";import{$0b as Ae,$0d as J,$0k as Ee,$0o as $,$0p as Te,$0q as Le,$0r as Ne}from"./shared-init-6cad28f8cc696d91.js";import"./wular-pnext-71b727f8f5906f08-0.js";import{$0c as D}from"./shared-init-94883db7bc70a5a8.js";import{$1C as Ie,$1L as A,$1M as Se,$1a as e,$1b as H,$1e as ye,$1j as ke,$1r as j,$1w as Ce,$1z as Y}from"./shared-init-94883db7bc70a5a8.js";import"./shared-init-71b727f8f5906f08-2.js";import"./shared-init-71b727f8f5906f08-2.js";import{$2c as P,$2h as k,$2j as F,$2l as we}from"./shared-init-71b727f8f5906f08-2.js";var V=2,Ye=({name:n,platform:i})=>e("li",{children:[e("b",{children:["@",n]})," on ",i]},`${i} ${n}`);function Je({agent:n,actions:i,back:v}){return e(P,{children:[e(Pe,{}),e("header",{class:"hero",children:[e("span",{class:"hero-mark",children:q(n.name)}),e("div",{class:"grow",children:[v,e("div",{class:"title-row",children:[e("h1",{children:n.name}),e(Ve,{agent:n}),n.settings?.disabled?e(ze,{agent:n,link:!0}):null]}),e("p",{class:"lead",children:n.description??"No description yet."})]}),i||n.handles?.length?e("div",{class:"hero-side",children:[i?e("div",{class:"actions",children:i}):null,n.handles?.length?e("ul",{class:"handles",title:"Mention it on its platforms by these names",children:[n.handles.slice(0,V).map(Ye),n.handles.length>V?e("li",{children:e(Ee,{label:`+${n.handles.length-V} more`,children:e("ul",{class:"handles",children:n.handles.slice(V).map(Ye)})})}):null]}):null]}):null]})]})}function Xe({port:n}){return e(Ae,{title:"Receive platform events",note:`Expose port ${n} 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 ",n," with one of these."]}),e("ul",{class:"steps-list",children:[e("li",{children:e("code",{children:["ngrok http ",n]})}),e("li",{children:e("code",{children:["cloudflared tunnel --url http://localhost:",n]})}),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.-]+$/,bt=n=>/^[0-9a-f]{12,}$/i.test(n)?n.slice(0,7):n;function wt({preview:n,onDone:i}){let[v,m]=k(new Set),h=U({leaves:!0});if(n.failed)return null;if(!n.agents)return e(J,{label:`Reading ${n.repo}`,h:180,late:!0});if(!n.agents.length)return e("p",{class:"muted",children:[n.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=n.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 D.agents.import(n.repo,void 0,r)).imported))},children:[e("ul",{class:"picks-list",children:n.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(Ne,{value:o.id}),o.version?e($,{children:["v",o.version,o.commit?` \xB7 ${bt(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 ",n.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:n,connectLabel:i,tunnel:v,port:m}){let h=_(),r=W(),[o,b]=k(),[d,O]=k(""),[S,R]=k(),y=we("");F(()=>{n&&D.repositories.list().then(c=>b(c.map(L=>L.repo))).catch(c=>{b([]),G(c)})},[]);let f=c=>{y.current=c,R({repo:c}),D.agents.preview(c).then(({agents:L})=>y.current===c&&R({repo:c,agents:L})).catch(L=>{y.current===c&&(R({repo:c,failed:!0}),G(L))})},N=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(),s=(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:[n?e(K,{value:d,label:"Search repositories or type owner/repo",onInput:O}):e(P,{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 Oe(`/dash/${r}/agents/new?template=import`).catch(G),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=>O(c.currentTarget.value)}),e(A,{type:"submit",variant:"outline",children:"Look up"})]})]}),n?e("div",{class:"repo-list scroll-box",role:"list",children:o?e(P,{children:[w?e(X,{"aria-pressed":S?.repo===w,icon:j,title:w,onClick:()=>f(w)}):null,s.map(c=>e(X,{"aria-pressed":S?.repo===c,icon:j,title:c,onClick:()=>f(c)},c)),!s.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,!n&&v?e(Xe,{port:m}):null]}),e("div",{class:"import-preview",children:S?e(P,{children:[e("h3",{children:["Agents in ",S.repo]}),e(wt,{preview:S,onDone:N},S.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"]],nt=n=>n[Math.floor(Math.random()*n.length)],st=()=>`${nt(tt[0])} ${nt(tt[1])}`;var yt={"read-only":"reads the repository and changes nothing","workspace-write":"edits files inside the repository",auto:"edits files, reaches the network, and asks when it needs more"},kt=[["read","Read-only"],["write","Read-write"]],Ct={read:"reads its platforms and connections; replies and reacts in the conversation",write:"also changes things there, like opening pull requests"},It=[["blank","Blank","start from nothing"],["helper","Slack helper","answers questions in chat"],["reviewer","GitHub reviewer","reviews pull requests"]],St=6,Rt=`Review each pull request for bugs, risky changes and missing tests.
2
2
  Comment on the lines that matter and keep it short.
3
3
  When mentioned, answer questions about the code and cite file paths.`,Pt=`Answer the team's questions in the thread.
4
4
  Read the code before you answer, cite file paths, and say when you are unsure.
@@ -1 +1 @@
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-2a59237cb7cb0a7c.js";import"./confirm-d163e6865d66dfab.js";import"./defaults-52f30e83d7666f7a.js";import"./action-410bdc82c416bc01.js";import"./format-a27067f0186e78ac.js";import"./shared-init-ae95a674d381c095.js";import{$0j as d,$0x as m}from"./shared-init-ae95a674d381c095.js";import{$1o as a}from"./shared-init-ae95a674d381c095.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-ae95a674d381c095.js";import"./shared-init-962398d15ee67c92.js";import{$0L as E,$0a as t}from"./shared-init-962398d15ee67c92.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
+ "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-b67ce61483dd6acb.js";import"./confirm-01d5814b1c5f7721.js";import"./defaults-52f30e83d7666f7a.js";import"./action-fc8716cda7527d8c.js";import"./format-a27067f0186e78ac.js";import"./shared-init-6cad28f8cc696d91.js";import{$2j as d,$2x as m}from"./shared-init-6cad28f8cc696d91.js";import{$0o as a}from"./shared-init-6cad28f8cc696d91.js";import"./wular-pnext-71b727f8f5906f08-0.js";import"./shared-init-6cad28f8cc696d91.js";import"./shared-init-94883db7bc70a5a8.js";import{$1L as E,$1a as t}from"./shared-init-94883db7bc70a5a8.js";import"./shared-init-71b727f8f5906f08-2.js";import"./shared-init-71b727f8f5906f08-2.js";import{$2c as c,$2h as v}from"./shared-init-71b727f8f5906f08-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 +1 @@
1
- import{$0a as n}from"./shared-init-962398d15ee67c92.js";function m({label:l,hint:e,group:o,children:a}){return n(o?"div":"label",{class:"field",children:[n("span",{children:[l,e?n("small",{children:e}):null]}),a]})}export{m as a};
1
+ import{$1a as n}from"./shared-init-94883db7bc70a5a8.js";function m({label:l,hint:e,group:o,children:a}){return n(o?"div":"label",{class:"field",children:[n("span",{children:[l,e?n("small",{children:e}):null]}),a]})}export{m as a};
@@ -1,2 +1,2 @@
1
- import{$0L as x,$0a as t}from"./shared-init-962398d15ee67c92.js";import{$3b as g,$3h as f,$3k as C,$3l as b}from"./shared-init-6e12333f12903a62-2.js";function v({lines:c=10,class:e,children:o}){let n=b(null),[p,h]=f(!1),[l,u]=f(!1);return C(()=>{let s=n.current,r=()=>h(l||s.scrollHeight>s.clientHeight+1);r();let i=new ResizeObserver(r);i.observe(s);let a=new MutationObserver(r);return a.observe(s,{childList:!0,subtree:!0,characterData:!0}),()=>{i.disconnect(),a.disconnect()}},[l]),t("div",{class:`collapse${p?" long":""}${l?" open":""}`,style:`--lines:${c}`,children:[t("div",{class:e?`collapse-box ${e}`:"collapse-box",ref:n,children:o}),p?t(x,{variant:"ghost",size:"sm",class:"more-toggle","aria-expanded":l,onClick:()=>u(!l),children:l?"Show less":"Show more"}):null]})}var S=/`([^`\n]+)`|\*\*(.+?)\*\*|__(.+?)__|\*(\S(?:.*?\S)?)\*|(?<!\w)_(\S(?:.*?\S)?)_(?!\w)|\[([^\]\n]+)\]\(([^)\s]+)\)/g,_=/^(?:https?:|mailto:)/i,w=/^\s*(```|~~~)/,$=/^(#{1,6})\s+(.*?)(?:\s+#+)?\s*$/,E=/^\s*(?:([-*+])|\d+[.)])\s+(.*)$/,I=/^\s*(?:#{1,6}\s|```|~~~|[-*+]\s|\d+[.)]\s)/;function d(c){let e=[],o=0;for(let n of c.matchAll(S)){let[p,h,l,u,s,r,i,a]=n;n.index>o&&e.push(c.slice(o,n.index)),h?e.push(t("code",{children:h})):l||u?e.push(t("strong",{children:d(l||u)})):s||r?e.push(t("em",{children:d(s||r)})):_.test(a)?e.push(t("a",{class:"link",href:a,target:"_blank",rel:"noopener noreferrer",children:d(i)})):e.push(...d(i)),o=n.index+p.length}return o<c.length&&e.push(c.slice(o)),e}function L(c){let e=c.split(/\r?\n/),o=[];for(let n=0;n<e.length;){let p=e[n],h=w.exec(p),l=$.exec(p),u=E.exec(p);if(h){let s=e.findIndex((i,a)=>a>n&&i.trim().startsWith(h[1])),r=s<0?e.length:s;o.push(t("pre",{children:t("code",{children:e.slice(n+1,r).join(`
1
+ import{$1L as x,$1a as t}from"./shared-init-94883db7bc70a5a8.js";import{$2b as g,$2h as f,$2k as C,$2l as b}from"./shared-init-71b727f8f5906f08-2.js";function v({lines:c=10,class:e,children:o}){let n=b(null),[p,h]=f(!1),[l,u]=f(!1);return C(()=>{let s=n.current,r=()=>h(l||s.scrollHeight>s.clientHeight+1);r();let i=new ResizeObserver(r);i.observe(s);let a=new MutationObserver(r);return a.observe(s,{childList:!0,subtree:!0,characterData:!0}),()=>{i.disconnect(),a.disconnect()}},[l]),t("div",{class:`collapse${p?" long":""}${l?" open":""}`,style:`--lines:${c}`,children:[t("div",{class:e?`collapse-box ${e}`:"collapse-box",ref:n,children:o}),p?t(x,{variant:"ghost",size:"sm",class:"more-toggle","aria-expanded":l,onClick:()=>u(!l),children:l?"Show less":"Show more"}):null]})}var S=/`([^`\n]+)`|\*\*(.+?)\*\*|__(.+?)__|\*(\S(?:.*?\S)?)\*|(?<!\w)_(\S(?:.*?\S)?)_(?!\w)|\[([^\]\n]+)\]\(([^)\s]+)\)/g,_=/^(?:https?:|mailto:)/i,w=/^\s*(```|~~~)/,$=/^(#{1,6})\s+(.*?)(?:\s+#+)?\s*$/,E=/^\s*(?:([-*+])|\d+[.)])\s+(.*)$/,I=/^\s*(?:#{1,6}\s|```|~~~|[-*+]\s|\d+[.)]\s)/;function d(c){let e=[],o=0;for(let n of c.matchAll(S)){let[p,h,l,u,s,r,i,a]=n;n.index>o&&e.push(c.slice(o,n.index)),h?e.push(t("code",{children:h})):l||u?e.push(t("strong",{children:d(l||u)})):s||r?e.push(t("em",{children:d(s||r)})):_.test(a)?e.push(t("a",{class:"link",href:a,target:"_blank",rel:"noopener noreferrer",children:d(i)})):e.push(...d(i)),o=n.index+p.length}return o<c.length&&e.push(c.slice(o)),e}function L(c){let e=c.split(/\r?\n/),o=[];for(let n=0;n<e.length;){let p=e[n],h=w.exec(p),l=$.exec(p),u=E.exec(p);if(h){let s=e.findIndex((i,a)=>a>n&&i.trim().startsWith(h[1])),r=s<0?e.length:s;o.push(t("pre",{children:t("code",{children:e.slice(n+1,r).join(`
2
2
  `)})})),n=r+1}else if(l)o.push(g(`h${Math.min(l[1].length+2,6)}`,null,d(l[2]))),n++;else if(u){let s=!u[1],r=[];for(let i;(i=E.exec(e[n]??""))&&!i[1]===s;n++)r.push(t("li",{children:d(i[2])}));o.push(s?t("ol",{children:r}):t("ul",{children:r}))}else if(!p.trim())n++;else{let s=[];for(;e[n]?.trim()&&(!s.length||!I.test(e[n]));n++)s.length&&s.push(t("br",{})),s.push(...d(e[n]));o.push(t("p",{children:s}))}}return o}function G({text:c}){return t(v,{class:"body md",children:L(c)})}export{v as a,L as b,G as c};
@@ -0,0 +1 @@
1
+ "use client";import{b as a,c as b}from"./instructions-3ea5afeea1992bf2.js";import"./shared-init-94883db7bc70a5a8.js";import"./shared-init-71b727f8f5906f08-2.js";export{b as Instructions,a as markdown};
@@ -1 +1 @@
1
- import{a as p}from"./confirm-d163e6865d66dfab.js";import{g as R}from"./defaults-52f30e83d7666f7a.js";import{a as v}from"./action-410bdc82c416bc01.js";import{$0j as y}from"./shared-init-ae95a674d381c095.js";import{$1a as C,$1j as h}from"./shared-init-ae95a674d381c095.js";import{$1c as f}from"./shared-init-962398d15ee67c92.js";import{$0L as b,$0a as e,$0b as d,$0y as g}from"./shared-init-962398d15ee67c92.js";import{$3h as u,$3l as c}from"./shared-init-6e12333f12903a62-2.js";function q(o){let[r,t]=u(o),n=c(0),i=c(o);return{value:r,patch:a=>{let s=++n.current;return t(m=>R(m,a)),f.config.patch(a).then(m=>(i.current=m,s===n.current&&t(m),!0),m=>(s===n.current&&(t(i.current),v(m)),!1))}}}function E({fields:o,onAdd:r}){return e("form",{class:"add-row",method:"post",onSubmit:async t=>{t.preventDefault();let n=t.currentTarget,i=Object.fromEntries([...new FormData(n)].map(([l,a])=>[l,String(a).trim()]));Object.values(i).some(l=>!l)||await r(i)&&n.reset()},children:[o.map(([t,n])=>e("input",{name:t,placeholder:n,"aria-label":n,autocomplete:"off"},t)),e(b,{type:"submit",children:"Add"})]})}function k(o){let[r,t]=u(!1),[n,i]=u(!1);if(!o)return{};let{title:l,body:a,label:s="Remove",onRemove:m}=o;return{item:e(y,{title:s,danger:!0,onClick:()=>t(!0)}),dialog:r?e(p,{open:!0,title:l,body:a,confirmLabel:s,busy:n,onClose:()=>t(!1),onConfirm:()=>{i(!0),m().finally(()=>{i(!1),t(!1)})}}):null}}var N=(o,r)=>r==="workspace"?`Replace ${o} for the workspace?`:`Replace your ${o}?`;function V(){let[o,r]=u();return{ask:(t,n)=>r({title:t,run:n}),dialog:o?e(p,{open:!0,title:o.title,body:"Tasks use the new one from now on.",confirmLabel:"Replace",onClose:()=>r(void 0),onConfirm:()=>{r(void 0),o.run()}}):null}}function z({title:o,badges:r,sub:t,actions:n,menu:i,alignMenu:l,remove:a}){let s=k(a);return e("tr",{children:[e("td",{children:[e("span",{class:"row-title",children:[e("b",{children:o}),r]}),t?e("span",{class:"sub mono",children:t}):null]}),e("td",{class:"acts",children:[n,i||s.item||l?e(h,{button:"icon",label:"Actions",summary:e(d,{d:g}),children:[i,s.item,i||s.item?null:e("p",{class:"menu-none",children:"No options"})]}):null,s.dialog]})]})}function G({title:o,count:r,children:t,add:n}){return e(C,{title:o,count:r,children:[e("div",{class:"table-scroll",children:e("table",{class:"rows settings",children:e("tbody",{children:t})})}),n]})}export{q as a,E as b,k as c,N as d,V as e,z as f,G as g};
1
+ import{a as p}from"./confirm-01d5814b1c5f7721.js";import{g as R}from"./defaults-52f30e83d7666f7a.js";import{a as v}from"./action-fc8716cda7527d8c.js";import{$2j as y}from"./shared-init-6cad28f8cc696d91.js";import{$0a as C,$0j as h}from"./shared-init-6cad28f8cc696d91.js";import{$0c as f}from"./shared-init-94883db7bc70a5a8.js";import{$1L as b,$1a as e,$1b as d,$1y as g}from"./shared-init-94883db7bc70a5a8.js";import{$2h as u,$2l as c}from"./shared-init-71b727f8f5906f08-2.js";function q(o){let[r,t]=u(o),n=c(0),i=c(o);return{value:r,patch:a=>{let s=++n.current;return t(m=>R(m,a)),f.config.patch(a).then(m=>(i.current=m,s===n.current&&t(m),!0),m=>(s===n.current&&(t(i.current),v(m)),!1))}}}function E({fields:o,onAdd:r}){return e("form",{class:"add-row",method:"post",onSubmit:async t=>{t.preventDefault();let n=t.currentTarget,i=Object.fromEntries([...new FormData(n)].map(([l,a])=>[l,String(a).trim()]));Object.values(i).some(l=>!l)||await r(i)&&n.reset()},children:[o.map(([t,n])=>e("input",{name:t,placeholder:n,"aria-label":n,autocomplete:"off"},t)),e(b,{type:"submit",children:"Add"})]})}function k(o){let[r,t]=u(!1),[n,i]=u(!1);if(!o)return{};let{title:l,body:a,label:s="Remove",onRemove:m}=o;return{item:e(y,{title:s,danger:!0,onClick:()=>t(!0)}),dialog:r?e(p,{open:!0,title:l,body:a,confirmLabel:s,busy:n,onClose:()=>t(!1),onConfirm:()=>{i(!0),m().finally(()=>{i(!1),t(!1)})}}):null}}var N=(o,r)=>r==="workspace"?`Replace ${o} for the workspace?`:`Replace your ${o}?`;function V(){let[o,r]=u();return{ask:(t,n)=>r({title:t,run:n}),dialog:o?e(p,{open:!0,title:o.title,body:"Tasks use the new one from now on.",confirmLabel:"Replace",onClose:()=>r(void 0),onConfirm:()=>{r(void 0),o.run()}}):null}}function z({title:o,badges:r,sub:t,actions:n,menu:i,alignMenu:l,remove:a}){let s=k(a);return e("tr",{children:[e("td",{children:[e("span",{class:"row-title",children:[e("b",{children:o}),r]}),t?e("span",{class:"sub mono",children:t}):null]}),e("td",{class:"acts",children:[n,i||s.item||l?e(h,{button:"icon",label:"Actions",summary:e(d,{d:g}),children:[i,s.item,i||s.item?null:e("p",{class:"menu-none",children:"No options"})]}):null,s.dialog]})]})}function G({title:o,count:r,children:t,add:n}){return e(C,{title:o,count:r,children:[e("div",{class:"table-scroll",children:e("table",{class:"rows settings",children:e("tbody",{children:t})})}),n]})}export{q as a,E as b,k as c,N as d,V as e,z as f,G as g};
@@ -1 +1 @@
1
- "use client";import{a as le}from"./combo-df2685e277db02c0.js";import{a as j,b as X,d as J,f as G,h as Q,m as W}from"./model-options-8d2170eebe0d061d.js";import{a as ee,d as oe,e as te,f as ne,g as se}from"./list-2a59237cb7cb0a7c.js";import"./confirm-d163e6865d66dfab.js";import{a as p}from"./field-693bb870ad0bdee8.js";import"./defaults-52f30e83d7666f7a.js";import{b as V}from"./action-410bdc82c416bc01.js";import{h as H}from"./format-a27067f0186e78ac.js";import"./shared-init-ae95a674d381c095.js";import{$0j as Z,$0x as U}from"./shared-init-ae95a674d381c095.js";import{$1b as Y,$1d as q,$1o as _}from"./shared-init-ae95a674d381c095.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-ae95a674d381c095.js";import{$1c as F}from"./shared-init-962398d15ee67c92.js";import{$0L as N,$0a as e}from"./shared-init-962398d15ee67c92.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3c as T,$3h as c,$3l as D}from"./shared-init-6e12333f12903a62-2.js";var ce=[["endpoint","Endpoint"],["alias","Engine alias"]],me=[["claude","Claude"],["codex","Codex"]],ue={claude:"sonnet",codex:"sol"},z=W,ae=z.at(-1),re=E=>E.split("/").pop().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,""),pe=(E,f)=>E.find(v=>!(v in f));function fe({builtin:E,credentials:f,admin:v,taken:B,efforts:a,onAdd:I}){let[g,C]=c("endpoint"),l=e(p,{label:"Kind",group:!0,children:e(U,{label:"Kind",options:ce,value:g,onChange:C})}),[h,y]=c("claude"),[A,K]=c(""),[M,m]=c(!1),[o,s]=c(0),n=te(),u=E[h]??{},P=u[ue[h]]??Object.values(u)[0],k=async(b,i)=>{m(!0);let d=g==="alias"?await I(()=>F.models.alias(i.name,[h,i.model,A].filter(Boolean).join(":"))):await I(async()=>{let S=i.envKey||"OPENAI_API_KEY";return i.key&&await F.credentials.add({env:{[S]:i.key},workspace:i.scope==="workspace"}),F.models.add({name:i.name,baseUrl:i.baseUrl,model:i.model,envKey:S})});m(!1),d&&(b.reset(),s(o+1))};return e(Y,{title:"Add a model",note:"A short name for an engine model, or an OpenAI-compatible endpoint",children:[e("form",{class:"add-form",method:"post",onSubmit:b=>{b.preventDefault();let i=b.currentTarget,d=Object.fromEntries([...new FormData(i)].map(([R,L])=>[R,String(L).trim()]));if(g==="endpoint"&&!d.name&&(d.name=re(d.model??"")),!d.name||!d.model||g==="endpoint"&&!d.baseUrl)return;let S=d.envKey||"OPENAI_API_KEY",$=d.scope||"personal";if(g==="endpoint"&&d.key&&f?.some(R=>R.name===S&&R.scope===$))return n.ask(oe(S,$),()=>void k(i,d));k(i,d)},children:g==="alias"?e("div",{class:"add-grid",children:[l,e(p,{label:"Engine",group:!0,children:e(U,{label:"Engine",options:me,value:h,onChange:y})}),e(p,{label:"Model id",children:e("input",{name:"model",placeholder:P??"model id",autocomplete:"off"})}),e(p,{label:"Short name",hint:"used as --model",children:e("input",{name:"name",placeholder:pe(["fast","deep","quick"],B),autocomplete:"off",pattern:"[a-z0-9][a-z0-9\\-]*"})}),e(p,{label:"Effort",hint:"optional",group:!0,children:e(U,{label:"Effort",options:[["",Q(a[h])],...X],value:A,onChange:K})}),e(N,{type:"submit",loading:M,children:"Add"})]}):e(ge,{kind:l,credentials:f,admin:v,busy:M},o)}),n.dialog]})}function ge({kind:E,credentials:f,admin:v,busy:B}){let[a,I]=c(z[0]??ae),[g,C]=c(a.baseUrl),[l,h]=c(a.envKey),[y,A]=c(""),[K,M]=c(v?"workspace":"personal"),[m,o]=c(null),s=D(0),[n,u]=c(""),P=(t,r)=>!!t&&!!f?.some(w=>w.name===t&&w.scope===r),k=(t,r=K)=>P(t,r)?r:!v&&P(t,"workspace")?"workspace":void 0,b=k(l,v?"workspace":"personal"),i=t=>t==="workspace"?"the workspace's":"your",[d,S]=c(!1),$=D(),R=(t,r,w)=>{let de=++s.current;if(!t.trim())return o(null);S(!0),F.models.probe({baseUrl:t.trim(),...r.trim()?{envKey:r.trim()}:{},...w.trim()?{key:w.trim()}:{}}).catch(O=>({reachable:!1,modelListed:null,models:null,detail:H(O)})).then(O=>{de===s.current&&(S(!1),o(O.models?{...O,models:[...O.models].sort()}:O))})},L=(t,r,w)=>{clearTimeout($.current),$.current=setTimeout(()=>R(t,r,w),250)},ie=m?m.reachable?m.models?`${m.models.length} listed`:"reachable, no model list":/HTTP 40[13]/.test(m.detail)?"key rejected":m.detail:void 0,x=a.needsKey&&f?e("div",{class:"add-grid",children:[e(p,{label:"API key",hint:e(T,{children:[k(l)?`uses ${i(k(l))} saved ${l}; enter one to replace it`:`a new key, stored as ${l}`,a.keyUrl?e(T,{children:[", ",e("a",{class:"link",href:a.keyUrl,target:"_blank",rel:"noopener noreferrer",children:"get a key"})]}):null]}),children:e("input",{name:"key",type:"password",autocomplete:"off",placeholder:k(l)?"Leave empty to use the saved key":`${a.name} API key`,value:y,onInput:t=>{A(t.currentTarget.value),L(g,l,t.currentTarget.value)}})}),v?e(p,{label:"Scope",group:!0,children:e(U,{label:"Scope",name:"scope",options:J,value:K,onChange:M})}):null]}):null;return e(T,{children:[e("div",{class:"add-grid",children:[E,e(p,{label:"Provider",group:!0,children:e(U,{label:"Provider",name:"provider",options:z.map(t=>[t.id,t.name]),value:a.id,onChange:t=>{let r=z.find(w=>w.id===t)??ae;I(r),C(r.baseUrl),h(r.envKey),o(null),(y.trim()||k(r.envKey)||!r.needsKey)&&R(r.baseUrl,r.envKey,y)}})}),e(p,{label:"Model id",group:!0,hint:d?e(q,{label:"Fetching models",inline:!0,dots:!0}):ie,children:e(le,{label:"Model id",onOpen:()=>{!m&&!d&&R(g,l,y)},name:"model",options:m?.models??[],placeholder:m?.models?.[0]??"qwen3-coder",value:n,onChange:u})}),e(p,{label:"Short name",hint:"used as --model; defaults to the model id",children:e("input",{name:"name",placeholder:re(n)||"kimi",autocomplete:"off",pattern:"[a-z0-9][a-z0-9\\-]*"})})]}),x&&b?e("details",{class:"add-more",children:[e("summary",{children:["API key \xB7 uses ",i(b)," saved ",l]}),x]},l):x,e("div",{class:"add-foot",children:[e("details",{class:"add-more",open:a.id==="other"||void 0,children:[e("summary",{children:"Advanced"}),e("div",{class:"add-grid",children:[e(p,{label:"Base URL",children:e("input",{name:"baseUrl",type:"url",placeholder:"http://localhost:11434/v1",autocomplete:"off",value:g,onInput:t=>{C(t.currentTarget.value),L(t.currentTarget.value,l,y)}})}),e(p,{label:"Key variable",children:e("input",{name:"envKey",class:"mono",placeholder:"OPENAI_API_KEY",autocomplete:"off",pattern:"[A-Za-z_][A-Za-z0-9_]*",value:l,onInput:t=>h(t.currentTarget.value)})})]})]}),e(N,{type:"submit",loading:B,children:"Add model"})]})]})}function Me({first:E,config:f,credentials:v,admin:B}){let[a,I]=c(E),g=V(),C=ee(f.config),l=(o,s)=>g.run("send",async()=>{let n=await o();I(u=>({...u,models:n.models??{}}))},{toast:s}),h=o=>C.value.engines?.[o]?.model??f.effective.engines?.[o]?.model,y=o=>a.models[o]?.disabled===!0,A=C.value.chain??f.effective.chain??j,K=Object.entries(a.models).filter(([,o])=>o.provider||o.baseUrl),M=[...Object.entries(a.builtin).flatMap(([o,s])=>Object.entries(s).filter(([n])=>!K.some(([u])=>u===n)).map(([n,u])=>({name:n,engine:o,target:u,entry:a.models[n],removable:!1}))),...K.map(([o,s])=>({name:o,engine:s.provider??"custom",target:s.baseUrl?`${s.model} \xB7 ${s.baseUrl}`:`${s.model}${s.effort?` \xB7 ${s.effort}`:""}`,entry:s,removable:!0}))],m=[...new Set([...A,...j])].map(o=>[o,M.filter(s=>s.engine===o)]).filter(([,o])=>o.length);return e(T,{children:[e(fe,{builtin:a.builtin,credentials:v,admin:B,taken:{...a.models,...Object.assign({},...Object.values(a.builtin))},efforts:Object.fromEntries(j.map(o=>[o,C.value.engines?.[o]?.effort??f.effective.engines?.[o]?.effort])),onAdd:o=>l(o,"Not saved")}),m.map(([o,s])=>e(se,{title:G[o]??o,count:s.length,children:s.map(({name:n,target:u,entry:P,removable:k})=>{let b=[n,u].includes(h(o)??"");return e(ne,{title:n,badges:e(T,{children:[b&&A[0]===o?e(_,{tone:"acc",children:"default for new tasks"}):null,b&&A[0]!==o?e(_,{children:["default for ",G[o]??o]}):null,P?.disabled?e(_,{children:"off"}):null]}),sub:u===n?void 0:`\u2192 ${u}`,actions:b||P?.disabled?null:e(N,{variant:"ghost",size:"sm",onClick:()=>void C.patch({engines:{[o]:{model:n}}}),children:"Make default"}),menu:e(Z,{title:y(n)?"Enable":"Disable",onClick:()=>void l(()=>F.models[y(n)?"enable":"disable"](n))}),remove:k?{title:`Remove ${n}?`,body:"Tasks that ask for it stop running.",onRemove:()=>l(()=>F.models.remove(n))}:void 0},n)})},o))]})}export{Me as ModelsList};
1
+ "use client";import{a as le}from"./combo-1050768988cd0347.js";import{a as j,b as X,d as J,f as G,h as Q,m as W}from"./model-options-8d2170eebe0d061d.js";import{a as ee,d as oe,e as te,f as ne,g as se}from"./list-b67ce61483dd6acb.js";import"./confirm-01d5814b1c5f7721.js";import{a as p}from"./field-c530e261587d94df.js";import"./defaults-52f30e83d7666f7a.js";import{b as V}from"./action-fc8716cda7527d8c.js";import{h as H}from"./format-a27067f0186e78ac.js";import"./shared-init-6cad28f8cc696d91.js";import{$2j as Z,$2x as U}from"./shared-init-6cad28f8cc696d91.js";import{$0b as Y,$0d as q,$0o as _}from"./shared-init-6cad28f8cc696d91.js";import"./wular-pnext-71b727f8f5906f08-0.js";import"./shared-init-6cad28f8cc696d91.js";import{$0c as F}from"./shared-init-94883db7bc70a5a8.js";import{$1L as N,$1a as e}from"./shared-init-94883db7bc70a5a8.js";import"./shared-init-71b727f8f5906f08-2.js";import"./shared-init-71b727f8f5906f08-2.js";import{$2c as T,$2h as c,$2l as D}from"./shared-init-71b727f8f5906f08-2.js";var ce=[["endpoint","Endpoint"],["alias","Engine alias"]],me=[["claude","Claude"],["codex","Codex"]],ue={claude:"sonnet",codex:"sol"},z=W,ae=z.at(-1),re=E=>E.split("/").pop().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,""),pe=(E,f)=>E.find(v=>!(v in f));function fe({builtin:E,credentials:f,admin:v,taken:B,efforts:a,onAdd:I}){let[g,C]=c("endpoint"),l=e(p,{label:"Kind",group:!0,children:e(U,{label:"Kind",options:ce,value:g,onChange:C})}),[h,y]=c("claude"),[A,K]=c(""),[M,m]=c(!1),[o,s]=c(0),n=te(),u=E[h]??{},P=u[ue[h]]??Object.values(u)[0],k=async(b,i)=>{m(!0);let d=g==="alias"?await I(()=>F.models.alias(i.name,[h,i.model,A].filter(Boolean).join(":"))):await I(async()=>{let S=i.envKey||"OPENAI_API_KEY";return i.key&&await F.credentials.add({env:{[S]:i.key},workspace:i.scope==="workspace"}),F.models.add({name:i.name,baseUrl:i.baseUrl,model:i.model,envKey:S})});m(!1),d&&(b.reset(),s(o+1))};return e(Y,{title:"Add a model",note:"A short name for an engine model, or an OpenAI-compatible endpoint",children:[e("form",{class:"add-form",method:"post",onSubmit:b=>{b.preventDefault();let i=b.currentTarget,d=Object.fromEntries([...new FormData(i)].map(([R,L])=>[R,String(L).trim()]));if(g==="endpoint"&&!d.name&&(d.name=re(d.model??"")),!d.name||!d.model||g==="endpoint"&&!d.baseUrl)return;let S=d.envKey||"OPENAI_API_KEY",$=d.scope||"personal";if(g==="endpoint"&&d.key&&f?.some(R=>R.name===S&&R.scope===$))return n.ask(oe(S,$),()=>void k(i,d));k(i,d)},children:g==="alias"?e("div",{class:"add-grid",children:[l,e(p,{label:"Engine",group:!0,children:e(U,{label:"Engine",options:me,value:h,onChange:y})}),e(p,{label:"Model id",children:e("input",{name:"model",placeholder:P??"model id",autocomplete:"off"})}),e(p,{label:"Short name",hint:"used as --model",children:e("input",{name:"name",placeholder:pe(["fast","deep","quick"],B),autocomplete:"off",pattern:"[a-z0-9][a-z0-9\\-]*"})}),e(p,{label:"Effort",hint:"optional",group:!0,children:e(U,{label:"Effort",options:[["",Q(a[h])],...X],value:A,onChange:K})}),e(N,{type:"submit",loading:M,children:"Add"})]}):e(ge,{kind:l,credentials:f,admin:v,busy:M},o)}),n.dialog]})}function ge({kind:E,credentials:f,admin:v,busy:B}){let[a,I]=c(z[0]??ae),[g,C]=c(a.baseUrl),[l,h]=c(a.envKey),[y,A]=c(""),[K,M]=c(v?"workspace":"personal"),[m,o]=c(null),s=D(0),[n,u]=c(""),P=(t,r)=>!!t&&!!f?.some(w=>w.name===t&&w.scope===r),k=(t,r=K)=>P(t,r)?r:!v&&P(t,"workspace")?"workspace":void 0,b=k(l,v?"workspace":"personal"),i=t=>t==="workspace"?"the workspace's":"your",[d,S]=c(!1),$=D(),R=(t,r,w)=>{let de=++s.current;if(!t.trim())return o(null);S(!0),F.models.probe({baseUrl:t.trim(),...r.trim()?{envKey:r.trim()}:{},...w.trim()?{key:w.trim()}:{}}).catch(O=>({reachable:!1,modelListed:null,models:null,detail:H(O)})).then(O=>{de===s.current&&(S(!1),o(O.models?{...O,models:[...O.models].sort()}:O))})},L=(t,r,w)=>{clearTimeout($.current),$.current=setTimeout(()=>R(t,r,w),250)},ie=m?m.reachable?m.models?`${m.models.length} listed`:"reachable, no model list":/HTTP 40[13]/.test(m.detail)?"key rejected":m.detail:void 0,x=a.needsKey&&f?e("div",{class:"add-grid",children:[e(p,{label:"API key",hint:e(T,{children:[k(l)?`uses ${i(k(l))} saved ${l}; enter one to replace it`:`a new key, stored as ${l}`,a.keyUrl?e(T,{children:[", ",e("a",{class:"link",href:a.keyUrl,target:"_blank",rel:"noopener noreferrer",children:"get a key"})]}):null]}),children:e("input",{name:"key",type:"password",autocomplete:"off",placeholder:k(l)?"Leave empty to use the saved key":`${a.name} API key`,value:y,onInput:t=>{A(t.currentTarget.value),L(g,l,t.currentTarget.value)}})}),v?e(p,{label:"Scope",group:!0,children:e(U,{label:"Scope",name:"scope",options:J,value:K,onChange:M})}):null]}):null;return e(T,{children:[e("div",{class:"add-grid",children:[E,e(p,{label:"Provider",group:!0,children:e(U,{label:"Provider",name:"provider",options:z.map(t=>[t.id,t.name]),value:a.id,onChange:t=>{let r=z.find(w=>w.id===t)??ae;I(r),C(r.baseUrl),h(r.envKey),o(null),(y.trim()||k(r.envKey)||!r.needsKey)&&R(r.baseUrl,r.envKey,y)}})}),e(p,{label:"Model id",group:!0,hint:d?e(q,{label:"Fetching models",inline:!0,dots:!0}):ie,children:e(le,{label:"Model id",onOpen:()=>{!m&&!d&&R(g,l,y)},name:"model",options:m?.models??[],placeholder:m?.models?.[0]??"qwen3-coder",value:n,onChange:u})}),e(p,{label:"Short name",hint:"used as --model; defaults to the model id",children:e("input",{name:"name",placeholder:re(n)||"kimi",autocomplete:"off",pattern:"[a-z0-9][a-z0-9\\-]*"})})]}),x&&b?e("details",{class:"add-more",children:[e("summary",{children:["API key \xB7 uses ",i(b)," saved ",l]}),x]},l):x,e("div",{class:"add-foot",children:[e("details",{class:"add-more",open:a.id==="other"||void 0,children:[e("summary",{children:"Advanced"}),e("div",{class:"add-grid",children:[e(p,{label:"Base URL",children:e("input",{name:"baseUrl",type:"url",placeholder:"http://localhost:11434/v1",autocomplete:"off",value:g,onInput:t=>{C(t.currentTarget.value),L(t.currentTarget.value,l,y)}})}),e(p,{label:"Key variable",children:e("input",{name:"envKey",class:"mono",placeholder:"OPENAI_API_KEY",autocomplete:"off",pattern:"[A-Za-z_][A-Za-z0-9_]*",value:l,onInput:t=>h(t.currentTarget.value)})})]})]}),e(N,{type:"submit",loading:B,children:"Add model"})]})]})}function Me({first:E,config:f,credentials:v,admin:B}){let[a,I]=c(E),g=V(),C=ee(f.config),l=(o,s)=>g.run("send",async()=>{let n=await o();I(u=>({...u,models:n.models??{}}))},{toast:s}),h=o=>C.value.engines?.[o]?.model??f.effective.engines?.[o]?.model,y=o=>a.models[o]?.disabled===!0,A=C.value.chain??f.effective.chain??j,K=Object.entries(a.models).filter(([,o])=>o.provider||o.baseUrl),M=[...Object.entries(a.builtin).flatMap(([o,s])=>Object.entries(s).filter(([n])=>!K.some(([u])=>u===n)).map(([n,u])=>({name:n,engine:o,target:u,entry:a.models[n],removable:!1}))),...K.map(([o,s])=>({name:o,engine:s.provider??"custom",target:s.baseUrl?`${s.model} \xB7 ${s.baseUrl}`:`${s.model}${s.effort?` \xB7 ${s.effort}`:""}`,entry:s,removable:!0}))],m=[...new Set([...A,...j])].map(o=>[o,M.filter(s=>s.engine===o)]).filter(([,o])=>o.length);return e(T,{children:[e(fe,{builtin:a.builtin,credentials:v,admin:B,taken:{...a.models,...Object.assign({},...Object.values(a.builtin))},efforts:Object.fromEntries(j.map(o=>[o,C.value.engines?.[o]?.effort??f.effective.engines?.[o]?.effort])),onAdd:o=>l(o,"Not saved")}),m.map(([o,s])=>e(se,{title:G[o]??o,count:s.length,children:s.map(({name:n,target:u,entry:P,removable:k})=>{let b=[n,u].includes(h(o)??"");return e(ne,{title:n,badges:e(T,{children:[b&&A[0]===o?e(_,{tone:"acc",children:"default for new tasks"}):null,b&&A[0]!==o?e(_,{children:["default for ",G[o]??o]}):null,P?.disabled?e(_,{children:"off"}):null]}),sub:u===n?void 0:`\u2192 ${u}`,actions:b||P?.disabled?null:e(N,{variant:"ghost",size:"sm",onClick:()=>void C.patch({engines:{[o]:{model:n}}}),children:"Make default"}),menu:e(Z,{title:y(n)?"Enable":"Disable",onClick:()=>void l(()=>F.models[y(n)?"enable":"disable"](n))}),remove:k?{title:`Remove ${n}?`,body:"Tasks that ask for it stop running.",onRemove:()=>l(()=>F.models.remove(n))}:void 0},n)})},o))]})}export{Me as ModelsList};
@@ -1 +1 @@
1
- import{$0a as o}from"./shared-init-962398d15ee67c92.js";function t({tone:n,slim:e,children:i}){return o("div",{class:["notice",e&&"slim",n].filter(Boolean).join(" "),role:"status",children:i})}export{t as a};
1
+ import{$1a as o}from"./shared-init-94883db7bc70a5a8.js";function t({tone:n,slim:e,children:i}){return o("div",{class:["notice",e&&"slim",n].filter(Boolean).join(" "),role:"status",children:i})}export{t as a};