@wular/coder 0.4.12 → 0.4.13
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/README.md +1 -1
- package/dist/actions-D12xDiQS.js +4 -0
- package/dist/{adapter-CVd5klMH.js → adapter-Bz0E-DAY.js} +2 -2
- package/dist/{adapter-CU9H4g6c.js → adapter-CsacmMmv.js} +1 -1
- package/dist/adapter-DzpdWewB.js +1 -0
- package/dist/{agent-BA6xr8QY.js → agent-JJStALIx.js} +2 -2
- package/dist/apps-Bnk7F3A2.js +379 -0
- package/dist/args-Dqf5Y1RP.js +1 -0
- package/dist/async-Tj4zKHXR.js +3 -0
- package/dist/{auth-DuXnSNf9.js → auth-BhpnOCbn.js} +1 -1
- package/dist/builtin/coder/agent.json +0 -1
- package/dist/builtin/coder/system.md +1 -1
- package/dist/{chat-CgQdDRhs.js → chat-CSepnsrK.js} +1 -1
- package/dist/cli.js +13 -13
- package/dist/cmd-BHZwhrfa.js +118 -0
- package/dist/connection-BkYTuJjV.js +1 -0
- package/dist/context-zhSlmXOp.js +7 -0
- package/dist/dash/standalone/node_modules/contextjsx/package.json +1 -1
- package/dist/dash/standalone/server/build-index.json +1 -1
- package/dist/dash/standalone/server/manifest.json +1281 -1261
- package/dist/dash/standalone/server/modules-server-server-react-server/src/agent/context/{turn.dac8eb211c500271.js → turn.6bb73458768e222e.js} +4 -16
- package/dist/dash/standalone/server/modules-server-server-react-server/src/client/{index.0de14cb4e30bd70d.js → index.de1f1311bab4252f.js} +12 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/core/{defaults.1b615366c56838a1.js → defaults.e972c134a1ae918f.js} +3 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/core/task/{log-view.60308a11f7001eb7.js → log-view.ec6391dbf3063330.js} +40 -48
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/{load.be791a5eaf328738.js → load.30ed8c28774a1a82.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/connect/{page.0fbfdba5254f7ae5.js → page.04762872666a6f0a.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/create/[id]/{page.70913bd4075da914.js → page.118a70787eff1761.js} +23 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{loading.e348ec45e9ed951b.js → loading.fcdfd50c21031895.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{notify.61aab176baeefebd.js → notify.98dfcd316c306258.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{page.815371ed0d5dd4fa.js → page.74c59322f5fe8a2c.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{sign-out.1d6af804f9ec043d.js → sign-out.730aa96b086ac996.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{agent-menu.2ed0e66d131fc148.js → agent-menu.1be5795272b245c8.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{agents-grid.f43bcc1148ce3650.js → agents-grid.2c30ace077893029.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{connect-apps.f3af8cc8540719d7.js → connect-apps.8a20501ccb244421.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{loading.fac1132ad9c4248e.js → loading.733f0acc2af5ceda.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{page.c6efd5432c1a4a75.js → page.d066b77dd3187026.js} +9 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{layout.a795379254982121.js → layout.b26006f060cd48f0.js} +9 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{page.a2cb6d1f1714259a.js → page.4b23e9df21433bd3.js} +9 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{loading.4da9e2ba3fea937f.js → loading.e06845585ca67abc.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{page.996172c951739b35.js → page.4048048acb374c67.js} +35 -23
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{platform-actions.8e7ca54dd1821e98.js → platform-actions.000f2f87a48bfbc6.js} +36 -10
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{agent-settings-form.aa9e157d141481d7.js → agent-settings-form.ee0bb2dc4d403ec3.js} +8 -8
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{loading.ad1a4c9b000d269a.js → loading.0e3641f3e4abaa7c.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{page.44d886e60ae04303.js → page.649b4ba135ded99b.js} +7 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{loading.521c9e7b8d77f557.js → loading.195e168e8e41d797.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{page.828cfb8112404792.js → page.96f7573208644f40.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{loading.8f998a9c511e1fb3.js → loading.905293c9aa9afbc9.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{page.45e18b6dc3019af4.js → page.5f2b8585db8b27ad.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{versions-list.c8d76988c734dda2.js → versions-list.8700f0106f4e8c15.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{loading.b1367e864b4fb406.js → loading.f94b2f9ab04aaf21.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{page.dd11f2618e08becd.js → page.e898c4b5ef16ecb0.js} +7 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-pills.f987c12bcbc5c850.js → agent-pills.44e689e546fb042b.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-toggle.1579dc8acbaacf92.js → agent-toggle.4c67dfbb7d28a416.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{hero.ad5cc342db794e5d.js → hero.9740a8e2f4b41f28.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{connect-repositories.43b4b28f194ea842.js → connect-repositories.ff8b78a03153239b.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{editor.776856fe1ed1a642.js → editor.471af698b8060eba.js} +31 -20
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{import-picker.eafa5b41a2ed571f.js → import-picker.b7b5c89e618e8f89.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{loading.ee001af7a96e3972.js → loading.ecb9dfd4d0f9d107.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{page.7d84ef2b178b34d2.js → page.880bdac7fe843635.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{layout.393cf7429eea189e.js → layout.81f7e055829854a3.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/operator-apps.09bf294d753ee9d7.js +115 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{page.980adfb7c5714752.js → page.8f8697b1b6b34ad7.js} +36 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{page.24a1987405ed7b17.js → page.fe608b8e661aba1d.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{connections-list.21ec9dc73ce68656.js → connections-list.97381888bfdd711b.js} +8 -8
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials-list.683476f62a9ecde7.js → credentials-list.a4d8338c7f6a5702.js} +10 -8
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials.b43dd3d97c536c2a.js → credentials.1443bbed1ff1d441.js} +8 -8
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{engines-list.9e116751bd34e2cc.js → engines-list.d47db60d7dc01ebd.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{list.083f5c665df04b1b.js → list.a5b273558fb7f0f0.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{models-list.537f63f8e5dd085d.js → models-list.31d369f1b7ab45da.js} +66 -32
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{page.dfed4ae6ffc74434.js → page.805d0f8a2c5817d6.js} +15 -15
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{runners-list.3afa989490bbe77c.js → runners-list.1e83449aa6593224.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{secrets-list.0d175ee815b22cd7.js → secrets-list.17ac06593005b8ba.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{layout.3e8289f888fa444c.js → layout.8c4a2b31b194ba3e.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{page.06feaa5fbb06f1e6.js → page.a77996786278cda0.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{settings-head.bbc7ced8dd5491eb.js → settings-head.705be0b1129b97af.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{create-link.ff95e4b6977d0474.js → create-link.19b4c50ef497aca1.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{outcome-dialog.894c73f9abee3ce1.js → outcome-dialog.18cf32fa42247b91.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{page.f06fda0df59beeb5.js → page.616f0b36bf7925bc.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{activity.3c79cf14feff12bf.js → activity.a911169a820ba604.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{loading.47cbb34ea8d2e33f.js → loading.76f851da5cc5268d.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{page.abed2a8424ef3da0.js → page.ddb594bb6567ee13.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/task-actions.51fbeac76459433a.js +240 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-view.dc294bb94b7437e1.js → task-view.3276538e8306fd8a.js} +28 -28
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer-data.309a194fc7fa34be.js → composer-data.05fc39e1a7fd1ab7.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer.5072aacdce127689.js → composer.dbf06b05c5e2eba3.js} +9 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{status.16190fdd5fd7daad.js → status.cb704b48ce86cc7d.js} +6 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{task.0a1b5878dccd3b37.js → task.f089c1c122ed6dd2.js} +17 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-list.1162926f7498c732.js → tasks-list.5a00d69851dae119.js} +37 -22
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-section.1d687c986db53a73.js → tasks-section.36e70c93f7d0feee.js} +7 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{page.d5d8cb5033823c9c.js → page.185b1ba0c803db3f.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{loading.97d277dbab9c15cf.js → loading.a7e0ec01bfa769e3.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{page.fb21ebe90d49dac1.js → page.d41fea7676e37bfc.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{range-bar.2197d8f43216d104.js → range-bar.69e68c9dae09f238.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{layout.185dbc99875e208a.js → layout.296d70b95894209f.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{foreign-link.1f4217895ff1e835.js → foreign-link.8c6adf9c5a6f467c.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{loading-card.cc76fc9708142525.js → loading-card.1cea8a722c10b998.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{page-head.85f15db7b648d48c.js → page-head.87b92529dbb53ceb.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{stream.e2915852cf82c86b.js → stream.c32d78562f75db25.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{task-toasts.0ed8ccaae81b9d53.js → task-toasts.44075fa7e04575e8.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{back.180765bdadf6d602.js → back.d6109e72fbd04b45.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{org.572ad93c7707ab27.js → org.d3abfd4053b711ce.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{confirm.c1281f9b12854210.js → confirm.29e198be34578222.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{filter.3a452a262f040973.js → filter.81bb9a5c60cd1089.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{modal.25d53e5b41b9c4e5.js → modal.0b69c7fd9db025b9.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{segmented.a08dc08338d080e9.js → segmented.633abe26ff760e37.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{sentinel.17cffebfc3103b9f.js → sentinel.0ddf515b8f09ef9f.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tabs.66b2e54963f6901b.js → tabs.1600a0b563a5c7dd.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{toolbar.24036899654de6df.js → toolbar.8b3a460a65edf85a.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{action.b9a5c37272250e82.js → action.67dd6f8ab1ae067d.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{client.a3928fa2dcd27b75.js → client.78267fa3d7905d17.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{action-71685b2d5ad9f359.js → action-a76e495fb39a73d3.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{agent-pills-15da36c2cb81991b.js → agent-pills-4d3c6a2aa9eb1522.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{agent-settings-form-6e6a87d6e673daa8.js → agent-settings-form-f7231a66e391f6b6.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{agent-toggle-ca98586e3b4ce9ae.js → agent-toggle-d7d27123f2070f18.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{agents-grid-29c399e46b4e9e2b.js → agents-grid-185ecb3d86c6c447.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{back-fa9d6e37f9828093.js → back-e29cb10f5548ddae.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{combo-86f3e11d1f6f6cee.js → combo-702c94817bf6ac17.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/composer-56ebf36d63400423.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{composer-85e0ec7163ae18b7.js → composer-a686289a79f64bae.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/composer-data-f46a9bc7a14b4f9a.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{confirm-c29a1db0130638d2.js → confirm-a78147b6ecef3847.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{connect-apps-b73490e04ae6398d.js → connect-apps-696726aedab42c96.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{connect-repositories-0de82daaf654b1d3.js → connect-repositories-7770ab805160028d.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/connections-list-07559f145f3e3da3.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{copy-445c11202f136275.js → copy-bdc60bdafe336316.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/create-link-426b0a5871ee41dd.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/credentials-list-f07d090410104148.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{custom-range-a0630599f907b30e.js → custom-range-6618f32ef6cd4e80.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/editor-0860e370cbfc6b03.js +6 -0
- package/dist/dash/standalone/static/assets/chunks/engines-list-31b9bb7885924b05.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{field-b82a0f895266791c.js → field-bb8191aa02d07282.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/instructions-06b63e558f879da5.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{instructions-affaaeff366b1725.js → instructions-2d9fbcbfadac4f40.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/list-2773686bf8df64c7.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/models-list-03611e64b6a07efe.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{notice-57db7a1f05b7308c.js → notice-d14fdac28139c0a8.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/outcome-dialog-d3ba8ef89c59f801.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{outcome-dialog-5cf575a5e6921a5d.js → outcome-dialog-fde11a52c282301d.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/platform-actions-2a71c62b9f7eaef3.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/platform-actions-70600c9943320152.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/runners-list-edf536eb8003eab5.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/secrets-list-e86122f73525ff95.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/segmented-0b6dc6b93c35e0f5.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/shared-init-b281027d465e004f.js +5 -0
- package/dist/dash/standalone/static/assets/chunks/shared-init-c3bd249cf1eca6d1.js +2 -0
- package/dist/dash/standalone/static/assets/chunks/side-toggle-9b3af821cfe4c824.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{tail-b1c46587301ef397.js → tail-f8804b80cf32f8d0.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/task-a37e7c26e82eb77d.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/task-actions-705395565f2d83b8.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/task-view-cb21169f38b56d15.js +6 -0
- package/dist/dash/standalone/static/assets/chunks/tasks-list-d7dccfd7e0623ae0.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{versions-list-21cb854e6a7108a7.js → versions-list-f8f2e71df691efda.js} +1 -1
- package/dist/dash/standalone/static/assets/create-param-id-c2c756f652f2fc30.css +1 -0
- package/dist/dash/standalone/static/assets/{dash-param-org-account-9471bec93c444232.css → dash-param-org-account-702f8a1b213e4026.css} +1 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-aad2f9f93c06e9ab.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-new-f9dcbcec36586f2b.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-8ff47f5d622c1f9b.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-907036d553cfeb36.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-5cc77badad15f00c.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-705d7c15868b4fd6.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-04e189c045098772.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-76fcd1ce7b3dae71.css +1 -0
- package/dist/dash/standalone/static/assets/{dash-param-org-bcfa3de29341d5ba.css → dash-param-org-eccb6bb9297a53e6.css} +1 -1
- package/dist/dash/standalone/static/assets/dash-param-org-operator-635a121f7a9a95bd.css +1 -0
- package/dist/dash/standalone/static/assets/{dash-param-org-settings-6d6902345d88a687.css → dash-param-org-settings-a3297dc4d9e0c961.css} +1 -1
- package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-bcb06f81d9e8268d.css +1 -0
- package/dist/dash/standalone/static/assets/{dash-param-org-setup-173efecd7b990c2e.css → dash-param-org-setup-df4be8b188b9777f.css} +1 -1
- package/dist/dash/standalone/static/assets/dash-param-org-tasks-16f9866a1b4801cd.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-02ae551dcd852b57.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-usage-f2175403069aab99.css +1 -0
- package/dist/dash/standalone/static/assets/{global-87e1762113874559.css → global-e1de614478b64717.css} +1 -1
- package/dist/dash/standalone/static/assets/pnext-client-0dc829ba60df5c26.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-14d191f7f1da6602.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-169eaa63783b71fd.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-1e34cfefafa70fac.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-285d61f00a80f40b.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-35b89c3ba23ee845.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-6c42784e005d4b87.js +1 -0
- package/dist/dash/standalone/static/assets/{pnext-client-576c06599e241231.js → pnext-client-6cd93f9bd4cf6ffd.js} +1 -1
- package/dist/dash/standalone/static/assets/pnext-client-7355f473fade532d.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-815c3c297f75efb0.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-87fe73c10a4dc33c.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-98b56a142d441260.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-b4bafe68a40f720b.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-bf61ff39bdc0db48.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-c9fa86c244813f74.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-d2e7a75e16221224.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-d34e774405ea8da8.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-d511822afdb41d1d.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-e113aa2f25ecfe01.js +1 -0
- package/dist/dash/standalone/static/assets/{pnext-client-c2c30dcb6dc31d60.js → pnext-client-eb62f461d0c32266.js} +1 -1
- package/dist/{discover-CPZdprlQ.js → discover-CHfF4cEz.js} +1 -1
- package/dist/{docs-x-l7gjFE.js → docs-KHc0_gFX.js} +1 -1
- package/dist/{drive-Y-ZlgiUW.js → drive-Bwl7Bjme.js} +1 -1
- package/dist/emit-BrkJJPUE.js +11 -0
- package/dist/env-6Y-NNnYD.js +1 -0
- package/dist/errors-DO_IltpP.js +16 -0
- package/dist/exec-BmTa0vcO.js +4 -0
- package/dist/executor-ufWRqhdS.js +11 -0
- package/dist/flow/builtin/review/index.d.ts +1 -1
- package/dist/flow/builtin/review/index.js +3 -3
- package/dist/flow/index.d.ts +1 -1
- package/dist/flow/index.js +1 -1
- package/dist/hook-CIipj9MJ.js +1 -0
- package/dist/http-Cg8PSe-c.js +1 -0
- package/dist/{index-BdkdNI1v.d.ts → index-ChcxzFdB.d.ts} +50 -185
- package/dist/integrations-I7fRDk_l.js +4 -0
- package/dist/lib/broker.js +2 -2
- package/dist/load-BDlEFetB.js +2 -0
- package/dist/local-COlczLwI.js +5 -0
- package/dist/log-view-CfX9lakH.js +4 -0
- package/dist/{maintenance-BfxcatXH.js → maintenance-CKCIWOvn.js} +1 -1
- package/dist/{match-Bq4sDuCy.js → match-CufHAZQH.js} +1 -1
- package/dist/mcp-BkwmRHI9.js +2 -0
- package/dist/mcp-CGU7aoJ-.js +1 -0
- package/dist/{mcp-Bta09QCU.js → mcp-DAHbhfUh.js} +1 -1
- package/dist/models-CzggS7p2.js +1 -0
- package/dist/output-SNqdgh9A.js +17 -0
- package/dist/permission-MWFjKxqX.js +1 -0
- package/dist/{prompt-onpyIyXK.js → prompt-CIx4jwQF.js} +1 -1
- package/dist/refresh-CxsaX5R9.js +1 -0
- package/dist/remote-C9Hj2cby.js +2 -0
- package/dist/remote-HUZCWgfl.js +3 -0
- package/dist/{runner-CTFTuaz_.js → runner-DYysY1-G.js} +1 -1
- package/dist/runner.json +1 -1
- package/dist/runner.tgz +0 -0
- package/dist/runners-CfaGE0nV.js +36 -0
- package/dist/schema.js +1 -1
- package/dist/sdk.d.ts +285 -104
- package/dist/sdk.js +1 -1
- package/dist/serve-DdAdw7Su.js +4 -0
- package/dist/serve-NQykWAKV.js +1 -0
- package/dist/serve-vKNqVaVy.js +12 -0
- package/dist/slack-BtKvW_4v.js +5 -0
- package/dist/task-CFxs0E_J.js +1 -0
- package/dist/task-iuYQ0zAK.js +7 -0
- package/dist/tools-B6ZxcqRi.js +2 -0
- package/dist/{tools-CM4UCsId.js → tools-FVop8XYG.js} +1 -1
- package/dist/tools-search-kjKKolwp.js +1 -0
- package/dist/turn-DQ13lkPF.js +2 -0
- package/dist/types-DPtbvoo3.js +1 -0
- package/dist/types-DmThhjcW.js +1 -0
- package/dist/views-CMHXBMJp.js +3 -0
- package/dist/{wire-JMNPv8f6.js → wire-C9CupY_A.js} +1 -1
- package/dist/worker-BQpx1dPr.js +9 -0
- package/dist/worker-sTJL2eoe.js +1 -0
- package/docs/access.md +33 -0
- package/docs/agents/coder.md +0 -11
- package/docs/agents/index.md +1 -1
- package/docs/cli/agent.md +6 -6
- package/docs/cli/connection.md +5 -5
- package/docs/cli/flow.md +9 -9
- package/docs/cli/index.md +3 -3
- package/docs/cli/model.md +12 -10
- package/docs/cli/runner.md +1 -1
- package/docs/cli/server.md +2 -2
- package/docs/cli/task.md +23 -21
- package/docs/config.md +5 -15
- package/docs/flows.md +1 -1
- package/docs/models.md +7 -6
- package/docs/sdk.md +29 -29
- package/docs/self-host.md +25 -25
- package/package.json +2 -2
- package/plugins/claude/.claude-plugin/plugin.json +1 -1
- package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
- package/dist/actions-BT7_eKXm.js +0 -10
- package/dist/adapter-BT8ECcRG.js +0 -1
- package/dist/apps-D-v5sQJk.js +0 -367
- package/dist/args-CbO_Ck9Z.js +0 -11
- package/dist/async-XNO3nqum.js +0 -3
- package/dist/cmd-DX5ByXo3.js +0 -119
- package/dist/connection-DNxi2btM.js +0 -1
- package/dist/context-65bOofts.js +0 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/operator-apps.a244f3199e7cf09c.js +0 -144
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/task-actions.587da79d68ab8d14.js +0 -151
- package/dist/dash/standalone/static/assets/chunks/composer-910bb87127972f62.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/composer-data-5fed6c271a4791ca.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/connections-list-c50f58b4b28d10bb.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/create-link-6d64a2d5f9ce6de0.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/credentials-list-bee95799b2319b3b.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/defaults-52f30e83d7666f7a.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/editor-b9951819f21b2e43.js +0 -6
- package/dist/dash/standalone/static/assets/chunks/engines-list-2720c3e8fa12b2f7.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/instructions-fd7402ac5aa8b50e.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/list-d918f79562d497eb.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/models-list-12bc7aceaa52f5b0.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/outcome-dialog-b219595be320108a.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/platform-actions-1d27d2ba7eee9ff1.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/platform-actions-dba96dcb0f6513db.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/runners-list-36f8c5ecfcf8e9ae.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/secrets-list-d7dbafd24dd18481.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/segmented-8f809ebe712e92a7.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/shared-init-cc13a835f3508618.js +0 -2
- package/dist/dash/standalone/static/assets/chunks/shared-init-f475017dd5811e33.js +0 -5
- package/dist/dash/standalone/static/assets/chunks/side-toggle-0aa237eba3dfe9c1.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/task-681061023bdf0a49.js +0 -5
- package/dist/dash/standalone/static/assets/chunks/task-actions-c9e46e81604e85c5.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/task-view-134186a544917ceb.js +0 -5
- package/dist/dash/standalone/static/assets/chunks/tasks-list-352a3222d878de0f.js +0 -1
- package/dist/dash/standalone/static/assets/create-param-id-da3f7e20689fe51a.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-64500e78caae32df.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-new-c067c22928a2d7cc.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-9dec87710e04f949.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-779c474301e04440.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-c7d594b5232630c2.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-a80e62570716fdb9.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-ce278252012297b9.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-d3b6d701eb8e1403.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-operator-b7bc6447cc27c9ce.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-85c7af9a89eef06e.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-tasks-ae0bc03f468e63cc.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-7325d8cff5be3592.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-usage-517b2a7ae462ac57.css +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-05df74b071ddb0b3.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-2c19cca257f78ae6.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-2db05dfa62642a65.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-36b0d6085a073880.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-6aa0f19a30d58d63.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-6b30b71f452f2f07.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-6ccb4d4fff812db3.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-74eb465defba421e.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-8c692d12b2fd90d6.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-92e17d39063a9ced.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-93246aea268c2682.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-9954dcbc0c579e0d.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-c0dfa1cdde9a9855.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-c28d38d4aafd4af6.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-dbf741073e11eac0.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-e29194a27280333f.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-f8a7e692b27caad9.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-fc5b8cfcba2a9f63.js +0 -1
- package/dist/env-B9JG6gwo.js +0 -1
- package/dist/errors-XBA-Ls4n.js +0 -10
- package/dist/exec-iFssTO5V.js +0 -3
- package/dist/executor-Dt2FFT-y.js +0 -11
- package/dist/http-BZfjbiov.js +0 -1
- package/dist/integrations-DyInAa5g.js +0 -2
- package/dist/load-zhcrwSRF.js +0 -2
- package/dist/local-D55UkW93.js +0 -5
- package/dist/log-view-CL3_S0IQ.js +0 -3
- package/dist/mcp-CUITALl1.js +0 -1
- package/dist/models-C1O2DrXx.js +0 -1
- package/dist/output-D95NoAA9.js +0 -16
- package/dist/prompts-B8pKhMcu.js +0 -4
- package/dist/refresh-D-0K9fo3.js +0 -1
- package/dist/remote-CDm0YUU3.js +0 -3
- package/dist/runners-CYTicTb7.js +0 -36
- package/dist/serve-Bzs_lEg-.js +0 -1
- package/dist/serve-CWtLyyTz.js +0 -12
- package/dist/serve-DE6A-rBk.js +0 -4
- package/dist/slack-Bo5l13Rs.js +0 -5
- package/dist/task-BU1JEK9X.js +0 -7
- package/dist/task-CPzBITsp.js +0 -1
- package/dist/tools-BMaKWTa6.js +0 -1
- package/dist/turn-DMvPfhb5.js +0 -3
- package/dist/types-D_xnfP7m.js +0 -1
- package/dist/views-DEdKqLm_.js +0 -5
- package/dist/worker-BuP_Lem1.js +0 -9
- package/dist/worker-C1tuzq5n.js +0 -1
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/core/{errors.0a735590a5412ea6.js → errors.1bd0542d832ae0c0.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{page.c811938ae8a8f1df.css.pnext-asset.js → page.107e622830bff31d.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{hero.1bef5dca89b5942c.css.pnext-asset.js → hero.243d85cac1f22df2.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{editor.c496247a81ed832c.css.pnext-asset.js → editor.1eb1bce282b289c9.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{model-options.a96c11d11674f598.js → model-options.73f8d0d54f79d8e3.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-view.57990cfd2bdf5c11.css.pnext-asset.js → task-view.42337a0d7c6ad0b6.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-list.abbbc9ace4d866e5.css.pnext-asset.js → tasks-list.2f90c4410f843fff.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{globals.c8fd2b8b01e7077b.css.pnext-asset.js → globals.f8ac779f0ebf888b.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{page-head.364ec93a8e7857b3.css.pnext-asset.js → page-head.9fcc49ddf7119d75.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{modal.9db07d368dcf5981.css.pnext-asset.js → modal.a533234c7c831be4.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{segmented.0bd8652fdbc05eb0.css.pnext-asset.js → segmented.c6f30b839fd27f35.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{sentinel.1e3ec9bd6008d811.css.pnext-asset.js → sentinel.d17e2bfcbeb9df31.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tabs.ca13e40ff54128d0.css.pnext-asset.js → tabs.025b532d6cc51736.css.pnext-asset.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$
|
|
1
|
+
import{$0m as E,$0w as M,$0y as S}from"./shared-init-c3bd249cf1eca6d1.js";import{$0a as r}from"./shared-init-b281027d465e004f.js";import{$3c as L,$3h as u,$3k as $,$3l as d,$3n as C}from"./shared-init-6e12333f12903a62-2.js";var H=50;function F({label:m,name:D,class:I,options:g,placeholder:O,value:f,onChange:k,onOpen:y}){let[T,o]=u(!1),[A,a]=u(!1),[l,c]=u(0),h=d(null),p=d(null),i=C(),w=A?f.trim().toLowerCase():"",s=(w?g.filter(e=>e.toLowerCase().includes(w)):g).slice(0,H),n=T&&s.length>0,b=e=>{let t=s[e];t&&k(t),o(!1),a(!1)},v=M(h,p,n,360,[s.length]);return $(()=>{n&&p.current?.querySelector(`[data-index="${l}"]`)?.scrollIntoView({block:"nearest"})},[n,l,v]),r(L,{children:[r("input",{ref:h,name:D,class:I,role:"combobox","aria-label":m,"aria-autocomplete":"list","aria-expanded":n,"aria-controls":`${i}-list`,"aria-activedescendant":n?`${i}-${l}`:void 0,autocomplete:"off",placeholder:O,value:f,onInput:e=>{k(e.currentTarget.value),a(!0),c(0),o(!0)},onFocus:()=>{a(!1),o(!0),y?.()},onClick:()=>{o(!0),y?.()},onBlur:()=>{o(!1),a(!1)},onKeyDown:e=>{if(n){if(e.key==="ArrowDown")c((l+1)%s.length);else if(e.key==="ArrowUp")c((l-1+s.length)%s.length);else if(e.key==="Enter")b(l);else if(e.key==="Escape")o(!1);else return;e.preventDefault()}}}),n?r(S,{id:i,label:m,listRef:p,place:v,children:s.map((e,t)=>r(E,{id:`${i}-${t}`,"data-index":t,active:t===l,selected:e===f,check:!0,onPointerMove:()=>t!==l&&c(t),onClick:()=>b(t),children:e},e))}):null]})}export{F as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{a,b,c,d}from"./composer-a686289a79f64bae.js";import"./composer-data-f46a9bc7a14b4f9a.js";import"./task-a37e7c26e82eb77d.js";import"./connect-repositories-7770ab805160028d.js";import"./model-options-8d2170eebe0d061d.js";import"./notice-d14fdac28139c0a8.js";import"./types-3eca2c7f47c46054.js";import"./back-e29cb10f5548ddae.js";import"./action-a76e495fb39a73d3.js";import"./format-a27067f0186e78ac.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-b281027d465e004f.js";import"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";export{b as Composer,c as LoadingComposer,a as NeedsCredential,d as NewTaskButton};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as fe,b as et,c as tt,d as nt,f as ot}from"./composer-data-5fed6c271a4791ca.js";import{m as Ye}from"./task-681061023bdf0a49.js";import{a as Ve}from"./connect-repositories-0de82daaf654b1d3.js";import{a as Xe,b as Ze,c as _e,f as de,h as pe,j as V,k as Qe}from"./model-options-8d2170eebe0d061d.js";import{a as rt}from"./notice-57db7a1f05b7308c.js";import{a as st}from"./back-fa9d6e37f9828093.js";import{a as A,b as Je}from"./action-71685b2d5ad9f359.js";import{a as Te,h as T}from"./format-a27067f0186e78ac.js";import{$1e as Ge}from"./shared-init-cc13a835f3508618.js";import{$3B as We,$3a as He,$3k as je,$3l as J,$3m as ze,$3n as x,$3o as Ke,$3p as Ue,$3q as ue,$3x as H}from"./shared-init-cc13a835f3508618.js";import{$2d as qe}from"./shared-init-cc13a835f3508618.js";import{$0c as g}from"./shared-init-f475017dd5811e33.js";import{$1B as De,$1E as Fe,$1K as Ie,$1L as ce,$1N as Be,$1a as t,$1b as G,$1k as Ae,$1t as Pe,$1z as ae}from"./shared-init-f475017dd5811e33.js";import{$3c as h,$3h as f,$3j as le,$3k as Se,$3l as C,$3n as Ne}from"./shared-init-6e12333f12903a62-2.js";var X="coder:draft",Z="+connect",it="+refresh",me="+other",ge="+pick",he="+clone",Ct=/^\/(review|flow)(?:\s+(\S+))?\s*([\s\S]*)$/,Lt=(a,i,l)=>[["",a],...[...new Set([i,...l])].filter(Boolean).map(c=>[c,c])],lt=(a,i,l)=>{let c=[...a.recent,...i].map(d=>d.path);return[["","No folder"],...[...new Set([...c,l])].filter(d=>d&&d!==a.current.path).map(d=>[d,Ye(d)]),a.picker?[ge,"Choose\u2026"]:[me,"Type a path\u2026"],[he,"Repository\u2026"]]};function Rt(a,i){let l=[["",[["",`Default \xB7 ${[de[i.engine]??i.engine,i.engines[i.engine]?.model].filter(Boolean).join(" ")}`]]]];for(let c of Xe)a[c]?.length&&l.push([de[c]??c,[[V(c,""),pe(i.engines[c]?.model)],...a[c].map(d=>[V(c,d),d])]]);return l}var at=(a,i)=>{let l=a.find(([c])=>c===i)?.[1];return[["",pe(l?.toLowerCase())],...a]};function $t(a){let i=a.currentTarget,l=document.querySelector(`[popovertarget="${i.id}"]`)?.getBoundingClientRect();if(a.newState!=="open"||!l)return;let c=Math.round(l.bottom+6);i.style.top=`${c}px`,i.style.right=`${Math.round(document.documentElement.clientWidth-l.right)}px`,i.style.maxHeight=`${Math.max(160,window.innerHeight-c-16)}px`}function Ot(a){return Object.fromEntries(a.split(/\s+/).filter(Boolean).map(i=>{let l=i.indexOf("="),c=l<0?"true":i.slice(l+1);try{return[l<0?i:i.slice(0,l),JSON.parse(c)]}catch{return[i.slice(0,l),c]}}))}function xt({id:a,entries:i,active:l,selected:c,onActive:d}){return t(h,{children:i.flatMap((m,w)=>[m.head?t(x,{role:"presentation",children:m.head},`h:${m.key}`):null,t(ze,{id:`${a}-${w}`,active:w===l,selected:c===void 0?w===l:m.key===c,check:c!==void 0,end:m.hint?t("small",{children:m.hint}):null,onMouseDown:y=>y.preventDefault(),onPointerMove:()=>w!==l&&d(w),onClick:m.pick,children:m.label},m.key)])})}var St=(a,i,l,c)=>{let d={ArrowDown:1,ArrowUp:-1}[a.key];return!d||!l?!1:(a.preventDefault(),c((i+d+l)%l),!0)};function Nt({reason:a,label:i}){return t(rt,{tone:"warning",slim:!0,children:[t(G,{d:Fe}),t("span",{class:"grow",children:a||"Tasks need a model credential to run."}),t(st,{variant:"outline",size:"sm",label:i,children:"Add credential"})]})}function Tt({initial:a,data:i,defaults:l,missing:c,connectLabel:d,tz:m}){let w=He(),y=We(),[r,be]=f(()=>tt({...et,...a},i)),[u,_]=f(i),[q,Q]=f(),[Y,we]=f(!1),[ke,ct]=f(),[ut,dt]=f(),[S,ee]=f(""),[pt,L]=f(!1),[ft,j]=f(0),[te,mt]=f([]),[R,P]=f(""),[N,ye]=f(!1),ve=C(null),b=C(null),Ee=C(null),Me=C(null),v=Ne();le(()=>void(R&&Me.current?.focus()),[R]),le(()=>{let e=localStorage.getItem(X);e&&b.current&&!b.current.value&&(b.current.value=e),ee(b.current?.value??""),z(b.current?.value??""),b.current?.focus(),L(!0)},[]);let z=(e,n=r.repo)=>{!n&&/^\/review\s/.test(e)&&Ce(),!(!e.startsWith("/")||!n||q?.repo===n)&&(Q({repo:n}),g.pulls.list(n).then(s=>Q({repo:n,items:s})).catch(s=>{Q({repo:n,items:[]}),A(s)}),g.flows.list(n).then(s=>_(o=>({...o,flows:s.map(k=>k.name)}))).catch(s=>console.error("coder dashboard: flows",s)))},ne=C(!!i.repos),Ce=()=>{ne.current||(ne.current=!0,g.repositories.list().catch(e=>(console.error("coder dashboard: repositories",e),[])).then(e=>_(n=>({...n,repos:e.map(s=>s.repo)}))))},Le=Je(),Re=!!Le.pending,gt=()=>{ne.current=!0,Le.run("refresh",async()=>{let e=await g.repositories.refresh();_(n=>({...n,repos:e.map(s=>s.repo)}))})},D=(e,n)=>{if(n===me)return P("path");if(n===he)return P("url");if(n===ge)return void bt();if(n===it)return Re?void 0:gt();if(n===Z)return void Ve(`/dash/${y}/tasks`).catch(A);$({[e]:n}),(e==="repo"||e==="cwd")&&b.current?.focus({preventScroll:!0})},$=e=>{let n={...r,...e};be(n),z(S,n.repo),document.cookie=`compose=${encodeURIComponent(JSON.stringify(n))}; path=/; max-age=31536000; samesite=lax`},oe=e=>{if(!e.ok)return A(e.detail);P(""),mt(n=>[...n.filter(s=>s.path!==e.folder.path),e.folder]),D("cwd",e.folder.path===u.folders?.current.path?"":e.folder.path)},ht=async e=>{e.trim()&&oe(await g.folders.check(e.trim()).catch(n=>({ok:!1,detail:T(n)})))},bt=async()=>{document.body.style.cursor="progress";let e=await g.folders.pick().catch(n=>({ok:!1,detail:T(n)}));document.body.style.cursor="",(e.ok||e.detail)&&oe(e)},wt=async e=>{if(!e.trim())return;ye(!0),document.body.style.cursor="progress";let n=await g.folders.clone(e.trim()).catch(s=>({ok:!1,detail:T(s)}));document.body.style.cursor="",ye(!1),oe(n)},re=e=>{let n=b.current;n.value=e,localStorage.setItem(X,e),ee(e),z(e),j(0),L(!1),n.focus(),n.setSelectionRange(e.length,e.length)},K=async e=>{let n=b.current?.value.trim()??"";if(Y||N||u.agentsOff||!(n||e))return;let[,s,o="",k=""]=Ct.exec(n)??[];if(!e&&s&&!(s==="flow"?o:/^#?\d+$/.test(o)))return void L(!1);let E=e??(s==="review"?Number(o.replace("#","")):void 0);if(E&&!r.repo)return A("Pick a repository first.");let{agent:I,engine:W,model:B,effort:O,permissions:se,runner:yt}=r,[vt,Et]=u.folders?["",r.cwd]:[r.repo,""],ie=Object.fromEntries(Object.entries({repo:vt,cwd:Et,engine:W,model:B,effort:O,permissions:se,runner:yt}).filter(([,M])=>M));we(!0);try{let M=E?await g.review({...ie,repo:r.repo,pr:E}):s==="flow"?await g.flows.run(o,{...ie,agent:I,args:Ot(k)}):await g.tasks.create({...ie,agent:I,prompt:n});(!e||s)&&localStorage.removeItem(X),Ge(M.task.id,"queued",n||`Review of #${E}`),w.push("/dash/[org]/tasks/[id]",{params:{org:y,id:M.task.id}})}catch(M){we(!1),M.status===409?ct(T(M)):A(M)}},p=(()=>{let e=/^\/(\S*)$/.exec(S)?.[1]?.toLowerCase();if(e!==void 0)return{label:"Commands",entries:[{key:"review",label:"/review",hint:"Review a pull request",pick:()=>re("/review ")},...u.flows.map(o=>({key:`flow ${o}`,label:`/flow ${o}`,hint:`Run the ${o} flow`,pick:()=>re(`/flow ${o} `)}))].filter(o=>o.key.includes(e)),note:"No command matches."};let n=/^\/flow\s+(\S*)$/.exec(S)?.[1];if(n!==void 0)return{label:"Flows",entries:u.flows.filter(o=>o.includes(n)).map(o=>({key:o,label:o,hint:`Run the ${o} flow`,pick:()=>o===n?void K():re(`/flow ${o} `)})),note:"No flow matches."};let s=/^\/review\s+#?(\S*)$/.exec(S)?.[1];if(s!==void 0)return r.repo?q?.items?{label:`Pull requests in ${r.repo}`,entries:[...q.items.filter(o=>String(o.number).startsWith(s)||o.title.toLowerCase().includes(s.toLowerCase())).sort((o,k)=>+(String(k.number)===s)-+(String(o.number)===s)).map(o=>({key:`#${o.number}`,label:`#${o.number} ${o.title}`,hint:[o.author,o.createdAt?Te(Date.parse(o.createdAt),m):""].filter(Boolean).join(" \xB7 "),pick:()=>void K(o.number)})),...s?[]:[{key:"",label:r.repo,hint:"Pick another repository",pick:()=>$({repo:""})}]],note:q.items.length?"No open pull request matches.":"No open pull requests."}:{label:`Pull requests in ${r.repo}`,entries:[],note:"loading"}:{label:"Pick a repository",entries:[...(u.repos??[]).filter(o=>o.includes(s)).map(o=>({key:o,label:o,pick:()=>D("repo",o)})),{key:Z,label:d,pick:()=>D("repo",Z)}]}})(),F=!!(p&&!pt),U=p?Math.min(ft,Math.max(0,p.entries.length-1)):0;Se(()=>{let e=Ee.current;if(!e)return;if(!F)return void(e.matches(":popover-open")&&e.hidePopover());let n=()=>{let s=ve.current.getBoundingClientRect();e.style.top=`${Math.round(s.bottom+6)}px`,e.style.left=`${Math.round(s.left)}px`,e.style.width=`${Math.round(Math.min(s.width,460))}px`};return n(),e.matches(":popover-open")||e.showPopover(),addEventListener("scroll",n,!0),addEventListener("resize",n),()=>{removeEventListener("scroll",n,!0),removeEventListener("resize",n)}},[F,S]);let kt=r.engine||l.engine,$e=l.engines[kt]??{},Oe=u.agents.some(([e])=>e===r.agent)?u.agents:[...u.agents,[r.agent,r.agent]],xe=[r.agent!==u.defaultAgent&&r.agent,r.engine!==l.engine&&r.engine,...["model","effort","permissions"].map(e=>r[e]!==$e[e]&&r[e]),r.runner&&(u.runners.find(([e])=>e===r.runner)?.[1]??r.runner)].filter(Boolean).join(" \xB7 ");return t(h,{children:[t("form",{ref:ve,class:"composer",onSubmit:e=>{e.preventDefault(),K()},children:[t("textarea",{ref:b,name:"prompt",rows:1,role:"combobox","aria-label":"What should the agent do?","aria-autocomplete":"list","aria-expanded":F,"aria-controls":`${v}-slash`,"aria-activedescendant":F&&p?.entries.length?`${v}-slash-${U}`:void 0,placeholder:fe,autofocus:!0,onFocus:()=>L(!1),onBlur:()=>L(!0),onInput:e=>{let n=e.currentTarget.value;localStorage.setItem(X,n),ee(n),z(n),j(0),L(!1)},onKeyDown:e=>{if(!e.isComposing){if(F&&p){if(St(e,U,p.entries.length,j))return;if(e.key==="Escape")return e.preventDefault(),L(!0);if(p.entries.length&&(e.key==="Enter"&&!e.shiftKey||e.key==="Tab"))return e.preventDefault(),p.entries[U].pick()}e.key!=="Enter"||e.shiftKey||(e.preventDefault(),K())}}}),t("div",{class:"composer-line",children:[u.folders?R?t(h,{children:[t("input",{class:"folder-path","aria-label":R==="url"?"Repository URL":"Folder path",ref:Me,placeholder:R==="url"?"https://github.com/owner/repo":"Absolute path or ~/\u2026",readOnly:N,"aria-busy":N,onKeyDown:e=>{if(N)return e.preventDefault();if(e.key==="Escape")return e.preventDefault(),P("");e.key!=="Enter"||e.isComposing||(e.preventDefault(),(R==="url"?wt:ht)(e.currentTarget.value))},onBlur:e=>!N&&!e.currentTarget.value.trim()&&P("")}),N?t("span",{class:"folder-busy",children:"Cloning\u2026"}):null]}):t("span",{class:"folder",title:r.cwd||u.folders.current.path,children:t(H,{label:"Folder",value:r.cwd,options:lt(u.folders,te,r.cwd),subs:Object.fromEntries(lt(u.folders,te,r.cwd).flatMap(([e])=>e&&e!==me&&e!==ge&&e!==he?[[e,te.find(n=>n.path===e)?.url??e]]:[])),onChange:e=>D("cwd",e)})}):t(H,{label:"Repository",value:r.repo,options:[...Lt("No repository",r.repo,u.repos??[]),[it,Re?"Refreshing repositories\u2026":"Refresh repositories"],[Z,d]],onChange:e=>D("repo",e),onFocus:Ce}),t("button",{type:"button",class:"quiet",popovertarget:`${v}-settings`,"aria-label":"Run options",title:"Model, effort, permissions and more",children:[t(G,{d:Ie}),xe?t("span",{children:xe}):null]}),t(ce,{type:"submit",size:"sm",class:"send",leftIcon:De,disabled:!S.trim()||u.agentsOff,loading:Y,"aria-label":Y?"Starting task":"Start task",title:"Start task (Enter)"})]}),u.agentsOff?t("small",{class:"folder-hint",children:"Every agent here is disabled. Enable one in its settings to start tasks."}):null,R==="url"?t("small",{class:"folder-hint",children:"Uses this machine's git logins"}):null,t(ue,{id:`${v}-settings`,class:"composer-settings",popover:"auto",onBeforeToggle:$t,children:[t(x,{children:"Model"}),t("div",{role:"group","aria-label":"Model",class:"pop-radios",children:[Rt(u.models,l).map(([e,n])=>t(h,{children:[e?t("p",{class:"pop-group",children:e}):null,n.map(([s,o])=>{let k=s===V(r.engine,r.model),E=Qe(s),I=at(Ze,l.engines[E.engine||l.engine]?.effort),W=k&&r.effort?I.find(([O])=>O===r.effort)?.[1]:void 0,B=ut===s;return t(h,{children:[t(Ue,{children:[t(J,{on:k,onPick:()=>{$({...E,effort:""}),document.getElementById(`${v}-settings`)?.hidePopover()},end:W?t("small",{children:W.toLowerCase()}):null,children:o}),t("button",{type:"button",class:"pop-chev","data-keep":!0,"aria-label":`Effort for ${o}`,"aria-expanded":B,onClick:()=>dt(B?void 0:s),children:t(G,{d:Ae})})]}),B?t("div",{role:"group","aria-label":`Effort for ${o}`,class:"pop-sub",children:I.map(([O,se])=>t(J,{on:k&&r.effort===O,onPick:()=>{$({...E,effort:O}),document.getElementById(`${v}-settings`)?.hidePopover()},children:se},O))}):null]},s)})]},e)),t(je,{class:"add-models",href:"/dash/[org]/settings/[tab]",params:{org:y,tab:"models"},icon:ae,children:"Add models"})]}),t(x,{children:"Permissions"}),t("div",{role:"group","aria-label":"Permissions",children:at(_e,$e.permissions??"auto").map(([e,n])=>t(J,{on:r.permissions===e,onPick:()=>$({permissions:e}),children:n},e))}),Oe.length>1?t(h,{children:[t(x,{children:"Agent"}),t(H,{label:"Agent",value:r.agent,options:Oe,onChange:e=>$({agent:e})})]}):null,u.runners.length>1?t(h,{children:[t(x,{children:"Runs on"}),t(H,{label:"Runs on",options:u.runners,value:r.runner,onChange:e=>$({runner:e})})]}):null]}),t(ue,{panelRef:Ee,id:`${v}-slash`,class:"composer-slash",popover:"manual",role:"listbox","aria-label":p?.label??"Commands",children:p?t(h,{children:[t(x,{children:p.label}),t(xt,{id:`${v}-slash`,entries:p.entries,active:U,onActive:j}),p.note==="loading"?t(qe,{label:"Loading pull requests",inline:!0}):p.note&&!p.entries.length?t(Ke,{children:p.note}):null]}):null})]}),ke===void 0||c?null:t(Nt,{reason:ke})]})}function At(){return t("div",{class:"composer","aria-hidden":"true",children:[t("textarea",{rows:1,disabled:!0,tabIndex:-1,placeholder:fe}),t("div",{class:"composer-line"})]})}function sn({agent:a}){let i=C(null),[l,c]=f(),[d,m]=f(""),[w,y]=f(!1),r=C();return t(h,{children:[t(ce,{class:"new-task",leftIcon:ae,onClick:()=>{y(!0),i.current?.showModal(),r.current??=ot(g).then(c,u=>m(T(u)))},children:"New task"}),t("dialog",{ref:i,class:"compose-dialog","aria-label":a?`New task for ${a}`:"New task",onClose:()=>y(!1),onClick:u=>u.target===u.currentTarget&&i.current?.close(),children:[t("header",{children:[t("h2",{children:"New task"}),a?t("span",{class:"sub",children:a}):null,t(Be,{icon:Pe,label:"Close",onClick:()=>i.current?.close()})]}),w?l?t(Tt,{...l,initial:{...nt(document.cookie),...a?{agent:a}:{}},tz:Intl.DateTimeFormat().resolvedOptions().timeZone}):d?t("p",{class:"flash err",role:"alert",children:d}):t(At,{}):null]})]})}export{Nt as a,Tt as b,At as c,sn as d};
|
|
1
|
+
import{a as fe,b as et,c as tt,d as nt,f as ot}from"./composer-data-f46a9bc7a14b4f9a.js";import{n as Ye}from"./task-a37e7c26e82eb77d.js";import{a as Ve}from"./connect-repositories-7770ab805160028d.js";import{a as Xe,b as Ze,c as _e,f as de,h as pe,j as V,k as Qe}from"./model-options-8d2170eebe0d061d.js";import{a as rt}from"./notice-d14fdac28139c0a8.js";import{a as st}from"./back-e29cb10f5548ddae.js";import{a as A,b as Je}from"./action-a76e495fb39a73d3.js";import{a as Te,h as T}from"./format-a27067f0186e78ac.js";import{$3l as Ge}from"./shared-init-c3bd249cf1eca6d1.js";import{$0B as We,$0a as He,$0k as je,$0l as J,$0m as ze,$0n as x,$0o as Ke,$0p as Ue,$0q as ue,$0x as H}from"./shared-init-c3bd249cf1eca6d1.js";import{$2d as qe}from"./shared-init-c3bd249cf1eca6d1.js";import{$1c as g}from"./shared-init-b281027d465e004f.js";import{$0B as De,$0E as Fe,$0K as Ie,$0L as ce,$0N as Be,$0a as t,$0b as G,$0k as Ae,$0t as Pe,$0z as ae}from"./shared-init-b281027d465e004f.js";import{$3c as h,$3h as f,$3j as le,$3k as Se,$3l as C,$3n as Ne}from"./shared-init-6e12333f12903a62-2.js";var X="coder:draft",Z="+connect",it="+refresh",me="+other",ge="+pick",he="+clone",Ct=/^\/(review|flow)(?:\s+(\S+))?\s*([\s\S]*)$/,Lt=(a,i,l)=>[["",a],...[...new Set([i,...l])].filter(Boolean).map(c=>[c,c])],lt=(a,i,l)=>{let c=[...a.recent,...i].map(d=>d.path);return[["","No folder"],...[...new Set([...c,l])].filter(d=>d&&d!==a.current.path).map(d=>[d,Ye(d)]),a.picker?[ge,"Choose\u2026"]:[me,"Type a path\u2026"],[he,"Repository\u2026"]]};function Rt(a,i){let l=[["",[["",`Default \xB7 ${[de[i.engine]??i.engine,i.engines[i.engine]?.model].filter(Boolean).join(" ")}`]]]];for(let c of Xe)a[c]?.length&&l.push([de[c]??c,[[V(c,""),pe(i.engines[c]?.model)],...a[c].map(d=>[V(c,d),d])]]);return l}var at=(a,i)=>{let l=a.find(([c])=>c===i)?.[1];return[["",pe(l?.toLowerCase())],...a]};function $t(a){let i=a.currentTarget,l=document.querySelector(`[popovertarget="${i.id}"]`)?.getBoundingClientRect();if(a.newState!=="open"||!l)return;let c=Math.round(l.bottom+6);i.style.top=`${c}px`,i.style.right=`${Math.round(document.documentElement.clientWidth-l.right)}px`,i.style.maxHeight=`${Math.max(160,window.innerHeight-c-16)}px`}function Ot(a){return Object.fromEntries(a.split(/\s+/).filter(Boolean).map(i=>{let l=i.indexOf("="),c=l<0?"true":i.slice(l+1);try{return[l<0?i:i.slice(0,l),JSON.parse(c)]}catch{return[i.slice(0,l),c]}}))}function xt({id:a,entries:i,active:l,selected:c,onActive:d}){return t(h,{children:i.flatMap((m,w)=>[m.head?t(x,{role:"presentation",children:m.head},`h:${m.key}`):null,t(ze,{id:`${a}-${w}`,active:w===l,selected:c===void 0?w===l:m.key===c,check:c!==void 0,end:m.hint?t("small",{children:m.hint}):null,onMouseDown:y=>y.preventDefault(),onPointerMove:()=>w!==l&&d(w),onClick:m.pick,children:m.label},m.key)])})}var St=(a,i,l,c)=>{let d={ArrowDown:1,ArrowUp:-1}[a.key];return!d||!l?!1:(a.preventDefault(),c((i+d+l)%l),!0)};function Nt({reason:a,label:i}){return t(rt,{tone:"warning",slim:!0,children:[t(G,{d:Fe}),t("span",{class:"grow",children:a||"Tasks need a model credential to run."}),t(st,{variant:"outline",size:"sm",label:i,children:"Add credential"})]})}function Tt({initial:a,data:i,defaults:l,missing:c,connectLabel:d,tz:m}){let w=He(),y=We(),[r,be]=f(()=>tt({...et,...a},i)),[u,_]=f(i),[q,Q]=f(),[Y,we]=f(!1),[ke,ct]=f(),[ut,dt]=f(),[S,ee]=f(""),[pt,L]=f(!1),[ft,j]=f(0),[te,mt]=f([]),[R,P]=f(""),[N,ye]=f(!1),ve=C(null),b=C(null),Ee=C(null),Me=C(null),v=Ne();le(()=>void(R&&Me.current?.focus()),[R]),le(()=>{let e=localStorage.getItem(X);e&&b.current&&!b.current.value&&(b.current.value=e),ee(b.current?.value??""),z(b.current?.value??""),b.current?.focus(),L(!0)},[]);let z=(e,n=r.repo)=>{!n&&/^\/review\s/.test(e)&&Ce(),!(!e.startsWith("/")||!n||q?.repo===n)&&(Q({repo:n}),g.pulls.list(n).then(s=>Q({repo:n,items:s})).catch(s=>{Q({repo:n,items:[]}),A(s)}),g.flows.list(n).then(s=>_(o=>({...o,flows:s.map(k=>k.name)}))).catch(s=>console.error("coder dashboard: flows",s)))},ne=C(!!i.repos),Ce=()=>{ne.current||(ne.current=!0,g.repositories.list().catch(e=>(console.error("coder dashboard: repositories",e),[])).then(e=>_(n=>({...n,repos:e.map(s=>s.repo)}))))},Le=Je(),Re=!!Le.pending,gt=()=>{ne.current=!0,Le.run("refresh",async()=>{let e=await g.repositories.refresh();_(n=>({...n,repos:e.map(s=>s.repo)}))})},D=(e,n)=>{if(n===me)return P("path");if(n===he)return P("url");if(n===ge)return void bt();if(n===it)return Re?void 0:gt();if(n===Z)return void Ve(`/dash/${y}/tasks`).catch(A);$({[e]:n}),(e==="repo"||e==="cwd")&&b.current?.focus({preventScroll:!0})},$=e=>{let n={...r,...e};be(n),z(S,n.repo),document.cookie=`compose=${encodeURIComponent(JSON.stringify(n))}; path=/; max-age=31536000; samesite=lax`},oe=e=>{if(!e.ok)return A(e.detail);P(""),mt(n=>[...n.filter(s=>s.path!==e.folder.path),e.folder]),D("cwd",e.folder.path===u.folders?.current.path?"":e.folder.path)},ht=async e=>{e.trim()&&oe(await g.folders.check(e.trim()).catch(n=>({ok:!1,detail:T(n)})))},bt=async()=>{document.body.style.cursor="progress";let e=await g.folders.pick().catch(n=>({ok:!1,detail:T(n)}));document.body.style.cursor="",(e.ok||e.detail)&&oe(e)},wt=async e=>{if(!e.trim())return;ye(!0),document.body.style.cursor="progress";let n=await g.folders.clone(e.trim()).catch(s=>({ok:!1,detail:T(s)}));document.body.style.cursor="",ye(!1),oe(n)},re=e=>{let n=b.current;n.value=e,localStorage.setItem(X,e),ee(e),z(e),j(0),L(!1),n.focus(),n.setSelectionRange(e.length,e.length)},K=async e=>{let n=b.current?.value.trim()??"";if(Y||N||u.agentsOff||!(n||e))return;let[,s,o="",k=""]=Ct.exec(n)??[];if(!e&&s&&!(s==="flow"?o:/^#?\d+$/.test(o)))return void L(!1);let E=e??(s==="review"?Number(o.replace("#","")):void 0);if(E&&!r.repo)return A("Pick a repository first.");let{agent:I,engine:W,model:B,effort:O,permissions:se,runner:yt}=r,[vt,Et]=u.folders?["",r.cwd]:[r.repo,""],ie=Object.fromEntries(Object.entries({repo:vt,cwd:Et,engine:W,model:B,effort:O,permissions:se,runner:yt}).filter(([,M])=>M));we(!0);try{let M=E?await g.review({...ie,repo:r.repo,pr:E}):s==="flow"?await g.flows.run(o,{...ie,agent:I,args:Ot(k)}):await g.tasks.create({...ie,agent:I,prompt:n});(!e||s)&&localStorage.removeItem(X),Ge(M.task.id,"queued",n||`Review of #${E}`),w.push("/dash/[org]/tasks/[id]",{params:{org:y,id:M.task.id}})}catch(M){we(!1),M.status===409?ct(T(M)):A(M)}},p=(()=>{let e=/^\/(\S*)$/.exec(S)?.[1]?.toLowerCase();if(e!==void 0)return{label:"Commands",entries:[{key:"review",label:"/review",hint:"Review a pull request",pick:()=>re("/review ")},...u.flows.map(o=>({key:`flow ${o}`,label:`/flow ${o}`,hint:`Run the ${o} flow`,pick:()=>re(`/flow ${o} `)}))].filter(o=>o.key.includes(e)),note:"No command matches."};let n=/^\/flow\s+(\S*)$/.exec(S)?.[1];if(n!==void 0)return{label:"Flows",entries:u.flows.filter(o=>o.includes(n)).map(o=>({key:o,label:o,hint:`Run the ${o} flow`,pick:()=>o===n?void K():re(`/flow ${o} `)})),note:"No flow matches."};let s=/^\/review\s+#?(\S*)$/.exec(S)?.[1];if(s!==void 0)return r.repo?q?.items?{label:`Pull requests in ${r.repo}`,entries:[...q.items.filter(o=>String(o.number).startsWith(s)||o.title.toLowerCase().includes(s.toLowerCase())).sort((o,k)=>+(String(k.number)===s)-+(String(o.number)===s)).map(o=>({key:`#${o.number}`,label:`#${o.number} ${o.title}`,hint:[o.author,o.createdAt?Te(Date.parse(o.createdAt),m):""].filter(Boolean).join(" \xB7 "),pick:()=>void K(o.number)})),...s?[]:[{key:"",label:r.repo,hint:"Pick another repository",pick:()=>$({repo:""})}]],note:q.items.length?"No open pull request matches.":"No open pull requests."}:{label:`Pull requests in ${r.repo}`,entries:[],note:"loading"}:{label:"Pick a repository",entries:[...(u.repos??[]).filter(o=>o.includes(s)).map(o=>({key:o,label:o,pick:()=>D("repo",o)})),{key:Z,label:d,pick:()=>D("repo",Z)}]}})(),F=!!(p&&!pt),U=p?Math.min(ft,Math.max(0,p.entries.length-1)):0;Se(()=>{let e=Ee.current;if(!e)return;if(!F)return void(e.matches(":popover-open")&&e.hidePopover());let n=()=>{let s=ve.current.getBoundingClientRect();e.style.top=`${Math.round(s.bottom+6)}px`,e.style.left=`${Math.round(s.left)}px`,e.style.width=`${Math.round(Math.min(s.width,460))}px`};return n(),e.matches(":popover-open")||e.showPopover(),addEventListener("scroll",n,!0),addEventListener("resize",n),()=>{removeEventListener("scroll",n,!0),removeEventListener("resize",n)}},[F,S]);let kt=r.engine||l.engine,$e=l.engines[kt]??{},Oe=u.agents.some(([e])=>e===r.agent)?u.agents:[...u.agents,[r.agent,r.agent]],xe=[r.agent!==u.defaultAgent&&r.agent,r.engine!==l.engine&&r.engine,...["model","effort","permissions"].map(e=>r[e]!==$e[e]&&r[e]),r.runner&&(u.runners.find(([e])=>e===r.runner)?.[1]??r.runner)].filter(Boolean).join(" \xB7 ");return t(h,{children:[t("form",{ref:ve,class:"composer",onSubmit:e=>{e.preventDefault(),K()},children:[t("textarea",{ref:b,name:"prompt",rows:1,role:"combobox","aria-label":"What should the agent do?","aria-autocomplete":"list","aria-expanded":F,"aria-controls":`${v}-slash`,"aria-activedescendant":F&&p?.entries.length?`${v}-slash-${U}`:void 0,placeholder:fe,autofocus:!0,onFocus:()=>L(!1),onBlur:()=>L(!0),onInput:e=>{let n=e.currentTarget.value;localStorage.setItem(X,n),ee(n),z(n),j(0),L(!1)},onKeyDown:e=>{if(!e.isComposing){if(F&&p){if(St(e,U,p.entries.length,j))return;if(e.key==="Escape")return e.preventDefault(),L(!0);if(p.entries.length&&(e.key==="Enter"&&!e.shiftKey||e.key==="Tab"))return e.preventDefault(),p.entries[U].pick()}e.key!=="Enter"||e.shiftKey||(e.preventDefault(),K())}}}),t("div",{class:"composer-line",children:[u.folders?R?t(h,{children:[t("input",{class:"folder-path","aria-label":R==="url"?"Repository URL":"Folder path",ref:Me,placeholder:R==="url"?"https://github.com/owner/repo":"Absolute path or ~/\u2026",readOnly:N,"aria-busy":N,onKeyDown:e=>{if(N)return e.preventDefault();if(e.key==="Escape")return e.preventDefault(),P("");e.key!=="Enter"||e.isComposing||(e.preventDefault(),(R==="url"?wt:ht)(e.currentTarget.value))},onBlur:e=>!N&&!e.currentTarget.value.trim()&&P("")}),N?t("span",{class:"folder-busy",children:"Cloning\u2026"}):null]}):t("span",{class:"folder",title:r.cwd||u.folders.current.path,children:t(H,{label:"Folder",value:r.cwd,options:lt(u.folders,te,r.cwd),subs:Object.fromEntries(lt(u.folders,te,r.cwd).flatMap(([e])=>e&&e!==me&&e!==ge&&e!==he?[[e,te.find(n=>n.path===e)?.url??e]]:[])),onChange:e=>D("cwd",e)})}):t(H,{label:"Repository",value:r.repo,options:[...Lt("No repository",r.repo,u.repos??[]),[it,Re?"Refreshing repositories\u2026":"Refresh repositories"],[Z,d]],onChange:e=>D("repo",e),onFocus:Ce}),t("button",{type:"button",class:"quiet",popovertarget:`${v}-settings`,"aria-label":"Run options",title:"Model, effort, permissions and more",children:[t(G,{d:Ie}),xe?t("span",{children:xe}):null]}),t(ce,{type:"submit",size:"sm",class:"send",leftIcon:De,disabled:!S.trim()||u.agentsOff,loading:Y,"aria-label":Y?"Starting task":"Start task",title:"Start task (Enter)"})]}),u.agentsOff?t("small",{class:"folder-hint",children:"Every agent here is disabled. Enable one in its settings to start tasks."}):null,R==="url"?t("small",{class:"folder-hint",children:"Uses this machine's git logins"}):null,t(ue,{id:`${v}-settings`,class:"composer-settings",popover:"auto",onBeforeToggle:$t,children:[t(x,{children:"Model"}),t("div",{role:"group","aria-label":"Model",class:"pop-radios",children:[Rt(u.models,l).map(([e,n])=>t(h,{children:[e?t("p",{class:"pop-group",children:e}):null,n.map(([s,o])=>{let k=s===V(r.engine,r.model),E=Qe(s),I=at(Ze,l.engines[E.engine||l.engine]?.effort),W=k&&r.effort?I.find(([O])=>O===r.effort)?.[1]:void 0,B=ut===s;return t(h,{children:[t(Ue,{children:[t(J,{on:k,onPick:()=>{$({...E,effort:""}),document.getElementById(`${v}-settings`)?.hidePopover()},end:W?t("small",{children:W.toLowerCase()}):null,children:o}),t("button",{type:"button",class:"pop-chev","data-keep":!0,"aria-label":`Effort for ${o}`,"aria-expanded":B,onClick:()=>dt(B?void 0:s),children:t(G,{d:Ae})})]}),B?t("div",{role:"group","aria-label":`Effort for ${o}`,class:"pop-sub",children:I.map(([O,se])=>t(J,{on:k&&r.effort===O,onPick:()=>{$({...E,effort:O}),document.getElementById(`${v}-settings`)?.hidePopover()},children:se},O))}):null]},s)})]},e)),t(je,{class:"add-models",href:"/dash/[org]/settings/[tab]",params:{org:y,tab:"models"},icon:ae,children:"Add models"})]}),t(x,{children:"Permissions"}),t("div",{role:"group","aria-label":"Permissions",children:at(_e,$e.permissions??"auto").map(([e,n])=>t(J,{on:r.permissions===e,onPick:()=>$({permissions:e}),children:n},e))}),Oe.length>1?t(h,{children:[t(x,{children:"Agent"}),t(H,{label:"Agent",value:r.agent,options:Oe,onChange:e=>$({agent:e})})]}):null,u.runners.length>1?t(h,{children:[t(x,{children:"Runs on"}),t(H,{label:"Runs on",options:u.runners,value:r.runner,onChange:e=>$({runner:e})})]}):null]}),t(ue,{panelRef:Ee,id:`${v}-slash`,class:"composer-slash",popover:"manual",role:"listbox","aria-label":p?.label??"Commands",children:p?t(h,{children:[t(x,{children:p.label}),t(xt,{id:`${v}-slash`,entries:p.entries,active:U,onActive:j}),p.note==="loading"?t(qe,{label:"Loading pull requests",inline:!0}):p.note&&!p.entries.length?t(Ke,{children:p.note}):null]}):null})]}),ke===void 0||c?null:t(Nt,{reason:ke})]})}function At(){return t("div",{class:"composer","aria-hidden":"true",children:[t("textarea",{rows:1,disabled:!0,tabIndex:-1,placeholder:fe}),t("div",{class:"composer-line"})]})}function sn({agent:a}){let i=C(null),[l,c]=f(),[d,m]=f(""),[w,y]=f(!1),r=C();return t(h,{children:[t(ce,{class:"new-task",leftIcon:ae,onClick:()=>{y(!0),i.current?.showModal(),r.current??=ot(g).then(c,u=>m(T(u)))},children:"New task"}),t("dialog",{ref:i,class:"compose-dialog","aria-label":a?`New task for ${a}`:"New task",onClose:()=>y(!1),onClick:u=>u.target===u.currentTarget&&i.current?.close(),children:[t("header",{children:[t("h2",{children:"New task"}),a?t("span",{class:"sub",children:a}):null,t(Be,{icon:Pe,label:"Close",onClick:()=>i.current?.close()})]}),w?l?t(Tt,{...l,initial:{...nt(document.cookie),...a?{agent:a}:{}},tz:Intl.DateTimeFormat().resolvedOptions().timeZone}):d?t("p",{class:"flash err",role:"alert",children:d}):t(At,{}):null]})]})}export{Nt as a,Tt as b,At as c,sn as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as i}from"./model-options-8d2170eebe0d061d.js";import{$3a as s}from"./shared-init-c3bd249cf1eca6d1.js";var C="What should the agent do? Type / for flows and reviews.",h={repo:"",cwd:"",agent:"",engine:"",model:"",effort:"",permissions:"",runner:""};function w(t,e){let n=e.agents.map(([r])=>r);return!n.length||n.includes(t.agent)?t:{...t,agent:e.defaultAgent??n[0]}}function x(t){let e=t.match(/(?:^|; )compose=([^;]*)/)?.[1];try{return e?JSON.parse(decodeURIComponent(e)):{}}catch{return{}}}var l=t=>[...t].sort((e,n)=>Number(n.default)-Number(e.default)||e.name.localeCompare(n.name)),d=t=>{let e=t.find(n=>n.default);return[["",e?`Default \xB7 ${e.name}`:"Default"],...l(t).filter(n=>n!==e).map(n=>[n.id,n.name])]};async function y(t){let e=await t.composer(),n=e.agents.find(o=>o.default)?.id,r={agents:e.agents.map(({id:o,name:c})=>[o,c]),...n?{defaultAgent:n}:{},...e.agents.length?{}:{agentsOff:!0},models:i(e.models),runners:d(e.runners),flows:e.flows,folders:e.folders},a={engine:e.engine??s,engines:e.engines};return{data:r,defaults:a,connectLabel:e.connectLabel??"Connect repositories"}}export{C as a,h as b,w as c,x as d,l as e,y as f};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$
|
|
1
|
+
import{$1a as r}from"./shared-init-c3bd249cf1eca6d1.js";import{$0L as i,$0a as o,$0v as e}from"./shared-init-b281027d465e004f.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
|
-
"use client";import{a as c}from"./notice-
|
|
1
|
+
"use client";import{a as c}from"./notice-d14fdac28139c0a8.js";import{b as l}from"./action-a76e495fb39a73d3.js";import"./format-a27067f0186e78ac.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$0B as a}from"./shared-init-c3bd249cf1eca6d1.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import{$1c as i}from"./shared-init-b281027d465e004f.js";import{$0L as s,$0a as o,$0b as e,$0z as r}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";function C({apps:d}){let m=a(),t=l({toast:"Not installed",leaves:!0}),g=({id:n,agent:p})=>void t.run(n,async()=>{let u=`/dash/${m}/agents/${encodeURIComponent(p)}/platforms`;location.href=(await i.apps.install(n,u)).url});return o(c,{children:[o(e,{d:r}),o("span",{class:"grow",children:"Add the built-in agent to your repositories and channels."}),d.map(n=>o(s,{variant:"outline",size:"sm",disabled:!!t.pending,loading:t.pending===n.id,onClick:()=>g(n),children:n.label},n.id))]})}export{C as ConnectApps};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$
|
|
1
|
+
import{$1c as i}from"./shared-init-b281027d465e004f.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{a as O}from"./agent-pills-4d3c6a2aa9eb1522.js";import{a as ue}from"./segmented-0b6dc6b93c35e0f5.js";import{e as me}from"./model-options-8d2170eebe0d061d.js";import{a as pe}from"./notice-d14fdac28139c0a8.js";import{f as fe}from"./list-2773686bf8df64c7.js";import"./confirm-a78147b6ecef3847.js";import{a as C}from"./field-bb8191aa02d07282.js";import{a as de,b as N}from"./action-a76e495fb39a73d3.js";import{h as Z}from"./format-a27067f0186e78ac.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$0B as le,$0j as ie,$0t as ce,$0x as M}from"./shared-init-c3bd249cf1eca6d1.js";import{$2a as oe,$2b as ae,$2c as re,$2d as se,$2o as F}from"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$1c as R}from"./shared-init-b281027d465e004f.js";import{$0E as ne,$0L as I,$0M as te,$0a as e,$0b as ee}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3c as B,$3h as m,$3j as X,$3l as L}from"./shared-init-6e12333f12903a62-2.js";var $e=o=>(o.match(/"[^"]*"|'[^']*'|(?:\{[^}]+\}|[^\s])+/g)??[]).map(s=>s.replace(/^(["'])(.*)\1$/,"$2")),$=o=>/^https?:\/\//.test(o.trim()),ge=o=>o.url??[o.command,...(o.args??[]).map(s=>s.replace(/\{((?:runtime|package):[^}]+)\}/g,(r,i)=>`{${o.argumentInputs?.find(c=>c.name===i)?.label??i}}`))].join(" ").trim(),he=o=>o.split("/")[0].split(".").reverse().join("."),ve=o=>[...o?.headers??[],...o?.env??[]].filter(s=>s.secret),ye=o=>o.map(s=>s.name).join(", "),De=[["platform","Platform"],["mcp","MCP server"]],ze={platform:"Sign in with OAuth, and tasks use the account through Coder\u2019s own tools.",mcp:"Search known servers, or paste a URL or command."},be=["default","Default"],He=["read","Read-only"],ke=["write","Read-write"],Ce={ok:{tone:"ok",label:"connected"},authorize:{tone:"warn",label:"not signed in"},reconnect:{tone:"warn",label:"reconnect needed"}};function Ke({row:o,catalog:s}){let r=s.find(c=>c.id===o.provider),i=r?r.name:o.env?o.env:o.url?URL.canParse(o.url)?new URL(o.url).host:o.url:o.command;return e("span",{class:"reach",children:[r?e(O,{brand:r.brand}):null,[i,o.account].filter(Boolean).join(" \xB7 ")]})}function U({kind:o,list:s}){return e(B,{children:s.map(r=>e(C,{label:e("span",{class:"mono",children:r.label??r.name}),hint:r.description??(r.required?"required":"optional"),children:e("input",{name:`${o}:${r.name}`,placeholder:r.placeholder,defaultValue:o==="arg"?r.placeholder:void 0,autocomplete:"off",required:r.required})},r.name))})}function qe({local:o,admin:s,value:r,onChange:i}){return o||!s?null:e(C,{label:"Scope",group:!0,children:e(M,{label:"Scope",options:me,value:r,onChange:i})})}function we({value:o,onChange:s,write:r}){return e(C,{label:"Access",group:!0,children:e(M,{label:"Access",options:r?[be,ke]:[be,He,ke],value:o,onChange:s})})}function Ae({local:o,admin:s,onAdded:r}){let i=N({leaves:!0}),[c,a]=m(s||o?"":"me"),p=(f,u)=>void i.run("add",async()=>{let{authorize:g,...b}=await R.connections.add({...f,...c?{owner:"me"}:{}}).catch(t=>{throw u?.(t),t});if(g)return location.assign(g);r(b)}),d=e(qe,{local:o,admin:s,value:c,onChange:a});return{busy:!!i.pending,add:p,who:d}}function Ue({catalog:o,rows:s,...r}){let i=le(),c=o.filter(l=>l.personal),[a,p]=m(c[0]?.id??""),[d,f]=m("default"),{busy:u,add:g,who:b}=Ae(r),t=c.find(l=>l.id===a),v=s.find(l=>l.provider===a&&l.mine);return e("form",{class:"add-form",method:"post",onSubmit:l=>{l.preventDefault(),t?.connectable&&g({name:t.name,provider:t.id,...d==="default"?{}:{access:d}})},children:[e("div",{class:"add-grid",children:[e(C,{label:"Platform",group:!0,children:e(M,{label:"Platform",options:c.map(l=>[l.id,l.name]),icons:Object.fromEntries(c.map(l=>[l.id,e(O,{brand:l.brand})])),value:a,onChange:p})}),e(we,{value:d,onChange:f}),b]}),t&&!t.connectable?e(pe,{tone:"warning",slim:!0,children:[e(ee,{d:ne}),e("span",{class:"grow",children:["This server has no shared ",t.name," app yet.",r.operator?null:" Ask whoever runs this server to add one."]}),r.operator?e(te,{variant:"outline",size:"sm",href:"/dash/[org]/operator",params:{org:i},children:"Set it up"}):null]}):null,e("div",{class:"add-foot",children:[e("p",{class:"muted grow",children:t?v&&t.connectable?`Connected as ${v.account??"you"}.`:null:"No platform here offers sign-in yet."}),e(I,{type:"submit",disabled:!t?.connectable,loading:u,children:[t?e(O,{brand:t.brand}):null,"Sign in to ",t?.name??"a platform"]})]})]})}function _e(o){let[s,r]=m(""),[i,c]=m(),[a,p]=m(),[d,f]=m(""),[u,g]=m(""),[b,t]=m(!1),[v,l]=m("default"),{busy:Re,add:Ie,who:Fe}=Ae(o),_=L(),D=L(null),w=!u.trim()||$(u),Se=!w||b||ve(a).length>0,z=w||v!=="read"?v:"default",P=ve(a),S=P.find(n=>n.required)??P[0],H=P.filter(n=>n!==S),K=H.some(n=>n.required),Te=[...a?.argumentInputs??[],...a?.env??[],...a?.headers??[]].some(n=>!n.secret),q=n=>{if(!n.trim()){R.mcp.search("").then(y=>y.length&&c(h=>h??{q:n,items:y}),y=>console.error("coder dashboard: known servers",y));return}c({q:n}),R.mcp.search(n.trim()).then(y=>c(h=>h?.q===n?{q:n,items:y}:h)).catch(y=>c(h=>h?.q===n?{q:n,error:Z(y)}:h))},Ee=n=>{r(n),clearTimeout(_.current),(!n.trim()||$(n)||/\s/.test(n.trim()))&&c(void 0),!($(n)||/\s/.test(n.trim()))&&(_.current=setTimeout(()=>q(n),250))},Pe=n=>{p(n),c(void 0),r(n.title),f(n.title),g(ge(n)),t(!1),requestAnimationFrame(()=>D.current?.querySelector("input[name^='arg:'], input[name^='env:'], input[name^='header:'], input[name=key]")?.focus())},Be=n=>{let y=[...new FormData(n)].map(([k,A])=>[k,String(A).trim()]),h=k=>y.find(([A])=>A===k)?.[1]??"",j=k=>Object.fromEntries(y.filter(([A,T])=>A.startsWith(k)&&T).map(([A,T])=>[A.slice(k.length),T])),E=u.trim();if(!d.trim()||!E||K)return;let Le=a?.command?ge(a):void 0,Me=a&&E===Le?[a.command,...a.args??[]]:$e(E),[Ne,...W]=Me.map(k=>k.replace(/\{([^}]+)\}/g,(A,T)=>{let Q=a?.argumentInputs?.find(J=>J.name===T||J.label===T);return Q?h(`arg:${Q.name}`):A})),V=j("env:"),G=j("header:"),Y=w?{url:E,...a?.url===E?{type:a.type}:{},...Object.keys(G).length?{headers:G}:{}}:{command:Ne,...W.length?{args:W}:{},...Object.keys(V).length?{env:V}:{}};a?.description&&(Y.description=a.description);let x=h("key");Ie({name:d.trim(),provider:"mcp",...z==="default"?{}:{access:z},endpoint:Y,...x?{auth:"key",key:x,keyIn:w?{header:h("header")}:{env:h("env")}}:w?{}:{auth:"none"}},k=>{k.needs==="key"&&(t(!0),requestAnimationFrame(()=>D.current?.querySelector("input[name=key]")?.focus()))})};return e("form",{ref:D,class:"add-form",method:"post",onSubmit:n=>{n.preventDefault(),Be(n.currentTarget)},children:[e("div",{class:"registry",onKeyDown:n=>{n.key==="Enter"&&n.preventDefault(),n.key==="Escape"&&c(void 0)},onFocusIn:()=>{!i&&!$(s)&&q(s)},onFocusOut:n=>{n.currentTarget.contains(n.relatedTarget)||c(void 0)},children:[e(ce,{value:s,label:"Search known MCP servers",onInput:Ee}),i?e("div",{class:"registry-pop","aria-live":"polite","aria-busy":!i.items&&!i.error,children:i.error?e("div",{class:"registry-note err",role:"alert",children:[e("span",{children:i.error}),e(I,{variant:"ghost",size:"sm",onMouseDown:n=>n.preventDefault(),onClick:()=>q(i.q),children:"Retry"})]}):i.items?i.items.length?i.items.map(n=>e(ie,{onClick:()=>Pe(n),title:e(B,{children:[e("b",{children:n.title}),n.verified?e("span",{title:`The MCP registry checked that the publisher owns ${he(n.name)}`,children:e(F,{tone:"ok",children:["by ",he(n.name)]})}):null,n.curated?e("span",{title:"In GitHub's reviewed list of MCP servers",children:e(F,{children:"GitHub list"})}):null,e(F,{children:n.type})]}),sub:n.description||n.name},n.name)):e("p",{class:"registry-note",children:"No known server matches. Paste its URL or command below."}):e("div",{class:"registry-note",children:e(se,{label:"Searching known servers",inline:!0,dots:!0,late:!0})})}):null]}),a?.description?e("p",{class:"muted registry-picked",children:a.description}):null,e("div",{class:"add-grid",children:[e(C,{label:"Name",children:e("input",{name:"name",value:d,onInput:n=>f(n.currentTarget.value),placeholder:"Acme docs",autocomplete:"off",required:!0})}),e(C,{label:"URL or command",children:e("input",{name:"target",class:"mono",value:u,onInput:n=>g(n.currentTarget.value),placeholder:"https://mcp.acme.dev/mcp",autocomplete:"off",spellcheck:!1,required:!0})})]}),Te?e("div",{class:"add-grid",children:[e(U,{kind:"arg",list:a?.argumentInputs??[]}),e(U,{kind:"env",list:(a?.env??[]).filter(n=>!n.secret)}),e(U,{kind:"header",list:(a?.headers??[]).filter(n=>!n.secret)})]}):null,H.length?e("p",{class:"muted",role:"note",children:K?`This server needs ${ye(P.filter(n=>n.required))}, and a connection holds one key. Add it in the server's own config instead.`:`A connection holds one key, sent as ${S.name}. Add ${ye(H)} in the server's own config if you use them.`}):null,e("div",{class:"add-grid",children:[e(we,{value:z,onChange:l,write:!w}),Fe]}),Se?e("div",{class:"add-grid",children:[e(C,{label:"API key",hint:w?void 0:"optional",children:e("input",{name:"key",type:"password",placeholder:"acme_live_4f9a\u2026",autocomplete:"off",required:!!w},a?.name)}),w?e(C,{label:"Header",children:e("input",{name:"header",class:"mono",defaultValue:S?.name??"Authorization",placeholder:"Authorization",autocomplete:"off",required:!0},`header:${S?.name}`)}):e(C,{label:"Environment variable",children:e("input",{name:"env",class:"mono",defaultValue:S?.name,placeholder:"ACME_API_KEY",autocomplete:"off"},`env:${S?.name}`)})]}):null,e("div",{class:"add-foot",children:e(I,{type:"submit",disabled:K,loading:Re,children:"Add connection"})})]})}function je({catalog:o,rows:s,local:r,admin:i,operator:c,empty:a,onAdded:p}){let[d,f]=m(o.some(t=>t.personal)?"platform":"mcp"),[u,g]=m(0),b={local:r,admin:i,operator:c,onAdded:t=>{p(t),g(u+1)}};return e(ae,{opened:a,title:"Add a connection",note:"A platform account, or any MCP server",children:[e("div",{class:"conn-add",children:[e(ue,{label:"What to connect",options:De,value:d,onChange:f}),e("p",{class:"muted",children:ze[d]})]}),d==="platform"?e(Ue,{...b,catalog:o,rows:s},u):e(_e,{...b},u)]})}function We({row:o,onSaved:s,onClose:r}){let i=N({leaves:!0}),c=!!i.pending,a=L(null);return X(()=>a.current?.focus(),[]),e("form",{class:"add-row conn-key",method:"post",onSubmit:p=>{p.preventDefault();let d=String(new FormData(p.currentTarget).get("key")??"").trim();d&&i.run("save",async()=>s(await R.connections.update(o.id,{key:d})))},children:[e("input",{name:"key",type:"password","aria-label":`New key for ${o.name}`,placeholder:`New key for ${o.name}, then Enter`,ref:a,autocomplete:"off",required:!0}),e(I,{type:"submit",loading:c,children:"Save key"}),e(I,{variant:"ghost",disabled:c,onClick:r,children:"Cancel"})]})}function gn({first:o,catalog:s,local:r,admin:i,operator:c}){let[a,p]=m(o.filter(t=>t.provider!=="env")),[d,f]=m(),u=N({leaves:!0}),g=t=>p(v=>v.some(l=>l.id===t.id)?v.map(l=>l.id===t.id?t:l):[...v,t]),b=t=>{if(t.auth==="key")return f(t);u.run(t.id,async()=>location.assign((await R.connections.authorize(t.id)).url))};return e(B,{children:[e(je,{catalog:s,rows:a,local:r,admin:i,operator:c,empty:!o.some(t=>t.provider!=="env"),onAdded:g}),e(oe,{title:"Connections",count:a.length,children:[a.length?e("div",{class:"table-scroll",children:e("table",{class:"rows settings conns",children:e("tbody",{children:a.map(t=>e(fe,{title:t.name,badges:e("span",{class:"conn-badges",children:[e(F,{children:t.owner?t.mine?"yours":"member":"workspace"}),e(F,{children:t.access==="read"?"Read-only":t.access?"Read-write":"Default"}),e(F,{tone:Ce[t.status].tone,children:Ce[t.status].label})]}),sub:e(Ke,{row:t,catalog:s}),actions:t.status==="ok"?null:e(I,{variant:"outline",size:"sm",loading:u.pending===t.id,onClick:()=>b(t),children:"Reconnect"}),remove:{title:`Remove ${t.name}?`,body:"Tasks stop using it, and its key or sign-in is deleted.",onRemove:()=>R.connections.remove(t.id).then(()=>p(v=>v.filter(l=>l.id!==t.id)),de)}},t.id))})})}):e(re,{title:"No connections yet",children:"Add one above so tasks can use another service, like an issue tracker or a database."}),d?e(We,{row:d,onSaved:t=>{g(t),f(void 0)},onClose:()=>f(void 0)}):null]})]})}export{gn as ConnectionsList};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$
|
|
1
|
+
import{$0J as l,$0N as c,$0a as e,$0u as r}from"./shared-init-b281027d465e004f.js";import{$3h as n}from"./shared-init-6e12333f12903a62-2.js";function p({value:o,label:i="Copy"}){let[t,d]=n(!1);return e(c,{icon:t?r:l,label:t?"Copied":i,class:t?"copied":void 0,onClick:()=>void navigator.clipboard.writeText(o).then(()=>d(!0))})}function g({value:o,label:i="Copy command",link:t}){return e("div",{class:"copy-line",children:[t?e("a",{href:o,target:"_blank",rel:"noreferrer",children:e("code",{children:o})}):e("code",{children:o}),e(p,{value:o,label:i})]})}export{p as a,g as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{b as u,d as g}from"./platform-actions-70600c9943320152.js";import"./copy-bdc60bdafe336316.js";import"./segmented-0b6dc6b93c35e0f5.js";import"./outcome-dialog-fde11a52c282301d.js";import"./confirm-a78147b6ecef3847.js";import"./field-bb8191aa02d07282.js";import{a as l}from"./action-a76e495fb39a73d3.js";import"./format-a27067f0186e78ac.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$2d as f}from"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$1c as c}from"./shared-init-b281027d465e004f.js";import{$0L as m,$0a as e}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3h as t,$3j as p}from"./shared-init-6e12333f12903a62-2.js";function v({integration:r,state:i,info:o}){let[d,C]=t(!1),[b,a]=t(!0),[n,h]=t(),s=()=>c.apps.start(r,i);return p(()=>{u(o?.create,i,s).then(h).catch(y=>{C(!0),l(y)})},[]),d?null:n?b?e(g,{integration:r,step:n,start:s,unreachable:o?.unreachable,onClose:()=>a(!1)}):e(m,{onClick:()=>a(!0),children:n.submit}):e(f,{label:`Opening ${o?.name??r}`})}export{v as CreateLink};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{a as ne}from"./combo-702c94817bf6ac17.js";import{a as J}from"./copy-bdc60bdafe336316.js";import{d as V,m as Q}from"./model-options-8d2170eebe0d061d.js";import{a as X}from"./types-3eca2c7f47c46054.js";import{d as Z,e as ee,f as K}from"./list-2773686bf8df64c7.js";import"./confirm-a78147b6ecef3847.js";import{a as A,b as B}from"./action-a76e495fb39a73d3.js";import{h as D}from"./format-a27067f0186e78ac.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$0B as W,$0a as z,$0j as H,$0x as j}from"./shared-init-c3bd249cf1eca6d1.js";import{$2a as L,$2d as T,$2o as G}from"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import{$1a as q}from"./shared-init-c3bd249cf1eca6d1.js";import{$1c as f,$1e as $}from"./shared-init-b281027d465e004f.js";import{$0L as I,$0a as e,$0b as U,$0u as x}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3c as E,$3h as b,$3j as _,$3l as R}from"./shared-init-6e12333f12903a62-2.js";var O=[{id:"claude",name:"Claude",key:"ANTHROPIC_API_KEY",signIn:"Claude"},{id:"codex",name:"Codex",key:"OPENAI_API_KEY",signIn:"ChatGPT"}],ie=[...O.map(t=>t.key),...Q.flatMap(t=>t.envKey||[])];function ae({keys:t,admin:u,focus:p,ask:k}){let[c,h]=b(O.find(l=>l.id===p)?.key??"OPENAI_API_KEY"),[m,C]=b(u?"workspace":"personal"),o=R(null),r=B({toast:"Not saved",refresh:!0});return _(()=>{p&&o.current?.focus()},[]),e("form",{class:"cred-add",method:"post",onSubmit:l=>{l.preventDefault();let g=l.currentTarget,y=c.trim(),v=String(new FormData(g).get("key")??"").trim();if(!y||!v)return;let S=()=>void r.run("add",async()=>{await f.credentials.add({env:{[y]:v},...m==="workspace"?{workspace:!0}:{}}),g.reset(),h("OPENAI_API_KEY")});t.some(w=>w.name===y&&w.scope===m)?k(Z(y,m),S):S()},children:[e(ne,{label:"Variable",name:"name",class:"mono cred-var",options:ie,placeholder:"OPENAI_API_KEY",value:c,onChange:h}),e("input",{type:"password",name:"key",autocomplete:"off","aria-label":"API key",placeholder:"API key",ref:o,"aria-busy":!!r.pending,required:!0}),u?e(j,{label:"Who can use this key",options:V,value:m,onChange:C}):null,e(I,{type:"submit",loading:!!r.pending,children:"Add"})]})}function re({login:t,engine:u,onChange:p,onDone:k,onError:c,onCancel:h}){let[m,C]=b(),[o,r]=b();$(t.id&&t.state!=="done"&&t.state!=="failed"?a=>f.credentials.loginStatus(t.id).then(i=>{if(!a.aborted){if(i.state==="done")return k();if(i.state==="failed")return c(i.error??"Sign-in failed. Try again.");t.state==="verifying"&&i.state==="open"&&i.url===o||p(i)}}).catch(i=>{if(a.aborted)return;let P=i.status;if(P===void 0||P>=500)return console.error("coder dashboard: sign-in status",i);c(D(i))}):void 0,800,[t.id]);let l=a=>{r(t.url),p({...t,state:"verifying"}),f.credentials.loginCode(t.id,a).catch(i=>c(D(i)))},g=!!t.url,y=t.state==="verifying",v=!!t.url&&m===t.url,S=!!o&&t.state==="open"&&t.url!==o,w=`Open ${u.signIn} sign-in`;return e(q,{class:"sign-in",title:`Sign in with ${u.signIn}`,cancelDanger:!0,focus:"actions",onClose:h,actions:e(I,{href:t.url,external:!0,variant:v?"outline":"primary",loading:!g,autoFocus:!0,onClick:()=>C(t.url),children:v?"Open again":w}),children:[e("p",{class:"muted",children:"Coder signs in on a private machine and keeps the sign-in for your tasks."}),e("ol",{class:"steps-list sign-steps",role:"status",children:[e("li",{children:g?"The sign-in machine is ready.":e(T,{label:"Starting the sign-in machine\u2026",inline:!0})}),t.engine==="codex"?e(E,{children:[e("li",{children:["Open the sign-in page and enter this code.",t.code?e("span",{class:"code-box",children:[t.code,e(J,{value:t.code,label:"Copy code"})]}):null]}),e("li",{children:g?e(T,{label:"Waiting for your approval on the sign-in page\u2026",inline:!0}):"Approve it there."})]}):e(E,{children:[e("li",{children:["Open the ",u.signIn," sign-in and approve it."]}),e("li",{children:[S?e("span",{class:"rejected",role:"alert",children:"That code did not work. Open the sign-in again and paste the new code."}):"Paste the code it shows.",e("input",{class:"mono",autocomplete:"off","aria-label":`Code from the ${u.signIn} sign-in page`,placeholder:"Paste the code from the sign-in page",disabled:t.state!=="open",onPaste:a=>{let i=a.clipboardData?.getData("text").trim();i&&(a.preventDefault(),a.currentTarget.value=i,l(i))},onKeyDown:a=>{let i=a.currentTarget.value.trim();a.key==="Enter"&&i&&l(i)}},t.url),y?e(T,{label:"Checking the code\u2026",inline:!0}):null]})]})]})]})}function Te({status:t}){let[u,p]=b(t),k=B(),[c,h]=b(),m=k.pending??(c?`${c.engine}:login`:"");$(c?async o=>{let r=await f.engines.status();o.aborted||(p(r),(r[c.engine]?.signedIn||Date.now()>c.until)&&h(void 0))}:void 0,2e3,[c]);let C=(o,r)=>void k.run(`${o}:${r}`,async()=>{p(await f.engines[r](o)),r==="login"&&h({engine:o,until:Date.now()+5*6e4})});return e(E,{children:[O.map(o=>{let r=u[o.id],l=m===`${o.id}:login`;return e(L,{title:o.name,children:e("div",{class:"cred-new",children:[r?.signedIn?e("span",{class:"signed grow",children:[e(U,{d:x}),"Signed in to ",o.name]}):l?e("span",{class:"grow muted",children:["Finish signing in in the window ",o.name," opened."]}):e("span",{class:"grow muted",children:"Not signed in on this machine."}),r?.signedIn?e(I,{variant:"secondary",danger:!0,size:"sm",loading:m===`${o.id}:logout`,onClick:()=>C(o.id,"logout"),children:"Sign out"}):e(I,{variant:"secondary",size:"sm",loading:l,disabled:!!m,onClick:()=>C(o.id,"login"),children:"Sign in"}),l?e(I,{variant:"ghost",size:"sm",onClick:()=>h(void 0),children:"Cancel"}):null]})},o.id)}),e("p",{class:"muted",children:"On the local server, custom models read their key variable from this machine's environment."})]})}function Be({rows:t,me:u,focus:p}){let k=z(),c=W(),[h,m]=b({}),[C,o]=b(!1),r=X(u),l=O.filter(n=>u.user&&u.server?.subscriptions?.[n.id]),g=t.filter(n=>!n.subscription),y=B({refresh:!0}),v=ee(),S=`coder-logins:${c}`,w=()=>{try{return JSON.parse(sessionStorage.getItem(S)??"{}")}catch{return{}}},a=(n,s)=>{m(d=>({...d,[n]:s}));try{let d={...w(),[n]:s?.id||void 0};sessionStorage.setItem(S,JSON.stringify(d))}catch{}},i=R(new Set);_(()=>{for(let[n,s]of Object.entries(w()))f.credentials.loginStatus(s).then(d=>{if(!i.current.has(n)){if(d.state==="done")return P(n);if(d.state==="failed")return a(n),A(d.error??"Sign-in failed. Try again.");a(n,d)}}).catch(()=>{i.current.has(n)||a(n)})},[]);let P=n=>{a(n),k.refresh()},te=n=>{i.current.add(n),a(n,{id:"",engine:n,state:"starting"}),f.credentials.login(n).then(s=>a(n,s)).catch(s=>{a(n),A(s)})},M=n=>t.find(s=>s.subscription&&s.name===n),Y=(n,s)=>M(n.id)?v.ask(`Replace your ${n.name} subscription?`,s):s(),F=n=>y.run(`remove:${n.scope}/${n.name}`,()=>f.credentials.remove(n.name,{workspace:n.scope==="workspace"}));return e(E,{children:[l.length?e(L,{title:"Subscriptions",children:e("div",{class:"cred-engine",children:[e("p",{class:"muted cred-note",children:"Personal only: a subscription runs your own tasks and your 1:1 DMs with agents, never the workspace's shared threads."}),e("table",{class:"rows creds",children:e("tbody",{children:l.map(n=>{let s=M(n.id),d=h[n.id],se=[s?.account?.email,s?.account?.plan,s?.masked];return e(K,{title:n.name,sub:s?se.filter(Boolean).join(" \xB7 "):void 0,actions:e(E,{children:[e(I,{...s?{variant:"ghost",size:"sm"}:{},autoFocus:p===n.id&&!s,disabled:!!d,onClick:()=>Y(n,()=>te(n.id)),children:s?"Sign in again":`Sign in with ${n.signIn}`}),d?e(re,{login:d,engine:n,onChange:N=>a(d.engine,N),onDone:()=>P(d.engine),onError:N=>{a(d.engine),A(N)},onCancel:()=>{a(d.engine),d.id&&f.credentials.cancelLogin(d.id).catch(A)}}):null]}),alignMenu:!0,menu:n.id==="claude"?e(H,{title:"Paste a setup token",onClick:()=>o(!0)}):void 0,remove:s?{label:"Sign out",title:`Sign out of ${n.name}?`,body:"Tasks that use it stop running.",onRemove:()=>F(s)}:void 0},n.id)})})}),C?e("div",{class:"cred-new",children:e("form",{class:"cred-add",method:"post",onSubmit:n=>{n.preventDefault();let s=String(new FormData(n.currentTarget).get("token")??"");s.trim()&&Y(O[0],()=>void y.run("token",async()=>{await f.credentials.add({env:{CLAUDE_CODE_OAUTH_TOKEN:s.trim()}}),o(!1)}))},children:[e("input",{type:"password",name:"token",autocomplete:"off","aria-label":"Your claude setup-token",placeholder:"Paste a claude setup-token",ref:n=>n?.focus(),required:!0}),e(I,{type:"submit",loading:y.pending==="token",children:"Add"})]})}):null]})}):null,e(L,{title:"API keys",count:g.length||void 0,children:e("div",{class:"cred-engine",children:[e("p",{class:"muted cred-note",children:["Tasks read each key as its variable. Claude uses ANTHROPIC_API_KEY, Codex uses OPENAI_API_KEY, and a"," ",e("a",{class:"link",href:`/dash/${c}/settings/models`,children:"custom model"})," ","uses the one it names."]}),g.length?e("table",{class:"rows creds",children:e("tbody",{children:g.map(n=>e(K,{title:n.name,badges:e(G,{children:n.scope}),sub:n.masked,remove:n.scope==="personal"||r?{title:`Remove ${n.name}?`,body:"Tasks that use it stop running.",onRemove:()=>F(n)}:void 0},`${n.scope}/${n.name}`))})}):null,e("div",{class:"cred-new",children:e(ae,{keys:g,admin:r,focus:l.some(n=>n.id===p)?"":p,ask:v.ask})})]})}),v.dialog]})}export{Be as CredentialsList,Te as EngineLogins};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./field-
|
|
1
|
+
import{a as e}from"./field-bb8191aa02d07282.js";import{$0a as l,$0e as p,$0g as f}from"./shared-init-c3bd249cf1eca6d1.js";import{$2j as c}from"./shared-init-c3bd249cf1eca6d1.js";import{$0L as u,$0a as t,$0b as s,$0j as i}from"./shared-init-b281027d465e004f.js";import{$3c as n}from"./shared-init-6e12333f12903a62-2.js";function x({page:o,from:d,to:g,today:m,on:h}){let y=l();return t(c,{class:h?"custom on":"custom",align:"left",summary:t(n,{children:["Custom",t(s,{d:i})]}),children:t("form",{class:"date-pop",onSubmit:r=>{r.preventDefault();let a=new FormData(r.currentTarget),[S,T]=[String(a.get("from")),String(a.get("to"))].sort();r.currentTarget.closest("[popover]")?.hidePopover(),y.push(o.href,{params:p(o).params,search:f(o.search,{from:String(S),to:String(T)}),scroll:!1})},children:[t(e,{label:"From",children:t("input",{type:"date",name:"from",defaultValue:d,max:m,required:!0})}),t(e,{label:"To",children:t("input",{type:"date",name:"to",defaultValue:g,max:m,required:!0})}),t(u,{type:"submit",size:"sm","data-keep":!0,children:"Apply"})]})})}export{x as a};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use client";import{a as We,b as Ve,c as Ge,d as Ue}from"./agent-pills-4d3c6a2aa9eb1522.js";import{b as Qe}from"./instructions-2d9fbcbfadac4f40.js";import{a as O}from"./segmented-0b6dc6b93c35e0f5.js";import{a as ze}from"./agent-toggle-d7d27123f2070f18.js";import{a as xe}from"./connect-repositories-7770ab805160028d.js";import{b as Me,c as te,f as se,h as ne,i as Fe,j as qe,k as He,l as je}from"./model-options-8d2170eebe0d061d.js";import{a as Ke}from"./notice-d14fdac28139c0a8.js";import{b as _e}from"./types-3eca2c7f47c46054.js";import{a as E}from"./field-bb8191aa02d07282.js";import{a as V,b as G}from"./action-a76e495fb39a73d3.js";import{g as q}from"./format-a27067f0186e78ac.js";import{$3j as Oe,$3k as ee}from"./shared-init-c3bd249cf1eca6d1.js";import{$0A as De,$0B as W,$0a as _,$0h as Re,$0i as Pe,$0j as X,$0o as Be,$0t as K,$0x as $e,$0z as Z}from"./shared-init-c3bd249cf1eca6d1.js";import{$2b as Ae,$2d as J,$2k as Ee,$2o as D,$2p as Ne,$2q as Te,$2r as Le}from"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import{$1c as $}from"./shared-init-b281027d465e004f.js";import{$0C as Se,$0L as A,$0M as Ie,$0a as e,$0b as H,$0e as ye,$0j as ke,$0r as j,$0w as Ce,$0z as Y}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3c as I,$3h as k,$3j as F,$3l as we}from"./shared-init-6e12333f12903a62-2.js";var U=2,Ye=({name:s,platform:i})=>e("li",{children:[e("b",{children:["@",s]})," on ",i]},`${i} ${s}`);function Je({agent:s,actions:i,back:v}){return e(I,{children:[e(Pe,{}),e("header",{class:"hero",children:[e("span",{class:"hero-mark",children:q(s.name)}),e("div",{class:"grow",children:[v,e("div",{class:"title-row",children:[e("h1",{children:s.name}),e(Ue,{agent:s}),s.settings?.disabled?e(ze,{agent:s,link:!0}):null]}),e("p",{class:"lead",children:s.description??"No description yet."})]}),i||s.handles?.length?e("div",{class:"hero-side",children:[i?e("div",{class:"actions",children:i}):null,s.handles?.length?e("ul",{class:"handles",title:"Mention it on its platforms by these names",children:[s.handles.slice(0,U).map(Ye),s.handles.length>U?e("li",{children:e(Ee,{label:`+${s.handles.length-U} more`,children:e("ul",{class:"handles",children:s.handles.slice(U).map(Ye)})})}):null]}):null]}):null]})]})}function Xe({port:s}){return e(Ae,{title:"Receive platform events",note:`Expose port ${s} so platforms can reach this server`,open:"Show",children:e("div",{class:"guide",children:[e("p",{children:["Platforms reach this server through a public address. Expose port ",s," with one of these."]}),e("ul",{class:"steps-list",children:[e("li",{children:e("code",{children:["ngrok http ",s]})}),e("li",{children:e("code",{children:["cloudflared tunnel --url http://localhost:",s]})}),e("li",{children:"VS Code's Ports panel, with the port's visibility set to Public"})]}),e("p",{children:["Then restart with ",e("code",{children:"PUBLIC_URL=<tunnel URL> coder server serve"}),". The tunnel serves only webhooks and app setup, never this dashboard."]})]})})}var Ze=/^[\w.-]+\/[\w.-]+$/,wt=s=>/^[0-9a-f]{12,}$/i.test(s)?s.slice(0,7):s;function yt({preview:s,onDone:i}){let[v,m]=k(new Set),h=G({leaves:!0});if(s.failed)return null;if(!s.agents)return e(J,{label:`Reading ${s.repo}`,h:180,late:!0});if(!s.agents.length)return e("p",{class:"muted",children:[s.repo," has no agents yet. Add a folder per agent under ",e("code",{children:".coder/agents"}),", with an ",e("code",{children:"agent.json"})," and a ",e("code",{children:"system.md"}),"."]});let r=s.agents.filter(o=>!o.taken&&!v.has(o.id)).map(o=>o.id);return e("form",{class:"import-agents",onSubmit:async o=>{o.preventDefault(),r.length&&await h.run("import",async()=>i((await $.agents.import(s.repo,void 0,r)).imported))},children:[e("ul",{class:"picks-list",children:s.agents.map(o=>e("li",{children:e("label",{class:"check",children:[e("input",{type:"checkbox",checked:!o.taken&&!v.has(o.id),disabled:o.taken,onChange:b=>{let d=new Set(v);b.currentTarget.checked?d.delete(o.id):d.add(o.id),m(d)}}),e("span",{children:[e("b",{children:o.name})," ",e(Le,{value:o.id}),o.version?e(D,{children:["v",o.version,o.commit?` \xB7 ${wt(o.commit)}`:""]}):null,e("small",{children:o.taken?"An agent with this id already exists here.":o.description??"No description."}),o.warnings?.map(b=>e("small",{role:"status",children:b},b))]})]})},o.id))}),e("p",{class:"muted",children:["Each push to ",s.repo," that changes an agent publishes its new version here."]}),e("div",{class:"form-actions end",children:e(A,{type:"submit",disabled:!!h.pending||!r.length,children:["Import ",r.length===1?"1 agent":`${r.length} agents`]})})]})}function et({connected:s,connectLabel:i,tunnel:v,port:m}){let h=_(),r=W(),[o,b]=k(),[d,x]=k(""),[R,P]=k(),y=we("");F(()=>{s&&$.repositories.list().then(c=>b(c.map(T=>T.repo))).catch(c=>{b([]),V(c)})},[]);let f=c=>{y.current=c,P({repo:c}),$.agents.preview(c).then(({agents:T})=>y.current===c&&P({repo:c,agents:T})).catch(T=>{y.current===c&&(P({repo:c,failed:!0}),V(T))})},L=c=>c.length===1?h.push("/dash/[org]/agents/[slug]",{params:{org:r,slug:c[0]}}):h.push("/dash/[org]/agents",{params:{org:r}}),z=d.trim().toLowerCase(),n=(o??[]).filter(c=>c.toLowerCase().includes(z)),w=Ze.test(d.trim())&&!o?.includes(d.trim())?d.trim():"";return e("div",{class:"import",children:[e("div",{class:"import-repos",children:[s?e(K,{value:d,label:"Search repositories or type owner/repo",onInput:x}):e(I,{children:[e(Ke,{children:[e(H,{d:j}),e("span",{class:"grow",children:"Connect to list your repositories here."}),e(A,{variant:"outline",size:"sm",onClick:()=>void xe(`/dash/${r}/agents/new?template=import`).catch(V),children:i})]}),e("form",{class:"with-btn",onSubmit:c=>{c.preventDefault(),Ze.test(d.trim())&&f(d.trim())},children:[e("input",{class:"mono","aria-label":"Repository",placeholder:"owner/repo",autocomplete:"off",value:d,onInput:c=>x(c.currentTarget.value)}),e(A,{type:"submit",variant:"outline",children:"Look up"})]})]}),s?e("div",{class:"repo-list scroll-box",role:"list",children:o?e(I,{children:[w?e(X,{"aria-pressed":R?.repo===w,icon:j,title:w,onClick:()=>f(w)}):null,n.map(c=>e(X,{"aria-pressed":R?.repo===c,icon:j,title:c,onClick:()=>f(c)},c)),!n.length&&!w?e(Be,{children:"No repository matches. Type owner/repo to use another."}):null]}):e(J,{label:"Loading repositories",h:240,late:!0})}):null,!s&&v?e(Xe,{port:m}):null]}),e("div",{class:"import-preview",children:R?e(I,{children:[e("h3",{children:["Agents in ",R.repo]}),e(yt,{preview:R,onDone:L},R.repo)]}):e("p",{class:"muted",children:"Pick a repository to see the agents in its .coder/agents folder."})})]})}var tt=[["Brisk","Calm","Clever","Keen","Nimble","Quiet","Steady","Swift","Tidy","Bright","Patient","Lucky"],["Heron","Otter","Falcon","Lynx","Badger","Relay","Beacon","Compass","Lantern","Pilot","Sparrow","Harbor"]],st=s=>s[Math.floor(Math.random()*s.length)],nt=()=>`${st(tt[0])} ${st(tt[1])}`;var ot="never asks you; anything outside its sandbox fails",kt={"read-only":`reads the repository and changes nothing; ${ot}`,"workspace-write":`edits files inside the repository; ${ot}`,auto:"edits files, reaches the network, and asks you when it needs more"},Ct=te.map(([s,i])=>s==="auto"?[s,e(I,{children:[i," ",e(D,{tone:"acc",children:"escalates"})]})]:[s,i]),St=[["read","Read-only"],["write","Read-write"]],It={read:"reads its platforms and connections; replies and reacts in the conversation",write:"also changes things there, like opening pull requests"},Rt=[["blank","Blank","start from nothing"],["helper","Slack helper","answers questions in chat"],["reviewer","GitHub reviewer","reviews pull requests"]],Pt=6,At=`Review each pull request for bugs, risky changes and missing tests.
|
|
2
|
+
Comment on the lines that matter and keep it short.
|
|
3
|
+
When mentioned, answer questions about the code and cite file paths.`,Et=`Answer the team's questions in the thread.
|
|
4
|
+
Read the code before you answer, cite file paths, and say when you are unsure.
|
|
5
|
+
If asked to change code, describe the change and stop.`,rt=s=>s.toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40);function Nt(s,i,v){let m=s?.definition,h={name:s?.name??i,id:s?.id??rt(i),description:s?.description??m?.description??"",platforms:[],events:{},match:{},access:m?.access??"write",permissions:m?.permissions??"auto",systemPrompt:s?.systemPrompt??"",engine:m?.engine??"",model:m?.model??"",effort:m?.effort??""};for(let[r,o]of Object.entries(m?.integrations??{}))if(v.some(b=>b.id===r)&&(h.platforms.push(r),h.events[r]=_e(o.events),h.match[r]={},o.events&&!Array.isArray(o.events)))for(let[b,d]of Object.entries(o.events))d&&typeof d=="object"&&"match"in d&&(h.match[r][b]=String(d.match));return h}var at=s=>Object.entries(s?.events??{}).filter(([,i])=>!i.noisy).map(([i])=>i);function it(s,i){let v=m=>{let h=i.filter(m).map(r=>r.id);return{platforms:h,events:Object.fromEntries(h.map(r=>[r,at(i.find(o=>o.id===r))])),match:{}}};return s==="reviewer"?{...v(m=>"pull_request"in m.events),description:"Reviews pull requests and answers questions about the code.",systemPrompt:At}:s==="helper"?{...v(m=>m.id==="slack"),description:"Answers the team's questions in chat.",systemPrompt:Et}:{platforms:[],events:{},match:{},description:"",systemPrompt:""}}function Tt(s,i,v){let m=s?.events&&!Array.isArray(s.events)?s.events:{},h=Object.fromEntries(i.map(r=>{let o=m[r],b=v[r]?.trim(),d=o&&typeof o=="object"?{...o}:{};return b?d.match=b:delete d.match,Object.keys(d).length?[r,d]:[r,o===void 0||typeof o=="object"?!0:o]}));return Object.values(h).every(r=>r===!0)?i:h}function Qs({catalog:s,agent:i,suggested:v="",section:m,models:h,defaults:r={engine:"",engines:{},builtin:{}},template:o,connected:b=!1,connectLabel:d="Connect",tunnel:x=!1,port:R=""}){let P=_(),y=W(),f=!i,[L,z]=k(o??"blank"),[n,w]=k(()=>({...Nt(i,v,s),...f?it(o??"blank",s):{}})),[c,T]=k(!1),[oe,lt]=k("write"),[ie,ct]=k(""),re=G({toast:f?"Agent not created":"Not published",leaves:!0}),dt=!!re.pending,B=(t,l)=>w(p=>({...p,[t]:l})),ae=(t,l)=>Object.entries(r.builtin[t]??{}).find(([,p])=>p===l)?.[0]??l,M=n.engine||r.engine,Q=r.engines[M]??{},pt=[se[r.engine]??r.engine,ae(r.engine,r.engines[r.engine]?.model)].filter(Boolean).join(" \xB7 "),le=te.find(([t])=>t===n.permissions)?.[1].toLowerCase(),mt=f?"you can change these later in its settings":(n.engine||n.model||n.effort?[se[M]??M,n.model||ae(M,Q.model),n.effort||Q.effort,le]:["Default models",le]).filter(Boolean).join(" \xB7 ");F(()=>{if(!m)return;let t=document.getElementById(`agent-${m}`);t?.scrollIntoView({block:"start"}),t?.querySelector("input, textarea, button")?.focus({preventScroll:!0})},[]);let ce=t=>{z(t),t!=="import"&&w(l=>({...l,...it(t,s)}))},de=t=>w(l=>({...l,name:t,...f&&!c?{id:rt(t)}:{}})),ut=(t,l)=>w(p=>{let g=Object.keys(s.find(a=>a.id===t)?.events??{});return{...p,platforms:l?s.map(a=>a.id).filter(a=>a===t||p.platforms.includes(a)):p.platforms.filter(a=>a!==t),events:l&&!p.events[t]?.length?{...p.events,[t]:at(s.find(a=>a.id===t))}:p.events}}),ht=(t,l,p)=>w(g=>{let a=g.events[t]??[],u=p?g.match:{...g.match,[t]:{...g.match[t],[l]:""}};return{...g,events:{...g.events,[t]:p?[...new Set([...a,l])]:a.filter(C=>C!==l)},match:u}}),ft=(t,l,p)=>w(g=>({...g,match:{...g.match,[t]:{...g.match[t],[l]:p}}})),gt=async()=>{let t=n.platforms.find(u=>!n.events[u]?.length);if(t)return ee("Not published",`Pick at least one event on ${t}, or turn ${t} off.`);let l={};for(let u of n.platforms)l[u]={events:Tt(i?.definition?.integrations?.[u],n.events[u]??[],n.match[u]??{})};let p={...i?.definition,integrations:l,permissions:n.permissions,access:n.access};for(let u of["name","description","engine","model","effort"]){let C=n[u].trim();C?p[u]=C:delete p[u]}let g=f?n.id:i.id,a=n.name.trim();await re.run("publish",async()=>{let u=i?.files,{apps:C=[]}=await $.agents.put(g,{definition:p,...u?{files:u}:{},systemPrompt:n.systemPrompt,...a?{name:a}:{},...n.description.trim()?{description:n.description.trim()}:{}});for(let S of C){let be=s.find(bt=>bt.id===S.integration)?.name??S.integration;S.updated&&Oe(`${be} app updated`,`${S.name} now matches the agent.`,"success"),S.error&&ee(`${be} app not updated`,S.error)}let ve=C.filter(S=>S.drift).map(S=>S.id);ve.length?P.push("/dash/[org]/agents/[slug]/platforms",{params:{org:y,slug:g},search:{update:ve.join(",")}}):f&&n.platforms.length?P.push("/dash/[org]/agents/[slug]/platforms",{params:{org:y,slug:g}}):P.push("/dash/[org]/agents/[slug]",{params:{org:y,slug:g}})})},pe=e(I,{children:[f?e(A,{variant:"outline","aria-pressed":L==="import",onClick:()=>ce("import"),children:"Import from repo"}):null,f?null:e(Ie,{variant:"ghost",href:"/dash/[org]/agents/[slug]",params:{org:y,slug:i.id},children:"Cancel"}),e(A,{type:"submit",leftIcon:f?Y:Ce,disabled:!n.name.trim()||L==="import",loading:dt,children:f?"Create agent":"Publish new version"})]}),me=f?e(De,{...Re.newAgent,back:e(Z,{href:"/dash/[org]/agents",params:{org:y},label:"Agents"}),actions:pe}):e(Je,{agent:i,back:e(Z,{href:"/dash/[org]/agents/[slug]",params:{org:y,slug:i.id},label:i.name}),actions:pe}),ue=f?e("div",{class:"templates",role:"radiogroup","aria-label":"Start from",children:Rt.map(([t,l,p])=>e("button",{type:"button",role:"radio","aria-checked":L===t,class:"tile",onClick:()=>ce(t),children:[e("b",{children:l}),e("small",{children:p})]},t))}):null;if(L==="import"&&f)return e("div",{class:"agent-new",children:[me,ue,e(et,{connected:b,connectLabel:d,tunnel:x,port:R})]});let vt=ie.trim().toLowerCase(),he=s.filter(t=>`${t.id} ${t.description}`.toLowerCase().includes(vt)),fe=t=>!!t.featured||n.platforms.includes(t.id),ge=[...he.filter(fe),...he.filter(t=>!fe(t))];return e("form",{class:"agent-new",onSubmit:t=>{t.preventDefault(),gt()},children:[me,ue,e("div",{class:"agent-form",children:[e("div",{class:"agent-main",children:[e("section",{id:"agent-name",class:"form-part",children:[e("h2",{children:"Name and description"}),e("div",{class:"fields",children:[e(E,{label:"Name",hint:"its handle on every platform",children:e("span",{class:"with-btn",children:[e("input",{name:"name",required:!0,value:n.name,onInput:t=>de(t.currentTarget.value)}),f?e(A,{variant:"outline",leftIcon:Se,title:"Suggest another name",onClick:()=>de(nt()),children:"Suggest"}):null]})}),f?e(E,{label:"Id",hint:"the folder and command name",children:e("input",{class:"mono",name:"id",required:!0,pattern:"[a-z0-9][a-z0-9_\\-]*",autocomplete:"off",value:n.id,onInput:t=>{T(!0),B("id",t.currentTarget.value)}})}):e("div",{class:"field",children:[e("span",{children:["Id ",e("small",{children:"fixed once created"})]}),e("p",{class:"fixed mono",children:i.id})]})]}),e(E,{label:"Description",hint:"optional, shown in lists and added to the prompt",children:e("input",{name:"description",maxLength:240,placeholder:"Answers engineering questions about acme/app.",value:n.description,onInput:t=>B("description",t.currentTarget.value)})})]}),e("section",{id:"agent-instructions",class:"form-part",children:[e("div",{class:"part-head",children:[e("h2",{children:"Instructions"}),e(O,{label:"Instructions view",options:[["write","Write"],["preview","Preview"]],value:oe,onChange:lt})]}),oe==="write"?e("textarea",{name:"systemPrompt",rows:10,"aria-label":"Instructions",placeholder:`Markdown. The system prompt every task starts from.
|
|
6
|
+
You answer questions about acme/app from its source. Cite file paths.`,value:n.systemPrompt,onInput:t=>B("systemPrompt",t.currentTarget.value)}):e("div",{class:"body md md-preview",children:n.systemPrompt.trim()?Qe(n.systemPrompt):e("p",{class:"muted",children:"Nothing written yet."})})]}),e("section",{id:"agent-platforms",class:"form-part",children:[e("div",{class:"part-head",onKeyDown:t=>t.key==="Enter"&&t.preventDefault(),children:[e("h2",{children:"Handles"}),s.length>Pt?e(K,{value:ie,label:"Search platforms",onInput:ct}):null]}),e("p",{class:"muted",children:["Each platform becomes the agent's handle there: its own app, set up on the next page, where ",e("span",{class:"semi",children:"@mentions"})," and events start tasks. The dashboard, the CLI and the SDK can always start it."]}),e("p",{class:"muted",children:[e("b",{children:"Connections"})," are separate and shared by all agents: add as many as tasks need, like an API key, an MCP server or a member's own account, in"," ",e(ye,{class:"link",href:"/dash/[org]/settings/[tab]",params:{org:y,tab:"connections"},children:"Settings"}),"."]}),e("ul",{class:"listen",children:[ge.map(t=>{let l=n.platforms.includes(t.id),p=n.events[t.id]??[],g=Object.entries(t.events);return e("li",{class:l?"on":void 0,children:[e("label",{class:"listen-row",children:[e("span",{class:"pf-mark","aria-hidden":"true",children:e(We,{brand:t.brand})}),e("span",{class:"grow",children:[e("b",{children:t.name}),e("small",{title:t.description,children:t.description})]}),e("input",{type:"checkbox",role:"switch",class:"switch",name:"platform",value:t.id,checked:l,onChange:a=>ut(t.id,a.currentTarget.checked)})]}),l?e("div",{class:"events",children:[e(Te,{label:`What wakes it on ${t.id}`,children:g.map(([a,u])=>{let C=p.includes(a);return e(Ne,{"aria-pressed":C,title:u.description,onClick:()=>ht(t.id,a,!C),children:a.replace(/_/g," ")},a)})}),g.filter(([a,u])=>u.noisy&&p.includes(a)).map(([a])=>e("label",{class:"match",children:[e("span",{children:a.replace(/_/g," ")}),e("input",{class:"mono",name:`match:${t.id}:${a}`,placeholder:"only when the text matches, like ^help\\b","aria-label":`Text filter for ${a} on ${t.id}`,value:n.match[t.id]?.[a]??"",onInput:u=>ft(t.id,a,u.currentTarget.value)})]},a))]}):null]},t.id)}),ge.length?null:e("li",{class:"listen-none muted",children:"No platform matches."})]}),e(E,{label:"Access",hint:It[n.access],group:!0,children:e(O,{label:"Access",options:St,value:n.access,onChange:t=>B("access",t)})})]}),e("details",{id:"agent-run",class:"form-part run",open:m==="run",children:[e("summary",{children:[e("h2",{children:"Run settings"}),e("span",{class:"grow muted",children:mt}),e(H,{d:ke})]}),e("div",{class:"run-body",children:[e("div",{class:"fields",children:[e(E,{label:"Engine and model",hint:"what runs each task",group:!0,children:e($e,{label:"Model",value:qe(n.engine,n.model),options:Fe(h,ne(pt)),headings:je(h),action:{label:"Add models",icon:Y,onPick:()=>P.push("/dash/[org]/settings/[tab]",{params:{org:y,tab:"models"}})},onChange:t=>w(l=>({...l,...He(t)}))})}),e(E,{label:"Effort",hint:"how hard the model thinks",group:!0,children:e(O,{label:"Effort",options:[["",ne(Q.effort)],...Me],value:n.effort,onChange:t=>B("effort",t)})})]}),e(E,{label:"Repository access",group:!0,children:[e("p",{class:n.permissions==="auto"?"access-note":"access-note warn-hint",children:kt[n.permissions]}),e(O,{label:"Repository access",options:Ct,value:n.permissions,onChange:t=>B("permissions",t)})]})]})]})]}),e("aside",{class:"agent-side","aria-label":"Preview",children:[e("span",{class:"side-label",children:"Preview"}),e("div",{class:"agent-card preview",children:[e("div",{class:"bc-head",children:[e("span",{class:"mark",children:q(n.name)}),e("div",{class:"grow",children:[e("h3",{children:n.name.trim()||"Unnamed agent"}),e("span",{class:"pills",children:[e(D,{children:"dashboard"}),i?.local?null:e(D,{children:["v",f?1:i.currentVersion+1]}),i?.settings?.disabled?e(Ge,{}):null]})]})]}),e("div",{class:"lead-clamp",children:e("span",{children:n.description.trim()||"No description yet."})}),n.platforms.length?e(Ve,{platforms:n.platforms.map(t=>({id:t,state:"none"})),catalog:s}):e("span",{class:"pfs muted",children:"No handles yet"})]})]})]})]})}export{Qs as AgentEditor};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{a as r,b as w,c as S,f,h as b}from"./model-options-8d2170eebe0d061d.js";import{a as k,b as N,f as p,g as u}from"./list-2773686bf8df64c7.js";import"./confirm-a78147b6ecef3847.js";import"./action-a76e495fb39a73d3.js";import"./format-a27067f0186e78ac.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$0j as d,$0x as m}from"./shared-init-c3bd249cf1eca6d1.js";import{$2o as a}from"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./shared-init-b281027d465e004f.js";import{$0L as E,$0a as t}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3c as c,$3h as v}from"./shared-init-6e12333f12903a62-2.js";function P({first:s,defaults:C}){let[R,g]=v(""),n=k(s.config),o=n.value.chain??s.effective.chain??r,l=n.value.approvals?.allowedNetworkHosts??[],B=[...o.filter(e=>r.includes(e)),...r.filter(e=>!o.includes(e))],I=(e,i)=>(s.config.engines?.[e]?.[i]?void 0:s.effective.engines?.[e]?.[i])??C[e]?.[i],h=(e,i,L)=>t("label",{children:[i,t(m,{label:`${f[e]} ${i}`,value:n.value.engines?.[e]?.[i]??"",options:[["",b(I(e,i)??(i==="permissions"?"auto":void 0))],...L],onChange:M=>void n.patch({engines:{[e]:{[i]:M||null}}})})]});return t(c,{children:[t(u,{title:"Engines",count:o.length,children:B.map(e=>t(p,{title:f[e],badges:t(c,{children:[o[0]===e?t(a,{tone:"acc",children:"default"}):null,o.includes(e)?null:t(a,{children:"off"})]}),sub:t("span",{class:"inline-picks",children:[h(e,"effort",w),h(e,"permissions",S)]}),actions:o[0]===e?null:t(E,{variant:"secondary",size:"sm",loading:R===e,onClick:()=>{g(e),n.patch({chain:[e,...o.filter(i=>i!==e)]}).finally(()=>g(""))},children:"Make default"}),menu:o.includes(e)?o.length>1?t(d,{title:"Disable",onClick:()=>void n.patch({chain:o.filter(i=>i!==e)})}):void 0:t(d,{title:"Enable",onClick:()=>void n.patch({chain:[...o,e]})})},e))}),t(u,{title:"Allowed network hosts",count:l.length,add:t(N,{fields:[["host","Host, like registry.npmjs.org"]],onAdd:({host:e})=>n.patch({approvals:{allowedNetworkHosts:[...new Set([...l,e])]}})}),children:l.map(e=>t(p,{title:e,remove:{title:`Remove ${e}?`,body:"Tasks lose access to it.",onRemove:()=>n.patch({approvals:{allowedNetworkHosts:l.filter(i=>i!==e)}})}},e))})]})}export{P as EnginesList};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$
|
|
1
|
+
import{$0a as n}from"./shared-init-b281027d465e004f.js";function m({label:l,hint:e,group:o,children:a}){return n(o?"div":"label",{class:"field",children:[n("span",{children:[l,e?n("small",{children:e}):null]}),a]})}export{m as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{b as a,c as b}from"./instructions-2d9fbcbfadac4f40.js";import"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";export{b as Instructions,a as markdown};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{$
|
|
1
|
+
import{$0L as x,$0a as t}from"./shared-init-b281027d465e004f.js";import{$3b as g,$3h as f,$3k as C,$3l as b}from"./shared-init-6e12333f12903a62-2.js";function v({lines:c=10,class:e,children:o}){let n=b(null),[p,h]=f(!1),[l,u]=f(!1);return C(()=>{let s=n.current,r=()=>h(l||s.scrollHeight>s.clientHeight+1);r();let i=new ResizeObserver(r);i.observe(s);let a=new MutationObserver(r);return a.observe(s,{childList:!0,subtree:!0,characterData:!0}),()=>{i.disconnect(),a.disconnect()}},[l]),t("div",{class:`collapse${p?" long":""}${l?" open":""}`,style:`--lines:${c}`,children:[t("div",{class:e?`collapse-box ${e}`:"collapse-box",ref:n,children:o}),p?t(x,{variant:"ghost",size:"sm",class:"more-toggle","aria-expanded":l,onClick:()=>u(!l),children:l?"Show less":"Show more"}):null]})}var S=/`([^`\n]+)`|\*\*(.+?)\*\*|__(.+?)__|\*(\S(?:.*?\S)?)\*|(?<!\w)_(\S(?:.*?\S)?)_(?!\w)|\[([^\]\n]+)\]\(([^)\s]+)\)/g,_=/^(?:https?:|mailto:)/i,w=/^\s*(```|~~~)/,$=/^(#{1,6})\s+(.*?)(?:\s+#+)?\s*$/,E=/^\s*(?:([-*+])|\d+[.)])\s+(.*)$/,I=/^\s*(?:#{1,6}\s|```|~~~|[-*+]\s|\d+[.)]\s)/;function d(c){let e=[],o=0;for(let n of c.matchAll(S)){let[p,h,l,u,s,r,i,a]=n;n.index>o&&e.push(c.slice(o,n.index)),h?e.push(t("code",{children:h})):l||u?e.push(t("strong",{children:d(l||u)})):s||r?e.push(t("em",{children:d(s||r)})):_.test(a)?e.push(t("a",{class:"link",href:a,target:"_blank",rel:"noopener noreferrer",children:d(i)})):e.push(...d(i)),o=n.index+p.length}return o<c.length&&e.push(c.slice(o)),e}function L(c){let e=c.split(/\r?\n/),o=[];for(let n=0;n<e.length;){let p=e[n],h=w.exec(p),l=$.exec(p),u=E.exec(p);if(h){let s=e.findIndex((i,a)=>a>n&&i.trim().startsWith(h[1])),r=s<0?e.length:s;o.push(t("pre",{children:t("code",{children:e.slice(n+1,r).join(`
|
|
2
2
|
`)})})),n=r+1}else if(l)o.push(g(`h${Math.min(l[1].length+2,6)}`,null,d(l[2]))),n++;else if(u){let s=!u[1],r=[];for(let i;(i=E.exec(e[n]??""))&&!i[1]===s;n++)r.push(t("li",{children:d(i[2])}));o.push(s?t("ol",{children:r}):t("ul",{children:r}))}else if(!p.trim())n++;else{let s=[];for(;e[n]?.trim()&&(!s.length||!I.test(e[n]));n++)s.length&&s.push(t("br",{})),s.push(...d(e[n]));o.push(t("p",{children:s}))}}return o}function G({text:c}){return t(v,{class:"body md",children:L(c)})}export{v as a,L as b,G as c};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as p}from"./confirm-a78147b6ecef3847.js";import{a as R}from"./action-a76e495fb39a73d3.js";import{$3g as C}from"./shared-init-c3bd249cf1eca6d1.js";import{$0j as v}from"./shared-init-c3bd249cf1eca6d1.js";import{$2a as h,$2j as y}from"./shared-init-c3bd249cf1eca6d1.js";import{$1c as f}from"./shared-init-b281027d465e004f.js";import{$0L as b,$0a as e,$0b as d,$0y as g}from"./shared-init-b281027d465e004f.js";import{$3h as u,$3l as c}from"./shared-init-6e12333f12903a62-2.js";function q(o){let[r,t]=u(o),n=c(0),i=c(o);return{value:r,patch:a=>{let s=++n.current;return t(m=>C(m,a)),f.config.patch(a).then(m=>(i.current=m,s===n.current&&t(m),!0),m=>(s===n.current&&(t(i.current),R(m)),!1))}}}function E({fields:o,onAdd:r}){return e("form",{class:"add-row",method:"post",onSubmit:async t=>{t.preventDefault();let n=t.currentTarget,i=Object.fromEntries([...new FormData(n)].map(([l,a])=>[l,String(a).trim()]));Object.values(i).some(l=>!l)||await r(i)&&n.reset()},children:[o.map(([t,n])=>e("input",{name:t,placeholder:n,"aria-label":n,autocomplete:"off"},t)),e(b,{type:"submit",children:"Add"})]})}function k(o){let[r,t]=u(!1),[n,i]=u(!1);if(!o)return{};let{title:l,body:a,label:s="Remove",onRemove:m}=o;return{item:e(v,{title:s,danger:!0,onClick:()=>t(!0)}),dialog:r?e(p,{open:!0,title:l,body:a,confirmLabel:s,busy:n,onClose:()=>t(!1),onConfirm:()=>{i(!0),m().finally(()=>{i(!1),t(!1)})}}):null}}var N=(o,r)=>r==="workspace"?`Replace ${o} for the workspace?`:`Replace your ${o}?`;function V(){let[o,r]=u();return{ask:(t,n)=>r({title:t,run:n}),dialog:o?e(p,{open:!0,title:o.title,body:"Tasks use the new one from now on.",confirmLabel:"Replace",onClose:()=>r(void 0),onConfirm:()=>{r(void 0),o.run()}}):null}}function z({title:o,badges:r,sub:t,actions:n,menu:i,alignMenu:l,remove:a}){let s=k(a);return e("tr",{children:[e("td",{children:[e("span",{class:"row-title",children:[e("b",{children:o}),r]}),t?e("span",{class:"sub mono",children:t}):null]}),e("td",{class:"acts",children:[n,i||s.item||l?e(y,{button:"icon",label:"Actions",summary:e(d,{d:g}),children:[i,s.item,i||s.item?null:e("p",{class:"menu-none",children:"No options"})]}):null,s.dialog]})]})}function G({title:o,count:r,children:t,add:n}){return e(h,{title:o,count:r,children:[e("div",{class:"table-scroll",children:e("table",{class:"rows settings",children:e("tbody",{children:t})})}),n]})}export{q as a,E as b,k as c,N as d,V as e,z as f,G as g};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{a as me}from"./combo-702c94817bf6ac17.js";import{a as z,b as te,d as ne,f as H,h as se,m as le}from"./model-options-8d2170eebe0d061d.js";import{a as ae,d as re,e as ie,f as de,g as ce}from"./list-2773686bf8df64c7.js";import"./confirm-a78147b6ecef3847.js";import{a as u}from"./field-bb8191aa02d07282.js";import{b as oe}from"./action-a76e495fb39a73d3.js";import{h as V}from"./format-a27067f0186e78ac.js";import{$3k as ee}from"./shared-init-c3bd249cf1eca6d1.js";import{$0j as Q,$0x as U}from"./shared-init-c3bd249cf1eca6d1.js";import{$2b as X,$2d as J,$2o as j}from"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$1c as K}from"./shared-init-b281027d465e004f.js";import{$0L as _,$0a as e}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3c as O,$3h as m,$3l as L}from"./shared-init-6e12333f12903a62-2.js";var be=[["endpoint","Endpoint"],["alias","Engine alias"]],ve=[["claude","Claude"],["codex","Codex"]],he={claude:"sonnet",codex:"sol"},W=le,ue=W.at(-1),pe=k=>k.split("/").pop().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,""),ye=(k,p)=>k.find(h=>!(h in p));function ke({builtin:k,credentials:p,admin:h,taken:x,efforts:a,onAdd:I}){let[f,w]=m("endpoint"),l=e(u,{label:"Kind",group:!0,children:e(U,{label:"Kind",options:be,value:f,onChange:w})}),[y,A]=m("claude"),[C,R]=m(""),[T,b]=m(!1),[o,s]=m(0),n=ie(),d=k[y]??{},P=d[he[y]]??Object.values(d)[0],M=async(g,r)=>{b(!0);let c=f==="alias"?await I(()=>K.models.alias(r.name,[y,r.model,C].filter(Boolean).join(":"))):await I(async()=>{let v=r.envKey||"OPENAI_API_KEY";return r.key&&await K.credentials.add({env:{[v]:r.key},workspace:r.scope==="workspace"}),K.models.add({name:r.name,baseUrl:r.baseUrl,model:r.model,envKey:v,...r.contextWindow?{contextWindow:Number(r.contextWindow)}:{}})});b(!1),c&&(g.reset(),s(o+1))};return e(X,{title:"Add a model",note:"A short name for an engine model, or an OpenAI-compatible endpoint",children:[e("form",{class:"add-form",method:"post",onSubmit:g=>{g.preventDefault();let r=g.currentTarget,c=Object.fromEntries([...new FormData(r)].map(([F,$])=>[F,String($).trim()]));if(f==="endpoint"&&!c.name&&(c.name=pe(c.model??"")),!c.name||!c.model||f==="endpoint"&&!c.baseUrl)return;let v=c.envKey||"OPENAI_API_KEY",B=c.scope||"personal";if(f==="endpoint"&&c.key&&p?.some(F=>F.name===v&&F.scope===B))return n.ask(re(v,B),()=>void M(r,c));M(r,c)},children:f==="alias"?e("div",{class:"add-grid",children:[l,e(u,{label:"Engine",group:!0,children:e(U,{label:"Engine",options:ve,value:y,onChange:A})}),e(u,{label:"Model id",children:e("input",{name:"model",placeholder:P??"model id",autocomplete:"off"})}),e(u,{label:"Short name",hint:"used as --model",children:e("input",{name:"name",placeholder:ye(["fast","deep","quick"],x),autocomplete:"off",pattern:"[a-z0-9][a-z0-9\\-]*"})}),e(u,{label:"Effort",hint:"optional",group:!0,children:e(U,{label:"Effort",options:[["",se(a[y])],...te],value:C,onChange:R})}),e(_,{type:"submit",loading:T,children:"Add"})]}):e(we,{kind:l,credentials:p,admin:h,busy:T},o)}),n.dialog]})}function we({kind:k,credentials:p,admin:h,busy:x}){let[a,I]=m(W[0]??ue),[f,w]=m(a.baseUrl),[l,y]=m(a.envKey),[A,C]=m(""),[R,T]=m(h?"workspace":"personal"),[b,o]=m(null),s=L(0),n=L(""),[d,P]=m(""),[M,g]=m(null),r=b?.contextWindows?.[d],c=(t,i)=>!!t&&!!p?.some(E=>E.name===t&&E.scope===i),v=(t,i=R)=>c(t,i)?i:!h&&c(t,"workspace")?"workspace":void 0,B=v(l,h?"workspace":"personal"),F=t=>t==="workspace"?"the workspace's":"your",[$,Y]=m(!1),q=L(),D=(t,i,E)=>{let ge=++s.current;if(!t.trim())return o(null);Y(!0),K.models.probe({baseUrl:t.trim(),...i.trim()?{envKey:i.trim()}:{},...E.trim()?{key:E.trim()}:{}}).catch(S=>({reachable:!1,modelListed:null,models:null,detail:V(S)})).then(S=>{if(ge!==s.current)return;Y(!1),o(S.models?{...S,models:[...S.models].sort()}:S);let N=S.reachable?"":/HTTP 40[13]/.test(S.detail)?"The API key was rejected.":`${t.trim()} isn't reachable.`;N&&N!==n.current&&ee("Models not listed",N),n.current=N})},Z=(t,i,E)=>{clearTimeout(q.current),q.current=setTimeout(()=>D(t,i,E),250)},fe=b?.models?`${b.models.length} listed`:void 0,G=a.needsKey&&p?e("div",{class:"add-grid",children:[e(u,{label:"API key",hint:e(O,{children:[v(l)?`uses ${F(v(l))} saved ${l}; enter one to replace it`:`a new key, stored as ${l}`,a.keyUrl?e(O,{children:[", ",e("a",{class:"link",href:a.keyUrl,target:"_blank",rel:"noopener noreferrer",children:"get a key"})]}):null]}),children:e("input",{name:"key",type:"password",autocomplete:"off",placeholder:v(l)?"Leave empty to use the saved key":`${a.name} API key`,value:A,onInput:t=>{C(t.currentTarget.value),Z(f,l,t.currentTarget.value)}})}),h?e(u,{label:"Scope",group:!0,children:e(U,{label:"Scope",name:"scope",options:ne,value:R,onChange:T})}):null]}):null;return e(O,{children:[e("div",{class:"add-grid",children:[k,e(u,{label:"Provider",group:!0,children:e(U,{label:"Provider",name:"provider",options:W.map(t=>[t.id,t.name]),value:a.id,onChange:t=>{let i=W.find(E=>E.id===t)??ue;I(i),w(i.baseUrl),y(i.envKey),P(""),g(null),C(""),o(null),(v(i.envKey)||!i.needsKey)&&D(i.baseUrl,i.envKey,"")}})}),e(u,{label:"Model id",group:!0,hint:$?e(J,{label:"Fetching models",inline:!0,dots:!0}):fe,children:e(me,{label:"Model id",onOpen:()=>{!b&&!$&&D(f,l,A)},name:"model",options:b?.models??[],placeholder:b?.models?.[0]??"qwen3-coder",value:d,onChange:t=>{P(t),g(null)}})}),e(u,{label:"Short name",hint:"used as --model; defaults to the model id",children:e("input",{name:"name",placeholder:pe(d)||"kimi",autocomplete:"off",pattern:"[a-z0-9][a-z0-9\\-]*"})})]}),G&&B?e("details",{class:"add-more",children:[e("summary",{children:["API key \xB7 uses ",F(B)," saved ",l]}),G]},l):G,e("div",{class:"add-foot",children:[e("details",{class:"add-more",open:a.id==="other"||void 0,children:[e("summary",{children:"Advanced"}),e("div",{class:"add-grid",children:[e(u,{label:"Base URL",children:e("input",{name:"baseUrl",type:"url",placeholder:"http://localhost:11434/v1",autocomplete:"off",value:f,onInput:t=>{w(t.currentTarget.value),Z(t.currentTarget.value,l,A)}})}),e(u,{label:"Key variable",children:e("input",{name:"envKey",class:"mono",placeholder:"OPENAI_API_KEY",autocomplete:"off",pattern:"[A-Za-z_][A-Za-z0-9_]*",value:l,onInput:t=>y(t.currentTarget.value)})}),e(u,{label:"Context window",hint:"tokens; empty uses Codex's default, 272000",children:e("input",{name:"contextWindow",type:"number",min:"1",step:"1",placeholder:"272000",autocomplete:"off",value:M??(r?String(r):""),onInput:t=>g(t.currentTarget.value)})})]})]}),e(_,{type:"submit",loading:x,children:"Add model"})]})]})}function Ne({first:k,config:p,credentials:h,admin:x}){let[a,I]=m(k),f=oe(),w=ae(p.config),l=(o,s)=>f.run("send",async()=>{let n=await o();I(d=>({...d,models:n.models??{}}))},{toast:s}),y=o=>w.value.engines?.[o]?.model??p.effective.engines?.[o]?.model,A=o=>a.models[o]?.disabled===!0,C=w.value.chain??p.effective.chain??z,R=Object.entries(a.models).filter(([,o])=>o.provider||o.baseUrl),T=[...Object.entries(a.builtin).flatMap(([o,s])=>Object.entries(s).filter(([n])=>!R.some(([d])=>d===n)).map(([n,d])=>({name:n,engine:o,target:d,entry:a.models[n],removable:!1}))),...R.map(([o,s])=>({name:o,engine:s.provider??"custom",target:s.baseUrl?`${s.model} \xB7 ${s.baseUrl}`:`${s.model}${s.effort?` \xB7 ${s.effort}`:""}`,entry:s,removable:!0}))],b=[...new Set([...C,...z])].map(o=>[o,T.filter(s=>s.engine===o)]).filter(([,o])=>o.length);return e(O,{children:[e(ke,{builtin:a.builtin,credentials:h,admin:x,taken:{...a.models,...Object.assign({},...Object.values(a.builtin))},efforts:Object.fromEntries(z.map(o=>[o,w.value.engines?.[o]?.effort??p.effective.engines?.[o]?.effort])),onAdd:o=>l(o,"Not saved")}),b.map(([o,s])=>e(ce,{title:H[o]??o,count:s.length,children:s.map(({name:n,target:d,entry:P,removable:M})=>{let g=[n,d].includes(y(o)??"");return e(de,{title:n,badges:e(O,{children:[g&&C[0]===o?e(j,{tone:"acc",children:"default for new tasks"}):null,g&&C[0]!==o?e(j,{children:["default for ",H[o]??o]}):null,P?.disabled?e(j,{children:"off"}):null]}),sub:d===n?void 0:`\u2192 ${d}`,actions:g||P?.disabled?null:e(_,{variant:"ghost",size:"sm",onClick:()=>void w.patch({engines:{[o]:{model:n}}}),children:"Make default"}),menu:e(Q,{title:A(n)?"Enable":"Disable",onClick:()=>void l(()=>K.models[A(n)?"enable":"disable"](n))}),remove:M?{title:`Remove ${n}?`,body:"Tasks that ask for it stop running.",onRemove:()=>l(()=>K.models.remove(n))}:void 0},n)})},o))]})}export{Ne as ModelsList};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$
|
|
1
|
+
import{$0a as o}from"./shared-init-b281027d465e004f.js";function t({tone:n,slim:e,children:i}){return o("div",{class:["notice",e&&"slim",n].filter(Boolean).join(" "),role:"status",children:i})}export{t as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{a}from"./outcome-dialog-fde11a52c282301d.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";export{a as OutcomeDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$
|
|
1
|
+
import{$1a as m}from"./shared-init-c3bd249cf1eca6d1.js";import{$0E as p,$0L as u,$0a as o,$0u as c}from"./shared-init-b281027d465e004f.js";import{$3c as l,$3e as a}from"./shared-init-6e12333f12903a62-2.js";function B({ok:t,title:e,text:n,issues:r,cancel:h="Close",focus:d,children:f}){let i=a(f),s=!t&&r?o(u,{variant:"outline",href:`${r}?${new URLSearchParams({title:e,body:n})}`,external:!0,children:"Report issue"}):null;return o(m,{class:"outcome-dialog",tone:t?"success":"error",title:e,icon:t?c:p,cancel:h,focus:d,actions:s||i.length?o(l,{children:[s,i]}):void 0,onClose:()=>history.replaceState(history.state,"",location.pathname),children:o("p",{role:"status",children:n})})}export{B as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{a,b,c,d,e,f}from"./platform-actions-70600c9943320152.js";import"./copy-bdc60bdafe336316.js";import"./segmented-0b6dc6b93c35e0f5.js";import"./outcome-dialog-fde11a52c282301d.js";import"./confirm-a78147b6ecef3847.js";import"./field-bb8191aa02d07282.js";import"./action-a76e495fb39a73d3.js";import"./format-a27067f0186e78ac.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-c3bd249cf1eca6d1.js";import"./shared-init-b281027d465e004f.js";import"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";export{d as CreateDialog,e as DriftQueue,c as InstallButton,f as PlatformActions,b as createForm,a as postTo};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as G,b as P}from"./copy-bdc60bdafe336316.js";import{a as me}from"./segmented-0b6dc6b93c35e0f5.js";import{a as de}from"./outcome-dialog-fde11a52c282301d.js";import{a as pe}from"./confirm-a78147b6ecef3847.js";import{a as M}from"./field-bb8191aa02d07282.js";import{b as B}from"./action-a76e495fb39a73d3.js";import{h as T}from"./format-a27067f0186e78ac.js";import{$3j as ue,$3k as E}from"./shared-init-c3bd249cf1eca6d1.js";import{$0a as _,$0j as R,$0x as ce}from"./shared-init-c3bd249cf1eca6d1.js";import{$2j as re,$2o as le}from"./shared-init-c3bd249cf1eca6d1.js";import{$1a as O}from"./shared-init-c3bd249cf1eca6d1.js";import{$1c as b}from"./shared-init-b281027d465e004f.js";import{$0B as ie,$0L as y,$0a as e,$0b as z,$0j as q,$0p as ee,$0q as te,$0t as ne,$0w as oe,$0y as se,$0z as ae}from"./shared-init-b281027d465e004f.js";import{$3c as w,$3h as $,$3j as j,$3l as N}from"./shared-init-6e12333f12903a62-2.js";var Q={private:{text:"Private",note:()=>"Only the account that owns it can install it.",owner:"Owns it and is the only place it installs. Leave empty for your personal account."},public:{text:"Public",note:o=>`Any account can install it. ${o} asks where on each install.`,owner:"Manages its settings; it still installs anywhere. Leave empty for your personal account."}},he=(o,t,s={})=>t().then(({tx:i})=>b.apps.finish(o,{...s,tx:i})).then(({url:i})=>location.assign(i)),V=o=>o.split(/\*\*(.+?)\*\*/).map((t,s)=>s%2?e("span",{class:"ui-name",children:t},s):t),Be=o=>o?.focus();function fe({url:o,fields:t}){let s=Object.assign(document.createElement("form"),{method:"post",action:o});for(let[i,l]of Object.entries(t))s.append(Object.assign(document.createElement("input"),{type:"hidden",name:i,value:l}));document.body.append(s),s.submit()}var Te=(o,t,s)=>o&&!t.public?Promise.resolve(o):s().then(({post:i,create:l})=>i?void fe(i):l??o),ge=(o,t="",s=!1)=>({...Object.fromEntries(new URL(o,location.href).searchParams),...t?{owner:t}:{},...s?{public:"1"}:{}});function be(){return e("p",{class:"flash err",children:["This server is only reachable from this machine, so"," ",e("a",{href:"#tunnel",onClick:o=>{o.currentTarget.closest("dialog").close(),document.querySelector("#tunnel details")?.setAttribute("open","")},children:"set a public address"})," ","first."]})}function ye(){let o=B({toast:"Not installed",leaves:!0}),t=s=>void o.run("install",async()=>{location.href=(await b.apps.install(s,location.pathname)).url});return{busy:!!o.pending,install:t}}function Ye({app:o,label:t}){let{busy:s,install:i}=ye();return e(y,{loading:s,onClick:()=>i(o),children:t})}function Re({app:o,name:t,onClose:s}){let i=B({toast:"Not removed",refresh:!0,leaves:!0}),l=()=>void i.run("remove",async()=>{await b.apps.remove(o.id),history.replaceState(history.state,"",location.pathname)});return e(pe,{open:!0,title:`Remove ${o.name}?`,body:e(w,{children:["Coder forgets this app and its installs here, and the agent stops answering through it on"," ",t,".",e("br",{}),"Delete the app itself on ",t,o.settingsUrl?e(w,{children:[" ","in"," ",e("a",{class:"link",href:o.settingsUrl,target:"_blank",rel:"noreferrer",children:"its settings"})]}):null,"."]}),confirmLabel:"Remove",busy:!!i.pending,onConfirm:l,onClose:s})}function Ee({integration:o,step:t,start:s,unreachable:i,onClose:l}){let f=B({leaves:!0}),r=!!f.pending,g=N(null),[c,u]=$(()=>Object.fromEntries(t.fields.map(n=>[n.name,n.options?.[0]?.value??""]))),h=({when:n})=>!n||c[n.field]===n.equals,v=t.steps.filter(h),A=t.fields.filter(h),p=(n,d)=>{let S=g.current.closest("dialog");if(!S.style.marginTop){let{top:k}=S.getBoundingClientRect();Object.assign(S.style,{marginTop:`${k}px`,maxHeight:`calc(100dvh - ${k+24}px)`})}u({...c,[n]:d})},C=n=>{n.preventDefault();let d=n.currentTarget;f.run("create",()=>he(o,s,{...t.hidden,...Object.fromEntries(new FormData(d))}))};return e(O,{class:"create-dialog",title:t.submit,dismiss:!0,busy:r,onSubmit:C,onClose:l,actions:e(y,{type:"submit",rightIcon:ie,loading:r,children:t.submit}),children:[i?e(be,{}):null,e("p",{ref:g,class:"muted",children:t.intro}),A.filter(n=>n.options).map(n=>e(M,{label:n.label,hint:n.hint,group:!0,children:e(ce,{label:n.label,name:n.name,options:n.options.map(({value:d,label:S})=>[d,S]),value:c[n.name],onChange:d=>p(n.name,d),disabled:r})},n.name)),v.length?e(w,{children:[e("div",{class:"create-link",children:[e(y,{variant:"secondary",class:"create-open",href:t.link,external:!0,children:["Open ",new URL(t.link).host]}),e(G,{value:t.link,label:"Copy link"})]}),e("ol",{class:"create-steps",children:v.map(({text:n,link:d,copy:S=[]})=>e("li",{children:[e("p",{children:V(n)}),d&&d!==t.link?e("div",{class:"create-link",children:[e("a",{href:d,target:"_blank",rel:"noreferrer",children:d.replace(/^https:\/\//,"")}),e(G,{value:d,label:"Copy link"})]}):null,S.map(k=>e(P,{value:k,label:"Copy"},k))]},n))})]}):null,t.notes?.length?e("details",{class:"create-more",children:[e("summary",{children:"Advanced"}),e("ul",{children:t.notes.map(n=>e("li",{children:V(n)},n))})]}):null,A.filter(n=>!n.options).map(n=>e(M,{label:n.label,hint:n.hint??(n.required?void 0:"optional"),children:e("input",{ref:n.when?Be:void 0,name:n.name,placeholder:n.placeholder,required:n.required,autocomplete:"off",spellcheck:!1})},n.name))]})}function Me({integration:o,name:t,publicApps:s,organizationApps:i,unreachable:l,onSubmit:f,onClose:r}){let[g,c]=$("private"),u=B({leaves:!0}),h=!!u.pending,v=N(null);j(()=>{i&&b.installations.list(void 0,{limit:200,active:!0}).then(p=>{let[C]=p.map(n=>n.value).filter(n=>n.integration===o&&n.account.type&&n.account.type!=="User").map(n=>n.account.login).sort();C&&v.current&&!v.current.value&&(v.current.value=C)}).catch(p=>console.error("coder dashboard: installations",p))},[]);let A=p=>{p.preventDefault();let C=new FormData(p.currentTarget);u.run("submit",()=>f(String(C.get("owner")??"").trim(),g==="public"))};return e(O,{class:"create-dialog",title:`Create ${t} app`,dismiss:!0,busy:h,onSubmit:A,onClose:r,actions:e(y,{type:"submit",rightIcon:ee,loading:h,children:["Continue to ",t]}),children:[l?e(be,{}):null,s?e(M,{label:"Who can install it",group:!0,children:[e(me,{label:"Who can install it",options:Object.entries(Q).map(([p,{text:C}])=>[p,C]),value:g,onChange:p=>c(p),disabled:h}),e("small",{class:"where-note",children:Q[g].note(t)})]}):null,i?e(M,{label:"Owner",hint:Q[g].owner,children:e("input",{ref:v,name:"owner",placeholder:"your-org",autocomplete:"off",spellcheck:!1})}):null]})}function Ce({app:o,name:t,check:s,onClose:i}){let l=B({toast:`${t} app not updated`,leaves:!0}),f=!!l.pending,r=!s.changed,g=c=>{let u=c.currentTarget.closest("dialog");l.run("confirm",async()=>{await b.apps.update(o.id),u.close()})};return e(O,{class:"create-dialog",title:`Update ${o.name} on ${t}`,busy:f,cancel:r?"Close":"Cancel",onClose:i,actions:r&&!s.confirm?null:e(w,{children:[s.confirm&&!r?e(y,{variant:"secondary",loading:f,onClick:g,children:"I updated it"}):null,e(y,{href:s.url,external:!0,children:s.label})]}),children:s.confirm?e(w,{children:[e("p",{class:"muted",children:r?`Up to date on ${t}. The app uses these values.`:`${t} cannot show Coder the app's settings. Enter the values marked changed in the app on ${t}, then confirm.`}),e("ul",{class:"create-steps update-values",children:s.lines.map(({text:c,copy:u,changed:h})=>e("li",{children:[e("p",{children:[c," ",h?e(le,{tone:"warn",children:"changed"}):null]}),u?e(P,{value:u,label:"Copy"}):null]},`${c} ${u}`))})]}):r?e("p",{children:["Up to date on ",t,"."]}):e(w,{children:[e("p",{class:"muted",children:["The app on ",t," differs from what the agent needs now. Make these changes in its settings and save them."]}),e("ol",{class:"create-steps",children:s.lines.map(({text:c,copy:u})=>e("li",{children:[e("p",{children:V(c)}),u?e(P,{value:u,label:"Copy"}):null]},c))})]})})}function Ze({apps:o}){let t=_(),[s,i]=$(o),[l,f]=$(),r=s[0],g=c=>{i(c),f(void 0);let[u]=c;if(!u){history.replaceState(history.state,"",location.pathname),t.refresh();return}b.apps.drift(u.id).then(f).catch(h=>{E(`Not read from ${u.platform}`,T(h)),g(c.slice(1))})};return j(()=>g(o),[]),r&&l?e(Ce,{app:r,name:r.platform,check:l,onClose:()=>g(s.slice(1))}):null}function Oe({name:o,issues:t,title:s=`Setting up ${o} failed`,text:i="Coder ran into an unexpected error, so nothing was set up. Try again, and if it fails again, report it on GitHub.",onRetry:l}){return e(de,{ok:!1,title:s,text:i,issues:t,focus:"actions",children:e(y,{autofocus:!0,onClick:r=>{r.currentTarget.closest("dialog").close(),l()},children:"Try again"})})}function et({integration:o,name:t,apps:s,installed:i,reinstall:l,createUrl:f,create:r,unreachable:g,publicApps:c=!1,organizationApps:u=!1,shared:h=!1,appUpdate:v,split:A=!1,failed:p}){let C=_(),{busy:n,install:d}=ye(),[S,k]=$(!1),[D,X]=$(),[ve,x]=$(!1),[L,J]=$(),[U,K]=$(),ke=c||u,F=s.find(a=>a.id===l)??s[0],we=a=>(k(!0),b.apps.create(o,a).then(({post:m})=>m&&fe(m)).catch(m=>{throw k(!1),m})),$e=a=>(k(!0),he(o,()=>b.apps.create(o,a),r.hidden).catch(m=>{throw k(!1),m})),Y=a=>r?r.fields.length?Te(r,a,()=>b.apps.create(o,a)).then(m=>{m&&(X({state:a,step:m}),x(!1))}):$e(a):we(a),I=()=>ke?x(!0):void Y(ge(f)).catch(a=>E("App not created",T(a))),Z=D?e(Ee,{integration:o,step:D.step,start:()=>b.apps.create(o,D.state),unreachable:g,onClose:()=>X(void 0)}):null,H=ve?e(Me,{integration:o,name:t,publicApps:c,organizationApps:u,unreachable:g,onSubmit:(a,m)=>Y(ge(f,a,m)),onClose:()=>x(!1)}):null,Se=a=>v==="push"?void b.apps.update(a.id).then(()=>{ue(`${t} app updated`,`${a.name} now matches the agent.`,"success"),C.refresh()}).catch(m=>E(`${t} app not updated`,T(m))):void b.apps.drift(a.id).then(m=>K({app:a,check:m})).catch(m=>E(`Not read from ${t}`,T(m))),Ae=L&&s.some(a=>a.id===L.id)?e(Re,{app:L,name:t,onClose:()=>J(void 0)}):null,W=p?e(Oe,{name:p.name,issues:p.issues,title:p.title,text:p.text,onRetry:()=>s.some(a=>a.id===p.app)?d(p.app):I()}):null;if(!s.length)return e(w,{children:[e(y,{size:"sm",loading:S,onClick:I,children:r&&!r.fields.length?r.submit:"Create app"}),Z,H,W]});if(h&&!i&&s.length===1){let a=e(y,{size:"sm",loading:n,onClick:()=>d(F.id),children:l?"Reinstall":"Install"});return e(w,{children:[A?e("span",{class:"split",children:[a,e("span",{class:"menu",children:e(y,{size:"sm",class:"split-more",disabled:!0,"aria-label":"No more actions",children:e(z,{d:q})})})]}):a,H,W]})}return e(w,{children:[e("span",{class:"split",children:[i?null:e(y,{size:"sm",loading:n,onClick:()=>d(F.id),children:l?"Reinstall":"Install"}),e(re,{button:i?"icon":{size:"sm",class:"split-more"},label:`More for ${o}`,wide:!0,summary:e(z,{d:i?se:q}),children:[s.map(a=>{if(!i&&a===F)return null;let m=s.length>1?` ${a.name}`:"";return e(R,{icon:ae,title:i?`Install${m} on another account`:`Install${m}`,sub:h?`Any ${t} account can add it.`:`Any ${t} account if the app is public, else only the account that owns it.`,onClick:()=>d(a.id)},a.id)}),h?null:e(R,{icon:te,onClick:I,title:`Create another ${t} app`,sub:"A separate app with its own name."}),h||!v?null:s.map(a=>e(R,{icon:oe,title:s.length>1?`Update ${a.name} on ${t}`:`Update on ${t}`,sub:a.changed?"Changed since last update":void 0,onClick:()=>Se(a)},`update ${a.id}`)),h?null:s.map(a=>e(R,{icon:ne,title:`Remove ${a.name}`,danger:!0,onClick:()=>J(a)},`remove ${a.id}`))]})]}),Z,H,Ae,W,U?e(Ce,{app:U.app,name:t,check:U.check,onClose:()=>{K(void 0),C.refresh()}}):null]})}export{fe as a,Te as b,Ye as c,Ee as d,Ze as e,et as f};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{b as C}from"./copy-bdc60bdafe336316.js";import{e as tn}from"./composer-data-f46a9bc7a14b4f9a.js";import{d as F}from"./model-options-8d2170eebe0d061d.js";import{a as en}from"./types-3eca2c7f47c46054.js";import{c as on}from"./list-2773686bf8df64c7.js";import"./confirm-a78147b6ecef3847.js";import{a as $}from"./field-bb8191aa02d07282.js";import{a as nn,b as O}from"./action-a76e495fb39a73d3.js";import{d as W,e as _}from"./format-a27067f0186e78ac.js";import{$3n as Z}from"./shared-init-c3bd249cf1eca6d1.js";import{$0j as D,$0l as Y,$0x as L}from"./shared-init-c3bd249cf1eca6d1.js";import{$2a as X,$2d as I,$2j as E,$2o as A}from"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$1c as d}from"./shared-init-b281027d465e004f.js";import{$0F as Q,$0I as S,$0L as T,$0a as n,$0b as v,$0j as z,$0n as q,$0q as G,$0r as U,$0y as V,$0z as J}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3c as w,$3h as u,$3j as P,$3l as H}from"./shared-init-6e12333f12903a62-2.js";var K={local:q,"local-docker":Q,"vercel-sandbox":G,"github-actions":U,http:S},dn=new Set(["default","local"]);function cn({runner:t,tested:o}){return o==="testing"?n("span",{class:"sub runner-status",children:[n("i",{class:"dot"}),"Testing\u2026"]}):o?n("span",{class:`sub runner-status ${o.ok?"ok":"bad"}`,children:[n("i",{class:"dot"}),o.ok?`Reached in ${W(o.ms)}`:o.detail]}):n("span",{class:`sub runner-status${t.online?" ok":""}`,children:[n("i",{class:"dot"}),t.online?"Online":t.lastSeen?`Last seen ${_(t.lastSeen)}`:"Not seen yet"]})}function mn({runner:t,manage:o,onChange:r}){let[l,b]=u(!1),[p,s]=u(!1),[c,a]=u(),m=H(null);P(()=>m.current?.select(),[p]);let R=dn.has(t.id),k=on(o&&!R?{title:`Remove ${t.name}?`,body:"Its tasks go to another runner.",onRemove:()=>r(()=>d.runners.remove(t.id))}:void 0),h=()=>{a("testing"),d.runners.test(t.id).then(a,f=>{a(void 0),nn(f)})};return n("tr",{children:[n("td",{children:[n("span",{class:"row-title",children:[n("b",{class:"runner-name",children:[n(v,{d:K[t.kind]??S}),p?n("input",{class:"runner-rename","aria-label":"Runner name",defaultValue:t.name,ref:m,onKeyDown:f=>{let y=f.currentTarget.value.trim();f.key==="Escape"&&s(!1),f.key==="Enter"&&y&&r(()=>d.runners.update(t.id,{name:y})).then(()=>s(!1))},onBlur:()=>s(!1)}):t.name]}),n(A,{children:t.scope}),t.default?n(A,{tone:"acc",children:"default"}):null]}),n(cn,{runner:t,tested:c})]}),n("td",{class:"acts",children:[t.default||!o?null:n(T,{variant:"secondary",size:"sm",loading:l,onClick:()=>{b(!0),r(()=>d.runners.update(t.id,{default:!0})).finally(()=>b(!1))},children:"Make default"}),n(E,{button:"icon",label:"Actions",summary:n(v,{d:V}),children:[n(D,{title:"Test",onClick:h}),o&&!R?n(D,{title:"Rename",onClick:()=>s(!0)}):null,k.item]}),k.dialog]})]})}function pn({pairing:t,onCancel:o}){return n("div",{class:"runner-pair",children:[n("details",{class:"runner-step",children:[n("summary",{children:"Install the Coder CLI on that computer, if it is not there yet"}),n(C,{value:"npm install -g @wular/coder"})]}),n("div",{class:"runner-step",children:[n("p",{children:"Run this there. The token works once and expires in 15 minutes."}),n(C,{value:t.command})]}),n("details",{class:"runner-step",children:[n("summary",{children:"Behind a firewall? This server has to reach that computer over HTTPS"}),n("p",{children:["Open a tunnel on that computer first, then add its address to the command above as"," ",n("code",{children:"--runner-url"}),"."]}),n(C,{value:"cloudflared tunnel --url http://localhost:4100"})]}),n("div",{class:"runner-wait",children:[n(I,{label:"Waiting for that computer to connect",inline:!0,dots:!0}),n(T,{variant:"secondary",danger:!0,size:"sm",onClick:o,children:"Cancel"})]})]})}function fn({catalog:t,admin:o,personal:r,known:l,onAdded:b}){let[p,s]=u(),[c,a]=u(r?"personal":"workspace"),m=O(),R=!!m.pending,[k,h]=u(),[f,y]=u(l),N=!!k&&l.some(e=>!f.includes(e)),x=N?void 0:p,g=N?void 0:k,i=t.find(e=>e.kind===x);P(()=>{if(!g)return;let e=setTimeout(j,Math.min(g.expiresAt-Date.now(),15*6e4));return()=>clearTimeout(e)},[g]);let j=()=>{h(void 0),s(void 0)},an=e=>{h(void 0),s(e.kind),e.connect==="pair"&&(y(l),m.run("pair",async()=>h(await d.runners.pair({scope:c}))).then(B=>B||s(void 0)))};return n("form",{class:"runner-add",method:"post",onSubmit:async e=>{if(e.preventDefault(),!i||R)return;let B=Object.fromEntries([...new FormData(e.currentTarget)].map(([M,ln])=>[M,String(ln).trim()])),{name:sn,...rn}=B;await m.run("add",async()=>{await d.runners.add({kind:i.kind,name:sn||i.name,scope:c,config:Object.fromEntries(Object.entries(rn).filter(([,M])=>M))}),b(await d.runners.list()),s(void 0)})},children:[n("div",{class:"runner-pick",children:[n(E,{button:{variant:"secondary"},label:"Runner kind",align:"left",wide:!0,summary:n(w,{children:[n(v,{d:i?K[i.kind]:J}),i?i.name:"Add a runner",n(v,{d:z})]}),children:t.filter(e=>e.available).map(e=>n(Y,{on:e.kind===x,onPick:()=>an(e),icon:K[e.kind]??S,sub:e.available?e.description:e.reason,children:e.name},e.kind))}),i?.connect==="fields"?n(w,{children:[i.help?n("p",{class:"muted runner-help",children:i.help}):null,n("div",{class:"add-grid",children:[n($,{label:"Name",hint:"shown in the list",children:n("input",{name:"name",placeholder:i.name,autocomplete:"off"})}),i.fields.map(e=>n($,{label:e.label,hint:e.hint??(e.optional?"optional":void 0),children:n("input",{name:e.key,type:e.secret?"password":"text",placeholder:e.placeholder,required:!e.optional,autocomplete:"off"})},`${i.kind}:${e.key}`))]})]}):null,i?.connect==="fields"?n("div",{class:"runner-foot",children:[r?n(L,{label:"Who can use this runner",options:F,value:o?c:"personal",onChange:a,disabled:!o}):null,n(T,{type:"submit",loading:R,children:"Add runner"})]}):n(w,{children:[i&&r?n(L,{label:"Who can use this runner",options:F,value:o?c:"personal",onChange:a,disabled:!o||!!g}):null,R&&!g?n(I,{label:"Pairing",inline:!0}):null]})]}),g?n(pn,{pairing:g,onCancel:j}):null]})}function Nn({first:t,me:o}){let[r,l]=u(t),b=O(),p=en(o),s=tn(r.items);Z(({items:a})=>l(m=>({...m,items:a})));let c=a=>b.run("change",async()=>{await a(),l(await d.runners.list())});return n(X,{title:"Runners",count:s.length,children:[n("div",{class:"table-scroll",children:n("table",{class:"rows settings",children:n("tbody",{children:s.map(a=>n(mn,{runner:a,manage:a.scope==="personal"||p,onChange:c},a.id))})})}),n(fn,{catalog:r.catalog,admin:p,personal:!!o.user,known:s.map(a=>a.id),onAdded:l})]})}export{Nn as RunnersList};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{e as N}from"./model-options-8d2170eebe0d061d.js";import{f as I}from"./list-2773686bf8df64c7.js";import"./confirm-a78147b6ecef3847.js";import{a as A,b as E}from"./action-a76e495fb39a73d3.js";import"./format-a27067f0186e78ac.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$0x as T}from"./shared-init-c3bd249cf1eca6d1.js";import{$2a as B,$2o as m}from"./shared-init-c3bd249cf1eca6d1.js";import"./wular-pnext-6e12333f12903a62-0.js";import"./shared-init-c3bd249cf1eca6d1.js";import{$1c as r}from"./shared-init-b281027d465e004f.js";import{$0L as l,$0N as R,$0a as t,$0z as C}from"./shared-init-b281027d465e004f.js";import"./shared-init-6e12333f12903a62-2.js";import"./shared-init-6e12333f12903a62-2.js";import{$3c as h,$3h as a}from"./shared-init-6e12333f12903a62-2.js";function G({first:_,local:u,admin:p}){let[s,f]=a(_),[w,v]=a(!1),[g,D]=a(p||u?"":"me"),[P,y]=a(""),c=E(),i=!!c.pending,b=w||!s.length,k=e=>f(n=>n.some(o=>o.id===e.id)?n.map(o=>o.id===e.id?e:o):[...n,e]);return t(B,{title:"Task secrets",count:s.length||void 0,actions:b?null:t(R,{icon:C,label:"Add a task secret",onClick:()=>v(!0)}),children:t("div",{class:"cred-engine",children:[t("p",{class:"muted cred-note",children:"Tasks read these as environment variables, like a test API key or a deploy token."}),s.length?t("table",{class:"rows creds",children:t("tbody",{children:s.map(e=>t(I,{title:e.env??e.name,badges:t(h,{children:[t(m,{children:e.owner?e.mine?"personal":"member":"workspace"}),e.status==="ok"?null:t(m,{tone:"warn",children:"needs a new value"})]}),actions:P===e.id?t("form",{class:"cred-add",method:"post",onSubmit:n=>{n.preventDefault();let o=String(new FormData(n.currentTarget).get("key")??"");o.trim()&&c.run("renew",async()=>{k(await r.connections.update(e.id,{key:o.trim()})),y("")})},children:[t("input",{name:"key",type:"password","aria-label":`New value for ${e.env??e.name}`,placeholder:"New value",autocomplete:"off","aria-busy":i,ref:n=>n?.focus()}),t(l,{type:"submit",loading:i,children:"Save"})]}):t(l,{variant:"ghost",size:"sm",onClick:()=>y(e.id),children:e.status==="ok"?"Replace":"Reconnect"}),remove:{title:`Remove ${e.env??e.name}?`,body:"Tasks stop getting it, and its value is deleted.",onRemove:()=>r.connections.remove(e.id).then(()=>f(n=>n.filter(o=>o.id!==e.id)),A)}},e.id))})}):null,b?t("div",{class:"cred-new",children:t("form",{class:"cred-add",method:"post",onSubmit:e=>{e.preventDefault();let n=e.currentTarget,o=new FormData(n),d=String(o.get("env")??"").trim(),S=String(o.get("key")??"").trim();!d||!S||c.run("add",async()=>{k(await r.connections.add({name:d,provider:"env",key:S,keyIn:{env:d},...g?{owner:"me"}:{}})),n.reset(),v(!1)},{toast:"Not saved"})},children:[t("input",{name:"env",class:"mono cred-var","aria-label":"Secret variable",placeholder:"STRIPE_SECRET_KEY",pattern:"[A-Za-z_][A-Za-z0-9_]*",autocomplete:"off",spellcheck:!1,required:!0}),t("input",{name:"key",type:"password","aria-label":"Secret value",placeholder:"Value",autocomplete:"off","aria-busy":i,required:!0}),p&&!u?t(T,{label:"Who can use this secret",options:N,value:g,onChange:D}):null,t(l,{type:"submit",loading:i,children:"Add"})]})}):null]})})}export{G as TaskSecrets};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$0a as t,$0e as m}from"./shared-init-b281027d465e004f.js";function w({label:s,options:n,value:i,onChange:l,link:d,class:o,disabled:f,children:c}){if(!l)return t("div",{class:o?`seg-btns ${o}`:"seg-btns",role:"group","aria-label":s,children:[n.map(([e,r])=>d?t(m,{...d(e),"aria-current":e===i?"page":void 0,children:r},e):t("a",{children:r},e)),c]});let u=Math.max(0,n.findIndex(([e])=>e===i));return t("div",{class:o?`seg-btns ${o}`:"seg-btns",role:"radiogroup","aria-label":s,onKeyDown:e=>{let r=e.currentTarget.closest("form");if(e.key==="Enter"&&r)return e.preventDefault(),r.requestSubmit();let a={ArrowRight:1,ArrowDown:1,ArrowLeft:-1,ArrowUp:-1}[e.key];if(!a)return;e.preventDefault();let p=(u+a+n.length)%n.length;l(n[p][0]),e.currentTarget.children[p]?.focus()},children:n.map(([e,r],a)=>t("button",{type:"button",role:"radio","aria-checked":e===i,tabIndex:a===u?0:-1,disabled:f,onClick:()=>l(e),children:r},e))})}export{w as a};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{$3a as C,$3b as _,$3c as T,$3j as S,$3l as z}from"./shared-init-6e12333f12903a62-2.js";var A=0;function c(e,t,n,a,s,i){t||(t={});var r,o,h=t;if("ref"in h)for(o in h={},t)o=="ref"?r=t[o]:h[o]=t[o];var l={type:e,props:h,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--A,__i:-1,__u:0,__source:s,__self:i};if(typeof e=="function"&&(r=e.defaultProps))for(o in r)h[o]===void 0&&(h[o]=r[o]);return C.vnode&&C.vnode(l),l}function g({d:e,class:t}){return c("svg",{class:t?`ic ${t}`:"ic",viewBox:"0 0 24 24","aria-hidden":"true",children:c("path",{d:e})})}function H(){return c("svg",{class:"coder-mark",viewBox:"0 0 16 16","aria-hidden":"true",children:c("path",{d:"M5 0h3v3h-3zM9 0h3v3h-3zM13 0h3v3h-3zM0 4h3v3h-3zM0 9h3v3h-3zM5 13h3v3h-3zM9 13h3v3h-3zM13 13h3v3h-3z"})})}function b(e,t={}){let n=O(j(e,t.params??{})),a=V(t.search),s=B(t.hash);return`${n}${a}${s}`}function P(){return window.__PNEXT_TRAILING_SLASH__===!0}function N(){let e=window.__PNEXT_PREFETCH__;return e===void 0?"visible":e}function O(e){let[,t="",n=""]=/^([^?#]*)([\s\S]*)$/.exec(e)??[];return t.startsWith("/")?P()?t==="/"||t.endsWith("/")||/\.[^/]+$/.test(t)?e:`${t}/${n}`:t==="/"||!t.endsWith("/")||/\.[^/]+\/$/.test(t)?e:`${t.replace(/\/+$/,"")}${n}`:e}function j(e,t){let n=e.replace(/\[\[\.\.\.([^\]]+)\]\]/g,(a,s)=>k(t[s],!0)).replace(/\[\.\.\.([^\]]+)\]/g,(a,s)=>k(t[s],!0)).replace(/\[([^\]]+)\]/g,(a,s)=>k(t[s],!1));return D(n)}function D(e){return e.length<=1?e:e.replace(/\/+$/,"")||"/"}function k(e,t){if(Array.isArray(e)){let n=e.map(a=>encodeURIComponent(a));return t?n.join("/"):n[0]??""}return encodeURIComponent(e??"")}function V(e){if(!e)return"";let t=(e instanceof URLSearchParams?e:J(e)).toString();return t?`?${t}`:""}function J(e){let t=new URLSearchParams;for(let[n,a]of Object.entries(e)){let s=Array.isArray(a)?a:[a];for(let i of s)i!=null&&t.append(n,String(i))}return t}function B(e){return e?e.startsWith("#")?e:`#${e}`:""}function R({href:e,params:t,prefetch:n,replace:a,scroll:s,search:i,hash:r,onClick:o,onNavigate:h,onPrefetchStart:l,onPrefetchFinish:$,children:M,...w}){let I=b(e,{params:t??{},search:i,hash:r}),u=n??N(),m=Z(l,$);return _("a",{...w,ref:m,href:I,"data-pnext-link":!0,"data-prefetch":u===!1?"false":u,"data-pnext-replace":a?"true":void 0,"data-pnext-scroll":s===!1?"false":void 0,onClick:v=>{let f=v;if(o?.(f),f.defaultPrevented||!h||!W(f))return;let y=K();h(y),y.defaultPrevented&&f.preventDefault()}},M)}function Z(e,t){let n=z(null);return S(()=>{let a=n.current;if(!a||!e&&!t)return;let s=()=>e?.(),i=()=>t?.();return a.addEventListener("pnext:prefetchstart",s),a.addEventListener("pnext:prefetchfinish",i),()=>{a.removeEventListener("pnext:prefetchstart",s),a.removeEventListener("pnext:prefetchfinish",i)}},[e,t]),n}function K(){return{defaultPrevented:!1,preventDefault(){this.defaultPrevented=!0}}}function W(e){return e.button===0&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey&&!e.currentTarget.target&&!e.currentTarget.download}var G="M12 8V4H8M6 8h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2ZM2 14h2M20 14h2M15 13v2M9 13v2",F="M22 12h-4l-3 9L9 3l-3 9H2",X="M3 3v18h18M18 17V9M13 17V5M8 17v-3",Q="m15 18-6-6 6-6",Y="m6 9 6 6 6-6",ee="m9 18 6-6-6-6",te="M8 12a4 4 0 1 0 8 0a4 4 0 1 0 -8 0M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M6.3 17.7l-1.4 1.4M19.1 4.9l-1.4 1.4",ne="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",se="M4 4h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1ZM8 20h8M12 16v4",ae="M2 15.5a5.5 5.5 0 1 0 11 0a5.5 5.5 0 1 0 -11 0M21 2l-9.6 9.6M15.5 7.5l3 3L22 7l-3-3",re="M7 17 17 7M8 7h9v9",ie="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9",oe="m12 3 1.9 5.1L19 10l-5.1 1.9L12 17l-1.9-5.1L5 10l5.1-1.9ZM19 3v4M17 5h4",de="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.7-.9l-.8-1.2A2 2 0 0 0 7.9 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2ZM10 13a2 2 0 1 0 4 0a2 2 0 1 0 -4 0M14 13h3M7 13h3",he="M4 6h16M4 12h16M4 18h16",ce="M18 6 6 18M6 6l12 12",le="M20 6 9 17l-5-5",pe="M3 6h18M8 6V4h8v2M19 6l-1 14H6L5 6M10 11v6M14 11v6",ue="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12",me="M12 16v-4M12 8h.01M3 12a9 9 0 1 0 18 0a9 9 0 1 0-18 0",ve="M4 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0M18 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",fe="M12 5v14M5 12h14",ge="M21 12a8 8 0 0 1-11.6 7.1L4 20l1-4.6A8 8 0 1 1 21 12Z",$e="M4 12h12M12 6l6 6-6 6",Me="M16 4h4v4M20 4l-7 7M4 20l6-6M16 20h4v-4M20 20l-5-5M4 4l5 5",we="M4 11a7 7 0 1 0 14 0a7 7 0 1 0 -14 0M20 20l-3.5-3.5",Ie="m21.7 18-8-14a2 2 0 0 0-3.4 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.7-3M12 9v4M12 17h.01",ke="m4 17 6-6-6-6M12 19h8",ye="M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.7-.9l-.8-1.2A2 2 0 0 0 7.9 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",Ce="M12 7v5l3 2M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",be="M9 2v6M15 2v6M6 8h12v4a6 6 0 0 1-12 0ZM12 18v4",Re="M9 9h11v11H9ZM5 15H4V4h11v1",Ue="M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6",U=({variant:e,danger:t,size:n,wide:a,class:s})=>["btn",e!=="primary"&&e,t&&"danger",n,a&&"wide",s].filter(Boolean).join(" ");function q({leftIcon:e,rightIcon:t,loading:n,children:a}){let s=c("i",{class:"btn-spin"});return c(T,{children:[e?n?s:c(g,{d:e}):null,a,t?n&&!e?s:c(g,{d:t}):null]})}function qe({variant:e,danger:t,size:n,wide:a,leftIcon:s,rightIcon:i,loading:r,disabled:o,href:h,external:l,as:$,type:M="button",class:w,children:I,...u}){let m=U({variant:e,danger:t,size:n,wide:a,class:w}),v=c(q,{leftIcon:s,rightIcon:i??(l?re:void 0),loading:r,children:I});return $==="span"?c("span",{class:m,"aria-hidden":"true",children:v}):h&&!o&&!r?c("a",{...u,class:m,href:h,...l?{target:"_blank",rel:"noopener noreferrer"}:{},children:v}):c("button",{"aria-busy":r||void 0,...u,type:M,class:m,disabled:o||r,children:v})}function Ee({variant:e,danger:t,size:n,wide:a,leftIcon:s,rightIcon:i,class:r,children:o,...h}){return c(R,{...h,class:U({variant:e,danger:t,size:n,wide:a,class:r}),children:c(q,{leftIcon:s,rightIcon:i,children:o})})}function Le({icon:e,label:t,tip:n,type:a="button",class:s,children:i,...r}){return c("button",{...r,type:a,class:s?`icon-btn ${s}`:"icon-btn","aria-label":t,title:n?void 0:t,"data-tip":n,children:e?c(g,{d:e}):i})}import{$3j as xe,$3l as _e}from"./shared-init-6e12333f12903a62-2.js";var p=class extends Error{code;hint;taskId;payload;approval;result;runId;status;needs;constructor(e,t,n={}){super(t),this.name="CoderError",this.code=e,Object.assign(this,n)}},E=class extends p{constructor(e,t,n="",a,s){super("server",t,{status:e,...a?{hint:a}:{}}),this.authenticate=n,this.needs=s}};function Te(e){try{let t=new URL(e).hostname.toLowerCase();return t==="localhost"||t==="[::1]"||/^127(?:\.\d{1,3}){3}$/.test(t)}catch{return!1}}function Se(e){let t;try{t=new URL(e)}catch{throw new p("invalid-option","Give the server as a URL, e.g. https://agents.example.com.")}if(t.protocol!=="https:"&&!(t.protocol==="http:"&&Te(t.origin)))throw new p("invalid-option","Coder servers require HTTPS unless they are loopback.",{hint:"Use https://, or http://localhost for a local server."});if(t.username||t.password||t.search||t.hash)throw new p("invalid-option","The server must be an origin without credentials, query, or fragment.");return t.toString().replace(/\/+$/,"")}var d=(e,t)=>{let n=new URLSearchParams;"cursor"in t&&typeof t.cursor=="string"&&n.set("cursor",t.cursor);for(let[a,s]of Object.entries(t))a!=="cursor"&&s!==void 0&&s!==!1&&s!==""&&n.set(a,s===!0?"1":Array.isArray(s)?s.join(","):String(s));return`${e}?${n}`},ze=new Set(["completed","failed","cancelled"]),Ae=class{url;fetchImpl;organization;renewal;onError;token;cookie;constructor(e,t,n={}){if(this.cookie="cookie"in t,this.url=e?Se(e):"",!this.cookie&&!this.url)throw new p("invalid-option","Bearer clients need a server URL.");this.token="token"in t?t.token:void 0,this.fetchImpl=n.fetch??((a,s)=>fetch(a,s)),this.organization=n.organization,this.renewal=n.renewal,this.onError=n.onError}request(e,t={}){let n=this.read(e,t);return n.catch(()=>{}),n}async read(e,t){this.renewal&&this.renewal.expiresAt()-Date.now()<3e4&&(this.token=await this.renewal.renew());let n=await this.send(e,t);n.status===401&&this.renewal&&/invalid_token/.test(n.headers.get("www-authenticate")??"")&&(this.token=await this.renewal.renew(),n=await this.send(e,t));let a=await n.text().catch(()=>""),s={},i;try{a&&n.status!==204&&(s=JSON.parse(a))}catch{if(n.ok)throw new p("server",`The server answered ${n.status} with a body that is not JSON.`);this.cookie&&a&&(i=a)}if(!n.ok){let r=new E(n.status,s.error??s.message??i??`The server answered ${n.status}.`,n.headers.get("www-authenticate")??"",s.hint,s.needs==="key"?s.needs:void 0);throw this.onError?.(r),r}return s}send(e,t){let n=new Headers(t.headers);return t.body&&!n.has("content-type")&&n.set("content-type","application/json"),this.cookie||n.set("authorization",`Bearer ${this.token}`),this.organization&&n.set("x-coder-organization",this.organization),this.fetchImpl(`${this.url}${e}`,{...t,headers:n,...this.cookie?{credentials:"same-origin"}:{}}).catch(a=>{throw a instanceof p||a.name==="AbortError"?a:new p("server",this.url?`No Coder server answers at ${this.url}: ${a.message}`:"The server did not answer. Check the connection and try again.")})}post(e,t){return this.request(e,{method:"POST",...t!==void 0?{body:JSON.stringify(t)}:{}})}me(){return this.request("/me")}info(){return this.request("/api/auth/capabilities")}linkAccount(e){return this.post("/connect",{token:e})}signOut(){return this.post("/api/auth/sign-out",{})}agents={list:e=>this.request(d("/admin/agents",{...e,...e?.connect?{connect:1}:{}})),get:(e,t)=>this.request(d(`/admin/agents/${encodeURIComponent(e)}`,{...t?.versions===!1?{versions:0}:{},...t?.content===!1?{content:0}:{},...t?.handles?{handles:1}:{}})),versions:(e,t={})=>this.request(d(`/admin/agents/${encodeURIComponent(e)}/versions`,t)),remove:e=>this.request(`/admin/agents/${encodeURIComponent(e)}`,{method:"DELETE"}),preview:(e,t)=>this.request(d("/admin/agents/import",{repo:e,ref:t})),version:(e,t)=>this.request(`/admin/agents/${encodeURIComponent(e)}/versions/${t}`),put:(e,t)=>this.request(`/admin/agents/${encodeURIComponent(e)}`,{method:"PUT",body:JSON.stringify(t)}).then(n=>({id:e,version:n.version,unchanged:n.unchanged,...n.apps?.length?{apps:n.apps}:{}})),settings:(e,t)=>this.request(`/admin/agents/${encodeURIComponent(e)}/settings`,{method:"PATCH",body:JSON.stringify(t)}),import:(e,t,n)=>this.post("/admin/agents/import",{repo:e,ref:t,...n?{agents:n}:{}})};composer(){return this.request("/admin/composer")}folders={list:()=>this.request("/admin/folders"),check:e=>this.post("/admin/folders/check",{path:e}),clone:e=>this.post("/admin/folders/clone",{url:e}),pick:()=>this.post("/admin/folders/pick",{})};tasks={list:e=>this.request(d("/admin/tasks",{limit:20,...e,...e?.archived?{archived:1}:{},...e?.summary?{summary:1}:{},...e?.counts?{counts:1}:{}})),get:e=>this.request(`/admin/tasks/${encodeURIComponent(e)}`),logs:(e,t=-1,n)=>this.request(d(`/admin/tasks/${encodeURIComponent(e)}/logs`,{after:t,limit:n})),stream:(e,t=-1,n)=>this.send(`/admin/tasks/${encodeURIComponent(e)}/stream?after=${t}`,{headers:{accept:"text/event-stream"},signal:n}),events:(e,t,n)=>this.send(d("/admin/events",{tasks:e}),{headers:{accept:"text/event-stream",...t?{"last-event-id":t}:{}},signal:n}),cancel:e=>this.post(`/admin/tasks/${encodeURIComponent(e)}/cancel`),steer:(e,t,n={})=>this.post(`/admin/tasks/${encodeURIComponent(e)}/steer`,{text:t,...n}),ask:(e,t)=>this.post(`/admin/tasks/${encodeURIComponent(e)}/ask`,{question:t}),approve:(e,t,n,a={})=>this.post(`/admin/tasks/${encodeURIComponent(e)}/approve`,{approvalId:t,decision:n,...a}),archive:e=>this.post(`/admin/tasks/${encodeURIComponent(e)}/archive`),delete:e=>this.request(`/admin/tasks/${encodeURIComponent(e)}`,{method:"DELETE"}),create:e=>this.post("/admin/tasks",e),wait:async(e,t={})=>{let n=-1;for(;;){let a=new AbortController,s=await this.tasks.stream(e,n,a.signal);if(!s.ok||!s.body){let r=await this.tasks.get(e);if(ze.has(r.status))return r;if(s.status===401)continue;throw new p("server",`The task stream answered ${s.status}.`)}let i=!1;for await(let r of L(s.body))if(r.event==="log"){let o=JSON.parse(r.data);n=o.seq,t.onLog?.(o)}else if(r.event==="end"||r.event==="approval"){i=!0;break}if(i)return this.tasks.get(e)}}};credentials={list:e=>this.request(d("/admin/credentials",e??{})),add:e=>this.post("/admin/credentials",e),remove:(e,{workspace:t}={})=>this.request(`/admin/credentials/${encodeURIComponent(e)}${t?"?workspace":""}`,{method:"DELETE"}),login:e=>this.post("/admin/logins",{engine:e}),loginStatus:(e,t)=>this.request(`/admin/logins/${encodeURIComponent(e)}${t?`?state=${encodeURIComponent(t)}`:""}`),loginCode:(e,t)=>this.post(`/admin/logins/${encodeURIComponent(e)}`,{code:t}),cancelLogin:e=>this.request(`/admin/logins/${encodeURIComponent(e)}`,{method:"DELETE"})};runners={list:()=>this.request("/admin/runners"),add:e=>this.post("/admin/runners",e),pair:e=>this.post("/admin/runners/pair",e),update:(e,t)=>this.request(`/admin/runners/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify(t)}),test:e=>this.post(`/admin/runners/${encodeURIComponent(e)}/test`,{}),remove:e=>this.request(`/admin/runners/${encodeURIComponent(e)}`,{method:"DELETE"})};integrations={list:e=>this.request(d("/admin/integrations",{agent:e}))};repositories={list:()=>this.request("/admin/repositories"),refresh:()=>this.post("/admin/repositories/refresh",{})};engines={status:()=>this.request("/admin/engines/status"),login:e=>this.post(`/admin/engines/${encodeURIComponent(e)}/login`,{}),logout:e=>this.post(`/admin/engines/${encodeURIComponent(e)}/logout`,{})};apps={list:e=>this.request(d("/admin/apps",{agent:e})),install:(e,t)=>this.post(d(`/admin/apps/${encodeURIComponent(e)}/install`,{back:t})),remove:e=>this.request(`/admin/apps/${encodeURIComponent(e)}`,{method:"DELETE"}),update:e=>this.post(`/admin/apps/${encodeURIComponent(e)}/update`,{}),drift:e=>this.request(`/admin/apps/${encodeURIComponent(e)}/drift`),create:(e,t)=>this.post(`/admin/apps/create/${encodeURIComponent(e)}`,t),start:(e,t)=>this.post(d(`/create/${encodeURIComponent(e)}`,t)),finish:(e,t)=>this.request(`/create/${encodeURIComponent(e)}/callback`,{method:"POST",headers:{accept:"application/json","content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t)})};operator={apps:()=>this.request("/admin/operator/apps"),setUp:(e,t)=>this.post(`/admin/operator/apps/${encodeURIComponent(e)}`,t),audit:()=>this.request("/admin/operator/audit")};installations={list:(e,t={})=>this.request(d("/admin/installations",{agent:e,limit:t.limit,...t.active?{active:1}:{}}))};connections={list:(e,t)=>this.request(d("/admin/connections",{authorization:e,wait:t})),add:e=>this.post("/admin/connections",e),update:(e,t)=>this.request(`/admin/connections/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify(t)}),remove:e=>this.request(`/admin/connections/${encodeURIComponent(e)}`,{method:"DELETE"}),authorize:e=>this.post(`/admin/connections/${encodeURIComponent(e)}/authorize`)};config={get:()=>this.request("/admin/config"),patch:e=>this.request("/admin/config",{method:"PATCH",headers:{"content-type":"application/merge-patch+json"},body:JSON.stringify(e)})};models={list:()=>this.request("/admin/models"),add:e=>this.post("/admin/models",e),probe:e=>this.post("/admin/models/probe",e),remove:e=>this.request(`/admin/models/${encodeURIComponent(e)}`,{method:"DELETE"}),alias:(e,t)=>this.post(`/admin/models/${encodeURIComponent(e)}/alias`,{spec:t}),enable:e=>this.post(`/admin/models/${encodeURIComponent(e)}/enable`),disable:e=>this.post(`/admin/models/${encodeURIComponent(e)}/disable`)};mcp={search:e=>this.request(d("/admin/mcp-registry",{q:e}))};flows={list:e=>this.request(d("/admin/flows",{repo:e})),run:(e,t)=>this.post(`/admin/flows/${encodeURIComponent(e)}/run`,t)};pulls={list:e=>this.request(d("/admin/pulls",{repo:e}))};review(e){return this.post("/admin/review",e)}usage(e={}){return this.request(d("/admin/usage/totals",{...e,since:e.since??Date.now()-10080*60*1e3}))}usageRows(e){return this.request(d("/admin/usage",{installation:e}))}};async function*L(e){let t=new TextDecoder,n="";for await(let a of e){n+=t.decode(a,{stream:!0});let s;for(;(s=n.indexOf(`
|
|
2
|
+
|
|
3
|
+
`))>=0;){let i=n.slice(0,s);n=n.slice(s+2);let r="message",o,h=[];for(let l of i.split(`
|
|
4
|
+
`))l.startsWith("event: ")?r=l.slice(7):l.startsWith("data: ")?h.push(l.slice(6)):l.startsWith("id: ")&&(o=l.slice(4));(h.length||o)&&(yield{event:r,data:h.join(`
|
|
5
|
+
`),...o?{id:o}:{}})}}}var x=new Ae("",{cookie:!0},{fetch(e,t){let n=/^\/dash\/([^/]+)/.exec(globalThis.location?.pathname??"")?.[1];if(!n)return fetch(e,t);let a=new Headers(t?.headers);return a.set("x-coder-organization",decodeURIComponent(n)),fetch(e,{...t,headers:a})},onError(e){e.status===401&&(e.authenticate||/^Sign in/.test(e.message))&&(location.href=`/login?return=${encodeURIComponent(location.pathname+location.search)}`)}});async function He(){let{url:e}=await x.signOut();location.href=e??"/?signed_out=1"}function Pe(e,t){let n,a=!1,s=()=>{a||(n=setTimeout(i,t))},i=()=>{if(document.visibilityState==="hidden")return s();e().catch(r=>console.error("coder dashboard: poll",r)).finally(s)};return s(),()=>{a=!0,clearTimeout(n)}}function Ne(e,t,n=[]){let a=_e(e);a.current=e;let s=!!e;xe(()=>{if(!s)return;let i=new AbortController,r=Pe(async()=>a.current?.(i.signal),t);return()=>{i.abort(),r()}},[s,t,...n])}export{ge as $0A,$e as $0B,Me as $0C,we as $0D,Ie as $0E,ke as $0F,ye as $0G,Ce as $0H,be as $0I,Re as $0J,Ue as $0K,qe as $0L,Ee as $0M,Le as $0N,c as $0a,g as $0b,H as $0c,b as $0d,R as $0e,G as $0f,F as $0g,X as $0h,Q as $0i,Y as $0j,ee as $0k,te as $0l,ne as $0m,se as $0n,ae as $0o,ie as $0p,oe as $0q,de as $0r,he as $0s,ce as $0t,le as $0u,pe as $0v,ue as $0w,me as $0x,ve as $0y,fe as $0z,E as $1a,L as $1b,x as $1c,He as $1d,Ne as $1e};
|