@wular/coder 0.4.8 → 0.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{add-yIlNqPSu.js → add-BftLUw05.js} +1 -1
- package/dist/{add-BDBCRqKN.js → add-CXAGrCnC.js} +1 -1
- package/dist/{add-Df1Ezy3y.js → add-Ck_y_nKX.js} +2 -2
- package/dist/{add-DcR15CL7.js → add-CvBTpxgY.js} +1 -1
- package/dist/agent-ChnedLBv.js +8 -0
- package/dist/{agent-B2Ikhp7u.js → agent-vYm7Geh-.js} +1 -1
- package/dist/{alias-DghaKDbh.js → alias-BpgVDY6_.js} +1 -1
- package/dist/{app-snjvOKJA.js → app-CJPFaLIV.js} +1 -1
- package/dist/{approvals-BziBKWgU.js → approvals-CE8dXZhE.js} +1 -1
- package/dist/{approve-DAuvq9Eq.js → approve-CBuGu3du.js} +1 -1
- package/dist/{approve-DKrTnZfk.js → approve-dWW4qt76.js} +1 -1
- package/dist/{apps-aj_JtpAm.js → apps-B60OpAHX.js} +2 -2
- package/dist/{archive-BhfGdyuC.js → archive-C89Z4kSx.js} +1 -1
- package/dist/{archive-DxWYJ7Zi.js → archive-CmRVm4iS.js} +1 -1
- package/dist/{archive-sweep-CqTQUafj.js → archive-sweep-EiiXIqjr.js} +1 -1
- package/dist/{ask-B_si1yM4.js → ask-Bou8zg-4.js} +1 -1
- package/dist/auth-CImjIcG5.js +1 -0
- package/dist/{auth-B3RiDPMI.js → auth-CWzSsiSC.js} +1 -1
- package/dist/{chat-DLolwsuq.js → chat-Djps0Seg.js} +1 -1
- package/dist/{cli-D5hyqGq0.js → cli-ZUdhZnuW.js} +1 -1
- package/dist/cli.js +1 -1
- package/dist/{config-BdeKsCPh.js → config-CF3_A3NX.js} +1 -1
- package/dist/{connection-wq0CJZKh.js → connection-BCRJHTgp.js} +1 -1
- package/dist/{connection-CQPndo-u.js → connection-BtUZA2St.js} +1 -1
- package/dist/{create-8_XbAnHs.js → create-Z0QxarzN.js} +1 -1
- package/dist/credentials-Dt2uP3AQ.js +1 -0
- package/dist/dash/standalone/server/build-index.json +1 -1
- package/dist/dash/standalone/server/manifest.json +1614 -1463
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/connect/{page.a4ec4bce860e3e71.js → page.a2a16ead424b2185.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/create/[id]/{page.4c818ef18a084013.js → page.90e312759b87cfa2.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{loading.f8373428f20c270b.js → loading.787d09fb0b2b6b57.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{notify.b0946ff7951ecc11.js → notify.5fc5e4346dcbfc32.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{page.55eef4b0e71415d9.js → page.1641da62504df30a.js} +11 -12
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/sign-out.5dac3bf780c74354.js +20 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/agent-menu.f1dacbfebc27a656.js +13 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{agents-grid.3a3c550ff68aeb11.js → agents-grid.5da78e9a741b028a.js} +7 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{connect-apps.7a4cfa5c917e5db9.js → connect-apps.722bc3e4ec1f9fad.js} +8 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{loading.fd26a5414b0a06db.js → loading.2815a010098aa676.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{page.b2bed855b68a77b2.js → page.b01992337eeca2dc.js} +7 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{layout.95b8bf3c438955c2.js → layout.8aeb0fddffe22ad5.js} +24 -26
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{loading.39c596735b108f80.js → loading.50692149df9abb28.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{page.1401a08ea4e27c01.js → page.e2e23101c05b9548.js} +15 -14
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{loading.2d6e75e5923f73f2.js → loading.31d2c13229ae9222.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{page.848ccc3a609385a9.js → page.11c7b50d6119efe6.js} +32 -37
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{platform-actions.4b14873a20ebd56c.js → platform-actions.92ac7aa258e706a4.js} +49 -66
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{agent-settings-form.dd8f3cbc00876ebd.js → agent-settings-form.fc530622fa2292a0.js} +16 -19
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{loading.80f597fd04fc4a97.js → loading.bf17bd39f41db826.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{page.35d01036ce840ff9.js → page.6e95dfe07dfebf4b.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{loading.ff54c7100f781fbc.js → loading.7b17368ee81275ab.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{page.e5a405c518c1d8e6.js → page.0bd3da9b3227b12f.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{loading.55aa8df7712e6820.js → loading.d2cc33cf044a92a3.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{page.67c3489c62b661da.js → page.91c43fbc54e37646.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{versions-list.0c20e2100b321316.js → versions-list.23e4131cdf71daa5.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/loading.47c4c8f31b4f17cc.js +23 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{page.7132b3ef68d33cc4.js → page.cbd2bad8fede6fef.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-pills.19e913c8cb22db21.js → agent-pills.d8e785c45f5410a6.js} +9 -10
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-toggle.ec6d07ccd1f9796e.js → agent-toggle.a6e27ac4171bfdb0.js} +13 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{hero.9de48723967d8546.js → hero.96bdca9762ff3e2e.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{instructions.6558ffd02a59ad53.js → instructions.ca0c09d4849bfc30.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{editor.9e1a0945f6880076.js → editor.20c42102ed262db7.js} +33 -36
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{import-picker.e54af9841da11373.js → import-picker.b8093a7ca97656a5.js} +27 -32
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{loading.38715a27e2d25ebd.js → loading.6012b36c10c68657.js} +11 -13
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{page.6c8e9ef5d72b7ef1.js → page.1ebdb0247922fc14.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{layout.c67ccee8b4770821.js → layout.6d2242d49ae9dd35.js} +51 -81
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{operator-apps.3365f9248dfe735d.js → operator-apps.a56516bc0ba79187.js} +18 -21
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{page.c60ebc5afe4dcdae.js → page.af19494c89ac62c0.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{connections-list.544315916300ed07.js → connections-list.9b96914a4fa4e2a9.js} +52 -58
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials-list.41ce6eb622300bb3.js → credentials-list.dbaa8f3d82445b90.js} +147 -165
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials.c1a312e6ec58db83.js → credentials.c4b01484d183549d.js} +7 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{engines-list.75dc69caed34ff8f.js → engines-list.5c03e83663a6a9b7.js} +9 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{list.6d6180438e2bd0c8.js → list.df5ee5d74bec0f5b.js} +10 -8
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{loading.9d7c30db2ecccda3.js → loading.480b8f915bae18c1.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{models-list.04eb5a47bca3bd09.js → models-list.2835a48d1edeb6d1.js} +17 -18
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{page.dd00f57d398be882.js → page.1d53415d55e77fee.js} +15 -15
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{runners-list.e644287ae91ea8c3.js → runners-list.bf5746f48e3f78f5.js} +30 -37
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{secrets-list.35fa72bf3f00d1af.js → secrets-list.b0dedc1567efc09f.js} +14 -13
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{layout.3a17085fb262e4ab.js → layout.567d27e39d42d719.js} +8 -8
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{settings-head.a14b9796a8af62dc.js → settings-head.5e2dff2550b3b73e.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{tunnel-guide.1fd664df1fd0e3c1.js → tunnel-guide.d6fae1c5d62f2c74.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{create-link.3acdd50e1cc0c729.js → create-link.03989d2f7585a045.js} +5 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{outcome-dialog.d730e0bfbe0cf2f8.js → outcome-dialog.4debc1a8c644df4b.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{page.079600422889e725.js → page.43c969f59a710781.js} +9 -8
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{activity.ed49ee2686d1ee41.js → activity.3755ae6065c3fc28.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{loading.0d973b51fee68801.js → loading.9efbed6531879838.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{page.05dd344bada1d4d8.js → page.7b92dcd08095b934.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-actions.ece7ec732352ce70.js → task-actions.62422b873f98ee8e.js} +24 -24
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-view.8a5908c42647923f.js → task-view.ae0e9c9dffe0ff9f.js} +32 -38
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer.c7ec618e215d63ce.js → composer.fdad306647cbaa59.js} +71 -109
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-list.0976f1812d6d15f5.js → tasks-list.952f37a9486aebe7.js} +28 -28
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-section.fd72404364042b87.js → tasks-section.1247d4765d0e1bdc.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{page.293492d13a9dca2e.js → page.cf74c55e6528c7c9.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{custom-range.471edcb853889c2e.js → custom-range.2d55812ec086b540.js} +25 -26
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{day-chart.d40438efa74b0596.js → day-chart.08d378cca93d3ab1.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{loading.5b28c7d8f3a473a3.js → loading.7aed78a276b08a4f.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{page.69adbf6cde427292.js → page.fed9345ebac3e1b3.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/range-bar.b1296c2378128472.js +57 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{top-agents.b00f571862b5b608.js → top-agents.e215d44e00192271.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{layout.ab6f86cc5b8b2dab.js → layout.b7e3af142b17941b.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/login/{page.088b41424cd6cf3c.js → page.226544940a39fd3a.js} +5 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{drawer.0e2e3636f33049f5.js → drawer.8287e5a02144e4f1.js} +8 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{foreign-link.fe46528a6a66c0f4.js → foreign-link.86f0cc228353da6e.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/loading-card.0c6ac62ff3ccf38a.js +40 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{page-head.e5d2185c1cdac740.js → page-head.bd54e52ac4a7a89c.js} +8 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{stream.2fea238dc4f4f9a4.js → stream.1cc355a530dcc5e3.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{task-toasts.4282affa47415a36.js → task-toasts.63f673632770924d.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{theme-choices.ef190ef1cd197199.js → theme-choices.5f59814a635caeec.js} +8 -17
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{back.af528135d7e33d6d.js → back.5681714d0cf45454.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{org.813dc34bd23a336f.js → org.4d84ad0ac340fbe2.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{side-toggle.bafcb4b273b1c4d0.js → side-toggle.249400957d6a7527.js} +9 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/badge.0851f234f300c694.js +83 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/button.983daea9e687fc5d.js +91 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{card.6227f43fc0ae4bd1.js → card.c08471eaa0bc1cec.js} +14 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{collapse.dab7f208cbbe6a33.js → collapse.762eba56417214ca.js} +5 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{combo.0572dd5730c94112.js → combo.efb84f0cca771948.js} +13 -20
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/confirm.53edc755945b0563.js +27 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{copy.9be99c94423eb1ca.js → copy.0b23d7dc05757df5.js} +8 -10
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{filter.4f703a4ce7d2a519.js → filter.1983b85dd0679af6.js} +33 -52
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{icons.868385119bf2de28.js → icons.a34176f37808cd66.js} +1 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/menu-items.a8e580a0c90631ff.js +145 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{menu.0f064f75822888be.js → menu.a41edd5cde1c90cf.js} +16 -45
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{modal.92432959e3a3e2c0.js → modal.b5f74ebf59590fa6.js} +10 -11
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{segmented.5ac52bb38fb64ae5.js → segmented.a08dc08338d080e9.js} +13 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{select.7f481669998074f8.js → select.36c6f21ce6aa720f.js} +36 -40
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tail.30913c92f5ca6102.js → tail.a8a951c757376590.js} +5 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{toolbar.801bbd3163d3fbb0.js → toolbar.9621ef221a896a8e.js} +9 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{action.568346602027ac74.js → action.1a6356d5b722cafb.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/action-977f2355e308d7d0.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/agent-pills-e75e6ac80d515ffc.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/agent-settings-form-09f23ed893d441c7.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/agent-toggle-b2f2c22e63dedc1f.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/agents-grid-bb4f3e4d38b2f459.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/back-1d1b062f0e1b29b7.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/combo-126d5709a0b3a5bd.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/composer-6bf94d1087a6e6a6.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/composer-9c1fe67a0de73997.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/confirm-1cb4d8df3974f34a.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/connect-apps-32c169b6e00711ff.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{connect-repositories-569c181ff81509f4.js → connect-repositories-995d55b3f166337d.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/connections-list-a102e909edff14d4.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/copy-c938369a1bfe75fd.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/create-link-a147953f343355ec.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/credentials-list-31e0fbc1ef0d003e.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/custom-range-4eeb710748887f3a.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/editor-79560c0f91cfc2f6.js +7 -0
- package/dist/dash/standalone/static/assets/chunks/engines-list-d22f50040e6842ae.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{field-f40df6a5289dfe05.js → field-657227821326b5b3.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/instructions-a08bb02650dedb8d.js +2 -0
- package/dist/dash/standalone/static/assets/chunks/instructions-a1f10bc3c2866e3f.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/list-a0cc9bdb05fc71d4.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/models-list-63ab774de3bf3788.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{notice-84358e912a9f01cc.js → notice-cd32ca98bbc10844.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/outcome-dialog-4ab62d613bee243a.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/platform-actions-40824017c7b5b910.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/platform-actions-a515643f341df568.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/runners-list-a9f4f71695f7b376.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{runtime-37175329f2865f15-1.js → runtime-e8b9eb1e537215ed-1.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/secrets-list-34e09c332363564c.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/segmented-24da438244eedc8f.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/shared-init-02aaa49ed4606a76.js +2 -0
- package/dist/dash/standalone/static/assets/chunks/shared-init-03e620f936463465.js +5 -0
- package/dist/dash/standalone/static/assets/chunks/shared-init-6f8c76316a2cd9da.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/shared-init-e8b9eb1e537215ed-2.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/side-toggle-8563e6056e862225.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/tail-ebdefca4d5c23266.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/task-actions-462507b76bda4657.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{task-view-1696d47594c6dbfa.js → task-view-341d79730a341007.js} +5 -5
- package/dist/dash/standalone/static/assets/chunks/tasks-list-6037ecd098332564.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/versions-list-31f31eb1923a0ded.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{wular-pnext-37175329f2865f15-0.js → wular-pnext-e8b9eb1e537215ed-0.js} +1 -1
- package/dist/dash/standalone/static/assets/connect-a550b6f3a8c00186.css +1 -0
- package/dist/dash/standalone/static/assets/create-param-id-8fa3e9101430f26a.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-67f7811b1343c064.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-account-3f646d473e3bd795.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-0ddb989cab5b0fbf.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-new-504d1a906feabb6f.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-7cd987a1a42a3b44.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-fcdddf2dc26453ce.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-26b84d659dbca7f4.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-97ff652f9fe5979d.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-d47377c0f877c5c0.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-6a09580f11d669b7.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-operator-56742192a9aafc19.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-settings-a851a659784d94b5.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-06283106fffbd5c6.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-setup-1b708aa5bb2f83ef.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-tasks-9cb2bb12389c9a04.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-a87fa0eaa02e4008.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-usage-786c91a7640542e6.css +1 -0
- package/dist/dash/standalone/static/assets/global-eee296f070a9bb95.css +1 -0
- package/dist/dash/standalone/static/assets/login-9760b85feae40270.css +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-17c3ee29b7487596.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-1eaa8deb5395345f.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-29e2b964470f6587.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-2a1e756934e7be1a.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-31e64d49f6132b26.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-3d13328ad0b1148b.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-4ac29d3e9f1a91be.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-7d479b3375e3c07e.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-9eac45990b233b55.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-a8c9c169322e7e3d.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-b622d087a38b1b77.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-b7fea94dfda72453.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-cc8e5e6c95040688.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-d16e2a42b0a274c0.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-dbccfef0cbb6b18d.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-e74706ae238018e5.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-ebe7c9692619ea00.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-ef8d348060493085.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-fcdfa8b2c8824449.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-ff36e2f8a0522759.js +1 -0
- package/dist/{default-CNhVH61w.js → default-DcYwZCnl.js} +1 -1
- package/dist/{default-dQC33jLt.js → default-EXRzdZUY.js} +1 -1
- package/dist/{delete-BDOtztW_.js → delete-Bmn2_TiV.js} +1 -1
- package/dist/{delete-Dbo9goyQ.js → delete-DS6P_fun.js} +1 -1
- package/dist/{disable-VvU6oDku.js → disable-CnCxTC3X.js} +1 -1
- package/dist/{discover-hpHsnxqU.js → discover-pKrMDvpW.js} +1 -1
- package/dist/{docs-CYMICGEv.js → docs-sFUXzJbk.js} +1 -1
- package/dist/{enable-BmvNVDHO.js → enable-BWvDv7dP.js} +1 -1
- package/dist/flow/builtin/review.d.ts +1 -1
- package/dist/flow/index.d.ts +1 -1
- package/dist/{flow-4Rr-2NUz.js → flow-CuUq-MDm.js} +1 -1
- package/dist/{http-BYMXT_p6.js → http-Cg_wYcZT.js} +1 -1
- package/dist/{index-CVjkwYeS.d.ts → index-vd37q3fn.d.ts} +1 -1
- package/dist/{init-kZdO2PF5.js → init-Dgj6V-aS.js} +1 -1
- package/dist/integrations-DsFX2KCq.js +1 -0
- package/dist/{list-D3LCULQt.js → list-B6lwbCEp.js} +1 -1
- package/dist/{list-uS9iEE0F.js → list-BDpYPbJF.js} +1 -1
- package/dist/{list-CbN2giPy.js → list-BE3xmX_4.js} +1 -1
- package/dist/{list-P2Ztf1bQ.js → list-BVIAyAAE.js} +1 -1
- package/dist/{list-CLqNS8_q.js → list-Bggy3HZY.js} +1 -1
- package/dist/{list-ChFFjT_a.js → list-CLtqMYPK.js} +2 -2
- package/dist/{list-D2eSpGoo.js → list-CaFQOnfI.js} +1 -1
- package/dist/{list-D0NK3Iqu.js → list-DkO78ZEF.js} +1 -1
- package/dist/{local-XNsjb-UM.js → local-ccKBhpQc.js} +1 -1
- package/dist/{login-BoOBMH4y.js → login-BCdXHQ7z.js} +1 -1
- package/dist/{login-CCA0uLsW.js → login-CpHx_RCq.js} +1 -1
- package/dist/{logout-Cv0cm9F8.js → logout-zSQBDPCK.js} +1 -1
- package/dist/{maintenance-B_79IJ_E.js → maintenance-DuIspk-y.js} +1 -1
- package/dist/{mcp-C13n4A3y.js → mcp-O8VTfzdL.js} +1 -1
- package/dist/{model-0sxp5GdI.js → model-Bzpwl_95.js} +1 -1
- package/dist/{push-IpLeKMp-.js → push-vt81gcxD.js} +1 -1
- package/dist/{reconnect-CR3RaXX0.js → reconnect-BfghDbl1.js} +1 -1
- package/dist/{refresh-D0YjtXBD.js → refresh-yXJ13FAf.js} +1 -1
- package/dist/{remove-B01SXfEq.js → remove-5iAM2aTO.js} +1 -1
- package/dist/{remove-D65xtbw5.js → remove-BZCA-gdU.js} +1 -1
- package/dist/{remove-D1UOd48O.js → remove-BcewhH1U.js} +1 -1
- package/dist/{remove-C9eahMDh.js → remove-BwhcR6ig.js} +1 -1
- package/dist/{rename-Qwr_XDxD.js → rename-lyssPQfD.js} +1 -1
- package/dist/{result-70jciKDJ.js → result-Bg557zR6.js} +1 -1
- package/dist/{result-DXL9N9Ip.js → result-jeiRJTzA.js} +1 -1
- package/dist/{resume-xqhwHn3l.js → resume-fnx4FUQF.js} +1 -1
- package/dist/{review-vlPAshsb.js → review-CAHDqPq8.js} +1 -1
- package/dist/{review-D-U_2KyT.d.ts → review-CJS59vO-.d.ts} +1 -1
- package/dist/{rotate-key-CfeZ6Rg7.js → rotate-key-Dpx_WmuU.js} +1 -1
- package/dist/{run-VOuS-hHe.js → run-CLy9a2MO.js} +1 -1
- package/dist/{run-CoTg7SkY.js → run-DU4G8gNw.js} +1 -1
- package/dist/{run-CvdayZfK.js → run-D_pl9GF_.js} +1 -1
- package/dist/runner-zT5Oyrfr.js +1 -0
- package/dist/{runners-UNKPlmYE.js → runners-CNhxPjg8.js} +1 -1
- package/dist/schema.d.ts +1 -1
- package/dist/{sdk-4Vjo5Q6R.d.ts → sdk-CWerLcF5.d.ts} +19 -19
- package/dist/sdk.d.ts +4 -4
- package/dist/sdk.js +1 -1
- package/dist/{serve-HNXk3HMY.js → serve-FG2LgXxM.js} +2 -2
- package/dist/{serve-ByWMT5Gm.js → serve-UE1fcf4t.js} +1 -1
- package/dist/{serve-BoTW4P2G.js → serve-w-9qRCP1.js} +2 -2
- package/dist/{serve-BQsv2KZs.js → serve-wQgyxwdY.js} +1 -1
- package/dist/{server-B1x8gx33.js → server-Bw_YmgCf.js} +1 -1
- package/dist/{setup-host-DExG-bWZ.js → setup-host-BsbDs4lJ.js} +1 -1
- package/dist/{show-BeacgzZ0.js → show-Cajmf606.js} +1 -1
- package/dist/{show-D3OC0c35.js → show-D0qTuXRU.js} +1 -1
- package/dist/{status-ZN0HYtLa.js → status-PO1YXbt4.js} +1 -1
- package/dist/{steer-DwSC8AO4.js → steer-i6w87g_t.js} +1 -1
- package/dist/{stop-CEEiI1RA.js → stop-CJ0PHvKp.js} +1 -1
- package/dist/{stop-DTzpTbg1.js → stop-CkvoZEAH.js} +1 -1
- package/dist/{task-4gw9OZun.js → task-DTN_fIGC.js} +1 -1
- package/dist/task-DXHKWB_J.js +5 -0
- package/dist/{test-BnGF24Hg.js → test-BTkKFbnx.js} +1 -1
- package/dist/{tools-ar-D3jOh.js → tools-B-2oi2wI.js} +1 -1
- package/dist/{types-BktBEKW5.d.ts → types-C1tWi5lP.d.ts} +5 -5
- package/dist/{unalias-9AwJnbpE.js → unalias-Cqx7i_L0.js} +1 -1
- package/dist/{update-DoJEPBvm.js → update-MNyeVXyy.js} +1 -1
- package/dist/{upgrade-DRPBwDYe.js → upgrade-CGSkY0FY.js} +2 -2
- package/dist/{usage-CItBLFFE.js → usage-sx-FR0bz.js} +1 -1
- package/dist/{watch-BMuVZorc.js → watch-IL2eEgwD.js} +1 -1
- package/dist/{watch-Bl_pCGfq.js → watch-qfr7aSfo.js} +1 -1
- package/dist/{worker-BFGETvid.js → worker-BBZ36xL0.js} +1 -1
- package/dist/{worker-BiJ7jiOr.js → worker-D2csFtoH.js} +1 -1
- package/dist/{workflow-CcC-xbfp.js → workflow-BKxG9OUk.js} +1 -1
- package/package.json +1 -1
- package/dist/agent-C1HI4JlI.js +0 -3
- package/dist/auth-Cx4ePjWG.js +0 -1
- package/dist/credentials-BOAy2_-6.js +0 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/sign-out.1ee9b7f1343376e9.js +0 -13
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/agent-menu.79e38c6e4139b9de.js +0 -12
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/loading.2fa9e225a5c42496.js +0 -29
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/range-bar.884e58b044238e98.js +0 -60
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/loading-card.df3717186948c93f.js +0 -64
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/badge.3d9163a51e6f6d6e.js +0 -43
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/confirm.fe133a074c2743af.js +0 -26
- package/dist/dash/standalone/static/assets/chunks/action-df9907c7a10bf826.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/agent-pills-106a518bef96408e.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/agent-settings-form-d1aa82950d30d829.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/agent-toggle-44667051d8be2040.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/agents-grid-69fabb48962a282a.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/back-e02e04679467c05b.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/badge-b302b4d707908367.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/card-31a2cdcfeda5254f.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/combo-fd495e7fa91b69ed.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/composer-10f0a825a16e1fc7.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/composer-8c1198d45f700738.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/confirm-7b6112578a1c4877.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/connect-apps-bd95a6cbdc89a438.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/connections-list-5bbf7321d9bfd08f.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/copy-f057128db8aefd1b.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/create-link-6f6e6b87e46f67c8.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/credentials-list-8fc72c0331289ac6.js +0 -2
- package/dist/dash/standalone/static/assets/chunks/custom-range-d06cd17fcc05183d.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/editor-b5a9659f85edea17.js +0 -7
- package/dist/dash/standalone/static/assets/chunks/engines-list-c10ca5e7410b790f.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/filter-966a9aae3b0b6d77.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/instructions-c9e1097c4e1b352a.js +0 -2
- package/dist/dash/standalone/static/assets/chunks/instructions-e969d4439f6676c9.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/list-5db1dd782965a5fc.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/models-list-b6237067c9a39f97.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/outcome-dialog-c4f75d37645035b8.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/paged-c44eccacea100110.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/platform-actions-6004e96f54953935.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/platform-actions-d8dd016336a3d768.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/runners-list-0b288b2b79de8968.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/secrets-list-64650cb827e93322.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/segmented-5423dcc766dc7abc.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/select-53722330d2e3f1c6.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/shared-init-35a0e9007eeca198.js +0 -2
- package/dist/dash/standalone/static/assets/chunks/shared-init-37175329f2865f15-2.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/shared-init-a7f2e71a718bc285.js +0 -5
- package/dist/dash/standalone/static/assets/chunks/shared-init-b8184e0e554d5aa4.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/shared-init-e0aa7cbf9ac680b5.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/side-toggle-34ee3bbe5ac64a60.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/tail-7dece33a58f72850.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/task-actions-b36dc5fcd9b2b2c5.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/tasks-list-7c70210e7121b95a.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/versions-list-26475f0d05e2d434.js +0 -1
- package/dist/dash/standalone/static/assets/connect-b73a327c12fa5c63.css +0 -1
- package/dist/dash/standalone/static/assets/create-param-id-d679f8832eafd7e8.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-14abc8f62d04dc4c.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-account-aba6d7e7f99c97cb.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-570ddee6de22492e.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-new-9fa9b19084b3cd2f.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-0e7e591f05cbddf5.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-f16fb90321952887.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-5cf30b084239d643.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-1c84b31df8c64b88.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-7da323ffa5be29aa.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-4900a42b805e90cb.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-operator-2f4e497a01a78f29.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-settings-0ea983332482dbc6.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-e1c1f81610bb925f.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-setup-6824fce3862dbb43.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-tasks-f914c28afa705d66.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-65c8bb06f94ff868.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-usage-5dbb2aa369c46eed.css +0 -1
- package/dist/dash/standalone/static/assets/global-eecd2b20d5e4b08d.css +0 -1
- package/dist/dash/standalone/static/assets/login-ca4c0cd7d65b3269.css +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-0bcd0cbf2549bdf2.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-22414b6c8a870c92.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-2a02ab5209cae1ea.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-46d843cfdabf3e71.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-5a50a2a4da7e870e.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-5b6ea850cead1482.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-5b94497ba23568a8.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-6686f1714e481293.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-67155accb837a12a.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-7db5d810ee904f4b.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-8d779b89650f4b7a.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-9d7a7a634c9be6ac.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-9edebc462604c881.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-aa5a424e38b430a5.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-b983cd476c808b15.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-bdf1cb75a3de35ea.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-c5177dd613b27b84.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-d998d7077d159f68.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-f01c6d0c6beb582b.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-fd4c0f3ecbcc461c.js +0 -1
- package/dist/integrations-35T26qmP.js +0 -1
- package/dist/runner-D0TLZrrO.js +0 -1
- package/dist/task-CB-j4EO8.js +0 -5
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{editor.d2e3bc878dcb47da.css.pnext-asset.js → editor.c496247a81ed832c.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{layout.3827c440c6421a06.css.pnext-asset.js → layout.a4efa8d807fe5416.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials-list.1236d6680ec02696.css.pnext-asset.js → credentials-list.98e0b34932a6ee4c.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer.360b393e5938c60b.css.pnext-asset.js → composer.79c015348f861749.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{range-bar.1da88d087e3b5302.css.pnext-asset.js → range-bar.476c059123ef6c23.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{globals.76731787d2a1aa3b.css.pnext-asset.js → globals.dccea8b03fa4b6d2.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/login/{page.57e5198339e9ca28.css.pnext-asset.js → page.586a41a7ab9988e0.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{@/comps/ui/toast.a4c3e977997216cf.css.pnext-asset.js → drawer.0b0220d1edabce29.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{drawer.e8201d78154045bc.css.pnext-asset.js → task-toasts.d13d9f628e530552.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{confirm.d18497f656702a16.css.pnext-asset.js → button.d7f4433f4e7faa80.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{copy.991f1efa061e71d6.css.pnext-asset.js → copy.fb3240de6c9479cd.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{filter.e20fbd035f24ed01.css.pnext-asset.js → filter.b53f21acc3e2cfef.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{menu.1d42c8d0493e2221.css.pnext-asset.js → menu.25b184f68cba7b46.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{select.32a95ad31c0436ad.css.pnext-asset.js → select.419208bb34700af2.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{toolbar.40284b41c03c5dcb.css.pnext-asset.js → toolbar.19e1ce5224a23acf.css.pnext-asset.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,t}from"./cli-
|
|
1
|
+
import{i as e,t}from"./cli-ZUdhZnuW.js";import{p as n}from"./output-BKeyLbvt.js";import{c as r,n as i,s as a}from"./args-CxsMr9Un.js";import{credentialOptions as o}from"./remove-5iAM2aTO.js";import s from"node:process";const c=e({name:`credentials add`,globalFlags:{cwd:!1},help:{usage:`coder credentials add [label] --engine <claude|codex|custom> --env <NAME> [--env <NAME> ...] [--value <secret|->] [--workspace] [--no-check] [--default] [--server [url]]`,summary:`Store an API key, encrypted on the server, as your personal credential or with --workspace for every member. The value comes from the named environment variable unless --value says otherwise, and is never printed. Without subscription sign-in on the server, CLAUDE_CODE_OAUTH_TOKEN takes your own claude setup-token output.`,examples:[[`ANTHROPIC_API_KEY=sk-... coder credentials add --engine claude --env ANTHROPIC_API_KEY`,`your own API key, read from the environment`],[`OPENAI_API_KEY=sk-... coder credentials add team --engine codex --env OPENAI_API_KEY --workspace`,`a workspace key every member's tasks can use`],[`pbpaste | coder credentials add router --engine custom --env OPENROUTER_API_KEY --value -`,`any provider, value from stdin`]],flags:[[`--env <NAME>`,`one environment variable name; repeat for more (reads that variable by default)`],[`--engine <name>`,`claude, codex, or custom`],[`--value <secret|->`,`literal values land in shell history and are visible to other processes; use - for stdin or prefer environment variables`],[`--workspace`,`a workspace credential; owners and admins only`],[`--no-check`,`skip the provider credential check`],[`--default`,`make this the default for its engine`],t]},options:{...o,engine:a,env:r,value:a,"no-check":i,default:i},args:1,run:async({options:e,args:[t]})=>{let{addCredential:n}=await import(`./remote-oQs6My_3.js`).then(e=>e.a);return n(t,{...e,env:e.env??[],noCheck:e[`no-check`]})},print:(e,{options:t})=>s.stdout.write(`Added ${t.workspace?`workspace`:`personal`} credential ${n.bold(e.label)}.\n`)});export{c as commandCredentialsAdd};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{H as e}from"./dispatch-D3Dqxijf.js";import{i as t,t as n}from"./cli-
|
|
1
|
+
import{H as e}from"./dispatch-D3Dqxijf.js";import{i as t,t as n}from"./cli-ZUdhZnuW.js";import{c as r,s as i}from"./args-CxsMr9Un.js";import{runnerOptions as a}from"./remove-BZCA-gdU.js";import o from"node:process";const s=t({name:`runner add`,globalFlags:{cwd:!1},args:1,help:{usage:`coder runner add <kind> [--name <name>] [--scope <scope>] [--field key=value …] [--server [url]] [--json]`,summary:`Connect a runner. Secret fields read environment variables with key=env:VARIABLE. Adding local prints a pairing command.`,flags:[[`--name <name>`,`runner display name`],[`--scope <scope>`,`personal or workspace`],[`--field key=value`,`repeat for each field, use env:VARIABLE for secrets`],n]},options:{...a,name:i,scope:i,field:r},async run({options:t,args:[n]}){if(!n)throw new e(`invalid-option`,`Missing runner kind.`);let{addRunnerFields:r}=await import(`./runner-DME7ohjt.js`).then(e=>e.a);return r(n,t)},print:e=>o.stdout.write(`${`command`in e?e.command:`Added ${e.name} (${e.id}).`}\n`)});export{s as commandRunnerAdd};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e,r as t}from"./cli-
|
|
2
|
-
`))}async function d(){let{askSecret:e}=await import(`./prompt-C--TI1qn.js`).then(e=>e.s);return e(`Key`)}function f(e){return e.provider===`env`?`API key ${e.env}`:e.provider===`mcp`?`MCP server ${e.url??e.command}`:`${e.provider} account${e.account?` ${e.account}`:``}`}const p=r=>e({name:`connection add`,help:{usage:`coder connection add <name> [--me] [--access read|write] (--env <NAME> | --url <url> [--header <NAME>] | [--env <NAME>] -- <command> [args...]) [--key] [--server [url]]`,summary:"Connect a platform account by its name (OAuth in the browser), an API key that tasks read from --env, or an MCP server at --url or started by the command after `--`. An API key is kept as a credential. A credential already holding the variable is used, else the value comes from that variable here, or from stdin or a prompt. A remote MCP server is checked for OAuth, open access or a key; a needed key is read from stdin or a prompt. With --key, the key goes in --header (default Authorization) or --env. Signing in needs --server.",flags:[[`--env <NAME>`,`the API key variable, or where a stdio server reads its key`],[`--url <url>`,`a remote MCP server (streamable HTTP by default)`],[`--transport <http|sse>`,`remote transport (default: http)`],[`--header <NAME>`,`the header a remote server reads its key from (default: Authorization)`],[`--key`,`read a key from stdin or a prompt, never from a flag value`],[`--auth <oauth|key|none>`,`override MCP authentication (default: detected for --url, none for a command)`],[`--access <read|write>`,`read keeps only read-only tools (default: read; API keys are write)`],[`--tools <a,b>`,`tool allowlist; a read-only stdio server needs one`],[`--credential <id>`,`the credential an API key connection reads`],[`--me`,`your own connection instead of the workspace's`],t],examples:[[`GROQ_API_KEY=gsk_... coder connection add groq --env GROQ_API_KEY`,`an API key from this shell`],[`pbpaste | coder connection add docs --key --env DOCS_TOKEN --access write -- npx -y docs-mcp`,`a stdio server with its key from stdin`],[`coder connection add github --me --server`,`your GitHub account on your Coder server`]]},options:{...s,...l,env:o,url:o,transport:o,header:o,key:a,auth:o,access:o,tools:o,credential:o,me:a},args:1,run:async({options:e,args:[t],cwd:n})=>{let{connection:i}=await import(`./connection-
|
|
1
|
+
import{i as e,r as t}from"./cli-ZUdhZnuW.js";import{p as n,r}from"./output-BKeyLbvt.js";import{i,n as a,s as o,t as s}from"./args-CxsMr9Un.js";import c from"node:process";const l={server:i,workspace:o,yes:a};async function u(e){let{openUrl:t}=await import(`./prompt-C--TI1qn.js`).then(e=>e.s);c.stderr.write(`Sign in at ${r.cyan(e)}\n`),t(e)&&c.stderr.write(r.dim(`Opened it in your browser. Waiting...
|
|
2
|
+
`))}async function d(){let{askSecret:e}=await import(`./prompt-C--TI1qn.js`).then(e=>e.s);return e(`Key`)}function f(e){return e.provider===`env`?`API key ${e.env}`:e.provider===`mcp`?`MCP server ${e.url??e.command}`:`${e.provider} account${e.account?` ${e.account}`:``}`}const p=r=>e({name:`connection add`,help:{usage:`coder connection add <name> [--me] [--access read|write] (--env <NAME> | --url <url> [--header <NAME>] | [--env <NAME>] -- <command> [args...]) [--key] [--server [url]]`,summary:"Connect a platform account by its name (OAuth in the browser), an API key that tasks read from --env, or an MCP server at --url or started by the command after `--`. An API key is kept as a credential. A credential already holding the variable is used, else the value comes from that variable here, or from stdin or a prompt. A remote MCP server is checked for OAuth, open access or a key; a needed key is read from stdin or a prompt. With --key, the key goes in --header (default Authorization) or --env. Signing in needs --server.",flags:[[`--env <NAME>`,`the API key variable, or where a stdio server reads its key`],[`--url <url>`,`a remote MCP server (streamable HTTP by default)`],[`--transport <http|sse>`,`remote transport (default: http)`],[`--header <NAME>`,`the header a remote server reads its key from (default: Authorization)`],[`--key`,`read a key from stdin or a prompt, never from a flag value`],[`--auth <oauth|key|none>`,`override MCP authentication (default: detected for --url, none for a command)`],[`--access <read|write>`,`read keeps only read-only tools (default: read; API keys are write)`],[`--tools <a,b>`,`tool allowlist; a read-only stdio server needs one`],[`--credential <id>`,`the credential an API key connection reads`],[`--me`,`your own connection instead of the workspace's`],t],examples:[[`GROQ_API_KEY=gsk_... coder connection add groq --env GROQ_API_KEY`,`an API key from this shell`],[`pbpaste | coder connection add docs --key --env DOCS_TOKEN --access write -- npx -y docs-mcp`,`a stdio server with its key from stdin`],[`coder connection add github --me --server`,`your GitHub account on your Coder server`]]},options:{...s,...l,env:o,url:o,transport:o,header:o,key:a,auth:o,access:o,tools:o,credential:o,me:a},args:1,run:async({options:e,args:[t],cwd:n})=>{let{connection:i}=await import(`./connection-BCRJHTgp.js`).then(e=>e.n);return i.add(t,{...e,cwd:n,command:r,transport:e.transport,auth:e.auth,access:e.access,tools:e.tools?.split(`,`).map(e=>e.trim()).filter(Boolean),key:e.key?await d():void 0,askKey:d,onAuthorize:u})},print:e=>c.stdout.write(`Connected ${n.bold(e.id)}, ${f(e)}.\n`)}),m=Object.assign(e=>{let t=e.indexOf(`--`);return p(t===-1?[]:e.slice(t+1))(t===-1?e:e.slice(0,t))},p([]));export{d as askKey,m as commandConnectionAdd,f as describe,u as openSignIn,l as serverOptions};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{qi as e}from"./core-DwsAMCnL.js";import{i as t}from"./cli-
|
|
1
|
+
import{qi as e}from"./core-DwsAMCnL.js";import{i as t}from"./cli-ZUdhZnuW.js";import{p as n}from"./output-BKeyLbvt.js";import{n as r,s as i,t as a}from"./args-CxsMr9Un.js";import{t as o}from"./models-CdvmuaLv.js";import s from"node:process";var c=e({commandModelAdd:()=>d,modelOptions:()=>l,modelSavedJson:()=>f,printModelSaved:()=>p,writeOptions:()=>u});const l={...a,"base-url":i,model:i,"env-key":i,workspace:r},u=e=>({baseUrl:e[`base-url`],model:e.model,envKey:e[`env-key`],workspace:e.workspace}),d=t({name:`model add`,help:{usage:`coder model add <name> --base-url <url> --model <id> [--env-key VAR]`,summary:`Connect a custom model behind an OpenAI-compatible endpoint (Ollama, LM Studio,
|
|
2
2
|
vLLM, OpenRouter, ...). It currently runs on the codex engine pointed at your
|
|
3
3
|
URL and is usable anywhere a model is: --model <name>, --engine custom, or as an
|
|
4
4
|
agent default in config. Alias: \`coder model setup\`.`,flags:[[`--base-url <url>`,`OpenAI-compatible API base (e.g. http://localhost:11434/v1)`],[`--model <id>`,`the provider's model id (e.g. qwen2.5-coder:32b)`],[`--env-key <VAR>`,`env var holding the API key (omit for keyless local endpoints)`],[`--workspace`,`write to <repo>/.coder/config.json instead of the user file`]],examples:[[`coder model add qwen --base-url http://localhost:11434/v1 --model qwen2.5-coder:32b`,`local Ollama model, no key`],[`coder model add kimi --base-url https://openrouter.ai/api/v1 --model moonshotai/kimi-k2 --env-key OPENROUTER_API_KEY`,`third-party provider via OpenRouter`],[`coder run --model qwen "explain this repo"`,`dispatch a task on it`]]},options:l,args:1,run:({options:e,args:[t],cwd:n})=>o(n,t,u(e)),json:f,print:e=>p(e,`saved`)});function f({name:e,entry:t,file:n,probe:r,codex:i,install:a,ready:o}){return{name:e,...t,file:n,probe:r,codex:i,...a?{codexInstall:a}:{},ready:o}}function p({name:e,entry:t,file:r,probe:i,codex:a,install:o,nativeResponses:c,keyMissing:l},u){let d=n,f=e=>` ${d.green(`✔`)} ${e}`,p=e=>` ${d.red(`✘`)} ${e}`,m=[`${u} ${d.cyan(e)} -> ${t.model} @ ${t.baseUrl} ${d.dim(`(${r})`)}`,``,i.reachable?f(`${i.detail} ${d.dim(`(${c?`responses api, direct`:`chat api, auto-translated`})`)}`):p(i.detail),a.available?f(o?.installed?`${o.note} ${d.dim(`(${a.detail})`)}`:`codex engine ${d.dim(`(${a.detail})`)}`):p(o?.note??`codex CLI not installed - run: npm install -g @openai/codex`)];l&&m.push(p(`env var ${t.envKey} is not set in this shell`)),m.push(``,d.dim([`Use it: coder run --model ${e} "<task>"`,`Make default: coder config set engines.custom.model ${e}`].join(`
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import{qi as e}from"./core-DwsAMCnL.js";import{H as t}from"./dispatch-D3Dqxijf.js";import{t as n}from"./types-B42Oh0zF.js";import{a as r}from"./load-CRmQB1LD.js";import{i,n as a}from"./remote-oQs6My_3.js";import{t as o}from"./integrations-D3OgJk6Y.js";import{a as s,r as c}from"./exec-BsXFIdTl.js";import{c as l,o as u,u as d}from"./task-DXHKWB_J.js";import{n as f}from"./match-Kt3vFTl1.js";import p from"node:path";import m from"node:process";import h from"node:fs";import{spawn as g}from"node:child_process";import _ from"node:os";import v from"node:fs/promises";const y=[`SIGTERM`,`SIGINT`],b=/\x1b\[[0-9;?]*[ -/]*[@-~]|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)|\x1b[()][A-Z0-9]|\r/g;function x(e,t){if(e===`codex`)return{file:`codex`,args:[`login`,`--device-auth`],env:{CODEX_HOME:t}};let n=`stty cols 4000 rows 50 2>/dev/null; exec claude setup-token`;return{file:`sh`,args:[`-c`,`cat | { ${m.platform===`darwin`?`script -q /dev/null sh -c '${n}'`:`script -qfec '${n}' /dev/null`}; kill 0; }`],env:{CLAUDE_CONFIG_DIR:t,BROWSER:`true`}}}function S(e){try{return JSON.parse(Buffer.from(String(e).split(`.`)[1]??``,`base64url`).toString())}catch{return{}}}function C(e){let t=S(JSON.parse(e).tokens?.id_token),n=t[`https://api.openai.com/auth`];return{...typeof t.email==`string`?{email:t.email}:{},...typeof n?.chatgpt_plan_type==`string`?{plan:n.chatgpt_plan_type}:{}}}function w(e,t){let n=t.replace(b,``),r=/\x1b\]8;[^;]*;(https:\/\/[^\x07\x1b]+)(?:\x07|\x1b\\)/.exec(t)?.[1],i=e===`claude`?r??/https:\/\/\S*(?:oauth|authorize)\S*(?=\s)/.exec(n)?.[0]:/https:\/\/\S+(?=\s)/.exec(n)?.[0],a=e===`codex`?/\b[A-Z0-9]{4,}-[A-Z0-9]{4,}\b/.exec(n)?.[0]:void 0;if(!(!i||e===`codex`&&!a))return{url:i,...a?{code:a}:{}}}const T=/sk-ant-oat[\w-]+/,E=e=>e.replace(/[\w#.%-]{20,}|\b[A-Z0-9]{4,}-[A-Z0-9]{4,}\b/g,`…`).slice(-600),D=/\x1b(?:\[([0-9;?<>=]*)[ -/]*([@-~])|\][^\x07\x1b]*(?:\x07|\x1b\\)|[()][\s\S]|[^[\]()])/y;var O=class{height;rows=[[]];row=0;col=0;saved=[0,0];rest=``;constructor(e=50){this.height=e}write(e){let t=this.rest+e;this.rest=``;for(let e=0;e<t.length;){if(t[e]===`\x1B`){D.lastIndex=e;let n=D.exec(t);if(!n){this.rest=t.slice(e,e+4096);return}n[2]&&!/^[?<>=]/.test(n[1])?this.csi(n[1].split(`;`),n[2]):n[0]===`\x1B7`?this.saved=[this.row,this.col]:n[0]===`\x1B8`&&([this.row,this.col]=this.saved),e+=n[0].length;continue}let n=t.codePointAt(e),r=String.fromCodePoint(n);e+=r.length,r===`\r`?this.col=0:r===`
|
|
2
|
+
`?this.down():r===`\b`?this.col=Math.max(0,this.col-1):n>=32&&n!==127&&(this.line()[this.col++]=r)}}text(){return this.rows.map(e=>Array.from(e,e=>e??` `).join(``).trimEnd()).join(`
|
|
3
|
+
`)}line(){return this.rows[this.row]??=[]}down(){this.row<this.height-1?this.row++:this.rows.splice(0,this.rows.length-this.height+1)}csi(e,t){let n=(t=0)=>Number(e[t])||1,r=Number(e[0])||0,i=this.height-1;if(t===`A`)this.row=Math.max(0,this.row-n());else if(t===`B`)this.row=Math.min(i,this.row+n());else if(t===`C`)this.col+=n();else if(t===`D`)this.col=Math.max(0,this.col-n());else if(t===`E`||t===`F`)this.row=Math.max(0,Math.min(i,this.row+(t===`E`?n():-n()))),this.col=0;else if(t===`G`)this.col=n()-1;else if(t===`d`)this.row=Math.min(i,n()-1);else if(t===`H`||t===`f`)this.row=Math.min(i,n()-1),this.col=n(1)-1;else if(t===`K`){let e=this.line();r===0?e.length=Math.min(e.length,this.col):r===1?e.fill(` `,0,this.col+1):e.length=0}else t===`J`?r===0?(this.line().length=Math.min(this.line().length,this.col),this.rows.length=Math.min(this.rows.length,this.row+1)):r>=2&&(this.rows=[]):t===`s`?this.saved=[this.row,this.col]:t===`u`&&([this.row,this.col]=this.saved)}};async function k(e,t){let{server:n,token:r}=d();delete m.env.CODER_TASK_TOKEN,delete m.env.CODER_LOGIN;let i=new AbortController,a=async(t,a)=>{let o=t?i.signal:void 0;for(let i=1;;i++){let s=await fetch(`${n}/logins/${encodeURIComponent(e)}${t}`,{method:a===void 0?`GET`:`POST`,...o?{signal:o}:{},headers:{authorization:`Bearer ${r}`,...a===void 0?{}:{"content-type":`application/json`}},...a===void 0?{}:{body:JSON.stringify(a)}}).catch(e=>{if(o?.aborted||t===`/input`||i>=10)throw e;console.error(`coder runner: Coder server did not answer: ${e.message}`)});if(s?.ok)return await s.json();if(s&&(s.status<500||i>=10))throw Error(`Coder server answered ${s.status}`);s&&console.error(`coder runner: Coder server answered ${s.status}`),await new Promise(e=>setTimeout(e,1e3))}},{engine:o}=await a(``),s=await v.mkdtemp(p.join(t,`.login-`)),c=x(o,s),l=g(c.file,c.args,{env:{...m.env,...c.env},stdio:[`pipe`,`pipe`,`pipe`],detached:!0}),u=()=>{try{m.kill(-l.pid,`SIGTERM`)}catch{}},f=``,h=new O,_=!1,S=!1,D=0,k,A,j=new Promise((e,t)=>{l.once(`error`,t),l.once(`close`,e)}),M=setTimeout(u,6e5);for(let e of y)m.once(e,u);let N=async()=>{for(;!i.signal.aborted;){let{code:e}=await a(`/input`);if(e){k=f.length,l.stdin.write(e),await new Promise(e=>setTimeout(e,500)),l.stdin.write(`\r`),m.stdout.write(`Sign-in code typed
|
|
4
|
+
`);let t=k;setTimeout(()=>{k===t&&!_&&console.error(`coder runner: claude has not answered the code: ${JSON.stringify(E(h.text()))}`)},2e4).unref();return}}},P=e=>{if(f+=e,h.write(e),!S){let e=w(o,f.slice(D));e&&(S=!0,clearInterval(A),m.stdout.write(`Sign-in link ready
|
|
5
|
+
`),a(``,e).catch(()=>u()),o===`claude`&&N().catch(()=>{i.signal.aborted||u()}))}o===`claude`&&!_&&T.test(h.text())&&(_=!0,m.stdout.write(`Sign-in token shown
|
|
6
|
+
`),setTimeout(u,2e3)),(k===void 0?``:f.slice(k).replace(b,``).replace(/\s/g,``)).includes(`PressEntertoretry`)&&(m.stdout.write(`Sign-in code rejected; asking claude for a new link
|
|
7
|
+
`),k=void 0,D=f.length,S=!1,A=setInterval(()=>l.stdin.write(`\r`),1e3))};l.stdout.setEncoding(`utf8`).on(`data`,P),l.stderr.setEncoding(`utf8`).on(`data`,P);try{let e=await j;i.abort();let t=h.text(),n=T.exec(t)?.[0];if(o===`claude`&&n){let e=/[\w.+-]+@[\w-]+(?:\.[\w-]+)+/.exec(t)?.[0];await a(``,{result:{env:{CLAUDE_CODE_OAUTH_TOKEN:n},...e?{account:{email:e}}:{}}})}else if(o===`codex`&&e===0){let e=await v.readFile(p.join(s,`auth.json`),`utf8`);await a(``,{result:{env:{CODEX_AUTH_JSON:e},account:C(e)}})}else console.error(`coder runner: ${o} sign-in ended (exit ${e}): ${JSON.stringify(E(t))}`),await a(``,{error:S?`Sign-in did not finish. Start again.`:`${o} sign-in could not start.`}).catch(()=>{});m.stdout.write(`Sign-in finished
|
|
8
|
+
`)}finally{clearTimeout(M),clearInterval(A);for(let e of y)m.off(e,u);i.abort(),u(),await v.rm(s,{recursive:!0,force:!0})}}var A=e({agentIdError:()=>P,agents:()=>z,regexError:()=>F});const j=e=>e.cwd?p.resolve(e.cwd):m.cwd(),M=e=>(Array.isArray(e)?e:(e??``).split(`,`)).map(e=>e.trim()).filter(Boolean),N=/^[a-z0-9][a-z0-9_-]*$/;function P(e,t){if(!N.test(t))return`Use lowercase letters, digits, - or _, starting with a letter or digit.`;let n=p.join(e,`.coder`,`agents`,t);if(h.existsSync(n)&&h.readdirSync(n).length>0)return`${p.relative(e,n)} is not empty; clear it to start over, or edit what is there.`}function F(e){try{new RegExp(e);return}catch{return`Not a valid regular expression.`}}function I(e,t){let n=o[e]?.sample;return{integration:e,type:t,appId:`${e}:sample`,installationId:`sample`,deliveryId:`sample-1`,actor:{id:`user-1`,login:`someone`,role:`member`},text:`Replace me with the text a real event would carry.`,...n?{chat:{thread:{_type:`chat:Thread`,adapterName:e,channelId:n.slice(0,n.lastIndexOf(`:`)),id:n,isDM:!1}}}:{}}}async function L(e,r={}){let i=j(r);if(!e&&r.askId&&(e=await r.askId(e=>P(i,e))),!e)throw new t(`invalid-option`,`Missing agent id.`,{hint:`Usage: coder agent init <id>`});let a=P(i,e);if(a)throw new t(`invalid-option`,a.includes(`not empty`)?a:`Agent id "${e}": ${a}`);let s=p.join(i,`.coder`,`agents`,e),c=r.askPicks?await r.askPicks(e):{...r.name?{name:r.name}:{},integrations:M(r.integrations).length?M(r.integrations):[Object.keys(o)[0]],events:{},matches:{},tools:r.tools??`comment`};if(!n.includes(c.tools))throw new t(`invalid-option`,`Unknown preset "${c.tools}"; valid: ${n.join(`, `)}`);let l={},u=M(r.events),d=e=>Object.keys(o[e]?.events??{});for(let e of c.integrations)if(!o[e])throw new t(`invalid-option`,`Unknown integration "${e}"; valid: ${Object.keys(o).join(`, `)}`);for(let e of u)if(!c.integrations.some(t=>d(t).includes(e)))throw new t(`invalid-option`,`No chosen integration has event "${e}".`,{hint:`Events per integration: coder agent integrations show <id>`});let f=Object.fromEntries(M(r.match).map(e=>{let n=e.indexOf(`=`);if(n<1)throw new t(`invalid-option`,`Bad --match "${e}"; use event=regex.`);let r=e.slice(n+1);if(F(r))throw new t(`invalid-option`,`Bad --match for ${e.slice(0,n)}: ${F(r)}`);return[e.slice(0,n),r]}));for(let e of c.integrations){let n=d(e),r=c.events[e]??(u.length?u.filter(e=>n.includes(e)):[n.includes(`mention`)?`mention`:n[0]]);for(let i of r)if(!n.includes(i))throw new t(`invalid-option`,`${e} has no event "${i}"; valid: ${n.join(`, `)}`);let i={...f,...c.matches[e]??{}},a=r.filter(e=>i[e]);r.length&&(l[e]={events:a.length?Object.fromEntries(r.map(e=>[e,!i[e]||{match:i[e]}])):r,tools:c.tools})}let m={...c.name?{name:c.name}:{},...r.description?{description:r.description}:{},permissions:r.permissions??`read-only`,integrations:l};await v.mkdir(s,{recursive:!0}),await v.writeFile(p.join(s,`agent.json`),`${JSON.stringify(m,null,2)}\n`),await v.writeFile(p.join(s,`system.md`),`You are ${c.name??e}.\n`);let h=p.join(_.tmpdir(),`coder-agent-samples`,e),g=[];for(let[e,t]of Object.entries(l)){let n=(Array.isArray(t.events)?t.events:Object.keys(t.events??{}))[0];await v.mkdir(h,{recursive:!0});let r=p.join(h,`sample-${e}-${n}.json`);await v.writeFile(r,`${JSON.stringify(I(e,n),null,2)}\n`),g.push(r)}return{id:e,dir:s,files:[`agent.json`,`system.md`],samples:g,integrations:Object.keys(l)}}function R(e){if(e===void 0||typeof e==`number`)return e;if(/^\d+$/.test(e))return Number(e);let n=/^(\d+)([dh])$/.exec(e);if(!n)throw new t(`invalid-option`,`Invalid --since value.`,{hint:`Use 7d, 24h, or milliseconds since epoch`});return Date.now()-Number(n[1])*(n[2]===`d`?864e5:36e5)}const z={list:(e={})=>e.server===void 0?r(j(e),o):a(e).agents.list(),async show(e,n={}){if(!e)throw new t(`invalid-option`,`Missing agent id.`,{hint:`Usage: coder agent show <id>`});if(n.server===void 0){let i=(await r(j(n),o)).find(t=>t.id===e);if(!i)throw new t(`invalid-option`,`No agent named "${e}".`,{hint:`List agents: coder agent list`});return i}let i=a(n),s=await i.agents.get(e),c=await i.agents.version(e,s.currentVersion);return{...s,definition:c.definition}},init:L,push:(e,t={})=>i(a(t),j(t),e),async run(e,n,i={}){if(i.wait&&i.server===void 0)throw new t(`invalid-option`,`--wait needs --server.`,{hint:`Offline runs print their reply as they finish`});if(!e||!n)throw new t(`invalid-option`,`Missing agent id or event file.`,{hint:`Usage: coder agent run <agent> <event.json>`});let l=j(i),u=typeof n==`string`?JSON.parse(await v.readFile(p.resolve(l,n),`utf8`)):n;if(i.server!==void 0){let t=a(i),n=await t.tasks.create({agent:e,event:u});if(!i.wait||!n.tasks.length)return n;let r=[];for(let e of n.tasks){let n=await t.tasks.wait(e,{onLog:i.onLog});r.push(n),i.onDone?.(n)}return r}let d=await r(l,o),m=d.find(t=>t.id===e);if(!m)throw new t(`invalid-option`,`No agent named "${e}".`);let h=f(u,d).find(t=>t.agent.id===e),g=i.flow??h?.flow;if(!g)throw new t(`invalid-option`,`Agent "${e}" does not match event "${u.type}".`);return c({cwd:l,agent:e,flow:g,task:{...s(m,g,u),tools:{},...h?.permissions?{permissions:h.permissions}:{}},post:!1})},runTask(e,t={}){let n=j(t);return m.env.CODER_LOGIN?k(e,n):m.env.CODER_PREPARE?u(e,n):l(e,n)},async usage(e={}){if(e.by&&![`agent`,`installation`,`engine`].includes(e.by))throw new t(`invalid-option`,`Invalid --by value.`,{hint:`Use agent, installation, or engine`});let n=e.by;if(e.server!==void 0)return a(e).usage({since:R(e.since),by:n});let[{localUsage:r},{usageSummary:i}]=await Promise.all([import(`./apps-B60OpAHX.js`).then(e=>e.At),import(`./apps-B60OpAHX.js`).then(e=>e.xn)]);return i(r(j(e)).map(([,e])=>e),R(e.since)??0,n)},integrations:{list:()=>Object.entries(o).map(([e,t])=>({id:e,description:t.description,events:Object.keys(t.events),tools:t.tools.presets.write})),show(e){if(!e)throw new t(`invalid-option`,`Missing integration id.`,{hint:`Usage: coder agent integrations show <id>`});let n=o[e];if(!n)throw new t(`invalid-option`,`Unknown integration "${e}".`,{hint:`List integrations: coder agent integrations list`});return{id:e,events:Object.fromEntries(Object.entries(n.events).map(([e,t])=>[e,t.description])),tools:n.tools.presets}}}};export{z as n,A as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./cli-
|
|
1
|
+
import{s as e}from"./cli-ZUdhZnuW.js";const t=e(`agent`,{tools:async()=>(await import(`./tools-B-2oi2wI.js`)).commandTools,list:async()=>(await import(`./list-CLtqMYPK.js`)).commandAgentList,ls:async()=>(await import(`./list-CLtqMYPK.js`)).commandAgentList,show:async()=>(await import(`./show-Cajmf606.js`)).commandAgentShow,run:async()=>(await import(`./run-CLy9a2MO.js`)).commandAgentRun,init:async()=>(await import(`./init-Dgj6V-aS.js`)).commandAgentInit,push:async()=>(await import(`./push-vt81gcxD.js`)).commandAgentPush,usage:async()=>(await import(`./usage-sx-FR0bz.js`)).commandAgentUsage,integrations:async()=>(await import(`./integrations-DsFX2KCq.js`)).commandAgentIntegrations},{menu:[{usage:`list`,blurb:`list local or server-owned agents`},{usage:`show <id>`,blurb:`one agent in full: settings, integrations, events, tools`},{usage:`init [id]`,blurb:`scaffold an agent folder in .coder/agents`},{usage:`push [id]`,blurb:`upload workspace agents to a Coder server`},{usage:`integrations <list|show>`,blurb:`the integration catalog: coder agent integrations --help`},{usage:`run <agent> <event.json>`,blurb:`run a recorded event through an agent, offline or on a server`},{usage:`usage`,blurb:`aggregate usage by agent, installation, or engine`}],description:[`Define and run agents from the CLI, the dashboard, or on GitHub, Slack and other platforms.`]},{aliases:{ls:`list`},nested:[`integrations`]});export{t as commandAgent};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e}from"./cli-
|
|
1
|
+
import{i as e}from"./cli-ZUdhZnuW.js";import{p as t}from"./output-BKeyLbvt.js";import{n}from"./models-CdvmuaLv.js";import{n as r}from"./add-CvBTpxgY.js";import i from"node:process";const a=e({name:`model alias`,help:{usage:`coder model alias <name> <spec> [--workspace]`,summary:`Save an alias for an engine spec, e.g. fast -> codex:luna. An alias may reuse a
|
|
2
2
|
built-in name to override it.`,flags:[[`--workspace`,`target <repo>/.coder/config.json instead of the user file`]]},options:r,args:2,run:({options:e,args:[t,r],cwd:i})=>n(i,t,r,e),print:o});function o(e){let n=t,r=`${e.provider} ${e.model}${e.effort?` (${e.effort})`:``}`;i.stdout.write(`aliased ${n.cyan(e.alias)} -> ${e.provider}:${e.model}${e.effort?`:${e.effort}`:``} ${n.dim(`= ${r}`)} ${n.dim(`(${e.file})`)}\n`)}export{a as commandModelAlias};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./cli-
|
|
1
|
+
import{s as e}from"./cli-ZUdhZnuW.js";const t=e(`server app`,{create:async()=>(await import(`./create-Z0QxarzN.js`)).commandServerAppCreate},{menu:[{usage:`create <integration>`,blurb:`create the built-in agent's public app`}],description:[`The built-in agent's apps, one per platform, shared by every workspace on this server.`],exampleCommand:`server app create`});export{t as commandServerApp};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{K as e}from"./config-D2FxHWwi.js";import{i as t,r as n}from"./cli-
|
|
1
|
+
import{K as e}from"./config-D2FxHWwi.js";import{i as t,r as n}from"./cli-ZUdhZnuW.js";import{a as r,p as i,s as a}from"./output-BKeyLbvt.js";import{i as o,n as s,s as c,t as l}from"./args-CxsMr9Un.js";import u from"node:process";const d={server:o,workspace:c,yes:s};function f(e,t){let n=i;if(!t.length)return void u.stdout.write(`${n.dim(`No approvals for task ${e}.`)}\n`);for(let e of t){let t=e.answered??`pending`;u.stdout.write(`${n.cyan(e.id)} ${t.padEnd(8)} ${n.dim(String(e.summary??``))}\n`)}let r=t.filter(e=>!e.answered);if(r.length){let e=r.length===1?r[0].id:`<approval-id>`;u.stdout.write(`\n${a([`Answer: coder task approve ${e} [--deny]`],n)}\n`)}}function p(t){let n=i;if(!t.length)return void u.stdout.write(`${n.dim(`No pending approvals.`)}\n\n${a([`Check tasks: coder task list`],n)}\n`);let o={id:Math.max(11,...t.map(e=>e.id.length)),task:Math.max(7,...t.map(e=>e.taskId.length))};u.stdout.write(n.bold(n.light(`${`approval-id`.padEnd(o.id)} ${`task-id`.padEnd(o.task)} age summary\n`)));for(let i of t){let t=i.createdAt?r(e(i.createdAt)):`-`;u.stdout.write(`${n.cyan(i.id.padEnd(o.id))} ${n.cyan(i.taskId.padEnd(o.task))} ${t.padEnd(5)} ${n.light(i.summary)}\n`)}let s=t.length===1?t[0].id:`<approval-id>`;u.stdout.write(`\n${a([`Answer: coder task approve ${s} [--deny]`],n)}\n`)}const m=t({name:`task approvals`,help:{usage:`coder task approvals [task-id] [--server [url]]`,summary:`Without a task id: pending approvals across all tasks. With one: that task's
|
|
2
2
|
permission escalations and how each was answered.`,flags:[n]},options:{...l,...d},args:1,run:async({options:e,args:[t]})=>{let{tasks:n}=await import(`./task-IoBYe7ok.js`).then(e=>e.t);return n.approvals(t,{...e,organization:e.workspace})},json:(e,{options:t,args:[n]})=>t.server===void 0&&n?e.map(({taskId:e,...t})=>t):t.server===void 0?e.map(({taskId:e,id:t,summary:n,createdAt:r})=>({taskId:e,id:t,summary:n,createdAt:r})):e,print(e,{options:t,args:[n]}){if(t.server===void 0)return n?f(n,e):p(e);if(!e.length)return void u.stdout.write(`${i.dim(`No pending approvals.`)}\n\n${a([`Check tasks: coder task list`],i)}\n`);for(let t of e)u.stdout.write(`${t.taskId} ${JSON.stringify(t)}\n`)}});export{m as commandApprovals};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./cli-
|
|
1
|
+
import{i as e}from"./cli-ZUdhZnuW.js";import{s as t,t as n}from"./args-CxsMr9Un.js";import r from"node:process";const i=e({name:`connection approve`,help:{usage:`coder connection approve <name> [--agent <id>] [--cwd <dir>]`,summary:`Approve an MCP server this repository or one of its agents declares, on this machine. A changed endpoint or command needs approval again.`,flags:[[`--agent <id>`,`select the agent when names have different definitions`]]},options:{...n,agent:t},args:1,run:async({cwd:e,args:[t],options:n})=>{let{connection:r}=await import(`./connection-BCRJHTgp.js`).then(e=>e.n);return r.approve(t,{cwd:e,agent:n.agent})},print:({name:e})=>r.stdout.write(`Approved MCP server "${e}" on this machine.\n`)});export{i as commandConnectionApprove};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e,r as t}from"./cli-
|
|
1
|
+
import{i as e,r as t}from"./cli-ZUdhZnuW.js";import{p as n}from"./output-BKeyLbvt.js";import{i as r,n as i,s as a,t as o}from"./args-CxsMr9Un.js";import s from"node:process";const c={server:r,workspace:a,yes:i},l=e({name:`task approve`,help:{usage:`coder task approve [task-id] <approval-id> [--deny] [--server [url]]`,summary:`Answer an escalated permission request. Accepts by default; --deny rejects it.
|
|
2
2
|
Approval ids are unique, so the task id is optional.`,flags:[[`--deny`,`reject the request instead of accepting`],t]},options:{...o,deny:i,...c},args:2,run:async({options:e,args:[t,n]})=>{let{tasks:r}=await import(`./task-IoBYe7ok.js`).then(e=>e.t);return r.approve(t,n,{...e,organization:e.workspace})},print:(e,{options:t,args:r})=>s.stdout.write(t.server===void 0?`${t.deny?`Denied`:`Approved`} ${n.cyan(e.approvalId)} on task ${n.cyan(e.taskId)}.\n`:`${t.deny?`Denied`:`Approved`} ${n.cyan(r[1])}.\n`)});export{l as commandApprove};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{Ft as e,Rt as t,en as n,qi as r}from"./core-DwsAMCnL.js";import{$ as i,$t as a,A as o,An as s,B as c,Ct as l,En as u,H as d,Hn as f,In as p,J as m,L as h,Ln as g,Mt as _,N as v,Nn as y,Nt as b,O as x,Ot as ee,Pt as te,Q as ne,Qt as re,St as ie,Tt as S,U as ae,V as oe,Vn as C,W as se,Wn as ce,Y as le,Yt as ue,_n as de,_t as fe,an as pe,b as me,bn as he,ct as ge,en as _e,et as ve,ft as ye,gn as be,hn as xe,ht as Se,in as Ce,j as we,jn as Te,kn as Ee,l as w,ln as De,mt as Oe,nn as ke,on as T,ot as Ae,pn as E,q as je,rt as Me,sn as Ne,st as Pe,tn as Fe,vn as Ie,wn as Le,wt as Re,xt as ze,y as Be,yn as Ve,zn as He}from"./config-D2FxHWwi.js";import{H as Ue,b as We,d as Ge,h as Ke,o as qe,r as Je,u as Ye}from"./dispatch-D3Dqxijf.js";import{t as Xe}from"./types-B42Oh0zF.js";import{a as Ze,c as Qe,f as $e,i as et,l as tt,n as nt,r as rt,t as it,u as at}from"./load-CRmQB1LD.js";import{l as ot,s as st,u as ct}from"./slack-C_RlVDz7.js";import{i as lt,n as ut,t as dt}from"./integrations-D3OgJk6Y.js";import{i as ft,t as pt}from"./discover-CBP4Uw0N.js";import{a as mt,c as ht,l as gt,n as _t,o as vt}from"./actions-5TDwmn_z.js";import{_ as yt,g as bt,i as xt,r as St}from"./executor-5j-Ewzzb.js";import{i as Ct}from"./mcp-YhyTUMIM.js";import{n as wt,o as Tt,r as Et,t as Dt}from"./exec-BsXFIdTl.js";import{f as Ot,r as kt}from"./task-CB-j4EO8.js";import{t as At}from"./match-Kt3vFTl1.js";import{a as jt,i as Mt}from"./local-XNsjb-UM.js";import{a as D,c as Nt,d as O,f as Pt,i as Ft,l as It,m as Lt,n as Rt,p as zt,r as Bt,u as Vt}from"./http-BYMXT_p6.js";import{n as Ht}from"./env-C_DoQYl5.js";import{C as Ut,S as k,b as A,c as Wt,d as Gt,f as Kt,g as qt,l as Jt,m as Yt,o as Xt,r as Zt,s as Qt,t as $t,u as en,w as tn,x as nn,y as rn}from"./runners-UNKPlmYE.js";import{t as an}from"./log-view-DB4nXHXO.js";import{n as on,t as sn}from"./chat-Bbzlea60.js";import{A as cn,B as ln,C as un,D as dn,F as fn,G as pn,H as mn,I as hn,J as gn,K as _n,L as vn,M as j,N as yn,O as bn,P as xn,Q as Sn,R as Cn,S as wn,T as Tn,U as En,V as Dn,W as On,X as M,Y as kn,Z as An,_ as jn,b as Mn,c as Nn,d as N,f as Pn,g as Fn,h as In,i as P,j as F,k as I,m as L,n as R,o as Ln,p as z,q as Rn,r as zn,s as Bn,t as B,u as Vn,v as Hn,w as Un,x as Wn,y as Gn}from"./schema-BSlHRFSP.js";import{t as Kn,u as qn}from"./dist-BTornX7Y.js";import V from"node:path";import Jn from"node:process";import{fileURLToPath as Yn,pathToFileURL as Xn}from"node:url";import H,{accessSync as Zn,constants as Qn,existsSync as $n,readFileSync as er,statSync as tr}from"node:fs";import{execFile as nr,spawn as rr}from"node:child_process";import{createHash as ir,createHmac as ar,randomBytes as or,randomUUID as sr}from"node:crypto";import cr from"node:os";import lr from"node:net";import{isDeepStrictEqual as ur,promisify as dr}from"node:util";import{AsyncLocalStorage as fr}from"node:async_hooks";import{brotliDecompressSync as pr,constants as mr,createGzip as hr,gunzipSync as gr,gzipSync as _r,inflateSync as vr}from"node:zlib";import yr from"os";import br from"fs";import xr from"net";import Sr from"tls";import Cr from"crypto";import wr from"stream";import{performance as Tr}from"perf_hooks";const Er=e=>`nonce:${ct(e)}`;function Dr(e){let t=e.config.encryptionKey??e.config.adminToken;if(!t)throw Error(`A server secret is required to issue browser transactions.`);return t}function Or(e,t){return ar(`sha256`,Dr(e)).update(t).digest(`base64url`)}async function kr(e,t,n,r,i=6e5){let a=(e.now??Date.now)(),o={kind:t,user:n,organization:e.organizationId,nonce:or(18).toString(`base64url`),exp:a+i},s=jt(o),c=`${s}.${Or(e,s)}`;return await e.store.put(`delivery`,Er(c),{at:a,target:r},{ttlMs:i}),c}function Ar(e,t){let[n,r,i]=t.split(`.`);if(!(!n||!r||i!==void 0)&&ot(Or(e,n),r))try{return Mt(n)}catch{return}}async function jr(e,t){let n=await e.store.get(`delivery`,Er(t));return n&&`target`in n?n.target:void 0}function Mr(e,t){return Ar(e,t)?.organization}function Nr(e,t){return Ar(e,t)?.user}async function Pr(e,t,n,r,i){let a=Ar(e,t),o=(e.now??Date.now)();return!a||a.kind!==n||a.user!==r||a.organization!==e.organizationId||a.exp<o||await jr(e,t)!==i?!1:e.store.take(`delivery`,Er(t))}async function Fr(e,t,n,r){let i=Ar(e,t),a=(e.now??Date.now)();if(!i||i.kind!==n||i.user!==`*`&&i.user!==r||i.organization!==e.organizationId||i.exp<a)return;let o=await jr(e,t);return o!==void 0&&await e.store.take(`delivery`,Er(t))?o:void 0}async function Ir(e,t,n,r){let i=Ar(e,t),a=(e.now??Date.now)();if(!(!i||i.kind!==n||i.user!==`*`&&i.user!==r||i.organization!==e.organizationId||i.exp<a))return jr(e,t)}const Lr=[`GET`,`POST`,`PUT`,`PATCH`,`DELETE`];function Rr(e,t,n,r){return{method:e,pattern:t,handler:n,...r?{guard:r}:{}}}function zr(e,t,n){return t.map(t=>({...t,pattern:e+t.pattern,...n&&!t.guard?{guard:n}:{}}))}function Br(e,t,n){return[e,`${e}/*`].flatMap(e=>Lr.map(r=>Rr(r,e,t,n)))}function Vr(e,t){let[n,r]=[e.split(`/`),t.split(`/`)],i=n.at(-1)===`*`;if(i?r.length<n.length:r.length!==n.length)return;let a={};for(let e=0;e<n.length;e++){let[t,o]=[n[e],r[e]];if(t===`*`&&i){a[`*`]=r.slice(e).join(`/`);break}if(t[0]===`:`){if(!o)return;a[t.slice(1)]=o}else if(t!==o)return}return a}async function Hr(e,t,n,r){for(let i of e){let a=Vr(i.pattern,r.pathname);if(!a)continue;for(let e of Object.keys(a))e!==`*`&&(a[e]=decodeURIComponent(a[e]));let o=e.filter(e=>e.pattern===i.pattern),s=o.find(e=>e.method===t.method),c=(s??i).guard;if(c){let e=await c(t,n,a,r);if(e instanceof Response)return e;n=e}if(s)return s.handler(t,n,a,r);let l=Nt();return l.headers.set(`allow`,[...new Set(o.map(e=>e.method))].join(`, `)),l}}const Ur=`coder`;function Wr(e,t){let n=e??`/dash`;try{let e=new URL(n,t);return e.origin===t&&!n.includes(`\\`)&&!/^\/[/\\]/.test(e.pathname)?`${e.pathname}${e.search}${e.hash}`:`/dash`}catch{return`/dash`}}const Gr=`The Coder dashboard is not built; run bun run build.`,Kr=[`default-src 'self'`,`style-src 'self' 'unsafe-inline'`,`img-src 'self' data:`,`connect-src 'self'`,`object-src 'none'`,`base-uri 'none'`,`frame-ancestors 'none'`,`form-action ${[`'self'`,...new Set(Object.values(dt).flatMap(e=>e.app.postOrigins??[]))].join(` `)}`];function qr(e){let t=V.dirname(Yn(e));for(;;){let e=V.join(t,`package.json`);if($n(e))try{if(JSON.parse(er(e,`utf8`)).name===`@wular/coder`)return t}catch{}let n=V.dirname(t);if(n===t)break;t=n}throw Error(`Cannot locate the Coder package root.`)}function Jr(e=import.meta.url){let t=V.dirname(Yn(e)),n=qr(e),r=Yn(new URL(`./dash/standalone/server/entry.js`,import.meta.url));return[V.resolve(r,`../../..`),V.join(n,`dist/dash`),V.join(t,`../dash`)].find(e=>$n(Yr(e)))}const Yr=e=>V.join(e,`standalone/server/manifest.json`);function Xr(e){let t=V.join(e,`standalone/server/entry.js`);if(!$n(t))throw Error(`The Coder dashboard server bundle is missing.`);return t}async function Zr(e){let t=Jr(e);if(!t)throw Error(Gr);let n=JSON.parse(er(Yr(t),`utf8`));return{handler:await(await import(Xn(Xr(t)).href)).createRequestHandler({root:V.join(t,`standalone`)}),manifest:n}}var Qr=class{hosts=new Map};function $r(e){let t=Jr(e);if(t)try{return tr(Yr(t)).mtimeMs}catch{return}}function ei(e,{hosts:t}){let n=Date.now(),r=t.get(e);if(r&&n-r.checked<1e3)return r.host;let i=$r(e);if(r&&(r.checked=n,i===void 0||i===r.build))return r.host;let a={build:i,checked:n,host:Zr(e)};return t.set(e,a),a.host}function ti(e,t){let n=e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e;return!!(Vr(`/assets/*`,n)||Vr(`/dash/*`,n)||t.routes.some(e=>Vr(e.route,n)))}async function ni(e,t=new Qr){let n=await ei(import.meta.url,t).catch(()=>{t.hosts.delete(import.meta.url)}),r=e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e;return!!n?.manifest.routes.some(e=>Vr(e.route,r))}const ri=/<script(?![^>]*\bsrc=)[^>]*>([\s\S]*?)<\/script>/gi,ii=e=>`'sha256-${ir(`sha256`).update(e).digest(`base64`)}'`;function ai(e){let t=[...e.matchAll(ri)].map(e=>ii(e[1]));return[...Kr,`script-src 'self' ${t.join(` `)}`.trim()].join(`; `)}function oi(e,t){return t===`gzip`?gr(e).toString(`utf8`):t===`br`?pr(e).toString(`utf8`):t===`deflate`?vr(e).toString(`utf8`):e.toString(`utf8`)}const si=e=>(e.headers.get(`accept-encoding`)??``).split(`,`).some(e=>{let[t,...n]=e.split(`;`).map(e=>e.trim()),r=n.find(e=>e.startsWith(`q=`));return t===`gzip`&&(!r||Number(r.slice(2))>0)});function ci(e){e.set(`content-encoding`,`gzip`),/accept-encoding/i.test(e.get(`vary`)??``)||e.append(`vary`,`accept-encoding`)}function li(e){let t=hr(),n=e=>new Promise(n=>{t.write(e),t.flush(mr.Z_SYNC_FLUSH,()=>n())}),r=!1;return new ReadableStream({start(e){t.on(`data`,t=>e.enqueue(new Uint8Array(t))),t.on(`end`,()=>e.close()),t.on(`error`,t=>e.error(t))},async pull(){if(r)return;let{done:i,value:a}=await e.read();if(!i)return n(a);r=!0,t.end()},cancel(n){return t.destroy(),e.cancel(n)}})}function ui(e,t,n,r){n.set(`content-security-policy`,[...Kr,`script-src 'self' 'nonce-${r}'`].join(`; `));let i=t.body;return si(e)&&(ci(n),i=li(i.getReader())),new Response(i,{status:t.status,statusText:t.statusText,headers:n})}async function di(e,t,n){let r=new Headers(t.headers);if(r.set(`x-content-type-options`,`nosniff`),!(r.get(`content-type`)??``).includes(`text/html`))return new Response(t.body,{status:t.status,statusText:t.statusText,headers:r});r.set(`cache-control`,`no-store`),r.delete(`content-length`);let i=r.get(`content-encoding`);if(!i&&t.body)return ui(e,t,r,n);let a=Buffer.from(await t.arrayBuffer()),o=oi(a,i);r.set(`content-security-policy`,ai(o));let s=i?new Uint8Array(a):o;return!i&&o.length>1024&&si(e)&&(s=new Uint8Array(_r(o)),ci(r)),new Response(s,{status:t.status,statusText:t.statusText,headers:r})}async function fi(e,t=import.meta.url,n=new Qr){let r;try{r=await ei(t,n)}catch(e){if(n.hosts.delete(t),e instanceof Error&&e.message===Gr)return;throw e}if(!ti(new URL(e.url).pathname,r.manifest))return;let i=or(16).toString(`base64`),a=new Headers(e.headers);return a.set(`content-security-policy`,`script-src 'nonce-${i}'`),di(e,await r.handler(new Request(e,{headers:a})),i)}const pi=(e,t,n=!1)=>`coder_admin=${encodeURIComponent(t)}; HttpOnly; SameSite=Strict; Path=/${new URL(e.url).protocol===`https:`?`; Secure`:``}${n?`; Max-Age=0`:``}`;function mi(e,t){let n=e.headers.get(`x-forwarded-host`)?.split(`,`,1)[0]?.trim();if(!n)return t.origin;let r=e.headers.get(`x-forwarded-proto`)?.split(`,`,1)[0]?.trim()??t.protocol.slice(0,-1);try{return new URL(`${r}://${n}`).origin}catch{return t.origin}}async function hi(e,t,n,r){let i=await e.formData(),a=i.get(`token`),o=i.get(`return`),s=Wr(typeof o==`string`&&o.startsWith(`/`)?o:null,new URL(e.url).origin);return typeof a==`string`?a?Gh(a,t.config.adminToken)?new Response(null,{status:303,headers:{location:s,"set-cookie":pi(e,a)}}):zt(`/dash?token=rejected`,303):new Response(null,{status:303,headers:{location:s,"set-cookie":pi(e,``,!0)}}):zt(`/dash?token=rejected`,303)}async function gi(e,t,n,r){return zt(!t.auth||t.session?`/dash`:r.searchParams.has(`signed_out`)?`/login?signed_out=1`:`/login`)}async function _i(e,t,n,r){let i=`/api/auth/sign-in?return=${encodeURIComponent(Wr(r,n.origin))}`,a=t.config.publicUrl;return a&&new URL(mi(e,n)).host!==new URL(a).host?zt(new URL(i,a).href):t.auth.handler(new Request(`${n.origin}${i}`))}async function vi(e,t,n,r){return t.auth&&!r.searchParams.has(`signed_out`)&&!r.searchParams.has(`error`)?_i(e,t,r,r.searchParams.get(`return`)):await fi(xi(e,t),void 0,t.dashboardHosts)??new Response(`UI is not built`,{status:503})}async function yi(e,t,n,r){return await fi(xi(e,t),void 0,t.dashboardHosts)??new Response(`UI is not built`,{status:503})}async function bi(e,t,n,r){return await fi(xi(e,t),void 0,t.dashboardHosts)??It()}function xi(e,t){let n=new Headers(e.headers);n.set(`x-coder-mode`,Yh(t));let r=t.session?.organizations.find(e=>e.id===t.organizationId);return r?n.set(`x-coder-organization`,r.slug):n.delete(`x-coder-organization`),new Request(e,{headers:n})}async function Si(e,t,n){return await fi(xi(e,t),void 0,t.dashboardHosts)??It()}function Ci(e,t){let n=e.organizations.find(e=>e.slug===t||e.id===t);return n?{...e,organizationId:n.id,role:n.role}:{...e,organizationId:void 0,role:void 0,organizationDenied:!0}}function U(e,t){return t===e.organizationId||!e.scope?e:e.scope(t)}async function wi(e,t){if(!e.appRecord){let n=await e.store.get(`app`,t);return n&&{ctx:e,app:n}}let n=await e.appRecord(t);return n&&{ctx:U(e,n.organizationId),app:n.app}}async function Ti(e,t){if(e.boundInstallation?.installation.id===t)return{...U(e,e.boundInstallation.organizationId),boundInstallation:e.boundInstallation};if(!e.installationOrganization)return e;let n=await e.installationOrganization(t);return n===void 0?void 0:U(e,n)}const Ei=`/connections/oauth/client.json`,Di=`/connections/oauth/callback`,Oi=6e5,ki=e=>`connection-oauth:${e}`;async function Ai(e,t,n){await e.store.put(`delivery`,`connection-authorized:${ir(`sha256`).update(n).digest(`hex`)}`,{at:(e.now??Date.now)(),target:`${t.id}:${t.createdAt}`},{ttlMs:Oi})}const ji=f().check(t(1)),Mi=p({resource:ji,authorization_servers:s(ji).check(t(1)),scopes_supported:g(s(ji))}),Ni=p({issuer:ji,authorization_endpoint:ji,token_endpoint:ji,registration_endpoint:g(ji),userinfo_endpoint:g(ji),scopes_supported:g(s(ji)),code_challenge_methods_supported:g(s(ji)),client_id_metadata_document_supported:g(Te()),authorization_response_iss_parameter_supported:g(Te())}),Pi=Ee([`none`,`client_secret_basic`,`client_secret_post`]),Fi=p({client_id:ji,client_secret:g(ji),token_endpoint_auth_method:g(Pi),redirect_uris:g(s(ji))}),Ii=p({name:g(ji),preferred_username:g(ji),email:g(ji)});function Li(e,t){let n=Ie(t);if(!Ne(n,!!e.local))throw Error(`OAuth endpoint is not allowed.`);return n}async function Ri(e,t,n,r=!1){for(let i of[...new Set(n)]){Li(e,i);let n=await de(t,i,{headers:{accept:`application/json`}});if(n.status!==404&&n.status!==405&&!(r&&(n.status===401||n.status===403))){if(!n.ok)throw Error(`OAuth metadata discovery failed.`);return n.json()}}if(!r)throw Error(`OAuth metadata is unavailable.`)}function zi(e){let t={},n=``;for(let r of e?.matchAll(/(?:^|,)\s*(?:([\w-]+)\s+)?([\w-]+)\s*=\s*(?:"((?:[^"\\]|\\.)*)"|([^\s,]+))/g)??[]){if(r[1]){if(n===`bearer`)break;n=r[1].toLowerCase()}n===`bearer`&&(t[r[2].toLowerCase()]=r[3]?.replace(/\\(.)/g,`$1`)??r[4])}return t}async function Bi(e,t,n=!1,r){let i=Li(e,t),a=e.fetch??fetch;if(r===void 0){let e=await de(a,i.href);r=e.status===401?e.headers.get(`www-authenticate`)??``:``,await e.body?.cancel()}let o=zi(r),s=await Ri(e,a,o.resource_metadata?[o.resource_metadata]:[i.origin+`/.well-known/oauth-protected-resource`+(i.pathname===`/`?``:i.pathname),i.origin+`/.well-known/oauth-protected-resource`],n&&!o.resource_metadata);if(s===void 0)return;let c=Mi.parse(s);if(Li(e,c.resource).origin!==i.origin)throw Error(`OAuth resource changed origin.`);return{resource:c,params:o}}function Vi(e){if(e.local)return`http://localhost:${e.local.port}`;if(e.config.publicUrl)return Ie(e.config.publicUrl).origin;throw Error(`PUBLIC_URL or a local server is required for OAuth.`)}function Hi(e){let t=Vi(e);return{client_name:e.config.name??`Coder`,redirect_uris:[t+Di],grant_types:[`authorization_code`,`refresh_token`],response_types:[`code`],token_endpoint_auth_method:`none`}}function Ui(e,t){return!t.config.publicUrl||Ie(t.config.publicUrl).protocol!==`https:`?It():D({client_id:Ie(t.config.publicUrl).origin+Ei,...Hi(t)})}function Wi(e){if(e.session)return e.session.user.id;if(e.local&&!e.auth)return`local`;throw Error(`Sign in before authorizing a connection.`)}function Gi(e,t){if(!e||e.createdAt!==t.createdAt||e.owner!==t.owner||e.auth!==`oauth`||e.provider!==`mcp`||JSON.stringify(e.endpoint)!==JSON.stringify(t.endpoint))throw Error(`The connection changed during authorization.`)}async function Ki(e,t,n){let r=await e.get(`delivery`,ki(t));if(!r||!(`target`in r)||r.target!==n)throw Error(`The authorization attempt was superseded or expired.`)}async function qi(e,t,n){let r=Wi(e);if(t.auth!==`oauth`||t.provider!==`mcp`||!t.endpoint||!(`url`in t.endpoint)||typeof t.endpoint.url!=`string`||t.owner&&t.owner!==r)throw Error(`This connection cannot be authorized.`);let i=e.fetch??fetch,{resource:a,params:o}=n??await Bi(e,t.endpoint.url),s=a.authorization_servers[0],c=Li(e,s);if(c.search)throw Error(`OAuth issuer cannot contain a query.`);let l=c.pathname.replace(/\/$/,``),u=Ni.parse(await Ri(e,i,[c.origin+`/.well-known/oauth-authorization-server`+l,c.origin+`/.well-known/openid-configuration`+l,c.origin+l+`/.well-known/openid-configuration`]));if(u.issuer!==s)throw Error(`OAuth issuer mismatch.`);if(!u.code_challenge_methods_supported?.includes(`S256`))throw Error(`OAuth server does not support PKCE S256.`);Li(e,u.authorization_endpoint),Li(e,u.token_endpoint),u.registration_endpoint&&Li(e,u.registration_endpoint),u.userinfo_endpoint&&Li(e,u.userinfo_endpoint);let d=t.secret?A(e.config,t.secret):void 0,f=d?.issuer===s&&d.clientId?{clientId:d.clientId,clientSecret:d.clientSecret,tokenEndpointAuthMethod:d.tokenEndpointAuthMethod}:void 0;if(!f&&u.client_id_metadata_document_supported&&e.config.publicUrl&&Ie(e.config.publicUrl).protocol===`https:`&&(f={clientId:Ie(e.config.publicUrl).origin+Ei,tokenEndpointAuthMethod:`none`}),!f){if(!u.registration_endpoint)throw Error(`OAuth server does not support client registration.`);let t=await de(i,u.registration_endpoint,{method:`POST`,headers:{"content-type":`application/json`,accept:`application/json`},body:JSON.stringify(Hi(e))});if(!t.ok)throw Error(`OAuth client registration failed.`);let n=Fi.parse(await t.json()),r=n.token_endpoint_auth_method??`client_secret_basic`;if(r!==`none`&&!n.client_secret)throw Error(`OAuth registration omitted the client secret.`);if(n.redirect_uris&&!n.redirect_uris.includes(Vi(e)+Di))throw Error(`OAuth registration changed the redirect URI.`);f={clientId:n.client_id,clientSecret:n.client_secret,tokenEndpointAuthMethod:r}}let p={issuer:s,authorizationEndpoint:u.authorization_endpoint,tokenEndpoint:u.token_endpoint,resource:a.resource,...f,scope:o.scope??a.scopes_supported?.join(` `)??u.scopes_supported?.join(` `)},m=k(e.config,p),h=or(18).toString(`base64url`);await e.store.withAppLock(`connection:${t.id}`,async n=>{Gi(await n.get(`connection`,t.id),t),await n.put(`delivery`,ki(t.id),{at:(e.now??Date.now)(),target:h},{ttlMs:Oi})});let g=or(32).toString(`base64url`),_=await kr(e,`connection-oauth`,r,k(e.config,{id:t.id,attempt:h,secret:m,createdAt:t.createdAt,endpoint:t.endpoint,owner:t.owner,verifier:g,redirectUri:Vi(e)+Di,userinfo:u.userinfo_endpoint,requireIssuer:u.authorization_response_iss_parameter_supported===!0}),Oi),v=new URL(p.authorizationEndpoint),y={response_type:`code`,client_id:p.clientId,redirect_uri:Vi(e)+Di,state:_,code_challenge:ir(`sha256`).update(g).digest(`base64url`),code_challenge_method:`S256`,resource:p.resource};for(let[e,t]of Object.entries(y))v.searchParams.set(e,t);return p.scope!==void 0&&v.searchParams.set(`scope`,p.scope),v.href}async function Ji(e,t,n){let r=t,i=e=>zt(`${Ig(Pg(r),`/settings/connections`)}?outcome=${e}`);try{let e=n.searchParams.get(`state`)??``,a=Mr(t,e);if(t.auth&&(!a||!t.session?.organizations.some(e=>e.id===a)))return i(`invalid-state`);let o=t.session?.organizations.find(e=>e.id===a),s=a?{...U(t,a),session:t.session&&{...t.session,organizationId:a,role:a===t.session.organizationId?t.session.role:o.role}}:t;r=s;let c=await Fr(s,e,`connection-oauth`,Wi(s));if(!c)return i(`invalid-state`);let l=A(s.config,c);if(!l.owner&&!Uh(s))return i(`failed`);let u=A(s.config,l.secret),d=n.searchParams.get(`iss`);if((l.requireIssuer||d!==null)&&d!==u.issuer)return i(`failed`);if(n.searchParams.has(`error`))return i(n.searchParams.get(`error`)===`access_denied`?`denied`:`failed`);let f=n.searchParams.get(`code`);if(!f)return i(`failed`);Gi(await s.store.get(`connection`,l.id),l),await Ki(s.store,l.id,l.attempt);let p=s.fetch??fetch,m=await Ve(p,u,new URLSearchParams({grant_type:`authorization_code`,code:f,redirect_uri:l.redirectUri,code_verifier:l.verifier})),h=m.preferred_username??m.email??m.name;if(!h&&l.userinfo)try{let e=await de(p,l.userinfo,{headers:{authorization:`Bearer ${m.access_token}`,accept:`application/json`}});if(e.ok){let t=Ii.parse(await e.json());h=t.preferred_username??t.email??t.name}}catch{}return await s.store.withAppLock(`connection:${l.id}`,async t=>{let n=await t.get(`connection`,l.id);Gi(n,l),await Ki(t,l.id,l.attempt),await t.put(`connection`,n.id,{...n,secret:k(s.config,he(u,m,(s.now??Date.now)())),account:h??n.account,broken:void 0,updatedAt:(s.now??Date.now)()}),await t.delete(`delivery`,ki(l.id)),await Ai({...s,store:t},n,e)}),i(`connected`)}catch{return i(`failed`)}}async function Yi(e,t,n,r=!1){return r?[]:(await gm(e,t)).filter(e=>n===void 0||n.includes(e.id)).map(e=>e.id)}function Xi(e){if(typeof e!=`string`||!e)return{ok:!1,detail:`A folder path is required`};let t=e===`~`?cr.homedir():e.startsWith(`~/`)?V.join(cr.homedir(),e.slice(2)):e;if(!V.isAbsolute(t))return{ok:!1,detail:`The folder path must be absolute`};let n=V.normalize(t);try{return H.statSync(n).isDirectory()?(H.accessSync(n,H.constants.R_OK),{ok:!0,folder:{path:n,name:V.basename(n)}}):{ok:!1,detail:`The path is not a directory`}}catch{return{ok:!1,detail:`The folder does not exist or is not readable`}}}function Zi(e){let t=new Map,n=[...Pe(e),...Ae(e,{migrate:!1})].sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt));for(let e of n){let n=Xi(e.cwd);if(!(!n.ok||t.has(n.folder.path))&&(t.set(n.folder.path,{...n.folder,recent:Date.parse(e.createdAt)}),t.size===8))break}return{current:{path:e,name:V.basename(e)},recent:[...t.values()],picker:!!$i()}}const Qi=e=>(process.env.PATH??``).split(V.delimiter).some(t=>t&&H.existsSync(V.join(t,e)));function $i(){let e=`Choose a folder for the task`;if(process.platform===`darwin`)return[`osascript`,[`-e`,`tell application "System Events"`,`-e`,`activate`,`-e`,`POSIX path of (choose folder with prompt "${e}")`,`-e`,`end tell`]];if(process.platform===`win32`)return[`powershell`,[`-NoProfile`,`-Command`,`Add-Type -AssemblyName System.Windows.Forms; $d = New-Object System.Windows.Forms.FolderBrowserDialog; $d.Description = '${e}'; if ($d.ShowDialog() -eq 'OK') { $d.SelectedPath }`]];if(Qi(`zenity`))return[`zenity`,[`--file-selection`,`--directory`,`--title=${e}`]];if(Qi(`kdialog`))return[`kdialog`,[`--getexistingdirectory`,cr.homedir(),`--title`,e]]}async function ea(){let e=$i();if(!e)return{ok:!1,detail:`This machine has no folder dialog; type a path instead`};try{let{stdout:t}=await dr(nr)(e[0],e[1],{timeout:6e5}),n=t.trim().replace(/(.)[\\/]+$/,`$1`);return n?Xi(n):{ok:!1,detail:``}}catch{return{ok:!1,detail:``}}}function ta(e){let t=/^\w[\w.-]*@([\w.-]+):(?!\/)([^?#]+)$/.exec(e),n=t||!URL.canParse(e)?void 0:new URL(e);if(!t&&(!n||![`https:`,`ssh:`].includes(n.protocol)||n.password||n.search||n.hash))return;let[r,i]=t?[t[1],t[2]]:[n.port?`${n.hostname}_${n.port}`:n.hostname,n.pathname],a=i.replace(/(\.git)?\/?$/,``).split(`/`).filter(Boolean);if(!(!/^[a-z0-9][a-z0-9._-]*$/i.test(r)||a.length<2||!a.every(e=>/^[\w.-]+$/.test(e)&&!/^\.+$/.test(e))))return[r.toLowerCase(),...a]}async function na(e){let t=typeof e==`string`?e.trim():``,n=ta(t);if(!n)return{ok:!1,detail:`Use an https or ssh git URL, like https://github.com/owner/repo`};let r=ne(`checkouts`,...n),i=AbortSignal.timeout(6e5),a={...process.env,GIT_TERMINAL_PROMPT:`0`,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND??`ssh -o BatchMode=yes`},o=e=>dr(nr)(`git`,e,{env:a,signal:i,maxBuffer:67108864});try{await Ot(r,async()=>{if(H.existsSync(V.join(r,`.git`))){await o([`-C`,r,`remote`,`set-url`,`origin`,t]),await o([`-C`,r,`fetch`,`origin`]);return}let e=await H.promises.mkdtemp(`${r}-clone-`);try{await o([`clone`,`--`,t,e]),await H.promises.rename(e,r)}finally{await H.promises.rm(e,{recursive:!0,force:!0})}})}catch(e){let t=e;if(i.aborted)return{ok:!1,detail:`The clone took longer than 10 minutes`};if(t.code===`ENOENT`&&!t.stderr)return{ok:!1,detail:`Git is not installed on this machine`};let n=String(t.stderr??t.message).split(`
|
|
1
|
+
import{Ft as e,Rt as t,en as n,qi as r}from"./core-DwsAMCnL.js";import{$ as i,$t as a,A as o,An as s,B as c,Ct as l,En as u,H as d,Hn as f,In as p,J as m,L as h,Ln as g,Mt as _,N as v,Nn as y,Nt as b,O as x,Ot as ee,Pt as te,Q as ne,Qt as re,St as ie,Tt as S,U as ae,V as oe,Vn as C,W as se,Wn as ce,Y as le,Yt as ue,_n as de,_t as fe,an as pe,b as me,bn as he,ct as ge,en as _e,et as ve,ft as ye,gn as be,hn as xe,ht as Se,in as Ce,j as we,jn as Te,kn as Ee,l as w,ln as De,mt as Oe,nn as ke,on as T,ot as Ae,pn as E,q as je,rt as Me,sn as Ne,st as Pe,tn as Fe,vn as Ie,wn as Le,wt as Re,xt as ze,y as Be,yn as Ve,zn as He}from"./config-D2FxHWwi.js";import{H as Ue,b as We,d as Ge,h as Ke,o as qe,r as Je,u as Ye}from"./dispatch-D3Dqxijf.js";import{t as Xe}from"./types-B42Oh0zF.js";import{a as Ze,c as Qe,f as $e,i as et,l as tt,n as nt,r as rt,t as it,u as at}from"./load-CRmQB1LD.js";import{l as ot,s as st,u as ct}from"./slack-C_RlVDz7.js";import{i as lt,n as ut,t as dt}from"./integrations-D3OgJk6Y.js";import{i as ft,t as pt}from"./discover-CBP4Uw0N.js";import{a as mt,c as ht,l as gt,n as _t,o as vt}from"./actions-5TDwmn_z.js";import{_ as yt,g as bt,i as xt,r as St}from"./executor-5j-Ewzzb.js";import{i as Ct}from"./mcp-YhyTUMIM.js";import{n as wt,o as Tt,r as Et,t as Dt}from"./exec-BsXFIdTl.js";import{f as Ot,r as kt}from"./task-DXHKWB_J.js";import{t as At}from"./match-Kt3vFTl1.js";import{a as jt,i as Mt}from"./local-ccKBhpQc.js";import{a as D,c as Nt,d as O,f as Pt,i as Ft,l as It,m as Lt,n as Rt,p as zt,r as Bt,u as Vt}from"./http-Cg_wYcZT.js";import{n as Ht}from"./env-C_DoQYl5.js";import{C as Ut,S as k,b as A,c as Wt,d as Gt,f as Kt,g as qt,l as Jt,m as Yt,o as Xt,r as Zt,s as Qt,t as $t,u as en,w as tn,x as nn,y as rn}from"./runners-CNhxPjg8.js";import{t as an}from"./log-view-DB4nXHXO.js";import{n as on,t as sn}from"./chat-Bbzlea60.js";import{A as cn,B as ln,C as un,D as dn,F as fn,G as pn,H as mn,I as hn,J as gn,K as _n,L as vn,M as j,N as yn,O as bn,P as xn,Q as Sn,R as Cn,S as wn,T as Tn,U as En,V as Dn,W as On,X as M,Y as kn,Z as An,_ as jn,b as Mn,c as Nn,d as N,f as Pn,g as Fn,h as In,i as P,j as F,k as I,m as L,n as R,o as Ln,p as z,q as Rn,r as zn,s as Bn,t as B,u as Vn,v as Hn,w as Un,x as Wn,y as Gn}from"./schema-BSlHRFSP.js";import{t as Kn,u as qn}from"./dist-BTornX7Y.js";import V from"node:path";import Jn from"node:process";import{fileURLToPath as Yn,pathToFileURL as Xn}from"node:url";import H,{accessSync as Zn,constants as Qn,existsSync as $n,readFileSync as er,statSync as tr}from"node:fs";import{execFile as nr,spawn as rr}from"node:child_process";import{createHash as ir,createHmac as ar,randomBytes as or,randomUUID as sr}from"node:crypto";import cr from"node:os";import lr from"node:net";import{isDeepStrictEqual as ur,promisify as dr}from"node:util";import{AsyncLocalStorage as fr}from"node:async_hooks";import{brotliDecompressSync as pr,constants as mr,createGzip as hr,gunzipSync as gr,gzipSync as _r,inflateSync as vr}from"node:zlib";import yr from"os";import br from"fs";import xr from"net";import Sr from"tls";import Cr from"crypto";import wr from"stream";import{performance as Tr}from"perf_hooks";const Er=e=>`nonce:${ct(e)}`;function Dr(e){let t=e.config.encryptionKey??e.config.adminToken;if(!t)throw Error(`A server secret is required to issue browser transactions.`);return t}function Or(e,t){return ar(`sha256`,Dr(e)).update(t).digest(`base64url`)}async function kr(e,t,n,r,i=6e5){let a=(e.now??Date.now)(),o={kind:t,user:n,organization:e.organizationId,nonce:or(18).toString(`base64url`),exp:a+i},s=jt(o),c=`${s}.${Or(e,s)}`;return await e.store.put(`delivery`,Er(c),{at:a,target:r},{ttlMs:i}),c}function Ar(e,t){let[n,r,i]=t.split(`.`);if(!(!n||!r||i!==void 0)&&ot(Or(e,n),r))try{return Mt(n)}catch{return}}async function jr(e,t){let n=await e.store.get(`delivery`,Er(t));return n&&`target`in n?n.target:void 0}function Mr(e,t){return Ar(e,t)?.organization}function Nr(e,t){return Ar(e,t)?.user}async function Pr(e,t,n,r,i){let a=Ar(e,t),o=(e.now??Date.now)();return!a||a.kind!==n||a.user!==r||a.organization!==e.organizationId||a.exp<o||await jr(e,t)!==i?!1:e.store.take(`delivery`,Er(t))}async function Fr(e,t,n,r){let i=Ar(e,t),a=(e.now??Date.now)();if(!i||i.kind!==n||i.user!==`*`&&i.user!==r||i.organization!==e.organizationId||i.exp<a)return;let o=await jr(e,t);return o!==void 0&&await e.store.take(`delivery`,Er(t))?o:void 0}async function Ir(e,t,n,r){let i=Ar(e,t),a=(e.now??Date.now)();if(!(!i||i.kind!==n||i.user!==`*`&&i.user!==r||i.organization!==e.organizationId||i.exp<a))return jr(e,t)}const Lr=[`GET`,`POST`,`PUT`,`PATCH`,`DELETE`];function Rr(e,t,n,r){return{method:e,pattern:t,handler:n,...r?{guard:r}:{}}}function zr(e,t,n){return t.map(t=>({...t,pattern:e+t.pattern,...n&&!t.guard?{guard:n}:{}}))}function Br(e,t,n){return[e,`${e}/*`].flatMap(e=>Lr.map(r=>Rr(r,e,t,n)))}function Vr(e,t){let[n,r]=[e.split(`/`),t.split(`/`)],i=n.at(-1)===`*`;if(i?r.length<n.length:r.length!==n.length)return;let a={};for(let e=0;e<n.length;e++){let[t,o]=[n[e],r[e]];if(t===`*`&&i){a[`*`]=r.slice(e).join(`/`);break}if(t[0]===`:`){if(!o)return;a[t.slice(1)]=o}else if(t!==o)return}return a}async function Hr(e,t,n,r){for(let i of e){let a=Vr(i.pattern,r.pathname);if(!a)continue;for(let e of Object.keys(a))e!==`*`&&(a[e]=decodeURIComponent(a[e]));let o=e.filter(e=>e.pattern===i.pattern),s=o.find(e=>e.method===t.method),c=(s??i).guard;if(c){let e=await c(t,n,a,r);if(e instanceof Response)return e;n=e}if(s)return s.handler(t,n,a,r);let l=Nt();return l.headers.set(`allow`,[...new Set(o.map(e=>e.method))].join(`, `)),l}}const Ur=`coder`;function Wr(e,t){let n=e??`/dash`;try{let e=new URL(n,t);return e.origin===t&&!n.includes(`\\`)&&!/^\/[/\\]/.test(e.pathname)?`${e.pathname}${e.search}${e.hash}`:`/dash`}catch{return`/dash`}}const Gr=`The Coder dashboard is not built; run bun run build.`,Kr=[`default-src 'self'`,`style-src 'self' 'unsafe-inline'`,`img-src 'self' data:`,`connect-src 'self'`,`object-src 'none'`,`base-uri 'none'`,`frame-ancestors 'none'`,`form-action ${[`'self'`,...new Set(Object.values(dt).flatMap(e=>e.app.postOrigins??[]))].join(` `)}`];function qr(e){let t=V.dirname(Yn(e));for(;;){let e=V.join(t,`package.json`);if($n(e))try{if(JSON.parse(er(e,`utf8`)).name===`@wular/coder`)return t}catch{}let n=V.dirname(t);if(n===t)break;t=n}throw Error(`Cannot locate the Coder package root.`)}function Jr(e=import.meta.url){let t=V.dirname(Yn(e)),n=qr(e),r=Yn(new URL(`./dash/standalone/server/entry.js`,import.meta.url));return[V.resolve(r,`../../..`),V.join(n,`dist/dash`),V.join(t,`../dash`)].find(e=>$n(Yr(e)))}const Yr=e=>V.join(e,`standalone/server/manifest.json`);function Xr(e){let t=V.join(e,`standalone/server/entry.js`);if(!$n(t))throw Error(`The Coder dashboard server bundle is missing.`);return t}async function Zr(e){let t=Jr(e);if(!t)throw Error(Gr);let n=JSON.parse(er(Yr(t),`utf8`));return{handler:await(await import(Xn(Xr(t)).href)).createRequestHandler({root:V.join(t,`standalone`)}),manifest:n}}var Qr=class{hosts=new Map};function $r(e){let t=Jr(e);if(t)try{return tr(Yr(t)).mtimeMs}catch{return}}function ei(e,{hosts:t}){let n=Date.now(),r=t.get(e);if(r&&n-r.checked<1e3)return r.host;let i=$r(e);if(r&&(r.checked=n,i===void 0||i===r.build))return r.host;let a={build:i,checked:n,host:Zr(e)};return t.set(e,a),a.host}function ti(e,t){let n=e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e;return!!(Vr(`/assets/*`,n)||Vr(`/dash/*`,n)||t.routes.some(e=>Vr(e.route,n)))}async function ni(e,t=new Qr){let n=await ei(import.meta.url,t).catch(()=>{t.hosts.delete(import.meta.url)}),r=e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e;return!!n?.manifest.routes.some(e=>Vr(e.route,r))}const ri=/<script(?![^>]*\bsrc=)[^>]*>([\s\S]*?)<\/script>/gi,ii=e=>`'sha256-${ir(`sha256`).update(e).digest(`base64`)}'`;function ai(e){let t=[...e.matchAll(ri)].map(e=>ii(e[1]));return[...Kr,`script-src 'self' ${t.join(` `)}`.trim()].join(`; `)}function oi(e,t){return t===`gzip`?gr(e).toString(`utf8`):t===`br`?pr(e).toString(`utf8`):t===`deflate`?vr(e).toString(`utf8`):e.toString(`utf8`)}const si=e=>(e.headers.get(`accept-encoding`)??``).split(`,`).some(e=>{let[t,...n]=e.split(`;`).map(e=>e.trim()),r=n.find(e=>e.startsWith(`q=`));return t===`gzip`&&(!r||Number(r.slice(2))>0)});function ci(e){e.set(`content-encoding`,`gzip`),/accept-encoding/i.test(e.get(`vary`)??``)||e.append(`vary`,`accept-encoding`)}function li(e){let t=hr(),n=e=>new Promise(n=>{t.write(e),t.flush(mr.Z_SYNC_FLUSH,()=>n())}),r=!1;return new ReadableStream({start(e){t.on(`data`,t=>e.enqueue(new Uint8Array(t))),t.on(`end`,()=>e.close()),t.on(`error`,t=>e.error(t))},async pull(){if(r)return;let{done:i,value:a}=await e.read();if(!i)return n(a);r=!0,t.end()},cancel(n){return t.destroy(),e.cancel(n)}})}function ui(e,t,n,r){n.set(`content-security-policy`,[...Kr,`script-src 'self' 'nonce-${r}'`].join(`; `));let i=t.body;return si(e)&&(ci(n),i=li(i.getReader())),new Response(i,{status:t.status,statusText:t.statusText,headers:n})}async function di(e,t,n){let r=new Headers(t.headers);if(r.set(`x-content-type-options`,`nosniff`),!(r.get(`content-type`)??``).includes(`text/html`))return new Response(t.body,{status:t.status,statusText:t.statusText,headers:r});r.set(`cache-control`,`no-store`),r.delete(`content-length`);let i=r.get(`content-encoding`);if(!i&&t.body)return ui(e,t,r,n);let a=Buffer.from(await t.arrayBuffer()),o=oi(a,i);r.set(`content-security-policy`,ai(o));let s=i?new Uint8Array(a):o;return!i&&o.length>1024&&si(e)&&(s=new Uint8Array(_r(o)),ci(r)),new Response(s,{status:t.status,statusText:t.statusText,headers:r})}async function fi(e,t=import.meta.url,n=new Qr){let r;try{r=await ei(t,n)}catch(e){if(n.hosts.delete(t),e instanceof Error&&e.message===Gr)return;throw e}if(!ti(new URL(e.url).pathname,r.manifest))return;let i=or(16).toString(`base64`),a=new Headers(e.headers);return a.set(`content-security-policy`,`script-src 'nonce-${i}'`),di(e,await r.handler(new Request(e,{headers:a})),i)}const pi=(e,t,n=!1)=>`coder_admin=${encodeURIComponent(t)}; HttpOnly; SameSite=Strict; Path=/${new URL(e.url).protocol===`https:`?`; Secure`:``}${n?`; Max-Age=0`:``}`;function mi(e,t){let n=e.headers.get(`x-forwarded-host`)?.split(`,`,1)[0]?.trim();if(!n)return t.origin;let r=e.headers.get(`x-forwarded-proto`)?.split(`,`,1)[0]?.trim()??t.protocol.slice(0,-1);try{return new URL(`${r}://${n}`).origin}catch{return t.origin}}async function hi(e,t,n,r){let i=await e.formData(),a=i.get(`token`),o=i.get(`return`),s=Wr(typeof o==`string`&&o.startsWith(`/`)?o:null,new URL(e.url).origin);return typeof a==`string`?a?Gh(a,t.config.adminToken)?new Response(null,{status:303,headers:{location:s,"set-cookie":pi(e,a)}}):zt(`/dash?token=rejected`,303):new Response(null,{status:303,headers:{location:s,"set-cookie":pi(e,``,!0)}}):zt(`/dash?token=rejected`,303)}async function gi(e,t,n,r){return zt(!t.auth||t.session?`/dash`:r.searchParams.has(`signed_out`)?`/login?signed_out=1`:`/login`)}async function _i(e,t,n,r){let i=`/api/auth/sign-in?return=${encodeURIComponent(Wr(r,n.origin))}`,a=t.config.publicUrl;return a&&new URL(mi(e,n)).host!==new URL(a).host?zt(new URL(i,a).href):t.auth.handler(new Request(`${n.origin}${i}`))}async function vi(e,t,n,r){return t.auth&&!r.searchParams.has(`signed_out`)&&!r.searchParams.has(`error`)?_i(e,t,r,r.searchParams.get(`return`)):await fi(xi(e,t),void 0,t.dashboardHosts)??new Response(`UI is not built`,{status:503})}async function yi(e,t,n,r){return await fi(xi(e,t),void 0,t.dashboardHosts)??new Response(`UI is not built`,{status:503})}async function bi(e,t,n,r){return await fi(xi(e,t),void 0,t.dashboardHosts)??It()}function xi(e,t){let n=new Headers(e.headers);n.set(`x-coder-mode`,Yh(t));let r=t.session?.organizations.find(e=>e.id===t.organizationId);return r?n.set(`x-coder-organization`,r.slug):n.delete(`x-coder-organization`),new Request(e,{headers:n})}async function Si(e,t,n){return await fi(xi(e,t),void 0,t.dashboardHosts)??It()}function Ci(e,t){let n=e.organizations.find(e=>e.slug===t||e.id===t);return n?{...e,organizationId:n.id,role:n.role}:{...e,organizationId:void 0,role:void 0,organizationDenied:!0}}function U(e,t){return t===e.organizationId||!e.scope?e:e.scope(t)}async function wi(e,t){if(!e.appRecord){let n=await e.store.get(`app`,t);return n&&{ctx:e,app:n}}let n=await e.appRecord(t);return n&&{ctx:U(e,n.organizationId),app:n.app}}async function Ti(e,t){if(e.boundInstallation?.installation.id===t)return{...U(e,e.boundInstallation.organizationId),boundInstallation:e.boundInstallation};if(!e.installationOrganization)return e;let n=await e.installationOrganization(t);return n===void 0?void 0:U(e,n)}const Ei=`/connections/oauth/client.json`,Di=`/connections/oauth/callback`,Oi=6e5,ki=e=>`connection-oauth:${e}`;async function Ai(e,t,n){await e.store.put(`delivery`,`connection-authorized:${ir(`sha256`).update(n).digest(`hex`)}`,{at:(e.now??Date.now)(),target:`${t.id}:${t.createdAt}`},{ttlMs:Oi})}const ji=f().check(t(1)),Mi=p({resource:ji,authorization_servers:s(ji).check(t(1)),scopes_supported:g(s(ji))}),Ni=p({issuer:ji,authorization_endpoint:ji,token_endpoint:ji,registration_endpoint:g(ji),userinfo_endpoint:g(ji),scopes_supported:g(s(ji)),code_challenge_methods_supported:g(s(ji)),client_id_metadata_document_supported:g(Te()),authorization_response_iss_parameter_supported:g(Te())}),Pi=Ee([`none`,`client_secret_basic`,`client_secret_post`]),Fi=p({client_id:ji,client_secret:g(ji),token_endpoint_auth_method:g(Pi),redirect_uris:g(s(ji))}),Ii=p({name:g(ji),preferred_username:g(ji),email:g(ji)});function Li(e,t){let n=Ie(t);if(!Ne(n,!!e.local))throw Error(`OAuth endpoint is not allowed.`);return n}async function Ri(e,t,n,r=!1){for(let i of[...new Set(n)]){Li(e,i);let n=await de(t,i,{headers:{accept:`application/json`}});if(n.status!==404&&n.status!==405&&!(r&&(n.status===401||n.status===403))){if(!n.ok)throw Error(`OAuth metadata discovery failed.`);return n.json()}}if(!r)throw Error(`OAuth metadata is unavailable.`)}function zi(e){let t={},n=``;for(let r of e?.matchAll(/(?:^|,)\s*(?:([\w-]+)\s+)?([\w-]+)\s*=\s*(?:"((?:[^"\\]|\\.)*)"|([^\s,]+))/g)??[]){if(r[1]){if(n===`bearer`)break;n=r[1].toLowerCase()}n===`bearer`&&(t[r[2].toLowerCase()]=r[3]?.replace(/\\(.)/g,`$1`)??r[4])}return t}async function Bi(e,t,n=!1,r){let i=Li(e,t),a=e.fetch??fetch;if(r===void 0){let e=await de(a,i.href);r=e.status===401?e.headers.get(`www-authenticate`)??``:``,await e.body?.cancel()}let o=zi(r),s=await Ri(e,a,o.resource_metadata?[o.resource_metadata]:[i.origin+`/.well-known/oauth-protected-resource`+(i.pathname===`/`?``:i.pathname),i.origin+`/.well-known/oauth-protected-resource`],n&&!o.resource_metadata);if(s===void 0)return;let c=Mi.parse(s);if(Li(e,c.resource).origin!==i.origin)throw Error(`OAuth resource changed origin.`);return{resource:c,params:o}}function Vi(e){if(e.local)return`http://localhost:${e.local.port}`;if(e.config.publicUrl)return Ie(e.config.publicUrl).origin;throw Error(`PUBLIC_URL or a local server is required for OAuth.`)}function Hi(e){let t=Vi(e);return{client_name:e.config.name??`Coder`,redirect_uris:[t+Di],grant_types:[`authorization_code`,`refresh_token`],response_types:[`code`],token_endpoint_auth_method:`none`}}function Ui(e,t){return!t.config.publicUrl||Ie(t.config.publicUrl).protocol!==`https:`?It():D({client_id:Ie(t.config.publicUrl).origin+Ei,...Hi(t)})}function Wi(e){if(e.session)return e.session.user.id;if(e.local&&!e.auth)return`local`;throw Error(`Sign in before authorizing a connection.`)}function Gi(e,t){if(!e||e.createdAt!==t.createdAt||e.owner!==t.owner||e.auth!==`oauth`||e.provider!==`mcp`||JSON.stringify(e.endpoint)!==JSON.stringify(t.endpoint))throw Error(`The connection changed during authorization.`)}async function Ki(e,t,n){let r=await e.get(`delivery`,ki(t));if(!r||!(`target`in r)||r.target!==n)throw Error(`The authorization attempt was superseded or expired.`)}async function qi(e,t,n){let r=Wi(e);if(t.auth!==`oauth`||t.provider!==`mcp`||!t.endpoint||!(`url`in t.endpoint)||typeof t.endpoint.url!=`string`||t.owner&&t.owner!==r)throw Error(`This connection cannot be authorized.`);let i=e.fetch??fetch,{resource:a,params:o}=n??await Bi(e,t.endpoint.url),s=a.authorization_servers[0],c=Li(e,s);if(c.search)throw Error(`OAuth issuer cannot contain a query.`);let l=c.pathname.replace(/\/$/,``),u=Ni.parse(await Ri(e,i,[c.origin+`/.well-known/oauth-authorization-server`+l,c.origin+`/.well-known/openid-configuration`+l,c.origin+l+`/.well-known/openid-configuration`]));if(u.issuer!==s)throw Error(`OAuth issuer mismatch.`);if(!u.code_challenge_methods_supported?.includes(`S256`))throw Error(`OAuth server does not support PKCE S256.`);Li(e,u.authorization_endpoint),Li(e,u.token_endpoint),u.registration_endpoint&&Li(e,u.registration_endpoint),u.userinfo_endpoint&&Li(e,u.userinfo_endpoint);let d=t.secret?A(e.config,t.secret):void 0,f=d?.issuer===s&&d.clientId?{clientId:d.clientId,clientSecret:d.clientSecret,tokenEndpointAuthMethod:d.tokenEndpointAuthMethod}:void 0;if(!f&&u.client_id_metadata_document_supported&&e.config.publicUrl&&Ie(e.config.publicUrl).protocol===`https:`&&(f={clientId:Ie(e.config.publicUrl).origin+Ei,tokenEndpointAuthMethod:`none`}),!f){if(!u.registration_endpoint)throw Error(`OAuth server does not support client registration.`);let t=await de(i,u.registration_endpoint,{method:`POST`,headers:{"content-type":`application/json`,accept:`application/json`},body:JSON.stringify(Hi(e))});if(!t.ok)throw Error(`OAuth client registration failed.`);let n=Fi.parse(await t.json()),r=n.token_endpoint_auth_method??`client_secret_basic`;if(r!==`none`&&!n.client_secret)throw Error(`OAuth registration omitted the client secret.`);if(n.redirect_uris&&!n.redirect_uris.includes(Vi(e)+Di))throw Error(`OAuth registration changed the redirect URI.`);f={clientId:n.client_id,clientSecret:n.client_secret,tokenEndpointAuthMethod:r}}let p={issuer:s,authorizationEndpoint:u.authorization_endpoint,tokenEndpoint:u.token_endpoint,resource:a.resource,...f,scope:o.scope??a.scopes_supported?.join(` `)??u.scopes_supported?.join(` `)},m=k(e.config,p),h=or(18).toString(`base64url`);await e.store.withAppLock(`connection:${t.id}`,async n=>{Gi(await n.get(`connection`,t.id),t),await n.put(`delivery`,ki(t.id),{at:(e.now??Date.now)(),target:h},{ttlMs:Oi})});let g=or(32).toString(`base64url`),_=await kr(e,`connection-oauth`,r,k(e.config,{id:t.id,attempt:h,secret:m,createdAt:t.createdAt,endpoint:t.endpoint,owner:t.owner,verifier:g,redirectUri:Vi(e)+Di,userinfo:u.userinfo_endpoint,requireIssuer:u.authorization_response_iss_parameter_supported===!0}),Oi),v=new URL(p.authorizationEndpoint),y={response_type:`code`,client_id:p.clientId,redirect_uri:Vi(e)+Di,state:_,code_challenge:ir(`sha256`).update(g).digest(`base64url`),code_challenge_method:`S256`,resource:p.resource};for(let[e,t]of Object.entries(y))v.searchParams.set(e,t);return p.scope!==void 0&&v.searchParams.set(`scope`,p.scope),v.href}async function Ji(e,t,n){let r=t,i=e=>zt(`${Ig(Pg(r),`/settings/connections`)}?outcome=${e}`);try{let e=n.searchParams.get(`state`)??``,a=Mr(t,e);if(t.auth&&(!a||!t.session?.organizations.some(e=>e.id===a)))return i(`invalid-state`);let o=t.session?.organizations.find(e=>e.id===a),s=a?{...U(t,a),session:t.session&&{...t.session,organizationId:a,role:a===t.session.organizationId?t.session.role:o.role}}:t;r=s;let c=await Fr(s,e,`connection-oauth`,Wi(s));if(!c)return i(`invalid-state`);let l=A(s.config,c);if(!l.owner&&!Uh(s))return i(`failed`);let u=A(s.config,l.secret),d=n.searchParams.get(`iss`);if((l.requireIssuer||d!==null)&&d!==u.issuer)return i(`failed`);if(n.searchParams.has(`error`))return i(n.searchParams.get(`error`)===`access_denied`?`denied`:`failed`);let f=n.searchParams.get(`code`);if(!f)return i(`failed`);Gi(await s.store.get(`connection`,l.id),l),await Ki(s.store,l.id,l.attempt);let p=s.fetch??fetch,m=await Ve(p,u,new URLSearchParams({grant_type:`authorization_code`,code:f,redirect_uri:l.redirectUri,code_verifier:l.verifier})),h=m.preferred_username??m.email??m.name;if(!h&&l.userinfo)try{let e=await de(p,l.userinfo,{headers:{authorization:`Bearer ${m.access_token}`,accept:`application/json`}});if(e.ok){let t=Ii.parse(await e.json());h=t.preferred_username??t.email??t.name}}catch{}return await s.store.withAppLock(`connection:${l.id}`,async t=>{let n=await t.get(`connection`,l.id);Gi(n,l),await Ki(t,l.id,l.attempt),await t.put(`connection`,n.id,{...n,secret:k(s.config,he(u,m,(s.now??Date.now)())),account:h??n.account,broken:void 0,updatedAt:(s.now??Date.now)()}),await t.delete(`delivery`,ki(l.id)),await Ai({...s,store:t},n,e)}),i(`connected`)}catch{return i(`failed`)}}async function Yi(e,t,n,r=!1){return r?[]:(await gm(e,t)).filter(e=>n===void 0||n.includes(e.id)).map(e=>e.id)}function Xi(e){if(typeof e!=`string`||!e)return{ok:!1,detail:`A folder path is required`};let t=e===`~`?cr.homedir():e.startsWith(`~/`)?V.join(cr.homedir(),e.slice(2)):e;if(!V.isAbsolute(t))return{ok:!1,detail:`The folder path must be absolute`};let n=V.normalize(t);try{return H.statSync(n).isDirectory()?(H.accessSync(n,H.constants.R_OK),{ok:!0,folder:{path:n,name:V.basename(n)}}):{ok:!1,detail:`The path is not a directory`}}catch{return{ok:!1,detail:`The folder does not exist or is not readable`}}}function Zi(e){let t=new Map,n=[...Pe(e),...Ae(e,{migrate:!1})].sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt));for(let e of n){let n=Xi(e.cwd);if(!(!n.ok||t.has(n.folder.path))&&(t.set(n.folder.path,{...n.folder,recent:Date.parse(e.createdAt)}),t.size===8))break}return{current:{path:e,name:V.basename(e)},recent:[...t.values()],picker:!!$i()}}const Qi=e=>(process.env.PATH??``).split(V.delimiter).some(t=>t&&H.existsSync(V.join(t,e)));function $i(){let e=`Choose a folder for the task`;if(process.platform===`darwin`)return[`osascript`,[`-e`,`tell application "System Events"`,`-e`,`activate`,`-e`,`POSIX path of (choose folder with prompt "${e}")`,`-e`,`end tell`]];if(process.platform===`win32`)return[`powershell`,[`-NoProfile`,`-Command`,`Add-Type -AssemblyName System.Windows.Forms; $d = New-Object System.Windows.Forms.FolderBrowserDialog; $d.Description = '${e}'; if ($d.ShowDialog() -eq 'OK') { $d.SelectedPath }`]];if(Qi(`zenity`))return[`zenity`,[`--file-selection`,`--directory`,`--title=${e}`]];if(Qi(`kdialog`))return[`kdialog`,[`--getexistingdirectory`,cr.homedir(),`--title`,e]]}async function ea(){let e=$i();if(!e)return{ok:!1,detail:`This machine has no folder dialog; type a path instead`};try{let{stdout:t}=await dr(nr)(e[0],e[1],{timeout:6e5}),n=t.trim().replace(/(.)[\\/]+$/,`$1`);return n?Xi(n):{ok:!1,detail:``}}catch{return{ok:!1,detail:``}}}function ta(e){let t=/^\w[\w.-]*@([\w.-]+):(?!\/)([^?#]+)$/.exec(e),n=t||!URL.canParse(e)?void 0:new URL(e);if(!t&&(!n||![`https:`,`ssh:`].includes(n.protocol)||n.password||n.search||n.hash))return;let[r,i]=t?[t[1],t[2]]:[n.port?`${n.hostname}_${n.port}`:n.hostname,n.pathname],a=i.replace(/(\.git)?\/?$/,``).split(`/`).filter(Boolean);if(!(!/^[a-z0-9][a-z0-9._-]*$/i.test(r)||a.length<2||!a.every(e=>/^[\w.-]+$/.test(e)&&!/^\.+$/.test(e))))return[r.toLowerCase(),...a]}async function na(e){let t=typeof e==`string`?e.trim():``,n=ta(t);if(!n)return{ok:!1,detail:`Use an https or ssh git URL, like https://github.com/owner/repo`};let r=ne(`checkouts`,...n),i=AbortSignal.timeout(6e5),a={...process.env,GIT_TERMINAL_PROMPT:`0`,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND??`ssh -o BatchMode=yes`},o=e=>dr(nr)(`git`,e,{env:a,signal:i,maxBuffer:67108864});try{await Ot(r,async()=>{if(H.existsSync(V.join(r,`.git`))){await o([`-C`,r,`remote`,`set-url`,`origin`,t]),await o([`-C`,r,`fetch`,`origin`]);return}let e=await H.promises.mkdtemp(`${r}-clone-`);try{await o([`clone`,`--`,t,e]),await H.promises.rename(e,r)}finally{await H.promises.rm(e,{recursive:!0,force:!0})}})}catch(e){let t=e;if(i.aborted)return{ok:!1,detail:`The clone took longer than 10 minutes`};if(t.code===`ENOENT`&&!t.stderr)return{ok:!1,detail:`Git is not installed on this machine`};let n=String(t.stderr??t.message).split(`
|
|
2
2
|
`).map(e=>e.trim()).filter(Boolean),r=(n.find(e=>e.startsWith(`fatal:`))??n.at(-1)??`The clone failed`).replace(/^fatal:\s*/,``);return{ok:!1,detail:r[0].toUpperCase()+r.slice(1)}}return{ok:!0,folder:{path:r,name:n.at(-1),url:t}}}const ra=(e,t)=>`${e}:${String(t).padStart(6,`0`)}`;function ia(e,t){return e.get(`agent`,t)}async function aa(e){return(await e.list(`agent`)).map(e=>e.value)}async function oa(e,t,n){let r=n??(await ia(e,t))?.currentVersion;return r===void 0?void 0:e.get(`agentversion`,ra(t,r))}async function sa(e,t){if(e.listAgentsWithVersions)return(await e.listAgentsWithVersions(t))[0]??{};let n=await ia(e,t);return{record:n,version:n&&await oa(e,t,n.currentVersion)}}async function ca(e){if(e.listAgentsWithVersions)return e.listAgentsWithVersions();let t=await aa(e);return Promise.all(t.map(async t=>({record:t,version:await oa(e,t.id,t.currentVersion)})))}async function la(e,t,n){if(e.publishAgent){let r=$e(t.id,t.definition),i=t.files&&Object.keys(t.files).length?t.files:void 0;return e.publishAgent({id:t.id,name:t.name??r.name??t.id,...t.description??r.description?{description:t.description??r.description}:{},source:t.source,...t.repo?{repo:t.repo}:{},...t.path?{path:t.path}:{},currentVersion:0,createdAt:n,updatedAt:n},{agent:t.id,version:0,definition:r,systemPrompt:t.systemPrompt,...i?{files:i}:{},...t.commit?{commit:t.commit}:{},...t.origin?{source:t.origin}:{},importedFrom:t.importedFrom,createdAt:n})}let r=await sa(e,t.id),i=await ua(e,t,n,r);return{record:await ia(e,t.id),version:i,unchanged:r.record?.currentVersion===i.version}}async function ua(e,t,n,r){if(!r&&e.publishAgent)return(await la(e,t,n)).version;let i=$e(t.id,t.definition),a=t.files&&Object.keys(t.files).length?t.files:void 0,o=r?r.record:await ia(e,t.id),s=r?r.version:o?await oa(e,t.id,o.currentVersion):void 0,c=(e,r)=>({id:t.id,name:t.name??i.name??t.id,...t.description??i.description?{description:t.description??i.description}:{},source:t.source,...t.repo?{repo:t.repo}:{},...t.path?{path:t.path}:{},currentVersion:e,...o?.settings?{settings:o.settings}:{},createdAt:o?.createdAt??n,updatedAt:r}),l=e=>ur(e.definition,i)&&e.systemPrompt===t.systemPrompt&&ur(e.files,a);if(s&&l(s)){let r=c(s.version,o.updatedAt);return ur(o,r)||await e.put(`agent`,t.id,c(s.version,n)),s}o||await e.put(`agent`,t.id,c(0,n));let u;for(let r=(o?.currentVersion??0)+1;u={agent:t.id,version:r,definition:i,systemPrompt:t.systemPrompt,...a?{files:a}:{},...t.commit?{commit:t.commit}:{},...t.origin?{source:t.origin}:{},importedFrom:t.importedFrom,createdAt:n},!await e.create(`agentversion`,ra(t.id,r),u);r++){let n=await e.get(`agentversion`,ra(t.id,r));if(n&&l(n)){u=n;break}}let d=await ia(e,t.id);return(!d||d.currentVersion<u.version)&&await e.put(`agent`,t.id,c(u.version,n)),u}async function da(e,t,n,r=Date.now()){let i=await ia(e,t);if(!i)throw Error(`No agent named "${t}".`);let a={...i,settings:n,updatedAt:r};return await e.put(`agent`,t,a),a}const fa=[`read-only`,`workspace-write`,`auto`];function pa(e,t){if(Array.isArray(e))return[...new Set(e)];let n=Xe.indexOf(e);return[...new Set(Xe.slice(0,n+1).flatMap(e=>t?.tools.presets[e]??[]))]}function ma(e,t,n,r){if(!t&&!n)return;let i=t??{},a=n??{},o=new Set([...Object.keys(i.integrations??{}),...Object.keys(a.integrations??{})]),s=Object.fromEntries([...o].map(e=>{let t=i.integrations?.[e],n=a.integrations?.[e],o=t?.allowedEvents&&n?.allowedEvents?t.allowedEvents.filter(e=>n.allowedEvents.includes(e)):n?.allowedEvents??t?.allowedEvents,s=t?.allowedTools&&n?.allowedTools?pa(t.allowedTools,r[e]).filter(t=>new Set(pa(n.allowedTools,r[e])).has(t)):n?.allowedTools??t?.allowedTools;return[e,{...o?{allowedEvents:o}:{},...s?{allowedTools:s}:{}}]})),c=i.permissions??e.permissions??`read-only`,l=a.permissions,u=l&&fa.indexOf(l)<=fa.indexOf(c)?l:c;return{...i,...a,permissions:u,...o.size?{integrations:s}:{},...i.connections!==void 0||a.connections!==void 0?{connections:i.connections&&a.connections?i.connections.filter(e=>a.connections.includes(e)):a.connections??i.connections}:{}}}function ha(e,t,n,r=dt){let i=ma(t.definition,void 0,e.settings,r),a=ma(t.definition,i,n,r),[o]=it({definitions:{[e.id]:{json:t.definition,builtin:e.source===`builtin`}},usage:a?{[e.id]:a}:void 0},r);if(!o)throw Error(`Agent "${e.id}" is disabled.`);return{...o,files:{...t.files??{},"system.md":t.systemPrompt}}}function ga(e,t=``){let n={};for(let r of H.readdirSync(V.join(e,t),{withFileTypes:!0})){let i=t?`${t}/${r.name}`:r.name;r.isDirectory()?Object.assign(n,ga(e,i)):r.isFile()&&i!==`agent.json`&&i!==`system.md`&&(n[i]=H.readFileSync(V.join(e,i),`utf8`))}return n}async function _a(e,t,n,r){let i=rt()[n];return i?await ua(e,{id:n,source:`builtin`,definition:i.json,systemPrompt:H.readFileSync(V.join(i.dir,`system.md`),`utf8`),files:ga(i.dir),importedFrom:`builtin:${ue()}`},t,r)!==r.version:!1}async function va(e,t,n){let r=n??await Promise.all(Object.keys(rt()).map(t=>sa(e,t))),i=!1;for(let n of Object.keys(rt()))await _a(e,t,n,r.find(({record:e})=>e?.id===n)??{})&&(i=!0);return i}const ya=`.coder/agents`,ba=2592e6;function xa(e){return e.repo?`${e.repo.owner}/${e.repo.name}`:void 0}const Sa=(e,t,n)=>`repo-file:${e}@${t}@${n}:`,Ca=(e,t,n)=>`repo-push:${e}@${t}@${n}`;function wa(e,t,n,r,i,a){let o=`${Sa(n.installation,r,a??``)}${i}`,s=e.fileReads??=new Map,c=s.get(o);if(!c){let l=AbortSignal.timeout(1e4),u=new Promise((e,t)=>l.addEventListener(`abort`,()=>t(l.reason),{once:!0}));c=Promise.race([Ta(e.store,t,n,r,i,a,o,l),u]).catch(e=>{throw l.aborted&&console.error(`coder server: repository file read timed out for ${r}/${i}`,e),e}).finally(()=>s.delete(o)),s.set(o,c)}return c}async function Ta(e,t,n,r,i,a,o,s){let c=await e.get(`snapshot`,o);s.throwIfAborted();let l=/^[0-9a-f]{40}$/i.test(a??``),u=Date.now();if(c&&!c.stale&&(l||u-(c.readAt??0)<6e5))return c.text;let d=Ca(n.installation,r,a??``),[f,p]=await Promise.all([n.token(r),l?void 0:e.get(`snapshot`,d)]);if(s.throwIfAborted(),!f||!t.repos)return;let m=t.repos.revalidate?await t.repos.revalidate(r,i,f,{...a?{ref:a}:{},...c?.etag?{etag:c.etag}:{},fetch:((e,t)=>n.fetch(e,{...t,signal:s}))}):{text:await t.repos.readFile(r,i,f,a)};s.throwIfAborted();let{stale:h,...g}=c??{},_={...m===`unchanged`?g:m,...l?{}:{readAt:u}};return await e.put(`snapshot`,o,_,{ttlMs:ba}),!l&&(await e.get(`snapshot`,d))?.push!==p?.push&&await e.put(`snapshot`,o,{..._,stale:!0},{ttlMs:ba}),_.text}async function Ea(e,t){let n=[t.branch,...t.branch===t.defaultBranch?[``]:[]];for(let r of n){await e.put(`snapshot`,Ca(t.installation,t.repo,r),{push:sr()},{ttlMs:36e5});for(let{id:n,value:i}of await e.list(`snapshot`,{prefix:Sa(t.installation,t.repo,r)}))i.stale||await e.put(`snapshot`,n,{...i,stale:!0},{ttlMs:ba})}}async function Da(e,t,n,r,i){let a=await wa(e,t,n,r,`.coder/config.json`,i);return a===void 0?void 0:JSON.parse(a).agents}async function Oa(e,t,n,r,i=async()=>void 0){for(let t of Object.values(e)){if(!r.repo&&t.id===r.integration||!t.repos)continue;let e=await(await i(t.id))?.token(n);if(e)return{contents:t,token:e}}let[a,o]=n.split(`/`);for(let{value:r}of await t.store.list(`app`)){if(r.agentsRepo!==n)continue;let i=e[r.integration];if(!i?.repos)continue;let s=(await t.store.list(`installation`,{prefix:`${r.id}:`})).find(e=>!e.value.deletedAt)?.value;if(s)try{let e=s.token?{...s,token:A(t.config,s.token)}:s;return{contents:i,token:await i.auth.token(e,A(t.config,r.credentials),{...a&&o?{repo:{owner:a,name:o}}:{},tools:i.tools.presets.observe}),app:r,installation:s}}catch{continue}}}function ka(e,t){let n=t.cwd??Jn.cwd(),r=t.now??Date.now;async function i(n,r,i){let a=lt(e),o=a?.repos&&await i(a.id);if(!a||!o)return;let s=xa(r);if(r.integration===a.id&&s)return Da(t,a,o,s,r.repo?.ref);let c=n.settings?.configRepo;if(c)return Da(t,a,o,c)}async function a(n,a,o,s){let c=await sa(t.store,n.agent);c.record&&await _a(t.store,r(),n.agent,c)&&(c=await sa(t.store,n.agent));let{record:l,version:u}=c;if(!l)return;if(!u)throw Error(`No version ${l.currentVersion} for agent "${l.id}".`);let d=await i(a,o,s),f=d&&typeof d==`object`?d[n.agent]:void 0;if(f===!1||f?.disabled)throw Error(`Agent "${n.agent}" is disabled in ${xa(o)??a.settings?.configRepo??n.agentsRepo}.`);return ha(l,u,f&&typeof f==`object`?f:void 0,e)}return async(i,o,s,c)=>{let l=(await Ze(n,e)).find(e=>e.id===i.agent&&!e.builtin);if(l)return l;let u=await a(i,o,s,c);if(u)return u;if(i.agentsRepo){let n=await Oa(e,t,i.agentsRepo,s,c);if(n){await ja(t.store,n.contents,i.agentsRepo,xa(s)===i.agentsRepo?s.repo?.ref??`HEAD`:`HEAD`,n.token,r());let e=await a(i,o,s,c);if(e)return e;throw Error(`No agent "${i.agent}" in ${i.agentsRepo}.`)}}if(await _a(t.store,r(),i.agent,{})){let e=await a(i,o,s,c);if(e)return e}throw Error(i.agentsRepo?`No agent named "${i.agent}".`:`No built-in agent "${i.agent}".`)}}async function Aa(e,t,n,r,i,a=``,o,s=0){let c={},l=o??await e.repos.listDir(t,a?`${n}/${a}`:n,r,i);for(let o of l){let u=a?`${a}/${o}`:o;if(u===`agent.json`||u===`system.md`)continue;let d=await e.repos.readFile(t,`${n}/${u}`,r,i);if(d!==void 0)c[u]=d;else if(s<20){let a=await e.repos.listDir(t,`${n}/${u}`,r,i);a.length&&!ur(a,l)&&Object.assign(c,await Aa(e,t,n,r,i,u,a,s+1))}}return c}async function ja(e,t,n,r,i,a,o={}){let s=o.path??`.coder/agents`,c=/^[0-9a-f]{40}$/i.test(r)?r:await t.repos.commit(n,r,i)??r,l={repo:n,ref:o.branch??r,commit:c};r=c;let u=o.slugs??await t.repos.listDir(n,s,i,r);nt(u);let d=[];for(let o of u){let u=`${s}/${o}`,f=await t.repos.readFile(n,`${u}/agent.json`,i,r);if(f===void 0)continue;let p=JSON.parse(f),[m]=it({definitions:{[o]:{json:p,builtin:!1}},usage:void 0},{...dt,[t.id]:t});m&&d.push(await ua(e,{id:o,name:m.name,description:m.definition.description,source:`repo`,repo:n,path:u,definition:m.definition,systemPrompt:await t.repos.readFile(n,`${u}/system.md`,i,r)??``,files:await Aa(t,n,u,i,r),commit:c,origin:l,importedFrom:`repo:${n}@${l.ref}`},a))}return d}const Ma=e=>`app-sync:${e}`,Na=(e,t,n,r)=>e.manifest?.(t,{publicUrl:n,definition:r})??r,Pa=(e,t,n)=>!!(e&&!e.pending&&e.version>=t&&ur(e.manifest,n));async function Fa(e,t,n,r){let i=e.integrations[n.integration]?.app,a=e.config.publicUrl,o=await t.get(`delivery`,Ma(n.id));if(i?.values){let e=i.values(n,{publicUrl:a,definition:r.definition}),s=o?.manifest??[],c=e.lines.map(e=>s.some(t=>t.text===e.text&&t.copy===e.copy)?e:{...e,changed:!0}),l=c.some(e=>`changed`in e);return l!==o?.changed&&await t.put(`delivery`,Ma(n.id),{...o,version:r.version,changed:l}),{...e,lines:c,changed:l,confirm:!0}}if(!i?.drift)return;let s=await i.drift(n,A(e.config,n.credentials),{publicUrl:a,definition:r.definition,fetch:e.fetch??fetch}),c=s.lines.length>0;return await t.put(`delivery`,Ma(n.id),{version:r.version,changed:c}),{...s,changed:c}}async function Ia(e,t,n){let r=e.config.publicUrl;if(!r||!t.length)return[];let i=new Map(t.map(e=>[e.agent,e])),a=await e.store.list(`app`);return(await Promise.all(a.filter(({id:e,value:t})=>i.has(t.agent)&&(!n||e===n)).map(async({id:t})=>e.store.withAppLock(t,async a=>{let o=await a.get(`app`,t);if(!o||!i.has(o.agent))return;let s=await oa(a,o.agent)??i.get(o.agent),c=e.integrations[o.integration]?.app;if(!c||!s.definition.integrations[o.integration]||!c.update&&(o.builtin||o.shared))return;if(!c.update)return Fa(e,a,o,s).then(e=>e&&{app:o,check:e},e=>(console.error(`coder server: checking ${o.id} on its platform failed`,e),{app:o,error:e instanceof Error?e.message:String(e)}));let{update:l}=c,u=Na(c,o,r,s.definition),d=Ma(t),f=await a.get(`delivery`,d);if(!n&&Pa(f,s.version,u)||f&&f.version>s.version)return;let p={version:s.version,manifest:u,pending:!0};await a.put(`delivery`,d,p);try{let t=await l(o,A(e.config,o.credentials),{publicUrl:r,definition:s.definition,fetch:e.fetch??fetch,saveCredentials:async t=>{await a.put(`app`,o.id,{...o,credentials:k(e.config,t)})}});return t&&await a.put(`app`,o.id,{...o,credentials:k(e.config,t)}),await a.put(`delivery`,d,{...p,pending:!1}),{app:o}}catch(e){let t=`Could not sync ${o.integration} app ${o.id}. ${e instanceof Error?e.message:String(e)}`;return await a.put(`delivery`,d,{...p,error:t}),{app:o,error:t}}})))).filter(e=>e!==void 0)}async function La(e,t){let n=(await Ia(e,t)).flatMap(({app:t,error:n})=>n&&e.integrations[t.integration]?.app.update?[n]:[]);if(n.length)throw Error(n.join(`
|
|
3
|
-
`))}function Ra(){return{integration:`source`,type:`import`,appId:``,installationId:``,deliveryId:``,actor:{id:`admin`},text:``}}async function za(e,t,n,r=Ra(),i){let a=await Oa(e.integrations,{config:e.config,store:e.store},t,r);if(!a)return;let o=await ja(e.store,a.contents,t,n,a.token,(e.now??Date.now)(),i?{branch:i}:{});return await La(e,o),o}var Ba=class extends Error{};function Va(e,t,n,r){let i=t;return(!n.runner||n.runner===e||n.runner===i.name)&&(!n.defaults||!!i.default)&&(!n.ids||n.ids.includes(e))&&(!n.agent||(r??i.agent)===n.agent)&&(!Object.hasOwn(n,`visibleTo`)||!i.owner||i.owner===n.visibleTo)&&(!n.active||i.deletedAt===void 0)&&(!n.installation||i.installationId===n.installation)&&(!n.apps||!!i.app&&n.apps.includes(i.app))}const Ha=(e,t)=>e===`credential`?`credential:${Op(t).owner??``}`:e===`runner`?`runners:`:`installation:${t}`;async function Ua(e,t,n,r){let i=Op(n).owner,a=(await e.list(t)).filter(e=>t===`credential`?Op(e.id).owner===i:e.id===n),o=await r(a.find(e=>e.id===n)?.value,a,e);for(let n of o??[])n.value===null?await e.delete(t,n.id):await e.put(t,n.id,n.value);return!!o?.length}function Wa(e,t,n){if(n.deletedAt!==void 0)return;let r=n.app.split(`/`)[0],i=(e,t)=>[e.slice(t.app.length+1),...t.covers??[]],a=new Set(i(t,n));if(e.some(([e,n])=>{let o=n;return e!==t&&!o.deletedAt&&(o.app===r||o.app.startsWith(`${r}/`))&&i(e,o).some(e=>a.has(e))}))throw new Ba(`Installation "${t}" is bound through another app.`)}var Ga=class{now;appUpdates=new Map;values=new Map;configUpdate;constructor(e=Date.now){this.now=e}async withAppLock(e,t){e.startsWith(`runners:`)&&(e=`runners:`);let n=(this.appUpdates.get(e)??Promise.resolve()).catch(()=>{}).then(()=>t(this));this.appUpdates.set(e,n);try{return await n}finally{this.appUpdates.get(e)===n&&this.appUpdates.delete(e)}}async withConfigLock(e){let t=(this.configUpdate??Promise.resolve()).catch(()=>{}).then(()=>e(this));this.configUpdate=t;try{return await t}finally{this.configUpdate===t&&delete this.configUpdate}}withCredential(e,t,n){return this.withAppLock(Ha(e,t),()=>Ua(this,e,t,n))}bucket(e){let t=this.values.get(e);return t||(t=new Map,this.values.set(e,t)),t}read(e,t){let n=t;if(e!==`app`||!n.shared)return t;let r=this.live(`app`).get(n.shared)?.value;return{...n,credentials:r?.credentials??``}}live(e){let t=this.bucket(e),n=this.now();for(let[e,r]of t)r.expiresAt!==void 0&&r.expiresAt<=n&&t.delete(e);return t}async get(e,t){let n=this.live(e).get(t);return n&&this.read(e,n.value)}async patchLogin(e,t,n={}){let r=this.live(`login`).get(e),i=r?.value;if(!i||!(i.expiresAt>this.now())||Object.entries(n).some(([e,t])=>Array.isArray(t)?!t.includes(i[e]):i[e]!==t))return;let a={...i,...t};return a.input===null&&delete a.input,r.value=a,a}completeLogin(e,t,n,r){return Up(this,e,t,n,r)}async put(e,t,n,r={}){e===`installation`&&Wa([...this.live(e)].map(([e,t])=>[e,t.value]),t,n);let i=r.ttlMs===void 0?void 0:this.now()+r.ttlMs,a=this.bucket(e),o=e===`task`&&!r.unarchive?a.get(t)?.value?.archivedAt:void 0;a.set(t,{value:o===void 0?e===`app`&&n.shared?{...n,credentials:``}:n:Object.assign({},n,{archivedAt:o}),expiresAt:i})}async putMany(e,t){if(e===`task`){await Promise.all(t.map(t=>this.put(e,t.id,t.value)));return}let n=this.bucket(e);for(let e of t)n.set(e.id,{value:e.value})}async list(e,t={}){let n=e===`installation`&&t.agent?this.live(`app`):void 0;return[...this.live(e).entries()].filter(([e])=>!t.prefix||e.startsWith(t.prefix)).filter(([e])=>!t.after||e>t.after).filter(([r,i])=>Va(r,i.value,t,e===`agent`?r:n?.get(i.value.app)?.value?.agent)).sort(([e],[t])=>e.localeCompare(t)).slice(0,t.limit).map(([t,n])=>({id:t,value:this.read(e,n.value)}))}async delete(e,t){this.bucket(e).delete(t)}async create(e,t,n,r={}){let i=this.live(e);if(i.has(t))return!1;let a=r.ttlMs===void 0?void 0:this.now()+r.ttlMs;return i.set(t,{value:n,expiresAt:a}),!0}async claimDeliveryLease(e,t,n){let r=this.live(`delivery`);if(r.has(e))return;let i=this.live(`snapshot`).get(`delivery:${e}`)?.value?.failures??0;return r.set(e,{value:{owner:t,failures:i},expiresAt:this.now()+n}),i}async updateDeliveryLease(e,t,n,r={ttlMs:3e4}){let i=this.live(`delivery`);if(i.get(e)?.value?.owner!==t)return!1;if(!n)i.delete(e),this.bucket(`snapshot`).delete(`delivery:${e}`);else{let t=n.next===void 0?n:{...n,next:this.now()+r.ttlMs};i.set(e,{value:t,expiresAt:this.now()+r.ttlMs}),n.next!==void 0&&this.bucket(`snapshot`).set(`delivery:${e}`,{value:t,expiresAt:this.now()+864e5})}return!0}async updateDelivery(e,t,n,r={}){let i=this.live(`delivery`);return i.get(e)?.value?.owner===t&&(n===void 0?i.delete(e):i.set(e,{value:n,...r.ttlMs===void 0?{}:{expiresAt:this.now()+r.ttlMs}}),!0)}async take(e,t){let n=this.live(e),r=n.has(t);return r&&n.delete(t),r}},Ka=r({LocalStore:()=>$a,deleteLocalAgent:()=>ro,syncLocalAgents:()=>to,writeLocalAgent:()=>no});const qa=new Set([`app`,`installation`,`runner`]),Ja=new Set([`task`,`tasklog`,`inbox`,`usage`]),Ya=new Set([`connection`,`credential`]),Xa=new Set([`agent`,`agentversion`]);function Za(e,t){try{return JSON.parse(H.readFileSync(e,`utf8`))}catch(e){if(e.code===`ENOENT`)return t;throw e}}function Qa(e,t){H.mkdirSync(V.dirname(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;try{H.writeFileSync(n,t,{mode:384}),H.renameSync(n,e)}finally{H.rmSync(n,{force:!0})}}var $a=class{now;connections;connectionContexts;connectionSecrets;derived=new Ga;writes=Promise.resolve();constructor(e=Date.now,t=()=>new a){this.now=e,this.connections=t}withAppLock(e,t){return e.startsWith(`connection:`)||e.startsWith(`connection-import:`)?this.connections().withLock(()=>t(this),e.replace(/^connection:/,``)):this.derived.withAppLock(e,()=>t(this))}withConfigLock(e){return this.derived.withConfigLock(()=>e(this))}withCredential(e,t,n){let r=()=>Ua(this,e,t,n);return e===`credential`?this.connections().withLock(r,Ha(e,t)):this.derived.withAppLock(Ha(e,t),r)}get appsFile(){return i(`apps.json`)}get deliveriesFile(){return V.join(ie(``),`deliveries.json`)}get notesDir(){return V.join(ie(``),`notes`)}noteFile(e){return V.join(this.notesDir,`${encodeURIComponent(e)}.md`)}serial(e,t=!1){let n=this.writes.then(()=>t?this.connections().withLock(async()=>e()):e());return this.writes=n.catch(()=>{}),n}apps(){return Za(this.appsFile,{})}recordsFile(e){return e===`delivery`?this.deliveriesFile:e===`usage`?ze():e===`snapshot`?V.join(ie(``),`snapshots.json`):V.join(ie(``),`runner`,`${e}.json`)}deliveries(e=`delivery`){let t=this.now();return Object.fromEntries(Object.entries(Za(this.recordsFile(e),{})).filter(([,e])=>e.expiresAt===void 0||e.expiresAt>t))}entries(e){if(e===`connection`)return this.connections().list().map(e=>[e.id,e]);if(e===`credential`)return this.connections().credentials().map(e=>[e.id,e.value]);if(qa.has(e)){let t=this.apps(),n=Object.entries(t[e]??{});return e===`app`?n.map(([e,n])=>{let r=n,i=r.shared?t.app?.[r.shared]:void 0;return[e,r.shared?{...r,credentials:i?.credentials??``}:r]}):n}if(e===`delivery`||e===`snapshot`||Ja.has(e))return Object.entries(this.deliveries(e)).map(([e,t])=>[e,t.value]);if(e===`note`){let e=[];try{e=H.readdirSync(this.notesDir).filter(e=>e.endsWith(`.md`))}catch{}return e.map(e=>[decodeURIComponent(e.slice(0,-3)),H.readFileSync(V.join(this.notesDir,e),`utf8`)])}return[]}refuse(e){throw Error(`A local server keeps no ${e} records`)}async get(e,t){if(e===`connection`)return this.connections().get(t);if(Xa.has(e))return this.derived.get(e,t);if(e===`note`)try{return H.readFileSync(this.noteFile(t),`utf8`)}catch{return}return this.entries(e).find(([e])=>e===t)?.[1]}async completeLogin(){return this.refuse(`login`)}async patchLogin(){return this.refuse(`login`)}async put(e,t,n,r={}){if(Xa.has(e))return this.derived.put(e,t,n,r);await this.serial(()=>this.write(e,t,n,r.ttlMs),Ya.has(e))}write(e,t,n,r){if(e===`connection`){this.connections().put(n);return}if(e===`credential`&&n.engine===`custom`){this.connections().putCredential(t,n);return}if(qa.has(e)){let r=this.apps();e===`installation`&&Wa(Object.entries(r.installation??{}),t,n),e===`app`&&n.shared&&(n={...n,credentials:``}),r[e]={...r[e],[t]:n},Qa(this.appsFile,`${JSON.stringify(r,null,2)}\n`)}else if(e===`delivery`||e===`snapshot`||Ja.has(e)){let i=this.deliveries(e);i[t]={value:n,...r===void 0?{}:{expiresAt:this.now()+r}},Qa(this.recordsFile(e),`${JSON.stringify(i)}\n`)}else e===`note`?Qa(this.noteFile(t),String(n)):this.refuse(e)}remove(e,t){if(e===`connection`){let e=this.connections(),n=!!e.get(t);return e.delete(t),n}if(e===`credential`){let e=this.connections(),n=e.credentials().some(e=>e.id===t);return e.deleteCredential(t),n}if(qa.has(e)){let n=this.apps(),r=n[e];return!r||!(t in r)?!1:(delete r[t],Qa(this.appsFile,`${JSON.stringify(n,null,2)}\n`),!0)}if(e===`delivery`||e===`snapshot`||Ja.has(e)){let n=this.deliveries(e);return t in n&&(delete n[t],Qa(this.recordsFile(e),`${JSON.stringify(n)}\n`),!0)}if(e===`note`){let e=this.noteFile(t),n=H.existsSync(e);return H.rmSync(e,{force:!0}),n}return!1}async putMany(e,t){for(let n of t)await this.put(e,n.id,n.value)}async list(e,t={}){if(Xa.has(e))return this.derived.list(e,t);let n=e===`installation`&&t.agent?this.apps().app:void 0;return this.entries(e).filter(([e])=>(!t.prefix||e.startsWith(t.prefix))&&(!t.after||e>t.after)).filter(([e,r])=>Va(e,r,t,n?.[r.app]?.agent)).sort(([e],[t])=>e.localeCompare(t)).slice(0,t.limit).map(([n,r])=>{let i=r;return{id:n,value:(e===`connection`&&t.secrets&&(t.secrets===`all`||i.provider===`mcp`&&i.auth===`oauth`)?this.connections().get(n):void 0)??r}})}async delete(e,t){if(Xa.has(e))return this.derived.delete(e,t);await this.serial(()=>this.remove(e,t),Ya.has(e))}async create(e,t,n,r={}){return Xa.has(e)?this.derived.create(e,t,n,r):this.serial(()=>!this.entries(e).some(([e])=>e===t)&&(this.write(e,t,n,r.ttlMs),!0),Ya.has(e))}claimDeliveryLease(e,t,n){return this.serial(()=>{if(this.deliveries()[e])return;let r=this.deliveries(`snapshot`)[`delivery:${e}`]?.value?.failures??0;return this.write(`delivery`,e,{owner:t,failures:r},n),r})}updateDeliveryLease(e,t,n,r={ttlMs:3e4}){return this.serial(()=>{if(this.deliveries()[e]?.value?.owner!==t)return!1;if(!n)this.remove(`delivery`,e),this.remove(`snapshot`,`delivery:${e}`);else{let t=n.next===void 0?n:{...n,next:this.now()+r.ttlMs};this.write(`delivery`,e,t,r.ttlMs),n.next!==void 0&&this.write(`snapshot`,`delivery:${e}`,t,864e5)}return!0})}async updateDelivery(e,t,n,r={}){return this.serial(()=>this.entries(`delivery`).find(([t])=>t===e)?.[1]?.owner===t&&(n===void 0?this.remove(`delivery`,e):this.write(`delivery`,e,n,r.ttlMs),!0))}async take(e,t){return Xa.has(e)?this.derived.take(e,t):this.serial(()=>this.remove(e,t),Ya.has(e))}};function eo(e){let t=V.resolve(e);for(;!H.existsSync(V.join(t,`.git`));){let e=V.dirname(t);if(e===t)return Promise.resolve(void 0);t=e}return new Promise(t=>nr(`git`,[`log`,`-1`,`--format=%H`,`--`,`.`],{cwd:e},(e,n)=>t(e?void 0:n.trim()||void 0)))}async function to(e,t,n,r){let a=await Ze(t,n,{includeDisabled:!0}),o=await Promise.all(a.filter(e=>!r||e.id===r).map(async t=>{let n=t.usage?{settings:t.usage}:{};if(t.builtin){let{record:r,version:i}=await sa(e,t.id);if(!r)return;let a={...r,settings:void 0,...n,local:!0};return await e.put(`agent`,t.id,a),{record:a,version:i}}if(!t.dir)return;let r=await eo(t.dir),a=H.statSync(V.join(t.dir,`agent.json`)),o=V.join(t.dir,`system.md`),s={agent:t.id,version:1,definition:t.definition,systemPrompt:H.existsSync(o)?H.readFileSync(o,`utf8`):``,files:ga(t.dir),...r?{commit:r}:{},importedFrom:`local:${t.dir}`,createdAt:a.mtimeMs},c={id:t.id,name:t.name,...t.definition.description?{description:t.definition.description}:{},source:V.resolve(t.dir)===i(`agents`,t.id)?`home`:`repo`,path:t.dir,currentVersion:1,...n,local:!0,...r?{commit:r}:{},createdAt:a.birthtimeMs||a.mtimeMs,updatedAt:a.mtimeMs};return await e.put(`agentversion`,ra(t.id,1),s),await e.put(`agent`,t.id,c),{record:c,version:s}}));if(!r){let t=new Set(a.map(e=>e.id));for(let n of await aa(e))n.local&&n.path&&!t.has(n.id)&&await e.delete(`agent`,n.id)}return o.filter(e=>!!e).sort((e,t)=>e.record.id<t.record.id?-1:+(e.record.id>t.record.id))}async function no(e,t,n,r){let a=(await Ze(e,t,{includeDisabled:!0})).find(e=>e.id===n&&!e.builtin)?.dir??i(`agents`,n),o={...r.files,"agent.json":`${JSON.stringify(r.definition,null,2)}\n`,"system.md":r.systemPrompt};for(let[e,t]of Object.entries(o))H.mkdirSync(V.dirname(V.join(a,e)),{recursive:!0}),H.writeFileSync(V.join(a,e),t)}async function ro(e,t,n){let r=(await Ze(e,t,{includeDisabled:!0})).find(e=>e.id===n&&!e.builtin);if(!r?.dir)throw Error(`No local agent named "${n}".`);return V.resolve(r.dir)===i(`agents`,n)&&(H.rmSync(r.dir,{recursive:!0}),!0)}const io=`default`;async function ao(e){if(!e.databaseUrl)throw Error(`DATABASE_URL is required for the Postgres store`);let{connect:t}=await Promise.resolve().then(()=>Hc);return t(e.databaseUrl,e.databasePool)}async function oo(e,t={}){if(e.store!==`postgres`){let e=t.local?new $a:new Ga;return{store:()=>e,queue:new oh(e),chatState:new sn(t.local?V.join(ie(``),`chat.json`):void 0),defaultOrganizationId:io,webhookTarget:async(t,n)=>{let r=await e.get(`app`,t),i=n?await e.get(`installation`,n):void 0;if(r&&n&&(!i||i.deletedAt))for(let{value:r}of await e.list(`app`,{prefix:`${t}/`})){let i=await e.get(`installation`,`${r.id}${n.slice(t.length)}`);if(i&&!i.deletedAt)return{organizationId:io,app:r,bound:{organizationId:io,installation:i}}}return r&&{organizationId:io,app:r,...i&&i.app===t&&!i.deletedAt?{bound:{organizationId:io,installation:i}}:{}}},appRecord:async t=>{let n=await e.get(`app`,t);return n&&{organizationId:io,app:n}},apps:async t=>(await e.list(`app`,{prefix:`${t}:`})).map(e=>({organizationId:io,app:e.value})),installationOrganization:async t=>await e.get(`installation`,t)?io:void 0,installations:async t=>(await e.list(`installation`,{prefix:`${t}:`})).filter(e=>!e.value.deletedAt).map(e=>({key:e.id,organizationId:io})),taskOrganization:async(t,n)=>(await e.get(`task`,t))?.tokenHash===n?io:void 0,sweep:async()=>{},close:async()=>{}}}let n=await ao(e),[{DrizzleStore:r},{DrizzleQueue:i},{UNSCOPED_ORGANIZATION:a},{PgChatState:o}]=await Promise.all([Promise.resolve().then(()=>nu),Promise.resolve().then(()=>su),Promise.resolve().then(()=>ul),import(`./chat-DLolwsuq.js`)]);return{store:t=>new r(n.db,t,Date.now,e),queue:new i(n.db),chatState:new o(n.db),defaultOrganizationId:a,webhookTarget:(e,t)=>r.webhookTarget(n.db,e,t),appRecord:e=>r.appRecord(n.db,e),apps:e=>r.apps(n.db,e),installationOrganization:e=>r.installationOrganization(n.db,e),installations:e=>r.installations(n.db,e),taskOrganization:(e,t)=>r.taskOrganization(n.db,e,t),connection:n,sweep:e=>new r(n.db,a).sweep(e),close:()=>n.close()}}async function so(e,t,n,r){if(e.updateMetadata)return e.updateMetadata(t,n,r);let i=await e.get(t,n);return i?(await e.put(t,n,{...i,...r}),!0):!1}async function co(e,t){let n=[...new Set(t)];return e.getApps?e.getApps(n):(await Promise.all(n.map(async t=>({id:t,value:await e.get(`app`,t)})))).filter(e=>!!e.value)}async function lo(e,t,n,r,i){let a=await t.store.get(`app`,n);if(!a)return D({error:`Unknown app`},404);let o=t.config.publicUrl;if(!o)return D({error:`PUBLIC_URL is not set on this server`},400);let s=await kr(t,`install`,t.session?.user.id??`anonymous`,a.id),c=jt({tx:s,...r?{back:r}:{},...i?{link:i}:{}});return D({url:`${o.replace(/\/$/,``)}/install/${a.integration}?app=${encodeURIComponent(a.id)}&state=${c}`})}async function uo(e,t){let n=e.serverOrganizationId,[r,i]=await Promise.all([e.store.list(`app`),n!==void 0&&n!==e.organizationId&&e.scope?e.scope(n).store.list(`app`).then(t=>t.filter(({value:t})=>t.builtin&&e.integrations[t.integration]?.app.builtin===`shared`)):[]]);return[...r,...i].filter(({value:n})=>(!n.builtin||e.integrations[n.integration]?.app.builtin===`shared`)&&(!t||n.agent===t))}function fo(e,t){let{credentials:n,...r}=t,i=t.builtin?void 0:e.integrations[t.integration]?.app.settingsUrl?.(t,A(e.config,n));return{...r,...i?{settingsUrl:i}:{}}}async function po(e,t){let n=e.config.publicUrl,r=t.filter(t=>!t.builtin&&!t.shared&&e.integrations[t.integration]?.app);if(!n||!r.length)return new Set;let[i,a]=await Promise.all([e.store.list(`delivery`,{ids:r.map(e=>Ma(e.id))}),Promise.all([...new Set(r.map(e=>e.agent))].map(t=>oa(e.store,t)))]),o=e=>i.find(t=>t.id===Ma(e))?.value;return new Set(r.filter(t=>{let r=e.integrations[t.integration].app,i=a.find(e=>e?.agent===t.agent);return i?.definition.integrations[t.integration]?r.update?!Pa(o(t.id),i.version,Na(r,t,n,i.definition)):o(t.id)?.changed===!0:!1}).map(e=>e.id))}async function mo(e,t,n,r){let i=await uo(t,r.searchParams.get(`agent`)),a=await po(t,i.map(({value:e})=>e));return D(i.map(({id:e,value:n})=>({id:e,value:{...fo(t,n),...a.has(e)?{changed:!0}:{}}})))}async function ho(e,t,n){let r=await t.store.get(`app`,n.id);if(!r)return D({error:`Unknown app`},404);if(r.builtin)return D({error:`Only whoever runs this server can remove its shared apps.`},403);let i=t.now?.()??Date.now(),a=await t.store.list(`installation`),o=new Set(a.filter(({value:e})=>e.app===r.id).map(({id:e})=>e));for(let{id:e,value:n}of a){if(o.has(e)){n.deletedAt||await so(t.store,`installation`,e,{deletedAt:i});continue}let r=Object.entries(n.connections??{}),a=r.filter(([,e])=>!o.has(e.id));a.length<r.length&&await so(t.store,`installation`,e,{connections:a.length?Object.fromEntries(a):void 0})}return await t.store.delete(`app`,r.id),await Af(t.store,r.id),D({ok:!0})}async function go(e,t){let n=await e.store.get(`app`,t);if(!n)return D({error:`Unknown app`},404);if(n.builtin||n.shared)return D({error:`Only whoever runs this server can update its shared apps.`},403);if(!e.config.publicUrl)return D({error:`PUBLIC_URL is not set on this server`},400);let r=e.integrations[n.integration];if(!r||!(r.app.update||r.app.drift||r.app.values))return D({error:`Coder cannot update ${r?.name??n.integration} apps.`},400);let i=await oa(e.store,n.agent);return i?.definition.integrations[n.integration]?{app:n,version:i,integration:r}:D({error:`The agent no longer listens on ${r.name}.`},400)}async function _o(e,t,n){let r=await go(t,n.id);if(r instanceof Response)return r;if(r.integration.app.update)return D({error:`Coder updates ${r.integration.name} apps itself.`},400);try{return D(await Fa(t,t.store,r.app,r.version))}catch(e){return console.error(`coder server: reading ${r.app.id} on ${r.integration.name} failed`,e),D({error:e instanceof Error?e.message:String(e)},502)}}async function vo(e,t,n){let r=await go(t,n.id);if(r instanceof Response)return r;let{app:i,version:a,integration:o}=r;if(o.app.values){let{lines:e}=o.app.values(i,{publicUrl:t.config.publicUrl,definition:a.definition});return await t.store.put(`delivery`,Ma(i.id),{version:a.version,manifest:e,changed:!1}),D({updated:!0})}if(!o.app.update)return D({error:`Change the app on ${o.name}; Coder cannot.`},400);let[s]=await Ia(t,[a],i.id);return s?.error?D({error:s.error},502):D({updated:!0})}async function yo(e,t,n,r){let i=r.searchParams.get(`agent`),a=await t.store.list(`installation`,{...i?{agent:i}:{},...r.searchParams.get(`active`)===`1`?{active:!0}:{},limit:O(r,200)});return D(a.map(({id:e,value:n})=>{let{token:r,connections:i,...a}=n,o=n.account.url??t.integrations[n.integration]?.app.accountUrl?.(n.account);return{id:e,value:{...a,account:{...a.account,...o?{url:o}:{}}}}}))}async function bo(e,t){let n=e.config.publicUrl,r=n?qh.has(new URL(n).hostname):!1,i=r?`https://<public address>`:n,a=t.searchParams.get(`agent`),[o,s,c]=await Promise.all([a?ia(e.store,a):void 0,qg(e),e.store.list(`app`)]),l=new Set(s.map(e=>e.integration));return D(await Promise.all(Object.values(e.integrations).map(async n=>({id:n.id,name:n.name,brand:n.brand,description:n.description,installLabel:n.installLabel??`Connect ${n.id}`,...n.use?{use:n.use}:{},...n.covered?{covered:n.covered}:{},...n.featured?{featured:!0}:{},builtinApp:n.app.builtin,...n.auth.user?{personal:!0}:{},...await xm(e,n.id,void 0,[...s,...c.map(e=>e.value)])?{connectable:!0}:{},organizationApps:n.organizationApps===!0,publicApps:n.publicApps===!0,events:Object.fromEntries(Object.entries(n.events).map(([e,{description:t,noisy:n,addressed:r}])=>[e,{description:t,...n?{noisy:n}:{},...r?{addressed:r}:{}}])),presets:n.tools.presets,repositories:!!n.repos,...n.app.createStep&&i?{create:n.app.createStep(i,{name:o?.name,shared:l.has(n.id),public:n.publicApps===!0&&t.searchParams.get(`public`)===`1`})}:{},...r?{unreachable:!0}:{},...n.app.update?{appUpdate:`push`}:n.app.drift?{appUpdate:`drift`}:n.app.values?{appUpdate:`confirm`}:{}}))))}async function xo(e,t,n=!1,r){let i=await e.store.get(`installation`,t.id);if(!i||i.deletedAt)return;if(!n&&i.repos!=null&&(!r||i.repos.includes(r.repo)))return i;let a=e.integrations[i.integration];if(!a?.repos)return i;let o=e.repositoryLists??=new Map,s=o.get(i.id);return s||(s=So(e,a,i,r).finally(()=>o.delete(i.id)),o.set(i.id,s)),s}async function So(e,t,n,r){let i=r?.app??await e.store.get(`app`,n.app);if(!i)throw Error(`Missing app for installation ${n.id}`);let a=r?.token??await jf(e,t,n,A(e.config,i.credentials)),o=await t.repos.list(Tf(e,n),a,e.fetch??fetch);return e.store.withAppLock(`repositories:${n.id}`,async e=>{let t=await e.get(`installation`,n.id);if(!(!t||t.deletedAt))return JSON.stringify(t.repos)===JSON.stringify(n.repos)?(await so(e,`installation`,t.id,{repos:o}),{...t,repos:o}):{...t,repos:t.repos??o}})}async function Co(e,t=!1){let n=new Map;for(let{value:r}of await e.store.list(`installation`,{active:!0})){if(r.deletedAt||!e.integrations[r.integration]?.repos)continue;let i=t||r.repos==null?await xo(e,r,t).catch(e=>(console.error(`coder server: repositories for installation ${r.id} failed`,e),r)):r;if(!(!i||i.deletedAt))for(let e of i.repos??[])n.has(e)||n.set(e,{repo:e,integration:i.integration})}return D([...n.values()].sort((e,t)=>e.repo.localeCompare(t.repo)))}var W=class extends Error{status;fix;constructor(e,t=400,n){super(e),this.status=t,this.fix=n}};function wo(e,t,n){if(n?.settings?.disabled)throw new W(`Agent "${t}" is disabled in this workspace. Enable it in its settings to start tasks.`,409,`${e.config.publicUrl?.replace(/\/$/,``)??``}${Ig(Pg(e),`/agents/${encodeURIComponent(t)}/settings`)}`)}function To(e,t){if(t.cwd===void 0)return;if(!e.local)throw new W(`cwd is available on a local server only`);let n=Xi(t.cwd);if(!n.ok)throw new W(n.detail);return n.folder.path}const Eo=65536,Do=/^[a-z0-9][a-z0-9_-]*$/i,Oo=new Set([`claude`,`codex`,`custom`]),ko=new Set([`low`,`medium`,`high`]);function Ao(e){let t=e.flow??`default`;if(!Do.test(t))throw new W(`Invalid flow "${t}"`);if(e.prompt!==void 0&&typeof e.prompt!=`string`)throw new W(`prompt must be text`);if(t==="default"&&!e.prompt?.trim())throw new W(`prompt is required`);if((e.prompt?.length??0)>Eo)throw new W(`prompt is longer than 64 KB`);if(e.repo!==void 0&&!/^[\w.-]+\/[\w.-]+$/.test(e.repo))throw new W(`repo must be owner/name`);if(e.pr!==void 0&&(!Number.isInteger(e.pr)||e.pr<1||!e.repo))throw new W(`pr needs a repo and a pull request number`);if(e.engine!==void 0&&!Oo.has(e.engine))throw new W(`Unknown engine "${e.engine}"`);if(e.effort!==void 0&&!ko.has(e.effort))throw new W(`Unknown effort "${e.effort}"`);if(e.permissions!==void 0&&!(e.permissions in w))throw new W(`Unknown permissions "${e.permissions}"`);if(e.mcp!==void 0&&(!Array.isArray(e.mcp)||!e.mcp.every(e=>Do.test(e))))throw new W(`mcp must list server names`);if(e.connections!==void 0&&(!Array.isArray(e.connections)||!e.connections.every(e=>typeof e==`string`&&e.length>0)))throw new W(`connections must list connection ids`);if(e.outputSchema!==void 0&&(!e.outputSchema||typeof e.outputSchema!=`object`||Array.isArray(e.outputSchema)))throw new W(`outputSchema must be an object`);if(e.args!==void 0&&(typeof e.args!=`object`||Array.isArray(e.args)))throw new W(`args must be an object`)}async function jo(e,t){let n=(await e.store.list(`installation`)).filter(({value:t})=>!t.deletedAt&&e.integrations[t.integration]?.repos).sort((e,n)=>Number(n.value.repos?.includes(t)??!1)-Number(e.value.repos?.includes(t)??!1)),r=new Map((await co(e.store,n.map(({value:e})=>e.app))).map(({id:e,value:t})=>[e,t]));for(let{value:i}of n){let n=e.integrations[i.integration];if(i.deletedAt||!n?.repos)continue;let a=r.get(i.app);if(a)try{let r=await jf(e,n,i,A(e.config,a.credentials)),o=i.repos?.includes(t)?i:await xo(e,i,!1,{app:a,token:r,repo:t});if(!o?.repos?.includes(t))continue;return{integration:n,installation:o,app:a,token:r}}catch(e){console.error(`coder server: repository token for ${i.id} failed`,e)}}throw new W(`No install in this workspace reaches ${t}`,404)}async function Mo(e,t,n,r){let i=n.repo,{integration:a,installation:o,app:s,token:c}=await jo(e,i),l=await a.repos.get(i,c);return{event:{integration:a.id,type:n.pr?`pull_request`:`task`,appId:s.id,installationId:o.id.slice(s.id.length+1),deliveryId:t,actor:{id:r??``},text:n.prompt??``,...n.pr?{chat:{thread:a.repos.pullRequestThread(i,n.pr)}}:{},repo:n.pr?{...l,ref:`refs/pull/${n.pr}/head`}:l},author:a.author?.(s.name)??s.name}}async function No(e,t,n){Ao(n);let r=To(e,n),i=(e.now??Date.now)(),a=e.session?.user.id,o=n.agent||et();if(!o)throw new W(`Name an agent: this server has no default agent.`);e.local&&await to(e.store,e.local.cwd,e.integrations);let s=()=>e.store.taskInputs?e.store.taskInputs(o,a,n.engine):sa(e.store,o),l=await s();await _a(e.store,i,o,l)&&(l=await s());let{record:u,version:d}=l,f=await Zt(e,{requester:a,runner:n.runner,agent:d?.definition.runner}).catch(e=>{throw new W(e.message)});if(!u||!d)throw new W(`No agent "${o}"`,404);wo(e,o,u);let p=ha(u,d,{...n.engine?{engine:n.engine}:{},...n.model?{model:n.model}:{},...n.effort?{effort:n.effort}:{},...n.permissions?{permissions:n.permissions}:{}},e.integrations),m=tt(p),h=e.store.taskInputs?l.credential:(await Mp(e.store,m.engine,a))?.id,g=m.engine??c;if(!h&&f.runner!==`http`&&!await Tp(e,m.engine))throw new W(`No ${g} credential is connected`,409,await Zp(e,g));let _=`${i.toString(36)}-${or(4).toString(`hex`)}`,v=n.repo?await Mo(e,_,n,a):void 0,y={id:_,source:t,agent:p.id,flow:n.flow??`default`,...f,permissions:m.permissions,...v?{event:v.event,author:v.author}:{},...r&&!v?{cwd:r}:{},...n.prompt?{prompt:n.prompt}:{},...n.args?{args:n.args}:{},...n.mcp?.length?{mcp:n.mcp}:{},definition:p.definition,...h?{credential:h}:{},...a?{requester:a}:{},...p.files?{files:p.files}:{},...p.usage?{usage:p.usage}:{},tools:{},connections:await Yi(e,a,E(p.usage?.connections,n.connections)),...e.session||n.outputSchema?{context:{...e.session?{user:{name:e.session.user.name,email:e.session.user.email}}:{},...n.outputSchema?{outputSchema:n.outputSchema}:{}}}:{}};return e.local&&f.runner===`local`&&!f.runnerId?op(e,y):(await e.queue.enqueue(e.organizationId,y,i,void 0,e.config.maxQueued??1e3),{task:y,status:`queued`,attempts:0,createdAt:i,updatedAt:i})}function Po(e){return e.turns?e.turns:[...e.task.context?.turns??[],{prompt:e.task.prompt??e.task.event?.text??e.task.name??``,result:e.result,error:e.error,finishedAt:e.finishedAt,...[`completed`,`failed`,`cancelled`].includes(e.status)?{logSeq:e.logSeq}:{}}]}async function Fo(e,t,n,r,i={}){if(r!==void 0&&(!r||typeof r!=`object`||Array.isArray(r)))throw new W(`outputSchema must be an object`);if(!n.trim())throw new W(`text is required`);if(n.length>Eo)throw new W(`text is longer than 64 KB`);let{model:a,effort:o,permissions:s}=i;if(a!==void 0&&(typeof a!=`string`||!a.trim()))throw new W(`model must be text`);if(o!==void 0&&!ko.has(o))throw new W(`Unknown effort "${o}"`);if(s!==void 0&&!(s in w))throw new W(`Unknown permissions "${s}"`);let c=e=>Object.keys(w).indexOf(e??`auto`);if(s!==void 0&&c(s)>c(t.task.permissions))throw new W(`permissions can only be lowered on a resumed task (it runs ${t.task.permissions??`auto`})`);if(e.session&&t.task.requester&&t.task.requester!==e.session.user.id)throw new W(`Only the member who asked can continue this task`,403);let l=(e.now??Date.now)(),u=t.task.context?.messages??[],d=String(t.finishedAt??l),f=[...u,{user:`user`,text:t.task.prompt??t.task.event?.text??``,ts:String(t.createdAt)},{user:`agent`,text:t.result?.output??t.error??``,ts:d}].slice(-20),{note:p,...m}=t.task.context??{},h=Po(t);h.at(-1).finishedAt??=l;let g={task:{...t.task,prompt:n,...a||o?{usage:{...t.task.usage,...a?{model:a}:{},...o?{effort:o}:{}}}:{},...s?{permissions:s}:{},context:{...m,...r?{outputSchema:r}:{},messages:f,turns:h}},status:`queued`,attempts:0,generation:(t.generation??0)+1,...t.logSeq===void 0?{}:{logSeq:t.logSeq},...t.logBytes===void 0?{}:{logBytes:t.logBytes},createdAt:t.createdAt,updatedAt:l};if(!await e.queue.continueTask(e.organizationId,t.task.id,g.task,l,{attempts:t.attempts,tokenHash:t.tokenHash??null,generation:t.generation??0}))throw new W(`Task is already active`,409);return g}const Io={principalPerMinute:300,ipPerMinute:60,authPerMinute:20,registerPerMinute:10,pairingPerMinute:5,concurrentTasks:10};var Lo=class{buckets=new Map;sweptAt;startedAt;requests=0;rejections=0;constructor(e=Date.now()){this.startedAt=this.sweptAt=e}consume(e,t,n){if(n-this.sweptAt>=6e4){for(let[e,t]of this.buckets)n-t.at>=6e4&&this.buckets.delete(e);this.sweptAt=n}let r=this.buckets.get(e),i=r?Math.min(t,r.tokens+Math.max(0,n-r.at)*t/6e4):t,a=i<1;if(this.buckets.set(e,{tokens:a?i:i-1,at:n}),!a)return;this.rejections++;let o=Math.max(1,Math.ceil((1-i)*60/t));return D({error:`Too many requests. Try again in ${o} seconds.`},429,{"retry-after":String(o)})}};const Ro=[[e=>e===`/admin/runners/pair`,`pairing`],[e=>e===`/runners/register`,`register`],[e=>e.startsWith(`/admin/`)||e.startsWith(`/runners/`)],[e=>e.startsWith(`/api/auth`)||e===`/login`||e===`/dash/token`,`auth`]];async function zo(e,t,n){let r=new URL(e.url).pathname,i=Ro.find(([e])=>e(r));if(!i)return(r===`/dash`||r.startsWith(`/dash/`))&&t.auth&&!await t.auth.session(e.headers)?Bo(t,void 0,n,`auth`)??{}:{};let a=r.startsWith(`/admin/`)?await ng(e,t):void 0;return Bo(t,r===`/runners/register`?await ig(e,t):a&&!(a instanceof Response)?a.session?`user:${a.session.user.id}`:`admin`:void 0,n,i[1])??{scope:a}}function Bo(e,t,n,r){let i=e.limits??=new Lo((e.now??Date.now)()),a={...Io,...e.config.limits},o=(e.now??Date.now)(),s=t??`ip:${n}`,c=i.consume(s,t?a.principalPerMinute:a.ipPerMinute,o);return c||!r?c:r===`pairing`?i.consume(`pair:${s}`,a.pairingPerMinute,o):i.consume(`${r}:ip:${n}`,r===`auth`?a.authPerMinute:a.registerPerMinute,o)}function Vo(e,t,n){let r;return Promise.race([e,new Promise((e,i)=>{r=setTimeout(()=>i(Error(`${n} timed out`)),t),r.unref?.()})]).finally(()=>clearTimeout(r))}async function Ho(e,t,n,r){try{await Vo(t.stop(n),e.runnerTimeoutMs??1e4,`runner stop`)}catch(e){return console.error(`coder server: runner stop ${r} failed`,e),!1}return!0}async function Uo(e,t,n,r={}){let i=t.handle?await Qt(e,t.task):void 0,a=await e.queue.finish(e.organizationId,t.task.id,{status:`failed`,error:n},(e.now??Date.now)(),{attempts:t.attempts,tokenHash:t.tokenHash??null,generation:t.generation??0,...r});return a&&await Ko(e,t,!0,i),a}async function Wo(e,t,n){if(e.local&&t.handle?.startsWith(`cli:`))return np(e,t,n);let r=t.handle?await Qt(e,t.task):void 0,i={handle:t.handle??null,lastSeenAt:t.lastSeenAt??null,updatedAt:t.updatedAt};if(t.cancelRequestedAt!==void 0&&n-t.cancelRequestedAt>=3e4){let i=await e.queue.finish(e.organizationId,t.task.id,{status:`cancelled`,error:`The runner did not acknowledge cancellation within 30 seconds`},n,{attempts:t.attempts,tokenHash:t.tokenHash,generation:t.generation??0});return i&&await Ko(e,t,!0,r),i}if(!t.handle)return n-(t.lastSeenAt??t.startedAt??t.updatedAt)<(e.config.taskStallMs??3e5)?!1:t.attempts>=(e.config.taskAttempts??2)?Uo(e,t,`runner start was interrupted`,i):e.queue.requeue(e.organizationId,t.task.id,n,{generation:t.generation??0,attempts:t.attempts,tokenHash:t.tokenHash??null,...i});if(t.startedAt!==void 0&&n-t.startedAt>=e.config.taskTimeoutMs)return Uo(e,t,`timeout`);if(!r||n-(t.lastSeenAt??t.startedAt??t.updatedAt)<Math.min(e.config.taskStallMs??6e4,6e4)||!await e.store.withAppLock(`runner-status:${e.organizationId}:${t.task.id}`,async e=>{let r=`runner-status:${t.task.id}:${t.generation??0}:${t.attempts}`,i=await e.get(`delivery`,r);return i&&`at`in i&&i.at!==void 0&&n-i.at<3e4?!1:(await e.put(`delivery`,r,{at:n},{ttlMs:6e4}),!0)}))return!1;let a=await Vo(r.status(t.handle),e.runnerTimeoutMs??1e4,`runner status`);return a.state===`exited`?Uo(e,t,`runner exited${a.code===void 0?``:` with code ${a.code}`}`,{handle:t.handle,lastSeenAt:t.lastSeenAt??null}):Uo(e,t,`The runner stopped reporting heartbeats`,{handle:t.handle,lastSeenAt:t.lastSeenAt??null})}async function Go(e,t){return[`running`,`waiting`].includes(t.status)&&await Wo(e,t,(e.now??Date.now)()).catch(()=>!1)?await e.store.get(`task`,t.task.id)??t:t}async function Ko(e,t,n=!1,r){let i=`${e.organizationId}:${t.task.id}:${t.attempts}`,a=e.settings?.cancelChecks?.get(i);if(a&&(clearTimeout(a.timer),a.finish(),e.settings.cancelChecks.delete(i)),!t.handle||t.logsComplete)return;let o=r??await Qt(e,t.task);o&&(n||o.kind===`vercel-sandbox`||o.kind===`local-docker`)&&!await Ho(e,o,t.handle,t.task.id)||await e.queue.patchTask(e.organizationId,t.task.id,{logsComplete:!0},(e.now??Date.now)(),{attempts:t.attempts,tokenHash:t.tokenHash,generation:t.generation??0,handle:t.handle})}function qo(e,t){let n=`${e.organizationId}:${t.task.id}:${t.attempts}`,r=(e.settings??={}).cancelChecks??=new Map;if(r.has(n))return;let i=new Promise(e=>{let t=setTimeout(e,3e4);r.set(n,{timer:t,finish:e})}).then(async()=>{r.delete(n);let i=await e.store.get(`task`,t.task.id);i&&i.attempts===t.attempts&&i.tokenHash===t.tokenHash&&await Go(e,i)}).catch(e=>console.error(`coder server: cancellation check failed`,e));e.waitUntil&&e.waitUntil(i)}async function Jo(e,t,n){let r=e.now??Date.now,i=e.config.limits?.concurrentTasks??Io.concurrentTasks,a=e.config.store===`postgres`?e.config.maxTasks:Math.min(i,e.config.maxTasks??i);{t&&e.local?await Qf(e,e.local.cwd):t&&await e.queue.archiveStopped(void 0,r());let n=await e.queue.running(),i=0;for(let t of n)await Wo(U(e,t.organizationId),t.status,r()).catch(()=>!1)&&i++;if(a!==void 0&&n.length-i>=a)return}let o=[];for(;;){let t=e.local?Zf(e.local.cwd,!1).filter(e=>e.status===`running`||e.status===`waiting`):[],s=t.length?new Set((await e.queue.running()).flatMap(e=>[e.status.task.id,...e.status.handle?.startsWith(`cli:`)?[e.status.handle.slice(4)]:[]])):new Set,c=t.filter(t=>!s.has(t.task.id)&&!s.has(ge(t.task.cwd??e.local.cwd,t.task.id)?.flowRunId??``)).length,l=a===void 0?void 0:a-c;if(l!==void 0&&l<=0)break;let u=await e.queue.claim(r(),l,n,i);if(n=!1,!u)break;let d=U(e,u.organizationId),f=u.status;if(await tp(d,f)){if(n=u.more,!u.more)break;continue}let p=await Qt(d,f.task);if(!p){await Uo(d,f,`No runner available: ${f.task.runner}`);continue}let m=f,h={generation:f.generation??0,attempts:f.attempts,tokenHash:f.tokenHash??null,statuses:[`running`,`waiting`]},g;try{let e=p.kind===`vercel-sandbox`?await Vf(d,f.task):void 0,t=p.start(f.task,{CODER_SERVER:d.local&&p.kind===`local`?`http://localhost:${d.local.port}`:d.config.publicUrl??``,CODER_TASK_TOKEN:u.token,CODER_INBOX_MODE:p.push?`push`:`poll`},e?.env,{timeoutMs:d.config.taskTimeoutMs+6e4,waitUntil:d.waitUntil,...e?{hosts:await Uf(d,f.task,e)}:{}});if(g=await Vo(t,d.runnerTimeoutMs??3e4,`runner start`).catch(e=>{throw t.then(e=>Ho(d,p,e,f.task.id),()=>{}),e}),await d.queue.patchTask(u.organizationId,f.task.id,{handle:g},r(),h)||await Ho(d,p,g,f.task.id),n=u.more,!u.more)break}catch(e){g!==void 0&&await Ho(d,p,g,f.task.id);let t=e instanceof Error?e.message:String(e);if(f.attempts<(d.config.taskAttempts??2)){o.push({...u,status:m});continue}await Uo(d,m,t)}}for(let t of o)await U(e,t.organizationId).queue.requeue(t.organizationId,t.status.task.id,r(),{attempts:t.status.attempts,tokenHash:t.status.tokenHash})}function Yo(e,t=!1,n=!1,r=!1){let i=e.queue.scheduler??={},a=t?i.waiting:void 0;if(a)return a;let o=i.running??Promise.resolve(),s=()=>(i.waiting===c&&delete i.waiting,Jo(e,n,r)),c=o.then(s,s);return i.waiting=c,i.running=c.catch(()=>{}),c}function Xo(e,t=!1){let n=Yo(e,!0,!1,t).catch(()=>{});e.waitUntil&&e.waitUntil(n)}const Zo=new Map,Qo=new Map,$o=Symbol(`OriginError`),es={};var ts=class extends Promise{constructor(e,t,n,r,i={}){let a,o;super((e,t)=>{a=e,o=t}),this.tagged=Array.isArray(e.raw),this.strings=e,this.args=t,this.handler=n,this.canceller=r,this.options=i,this.state=null,this.statement=null,this.resolve=e=>(this.active=!1,a(e)),this.reject=e=>(this.active=!1,o(e)),this.active=!1,this.cancelled=null,this.executed=!1,this.signature=``,this[$o]=this.handler.debug?Error():this.tagged&&ns(this.strings)}get origin(){return(this.handler.debug?this[$o].stack:this.tagged&&Qo.has(this.strings)?Qo.get(this.strings):Qo.set(this.strings,this[$o].stack).get(this.strings))||``}static get[Symbol.species](){return Promise}cancel(){return this.canceller&&=(this.canceller(this),null)}simple(){return this.options.simple=!0,this.options.prepare=!1,this}async readable(){return this.simple(),this.streaming=!0,this}async writable(){return this.simple(),this.streaming=!0,this}cursor(e=1,t){if(this.options.simple=!1,typeof e==`function`&&(t=e,e=1),this.cursorRows=e,typeof t==`function`)return this.cursorFn=t,this;let n;return{[Symbol.asyncIterator]:()=>({next:()=>{if(this.executed&&!this.active)return{done:!0};n&&n();let e=new Promise((e,t)=>{this.cursorFn=t=>(e({value:t,done:!1}),new Promise(e=>n=e)),this.resolve=()=>(this.active=!1,e({done:!0})),this.reject=e=>(this.active=!1,t(e))});return this.execute(),e},return(){return n&&n(es),{done:!0}}})}}describe(){return this.options.simple=!1,this.onlyDescribe=this.options.prepare=!0,this}stream(){throw Error(`.stream has been renamed to .forEach`)}forEach(e){return this.forEachFn=e,this.handle(),this}raw(){return this.isRaw=!0,this}values(){return this.isRaw=`values`,this}async handle(){!this.executed&&(this.executed=!0)&&await 1&&this.handler(this)}execute(){return this.handle(),this}then(){return this.handle(),super.then.apply(this,arguments)}catch(){return this.handle(),super.catch.apply(this,arguments)}finally(){return this.handle(),super.finally.apply(this,arguments)}};function ns(e){if(Zo.has(e))return Zo.get(e);let t=Error.stackTraceLimit;return Error.stackTraceLimit=4,Zo.set(e,Error()),Error.stackTraceLimit=t,Zo.get(e)}var rs=class extends Error{constructor(e){super(e.message),this.name=this.constructor.name,Object.assign(this,e)}};const G={connection:is,postgres:as,generic:os,notSupported:ss};function is(e,t,n){let{host:r,port:i}=n||t,a=Object.assign(Error(`write `+e+` `+(t.path||r+`:`+i)),{code:e,errno:e,address:t.path||r},t.path?{}:{port:i});return Error.captureStackTrace(a,is),a}function as(e){let t=new rs(e);return Error.captureStackTrace(t,as),t}function os(e,t){let n=Object.assign(Error(e+`: `+t),{code:e});return Error.captureStackTrace(n,os),n}function ss(e){let t=Object.assign(Error(e+` (B) is not supported`),{code:`MESSAGE_NOT_SUPPORTED`,name:e});return Error.captureStackTrace(t,ss),t}const cs={string:{to:25,from:null,serialize:e=>``+e},number:{to:0,from:[21,23,26,700,701],serialize:e=>``+e,parse:e=>+e},json:{to:114,from:[114,3802],serialize:e=>JSON.stringify(e),parse:e=>JSON.parse(e)},boolean:{to:16,from:16,serialize:e=>e===!0?`t`:`f`,parse:e=>e===`t`},date:{to:1184,from:[1082,1114,1184],serialize:e=>(e instanceof Date?e:new Date(e)).toISOString(),parse:e=>new Date(e)},bytea:{to:17,from:17,serialize:e=>`\\x`+Buffer.from(e).toString(`hex`),parse:e=>Buffer.from(e.slice(2),`hex`)}};var ls=class{then(){Ss()}catch(){Ss()}finally(){Ss()}},us=class extends ls{constructor(e){super(),this.value=ks(e)}},ds=class extends ls{constructor(e,t,n){super(),this.value=e,this.type=t,this.array=n}},fs=class extends ls{constructor(e,t){super(),this.first=e,this.rest=t}build(e,t,n,r){let i=xs.map(([t,n])=>({fn:n,i:e.search(t)})).sort((e,t)=>e.i-t.i).pop();return i.i===-1?Os(this.first,r):i.fn(this.first,this.rest,t,n,r)}};function ps(e,t,n,r){let i=e instanceof ds?e.value:e;if(i===void 0&&(e instanceof ds?e.value=r.transform.undefined:i=e=r.transform.undefined,i===void 0))throw G.generic(`UNDEFINED_VALUE`,`Undefined values are not allowed`);return`$`+n.push(e instanceof ds?(t.push(e.value),e.array?e.array[e.type||As(e.value)]||e.type||Ts(e.value):e.type):(t.push(e),As(e)))}const ms=Ds(cs);function hs(e,t,n,r,i,a){for(let o=1;o<e.strings.length;o++)t+=gs(t,n,r,i,a)+e.strings[o],n=e.args[o];return t}function gs(e,t,n,r,i){return t instanceof fs?t.build(e,n,r,i):t instanceof ts?_s(t,n,r,i):t instanceof us?t.value:t&&t[0]instanceof ts?t.reduce((e,t)=>e+` `+_s(t,n,r,i),``):ps(t,n,r,i)}function _s(e,t,n,r){return e.fragment=!0,hs(e,e.strings[0],e.args[0],t,n,r)}function vs(e,t,n,r,i){return e.map(e=>`(`+r.map(r=>gs(`values`,e[r],t,n,i)).join(`,`)+`)`).join(`,`)}function ys(e,t,n,r,i){let a=Array.isArray(e[0]),o=t.length?t.flat():Object.keys(a?e[0]:e);return vs(a?e:[e],n,r,o,i)}function bs(e,t,n,r,i){if(typeof e==`string`&&(e=[e].concat(t)),Array.isArray(e))return Os(e,i);let a;return(t.length?t.flat():Object.keys(e)).map(t=>(a=e[t],(a instanceof ts?_s(a,n,r,i):a instanceof us?a.value:ps(a,n,r,i))+` as `+ks(i.transform.column.to?i.transform.column.to(t):t))).join(`,`)}const xs=Object.entries({values:ys,in:(...e)=>{let t=ys(...e);return t===`()`?`(null)`:t},select:bs,as:bs,returning:bs,"\\(":bs,update(e,t,n,r,i){return(t.length?t.flat():Object.keys(e)).map(t=>ks(i.transform.column.to?i.transform.column.to(t):t)+`=`+gs(`values`,e[t],n,r,i))},insert(e,t,n,r,i){let a=t.length?t.flat():Object.keys(Array.isArray(e)?e[0]:e);return`(`+Os(a,i)+`)values`+vs(Array.isArray(e)?e:[e],n,r,a,i)}}).map(([e,t])=>[RegExp(`((?:^|[\\s(])`+e+`(?:$|[\\s(]))(?![\\s\\S]*\\1)`,`i`),t]);function Ss(){throw G.generic(`NOT_TAGGED_CALL`,`Query not called as a tagged template literal`)}const Cs=ms.serializers,ws=ms.parsers;function Ts(e){return Array.isArray(e)?Ts(e[0]):typeof e==`string`?1009:0}const Es=function(e){let t=Ds(e||{});return{serializers:Object.assign({},Cs,t.serializers),parsers:Object.assign({},ws,t.parsers)}};function Ds(e){return Object.keys(e).reduce((t,n)=>(e[n].from&&[].concat(e[n].from).forEach(r=>t.parsers[r]=e[n].parse),e[n].serialize&&(t.serializers[e[n].to]=e[n].serialize,e[n].from&&[].concat(e[n].from).forEach(r=>t.serializers[r]=e[n].serialize)),t),{parsers:{},serializers:{}})}function Os(e,{transform:{column:t}}){return e.map(e=>ks(t.to?t.to(e):e)).join(`,`)}const ks=function(e){return`"`+e.replace(/"/g,`""`).replace(/\./g,`"."`)+`"`},As=function e(t){return t instanceof ds?t.type:t instanceof Date?1184:t instanceof Uint8Array?17:t===!0||t===!1?16:typeof t==`bigint`?20:Array.isArray(t)?e(t[0]):0},js=/\\/g,Ms=/"/g;function Ns(e){return e.replace(js,`\\\\`).replace(Ms,`\\"`)}const Ps=function e(t,n,r,i){if(Array.isArray(t)===!1)return t;if(!t.length)return`{}`;let a=t[0],o=i===1020?`;`:`,`;return Array.isArray(a)&&!a.type?`{`+t.map(t=>e(t,n,r,i)).join(o)+`}`:`{`+t.map(e=>{if(e===void 0&&(e=r.transform.undefined,e===void 0))throw G.generic(`UNDEFINED_VALUE`,`Undefined values are not allowed`);return e===null?`null`:`"`+Ns(n?n(e.type?e.value:e):``+e)+`"`}).join(o)+`}`},Fs={i:0,char:null,str:``,quoted:!1,last:0},Is=function(e,t,n){return Fs.i=Fs.last=0,Ls(Fs,e,t,n)};function Ls(e,t,n,r){let i=[],a=r===1020?`;`:`,`;for(;e.i<t.length;e.i++){if(e.char=t[e.i],e.quoted)e.char===`\\`?e.str+=t[++e.i]:e.char===`"`?(i.push(n?n(e.str):e.str),e.str=``,e.quoted=t[e.i+1]===`"`,e.last=e.i+2):e.str+=e.char;else if(e.char===`"`)e.quoted=!0;else if(e.char===`{`)e.last=++e.i,i.push(Ls(e,t,n,r));else if(e.char===`}`){e.quoted=!1,e.last<e.i&&i.push(n?n(t.slice(e.last,e.i)):t.slice(e.last,e.i)),e.last=e.i+1;break}else e.char===a&&e.p!==`}`&&e.p!==`"`&&(i.push(n?n(t.slice(e.last,e.i)):t.slice(e.last,e.i)),e.last=e.i+1);e.p=e.char}return e.last<e.i&&i.push(n?n(t.slice(e.last,e.i+1)):t.slice(e.last,e.i+1)),i}const Rs=e=>{let t=e[0];for(let n=1;n<e.length;n++)t+=e[n]===`_`?e[++n].toUpperCase():e[n];return t},zs=e=>{let t=e[0].toUpperCase();for(let n=1;n<e.length;n++)t+=e[n]===`_`?e[++n].toUpperCase():e[n];return t},Bs=e=>e.replace(/_/g,`-`),Vs=e=>e.replace(/([A-Z])/g,`_$1`).toLowerCase(),Hs=e=>(e.slice(0,1)+e.slice(1).replace(/([A-Z])/g,`_$1`)).toLowerCase(),Us=e=>e.replace(/-/g,`_`);function Ws(e){return function t(n,r){return typeof n==`object`&&n&&(r.type===114||r.type===3802)?Array.isArray(n)?n.map(e=>t(e,r)):Object.entries(n).reduce((n,[i,a])=>Object.assign(n,{[e(i)]:t(a,r)}),{}):n}}Rs.column={from:Rs},Rs.value={from:Ws(Rs)},Vs.column={to:Vs};const Gs={...Rs};Gs.column.to=Vs,zs.column={from:zs},zs.value={from:Ws(zs)},Hs.column={to:Hs};const Ks={...zs};Ks.column.to=Hs,Bs.column={from:Bs},Bs.value={from:Ws(Bs)},Us.column={to:Us};const qs={...Bs};qs.column.to=Us;var Js=class extends Array{constructor(){super(),Object.defineProperties(this,{count:{value:null,writable:!0},state:{value:null,writable:!0},command:{value:null,writable:!0},columns:{value:null,writable:!0},statement:{value:null,writable:!0}})}static get[Symbol.species](){return Array}},Ys=Xs;function Xs(e=[]){let t=e.slice(),n=0;return{get length(){return t.length-n},remove:e=>{let n=t.indexOf(e);return n===-1?null:(t.splice(n,1),e)},push:e=>(t.push(e),e),shift:()=>{let e=t[n++];return n===t.length?(n=0,t=[]):t[n-1]=void 0,e}}}let Zs=Buffer.allocUnsafe(256);const Qs=`BCcDdEFfHPpQSX`.split(``).reduce((e,t)=>{let n=t.charCodeAt(0);return e[t]=()=>(Zs[0]=n,K.i=5,K),e},{}),K=Object.assign(ec,Qs,{N:`\0`,i:0,inc(e){return K.i+=e,K},str(e){let t=Buffer.byteLength(e);return $s(t),K.i+=Zs.write(e,K.i,t,`utf8`),K},i16(e){return $s(2),Zs.writeUInt16BE(e,K.i),K.i+=2,K},i32(e,t){return t||t===0?(Zs.writeUInt32BE(e,t),K):($s(4),Zs.writeUInt32BE(e,K.i),K.i+=4,K)},z(e){return $s(e),Zs.fill(0,K.i,K.i+e),K.i+=e,K},raw(e){return Zs=Buffer.concat([Zs.subarray(0,K.i),e]),K.i=Zs.length,K},end(e=1){Zs.writeUInt32BE(K.i-e,e);let t=Zs.subarray(0,K.i);return K.i=0,Zs=Buffer.allocUnsafe(256),t}});function $s(e){if(Zs.length-K.i<e){let t=Zs,n=t.length;Zs=Buffer.allocUnsafe(n+(n>>1)+e),t.copy(Zs)}}function ec(){return K.i=0,K}var tc=dc;let nc=1;const rc=K().S().end(),ic=K().H().end(),ac=K().i32(8).i32(80877103).end(8),oc=Buffer.concat([K().E().str(K.N).i32(0).end(),rc]),sc=K().D().str(`S`).str(K.N).end(),cc=()=>{},lc=new Set([`FetchPreparedStatement`,`RevalidateCachedQuery`,`transformAssignedExpr`]),uc={83:`severity_local`,86:`severity`,67:`code`,77:`message`,68:`detail`,72:`hint`,80:`position`,112:`internal_position`,113:`internal_query`,87:`where`,115:`schema_name`,116:`table_name`,99:`column_name`,100:`data type_name`,110:`constraint_name`,70:`file`,76:`line`,82:`routine`};function dc(e,t={},{onopen:n=cc,onend:r=cc,onclose:i=cc}={}){let{sslnegotiation:a,ssl:o,max:s,user:c,host:l,port:u,database:d,parsers:f,transform:p,onnotice:m,onnotify:h,onparameter:g,max_pipeline:_,keep_alive:v,backoff:y,target_session_attrs:b}=e,x=Ys(),ee=nc++,te={pid:null,secret:null},ne=_c(Ze,e.idle_timeout),re=_c(Ze,e.max_lifetime),ie=_c(Ve,e.connect_timeout),S=null,ae,oe=null,C=new Js,se=Buffer.alloc(0),ce=e.fetch_types,le={},ue={},de=Math.random().toString(36).slice(2),fe=1,pe=0,me=0,he=0,ge=0,_e=0,ve=0,ye=0,be=null,xe=null,Se=!1,Ce=null,we=null,Te=null,Ee=null,w=null,De=null,Oe=null,ke=null,T=null,Ae=null,E={queue:t.closed,idleTimer:ne,connect(e){Te=e,Ke()},terminate:Qe,execute:Ne,cancel:Me,end:Ze,count:0,id:ee};return t.closed&&t.closed.push(E),E;async function je(){let t;try{t=e.socket?await Promise.resolve(e.socket(e)):new xr.Socket}catch(e){Je(e);return}return t.on(`error`,Je),t.on(`close`,$e),t.on(`drain`,Ue),t}async function Me({pid:e,secret:t},n,r){try{ae=K().i32(16).i32(80877102).i32(e).i32(t).end(16),await Ge(),S.once(`error`,r),S.once(`close`,n)}catch(e){r(e)}}function Ne(t){if(Se)return Xe(t,G.connection(`CONNECTION_DESTROYED`,e));if(w)return Xe(t,G.generic(`COPY_IN_PROGRESS`,`You cannot execute queries during copy`));if(!t.cancelled)try{return t.state=te,T?x.push(t):(T=t,T.active=!0),Re(t),ze(Pe(t))&&!t.describeFirst&&!t.cursorFn&&x.length<_&&(!t.options.onexecute||t.options.onexecute(E))}catch(e){return x.length===0&&ze(rc),Ye(e),!0}}function Pe(e){if(e.parameters.length>=65534)throw G.generic(`MAX_PARAMETERS_EXCEEDED`,`Max number of parameters (65534) exceeded`);return e.options.simple?K().Q().str(e.statement.string+K.N).end():e.describeFirst?Buffer.concat([Fe(e),ic]):e.prepare?e.prepared?Ie(e):Buffer.concat([Fe(e),Ie(e)]):Le(e)}function Fe(e){return Buffer.concat([Lt(e.statement.string,e.parameters,e.statement.types,e.statement.name),Rt(`S`,e.statement.name)])}function Ie(e){return Buffer.concat([It(e.parameters,e.statement.types,e.statement.name,e.cursorName),e.cursorFn?zt(``,e.cursorRows):oc])}function Le(e){return Buffer.concat([Lt(e.statement.string,e.parameters,e.statement.types),sc,Ie(e)])}function Re(t){let n=[],r=[],i=hs(t,t.strings[0],t.args[0],n,r,e);!t.tagged&&t.args.forEach(t=>ps(t,n,r,e)),t.prepare=e.prepare&&(`prepare`in t.options?t.options.prepare:!0),t.string=i,t.signature=t.prepare&&r+i,t.onlyDescribe&&delete ue[t.signature],t.parameters=t.parameters||n,t.prepared=t.prepare&&t.signature in ue,t.describeFirst=t.onlyDescribe||n.length&&!t.prepared,t.statement=t.prepared?ue[t.signature]:{string:i,types:r,name:t.prepare?de+fe++:``},typeof e.debug==`function`&&e.debug(ee,i,n,r)}function ze(e,t){return De=De?Buffer.concat([De,e]):Buffer.from(e),t||De.length>=1024?Be(t):(xe===null&&(xe=setImmediate(Be)),!0)}function Be(e){let t=S.write(De,e);return xe!==null&&clearImmediate(xe),De=xe=null,t}function Ve(){Ye(G.connection(`CONNECT_TIMEOUT`,e,S)),S.destroy()}async function He(){if(a!==`direct`&&(ze(ac),!await new Promise(e=>S.once(`data`,t=>e(t[0]===83)))&&o===`prefer`))return qe();let e={socket:S,servername:xr.isIP(S.host)?void 0:S.host};a===`direct`&&(e.ALPNProtocols=[`postgresql`]),o===`require`||o===`allow`||o===`prefer`?e.rejectUnauthorized=!1:typeof o==`object`&&Object.assign(e,o),S.removeAllListeners(),S=Sr.connect(e),S.on(`secureConnect`,qe),S.on(`error`,Je),S.on(`close`,$e),S.on(`drain`,Ue)}function Ue(){!T&&n(E)}function We(e){if(!(Ce&&(Ce.push(e),me-=e.length,me>0)))for(se=Ce?Buffer.concat(Ce,_e-me):se.length===0?e:Buffer.concat([se,e],se.length+e.length);se.length>4;){if(_e=se.readUInt32BE(1),_e>=se.length){me=_e-se.length,Ce=[se];break}try{et(se.subarray(0,_e+1))}catch(e){T&&(T.cursorFn||T.describeFirst)&&ze(rc),Ye(e)}se=se.subarray(_e+1),me=0,Ce=null}}async function Ge(){if(Se=!1,le={},S||=await je(),S){if(ie.start(),e.socket)return o?He():qe();if(S.on(`connect`,o?He:qe),e.path)return S.connect(e.path);S.ssl=o,S.connect(u[he],l[he]),S.host=l[he],S.port=u[he],he=(he+1)%u.length}}function Ke(){setTimeout(Ge,pe?Math.max(0,pe+ve-Tr.now()):0)}function qe(){try{ue={},ce=e.fetch_types,de=Math.random().toString(36).slice(2),fe=1,re.start(),S.on(`data`,We),v&&S.setKeepAlive&&S.setKeepAlive(!0,1e3*v),ze(Vt())}catch(e){Je(e)}}function Je(n){if(!(E.queue===t.connecting&&e.host[ge+1]))for(Ye(n);x.length;)Xe(x.shift(),n)}function Ye(e){w&&=(w.destroy(e),null),T&&Xe(T,e),Te&&=(Xe(Te,e),null)}function Xe(t,n){if(t.reserve)return t.reject(n);(!n||typeof n!=`object`)&&(n=Error(n)),`query`in n||`parameters`in n||Object.defineProperties(n,{stack:{value:n.stack+t.origin.replace(/.*\n/,`
|
|
3
|
+
`))}function Ra(){return{integration:`source`,type:`import`,appId:``,installationId:``,deliveryId:``,actor:{id:`admin`},text:``}}async function za(e,t,n,r=Ra(),i){let a=await Oa(e.integrations,{config:e.config,store:e.store},t,r);if(!a)return;let o=await ja(e.store,a.contents,t,n,a.token,(e.now??Date.now)(),i?{branch:i}:{});return await La(e,o),o}var Ba=class extends Error{};function Va(e,t,n,r){let i=t;return(!n.runner||n.runner===e||n.runner===i.name)&&(!n.defaults||!!i.default)&&(!n.ids||n.ids.includes(e))&&(!n.agent||(r??i.agent)===n.agent)&&(!Object.hasOwn(n,`visibleTo`)||!i.owner||i.owner===n.visibleTo)&&(!n.active||i.deletedAt===void 0)&&(!n.installation||i.installationId===n.installation)&&(!n.apps||!!i.app&&n.apps.includes(i.app))}const Ha=(e,t)=>e===`credential`?`credential:${Op(t).owner??``}`:e===`runner`?`runners:`:`installation:${t}`;async function Ua(e,t,n,r){let i=Op(n).owner,a=(await e.list(t)).filter(e=>t===`credential`?Op(e.id).owner===i:e.id===n),o=await r(a.find(e=>e.id===n)?.value,a,e);for(let n of o??[])n.value===null?await e.delete(t,n.id):await e.put(t,n.id,n.value);return!!o?.length}function Wa(e,t,n){if(n.deletedAt!==void 0)return;let r=n.app.split(`/`)[0],i=(e,t)=>[e.slice(t.app.length+1),...t.covers??[]],a=new Set(i(t,n));if(e.some(([e,n])=>{let o=n;return e!==t&&!o.deletedAt&&(o.app===r||o.app.startsWith(`${r}/`))&&i(e,o).some(e=>a.has(e))}))throw new Ba(`Installation "${t}" is bound through another app.`)}var Ga=class{now;appUpdates=new Map;values=new Map;configUpdate;constructor(e=Date.now){this.now=e}async withAppLock(e,t){e.startsWith(`runners:`)&&(e=`runners:`);let n=(this.appUpdates.get(e)??Promise.resolve()).catch(()=>{}).then(()=>t(this));this.appUpdates.set(e,n);try{return await n}finally{this.appUpdates.get(e)===n&&this.appUpdates.delete(e)}}async withConfigLock(e){let t=(this.configUpdate??Promise.resolve()).catch(()=>{}).then(()=>e(this));this.configUpdate=t;try{return await t}finally{this.configUpdate===t&&delete this.configUpdate}}withCredential(e,t,n){return this.withAppLock(Ha(e,t),()=>Ua(this,e,t,n))}bucket(e){let t=this.values.get(e);return t||(t=new Map,this.values.set(e,t)),t}read(e,t){let n=t;if(e!==`app`||!n.shared)return t;let r=this.live(`app`).get(n.shared)?.value;return{...n,credentials:r?.credentials??``}}live(e){let t=this.bucket(e),n=this.now();for(let[e,r]of t)r.expiresAt!==void 0&&r.expiresAt<=n&&t.delete(e);return t}async get(e,t){let n=this.live(e).get(t);return n&&this.read(e,n.value)}async patchLogin(e,t,n={}){let r=this.live(`login`).get(e),i=r?.value;if(!i||!(i.expiresAt>this.now())||Object.entries(n).some(([e,t])=>Array.isArray(t)?!t.includes(i[e]):i[e]!==t))return;let a={...i,...t};return a.input===null&&delete a.input,r.value=a,a}completeLogin(e,t,n,r){return Up(this,e,t,n,r)}async put(e,t,n,r={}){e===`installation`&&Wa([...this.live(e)].map(([e,t])=>[e,t.value]),t,n);let i=r.ttlMs===void 0?void 0:this.now()+r.ttlMs,a=this.bucket(e),o=e===`task`&&!r.unarchive?a.get(t)?.value?.archivedAt:void 0;a.set(t,{value:o===void 0?e===`app`&&n.shared?{...n,credentials:``}:n:Object.assign({},n,{archivedAt:o}),expiresAt:i})}async putMany(e,t){if(e===`task`){await Promise.all(t.map(t=>this.put(e,t.id,t.value)));return}let n=this.bucket(e);for(let e of t)n.set(e.id,{value:e.value})}async list(e,t={}){let n=e===`installation`&&t.agent?this.live(`app`):void 0;return[...this.live(e).entries()].filter(([e])=>!t.prefix||e.startsWith(t.prefix)).filter(([e])=>!t.after||e>t.after).filter(([r,i])=>Va(r,i.value,t,e===`agent`?r:n?.get(i.value.app)?.value?.agent)).sort(([e],[t])=>e.localeCompare(t)).slice(0,t.limit).map(([t,n])=>({id:t,value:this.read(e,n.value)}))}async delete(e,t){this.bucket(e).delete(t)}async create(e,t,n,r={}){let i=this.live(e);if(i.has(t))return!1;let a=r.ttlMs===void 0?void 0:this.now()+r.ttlMs;return i.set(t,{value:n,expiresAt:a}),!0}async claimDeliveryLease(e,t,n){let r=this.live(`delivery`);if(r.has(e))return;let i=this.live(`snapshot`).get(`delivery:${e}`)?.value?.failures??0;return r.set(e,{value:{owner:t,failures:i},expiresAt:this.now()+n}),i}async updateDeliveryLease(e,t,n,r={ttlMs:3e4}){let i=this.live(`delivery`);if(i.get(e)?.value?.owner!==t)return!1;if(!n)i.delete(e),this.bucket(`snapshot`).delete(`delivery:${e}`);else{let t=n.next===void 0?n:{...n,next:this.now()+r.ttlMs};i.set(e,{value:t,expiresAt:this.now()+r.ttlMs}),n.next!==void 0&&this.bucket(`snapshot`).set(`delivery:${e}`,{value:t,expiresAt:this.now()+864e5})}return!0}async updateDelivery(e,t,n,r={}){let i=this.live(`delivery`);return i.get(e)?.value?.owner===t&&(n===void 0?i.delete(e):i.set(e,{value:n,...r.ttlMs===void 0?{}:{expiresAt:this.now()+r.ttlMs}}),!0)}async take(e,t){let n=this.live(e),r=n.has(t);return r&&n.delete(t),r}},Ka=r({LocalStore:()=>$a,deleteLocalAgent:()=>ro,syncLocalAgents:()=>to,writeLocalAgent:()=>no});const qa=new Set([`app`,`installation`,`runner`]),Ja=new Set([`task`,`tasklog`,`inbox`,`usage`]),Ya=new Set([`connection`,`credential`]),Xa=new Set([`agent`,`agentversion`]);function Za(e,t){try{return JSON.parse(H.readFileSync(e,`utf8`))}catch(e){if(e.code===`ENOENT`)return t;throw e}}function Qa(e,t){H.mkdirSync(V.dirname(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;try{H.writeFileSync(n,t,{mode:384}),H.renameSync(n,e)}finally{H.rmSync(n,{force:!0})}}var $a=class{now;connections;connectionContexts;connectionSecrets;derived=new Ga;writes=Promise.resolve();constructor(e=Date.now,t=()=>new a){this.now=e,this.connections=t}withAppLock(e,t){return e.startsWith(`connection:`)||e.startsWith(`connection-import:`)?this.connections().withLock(()=>t(this),e.replace(/^connection:/,``)):this.derived.withAppLock(e,()=>t(this))}withConfigLock(e){return this.derived.withConfigLock(()=>e(this))}withCredential(e,t,n){let r=()=>Ua(this,e,t,n);return e===`credential`?this.connections().withLock(r,Ha(e,t)):this.derived.withAppLock(Ha(e,t),r)}get appsFile(){return i(`apps.json`)}get deliveriesFile(){return V.join(ie(``),`deliveries.json`)}get notesDir(){return V.join(ie(``),`notes`)}noteFile(e){return V.join(this.notesDir,`${encodeURIComponent(e)}.md`)}serial(e,t=!1){let n=this.writes.then(()=>t?this.connections().withLock(async()=>e()):e());return this.writes=n.catch(()=>{}),n}apps(){return Za(this.appsFile,{})}recordsFile(e){return e===`delivery`?this.deliveriesFile:e===`usage`?ze():e===`snapshot`?V.join(ie(``),`snapshots.json`):V.join(ie(``),`runner`,`${e}.json`)}deliveries(e=`delivery`){let t=this.now();return Object.fromEntries(Object.entries(Za(this.recordsFile(e),{})).filter(([,e])=>e.expiresAt===void 0||e.expiresAt>t))}entries(e){if(e===`connection`)return this.connections().list().map(e=>[e.id,e]);if(e===`credential`)return this.connections().credentials().map(e=>[e.id,e.value]);if(qa.has(e)){let t=this.apps(),n=Object.entries(t[e]??{});return e===`app`?n.map(([e,n])=>{let r=n,i=r.shared?t.app?.[r.shared]:void 0;return[e,r.shared?{...r,credentials:i?.credentials??``}:r]}):n}if(e===`delivery`||e===`snapshot`||Ja.has(e))return Object.entries(this.deliveries(e)).map(([e,t])=>[e,t.value]);if(e===`note`){let e=[];try{e=H.readdirSync(this.notesDir).filter(e=>e.endsWith(`.md`))}catch{}return e.map(e=>[decodeURIComponent(e.slice(0,-3)),H.readFileSync(V.join(this.notesDir,e),`utf8`)])}return[]}refuse(e){throw Error(`A local server keeps no ${e} records`)}async get(e,t){if(e===`connection`)return this.connections().get(t);if(Xa.has(e))return this.derived.get(e,t);if(e===`note`)try{return H.readFileSync(this.noteFile(t),`utf8`)}catch{return}return this.entries(e).find(([e])=>e===t)?.[1]}async completeLogin(){return this.refuse(`login`)}async patchLogin(){return this.refuse(`login`)}async put(e,t,n,r={}){if(Xa.has(e))return this.derived.put(e,t,n,r);await this.serial(()=>this.write(e,t,n,r.ttlMs),Ya.has(e))}write(e,t,n,r){if(e===`connection`){this.connections().put(n);return}if(e===`credential`&&n.engine===`custom`){this.connections().putCredential(t,n);return}if(qa.has(e)){let r=this.apps();e===`installation`&&Wa(Object.entries(r.installation??{}),t,n),e===`app`&&n.shared&&(n={...n,credentials:``}),r[e]={...r[e],[t]:n},Qa(this.appsFile,`${JSON.stringify(r,null,2)}\n`)}else if(e===`delivery`||e===`snapshot`||Ja.has(e)){let i=this.deliveries(e);i[t]={value:n,...r===void 0?{}:{expiresAt:this.now()+r}},Qa(this.recordsFile(e),`${JSON.stringify(i)}\n`)}else e===`note`?Qa(this.noteFile(t),String(n)):this.refuse(e)}remove(e,t){if(e===`connection`){let e=this.connections(),n=!!e.get(t);return e.delete(t),n}if(e===`credential`){let e=this.connections(),n=e.credentials().some(e=>e.id===t);return e.deleteCredential(t),n}if(qa.has(e)){let n=this.apps(),r=n[e];return!r||!(t in r)?!1:(delete r[t],Qa(this.appsFile,`${JSON.stringify(n,null,2)}\n`),!0)}if(e===`delivery`||e===`snapshot`||Ja.has(e)){let n=this.deliveries(e);return t in n&&(delete n[t],Qa(this.recordsFile(e),`${JSON.stringify(n)}\n`),!0)}if(e===`note`){let e=this.noteFile(t),n=H.existsSync(e);return H.rmSync(e,{force:!0}),n}return!1}async putMany(e,t){for(let n of t)await this.put(e,n.id,n.value)}async list(e,t={}){if(Xa.has(e))return this.derived.list(e,t);let n=e===`installation`&&t.agent?this.apps().app:void 0;return this.entries(e).filter(([e])=>(!t.prefix||e.startsWith(t.prefix))&&(!t.after||e>t.after)).filter(([e,r])=>Va(e,r,t,n?.[r.app]?.agent)).sort(([e],[t])=>e.localeCompare(t)).slice(0,t.limit).map(([n,r])=>{let i=r;return{id:n,value:(e===`connection`&&t.secrets&&(t.secrets===`all`||i.provider===`mcp`&&i.auth===`oauth`)?this.connections().get(n):void 0)??r}})}async delete(e,t){if(Xa.has(e))return this.derived.delete(e,t);await this.serial(()=>this.remove(e,t),Ya.has(e))}async create(e,t,n,r={}){return Xa.has(e)?this.derived.create(e,t,n,r):this.serial(()=>!this.entries(e).some(([e])=>e===t)&&(this.write(e,t,n,r.ttlMs),!0),Ya.has(e))}claimDeliveryLease(e,t,n){return this.serial(()=>{if(this.deliveries()[e])return;let r=this.deliveries(`snapshot`)[`delivery:${e}`]?.value?.failures??0;return this.write(`delivery`,e,{owner:t,failures:r},n),r})}updateDeliveryLease(e,t,n,r={ttlMs:3e4}){return this.serial(()=>{if(this.deliveries()[e]?.value?.owner!==t)return!1;if(!n)this.remove(`delivery`,e),this.remove(`snapshot`,`delivery:${e}`);else{let t=n.next===void 0?n:{...n,next:this.now()+r.ttlMs};this.write(`delivery`,e,t,r.ttlMs),n.next!==void 0&&this.write(`snapshot`,`delivery:${e}`,t,864e5)}return!0})}async updateDelivery(e,t,n,r={}){return this.serial(()=>this.entries(`delivery`).find(([t])=>t===e)?.[1]?.owner===t&&(n===void 0?this.remove(`delivery`,e):this.write(`delivery`,e,n,r.ttlMs),!0))}async take(e,t){return Xa.has(e)?this.derived.take(e,t):this.serial(()=>this.remove(e,t),Ya.has(e))}};function eo(e){let t=V.resolve(e);for(;!H.existsSync(V.join(t,`.git`));){let e=V.dirname(t);if(e===t)return Promise.resolve(void 0);t=e}return new Promise(t=>nr(`git`,[`log`,`-1`,`--format=%H`,`--`,`.`],{cwd:e},(e,n)=>t(e?void 0:n.trim()||void 0)))}async function to(e,t,n,r){let a=await Ze(t,n,{includeDisabled:!0}),o=await Promise.all(a.filter(e=>!r||e.id===r).map(async t=>{let n=t.usage?{settings:t.usage}:{};if(t.builtin){let{record:r,version:i}=await sa(e,t.id);if(!r)return;let a={...r,settings:void 0,...n,local:!0};return await e.put(`agent`,t.id,a),{record:a,version:i}}if(!t.dir)return;let r=await eo(t.dir),a=H.statSync(V.join(t.dir,`agent.json`)),o=V.join(t.dir,`system.md`),s={agent:t.id,version:1,definition:t.definition,systemPrompt:H.existsSync(o)?H.readFileSync(o,`utf8`):``,files:ga(t.dir),...r?{commit:r}:{},importedFrom:`local:${t.dir}`,createdAt:a.mtimeMs},c={id:t.id,name:t.name,...t.definition.description?{description:t.definition.description}:{},source:V.resolve(t.dir)===i(`agents`,t.id)?`home`:`repo`,path:t.dir,currentVersion:1,...n,local:!0,...r?{commit:r}:{},createdAt:a.birthtimeMs||a.mtimeMs,updatedAt:a.mtimeMs};return await e.put(`agentversion`,ra(t.id,1),s),await e.put(`agent`,t.id,c),{record:c,version:s}}));if(!r){let t=new Set(a.map(e=>e.id));for(let n of await aa(e))n.local&&n.path&&!t.has(n.id)&&await e.delete(`agent`,n.id)}return o.filter(e=>!!e).sort((e,t)=>e.record.id<t.record.id?-1:+(e.record.id>t.record.id))}async function no(e,t,n,r){let a=(await Ze(e,t,{includeDisabled:!0})).find(e=>e.id===n&&!e.builtin)?.dir??i(`agents`,n),o={...r.files,"agent.json":`${JSON.stringify(r.definition,null,2)}\n`,"system.md":r.systemPrompt};for(let[e,t]of Object.entries(o))H.mkdirSync(V.dirname(V.join(a,e)),{recursive:!0}),H.writeFileSync(V.join(a,e),t)}async function ro(e,t,n){let r=(await Ze(e,t,{includeDisabled:!0})).find(e=>e.id===n&&!e.builtin);if(!r?.dir)throw Error(`No local agent named "${n}".`);return V.resolve(r.dir)===i(`agents`,n)&&(H.rmSync(r.dir,{recursive:!0}),!0)}const io=`default`;async function ao(e){if(!e.databaseUrl)throw Error(`DATABASE_URL is required for the Postgres store`);let{connect:t}=await Promise.resolve().then(()=>Hc);return t(e.databaseUrl,e.databasePool)}async function oo(e,t={}){if(e.store!==`postgres`){let e=t.local?new $a:new Ga;return{store:()=>e,queue:new oh(e),chatState:new sn(t.local?V.join(ie(``),`chat.json`):void 0),defaultOrganizationId:io,webhookTarget:async(t,n)=>{let r=await e.get(`app`,t),i=n?await e.get(`installation`,n):void 0;if(r&&n&&(!i||i.deletedAt))for(let{value:r}of await e.list(`app`,{prefix:`${t}/`})){let i=await e.get(`installation`,`${r.id}${n.slice(t.length)}`);if(i&&!i.deletedAt)return{organizationId:io,app:r,bound:{organizationId:io,installation:i}}}return r&&{organizationId:io,app:r,...i&&i.app===t&&!i.deletedAt?{bound:{organizationId:io,installation:i}}:{}}},appRecord:async t=>{let n=await e.get(`app`,t);return n&&{organizationId:io,app:n}},apps:async t=>(await e.list(`app`,{prefix:`${t}:`})).map(e=>({organizationId:io,app:e.value})),installationOrganization:async t=>await e.get(`installation`,t)?io:void 0,installations:async t=>(await e.list(`installation`,{prefix:`${t}:`})).filter(e=>!e.value.deletedAt).map(e=>({key:e.id,organizationId:io})),taskOrganization:async(t,n)=>(await e.get(`task`,t))?.tokenHash===n?io:void 0,sweep:async()=>{},close:async()=>{}}}let n=await ao(e),[{DrizzleStore:r},{DrizzleQueue:i},{UNSCOPED_ORGANIZATION:a},{PgChatState:o}]=await Promise.all([Promise.resolve().then(()=>nu),Promise.resolve().then(()=>su),Promise.resolve().then(()=>ul),import(`./chat-Djps0Seg.js`)]);return{store:t=>new r(n.db,t,Date.now,e),queue:new i(n.db),chatState:new o(n.db),defaultOrganizationId:a,webhookTarget:(e,t)=>r.webhookTarget(n.db,e,t),appRecord:e=>r.appRecord(n.db,e),apps:e=>r.apps(n.db,e),installationOrganization:e=>r.installationOrganization(n.db,e),installations:e=>r.installations(n.db,e),taskOrganization:(e,t)=>r.taskOrganization(n.db,e,t),connection:n,sweep:e=>new r(n.db,a).sweep(e),close:()=>n.close()}}async function so(e,t,n,r){if(e.updateMetadata)return e.updateMetadata(t,n,r);let i=await e.get(t,n);return i?(await e.put(t,n,{...i,...r}),!0):!1}async function co(e,t){let n=[...new Set(t)];return e.getApps?e.getApps(n):(await Promise.all(n.map(async t=>({id:t,value:await e.get(`app`,t)})))).filter(e=>!!e.value)}async function lo(e,t,n,r,i){let a=await t.store.get(`app`,n);if(!a)return D({error:`Unknown app`},404);let o=t.config.publicUrl;if(!o)return D({error:`PUBLIC_URL is not set on this server`},400);let s=await kr(t,`install`,t.session?.user.id??`anonymous`,a.id),c=jt({tx:s,...r?{back:r}:{},...i?{link:i}:{}});return D({url:`${o.replace(/\/$/,``)}/install/${a.integration}?app=${encodeURIComponent(a.id)}&state=${c}`})}async function uo(e,t){let n=e.serverOrganizationId,[r,i]=await Promise.all([e.store.list(`app`),n!==void 0&&n!==e.organizationId&&e.scope?e.scope(n).store.list(`app`).then(t=>t.filter(({value:t})=>t.builtin&&e.integrations[t.integration]?.app.builtin===`shared`)):[]]);return[...r,...i].filter(({value:n})=>(!n.builtin||e.integrations[n.integration]?.app.builtin===`shared`)&&(!t||n.agent===t))}function fo(e,t){let{credentials:n,...r}=t,i=t.builtin?void 0:e.integrations[t.integration]?.app.settingsUrl?.(t,A(e.config,n));return{...r,...i?{settingsUrl:i}:{}}}async function po(e,t){let n=e.config.publicUrl,r=t.filter(t=>!t.builtin&&!t.shared&&e.integrations[t.integration]?.app);if(!n||!r.length)return new Set;let[i,a]=await Promise.all([e.store.list(`delivery`,{ids:r.map(e=>Ma(e.id))}),Promise.all([...new Set(r.map(e=>e.agent))].map(t=>oa(e.store,t)))]),o=e=>i.find(t=>t.id===Ma(e))?.value;return new Set(r.filter(t=>{let r=e.integrations[t.integration].app,i=a.find(e=>e?.agent===t.agent);return i?.definition.integrations[t.integration]?r.update?!Pa(o(t.id),i.version,Na(r,t,n,i.definition)):o(t.id)?.changed===!0:!1}).map(e=>e.id))}async function mo(e,t,n,r){let i=await uo(t,r.searchParams.get(`agent`)),a=await po(t,i.map(({value:e})=>e));return D(i.map(({id:e,value:n})=>({id:e,value:{...fo(t,n),...a.has(e)?{changed:!0}:{}}})))}async function ho(e,t,n){let r=await t.store.get(`app`,n.id);if(!r)return D({error:`Unknown app`},404);if(r.builtin)return D({error:`Only whoever runs this server can remove its shared apps.`},403);let i=t.now?.()??Date.now(),a=await t.store.list(`installation`),o=new Set(a.filter(({value:e})=>e.app===r.id).map(({id:e})=>e));for(let{id:e,value:n}of a){if(o.has(e)){n.deletedAt||await so(t.store,`installation`,e,{deletedAt:i});continue}let r=Object.entries(n.connections??{}),a=r.filter(([,e])=>!o.has(e.id));a.length<r.length&&await so(t.store,`installation`,e,{connections:a.length?Object.fromEntries(a):void 0})}return await t.store.delete(`app`,r.id),await Af(t.store,r.id),D({ok:!0})}async function go(e,t){let n=await e.store.get(`app`,t);if(!n)return D({error:`Unknown app`},404);if(n.builtin||n.shared)return D({error:`Only whoever runs this server can update its shared apps.`},403);if(!e.config.publicUrl)return D({error:`PUBLIC_URL is not set on this server`},400);let r=e.integrations[n.integration];if(!r||!(r.app.update||r.app.drift||r.app.values))return D({error:`Coder cannot update ${r?.name??n.integration} apps.`},400);let i=await oa(e.store,n.agent);return i?.definition.integrations[n.integration]?{app:n,version:i,integration:r}:D({error:`The agent no longer listens on ${r.name}.`},400)}async function _o(e,t,n){let r=await go(t,n.id);if(r instanceof Response)return r;if(r.integration.app.update)return D({error:`Coder updates ${r.integration.name} apps itself.`},400);try{return D(await Fa(t,t.store,r.app,r.version))}catch(e){return console.error(`coder server: reading ${r.app.id} on ${r.integration.name} failed`,e),D({error:e instanceof Error?e.message:String(e)},502)}}async function vo(e,t,n){let r=await go(t,n.id);if(r instanceof Response)return r;let{app:i,version:a,integration:o}=r;if(o.app.values){let{lines:e}=o.app.values(i,{publicUrl:t.config.publicUrl,definition:a.definition});return await t.store.put(`delivery`,Ma(i.id),{version:a.version,manifest:e,changed:!1}),D({updated:!0})}if(!o.app.update)return D({error:`Change the app on ${o.name}; Coder cannot.`},400);let[s]=await Ia(t,[a],i.id);return s?.error?D({error:s.error},502):D({updated:!0})}async function yo(e,t,n,r){let i=r.searchParams.get(`agent`),a=await t.store.list(`installation`,{...i?{agent:i}:{},...r.searchParams.get(`active`)===`1`?{active:!0}:{},limit:O(r,200)});return D(a.map(({id:e,value:n})=>{let{token:r,connections:i,...a}=n,o=n.account.url??t.integrations[n.integration]?.app.accountUrl?.(n.account);return{id:e,value:{...a,account:{...a.account,...o?{url:o}:{}}}}}))}async function bo(e,t){let n=e.config.publicUrl,r=n?qh.has(new URL(n).hostname):!1,i=r?`https://<public address>`:n,a=t.searchParams.get(`agent`),[o,s,c]=await Promise.all([a?ia(e.store,a):void 0,qg(e),e.store.list(`app`)]),l=new Set(s.map(e=>e.integration));return D(await Promise.all(Object.values(e.integrations).map(async n=>({id:n.id,name:n.name,brand:n.brand,description:n.description,installLabel:n.installLabel??`Connect ${n.id}`,...n.use?{use:n.use}:{},...n.covered?{covered:n.covered}:{},...n.featured?{featured:!0}:{},builtinApp:n.app.builtin,...n.auth.user?{personal:!0}:{},...await xm(e,n.id,void 0,[...s,...c.map(e=>e.value)])?{connectable:!0}:{},organizationApps:n.organizationApps===!0,publicApps:n.publicApps===!0,events:Object.fromEntries(Object.entries(n.events).map(([e,{description:t,noisy:n,addressed:r}])=>[e,{description:t,...n?{noisy:n}:{},...r?{addressed:r}:{}}])),presets:n.tools.presets,repositories:!!n.repos,...n.app.createStep&&i?{create:n.app.createStep(i,{name:o?.name,shared:l.has(n.id),public:n.publicApps===!0&&t.searchParams.get(`public`)===`1`})}:{},...r?{unreachable:!0}:{},...n.app.update?{appUpdate:`push`}:n.app.drift?{appUpdate:`drift`}:n.app.values?{appUpdate:`confirm`}:{}}))))}async function xo(e,t,n=!1,r){let i=await e.store.get(`installation`,t.id);if(!i||i.deletedAt)return;if(!n&&i.repos!=null&&(!r||i.repos.includes(r.repo)))return i;let a=e.integrations[i.integration];if(!a?.repos)return i;let o=e.repositoryLists??=new Map,s=o.get(i.id);return s||(s=So(e,a,i,r).finally(()=>o.delete(i.id)),o.set(i.id,s)),s}async function So(e,t,n,r){let i=r?.app??await e.store.get(`app`,n.app);if(!i)throw Error(`Missing app for installation ${n.id}`);let a=r?.token??await jf(e,t,n,A(e.config,i.credentials)),o=await t.repos.list(Tf(e,n),a,e.fetch??fetch);return e.store.withAppLock(`repositories:${n.id}`,async e=>{let t=await e.get(`installation`,n.id);if(!(!t||t.deletedAt))return JSON.stringify(t.repos)===JSON.stringify(n.repos)?(await so(e,`installation`,t.id,{repos:o}),{...t,repos:o}):{...t,repos:t.repos??o}})}async function Co(e,t=!1){let n=new Map;for(let{value:r}of await e.store.list(`installation`,{active:!0})){if(r.deletedAt||!e.integrations[r.integration]?.repos)continue;let i=t||r.repos==null?await xo(e,r,t).catch(e=>(console.error(`coder server: repositories for installation ${r.id} failed`,e),r)):r;if(!(!i||i.deletedAt))for(let e of i.repos??[])n.has(e)||n.set(e,{repo:e,integration:i.integration})}return D([...n.values()].sort((e,t)=>e.repo.localeCompare(t.repo)))}var W=class extends Error{status;fix;constructor(e,t=400,n){super(e),this.status=t,this.fix=n}};function wo(e,t,n){if(n?.settings?.disabled)throw new W(`Agent "${t}" is disabled in this workspace. Enable it in its settings to start tasks.`,409,`${e.config.publicUrl?.replace(/\/$/,``)??``}${Ig(Pg(e),`/agents/${encodeURIComponent(t)}/settings`)}`)}function To(e,t){if(t.cwd===void 0)return;if(!e.local)throw new W(`cwd is available on a local server only`);let n=Xi(t.cwd);if(!n.ok)throw new W(n.detail);return n.folder.path}const Eo=65536,Do=/^[a-z0-9][a-z0-9_-]*$/i,Oo=new Set([`claude`,`codex`,`custom`]),ko=new Set([`low`,`medium`,`high`]);function Ao(e){let t=e.flow??`default`;if(!Do.test(t))throw new W(`Invalid flow "${t}"`);if(e.prompt!==void 0&&typeof e.prompt!=`string`)throw new W(`prompt must be text`);if(t==="default"&&!e.prompt?.trim())throw new W(`prompt is required`);if((e.prompt?.length??0)>Eo)throw new W(`prompt is longer than 64 KB`);if(e.repo!==void 0&&!/^[\w.-]+\/[\w.-]+$/.test(e.repo))throw new W(`repo must be owner/name`);if(e.pr!==void 0&&(!Number.isInteger(e.pr)||e.pr<1||!e.repo))throw new W(`pr needs a repo and a pull request number`);if(e.engine!==void 0&&!Oo.has(e.engine))throw new W(`Unknown engine "${e.engine}"`);if(e.effort!==void 0&&!ko.has(e.effort))throw new W(`Unknown effort "${e.effort}"`);if(e.permissions!==void 0&&!(e.permissions in w))throw new W(`Unknown permissions "${e.permissions}"`);if(e.mcp!==void 0&&(!Array.isArray(e.mcp)||!e.mcp.every(e=>Do.test(e))))throw new W(`mcp must list server names`);if(e.connections!==void 0&&(!Array.isArray(e.connections)||!e.connections.every(e=>typeof e==`string`&&e.length>0)))throw new W(`connections must list connection ids`);if(e.outputSchema!==void 0&&(!e.outputSchema||typeof e.outputSchema!=`object`||Array.isArray(e.outputSchema)))throw new W(`outputSchema must be an object`);if(e.args!==void 0&&(typeof e.args!=`object`||Array.isArray(e.args)))throw new W(`args must be an object`)}async function jo(e,t){let n=(await e.store.list(`installation`)).filter(({value:t})=>!t.deletedAt&&e.integrations[t.integration]?.repos).sort((e,n)=>Number(n.value.repos?.includes(t)??!1)-Number(e.value.repos?.includes(t)??!1)),r=new Map((await co(e.store,n.map(({value:e})=>e.app))).map(({id:e,value:t})=>[e,t]));for(let{value:i}of n){let n=e.integrations[i.integration];if(i.deletedAt||!n?.repos)continue;let a=r.get(i.app);if(a)try{let r=await jf(e,n,i,A(e.config,a.credentials)),o=i.repos?.includes(t)?i:await xo(e,i,!1,{app:a,token:r,repo:t});if(!o?.repos?.includes(t))continue;return{integration:n,installation:o,app:a,token:r}}catch(e){console.error(`coder server: repository token for ${i.id} failed`,e)}}throw new W(`No install in this workspace reaches ${t}`,404)}async function Mo(e,t,n,r){let i=n.repo,{integration:a,installation:o,app:s,token:c}=await jo(e,i),l=await a.repos.get(i,c);return{event:{integration:a.id,type:n.pr?`pull_request`:`task`,appId:s.id,installationId:o.id.slice(s.id.length+1),deliveryId:t,actor:{id:r??``},text:n.prompt??``,...n.pr?{chat:{thread:a.repos.pullRequestThread(i,n.pr)}}:{},repo:n.pr?{...l,ref:`refs/pull/${n.pr}/head`}:l},author:a.author?.(s.name)??s.name}}async function No(e,t,n){Ao(n);let r=To(e,n),i=(e.now??Date.now)(),a=e.session?.user.id,o=n.agent||et();if(!o)throw new W(`Name an agent: this server has no default agent.`);e.local&&await to(e.store,e.local.cwd,e.integrations);let s=()=>e.store.taskInputs?e.store.taskInputs(o,a,n.engine):sa(e.store,o),l=await s();await _a(e.store,i,o,l)&&(l=await s());let{record:u,version:d}=l,f=await Zt(e,{requester:a,runner:n.runner,agent:d?.definition.runner}).catch(e=>{throw new W(e.message)});if(!u||!d)throw new W(`No agent "${o}"`,404);wo(e,o,u);let p=ha(u,d,{...n.engine?{engine:n.engine}:{},...n.model?{model:n.model}:{},...n.effort?{effort:n.effort}:{},...n.permissions?{permissions:n.permissions}:{}},e.integrations),m=tt(p),h=e.store.taskInputs?l.credential:(await Mp(e.store,m.engine,a))?.id,g=m.engine??c;if(!h&&f.runner!==`http`&&!await Tp(e,m.engine))throw new W(`No ${g} credential is connected`,409,await Zp(e,g));let _=`${i.toString(36)}-${or(4).toString(`hex`)}`,v=n.repo?await Mo(e,_,n,a):void 0,y={id:_,source:t,agent:p.id,flow:n.flow??`default`,...f,permissions:m.permissions,...v?{event:v.event,author:v.author}:{},...r&&!v?{cwd:r}:{},...n.prompt?{prompt:n.prompt}:{},...n.args?{args:n.args}:{},...n.mcp?.length?{mcp:n.mcp}:{},definition:p.definition,...h?{credential:h}:{},...a?{requester:a}:{},...p.files?{files:p.files}:{},...p.usage?{usage:p.usage}:{},tools:{},connections:await Yi(e,a,E(p.usage?.connections,n.connections)),...e.session||n.outputSchema?{context:{...e.session?{user:{name:e.session.user.name,email:e.session.user.email}}:{},...n.outputSchema?{outputSchema:n.outputSchema}:{}}}:{}};return e.local&&f.runner===`local`&&!f.runnerId?op(e,y):(await e.queue.enqueue(e.organizationId,y,i,void 0,e.config.maxQueued??1e3),{task:y,status:`queued`,attempts:0,createdAt:i,updatedAt:i})}function Po(e){return e.turns?e.turns:[...e.task.context?.turns??[],{prompt:e.task.prompt??e.task.event?.text??e.task.name??``,result:e.result,error:e.error,finishedAt:e.finishedAt,...[`completed`,`failed`,`cancelled`].includes(e.status)?{logSeq:e.logSeq}:{}}]}async function Fo(e,t,n,r,i={}){if(r!==void 0&&(!r||typeof r!=`object`||Array.isArray(r)))throw new W(`outputSchema must be an object`);if(!n.trim())throw new W(`text is required`);if(n.length>Eo)throw new W(`text is longer than 64 KB`);let{model:a,effort:o,permissions:s}=i;if(a!==void 0&&(typeof a!=`string`||!a.trim()))throw new W(`model must be text`);if(o!==void 0&&!ko.has(o))throw new W(`Unknown effort "${o}"`);if(s!==void 0&&!(s in w))throw new W(`Unknown permissions "${s}"`);let c=e=>Object.keys(w).indexOf(e??`auto`);if(s!==void 0&&c(s)>c(t.task.permissions))throw new W(`permissions can only be lowered on a resumed task (it runs ${t.task.permissions??`auto`})`);if(e.session&&t.task.requester&&t.task.requester!==e.session.user.id)throw new W(`Only the member who asked can continue this task`,403);let l=(e.now??Date.now)(),u=t.task.context?.messages??[],d=String(t.finishedAt??l),f=[...u,{user:`user`,text:t.task.prompt??t.task.event?.text??``,ts:String(t.createdAt)},{user:`agent`,text:t.result?.output??t.error??``,ts:d}].slice(-20),{note:p,...m}=t.task.context??{},h=Po(t);h.at(-1).finishedAt??=l;let g={task:{...t.task,prompt:n,...a||o?{usage:{...t.task.usage,...a?{model:a}:{},...o?{effort:o}:{}}}:{},...s?{permissions:s}:{},context:{...m,...r?{outputSchema:r}:{},messages:f,turns:h}},status:`queued`,attempts:0,generation:(t.generation??0)+1,...t.logSeq===void 0?{}:{logSeq:t.logSeq},...t.logBytes===void 0?{}:{logBytes:t.logBytes},createdAt:t.createdAt,updatedAt:l};if(!await e.queue.continueTask(e.organizationId,t.task.id,g.task,l,{attempts:t.attempts,tokenHash:t.tokenHash??null,generation:t.generation??0}))throw new W(`Task is already active`,409);return g}const Io={principalPerMinute:300,ipPerMinute:60,authPerMinute:20,registerPerMinute:10,pairingPerMinute:5,concurrentTasks:10};var Lo=class{buckets=new Map;sweptAt;startedAt;requests=0;rejections=0;constructor(e=Date.now()){this.startedAt=this.sweptAt=e}consume(e,t,n){if(n-this.sweptAt>=6e4){for(let[e,t]of this.buckets)n-t.at>=6e4&&this.buckets.delete(e);this.sweptAt=n}let r=this.buckets.get(e),i=r?Math.min(t,r.tokens+Math.max(0,n-r.at)*t/6e4):t,a=i<1;if(this.buckets.set(e,{tokens:a?i:i-1,at:n}),!a)return;this.rejections++;let o=Math.max(1,Math.ceil((1-i)*60/t));return D({error:`Too many requests. Try again in ${o} seconds.`},429,{"retry-after":String(o)})}};const Ro=[[e=>e===`/admin/runners/pair`,`pairing`],[e=>e===`/runners/register`,`register`],[e=>e.startsWith(`/admin/`)||e.startsWith(`/runners/`)],[e=>e.startsWith(`/api/auth`)||e===`/login`||e===`/dash/token`,`auth`]];async function zo(e,t,n){let r=new URL(e.url).pathname,i=Ro.find(([e])=>e(r));if(!i)return(r===`/dash`||r.startsWith(`/dash/`))&&t.auth&&!await t.auth.session(e.headers)?Bo(t,void 0,n,`auth`)??{}:{};let a=r.startsWith(`/admin/`)?await ng(e,t):void 0;return Bo(t,r===`/runners/register`?await ig(e,t):a&&!(a instanceof Response)?a.session?`user:${a.session.user.id}`:`admin`:void 0,n,i[1])??{scope:a}}function Bo(e,t,n,r){let i=e.limits??=new Lo((e.now??Date.now)()),a={...Io,...e.config.limits},o=(e.now??Date.now)(),s=t??`ip:${n}`,c=i.consume(s,t?a.principalPerMinute:a.ipPerMinute,o);return c||!r?c:r===`pairing`?i.consume(`pair:${s}`,a.pairingPerMinute,o):i.consume(`${r}:ip:${n}`,r===`auth`?a.authPerMinute:a.registerPerMinute,o)}function Vo(e,t,n){let r;return Promise.race([e,new Promise((e,i)=>{r=setTimeout(()=>i(Error(`${n} timed out`)),t),r.unref?.()})]).finally(()=>clearTimeout(r))}async function Ho(e,t,n,r){try{await Vo(t.stop(n),e.runnerTimeoutMs??1e4,`runner stop`)}catch(e){return console.error(`coder server: runner stop ${r} failed`,e),!1}return!0}async function Uo(e,t,n,r={}){let i=t.handle?await Qt(e,t.task):void 0,a=await e.queue.finish(e.organizationId,t.task.id,{status:`failed`,error:n},(e.now??Date.now)(),{attempts:t.attempts,tokenHash:t.tokenHash??null,generation:t.generation??0,...r});return a&&await Ko(e,t,!0,i),a}async function Wo(e,t,n){if(e.local&&t.handle?.startsWith(`cli:`))return np(e,t,n);let r=t.handle?await Qt(e,t.task):void 0,i={handle:t.handle??null,lastSeenAt:t.lastSeenAt??null,updatedAt:t.updatedAt};if(t.cancelRequestedAt!==void 0&&n-t.cancelRequestedAt>=3e4){let i=await e.queue.finish(e.organizationId,t.task.id,{status:`cancelled`,error:`The runner did not acknowledge cancellation within 30 seconds`},n,{attempts:t.attempts,tokenHash:t.tokenHash,generation:t.generation??0});return i&&await Ko(e,t,!0,r),i}if(!t.handle)return n-(t.lastSeenAt??t.startedAt??t.updatedAt)<(e.config.taskStallMs??3e5)?!1:t.attempts>=(e.config.taskAttempts??2)?Uo(e,t,`runner start was interrupted`,i):e.queue.requeue(e.organizationId,t.task.id,n,{generation:t.generation??0,attempts:t.attempts,tokenHash:t.tokenHash??null,...i});if(t.startedAt!==void 0&&n-t.startedAt>=e.config.taskTimeoutMs)return Uo(e,t,`timeout`);if(!r||n-(t.lastSeenAt??t.startedAt??t.updatedAt)<Math.min(e.config.taskStallMs??6e4,6e4)||!await e.store.withAppLock(`runner-status:${e.organizationId}:${t.task.id}`,async e=>{let r=`runner-status:${t.task.id}:${t.generation??0}:${t.attempts}`,i=await e.get(`delivery`,r);return i&&`at`in i&&i.at!==void 0&&n-i.at<3e4?!1:(await e.put(`delivery`,r,{at:n},{ttlMs:6e4}),!0)}))return!1;let a=await Vo(r.status(t.handle),e.runnerTimeoutMs??1e4,`runner status`);return a.state===`exited`?Uo(e,t,`runner exited${a.code===void 0?``:` with code ${a.code}`}`,{handle:t.handle,lastSeenAt:t.lastSeenAt??null}):Uo(e,t,`The runner stopped reporting heartbeats`,{handle:t.handle,lastSeenAt:t.lastSeenAt??null})}async function Go(e,t){return[`running`,`waiting`].includes(t.status)&&await Wo(e,t,(e.now??Date.now)()).catch(()=>!1)?await e.store.get(`task`,t.task.id)??t:t}async function Ko(e,t,n=!1,r){let i=`${e.organizationId}:${t.task.id}:${t.attempts}`,a=e.settings?.cancelChecks?.get(i);if(a&&(clearTimeout(a.timer),a.finish(),e.settings.cancelChecks.delete(i)),!t.handle||t.logsComplete)return;let o=r??await Qt(e,t.task);o&&(n||o.kind===`vercel-sandbox`||o.kind===`local-docker`)&&!await Ho(e,o,t.handle,t.task.id)||await e.queue.patchTask(e.organizationId,t.task.id,{logsComplete:!0},(e.now??Date.now)(),{attempts:t.attempts,tokenHash:t.tokenHash,generation:t.generation??0,handle:t.handle})}function qo(e,t){let n=`${e.organizationId}:${t.task.id}:${t.attempts}`,r=(e.settings??={}).cancelChecks??=new Map;if(r.has(n))return;let i=new Promise(e=>{let t=setTimeout(e,3e4);r.set(n,{timer:t,finish:e})}).then(async()=>{r.delete(n);let i=await e.store.get(`task`,t.task.id);i&&i.attempts===t.attempts&&i.tokenHash===t.tokenHash&&await Go(e,i)}).catch(e=>console.error(`coder server: cancellation check failed`,e));e.waitUntil&&e.waitUntil(i)}async function Jo(e,t,n){let r=e.now??Date.now,i=e.config.limits?.concurrentTasks??Io.concurrentTasks,a=e.config.store===`postgres`?e.config.maxTasks:Math.min(i,e.config.maxTasks??i);{t&&e.local?await Qf(e,e.local.cwd):t&&await e.queue.archiveStopped(void 0,r());let n=await e.queue.running(),i=0;for(let t of n)await Wo(U(e,t.organizationId),t.status,r()).catch(()=>!1)&&i++;if(a!==void 0&&n.length-i>=a)return}let o=[];for(;;){let t=e.local?Zf(e.local.cwd,!1).filter(e=>e.status===`running`||e.status===`waiting`):[],s=t.length?new Set((await e.queue.running()).flatMap(e=>[e.status.task.id,...e.status.handle?.startsWith(`cli:`)?[e.status.handle.slice(4)]:[]])):new Set,c=t.filter(t=>!s.has(t.task.id)&&!s.has(ge(t.task.cwd??e.local.cwd,t.task.id)?.flowRunId??``)).length,l=a===void 0?void 0:a-c;if(l!==void 0&&l<=0)break;let u=await e.queue.claim(r(),l,n,i);if(n=!1,!u)break;let d=U(e,u.organizationId),f=u.status;if(await tp(d,f)){if(n=u.more,!u.more)break;continue}let p=await Qt(d,f.task);if(!p){await Uo(d,f,`No runner available: ${f.task.runner}`);continue}let m=f,h={generation:f.generation??0,attempts:f.attempts,tokenHash:f.tokenHash??null,statuses:[`running`,`waiting`]},g;try{let e=p.kind===`vercel-sandbox`?await Vf(d,f.task):void 0,t=p.start(f.task,{CODER_SERVER:d.local&&p.kind===`local`?`http://localhost:${d.local.port}`:d.config.publicUrl??``,CODER_TASK_TOKEN:u.token,CODER_INBOX_MODE:p.push?`push`:`poll`},e?.env,{timeoutMs:d.config.taskTimeoutMs+6e4,waitUntil:d.waitUntil,...e?{hosts:await Uf(d,f.task,e)}:{}});if(g=await Vo(t,d.runnerTimeoutMs??3e4,`runner start`).catch(e=>{throw t.then(e=>Ho(d,p,e,f.task.id),()=>{}),e}),await d.queue.patchTask(u.organizationId,f.task.id,{handle:g},r(),h)||await Ho(d,p,g,f.task.id),n=u.more,!u.more)break}catch(e){g!==void 0&&await Ho(d,p,g,f.task.id);let t=e instanceof Error?e.message:String(e);if(f.attempts<(d.config.taskAttempts??2)){o.push({...u,status:m});continue}await Uo(d,m,t)}}for(let t of o)await U(e,t.organizationId).queue.requeue(t.organizationId,t.status.task.id,r(),{attempts:t.status.attempts,tokenHash:t.status.tokenHash})}function Yo(e,t=!1,n=!1,r=!1){let i=e.queue.scheduler??={},a=t?i.waiting:void 0;if(a)return a;let o=i.running??Promise.resolve(),s=()=>(i.waiting===c&&delete i.waiting,Jo(e,n,r)),c=o.then(s,s);return i.waiting=c,i.running=c.catch(()=>{}),c}function Xo(e,t=!1){let n=Yo(e,!0,!1,t).catch(()=>{});e.waitUntil&&e.waitUntil(n)}const Zo=new Map,Qo=new Map,$o=Symbol(`OriginError`),es={};var ts=class extends Promise{constructor(e,t,n,r,i={}){let a,o;super((e,t)=>{a=e,o=t}),this.tagged=Array.isArray(e.raw),this.strings=e,this.args=t,this.handler=n,this.canceller=r,this.options=i,this.state=null,this.statement=null,this.resolve=e=>(this.active=!1,a(e)),this.reject=e=>(this.active=!1,o(e)),this.active=!1,this.cancelled=null,this.executed=!1,this.signature=``,this[$o]=this.handler.debug?Error():this.tagged&&ns(this.strings)}get origin(){return(this.handler.debug?this[$o].stack:this.tagged&&Qo.has(this.strings)?Qo.get(this.strings):Qo.set(this.strings,this[$o].stack).get(this.strings))||``}static get[Symbol.species](){return Promise}cancel(){return this.canceller&&=(this.canceller(this),null)}simple(){return this.options.simple=!0,this.options.prepare=!1,this}async readable(){return this.simple(),this.streaming=!0,this}async writable(){return this.simple(),this.streaming=!0,this}cursor(e=1,t){if(this.options.simple=!1,typeof e==`function`&&(t=e,e=1),this.cursorRows=e,typeof t==`function`)return this.cursorFn=t,this;let n;return{[Symbol.asyncIterator]:()=>({next:()=>{if(this.executed&&!this.active)return{done:!0};n&&n();let e=new Promise((e,t)=>{this.cursorFn=t=>(e({value:t,done:!1}),new Promise(e=>n=e)),this.resolve=()=>(this.active=!1,e({done:!0})),this.reject=e=>(this.active=!1,t(e))});return this.execute(),e},return(){return n&&n(es),{done:!0}}})}}describe(){return this.options.simple=!1,this.onlyDescribe=this.options.prepare=!0,this}stream(){throw Error(`.stream has been renamed to .forEach`)}forEach(e){return this.forEachFn=e,this.handle(),this}raw(){return this.isRaw=!0,this}values(){return this.isRaw=`values`,this}async handle(){!this.executed&&(this.executed=!0)&&await 1&&this.handler(this)}execute(){return this.handle(),this}then(){return this.handle(),super.then.apply(this,arguments)}catch(){return this.handle(),super.catch.apply(this,arguments)}finally(){return this.handle(),super.finally.apply(this,arguments)}};function ns(e){if(Zo.has(e))return Zo.get(e);let t=Error.stackTraceLimit;return Error.stackTraceLimit=4,Zo.set(e,Error()),Error.stackTraceLimit=t,Zo.get(e)}var rs=class extends Error{constructor(e){super(e.message),this.name=this.constructor.name,Object.assign(this,e)}};const G={connection:is,postgres:as,generic:os,notSupported:ss};function is(e,t,n){let{host:r,port:i}=n||t,a=Object.assign(Error(`write `+e+` `+(t.path||r+`:`+i)),{code:e,errno:e,address:t.path||r},t.path?{}:{port:i});return Error.captureStackTrace(a,is),a}function as(e){let t=new rs(e);return Error.captureStackTrace(t,as),t}function os(e,t){let n=Object.assign(Error(e+`: `+t),{code:e});return Error.captureStackTrace(n,os),n}function ss(e){let t=Object.assign(Error(e+` (B) is not supported`),{code:`MESSAGE_NOT_SUPPORTED`,name:e});return Error.captureStackTrace(t,ss),t}const cs={string:{to:25,from:null,serialize:e=>``+e},number:{to:0,from:[21,23,26,700,701],serialize:e=>``+e,parse:e=>+e},json:{to:114,from:[114,3802],serialize:e=>JSON.stringify(e),parse:e=>JSON.parse(e)},boolean:{to:16,from:16,serialize:e=>e===!0?`t`:`f`,parse:e=>e===`t`},date:{to:1184,from:[1082,1114,1184],serialize:e=>(e instanceof Date?e:new Date(e)).toISOString(),parse:e=>new Date(e)},bytea:{to:17,from:17,serialize:e=>`\\x`+Buffer.from(e).toString(`hex`),parse:e=>Buffer.from(e.slice(2),`hex`)}};var ls=class{then(){Ss()}catch(){Ss()}finally(){Ss()}},us=class extends ls{constructor(e){super(),this.value=ks(e)}},ds=class extends ls{constructor(e,t,n){super(),this.value=e,this.type=t,this.array=n}},fs=class extends ls{constructor(e,t){super(),this.first=e,this.rest=t}build(e,t,n,r){let i=xs.map(([t,n])=>({fn:n,i:e.search(t)})).sort((e,t)=>e.i-t.i).pop();return i.i===-1?Os(this.first,r):i.fn(this.first,this.rest,t,n,r)}};function ps(e,t,n,r){let i=e instanceof ds?e.value:e;if(i===void 0&&(e instanceof ds?e.value=r.transform.undefined:i=e=r.transform.undefined,i===void 0))throw G.generic(`UNDEFINED_VALUE`,`Undefined values are not allowed`);return`$`+n.push(e instanceof ds?(t.push(e.value),e.array?e.array[e.type||As(e.value)]||e.type||Ts(e.value):e.type):(t.push(e),As(e)))}const ms=Ds(cs);function hs(e,t,n,r,i,a){for(let o=1;o<e.strings.length;o++)t+=gs(t,n,r,i,a)+e.strings[o],n=e.args[o];return t}function gs(e,t,n,r,i){return t instanceof fs?t.build(e,n,r,i):t instanceof ts?_s(t,n,r,i):t instanceof us?t.value:t&&t[0]instanceof ts?t.reduce((e,t)=>e+` `+_s(t,n,r,i),``):ps(t,n,r,i)}function _s(e,t,n,r){return e.fragment=!0,hs(e,e.strings[0],e.args[0],t,n,r)}function vs(e,t,n,r,i){return e.map(e=>`(`+r.map(r=>gs(`values`,e[r],t,n,i)).join(`,`)+`)`).join(`,`)}function ys(e,t,n,r,i){let a=Array.isArray(e[0]),o=t.length?t.flat():Object.keys(a?e[0]:e);return vs(a?e:[e],n,r,o,i)}function bs(e,t,n,r,i){if(typeof e==`string`&&(e=[e].concat(t)),Array.isArray(e))return Os(e,i);let a;return(t.length?t.flat():Object.keys(e)).map(t=>(a=e[t],(a instanceof ts?_s(a,n,r,i):a instanceof us?a.value:ps(a,n,r,i))+` as `+ks(i.transform.column.to?i.transform.column.to(t):t))).join(`,`)}const xs=Object.entries({values:ys,in:(...e)=>{let t=ys(...e);return t===`()`?`(null)`:t},select:bs,as:bs,returning:bs,"\\(":bs,update(e,t,n,r,i){return(t.length?t.flat():Object.keys(e)).map(t=>ks(i.transform.column.to?i.transform.column.to(t):t)+`=`+gs(`values`,e[t],n,r,i))},insert(e,t,n,r,i){let a=t.length?t.flat():Object.keys(Array.isArray(e)?e[0]:e);return`(`+Os(a,i)+`)values`+vs(Array.isArray(e)?e:[e],n,r,a,i)}}).map(([e,t])=>[RegExp(`((?:^|[\\s(])`+e+`(?:$|[\\s(]))(?![\\s\\S]*\\1)`,`i`),t]);function Ss(){throw G.generic(`NOT_TAGGED_CALL`,`Query not called as a tagged template literal`)}const Cs=ms.serializers,ws=ms.parsers;function Ts(e){return Array.isArray(e)?Ts(e[0]):typeof e==`string`?1009:0}const Es=function(e){let t=Ds(e||{});return{serializers:Object.assign({},Cs,t.serializers),parsers:Object.assign({},ws,t.parsers)}};function Ds(e){return Object.keys(e).reduce((t,n)=>(e[n].from&&[].concat(e[n].from).forEach(r=>t.parsers[r]=e[n].parse),e[n].serialize&&(t.serializers[e[n].to]=e[n].serialize,e[n].from&&[].concat(e[n].from).forEach(r=>t.serializers[r]=e[n].serialize)),t),{parsers:{},serializers:{}})}function Os(e,{transform:{column:t}}){return e.map(e=>ks(t.to?t.to(e):e)).join(`,`)}const ks=function(e){return`"`+e.replace(/"/g,`""`).replace(/\./g,`"."`)+`"`},As=function e(t){return t instanceof ds?t.type:t instanceof Date?1184:t instanceof Uint8Array?17:t===!0||t===!1?16:typeof t==`bigint`?20:Array.isArray(t)?e(t[0]):0},js=/\\/g,Ms=/"/g;function Ns(e){return e.replace(js,`\\\\`).replace(Ms,`\\"`)}const Ps=function e(t,n,r,i){if(Array.isArray(t)===!1)return t;if(!t.length)return`{}`;let a=t[0],o=i===1020?`;`:`,`;return Array.isArray(a)&&!a.type?`{`+t.map(t=>e(t,n,r,i)).join(o)+`}`:`{`+t.map(e=>{if(e===void 0&&(e=r.transform.undefined,e===void 0))throw G.generic(`UNDEFINED_VALUE`,`Undefined values are not allowed`);return e===null?`null`:`"`+Ns(n?n(e.type?e.value:e):``+e)+`"`}).join(o)+`}`},Fs={i:0,char:null,str:``,quoted:!1,last:0},Is=function(e,t,n){return Fs.i=Fs.last=0,Ls(Fs,e,t,n)};function Ls(e,t,n,r){let i=[],a=r===1020?`;`:`,`;for(;e.i<t.length;e.i++){if(e.char=t[e.i],e.quoted)e.char===`\\`?e.str+=t[++e.i]:e.char===`"`?(i.push(n?n(e.str):e.str),e.str=``,e.quoted=t[e.i+1]===`"`,e.last=e.i+2):e.str+=e.char;else if(e.char===`"`)e.quoted=!0;else if(e.char===`{`)e.last=++e.i,i.push(Ls(e,t,n,r));else if(e.char===`}`){e.quoted=!1,e.last<e.i&&i.push(n?n(t.slice(e.last,e.i)):t.slice(e.last,e.i)),e.last=e.i+1;break}else e.char===a&&e.p!==`}`&&e.p!==`"`&&(i.push(n?n(t.slice(e.last,e.i)):t.slice(e.last,e.i)),e.last=e.i+1);e.p=e.char}return e.last<e.i&&i.push(n?n(t.slice(e.last,e.i+1)):t.slice(e.last,e.i+1)),i}const Rs=e=>{let t=e[0];for(let n=1;n<e.length;n++)t+=e[n]===`_`?e[++n].toUpperCase():e[n];return t},zs=e=>{let t=e[0].toUpperCase();for(let n=1;n<e.length;n++)t+=e[n]===`_`?e[++n].toUpperCase():e[n];return t},Bs=e=>e.replace(/_/g,`-`),Vs=e=>e.replace(/([A-Z])/g,`_$1`).toLowerCase(),Hs=e=>(e.slice(0,1)+e.slice(1).replace(/([A-Z])/g,`_$1`)).toLowerCase(),Us=e=>e.replace(/-/g,`_`);function Ws(e){return function t(n,r){return typeof n==`object`&&n&&(r.type===114||r.type===3802)?Array.isArray(n)?n.map(e=>t(e,r)):Object.entries(n).reduce((n,[i,a])=>Object.assign(n,{[e(i)]:t(a,r)}),{}):n}}Rs.column={from:Rs},Rs.value={from:Ws(Rs)},Vs.column={to:Vs};const Gs={...Rs};Gs.column.to=Vs,zs.column={from:zs},zs.value={from:Ws(zs)},Hs.column={to:Hs};const Ks={...zs};Ks.column.to=Hs,Bs.column={from:Bs},Bs.value={from:Ws(Bs)},Us.column={to:Us};const qs={...Bs};qs.column.to=Us;var Js=class extends Array{constructor(){super(),Object.defineProperties(this,{count:{value:null,writable:!0},state:{value:null,writable:!0},command:{value:null,writable:!0},columns:{value:null,writable:!0},statement:{value:null,writable:!0}})}static get[Symbol.species](){return Array}},Ys=Xs;function Xs(e=[]){let t=e.slice(),n=0;return{get length(){return t.length-n},remove:e=>{let n=t.indexOf(e);return n===-1?null:(t.splice(n,1),e)},push:e=>(t.push(e),e),shift:()=>{let e=t[n++];return n===t.length?(n=0,t=[]):t[n-1]=void 0,e}}}let Zs=Buffer.allocUnsafe(256);const Qs=`BCcDdEFfHPpQSX`.split(``).reduce((e,t)=>{let n=t.charCodeAt(0);return e[t]=()=>(Zs[0]=n,K.i=5,K),e},{}),K=Object.assign(ec,Qs,{N:`\0`,i:0,inc(e){return K.i+=e,K},str(e){let t=Buffer.byteLength(e);return $s(t),K.i+=Zs.write(e,K.i,t,`utf8`),K},i16(e){return $s(2),Zs.writeUInt16BE(e,K.i),K.i+=2,K},i32(e,t){return t||t===0?(Zs.writeUInt32BE(e,t),K):($s(4),Zs.writeUInt32BE(e,K.i),K.i+=4,K)},z(e){return $s(e),Zs.fill(0,K.i,K.i+e),K.i+=e,K},raw(e){return Zs=Buffer.concat([Zs.subarray(0,K.i),e]),K.i=Zs.length,K},end(e=1){Zs.writeUInt32BE(K.i-e,e);let t=Zs.subarray(0,K.i);return K.i=0,Zs=Buffer.allocUnsafe(256),t}});function $s(e){if(Zs.length-K.i<e){let t=Zs,n=t.length;Zs=Buffer.allocUnsafe(n+(n>>1)+e),t.copy(Zs)}}function ec(){return K.i=0,K}var tc=dc;let nc=1;const rc=K().S().end(),ic=K().H().end(),ac=K().i32(8).i32(80877103).end(8),oc=Buffer.concat([K().E().str(K.N).i32(0).end(),rc]),sc=K().D().str(`S`).str(K.N).end(),cc=()=>{},lc=new Set([`FetchPreparedStatement`,`RevalidateCachedQuery`,`transformAssignedExpr`]),uc={83:`severity_local`,86:`severity`,67:`code`,77:`message`,68:`detail`,72:`hint`,80:`position`,112:`internal_position`,113:`internal_query`,87:`where`,115:`schema_name`,116:`table_name`,99:`column_name`,100:`data type_name`,110:`constraint_name`,70:`file`,76:`line`,82:`routine`};function dc(e,t={},{onopen:n=cc,onend:r=cc,onclose:i=cc}={}){let{sslnegotiation:a,ssl:o,max:s,user:c,host:l,port:u,database:d,parsers:f,transform:p,onnotice:m,onnotify:h,onparameter:g,max_pipeline:_,keep_alive:v,backoff:y,target_session_attrs:b}=e,x=Ys(),ee=nc++,te={pid:null,secret:null},ne=_c(Ze,e.idle_timeout),re=_c(Ze,e.max_lifetime),ie=_c(Ve,e.connect_timeout),S=null,ae,oe=null,C=new Js,se=Buffer.alloc(0),ce=e.fetch_types,le={},ue={},de=Math.random().toString(36).slice(2),fe=1,pe=0,me=0,he=0,ge=0,_e=0,ve=0,ye=0,be=null,xe=null,Se=!1,Ce=null,we=null,Te=null,Ee=null,w=null,De=null,Oe=null,ke=null,T=null,Ae=null,E={queue:t.closed,idleTimer:ne,connect(e){Te=e,Ke()},terminate:Qe,execute:Ne,cancel:Me,end:Ze,count:0,id:ee};return t.closed&&t.closed.push(E),E;async function je(){let t;try{t=e.socket?await Promise.resolve(e.socket(e)):new xr.Socket}catch(e){Je(e);return}return t.on(`error`,Je),t.on(`close`,$e),t.on(`drain`,Ue),t}async function Me({pid:e,secret:t},n,r){try{ae=K().i32(16).i32(80877102).i32(e).i32(t).end(16),await Ge(),S.once(`error`,r),S.once(`close`,n)}catch(e){r(e)}}function Ne(t){if(Se)return Xe(t,G.connection(`CONNECTION_DESTROYED`,e));if(w)return Xe(t,G.generic(`COPY_IN_PROGRESS`,`You cannot execute queries during copy`));if(!t.cancelled)try{return t.state=te,T?x.push(t):(T=t,T.active=!0),Re(t),ze(Pe(t))&&!t.describeFirst&&!t.cursorFn&&x.length<_&&(!t.options.onexecute||t.options.onexecute(E))}catch(e){return x.length===0&&ze(rc),Ye(e),!0}}function Pe(e){if(e.parameters.length>=65534)throw G.generic(`MAX_PARAMETERS_EXCEEDED`,`Max number of parameters (65534) exceeded`);return e.options.simple?K().Q().str(e.statement.string+K.N).end():e.describeFirst?Buffer.concat([Fe(e),ic]):e.prepare?e.prepared?Ie(e):Buffer.concat([Fe(e),Ie(e)]):Le(e)}function Fe(e){return Buffer.concat([Lt(e.statement.string,e.parameters,e.statement.types,e.statement.name),Rt(`S`,e.statement.name)])}function Ie(e){return Buffer.concat([It(e.parameters,e.statement.types,e.statement.name,e.cursorName),e.cursorFn?zt(``,e.cursorRows):oc])}function Le(e){return Buffer.concat([Lt(e.statement.string,e.parameters,e.statement.types),sc,Ie(e)])}function Re(t){let n=[],r=[],i=hs(t,t.strings[0],t.args[0],n,r,e);!t.tagged&&t.args.forEach(t=>ps(t,n,r,e)),t.prepare=e.prepare&&(`prepare`in t.options?t.options.prepare:!0),t.string=i,t.signature=t.prepare&&r+i,t.onlyDescribe&&delete ue[t.signature],t.parameters=t.parameters||n,t.prepared=t.prepare&&t.signature in ue,t.describeFirst=t.onlyDescribe||n.length&&!t.prepared,t.statement=t.prepared?ue[t.signature]:{string:i,types:r,name:t.prepare?de+fe++:``},typeof e.debug==`function`&&e.debug(ee,i,n,r)}function ze(e,t){return De=De?Buffer.concat([De,e]):Buffer.from(e),t||De.length>=1024?Be(t):(xe===null&&(xe=setImmediate(Be)),!0)}function Be(e){let t=S.write(De,e);return xe!==null&&clearImmediate(xe),De=xe=null,t}function Ve(){Ye(G.connection(`CONNECT_TIMEOUT`,e,S)),S.destroy()}async function He(){if(a!==`direct`&&(ze(ac),!await new Promise(e=>S.once(`data`,t=>e(t[0]===83)))&&o===`prefer`))return qe();let e={socket:S,servername:xr.isIP(S.host)?void 0:S.host};a===`direct`&&(e.ALPNProtocols=[`postgresql`]),o===`require`||o===`allow`||o===`prefer`?e.rejectUnauthorized=!1:typeof o==`object`&&Object.assign(e,o),S.removeAllListeners(),S=Sr.connect(e),S.on(`secureConnect`,qe),S.on(`error`,Je),S.on(`close`,$e),S.on(`drain`,Ue)}function Ue(){!T&&n(E)}function We(e){if(!(Ce&&(Ce.push(e),me-=e.length,me>0)))for(se=Ce?Buffer.concat(Ce,_e-me):se.length===0?e:Buffer.concat([se,e],se.length+e.length);se.length>4;){if(_e=se.readUInt32BE(1),_e>=se.length){me=_e-se.length,Ce=[se];break}try{et(se.subarray(0,_e+1))}catch(e){T&&(T.cursorFn||T.describeFirst)&&ze(rc),Ye(e)}se=se.subarray(_e+1),me=0,Ce=null}}async function Ge(){if(Se=!1,le={},S||=await je(),S){if(ie.start(),e.socket)return o?He():qe();if(S.on(`connect`,o?He:qe),e.path)return S.connect(e.path);S.ssl=o,S.connect(u[he],l[he]),S.host=l[he],S.port=u[he],he=(he+1)%u.length}}function Ke(){setTimeout(Ge,pe?Math.max(0,pe+ve-Tr.now()):0)}function qe(){try{ue={},ce=e.fetch_types,de=Math.random().toString(36).slice(2),fe=1,re.start(),S.on(`data`,We),v&&S.setKeepAlive&&S.setKeepAlive(!0,1e3*v),ze(Vt())}catch(e){Je(e)}}function Je(n){if(!(E.queue===t.connecting&&e.host[ge+1]))for(Ye(n);x.length;)Xe(x.shift(),n)}function Ye(e){w&&=(w.destroy(e),null),T&&Xe(T,e),Te&&=(Xe(Te,e),null)}function Xe(t,n){if(t.reserve)return t.reject(n);(!n||typeof n!=`object`)&&(n=Error(n)),`query`in n||`parameters`in n||Object.defineProperties(n,{stack:{value:n.stack+t.origin.replace(/.*\n/,`
|
|
4
4
|
`),enumerable:e.debug},query:{value:t.string,enumerable:e.debug},parameters:{value:t.parameters,enumerable:e.debug},args:{value:t.args,enumerable:e.debug},types:{value:t.statement&&t.statement.types,enumerable:e.debug}}),t.reject(n)}function Ze(){return Ee||(!E.reserved&&r(E),!E.reserved&&!Te&&!T&&x.length===0?(Qe(),new Promise(e=>S&&S.readyState!==`closed`?S.once(`close`,e):e())):Ee=new Promise(e=>Oe=e))}function Qe(){Se=!0,(w||T||Te||x.length)&&Je(G.connection(`CONNECTION_DESTROYED`,e)),clearImmediate(xe),S&&(S.removeListener(`data`,We),S.removeListener(`connect`,qe),S.readyState===`open`&&S.end(K().X().end())),Oe&&(Oe(),Ee=Oe=null)}async function $e(t){if(se=Buffer.alloc(0),me=0,Ce=null,clearImmediate(xe),S.removeListener(`data`,We),S.removeListener(`connect`,qe),ne.cancel(),re.cancel(),ie.cancel(),S.removeAllListeners(),S=null,Te)return Ke();!t&&(T||x.length)&&Je(G.connection(`CONNECTION_CLOSED`,e,S)),pe=Tr.now(),t&&e.shared.retries++,ve=(typeof y==`function`?y(e.shared.retries):y)*1e3,i(E,G.connection(`CONNECTION_CLOSED`,e,S))}function et(e,t=e[0]){(t===68?tt:t===100?At:t===65?wt:t===83?nt:t===90?rt:t===67?it:t===50?ot:t===49?at:t===116?st:t===84?ct:t===82?lt:t===110?gt:t===75?_t:t===69?St:t===115?Tt:t===51?Et:t===71?Dt:t===78?Mt:t===72?Ot:t===99?jt:t===73?D:t===86?Nt:t===118?O:t===87?kt:Pt)(e)}function tt(e){let t=7,n,r,i,a=T.isRaw?Array(T.statement.columns.length):{};for(let o=0;o<T.statement.columns.length;o++)r=T.statement.columns[o],n=e.readInt32BE(t),t+=4,i=n===-1?null:T.isRaw===!0?e.subarray(t,t+=n):r.parser===void 0?e.toString(`utf8`,t,t+=n):r.parser.array===!0?r.parser(e.toString(`utf8`,t+1,t+=n)):r.parser(e.toString(`utf8`,t,t+=n)),T.isRaw?a[o]=T.isRaw===!0?i:p.value.from?p.value.from(i,r):i:a[r.name]=p.value.from?p.value.from(i,r):i;T.forEachFn?T.forEachFn(p.row.from?p.row.from(a):a,C):C[ye++]=p.row.from?p.row.from(a):a}function nt(t){let[n,r]=t.toString(`utf8`,5,t.length-1).split(K.N);le[n]=r,e.parameters[n]!==r&&(e.parameters[n]=r,g&&g(n,r))}function rt(t){if(T?oe?T.retried?Ye(T.retried):T.prepared&&lc.has(oe.routine)?Ct(T,oe):Ye(oe):T.resolve(we||C):oe&&Ye(oe),T=we=oe=null,C=new Js,ie.cancel(),Te){if(b){if(!le.in_hot_standby||!le.default_transaction_read_only)return xt();if(bt(b,le))return Qe()}if(ce)return Te.reserve&&(Te=null),vt();Te&&!Te.reserve&&Ne(Te),e.shared.retries=ge=0,Te=null;return}for(;x.length&&(T=x.shift())&&(T.active=!0,T.cancelled);)dc(e).cancel(T.state,T.cancelled.resolve,T.cancelled.reject);T||(E.reserved?!E.reserved.release&&t[5]===73?Ee?Qe():(E.reserved=null,n(E)):E.reserved():Ee?Qe():n(E))}function it(e){ye=0;for(let t=e.length-1;t>0;t--)if(e[t]===32&&e[t+1]<58&&C.count===null&&(C.count=+e.toString(`utf8`,t+1,e.length-1)),e[t-1]>=65){C.command=e.toString(`utf8`,5,t),C.state=te;break}if(Ae&&=(Ae(),null),C.command===`BEGIN`&&s!==1&&!E.reserved)return Ye(G.generic(`UNSAFE_TRANSACTION`,`Only use sql.begin, sql.reserved or max: 1`));if(T.options.simple)return ot();T.cursorFn&&(C.count&&T.cursorFn(C),ze(rc))}function at(){T.parsing=!1}function ot(){!C.statement&&(C.statement=T.statement),C.columns=T.statement.columns}function st(e){let t=e.readUInt16BE(5);for(let n=0;n<t;++n)!T.statement.types[n]&&(T.statement.types[n]=e.readUInt32BE(7+n*4));T.prepare&&(ue[T.signature]=T.statement),T.describeFirst&&!T.onlyDescribe&&(ze(Ie(T)),T.describeFirst=!1)}function ct(e){C.command&&(we||=[C],we.push(C=new Js),C.count=null,T.statement.columns=null);let t=e.readUInt16BE(5),n=7,r;T.statement.columns=Array(t);for(let i=0;i<t;++i){for(r=n;e[n++]!==0;);let t=e.readUInt32BE(n),a=e.readUInt16BE(n+4),o=e.readUInt32BE(n+6);T.statement.columns[i]={name:p.column.from?p.column.from(e.toString(`utf8`,r,n-1)):e.toString(`utf8`,r,n-1),parser:f[o],table:t,number:a,type:o},n+=18}if(C.statement=T.statement,T.onlyDescribe)return T.resolve(T.statement),ze(rc)}async function lt(e,t=e.readUInt32BE(5)){(t===3?ut:t===5?dt:t===10?ft:t===11?pt:t===12?mt:t===0?cc:Ft)(e,t)}async function ut(){let e=await ht();ze(K().p().str(e).z(1).end())}async function dt(e){let t=`md5`+await pc(Buffer.concat([Buffer.from(await pc(await ht()+c)),e.subarray(9)]));ze(K().p().str(t).z(1).end())}async function ft(){ke=(await Cr.randomBytes(18)).toString(`base64`),K().p().str(`SCRAM-SHA-256`+K.N);let e=K.i;ze(K.inc(4).str(`n,,n=*,r=`+ke).i32(K.i-e-4,e).end())}async function pt(e){let t=e.toString(`utf8`,9).split(`,`).reduce((e,t)=>(e[t[0]]=t.slice(2),e),{}),n=await Cr.pbkdf2Sync(await ht(),Buffer.from(t.s,`base64`),parseInt(t.i),32,`sha256`),r=await mc(n,`Client Key`),i=`n=*,r=`+ke+`,r=`+t.r+`,s=`+t.s+`,i=`+t.i+`,c=biws,r=`+t.r;be=(await mc(await mc(n,`Server Key`),i)).toString(`base64`);let a=`c=biws,r=`+t.r+`,p=`+gc(r,Buffer.from(await mc(await hc(r),i))).toString(`base64`);ze(K().p().str(a).end())}function mt(e){e.toString(`utf8`,9).split(K.N,1)[0].slice(2)!==be&&(Ye(G.generic(`SASL_SIGNATURE_MISMATCH`,`The server did not return the correct signature`)),S.destroy())}function ht(){return Promise.resolve(typeof e.pass==`function`?e.pass():e.pass)}function gt(){if(C.statement=T.statement,C.statement.columns=[],T.onlyDescribe)return T.resolve(T.statement),ze(rc)}function _t(e){te.pid=e.readUInt32BE(5),te.secret=e.readUInt32BE(9)}async function vt(){ce=!1,(await new ts([`
|
|
5
5
|
select b.oid, b.typarray
|
|
6
6
|
from pg_catalog.pg_type a
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{i as e}from"./cli-
|
|
1
|
+
import{i as e}from"./cli-ZUdhZnuW.js";import{p as t}from"./output-BKeyLbvt.js";import{n,t as r}from"./args-CxsMr9Un.js";import i from"node:process";const a=e=>e===1?``:`s`,o=e({name:`flow archive`,help:{usage:`coder flow archive <run-id> | coder flow archive --all-stopped`,summary:`Archive a flow run so it drops out of the default list (see it again with
|
|
2
2
|
\`coder flow list --archived [--limit N]\`). Pass --all-stopped to archive every
|
|
3
3
|
finished run. A running run must be stopped first.`,flags:[[`--all-stopped`,`archive every stopped (finished) run`]]},options:{...r,"all-stopped":n},args:1,run:async({options:e,args:[t]})=>{let{archiveRuns:n}=await import(`./executor-5j-Ewzzb.js`).then(e=>e.b);return n(t,{allStopped:e[`all-stopped`]})},print(e){if(!(`count`in e))return void i.stdout.write(`Archived run ${t.cyan(e.runId)}.\n`);i.stdout.write(e.count?`Archived ${e.count} stopped run${a(e.count)}.\n`:`${t.dim(`No stopped runs to archive.`)}\n`)}});export{o as commandArchive,a as plural};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e,r as t}from"./cli-
|
|
1
|
+
import{i as e,r as t}from"./cli-ZUdhZnuW.js";import{p as n}from"./output-BKeyLbvt.js";import{i as r,n as i,s as a,t as o}from"./args-CxsMr9Un.js";import s from"node:process";const c={server:r,workspace:a,yes:i},l=e=>e===1?``:`s`,u=e({name:`task archive`,help:{usage:`coder task archive <task-id> | coder task archive --all-stopped [--server [url]]`,summary:`Archive a task session so it drops out of the default list (see it again with
|
|
2
2
|
\`coder task list --archived [--limit N]\`). Pass --all-stopped to archive every
|
|
3
3
|
finished task. A running task keeps running; steering an archived task
|
|
4
4
|
brings it back.`,flags:[[`--all-stopped`,`archive every stopped (finished) task`],t]},options:{...o,"all-stopped":i,...c},args:1,run:async({options:e,args:[t]})=>{let{tasks:n}=await import(`./task-IoBYe7ok.js`).then(e=>e.t);return n.archive(t,{...e,organization:e.workspace,allStopped:e[`all-stopped`]})},print(e,{options:t}){if(e.count===void 0)return void s.stdout.write(`Archived task ${n.cyan(e.taskId)}.\n`);s.stdout.write(t.server===void 0?e.count?`Archived ${e.count} stopped task${l(e.count)}.\n`:`${n.dim(`No stopped tasks to archive.`)}\n`:`Archived ${e.count} server task${l(e.count)}.\n`)}});export{u as commandArchive,l as plural};
|