@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/docs/self-host.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Running a Coder server with its database, sign-in, apps and runners.
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
# Self-hosting
|
|
2
6
|
|
|
3
|
-
|
|
7
|
+
A self-hosted Coder server holds the agents and their platform apps, every task with its output, and the dashboard. Platforms deliver events to it, runners report back to it, and the CLI and SDK reach it with `--server`. The hosted service at `coder.wular.ai` is the default.
|
|
4
8
|
|
|
5
9
|
## Deploy
|
|
6
10
|
|
|
@@ -8,42 +12,42 @@ One server, one database, any number of agents, running on Bun. The server is co
|
|
|
8
12
|
|
|
9
13
|
Required variables carry a *.
|
|
10
14
|
|
|
11
|
-
| Variable
|
|
12
|
-
|
|
|
13
|
-
| `PUBLIC_URL`<sup><b>*</b></sup>
|
|
14
|
-
| `DATABASE_URL` or `POSTGRES_URL`
|
|
15
|
-
| `SERVER_ENCRYPTION_KEY`<sup><b>*</b></sup> | base64 32 bytes
|
|
16
|
-
| `AUTH_WULAR_URL`
|
|
17
|
-
| `RUNNER`
|
|
18
|
-
| `RUNNER_CONFIG`
|
|
19
|
-
| `SERVER_ENCRYPTION_KEY_PREVIOUS`
|
|
20
|
-
| `PORT`
|
|
21
|
-
| `HOST`
|
|
22
|
-
| `ADMIN_TOKEN`
|
|
23
|
-
| `CODER_CACHE_HOME`
|
|
24
|
-
| `WORK_DIR`
|
|
25
|
-
| `SERVER_NAME`
|
|
26
|
-
| `ISSUES_URL`
|
|
27
|
-
| `SERVER_LIMITS`
|
|
28
|
-
| `CLAUDE_SUBSCRIPTIONS`
|
|
29
|
-
| `CODEX_SUBSCRIPTIONS`
|
|
30
|
-
| `MAX_TASKS`
|
|
31
|
-
| `MAX_QUEUED`
|
|
32
|
-
| `TASK_TIMEOUT`
|
|
33
|
-
| `TASK_STALL`
|
|
34
|
-
| `TASK_ATTEMPTS`
|
|
35
|
-
| `SERVER_INTEGRATIONS`
|
|
36
|
-
| `SERVER_OPERATORS`
|
|
15
|
+
| Variable | Type | Default | Purpose |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| `PUBLIC_URL`<sup><b>*</b></sup> | url without a path | | The address platforms and browsers reach the server at. Written into every app as its webhook and callback address, and the only origin sign-in trusts. Inferred on Vercel; `serve` defaults to `http://localhost:<port>` |
|
|
18
|
+
| `DATABASE_URL` or `POSTGRES_URL` | url | | Postgres. Everything lives in a `coder` schema, so the database can be shared with other apps. Run the database setup command below before the first start and after upgrades. Without it `coder server serve` runs the local dashboard; `--memory` selects a throwaway test server. Statements are prepared on each connection, so a query costs one round trip; add `?prepare=false` to the URL for a pooler that cannot keep prepared statements |
|
|
19
|
+
| `SERVER_ENCRYPTION_KEY`<sup><b>*</b></sup> | base64 32 bytes | | Encrypts app keys, tokens, and engine credentials at rest (`openssl rand -base64 32`), and derives the session cookie key and the sign-in client key with HKDF. Required with Postgres |
|
|
20
|
+
| `AUTH_WULAR_URL` | url | `https://auth.wular.ai` | Wular Auth OpenID issuer, the only identity provider, including for a self-hosted Wular Auth deployment |
|
|
21
|
+
| `RUNNER` | `local` \| `local-docker` \| `vercel-sandbox` \| `github-actions` \| `http` | `local`, `vercel-sandbox` on Vercel | Where tasks execute. `local` and `local-docker` run them on the server's own machine and work with the memory store, and are refused on Vercel. The other three run them elsewhere and need Postgres. Members' own machines add to this ([Runners](runners.md)) |
|
|
22
|
+
| `RUNNER_CONFIG` | JSON | `{}` | Options for the chosen runner ([Runners](#runners)). Required for `http` and `github-actions` |
|
|
23
|
+
| `SERVER_ENCRYPTION_KEY_PREVIOUS` | base64 32 bytes | | The old key, accepted until `coder server rotate-key` has re-sealed everything. While set, its sign-in key stays published and its session cookies still open, so rotation keeps everyone signed in |
|
|
24
|
+
| `PORT` | number | `8787`, or the port of a localhost `PUBLIC_URL` | Listen port |
|
|
25
|
+
| `HOST` | address | `127.0.0.1` without a database, else all | Listen address. A local server listens on loopback only ([Modes](#modes)) |
|
|
26
|
+
| `ADMIN_TOKEN` | string | minted and printed per run | Local and memory servers. The bearer the CLI and dashboard use, accepted from loopback only. Ignored with Postgres |
|
|
27
|
+
| `CODER_CACHE_HOME` | path | OS cache directory for `wular-coder` | Archived tasks, flows and usage |
|
|
28
|
+
| `WORK_DIR` | path | `~/.coder/state/global/server-tasks` | Where the local runner keeps each task's work folder: its working directory, or its checkout with a repository. The folder stays across turns and goes with `task delete` |
|
|
29
|
+
| `SERVER_NAME` | string | `Coder` | What the dashboard calls this server, in its sidebar server menu |
|
|
30
|
+
| `ISSUES_URL` | URL | `https://github.com/muzam1l/coder/issues/new` | Where the dashboard sends bug reports from its Report issue button |
|
|
31
|
+
| `SERVER_LIMITS` | JSON | `{}` | Request rates and task slots ([Limits and monitoring](#limits-and-monitoring)) |
|
|
32
|
+
| `CLAUDE_SUBSCRIPTIONS` | `1` | off | Offer **[Sign in with Claude]** for personal credentials |
|
|
33
|
+
| `CODEX_SUBSCRIPTIONS` | `1` | off | Offer **[Sign in with Codex]** for personal credentials |
|
|
34
|
+
| `MAX_TASKS` | number | unset | Optional deployment-wide runner slot cap, in addition to `limits.concurrentTasks` |
|
|
35
|
+
| `MAX_QUEUED` | number | `1000` | Tasks a workspace may have waiting |
|
|
36
|
+
| `TASK_TIMEOUT` | ms | `1800000` (30 minutes) | Longest a task may run |
|
|
37
|
+
| `TASK_STALL` | ms | `300000` (5 minutes) | Silence before the runner is asked whether the task is still alive |
|
|
38
|
+
| `TASK_ATTEMPTS` | number | `2` | Times a runner start is retried |
|
|
39
|
+
| `SERVER_INTEGRATIONS` | comma-separated ids | every platform | The platforms this server offers, from `github`, `slack` and `linear`. Others get no webhook, catalog entry or app creation. An unknown id stops the server |
|
|
40
|
+
| `SERVER_OPERATORS` | comma-separated Wular Auth user ids | none | Postgres servers. Who may open the operator area. Only this variable grants it |
|
|
37
41
|
|
|
38
42
|
Settings, sign-in, pairings and live tasks live in ~/.coder (CODER_HOME). Archived tasks, flows and usage live in the OS cache directory, ~/Library/Caches/wular-coder on macOS, ~/.cache/wular-coder on Linux (CODER_CACHE_HOME overrides). Nothing is ever pruned.
|
|
39
43
|
|
|
40
44
|
### Modes
|
|
41
45
|
|
|
42
|
-
| Started with
|
|
43
|
-
|
|
|
44
|
-
| `DATABASE_URL` | Cloud: sign-in with Wular Auth, workspaces, Postgres
|
|
45
|
-
| `--memory`
|
|
46
|
-
| neither
|
|
46
|
+
| Started with | Mode |
|
|
47
|
+
| --- | --- |
|
|
48
|
+
| `DATABASE_URL` | Cloud: sign-in with Wular Auth, workspaces, Postgres |
|
|
49
|
+
| `--memory` | Test server: everything in memory, the admin token, and a "not for production" warning |
|
|
50
|
+
| neither | Local: the [dashboard](dash.md) for this machine's CLI, on loopback only |
|
|
47
51
|
|
|
48
52
|
A memory server refuses to start on Vercel. Without a database, a connection from another machine reaches only the platform endpoints (`/hooks/`, `/create/`, `/install/`, `/connect/`), so `--host 0.0.0.0` lets platforms reach a memory server directly while the dashboard and `/admin` stay on this machine.
|
|
49
53
|
|
|
@@ -74,7 +78,7 @@ Completed tasks, their logs and usage remain until a task is explicitly deleted.
|
|
|
74
78
|
|
|
75
79
|
Before the first start and each upgrade, set `DATABASE_URL` and run `npx --yes --package=drizzle-kit@0.31.11 --package=drizzle-orm@0.45.2 --package=postgres@3.4.9 drizzle-kit push --config=./node_modules/@wular/coder/dist/schema.config.js` from the directory where Coder is installed. Run it as a deploy step for serverless hosts.
|
|
76
80
|
|
|
77
|
-
###
|
|
81
|
+
### A plain host
|
|
78
82
|
|
|
79
83
|
Install Bun and `@wular/coder`, set the variables above, set up the database as above, then run `coder server serve`. The command starts the server under Bun, listens on `PORT` (default 8787), and answers `/health`. Keep it alive with whatever supervises processes on that host. It listens on every interface, as containers and load balancers need; behind a proxy on the same machine, `--host 127.0.0.1` keeps it private. From code, `server.serve()` and `server.rotateKey()` do the same.
|
|
80
84
|
|
|
@@ -84,13 +88,13 @@ Open `PUBLIC_URL` and sign in with Wular Auth. Workspaces and roles come from Wu
|
|
|
84
88
|
|
|
85
89
|
Add an engine [credential](#credentials), or the first task will only reply with a link asking for one.
|
|
86
90
|
|
|
87
|
-
Create the built-in agent's apps once per server with `coder server app create <integration>`, such as `github` or `linear`, run where the server's `DATABASE_URL` and `PUBLIC_URL` are set. Each opens a one-time page that posts the app's manifest to the platform; `--org <org>` creates the GitHub App under an organization
|
|
91
|
+
Create the built-in agent's apps once per server with `coder server app create <integration>`, such as `github` or `linear`, run where the server's `DATABASE_URL` and `PUBLIC_URL` are set. Each opens a one-time page that posts the app's manifest to the platform; `--org <org>` creates the GitHub App under an organization the caller administers. These apps are public and shared by every workspace, and the app's credentials go straight to the server. Linear apps need public distribution turned on before other workspaces can add them.
|
|
88
92
|
|
|
89
93
|
## Apps and installs
|
|
90
94
|
|
|
91
|
-
An agent's handle on a platform is its app. The built-in agent `coder` uses shared apps on GitHub and Linear; create its Slack app in
|
|
95
|
+
An agent's handle on a platform is its app. The built-in agent `coder` uses shared apps on GitHub and Linear; create its Slack app in the Slack workspace from **# Agents → coder → (Platforms)** by pasting a Slack configuration refresh token. A custom agent gets its own app from **# Agents → *agent* → (Platforms)** in the dashboard, under the member's own GitHub account or an organization whose apps they manage. Private apps install only on their owner; an app made public on its platform installs on any account.
|
|
92
96
|
|
|
93
|
-
Installs start from the dashboard.
|
|
97
|
+
Installs start from the dashboard. **[Connect GitHub]** adds the shared GitHub app, and **# Agents → *agent* → (Platforms)** creates or installs an agent's workspace app. The server binds an install to the workspace that started it with a one-time, expiring state. On GitHub it also requires the installer to authorize the app and checks that the installation appears in their own `GET /user/installations`; on Slack it uses **[Add to Slack]** OAuth keyed by team. An install started on GitHub asks the installer to sign in and binds only if they are a member of the app's workspace. An install belongs to exactly one workspace, and webhooks route by installation. Removing or suspending an install on the platform stops it.
|
|
94
98
|
|
|
95
99
|
Operators set up the shared apps in the dashboard's Operator area at `/dash/<workspace>/operator`, one per platform, named `SERVER_NAME` or Wular unless they pick a name, and every operator action lands in its audit log. Entering it asks for a fresh Wular Auth sign-in and lasts an hour, or 15 minutes without activity; on local and memory servers the admin token holder is the operator.
|
|
96
100
|
|
|
@@ -102,7 +106,7 @@ Credentials are subscriptions and API keys. A subscription is a member's own Cla
|
|
|
102
106
|
|
|
103
107
|
Each engine uses its subscription, else its key (`ANTHROPIC_API_KEY` for Claude, `OPENAI_API_KEY` for Codex), the requester's own before the workspace's; a custom model uses the variable it names. Tasks with no known requester use the workspace's only, and without a credential the agent replies with a link to the Credentials page.
|
|
104
108
|
|
|
105
|
-
|
|
109
|
+
Manage them under **# Settings → (Credentials)** or with `coder credentials add`, `list`, `login` and `remove`, which read secrets from the environment or stdin and never print them.
|
|
106
110
|
|
|
107
111
|
## Tasks
|
|
108
112
|
|
|
@@ -110,42 +114,46 @@ A task starts from the dashboard, `coder task run --server`, or a platform event
|
|
|
110
114
|
|
|
111
115
|
A task is a conversation: steer it or ask it a question while it runs, and continue it once it has finished. Its output streams over Server-Sent Events, and a repo task's result includes the diff of its changes. The CLI's task commands take `--server` to do the same as the dashboard. A repo's own `.coder/config.json` can only narrow the workspace's config.
|
|
112
116
|
|
|
117
|
+
Only the requester of a 1:1 DM task and the workspace's owners and admins see it, in the dashboard, CLI, SDK and API. Its requester steers it, and admins can view, stop and delete it. When the requester hasn't connected that platform account, only admins see it.
|
|
118
|
+
|
|
113
119
|
## Sign-in and workspaces
|
|
114
120
|
|
|
115
121
|
Wular Auth is the only identity provider. Coder is an OpenID Connect client with no accounts of its own and signs its requests with a key derived from `SERVER_ENCRYPTION_KEY`, so there is no client secret to register. Sessions refresh themselves as Wular Auth's tokens expire, and signing out also ends the Wular Auth session.
|
|
116
122
|
|
|
117
|
-
Workspaces come from Wular Auth, where members and roles are managed; the members page links there. Wular Auth sends an account in no workspace through its onboarding before it signs them in to Coder. Apps, installations, tasks, and credentials all belong to the selected workspace. Every member may see and use everything in the workspace; only owners and admins change workspace credentials.
|
|
123
|
+
Workspaces come from Wular Auth, where members and roles are managed; the members page links there. Wular Auth sends an account in no workspace through its onboarding before it signs them in to Coder. Apps, installations, tasks, and credentials all belong to the selected workspace. Every member may see and use everything in the workspace except another member's [DM tasks](#tasks); only owners and admins change workspace credentials.
|
|
118
124
|
|
|
119
125
|
From a terminal, `coder auth login` signs in with Wular Auth (`--device` shows a code to approve elsewhere) and keeps the session in `~/.coder/session.json`. Its tokens are issued for this server only. `--workspace <slug>` picks a workspace and `--server <url>` another instance. Servers must use HTTPS unless they are loopback, and the CLI confirms a new origin the first time it sees it (`--yes` acknowledges it in scripts).
|
|
120
126
|
|
|
121
|
-
|
|
127
|
+
Anyone the platform lets write where they ask, such as a GitHub user with write access to the repository, starts and steers tasks. Installing an app connects the installer.
|
|
122
128
|
|
|
123
129
|
## Runners
|
|
124
130
|
|
|
131
|
+
What members and admins do with runners, such as pairing their own machine and choosing defaults, is in [Runners](runners.md). This section is the operator's side.
|
|
132
|
+
|
|
125
133
|
`RUNNER_CONFIG` is a JSON object read by the chosen runner. Every field is optional unless marked.
|
|
126
134
|
|
|
127
|
-
| Runner
|
|
128
|
-
|
|
|
129
|
-
| `local`
|
|
130
|
-
| `local-docker`
|
|
131
|
-
|
|
|
132
|
-
|
|
|
133
|
-
|
|
|
134
|
-
|
|
|
135
|
-
| `vercel-sandbox` | `image`
|
|
136
|
-
|
|
|
137
|
-
|
|
|
138
|
-
|
|
|
139
|
-
|
|
|
140
|
-
|
|
|
141
|
-
|
|
|
142
|
-
| `github-actions` | `token` (required) |
|
|
143
|
-
|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
146
|
-
| `http`
|
|
147
|
-
|
|
|
148
|
-
|
|
|
135
|
+
| Runner | Field | Default | Purpose |
|
|
136
|
+
| --- | --- | --- | --- |
|
|
137
|
+
| `local` | | | none |
|
|
138
|
+
| `local-docker` | `image` | `ghcr.io/muzam1l/coder-runner:latest` | Image the task runs in |
|
|
139
|
+
| | `memory` | `4g` | `--memory` |
|
|
140
|
+
| | `cpus` | `2` | `--cpus` |
|
|
141
|
+
| | `pidsLimit` | `512` | `--pids-limit` |
|
|
142
|
+
| | `network` | `bridge` | `--network` |
|
|
143
|
+
| `vercel-sandbox` | `image` | the SDK's default image | Image the task starts from |
|
|
144
|
+
| | `token` | deployment OIDC | Vercel access token for Sandbox; install `@vercel/sandbox` in the adapter app |
|
|
145
|
+
| | `team` | `VERCEL_TEAM_ID` | Team ID for access-token authentication |
|
|
146
|
+
| | `projectId` | `VERCEL_PROJECT_ID` | Project ID for access-token authentication |
|
|
147
|
+
| | `region` | the database's region | Sandbox region; inferred from an AWS region in the database host, else Vercel's default |
|
|
148
|
+
| | `timeoutMs` | `1800000` | Sandbox lifetime |
|
|
149
|
+
| | `vcpus` | `1` | Sandbox size |
|
|
150
|
+
| `github-actions` | `token` (required) | | GitHub token that may dispatch the workflow and read its status |
|
|
151
|
+
| | `repo` | the event's repository | `owner/name` holding the workflow |
|
|
152
|
+
| | `workflow` | `coder-agent.yml` | Workflow file to dispatch (`coder server workflow` prints it) |
|
|
153
|
+
| | `ref` | the repository's default branch | Branch to dispatch on |
|
|
154
|
+
| `http` | `url` (required) | | The controller's base URL; it implements `POST /start`, `POST /messages/<handle>`, `GET /status/<handle>`, `POST /stop/<handle>` |
|
|
155
|
+
| | `secret` (required) | | Shared secret that signs every request over body, timestamp, and nonce |
|
|
156
|
+
| | `headers` | `{}` | Extra headers sent with every request |
|
|
149
157
|
|
|
150
158
|
`local-docker` and `github-actions` run in the runner image, which holds the engines and tools. A custom `image` needs `node`, `bun`, `git`, `curl`, `tar`, `claude`, `codex` and `github-mcp-server`.
|
|
151
159
|
|
|
@@ -153,38 +161,28 @@ A platform user who addresses an agent must be linked to a member of the workspa
|
|
|
153
161
|
|
|
154
162
|
On `vercel-sandbox` each task uses the universal image's engines without their own sandbox, and its machine stops when the task ends. Repository snapshots hold the checkout and its installed dependencies. The default is 1 CPU and 2 GB memory; `vcpus` selects a larger machine.
|
|
155
163
|
|
|
156
|
-
Access-token authentication needs a token, team ID and project ID. Settings → Runners accepts the IDs directly, or the adapter app can supply `VERCEL_TEAM_ID` and `VERCEL_PROJECT_ID`. The firewall injects engine API keys into provider requests, and the task sees a placeholder. Below `auto`, a task's machine reaches only this server, its engine, integrations, connections, MCP servers and `
|
|
164
|
+
Access-token authentication needs a token, team ID and project ID. **# Settings → (Runners)** accepts the IDs directly, or the adapter app can supply `VERCEL_TEAM_ID` and `VERCEL_PROJECT_ID`. The firewall injects engine API keys into provider requests, and the task sees a placeholder. Below `auto`, a task's machine reaches only this server, its engine, integrations, connections, MCP servers and `network.allowedHosts`.
|
|
157
165
|
|
|
158
166
|
For GitHub Actions, save the output of `coder server workflow` as `.github/workflows/coder-agent.yml` on the workflow repository's default branch. Save it again after each Coder upgrade. It accepts `task`, `server`, `token`, `mode` and `tarball`, names each run `Coder agent <task ID>`, and runs the task in the runner image with the callback URL and attempt token in the environment. The workflow token needs repository Actions read and write; a classic token for a private repository needs `repo`. A result returns through the authenticated task callback. No result artifact is required.
|
|
159
167
|
|
|
160
168
|
Every runner sends the task's log to the server while it runs, and the dashboard shows the stored log.
|
|
161
169
|
|
|
162
|
-
The server stores steer, ask, approval and cancel messages before delivering them. Local workers receive them over a private Unix socket; HTTP controllers use the same signed requests as task starts, Docker uses the daemon's exec channel, and Vercel Sandbox uses `runCommand`. Workers acknowledge the applied sequence and save it across restarts. Unacknowledged messages retry on server events and the sweep, with backoff. A reconnect fetches pending messages once.
|
|
163
|
-
|
|
164
|
-
A runner adapter declares delivery support through its optional `push` method. The start environment tells the worker which mode to use. GitHub Actions has no inbound delivery channel, so it checks every four seconds with one indexed query that returns immediately. Four seconds balances interactive response time and request volume. All workers send a separate heartbeat every 30 seconds; idle push workers make no message requests after reconnect.
|
|
165
|
-
|
|
166
|
-
### Your own machine
|
|
167
|
-
|
|
168
|
-
A member runs the server's tasks on their own machine with `coder runner serve`. It uses the machine's own `claude` and `codex` logins, so no credential is needed. Expose its port with any tunnel, such as `cloudflared tunnel --url http://localhost:4100`, `ngrok http 4100`, `tailscale funnel 4100` or a public VS Code port, and pass the tunnel's address with `--url`. Each start registers the current address with the server as you (`coder auth login`), and stopping marks the runner offline, so a changing tunnel address is fine. Every request to it is signed with its own secret, kept in `~/.coder/runners.json`.
|
|
169
|
-
|
|
170
|
-
A runner runs only its owner's tasks. An owner or admin can register one with `--workspace` for every member. A task runs on the runner it names, else its agent's runner, the requester's default, the workspace default, then `RUNNER`. Choose a default with `coder runner default <id>`. `coder runner list`, `rename` and `remove`, and the dashboard's Settings, manage them.
|
|
171
|
-
|
|
172
170
|
## Security
|
|
173
171
|
|
|
174
|
-
The server only verifies, dedupes, and dispatches; agents run in the runner with one checkout, one short-lived platform token, and one engine credential. `
|
|
172
|
+
The server only verifies, dedupes, and dispatches; agents run in the runner with one checkout, one short-lived platform token, and one engine credential. `access` is enforced by the engine sandbox, on `vercel-sandbox` by the machine and its firewall, `tools` by the app's permissions and the MCP allowlist. App credentials are encrypted at rest.
|
|
175
173
|
|
|
176
174
|
## Limits and monitoring
|
|
177
175
|
|
|
178
176
|
`SERVER_LIMITS` is a JSON object stored under `limits` in the server config. Each value is a positive integer. Unset keys use these defaults.
|
|
179
177
|
|
|
180
|
-
| Config key
|
|
181
|
-
|
|
|
182
|
-
| `limits.principalPerMinute` | `300`
|
|
183
|
-
| `limits.ipPerMinute`
|
|
184
|
-
| `limits.authPerMinute`
|
|
185
|
-
| `limits.registerPerMinute`
|
|
186
|
-
| `limits.pairingPerMinute`
|
|
187
|
-
| `limits.concurrentTasks`
|
|
178
|
+
| Config key | Default | Purpose |
|
|
179
|
+
| --- | --- | --- |
|
|
180
|
+
| `limits.principalPerMinute` | `300` | Requests per minute for each signed-in user, the memory server's admin token, or an authenticated runner |
|
|
181
|
+
| `limits.ipPerMinute` | `60` | Requests per minute for each unauthenticated IP |
|
|
182
|
+
| `limits.authPerMinute` | `20` | Sign-in, token and login requests per minute for each IP, on top of `ipPerMinute` |
|
|
183
|
+
| `limits.registerPerMinute` | `10` | Runner registrations per minute for each IP; includes pairing and returning-runner heartbeats |
|
|
184
|
+
| `limits.pairingPerMinute` | `5` | Pairing tokens per minute for each principal at `/admin/runners/pair` |
|
|
185
|
+
| `limits.concurrentTasks` | `10` | Active task slots per workspace in cloud mode, or per server in local and memory modes |
|
|
188
186
|
|
|
189
187
|
For example, `SERVER_LIMITS='{"principalPerMinute":300,"ipPerMinute":60,"authPerMinute":20,"registerPerMinute":10,"pairingPerMinute":5,"concurrentTasks":10}'` sets every default explicitly. All `/admin/*`, `/runners/*`, sign-in and pairing requests use the same token-bucket implementation. A bucket starts full and refills continuously over a minute. A refused request returns `429`, a readable JSON `error` and `Retry-After` in seconds. Buckets and counters belong to each server process and reset on restart; serverless instances keep their own buckets.
|
|
190
188
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wular/coder",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "The runtime for agents, your rules, any model, everywhere.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/sdk.js",
|
|
7
7
|
"types": "./dist/sdk.d.ts",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"version-bump:patch": "node scripts/bump.mjs patch",
|
|
35
35
|
"version-bump:minor": "node scripts/bump.mjs minor",
|
|
36
36
|
"version-bump:major": "node scripts/bump.mjs major",
|
|
37
|
-
"format": "prettier --write \"src/**/*.{ts,tsx}\" \"scripts/**/*.ts\" \"*.md\"
|
|
37
|
+
"format": "prettier --write \"src/**/*.{ts,tsx}\" \"scripts/**/*.ts\" \"*.md\""
|
|
38
38
|
},
|
|
39
39
|
"files": [
|
|
40
40
|
"bin",
|
|
@@ -70,14 +70,13 @@
|
|
|
70
70
|
"@types/node": "^26.1.2",
|
|
71
71
|
"@wular/pnext": "0.1.9",
|
|
72
72
|
"chat": "4.41.1",
|
|
73
|
-
"contextjsx": "0.2.
|
|
73
|
+
"contextjsx": "0.2.6",
|
|
74
74
|
"drizzle-kit": "0.31.11",
|
|
75
75
|
"drizzle-orm": "0.45.2",
|
|
76
76
|
"jose": "6.2.12",
|
|
77
77
|
"openid-client": "6.8.8",
|
|
78
78
|
"postgres": "3.4.9",
|
|
79
79
|
"preact": "10.29.2",
|
|
80
|
-
"preact-render-to-string": "6.7.0",
|
|
81
80
|
"prettier": "^3.6.2",
|
|
82
81
|
"tsdown": "^0.22.13",
|
|
83
82
|
"typescript": "^5.9.3",
|
|
@@ -13,7 +13,7 @@ You dispatch coding tasks through the `coder` runtime instead of implementing th
|
|
|
13
13
|
|
|
14
14
|
## Overview
|
|
15
15
|
|
|
16
|
-
Coder delegates coding to supervised subagents of any model - Codex, Claude, or any OpenAI-compatible or local endpoint - from one runtime on every host. Implementation details live in the subagents, so your context stays clean and handoffs are instant. Every task runs sandboxed under
|
|
16
|
+
Coder delegates coding to supervised subagents of any model - Codex, Claude, or any OpenAI-compatible or local endpoint - from one runtime on every host. Implementation details live in the subagents, so your context stays clean and handoffs are instant. Every task runs sandboxed under one access setting (read-only or auto), is steerable mid-run, and falls back down the configured chain when an engine cannot start.
|
|
17
17
|
|
|
18
18
|
## Setup
|
|
19
19
|
|
|
@@ -21,7 +21,7 @@ If `coder` is not on PATH, install it yourself without asking: `npm install -g @
|
|
|
21
21
|
|
|
22
22
|
## Use Coder over MCP
|
|
23
23
|
|
|
24
|
-
Each coder command is also an MCP tool with the same arguments, such as `task/run` or `flow/run`; `load_skill` loads a
|
|
24
|
+
Each coder command is also an MCP tool with the same arguments, such as `task/run` or `flow/run`; `load_skill` loads a doc.
|
|
25
25
|
|
|
26
26
|
Setup: `coder setup-host` adds the server. By hand:
|
|
27
27
|
|
|
@@ -35,7 +35,7 @@ Restart running sessions after adding it.
|
|
|
35
35
|
## Using the CLI
|
|
36
36
|
|
|
37
37
|
- The CLI is the reference. `coder --help` and every subcommand's `--help` list the flags and exit codes, and each command prints the recommended next step when it returns. Follow it.
|
|
38
|
-
- `coder docs` lists the
|
|
38
|
+
- `coder docs` lists the docs; `coder docs <topic>` prints one.
|
|
39
39
|
- 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.
|
|
40
40
|
- If your harness sandboxes or gates terminal commands (Codex does both), run every `coder` command with escalated permissions; the runtime is a supervisor with its own sandbox and approval policy.
|
|
41
41
|
|
|
@@ -13,7 +13,7 @@ You dispatch coding tasks through the `coder` runtime instead of implementing th
|
|
|
13
13
|
|
|
14
14
|
## Overview
|
|
15
15
|
|
|
16
|
-
Coder delegates coding to supervised subagents of any model - Codex, Claude, or any OpenAI-compatible or local endpoint - from one runtime on every host. Implementation details live in the subagents, so your context stays clean and handoffs are instant. Every task runs sandboxed under
|
|
16
|
+
Coder delegates coding to supervised subagents of any model - Codex, Claude, or any OpenAI-compatible or local endpoint - from one runtime on every host. Implementation details live in the subagents, so your context stays clean and handoffs are instant. Every task runs sandboxed under one access setting (read-only or auto), is steerable mid-run, and falls back down the configured chain when an engine cannot start.
|
|
17
17
|
|
|
18
18
|
## Setup
|
|
19
19
|
|
|
@@ -21,7 +21,7 @@ If `coder` is not on PATH, install it yourself without asking: `npm install -g @
|
|
|
21
21
|
|
|
22
22
|
## Use Coder over MCP
|
|
23
23
|
|
|
24
|
-
Each coder command is also an MCP tool with the same arguments, such as `task/run` or `flow/run`; `load_skill` loads a
|
|
24
|
+
Each coder command is also an MCP tool with the same arguments, such as `task/run` or `flow/run`; `load_skill` loads a doc.
|
|
25
25
|
|
|
26
26
|
Setup: `coder setup-host` adds the server. By hand:
|
|
27
27
|
|
|
@@ -35,7 +35,7 @@ Restart running sessions after adding it.
|
|
|
35
35
|
## Using the CLI
|
|
36
36
|
|
|
37
37
|
- The CLI is the reference. `coder --help` and every subcommand's `--help` list the flags and exit codes, and each command prints the recommended next step when it returns. Follow it.
|
|
38
|
-
- `coder docs` lists the
|
|
38
|
+
- `coder docs` lists the docs; `coder docs <topic>` prints one.
|
|
39
39
|
- Run each `coder task result <task-id> --wait` as its own background Bash call (run_in_background), one per task, never several tasks in one call, so each approval and answer re-invokes you.
|
|
40
40
|
|
|
41
41
|
## Running tasks
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "coder",
|
|
3
3
|
"displayName": "Coder",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.13",
|
|
5
5
|
"description": "Delegate coding tasks to supervised Coder subagents running on Codex, Claude, or any OpenAI-compatible model. Your main context stays clean.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "muzam1l"
|
package/plugins/cursor/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
- **Clean context.** Your conversation stays about intent and orchestration; implementation details live in the subagents.
|
|
14
14
|
- **Fast dispatch.** Handoffs are instant, and light enough to spin up a large number of subagents at once.
|
|
15
15
|
- **Steerable tasks.** Full visibility into every task, from live progress to mid-run course corrections.
|
|
16
|
-
- **
|
|
16
|
+
- **One access setting.** _Auto_ or _Read-only_, the same on every engine.
|
|
17
17
|
|
|
18
18
|
## Get started
|
|
19
19
|
|
|
@@ -58,8 +58,8 @@ Machine defaults live in `~/.coder/config.json`; a `coder.config.json` in a repo
|
|
|
58
58
|
{
|
|
59
59
|
"chain": ["codex", "claude"],
|
|
60
60
|
"engines": {
|
|
61
|
-
"codex": { "model": "sol", "effort": "high"
|
|
62
|
-
"claude": { "model": "opus", "effort": "medium"
|
|
61
|
+
"codex": { "model": "sol", "effort": "high" },
|
|
62
|
+
"claude": { "model": "opus", "effort": "medium" }
|
|
63
63
|
},
|
|
64
64
|
"models": {
|
|
65
65
|
"qwen": { "baseUrl": "http://localhost:11434/v1", "model": "qwen2.5-coder:32b" }
|
|
@@ -13,7 +13,7 @@ You dispatch coding tasks through the `coder` runtime instead of implementing th
|
|
|
13
13
|
|
|
14
14
|
## Overview
|
|
15
15
|
|
|
16
|
-
Coder delegates coding to supervised subagents of any model - Codex, Claude, or any OpenAI-compatible or local endpoint - from one runtime on every host. Implementation details live in the subagents, so your context stays clean and handoffs are instant. Every task runs sandboxed under
|
|
16
|
+
Coder delegates coding to supervised subagents of any model - Codex, Claude, or any OpenAI-compatible or local endpoint - from one runtime on every host. Implementation details live in the subagents, so your context stays clean and handoffs are instant. Every task runs sandboxed under one access setting (read-only or auto), is steerable mid-run, and falls back down the configured chain when an engine cannot start.
|
|
17
17
|
|
|
18
18
|
## Setup
|
|
19
19
|
|
|
@@ -21,7 +21,7 @@ If `coder` is not on PATH, install it yourself without asking: `npm install -g @
|
|
|
21
21
|
|
|
22
22
|
## Use Coder over MCP
|
|
23
23
|
|
|
24
|
-
Each coder command is also an MCP tool with the same arguments, such as `task/run` or `flow/run`; `load_skill` loads a
|
|
24
|
+
Each coder command is also an MCP tool with the same arguments, such as `task/run` or `flow/run`; `load_skill` loads a doc.
|
|
25
25
|
|
|
26
26
|
Setup: `coder setup-host` adds the server. By hand:
|
|
27
27
|
|
|
@@ -35,7 +35,7 @@ Restart running sessions after adding it.
|
|
|
35
35
|
## Using the CLI
|
|
36
36
|
|
|
37
37
|
- The CLI is the reference. `coder --help` and every subcommand's `--help` list the flags and exit codes, and each command prints the recommended next step when it returns. Follow it.
|
|
38
|
-
- `coder docs` lists the
|
|
38
|
+
- `coder docs` lists the docs; `coder docs <topic>` prints one.
|
|
39
39
|
- 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.
|
|
40
40
|
- If Cursor asks before running `coder` commands, approve or allowlist `coder`; the runtime is a supervisor with its own sandbox and approval policy.
|
|
41
41
|
|
package/dist/actions-BT7_eKXm.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import{$ as e,A as t,At as n,Bt as r,C as i,D as a,E as o,En as s,I as c,K as l,L as u,M as d,O as f,Q as p,Sn as m,U as h,X as g,Z as _,at as v,d as y,et as b,f as x,it as S,j as ee,ot as te,p as ne,q as re,s as ie,v as ae,yn as oe}from"./errors-XBA-Ls4n.js";import{A as se,Ct as ce,G as le,H as C,J as w,Jt as T,K as E,M as D,N as O,St as k,Yt as A,Zt as j,at as M,it as N,jt as P,kt as F,nt as I,q as L,rt as R,st as z,yt as B}from"./output-D95NoAA9.js";import{i as V,r as H}from"./prompts-B8pKhMcu.js";import U from"node:path";import W from"node:process";import G from"node:fs";import K,{randomUUID as ue}from"node:crypto";import de from"node:readline";import fe from"node:http";function q(e){let t=[];typeof e.instructions==`string`&&e.instructions&&t.push({role:`system`,content:e.instructions});let n=Array.isArray(e.input)?e.input:[];for(let e of n)switch(e?.type){case`message`:{let n=Array.isArray(e.content)?e.content.map(e=>e?.text??``).join(``):String(e.content??``);t.push({role:e.role===`developer`?`system`:e.role,content:n});break}case`function_call`:{let n={id:e.call_id,type:`function`,function:{name:e.name,arguments:e.arguments??`{}`}},r=t.at(-1);r?.role===`assistant`&&r.tool_calls?r.tool_calls.push(n):t.push({role:`assistant`,content:null,tool_calls:[n]});break}case`function_call_output`:{let n=e.output;t.push({role:`tool`,tool_call_id:e.call_id,content:typeof n==`string`?n:JSON.stringify(n??``)});break}}return t}function pe(e){let t=(Array.isArray(e.tools)?e.tools:[]).filter(e=>e?.type===`function`).map(e=>({type:`function`,function:{name:e.name,description:e.description??``,parameters:e.parameters??{type:`object`,properties:{}}}})),n=e.text?.format;return{model:e.model,messages:q(e),...t.length?{tools:t,tool_choice:e.tool_choice??`auto`}:{},...typeof e.parallel_tool_calls==`boolean`?{parallel_tool_calls:e.parallel_tool_calls}:{},...n?.type===`json_schema`?{response_format:{type:`json_schema`,json_schema:{name:n.name,schema:n.schema,strict:n.strict??!1}}}:{},stream:!0,stream_options:{include_usage:!0}}}var me=class{send;model;responseId=`resp_bridge_${K.randomUUID()}`;text=``;textOpen=!1;toolCalls=new Map;usage=null;buffer=``;constructor(e,t){this.model=e,this.send=t,this.send({type:`response.created`,response:{id:this.responseId,object:`response`,status:`in_progress`,model:e,output:[]}})}push(e){this.buffer+=e;let t=this.buffer.split(`
|
|
2
|
-
`);this.buffer=t.pop()??``;for(let e of t){let t=e.trim();if(!t.startsWith(`data:`))continue;let n=t.slice(5).trim();if(!n||n===`[DONE]`)continue;let r;try{r=JSON.parse(n)}catch{continue}r.usage&&(this.usage=r.usage);let i=r.choices?.[0]?.delta;if(i){typeof i.content==`string`&&i.content&&(this.textOpen||(this.textOpen=!0,this.send({type:`response.output_item.added`,output_index:0,item:{type:`message`,id:`msg_bridge_0`,status:`in_progress`,role:`assistant`,content:[]}})),this.text+=i.content,this.send({type:`response.output_text.delta`,item_id:`msg_bridge_0`,output_index:0,content_index:0,delta:i.content}));for(let e of i.tool_calls??[]){let t=this.toolCalls.get(e.index)??{id:``,name:``,args:``};e.id&&(t.id=e.id),e.function?.name&&(t.name+=e.function.name),e.function?.arguments&&(t.args+=e.function.arguments),this.toolCalls.set(e.index,t)}}}}finish(){let e=[];if(this.text){let t={type:`message`,id:`msg_bridge_0`,status:`completed`,role:`assistant`,content:[{type:`output_text`,text:this.text,annotations:[]}]};e.push(t),this.send({type:`response.output_item.done`,output_index:0,item:t})}let t=e.length;for(let n of this.toolCalls.values()){let r={type:`function_call`,id:`fc_bridge_${t}`,call_id:n.id||`call_bridge_${t}`,name:n.name,arguments:n.args||`{}`,status:`completed`};e.push(r),this.send({type:`response.output_item.done`,output_index:t,item:r}),t+=1}this.send({type:`response.completed`,response:{id:this.responseId,object:`response`,status:`completed`,model:this.model,output:e,usage:{input_tokens:this.usage?.prompt_tokens??0,input_tokens_details:{cached_tokens:this.usage?.prompt_tokens_details?.cached_tokens??0},output_tokens:this.usage?.completion_tokens??0,output_tokens_details:{reasoning_tokens:this.usage?.completion_tokens_details?.reasoning_tokens??0},total_tokens:this.usage?.total_tokens??0}}})}};async function J(e,t=`chat`){let n=t===`responses`,r=B(e.baseUrl,n?`responses`:`chat/completions`),i=null,a=!0,o=e.envKey?W.env[e.envKey]:void 0;async function s(e){let t=i?[i]:r,n=null;for(let r of t)if(n=await fetch(r,{method:`POST`,headers:{"content-type":`application/json`,...o?{authorization:`Bearer ${o}`}:{}},body:e}),n.status!==404)return i=r,n;return n}async function c(e){let t=e.text?.format,r=n?e:pe(e),i=()=>{let i=V(t.schema);if(n){let{format:t,...n}=e.text;return{...e,text:n,input:[...e.input??[],{type:`message`,role:`user`,content:[{type:`input_text`,text:i}]}]}}let{response_format:a,...o}=r;return{...o,messages:[...q(e),{role:`user`,content:i}]}};if(t?.type!==`json_schema`)return s(JSON.stringify(r));if(!a)return s(JSON.stringify(i()));let o=await s(JSON.stringify(r));if(![400,422,501].includes(o.status))return o;let c=await o.clone().text();return/(invalid.{0,30}schema|schema.{0,30}invalid|unsupported.{0,30}(keyword|constraint)|(keyword|constraint).{0,30}unsupported)/i.test(c)||!/(response_format|json_schema|text[.\s]format)/i.test(c)||!/(not supported|unsupported|unknown parameter|unrecognized|not available)/i.test(c)?o:(a=!1,await o.body?.cancel(),s(JSON.stringify(i())))}let l=K.randomBytes(16).toString(`hex`),u=fe.createServer((e,t)=>{if(e.method!==`POST`||!e.url?.startsWith(`/${l}/`)||!e.url.replace(/\/+$/,``).endsWith(`/responses`)){t.writeHead(404,{"content-type":`application/json`}),t.end(JSON.stringify({error:{message:`coder chat bridge: only POST /responses is supported`}}));return}let r=``;e.on(`data`,e=>r+=e),e.on(`end`,async()=>{let e;try{e=JSON.parse(r)}catch{t.writeHead(400,{"content-type":`application/json`}),t.end(JSON.stringify({error:{message:`invalid JSON`}}));return}try{if(n){let n=await c(e);if(t.writeHead(n.status,{"content-type":n.headers.get(`content-type`)??`application/json`,"cache-control":`no-store`}),n.body)for await(let e of n.body)t.write(e);t.end();return}let r=await c(e);if(!r.ok||!r.body){let e=await r.text().catch(()=>``);t.writeHead(r.status,{"content-type":`application/json`}),t.end(e||JSON.stringify({error:{message:`upstream HTTP ${r.status}`}}));return}t.writeHead(200,{"content-type":`text/event-stream`,"cache-control":`no-store`});let i=new me(e.model,e=>t.write(`data: ${JSON.stringify(e)}\n\n`)),a=new TextDecoder;for await(let e of r.body)i.push(a.decode(e,{stream:!0}));i.finish(),t.end()}catch(e){let n=e instanceof Error?e.message:String(e);t.writeHead(502,{"content-type":`application/json`}),t.end(JSON.stringify({error:{message:`coder chat bridge: ${n}`}}))}})});await new Promise(e=>u.listen(0,`127.0.0.1`,e));let d=u.address();return{url:`http://127.0.0.1:${typeof d==`object`&&d?d.port:0}/${l}/v1`,close:()=>new Promise(e=>{u.close(()=>e()),u.closeAllConnections?.()})}}const he=/^[A-Za-z0-9-]{1,128}$/;function Y(e){return[...new Set([...e.previousThreadIds??[],...e.threadId?[e.threadId]:[]])]}async function X(e,t){if(!/^[a-zA-Z0-9_-]+$/.test(t))return[];let n=e.engine===`claude`,r=n?L():v(),i=e.id?U.join(h(e.cwd??``,e.id),`history-files.json`):void 0,a=JSON.stringify([e.engine,r,t]),o=i?m(i)??{}:{},c=o[a];if(c?.length&&c.every(e=>e.startsWith(`${r}${U.sep}`)&&G.existsSync(e)))return c;let l=[],u=async(e,r)=>{for(let i of await G.promises.readdir(e,{withFileTypes:!0}).catch(()=>[])){let a=U.join(e,i.name);i.isDirectory()&&r?await u(a,r-1):i.isFile()&&(n?i.name===`${t}.jsonl`:i.name.endsWith(`-${t}.jsonl`))&&l.push(a)}};return n?await u(r,1):(await u(U.join(r,`sessions`),3),await u(U.join(r,`archived_sessions`),0)),i&&l.length&&s(i,{...o,[a]:l}),l}function ge(e,t){let n=t?e.message:e.type===`response_item`?e.payload:void 0;if(!n||!t&&n.type===`reasoning`)return;let r=n.content,i=Array.isArray(r)?r:[],a=n.role??(n.type?.endsWith(`_output`)?`tool`:`assistant`),o=i.filter(e=>e.type===`tool_use`).map(e=>String(e.id)),s=i.filter(e=>e.type===`tool_result`).map(e=>String(e.tool_use_id));[`function_call`,`custom_tool_call`].includes(n.type)&&o.push(String(n.call_id)),[`function_call_output`,`custom_tool_call_output`].includes(n.type)&&s.push(String(n.call_id));let c=typeof r==`string`?r:i.length?i.map(e=>typeof e.text==`string`?e.text:JSON.stringify(e)).join(`
|
|
3
|
-
`):JSON.stringify(n);return{speaker:s.length&&!o.length?`tool`:a,time:String(e.timestamp??``),text:c,calls:o,results:s,startsExchange:a===`user`&&!s.length,reply:a===`assistant`&&(t?i.some(e=>e.type===`text`)||typeof r==`string`:n.type===`message`)}}async function*Z(e,t){for(let n of await X(e,t)){let t=G.createReadStream(n,{encoding:`utf8`}),r=de.createInterface({input:t,crlfDelay:1/0});try{for await(let t of r){let n;try{n=JSON.parse(t)}catch{continue}let r=ge(n,e.engine===`claude`);r&&(yield r)}}finally{r.close(),t.destroy()}}}async function _e(e,{exchanges:t=6,maxBytes:n=2e4}={}){if(!e.threadId)return{text:``,exchanges:0};let r=[],i=``,a=0,o=!1,s=new Set,c=()=>{if(a>n)r.length=0;else if(i&&o&&!s.size)for(r.push(i);r.length>t||Buffer.byteLength(r.join(`
|
|
4
|
-
|
|
5
|
-
`))>n;)r.shift();i=``,a=0,o=!1,s.clear()};for await(let t of Z(e,e.threadId)){if(t.startsExchange&&!s.size&&c(),!i&&!t.startsExchange)continue;for(let e of t.calls)s.add(e);for(let e of t.results)s.delete(e);t.reply&&(o=!0);let e=`[${t.time}] ${t.speaker}\n${t.text}`;a+=Buffer.byteLength(e)+2,a<=n?i+=`${i?`
|
|
6
|
-
|
|
7
|
-
`:``}${e}`:i=`[exchange exceeds the recent history budget]`}return a>n&&(i=``),c(),{text:r.join(`
|
|
8
|
-
|
|
9
|
-
`),exchanges:r.length}}async function ve(e,{query:t,from:n=0,limit:r=10}={}){if(t!==void 0&&(typeof t!=`string`||!t.length||t.length>500))throw Error(`Provide a query of 1 to 500 characters`);if(!Number.isSafeInteger(n)||n<0)throw Error(`Provide from as a nonnegative message index`);if(!Number.isInteger(r)||r<1||r>20)throw Error(`Provide a limit of 1 to 20 messages`);let i=[],a=t?.toLowerCase(),o=0;for(let t of Y(e))for await(let s of Z(e,t)){let e=o++;if(e<n)continue;let t=a===void 0?0:s.text.toLowerCase().indexOf(a);if(t<0)continue;if(i.length===r)return{messages:i,next:i[i.length-1].index+1};let c=Math.max(0,t-200);i.push({index:e,speaker:s.speaker,time:s.time,text:s.text.slice(c,c+1200)})}return{messages:i}}function ye(e,t,r=e=>e){return async i=>({...n(Object.fromEntries(se(e,W.env,t).flatMap(e=>{let t=e.connection??e.name;return i.includes(t)?[[t,r(e)]]:[]}))),warnings:[]})}async function be(e,t,n,r,i={}){if(t.status!==`running`)return null;let a=t.engine===`claude`?await(i.claude??E)(t.steerEndpoint,n,void 0,r):await(i.codex??N)(e,{endpoint:t.steerEndpoint,threadId:t.threadId,turnId:t.turnId,text:n,command:r});if(a.steered)return y(e,t.id,{kind:`steer`,message:`${ie}${n}`}),{taskId:t.id,steered:`live`};if(!a.retryable)throw y(e,t.id,{kind:`error`,message:`Live steer failed: ${a.detail}`}),Error(`Could not steer running task ${t.id}: ${a.detail}`);return null}function xe(e,t,n){ae(e,t,n),y(e,t,{kind:`steer`,message:`Steer queued for the next turn:\n${n}`})}async function Q(e,t,n,r={},i={}){let a=f(e,t.id)??t;if(t=a.rollingOver?c(e,a):a,!t.threadId)throw new j(`invalid-option`,`Task ${t.id} has no thread to steer yet (status: ${t.status}).`,{hint:`Wait for it to start: coder task watch ${t.id}`});let o=await be(e,t,n,r.command,i);if(o){let n=f(e,t.id)??t;return n.archived&&g(e,n),o}return{taskId:t.id,steered:await Ce(e,t,n,r)}}function Se(e){let n=G.mkdtempSync(`${e}-`),r=`${W.pid}-${t(W.pid)??0}-${ue()}`;G.mkdirSync(U.join(n,r));try{for(let r=0;r<2;r++){try{return G.renameSync(n,e),!0}catch(e){if(![`EEXIST`,`ENOTEMPTY`,`ENOTDIR`].includes(e.code??``))throw e}try{if(G.statSync(e).isFile()){if(Date.now()-G.statSync(e).mtimeMs<6e4)return!1;G.unlinkSync(e);continue}for(let n of G.readdirSync(e)){let r=n.split(`-`),i=Number(r[0]),a=Number(r[1]),o=!1;if(Number.isInteger(i)&&i>0)try{W.kill(i,0),o=!0}catch(e){o=e.code===`EPERM`}let s=o?t(i):null;if(o&&(!a||s===null||s===a))return!1;G.rmdirSync(U.join(e,n))}G.rmdirSync(e)}catch(e){if(![`ENOENT`,`ENOTEMPTY`].includes(e.code??``))throw e}}return!1}finally{G.rmSync(n,{recursive:!0,force:!0})}}async function Ce(t,n,a,o){if(n.connectionSource===`server`&&!o.resolveConnections)throw Error(`Server connection resolver is required to resume this task`);let s=await p(t,n.id,()=>{let e=f(t,n.id)??n,r=[e?.completedAt,e?.resumedAt].map(e=>Date.parse(e??``)||0),o=U.join(h(t,n.id),`resume-${r.join(`-`)}`);if(e&&!e.steerClosed&&(b.includes(e.status)||e.rollingOver&&c(t,e).rollingOver||e.status===`completed`&&e.steerClosed===!1&&i(e.pid))||!Se(o)){e.archived&&g(t,e),xe(t,n.id,a);return}return{fresh:e,claim:o}});if(!s)return`queued`;let{fresh:l,claim:u}=s;n=l??n;let d=!1;try{for(let e of G.readdirSync(h(t,n.id)))/^resume-\d+-\d+$/.test(e)&&e!==U.basename(u)&&G.rmSync(U.join(h(t,n.id),e),{recursive:!0,force:!0});let i=n.agentId?await(await import(`./exec-iFssTO5V.js`).then(e=>e.i)).localAgentPrompt(t,n.agentId):void 0,s=o.resolveConnections?await o.resolveConnections(n.connections??[]):await r(void 0,n.connections??[],void 0,i?.access),c=n.mcp?.map(e=>{let t=e.connection??(e.resolved&&n.connections?.includes(e.name)?e.name:void 0);return t?{...e,connection:t,resolved:!1}:e})??[],l=n.mcpBindings??c.filter(e=>e.connection).map(({name:e,connection:t,tools:n})=>({name:e,connection:t,...n?{tools:n}:{}})),f=new Set(l.map(e=>e.connection)),p=D([...l,...c.filter(e=>!f.has(e.connection))],{},{},s.mcp);n.archived&&g(t,n),e(t,n.id,{...i?.developer&&n.promptParts?{promptParts:{...n.promptParts,developer:{...i.developer,notes:n.promptParts.developer?.notes}}}:{},mcp:p.mcp,mcpBindings:l,status:`queued`,pid:null,steerClosed:!1,resumedAt:new Date().toISOString(),currentPrompt:a,...o.outputSchema?{outputSchema:o.outputSchema}:{},resumeThreadId:n.threadId,steerEndpoint:null,model:o.model??n.model??null,effort:o.effort??n.effort??null,permissions:o.permissions??n.permissions,error:void 0}),d=!0,y(t,n.id,{kind:`steer`,message:`Resuming with steer:\n${a}`});for(let e of[...s.warnings,...p.warnings??[]])y(t,n.id,{kind:`status`,message:e});let m=O(n.cwd??t,n.id,s.env);o.onWorker?.(m)}catch(r){throw d&&e(t,n.id,{status:l?.status??n.status,resumedAt:l?.resumedAt,currentPrompt:l?.currentPrompt??null,resumeThreadId:l?.resumeThreadId??null,error:l?.error}),G.rmSync(U.join(h(t,n.id),U.basename(u)),{recursive:!0,force:!0}),r}return`resumed`}const we=[`Read`,`Glob`,`Grep`];function Te(e,t,n,r){return{prompt:n,model:r.model??e.model,effort:r.effort,permissions:`read-only`,additionalDirectories:[t],taskRoot:t,readOnlyAllowedTools:we}}async function Ee(e,t,n,r={}){let i=h(e,t.id),a=H(t,{log:U.join(i,`log.jsonl`),result:U.join(i,`result.json`),worker:U.join(i,`worker.log`)},n,r.command?z(r.command):void 0),o=r.command?e=>{let t=U.join(i,`inbox-control`);G.mkdirSync(t,{recursive:!0}),G.appendFileSync(U.join(t,`${z(r.command)}.transcript.jsonl`),JSON.stringify({command:r.command,result:e.finalMessage??e.error?.message??``})+`
|
|
10
|
-
`)}:void 0,s=r.effort??t.effort??null;if(t.engine===`claude`)return le(t.cwd??e,{...Te(t,i,a,{model:r.model,effort:s}),command:r.command,onResult:o});let c=ce(e),l=r.model??t.model,u=l?c.models?.[l]:void 0,d=u&&k(u)?u:void 0;if(d?.envKey&&!W.env[d.envKey])throw Error(`Missing environment variable: \`${d.envKey}\`.`);let f=d?await J(d,d.wireApi??`chat`):null,p=P(c,l,f??void 0);try{return await R(t.cwd??e,{prompt:a,model:p?.model??F(l??null),modelProvider:p?.modelProvider??null,configOverrides:p?.configOverrides??null,effort:s,sandbox:`read-only`,approvalPolicy:`never`,ephemeral:!0,onResult:o})}finally{await f?.close()}}function De(e){return a(e).filter(e=>b.includes(e.status)).flatMap(t=>C(h(e,t.id)).filter(e=>!e.response).map(e=>({taskId:t.id,id:e.id,summary:String(e.summary??``),createdAt:e.createdAt?String(e.createdAt):void 0})))}function $(e){return a(e).filter(t=>!S.includes(t.status)||!x(Date.parse(t.completedAt??t.updatedAt??t.createdAt??``))||(ne(e,t,{auto:!0}),!1))}function Oe(e,t={}){let n=t.limit===`all`?void 0:t.limit,r=e=>S.includes(e.status),i=d(e),a=new Set(i.map(e=>e.id)),s=e=>e.filter(e=>!a.has(e.id)),c=[...s($(e)),...i.filter(e=>!e.archived)];if(t.archived?c=[...s(o(e)),...i.filter(e=>e.archived)]:t.running?c=c.filter(e=>b.includes(e.status)):t.stopped&&(c=c.filter(r)),t.dir){let e=l(U.resolve(String(t.dir))),n=new Map;c=c.filter(t=>t.cwd?(n.has(t.cwd)||n.set(t.cwd,l(t.cwd)),n.get(t.cwd)===e):!1)}let u=e=>({rank:A(e.status),createdAt:Date.parse(e.createdAt??``)||0,id:e.id});c=[...c].sort((e,t)=>T(u(e),u(t)));let f=n===void 0?0:Math.max(0,c.length-n);return n!==void 0&&(c=c.slice(0,n)),{tasks:c,clipped:f}}async function*ke(e,t,n={}){let r=_(e,t);try{let i=ee(),a=f(e,t);if(!a)throw Error(`No task found for "${t}".`);let o=n.tail??1,s=oe(U.join(h(e,t),`log.jsonl`)),l=!0,u=()=>{let e=s().map(e=>{try{return JSON.parse(e)}catch{return{message:e}}});return l?(l=!1,o===`all`?e:re(e,o)):e};for(yield*u();a=c(e,f(e,t)??a,i),!S.includes(a.status);)await r.wait(1e3),yield*u();yield*u()}finally{r.close()}}async function Ae(t,n,r={}){let i=n.engine===`claude`?{detail:`claude worker terminated`}:await(r.interrupt??I)(t,{endpoint:n.steerEndpoint,threadId:n.threadId,turnId:n.turnId});if(n.engine!==`claude`&&M(n.steerEndpoint),n.pid&&n.status===`running`)try{W.kill(n.pid,`SIGTERM`)}catch{}return e(t,n.id,{status:`cancelled`,error:`Stopped by user.`,steerEndpoint:null,completedAt:new Date().toISOString()}),{taskId:n.id,status:`cancelled`,interrupt:i.detail}}function je(e,t){for(let n of Y(t))t.engine===`claude`?w(n):te(e,n);return u(e,t.id)}export{ye as a,Ae as c,Y as d,ve as f,J as h,je as i,ke as l,X as m,De as n,$ as o,_e as p,Oe as r,Q as s,Ee as t,he as u};
|
package/dist/adapter-BT8ECcRG.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{f as e,l as t,u as n}from"./slack-Bo5l13Rs.js";import{l as r}from"./dist-DAnSqY1s.js";import{createGitHubAdapter as i}from"./dist-B2jiMMxZ.js";function a(a){let o=a.credentials?.webhookSecret,s=a.installationId,c,l=i({userName:a.name,apiUrl:`https://api.github.com`,botUserId:0,installationToken:()=>s?c??=a.token(s,{tools:n.read}):Promise.reject(Error(`The webhook names no GitHub installation`)),webhookVerifier:(e,n)=>t(n,e.headers.get(`x-hub-signature-256`),o),logger:new r(`error`)});return e(l.octokit,a.fetch),l}export{a as githubAdapter};
|
package/dist/agent-BA6xr8QY.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{qi as e}from"./core-DwsAMCnL.js";import{Zt as t}from"./output-D95NoAA9.js";import{o as n}from"./load-zhcrwSRF.js";import{r,t as i}from"./remote-CDm0YUU3.js";import{t as a}from"./types-D_xnfP7m.js";import{t as o}from"./integrations-DyInAa5g.js";import{l as s,r as c}from"./exec-iFssTO5V.js";import{c as l,o as u,u as d}from"./task-BU1JEK9X.js";import{r as f}from"./match-Bq4sDuCy.js";import p from"node:path";import m from"node:process";import h from"node:fs";import{spawn as g}from"node:child_process";import _ from"node:os";import v from"node:fs/promises";const y=[`SIGTERM`,`SIGINT`],b=/\x1b\[[0-9;?]*[ -/]*[@-~]|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)|\x1b[()][A-Z0-9]|\r/g;function x(e,t){if(e===`codex`)return{file:`codex`,args:[`login`,`--device-auth`],env:{CODEX_HOME:t}};let n=`stty cols 4000 rows 50 2>/dev/null; exec claude setup-token`;return{file:`sh`,args:[`-c`,`cat | { ${m.platform===`darwin`?`script -q /dev/null sh -c '${n}'`:`script -qfec '${n}' /dev/null`}; kill 0; }`],env:{CLAUDE_CONFIG_DIR:t,BROWSER:`true`}}}function S(e){try{return JSON.parse(Buffer.from(String(e).split(`.`)[1]??``,`base64url`).toString())}catch{return{}}}function C(e){let t=S(JSON.parse(e).tokens?.id_token),n=t[`https://api.openai.com/auth`];return{...typeof t.email==`string`?{email:t.email}:{},...typeof n?.chatgpt_plan_type==`string`?{plan:n.chatgpt_plan_type}:{}}}function w(e,t){let n=t.replace(b,``),r=/\x1b\]8;[^;]*;(https:\/\/[^\x07\x1b]+)(?:\x07|\x1b\\)/.exec(t)?.[1],i=e===`claude`?r??/https:\/\/\S*(?:oauth|authorize)\S*(?=\s)/.exec(n)?.[0]:/https:\/\/\S+(?=\s)/.exec(n)?.[0],a=e===`codex`?/\b[A-Z0-9]{4,}-[A-Z0-9]{4,}\b/.exec(n)?.[0]:void 0;if(!(!i||e===`codex`&&!a))return{url:i,...a?{code:a}:{}}}const T=/sk-ant-oat[\w-]+/,E=e=>e.replace(/[\w#.%-]{20,}|\b[A-Z0-9]{4,}-[A-Z0-9]{4,}\b/g,`…`).slice(-600),D=/\x1b(?:\[([0-9;?<>=]*)[ -/]*([@-~])|\][^\x07\x1b]*(?:\x07|\x1b\\)|[()][\s\S]|[^[\]()])/y;var O=class{height;rows=[[]];row=0;col=0;saved=[0,0];rest=``;constructor(e=50){this.height=e}write(e){let t=this.rest+e;this.rest=``;for(let e=0;e<t.length;){if(t[e]===`\x1B`){D.lastIndex=e;let n=D.exec(t);if(!n){this.rest=t.slice(e,e+4096);return}n[2]&&!/^[?<>=]/.test(n[1])?this.csi(n[1].split(`;`),n[2]):n[0]===`\x1B7`?this.saved=[this.row,this.col]:n[0]===`\x1B8`&&([this.row,this.col]=this.saved),e+=n[0].length;continue}let n=t.codePointAt(e),r=String.fromCodePoint(n);e+=r.length,r===`\r`?this.col=0:r===`
|
|
2
|
-
`?this.down():r===`\b`?this.col=Math.max(0,this.col-1):n>=32&&n!==127&&(this.line()[this.col++]=r)}}text(){return this.rows.map(e=>Array.from(e,e=>e??` `).join(``).trimEnd()).join(`
|
|
3
|
-
`)}line(){return this.rows[this.row]??=[]}down(){this.row<this.height-1?this.row++:this.rows.splice(0,this.rows.length-this.height+1)}csi(e,t){let n=(t=0)=>Number(e[t])||1,r=Number(e[0])||0,i=this.height-1;if(t===`A`)this.row=Math.max(0,this.row-n());else if(t===`B`)this.row=Math.min(i,this.row+n());else if(t===`C`)this.col+=n();else if(t===`D`)this.col=Math.max(0,this.col-n());else if(t===`E`||t===`F`)this.row=Math.max(0,Math.min(i,this.row+(t===`E`?n():-n()))),this.col=0;else if(t===`G`)this.col=n()-1;else if(t===`d`)this.row=Math.min(i,n()-1);else if(t===`H`||t===`f`)this.row=Math.min(i,n()-1),this.col=n(1)-1;else if(t===`K`){let e=this.line();r===0?e.length=Math.min(e.length,this.col):r===1?e.fill(` `,0,this.col+1):e.length=0}else t===`J`?r===0?(this.line().length=Math.min(this.line().length,this.col),this.rows.length=Math.min(this.rows.length,this.row+1)):r>=2&&(this.rows=[]):t===`s`?this.saved=[this.row,this.col]:t===`u`&&([this.row,this.col]=this.saved)}};async function k(e,t){let{server:n,token:r}=d();delete m.env.CODER_TASK_TOKEN,delete m.env.CODER_LOGIN;let i=new AbortController,a=async(t,a)=>{let o=t?i.signal:void 0;for(let i=1;;i++){let s=await fetch(`${n}/logins/${encodeURIComponent(e)}${t}`,{method:a===void 0?`GET`:`POST`,...o?{signal:o}:{},headers:{authorization:`Bearer ${r}`,...a===void 0?{}:{"content-type":`application/json`}},...a===void 0?{}:{body:JSON.stringify(a)}}).catch(e=>{if(o?.aborted||t===`/input`||i>=10)throw e;console.error(`coder runner: Coder server did not answer: ${e.message}`)});if(s?.ok)return await s.json();if(s&&(s.status<500||i>=10))throw Error(`Coder server answered ${s.status}`);s&&console.error(`coder runner: Coder server answered ${s.status}`),await new Promise(e=>setTimeout(e,1e3))}},{engine:o}=await a(``),s=await v.mkdtemp(p.join(t,`.login-`)),c=x(o,s),l=g(c.file,c.args,{env:{...m.env,...c.env},stdio:[`pipe`,`pipe`,`pipe`],detached:!0}),u=()=>{try{m.kill(-l.pid,`SIGTERM`)}catch{}},f=``,h=new O,_=!1,S=!1,D=0,k,A,j,M=new Promise((e,t)=>{l.once(`error`,t),l.once(`close`,e)}),N=setTimeout(u,6e5);for(let e of y)m.once(e,u);let P=async()=>{for(;!i.signal.aborted;){let{code:e}=await a(`/input`);if(e){k=f.length,l.stdin.write(e),await new Promise(e=>setTimeout(e,500)),l.stdin.write(`\r`),m.stdout.write(`Sign-in code typed
|
|
4
|
-
`);let t=k;setTimeout(()=>{k===t&&!_&&console.error(`coder runner: claude has not answered the code: ${JSON.stringify(E(h.text()))}`)},2e4).unref();return}}},F=e=>{if(f+=e,h.write(e),!S){let e=w(o,f.slice(D));e&&(S=!0,clearInterval(A),m.stdout.write(`Sign-in link ready
|
|
5
|
-
`),a(``,e).catch(()=>u()),o===`claude`&&P().catch(()=>{i.signal.aborted||u()}))}o===`claude`&&!_&&T.test(h.text())&&(_=!0,m.stdout.write(`Sign-in token shown
|
|
6
|
-
`),j=setTimeout(u,2e3)),(k===void 0?``:f.slice(k).replace(b,``).replace(/\s/g,``)).includes(`PressEntertoretry`)&&(m.stdout.write(`Sign-in code rejected; asking claude for a new link
|
|
7
|
-
`),k=void 0,D=f.length,S=!1,A=setInterval(()=>l.stdin.write(`\r`),1e3))};l.stdout.setEncoding(`utf8`).on(`data`,F),l.stderr.setEncoding(`utf8`).on(`data`,F);try{let e=await M;i.abort();let t=h.text(),n=T.exec(t)?.[0];if(o===`claude`&&n){let e=/[\w.+-]+@[\w-]+(?:\.[\w-]+)+/.exec(t)?.[0];await a(``,{result:{env:{CLAUDE_CODE_OAUTH_TOKEN:n},...e?{account:{email:e}}:{}}})}else if(o===`codex`&&e===0){let e=await v.readFile(p.join(s,`auth.json`),`utf8`);await a(``,{result:{env:{CODEX_AUTH_JSON:e},account:C(e)}})}else console.error(`coder runner: ${o} sign-in ended (exit ${e}): ${JSON.stringify(E(t))}`),await a(``,{error:S?`Sign-in did not finish. Start again.`:`${o} sign-in could not start.`}).catch(()=>{});m.stdout.write(`Sign-in finished
|
|
8
|
-
`)}finally{clearTimeout(N),clearTimeout(j),clearInterval(A);for(let e of y)m.off(e,u);i.abort(),u(),await v.rm(s,{recursive:!0,force:!0})}}var A=e({agentIdError:()=>P,agents:()=>z,regexError:()=>F});const j=e=>e.cwd?p.resolve(e.cwd):m.cwd(),M=e=>(Array.isArray(e)?e:(e??``).split(`,`)).map(e=>e.trim()).filter(Boolean),N=/^[a-z0-9][a-z0-9_-]*$/;function P(e,t){if(!N.test(t))return`Use lowercase letters, digits, - or _, starting with a letter or digit.`;let n=p.join(e,`.coder`,`agents`,t);if(h.existsSync(n)&&h.readdirSync(n).length>0)return`${p.relative(e,n)} is not empty; clear it to start over, or edit what is there.`}function F(e){try{new RegExp(e);return}catch{return`Not a valid regular expression.`}}function I(e,t){let n=o[e]?.sample;return{integration:e,type:t,appId:`${e}:sample`,installationId:`sample`,deliveryId:`sample-1`,actor:{id:`user-1`,login:`someone`,role:`member`},text:`Replace me with the text a real event would carry.`,...n?{chat:{thread:{_type:`chat:Thread`,adapterName:e,channelId:n.slice(0,n.lastIndexOf(`:`)),id:n,isDM:!1}}}:{}}}async function L(e,n={}){let r=j(n);if(!e&&n.askId&&(e=await n.askId(e=>P(r,e))),!e)throw new t(`invalid-option`,`Missing agent id.`,{hint:`Usage: coder agent init <id>`});let i=P(r,e);if(i)throw new t(`invalid-option`,i.includes(`not empty`)?i:`Agent id "${e}": ${i}`);let s=p.join(r,`.coder`,`agents`,e),c=n.askPicks?await n.askPicks(e):{...n.name?{name:n.name}:{},integrations:M(n.integrations).length?M(n.integrations):[Object.keys(o)[0]],events:{},matches:{},access:n.access??`write`};if(!a.includes(c.access))throw new t(`invalid-option`,`Unknown access "${c.access}"; valid: ${a.join(`, `)}`);let l={},u=M(n.events),d=e=>Object.keys(o[e]?.events??{});for(let e of c.integrations)if(!o[e])throw new t(`invalid-option`,`Unknown integration "${e}"; valid: ${Object.keys(o).join(`, `)}`);for(let e of u)if(!c.integrations.some(t=>d(t).includes(e)))throw new t(`invalid-option`,`No chosen integration has event "${e}".`,{hint:`Events per integration: coder agent integrations show <id>`});let f=Object.fromEntries(M(n.match).map(e=>{let n=e.indexOf(`=`);if(n<1)throw new t(`invalid-option`,`Bad --match "${e}"; use event=regex.`);let r=e.slice(n+1);if(F(r))throw new t(`invalid-option`,`Bad --match for ${e.slice(0,n)}: ${F(r)}`);return[e.slice(0,n),r]}));for(let e of c.integrations){let n=d(e),r=c.events[e]??(u.length?u.filter(e=>n.includes(e)):[n.includes(`mention`)?`mention`:n[0]]);for(let i of r)if(!n.includes(i))throw new t(`invalid-option`,`${e} has no event "${i}"; valid: ${n.join(`, `)}`);let i={...f,...c.matches[e]??{}},a=r.filter(e=>i[e]);r.length&&(l[e]={events:a.length?Object.fromEntries(r.map(e=>[e,!i[e]||{match:i[e]}])):r})}let m={...c.name?{name:c.name}:{},...n.description?{description:n.description}:{},permissions:n.permissions??`auto`,access:c.access,integrations:l};await v.mkdir(s,{recursive:!0}),await v.writeFile(p.join(s,`agent.json`),`${JSON.stringify(m,null,2)}\n`),await v.writeFile(p.join(s,`system.md`),``);let h=p.join(_.tmpdir(),`coder-agent-samples`,e),g=[];for(let[e,t]of Object.entries(l)){let n=(Array.isArray(t.events)?t.events:Object.keys(t.events??{}))[0];await v.mkdir(h,{recursive:!0});let r=p.join(h,`sample-${e}-${n}.json`);await v.writeFile(r,`${JSON.stringify(I(e,n),null,2)}\n`),g.push(r)}return{id:e,dir:s,files:[`agent.json`,`system.md`],samples:g,integrations:Object.keys(l)}}function R(e){if(e===void 0||typeof e==`number`)return e;if(/^\d+$/.test(e))return Number(e);let n=/^(\d+)([dh])$/.exec(e);if(!n)throw new t(`invalid-option`,`Invalid --since value.`,{hint:`Use 7d, 24h, or milliseconds since epoch`});return Date.now()-Number(n[1])*(n[2]===`d`?864e5:36e5)}const z={list:(e={})=>e.server===void 0?n(j(e),o):i(e).agents.list(),async show(e,r={}){if(!e)throw new t(`invalid-option`,`Missing agent id.`,{hint:`Usage: coder agent show <id>`});if(r.server===void 0){let i=(await n(j(r),o)).find(t=>t.id===e);if(!i)throw new t(`invalid-option`,`No agent named "${e}".`,{hint:`List agents: coder agent list`});return i}let a=i(r),s=await a.agents.get(e),c=await a.agents.version(e,s.currentVersion);return{...s,definition:c.definition}},init:L,push:(e,t={})=>r(i(t),j(t),e),async run(e,r,a={}){if(a.wait&&a.server===void 0)throw new t(`invalid-option`,`--wait needs --server.`,{hint:`Offline runs print their reply as they finish`});if(!e||!r)throw new t(`invalid-option`,`Missing agent id or event file.`,{hint:`Usage: coder agent run <agent> <event.json>`});let l=j(a),u=typeof r==`string`?JSON.parse(await v.readFile(p.resolve(l,r),`utf8`)):r;if(a.server!==void 0){let t=i(a),n=await t.tasks.create({agent:e,event:u});if(!a.wait||!n.tasks.length)return n;let r=[];for(let e of n.tasks){let n=await t.tasks.wait(e,{onLog:a.onLog});r.push(n),a.onDone?.(n)}return r}let d=await n(l,o),m=d.find(t=>t.id===e);if(!m)throw new t(`invalid-option`,`No agent named "${e}".`);let h=f(u,d).find(t=>t.agent.id===e),g=a.flow??h?.flow;if(!g)throw new t(`invalid-option`,`Agent "${e}" does not match event "${u.type}".`);return c({cwd:l,agent:e,flow:g,task:{...s(m,g,u),tools:{},...h?.permissions?{permissions:h.permissions}:{}},post:!1})},runTask(e,t={}){let n=j(t);return m.env.CODER_LOGIN?k(e,n):m.env.CODER_PREPARE?u(e,n):l(e,n)},async usage(e={}){if(e.by&&![`agent`,`installation`,`engine`].includes(e.by))throw new t(`invalid-option`,`Invalid --by value.`,{hint:`Use agent, installation, or engine`});let n=e.by;if(e.server!==void 0)return i(e).usage({since:R(e.since),by:n});let[{localUsage:r},{usageSummary:a}]=await Promise.all([import(`./apps-D-v5sQJk.js`).then(e=>e.Ft),import(`./apps-D-v5sQJk.js`).then(e=>e.wn)]);return a(r(j(e)).map(([,e])=>e),R(e.since)??0,n)},integrations:{list:()=>Object.entries(o).map(([e,t])=>({id:e,description:t.description,events:Object.keys(t.events),tools:t.tools.presets.write})),show(e){if(!e)throw new t(`invalid-option`,`Missing integration id.`,{hint:`Usage: coder agent integrations show <id>`});let n=o[e];if(!n)throw new t(`invalid-option`,`Unknown integration "${e}".`,{hint:`List integrations: coder agent integrations list`});return{id:e,events:Object.fromEntries(Object.entries(n.events).map(([e,t])=>[e,t.description])),tools:n.tools.presets}}}};export{z as n,A as t};
|