@wular/coder 0.4.12 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/actions-CkMAM1Km.js +3 -0
- package/dist/agent-Bi5nbUhA.js +1 -0
- package/dist/app-server-BTpa5GBV.js +6 -0
- package/dist/approvals-CRwkc9vB.js +5 -0
- package/dist/apps-B6mUToTa.js +18 -0
- package/dist/args-CJsHYWbt.js +66 -0
- package/dist/async-CNhQ4wyZ.js +3 -0
- package/dist/auth-oCvlHitk.js +1 -0
- package/dist/builtin/coder/agent.json +6 -7
- package/dist/builtin/coder/system.md +5 -6
- package/dist/chat-4AiZEqKh.js +13 -0
- package/dist/{chat-bwKd3y6V.js → chat-Bfu9XKRa.js} +1 -1
- package/dist/cli.js +16 -11
- package/dist/{client-C4QCT6cG.js → client-nBo9Mhsr.js} +4 -4
- package/dist/cmd-Cu3OquA_.js +122 -0
- package/dist/config-D_RuO6gX.js +5 -0
- package/dist/connection-BXjn7gCC.js +1 -0
- package/dist/connections-Cswv7r8Z.js +2 -0
- package/dist/context-CFrDYenS.js +6 -0
- package/dist/crypto-Ittsv-m4.js +1 -0
- package/dist/dash/standalone/server/build-index.json +1 -1
- package/dist/dash/standalone/server/manifest.json +1686 -1428
- package/dist/dash/standalone/server/modules-server-server-react-server/src/agent/event-json.856d33f567e58d0e.js +30 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/client/http.e78b470f4ecf125b.js +58 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/client/{index.0de14cb4e30bd70d.js → index.54c45900f2153d34.js} +57 -77
- package/dist/dash/standalone/server/modules-server-server-react-server/src/core/task/{log-view.60308a11f7001eb7.js → view.e20379d8f741754a.js} +78 -48
- package/dist/dash/standalone/server/modules-server-server-react-server/src/core/types.5bf5a41cedb54154.js +37 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/{load.be791a5eaf328738.js → load.252f972b42c690e2.js} +18 -11
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/create/[id]/{page.70913bd4075da914.js → page.11efd0e175db9053.js} +24 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{loading.e348ec45e9ed951b.js → loading.56c14183236be231.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{notify.61aab176baeefebd.js → notify.59ae138dc182d7c3.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{page.815371ed0d5dd4fa.js → page.e9386951cedea737.js} +9 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{sign-out.1d6af804f9ec043d.js → sign-out.713d3ec10951fde5.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{agent-menu.2ed0e66d131fc148.js → agent-menu.5c780867b82081b1.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{agents-grid.f43bcc1148ce3650.js → agents-grid.f989d6f2d9ece6e4.js} +9 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{loading.fac1132ad9c4248e.js → loading.0130f8533d8f1b1e.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/page.0f88720e52db99a2.js +48 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{layout.a795379254982121.js → layout.8d2f0997462fc958.js} +90 -33
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{loading.388aeaf0c2edf8f8.js → loading.90bf37c903ce6f0d.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{page.a2cb6d1f1714259a.js → page.bc93891522c8120d.js} +22 -88
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{loading.4da9e2ba3fea937f.js → loading.d56ef50b0694f975.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{page.996172c951739b35.js → page.cf5cf9afe38ab0e4.js} +51 -111
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{platform-actions.8e7ca54dd1821e98.js → platform-actions.c44c7df7841719f2.js} +235 -109
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/platform-state.6b6132518ca61635.js +21 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/platform-step.6e90cbfe308f28a0.js +82 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{agent-settings-form.aa9e157d141481d7.js → agent-settings-form.61de585104c2be10.js} +44 -66
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{loading.ad1a4c9b000d269a.js → loading.2800c65e45a4a1d9.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{page.44d886e60ae04303.js → page.4d06f759984a63b3.js} +11 -11
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{loading.521c9e7b8d77f557.js → loading.ea2925eab1d2e594.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{page.828cfb8112404792.js → page.fb069bf82b727d27.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{loading.8f998a9c511e1fb3.js → loading.3a615597ca648452.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{page.45e18b6dc3019af4.js → page.0a472a0e269b8c01.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{versions-list.c8d76988c734dda2.js → versions-list.7ef7dfd5d8f5de43.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{loading.b1367e864b4fb406.js → loading.007326a04f05d46c.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{page.dd11f2618e08becd.js → page.a26aa7bc6ab655f0.js} +10 -10
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/platforms/[app]/app-cards.361918fe58349aa1.js +142 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/platforms/[app]/loading.f0d91d48e2b79e50.js +14 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/platforms/[app]/page.3f60cf67517d0d31.js +99 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-pills.f987c12bcbc5c850.js → agent-pills.1012e04bfbc7bffd.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-toggle.1579dc8acbaacf92.js → agent-toggle.ffbf9a8b8b2fbde7.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{hero.ad5cc342db794e5d.js → hero.0ae015a4fbe6321e.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{instructions.85b1cd986a9edbb5.js → instructions.1b8c9189961c5a4f.js} +13 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{connect-repositories.43b4b28f194ea842.js → connect-repositories.9abe365f0098d358.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{editor.776856fe1ed1a642.js → editor.6548f8f757578f90.js} +164 -116
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{import-picker.eafa5b41a2ed571f.js → import-picker.577b1d84c7ab84e1.js} +11 -11
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{loading.ee001af7a96e3972.js → loading.9b65a8c1cdc8346f.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{page.7d84ef2b178b34d2.js → page.2b326d00ccef5544.js} +9 -8
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{layout.393cf7429eea189e.js → layout.45a09107b19f0a7e.js} +89 -26
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/operator-apps.f8d679f2d06b0ebc.js +155 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{page.980adfb7c5714752.js → page.5aa3ddc669366703.js} +37 -10
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{page.24a1987405ed7b17.js → page.5a5188f0fc75dcd2.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/advanced-list.73cdadb2968a39d2.js +63 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/connection-add.353ec01fbb814f78.js +526 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/connections-list.cf4061ae909272c3.js +439 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials-list.683476f62a9ecde7.js → credentials-list.fc4cff0289267551.js} +120 -103
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials.b43dd3d97c536c2a.js → credentials.db01de2581ac65f3.js} +9 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/list.e7d6a422f6a869ea.js +201 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{loading.7ca95dcb4fb3362b.js → loading.71ca4f6c99a8a9d5.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/models-list.acb92b39cab1d11c.js +635 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{page.dfed4ae6ffc74434.js → page.95fe939e36e5be55.js} +67 -41
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{runners-list.3afa989490bbe77c.js → runners-list.5764eac3307d67cc.js} +42 -37
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{secrets-list.0d175ee815b22cd7.js → secrets-list.d316bb157f747f6c.js} +19 -17
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/chain-hint.65c4cc04c78e8bfd.js +18 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{layout.3e8289f888fa444c.js → layout.4eb70f2de8674f93.js} +7 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/model-options.dc630cb6e2cbf83a.js +150 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/model-pick.a143e77f5ed5f9d3.js +160 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{page.06feaa5fbb06f1e6.js → page.70cad0e981c33fa5.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{settings-head.bbc7ced8dd5491eb.js → settings-head.004ced21e02ffa48.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{tunnel-guide.29eee1a0b1852168.js → tunnel-guide.1bc6bff9d8019098.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{create-link.ff95e4b6977d0474.js → create-link.18bd2b92cd23b73f.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{outcome-dialog.894c73f9abee3ce1.js → outcome-dialog.a74e686aaed0c584.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/outcome-toast.95f7be49430248eb.js +24 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{outcome.cbbc8cd1bbbee01b.js → outcome.22a83d756e4020a7.js} +3 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{page.f06fda0df59beeb5.js → page.e39ee9236664d043.js} +8 -8
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{activity.3c79cf14feff12bf.js → activity.441e82ab00344fb2.js} +12 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{loading.47cbb34ea8d2e33f.js → loading.779ecdd9c9d2ff09.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{page.abed2a8424ef3da0.js → page.24e121ea6eb578ba.js} +16 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/task-actions.4a4052a38db4bad3.js +408 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/task-missing.33ec27a4a5eafefe.js +27 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-view.dc294bb94b7437e1.js → task-view.0cd3ec2655f44cc7.js} +53 -44
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer-data.309a194fc7fa34be.js → composer-data.73225456d60d63e3.js} +4 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer.5072aacdce127689.js → composer.ee326fbf5e526fb1.js} +114 -121
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/pending-approvals.7607998094780fdd.js +40 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/status.d2c05c397780b833.js +25 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{task.0a1b5878dccd3b37.js → task.a25847399a4dfb30.js} +14 -18
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-list.1162926f7498c732.js → tasks-list.e486cbd16ea3e963.js} +62 -39
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-section.1d687c986db53a73.js → tasks-section.01510523d1556d59.js} +16 -10
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{page.d5d8cb5033823c9c.js → page.ede64f82388f9480.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{custom-range.2e21c7f891966c15.js → custom-range.fe91164d7a311356.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{day-chart.261b6651df2d3966.js → day-chart.20faaaf57c81ad9e.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{loading.97d277dbab9c15cf.js → loading.5b973a8bb29197d5.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{page.fb21ebe90d49dac1.js → page.0499098badd3f5f8.js} +7 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{range-bar.2197d8f43216d104.js → range-bar.0b9038e9df707843.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{top-agents.18fc469e781e2305.js → top-agents.93c916167299ffb6.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{layout.185dbc99875e208a.js → layout.94ea3908b03bede6.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/login/{page.a82be2fd23e9ac67.js → page.4827d64c71c0690a.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{drawer.d3e61538dbc8ec39.js → drawer.1a08ff611df7fe38.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{foreign-link.1f4217895ff1e835.js → foreign-link.1d4f63a0379cbd1d.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{loading-card.cc76fc9708142525.js → loading-card.77bea8c5870b5d3c.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{page-head.85f15db7b648d48c.js → page-head.2eb1e0213eb50349.js} +5 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{stream.e2915852cf82c86b.js → stream.e3800e736f832124.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{task-toasts.0ed8ccaae81b9d53.js → task-toasts.3b7eeee29fc327de.js} +29 -19
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{theme-choices.85100ed66d6f9200.js → theme-choices.fc86071c1b634176.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{back.180765bdadf6d602.js → back.7aa0ae82dbec38cd.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{org.572ad93c7707ab27.js → org.853d173b55368728.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{side-toggle.489faf1a259479f7.js → side-toggle.be7d2a7529557435.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{badge.c0bc352791a95fd6.js → badge.9f63fd615cf0ee22.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{button.ce9e6cdb08ca86db.js → button.b62fa52e18fa338b.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{card.9f0d45b73bc78b4f.js → card.c0030eafd76587e3.js} +21 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{collapse.93e4d1b20c2873ed.js → collapse.eb578fdf42029754.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{combo.54270c0251466fda.js → combo.e4e08287494081a3.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{confirm.c1281f9b12854210.js → confirm.e21b7f5e486dafb8.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{copy.bd6fc1577a393965.js → copy.043e0695c08c72f9.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{filter.3a452a262f040973.js → filter.0730dccad6332327.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{icons.e36c72f54750663a.js → icons.f769275420d072ce.js} +4 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{menu-items.1d082ac4dae8f3d4.js → menu-items.759a1b1f7c5ee365.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{menu.ee45bace979944b6.js → menu.7f558c7c6f6345d5.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{modal.25d53e5b41b9c4e5.js → modal.08ac85d31f4c76c1.js} +8 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/modal.a533234c7c831be4.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{segmented.a08dc08338d080e9.js → segmented.633abe26ff760e37.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/segmented.c6f30b839fd27f35.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{select.2eb33e5bea28d804.js → select.0ee9e8f04ddd8b47.js} +9 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{sentinel.17cffebfc3103b9f.js → sentinel.0ddf515b8f09ef9f.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/sentinel.d17e2bfcbeb9df31.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/tabs.025b532d6cc51736.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tabs.66b2e54963f6901b.js → tabs.1600a0b563a5c7dd.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tail.04132db0c5033d4f.js → tail.7eb303330802ac18.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/toolbar.cdbd0357f2c5e1fe.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{toolbar.24036899654de6df.js → toolbar.ff8367c641d28c1e.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{action.b9a5c37272250e82.js → action.f22057e7dfac40fe.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{client.a3928fa2dcd27b75.js → client.c8d7efefb6194d7d.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/routes/http.394704f4f12ada08.js +165 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/utils/crypto.24a6439ff8d10d3d.js +11 -0
- package/dist/dash/standalone/static/assets/chunks/advanced-list-850a950afe4f6996.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/agent-pills-9f6fa120182db948.js +2 -0
- package/dist/dash/standalone/static/assets/chunks/agent-settings-form-a8ee12513a02b1c5.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/agent-toggle-521136f20a71400d.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/agents-grid-bcd13cd7a46224a6.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{back-fa9d6e37f9828093.js → back-2d67134b122334f4.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/chain-hint-53675e299a865420.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{combo-86f3e11d1f6f6cee.js → combo-cb2c62fe580a8903.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/composer-4a46a458495ce3ba.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/composer-92553de43276510b.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/composer-data-890f71bade4f0616.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{confirm-c29a1db0130638d2.js → confirm-d6b2c5b1deccd1e8.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{connect-repositories-0de82daaf654b1d3.js → connect-repositories-226bf70aa81c29d8.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/connections-list-a33d6637e2d52fcf.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{copy-445c11202f136275.js → copy-294c6052b3b69424.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/create-link-b2480a7601967e94.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/credentials-list-90fc1c6d202e1461.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/custom-range-efa1b6a71ba84597.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/editor-53a3e1a893644fff.js +6 -0
- package/dist/dash/standalone/static/assets/chunks/{field-b82a0f895266791c.js → field-4d374d5ed3f43d7e.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/instructions-734d21dfb8f6393e.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/instructions-d3dc01b2f90820db.js +2 -0
- package/dist/dash/standalone/static/assets/chunks/list-16247e39898cd20e.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/model-options-d29e934a3de20ab4.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/models-list-6d93523660503dfb.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{outcome-dialog-5cf575a5e6921a5d.js → outcome-dialog-755fc581cbc2836e.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/outcome-dialog-77e13c848000a3dc.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/outcome-toast-9d5e9713c23882f5.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/platform-actions-08e9b3816dcd62b1.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/platform-actions-832904f5694ef902.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/platform-step-29469fd4eaddc42a.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/platform-step-5881a8be1e761e00.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/runners-list-dd759d408c643a29.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{runtime-6e12333f12903a62-1.js → runtime-9b28886f3cbe0ed3-1.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/secrets-list-be1f634a1b077baa.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/segmented-f646bfa8aa0aa449.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/shared-init-926144b364908b3c.js +9 -0
- package/dist/dash/standalone/static/assets/chunks/shared-init-953965859f7bf6b9.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/shared-init-9b28886f3cbe0ed3-2.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/shared-init-b42d2c06c25d1e2b.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/side-toggle-8c21d39a1e284887.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{tail-b1c46587301ef397.js → tail-d13c4cc0cf11ffd1.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/task-423e6a3f2527f534.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/task-actions-5917357eac6504ca.js +3 -0
- package/dist/dash/standalone/static/assets/chunks/task-view-c6ee43d2ddb6db90.js +3 -0
- package/dist/dash/standalone/static/assets/chunks/tasks-list-2c5ce592e00fda45.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/versions-list-177ae397ad64dcea.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{wular-pnext-6e12333f12903a62-0.js → wular-pnext-9b28886f3cbe0ed3-0.js} +1 -1
- package/dist/dash/standalone/static/assets/create-param-id-2c72f3e32e7f8b8d.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-a7f30a8c5a6fa651.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-account-76fffb9337b633f2.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-cc5d59edfc3cf0b1.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-new-170499c849114150.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-00243b34eb094b95.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-199a9991de1bf2d9.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-25ae07e0b3f5b252.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-param-app-a6d559f0e26bd01b.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-9f8faa8f7d714699.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-129adcdc293ceac8.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-0e037c66e3977f33.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-operator-8d5ef55834d8deba.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-settings-7138821f5422d087.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-586fec34f285e9cb.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-setup-67679c1f84f352cf.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-tasks-8a44e171984d32a1.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-b9d3a7a1bd1dd666.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-usage-c534db20ce538fd2.css +1 -0
- package/dist/dash/standalone/static/assets/global-df2c26ad15039e8a.css +1 -0
- package/dist/dash/standalone/static/assets/{login-9760b85feae40270.css → login-148795638d6ff5d4.css} +1 -1
- package/dist/dash/standalone/static/assets/pnext-client-095026242a079175.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-1dfeb8c3ef155f87.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-2358423351524403.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-28a6557216627768.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-31a4ee73945fee19.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-3dfdc76bb8712b82.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-4355ac87961d78c1.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-43c7a0046572e0c9.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-53dc7db68d67e0b1.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-5835cb35488bdf7f.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-638b390bc23ab1ae.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-67f832c6c51a66cd.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-6fc99f0abe77c2ea.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-7d99965f28ac7604.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-7ecbd7a0cbe4e231.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-8250bd3b86d038a3.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-bfd06805a43c6dee.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-ce2943f17e9d9ac3.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-ed31510d4615a5a5.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-f0496bf51e161ddd.js +1 -0
- package/dist/definition-4on4SG5J.js +1 -0
- package/dist/discover-DvzAbQvU.js +1 -0
- package/dist/dispatch-BaW2X6Sc.js +12 -0
- package/dist/{dist-DAnSqY1s.js → dist-B5qUdWUG.js} +35 -35
- package/dist/{dist-B2jiMMxZ.js → dist-Clxdruuu.js} +3 -3
- package/dist/{dist-ClCNj65n.js → dist-CymLGfHl.js} +4 -4
- package/dist/{adapter-CVd5klMH.js → dist-DX0JzVC6.js} +990 -990
- package/dist/{adapter-CU9H4g6c.js → dist-DfD9WmV8.js} +39 -39
- package/dist/dist-node-B8VIVzUc.js +20 -0
- package/dist/docs-CbgaMPvq.js +2 -0
- package/dist/drive-Tk6JvQK5.js +1 -0
- package/dist/drizzle-orm-CYU7WOQS.js +2 -0
- package/dist/emit-BgeqsCkC.js +11 -0
- package/dist/env-_AxrvBXP.js +1 -0
- package/dist/errors-DK_trCff.js +1 -0
- package/dist/exec-CAaYFJD1.js +3 -0
- package/dist/executor-Chc0zawh.js +11 -0
- package/dist/flow/builtin/review/index.d.ts +2 -2
- package/dist/flow/builtin/review/index.js +9 -9
- package/dist/flow/index.d.ts +1 -1
- package/dist/flow/index.js +1 -1
- package/dist/github-actions-2RjyRseX.js +36 -0
- package/dist/hook-COWDSO4a.js +1 -0
- package/dist/http-615JJgHo.js +5 -0
- package/dist/http-DRk8cDjf.js +1 -0
- package/dist/{index-BdkdNI1v.d.ts → index-ezhbF5wC.d.ts} +369 -413
- package/dist/integrations-BVmsk64f.js +9 -0
- package/dist/lib/broker.js +2 -2
- package/dist/load-PqaDHiHX.js +2 -0
- package/dist/local-BMGcCk8N.js +1 -0
- package/dist/local-BzZuOwgI.js +5 -0
- package/dist/login-BDKTNynK.js +8 -0
- package/dist/maintenance-d43Ml540.js +1 -0
- package/dist/mcp-BGam3G_B.js +1 -0
- package/dist/mcp-BGx48pyR.js +25 -0
- package/dist/mcp-BNz_l5TV2.js +1 -0
- package/dist/metadata-D_bBfr3H.js +1 -0
- package/dist/models-D1NXi6ni.js +1 -0
- package/dist/output-BKeyLbvt.js +5 -0
- package/dist/permission-BkYxjiFR.js +1 -0
- package/dist/prompt-CpwbsEWM.js +4 -0
- package/dist/refresh-yfEi5SQs.js +1 -0
- package/dist/remote-BbXx6S9P.js +1 -0
- package/dist/remote-rArUa01V.js +2 -0
- package/dist/runner-DG9jrX5H.js +1 -0
- package/dist/runner.json +1 -1
- package/dist/runner.tgz +0 -0
- package/dist/schema.d.ts +2 -2
- package/dist/schema.js +2 -3
- package/dist/sdk.d.ts +3264 -1601
- package/dist/sdk.js +1 -1
- package/dist/serve-B-5rDiZm.js +1 -0
- package/dist/serve-CvnrGAj7.js +12 -0
- package/dist/serve-DoYbHm_k.js +5 -0
- package/dist/session-Dtje9y-r.js +1 -0
- package/dist/sessions-DIz9fyRN.js +1 -0
- package/dist/shared--aE4olIO.js +1 -0
- package/dist/sign-in-wWkyaq5X.js +3 -0
- package/dist/state-Br-Fuaxg.js +6 -0
- package/dist/store-CzQLgCzt.js +352 -0
- package/dist/task-CFt85vTy.js +1 -0
- package/dist/task-N0qhnKpK.js +7 -0
- package/dist/tool-search-BkdgVolu.js +6 -0
- package/dist/tools-DNgEptor.js +1 -0
- package/dist/tools-oQvFAnh5.js +1 -0
- package/dist/tools-search-D1zArRyJ.js +1 -0
- package/dist/turn-Cc-v-eSy.js +3 -0
- package/dist/types-DHBqXFE2.js +1 -0
- package/dist/update-check-UyRob3yy.js +1 -0
- package/dist/view-D-rbQ1Kz.js +4 -0
- package/dist/views-3TxH367C.js +2 -0
- package/dist/worker-BMuKKiIa.js +1 -0
- package/dist/worker-CIHY9L42.js +7 -0
- package/dist/zod-_-snqfdO.js +1 -0
- package/dist/zod.js +65 -1
- package/docs/agents/coder.md +5 -12
- package/docs/agents/index.md +53 -82
- package/docs/approvals.md +47 -0
- package/docs/cli/agent.md +40 -19
- package/docs/cli/auth.md +1 -1
- package/docs/cli/connection.md +27 -26
- package/docs/cli/flow.md +9 -9
- package/docs/cli/index.md +17 -15
- package/docs/cli/model.md +23 -21
- package/docs/cli/runner.md +1 -1
- package/docs/cli/server.md +2 -2
- package/docs/cli/task.md +50 -50
- package/docs/config.md +37 -75
- package/docs/connections.md +80 -0
- package/docs/dash.md +23 -19
- package/docs/flows.md +46 -213
- package/docs/models.md +48 -77
- package/docs/review.md +20 -17
- package/docs/runners.md +49 -0
- package/docs/sdk.md +49 -73
- package/docs/self-host.md +79 -81
- package/package.json +4 -5
- package/plugins/agents/skills/coder/SKILL.md +3 -3
- package/plugins/claude/.claude-plugin/plugin.json +1 -1
- package/plugins/claude/skills/dispatch/SKILL.md +3 -3
- package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
- package/plugins/cursor/README.md +3 -3
- package/plugins/cursor/skills/coder/SKILL.md +3 -3
- package/dist/actions-BT7_eKXm.js +0 -10
- package/dist/adapter-BT8ECcRG.js +0 -1
- package/dist/agent-BA6xr8QY.js +0 -8
- package/dist/apps-D-v5sQJk.js +0 -367
- package/dist/args-CbO_Ck9Z.js +0 -11
- package/dist/async-XNO3nqum.js +0 -3
- package/dist/auth-DuXnSNf9.js +0 -1
- package/dist/base64url-CsVsW4Id.js +0 -1
- package/dist/chat-CgQdDRhs.js +0 -13
- package/dist/cmd-DX5ByXo3.js +0 -119
- package/dist/connection-DNxi2btM.js +0 -1
- package/dist/context-65bOofts.js +0 -7
- package/dist/conversation-DT-35cEt.js +0 -1
- package/dist/core-DwsAMCnL.js +0 -65
- package/dist/dash/standalone/node_modules/contextjsx/dist/index.mjs +0 -1
- package/dist/dash/standalone/node_modules/contextjsx/dist/jsx-runtime.mjs +0 -1
- package/dist/dash/standalone/node_modules/contextjsx/dist/src-BJ0QFeB8.mjs +0 -2
- package/dist/dash/standalone/node_modules/contextjsx/package.json +0 -70
- package/dist/dash/standalone/server/modules-server-server-react-server/src/agent/context/turn.dac8eb211c500271.js +0 -141
- package/dist/dash/standalone/server/modules-server-server-react-server/src/core/defaults.1b615366c56838a1.js +0 -57
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/auth/sign-in.661b3a4139af5bd7.js +0 -11
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/connect/page.0fbfdba5254f7ae5.js +0 -26
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/connect-apps.f3af8cc8540719d7.js +0 -36
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/page.c6efd5432c1a4a75.js +0 -65
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/operator-apps.a244f3199e7cf09c.js +0 -144
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/connections-list.21ec9dc73ce68656.js +0 -642
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/engines-list.9e116751bd34e2cc.js +0 -73
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/list.083f5c665df04b1b.js +0 -156
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/models-list.537f63f8e5dd085d.js +0 -410
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/model-options.a96c11d11674f598.js +0 -100
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/task-actions.587da79d68ab8d14.js +0 -151
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/status.16190fdd5fd7daad.js +0 -16
- package/dist/dash/standalone/static/assets/chunks/action-71685b2d5ad9f359.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/agent-pills-15da36c2cb81991b.js +0 -2
- package/dist/dash/standalone/static/assets/chunks/agent-settings-form-6e6a87d6e673daa8.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/agent-toggle-ca98586e3b4ce9ae.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/agents-grid-29c399e46b4e9e2b.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/composer-85e0ec7163ae18b7.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/composer-910bb87127972f62.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/composer-data-5fed6c271a4791ca.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/connect-apps-b73490e04ae6398d.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/connections-list-c50f58b4b28d10bb.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/create-link-6d64a2d5f9ce6de0.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/credentials-list-bee95799b2319b3b.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/custom-range-a0630599f907b30e.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/defaults-52f30e83d7666f7a.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/editor-b9951819f21b2e43.js +0 -6
- package/dist/dash/standalone/static/assets/chunks/engines-list-2720c3e8fa12b2f7.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/format-a27067f0186e78ac.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/instructions-affaaeff366b1725.js +0 -2
- package/dist/dash/standalone/static/assets/chunks/instructions-fd7402ac5aa8b50e.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/list-d918f79562d497eb.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/model-options-8d2170eebe0d061d.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/models-list-12bc7aceaa52f5b0.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/notice-57db7a1f05b7308c.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/outcome-dialog-b219595be320108a.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/platform-actions-1d27d2ba7eee9ff1.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/platform-actions-dba96dcb0f6513db.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/runners-list-36f8c5ecfcf8e9ae.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/secrets-list-d7dbafd24dd18481.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/segmented-8f809ebe712e92a7.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/shared-init-6e12333f12903a62-2.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/shared-init-cc13a835f3508618.js +0 -2
- package/dist/dash/standalone/static/assets/chunks/shared-init-f475017dd5811e33.js +0 -5
- package/dist/dash/standalone/static/assets/chunks/side-toggle-0aa237eba3dfe9c1.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/task-681061023bdf0a49.js +0 -5
- package/dist/dash/standalone/static/assets/chunks/task-actions-c9e46e81604e85c5.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/task-view-134186a544917ceb.js +0 -5
- package/dist/dash/standalone/static/assets/chunks/tasks-list-352a3222d878de0f.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/versions-list-21cb854e6a7108a7.js +0 -1
- package/dist/dash/standalone/static/assets/connect-a550b6f3a8c00186.css +0 -1
- package/dist/dash/standalone/static/assets/create-param-id-da3f7e20689fe51a.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-account-9471bec93c444232.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-64500e78caae32df.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-new-c067c22928a2d7cc.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-9dec87710e04f949.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-779c474301e04440.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-c7d594b5232630c2.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-a80e62570716fdb9.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-ce278252012297b9.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-d3b6d701eb8e1403.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-bcfa3de29341d5ba.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-operator-b7bc6447cc27c9ce.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-settings-6d6902345d88a687.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-85c7af9a89eef06e.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-setup-173efecd7b990c2e.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-tasks-ae0bc03f468e63cc.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-7325d8cff5be3592.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-usage-517b2a7ae462ac57.css +0 -1
- package/dist/dash/standalone/static/assets/global-87e1762113874559.css +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-05df74b071ddb0b3.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-2c19cca257f78ae6.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-2db05dfa62642a65.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-36b0d6085a073880.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-576c06599e241231.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-6aa0f19a30d58d63.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-6b30b71f452f2f07.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-6ccb4d4fff812db3.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-74eb465defba421e.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-8c692d12b2fd90d6.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-92e17d39063a9ced.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-93246aea268c2682.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-9954dcbc0c579e0d.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-c0dfa1cdde9a9855.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-c28d38d4aafd4af6.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-c2c30dcb6dc31d60.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-dbf741073e11eac0.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-e29194a27280333f.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-f8a7e692b27caad9.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-fc5b8cfcba2a9f63.js +0 -1
- package/dist/discover-CPZdprlQ.js +0 -1
- package/dist/dist-node-Bv1kCqyi.js +0 -20
- package/dist/docs-x-l7gjFE.js +0 -2
- package/dist/drive-Y-ZlgiUW.js +0 -1
- package/dist/env-B9JG6gwo.js +0 -1
- package/dist/errors-XBA-Ls4n.js +0 -10
- package/dist/exec-iFssTO5V.js +0 -3
- package/dist/executor-Dt2FFT-y.js +0 -11
- package/dist/http-BZfjbiov.js +0 -1
- package/dist/integrations-DyInAa5g.js +0 -2
- package/dist/load-zhcrwSRF.js +0 -2
- package/dist/local-D55UkW93.js +0 -5
- package/dist/log-view-CL3_S0IQ.js +0 -3
- package/dist/maintenance-BfxcatXH.js +0 -1
- package/dist/match-Bq4sDuCy.js +0 -1
- package/dist/mcp-Bta09QCU.js +0 -13
- package/dist/mcp-CUITALl1.js +0 -1
- package/dist/models-C1O2DrXx.js +0 -1
- package/dist/output-D95NoAA9.js +0 -16
- package/dist/prompt-onpyIyXK.js +0 -8
- package/dist/prompts-B8pKhMcu.js +0 -4
- package/dist/refresh-D-0K9fo3.js +0 -1
- package/dist/remote-CDm0YUU3.js +0 -3
- package/dist/runner-CTFTuaz_.js +0 -1
- package/dist/runners-CYTicTb7.js +0 -36
- package/dist/serve-Bzs_lEg-.js +0 -1
- package/dist/serve-CWtLyyTz.js +0 -12
- package/dist/serve-DE6A-rBk.js +0 -4
- package/dist/slack-Bo5l13Rs.js +0 -5
- package/dist/task-BU1JEK9X.js +0 -7
- package/dist/task-CPzBITsp.js +0 -1
- package/dist/tools-BMaKWTa6.js +0 -1
- package/dist/tools-CM4UCsId.js +0 -1
- package/dist/turn-DMvPfhb5.js +0 -3
- package/dist/types-D_xnfP7m.js +0 -1
- package/dist/views-DEdKqLm_.js +0 -5
- package/dist/wire-JMNPv8f6.js +0 -1
- package/dist/worker-BuP_Lem1.js +0 -9
- package/dist/worker-C1tuzq5n.js +0 -1
- package/dist/zod-BoqHoRCH.js +0 -1
- package/docs/mcp.md +0 -54
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/core/{errors.0a735590a5412ea6.js → errors.200335e62a9d9564.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{page.061f6006f2685f5e.css.pnext-asset.js → page.abe7a6d16eb15c41.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{page.c811938ae8a8f1df.css.pnext-asset.js → page.1c7947d6f79d6447.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{settings/agent-settings-form.ca926c58d15044aa.css.pnext-asset.js → platforms/platform-step.a722e3b8539a0f85.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/{agent/hero.1bef5dca89b5942c.css.pnext-asset.js → [slug]/(tabs)/settings/agent-settings-form.bf5430862c505c55.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/{agent/instructions.446bccc375f30eeb.css.pnext-asset.js → [slug]/platforms/[app]/@/app/dash/[org]/agents/[slug]/(tabs)/platforms/page.db05694ed4113dab.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/{editor/editor.c496247a81ed832c.css.pnext-asset.js → [slug]/platforms/[app]/app-cards.d2f5c8d620066e05.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{layout.a4efa8d807fe5416.css.pnext-asset.js → agents/agent/hero.243d85cac1f22df2.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{settings/[tab]/@/app/dash/[org]/setup/outcome.3ad5f7ec67e5238d.css.pnext-asset.js → agents/agent/instructions.4c31196fcbf9846c.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{settings/[tab]/connections-list.46786fe36b121a43.css.pnext-asset.js → agents/editor/editor.6b9a1d5c0a490153.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{settings/[tab]/credentials-list.f7c27f170ec1e868.css.pnext-asset.js → layout.52abe52dcfa736d7.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{engines-list.9927d602ebe9e7fc.css.pnext-asset.js → advanced-list.819e410e4178b328.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{list.8cbee173a5aff98d.css.pnext-asset.js → connections-list.87962937438296f1.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{runners-list.53c7ea80b6fb734c.css.pnext-asset.js → credentials-list.973f91751525bcb6.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{tasks/[id]/task-view.57990cfd2bdf5c11.css.pnext-asset.js → settings/[tab]/list.69d1b62c4066015b.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{tasks/composer.5b8687662e1629fa.css.pnext-asset.js → settings/[tab]/models-list.efd3f5781314c1d9.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{tasks/list/tasks-list.abbbc9ace4d866e5.css.pnext-asset.js → settings/[tab]/runners-list.df35d33aba0c8b07.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{globals.c8fd2b8b01e7077b.css.pnext-asset.js → dash/[org]/settings/model-pick.74fababc0cc0bba7.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{responsive.ebc5f7d77b4b86a0.css.pnext-asset.js → dash/[org]/tasks/[id]/task-view.aae9fa481b9015d1.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/frame/page-head.364ec93a8e7857b3.css.pnext-asset.js → app/dash/[org]/tasks/composer.33d49ad218253703.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/frame/task-toasts.d13d9f628e530552.css.pnext-asset.js → app/dash/[org]/tasks/list/pending-approvals.07e59a9cae7ccf29.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/ui/badge.0cb1513f8b077560.css.pnext-asset.js → app/dash/[org]/tasks/list/tasks-list.f3737549b4696cc8.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/ui/button.d7f4433f4e7faa80.css.pnext-asset.js → app/globals.3b53a3feaa1d72e1.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/ui/card.f80288cc42f9bcae.css.pnext-asset.js → app/responsive.2979ffa0161a5afd.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/{ui/filter.b53f21acc3e2cfef.css.pnext-asset.js → frame/page-head.9fcc49ddf7119d75.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/{ui/menu.25b184f68cba7b46.css.pnext-asset.js → frame/task-toasts.682322f6f729b33e.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{modal.9db07d368dcf5981.css.pnext-asset.js → badge.8e2a9842b28f44a6.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{segmented.0bd8652fdbc05eb0.css.pnext-asset.js → button.2b18ba19ae01e2bb.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{sentinel.1e3ec9bd6008d811.css.pnext-asset.js → card.4ab7ad42a0770726.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tabs.ca13e40ff54128d0.css.pnext-asset.js → filter.6fdff1e7355aaa0e.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{toolbar.19e1ce5224a23acf.css.pnext-asset.js → menu.cd96fa0495fe0fde.css.pnext-asset.js} +0 -0
package/dist/sdk.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{t as e}from"./errors-DK_trCff.js";import{g as t}from"./config-D_RuO6gX.js";import{n,r}from"./remote-BbXx6S9P.js";import{A as i,j as a}from"./dispatch-BaW2X6Sc.js";import{a as o}from"./executor-Chc0zawh.js";import{n as s}from"./agent-Bi5nbUhA.js";import{t as c}from"./sign-in-wWkyaq5X.js";import{t as l}from"./connection-BXjn7gCC.js";import{n as u}from"./docs-CbgaMPvq.js";import{n as d}from"./models-D1NXi6ni.js";import{n as f}from"./task-CFt85vTy.js";import p from"./flow/index.js";import{n as m}from"./runner-DG9jrX5H.js";import{r as h}from"./env-_AxrvBXP.js";import{n as g}from"./github-actions-2RjyRseX.js";const _=f,v=l,y=a,b=u,x=c;function S(...e){h();let t=import(`./serve-CvnrGAj7.js`).then(({serverHandler:t})=>t(...e));return Object.assign(async(e,n)=>(await t)(e,n),{scheduled:async()=>(await t).scheduled(),close:async()=>(await t).close()})}const C={serve:async(...e)=>(await import(`./serve-CvnrGAj7.js`)).serve(...e),rotateKey:async(...e)=>(await import(`./maintenance-d43Ml540.js`)).rotateKey(...e),workflow:g,app:{create:async(...e)=>(await import(`./apps-B6mUToTa.js`).then(e=>e.t)).serverAppLink(...e)},handler:S},w={list:(e={})=>n(e).folders.list(),check:(e,t={})=>n(t).folders.check(e)},T=s;var E={task:_,flow:p,model:d,config:t,connection:v,setupHost:i,upgrade:y,docs:b,review:o,auth:x,agent:T,credentials:r,folders:w,runner:m,server:C};export{e as CoderError,T as agent,x as auth,t as config,v as connection,r as credentials,E as default,b as docs,p as flow,w as folders,d as model,o as review,m as runner,C as server,i as setupHost,_ as task,y as upgrade};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ea as e}from"./args-CJsHYWbt.js";import{t}from"./errors-DK_trCff.js";import{K as n,p as r}from"./state-Br-Fuaxg.js";import{r as i}from"./crypto-Ittsv-m4.js";import{n as a,o}from"./remote-BbXx6S9P.js";import"./dispatch-BaW2X6Sc.js";import{o as s,s as c,t as l}from"./http-DRk8cDjf.js";import{t as u}from"./local-BMGcCk8N.js";import d from"node:path";import f from"node:fs";import p from"node:os";import{createHmac as m,randomBytes as h}from"node:crypto";import g from"node:http";var _=e({runnerController:()=>T,serveRunner:()=>S});const v=()=>r(`runners.json`);function y(){try{return JSON.parse(f.readFileSync(v(),`utf8`))}catch{return{}}}function b(e){f.mkdirSync(d.dirname(v()),{recursive:!0}),f.writeFileSync(v(),JSON.stringify(e,null,2),{mode:384})}const x=e=>[`cloudflared tunnel --url http://localhost:${e}`,`ngrok http ${e}`,`tailscale funnel ${e}`,`VS Code: forward port ${e} in the Ports view and set its visibility to Public`];async function S(e={}){let r=e.port??4100,i=e.token?e.runnerUrl??process.env.CODER_RUNNER_URL:e.url;if(!i)throw new t(`invalid-option`,e.token?`Expose this runner and set CODER_RUNNER_URL or --runner-url to its public HTTPS address.`:`Expose this runner with a tunnel, then pass its public URL with --url.`,{hint:x(r)});let d=e.token?o({...e,server:e.url??e.server,yes:!0}):o(e),f=y(),m=f[d]??{secret:h(32).toString(`base64url`)},_=new u(n()),v=T({secret:m.secret,server:d,runner:_}),S=g.createServer(c(async e=>{let t=await s(e,l(new URL(e.url).pathname));return t instanceof Response?t:v(t)}));await new Promise((e,t)=>{S.once(`error`,t),S.listen(r,`127.0.0.1`,e)});let C=()=>new Promise(e=>S.close(()=>e())),w=e.name??p.hostname(),E=[],D=async(e,n)=>{let r=E,a=await fetch(`${d}/runners/register`,{method:`POST`,redirect:`manual`,signal:AbortSignal.timeout(5e3),headers:{"content-type":`application/json`},body:JSON.stringify({...e?{token:e}:{id:m.id,organizationId:m.organizationId},name:w,url:i,secret:m.secret,...n?{offline:n}:{},...r.length?{removed:r}:{}})});if(!a.ok)throw new t(`server`,`Runner registration failed`,{status:a.status});let{deleted:o=[],...s}=await a.json();E=E.filter(e=>!r.includes(e));for(let e of o)await _.remove(e).then(()=>E.push(e),t=>console.error(`coder runner: folder of deleted task ${e} not removed`,t));return s},O;try{if(e.token){let t=await D(e.token);O=t,m.organizationId=t.organizationId}else{let n=m.id&&m.organizationId?await D().catch(e=>{if(!(e instanceof t&&e.status===401))throw e}):void 0;if(n)O=n;else{let t=a(e),n=await t.me();O=await t.runners.add({kind:`http`,name:w,scope:e.workspace||!n.user?`workspace`:`personal`,config:{url:i,secret:m.secret}}),m.organizationId=n.organization?.id,m.id=O.id,O=await D()}}m.id=O.id,b({...f,[d]:m})}catch(e){throw await C(),e}let k=Promise.resolve(),A=setInterval(()=>{k=k.then(()=>D().then(()=>{})).catch(()=>{})},6e4);return{...O,port:r,server:d,close:async()=>{clearInterval(A),await k,await D(void 0,!0).catch(()=>{}),await C()}}}const C=3e5,w=(e,t=200)=>new Response(JSON.stringify(e),{status:t,headers:{"content-type":`application/json`}});function T(e){let t=e.now??Date.now,n=new Map,r=(r,a)=>{let o=r.headers.get(`x-coder-timestamp`)??``,s=r.headers.get(`x-coder-nonce`)??``,c=r.headers.get(`x-coder-signature`)??``,l=Number(o);if(!s||!Number.isFinite(l)||Math.abs(t()-l)>C)return!1;let u=m(`sha256`,e.secret).update(`${a}.${o}.${s}`).digest(`base64url`);if(!i(c,u))return!1;for(let[e,r]of n)r<t()&&n.delete(e);return!n.has(s)&&(n.set(s,l+C),!0)};return async t=>{let n=t.method===`GET`?``:await t.text();if(!r(t,n))return w({error:`Unauthorized`},401);let[,i,a]=new URL(t.url).pathname.split(`/`).map(decodeURIComponent);try{if(t.method===`POST`&&i===`start`&&!a){let t=JSON.parse(n);if(typeof t.task!=`string`||!t.env)return w({error:`Invalid start`},400);let r=t.env.CODER_TASK_TOKEN;if(typeof r!=`string`)return w({error:`Invalid start`},400);let i={CODER_SERVER:e.server,CODER_TASK_TOKEN:r,CODER_INBOX_MODE:e.runner.push?`push`:`poll`,...t.env.CODER_LOGIN===`claude`||t.env.CODER_LOGIN===`codex`?{CODER_LOGIN:t.env.CODER_LOGIN}:{}};return w({handle:await e.runner.start({id:t.task},i)})}if(t.method===`GET`&&i===`health`&&!a)return w({ok:!0});if(!a)return w({error:`Not found`},404);if(t.method===`POST`&&i===`messages`&&e.runner.push){let{entries:t}=JSON.parse(n);return!Array.isArray(t)||!t.length?w({error:`Invalid messages`},400):w(await e.runner.push(a,t))}return t.method===`GET`&&i===`status`?w(await e.runner.status(a)):t.method===`POST`&&i===`stop`?(await e.runner.stop(a),new Response(null,{status:204})):w({error:`Not found`},404)}catch(e){return w({error:e instanceof Error?e.message:String(e)},400)}}}export{_ as n,S as t};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import{t as e}from"./errors-DK_trCff.js";import{E as t,T as n,V as r}from"./state-Br-Fuaxg.js";import{n as i}from"./types-DHBqXFE2.js";import{Z as a,s as o}from"./config-D_RuO6gX.js";import{n as s}from"./integrations-BVmsk64f.js";import{i as c,n as l}from"./crypto-Ittsv-m4.js";import"./dispatch-BaW2X6Sc.js";import{_ as u,a as d,g as f,l as p,o as m,p as h,r as g,s as _,t as v}from"./http-DRk8cDjf.js";import{n as y,r as b}from"./env-_AxrvBXP.js";import{l as x}from"./github-actions-2RjyRseX.js";import{$ as S,$n as ee,$r as C,A as te,An as w,Ar as ne,B as T,Bn as E,Br as re,Bt as D,C as ie,Cn as ae,Cr as oe,Ct as se,D as ce,Dn as le,Dr as ue,Dt as de,E as fe,En as pe,Er as me,Et as he,F as O,Fn as ge,Fr as _e,G as ve,Gn as ye,Gt as be,H as xe,Hn as Se,Hr as Ce,Ht as we,I as Te,In as Ee,Ir as De,It as Oe,Jn as ke,Jr as k,K as Ae,Kn as je,L as Me,Ln as Ne,Lr as Pe,M as Fe,Mn as Ie,Mr as Le,N as Re,Nn as ze,Nr as Be,O as Ve,On as He,Or as Ue,Ot as We,P as A,Pn as Ge,Pr as Ke,Pt as qe,Q as Je,Qn as Ye,Qr as Xe,R as j,Rn as Ze,Rr as Qe,Rt as $e,S as et,Sn as tt,Sr as nt,St as rt,T as it,Tn as at,Tr as ot,Tt as st,U as ct,Un as lt,Ur as ut,Ut as dt,V as M,Vn as ft,Vr as pt,Vt as mt,W as ht,Wn as gt,Wr as _t,X as vt,Xn as yt,Xr as bt,Xt as xt,Y as N,Yn as St,Yr as Ct,Z as wt,Zn as Tt,Zr as Et,Zt as Dt,_ as Ot,_n as kt,_r as At,_t as jt,a as Mt,ai as P,an as F,ar as Nt,at as Pt,b as Ft,bn as It,br as Lt,c as I,cn as Rt,cr as L,ct as zt,d as Bt,di as Vt,dn as Ht,dt as Ut,ei as Wt,en as Gt,er as Kt,et as qt,f as Jt,fn as Yt,fr as Xt,ft as Zt,g as Qt,gn as R,gr as $t,gt as en,h as tn,hn as nn,hr as rn,i as an,ii as z,in as B,ir as on,it as sn,j as cn,jn as ln,jr as un,jt as dn,k as V,kn as fn,kr as pn,l as mn,ln as hn,lr as gn,lt as _n,m as vn,mn as yn,mr as bn,n as xn,ni as H,nn as Sn,nr as Cn,nt as wn,o as Tn,oi as En,or as Dn,ot as On,p as kn,pn as An,pr as jn,q as Mn,qn as Nn,qr as Pn,qt as Fn,r as In,ri as U,rn as Ln,rr as Rn,rt as zn,s as Bn,si as Vn,sn as Hn,st as Un,ti as Wn,tn as Gn,tt as W,u as Kn,ui as qn,un as Jn,ut as Yn,v as Xn,vn as Zn,vr as Qn,w as $n,wn as er,wr as tr,wt as nr,x as G,xn as rr,xr as ir,xt as ar,y as or,yn as sr,yr as cr,z as lr,zn as ur,zr as dr,zt as fr}from"./apps-B6mUToTa.js";import{m as pr,p as mr,v as hr}from"./local-BzZuOwgI.js";import{a as gr,c as _r,n as vr,o as yr,r as br,s as xr}from"./metadata-D_bBfr3H.js";import Sr from"node:path";import K from"node:process";import Cr from"node:fs";import{spawnSync as wr}from"node:child_process";import{createHash as Tr,randomBytes as Er,randomUUID as Dr}from"node:crypto";import Or from"node:http";async function kr(e){let t=(e.now??Date.now)(),n=await e.store.list(`runner`);return{online:1+n.filter(({value:e})=>e.lastSeen!==void 0&&t-e.lastSeen<3e5).length,total:1+n.length}}async function Ar(e){let t=(e.now??Date.now)(),n=e.healthyAt!==void 0&&t-e.healthyAt<5e3,r=n||await jr(e);return e.healthyAt=r?n?e.healthyAt:t:void 0,d({ok:r},r?200:503,{"cache-control":`no-store`})}async function jr(e){return e.config.store===`postgres`?e.databaseHealth?e.databaseHealth().then(()=>!0,()=>!1):!1:!0}async function Mr(e){let t=(e.now??Date.now)();if(!e.local)return{...await e.queue.metrics(e.organizationId,t-864e5),runnersOnline:(await kr(e)).online,requests:e.limits?.requests??0,rateLimitRejections:e.limits?.rejections??0};let n=await e.queue.list(e.organizationId),r=e.local?[...F(e.local.cwd,!1),...F(e.local.cwd,!0)]:[],i=new Map([...r,...n.map(e=>e.status===`queued`?e:r.find(t=>t.task.id===e.task.id)??e)].map(e=>[e.task.id,e])),a={queued:0,running:0,waiting:0,completed:0,failed:0,cancelled:0},o=0;for(let e of i.values())e.createdAt>=t-864e5&&a[e.status]++,e.status===`queued`&&o++;return{tasks:a,queueDepth:o,runnersOnline:(await kr(e)).online,requests:e.limits?.requests??0,rateLimitRejections:e.limits?.rejections??0}}async function Nr(e,t,n,r){let i=t.session.user.id,a=(await e.json().catch(()=>({}))).engine??``;if(!Rr.has(a)||!t.config.subscriptions?.[a])return d({error:`Sign in with ${a||`that engine`} is off on this server.`},403);let o=t.runners[t.config.runner];if(!o||o.kind===`github-actions`)return d({error:`Sign-in cannot run on the ${t.config.runner} runner.`},409);let s=(await t.store.list(`login`)).find(({value:e})=>e.owner===i&&e.engine===a&&e.state!==`done`&&e.state!==`failed`&&e.expiresAt>q(t));if(s)return d(J(s.id,s.value));let c=`login-${Er(12).toString(`base64url`)}`,l=gn(c,t.organizationId,0),u={owner:i,engine:a,state:`starting`,tokenHash:l.hash,runner:o.kind,createdAt:q(t),expiresAt:q(t)+Lr};await zr(t,c,u);let f;try{let e=await o.start({id:c},{CODER_SERVER:t.config.publicUrl??``,CODER_TASK_TOKEN:l.token,CODER_LOGIN:a},void 0,{timeoutMs:Lr,hosts:[Ce[a].api,...Ce[a].account]}),n=await t.store.patchLogin(c,{handle:e},{tokenHash:u.tokenHash});if(!n)return await o.stop(e).catch(()=>{}),d({error:`This sign-in is gone. Start again.`},409);f=n}catch(e){return await t.store.delete(`login`,c),d({error:e instanceof Error?e.message:String(e)},502)}return d(J(c,f),201)}async function Pr(e,t,n,r){let i=n.id??``;if(!r.searchParams.has(`state`)){let e=i&&!i.includes(`/`)?await Y(t,i):void 0;return e?d(J(i,e)):d({error:`This sign-in is gone. Start again.`},404)}let a=await t.store.watch(`login`,i);try{let n=i&&!i.includes(`/`)?await Y(t,i):void 0;if(!n)return d({error:`This sign-in is gone. Start again.`},404);let o=r.searchParams.get(`state`),s=Date.now()+25e3;for(;o&&n.state===o&&Date.now()<s&&!e.signal.aborted;)if(await a.wait(Math.min(1e4,s-Date.now()),e.signal),n=await Y(t,i),!n)return d({error:`This sign-in is gone. Start again.`},404);return d(J(i,n))}finally{a.close()}}async function Fr(e,t,n,r){let i=n.id??``,a=i&&!i.includes(`/`)?await Y(t,i):void 0;if(!a)return d({error:`This sign-in is gone. Start again.`},404);let o=await e.json().catch(()=>({})),s=typeof o.code==`string`?o.code.trim():``;return a.engine!==`claude`||a.state!==`open`||!s||!await t.store.patchLogin(i,{state:`verifying`,input:Vn(t.config,s)},{state:`open`,tokenHash:a.tokenHash})?d({error:`This sign-in is not waiting for a code.`},409):d({ok:!0})}async function Ir(e,t,n,r){let i=n.id??``,a=i&&!i.includes(`/`)?await Y(t,i):void 0;return a?(await t.store.delete(`login`,i),a.handle&&await t.runners[a.runner]?.stop(a.handle).catch(()=>{}),d({ok:!0})):d({error:`This sign-in is gone. Start again.`},404)}const Lr=6e5,Rr=new Set([`claude`,`codex`]),q=e=>(e.now??Date.now)();function zr(e,t,n){return e.store.put(`login`,t,n,{ttlMs:Math.max(1,n.expiresAt-q(e))})}function J(e,t){return{id:e,engine:t.engine,state:t.state,expiresAt:t.expiresAt,...t.url?{url:t.url}:{},...t.code?{code:t.code}:{},...t.error?{error:t.error}:{}}}async function Y(e,t){let n=await e.store.get(`login`,t);return n&&n.owner===e.session?.user.id?n:void 0}function Br(e,t){let n=t.handle&&e.runners[t.runner]?.stop(t.handle);if(!n)return;let r=n.catch(e=>console.error(`coder server: could not stop the machine of a finished ${t.engine} sign-in`,e));e.waitUntil?.(r)}async function Vr(e,t,n,r){let i=n.id,a=await t.store.watch(`login`,i),o=Date.now()+25e3;try{for(;;){if(e.signal.aborted)return d({});let n=await t.store.get(`login`,i);if(!n||n.tokenHash!==t.callbackLogin.tokenHash)return new Response(`Unauthorized`,{status:401});if(n.input){let e=await t.store.patchLogin(i,{input:null},{input:n.input,tokenHash:n.tokenHash});return d(e?{code:P(t.config,n.input)}:{})}if(n.state===`verifying`||n.state===`done`||n.state===`failed`||Date.now()>=o)return d({});await a.wait(Math.min(1e4,o-Date.now()),e.signal)}}finally{a.close()}}async function Hr(e,t,n,r){return d({engine:t.callbackLogin.engine})}async function Ur(e,t,n,r){let i=n.id,a=t.callbackLogin,o=await e.json().catch(()=>({}));if(a.state===`done`||a.state===`failed`)return d({ok:!0});let s={state:[`starting`,`open`,`verifying`],tokenHash:a.tokenHash};if(typeof o.error==`string`)return await t.store.patchLogin(i,{state:`failed`,error:o.error.slice(0,500)},s)&&Br(t,a),d({ok:!0});let c=o.result?.env;if(c){let e=a.engine===`claude`?`CLAUDE_CODE_OAUTH_TOKEN`:`CODEX_AUTH_JSON`;if(Object.keys(c).join()!==e||typeof c[e]!=`string`)return d({error:`Invalid sign-in result`},400);let n=o.result?.account;return await t.store.completeLogin(i,a.tokenHash,{...En(t.config,{env:c}),createdAt:(t.now??Date.now)(),...n?.email||n?.plan?{account:{...typeof n.email==`string`?{email:n.email}:{},...typeof n.plan==`string`?{plan:n.plan}:{}}}:{}})?(Br(t,a),d({ok:!0})):d({error:`This sign-in changed. Try again.`},409)}let l={...typeof o.url==`string`&&/^https:\/\//.test(o.url)?{url:o.url}:{},...typeof o.code==`string`?{code:o.code.slice(0,64)}:{}};return await t.store.patchLogin(i,l.url?{...l,state:`open`}:l,s)?d({ok:!0}):d({error:`This sign-in changed. Try again.`},409)}const Wr=e=>`create-finished:${c(e)}`;async function Gr(e,t){let n=await e.store.get(`delivery`,Wr(t));return n&&`target`in n?n.target:void 0}async function Kr(e,t,n){let r=e.operatorApp??!1,i=r?`*`:e.session?.user.id??`anonymous`;if(!e.integrations[t])return{error:`Unknown integration "${t}"; run coder agent integrations list to see them`,status:404};if(!e.config.publicUrl)return{error:`PUBLIC_URL is not set on this server; set it to the address platforms should call and restart`,status:400};if(r&&!e.integrations[t].app.shareable)return{error:`Create this app in your workspace from the agent's Platforms tab.`,status:400};let a=Kn(n);if(!a)return{error:`Setup link is missing or malformed; start again from the agent's Platforms tab`,status:400};if(!a.definition.integrations[t])return{error:`This agent declares no ${t} integration in its agent.json`,status:400};if(a.state.public&&!r&&!e.integrations[t].publicApps)return{error:`${e.integrations[t].name} apps cannot be public here. Create a private one.`,status:400};let o=Tn(t,a.state),s=a.state.tx?await qn(e,a.state.tx,`create`,i)===o?a.state.tx:void 0:await Vt(e,`create`,i,o);return s?{state:{...a.state,tx:s},definition:a.definition}:{error:`This app creation link is invalid, expired, or already used`,status:403}}async function qr(e,t,n,r){let i=r.searchParams.get(`tx`);if(t.operatorApp&&i&&(await qn(t,i,`create`,`*`)||await Gr(t,i)===n.id))return await C(e,t.dashboardHosts)??Xe();let a=new URLSearchParams(r.searchParams);return a.set(`create`,n.id),h(`${Bn(t)}${vn(Qt(t),`/setup`)}?${a}`)}async function Jr(e,t,n){let r=await Kr(e,t,n);if(`error`in r)return d({error:r.error},r.status);let{app:i}=e.integrations[t],a=r.state.tx,o=i.createStep&&(e.operatorApp||r.state.public)?i.createStep(e.config.publicUrl,{saved:await Bt(e,t),name:r.definition.name,public:r.state.public}):void 0,s=e.config.publicUrl;if(i.createPost&&G.has(new URL(s).hostname))return d({error:`${e.integrations[t].name} cannot reach ${s}. Set a public address first.`},400);let c=e.operatorApp?void 0:mn(e,r.state.agent),u=i.createPost?.({publicUrl:s,spec:In(r.definition,r.state.agent,t),state:l({tx:a,...c?{back:c}:{}}),...r.state.owner?{owner:r.state.owner}:{},...r.state.public?{public:!0}:{}});return d({tx:a,...u?{post:u}:{},...o?{create:o}:{}})}async function Yr(e,t,n,r){return Jr(t,n.id,r.searchParams)}async function Xr(e,t,n){let r=await e.json().catch(()=>void 0);return Jr(t,n.integration,new URLSearchParams(r&&typeof r==`object`?r:{}))}async function Zr(e,t,n,r,a){let o=t.operatorApp??!1,s=o?`*`:t.session?.user.id??`anonymous`,c=t.integrations[n];if(!c)return I(t,`unknown-integration`,{platform:n},a);if(o&&!c.app.shareable)return d({error:`Create this app in your workspace from the agent's Platforms tab.`},400);let u=t.config.publicUrl;if(!u)return I(t,`no-public-url`,{},a);let f=r?await Jt(t,r,n,s):void 0;if(!f)return I(t,`create-expired`,{platform:n},a);o&&await t.store.put(`delivery`,Wr(r),{at:t.now?.()??Date.now(),target:n},{ttlMs:6e5});let p=o?`/create/${n}`:mn(t,f.state.agent),m=o?{tx:r}:{},g=o?void 0:(await xn(t)).find(e=>e.integration===n),_=await c.app.createCallback(e,{publicUrl:u,spec:In(f.definition,f.state.agent,n),fetch:t.fetch??fetch,tokens:an(t,n),...g?{shared:P(t.config,g.credentials)}:{}}).catch(r=>r instanceof i&&r.code===`invalid-field`&&e.headers.get(`accept`)===`application/json`?d({error:r.message},400):r instanceof i?I(t,r.code,{platform:n,error:r.error,...m},p):(console.error(`coder server: creating the ${n} app failed`,r),I(t,`failed`,{platform:n,...m},p)));if(_ instanceof Response)return _;let v={id:`${n}:${_.platformAppId}`,integration:n,agent:f.state.agent,name:_.name,...f.state.repo?{agentsRepo:f.state.repo}:{},...f.state.repo?{branch:f.state.branch??`main`}:{},...o?{builtin:!0}:{},...`shared`in _?{shared:g.id,credentials:``}:{credentials:Vn(t.config,_.credentials)},createdAt:t.now?.()??Date.now()};if(await t.store.put(`app`,v.id,v),c.app.values&&await t.store.put(`delivery`,Ke(v.id),{version:0,manifest:c.app.values(v,{publicUrl:u,spec:In(f.definition,v.agent,n)}).lines,changed:!1}),o)return await oe(t,`Created the shared app`,`${_.name} on ${c.name}`),I(t,`created`,{platform:n,app:_.name,...m},p);let y=await Vt(t,`install`,s,v.id);return h(`${u}/install/${n}?app=${encodeURIComponent(v.id)}&state=${l({tx:y,back:p})}`)}async function Qr(e,t,n,r){let i=g(r.searchParams.get(`state`));return Zr(e,t,n.id,i?.tx,Mt(i?.back))}async function $r(e,t,n,r){let i=new URLSearchParams(await e.clone().text()).get(`tx`),a=await Zr(e,t,n.id,i,void 0),o=a.headers.get(`location`);return o&&e.headers.get(`accept`)===`application/json`?d({url:o}):a}async function ei(e,t){let n=(await e.store.list(`installation`)).filter(({value:t})=>!t.deletedAt&&e.integrations[t.integration]?.repos),r=new Map((await ne(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||a.integration!==n.id))try{let r=await Ht(e,n,i,P(e.config,a.credentials));if(i.repos?.includes(t)||(await n.repos.list(Yt(e,i),r)).includes(t))return{contents:n,token:r,app:a,installation:i}}catch(e){console.error(`coder server: repository access for ${i.id} failed`,e)}}}async function ti(e,t,n){let r=await ei(e,t);if(!r)return d({error:`No installed app can read ${t}`},400);let i=await r.contents.repos.listDir(t,un,r.token,n).catch(()=>[]),o=await Promise.all(i.map(async i=>{let o=await r.contents.repos.readFile(t,`${un}/${i}/agent.json`,r.token,n).catch(()=>void 0);if(o===void 0)return;let s={};try{let e=JSON.parse(o);e&&typeof e==`object`&&(s=e)}catch{}let c=Object.entries(s.mcp&&typeof s.mcp==`object`&&!Array.isArray(s.mcp)?s.mcp:{}).flatMap(([e,t])=>a(e,t)),l=await mr(e.store,i),u=l?.source===`repo`&&l.repo===t,d=u?await pr(e.store,i):void 0;return{id:i,name:typeof s.name==`string`?s.name:i,...c.length?{warnings:c}:{},...typeof s.description==`string`?{description:s.description}:{},...u?{version:l.currentVersion,...d?.source?{commit:d.source.commit}:{}}:{},...l&&!u?{taken:!0}:{}}}));return d({repo:t,agents:o.filter(Boolean)})}async function ni(e,t,n,r){let i=r.searchParams.get(`repo`);return i?ti(t,i,r.searchParams.get(`ref`)||`HEAD`):d({error:`repo is required`},400)}async function ri(e,t,n,r){let i=await e.json().catch(()=>void 0),a=i?.agents;if(typeof i?.repo!=`string`||i.ref!==void 0&&typeof i.ref!=`string`||a!==void 0&&!(Array.isArray(a)&&a.every(e=>typeof e==`string`)))return d({error:`repo is required, ref must be a string and agents a list of ids`},400);try{let e=await ei(t,i.repo);if(!e)return d({error:`No installed app can read ${i.repo}`},400);let n=i.ref??`HEAD`,r=a??await e.contents.repos.listDir(i.repo,`.coder/agents`,e.token,n);for(let e of r){let n=await mr(t.store,e);if(n&&(n.source!==`repo`||n.repo!==i.repo))return d({error:`Agent id "${e}" is already taken`},409)}let o=await Le(t.store,e.contents,i.repo,n,e.token,(t.now??Date.now)(),{slugs:r});return await _e(t,o),d({imported:o.map(e=>e.agent)})}catch(e){return d({error:e instanceof Error?e.message:String(e)},400)}}async function ii(e,t,n,r){let i=n.id,a=Number(r.searchParams.get(`after`)??-1),o=Number.isFinite(a)?a:-1,s=t.routeTask??await t.store.get(`task`,i);if(!s&&t.taskPrincipal)return d({error:`No task "${i}"`},404);if(!s||t.local&&s.handle?.startsWith(`cli:`)&&s.task.flow==="default"){let n=s?.task.cwd??t.local?.cwd;if(!n||!B(n,i,!1))return d({error:`No task "${i}"`},404);{let r=Number(e.headers.get(`last-event-id`)??o);return gi(e,t,`cli:${n}:${i}`,Number.isFinite(r)?r:o,async e=>{let t=B(n,i);if(t)return{status:t,lines:Ln(n,i,e,ci),pendingResult:si(n,t,!t.result)}})}}let c=Number(e.headers.get(`last-event-id`)??o);return gi(e,t,i,Number.isFinite(c)?c:o,{ctx:t,id:i},oi(t))}const ai=3e4;function oi(e){let t=e.now??Date.now,n={at:t(),seen:!0};return async r=>{let{task:i}=r,a=await jn(e);return L(a&&{...a,spaces:[]},i)?!0:i.audience?.startsWith(`space:`)?((n.audience!==i.audience||t()-n.at>=ai)&&(n={at:t(),audience:i.audience,seen:L(await jn(e,[i.audience]),i)}),n.seen):!1}}function si(e,t,i=!1){if(!R.has(t.status)||t.error||t.status===`cancelled`)return!1;let a=n(e,t.task.id),o=Date.parse(a?.resumedAt??a?.createdAt??``)||0;return i||(Cr.statSync(Sr.join(r(e,t.task.id),`result.json`),{throwIfNoEntry:!1})?.mtimeMs??0)<o}const X=1e3,ci=500,li=29e4,ui=2e4,Z=3e4;function di(e,t,n,r){let i=[...new Set((r.searchParams.get(`tasks`)??``).split(`,`).filter(Boolean))].slice(0,100),a=Date.now(),o=t.taskWatcher??new pi,s=o.tag(t),[c,l]=(e.headers.get(`last-event-id`)??``).split(`-`),u=Number(c),d=u>0&&`-${l}`===s,f=d?Math.min(Math.max(u,a-li),a):a,p=u>0&&(!d||u<f)?`event: reset
|
|
2
|
+
data: {}
|
|
3
|
+
|
|
4
|
+
`:``,m=new TextEncoder,h=()=>{},g=new ReadableStream({start(n){n.enqueue(m.encode(`retry: ${X}\nid: ${f}${s}\n\n${p}`)),h=o.watch(t,i,f,e=>n.enqueue(m.encode(e)),()=>n.close());let r=()=>{h();try{n.close()}catch{}};e.signal.aborted?r():e.signal.addEventListener(`abort`,r)},cancel(){h()}});return new Response(g,{headers:{"content-type":`text/event-stream; charset=utf-8`,"cache-control":`no-cache, no-transform`}})}function fi(e,t){let{task:n,approval:r,archivedAt:i,createdAt:a,startedAt:o,finishedAt:s}=e;return{id:n.id,agent:n.agent,status:e.status,approval:r??null,approvals:e.approvals??n.context?.approvals??null,archivedAt:e.autoArchived&&!t?void 0:i,createdAt:a,startedAt:o,finishedAt:s,...$e(e),...t?{result:e.result??null,error:e.error??null,answer:e.answer??null}:{}}}const Q=(e,t)=>`${e}:${t??``}`;var pi=class{options;watches=new Set;timer;counts=new Map;views=new Map;runners=new Map;reading=!1;closed=!1;last=Date.now();scans=new Map;left=new Map;archived=new Map;reads=0;generation=Dr().slice(0,8);constructor(e={}){this.options=e}watch(e,t,n,r,i){if(this.closed)return queueMicrotask(i),()=>{};let a=Date.now();this.watches.size||(this.last=a);let o={ctx:e,ids:new Set(t),sent:new Map,gone:new Set,from:n,fresh:!0,runners:``,tag:this.tag(e),beat:a,marked:a,until:a+(this.options.lifeMs??li),send:r,close:i};return this.watches.add(o),this.timer||(this.timer=setInterval(()=>this.tick(),this.options.pollMs??X),this.timer.unref?.()),this.tick(),()=>this.drop(o)}tag(e){return`-${Tr(`sha256`).update(e.organizationId).digest(`hex`).slice(0,8)}${e.queue instanceof dn?`.${this.generation}`:``}`}runnersChanged(e){this.runners.delete(e)}close(){this.closed=!0;for(let e of[...this.watches]){this.drop(e);try{e.close()}catch{}}}drop(e){if(this.watches.delete(e)){if(![...this.watches].some(t=>t.ctx.organizationId===e.ctx.organizationId)){for(let t of[this.counts,this.views])for(let n of t.keys())n.startsWith(`${e.ctx.organizationId}:`)&&t.delete(n);this.runners.delete(e.ctx.organizationId)}this.watches.size||(clearInterval(this.timer),this.timer=void 0,this.counts.clear(),this.views.clear(),this.runners.clear())}}tick(){let e=Date.now();for(let t of[...this.watches])if(e>=t.until){this.drop(t);try{t.close()}catch{}}else e-t.beat>=(this.options.heartbeatMs??ui)&&(t.beat=e,this.send(t,`: ping
|
|
5
|
+
|
|
6
|
+
`));this.reading||!this.watches.size||(this.reading=!0,this.read(e).finally(()=>this.reading=!1))}send(e,t){try{e.send(t)}catch{this.drop(e)}}async read(e){let t=[...this.watches],n=new Map;for(let e of t){let t=n.get(e.ctx.organizationId)??{ctx:e.ctx,ids:new Set,fresh:new Set};for(let n of e.ids)t.ids.add(n),e.fresh&&t.fresh.add(n);n.set(e.ctx.organizationId,t)}let r=Math.min(this.last,...t.flatMap(e=>e.fresh?[e.from]:[]));this.reads++;let i=await this.changes(n,r-Z,e).catch(e=>{console.error(`coder server: task events failed`,e)});if(!i)return;this.last=e;let a=new Map;try{for(let[r,{ctx:o}]of n){let n=JSON.stringify([[...i.rows.get(r)??[]].map(([e,t])=>[e,t.status,t.archivedAt]).sort(),[...i.deleted.get(r)?.keys()??[]].sort()]),s=t.filter(e=>e.ctx.organizationId===r),c=s.some(e=>!wn(e.ctx)&&!e.ctx.taskPrincipal);for(let t of new Set(s.map(e=>e.ctx.taskPrincipal?.task))){let l=Q(r,t),u=this.counts.get(l),d=u?.fingerprint!==n||c&&!t&&e-u.at>=ai,f=o.local?[...i.rows.get(r)?.values()??[]].filter(e=>!e.archivedAt&&[`queued`,`running`,`waiting`].includes(e.status)&&(!t||e.task.parent===t)).map(e=>({...Xt(e.task),requestedBy:e.task.requestedBy,active:1})):d?t?[{audience:``,active:(await o.queue.counts(r,{archived:!1,statuses:[`queued`,`running`,`waiting`],parent:t})).active}]:await o.queue.activeCounts(r):u.groups;a.set(l,f),s.some(e=>this.watches.has(e))&&this.counts.set(l,{groups:f,fingerprint:n,at:d?e:u.at})}}}catch(e){console.error(`coder server: task counts failed`,e);return}let o=new Map(await Promise.all(t.map(async t=>{let{organizationId:n,session:r,taskPrincipal:o}=t.ctx,s=`${n}:${r?.user.id??``}:${o?.task??``}`,c=[...i.rows.get(n)?.values()??[]],l=new Set([...c.map(e=>e.task.audience),...[...i.deleted.get(n)?.values()??[]].map(e=>e.audience),...(a.get(Q(n,o?.task))??[]).map(e=>e.audience)].filter(e=>!!e?.startsWith(`space:`))),u=this.views.get(s);if(!u||e-u.at>=ai||[...l].some(e=>!u.audiences.has(e))||c.some(e=>e.updatedAt>u.at&&l.has(e.task.audience))){let n=jn(t.ctx,[...l]),r={at:e,audiences:l,view:n};this.views.set(s,r),n.catch(()=>this.views.get(s)===r&&this.views.delete(s))}return[t,await this.views.get(s).view]})));await Promise.all([...n].filter(([t])=>e-(this.runners.get(t)?.at??-1/0)>=15e3).map(async([t,{ctx:n}])=>{let r=this.runners.get(t),i={at:e,records:r?.records??[]};this.runners.set(t,i);try{let e=await n.store.list(`runner`);this.runners.get(t)===i&&(i.records=e)}catch(e){this.runners.get(t)===i&&(r?this.runners.set(t,r):this.runners.delete(t)),console.error(`coder server: runner events failed`,e)}}));for(let n of t){if(!this.watches.has(n))continue;let t=[];try{let r=o.get(n);t=this.news(n,i,e,r);let s=a.get(Q(n.ctx.organizationId,n.ctx.taskPrincipal?.task))?.filter(e=>L(r,e)).reduce((e,t)=>e+t.active,0);s!==void 0&&s!==n.active&&(n.active=s,t.push(`id: ${e}${n.tag}\nevent: counts\ndata: ${JSON.stringify({active:s})}\n\n`)),t.push(...this.runnerNews(n,e))}catch{}!t.length&&e-n.marked>=(this.options.heartbeatMs??ui)&&t.push(`id: ${e}${n.tag}\n\n`),t.length&&(n.marked=e,this.send(n,t.join(``)))}}runnerNews(e,t){let n=this.runners.get(e.ctx.organizationId);if(!n)return[];let r=de(e.ctx,n.records,t),i=JSON.stringify(r.map(({lastSeen:e,...t})=>t.online?t:{...t,lastSeen:e})),a=e.runners;return e.runners=i,a===i?[]:[`id: ${t}${e.tag}\nevent: runners\ndata: ${JSON.stringify({items:r})}\n\n`]}async changes(e,t,r){let i=await[...e.values()][0].ctx.queue.changes([...e].map(([e,t])=>({organizationId:e,ids:[...t.ids],fresh:[...t.fresh]})),t),a=new Map;for(let{organizationId:e,status:t}of i.rows){let n=a.get(e)??new Map;a.set(e,n.set(t.task.id,t))}let o=new Map;for(let{organizationId:e,id:t,...n}of i.deleted){let r=o.get(e)??new Map;o.set(e,r.set(t,n))}for(let[t,{ctx:i}]of e){if(!i.local)continue;let e=[...a.get(t)?.values()??[]],o=this.scans.get(i.local.cwd);if(!o||r-o.at>=(this.options.localScanMs??4e3)||e.some(e=>e.updatedAt>o.at)){let e=!o||r-o.archivedAt>=(this.options.archiveScanMs??15e3);await hn(i,i.local.cwd);let t=e?F(i.local.cwd,!0):o.archived,a=F(i.local.cwd,!1),s=new Set(a.map(e=>e.task.id)),c=[...a,...t.filter(e=>!s.has(e.task.id))],l=new Set(c.map(e=>e.task.id)),u=this.left.get(i.local.cwd)??new Map;for(let e of o?.rows??[])l.has(e.task.id)||u.set(e.task.id,o.at);for(let[e,t]of u)(t<r-6e5||l.has(e))&&u.delete(e);let d=this.archived.get(i.local.cwd)??new Set;for(let e of d)l.has(e)?d.delete(e):n(i.local.cwd,e)||(u.set(e,o?.at??r),d.delete(e));this.left.set(i.local.cwd,u),this.scans.set(i.local.cwd,o={at:r,rows:c,archived:t,archivedAt:e?r:o.archivedAt})}a.set(t,new Map(er(i.local.cwd,o.rows,e).map(e=>[e.task.id,e])))}return{rows:a,deleted:o}}news(e,{rows:t,deleted:n},r,i){let{ctx:a}=e,o=a.taskPrincipal?.task,s=t.get(a.organizationId)??new Map;if(o&&e.fresh)for(let t of e.ids)s.get(t)?.task.parent!==o&&e.ids.delete(t);let c=[],l=(t,n)=>{let i=JSON.stringify(n);e.sent.get(t)!==i&&(e.sent.set(t,i),c.push(`id: ${r}${e.tag}\nevent: task\ndata: ${i}\n\n`))},u=e=>({id:e,deleted:!0}),d=t=>{let n=a.local&&!o&&B(a.local.cwd,t,e.ids.has(t));if(l(t,n?fi(n,e.ids.has(t)):u(t)),e.gone.add(t),n&&a.local){let e=this.archived.get(a.local.cwd)??new Set;this.archived.set(a.local.cwd,e.add(t))}};for(let[t,n]of s){if(o&&n.task.parent!==o)continue;if(!L(i,n.task)){e.sent.has(t)&&l(t,u(t));continue}let s=e.ids.has(t);e.gone.delete(t);let c=fi(s&&a.local&&n.local&&R.has(n.status)?B(a.local.cwd,t)??n:n,s);if(a.local&&n.local&&e.sent.get(t)!==JSON.stringify(c)&&r-(n.finishedAt??0)<Z&&si(a.local.cwd,n)){e.sent.has(t)||e.sent.set(t,``);continue}s||a.local&&!e.fresh||n.updatedAt>e.from-Z?l(t,c):e.fresh&&e.sent.set(t,JSON.stringify(c))}if(e.fresh||a.queue instanceof dn)for(let t of e.ids)s.has(t)||d(t);for(let[t,{at:r,...s}]of n.get(a.organizationId)??[])r>e.from-Z&&L(i,s)&&(!o||e.ids.has(t))&&l(t,u(t));if(a.local){for(let t of e.sent.keys())!s.has(t)&&!e.ids.has(t)&&!e.gone.has(t)&&d(t);for(let[t,n]of this.left.get(a.local.cwd)??[])n>e.from-Z&&!s.has(t)&&e.sent.get(t)!==JSON.stringify(u(t))&&d(t)}return e.fresh=!1,e.from=r,c}};const mi=1e4;var hi=class{options;feeds=new Map;timer;interval;closed=!1;reads=0;constructor(e={}){this.options=e,this.interval=e.pollMs??X}watch(e,t,n,r,i,a){if(this.closed)return queueMicrotask(i),()=>{};let o=this.feeds.get(e),s=o?.reading!==void 0&&Date.now()-o.reading>=(this.options.stallMs??mi);if(!o||s){let t={key:e,source:n,watches:new Set,head:1/0};if(o){for(let e of o.watches)t.watches.add(Object.assign(e,{feed:t}));o.watches.clear()}this.feeds.set(e,o=t)}let c={cursor:t,feed:o,timers:[],send:r,close:i,sees:a};c.timers=[setTimeout(()=>this.end(c),this.options.lifeMs??5e4),setInterval(()=>this.send(c,`: ping
|
|
7
|
+
|
|
8
|
+
`),this.options.heartbeatMs??ui)];for(let e of c.timers)e.unref?.();return o.watches.add(c),o.reading===void 0&&t<o.head&&this.read([o]),this.schedule(),()=>this.drop(c)}close(){this.closed=!0;for(let e of[...this.feeds.values()])for(let t of[...e.watches])this.end(t)}drop(e){let{feed:t}=e;for(let t of e.timers)clearTimeout(t);!t.watches.delete(e)||t.watches.size||(this.feeds.get(t.key)===t&&this.feeds.delete(t.key),!this.feeds.size&&(clearTimeout(this.timer),this.timer=void 0,this.interval=this.options.pollMs??X))}end(e,t=``){try{t&&e.send(t),e.close()}catch{}this.drop(e)}send(e,t){try{e.send(t)}catch{this.drop(e)}}schedule(){this.timer||this.closed||!this.feeds.size||(this.timer=setTimeout(()=>this.tick(),this.interval),this.timer.unref?.())}tick(){this.timer=void 0;let e=[...this.feeds.values()].filter(e=>e.reading===void 0);this.schedule(),this.read(e).then(e=>{let t=e?this.options.pollMs??X:Math.min(this.interval*2,this.options.idleMs??5e3);t!==this.interval&&(this.interval=t,clearTimeout(this.timer),this.timer=void 0,this.schedule())})}async read(e){let t=e.filter(e=>this.feeds.get(e.key)===e&&e.watches.size).map(e=>{let t=[...e.watches];return{feed:e,readers:t,from:Math.min(...t.map(e=>e.cursor))}});if(!t.length)return!1;let n=Date.now();for(let{feed:e}of t)e.reading=n;this.reads+=t.length;let r=new Map,i=[];for(let e of t){let{source:t}=e.feed;typeof t==`function`?i.push({...e,read:t}):r.set(t.ctx.queue,[...r.get(t.ctx.queue)??[],{...e,...t}])}let a=e=>(console.error(`coder server: task log read failed`,e),null);return(await Promise.all([...[...r].map(async([e,t])=>{let{statementTimeout:n}=t[0].ctx,r=()=>e.logTails(t.map(({ctx:e,id:t,from:n})=>({organizationId:e.organizationId,id:t,after:n})),500),i=await(n?n(mi,r):r()).catch(a);return Promise.all(t.map((e,t)=>this.settle(e,i&&i[t])))}),...i.map(async e=>[await this.settle(e,await e.read(e.from).catch(a))])])).flat().includes(!0)}async settle({feed:e,readers:t,from:n},r){let i=r?await Promise.all(t.map(async e=>await e.sees?.(r.status).catch(()=>!1)===!1)):[];if(e.reading=void 0,this.feeds.get(e.key)!==e)return!1;t.forEach((e,t)=>i[t]&&this.end(e));let a=t.filter(t=>e.watches.has(t)),o=a.length<e.watches.size,s=!1;if(r===void 0)for(let e of a)this.end(e);else if(r){let{status:t,lines:i,pendingLogs:c,pendingResult:l}=r,u=i.length===500,d=R.has(t.status)&&!u&&!c&&!l,f=i.map(e=>[e.seq,`id: ${e.seq}\nevent: log\ndata: ${JSON.stringify(e)}\n\n`]),p=i.at(-1)?.seq??n;s=e.head!==1/0&&p>e.head,e.head=Math.max(n,p),u&&(o=!0);let m=t.status===`waiting`?t.approval:void 0;for(let e of a){let t=f.flatMap(([t,n])=>t>e.cursor?[n]:[]).join(``);!u&&!d&&!e.caught&&(e.caught=!0,t+=`event: caught-up
|
|
9
|
+
data: {}
|
|
10
|
+
|
|
11
|
+
`),!u&&m?.id&&e.approval!==m.id&&(e.approval=m.id,t+=`event: approval\ndata: ${JSON.stringify(m)}\n\n`),e.cursor=Math.max(e.cursor,i.at(-1)?.seq??-1),d?this.end(e,`${t}event: end\ndata: {}\n\n`):t&&this.send(e,t)}}return o&&this.feeds.get(e.key)===e&&this.read([e]),s}};function gi(e,t,n,r,i,a){let o=t.logWatcher??new hi,s=new TextEncoder,c=()=>{},l=new ReadableStream({start(l){l.enqueue(s.encode(`retry: ${X}\n\n`)),c=o.watch(`${t.organizationId}:${n}`,r,i,e=>l.enqueue(s.encode(e)),()=>l.close(),a);let u=()=>{c();try{l.close()}catch{}};e.signal.aborted?u():e.signal.addEventListener(`abort`,u)},cancel(){c()}});return new Response(l,{headers:{"content-type":`text/event-stream; charset=utf-8`,"cache-control":`no-cache, no-transform`}})}const _i={npm:[`npx`,`-y`],pypi:[`uvx`],oci:[`docker`,`run`,`-i`,`--rm`]},vi=(e=[])=>e.map(({name:e,description:t,isRequired:n,isSecret:r,value:i,default:a})=>({name:e,...t?{description:t}:{},...i??a?{placeholder:i??a}:{},required:n===!0,secret:r===!0}));function yi(e=[],t,n){return e.flatMap((e,r)=>{let i=`${t}:${r}`,a=Object.entries(e.variables??{}),o=e.value??e.default,s=(e,t,r)=>{let[i]=vi([{...r,name:e}]);return n.push({...i,label:t}),`{${e}}`};if(a.length)for(let[e,t]of a)o=o?.replaceAll(`{${e}}`,s(`${i}:${e}`,e,t));else o===void 0&&(e.valueHint||e.isRequired)&&(o=s(i,e.valueHint??e.name??i,e));return[...e.type===`named`&&e.name?[e.name]:[],...o===void 0?[]:[o]]})}function bi(e){let t=e.remotes?.find(e=>e.type===`streamable-http`);if(t)return{type:`http`,url:t.url,env:[],headers:vi(t.headers)};let n=e.packages?.find(e=>_i[e.registryType]&&(e.transport?.type??`stdio`)===`stdio`);if(!n)return;let[r,...i]=_i[n.registryType],a=[],o=yi(n.runtimeArguments,`runtime`,a),s=yi(n.packageArguments,`package`,a);return{type:`stdio`,command:n.runtimeHint??r,args:[...!n.runtimeHint||n.runtimeHint===r?i:[],...o,n.identifier,...s],...a.length?{argumentInputs:a}:{},env:vi(n.environmentVariables),headers:[]}}function xi(e,t){let[n=``,r]=e.replace(/^v/,``).split(`+`)[0].split(/-(.*)/),[i=``,a]=t.replace(/^v/,``).split(`+`)[0].split(/-(.*)/),o=n.localeCompare(i,`en`,{numeric:!0});if(o)return o;if(r===void 0||a===void 0)return Number(r===void 0)-Number(a===void 0);let s=r.split(`.`),c=a.split(`.`);for(let e=0;e<Math.max(s.length,c.length);e++){let t=s[e],n=c[e];if(t===void 0||n===void 0)return Number(t!==void 0)-Number(n!==void 0);let r=/^\d+$/.test(t),i=/^\d+$/.test(n),a=r===i?t.localeCompare(n,`en`,{numeric:r}):Number(i)-Number(r);if(a)return a}return 0}function Si(e,t,n){for(let{server:r,_meta:i}of n){let n=i?.[`io.modelcontextprotocol.registry/official`]?.isLatest===!0,a=r.version??``,o=t.get(r.name);if(o&&(o.latest===n?xi(o.version,a)>=0:o.latest))continue;let s=bi(r),c=/^[a-z0-9-]+(?:\.[a-z0-9-]+)+\//i.test(r.name)&&!/^io\.github(?:\.|\/)/i.test(r.name),l=r.name.split(`/`).pop()??r.name,u=c&&/^(mcp|mcp-server|server)$/i.test(l)?r.name.split(`/`)[0].split(`.`).pop():l;t.set(r.name,{version:a,latest:n,found:s?{name:r.name,title:r._meta?.[`io.modelcontextprotocol.registry/publisher-provided`]?.github?.displayName??r.title??u,description:r.description??``,...c?{verified:!0}:{},...e.curated?{curated:!0}:{},...s}:void 0})}}var Ci=class{sources=[{url:`https://api.mcp.github.com/v0.1/servers`,curated:!0,rows:new Map,ready:!1,failed:!1},{url:`https://registry.modelcontextprotocol.io/v0.1/servers`,curated:!1,rows:new Map,ready:!1,failed:!1}];refreshAt=0;timer;controller;closed=!1;inFlight;async response(e,t){(e.now??Date.now)()>=this.refreshAt&&this.refresh(e);let n=t.trim().toLowerCase(),r=n?await Promise.all(this.sources.map(async t=>{let r=new Map;if(!t.ready)try{let i=new URLSearchParams({search:n,limit:`100`}),a=await(e.fetch??fetch)(`${t.url}?${i}`,{headers:{accept:`application/json`},signal:AbortSignal.any([this.controller.signal,AbortSignal.timeout(2e4)])});if(!a.ok)throw Error(`Registry unavailable`);let{servers:o}=await a.json();Si(t,r,o)}catch{}return r})):[],i=this.sources.map((e,t)=>{let n=r[t];if(!n?.size)return e.rows;let i=new Map(e.rows);for(let[e,t]of n)i.has(e)||i.set(e,t);return i});if(!this.inFlight&&this.sources.some(e=>e.failed)&&!i.some(e=>[...e.values()].some(e=>e.found)))return d({error:`The MCP registry did not answer. Try again.`},502);let a=new Set,o=this.sources.flatMap((e,t)=>[...i[t]].flatMap(([t,{found:r}],i)=>{if(a.has(t)||(a.add(t),!r))return[];let o=r.verified?r.name.split(`/`)[0].split(`.`).pop().toLowerCase():void 0,s=[r.name.split(`/`).pop(),r.title,...o?[o]:[]].map(e=>e.toLowerCase()),c=!n||s.includes(n)?0:s.some(e=>e.startsWith(n))?1:s.some(e=>e.includes(n))?2:r.description.toLowerCase().includes(n)?3:4;if(c===4)return[];let l=!n||c===3?2:o===n?0:r.verified?1:2;return[{found:r,curated:e.curated,order:i,vendor:l,quality:c}]})),s=e=>Number(e===3);return o.sort((e,t)=>s(e.quality)-s(t.quality)||Number(t.curated)-Number(e.curated)||(e.curated?e.order-t.order:e.vendor-t.vendor||e.quality-t.quality||e.found.name.localeCompare(t.found.name))),d(o.slice(0,30).map(({found:e})=>e),200,this.sources.every(e=>e.ready)?{}:{partial:`true`})}refresh(e){if(this.inFlight||this.closed)return;this.timer&&clearTimeout(this.timer);let t=this.controller=new AbortController;this.inFlight=Promise.all(this.sources.map(n=>this.fill(e,n,t.signal))).then(()=>{}).finally(()=>{this.inFlight=void 0,this.refreshAt=(e.now??Date.now)()+36e5,this.closed||(this.timer=setTimeout(()=>this.refresh(e),36e5),this.timer.unref())}),e.waitUntil?.(this.inFlight)}async fill(e,t,n){let r=new Map,i=new Set,a;try{do{let o=new URLSearchParams({limit:`100`});a&&o.set(`cursor`,a);let s=await(e.fetch??fetch)(`${t.url}?${o}`,{headers:{accept:`application/json`},signal:AbortSignal.any([n,AbortSignal.timeout(2e4)])});if(!s.ok)throw Error(`Registry unavailable`);let{servers:c,metadata:l}=await s.json();if(Si(t,r,c),t.ready||(t.rows=new Map(r)),a=l?.nextCursor,a&&i.has(a))throw Error(`Registry cursor repeated`);a&&i.add(a)}while(a);t.rows=r,t.ready=!0,t.failed=!1}catch{t.failed=!0}}close(){this.closed=!0,this.timer&&clearTimeout(this.timer),this.controller?.abort()}};async function wi(e,t,n){let r=t.settings??={};return await(r.registry??=new Ci).response(t,n.searchParams.get(`q`)??``)}const Ti=[z(`GET`,`/runner/:file`,x),z(`GET`,Xn,Ft),z(`GET`,gr,_r,{guard:M}),z(`GET`,vr,yr,{guard:M}),z(`GET`,br,xr,{guard:M}),z(`GET`,`/health`,(e,t)=>Ar(t)),z(`GET`,new URL(o).pathname,An),z(`GET`,`/`,bt,{guard:ve}),z(`GET`,`/login`,Wt,{guard:wt}),...U(`/login`,Et,wt).filter(e=>e.method!==`GET`),z(`POST`,`/dash/token`,Ct,{guard:Fe}),...U(`/dash/:org/operator`,k,ht),...U(`/dash`,k,cn)],Ei=[z(`GET`,`/api/auth/capabilities`,(e,t)=>d({wular:t.auth?.issuer??null})),...U(`/api/auth`,(e,t)=>t.auth.handler(e),fe),z(`GET`,`/me`,tn,{guard:et})],Di=[...H(`/tasks`,[z(`GET`,`/:id/messages`,On,{guard:A}),z(`POST`,`/:id/ack`,zn,{guard:A}),z(`POST`,`/:id/heartbeat`,sn,{guard:A}),z(`POST`,`/:id/logs`,zt,{guard:T}),z(`POST`,`/:id/result`,_n,{guard:N}),z(`POST`,`/:id/credential`,Un,{guard:N}),z(`POST`,`/:id/connection`,Zt,{guard:W}),z(`POST`,`/:id/reply`,Ut,{guard:W}),z(`POST`,`/:id/react`,Yn,{guard:W}),z(`GET`,`/:id/history`,on,{guard:W}),z(`GET`,`/:id/history/:conversation`,Nt,{guard:W}),z(`POST`,`/:id/history`,Dn,{guard:N}),z(`GET`,`/:id`,Pt,{guard:Ve})]),...H(`/logins`,[z(`GET`,`/:id/input`,Vr,{guard:lr}),z(`GET`,`/:id`,Hr,{guard:lr}),z(`POST`,`/:id`,Ur,{guard:lr})]),...H(`/runners`,[z(`POST`,`/register`,he)])],Oi=[...H(`/create`,[z(`GET`,`/:id`,qr,{guard:V}),z(`POST`,`/:id`,Yr,{guard:V}),z(`GET`,`/:id/callback`,Qr,{guard:V}),z(`POST`,`/:id/callback`,$r,{guard:V})]),...H(`/install`,[z(`GET`,`/:id`,ge,{guard:O}),z(`POST`,`/:id`,ge,{guard:O}),z(`GET`,`/:id/callback`,Ge,{guard:O}),z(`POST`,`/:id/callback`,Ge,{guard:O})])],ki=H(`/connect`,[z(`GET`,`/:integration`,Ot,{guard:xe}),z(`GET`,`/:integration/callback`,kn,{guard:xe})]),Ai=[...H(`/hooks`,[z(`POST`,`/*`,(e,t,n)=>fn(e,t,n[`*`]),{guard:(e,t,n)=>t.integrations[n[`*`]]?t:p()})]),...Oi,...ki],ji=[z(`GET`,`/metrics`,async(e,t)=>d(await Mr(t),200,{"cache-control":`no-store`}),{guard:$n}),z(`GET`,`/usage`,en,{approvalPolicy:`allow`}),z(`GET`,`/usage/totals`,jt,{approvalPolicy:`allow`})],Mi=H(``,[z(`GET`,`/folders`,(e,t)=>d(Qe(t.local.cwd))),z(`POST`,`/folders/check`,async(e,t)=>{let n=await e.json().catch(()=>void 0);return d(De(n?.path))}),z(`POST`,`/folders/clone`,async(e,t)=>{let n=await e.json().catch(()=>void 0);return d(await Pe(n?.url))}),z(`POST`,`/folders/pick`,async(e,t)=>d(await dr()))],Me),Ni=H(``,[z(`GET`,`/engines/status`,async(e,t)=>d(await Sn(t))),z(`POST`,`/engines/:engine/login`,Gt),z(`POST`,`/engines/:engine/logout`,Gn)],Re),Pi=[z(`POST`,`/apps/:id/install`,(e,t,n,r)=>bn(e,t,n.id,r.searchParams.get(`back`))),z(`POST`,`/apps/create/:integration`,Xr),z(`GET`,`/apps`,At),z(`DELETE`,`/apps/:id`,Lt),z(`GET`,`/apps/:id/drift`,cr),z(`POST`,`/apps/:id/update`,nt),z(`GET`,`/installations`,Qn),z(`DELETE`,`/installations/:id`,ir,{guard:(e,t)=>Mn(t,`Only an owner or admin can uninstall an app.`)}),z(`GET`,`/connections`,dt,{guard:D,approvalPolicy:`allow`}),z(`POST`,`/connections`,mt,{guard:D}),z(`PATCH`,`/connections/:id`,be,{guard:D}),z(`DELETE`,`/connections/:id`,we,{guard:D}),z(`POST`,`/connections/:id/authorize`,fr,{guard:D}),z(`GET`,`/integrations`,(e,t,n,r)=>$t(t,r)),z(`GET`,`/repositories`,(e,t)=>rn(t)),z(`POST`,`/repositories/refresh`,(e,t)=>rn(t,!0))],Fi=[z(`GET`,`/agents/import`,ni),z(`POST`,`/agents/import`,ri),z(`GET`,`/agents`,St,{approvalPolicy:`allow`}),z(`PATCH`,`/agents/:slug/settings`,ke,{guard:it,approvalPolicy:`ask`,change:`agent-settings`}),z(`GET`,`/agents/:slug/versions`,yt),z(`GET`,`/agents/:slug/versions/:version`,Ye,{approvalPolicy:`allow`}),z(`GET`,`/agents/:slug`,Tt,{approvalPolicy:`allow`}),z(`DELETE`,`/agents/:slug`,je,{guard:(e,t)=>Mn(t,`Only an owner or admin can delete an agent.`)}),z(`PUT`,`/agents/:slug`,Nn,{approvalPolicy:`ask`,change:`agent-version`})],Ii=[z(`GET`,`/credentials`,Dt,{approvalPolicy:`allow`}),z(`POST`,`/credentials`,Fn,{guard:te}),z(`DELETE`,`/credentials/:name`,xt),z(`POST`,`/logins`,Nr,{guard:j}),z(`GET`,`/logins/:id`,Pr,{guard:j}),z(`POST`,`/logins/:id`,Fr,{guard:j}),z(`DELETE`,`/logins/:id`,Ir,{guard:j})],Li=[z(`GET`,`/runners`,nr,{approvalPolicy:`allow`}),z(`POST`,`/runners`,rt),z(`POST`,`/runners/pair`,st),z(`POST`,`/runners/:id/test`,ar),z(`PATCH`,`/runners/:id`,We,{approvalPolicy:`ask`,change:`runner-default`}),z(`DELETE`,`/runners/:id`,se)],Ri=[z(`GET`,`/composer`,tt),z(`GET`,`/tasks`,ae,{approvalPolicy:`allow`}),z(`POST`,`/tasks`,kt,{guard:qt,approvalPolicy:`allow`}),z(`GET`,`/tasks/:id`,at,{guard:S(),approvalPolicy:`allow`}),z(`DELETE`,`/tasks/:id`,pe,{guard:S()}),z(`GET`,`/tasks/:id/logs`,He,{guard:S(),approvalPolicy:`allow`}),z(`GET`,`/tasks/:id/stream`,ii,{guard:S(),approvalPolicy:`allow`}),z(`POST`,`/tasks/:id/steer`,le,{guard:S(!0),approvalPolicy:`allow`}),z(`POST`,`/tasks/:id/ask`,It,{guard:S(!0),approvalPolicy:`allow`}),z(`POST`,`/tasks/:id/approve`,Zn,{guard:S(!0),approvalPolicy:`allow`}),z(`POST`,`/tasks/:id/requests/:approval`,Ee,{guard:S()}),z(`GET`,`/approvals/pending`,(e,t)=>Ne(t),{guard:$n}),z(`POST`,`/tasks/:id/cancel`,rr,{guard:S(),approvalPolicy:`allow`}),z(`POST`,`/tasks/:id/archive`,sr,{guard:S(),approvalPolicy:`allow`}),z(`GET`,`/events`,di,{approvalPolicy:`allow`})],zi=[z(`GET`,`/config`,nn),z(`PATCH`,`/config`,yn)],Bi=[z(`POST`,`/models/probe`,(e,t)=>gt(e,t)),z(`GET`,`/models`,lt,{approvalPolicy:`allow`}),z(`POST`,`/models`,ur),z(`DELETE`,`/models/:name`,E),z(`PATCH`,`/models/:name`,ye,{approvalPolicy:`ask`,change:`model-update`}),z(`POST`,`/models/:name/alias`,Ze,{approvalPolicy:`ask`,change:`model-alias`}),z(`POST`,`/models/:name/disable`,ft,{approvalPolicy:`ask`,change:`model-disable`}),z(`POST`,`/models/:name/enable`,Se,{approvalPolicy:`ask`,change:`model-enable`})],Vi=[z(`GET`,`/mcp-registry`,(e,t,n,r)=>wi(e,t,r))],Hi=H(`/operator`,[z(`GET`,`/apps`,ot),z(`POST`,`/apps/:integration`,me),z(`GET`,`/apps/:integration/drift`,ue),z(`POST`,`/apps/:integration/update`,Ue),z(`GET`,`/audit`,tr)],ct),Ui=[z(`GET`,`/flows`,w),z(`GET`,`/pulls`,ln),z(`POST`,`/flows/:name/run`,ze),z(`POST`,`/review`,Ie)],Wi=H(`/admin`,[...ji,...Mi,...Ni,...Pi,...Fi,...Ii,...Li,...Ri,...zi,...Bi,...Vi,...Ui,...Hi]).map(e=>({...e,guard:ie(e.guard,e)})),Gi=[z(`GET`,`/connections/oauth/callback`,(e,t,n,r)=>or(e,t,r),{guard:ce}),...Di,...Wi,...Ei,...Ai,...Ti];async function Ki(e,t,n){if(!Te(e,t))return p();let r=new URL(e.url);return n.scope instanceof Response?n.scope:(t=n.scope??t,await Wn(Gi,e,t,r)??k(e,t))}async function qi(e,t,n={}){t.limits??=new Cn((t.now??Date.now)()),t.limits.requests++,t.settings??={},t.taskWatcher??=new pi,t.logWatcher??=new hi,t.dashboardHosts??=new Pn;let r=()=>Ji(e,t,n);return t.dbProfile?t.dbProfile.request(n.inProcess===!0,r):r()}async function Ji(e,t,n){let r=await m(e,v(new URL(e.url).pathname));if(r instanceof Response)return r;let i=Ae(r,t,n.inProcess===!0),a=!1;try{let r=n.clientIp??`unknown`,o=await Rn(i.req,i.ctx,r),s=u(o instanceof Response?o:await Ki(i.req,i.ctx,o),i.cookies),c=new URL(e.url).pathname.split(`/`),l=c[1]===`tasks`,d=c[1]===`admin`&&c[2]===`tasks`;if(e.method!==`GET`&&s.ok&&![`hooks`,`tasks`,`logins`].includes(c[1])&&!(o instanceof Response)){let e=o.scope instanceof Response?void 0:o.scope??i.ctx;e&&Oe(e,e.organizationId)}return e.method!==`GET`&&s.ok&&!(l&&c.length===4&&c[2]&&[`heartbeat`,`logs`].includes(c[3]))&&!(d&&c.length===5&&c[3]&&[`steer`,`ask`,`approve`,`archive`].includes(c[4]))&&(l||d||c[1]===`admin`&&c[2]===`review`||c[1]===`admin`&&c[2]===`flows`&&c.length===5&&c[3]&&c[4]===`run`)&&Kt(t,d&&c.length===3&&e.method===`POST`),a=!!s.body&&(s.headers.get(`content-type`)??``).includes(`text/html`),a?f(s,i.end):s}finally{a||i.end()}}async function Yi(t={}){let n=t.env??K.env,r=y(n,t.host??`node`),i=t.runner??r.runner;if((t.host===`vercel`||n.VERCEL)&&(i===`local`||i===`local-docker`))throw new e(`invalid-option`,`The ${i} runner cannot run on Vercel.`,{hint:`Leave RUNNER unset to use vercel-sandbox.`});if(r.store===`memory`&&i!==`local`&&i!==`local-docker`)throw new e(`invalid-option`,`The ${i} runner needs a database.`,{hint:`Set DATABASE_URL, or use RUNNER=local for a memory server.`});if(!r.publicUrl)throw new e(`invalid-option`,`PUBLIC_URL is required to start a Coder server.`,{hint:`Set PUBLIC_URL to the address platforms and browsers use.`});let a=[];if(r.store===`memory`&&!t.local&&a.push(`test server, not for production: everything is in memory, nothing survives a restart, no sign-in; set DATABASE_URL for a real deployment`),!n.SERVER_ENCRYPTION_KEY&&!t.local&&a.push(`secrets are stored unencrypted; set SERVER_ENCRYPTION_KEY (openssl rand -base64 32)`),r.store===`postgres`&&!r.encryptionKey)throw new e(`invalid-option`,`SERVER_ENCRYPTION_KEY is required for a Postgres server.`,{hint:`Set SERVER_ENCRYPTION_KEY (openssl rand -base64 32); sign-in keys derive from it.`});let o=s(r.integrations),c=r.store===`memory`&&!r.adminToken?Er(18).toString(`base64url`):void 0;r.store===`postgres`&&r.adminToken&&a.push(`ADMIN_TOKEN is ignored with Postgres; owners and admins sign in with coder auth login`);let l={...r,...r.store===`postgres`?{adminToken:void 0}:{},...c?{adminToken:c}:{},...t.runner?{runner:t.runner}:{}},u=await pn(l,{local:!!t.local});try{l.store===`memory`&&await hr(u.store(u.defaultOrganizationId),Date.now());let r=u.connection&&l.auth?await(await import(`./auth-oCvlHitk.js`)).createAuth(u.connection.db,l):void 0,i=t.cwd??K.cwd(),s=u.store(u.defaultOrganizationId),d=pt({kind:l.runner,workDir:l.workDir,config:l.runnerConfig,local:!(t.host===`vercel`||n.VERCEL),sandbox:{region:ut(l.databaseUrl),snapshots:_t(s)}});if(!d[l.runner])throw await u.close(),new e(`invalid-option`,`Runner ${l.runner} is not configured.`,{hint:`Set RUNNER_CONFIG to JSON containing url and secret.`});let f=new Pn,p=new Cn,m=new Ci,h=new Map,g=new Map,_=new pi,v=new hi,y=e=>{let n=h.get(e);if(n)return n;let a=u.store(e),s=new Map,c={registry:m},b={limits:p,...u.connection?{databaseHealth:async()=>{let{sql:e}=await import(`./drizzle-orm-CYU7WOQS.js`).then(e=>e.t);await u.connection.db.execute(e`select 1`)},statementTimeout:u.connection.statementTimeout}:{},config:l,settings:c,organizationId:e,integrations:o,runners:d,store:a,queue:u.queue,requestScopes:g,taskWatcher:_,logWatcher:v,dashboardHosts:f,dbProfile:u.connection?.profile,chatState:u.chatState,fileReads:s,repositoryLists:new Map,loadAgent:Be(o,{...t.local?{cwd:i}:{},config:l,store:a,fileReads:s,settings:c}),...r?{auth:r}:{},scope:y,webhookTarget:(e,t)=>u.webhookTarget(e,t),appRecord:e=>u.appRecord(e),apps:e=>u.apps(e),installationOrganization:e=>u.installationOrganization(e),installations:e=>u.installations(e),serverOrganizationId:u.defaultOrganizationId,taskOrganization:(e,t)=>u.taskOrganization(e,t),...t.local?{local:t.local}:{}};return h.set(e,b),b};globalThis.__coder={handle:e=>qi(e,y(u.defaultOrganizationId),{inProcess:!0})};let b=y(u.defaultOrganizationId);b.local&&Sn(b).catch(()=>{});let x;return t.local&&(await Hn(b),x=setImmediate(()=>{Jn(b).catch(()=>void 0)})),{config:l,context:y,defaultContext:b,warnings:a,...c?{mintedToken:c}:{},sweep:u.sweep,close:async()=>{m.close(),_.close(),v.close(),x&&clearImmediate(x),await b.local?.usageSync?.catch(()=>void 0),await Rt(b),await u.close()}}}catch(e){throw await u.close(),e}}const $=36e5;function Xi(e){try{let t=new URL(e);return G.has(t.hostname)?Number(t.port||(t.protocol===`https:`?443:80)):void 0}catch{return}}function Zi(e=K.env,t=e.VERCEL?`vercel`:`node`){b();let n,r,i=()=>n??=Yi({env:e,host:t}).catch(e=>{throw n=void 0,e}),a=e=>Promise.all([e.sweep(),ee(e.defaultContext,!1,!0),qe(e.defaultContext)]).then(()=>void 0);return Object.assign(async(t,n)=>{let o=await i(),s=n?e=>n(e):e=>void e.catch(()=>{}),c=Date.now();(r===void 0||c-r>=$)&&(r=c,s(o.defaultContext.store.create(`delivery`,`maintenance:${o.config.publicUrl}`,{at:c},{ttlMs:$}).then(e=>e?a(o):void 0).catch(e=>console.error(`coder server: maintenance failed`,e))));let l=e=>({...o.context(e),waitUntil:s,scope:l});return qi(t,l(o.defaultContext.organizationId),{clientIp:e.VERCEL?t.headers.get(`x-forwarded-for`)?.split(`,`,1)[0]?.trim():void 0})},{scheduled:async()=>{let e=await i();await a(e)},close:async()=>{let e=n;n=void 0,r=void 0,await(await e)?.close()}})}function Qi(e){let t=wr(`lsof`,[`-nP`,`-iTCP:${e}`,`-sTCP:LISTEN`,`-t`],{encoding:`utf8`}),n=Number(t.stdout?.split(`
|
|
12
|
+
`)[0]);if(n)return{pid:n,command:wr(`ps`,[`-o`,`command=`,`-p`,String(n)],{encoding:`utf8`}).stdout?.trim().slice(0,120)||`another process`}}function $i(t){let n=Qi(t),r=n&&/\bcoder (dash|server serve)\b/.test(n.command);return new e(`server`,n?r?`Coder is already running on port ${t} (pid ${n.pid}): http://localhost:${t}`:`Port ${t} is in use by ${n.command} (pid ${n.pid}).`:`Port ${t} is in use.`,{hint:n?`Stop it with \`kill ${n.pid}\`, or use another port: --port ${t+1}`:`Use another port: --port ${t+1}`})}async function ea(n={}){b();let r=n.env??K.env;if(n.runner&&!re.includes(n.runner))throw new e(`invalid-option`,`Invalid --runner value: use ${re.join(`, `)}`);if(n.port!==void 0&&(!Number.isInteger(n.port)||n.port<1||n.port>65535))throw new e(`invalid-option`,`Invalid port: use 1 through 65535.`);let i=r.PORT&&/^\d+$/.test(r.PORT)?Number(r.PORT):void 0,a=Xi(r.PUBLIC_URL),o=n.port??i??a??8787;if(!Number.isInteger(o)||o<1||o>65535)throw new e(`invalid-option`,`Invalid PORT: use 1 through 65535.`);let s=r.PUBLIC_URL?r:{...r,PUBLIC_URL:`http://localhost:${o}`},c=!!(r.DATABASE_URL||r.POSTGRES_URL);if(c&&n.memory)throw new e(`invalid-option`,`A memory server cannot use DATABASE_URL.`,{hint:`Unset DATABASE_URL, or drop --memory.`});let l=(n.host??r.HOST??(c?void 0:`127.0.0.1`))?.replace(/^\[(.*)\]$/,`$1`),u=!c&&!n.memory;if(u&&!G.has(l))throw new e(`invalid-option`,`A local server listens on loopback only.`,{hint:`Reach it through a tunnel or a proxy on this machine; set DATABASE_URL for a deployment, or use --memory for a test server.`});if(n.memory&&r.VERCEL)throw new e(`invalid-option`,`A memory server cannot run on Vercel.`,{hint:`Set DATABASE_URL for a real deployment.`});let d,f,p=u?new Promise((e,n)=>{f=n,d=()=>{t().then(e,n)}}):void 0,m=p?.then(()=>void 0).catch(()=>void 0),h=u?{cwd:n.cwd??K.cwd(),port:o,cacheMaintenance:m}:void 0,g=await Yi({cwd:n.cwd,env:s,runner:n.runner,...h?{local:h}:{}}),v=g.defaultContext,y=()=>{g.sweep().catch(e=>console.error(`coder server: sweep failed`,e))};y();let x=setInterval(y,$);x.unref();let S=setInterval(()=>{ee(v,!1,!0).catch(e=>console.error(`coder server: scheduled kick failed`,e)),qe(v).catch(e=>console.error(`coder server: inbox flush failed`,e))},6e4);S.unref();let C=Or.createServer(_((e,t)=>qi(e,v,{clientIp:t}),{admit:e=>c||Je(e.socket.remoteAddress,e.url??`/`)})),te=g.config.publicUrl;a!==void 0&&a!==o&&g.warnings.push(`PUBLIC_URL points at port ${a} but the server listens on ${o}`),await new Promise((e,t)=>{C.once(`error`,t),C.listen(o,l,e)}).catch(async e=>{throw f?.(e),clearInterval(S),clearInterval(x),await g.close(),e.code===`EADDRINUSE`?$i(o):e}),d?.();let w=!1,ne=async()=>{w||(w=!0,clearInterval(S),clearInterval(x),v.taskWatcher?.close(),v.logWatcher?.close(),await new Promise((e,t)=>C.close(n=>n?t(n):e())),await m,await g.close())},T=v.auth?`Wular Auth (${v.auth.issuer})`:void 0,E=`http://localhost:${o}`,D=vt(v),ie=D===`local`?E:te,ae=g.config.store===`memory`?g.mintedToken??r.ADMIN_TOKEN:void 0;return{address:E,publicUrl:te,warnings:g.warnings,close:ne,runner:g.config.runner,store:g.config.store,mode:D,...p?{cacheMigration:p}:{},maxTasks:g.config.maxTasks??g.config.limits?.concurrentTasks??10,...T?{signIn:T}:{},...g.mintedToken?{mintedToken:g.mintedToken}:{},...g.config.store===`postgres`&&r.DATABASE_URL?{database:(await import(`./client-nBo9Mhsr.js`).then(e=>e.n)).describeDatabase(r.DATABASE_URL)}:{},...G.has(new URL(ie).hostname)?{dashboard:`${ie}/dash${ae?`#token=${encodeURIComponent(ae)}`:``}`}:{}}}async function ta(t={}){try{return await ea(t)}catch(t){if(t instanceof e)throw t;let n=t instanceof Error&&t.cause instanceof Error?`: ${t.cause.message}`:``;throw new e(`server`,`${t instanceof Error?t.message:String(t)}${n}`)}}export{ta as serve,Zi as serverHandler};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{Wi as e,gt as t}from"./args-CJsHYWbt.js";import{n,o as r,s as i,t as a}from"./emit-BgeqsCkC.js";import{a as o,i as s,l as c,n as l,r as u,s as d,u as f}from"./zod-_-snqfdO.js";import{randomUUID as p}from"node:crypto";const m=`2025-11-25`,h=[m,`2025-06-18`,`2025-03-26`,`2024-11-05`],g=(e,t,n)=>({jsonrpc:`2.0`,...e===void 0?{}:{id:e},error:{code:t,message:n}}),_=e=>{if(typeof e!=`object`||!e||Array.isArray(e))return!1;let{jsonrpc:t,method:n,id:r}=e;return t===`2.0`&&(n===void 0||typeof n==`string`)&&(r===void 0||typeof r==`string`||typeof r==`number`)},v=e=>{let t=e?.id;return typeof t==`string`||typeof t==`number`?t:void 0};function y(e){let t=new Map;return async({id:n,method:r,params:i={}},a=``)=>{if(r===void 0)return;if(n===void 0){r===`notifications/cancelled`&&t.get(a)?.get(i.requestId)?.abort();return}let o=t.get(a);o||t.set(a,o=new Map);let s=new AbortController;o.set(n,s);try{if(r===`initialize`){let t=i.protocolVersion;return{jsonrpc:`2.0`,id:n,result:{protocolVersion:h.includes(t)?t:m,capabilities:e.capabilities,serverInfo:e.info,...e.instructions?{instructions:e.instructions}:{}}}}let t=r===`ping`?()=>({}):Object.hasOwn(e.handlers,r)?e.handlers[r]:void 0;return t?{jsonrpc:`2.0`,id:n,result:await t(i,s.signal)}:g(n,-32601,`Method not found: ${r}`)}catch(e){let t=e.code;return g(n,typeof t==`number`?t:-32603,String(e?.message??e))}finally{o.delete(n),o.size||t.delete(a)}}}function b(e){let t=y(e),n=(e,t,n,r)=>{e.writeHead(t,{...n?{"content-type":`application/json`}:{},...r?{"mcp-session-id":r}:{},...t===405?{allow:`POST`}:{}}),e.end(n?JSON.stringify(n):void 0)},r=async(e,r)=>{if(e.method!==`POST`)return n(r,405);let{origin:i,host:a}=e.headers;if(i!==void 0&&i!==`http://${a}`)return n(r,403);let o=e.headers[`mcp-protocol-version`];if(typeof o==`string`&&!h.includes(o))return n(r,400,g(void 0,-32600,`Unsupported protocol version: ${o}`));let s=``;e.setEncoding(`utf8`);for await(let t of e)s+=t;let c;try{c=JSON.parse(s)}catch{return n(r,400,g(void 0,-32700,`Parse error`))}if(!_(c))return n(r,400,g(v(c),-32600,`Invalid request`));let l=c.method===`initialize`&&c.id!==void 0,u=e.headers[`mcp-session-id`],d=l?crypto.randomUUID():typeof u==`string`?u:``,f=await t(c,d).catch(()=>g(c.id,-32603,`Internal error`));if(!f)return n(r,202);n(r,200,f,l?d:void 0)};return(e,t)=>{r(e,t).catch(()=>t.destroy())}}function x(e){let t=y(e),n=e=>process.stdout.write(`${JSON.stringify(e)}\n`),r=new Promise(e=>process.stdin.once(`end`,e)),i=``,a=e=>{i+=e;for(let e=i.indexOf(`
|
|
2
|
+
`);e>=0;e=i.indexOf(`
|
|
3
|
+
`)){let r=i.slice(0,e).trim();if(i=i.slice(e+1),!r)continue;let a;try{a=JSON.parse(r)}catch{n(g(void 0,-32700,`Parse error`));continue}if(!_(a)){n(g(v(a),-32600,`Invalid request`));continue}let{id:o}=a;t(a).catch(()=>o===void 0?void 0:g(o,-32603,`Internal error`)).then(e=>e&&n(e))}};return process.stdin.setEncoding(`utf8`),process.stdin.on(`data`,a),{close:async()=>{process.stdin.off(`data`,a),process.stdin.pause()},done:r}}const S=e=>({type:`text`,text:e}),C=e=>({content:[S(e)],isError:!0}),w=e=>e.replace(/[^A-Za-z0-9_-]/g,`_`);function T(p){let{commands:m,skills:h}=a(p),g=new Map;for(let e of m)if(e.command.mcp!==!1){if(g.has(e.id))throw Error(`contextjsx: two commands have the tool id "${e.id}"`);g.set(e.id,e)}let _=new Map;for(let e of h){let{name:t}=r(e);if(_.has(t))throw Error(`contextjsx: two skills are named "${t}"`);_.set(t,e)}let v=new Map;for(let e of[...g.keys(),..._.size?[`load_skill`]:[]]){let t=v.get(w(e));if(t!==void 0)throw Error(`contextjsx: tools "${t}" and "${e}" both map to ${w(e)}`);v.set(w(e),e)}let y=d({content:u(f([d({type:o(`text`),text:c()}),d({type:l([`image`,`audio`]),data:c(),mimeType:c()}),d({type:o(`resource_link`),uri:c(),name:c()}),d({type:o(`resource`),resource:f([d({uri:c(),text:c()}),d({uri:c(),blob:c()})])})])),isError:s().optional()}),b=new Map,x=({id:e,command:n})=>{let r=b.get(e);return r||b.set(e,r=t(d(n.args??{}),{io:`input`})),r},T=[...(p.resources??[]).map(e=>({uri:e.uri,name:e.name??e.uri,description:e.description,mimeType:e.mimeType,read:()=>e.read()})),...[...g.values()].map(({id:e,path:t,command:r})=>({uri:`${p.name}://help/${e}`,name:`help ${t.join(` `)}`,description:r.description,mimeType:`text/plain`,read:()=>n(p,r)}))];return{info:{name:p.name,...p.title?{title:p.title}:{},version:p.version??`0`,description:p.description,...p.websiteUrl?{websiteUrl:p.websiteUrl}:{},...p.icons?.length?{icons:p.icons}:{}},instructions:i(p),capabilities:T.length?{tools:{},resources:{}}:{tools:{}},handlers:{"tools/list":()=>({tools:[...[...g.values()].map(e=>({name:e.id,description:(e.command.mcp||void 0)?.description??e.command.description,inputSchema:x(e),annotations:{readOnlyHint:e.command.access===`read`}})),..._.size?[{name:`load_skill`,description:`Load a skill named in the server instructions; returns its full text`,inputSchema:{type:`object`,properties:{name:{type:`string`,description:`skill name`}},required:[`name`]},annotations:{readOnlyHint:!0}}]:[]]}),"tools/call":async(t,n)=>{let i=t.name,a=t.arguments??{};if(i===`load_skill`&&_.size){let e=_.get(a.name);return e?{content:[S(r(e).text)]}:C([`Unknown skill ${JSON.stringify(a.name)}. Skills:`,...[..._].map(([e,t])=>`- ${JSON.stringify(e)}: ${r(t).description}`)].join(`
|
|
4
|
+
`))}let o=g.get(i);if(!o)throw Object.assign(Error(`Unknown tool ${i}`),{code:-32602});let{command:s}=o,c=d(s.args??{}).safeParse(a);if(!c.success)return C(`Invalid arguments for ${i}:\n${e(c.error)}\n\nSchema: ${JSON.stringify(x(o))}`);try{let e=await s.run(c.data,{signal:n});if(!(s.mcp||void 0)?.text&&y.safeParse(e).success)return e;let t=s.mcp&&s.mcp.text?s.mcp.text(e):typeof e==`string`?e:JSON.stringify(e)??``,r=s.next?.({result:e,args:c.data}).map(e=>`${e.usage} # ${e.blurb}`);return{content:[S(t),...r?.length?[S(r.join(`
|
|
5
|
+
`))]:[]]}}catch(e){return C(String(e?.message??e))}},"resources/list":()=>({resources:T.map(({uri:e,name:t,description:n,mimeType:r})=>({uri:e,name:t,description:n,...r?{mimeType:r}:{}}))}),"resources/read":async e=>{let t=T.find(t=>t.uri===e.uri);if(!t)throw Object.assign(Error(`Unknown resource ${e.uri}`),{code:-32002});return{contents:[{uri:t.uri,...t.mimeType?{mimeType:t.mimeType}:{},text:await t.read()}]}}}}}async function E(e,t){let n=T(e);if(t===`stdio`)return x(n);let r=`127.0.0.1`,i=p(),a=b(n),{createServer:o}=await import(`node:http`),s=o((t,n)=>{if(t.headers.authorization!==`Bearer ${i}`)return n.statusCode=401,n.end();if((t.url??`/`).split(`?`)[0]!==`/${e.name}`)return n.statusCode=404,n.end();a(t,n)});return await new Promise((e,n)=>{s.once(`error`,n),s.listen(t.http.port??0,r,()=>{s.off(`error`,n),e()})}),{url:`http://${r}:${s.address().port}/${e.name}`,token:i,close:()=>new Promise(e=>{s.closeAllConnections(),s.close(()=>e())})}}export{E as serve};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ea as e}from"./args-CJsHYWbt.js";import{t}from"./errors-DK_trCff.js";import{p as n,yt as r}from"./state-Br-Fuaxg.js";import{a as i,o as a}from"./http-615JJgHo.js";import o from"node:path";import s from"node:fs";import{createHash as c}from"node:crypto";var l=e({DEFAULT_SERVER:()=>m,isKnownServer:()=>_,rememberServer:()=>v,renewal:()=>S,resolveServer:()=>h,savedSession:()=>y,savedSessions:()=>d,sessionFile:()=>u,validateServer:()=>g,writeSessions:()=>b});function u(){return n(`session.json`)}function d(){try{let e=JSON.parse(s.readFileSync(u(),`utf8`));return Object.fromEntries(Object.entries(e).filter(e=>!!(e[1].token&&e[1].refreshToken&&e[1].user)))}catch{return{}}}function f(){try{return JSON.parse(s.readFileSync(u(),`utf8`))}catch{return{}}}const p=e=>e.replace(/\/+$/,``),m=`https://coder.wular.ai`,h=e=>p((e===!0?void 0:e)??process.env.CODER_SERVER??`https://coder.wular.ai`);function g(e){let t=h(e);return i()&&t===process.env.CODER_SERVER?t:a(t)}function _(e){let t=p(e),n=process.env.CODER_MCP_MODE===`cloud`&&process.env.CODER_SERVER;return t===`https://coder.wular.ai`||n&&t===p(n)||!!f()[t]}function v(e){let t=f(),n=p(e),r=t[n]??{};x({...t,[n]:{...r,confirmedAt:Date.now()}})}function y(e){return d()[p(e)]}function b(e){let t=f(),n=Object.fromEntries(Object.entries(t).map(([e,t])=>[e,{confirmedAt:t.confirmedAt??Date.now()}]));x(Object.fromEntries(Object.entries({...n,...e}).map(([e,n])=>[e,{...n,...t[e]?{confirmedAt:t[e].confirmedAt??Date.now()}:{}}])))}function x(e){let t=u();s.mkdirSync(o.dirname(t),{recursive:!0}),s.writeFileSync(t,`${JSON.stringify(e,null,2)}\n`,{mode:384}),s.chmodSync(t,384)}function S(e,t){let n=t,i;return{expiresAt:()=>n.expiresAt,async renew(){return i||=r(`${u()}.${c(`sha256`).update(e).digest(`hex`)}.lock`,()=>C(e,n)).finally(()=>{i=void 0}),n=await i,n.token}}}async function C(e,n){let r=e=>e&&e.refreshToken!==n.refreshToken?e:void 0,i=r(d()[e]);if(i&&i.expiresAt>n.expiresAt)return i;let{refreshSignIn:a}=await import(`./sign-in-wWkyaq5X.js`).then(e=>e.n),o=await a(e,n),s=d();if(o){let t={...n,...o};return b({...s,[e]:t}),t}let c=r(s[e]);if(c)return c;throw delete s[e],b(s),new t(`login-failed`,`Signed out of ${e}.`,{hint:`Sign in again: coder auth login`})}export{d as a,b as c,y as i,v as n,l as o,S as r,g as s,_ as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ea as e}from"./args-CJsHYWbt.js";import{g as t}from"./connections-Cswv7r8Z.js";import{a as n,x as r}from"./app-server-BTpa5GBV.js";import i from"node:path";import a from"node:fs";import{spawn as o,spawnSync as s}from"node:child_process";import c from"node:os";var l=e({archiveCodexSession:()=>p,codexHome:()=>u,deleteCodexSession:()=>g,isCodexSessionArchived:()=>m,unarchiveCodexSession:()=>h});function u(){return process.env.CODEX_HOME||i.join(c.homedir(),`.codex`)}async function d(e,i,a){for(let o of r(e)){let r=null;try{return r=await n.connect(e,{env:t(),brokerEndpoint:o.endpoint,networkAccess:o.networkAccess??!1,reuseExistingBroker:!0}),await r.request(i,{threadId:a}),!0}catch{}finally{await r?.close().catch(()=>{})}}return!1}function f(e){try{let n=o(`codex`,e,{detached:!0,stdio:`ignore`,env:t()});n.on(`error`,()=>{}),n.unref()}catch{}}async function p(e,t){await d(e,`thread/archive`,t)||f([`archive`,t])}function m(e){let t=i.join(u(),`archived_sessions`);try{return a.readdirSync(t).some(t=>t.endsWith(`-${e}.jsonl`))}catch{return!1}}function h(e){return new Promise(n=>{try{let r=o(`codex`,[`unarchive`,e],{stdio:`ignore`,env:t()});r.on(`error`,()=>n(!1)),r.on(`close`,e=>n(e===0))}catch{n(!1)}})}async function g(e,n){return await d(e,`thread/delete`,n)?!0:s(`codex`,[`delete`,`--force`,n],{encoding:`utf8`,env:t()}).status===0}export{h as a,l as i,g as n,m as r,u as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ea as e}from"./args-CJsHYWbt.js";import{K as t,_ as n,ht as r,p as i}from"./drizzle-orm-CYU7WOQS.js";import{agentVersion as a,integrationApp as o,integrationAppInstallation as s,s as c,secret as l}from"./schema.js";import{yt as u}from"./apps-B6mUToTa.js";import{t as d}from"./client-nBo9Mhsr.js";var f=e({UNSCOPED_ORGANIZATION:()=>``,addSecret:()=>j,agentValue:()=>C,app:()=>h,date:()=>v,defined:()=>b,dropSecrets:()=>N,escapeLike:()=>y,fromJson:()=>D,install:()=>g,ms:()=>_,opaque:()=>k,rows:()=>R,sealedParts:()=>A,setSecret:()=>M,splitKey:()=>m,stateKey:()=>L,statePrefix:()=>I,taskRecord:()=>O,usageRecord:()=>F,versionColumns:()=>T,versionSummary:()=>E,versionValue:()=>w,withSecret:()=>P});const p=``;function m(e){let t=e.lastIndexOf(`:`),n=e.slice(t+1);return t>0&&/^\d+$/.test(n)?[e.slice(0,t),Number(n)]:void 0}const h=o,g=s,_=e=>e.getTime(),v=e=>new Date(e),y=e=>e.replace(/[\\%_]/g,`\\$&`),b=e=>Object.fromEntries(Object.entries(e).filter(([,e])=>e!=null)),x=e=>e?_(e):void 0,S=(e,t)=>{let n=/^repo:([^@]+)@(.+)$/.exec(e);return n&&t?{repo:n[1],ref:n[2],commit:t}:void 0},C=e=>b({id:e.slug,name:e.name,description:e.description,problems:e.problems,source:e.source,repo:e.repo,path:e.path,currentVersion:e.currentVersion,settings:e.engineSettings,createdAt:_(e.createdAt),updatedAt:_(e.updatedAt)}),w=(e,t)=>b({agent:t,version:e.version,definition:e.definition,systemPrompt:e.systemPrompt,files:e.files,commit:e.commit,source:S(e.importedFrom,e.commit),importedFrom:e.importedFrom,createdAt:_(e.createdAt)}),T={id:a.id,agentId:a.agentId,version:a.version,definition:a.definition,commit:a.commit,importedFrom:a.importedFrom,createdAt:a.createdAt},E=(e,t)=>{let{systemPrompt:n,files:r,...i}=w({...e,systemPrompt:``,files:null},t);return i};function D(e,n){let r=new c(d);return Object.fromEntries(Object.entries(t(e)).map(([e,t])=>{let i=n[r.getColumnCasing(t)];return[e,i==null?null:t.mapFromDriverValue(i)]}))}function O(e){return b({task:b({id:e.publicId,source:e.source,agent:e.agent,flow:e.flow,runner:e.runnerKind,access:e.access,event:e.event,name:e.name,cwd:e.cwd,prompt:e.prompt,args:e.args,mcp:e.mcp,appendSystem:e.appendSystem,addDirs:e.addDirs,connections:e.connections,author:e.author,definition:e.definition,models:e.models,requestedBy:e.requestedBy,audience:e.audience,space:e.space,parent:e.parent,runnerId:e.runnerId,usage:e.engineSettings,tools:e.tools,context:e.context,files:e.files,failureReply:e.failureReply,notice:e.notice,taskUrl:e.taskUrl,settingsUrl:e.settingsUrl}),status:e.status,attempts:e.attempts,generation:e.generation,inboxSeq:e.inboxSeq,inboxAck:e.inboxAck<0?void 0:{generation:e.generation,seq:e.inboxAck},result:e.result,error:e.error,fallbacks:e.fallbacks,tokens:e.tokens,handle:e.handle,tokenHash:e.tokenHash,lastSeenAt:x(e.lastSeenAt),logCursor:e.logCursor??void 0,logSeq:e.logSeq??void 0,logBytes:e.logBytes??void 0,logsComplete:e.logsComplete,typingEnded:e.typingEnded,archivedAt:x(e.archivedAt),approval:e.approval,answer:Array.isArray(e.answer)?e.answer:void 0,createdAt:_(e.createdAt),startedAt:x(e.startedAt),finishedAt:x(e.finishedAt),cancelRequestedAt:x(e.cancelRequestedAt),updatedAt:_(e.updatedAt)})}function k(e){return e.iv===`plain`?`plain.${e.ciphertext}`:`${e.iv}.${e.tag}.${e.ciphertext}`}function A(e){if(e.startsWith(`plain.`))return{iv:`plain`,tag:``,ciphertext:e.slice(6)};let[t,n,r]=e.split(`.`);if(!t||!n||!r)throw Error(`Invalid encrypted secret`);return{iv:t,tag:n,ciphertext:r}}async function j(e,t){let[n]=await e.insert(l).values({value:t}).returning({id:l.id});return n.id}async function M(e,t,n){await e.update(l).set({value:n}).where(i(l.id,t))}async function N(e,t){let i=t.filter(e=>typeof e==`number`);i.length&&await e.delete(l).where(r`${n(l.id,i)} and not exists (select 1 from ${o} where ${o.credentialsSecretId} = ${l.id})`)}const P=(e,t)=>r`${e} || jsonb_strip_nulls(jsonb_build_object('secret', ${t}))`;function F(e,t){if(!(e.runnerMs===null||!e.finishedAt))return b({installationId:t,taskId:e.publicId,agent:e.agent,target:u({event:e.event??void 0,source:e.source}),engine:e.engine,model:e.model,credential:e.credential??`unknown`,runnerElapsedMs:e.runnerMs,tokens:e.usageTokens,at:_(e.finishedAt)})}const I=(e,t)=>`o:${JSON.stringify([e,t])}:`,L=(e,t,n)=>I(e,t)+n;async function R(e,t){let n=await e.execute(t);return Array.isArray(n)?n:n.rows}export{E as C,T as S,P as T,m as _,v as a,O as b,y as c,_ as d,k as f,f as g,M as h,h as i,D as l,A as m,j as n,b as o,R as p,C as r,N as s,p as t,g as u,L as v,w,F as x,I as y};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{Ea as e}from"./args-CJsHYWbt.js";import{t}from"./errors-DK_trCff.js";import{i as n}from"./prompt-CpwbsEWM.js";import{o as r}from"./remote-BbXx6S9P.js";import{a as i,c as a}from"./session-Dtje9y-r.js";import{_t as o,a as s,c,f as l,h as u,i as d,l as f,m as p,p as m,r as h,s as g,t as _,u as v,vt as y}from"./build-CmtlB7pX.js";import b from"node:process";import x from"node:http";var S=e({hasBrowser:()=>P,logoutSession:()=>I,refreshSignIn:()=>j,revokeSignIn:()=>M,selectLoginOrganization:()=>N,sessions:()=>L,signIn:()=>F});const C=`openid profile email offline_access organizations:read`,w=e=>`<!doctype html><meta charset="utf-8"><meta name="viewport" content="width=device-width"><title>Coder · ${e}</title>
|
|
2
|
+
<style>:root{color-scheme:light dark}body{margin:0;min-height:100vh;display:grid;place-items:center;font:15px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;background:light-dark(#fafafa,#111);color:light-dark(#111,#eee)}main{text-align:center;padding:32px}h1{margin:0 0 8px;font-size:20px}p{margin:0;opacity:.7}</style>
|
|
3
|
+
<main><h1>${e}</h1><p>You can close this tab and return to the terminal.</p></main>`,T=e=>`${e}/.well-known/oauth-cli-client.json`;async function E(e,n){let r=new URL(e).origin,i=await fetch(`${r}/.well-known/oauth-protected-resource`).catch(n=>{throw new t(`login-failed`,`No Coder server answers at ${e}: ${n.message}`)}),a=await i.json().catch(()=>({})),o=Array.isArray(a.authorization_servers)?a.authorization_servers[0]:void 0;if(!i.ok||a.resource!==r||typeof o!=`string`)throw new t(`login-failed`,`${e} does not offer sign-in.`,{hint:`Sign-in needs a Postgres-backed server; see coder docs self-host`});if(n!==void 0&&o!==n)throw new t(`login-failed`,`The server's sign-in issuer has changed. Sign in again before using this session.`);return{config:await c(new URL(o),T(e),void 0,_(),new URL(o).protocol===`http:`?{execute:[h]}:void 0).catch(e=>{throw new t(`login-failed`,`Wular Auth at ${o} did not answer: ${e.message}`)}),resource:r}}function D(e,n,r){let i=n.claims(),a=n.refresh_token??r?.refreshToken;if(!a)throw new t(`login-failed`,`Wular Auth returned no refresh token.`);return{token:n.access_token,refreshToken:a,expiresAt:Date.now()+(n.expires_in??600)*1e3,issuer:e.serverMetadata().issuer,user:i?{name:typeof i.name==`string`?i.name:``,email:typeof i.email==`string`?i.email:``}:r?.user??{name:``,email:``}}}const O=e=>new t(`login-failed`,e instanceof y||e instanceof o?e.error===`access_denied`?`Sign-in was denied in the browser.`:e.error_description??e.error:e instanceof Error?e.message:String(e));async function k(e,n){let{config:r,resource:i}=await E(e),a=l(),o=m(),c=x.createServer();await new Promise(e=>c.listen(0,`127.0.0.1`,e));let{port:u}=c.address(),f=`http://127.0.0.1:${u}/callback`;try{let e=new Promise((e,n)=>{let r=setTimeout(()=>n(new t(`login-failed`,`Sign-in timed out.`)),3e5);c.on(`request`,(t,n)=>{let i=new URL(t.url??`/`,f);if(i.pathname!==`/callback`||i.searchParams.get(`state`)!==o){n.writeHead(404).end();return}n.writeHead(200,{"content-type":`text/html; charset=utf-8`}).end(w(i.searchParams.has(`error`)?`Sign-in failed`:`Signed in`)),clearTimeout(r),e(i)})});return n(s(r,{redirect_uri:f,scope:C,resource:i,code_challenge:await g(a),code_challenge_method:`S256`,state:o}).href),D(r,await d(r,await e,{pkceCodeVerifier:a,expectedState:o},{resource:i}).catch(e=>{throw O(e)}))}finally{c.close(),c.closeAllConnections()}}async function A(e,t){let{config:n,resource:r}=await E(e);try{let e=await f(n,{scope:C,resource:r});return t(e.user_code,e.verification_uri_complete??e.verification_uri),D(n,await v(n,e,{resource:r}))}catch(e){throw O(e)}}async function j(e,n){let{config:r,resource:i}=await E(e,n.issuer);try{return D(r,await p(r,n.refreshToken,{resource:i}),n)}catch(e){if(e instanceof y&&(e.error===`invalid_grant`||e.error===`invalid_client`))return;throw new t(`server`,`Wular Auth did not refresh the session: ${e instanceof Error?e.message:String(e)}`)}}async function M(e,t){let{config:n}=await E(e,t.issuer);n.serverMetadata().revocation_endpoint&&await u(n,t.refreshToken,{token_type_hint:`refresh_token`})}async function N(e,n,r){if(!e.length)throw new t(`login-failed`,`This account belongs to no workspace.`);if(n){let r=e.find(e=>e.slug===n);if(!r)throw new t(`login-failed`,`You are not a member of workspace "${n}".`);return r}if(e.length<=1)return e[0];if(!r)throw new t(`login-failed`,`Choose a workspace for this server.`,{hint:`Pass --workspace <slug>.`});let i=await r(e);return e.find(e=>e.slug===i)}const P=()=>!b.env.SSH_CONNECTION&&(b.platform!==`linux`||!!(b.env.DISPLAY||b.env.WAYLAND_DISPLAY));async function F(e,r={}){let i=r.device?await A(e,r.onCode??(()=>{})):await k(e,r.open??n),a=await fetch(`${e}/me`,{headers:{authorization:`Bearer ${i.token}`}}).catch(n=>{throw new t(`login-failed`,`No Coder server answers at ${e}: ${n.message}`)}),o=await a.json().catch(()=>({}));if(!a.ok)throw new t(`login-failed`,`Signed in, but the server refused the token.`);let s=await N(o.organizations??[],r.organization,r.chooseOrganization);return{...i,...s?{organization:s}:{},at:Date.now()}}async function I(e){let n=i(),r=n[e];if(!r)throw new t(`login-failed`,`Not signed in to ${e}.`);return await M(e,r).catch(()=>void 0),delete n[e],a(n),{ok:!0,server:e}}const L={async login(e={}){let t=r(e),n=await F(t,e);return e.save!==!1&&a({...i(),[t]:n}),{...n,server:t}},logout:(e={})=>I(r(e)),status:()=>Object.fromEntries(Object.entries(i()).map(([e,t])=>[e,{user:t.user,organization:t.organization,at:t.at}]))};export{S as n,L as t};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import e from"node:path";import t from"node:fs";import{execFileSync as n}from"node:child_process";import r from"node:os";import{randomUUID as i}from"node:crypto";function a(t,n){if(!n)return``;if(!e.isAbsolute(n))return n;let r=e.relative(t,n);return r&&!r.startsWith(`..`)?r:n}function o(e){try{return JSON.parse(t.readFileSync(e,`utf8`))}catch{return null}}function s(n,r){t.mkdirSync(e.dirname(n),{recursive:!0});let a=`${n}.${process.pid}.${i()}.tmp`;try{t.writeFileSync(a,r,{encoding:`utf8`,flag:`wx`}),t.renameSync(a,n)}finally{t.rmSync(a,{force:!0})}}function c(e,t){s(e,`${JSON.stringify(t,null,2)}\n`)}function l(n,r){if(t.mkdirSync(e.dirname(r),{recursive:!0}),t.existsSync(r))throw Object.assign(Error(`Directory already exists: ${r}`),{code:`EEXIST`});try{t.renameSync(n,r);return}catch(e){if(e.code!==`EXDEV`)throw e}let a=`${r}.${process.pid}.${i()}.tmp`;try{t.cpSync(n,a,{recursive:!0,preserveTimestamps:!0,verbatimSymlinks:!0,errorOnExist:!0,force:!1}),t.renameSync(a,r),t.rmSync(n,{recursive:!0})}finally{t.rmSync(a,{recursive:!0,force:!0})}}async function u(n,r){if(await t.promises.mkdir(e.dirname(r),{recursive:!0}),await t.promises.lstat(r).catch(e=>{if(e.code!==`ENOENT`)throw e}))throw Object.assign(Error(`Directory already exists: ${r}`),{code:`EEXIST`});try{await t.promises.rename(n,r);return}catch(e){if(e.code!==`EXDEV`)throw e}let a=`${r}.${process.pid}.${i()}.tmp`;try{await t.promises.cp(n,a,{recursive:!0,preserveTimestamps:!0,verbatimSymlinks:!0,errorOnExist:!0,force:!1}),await t.promises.rename(a,r),await t.promises.rm(n,{recursive:!0})}finally{await t.promises.rm(a,{recursive:!0,force:!0})}}function d(e,n=0){let r=n,i=``;return()=>{let n;try{n=t.statSync(e).size}catch{return[]}if(n<r&&(r=0,i=``),n===r)return[];let a;try{a=t.openSync(e,`r`)}catch{return[]}try{let e=Buffer.alloc(n-r),o=t.readSync(a,e,0,e.length,r);r+=o;let s=(i+e.toString(`utf8`,0,o)).split(`
|
|
2
|
+
`);return i=s.pop()??``,s.filter(Boolean)}finally{t.closeSync(a)}}}function f(e,n){let r=!1,i=!1,a=new Set,o=()=>{r=!0;for(let e of[...a])e()},s=e?setImmediate(()=>{o(),n?.(null)}):void 0,c;try{e&&(c=t.watch(e,{persistent:!1},(e,t)=>{o(),n?.(t)})),c?.on(`error`,o)}catch{}return{notify:o,wait(e,t){return i||r||t?.aborted||e<=0?(r=!1,Promise.resolve()):new Promise(n=>{let i=()=>{clearTimeout(o),t?.removeEventListener(`abort`,i),a.delete(i),r=!1,n()},o=setTimeout(i,e);a.add(i),t?.addEventListener(`abort`,i,{once:!0})})},async until(e,t,n,r=3e4){let a=Date.now()+t;try{for(;;){let t=await e();if(t!==void 0||i||Date.now()>=a||n?.aborted)return t;await this.wait(Math.min(r,a-Date.now()),n)}}finally{this.close()}},close(){i=!0,clearImmediate(s),c?.close();for(let e of[...a])e()}}}async function p(n,r,a=3e4,o=1/0){t.mkdirSync(e.dirname(n),{recursive:!0});let s=t.mkdtempSync(`${n}-`),c=`${process.pid}-${i()}`;t.mkdirSync(e.join(s,c));let l=f(e.dirname(n)),u=Date.now()+o,d=!1,p;try{for(;!d;)try{if(t.existsSync(n))throw Object.assign(Error(`Lock is held`),{code:`EEXIST`});t.renameSync(s,n),d=!0}catch(r){if(![`EEXIST`,`ENOTEMPTY`,`ENOTDIR`].includes(r.code??``))throw r;try{let r=t.statSync(n).isFile(),i=r?[``]:t.readdirSync(n);for(let o of i){let i=r?n:e.join(n,o),s=Number(r?t.readFileSync(n,`utf8`):o.split(`-`)[0]),c=(!r||!s)&&Date.now()-t.statSync(i).mtimeMs>a;if(s)try{process.kill(s,0)}catch(e){c||=e.code===`ESRCH`}c&&(r?t.unlinkSync(i):t.rmdirSync(i))}!r&&(i.length||a===1/0||Date.now()-t.statSync(n).mtimeMs>a)&&t.rmdirSync(n)}catch{}if(Date.now()>=u)throw Error(`File lock wait timed out`);await l.wait(Math.min(200,a,u-Date.now()))}return p=setInterval(()=>{try{t.utimesSync(e.join(n,c),new Date,new Date)}catch{}},1e3),p.unref(),await r()}finally{if(l.close(),clearInterval(p),d){try{t.rmdirSync(e.join(n,c))}catch{}try{t.rmdirSync(n)}catch{}}else t.rmSync(s,{recursive:!0,force:!0})}}const ee={version:1,chain:[`codex/sol`,`claude/opus`],reviewModel:`codex/astra/medium`,models:{},network:{allowedHosts:[]}};function te(e,t){if(!t||typeof t!=`object`||Array.isArray(t))return t;let n=e&&typeof e==`object`&&!Array.isArray(e)?Object.fromEntries(Object.entries(e)):{};for(let[e,r]of Object.entries(t))r===null?delete n[e]:Object.defineProperty(n,e,{value:te(Object.hasOwn(n,e)?n[e]:void 0,r),writable:!0,enumerable:!0,configurable:!0});return n}const ne=`Background processes will not re-invoke you.`,re="Wait on each task with `coder task result <task-id> --wait` in its own background shell, one per task, never several tasks in one call, so each approval and answer reaches you.",ie=`Stopped by user.`,m=[`completed`,`failed`,`cancelled`],h=[`queued`,`running`],ae=`History lost, starting fresh`;function g(e){return/^[A-Z][A-Z0-9_]*$/.test(e)&&!/^(CODER_|CODEX_|LD_|DYLD_|GIT_|APP_TOKEN(?:_|$))/.test(e)&&![`PATH`,`HOME`,`SHELL`,`USER`,`PWD`,`TMPDIR`,`NODE_OPTIONS`,`NODE_PATH`,`BASH_ENV`,`ENV`,`OPENAI_API_KEY`,`ANTHROPIC_API_KEY`,`CLAUDE_CODE_OAUTH_TOKEN`,`CODEX_AUTH_JSON`,`CODEX_HOME`,`CLAUDE_CONFIG_DIR`,`OPENAI_BASE_URL`,`ANTHROPIC_BASE_URL`].includes(e)}function _(e=process.env){let t=JSON.parse(e.CODER_CONNECTION_ENV_VALUES??`{}`);return Object.fromEntries(Object.entries(t).filter(e=>g(e[0])&&typeof e[1]==`string`))}function v(){return Object.entries(process.env).filter(([e,t])=>/^CODER_CONNECTION_[A-F0-9]{24}$/.test(e)&&t).flatMap(([,e])=>[e,...e.startsWith(`Bearer `)?[e.slice(7)]:[]])}function y(e,t=[]){let n=Object.entries(_()).filter(([,e])=>e.length>=8).map(([e,t])=>[t,`[${e}]`]),r=[...t,...v()].filter(Boolean).map(e=>[e,`[REDACTED]`]),i=[...n,...r].sort(([e],[t])=>t.length-e.length);return JSON.stringify(e,(e,t)=>typeof t==`string`?i.reduce((e,[t,n])=>e.replaceAll(t,n),t):t)}const oe=/^[a-z0-9][a-z0-9_-]*$/i;function b(e){return oe.test(e)}function x(e,t){if(!b(e))throw Error(`Invalid ${t} "${e}".`)}function S(...t){return e.join(e.resolve(process.env.CODER_HOME||e.join(r.homedir(),`.coder`)),...t)}function C(...t){let n=r.homedir(),i=r.platform(),a=process.env.CODER_CACHE_HOME||(i===`darwin`?e.join(n,`Library`,`Caches`,`wular-coder`):i===`win32`?e.join(process.env.LOCALAPPDATA||e.join(n,`AppData`,`Local`),`wular-coder`,`cache`):e.join(process.env.XDG_CACHE_HOME||e.join(n,`.cache`),`wular-coder`));return e.join(e.resolve(a),...t)}function se(){return S(`state`,`global`,`flows`)}function ce(){return C(`flows-archived`)}function w(){return C(`usage.json`)}function le(e=w()){return`${e}.${process.pid}.${i()}.tmp`}function ue(){return C(`runner`,`usage.json`)}function de(e){try{return n(`git`,[`rev-parse`,`--show-toplevel`],{cwd:e,encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()}catch{return e}}const T=`global`;function E(e){return S(`state`,T)}function D(t){return e.join(E(t),`jobs`)}function fe(){return S(`state`,T,`server-tasks`)}const O=18e5,k=(e,t=Date.now())=>t-e>O;function A(e){return C(`archive`)}function j(n){return x(n,`task id`),e.join(t.realpathSync(r.tmpdir()),`coder`,n)}function M(n,r){x(r,`task id`);let i=e.join(D(n),r);if(t.existsSync(e.join(i,`job.json`)))return i;let a=e.join(A(n),r);return t.existsSync(e.join(a,`job.json`))?a:i}function N(t,n,r={}){let i=h.includes(n.status);if(!i){let r=M(t,n.id),i=e.join(A(t),n.id);r!==i&&l(r,i)}let a=n.archived?r.auto||!n.autoArchived?n:I(t,n.id,{autoArchived:void 0}):I(t,n.id,{archived:!0,archivedAt:new Date().toISOString(),...r.auto?{autoArchived:!0}:{}},{touch:!r.auto});return!i&&n.engine!==`claude`&&n.threadId&&import(`./sessions-DIz9fyRN.js`).then(e=>e.i).then(({archiveCodexSession:e})=>e(t,n.threadId)),a}function P(e){return!!e.archived&&(e.resumedAt??``)>(e.archivedAt??``)}function F(t,n){let r=M(t,n.id),i=e.join(D(t),n.id);return r!==i&&l(r,i),I(t,n.id,{archived:void 0,archivedAt:void 0,autoArchived:void 0})}function pe(){let e=Math.random().toString(36).slice(2,8);return`task-${Date.now().toString(36)}-${e}`}function I(n,r,i,a={}){let o=M(n,r);t.mkdirSync(o,{recursive:!0});let c=e.join(o,`job.json`),l=L(n,r)??{id:r,createdAt:new Date().toISOString(),status:`queued`},u={...l,...i,updatedAt:a.touch===!1?l.updatedAt:new Date().toISOString()};return s(c,`${y(u)}\n`),u}function L(n,r){if(!b(r))return null;let i=e.join(M(n,r),`job.json`);if(!t.existsSync(i))return null;try{return JSON.parse(t.readFileSync(i,`utf8`))}catch{return null}}function me(e,n){let r=M(e,n);return t.existsSync(r)?(t.rmSync(r,{recursive:!0,force:!0}),t.rmSync(j(n),{recursive:!0,force:!0}),!0):!1}function R(e){if(!e)return!1;try{return process.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function z(e){try{let t=n(`ps`,[`-o`,`lstart=`,`-p`,String(e)],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`],env:{...process.env,TZ:Intl.DateTimeFormat().resolvedOptions().timeZone}}).trim(),r=t?Date.parse(t):NaN;return Number.isFinite(r)?r:null}catch{return null}}function B(e,t,n=z){if(!R(e))return!1;let r=n(e),i=Date.parse(t.resumedAt??t.createdAt??``);return r===null||!Number.isFinite(i)||r<=i+6e4}const V=6e4;function H(e,t,n=z){let r=t.status===`running`||t.status===`queued`,i=t.status===`completed`&&J(e,t.id);if(!r&&!i)return t;let a;if(i&&(t.steerClosed||!t.pid&&!t.resumeOwner))a=!0;else if(t.resumeOwner){let e=Date.parse(t.resumedAt??t.updatedAt??t.createdAt);a=!R(t.resumeOwner)||Number.isFinite(e)&&Date.now()-e>V}else if(t.pid)a=!B(t.pid,t,n);else{let e=Date.parse(t.updatedAt??t.createdAt??``);a=Number.isFinite(e)&&Date.now()-e>V}if(a){let r=L(e,t.id);return r&&(r.status!==t.status||r.updatedAt!==t.updatedAt)?H(e,r,n):I(e,t.id,{status:`failed`,steerClosed:!0,resumeOwner:void 0,error:`worker exited without finishing`,completedAt:new Date().toISOString()})}return i?{...t,status:`running`}:t}function he(e){try{return t.readdirSync(e)}catch{return[]}}function U(n,r=new Set){return he(n).flatMap(i=>{if(r.has(i))return[];try{let a=JSON.parse(t.readFileSync(e.join(n,i,`job.json`),`utf8`));return r.add(i),[a]}catch{return[]}})}async function*ge(n){let r=[{dir:D(n),archived:!1},{dir:A(n),archived:!0}];for(let{dir:n,archived:i}of r){let r=await t.promises.readdir(n,{withFileTypes:!0}).catch(()=>[]);for(let t of r)t.isDirectory()&&b(t.name)&&(yield{id:t.name,dir:e.join(n,t.name),archived:i})}}const W=(e,t)=>String(t.updatedAt??``).localeCompare(String(e.updatedAt??``));function G(){let e=new Map,t=Date.now()+3e4;return n=>(Date.now()>=t&&(e.clear(),t=Date.now()+3e4),e.has(n)||e.set(n,z(n)),e.get(n))}function _e(e){let t=G(),n=[];for(let r of U(D(e))){let i=H(e,r,t);i.archived&&!P(i)?N(e,i,{auto:!0}):n.push(i.archived?F(e,i):i)}return n.sort(W)}function ve(e,t,n=!1){if(t.status===`queued`)return!0;let r=t.generation??0;if(n&&!r)return!1;let i=L(e,t.task.id);return i?r?t.startedAt===void 0||(Date.parse(i.resumedAt??``)||0)<t.startedAt:!1:!0}function ye(t){let n=o(e.join(E(t),`runner`,`task.json`))??{},r=e=>e===void 0?void 0:new Date(e).toISOString();return Object.values(n).map(({value:e})=>e).filter(e=>ve(t,e)).map(e=>{let t=e.status===`waiting`?`running`:e.status,n=e.archivedAt??(m.includes(t)&&k(e.finishedAt??e.updatedAt)?e.finishedAt??e.updatedAt:void 0);return{id:e.task.id,status:t,...e.task.name?{name:e.task.name}:{},...e.task.prompt?{prompt:e.task.prompt}:{},...e.task.cwd?{cwd:e.task.cwd}:{},...e.task.agent?{agentId:e.task.agent}:{},source:e.task.source??`dashboard`,...e.error?{error:e.error}:{},createdAt:r(e.createdAt),updatedAt:r(e.updatedAt),...e.finishedAt?{completedAt:r(e.finishedAt)}:{},...n===void 0?{}:{archived:!0,archivedAt:r(n)}}})}function be(e,t){let n=G(),r=t?.migrate??!0,i=new Set,a=[];for(let t of U(A(e),i))P(t)?r&&F(e,H(e,t,n)):a.push(H(e,t,n));for(let t of U(D(e),i))if(t.archived&&!P(t)){let i=H(e,t,n);a.push(r?N(e,i,{auto:!0}):i)}return a.sort(W)}function xe(e,t){if(!t){let t=be(e);return[..._e(e),...t].sort(W)[0]??null}let n=t=>{let n=H(e,t);return P(n)?F(e,n):n},r=L(e,t);if(r)return n(r);if(!b(t))return null;let i=[...new Set([D(e),A(e)].flatMap(e=>he(e).filter(e=>e.startsWith(t))))].flatMap(t=>{let n=L(e,t);return n?[n]:[]});if(i.length>1)throw Error(`Task reference "${t}" is ambiguous. Use a longer id.`);return i[0]?n(i[0]):null}function Se(n,r){let i=M(n,r);try{t.mkdirSync(i,{recursive:!0}),t.writeFileSync(e.join(i,`heartbeat`),``,`utf8`)}catch{}}function Ce(n,r){let i=M(n,r.id),a=Date.parse(r.updatedAt??``)||0;for(let n of[`log.jsonl`,`heartbeat`])try{a=Math.max(a,t.statSync(e.join(i,n)).mtimeMs)}catch{}return a?new Date(a).toISOString():void 0}const K=`steer-queue.jsonl`,q=`steer-pending`;function we(t,n,r){return x(n,`task id`),p(e.join(E(t),`steer`,`${n}.lock`),r)}const Te=`steer-claimed.jsonl`,Ee=e=>t.existsSync(e)?t.readFileSync(e,`utf8`).split(/\r?\n/).filter(Boolean).flatMap(e=>{try{let t=JSON.parse(e).key;return typeof t==`string`?[t]:[]}catch{return[]}}):[];function De(t,n,r){let i=M(t,n);return[K,Te].some(t=>Ee(e.join(i,t)).includes(r))}function Oe(n,r,i,a){if(a&&De(n,r,a))return!1;let o=M(n,r);return t.mkdirSync(o,{recursive:!0}),t.appendFileSync(e.join(o,K),`${JSON.stringify({at:new Date().toISOString(),text:i,...a?{key:a}:{}})}\n`,`utf8`),t.writeFileSync(e.join(o,q),``),!0}function ke(e,t){return t.status===`completed`&&t.steerClosed===!1&&!!t.pid&&B(t.pid,t)&&J(e,t.id)}function Ae(n,r){return t.existsSync(e.join(M(n,r),K))}function J(n,r){return Ae(n,r)||t.existsSync(e.join(M(n,r),q))}function je(n,r){t.rmSync(e.join(M(n,r),q),{force:!0})}function Me(n,r){let i=M(n,r),a=e.join(i,K);if(!t.existsSync(a))return[];t.writeFileSync(e.join(i,q),``);let o=e.join(i,`steer-claim-${process.pid}-${Date.now()}.tmp`);try{t.renameSync(a,o)}catch{return[]}try{let n=t.readFileSync(o,`utf8`).split(/\r?\n/).filter(Boolean).flatMap(e=>{try{return[JSON.parse(e)]}catch{return[]}}),r=n.filter(e=>typeof e.key==`string`);return r.length&&t.appendFileSync(e.join(i,Te),r.map(e=>`${JSON.stringify({key:e.key})}\n`).join(``),`utf8`),n.map(e=>String(e.text??``)).filter(Boolean)}finally{try{t.unlinkSync(o)}catch{}}}function Ne(e,t,n){Pe(M(e,t),n)}function Pe(n,r){t.mkdirSync(n,{recursive:!0}),t.appendFileSync(e.join(n,`log.jsonl`),`${y({at:new Date().toISOString(),...r})}\n`,`utf8`)}const Fe=`Steer accepted live:
|
|
3
|
+
`;function Ie(e,t,n){let r=f(M(e,t));return n?.on(`message`,r.notify),n?.on(`exit`,r.notify),n?.on(`error`,r.notify),{wait:r.wait,close(){n?.off(`message`,r.notify),n?.off(`exit`,r.notify),n?.off(`error`,r.notify),r.close()}}}function Le(n,r){let i=e.join(M(n,r),`results.jsonl`);return t.existsSync(i)?t.readFileSync(i,`utf8`).split(`
|
|
4
|
+
`).flatMap(e=>{try{return[JSON.parse(e)]}catch{return[]}}):[]}function Re(e,t){if(t<=0)return[];let n=0;for(let r=e.length-1;r>=0;--r)if(e[r]?.kind!==`usage`&&(n+=1)===t)return e.slice(r);return e}function ze(n,r,i=40){if(i<=0)return[];let a=e.join(M(n,r),`log.jsonl`),o;try{o=t.openSync(a,`r`)}catch(e){if(e.code===`ENOENT`)return[];throw e}try{let e=t.fstatSync(o).size,n=Math.min(e,65536);for(;;){let r=e-n,a=Buffer.alloc(n),s=t.readSync(o,a,0,n,r),c=a.toString(`utf8`,0,s),l=(r?c.slice(c.indexOf(`
|
|
5
|
+
`)+1):c).split(/\r?\n/).filter(Boolean);if(r===0||c.includes(`
|
|
6
|
+
`)&&l.length>=i)return l.slice(-i).map(e=>{try{return JSON.parse(e)}catch{return{message:e}}});n=Math.min(e,n*2)}}finally{t.closeSync(o)}}function Be(e){return[e.engine??`-`,e.model,e.model?e.effort:null].filter(Boolean).join(`/`)}function Ve(e){let t=Date.parse(e??``);return Number.isFinite(t)?Math.max(0,Date.now()-t):0}const He=6e5;async function Y(e){try{return await t.promises.readdir(e,{withFileTypes:!0})}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function X(e){try{return await t.promises.lstat(e),!0}catch(e){if(e.code===`ENOENT`)return!1;throw e}}async function Z(n,r){if(n===r||!await X(n))return 0;let i=await Y(n),a=i.filter(e=>e.isDirectory()).length;if(!await X(r))return await u(n,r),a;for(let t of i)await u(e.join(n,t.name),e.join(r,t.name));return await t.promises.rmdir(n),a}async function Q(n){let r=e.dirname(n),i=e.basename(n);for(let n of await Y(r)){let a=n.name.startsWith(i)?n.name.slice(i.length):``;if(!n.isFile()||!(a===`.tmp`||/^\.\d+(?:\.[a-f0-9-]{36})?\.tmp$/.test(a)))continue;let o=Number(n.name.slice(i.length+1).split(`.`)[0]);if(Number.isInteger(o)&&o>0)try{process.kill(o,0);continue}catch(e){if(e.code!==`ESRCH`)continue}await t.promises.unlink(e.join(r,n.name)).catch(e=>{if(e.code!==`ENOENT`)throw e})}}async function $(e,n){if(await Q(e),e===n||!await X(e))return 0;if(!await X(n))return await u(e,n),1;let r=JSON.parse(await t.promises.readFile(e,`utf8`)),a=JSON.parse(await t.promises.readFile(n,`utf8`)),o={...r,...a,...r.rows||a.rows?{rows:{...r.rows,...a.rows}}:{}},s=`${n}.${process.pid}.${i()}.tmp`;try{await t.promises.writeFile(s,`${JSON.stringify(o)}\n`,{mode:384,flag:`wx`}),await t.promises.rename(s,n),await t.promises.unlink(e)}finally{await t.promises.rm(s,{force:!0})}return 1}async function Ue(){let e=C(),t=S(`state`),n=C(`archive`),r=C(`flows-archived`),i=C(`usage.json`),a=C(`runner`,`usage.json`),o={from:S(`checkouts`),to:C(`checkouts`)},s={from:S(`update-check.json`),to:C(`update-check.json`)},c={cache:e,tasks:0,flows:0,files:0},l=(await Y(t)).filter(e=>e.isDirectory()).map(e=>({archive:S(`state`,e.name,`archive`),flows:S(`state`,e.name,`flows-archived`),usage:S(`state`,e.name,`usage.json`),runnerUsage:S(`state`,e.name,`runner`,`usage.json`)}));await Q(i),await Q(a);for(let e of l)c.tasks+=await Z(e.archive,n),c.flows+=await Z(e.flows,r),c.files+=await $(e.usage,i),c.files+=await $(e.runnerUsage,a);return await Z(o.from,o.to),c.files+=await $(s.from,s.to),c}export{Ie as $,ye as A,E as B,be as C,B as D,Ue as E,me as F,j as G,w as H,A as I,Re as J,fe as K,ce as L,ze as M,Le as N,z as O,H as P,F as Q,se as R,Ce as S,L as T,le as U,M as V,de as W,Se as X,ge as Y,ke as Z,pe as _,a as _t,Pe as a,v as at,R as b,c as bt,N as c,ae as ct,je as d,ie as dt,we as et,C as f,m as ft,Be as g,o as gt,xe as h,l as ht,Ve as i,y as it,ve as j,G as k,x as l,ne as lt,Oe as m,d as mt,Fe as n,g as nt,Ne as o,h as ot,S as p,te as pt,De as q,He as r,_ as rt,k as s,ee as st,O as t,I as tt,Me as u,re as ut,J as v,f as vt,_e as w,b as x,Ae as y,p as yt,ue as z};
|