@wular/coder 0.5.0 → 0.5.2
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.
- package/dist/{actions-CkMAM1Km.js → actions-C35tq9KH.js} +2 -2
- package/dist/{agent-Bi5nbUhA.js → agent-BZR4Eqdc.js} +1 -1
- package/dist/{app-server-BTpa5GBV.js → app-server-dnlLhhZb.js} +1 -1
- package/dist/{approvals-CRwkc9vB.js → approvals-C8XV7CK2.js} +1 -1
- package/dist/apps-CCqOsEZH.js +18 -0
- package/dist/async-BP5q3Une.js +3 -0
- package/dist/{auth-oCvlHitk.js → auth-CJOm9_Vh.js} +1 -1
- package/dist/builtin/coder/system.md +6 -3
- package/dist/{chat-4AiZEqKh.js → chat-BD2Fu3jU.js} +1 -1
- package/dist/cli.js +3 -3
- package/dist/{cmd-Cu3OquA_.js → cmd-BH1bmZGs.js} +34 -34
- package/dist/{config-D_RuO6gX.js → config-_32PHl9g.js} +1 -1
- package/dist/{connection-BXjn7gCC.js → connection-DNzNYpha.js} +1 -1
- package/dist/{connections-Cswv7r8Z.js → connections-B90TemYf.js} +1 -1
- package/dist/{context-CFrDYenS.js → context-DVGPu7f_.js} +1 -1
- package/dist/dash/standalone/server/build-index.json +1 -1
- package/dist/dash/standalone/server/manifest.json +1406 -1406
- package/dist/dash/standalone/server/modules-server-server-react-server/src/client/{index.54c45900f2153d34.js → index.a036e2c6ae93ec75.js} +3 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/{load.252f972b42c690e2.js → load.3e1c235ecb89201a.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/create/[id]/{page.11efd0e175db9053.js → page.ff03c26886d248d2.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{notify.59ae138dc182d7c3.js → notify.5b9c5a4ab975b01e.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{page.e9386951cedea737.js → page.6e80433ca86c927d.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{sign-out.713d3ec10951fde5.js → sign-out.e419e0eae59a1394.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{agents-grid.f989d6f2d9ece6e4.js → agents-grid.53dc6597be8d6049.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{page.0f88720e52db99a2.js → page.82a238c790c19a6c.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{layout.8d2f0997462fc958.js → layout.4a5c6f90ebaccf6f.js} +7 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{page.bc93891522c8120d.js → page.ed696703c6fb5796.js} +7 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{page.cf5cf9afe38ab0e4.js → page.12dbb62edaa16b4f.js} +11 -11
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{platform-actions.c44c7df7841719f2.js → platform-actions.1e7bb5f00112eeac.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{platform-step.6e90cbfe308f28a0.js → platform-step.45adc3fb28e7d33b.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{agent-settings-form.61de585104c2be10.js → agent-settings-form.1693e7dc34f5b94a.js} +16 -17
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{page.4d06f759984a63b3.js → page.fbbcdf8fde222f1e.js} +8 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{loading.ea2925eab1d2e594.js → loading.099f0e549e964a5c.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{page.fb069bf82b727d27.js → page.577e64210260faf2.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{page.0a472a0e269b8c01.js → page.2d10853615403293.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{versions-list.7ef7dfd5d8f5de43.js → versions-list.e6088baf4de7f41e.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{loading.007326a04f05d46c.js → loading.f0dfaf4552b8cde1.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{page.a26aa7bc6ab655f0.js → page.9f09979ad3435fe3.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/platforms/[app]/{app-cards.361918fe58349aa1.js → app-cards.adaebe98ec9d32e8.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/platforms/[app]/{page.3f60cf67517d0d31.js → page.e2dc60bbcac65b1f.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-toggle.ffbf9a8b8b2fbde7.js → agent-toggle.d795b7112534872c.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{hero.0ae015a4fbe6321e.js → hero.b74c6eb40c45b498.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{connect-repositories.9abe365f0098d358.js → connect-repositories.e27bcba279f82d7b.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{editor.6548f8f757578f90.js → editor.288736c2a52c7df4.js} +8 -8
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{import-picker.577b1d84c7ab84e1.js → import-picker.58bad50dd8e60d63.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{page.2b326d00ccef5544.js → page.83a490948f585e69.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{layout.45a09107b19f0a7e.js → layout.61ad05aceb425910.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{operator-apps.f8d679f2d06b0ebc.js → operator-apps.6f71999915848a2c.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{page.5aa3ddc669366703.js → page.4758811b7fc86d84.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{page.5a5188f0fc75dcd2.js → page.7de674df6cd0e824.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{advanced-list.73cdadb2968a39d2.js → advanced-list.851275e04f8e7305.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{connection-add.353ec01fbb814f78.js → connection-add.45a224c5e612b15f.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{connections-list.cf4061ae909272c3.js → connections-list.6cacd41c18de261d.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials-list.fc4cff0289267551.js → credentials-list.79a1355d894b8642.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials.db01de2581ac65f3.js → credentials.30db114aef2c6ff6.js} +8 -8
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{list.e7d6a422f6a869ea.js → list.fa3b9eff6657bc57.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{models-list.acb92b39cab1d11c.js → models-list.2a8f6a5679fc5c4d.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{page.95fe939e36e5be55.js → page.7681780b48e2aa3e.js} +13 -13
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{runners-list.5764eac3307d67cc.js → runners-list.e9834546550a3c2c.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{secrets-list.d316bb157f747f6c.js → secrets-list.ff9f3b3d88f2b8df.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{layout.4eb70f2de8674f93.js → layout.3f8a61434ceaa186.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{model-options.dc630cb6e2cbf83a.js → model-options.0d6077fe68db3af9.js} +2 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{model-pick.a143e77f5ed5f9d3.js → model-pick.695538b2edf9dd15.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{page.70cad0e981c33fa5.js → page.e439da4bae9d6d6c.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{create-link.18bd2b92cd23b73f.js → create-link.371225925a83e900.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{outcome-toast.95f7be49430248eb.js → outcome-toast.c7d02e38464dec0b.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{page.e39ee9236664d043.js → page.885e5ae7913d8f5b.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{activity.441e82ab00344fb2.js → activity.f8d48c80747830ee.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{page.24e121ea6eb578ba.js → page.70ce5ef3bcf56310.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-actions.4a4052a38db4bad3.js → task-actions.783070d7dbd198e4.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-view.0cd3ec2655f44cc7.js → task-view.db256c7f111b8f23.js} +22 -57
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer-data.73225456d60d63e3.js → composer-data.c16854be11a561e4.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer.ee326fbf5e526fb1.js → composer.6a331de70f3baff4.js} +24 -82
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{pending-approvals.7607998094780fdd.js → pending-approvals.7ff2eadf13a3ee90.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-list.e486cbd16ea3e963.js → tasks-list.57c90c66384141a0.js} +8 -8
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-section.01510523d1556d59.js → tasks-section.22e4f86847e1a3e2.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{page.ede64f82388f9480.js → page.c6b9db3ca88aaa1f.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{page.0499098badd3f5f8.js → page.743fe359f09f5648.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{stream.e3800e736f832124.js → stream.c7ffa724145ce870.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{task-toasts.3b7eeee29fc327de.js → task-toasts.b0ba5a1b4976ae27.js} +47 -20
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{action.f22057e7dfac40fe.js → action.44115286faf6c0f8.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{client.c8d7efefb6194d7d.js → client.b9225923da59febe.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{advanced-list-850a950afe4f6996.js → advanced-list-4a393f37c461986f.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{agent-pills-9f6fa120182db948.js → agent-pills-f07bea43753a9342.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/agent-settings-form-6c1b6776328cd046.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{agent-toggle-521136f20a71400d.js → agent-toggle-dabbca2fe4006852.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{agents-grid-bcd13cd7a46224a6.js → agents-grid-a9440caa1768bfd8.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{back-2d67134b122334f4.js → back-8ca96656264a0d1c.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{chain-hint-53675e299a865420.js → chain-hint-c7994aad798ef430.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{combo-cb2c62fe580a8903.js → combo-7b125f3927083749.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/composer-3efd63e2e0192937.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/composer-a6cf207b9c69b43f.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{composer-data-890f71bade4f0616.js → composer-data-b05f3d93fdc472d7.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{confirm-d6b2c5b1deccd1e8.js → confirm-6e26ab941d655b9f.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{connect-repositories-226bf70aa81c29d8.js → connect-repositories-90f1aedea6de7a99.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{connections-list-a33d6637e2d52fcf.js → connections-list-90935e956e8f4626.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{copy-294c6052b3b69424.js → copy-38fa78628f39ec10.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/create-link-a3c963721aa06a72.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{credentials-list-90fc1c6d202e1461.js → credentials-list-ae950b9891d30c29.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{custom-range-efa1b6a71ba84597.js → custom-range-e9185a23187b3fe6.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{editor-53a3e1a893644fff.js → editor-e0cc472111713852.js} +3 -3
- package/dist/dash/standalone/static/assets/chunks/{field-4d374d5ed3f43d7e.js → field-444bab2e16b91c26.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/instructions-7d9131eb37c4619e.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{instructions-d3dc01b2f90820db.js → instructions-9f173d4229d9b77e.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{list-16247e39898cd20e.js → list-84356c9286747b10.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/model-options-5e07b3318d69d218.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{models-list-6d93523660503dfb.js → models-list-eca9705ab89a2ce5.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/outcome-dialog-3006ae63624b3940.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{outcome-dialog-755fc581cbc2836e.js → outcome-dialog-c4d61a288688f53a.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/outcome-toast-ba59a3c06c25f0fd.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/platform-actions-0c61a03082f9d169.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{platform-actions-08e9b3816dcd62b1.js → platform-actions-267a43c805e3c3a6.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{platform-step-5881a8be1e761e00.js → platform-step-adfc87c1fa86e7e1.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/platform-step-fd1616528b2f6f12.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{runners-list-dd759d408c643a29.js → runners-list-c858c5546c6fd513.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{runtime-9b28886f3cbe0ed3-1.js → runtime-3fcac605fffcc273-1.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{secrets-list-be1f634a1b077baa.js → secrets-list-06cd41b5a2627452.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{segmented-f646bfa8aa0aa449.js → segmented-15503e745dd97f56.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{shared-init-b42d2c06c25d1e2b.js → shared-init-02666a6f76606589.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/shared-init-3fcac605fffcc273-2.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/shared-init-7a7f1e623f0f5861.js +9 -0
- package/dist/dash/standalone/static/assets/chunks/{shared-init-953965859f7bf6b9.js → shared-init-a69029db2d72fb52.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/side-toggle-800f7bacd6de5aa8.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{tail-d13c4cc0cf11ffd1.js → tail-3024b828bce41f94.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{task-423e6a3f2527f534.js → task-1e6f9ba22fb5e29f.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{task-actions-5917357eac6504ca.js → task-actions-c8fe1201a56901d9.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/task-view-531e243f8222f802.js +3 -0
- package/dist/dash/standalone/static/assets/chunks/{tasks-list-2c5ce592e00fda45.js → tasks-list-5373f9a2772a386a.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{versions-list-177ae397ad64dcea.js → versions-list-6642a24e9cef352b.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{wular-pnext-9b28886f3cbe0ed3-0.js → wular-pnext-3fcac605fffcc273-0.js} +1 -1
- package/dist/dash/standalone/static/assets/{dash-param-org-agents-param-slug-00243b34eb094b95.css → dash-param-org-agents-param-slug-dd4ac319a0d62432.css} +1 -1
- package/dist/dash/standalone/static/assets/{dash-param-org-agents-param-slug-settings-9f8faa8f7d714699.css → dash-param-org-agents-param-slug-platforms-9d2e1439f3f7e81b.css} +1 -1
- package/dist/dash/standalone/static/assets/{dash-param-org-agents-param-slug-usage-0e037c66e3977f33.css → dash-param-org-agents-param-slug-settings-f21d4fcd3948139b.css} +1 -1
- package/dist/dash/standalone/static/assets/{dash-param-org-agents-param-slug-tasks-129adcdc293ceac8.css → dash-param-org-agents-param-slug-tasks-c8d6aa06f6e75f4c.css} +1 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-9cc128ba8af6ef62.css +1 -0
- package/dist/dash/standalone/static/assets/{dash-param-org-tasks-8a44e171984d32a1.css → dash-param-org-tasks-be3cb3d64573f3d9.css} +1 -1
- package/dist/dash/standalone/static/assets/{dash-param-org-tasks-param-id-b9d3a7a1bd1dd666.css → dash-param-org-tasks-param-id-c20a0537bc82620d.css} +1 -1
- package/dist/dash/standalone/static/assets/pnext-client-02b9bb5ae78a37d6.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-063d14b5b5c893a3.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-1710a65c5b8280af.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-2936b44e963219bc.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-2f14cc4bf71bf456.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-2f81535a69d0c8a3.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-368d90341055d7ff.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-58e0efbceb6c595f.js +1 -0
- package/dist/dash/standalone/static/assets/{pnext-client-7ecbd7a0cbe4e231.js → pnext-client-5fc693a6184e48a4.js} +1 -1
- package/dist/dash/standalone/static/assets/pnext-client-6ee756a74310a9fe.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-713f7a6bc55d23fb.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-7c91f8543cd360fa.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-827b030f2c8e738e.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-8b165b7e5c14a1f3.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-95a81597ac1bdea0.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-a4c2fb8a94ccce04.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-a7faaaf8c4cc8145.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-bab8ffb68e7dd229.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-d9fab2611c2e7246.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-f3804c9ffb299fe0.js +1 -0
- package/dist/{definition-4on4SG5J.js → definition-D0OpQfGX.js} +1 -1
- package/dist/{discover-DvzAbQvU.js → discover-BfYHHJN_.js} +1 -1
- package/dist/{dispatch-BaW2X6Sc.js → dispatch-BkoIU4GU.js} +2 -2
- package/dist/{docs-CbgaMPvq.js → docs-CxklYa3P.js} +1 -1
- package/dist/{drive-Tk6JvQK5.js → drive-MggMiKA0.js} +1 -1
- package/dist/env-BwFCHakK.js +1 -0
- package/dist/{exec-CAaYFJD1.js → exec-CNygM6yF.js} +2 -2
- package/dist/{executor-Chc0zawh.js → executor-Ds4wDCzV.js} +6 -6
- package/dist/flow/builtin/review/index.d.ts +2 -2
- package/dist/flow/builtin/review/index.js +10 -15
- package/dist/flow/index.d.ts +2 -2
- package/dist/flow/index.js +1 -1
- package/dist/{hook-COWDSO4a.js → hook-CVJU-ZD0.js} +1 -1
- package/dist/{index-ezhbF5wC.d.ts → index-CTAQrCRU.d.ts} +71 -66
- package/dist/integrations-DSZSa8Rc.js +9 -0
- package/dist/lib/broker.js +1 -1
- package/dist/{load-PqaDHiHX.js → load-BtIDghgd.js} +2 -2
- package/dist/{local-BzZuOwgI.js → local-CqOUpEtl.js} +1 -1
- package/dist/{local-BMGcCk8N.js → local-DFrTuJFN.js} +1 -1
- package/dist/{login-BDKTNynK.js → login-93jO9qjx.js} +1 -1
- package/dist/maintenance-BuDKnfc7.js +1 -0
- package/dist/{mcp-BNz_l5TV2.js → mcp-CTVOR7r6.js} +1 -1
- package/dist/{mcp-BGam3G_B.js → mcp-EwT2mCaa.js} +1 -1
- package/dist/{mcp-BGx48pyR.js → mcp-cEIva8Pd.js} +6 -4
- package/dist/{models-D1NXi6ni.js → models-mKyePWrV.js} +1 -1
- package/dist/{permission-BkYxjiFR.js → permission-F6F25GJU.js} +1 -1
- package/dist/post-DLenID75.js +11 -0
- package/dist/{refresh-yfEi5SQs.js → refresh-CWEpTAkD.js} +1 -1
- package/dist/{remote-rArUa01V.js → remote-BDMuKaON.js} +1 -1
- package/dist/remote-Cl-j8r3W.js +1 -0
- package/dist/{runner-DG9jrX5H.js → runner-DK0jnzPr.js} +1 -1
- package/dist/runner.json +1 -1
- package/dist/runner.tgz +0 -0
- package/dist/schema.js +1 -1
- package/dist/sdk.d.ts +49 -45
- package/dist/sdk.js +1 -1
- package/dist/serve-Cqlkgdfd.js +8 -0
- package/dist/{serve-B-5rDiZm.js → serve-DHe6dZM6.js} +1 -1
- package/dist/{session-Dtje9y-r.js → session-BMbMzzPu.js} +1 -1
- package/dist/{sessions-DIz9fyRN.js → sessions-BGUfSe8L.js} +1 -1
- package/dist/{shared--aE4olIO.js → shared-D-KqAi7b.js} +1 -1
- package/dist/{sign-in-wWkyaq5X.js → sign-in-Dv-rdYD4.js} +2 -2
- package/dist/{state-Br-Fuaxg.js → state-CxAUec80.js} +1 -1
- package/dist/store-BpDipcKB.js +349 -0
- package/dist/{task-CFt85vTy.js → task-BRHXn5y1.js} +1 -1
- package/dist/task-CzXNLREX.js +7 -0
- package/dist/{tool-search-BkdgVolu.js → tool-search-C9Ty3hhL.js} +1 -1
- package/dist/{tools-oQvFAnh5.js → tools-BCm26CeV.js} +1 -1
- package/dist/{tools-DNgEptor.js → tools-C69W1B6S.js} +1 -1
- package/dist/{tools-search-D1zArRyJ.js → tools-search-BDaeCoWe.js} +1 -1
- package/dist/{turn-Cc-v-eSy.js → turn-eI4iRPsq.js} +1 -1
- package/dist/{update-check-UyRob3yy.js → update-check-Bap3dwaj.js} +1 -1
- package/dist/{views-3TxH367C.js → views-Bxm_5J6T.js} +1 -1
- package/dist/worker-DGhRPDDt.js +7 -0
- package/dist/{worker-BMuKKiIa.js → worker-DHNBRRl-.js} +1 -1
- package/docs/agents/coder.md +1 -1
- package/docs/cli/index.md +5 -3
- package/docs/connections.md +1 -1
- package/docs/flows.md +1 -1
- package/docs/review.md +36 -8
- package/docs/self-host.md +2 -1
- package/package.json +1 -1
- package/plugins/claude/.claude-plugin/plugin.json +1 -1
- package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
- package/dist/apps-B6mUToTa.js +0 -18
- package/dist/async-CNhQ4wyZ.js +0 -3
- package/dist/dash/standalone/static/assets/chunks/agent-settings-form-a8ee12513a02b1c5.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/composer-4a46a458495ce3ba.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/composer-92553de43276510b.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/create-link-b2480a7601967e94.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/instructions-734d21dfb8f6393e.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/model-options-d29e934a3de20ab4.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/outcome-dialog-77e13c848000a3dc.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/outcome-toast-9d5e9713c23882f5.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/platform-actions-832904f5694ef902.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/platform-step-29469fd4eaddc42a.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/shared-init-926144b364908b3c.js +0 -9
- package/dist/dash/standalone/static/assets/chunks/shared-init-9b28886f3cbe0ed3-2.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/side-toggle-8c21d39a1e284887.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/task-view-c6ee43d2ddb6db90.js +0 -3
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-25ae07e0b3f5b252.css +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-095026242a079175.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-1dfeb8c3ef155f87.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-2358423351524403.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-28a6557216627768.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-31a4ee73945fee19.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-3dfdc76bb8712b82.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-4355ac87961d78c1.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-43c7a0046572e0c9.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-53dc7db68d67e0b1.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-5835cb35488bdf7f.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-638b390bc23ab1ae.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-67f832c6c51a66cd.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-6fc99f0abe77c2ea.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-7d99965f28ac7604.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-8250bd3b86d038a3.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-bfd06805a43c6dee.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-ce2943f17e9d9ac3.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-ed31510d4615a5a5.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-f0496bf51e161ddd.js +0 -1
- package/dist/env-_AxrvBXP.js +0 -1
- package/dist/integrations-BVmsk64f.js +0 -9
- package/dist/maintenance-d43Ml540.js +0 -1
- package/dist/remote-BbXx6S9P.js +0 -1
- package/dist/serve-CvnrGAj7.js +0 -12
- package/dist/store-CzQLgCzt.js +0 -352
- package/dist/task-N0qhnKpK.js +0 -7
- package/dist/worker-CIHY9L42.js +0 -7
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/core/{types.5bf5a41cedb54154.js → types.9d22123d6296f5af.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-view.aae9fa481b9015d1.css.pnext-asset.js → task-view.440367ae07204ee7.css.pnext-asset.js} +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import "./task-toasts.682322f6f729b33e.css.pnext-asset.js";
|
|
3
3
|
import { useEffect, useRef, useState } from "../../../../../../../node_modules/preact/hooks/dist/hooks.mjs";
|
|
4
4
|
import { serverEvents } from "../../../../client/http.e78b470f4ecf125b.js";
|
|
5
|
-
import { client } from "../../utils/client.
|
|
5
|
+
import { client } from "../../utils/client.b9225923da59febe.js";
|
|
6
6
|
import { Link } from "../../../../../../../node_modules/@wular/pnext/src/api/link.tsx";
|
|
7
7
|
import { usePathname, useRouter } from "../../../../../../../node_modules/@wular/pnext/src/api/client-navigation.ts";
|
|
8
8
|
import { Status, STATUS_LABEL } from "../../app/dash/[org]/tasks/list/status.d2c05c397780b833.js";
|
|
@@ -22,7 +22,7 @@ const SHOWN = new Set([...DONE, "waiting"]);
|
|
|
22
22
|
const KEEP = 20;
|
|
23
23
|
const MAX = 3;
|
|
24
24
|
const TTL = 8e3;
|
|
25
|
-
// The Web Lock that picks the one tab
|
|
25
|
+
// The Web Lock that picks the one tab polling the events, and the channel it shares them on.
|
|
26
26
|
const EVENTS = "coder:events";
|
|
27
27
|
const TASK = "coder:task";
|
|
28
28
|
const REPLAY = "coder:task-replay";
|
|
@@ -35,6 +35,7 @@ const RUNNERS = "coder:runners";
|
|
|
35
35
|
const RESYNC_MS = 6e4;
|
|
36
36
|
// Latest events a tab keeps, so a page that mounts later starts from them.
|
|
37
37
|
const LATEST = 200;
|
|
38
|
+
const POLL_MS = 5e3;
|
|
38
39
|
const read = () => {
|
|
39
40
|
try {
|
|
40
41
|
return JSON.parse(localStorage.getItem(WATCHED) ?? "{}") ?? {};
|
|
@@ -104,15 +105,18 @@ export function useTaskEvents(on, reset, resync) {
|
|
|
104
105
|
};
|
|
105
106
|
}, []);
|
|
106
107
|
}
|
|
107
|
-
/** One events
|
|
108
|
+
/** One events poll per browser and organization: the tab holding the lock polls, shares the events on a channel, and a tab that takes over resumes from the last event id. */
|
|
108
109
|
function useEventsStream(ids, leading, org) {
|
|
109
110
|
const asked = useRef(ids);
|
|
110
111
|
asked.current = ids;
|
|
111
112
|
const current = useRef();
|
|
113
|
+
const sync = useRef(() => {});
|
|
112
114
|
const key = [...ids].sort().join(",");
|
|
113
115
|
useEffect(() => {
|
|
114
116
|
const latest = new Map();
|
|
115
117
|
const deliver = (event) => {
|
|
118
|
+
// Each poll repeats what changed lately; pages hear a change once.
|
|
119
|
+
if (JSON.stringify(latest.get(event.id)) === JSON.stringify(event)) return;
|
|
116
120
|
latest.delete(event.id);
|
|
117
121
|
latest.set(event.id, event);
|
|
118
122
|
if (latest.size > LATEST) latest.delete(latest.keys().next().value);
|
|
@@ -123,6 +127,7 @@ function useEventsStream(ids, leading, org) {
|
|
|
123
127
|
};
|
|
124
128
|
addEventListener(REPLAY, replay);
|
|
125
129
|
let counts;
|
|
130
|
+
let runners = "";
|
|
126
131
|
const replayCounts = (event) => counts && event.detail(counts);
|
|
127
132
|
addEventListener(COUNTS_REPLAY, replayCounts);
|
|
128
133
|
const channel = typeof BroadcastChannel !== "undefined" && navigator.locks ? new BroadcastChannel(`${EVENTS}:${org}`) : undefined;
|
|
@@ -137,7 +142,10 @@ function useEventsStream(ids, leading, org) {
|
|
|
137
142
|
counts = message.counts;
|
|
138
143
|
dispatchEvent(new CustomEvent(COUNTS, { detail: counts }));
|
|
139
144
|
}
|
|
140
|
-
if (message.runners
|
|
145
|
+
if (message.runners && JSON.stringify(message.runners) !== runners) {
|
|
146
|
+
runners = JSON.stringify(message.runners);
|
|
147
|
+
dispatchEvent(new CustomEvent(RUNNERS, { detail: message.runners }));
|
|
148
|
+
}
|
|
141
149
|
if (message.resync) dispatchEvent(new Event(RESYNC));
|
|
142
150
|
if (!message.reset) return;
|
|
143
151
|
latest.clear();
|
|
@@ -145,7 +153,7 @@ function useEventsStream(ids, leading, org) {
|
|
|
145
153
|
};
|
|
146
154
|
channel?.addEventListener("message", ({ data }) => {
|
|
147
155
|
if (!data.hello) return receive(data);
|
|
148
|
-
// A tab that just loaded: the next
|
|
156
|
+
// A tab that just loaded: the next poll goes now, for it too.
|
|
149
157
|
soon ??= setTimeout(() => {
|
|
150
158
|
soon = undefined;
|
|
151
159
|
current.current?.abort.abort();
|
|
@@ -153,37 +161,38 @@ function useEventsStream(ids, leading, org) {
|
|
|
153
161
|
}, 300);
|
|
154
162
|
});
|
|
155
163
|
channel?.postMessage({ hello: true });
|
|
156
|
-
const lead = async () => {
|
|
164
|
+
const lead = async (signal) => {
|
|
157
165
|
leading.current = true;
|
|
158
166
|
const resync = setInterval(() => {
|
|
159
167
|
channel?.postMessage({ resync: true });
|
|
160
168
|
receive({ resync: true });
|
|
161
169
|
}, RESYNC_MS);
|
|
162
170
|
try {
|
|
163
|
-
await follow();
|
|
171
|
+
await follow(signal);
|
|
164
172
|
} finally {
|
|
165
173
|
clearInterval(resync);
|
|
174
|
+
leading.current = false;
|
|
166
175
|
}
|
|
167
176
|
};
|
|
168
|
-
const follow = async () => {
|
|
169
|
-
while (!
|
|
177
|
+
const follow = async (signal) => {
|
|
178
|
+
while (!signal.aborted) {
|
|
170
179
|
const once = new AbortController();
|
|
171
180
|
const stop = () => once.abort();
|
|
172
|
-
|
|
181
|
+
signal.addEventListener("abort", stop);
|
|
173
182
|
const ids = asked.current;
|
|
174
183
|
current.current = {
|
|
175
184
|
key: [...ids].sort().join(","),
|
|
176
185
|
abort: once
|
|
177
186
|
};
|
|
178
|
-
let wait =
|
|
187
|
+
let wait = POLL_MS;
|
|
179
188
|
try {
|
|
180
189
|
const response = await client.tasks.events(ids, last, once.signal);
|
|
181
190
|
// A server without the events stream: nothing to follow.
|
|
182
191
|
if (response.status === 404) return void (leading.current = false);
|
|
183
192
|
// Signed out: a tab that signs in again wakes the next try.
|
|
184
|
-
if (
|
|
185
|
-
else for await (const { event, data, id } of serverEvents(response.body)) {
|
|
186
|
-
// A
|
|
193
|
+
if ([401, 403].includes(response.status)) wait = 6e4;
|
|
194
|
+
else if (response.ok && response.body) for await (const { event, data, id } of serverEvents(response.body)) {
|
|
195
|
+
// A poll replaced by the next one says nothing more.
|
|
187
196
|
if (once.signal.aborted) break;
|
|
188
197
|
const message = {
|
|
189
198
|
...id ? { id } : {},
|
|
@@ -198,8 +207,8 @@ function useEventsStream(ids, leading, org) {
|
|
|
198
207
|
} catch (reason) {
|
|
199
208
|
if (!once.signal.aborted) console.error("coder dashboard: events", reason);
|
|
200
209
|
}
|
|
201
|
-
|
|
202
|
-
// A new task set
|
|
210
|
+
signal.removeEventListener("abort", stop);
|
|
211
|
+
// A new task set polls again at once.
|
|
203
212
|
if (once.signal.aborted) continue;
|
|
204
213
|
await new Promise((done) => {
|
|
205
214
|
const timer = setTimeout(done, wait);
|
|
@@ -211,21 +220,39 @@ function useEventsStream(ids, leading, org) {
|
|
|
211
220
|
wake = () => {};
|
|
212
221
|
}
|
|
213
222
|
};
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
223
|
+
// A hidden tab polls nothing, unless it notifies of a watched task still running.
|
|
224
|
+
let turn;
|
|
225
|
+
const wanted = () => document.visibilityState !== "hidden" || asked.current.length > 0 && localStorage.getItem(NOTIFY) === "1" && typeof Notification !== "undefined" && Notification.permission === "granted";
|
|
226
|
+
sync.current = () => {
|
|
227
|
+
if (!wanted()) {
|
|
228
|
+
turn?.abort();
|
|
229
|
+
turn = undefined;
|
|
230
|
+
return wake();
|
|
231
|
+
}
|
|
232
|
+
if (turn) return;
|
|
233
|
+
turn = new AbortController();
|
|
234
|
+
const signal = AbortSignal.any([abort.signal, turn.signal]);
|
|
235
|
+
if (channel) void navigator.locks.request(`${EVENTS}:${org}`, { signal }, () => lead(signal)).catch((reason) => {
|
|
236
|
+
if (!signal.aborted) console.error("coder dashboard: events", reason);
|
|
237
|
+
});
|
|
238
|
+
else void lead(signal);
|
|
239
|
+
};
|
|
240
|
+
const visibility = () => sync.current();
|
|
241
|
+
addEventListener("visibilitychange", visibility);
|
|
242
|
+
sync.current();
|
|
218
243
|
return () => {
|
|
219
244
|
abort.abort();
|
|
220
245
|
wake();
|
|
221
246
|
clearTimeout(soon);
|
|
222
247
|
channel?.close();
|
|
248
|
+
removeEventListener("visibilitychange", visibility);
|
|
223
249
|
removeEventListener(REPLAY, replay);
|
|
224
250
|
removeEventListener(COUNTS_REPLAY, replayCounts);
|
|
225
251
|
};
|
|
226
252
|
}, []);
|
|
227
253
|
useEffect(() => {
|
|
228
254
|
if (current.current && current.current.key !== key) current.current.abort.abort();
|
|
255
|
+
sync.current();
|
|
229
256
|
}, [key]);
|
|
230
257
|
}
|
|
231
258
|
/** Hears the runners this person sees whenever one is added, changed, removed, or goes on or offline. */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useState } from "../../../../../../node_modules/preact/hooks/dist/hooks.mjs";
|
|
3
3
|
import { useRouter } from "../../../../../../node_modules/@wular/pnext/src/api/client-navigation.ts";
|
|
4
|
-
import { toastError } from "../comps/frame/task-toasts.
|
|
4
|
+
import { toastError } from "../comps/frame/task-toasts.b0ba5a1b4976ae27.js";
|
|
5
5
|
import { reasonText } from "./format.ceeaafa10a0563f3.js";
|
|
6
6
|
const FAILED = "Something went wrong";
|
|
7
7
|
/** A failure no action ran, as the same toast. */
|
|
@@ -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.
|
|
3
|
+
import { ServerClient } from "../../../client/index.a036e2c6ae93ec75.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) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{a as u}from"./list-
|
|
1
|
+
"use client";import{a as u}from"./list-84356c9286747b10.js";import"./confirm-6e26ab941d655b9f.js";import"./shared-init-a69029db2d72fb52.js";import"./shared-init-a69029db2d72fb52.js";import"./shared-init-7a7f1e623f0f5861.js";import"./shared-init-7a7f1e623f0f5861.js";import{$0o as h}from"./shared-init-7a7f1e623f0f5861.js";import"./wular-pnext-3fcac605fffcc273-0.js";import"./shared-init-7a7f1e623f0f5861.js";import{$4Q as e,$4R as p,$4v as d}from"./shared-init-7a7f1e623f0f5861.js";import"./shared-init-3fcac605fffcc273-2.js";import"./shared-init-3fcac605fffcc273-2.js";import{$2h as c}from"./shared-init-3fcac605fffcc273-2.js";function T({first:f,admin:r}){let n=u(f.config),o=n.value.network?.allowedHosts??[],[l,a]=c(""),i=t=>n.patch({network:{allowedHosts:t}});return e(h,{look:"filled",title:"Network",children:[e("p",{class:"body muted",children:"Hosts tasks reach without review, with their subdomains."}),e("div",{class:"hosts",children:[o.map(t=>e("span",{class:"host mono",children:[t,r?e("button",{type:"button","aria-label":`Remove ${t}`,onClick:()=>void i(o.filter(s=>s!==t)),children:e(p,{d})}):null]},t)),r?e("input",{class:"mono",value:l,onInput:t=>a(t.currentTarget.value),onKeyDown:t=>{let s=l.trim();t.key!=="Enter"||!s||(t.preventDefault(),a(""),o.includes(s)||i([...o,s]))},placeholder:o.length?"Add a host, then Enter":"registry.npmjs.org, then Enter","aria-label":"Add a host",autocomplete:"off",spellcheck:!1}):null]}),e("label",{class:"hosts-switch",children:[e("input",{type:"checkbox",role:"switch",class:"switch",checked:n.value.network?.readOnlyTasks??!1,disabled:!r,onChange:t=>void n.patch({network:{readOnlyTasks:t.currentTarget.checked}})}),"Read-only tasks reach these hosts too"]})]})}export{T as AdvancedList};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{$
|
|
1
|
+
import{$2E as b}from"./shared-init-7a7f1e623f0f5861.js";import{$0g as h,$0i as m,$0j as f,$0k as n}from"./shared-init-7a7f1e623f0f5861.js";import{$4Q as r,$4R as a,$4t as l}from"./shared-init-7a7f1e623f0f5861.js";import{$2c as u,$2n as g}from"./shared-init-3fcac605fffcc273-2.js";var k=(e,o)=>e.replace(/\bid="([^"]+)"/g,`id="$1${o}"`).replace(/url\(#([^)]+)\)/g,`url(#$1${o})`).replace(/href="#([^"]+)"/g,`href="#$1${o}"`);function y({brand:e}){let o=g().replace(/[^a-zA-Z0-9_-]/g,"");return e.svg?r("span",{class:"brand-icon","aria-hidden":"true",dangerouslySetInnerHTML:{__html:k(e.svg,`-${o}`)}}):r("svg",{class:"brand-icon",width:"12",height:"12",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",style:{color:e.dark?`light-dark(${e.color}, ${e.dark})`:e.color},children:r("path",{d:e.icon})})}function B({id:e,info:o,state:s}){let i=o?.name??e;return r("span",{class:`pf ${s}`,children:[o?r(y,{brand:o.brand}):null,i]})}function S({platforms:e,catalog:o,agent:s}){let i=e.length>=m?f:e.length,c=({id:t,state:I},d)=>{let p=r(B,{id:t,info:o.find(L=>L.id===t),state:I});return s?r(b,{class:d,href:"/dash/[org]/agents/[slug]/platforms",params:{slug:s},children:p},t):r("span",{class:d,children:p},t)};return r("span",{class:"pfs",children:[e.slice(0,i).map(t=>c(t)),e.length>i?r(h,{label:`+${e.length-i}`,children:e.map(t=>c(t,"pf-row"))}):null]})}var R={builtin:"built-in",upload:"dashboard",repo:"repository",home:"local"};function w(){return r(n,{tone:"warn",title:"Disabled in this workspace",children:"disabled"})}function E({agent:e,fix:o}){return r(u,{children:[e.source==="repo"&&e.repo?e.sourceUrl?r(n,{class:"link-pill",href:e.sourceUrl,external:!0,title:`Repository agent, opens ${e.repo}`,children:[r(a,{d:l}),e.repo]}):r(n,{class:"link-pill",title:"Repository agent",children:[r(a,{d:l}),e.repo]}):r(n,{tone:e.source==="builtin"?"acc":void 0,title:e.local&&e.source==="repo"?"Repo agent, a folder in this repository":e.source==="home"?"Local agent, a folder on this machine":e.source!=="upload"?"Ships with Coder":e.local?"Local agent, a folder on this machine":"Dashboard agent, made and edited here",children:e.local&&e.source==="upload"?"local":R[e.source]??e.source}),e.local?e.commit&&r(n,{title:"Last commit of the agent's folder",children:e.commit.slice(0,7)}):r(n,{children:["v",e.currentVersion]}),e.settings?.disabled?r(w,{}):null,e.problems?.length?r(n,{tone:"bad",title:e.problems.join(`
|
|
2
2
|
`),...o,children:"not running"}):null]})}export{y as a,S as b,w as c,E as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{a as ne}from"./chain-hint-c7994aad798ef430.js";import{a as Z}from"./agent-pills-f07bea43753a9342.js";import{a as ee}from"./agent-toggle-dabbca2fe4006852.js";import{$1c as X}from"./shared-init-02666a6f76606589.js";import{d as H,h as R,l as W}from"./model-options-5e07b3318d69d218.js";import{b as I,c as Y}from"./types-3eca2c7f47c46054.js";import{a as K}from"./confirm-6e26ab941d655b9f.js";import{a as f}from"./field-444bab2e16b91c26.js";import{$1b as F}from"./shared-init-a69029db2d72fb52.js";import"./shared-init-a69029db2d72fb52.js";import{$1m as J}from"./shared-init-7a7f1e623f0f5861.js";import{$2D as G,$2a as _,$2v as z,$2z as w}from"./shared-init-7a7f1e623f0f5861.js";import{$0c as P}from"./shared-init-7a7f1e623f0f5861.js";import"./wular-pnext-3fcac605fffcc273-0.js";import"./shared-init-7a7f1e623f0f5861.js";import{$4Q as e,$4S as D,$4b as y}from"./shared-init-7a7f1e623f0f5861.js";import"./shared-init-3fcac605fffcc273-2.js";import"./shared-init-3fcac605fffcc273-2.js";import{$2c as b,$2h as d,$2k as V,$2l as Q}from"./shared-init-3fcac605fffcc273-2.js";function Ie({agent:t,catalog:te,shape:k,runners:$,connections:q}){let se=_(),p=G(),[m,x]=d("run"),B=F({refresh:!0}),N=F({leaves:!0}),oe=!!B.pending,[S,ae]=d(""),[h,ie]=d(),[le,A]=d(!1),O=Q(null),l=t.settings??{},[C,re]=d(l.model?.includes("/")?l.model:[l.engine,l.model,l.effort].filter(Boolean).join("/")),[E,ce]=d(l.connections?"some":""),L=t.definition?.integrations??{},g=Object.keys(L).sort(),T=t.definition,j=t.source!=="builtin";V(()=>{let n=S.trim().toLowerCase(),o=[];O.current.querySelectorAll(".vpanel").forEach(i=>{let a=!1;i.querySelectorAll(".field").forEach(s=>{let r=[...s.querySelectorAll("input")].map(v=>v.value).join(" "),c=s.closest(".vplatform")?.querySelector("h3")?.textContent??"",u=!n||`${c} ${s.textContent} ${r}`.toLowerCase().includes(n);s.hidden=!u,a||=u}),i.querySelectorAll(".vplatform").forEach(s=>{s.hidden=!s.querySelector(".field:not([hidden])")}),a&&o.push(i.dataset.panel)}),ie(n?o:void 0),n&&o.length&&!o.includes(m)&&x(o[0])},[S]);let de=()=>void N.run("delete",async()=>{await P.agents.remove(t.id),se.push("/dash/[org]/agents",{params:{org:p}})}).then(n=>n||A(!1)),M=(n,o)=>e("button",{type:"button","aria-current":m===n?"true":void 0,class:h&&!h.includes(n)?"miss":void 0,onClick:()=>x(n),children:o});return e("form",{ref:O,class:"vsettings card frame",onSubmit:async n=>{n.preventDefault();let o=new FormData(n.currentTarget),i=c=>String(o.get(c)??"").trim(),a={};i("runner")&&(a.runner=i("runner")),i("access")!==(T?.access??"auto")&&(a.access=i("access")),C.trim()&&(a.model=C.trim()),E&&(a.connections=o.getAll("connection").map(String));for(let c of g){let u={},v=I(L[c]?.events),U=o.getAll(`event:${c}`).map(String);v.length&&U.length<v.length&&(u.allowedEvents=U),Object.keys(u).length&&((a.integrations??={})[c]=u)}t.settings?.disabled&&(a.disabled=!0);let s;await B.run("save",async()=>{({warning:s}=await P.agents.settings(t.id,a))})&&J("Saved",s??"New tasks use these settings.",s?"warning":"success")},children:[e("nav",{class:"tabs vertical","aria-label":"Settings sections",children:[e("p",{class:"tabs-label",children:"Runtime"}),M("run","How it runs"),g.length?M("platforms","Platforms"):null,e("p",{class:"tabs-label",children:"Agent"}),M("manage","Manage")]}),e("div",{class:"vbody",children:[e("div",{class:"vsearch",children:[e(z,{value:S,label:"Search settings",onInput:ae}),h&&!h.length?e("span",{class:"muted",children:"No setting matches."}):null]}),e("section",{class:"vpanel","data-panel":"run",hidden:m!=="run",children:[e("h2",{children:"How it runs"}),e("p",{class:"muted",children:"Anything left empty follows the agent's own definition, then the workspace chain."}),e("div",{class:"fields",children:[e(f,{label:"Model",hint:e(ne,{org:p,own:t.definition?.model&&R(t.definition.model,k.builtin)}),group:!0,children:e(X,{shape:k,empty:t.definition?.model?{label:`Its own, ${R(t.definition.model,k.builtin)}`,sub:"from agent.json"}:W(),value:C,onChange:re})}),e(f,{label:"Access",hint:"what its tasks, platforms and connections may do",group:!0,children:e(w,{name:"access",label:"Access",defaultValue:l.access??T?.access??"auto",options:T?.access==="read-only"?H.filter(([n])=>n==="read-only"):H})}),$.length>1?e(f,{label:"Runs on",group:!0,children:e(w,{name:"runner",label:"Runs on",defaultValue:l.runner??"",options:$})}):null,e(f,{label:"Connections",hint:"which workspace connections its tasks can use",group:!0,children:e(w,{label:"Connections",value:E,options:[["","Every workspace connection"],["some","Only the ones picked"]],onChange:ce})}),E?e("div",{class:"field picked",children:[e("span",{children:["Picked connections ",e("small",{children:"tasks can use only these"})]}),q.length?e("div",{class:"checks",children:q.map(n=>e("label",{class:"check",children:[e("input",{type:"checkbox",name:"connection",value:n.id,defaultChecked:l.connections?.includes(n.id)}),n.name]},n.id))}):e("span",{class:"muted",children:["This workspace has no connections yet."," ",e(y,{class:"link",href:"/dash/[org]/settings/[tab]",params:{org:p,tab:"connections"},children:"Add one in Settings"})]})]}):null]})]}),g.length?e("section",{class:"vpanel","data-panel":"platforms",hidden:m!=="platforms",children:[e("h2",{children:"Platforms"}),e("p",{class:"muted",children:["Turn events off for this workspace."," ",Y(t)?e(b,{children:["To add an event or a platform,"," ",e(y,{href:"/dash/[org]/agents/[slug]/edit",params:{org:p,slug:t.id},search:{section:"platforms"},children:["edit ",t.name]}),"."]}):t.source==="repo"?e(b,{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(b,{children:[t.name," is built in, so its events and platforms ship with Coder. To listen anywhere else,"," ",e(y,{href:"/dash/[org]/agents/new",params:{org:p},children:"create your own agent"}),"."]})]}),g.map(n=>{let o=l.integrations?.[n]??{},i=I(L[n]?.events),a=o.allowedEvents,s=te.find(r=>r.id===n);return e("div",{class:"vplatform",children:[e("h3",{children:[s?e(Z,{brand:s.brand}):null,s?.name??n]}),i.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:i.map(r=>e("label",{class:"check",children:[e("input",{type:"checkbox",name:`event:${n}`,value:r,defaultChecked:!a||a.includes(r)}),r]},r))})]}):null]},n)})]}):null,e("section",{class:"vpanel","data-panel":"manage",hidden:m!=="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(ee,{agent:t})]}),e("div",{class:"field row-action",children:[e("span",{children:["Delete agent",e("small",{children:j?"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(D,{variant:"secondary",danger:!0,disabled:!j,onClick:()=>A(!0),children:"Delete agent"})]})]}),m==="manage"?null:e("div",{class:"form-actions save",children:e(D,{type:"submit",loading:oe,children:"Save"})})]}),le?e(K,{open:!0,title:`Delete ${t.name}?`,body:"It stops answering on every platform. This cannot be undone.",confirmLabel:"Delete agent",busy:!!N.pending,onClose:()=>A(!1),onConfirm:de}):null]})}export{Ie as AgentSettingsForm};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$1b as b}from"./shared-init-
|
|
1
|
+
import{$1b as b}from"./shared-init-a69029db2d72fb52.js";import{$0c as r}from"./shared-init-7a7f1e623f0f5861.js";import{$4Q as s,$4S as c}from"./shared-init-7a7f1e623f0f5861.js";import{$2h as g}from"./shared-init-3fcac605fffcc273-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-
|
|
1
|
+
"use client";import{a as P,b as R,d as q}from"./agent-pills-f07bea43753a9342.js";import{a as L}from"./tail-3024b828bce41f94.js";import{c as N}from"./types-3eca2c7f47c46054.js";import{$0g as k}from"./shared-init-a69029db2d72fb52.js";import{$2D as a,$2t as A,$2u as w,$2v as C,$2w as I,$2x as v}from"./shared-init-7a7f1e623f0f5861.js";import{$0c as f,$0q as y,$0s as b}from"./shared-init-7a7f1e623f0f5861.js";import"./wular-pnext-3fcac605fffcc273-0.js";import{$4Q as e,$4T as h,$4b as g,$4c as u}from"./shared-init-7a7f1e623f0f5861.js";import"./shared-init-3fcac605fffcc273-2.js";import"./shared-init-3fcac605fffcc273-2.js";import{$2c as c}from"./shared-init-3fcac605fffcc273-2.js";function B(){return e(h,{href:"/dash/[org]/agents/new",params:{org:a()},leftIcon:u,children:"New agent"})}function x({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:k(t.name)}),e("div",{class:"grow",children:[e("h3",{children:e(g,{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:K}){let{values:m,set:p,query:S}=w(n),s=b({name:"agents",fetchPage:r=>f.agents.list({cursor:r,limit:i,...m}),query:S,first:t,initial:A(n)});return e(c,{children:[e(I,{head:l,action:e(B,{}),children:[e(C,{value:m.q,label:"Search agents",onInput:r=>p("q",r,250)}),e(v,{name:"agents",facets:[{key:"platform",label:"Platform",options:o.map(r=>[r.id,r.name]),icon:r=>{let d=o.find(T=>T.id===r);return d?e(P,{brand:d.brand}):void 0}},{key:"type",label:"Source",options:O}],values:m,onChange:p})]}),K,s.rows.length?e("ul",{class:"agent-grid","aria-busy":s.stale,children:s.rows.map(r=>e(x,{agent:r,catalog:o},r.id))}):s.stale?null:e(y,{title:"No agents match",children:"Try another search or filter."}),e(L,{noun:"agents",...s})]})}export{te as AgentsGrid};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$
|
|
1
|
+
import{$2B as c,$2D as a}from"./shared-init-7a7f1e623f0f5861.js";import{$4Q as r,$4T as i}from"./shared-init-7a7f1e623f0f5861.js";import{$2j as m}from"./shared-init-3fcac605fffcc273-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{$
|
|
1
|
+
import{$4Q as n,$4R as e,$4b as o,$4q as s}from"./shared-init-7a7f1e623f0f5861.js";import{$2c as r}from"./shared-init-3fcac605fffcc273-2.js";var f=({org:t,own:i})=>i?n(r,{children:[i," from agent.json, unless picked here"]}):n(r,{children:[n(o,{class:"link",href:"/dash/[org]/settings/[tab]",params:{org:t,tab:"models"},children:["default chain",n(e,{d:s})]})," ","unless picked here"]});export{f as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$
|
|
1
|
+
import{$2A as S,$2n as E,$2y as M}from"./shared-init-7a7f1e623f0f5861.js";import{$4Q as r}from"./shared-init-7a7f1e623f0f5861.js";import{$2c as L,$2h as u,$2k as $,$2l as d,$2n as C}from"./shared-init-3fcac605fffcc273-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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as ne,b as ze,c as We,d as Je,f as Xe}from"./composer-data-b05f3d93fdc472d7.js";import{m as qe}from"./task-1e6f9ba22fb5e29f.js";import{a as Ie}from"./connect-repositories-90f1aedea6de7a99.js";import{$0a as Ge}from"./shared-init-02666a6f76606589.js";import{$1a as Ke,$1b as Ue}from"./shared-init-02666a6f76606589.js";import{c as He,d as je,h as oe}from"./model-options-5e07b3318d69d218.js";import{$1a as H,$1b as Fe}from"./shared-init-a69029db2d72fb52.js";import{$0h as $}from"./shared-init-a69029db2d72fb52.js";import{a as Qe}from"./back-8ca96656264a0d1c.js";import{$1o as Be}from"./shared-init-7a7f1e623f0f5861.js";import{$2D as De,$2a as ve,$2c as Me,$2k as Te,$2m as ee,$2n as Ae,$2o as E,$2p as Ne,$2r as Pe,$2s as I,$2z as te}from"./shared-init-7a7f1e623f0f5861.js";import{$0c as b,$0r as xe}from"./shared-init-7a7f1e623f0f5861.js";import{$4B as Re,$4G as Le,$4J as $e,$4P as Oe,$4Q as t,$4R as F,$4S as _,$4U as Se,$4i as Ce,$4v as Ee}from"./shared-init-7a7f1e623f0f5861.js";import{$2c as y,$2h as f,$2j as B,$2k as ye,$2l as w,$2n as Z}from"./shared-init-3fcac605fffcc273-2.js";var ht=(a,r)=>[...a.split("/").filter(s=>!He.some(([l])=>l===s)),r].join("/"),j="coder:draft",Ve="+connect",Ye="+refresh",re="+other",se="+pick",ie="+clone",bt=/^\/(flow)(?:\s+(\S+))?\s*([\s\S]*)$/,wt=(a,r,s)=>[["",a],...[...new Set([r,...s])].filter(Boolean).map(l=>[l,l])],Ze=(a,r,s)=>{let l=[...a.recent,...r].map(u=>u.path);return[["","No folder"],...[...new Set([...l,s])].filter(u=>u&&u!==a.current.path).map(u=>[u,qe(u)]),a.picker?[se,"Choose\u2026"]:[re,"Type a path\u2026"],[ie,"Repository\u2026"]]};function _e({label:a,options:r,value:s,onPick:l}){let u=`${Z()}-pick`;return t(Pe,{children:[t(Te,{title:r.find(([d])=>d===s)?.[1]??r[0]?.[1],"aria-label":a,"data-keep":!0,popovertarget:u}),t("button",{type:"button",class:"pop-chev","data-keep":!0,popovertarget:u,"aria-label":`${a} options`,children:t(F,{d:Ce})}),t(I,{id:u,class:"pop-flyout",popover:"auto",role:"group","aria-label":a,onBeforeToggle:Ue,children:r.map(([d,m])=>t(ee,{on:d===s,onPick:()=>l(d),children:m},d))})]})}function kt(a){let r=a.currentTarget,s=document.querySelector(`[popovertarget="${r.id}"]`)?.getBoundingClientRect();if(a.newState!=="open"||!s)return;let l=Math.round(s.bottom+6);r.style.top=`${l}px`,r.style.right=`${Math.round(document.documentElement.clientWidth-s.right)}px`,r.style.maxHeight=`${Math.max(160,window.innerHeight-l-16)}px`}function yt(a){return Object.fromEntries(a.split(/\s+/).filter(Boolean).map(r=>{let s=r.indexOf("="),l=s<0?"true":r.slice(s+1);try{return[s<0?r:r.slice(0,s),JSON.parse(l)]}catch{return[r.slice(0,s),l]}}))}function vt({id:a,entries:r,active:s,selected:l,onActive:u}){return t(y,{children:r.flatMap((d,m)=>[d.head?t(E,{role:"presentation",children:d.head},`h:${d.key}`):null,t(Ae,{id:`${a}-${m}`,active:m===s,selected:l===void 0?m===s:d.key===l,check:l!==void 0,end:d.hint?t("small",{children:d.hint}):null,onMouseDown:i=>i.preventDefault(),onPointerMove:()=>m!==s&&u(m),onClick:d.pick,children:d.label},d.key)])})}var Mt=(a,r,s,l)=>{let u={ArrowDown:1,ArrowUp:-1}[a.key];return!u||!s?!1:(a.preventDefault(),l((r+u+s)%s),!0)};function Ct({reason:a,label:r}){return t(Ge,{tone:"warning",slim:!0,children:[t(F,{d:$e}),t("span",{class:"grow",children:a||"Tasks need a model credential to run."}),t(Qe,{variant:"outline",size:"sm",label:r,children:"Add credential"})]})}function Et({initial:a,data:r,defaults:s,missing:l,connectLabel:u}){let d=ve(),m=De(),[i,K]=f(()=>We({...ze,...a},r)),[c,R]=f(r),g=w(),[U,ae]=f(!1),[le,et]=f(),[O,q]=f(""),[tt,v]=f(!1),[ot,A]=f(0),[z,nt]=f([]),[M,S]=f(""),[L,ce]=f(!1),ue=w(null),h=w(null),de=w(null),pe=w(null),C=Z();B(()=>void(M&&pe.current?.focus()),[M]),B(()=>{let e=localStorage.getItem(j);e&&h.current&&!h.current.value&&(h.current.value=e),q(h.current?.value??""),N(h.current?.value??""),h.current?.focus(),v(!0)},[]);let N=(e,o=i.repo)=>{!e.startsWith("/")||!o||g.current===o||(g.current=o,b.flows.list(o).then(n=>R(Q=>({...Q,flows:n.map(D=>D.name)}))).catch(n=>console.error("coder dashboard: flows",n)))},W=w(!!r.repos),rt=()=>{W.current||(W.current=!0,b.repositories.list().catch(e=>(console.error("coder dashboard: repositories",e),[])).then(e=>R(o=>({...o,repos:e.map(n=>n.repo)}))))},fe=Fe(),me=!!fe.pending,st=()=>{W.current=!0,fe.run("refresh",async()=>{let e=await b.repositories.refresh();R(o=>({...o,repos:e.map(n=>n.repo)}))})},J=(e,o)=>{if(o===re)return S("path");if(o===ie)return S("url");if(o===se)return void at();if(o===Ye)return me?void 0:st();if(o===Ve)return void Ie(`/dash/${m}/tasks`).catch(H);x({[e]:o}),(e==="repo"||e==="cwd")&&h.current?.focus({preventScroll:!0})},x=e=>{let o={...i,...e};K(o),N(O,o.repo),document.cookie=`compose=${encodeURIComponent(JSON.stringify(o))}; path=/; max-age=31536000; samesite=lax`},X=e=>{if(!e.ok)return H(e.detail);S(""),nt(o=>[...o.filter(n=>n.path!==e.folder.path),e.folder]),J("cwd",e.folder.path===c.folders?.current.path?"":e.folder.path)},it=async e=>{e.trim()&&X(await b.folders.check(e.trim()).catch(o=>({ok:!1,detail:$(o)})))},at=async()=>{document.body.style.cursor="progress";let e=await b.folders.pick().catch(o=>({ok:!1,detail:$(o)}));document.body.style.cursor="",(e.ok||e.detail)&&X(e)},lt=async e=>{if(!e.trim())return;ce(!0),document.body.style.cursor="progress";let o=await b.folders.clone(e.trim()).catch(n=>({ok:!1,detail:$(n)}));document.body.style.cursor="",ce(!1),X(o)},ge=e=>{let o=h.current;o.value=e,localStorage.setItem(j,e),q(e),N(e),A(0),v(!1),o.focus(),o.setSelectionRange(e.length,e.length)},G=async()=>{let e=h.current?.value.trim()??"";if(U||L||c.agentsOff||!e)return;let[,o,n="",Q=""]=bt.exec(e)??[];if(o&&!n)return void v(!1);let{agent:D,model:dt,effort:V,access:we,runner:pt}=i,[ft,mt]=c.folders?["",i.cwd]:[i.repo,""],Y=dt||(V?s.chain[0]:""),ke=Object.fromEntries(Object.entries({repo:ft,cwd:mt,model:Y&&V?ht(Y,V):Y,access:we==="auto"?"":we,runner:pt}).filter(([,k])=>k));ae(!0);try{let k=o==="flow"?await b.flows.run(n,{...ke,agent:D,args:yt(Q)}):await b.tasks.create({...ke,agent:D,prompt:e});localStorage.removeItem(j),Be(k.task.id,"queued",e),d.push("/dash/[org]/tasks/[id]",{params:{org:m,id:k.task.id}})}catch(k){ae(!1),k.status===409?et($(k)):H(k)}},p=(()=>{let e=/^\/(\S*)$/.exec(O)?.[1]?.toLowerCase();if(e!==void 0)return{label:"Commands",entries:[...c.flows.map(n=>({key:`flow ${n}`,label:`/flow ${n}`,hint:`Run the ${n} flow`,pick:()=>ge(`/flow ${n} `)}))].filter(n=>n.key.includes(e)),note:"No command matches."};let o=/^\/flow\s+(\S*)$/.exec(O)?.[1];if(o!==void 0)return{label:"Flows",entries:c.flows.filter(n=>n.includes(o)).map(n=>({key:n,label:n,hint:`Run the ${n} flow`,pick:()=>n===o?void G():ge(`/flow ${n} `)})),note:"No flow matches."}})(),T=!!(p&&!tt),P=p?Math.min(ot,Math.max(0,p.entries.length-1)):0;ye(()=>{let e=de.current;if(!e)return;if(!T)return void(e.matches(":popover-open")&&e.hidePopover());let o=()=>{let n=ue.current.getBoundingClientRect();e.style.top=`${Math.round(n.bottom+6)}px`,e.style.left=`${Math.round(n.left)}px`,e.style.width=`${Math.round(Math.min(n.width,460))}px`};return o(),e.matches(":popover-open")||e.showPopover(),addEventListener("scroll",o,!0),addEventListener("resize",o),()=>{removeEventListener("scroll",o,!0),removeEventListener("resize",o)}},[T,O]);let ct=s.chain[0]??"",he=c.agents.some(([e])=>e===i.agent)?c.agents:[...c.agents,[i.agent,i.agent]],ut=[[i.model||oe(ct,s.builtin),!!i.model],[i.effort,!!i.effort],[i.access,i.access!=="auto"]].filter(([e])=>e),be=[i.agent!==c.defaultAgent&&i.agent,i.runner&&(c.runners.find(([e])=>e===i.runner)?.[1]??i.runner)].filter(Boolean).join(" \xB7 ");return t(y,{children:[t("form",{ref:ue,class:"composer",onSubmit:e=>{e.preventDefault(),G()},children:[t("textarea",{ref:h,name:"prompt",rows:1,role:"combobox","aria-label":"What should the agent do?","aria-autocomplete":"list","aria-expanded":T,"aria-controls":`${C}-slash`,"aria-activedescendant":T&&p?.entries.length?`${C}-slash-${P}`:void 0,placeholder:ne,autofocus:!0,onFocus:()=>v(!1),onBlur:()=>v(!0),onInput:e=>{let o=e.currentTarget.value;localStorage.setItem(j,o),q(o),N(o),A(0),v(!1)},onKeyDown:e=>{if(!e.isComposing){if(T&&p){if(Mt(e,P,p.entries.length,A))return;if(e.key==="Escape")return e.preventDefault(),v(!0);if(p.entries.length&&(e.key==="Enter"&&!e.shiftKey||e.key==="Tab"))return e.preventDefault(),p.entries[P].pick()}e.key!=="Enter"||e.shiftKey||(e.preventDefault(),G())}}}),t("div",{class:"composer-line",children:[c.folders?M?t(y,{children:[t("input",{class:"folder-path","aria-label":M==="url"?"Repository URL":"Folder path",ref:pe,placeholder:M==="url"?"https://github.com/owner/repo":"Absolute path or ~/\u2026",readOnly:L,"aria-busy":L,onKeyDown:e=>{if(L)return e.preventDefault();if(e.key==="Escape")return e.preventDefault(),S("");e.key!=="Enter"||e.isComposing||(e.preventDefault(),(M==="url"?lt:it)(e.currentTarget.value))},onBlur:e=>!L&&!e.currentTarget.value.trim()&&S("")}),L?t("span",{class:"folder-busy",children:"Cloning\u2026"}):null]}):t("span",{class:"folder",title:i.cwd||c.folders.current.path,children:t(te,{label:"Folder",value:i.cwd,options:Ze(c.folders,z,i.cwd),subs:Object.fromEntries(Ze(c.folders,z,i.cwd).flatMap(([e])=>e&&e!==re&&e!==se&&e!==ie?[[e,z.find(o=>o.path===e)?.url??e]]:[])),onChange:e=>J("cwd",e)})}):t(te,{label:"Repository",value:i.repo,options:[...wt("No repository",i.repo,c.repos??[]),[Ye,me?"Refreshing repositories\u2026":"Refresh repositories"],[Ve,u]],onChange:e=>J("repo",e),onFocus:rt}),t("button",{type:"button",class:"quiet",popovertarget:`${C}-settings`,"aria-label":"Run options",title:"Model, effort, access and more",children:[t(F,{d:Oe}),t("span",{class:"run-picks",children:ut.map(([e,o],n)=>t("span",{class:o?void 0:"dim",children:n?` \xB7 ${e}`:e},n))}),be?t("span",{children:be}):null]}),t(_,{type:"submit",size:"sm",class:"send",leftIcon:Le,disabled:!O.trim()||c.agentsOff,loading:U,"aria-label":U?"Starting task":"Start task",title:"Start task (Enter)"})]}),c.agentsOff?t("small",{class:"folder-hint",children:"Every agent here is disabled. Enable one in its settings to start tasks."}):null,M==="url"?t("small",{class:"folder-hint",children:"Uses this machine's git logins"}):null,t(I,{id:`${C}-settings`,class:"composer-settings",popover:"auto",onBeforeToggle:kt,children:[t(E,{children:"Model"}),t(Ke,{groups:c.models,first:{label:`Default: ${s.chain.map(e=>oe(e,s.builtin)).join(", then ")}`,efforts:!0},model:i.model,effort:i.effort,onPick:(e,o)=>{x({model:e,effort:o}),document.getElementById(`${C}-settings`)?.hidePopover()}}),t(E,{children:"Access"}),t("div",{role:"group","aria-label":"Access",children:je.map(([e,o])=>t(ee,{on:i.access===e,onPick:()=>x({access:e}),children:o},e))}),he.length>1?t(y,{children:[t(E,{children:"Agent"}),t(_e,{label:"Agent",options:he,value:i.agent,onPick:e=>x({agent:e})})]}):null,c.runners.length>1?t(y,{children:[t(E,{children:"Runs on"}),t(_e,{label:"Runs on",options:c.runners,value:i.runner,onPick:e=>x({runner:e})})]}):null]}),t(I,{panelRef:de,id:`${C}-slash`,class:"composer-slash",popover:"manual",role:"listbox","aria-label":p?.label??"Commands",children:p?t(y,{children:[t(E,{children:p.label}),t(vt,{id:`${C}-slash`,entries:p.entries,active:P,onActive:A}),p.note==="loading"?t(xe,{label:"Loading pull requests",inline:!0}):p.note&&!p.entries.length?t(Ne,{children:p.note}):null]}):null})]}),le===void 0||l?null:t(Ct,{reason:le})]})}function Rt(){return t("div",{class:"composer","aria-hidden":"true",children:[t("textarea",{rows:1,disabled:!0,tabIndex:-1,placeholder:ne}),t("div",{class:"composer-line"})]})}function Yt({agent:a}){let r=w(null),[s,l]=f(),[u,d]=f(""),[m,i]=f(!1),K=w(),c=()=>{i(!0),r.current?.showModal(),K.current??=Xe(b).then(l,g=>d($(g)))},R=Me().has("new");return B(()=>{if(!R)return;let g=new URL(location.href);g.searchParams.delete("new"),history.replaceState(history.state,"",g),c()},[R]),t(y,{children:[t(_,{class:"new-task",leftIcon:Re,onClick:c,children:"New task"}),t("dialog",{ref:r,class:"compose-dialog","aria-label":a?`New task for ${a}`:"New task",onClose:()=>i(!1),onClick:g=>g.target===g.currentTarget&&r.current?.close(),children:[t("header",{children:[t("h2",{children:"New task"}),a?t("span",{class:"sub",children:a}):null,t(Se,{icon:Ee,label:"Close",onClick:()=>r.current?.close()})]}),m?s?t(Et,{...s,initial:{...Je(document.cookie),...a?{agent:a}:{}}}):u?t("p",{class:"flash err",role:"alert",children:u}):t(Rt,{}):null]})]})}export{ht as a,Ct as b,Yt as c};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{a,b,c}from"./composer-3efd63e2e0192937.js";import"./composer-data-b05f3d93fdc472d7.js";import"./task-1e6f9ba22fb5e29f.js";import"./connect-repositories-90f1aedea6de7a99.js";import"./shared-init-02666a6f76606589.js";import"./shared-init-02666a6f76606589.js";import"./model-options-5e07b3318d69d218.js";import"./types-3eca2c7f47c46054.js";import"./shared-init-a69029db2d72fb52.js";import"./shared-init-a69029db2d72fb52.js";import"./back-8ca96656264a0d1c.js";import"./shared-init-7a7f1e623f0f5861.js";import"./shared-init-7a7f1e623f0f5861.js";import"./shared-init-7a7f1e623f0f5861.js";import"./wular-pnext-3fcac605fffcc273-0.js";import"./shared-init-7a7f1e623f0f5861.js";import"./shared-init-3fcac605fffcc273-2.js";import"./shared-init-3fcac605fffcc273-2.js";import"./shared-init-3fcac605fffcc273-2.js";export{b as NeedsCredential,c as NewTaskButton,a as withEffort};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as s}from"./model-options-
|
|
1
|
+
import{g as s}from"./model-options-5e07b3318d69d218.js";var p="What should the agent do? Type / for flows and reviews.",g={repo:"",cwd:"",agent:"",model:"",effort:"",access:"auto",runner:""};function h(n,e){let t=e.agents.map(([r])=>r);return!t.length||t.includes(n.agent)?n:{...n,agent:e.defaultAgent??t[0]}}function C(n){let e=n.match(/(?:^|; )compose=([^;]*)/)?.[1];try{return e?JSON.parse(decodeURIComponent(e)):{}}catch{return{}}}var c=n=>[...n].sort((e,t)=>Number(t.default)-Number(e.default)||e.name.localeCompare(t.name)),l=n=>{let e=n.find(t=>t.default);return[["",e?`Default \xB7 ${e.name}`:"Default"],...c(n).filter(t=>t!==e).map(t=>[t.id,t.name])]};async function w(n){let e=await n.composer(),t=e.agents.find(o=>o.default)?.id,r={agents:e.agents.map(({id:o,name:i})=>[o,i]),...t?{defaultAgent:t}:{},...e.agents.length?{}:{agentsOff:!0},models:s(e.models),runners:l(e.runners),flows:e.flows,folders:e.folders},a={chain:e.chain,builtin:e.models.builtin};return{data:r,defaults:a,connectLabel:e.connectLabel??"Connect repositories"}}export{p as a,g as b,h as c,C as d,c as e,w as f};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$
|
|
1
|
+
import{$3a as r}from"./shared-init-7a7f1e623f0f5861.js";import{$4Q as o,$4S as i,$4x as e}from"./shared-init-7a7f1e623f0f5861.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 +1 @@
|
|
|
1
|
-
import{$
|
|
1
|
+
import{$0c as i}from"./shared-init-7a7f1e623f0f5861.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 on}from"./platform-step-5881a8be1e761e00.js";import{a as K}from"./agent-pills-9f6fa120182db948.js";import{d as pn}from"./model-options-d29e934a3de20ab4.js";import{b as Fn,c as $n}from"./list-16247e39898cd20e.js";import"./platform-actions-08e9b3816dcd62b1.js";import{a as Mn}from"./segmented-f646bfa8aa0aa449.js";import"./copy-294c6052b3b69424.js";import"./confirm-d6b2c5b1deccd1e8.js";import"./outcome-dialog-755fc581cbc2836e.js";import{a as E}from"./field-4d374d5ed3f43d7e.js";import{$1a as Bn,$1b as X}from"./shared-init-953965859f7bf6b9.js";import{$0h as Pn}from"./shared-init-953965859f7bf6b9.js";import"./shared-init-926144b364908b3c.js";import{$0D as tn,$0c as G,$0k as _,$0v as Rn,$0z as An}from"./shared-init-926144b364908b3c.js";import{$3c as N,$3f as vn,$3k as H,$3o as Cn,$3q as Sn,$3r as In}from"./shared-init-926144b364908b3c.js";import"./wular-pnext-9b28886f3cbe0ed3-0.js";import{$1a as Z}from"./shared-init-926144b364908b3c.js";import{$2A as bn,$2B as J,$2Q as n,$2R as j,$2S as F,$2U as wn,$2c as gn,$2g as hn,$2m as yn,$2o as kn}from"./shared-init-926144b364908b3c.js";import"./shared-init-9b28886f3cbe0ed3-2.js";import"./shared-init-9b28886f3cbe0ed3-2.js";import{$3c as S,$3h as A,$3j as fn,$3l as Y}from"./shared-init-9b28886f3cbe0ed3-2.js";var Dn=e=>(e.match(/"[^"]*"|'[^']*'|(?:\{[^}]+\}|[^\s])+/g)??[]).map(a=>a.replace(/^(["'])(.*)\1$/,"$2")),un=e=>/^https?:\/\//.test(e.trim()),En=e=>e.url??[e.command,...(e.args??[]).map(a=>a.replace(/\{((?:runtime|package):[^}]+)\}/g,(i,c)=>`{${e.argumentInputs?.find(r=>r.name===c)?.label??c}}`))].join(" ").trim(),Nn=e=>e.split("/")[0].split(".").reverse().join("."),Un=e=>[...e?.headers??[],...e?.env??[]].filter(a=>a.secret),Ln=e=>e.map(a=>a.name).join(", "),jn=[["workspace","Workspace"],["personal","Personal"]];function sn(e){let a=new URL(e,location.origin);return a.origin===location.origin&&a.pathname.startsWith("/connect/")&&a.searchParams.set("return",location.pathname),a.href}function an(e){let a=X({leaves:!0}),i=(r,m)=>void a.run("add",async()=>{let{authorize:u,...l}=await N.connections.add(r).catch(g=>{throw m?.(g),g});if(u)return location.assign(sn(u));e(l)}),c=r=>void a.run("add",async()=>location.assign(sn((await N.connections.authorize(r)).url)));return{busy:!!a.pending,add:i,signIn:c}}function mn({kind:e,list:a}){return n(S,{children:a.map(i=>n(E,{label:n("span",{class:"mono",children:i.label??i.name}),hint:i.description??(i.required?"required":"optional"),children:n("input",{name:`${e}:${i.name}`,placeholder:i.placeholder,defaultValue:e==="arg"?i.placeholder:void 0,autocomplete:"off",required:i.required})},i.name))})}function xn({platforms:e,onPick:a}){let[i,c]=A(""),[r,m]=A(),u=Y(),l=i.trim(),g=un(l)||/\s/.test(l),I=s=>{m(h=>h?.q===s?h:{q:s}),N.mcp.search(s).then(h=>m(v=>v?.q===s?{q:s,items:h}:v)).catch(h=>m(v=>v?.q===s?{q:s,error:Pn(h)}:v))},f=s=>{if(c(s),clearTimeout(u.current),!s.trim()||un(s)||/\s/.test(s.trim()))return m(void 0);m({q:s.trim()}),u.current=setTimeout(()=>I(s.trim()),250)},w=e.filter(s=>s.name.toLowerCase().includes(l.toLowerCase()));return n("div",{class:"conn-find",children:[n(Rn,{value:i,label:"Search platforms and MCP servers, or paste an MCP server URL",onInput:f,autofocus:!0}),n("div",{class:"conn-hits",role:"listbox","aria-label":"Services","aria-busy":!!(r&&!r.items),children:[g?n(_,{icon:J,title:"Use as an MCP server",sub:n("span",{class:"mono",children:l}),onClick:()=>a({kind:"mcp",target:l})}):null,g?null:w.map(s=>n(_,{icon:n(K,{brand:s.brand}),title:s.name,end:n("small",{class:"dim",children:"platform"}),onClick:()=>a({kind:"platform",info:s})},s.id)),g?null:r?.error?n("p",{class:"registry-note err",role:"alert",children:r.error}):r?r.items?r.items.length?n(S,{children:r.items.map(s=>n(_,{title:n(S,{children:[s.title,s.verified?n(H,{tone:"ok",children:["by ",Nn(s.name)]}):null]}),sub:s.description||s.name,end:n("small",{class:"dim",children:"MCP"}),onClick:()=>a({kind:"mcp",server:s})},s.name))}):l&&!w.length?n("p",{class:"registry-note",children:"Nothing matches. Paste the server's URL or command."}):null:n("p",{class:"registry-note",children:n(In,{label:"Searching MCP servers",inline:!0,dots:!0})}):null]})]})}function Hn({info:e,rows:a,scope:i,operator:c,builtin:r,onAdded:m}){let u=tn(),{busy:l,add:g,signIn:I}=an(m),f=a.find(h=>h.provider===e.id&&h.asker),w=r?.steps[e.id],s=w?n("div",{class:"conn-step",children:n(on,{step:w,info:e,org:u,agent:r.id,builtin:!0,operator:c})}):null;return i==="workspace"?{busy:l,status:null,hint:"The agent's app. Every turn.",notice:s?null:n("p",{class:"muted",children:["No agent here uses ",e.name,"."]}),submit:()=>{},actions:s}:{busy:l,status:e.connectable?f?n(H,{tone:f.status==="needs-auth"?"warn":"ok",children:f.status==="needs-auth"?"needs sign-in":f.account??"connected"}):n(H,{children:"not connected"}):null,hint:"The member\u2019s own account. Their turns only.",notice:null,submit:()=>{if(e.connectable){if(f)return I(f.id);g({name:e.name,provider:e.id})}},actions:e.connectable?n(F,{type:"submit",loading:l,children:[n(K,{brand:e.brand}),f?"Sign in again":`Sign in to ${e.name}`]}):s}}function _n({server:e,target:a,name:i,scope:c,onAdded:r}){let m=G(),[u,l]=A(i??e?.title??m.get("add")??""),[g,I]=A(e?En(e):a??""),[f,w]=A(!1),[s,h]=A(m.get("access")??"auto"),{busy:v,add:B}=an(r),P=Y(null),k=!g.trim()||un(g),$=Un(e),rn=!k||f||$.length>0,U=k?s:"auto",T=$.find(d=>d.required)??$[0],W=$.filter(d=>d!==T),L=W.some(d=>d.required),V=[...e?.argumentInputs??[],...e?.env??[],...e?.headers??[]].some(d=>!d.secret),nn=d=>{let x=[...new FormData(d)].map(([y,R])=>[y,String(R).trim()]),q=y=>x.find(([R])=>R===y)?.[1]??"",Q=y=>Object.fromEntries(x.filter(([R,D])=>R.startsWith(y)&&D).map(([R,D])=>[R.slice(y.length),D])),z=g.trim();if(!u.trim()||!z||L)return;let cn=e?.command?En(e):void 0,ln=e&&z===cn?[e.command,...e.args??[]]:Dn(z),[dn,...t]=ln.map(y=>y.replace(/\{([^}]+)\}/g,(R,D)=>{let M=e?.argumentInputs?.find(en=>en.name===D||en.label===D);return M?q(`arg:${M.name}`):R})),p=Q("env:"),o=Q("header:"),C=k?{url:z,...e?.url===z?{type:e.type}:{},...Object.keys(o).length?{headers:o}:{}}:{command:dn,...t.length?{args:t}:{},...Object.keys(p).length?{env:p}:{}};e?.description&&(C.description=e.description);let b=q("key");B({name:u.trim(),provider:"mcp",...c==="personal"?{scope:"personal"}:{},...U==="auto"?{}:{access:U},endpoint:C,...b?{auth:"key",key:b,keyIn:k?{header:q("header")}:{env:q("env")}}:k?{}:{auth:"none"}},y=>{y.needs==="key"&&(w(!0),requestAnimationFrame(()=>P.current?.querySelector("input[name=key]")?.focus()))})},O=n("div",{ref:P,class:"add-form",children:[e?.description?n("p",{class:"muted",children:e.description}):null,n("div",{class:"add-grid",children:[n(E,{label:"Name",children:n("input",{name:"name",value:u,onInput:d=>l(d.currentTarget.value),placeholder:"Acme docs",autocomplete:"off",required:!0})}),n(E,{label:"URL or command",children:n("input",{name:"target",class:"mono",value:g,onInput:d=>I(d.currentTarget.value),placeholder:"https://mcp.acme.dev/mcp",autocomplete:"off",spellcheck:!1,required:!0})})]}),V?n("div",{class:"add-grid",children:[n(mn,{kind:"arg",list:e?.argumentInputs??[]}),n(mn,{kind:"env",list:(e?.env??[]).filter(d=>!d.secret)}),n(mn,{kind:"header",list:(e?.headers??[]).filter(d=>!d.secret)})]}):null,W.length?n("p",{class:"muted",role:"note",children:L?`This server needs ${Ln($.filter(d=>d.required))}, and a connection holds one key. Add it in the server's own config instead.`:`A connection holds one key, sent as ${T.name}. Add ${Ln(W)} in the server's own config when needed.`}):null,rn?n("div",{class:"add-grid",children:[n(E,{label:"API key",hint:k?void 0:"optional",children:n("input",{name:"key",type:"password",placeholder:"acme_live_4f9a\u2026",autocomplete:"off",required:!!k},e?.name)}),k?n(E,{label:"Header",children:n("input",{name:"header",class:"mono",defaultValue:T?.name??"Authorization",placeholder:"Authorization",autocomplete:"off",required:!0},`header:${T?.name}`)}):n(E,{label:"Environment variable",children:n("input",{name:"env",class:"mono",defaultValue:T?.name,placeholder:"ACME_API_KEY",autocomplete:"off"},`env:${T?.name}`)})]}):null,n("details",{class:"add-more",children:[n("summary",{children:"More options"}),n("div",{class:"add-grid",children:n(E,{label:"Access",hint:"read-only keeps only its read-only tools",group:!0,children:n(An,{label:"Access",options:k?pn:pn.filter(([d])=>d==="auto"),value:U,onChange:h})})})]})]});return{busy:v,body:O,submit:nn,actions:n(F,{type:"submit",disabled:L,loading:v,children:"Add connection"})}}function Kn({pick:e,rows:a,local:i,admin:c,operator:r,builtin:m,scope:u,onBack:l,onAdded:g,onClose:I}){let f=e.kind==="platform",[w,s]=A(i?"workspace":u??(f||!c?"personal":"workspace")),h=f?Hn({info:e.info,rows:a,scope:w,operator:r,builtin:m,onAdded:g}):void 0,v=f?void 0:_n({...e,scope:w,onAdded:g}),B=h??v,P=f?e.info.name:e.server?.title??"MCP server";return n(Z,{class:"add-modal",title:n("span",{class:"conn-title",children:[l?n(wn,{label:"Back",onClick:l,children:n(j,{d:hn})}):null,f?n(K,{brand:e.info.brand}):null,P]}),dismiss:!0,busy:B.busy,onSubmit:k=>{k.preventDefault(),B.submit(k.currentTarget)},onClose:I,actions:B.actions,children:[i?null:n("div",{class:"conn-scope",children:[n(E,{label:"Acts as",group:!0,children:f||c?n(Mn,{label:"Acts as",options:jn,value:w,onChange:k=>s(k)}):n("p",{class:"muted",children:"Personal. Admins add workspace servers."})}),h?n("p",{class:"conn-state",children:[h.status,n("span",{class:"muted",children:h.hint})]}):n("p",{class:"muted",children:w==="workspace"?"An admin\u2019s account. Every turn.":"The member\u2019s own account. Their turns only."})]}),h?.notice??null,v?.body??null]})}function On({catalog:e,rows:a,local:i,admin:c,operator:r,builtin:m,start:u,onAdded:l,onClose:g}){let I=G(),f=I.get("add"),w=e.find(P=>P.id===f),[s,h]=A(u?.pick??(w?{kind:"platform",info:w}:I.has("url")?{kind:"mcp",target:I.get("url")??"",name:f??void 0}:void 0)),v=u?.scope??I.get("scope")??void 0,B=e.filter(P=>P.personal||a.some(k=>k.agent&&k.provider===P.id));return s?n(Kn,{pick:s,rows:a,local:i,admin:c,operator:r,builtin:m,scope:v,onBack:u?void 0:()=>h(void 0),onAdded:l,onClose:g},s.kind==="platform"?s.info.id:s.server?.name??s.target):n(Z,{class:"add-modal",title:"Add a connection",dismiss:!0,onClose:g,children:n(xn,{platforms:B,onPick:h})})}var Wn=e=>e.url?URL.canParse(e.url)?new URL(e.url).host:e.url:e.command;function Vn(e,a){let i=new Map;for(let c of a.filter(r=>r.personal))i.set(c.id,{key:c.id,name:c.name,info:c,rows:[]});for(let c of e){let r=a.find(l=>l.id===c.provider),m=r?r.id:`mcp:${c.name.replace(/-user$/,"")}`,u=i.get(m)??{key:m,name:r?.name??c.name.replace(/-user$/,""),info:r,where:r?void 0:Wn(c),rows:[]};u.rows.push(c),i.set(m,u)}return[...i.values()]}function qn({row:e,label:a,onReconnect:i,busy:c}){let r=e.status==="needs-auth";return n(S,{children:[n("i",{class:r?"conn-dot warn":e.status==="disabled"?"conn-dot off":"conn-dot"}),n("span",{class:"conn-name",children:r?"needs sign-in":a??e.account??e.name}),e.access==="read-only"?n("span",{class:"dim",title:"Read-only",children:n(j,{d:yn})}):null,r&&i?n(F,{variant:"ghost",size:"sm",loading:c,onClick:i,children:"Reconnect"}):null]})}function zn({row:e,onReconnect:a,onRemoved:i}){let c=Fn({title:`Remove ${e.name}?`,body:"Tasks stop using it, and its key or sign-in is deleted.",link:e.name,onRemove:()=>N.connections.remove(e.id).then(i,Bn)});return n(S,{children:[n(vn,{button:"icon",label:`${e.name} actions`,summary:n(j,{d:bn}),children:[n(_,{title:e.auth==="key"?"New key":"Sign in again",onClick:a}),c.item]}),c.dialog]})}function De({first:e,catalog:a,local:i,admin:c,operator:r,viewer:m,agents:u,builtins:l}){let[g,I]=A(e.filter(t=>t.provider!=="env")),f=G(),w=f.get("reconnect"),s=f.get("connect"),[h,v]=A(g.find(t=>t.name===w&&t.auth==="key")),B=$n("Add connection",["url","access","tools","scope"]),[P,k]=A(),$=X({leaves:!0}),rn=tn(),U=t=>I(p=>p.some(o=>o.id===t.id)?p.map(o=>o.id===t.id?t:o):[...p,t]),T=t=>I(p=>p.filter(o=>o.id!==t.id)),{add:W}=an(U),L=t=>{if(t.auth==="key")return v(t);$.run(t.id,async()=>location.assign(sn((await N.connections.authorize(t.id)).url)))},V=Vn(g,a),nn=()=>{k(void 0),B.close()},O=l[0],[d,x]=A(),q=({step:t,info:p,agent:o=O.id,quiet:C})=>n(on,{step:t,info:p,org:rn,agent:o,builtin:!0,operator:r,unreachable:a.some(b=>b.unreachable),quiet:C}),Q=({accounts:t,title:p})=>n(S,{children:[n("i",{class:"conn-dot"}),n("span",{class:"conn-name",title:p,children:[...new Set(t.filter(Boolean))].join(", ")||"installed"}),n("span",{class:"grow"})]}),z=({info:t})=>{let p=l.flatMap(o=>(o.steps[t.id]?.live??[]).map(C=>({agent:o.name,account:C.account})));return p.length?n(S,{children:[n(Q,{accounts:p.map(o=>o.account),title:p.map(o=>`${o.agent} in ${o.account??t.name}`).join(", ")}),n(F,{size:"sm",variant:"ghost",onClick:()=>x(t),children:"Manage"})]}):n(S,{children:[n(H,{children:"not set up"}),n(F,{size:"sm",onClick:()=>x(t),children:["Set up ",t.name]})]})},cn=t=>{let p=t.rows.filter(b=>b.agent),o=t.rows.find(b=>!b.owner&&!b.agent);if(t.info?.builtinApp==="own"&&l.some(b=>b.steps[t.info.id]))return n("div",{class:"conn-cell",children:n(z,{info:t.info})});if(t.info){let b=t.info,y=O?.steps[b.id],R=[...new Set(p.map(M=>M.agent))].filter(M=>M!==O?.id),D=M=>u.find(en=>en.id===M)?.name??M;return n("div",{class:"conn-cell",children:[y?.live.length?n(Q,{accounts:y.live.map(M=>M.account)}):null,R.length?n("span",{class:"conn-others",title:`Their own ${b.name} apps: ${R.map(D).join(", ")}`,children:[n(j,{d:gn}),R.length]}):null,y?n(q,{step:y,info:b,quiet:!0}):null,y||R.length?null:n("span",{class:"dim",children:"\u2014"})]})}if(o)return n("div",{class:"conn-cell",children:[n(qn,{row:o,label:o.name,busy:$.pending===o.id,onReconnect:c?()=>L(o):void 0}),n("span",{class:"grow"}),c?n(zn,{row:o,onReconnect:()=>L(o),onRemoved:()=>T(o)}):null]});let C=t.rows[0];return c&&C?n(F,{variant:"ghost",size:"sm",leftIcon:J,onClick:()=>k({pick:{kind:"mcp",target:C.url??C.command,name:t.name},scope:"workspace"}),children:"Connect"}):n("span",{class:"dim",children:"\u2014"})},ln=t=>{let p=t.rows.find(y=>y.asker),o=t.rows.filter(y=>y.owner&&!y.asker),C=t.rows[0],b=o.length?n("span",{class:"conn-others",title:o.map(y=>y.owner?.name??"A member").join(", "),children:[n(j,{d:kn}),o.length]}):null;return n("div",{class:"conn-cell",children:p?n(S,{children:[n(qn,{row:p,busy:$.pending===p.id,onReconnect:()=>L(p)}),n("span",{class:"grow"}),b,n(zn,{row:p,onReconnect:()=>L(p),onRemoved:()=>T(p)})]}):t.info&&!t.info.connectable?n(S,{children:[n("span",{class:"dim grow",children:"\u2014"}),b]}):n(S,{children:[n(F,{variant:"ghost",size:"sm",leftIcon:J,autoFocus:t.key===s,onClick:()=>t.info?W({name:t.info.name,provider:t.info.id}):k({pick:{kind:"mcp",target:C?.url??C?.command,name:t.name},scope:"personal"}),children:"Connect"}),n("span",{class:"grow"}),b]})})},dn=[["Platforms",V.filter(t=>t.info)],["MCP servers",V.filter(t=>!t.info)]].filter(([,t])=>t.length);return n(S,{children:[n(Cn,{look:"filled",title:"Connections",actions:B.button,children:[V.length?n(S,{children:[n("div",{class:"table-scroll",children:n("table",{class:"conns",children:[n("colgroup",{children:[n("col",{class:"conns-svc"}),n("col",{}),i?null:n("col",{})]}),n("thead",{children:n("tr",{children:[n("th",{children:"Service"}),n("th",{children:"Workspace"}),i?null:n("th",{children:m?`Personal \xB7 ${m}`:"Personal"})]})}),dn.map(([t,p])=>n("tbody",{children:[n("tr",{class:"conns-group",children:n("th",{colSpan:i?2:3,children:t})}),p.map(o=>n("tr",{class:o.key===s?"conns-marked":void 0,children:[n("td",{children:n("span",{class:"conn-svc",title:o.where,children:[o.info?n(K,{brand:o.info.brand}):n("span",{class:"conn-mark",children:o.name[0]}),n("b",{children:o.name})]})}),o.info&&!o.info.connectable&&!o.rows.length&&!l.some(C=>C.steps[o.info.id]?.live.length)?n("td",{colSpan:i?1:2,children:n("div",{class:"conn-cell",children:o.info.builtinApp==="own"&&l.some(C=>C.steps[o.info.id])?n(z,{info:o.info}):O?.steps[o.info.id]?n(q,{step:O.steps[o.info.id],info:o.info}):n("span",{class:"dim",children:"\u2014"})})}):n(S,{children:[n("td",{children:cn(o)}),i?null:n("td",{children:ln(o)})]})]},o.key))]},t))]})}),i?null:n("p",{class:"conns-hint",children:"Personal accounts run only on their owner's turns."})]}):n(Sn,{title:"No connections yet",children:"Add one so tasks can use another service, like an issue tracker or a database."}),h?n(Qn,{row:h,onSaved:t=>{U(t),v(void 0)},onClose:()=>v(void 0)}):null]}),d?n(Z,{title:`${d.name} apps`,dismiss:!0,onClose:()=>x(void 0),children:[n("p",{class:"muted",children:["Each agent has its own ",d.name," app, so each answers as its own @name in"," ",d.name,". Set one up for every built-in agent that should work there."]}),n("div",{class:"agent-apps",children:l.filter(t=>t.steps[d.id]).map(t=>n("div",{class:"agent-app",children:[n("b",{children:t.name}),n(q,{step:t.steps[d.id],info:d,agent:t.id})]},t.id))}),n("p",{class:"muted",children:"Other agents set theirs up on their own Platforms tab."})]}):null,B.open||P?n(On,{catalog:a,rows:g,local:i,admin:c,operator:r,builtin:O,start:P,onAdded:t=>{U(t),nn()},onClose:nn}):null]})}function Qn({row:e,onSaved:a,onClose:i}){let c=X({leaves:!0}),r=!!c.pending,m=Y(null);return fn(()=>m.current?.focus(),[]),n("form",{class:"add-row conn-key",method:"post",onSubmit:u=>{u.preventDefault();let l=String(new FormData(u.currentTarget).get("key")??"").trim();l&&c.run("save",async()=>a(await N.connections.update(e.id,{key:l})))},children:[n("input",{name:"key",type:"password","aria-label":`New key for ${e.name}`,placeholder:`New key for ${e.name}, then Enter`,ref:m,autocomplete:"off",required:!0}),n(F,{type:"submit",loading:r,children:"Save key"}),n(F,{variant:"ghost",disabled:r,onClick:i,children:"Cancel"})]})}export{De as ConnectionsList};
|
|
1
|
+
"use client";import{a as K}from"./agent-pills-f07bea43753a9342.js";import{a as on}from"./platform-step-adfc87c1fa86e7e1.js";import{d as pn}from"./model-options-5e07b3318d69d218.js";import{b as Fn,c as $n}from"./list-84356c9286747b10.js";import"./platform-actions-267a43c805e3c3a6.js";import"./copy-38fa78628f39ec10.js";import"./confirm-6e26ab941d655b9f.js";import{a as Mn}from"./segmented-15503e745dd97f56.js";import"./outcome-dialog-c4d61a288688f53a.js";import{a as E}from"./field-444bab2e16b91c26.js";import{$1a as Bn,$1b as X}from"./shared-init-a69029db2d72fb52.js";import{$0h as Pn}from"./shared-init-a69029db2d72fb52.js";import"./shared-init-7a7f1e623f0f5861.js";import{$2D as tn,$2c as G,$2k as _,$2v as Rn,$2z as An}from"./shared-init-7a7f1e623f0f5861.js";import{$0c as N,$0f as vn,$0k as H,$0o as Cn,$0q as Sn,$0r as In}from"./shared-init-7a7f1e623f0f5861.js";import"./wular-pnext-3fcac605fffcc273-0.js";import{$3a as Z}from"./shared-init-7a7f1e623f0f5861.js";import{$4A as bn,$4B as J,$4Q as n,$4R as j,$4S as F,$4U as wn,$4c as gn,$4g as hn,$4m as yn,$4o as kn}from"./shared-init-7a7f1e623f0f5861.js";import"./shared-init-3fcac605fffcc273-2.js";import"./shared-init-3fcac605fffcc273-2.js";import{$2c as S,$2h as A,$2j as fn,$2l as Y}from"./shared-init-3fcac605fffcc273-2.js";var Dn=e=>(e.match(/"[^"]*"|'[^']*'|(?:\{[^}]+\}|[^\s])+/g)??[]).map(a=>a.replace(/^(["'])(.*)\1$/,"$2")),un=e=>/^https?:\/\//.test(e.trim()),En=e=>e.url??[e.command,...(e.args??[]).map(a=>a.replace(/\{((?:runtime|package):[^}]+)\}/g,(i,c)=>`{${e.argumentInputs?.find(r=>r.name===c)?.label??c}}`))].join(" ").trim(),Nn=e=>e.split("/")[0].split(".").reverse().join("."),Un=e=>[...e?.headers??[],...e?.env??[]].filter(a=>a.secret),Ln=e=>e.map(a=>a.name).join(", "),jn=[["workspace","Workspace"],["personal","Personal"]];function sn(e){let a=new URL(e,location.origin);return a.origin===location.origin&&a.pathname.startsWith("/connect/")&&a.searchParams.set("return",location.pathname),a.href}function an(e){let a=X({leaves:!0}),i=(r,m)=>void a.run("add",async()=>{let{authorize:u,...l}=await N.connections.add(r).catch(g=>{throw m?.(g),g});if(u)return location.assign(sn(u));e(l)}),c=r=>void a.run("add",async()=>location.assign(sn((await N.connections.authorize(r)).url)));return{busy:!!a.pending,add:i,signIn:c}}function mn({kind:e,list:a}){return n(S,{children:a.map(i=>n(E,{label:n("span",{class:"mono",children:i.label??i.name}),hint:i.description??(i.required?"required":"optional"),children:n("input",{name:`${e}:${i.name}`,placeholder:i.placeholder,defaultValue:e==="arg"?i.placeholder:void 0,autocomplete:"off",required:i.required})},i.name))})}function xn({platforms:e,onPick:a}){let[i,c]=A(""),[r,m]=A(),u=Y(),l=i.trim(),g=un(l)||/\s/.test(l),I=s=>{m(h=>h?.q===s?h:{q:s}),N.mcp.search(s).then(h=>m(v=>v?.q===s?{q:s,items:h}:v)).catch(h=>m(v=>v?.q===s?{q:s,error:Pn(h)}:v))},f=s=>{if(c(s),clearTimeout(u.current),!s.trim()||un(s)||/\s/.test(s.trim()))return m(void 0);m({q:s.trim()}),u.current=setTimeout(()=>I(s.trim()),250)},w=e.filter(s=>s.name.toLowerCase().includes(l.toLowerCase()));return n("div",{class:"conn-find",children:[n(Rn,{value:i,label:"Search platforms and MCP servers, or paste an MCP server URL",onInput:f,autofocus:!0}),n("div",{class:"conn-hits",role:"listbox","aria-label":"Services","aria-busy":!!(r&&!r.items),children:[g?n(_,{icon:J,title:"Use as an MCP server",sub:n("span",{class:"mono",children:l}),onClick:()=>a({kind:"mcp",target:l})}):null,g?null:w.map(s=>n(_,{icon:n(K,{brand:s.brand}),title:s.name,end:n("small",{class:"dim",children:"platform"}),onClick:()=>a({kind:"platform",info:s})},s.id)),g?null:r?.error?n("p",{class:"registry-note err",role:"alert",children:r.error}):r?r.items?r.items.length?n(S,{children:r.items.map(s=>n(_,{title:n(S,{children:[s.title,s.verified?n(H,{tone:"ok",children:["by ",Nn(s.name)]}):null]}),sub:s.description||s.name,end:n("small",{class:"dim",children:"MCP"}),onClick:()=>a({kind:"mcp",server:s})},s.name))}):l&&!w.length?n("p",{class:"registry-note",children:"Nothing matches. Paste the server's URL or command."}):null:n("p",{class:"registry-note",children:n(In,{label:"Searching MCP servers",inline:!0,dots:!0})}):null]})]})}function Hn({info:e,rows:a,scope:i,operator:c,builtin:r,onAdded:m}){let u=tn(),{busy:l,add:g,signIn:I}=an(m),f=a.find(h=>h.provider===e.id&&h.asker),w=r?.steps[e.id],s=w?n("div",{class:"conn-step",children:n(on,{step:w,info:e,org:u,agent:r.id,builtin:!0,operator:c})}):null;return i==="workspace"?{busy:l,status:null,hint:"The agent's app. Every turn.",notice:s?null:n("p",{class:"muted",children:["No agent here uses ",e.name,"."]}),submit:()=>{},actions:s}:{busy:l,status:e.connectable?f?n(H,{tone:f.status==="needs-auth"?"warn":"ok",children:f.status==="needs-auth"?"needs sign-in":f.account??"connected"}):n(H,{children:"not connected"}):null,hint:"The member\u2019s own account. Their turns only.",notice:null,submit:()=>{if(e.connectable){if(f)return I(f.id);g({name:e.name,provider:e.id})}},actions:e.connectable?n(F,{type:"submit",loading:l,children:[n(K,{brand:e.brand}),f?"Sign in again":`Sign in to ${e.name}`]}):s}}function _n({server:e,target:a,name:i,scope:c,onAdded:r}){let m=G(),[u,l]=A(i??e?.title??m.get("add")??""),[g,I]=A(e?En(e):a??""),[f,w]=A(!1),[s,h]=A(m.get("access")??"auto"),{busy:v,add:B}=an(r),P=Y(null),k=!g.trim()||un(g),$=Un(e),rn=!k||f||$.length>0,U=k?s:"auto",T=$.find(d=>d.required)??$[0],W=$.filter(d=>d!==T),L=W.some(d=>d.required),V=[...e?.argumentInputs??[],...e?.env??[],...e?.headers??[]].some(d=>!d.secret),nn=d=>{let x=[...new FormData(d)].map(([y,R])=>[y,String(R).trim()]),q=y=>x.find(([R])=>R===y)?.[1]??"",Q=y=>Object.fromEntries(x.filter(([R,D])=>R.startsWith(y)&&D).map(([R,D])=>[R.slice(y.length),D])),z=g.trim();if(!u.trim()||!z||L)return;let cn=e?.command?En(e):void 0,ln=e&&z===cn?[e.command,...e.args??[]]:Dn(z),[dn,...t]=ln.map(y=>y.replace(/\{([^}]+)\}/g,(R,D)=>{let M=e?.argumentInputs?.find(en=>en.name===D||en.label===D);return M?q(`arg:${M.name}`):R})),p=Q("env:"),o=Q("header:"),C=k?{url:z,...e?.url===z?{type:e.type}:{},...Object.keys(o).length?{headers:o}:{}}:{command:dn,...t.length?{args:t}:{},...Object.keys(p).length?{env:p}:{}};e?.description&&(C.description=e.description);let b=q("key");B({name:u.trim(),provider:"mcp",...c==="personal"?{scope:"personal"}:{},...U==="auto"?{}:{access:U},endpoint:C,...b?{auth:"key",key:b,keyIn:k?{header:q("header")}:{env:q("env")}}:k?{}:{auth:"none"}},y=>{y.needs==="key"&&(w(!0),requestAnimationFrame(()=>P.current?.querySelector("input[name=key]")?.focus()))})},O=n("div",{ref:P,class:"add-form",children:[e?.description?n("p",{class:"muted",children:e.description}):null,n("div",{class:"add-grid",children:[n(E,{label:"Name",children:n("input",{name:"name",value:u,onInput:d=>l(d.currentTarget.value),placeholder:"Acme docs",autocomplete:"off",required:!0})}),n(E,{label:"URL or command",children:n("input",{name:"target",class:"mono",value:g,onInput:d=>I(d.currentTarget.value),placeholder:"https://mcp.acme.dev/mcp",autocomplete:"off",spellcheck:!1,required:!0})})]}),V?n("div",{class:"add-grid",children:[n(mn,{kind:"arg",list:e?.argumentInputs??[]}),n(mn,{kind:"env",list:(e?.env??[]).filter(d=>!d.secret)}),n(mn,{kind:"header",list:(e?.headers??[]).filter(d=>!d.secret)})]}):null,W.length?n("p",{class:"muted",role:"note",children:L?`This server needs ${Ln($.filter(d=>d.required))}, and a connection holds one key. Add it in the server's own config instead.`:`A connection holds one key, sent as ${T.name}. Add ${Ln(W)} in the server's own config when needed.`}):null,rn?n("div",{class:"add-grid",children:[n(E,{label:"API key",hint:k?void 0:"optional",children:n("input",{name:"key",type:"password",placeholder:"acme_live_4f9a\u2026",autocomplete:"off",required:!!k},e?.name)}),k?n(E,{label:"Header",children:n("input",{name:"header",class:"mono",defaultValue:T?.name??"Authorization",placeholder:"Authorization",autocomplete:"off",required:!0},`header:${T?.name}`)}):n(E,{label:"Environment variable",children:n("input",{name:"env",class:"mono",defaultValue:T?.name,placeholder:"ACME_API_KEY",autocomplete:"off"},`env:${T?.name}`)})]}):null,n("details",{class:"add-more",children:[n("summary",{children:"More options"}),n("div",{class:"add-grid",children:n(E,{label:"Access",hint:"read-only keeps only its read-only tools",group:!0,children:n(An,{label:"Access",options:k?pn:pn.filter(([d])=>d==="auto"),value:U,onChange:h})})})]})]});return{busy:v,body:O,submit:nn,actions:n(F,{type:"submit",disabled:L,loading:v,children:"Add connection"})}}function Kn({pick:e,rows:a,local:i,admin:c,operator:r,builtin:m,scope:u,onBack:l,onAdded:g,onClose:I}){let f=e.kind==="platform",[w,s]=A(i?"workspace":u??(f||!c?"personal":"workspace")),h=f?Hn({info:e.info,rows:a,scope:w,operator:r,builtin:m,onAdded:g}):void 0,v=f?void 0:_n({...e,scope:w,onAdded:g}),B=h??v,P=f?e.info.name:e.server?.title??"MCP server";return n(Z,{class:"add-modal",title:n("span",{class:"conn-title",children:[l?n(wn,{label:"Back",onClick:l,children:n(j,{d:hn})}):null,f?n(K,{brand:e.info.brand}):null,P]}),dismiss:!0,busy:B.busy,onSubmit:k=>{k.preventDefault(),B.submit(k.currentTarget)},onClose:I,actions:B.actions,children:[i?null:n("div",{class:"conn-scope",children:[n(E,{label:"Acts as",group:!0,children:f||c?n(Mn,{label:"Acts as",options:jn,value:w,onChange:k=>s(k)}):n("p",{class:"muted",children:"Personal. Admins add workspace servers."})}),h?n("p",{class:"conn-state",children:[h.status,n("span",{class:"muted",children:h.hint})]}):n("p",{class:"muted",children:w==="workspace"?"An admin\u2019s account. Every turn.":"The member\u2019s own account. Their turns only."})]}),h?.notice??null,v?.body??null]})}function On({catalog:e,rows:a,local:i,admin:c,operator:r,builtin:m,start:u,onAdded:l,onClose:g}){let I=G(),f=I.get("add"),w=e.find(P=>P.id===f),[s,h]=A(u?.pick??(w?{kind:"platform",info:w}:I.has("url")?{kind:"mcp",target:I.get("url")??"",name:f??void 0}:void 0)),v=u?.scope??I.get("scope")??void 0,B=e.filter(P=>P.personal||a.some(k=>k.agent&&k.provider===P.id));return s?n(Kn,{pick:s,rows:a,local:i,admin:c,operator:r,builtin:m,scope:v,onBack:u?void 0:()=>h(void 0),onAdded:l,onClose:g},s.kind==="platform"?s.info.id:s.server?.name??s.target):n(Z,{class:"add-modal",title:"Add a connection",dismiss:!0,onClose:g,children:n(xn,{platforms:B,onPick:h})})}var Wn=e=>e.url?URL.canParse(e.url)?new URL(e.url).host:e.url:e.command;function Vn(e,a){let i=new Map;for(let c of a.filter(r=>r.personal))i.set(c.id,{key:c.id,name:c.name,info:c,rows:[]});for(let c of e){let r=a.find(l=>l.id===c.provider),m=r?r.id:`mcp:${c.name.replace(/-user$/,"")}`,u=i.get(m)??{key:m,name:r?.name??c.name.replace(/-user$/,""),info:r,where:r?void 0:Wn(c),rows:[]};u.rows.push(c),i.set(m,u)}return[...i.values()]}function qn({row:e,label:a,onReconnect:i,busy:c}){let r=e.status==="needs-auth";return n(S,{children:[n("i",{class:r?"conn-dot warn":e.status==="disabled"?"conn-dot off":"conn-dot"}),n("span",{class:"conn-name",children:r?"needs sign-in":a??e.account??e.name}),e.access==="read-only"?n("span",{class:"dim",title:"Read-only",children:n(j,{d:yn})}):null,r&&i?n(F,{variant:"ghost",size:"sm",loading:c,onClick:i,children:"Reconnect"}):null]})}function zn({row:e,onReconnect:a,onRemoved:i}){let c=Fn({title:`Remove ${e.name}?`,body:"Tasks stop using it, and its key or sign-in is deleted.",link:e.name,onRemove:()=>N.connections.remove(e.id).then(i,Bn)});return n(S,{children:[n(vn,{button:"icon",label:`${e.name} actions`,summary:n(j,{d:bn}),children:[n(_,{title:e.auth==="key"?"New key":"Sign in again",onClick:a}),c.item]}),c.dialog]})}function De({first:e,catalog:a,local:i,admin:c,operator:r,viewer:m,agents:u,builtins:l}){let[g,I]=A(e.filter(t=>t.provider!=="env")),f=G(),w=f.get("reconnect"),s=f.get("connect"),[h,v]=A(g.find(t=>t.name===w&&t.auth==="key")),B=$n("Add connection",["url","access","tools","scope"]),[P,k]=A(),$=X({leaves:!0}),rn=tn(),U=t=>I(p=>p.some(o=>o.id===t.id)?p.map(o=>o.id===t.id?t:o):[...p,t]),T=t=>I(p=>p.filter(o=>o.id!==t.id)),{add:W}=an(U),L=t=>{if(t.auth==="key")return v(t);$.run(t.id,async()=>location.assign(sn((await N.connections.authorize(t.id)).url)))},V=Vn(g,a),nn=()=>{k(void 0),B.close()},O=l[0],[d,x]=A(),q=({step:t,info:p,agent:o=O.id,quiet:C})=>n(on,{step:t,info:p,org:rn,agent:o,builtin:!0,operator:r,unreachable:a.some(b=>b.unreachable),quiet:C}),Q=({accounts:t,title:p})=>n(S,{children:[n("i",{class:"conn-dot"}),n("span",{class:"conn-name",title:p,children:[...new Set(t.filter(Boolean))].join(", ")||"installed"}),n("span",{class:"grow"})]}),z=({info:t})=>{let p=l.flatMap(o=>(o.steps[t.id]?.live??[]).map(C=>({agent:o.name,account:C.account})));return p.length?n(S,{children:[n(Q,{accounts:p.map(o=>o.account),title:p.map(o=>`${o.agent} in ${o.account??t.name}`).join(", ")}),n(F,{size:"sm",variant:"ghost",onClick:()=>x(t),children:"Manage"})]}):n(S,{children:[n(H,{children:"not set up"}),n(F,{size:"sm",onClick:()=>x(t),children:["Set up ",t.name]})]})},cn=t=>{let p=t.rows.filter(b=>b.agent),o=t.rows.find(b=>!b.owner&&!b.agent);if(t.info?.builtinApp==="own"&&l.some(b=>b.steps[t.info.id]))return n("div",{class:"conn-cell",children:n(z,{info:t.info})});if(t.info){let b=t.info,y=O?.steps[b.id],R=[...new Set(p.map(M=>M.agent))].filter(M=>M!==O?.id),D=M=>u.find(en=>en.id===M)?.name??M;return n("div",{class:"conn-cell",children:[y?.live.length?n(Q,{accounts:y.live.map(M=>M.account)}):null,R.length?n("span",{class:"conn-others",title:`Their own ${b.name} apps: ${R.map(D).join(", ")}`,children:[n(j,{d:gn}),R.length]}):null,y?n(q,{step:y,info:b,quiet:!0}):null,y||R.length?null:n("span",{class:"dim",children:"\u2014"})]})}if(o)return n("div",{class:"conn-cell",children:[n(qn,{row:o,label:o.name,busy:$.pending===o.id,onReconnect:c?()=>L(o):void 0}),n("span",{class:"grow"}),c?n(zn,{row:o,onReconnect:()=>L(o),onRemoved:()=>T(o)}):null]});let C=t.rows[0];return c&&C?n(F,{variant:"ghost",size:"sm",leftIcon:J,onClick:()=>k({pick:{kind:"mcp",target:C.url??C.command,name:t.name},scope:"workspace"}),children:"Connect"}):n("span",{class:"dim",children:"\u2014"})},ln=t=>{let p=t.rows.find(y=>y.asker),o=t.rows.filter(y=>y.owner&&!y.asker),C=t.rows[0],b=o.length?n("span",{class:"conn-others",title:o.map(y=>y.owner?.name??"A member").join(", "),children:[n(j,{d:kn}),o.length]}):null;return n("div",{class:"conn-cell",children:p?n(S,{children:[n(qn,{row:p,busy:$.pending===p.id,onReconnect:()=>L(p)}),n("span",{class:"grow"}),b,n(zn,{row:p,onReconnect:()=>L(p),onRemoved:()=>T(p)})]}):t.info&&!t.info.connectable?n(S,{children:[n("span",{class:"dim grow",children:"\u2014"}),b]}):n(S,{children:[n(F,{variant:"ghost",size:"sm",leftIcon:J,autoFocus:t.key===s,onClick:()=>t.info?W({name:t.info.name,provider:t.info.id}):k({pick:{kind:"mcp",target:C?.url??C?.command,name:t.name},scope:"personal"}),children:"Connect"}),n("span",{class:"grow"}),b]})})},dn=[["Platforms",V.filter(t=>t.info)],["MCP servers",V.filter(t=>!t.info)]].filter(([,t])=>t.length);return n(S,{children:[n(Cn,{look:"filled",title:"Connections",actions:B.button,children:[V.length?n(S,{children:[n("div",{class:"table-scroll",children:n("table",{class:"conns",children:[n("colgroup",{children:[n("col",{class:"conns-svc"}),n("col",{}),i?null:n("col",{})]}),n("thead",{children:n("tr",{children:[n("th",{children:"Service"}),n("th",{children:"Workspace"}),i?null:n("th",{children:m?`Personal \xB7 ${m}`:"Personal"})]})}),dn.map(([t,p])=>n("tbody",{children:[n("tr",{class:"conns-group",children:n("th",{colSpan:i?2:3,children:t})}),p.map(o=>n("tr",{class:o.key===s?"conns-marked":void 0,children:[n("td",{children:n("span",{class:"conn-svc",title:o.where,children:[o.info?n(K,{brand:o.info.brand}):n("span",{class:"conn-mark",children:o.name[0]}),n("b",{children:o.name})]})}),o.info&&!o.info.connectable&&!o.rows.length&&!l.some(C=>C.steps[o.info.id]?.live.length)?n("td",{colSpan:i?1:2,children:n("div",{class:"conn-cell",children:o.info.builtinApp==="own"&&l.some(C=>C.steps[o.info.id])?n(z,{info:o.info}):O?.steps[o.info.id]?n(q,{step:O.steps[o.info.id],info:o.info}):n("span",{class:"dim",children:"\u2014"})})}):n(S,{children:[n("td",{children:cn(o)}),i?null:n("td",{children:ln(o)})]})]},o.key))]},t))]})}),i?null:n("p",{class:"conns-hint",children:"Personal accounts run only on their owner's turns."})]}):n(Sn,{title:"No connections yet",children:"Add one so tasks can use another service, like an issue tracker or a database."}),h?n(Qn,{row:h,onSaved:t=>{U(t),v(void 0)},onClose:()=>v(void 0)}):null]}),d?n(Z,{title:`${d.name} apps`,dismiss:!0,onClose:()=>x(void 0),children:[n("p",{class:"muted",children:["Each agent has its own ",d.name," app, so each answers as its own @name in"," ",d.name,". Set one up for every built-in agent that should work there."]}),n("div",{class:"agent-apps",children:l.filter(t=>t.steps[d.id]).map(t=>n("div",{class:"agent-app",children:[n("b",{children:t.name}),n(q,{step:t.steps[d.id],info:d,agent:t.id})]},t.id))}),n("p",{class:"muted",children:"Other agents set theirs up on their own Platforms tab."})]}):null,B.open||P?n(On,{catalog:a,rows:g,local:i,admin:c,operator:r,builtin:O,start:P,onAdded:t=>{U(t),nn()},onClose:nn}):null]})}function Qn({row:e,onSaved:a,onClose:i}){let c=X({leaves:!0}),r=!!c.pending,m=Y(null);return fn(()=>m.current?.focus(),[]),n("form",{class:"add-row conn-key",method:"post",onSubmit:u=>{u.preventDefault();let l=String(new FormData(u.currentTarget).get("key")??"").trim();l&&c.run("save",async()=>a(await N.connections.update(e.id,{key:l})))},children:[n("input",{name:"key",type:"password","aria-label":`New key for ${e.name}`,placeholder:`New key for ${e.name}, then Enter`,ref:m,autocomplete:"off",required:!0}),n(F,{type:"submit",loading:r,children:"Save key"}),n(F,{variant:"ghost",disabled:r,onClick:i,children:"Cancel"})]})}export{De as ConnectionsList};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$
|
|
1
|
+
import{$4O as l,$4Q as e,$4U as c,$4w as r}from"./shared-init-7a7f1e623f0f5861.js";import{$2h as n}from"./shared-init-3fcac605fffcc273-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{a as u,e as g}from"./platform-actions-267a43c805e3c3a6.js";import"./copy-38fa78628f39ec10.js";import"./confirm-6e26ab941d655b9f.js";import"./segmented-15503e745dd97f56.js";import"./outcome-dialog-c4d61a288688f53a.js";import"./field-444bab2e16b91c26.js";import{$1a as l}from"./shared-init-a69029db2d72fb52.js";import"./shared-init-a69029db2d72fb52.js";import"./shared-init-7a7f1e623f0f5861.js";import"./shared-init-7a7f1e623f0f5861.js";import{$0c as c,$0r as f}from"./shared-init-7a7f1e623f0f5861.js";import"./wular-pnext-3fcac605fffcc273-0.js";import"./shared-init-7a7f1e623f0f5861.js";import{$4Q as e,$4S as m}from"./shared-init-7a7f1e623f0f5861.js";import"./shared-init-3fcac605fffcc273-2.js";import"./shared-init-3fcac605fffcc273-2.js";import{$2h as t,$2j as p}from"./shared-init-3fcac605fffcc273-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 te}from"./combo-
|
|
1
|
+
"use client";import{a as te}from"./combo-7b125f3927083749.js";import{e as Z,n as Q}from"./model-options-5e07b3318d69d218.js";import{a as X}from"./types-3eca2c7f47c46054.js";import{d as ee,e as ne,f as Y}from"./list-84356c9286747b10.js";import{a as F}from"./copy-38fa78628f39ec10.js";import"./confirm-6e26ab941d655b9f.js";import{$1a as E,$1b as O}from"./shared-init-a69029db2d72fb52.js";import{$0h as M}from"./shared-init-a69029db2d72fb52.js";import"./shared-init-7a7f1e623f0f5861.js";import{$2D as J,$2a as z,$2k as K,$2z as q}from"./shared-init-7a7f1e623f0f5861.js";import{$0c as g,$0e as N,$0k as W,$0o as A,$0r as L}from"./shared-init-7a7f1e623f0f5861.js";import"./wular-pnext-3fcac605fffcc273-0.js";import{$3a as V}from"./shared-init-7a7f1e623f0f5861.js";import{$4Q as e,$4R as _,$4S as S,$4w as D}from"./shared-init-7a7f1e623f0f5861.js";import"./shared-init-3fcac605fffcc273-2.js";import"./shared-init-3fcac605fffcc273-2.js";import{$2c as k,$2h as C,$2j as B,$2l as $}from"./shared-init-3fcac605fffcc273-2.js";var P=[{id:"claude",name:"Claude",key:"ANTHROPIC_API_KEY",signIn:"Claude"},{id:"codex",name:"Codex",key:"OPENAI_API_KEY",signIn:"ChatGPT"}],ie=[...P.map(t=>t.key),...Q.flatMap(t=>t.envKey||[])],se=(t,u)=>ie.find(l=>l!==u&&!t.some(f=>f.name===l))??"";function re({keys:t,admin:u,focus:l,ask:f}){let[c,h]=C(P.find(p=>p.id===l)?.key??(/^[A-Z][A-Z0-9_]*$/.test(l)?l:se(t))),[m,y]=C(u?"workspace":"personal"),o=$(null),d=O({toast:"Not saved",refresh:!0});return B(()=>{l&&o.current?.focus()},[]),e("form",{class:"cred-add",method:"post",onSubmit:p=>{p.preventDefault();let a=p.currentTarget,s=c.trim(),b=String(new FormData(a).get("key")??"").trim();if(!s||!b)return;let I=()=>void d.run("add",async()=>{await g.credentials.add({env:{[s]:b},...m==="workspace"?{workspace:!0}:{}}),a.reset(),h(se(t,s))});t.some(w=>w.name===s&&w.scope===m)?f(ee(s,m),I):I()},children:[e(te,{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":!!d.pending,required:!0}),u?e(q,{label:"Who can use this key",options:Z,value:m,onChange:y}):null,e(S,{type:"submit",loading:!!d.pending,children:"Add"})]})}function de({login:t,engine:u,onChange:l,onDone:f,onError:c,onCancel:h}){let[m,y]=C();N(t.id&&t.state!=="done"&&t.state!=="failed"?a=>g.credentials.loginStatus(t.id).then(s=>{if(!a.aborted){if(s.state==="done")return f();if(s.state==="failed")return c(s.error??"Sign-in failed. Try again.");t.state==="verifying"&&s.state==="open"&&s.url===m||l(s)}}).catch(s=>{if(a.aborted)return;let b=s.status;if(b===void 0||b>=500)return console.error("coder dashboard: sign-in status",s);c(M(s))}):void 0,800,[t.id]);let o=a=>{y(t.url),l({...t,state:"verifying"}),g.credentials.loginCode(t.id,a).catch(s=>c(M(s)))},d=t.state==="verifying",p=!!m&&t.state==="open"&&t.url!==m;return e(V,{class:"sign-in",title:`Sign in with ${u.signIn}`,cancelDanger:!0,onClose:h,children:[e("p",{class:"muted",children:"Coder signs in on a private machine and keeps the sign-in for your tasks."}),e("div",{class:"sign-link",children:t.url?e(k,{children:[e(S,{href:t.url,external:!0,autoFocus:!0,children:["Open ",new URL(t.url).host]}),e(F,{value:t.url,label:"Copy link"})]}):e(L,{label:"Starting the sign-in machine\u2026",inline:!0})}),e("ol",{class:"steps-list sign-steps",role:"status",children:t.engine==="codex"?e(k,{children:[e("li",{children:["Open the sign-in page and enter this code.",t.code?e("span",{class:"code-box",children:[t.code,e(F,{value:t.code,label:"Copy code"})]}):null]}),e("li",{children:t.url?e(L,{label:"Waiting for your approval on the sign-in page\u2026",inline:!0}):"Approve it there."})]}):e(k,{children:[e("li",{children:["Open the ",u.signIn," sign-in and approve it."]}),e("li",{children:[p?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 s=a.clipboardData?.getData("text").trim();s&&(a.preventDefault(),a.currentTarget.value=s,o(s))},onKeyDown:a=>{let s=a.currentTarget.value.trim();a.key==="Enter"&&s&&o(s)}},t.url),d?e(L,{label:"Checking the code\u2026",inline:!0}):null]})]})})]})}function Te({status:t}){let[u,l]=C(t),f=O(),[c,h]=C(),m=f.pending??(c?`${c.engine}:login`:"");N(c?async o=>{let d=await g.engines.status();o.aborted||(l(d),(d[c.engine]?.signedIn||Date.now()>c.until)&&h(void 0))}:void 0,2e3,[c]);let y=(o,d)=>void f.run(`${o}:${d}`,async()=>{l(await g.engines[d](o)),d==="login"&&h({engine:o,until:Date.now()+5*6e4})});return e(k,{children:[P.map(o=>{let d=u[o.id],p=m===`${o.id}:login`;return e(A,{look:"filled",title:o.name,children:e("div",{class:"cred-new",children:[d?.signedIn?e("span",{class:"signed grow",children:[e(_,{d:D}),"Signed in to ",o.name]}):p?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."}),d?.signedIn?e(S,{variant:"secondary",danger:!0,size:"sm",loading:m===`${o.id}:logout`,onClick:()=>y(o.id,"logout"),children:"Sign out"}):e(S,{variant:"secondary",size:"sm",loading:p,disabled:!!m,onClick:()=>y(o.id,"login"),children:"Sign in"}),p?e(S,{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:l}){let f=z(),c=J(),[h,m]=C({}),[y,o]=C(!1),d=X(u),p=P.filter(n=>u.user&&u.server?.subscriptions?.[n.id]),a=t.filter(n=>!n.subscription),s=O({refresh:!0}),b=ne(),I=`coder-logins:${c}`,w=()=>{try{return JSON.parse(sessionStorage.getItem(I)??"{}")}catch{return{}}},v=(n,i)=>{m(r=>({...r,[n]:i}));try{let r={...w(),[n]:i?.id||void 0};sessionStorage.setItem(I,JSON.stringify(r))}catch{}},R=$(new Set);B(()=>{for(let[n,i]of Object.entries(w()))g.credentials.loginStatus(i).then(r=>{if(!R.current.has(n)){if(r.state==="done")return x(n);if(r.state==="failed")return v(n),E(r.error??"Sign-in failed. Try again.");v(n,r)}}).catch(()=>{R.current.has(n)||v(n)})},[]);let x=n=>{v(n),f.refresh()},U=n=>{R.current.add(n),v(n,{id:"",engine:n,state:"starting"}),g.credentials.login(n).then(i=>v(n,i)).catch(i=>{v(n),E(i)})},G=n=>t.find(i=>i.subscription&&i.name===n),H=(n,i)=>G(n.id)?b.ask(`Replace the personal ${n.name} subscription?`,i):i(),j=n=>s.run(`remove:${n.scope}/${n.name}`,()=>g.credentials.remove(n.name,{workspace:n.scope==="workspace"}));return e(k,{children:[p.length?e(A,{look:"filled",title:"Subscriptions",children:e("div",{class:"cred-engine",children:[e("p",{class:"muted cred-note",children:["Personal: each member signs in with their own. A subscription runs its owner's tasks, and platform turns from accounts connected on"," ",e("a",{class:"link",href:`/dash/${c}/settings/connections`,children:"Connections"}),"."]}),e("table",{class:"rows creds",children:e("tbody",{children:p.map(n=>{let i=G(n.id),r=h[n.id],oe=[i?.account?.email,i?.account?.plan];return e(Y,{title:n.name,sub:i?oe.filter(Boolean).join(" \xB7 "):void 0,actions:e(k,{children:[i?e("span",{class:"signed",children:[e(_,{d:D}),"Connected"]}):e(S,{autoFocus:l===n.id,disabled:!!r,onClick:()=>U(n.id),children:["Sign in with ",n.signIn]}),r?e(de,{login:r,engine:n,onChange:T=>v(r.engine,T),onDone:()=>x(r.engine),onError:T=>{v(r.engine),E(T)},onCancel:()=>{v(r.engine),r.id&&g.credentials.cancelLogin(r.id).catch(E)}}):null]}),alignMenu:!0,menu:i||n.id==="claude"?e(k,{children:[i?e(K,{title:"Sign in again",disabled:!!r,onClick:()=>H(n,()=>U(n.id))}):null,n.id==="claude"?e(K,{title:"Paste a setup token",onClick:()=>o(!0)}):null]}):void 0,remove:i?{label:"Sign out",title:`Sign out of ${n.name}?`,body:"Tasks that use it stop running.",onRemove:()=>j(i)}:void 0},n.id)})})}),y?e("div",{class:"cred-new",children:e("form",{class:"cred-add",method:"post",onSubmit:n=>{n.preventDefault();let i=String(new FormData(n.currentTarget).get("token")??"");i.trim()&&H(P[0],()=>void s.run("token",async()=>{await g.credentials.add({env:{CLAUDE_CODE_OAUTH_TOKEN:i.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(S,{type:"submit",loading:s.pending==="token",children:"Add"})]})}):null]})}):null,e(A,{look:"filled",title:"API keys",count:a.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."]}),a.length?e("table",{class:"rows creds",children:e("tbody",{children:a.map(n=>e(Y,{title:n.name,badges:e(W,{children:n.scope}),sub:n.masked,remove:n.scope==="personal"||d?{title:`Remove ${n.name}?`,body:"Tasks that use it stop running.",link:n.name,onRemove:()=>j(n)}:void 0},`${n.scope}/${n.name}`))})}):null,e("div",{class:"cred-new",children:e(re,{keys:a,admin:d,focus:p.some(n=>n.id===l)?"":l,ask:b.ask})})]})}),b.dialog]})}export{Be as CredentialsList,Te as EngineLogins};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./field-
|
|
1
|
+
import{a as e}from"./field-444bab2e16b91c26.js";import{$2a as s,$2f as f,$2h as c}from"./shared-init-7a7f1e623f0f5861.js";import{$0f as p}from"./shared-init-7a7f1e623f0f5861.js";import{$4Q as t,$4R as u,$4S as l,$4h as i}from"./shared-init-7a7f1e623f0f5861.js";import{$2c as n}from"./shared-init-3fcac605fffcc273-2.js";function x({page:o,from:d,to:g,today:m,on:h}){let y=s();return t(p,{class:h?"custom on":"custom",align:"left",summary:t(n,{children:["Custom",t(u,{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:f(o).params,search:c(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(l,{type:"submit",size:"sm","data-keep":!0,children:"Apply"})]})})}export{x as a};
|