@wular/coder 0.4.3 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions-CmfXOVXQ.js +20 -0
- package/dist/add-Bffwutko.js +1 -0
- package/dist/add-Bz8uaOcu.js +1 -0
- package/dist/add-DTwoL7vJ.js +1 -0
- package/dist/add-cdKdz3K0.js +6 -0
- package/dist/add-json-BIcbE3Nf.js +1 -0
- package/dist/agent-BcXXkOmD.js +3 -0
- package/dist/agent-DQK_S1PE.js +1 -0
- package/dist/alias-KQ85bphl.js +2 -0
- package/dist/app-DaccLHrx.js +1 -0
- package/dist/approvals-CZt_aPCy.js +2 -0
- package/dist/approve-DxjyXd66.js +2 -0
- package/dist/apps-eueTmHR5.js +1 -0
- package/dist/archive-C3JazQuo.js +3 -0
- package/dist/archive-C9yrU4Wg.js +4 -0
- package/dist/archive-sweep-CHbOP-p6.js +1 -0
- package/dist/args-DEMOfLz2.js +1 -0
- package/dist/ask-DdYrvsTk.js +4 -0
- package/dist/auth-FTKev9__.js +1 -0
- package/dist/auth-q8CROpG-.js +1 -0
- package/dist/chat-bridge-18koyS7c.js +2 -0
- package/dist/cli-msOzZFXW.js +9 -0
- package/dist/cli.js +1 -1
- package/dist/config-BllYHi8S.js +3 -0
- package/dist/create-BYki3g42.js +1 -0
- package/dist/credentials-DLMuf9OT.js +1 -0
- package/dist/dash/standalone/node_modules/@tanstack/virtual-core/dist/esm/index.js +1238 -0
- package/dist/dash/standalone/node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js +34 -0
- package/dist/dash/standalone/node_modules/@tanstack/virtual-core/dist/esm/utils.js +74 -0
- package/dist/dash/standalone/node_modules/@tanstack/virtual-core/package.json +56 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/config/ts/react.json +10 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/boot-bhemypxz.js +38 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/build-tier-0a96kmx3.js +2456 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/config-0tvz03a6.js +24 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/generate-myw9hef7.js +22 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-0r5eqfc7.js +279 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-0yjv5v47.js +105 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-11xpbfej.js +17 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-141vcwk6.js +109 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-29pq0kax.js +590 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-2vz0wzdn.js +59 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-2wfv4kvx.js +182 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-3e075kny.js +128 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-3ycf5ckv.js +472 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-4399bvd2.js +18 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-4da76t62.js +297 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-4zzebszd.js +10 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-52k54ykj.js +95 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-5hr4062s.js +70 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-68m3mwbd.js +84 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-6b009mt0.js +56 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-6kp9r0d9.js +11 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-6q7zvrap.js +134 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-71885zaq.js +284 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-73z4esab.js +38 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-79ngvam8.js +60 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-7wc9n8be.js +25 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-8ct7rqy3.js +198 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-8kcxdfya.js +206 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-9f49w76j.js +213 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-9hz3s0m8.js +851 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-akkrvjn6.js +535 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-b6wtkdp4.js +24 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-b7j671dj.js +207 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-bcws5eh2.js +35 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-bzd2ef7t.js +10 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-cjgqs13g.js +65 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-ckkdpht5.js +41 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-cn86z041.js +296 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-cvr4z22m.js +92 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-d158y67j.js +152 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-d1jsmhhk.js +955 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-dgr390q7.js +9438 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-e3a6yx84.js +18 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-en7n9f7m.js +22 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-ezgj0tr1.js +88 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-fn1chkkd.js +214 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-fp8r0sqs.js +64 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-gcmj16xy.js +92 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-gkndxkxf.js +736 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-grta8ap3.js +238 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-h2a70tg4.js +7 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-h4xy648y.js +51 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-hdbwtdv2.js +352 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-he6n2bvp.js +1270 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-j0m1jxqa.js +1253 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-j2zrcp1k.js +66 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-j681c48a.js +2530 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-jbj7ehef.js +50 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-jcsjq3d1.js +20 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-jks0x0a1.js +14 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-jn9rbhrx.js +1599 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-jt8e1pje.js +12 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-kdhxpwyq.js +483 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-knp0s912.js +7 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-kresp2n8.js +445 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-m63czgq5.js +590 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-n4hxpng2.js +11 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-n629dy38.js +1071 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-nf3df4jy.js +266 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-nqh3xhdc.js +57 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-pym1cezq.js +39 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-q3r9z8mq.js +213 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-q738kkhj.js +100 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-qcrvt6er.js +112 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-qjj6gddn.js +54 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-qpwsgt3a.js +158 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-ras0sdab.js +26 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-rcs322t1.js +19 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-rgj5mx84.js +101 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-rt9qq1va.js +4 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-sq3kvz3g.js +200 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-stbk3jhn.js +31 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-tf4j19ge.js +130 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-tgcakdxc.js +125 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-tgsfjmep.js +74 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-tq3b39a5.js +107 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-typcbcsv.js +819 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-v1ags1na.js +132 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-vmr35jjw.js +170 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-vz0km5qk.js +33 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-w6h8m6vp.js +138 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-web361b8.js +138 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-wm36rj4v.js +311 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-x0y005nh.js +283 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-x2m17v9c.js +6166 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-x9c55pzy.js +871 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-xh1nbk46.js +1299 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-xvj80c3a.js +30 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-y4d02znn.js +66 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-y7mzvq2q.js +110 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-ye9hmsvf.js +47 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-yhxkxghe.js +56 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-yrjkqtfj.js +86 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-z88qv16t.js +11 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/index-zqpqyg8p.js +666 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/pipeline-4t9q43ht.js +836 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/proxy-config-60gprphe.js +23 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/proxy-gfhmktbk.js +35 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/router-xnrva921.js +501 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/routes-ht868pdc.js +66 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/_chunks/tsconfig-defaults-bcn34eqb.js +21 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/dist/server/cli/start.js +158 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/package.json +98 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/src/api/client-navigation.ts +337 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/src/api/dynamic.tsx +188 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/src/api/link.tsx +118 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/src/api/navigation.ts +199 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/src/api/server.ts +349 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/src/api/suspense.ts +16 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/src/client/router/events.ts +68 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/src/client/router/history.ts +70 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/src/client/router/hub.ts +201 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/src/client/router/index.ts +168 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/src/client/router/page-slot.ts +139 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/src/client/router/policies.ts +107 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/src/client/router/runtime.ts +6272 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/src/request/cache.ts +64 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/src/routing/href.ts +236 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/src/utils/decode.ts +7 -0
- package/dist/dash/standalone/node_modules/@wular/pnext/tsconfig.json +10 -0
- package/dist/dash/standalone/node_modules/dotenv/lib/main.js +386 -0
- package/dist/dash/standalone/node_modules/dotenv/package.json +62 -0
- package/dist/dash/standalone/node_modules/preact/compat/client.mjs +24 -0
- package/dist/dash/standalone/node_modules/preact/compat/dist/compat.mjs +2 -0
- package/dist/dash/standalone/node_modules/preact/compat/package.json +55 -0
- package/dist/dash/standalone/node_modules/preact/dist/preact.mjs +2 -0
- package/dist/dash/standalone/node_modules/preact/hooks/dist/hooks.mjs +2 -0
- package/dist/dash/standalone/node_modules/preact/hooks/package.json +35 -0
- package/dist/dash/standalone/node_modules/preact/jsx-runtime/dist/jsxRuntime.mjs +2 -0
- package/dist/dash/standalone/node_modules/preact/jsx-runtime/package.json +28 -0
- package/dist/dash/standalone/node_modules/preact/package.json +265 -0
- package/dist/dash/standalone/node_modules/preact-render-to-string/dist/index.mjs +2 -0
- package/dist/dash/standalone/node_modules/preact-render-to-string/dist/stream/index.mjs +2 -0
- package/dist/dash/standalone/node_modules/preact-render-to-string/package.json +147 -0
- package/dist/dash/standalone/node_modules/react/cjs/react.react-server.development.js +878 -0
- package/dist/dash/standalone/node_modules/react/cjs/react.react-server.production.js +436 -0
- package/dist/dash/standalone/node_modules/react/package.json +51 -0
- package/dist/dash/standalone/node_modules/react/react.react-server.js +7 -0
- package/dist/dash/standalone/node_modules/react-compiler-runtime/dist/index.js +385 -0
- package/dist/dash/standalone/node_modules/react-compiler-runtime/package.json +25 -0
- package/dist/dash/standalone/package.json +1 -0
- package/dist/dash/standalone/server/build-index.json +1 -0
- package/dist/dash/standalone/server/entry.js +1 -0
- package/dist/dash/standalone/server/manifest.json +3311 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/client/index.2feb1c162fab6033.js +336 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/core/defaults.f8b4eee28e030eda.js +27 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/core/errors.5e991e43e42bd943.js +21 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/core/task/log-view.d6aae19495a81adb.js +211 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/auth/sign-in.7ee1680af722840f.js +11 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/load.bdbf17006af803d1.js +45 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/types.0cf02e7714d7c1a2.js +5 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/connect/page.0a054a6c9dda53b3.js +23 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/account/loading.02d57ab48022f8d8.js +9 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/account/notify.b7451fdf9c3bb62a.js +34 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/account/page.f9ab6ed02876880e.js +113 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/account/sign-out.3368aed882d8f1ac.js +13 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/agent-menu.e4b6d486442476b5.js +12 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/agents-grid.0dbc57156286a18e.js +118 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/connect-apps.3a5673bcd9aa57d9.js +42 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/loading.8df9f4459410cfaa.js +18 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/page.8f85fbaff456c5fe.js +71 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/page.9ea9df9d5f80f310.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/layout.d3aec63db0f5230d.js +105 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/loading.d53d174ffe56aab3.js +5 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/page.3120ea9ec90cb9cc.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/page.7fd1bfcf08e25919.js +116 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/loading.849dc6e6050a7e21.js +10 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/page.143668a9c21806d6.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/page.31687af871d75d39.js +170 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/platform-actions.754eff65aec1ab59.js +70 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/agent-settings-form.861ed9832cbe89c1.js +268 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/agent-settings-form.d6de90cb40c3bd46.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/loading.2ec7a3b893925df0.js +8 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/page.1ed5379637860fab.js +35 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/tasks/loading.20a52282c5806719.js +5 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/tasks/page.4fd369ba79ed9943.js +11 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/@/app/dash/usage/range-bar.4408a4e0ee81b7b6.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/@/comps/ui/segmented.ded4aa5c0cd2c608.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/loading.43b58c5eef3d4253.js +48 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/page.78bf188a8077c64e.js +160 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/page.ae5cbdfc43af6658.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/versions-list.0c6811b66b2fcc49.js +41 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/edit/loading.a18042397ffeaf55.js +29 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/edit/page.1798dbd9cd334e8f.js +69 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/agent-pills.c5710a4f634f9d6a.js +67 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/agent-pills.dcf7e785044cc900.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/hero.a794a01218c5c9ce.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/hero.e5c5af2f9fab6a63.js +62 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/instructions.2176859ec1028fc0.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/instructions.403838f7cb218391.js +74 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/editor/@/app/dash/agents/(list)/page.f2e88eb443d45a74.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/editor/connect-repositories.6c7088fd2fcd54f4.js +11 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/editor/editor.4b164e6eb19daa2f.js +691 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/editor/editor.6b13621790a6d5d6.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/editor/import-picker.4bff9b5642aeab17.js +214 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/editor/names.cf9e376a918a5341.js +30 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/new/loading.72e1b274c475e39a.js +28 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/new/page.44f60b1a32344f70.js +55 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/layout.946ec7c4ebb1d7c6.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/layout.96376d18592adfa9.js +391 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/page.669f5926ae12d101.js +10 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/credentials-list.3bd27b14c0d60e48.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/credentials-list.3fbc413d972a0447.js +538 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/credentials.6423846391b20446.js +34 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/engines-list.39cd71b7dc568516.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/engines-list.5bad79f0d4e12e07.js +75 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/list.2a204889b73638d9.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/list.2cafbe93b7b2dc0f.js +172 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/loading.1a810cc50ea61706.js +6 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/mcp-list.1fc0f6165dd85b8c.js +249 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/mcp-list.d743e37cd6dc85d8.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/models-list.520cb30b291794c3.js +396 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/page.04b07f9c365be073.js +86 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/runners-list.3dac92fb9f64e2be.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/runners-list.67786d7d51692d19.js +380 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/layout.a619ac4fe999d1b5.js +39 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/model-options.2ca6c87aedf3588c.js +87 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/page.5edeae58f2154a50.js +6 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/settings-head.d726e31e4dd04d60.js +32 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/tunnel-guide.22448081e9e042d6.js +31 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/activity.b23683e6be363068.js +177 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/loading.a8f2aa099bd76606.js +37 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/page.d1ded90712ca586f.js +24 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/task-actions.f2be118dd5a02896.js +184 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/task-view.97433b52e6f7175c.js +593 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/task-view.c2288044c9032a89.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/composer-data.e2d442d6ecbaa6d3.js +63 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/composer.41721fb98004e79e.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/composer.78b7d3000d615c7c.js +730 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/list/status.9516cc22cbd5d84b.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/list/status.d78e769ff1411932.js +16 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/list/task.674ebeabafa0a7e1.js +53 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/list/tasks-list.55fa11c945f9c6db.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/list/tasks-list.9698bdff71c3b3c7.js +429 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/list/tasks-section.c77194f05c3f58fb.js +79 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/page.157ac3a0938206b0.js +16 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/@/app/dash/usage/range-bar.72f0c7c440fb34af.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/@/comps/ui/segmented.81631cafb8e3b260.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/custom-range.9343f6115e244cb4.js +64 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/day-chart.c7b7d04403f0fc79.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/day-chart.c7f6c8981a7acb15.js +70 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/loading.1716941ff725f152.js +15 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/metric.5481ab0e025e218e.js +10 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/page.4159d729e8aa0439.js +132 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/range-bar.671afdd0798f4de9.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/range-bar.8c9b18116c8eb5f0.js +60 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/stats.3b02ee8317b9c4e3.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/stats.7b8db8c56920b311.js +12 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/top-agents.441006da5b4eae17.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/top-agents.8af5d53eb64bae9c.js +89 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/usage.d6df7cb6980171ce.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/globals.89a59affc5df947b.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/layout.77960a272f19bf24.js +41 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/login/page.33464bce52044759.js +50 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/login/page.f852a09edc8b6b44.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/page.7e7f8611a9bb7b22.js +4 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/responsive.1fd73ea94977bfc0.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/zone.66f36b17e74cf5f8.js +10 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/@/comps/ui/toast.8d599c6821860a1c.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/auth-panel.3e020d19aa5ab464.js +48 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/auth-panel.e5af611567239b13.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/drawer.9090aa789dffa730.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/drawer.cf0eb4936a2c7222.js +30 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/heads.5407f7793f985b16.js +47 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/loading-card.9648c7782502babc.js +64 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/page-head.53db3a3d313c0473.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/page-head.857951b5dc1ad827.js +65 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/stream.4c04416dab6ffc52.js +39 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/task-toasts.b14bb1f66ed75e75.js +324 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/theme-choices.60d3a5adbd49989f.js +49 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/current-link.87758179b507850c.js +34 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/side-toggle.581456c353d76d67.js +36 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/to.248665fde7daaf07.js +11 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/badge.d21391f2f8573db8.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/badge.e52db98d78836f9a.js +31 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/card.4f9265213510ffd3.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/card.e6876039e375b849.js +40 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/collapse.60c9038c70fb9c46.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/collapse.730d674a8f7eeeae.js +33 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/combo.d478120a76502dd1.js +115 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/confirm.cd23ea20bdf120d2.js +53 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/confirm.fc6d4da835b75a30.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/field.37f93068217e1470.js +16 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/field.8db4420dfb447e42.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/filter.3e8df59ca8abf397.js +252 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/filter.9311d535531caaf3.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/icon.476b846e39908951.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/icon.93605083edf7efe3.js +19 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/icons.e17bdd0b5504787f.js +36 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/menu.3b3026ecd4dc31f0.js +103 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/menu.d412af459c187b41.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/segmented.171b067d7cb36977.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/segmented.620f07f6b949d7f1.js +38 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/select.14e820c8a26ab8b5.js +218 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/select.5dbceaae2ba7ace4.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/sentinel.332fb99b3a214f0e.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/sentinel.50afec82b0fd53a1.js +59 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/tabs.051c87be5bbb7f2b.js +27 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/tabs.87bc5cdfc4d1b85e.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/tail.25fd24d6cd0564b7.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/tail.2d57d68076cef3e1.js +25 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/toolbar.32503820243ede06.js +80 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/toolbar.5e35e79f4d575452.css.pnext-asset.js +0 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/client.f37a313f4811ddb8.js +26 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/format.ba382c381ea40e77.js +75 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/paged.64ead375df845ff2.js +152 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/range.f0a5ef1763ff3cb9.js +102 -0
- package/dist/dash/standalone/static/assets/chunks/agent-pills-0163fdf910179991.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/agent-settings-form-b1fcd9a5236b1fc7.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/agents-grid-1d8f0ec6cf8c797e.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/badge-9984d2fd0e7f995d.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/card-818c7a0d580e2e0d.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/combo-0d55fb62af761ac5.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/composer-44516934e5619d32.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/composer-8abfcac26339cc99.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/confirm-be929e2de15876a6.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/connect-apps-3e8b55a43315f58a.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/connect-repositories-8864a63f83ffd411.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/credentials-list-518af85578eacf6d.js +2 -0
- package/dist/dash/standalone/static/assets/chunks/custom-range-e8977f0d9699c1e6.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/editor-75d6d2d01f4fc35a.js +7 -0
- package/dist/dash/standalone/static/assets/chunks/engines-list-2f6b8b3f2e873e4d.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/field-43fea54c1c287e30.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/filter-55618648fc10c377.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/format-b19b8eec331414f4.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/heads-1326669bdce3da2f.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/instructions-0b968d5d0a58c716.js +2 -0
- package/dist/dash/standalone/static/assets/chunks/instructions-f3ecfb5c50f270c2.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/list-90a47c07c4dd932e.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/mcp-list-735e401c60ab51a3.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/models-list-999f54c76ca31379.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/platform-actions-4592c82f72b21b1a.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/runners-list-ab64a5fb01d5eef8.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/runtime-37175329f2865f15-1.js +2 -0
- package/dist/dash/standalone/static/assets/chunks/segmented-bf5a4c06605249e0.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/select-591ca78b6ae29bd8.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/sentinel-b4c91a38a5d79219.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/shared-init-17c1fd399ac53851.js +5 -0
- package/dist/dash/standalone/static/assets/chunks/shared-init-37175329f2865f15-2.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/shared-init-8a34c730aabe942d.js +2 -0
- package/dist/dash/standalone/static/assets/chunks/tail-74153aeac1f0baec.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/task-actions-26ad7f7c937f2589.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/task-view-0d085ce407e8511e.js +5 -0
- package/dist/dash/standalone/static/assets/chunks/tasks-list-e9e914cf5dd959e9.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/toolbar-a99d36b4b6f05bb1.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/versions-list-875a9a0ebb3f7d08.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/wular-pnext-37175329f2865f15-0.js +1 -0
- package/dist/dash/standalone/static/assets/dash-tasks-param-id-24265771fd1e3f78.css +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-1473d0349f242421.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-195f74ae46e817da.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-2b5532ce488c9391.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-2d3ea662f22db27f.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-43c0166e51dce87f.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-4ed05f9a51f559a3.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-652affde71fecdf7.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-82beeebf704714a6.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-899f9625435988dd.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-ad1fab64ee1a5b30.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-b2dccebfff1465f5.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-c8a42c9bfeded4e4.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-d04d2ffbb491564c.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-d060565c4d80b60e.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-dce6e1b84ee02f09.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-e753846e298d2403.js +1 -0
- package/dist/default-aLeIO8IR.js +1 -0
- package/dist/default-fMaQH1wm.js +1 -0
- package/dist/delete-Cj16PYaw.js +2 -0
- package/dist/delete-DNj3leWA.js +4 -0
- package/dist/disable-CQg5Vybq.js +1 -0
- package/dist/discover-CaAtyC0h.js +1 -0
- package/dist/discover-bVM8EJEz.js +3 -0
- package/dist/dispatch-YW1aqjEg.js +14 -0
- package/dist/docs-Byrpar10.js +2 -0
- package/dist/docs-CqeYenUp.js +2 -0
- package/dist/enable-8m3z7i3i.js +1 -0
- package/dist/env-LsVTi18f.js +1 -0
- package/dist/exec-DgI3boHa.js +11 -0
- package/dist/executor-HWnIIYUL.js +10 -0
- package/dist/flow/builtin/review.js +1 -1
- package/dist/flow/index.d.ts +2 -2
- package/dist/flow/index.js +1 -1
- package/dist/flow-DeCL3x2p.js +1 -0
- package/dist/github-actions-CvLya8ve.js +24 -0
- package/dist/http-DG54kyx4.js +1 -0
- package/dist/index-Xe8n_t2Z.d.ts +365 -0
- package/dist/init-BujliQ7q.js +1 -0
- package/dist/integrations-6kXL9hRo.js +1 -0
- package/dist/lib/broker.js +2 -2
- package/dist/list-BdiYneg5.js +1 -0
- package/dist/list-CXu4cr8D.js +4 -0
- package/dist/list-DGoVY-ao.js +1 -0
- package/dist/list-DbY1jyj3.js +2 -0
- package/dist/list-DhVfqr0A.js +1 -0
- package/dist/list-DyqtSWvn.js +1 -0
- package/dist/list-QLTjk5SN.js +3 -0
- package/dist/list-vKOTwd4G.js +4 -0
- package/dist/load-DDZfByUe.js +2 -0
- package/dist/local-B0GiaLV0.js +1 -0
- package/dist/login-BzdlmD_o.js +1 -0
- package/dist/login-otJB9SYu.js +1 -0
- package/dist/logout-DOrRoxDV.js +1 -0
- package/dist/maintenance-Bg_FzXSq.js +1 -0
- package/dist/match-DMI54zg4.js +1 -0
- package/dist/mcp-DgMoPoUo.js +1 -0
- package/dist/mcp-xSvAWiXX.js +1 -0
- package/dist/migrate-CN-fdMV9.js +2 -0
- package/dist/migrate-DAC6sFgg.js +1 -0
- package/dist/model-BJ-Sokha.js +1 -0
- package/dist/models-DGPrMV51.js +1 -0
- package/dist/prompt-K7-bKcTC.js +7 -0
- package/dist/push-Cg7-XT5h.js +1 -0
- package/dist/queue-yo-Z8TaE.js +117 -0
- package/dist/refresh-CmBQALAW.js +1 -0
- package/dist/remote-AcWWfKVS.js +1 -0
- package/dist/remove-BuaShRZ3.js +1 -0
- package/dist/remove-C8Rm8KP-.js +1 -0
- package/dist/remove-CcMma1x3.js +1 -0
- package/dist/remove-DgMg_OOu.js +1 -0
- package/dist/rename-C0vNcl8e.js +1 -0
- package/dist/result-C6ovl_Dn.js +5 -0
- package/dist/result-oQey_hdw.js +18 -0
- package/dist/resume-T_TXWfqE.js +3 -0
- package/dist/review-CCs6XUSO.js +7 -0
- package/dist/rotate-key-CYimsQR5.js +1 -0
- package/dist/run-BFYg-zZt.js +5 -0
- package/dist/run-D7F7JPV6.js +2 -0
- package/dist/run-hiPyO7js.js +2 -0
- package/dist/runner-D5jaEfhG.js +1 -0
- package/dist/runner-c-2w6Eoj.js +1 -0
- package/dist/sdk.d.ts +1 -2
- package/dist/sdk.js +1 -1
- package/dist/serve-BgGXjT_O.js +1 -0
- package/dist/serve-C-AD60Wa.js +12 -0
- package/dist/serve-GIK3fqKA.js +8 -0
- package/dist/serve-K3BVTcDI.js +2 -0
- package/dist/serve-xMihn4g-.js +1 -0
- package/dist/server-DQTGc55C.js +1 -0
- package/dist/setup-host-By8-gv_v.js +6 -0
- package/dist/shared-TznJgMFW.js +1 -0
- package/dist/show-C9ojrH5W.js +1 -0
- package/dist/show-o4yXzSWZ.js +1 -0
- package/dist/status-BBW7Qyde.js +1 -0
- package/dist/steer-D47cuggj.js +4 -0
- package/dist/stop-7brPdki9.js +1 -0
- package/dist/stop-CD2JW6dI.js +3 -0
- package/dist/store-BCBTo0rl.js +42 -0
- package/dist/store-qp7UE2ES.js +19 -0
- package/dist/task-CyrDqqf8.js +1 -0
- package/dist/task-DEp3GHwH.js +1 -0
- package/dist/task-DhZ5vhyY.js +5 -0
- package/dist/test-BcFQUHRo.js +1 -0
- package/dist/tools-D20XYPnO.js +1 -0
- package/dist/unalias-G3sM8fVw.js +1 -0
- package/dist/update-JvgB6Xws.js +2 -0
- package/dist/upgrade-DN3hXDdo.js +2 -0
- package/dist/usage-C1oN2W9c.js +1 -0
- package/dist/usage-DR3wWtYD.js +1 -0
- package/dist/watch-DDmHonTf.js +5 -0
- package/dist/watch-DYkC6Q2q.js +8 -0
- package/dist/wire-DxxfWapP.js +1 -0
- package/dist/worker-C4Lo6rLS.js +9 -0
- package/dist/worker-CaNTsqcD.js +1 -0
- package/dist/workflow-7rqzHHWZ.js +1 -0
- package/docs/cli.md +1 -2
- package/docs/config.md +1 -1
- package/docs/flows.md +12 -1
- package/docs/sdk.md +1 -1
- package/package.json +2 -10
- package/plugins/claude/.claude-plugin/plugin.json +1 -1
- package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
- package/dist/actions-FzDNxMFf.js +0 -20
- package/dist/add-B50dIJGd.js +0 -1
- package/dist/add-D7X3gxap.js +0 -1
- package/dist/add-DOEUHIe7.js +0 -1
- package/dist/add-QExQhTzi.js +0 -6
- package/dist/add-json-Ck4KIZrT.js +0 -1
- package/dist/agent-BPtnEf1q.js +0 -1
- package/dist/agent-BlQ_dNNm.js +0 -3
- package/dist/alias-BwQBovke.js +0 -2
- package/dist/app-y6BYm2eH.js +0 -1
- package/dist/approvals-Cc9cq5T1.js +0 -2
- package/dist/approve-oO9k2fnK.js +0 -2
- package/dist/apps-CU2YalX8.js +0 -1
- package/dist/archive-C5c_HQS1.js +0 -3
- package/dist/archive-CemlWlVY.js +0 -4
- package/dist/archive-sweep-ehg-fWIt.js +0 -1
- package/dist/args-DcBCtXhz.js +0 -1
- package/dist/ask-Chu7Twu_.js +0 -4
- package/dist/auth-BOyXPOtu.js +0 -1
- package/dist/auth-XbqKSbcD.js +0 -1
- package/dist/chat-bridge-DXgZItGP.js +0 -2
- package/dist/cli-B1ObVrL4.js +0 -9
- package/dist/config-DAE_qHYA.js +0 -3
- package/dist/create-CM8B8JxD.js +0 -1
- package/dist/credentials-BXD4Qptk.js +0 -1
- package/dist/dash/manifest.json +0 -3347
- package/dist/dash/public/assets/chunks/agent-pills-b6a6da91c9559d9f.js +0 -1
- package/dist/dash/public/assets/chunks/agent-settings-form-b615c677046cd6f2.js +0 -1
- package/dist/dash/public/assets/chunks/agents-grid-f2e7b4ff9e11b6e3.js +0 -1
- package/dist/dash/public/assets/chunks/badge-215c7b2631dafc69.js +0 -1
- package/dist/dash/public/assets/chunks/card-e86dcc81326d2b14.js +0 -1
- package/dist/dash/public/assets/chunks/combo-09e246dc9a517fa8.js +0 -1
- package/dist/dash/public/assets/chunks/composer-417166b029f48c47.js +0 -1
- package/dist/dash/public/assets/chunks/composer-645ae8fa97a35280.js +0 -1
- package/dist/dash/public/assets/chunks/confirm-5ae484241ad888fd.js +0 -1
- package/dist/dash/public/assets/chunks/connect-apps-4147c45f45fde2b1.js +0 -1
- package/dist/dash/public/assets/chunks/connect-repositories-77591110836bdf03.js +0 -1
- package/dist/dash/public/assets/chunks/credentials-list-e005a0783ec93465.js +0 -2
- package/dist/dash/public/assets/chunks/custom-range-463e119af4681c61.js +0 -1
- package/dist/dash/public/assets/chunks/editor-804b84f4fe6539cd.js +0 -7
- package/dist/dash/public/assets/chunks/engines-list-ceab51f13c690e8c.js +0 -1
- package/dist/dash/public/assets/chunks/field-aa0a4b98a976781e.js +0 -1
- package/dist/dash/public/assets/chunks/filter-91144ac2eec6297f.js +0 -1
- package/dist/dash/public/assets/chunks/format-105c706345987fb2.js +0 -1
- package/dist/dash/public/assets/chunks/heads-a42817b32d2d7f08.js +0 -1
- package/dist/dash/public/assets/chunks/instructions-3a1dcaff2d868aa5.js +0 -2
- package/dist/dash/public/assets/chunks/instructions-6c6f981fffaa31e4.js +0 -1
- package/dist/dash/public/assets/chunks/list-7270361464fc3c04.js +0 -1
- package/dist/dash/public/assets/chunks/mcp-list-2e715d48666b54ad.js +0 -1
- package/dist/dash/public/assets/chunks/models-list-d3c40f94c761a6e5.js +0 -1
- package/dist/dash/public/assets/chunks/platform-actions-271ec3b99a64280b.js +0 -1
- package/dist/dash/public/assets/chunks/runners-list-767e49c7d0ec833a.js +0 -1
- package/dist/dash/public/assets/chunks/runtime-246221e985d863e5-1.js +0 -2
- package/dist/dash/public/assets/chunks/segmented-de4386ccaac7304d.js +0 -1
- package/dist/dash/public/assets/chunks/select-a90307706cffa6e0.js +0 -1
- package/dist/dash/public/assets/chunks/sentinel-b5e032b38604dfd3.js +0 -1
- package/dist/dash/public/assets/chunks/shared-init-246221e985d863e5-2.js +0 -1
- package/dist/dash/public/assets/chunks/shared-init-7f81ae7bc8c82438.js +0 -2
- package/dist/dash/public/assets/chunks/shared-init-933c7f9ee85be766.js +0 -5
- package/dist/dash/public/assets/chunks/tail-4891e727ee526792.js +0 -1
- package/dist/dash/public/assets/chunks/task-actions-ce854925a2dc78fd.js +0 -1
- package/dist/dash/public/assets/chunks/task-view-c37dcee08f21a279.js +0 -5
- package/dist/dash/public/assets/chunks/tasks-list-baef587999f322d8.js +0 -1
- package/dist/dash/public/assets/chunks/toolbar-8d98313606ad8a2d.js +0 -1
- package/dist/dash/public/assets/chunks/versions-list-532690efd9f1b0ea.js +0 -1
- package/dist/dash/public/assets/chunks/wular-pnext-246221e985d863e5-0.js +0 -1
- package/dist/dash/public/assets/dash-tasks-param-id-194a6ffc20e872f2.css +0 -1
- package/dist/dash/public/assets/pnext-client-13aee92bef5c9e3f.js +0 -1
- package/dist/dash/public/assets/pnext-client-1f2686b2044f0df6.js +0 -1
- package/dist/dash/public/assets/pnext-client-26130234ebad7067.js +0 -1
- package/dist/dash/public/assets/pnext-client-311e35b0076bf406.js +0 -1
- package/dist/dash/public/assets/pnext-client-4ade1bf75c9c3d87.js +0 -1
- package/dist/dash/public/assets/pnext-client-61cd31b687ede1da.js +0 -1
- package/dist/dash/public/assets/pnext-client-61db65dc4223217a.js +0 -1
- package/dist/dash/public/assets/pnext-client-6ea656e7705e3f2a.js +0 -1
- package/dist/dash/public/assets/pnext-client-7fd0f793f0322cb9.js +0 -1
- package/dist/dash/public/assets/pnext-client-88159c0840fcfa4a.js +0 -1
- package/dist/dash/public/assets/pnext-client-b03f0c47c066b4f3.js +0 -1
- package/dist/dash/public/assets/pnext-client-d6478835f543f901.js +0 -1
- package/dist/dash/public/assets/pnext-client-dadb8359021ed590.js +0 -1
- package/dist/dash/public/assets/pnext-client-de07532d6aaebf2c.js +0 -1
- package/dist/dash/public/assets/pnext-client-f87a31890c8ff224.js +0 -1
- package/dist/dash/public/assets/pnext-client-ffe1c123a8e2a350.js +0 -1
- package/dist/dash/server/bundle-0.1.6-b29ec45cb963d47f/entry.js +0 -2
- package/dist/default-BMvUMTFp.js +0 -1
- package/dist/default-B_nKaX0-.js +0 -1
- package/dist/delete-Bjteibld.js +0 -4
- package/dist/delete-riCIKZwj.js +0 -2
- package/dist/disable-DQC56YFy.js +0 -1
- package/dist/discover-Qanr5TEO.js +0 -1
- package/dist/discover-lgTYwoQp.js +0 -3
- package/dist/dispatch-BsW_1m7e.js +0 -14
- package/dist/docs-DFs7lOJp.js +0 -2
- package/dist/docs-DKROso-4.js +0 -2
- package/dist/enable-D2DqZvcU.js +0 -1
- package/dist/env-YRY3I60r.js +0 -1
- package/dist/exec-DuUkLMqg.js +0 -11
- package/dist/executor-vMppVLB6.js +0 -10
- package/dist/flow-DmERAnR8.js +0 -1
- package/dist/github-actions-C_NkHVJq.js +0 -24
- package/dist/http-D01Udu4u.js +0 -1
- package/dist/index-B1L4zXZH.d.ts +0 -358
- package/dist/init-Bd6JHzBc.js +0 -1
- package/dist/integrations-D1Dwy1kt.js +0 -1
- package/dist/list-4Uo-0v9s.js +0 -3
- package/dist/list-B0ujEZhd.js +0 -4
- package/dist/list-B5oa1Bhy.js +0 -2
- package/dist/list-BjE_l6la.js +0 -1
- package/dist/list-Ck9ibCs1.js +0 -1
- package/dist/list-DhgK4Zc4.js +0 -1
- package/dist/list-KvL7AUhD.js +0 -4
- package/dist/list-byYLBl1U.js +0 -1
- package/dist/load-SnZd7xG1.js +0 -2
- package/dist/local-BRy1EUq2.js +0 -1
- package/dist/login-C-ahtDKV.js +0 -1
- package/dist/login-zpwke8g1.js +0 -1
- package/dist/logout-CI6Kf-T6.js +0 -1
- package/dist/maintenance-BAzr9Jlr.js +0 -1
- package/dist/match-DxV1d49D.js +0 -1
- package/dist/mcp-CmcL1MCG.js +0 -1
- package/dist/mcp-mhXwtGQT.js +0 -1
- package/dist/migrate-Czh3TEK5.js +0 -1
- package/dist/migrate-w7KfzUAR.js +0 -2
- package/dist/model-JRoTH9QK.js +0 -1
- package/dist/models-C-S7HqSb.js +0 -1
- package/dist/prompt-CMXmt2l9.js +0 -7
- package/dist/push-B8BhTyZs.js +0 -1
- package/dist/queue-CirjEskI.js +0 -117
- package/dist/refresh-Bmy2r1Ee.js +0 -1
- package/dist/remote-CxFnEjZl.js +0 -1
- package/dist/remove-C15WLaXT.js +0 -1
- package/dist/remove-CTZYjjSr.js +0 -1
- package/dist/remove-CTl-H0f0.js +0 -1
- package/dist/remove-DX2FVo5b.js +0 -1
- package/dist/rename-D1g4TnHQ.js +0 -1
- package/dist/result-D49VN8PM.js +0 -5
- package/dist/result-DGWyUHYU.js +0 -18
- package/dist/resume-ywzc7z6A.js +0 -3
- package/dist/review-ZC0xG8XY.js +0 -7
- package/dist/rotate-key-Bf8_99ck.js +0 -1
- package/dist/run-D7SJ-ieT.js +0 -5
- package/dist/run-DoRQSC_K.js +0 -2
- package/dist/run-ukCf2Mdy.js +0 -2
- package/dist/runner-D-REfOUe.js +0 -1
- package/dist/runner-wDYhkVsM.js +0 -1
- package/dist/serve-BJ_Mbm2m.js +0 -8
- package/dist/serve-C1MMhM1F.js +0 -2
- package/dist/serve-DtrOHaoS.js +0 -12
- package/dist/serve-P9pFkEnE.js +0 -1
- package/dist/serve-yjSw0B1a.js +0 -1
- package/dist/server-DDWTnmbx.js +0 -1
- package/dist/setup-host-L6Rnn5Cz.js +0 -6
- package/dist/shared-XsUX_ZZb.js +0 -1
- package/dist/show-CU-jqJ90.js +0 -1
- package/dist/show-DVJmB2u-.js +0 -1
- package/dist/status-CBydR7LE.js +0 -1
- package/dist/steer-Cm_sHZqs.js +0 -4
- package/dist/stop-DJS7DAPJ.js +0 -1
- package/dist/stop-TrebIIuv.js +0 -3
- package/dist/store-BrNMqJgk.js +0 -42
- package/dist/store-j8icrG0v.js +0 -19
- package/dist/task-C8lmcNsf.js +0 -1
- package/dist/task-CpUI19o2.js +0 -5
- package/dist/task-CvSqiwxo.js +0 -1
- package/dist/test-CDKz4jY_.js +0 -1
- package/dist/tools-DBFeoosk.js +0 -1
- package/dist/unalias-BfQFBnuK.js +0 -1
- package/dist/update-C4FFOie8.js +0 -2
- package/dist/upgrade-DLJqMnUQ.js +0 -2
- package/dist/usage-CSh-xwQ2.js +0 -1
- package/dist/usage-D8mc4qXK.js +0 -1
- package/dist/watch-CQu-tJKZ.js +0 -8
- package/dist/watch-DmwaEvoi.js +0 -5
- package/dist/wire-DzGLZ3-O.js +0 -1
- package/dist/worker-BLKTMLqa.js +0 -1
- package/dist/worker-nHemduM_.js +0 -9
- package/dist/workflow-IrouAus_.js +0 -1
- package/src/client/index.ts +0 -581
- package/src/client/types.ts +0 -524
- package/src/core/defaults.ts +0 -36
- package/src/core/errors.ts +0 -72
- package/src/core/task/log-view.ts +0 -287
- package/src/server/auth/sign-in.ts +0 -14
- package/src/server/dash/api/load.ts +0 -62
- package/src/server/dash/api/types.ts +0 -11
- package/src/server/dash/app/connect/page.tsx +0 -42
- package/src/server/dash/app/dash/account/loading.tsx +0 -11
- package/src/server/dash/app/dash/account/notify.tsx +0 -42
- package/src/server/dash/app/dash/account/page.css +0 -81
- package/src/server/dash/app/dash/account/page.tsx +0 -126
- package/src/server/dash/app/dash/account/sign-out.tsx +0 -24
- package/src/server/dash/app/dash/agents/(list)/agent-menu.tsx +0 -14
- package/src/server/dash/app/dash/agents/(list)/agents-grid.tsx +0 -126
- package/src/server/dash/app/dash/agents/(list)/connect-apps.tsx +0 -46
- package/src/server/dash/app/dash/agents/(list)/loading.tsx +0 -20
- package/src/server/dash/app/dash/agents/(list)/page.css +0 -72
- package/src/server/dash/app/dash/agents/(list)/page.tsx +0 -89
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/layout.tsx +0 -136
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/loading.tsx +0 -5
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/page.css +0 -21
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/page.tsx +0 -173
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/loading.tsx +0 -18
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/page.css +0 -87
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/page.tsx +0 -258
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/platform-actions.tsx +0 -111
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/agent-settings-form.css +0 -114
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/agent-settings-form.tsx +0 -294
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/loading.tsx +0 -5
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/page.tsx +0 -54
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/tasks/loading.tsx +0 -5
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/tasks/page.tsx +0 -14
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/loading.tsx +0 -31
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/page.css +0 -12
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/page.tsx +0 -163
- package/src/server/dash/app/dash/agents/[slug]/(tabs)/versions-list.tsx +0 -53
- package/src/server/dash/app/dash/agents/[slug]/edit/loading.tsx +0 -31
- package/src/server/dash/app/dash/agents/[slug]/edit/page.tsx +0 -91
- package/src/server/dash/app/dash/agents/agent/agent-pills.css +0 -27
- package/src/server/dash/app/dash/agents/agent/agent-pills.tsx +0 -133
- package/src/server/dash/app/dash/agents/agent/hero.css +0 -40
- package/src/server/dash/app/dash/agents/agent/hero.tsx +0 -60
- package/src/server/dash/app/dash/agents/agent/instructions.css +0 -29
- package/src/server/dash/app/dash/agents/agent/instructions.tsx +0 -82
- package/src/server/dash/app/dash/agents/editor/connect-repositories.ts +0 -16
- package/src/server/dash/app/dash/agents/editor/editor.css +0 -263
- package/src/server/dash/app/dash/agents/editor/editor.tsx +0 -774
- package/src/server/dash/app/dash/agents/editor/import-picker.css +0 -48
- package/src/server/dash/app/dash/agents/editor/import-picker.tsx +0 -253
- package/src/server/dash/app/dash/agents/editor/names.ts +0 -35
- package/src/server/dash/app/dash/agents/new/loading.tsx +0 -25
- package/src/server/dash/app/dash/agents/new/page.tsx +0 -72
- package/src/server/dash/app/dash/layout.css +0 -322
- package/src/server/dash/app/dash/layout.tsx +0 -354
- package/src/server/dash/app/dash/page.tsx +0 -14
- package/src/server/dash/app/dash/settings/[tab]/credentials-list.css +0 -94
- package/src/server/dash/app/dash/settings/[tab]/credentials-list.tsx +0 -626
- package/src/server/dash/app/dash/settings/[tab]/credentials.tsx +0 -36
- package/src/server/dash/app/dash/settings/[tab]/engines-list.css +0 -16
- package/src/server/dash/app/dash/settings/[tab]/engines-list.tsx +0 -135
- package/src/server/dash/app/dash/settings/[tab]/list.css +0 -98
- package/src/server/dash/app/dash/settings/[tab]/list.tsx +0 -215
- package/src/server/dash/app/dash/settings/[tab]/loading.tsx +0 -6
- package/src/server/dash/app/dash/settings/[tab]/mcp-list.css +0 -43
- package/src/server/dash/app/dash/settings/[tab]/mcp-list.tsx +0 -290
- package/src/server/dash/app/dash/settings/[tab]/models-list.tsx +0 -513
- package/src/server/dash/app/dash/settings/[tab]/page.tsx +0 -89
- package/src/server/dash/app/dash/settings/[tab]/runners-list.css +0 -153
- package/src/server/dash/app/dash/settings/[tab]/runners-list.tsx +0 -458
- package/src/server/dash/app/dash/settings/layout.tsx +0 -50
- package/src/server/dash/app/dash/settings/model-options.ts +0 -117
- package/src/server/dash/app/dash/settings/page.tsx +0 -7
- package/src/server/dash/app/dash/settings/settings-head.tsx +0 -24
- package/src/server/dash/app/dash/settings/tunnel-guide.tsx +0 -28
- package/src/server/dash/app/dash/tasks/[id]/activity.tsx +0 -247
- package/src/server/dash/app/dash/tasks/[id]/loading.tsx +0 -31
- package/src/server/dash/app/dash/tasks/[id]/page.tsx +0 -30
- package/src/server/dash/app/dash/tasks/[id]/task-actions.tsx +0 -201
- package/src/server/dash/app/dash/tasks/[id]/task-view.css +0 -428
- package/src/server/dash/app/dash/tasks/[id]/task-view.tsx +0 -605
- package/src/server/dash/app/dash/tasks/composer-data.ts +0 -96
- package/src/server/dash/app/dash/tasks/composer.css +0 -320
- package/src/server/dash/app/dash/tasks/composer.tsx +0 -891
- package/src/server/dash/app/dash/tasks/list/status.css +0 -50
- package/src/server/dash/app/dash/tasks/list/status.tsx +0 -20
- package/src/server/dash/app/dash/tasks/list/task.ts +0 -73
- package/src/server/dash/app/dash/tasks/list/tasks-list.css +0 -98
- package/src/server/dash/app/dash/tasks/list/tasks-list.tsx +0 -549
- package/src/server/dash/app/dash/tasks/list/tasks-section.tsx +0 -92
- package/src/server/dash/app/dash/tasks/page.tsx +0 -21
- package/src/server/dash/app/dash/usage/custom-range.tsx +0 -63
- package/src/server/dash/app/dash/usage/day-chart.css +0 -109
- package/src/server/dash/app/dash/usage/day-chart.tsx +0 -110
- package/src/server/dash/app/dash/usage/loading.tsx +0 -17
- package/src/server/dash/app/dash/usage/metric.ts +0 -13
- package/src/server/dash/app/dash/usage/page.tsx +0 -117
- package/src/server/dash/app/dash/usage/range-bar.css +0 -13
- package/src/server/dash/app/dash/usage/range-bar.tsx +0 -69
- package/src/server/dash/app/dash/usage/stats.css +0 -52
- package/src/server/dash/app/dash/usage/stats.tsx +0 -19
- package/src/server/dash/app/dash/usage/top-agents.css +0 -40
- package/src/server/dash/app/dash/usage/top-agents.tsx +0 -138
- package/src/server/dash/app/globals.css +0 -692
- package/src/server/dash/app/layout.tsx +0 -52
- package/src/server/dash/app/login/page.css +0 -26
- package/src/server/dash/app/login/page.tsx +0 -57
- package/src/server/dash/app/page.tsx +0 -5
- package/src/server/dash/app/responsive.css +0 -49
- package/src/server/dash/app/zone.tsx +0 -13
- package/src/server/dash/comps/frame/auth-panel.css +0 -60
- package/src/server/dash/comps/frame/auth-panel.tsx +0 -44
- package/src/server/dash/comps/frame/drawer.css +0 -28
- package/src/server/dash/comps/frame/drawer.tsx +0 -39
- package/src/server/dash/comps/frame/heads.ts +0 -41
- package/src/server/dash/comps/frame/loading-card.tsx +0 -66
- package/src/server/dash/comps/frame/page-head.css +0 -93
- package/src/server/dash/comps/frame/page-head.tsx +0 -72
- package/src/server/dash/comps/frame/stream.tsx +0 -50
- package/src/server/dash/comps/frame/task-toasts.tsx +0 -360
- package/src/server/dash/comps/frame/theme-choices.tsx +0 -46
- package/src/server/dash/comps/nav/current-link.tsx +0 -53
- package/src/server/dash/comps/nav/side-toggle.tsx +0 -41
- package/src/server/dash/comps/nav/to.ts +0 -22
- package/src/server/dash/comps/ui/badge.css +0 -64
- package/src/server/dash/comps/ui/badge.tsx +0 -41
- package/src/server/dash/comps/ui/card.css +0 -94
- package/src/server/dash/comps/ui/card.tsx +0 -77
- package/src/server/dash/comps/ui/collapse.css +0 -32
- package/src/server/dash/comps/ui/collapse.tsx +0 -49
- package/src/server/dash/comps/ui/combo.tsx +0 -154
- package/src/server/dash/comps/ui/confirm.css +0 -36
- package/src/server/dash/comps/ui/confirm.tsx +0 -67
- package/src/server/dash/comps/ui/field.css +0 -25
- package/src/server/dash/comps/ui/field.tsx +0 -34
- package/src/server/dash/comps/ui/filter.css +0 -64
- package/src/server/dash/comps/ui/filter.tsx +0 -336
- package/src/server/dash/comps/ui/icon.css +0 -22
- package/src/server/dash/comps/ui/icon.tsx +0 -17
- package/src/server/dash/comps/ui/icons.ts +0 -46
- package/src/server/dash/comps/ui/menu.css +0 -178
- package/src/server/dash/comps/ui/menu.tsx +0 -160
- package/src/server/dash/comps/ui/segmented.css +0 -44
- package/src/server/dash/comps/ui/segmented.tsx +0 -58
- package/src/server/dash/comps/ui/select.css +0 -103
- package/src/server/dash/comps/ui/select.tsx +0 -250
- package/src/server/dash/comps/ui/sentinel.css +0 -58
- package/src/server/dash/comps/ui/sentinel.tsx +0 -67
- package/src/server/dash/comps/ui/tabs.css +0 -81
- package/src/server/dash/comps/ui/tabs.tsx +0 -32
- package/src/server/dash/comps/ui/tail.css +0 -12
- package/src/server/dash/comps/ui/tail.tsx +0 -37
- package/src/server/dash/comps/ui/toast.css +0 -73
- package/src/server/dash/comps/ui/toolbar.css +0 -157
- package/src/server/dash/comps/ui/toolbar.tsx +0 -93
- package/src/server/dash/package.json +0 -5
- package/src/server/dash/pnext-env.d.ts +0 -4
- package/src/server/dash/pnext.config.ts +0 -5
- package/src/server/dash/public/assets/apple-touch-icon.png +0 -0
- package/src/server/dash/public/assets/favicon.ico +0 -0
- package/src/server/dash/public/assets/favicon.svg +0 -1
- package/src/server/dash/public/assets/fonts/LICENSE-fira-code +0 -93
- package/src/server/dash/public/assets/fonts/fira-code-latin-400-normal-717ee080.woff2 +0 -0
- package/src/server/dash/public/assets/fonts/fira-code-latin-500-normal-530b6706.woff2 +0 -0
- package/src/server/dash/public/assets/fonts/fira-code-latin-700-normal-98730669.woff2 +0 -0
- package/src/server/dash/tsconfig.json +0 -10
- package/src/server/dash/utils/client.ts +0 -40
- package/src/server/dash/utils/format.ts +0 -83
- package/src/server/dash/utils/paged.ts +0 -192
- package/src/server/dash/utils/range.ts +0 -117
- /package/{src/server/dash/app/dash/usage/usage.css → dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/account/page.1df2bb5150dd9575.css.pnext-asset.js} +0 -0
- /package/dist/dash/{public → standalone/static}/assets/apple-touch-icon.png +0 -0
- /package/dist/dash/{public → standalone/static}/assets/chunks/composer-data-6f7608fed13f3dd7.js +0 -0
- /package/dist/dash/{public → standalone/static}/assets/chunks/model-options-15c53331a2f28a4f.js +0 -0
- /package/dist/dash/{public → standalone/static}/assets/chunks/paged-3ddb6077bef42752.js +0 -0
- /package/dist/dash/{public → standalone/static}/assets/chunks/shared-init-8f2ac936c95a7f7b.js +0 -0
- /package/dist/dash/{public → standalone/static}/assets/chunks/task-ddfddeaf07fb684c.js +0 -0
- /package/dist/dash/{public → standalone/static}/assets/connect-382b1729a7ae7808.css +0 -0
- /package/dist/dash/{public → standalone/static}/assets/dash-49ca85b59ac65c20.css +0 -0
- /package/dist/dash/{public → standalone/static}/assets/dash-account-edc56e85dbaaabe0.css +0 -0
- /package/dist/dash/{public → standalone/static}/assets/dash-agents-edba57b67e4005d0.css +0 -0
- /package/dist/dash/{public → standalone/static}/assets/dash-agents-new-fe22253fbada2fbf.css +0 -0
- /package/dist/dash/{public → standalone/static}/assets/dash-agents-param-slug-adf52e9dacb2d825.css +0 -0
- /package/dist/dash/{public → standalone/static}/assets/dash-agents-param-slug-edit-a2937a347689ef29.css +0 -0
- /package/dist/dash/{public → standalone/static}/assets/dash-agents-param-slug-platforms-265ba13db32a460d.css +0 -0
- /package/dist/dash/{public → standalone/static}/assets/dash-agents-param-slug-settings-8afc52eb0372bc4b.css +0 -0
- /package/dist/dash/{public → standalone/static}/assets/dash-agents-param-slug-tasks-6193e646be68dbd2.css +0 -0
- /package/dist/dash/{public → standalone/static}/assets/dash-agents-param-slug-usage-ceadb3a1c911c402.css +0 -0
- /package/dist/dash/{public → standalone/static}/assets/dash-settings-cf1997cd7f72e518.css +0 -0
- /package/dist/dash/{public → standalone/static}/assets/dash-settings-param-tab-b44dac8e79a560e6.css +0 -0
- /package/dist/dash/{public → standalone/static}/assets/dash-tasks-916c7100a8058aa3.css +0 -0
- /package/dist/dash/{public → standalone/static}/assets/dash-usage-40940b289f85e0b6.css +0 -0
- /package/dist/dash/{public → standalone/static}/assets/favicon.ico +0 -0
- /package/dist/dash/{public → standalone/static}/assets/favicon.svg +0 -0
- /package/dist/dash/{public → standalone/static}/assets/fonts/LICENSE-fira-code +0 -0
- /package/dist/dash/{public → standalone/static}/assets/fonts/fira-code-latin-400-normal-717ee080.woff2 +0 -0
- /package/dist/dash/{public → standalone/static}/assets/fonts/fira-code-latin-500-normal-530b6706.woff2 +0 -0
- /package/dist/dash/{public → standalone/static}/assets/fonts/fira-code-latin-700-normal-98730669.woff2 +0 -0
- /package/dist/dash/{public → standalone/static}/assets/global-d2adbf01910d9df5.css +0 -0
- /package/dist/dash/{public → standalone/static}/assets/login-c129b1ce237be260.css +0 -0
package/dist/queue-CirjEskI.js
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import{St as e,mn as t,wt as n}from"./dispatch-BsW_1m7e.js";import{Un as r,a as i,u as a}from"./store-j8icrG0v.js";import{_ as o,g as s,h as c,i as l,m as u,o as d,p as f,s as p}from"./schema-DoNO0dPh.js";import{i as m,r as h,t as g}from"./client-31YzOj-i.js";import{b as _,c as v,f as y,m as b,v as x,y as S}from"./shared-XsUX_ZZb.js";import{randomBytes as C}from"node:crypto";import{and as w,asc as T,desc as E,eq as D,getTableColumns as O,gt as k,ilike as A,inArray as j,isNotNull as M,isNull as N,lt as P,or as F,sql as I}from"drizzle-orm";import{CasingCache as L}from"drizzle-orm/casing";function R(e,t){if(typeof t==`number`)return I`to_jsonb(coalesce(case when jsonb_typeof(${e}) = 'number' then (${e} #>> '{}')::numeric end, 0) + ${t}::numeric)`;if(!t||typeof t!=`object`||Array.isArray(t))return e;let n=Object.entries(t).map(([t,n])=>I`${t}::text, ${R(I`(${e} -> ${t}::text)`,n)}`);return I`(case when jsonb_typeof(${e}) = 'object' then ${e} else '{}'::jsonb end || jsonb_build_object(${I.join(n,I`, `)}))`}const z=n=>I`(case ${n} ${I.join([...i,...t].map(t=>I`when ${t} then ${I.raw(String(e(t)))}`),I` `)} end)`,B=e=>I`date_trunc('milliseconds', ${e})`,V=e=>[T(z(e.status)),E(B(e.createdAt)),E(e.publicId)];var H=class{db;constructor(e){this.db=e}async metrics(e,t){let n=await this.db.select({status:f.status,total:I`count(*)::int`,recent:I`count(*) filter (where ${f.createdAt} >= ${new Date(t).toISOString()}::timestamptz)::int`}).from(f).where(D(f.organizationId,e)).groupBy(f.status),r={tasks:{queued:0,running:0,waiting:0,completed:0,failed:0,cancelled:0},queueDepth:0};for(let e of n)r.tasks[e.status]=e.recent,e.status===`queued`&&(r.queueDepth=e.total);return r}where(e,t){return w(D(f.organizationId,e),D(f.publicId,t))}fence(e,t,n={}){return w(this.where(e,t),n.generation===void 0?void 0:D(f.generation,n.generation),n.attempts===void 0?void 0:D(f.attempts,n.attempts),n.tokenHash===void 0?void 0:n.tokenHash===null?N(f.tokenHash):D(f.tokenHash,n.tokenHash),n.handle===void 0?void 0:n.handle===null?N(f.handle):D(f.handle,n.handle),n.lastSeenAt===void 0?void 0:n.lastSeenAt===null?N(f.lastSeenAt):D(f.lastSeenAt,new Date(n.lastSeenAt)),n.updatedAt===void 0?void 0:D(f.updatedAt,new Date(n.updatedAt)),n.statuses?j(f.status,n.statuses):void 0)}async enqueue(e,t,n,r,i){let a=this.insertion(e,t,n,r,i),[o]=i===void 0?await b(this.db,a):await h(this.db,[I`select pg_advisory_xact_lock(1, hashtext(${e}))`],a);if(!o?.allowed)throw Error(`Organization task queue is full`);return!!o.inserted}insertion(e,t,n,r,i,a){let o=t.event,s=new Date(n).toISOString(),c=e=>I`${e===void 0?null:JSON.stringify(e)}::jsonb`,m=r?I`
|
|
2
|
-
receipt as (
|
|
3
|
-
insert into ${l} (key, value, expires_at)
|
|
4
|
-
select ${x(e,`delivery`,r.key)}, ${c({at:n})}, ${new Date(n+r.ttlMs).toISOString()}::timestamptz
|
|
5
|
-
from capacity where allowed ${a?I`and (${a.create} or exists (select 1 from target))`:I``}
|
|
6
|
-
on conflict (key) do update set value = excluded.value, expires_at = excluded.expires_at
|
|
7
|
-
where ${l.expiresAt} <= ${s}::timestamptz
|
|
8
|
-
returning key
|
|
9
|
-
),`:I``;return I`
|
|
10
|
-
with ${a?I`target as materialized (${a.target}),`:I``} capacity as (
|
|
11
|
-
select ${i===void 0?I`true`:I`(select count(*) from ${f} where organization_id = ${e} and status = 'queued') < ${i} ${r?I`or exists (select 1 from ${l} where key = ${x(e,`delivery`,r.key)} and expires_at > ${s}::timestamptz)`:I``}`} ${a?I`or exists (select 1 from target) or not ${a.create}`:I``} as allowed
|
|
12
|
-
), ${m} ${a?I`advanced as (
|
|
13
|
-
update ${f} set inbox_seq = inbox_seq + 1, updated_at = ${s}::timestamptz where id in (select id from target) and exists (select 1 from receipt)
|
|
14
|
-
returning id, inbox_seq, generation
|
|
15
|
-
), forwarded as (
|
|
16
|
-
insert into ${u} (organization_id, task_id, seq, generation, at, kind, value)
|
|
17
|
-
select ${e}, id, inbox_seq, generation, ${s}::timestamptz, 'steer', ${c({text:o?.text})} from advanced returning seq
|
|
18
|
-
),`:I``} inserted as (
|
|
19
|
-
insert into ${f} (organization_id, public_id, source, status, agent, flow, runner, permissions,
|
|
20
|
-
app_id, installation_id, event, prompt, args, mcp, author, definition, credential, requester,
|
|
21
|
-
runner_id, usage, tools, tool_scopes, context, files, attempts, created_at, updated_at)
|
|
22
|
-
select ${e}, ${t.id}, ${t.source}, 'queued', ${t.agent}, ${t.flow}, ${t.runner}, ${t.permissions??null},
|
|
23
|
-
${o?I`coalesce((select id from ${d} where key = ${o.appId} and organization_id in (${e}, '')), 0)`:I`null`},
|
|
24
|
-
${o?I`coalesce((select id from ${p} where key = ${`${o.appId}:${o.installationId}`} and organization_id = ${e}), 0)`:I`null`},
|
|
25
|
-
${c(o)}, ${t.prompt??null}, ${c(t.args)}, ${c(t.mcp)}, ${t.author??null}, ${c(t.definition)},
|
|
26
|
-
${t.credential??null}, ${t.requester??null}, ${t.runnerId??null}, ${c(t.usage)}, ${c(t.tools)},
|
|
27
|
-
${c(t.toolScopes)}, ${c(t.context)}, ${c(t.files)}, 0, ${s}::timestamptz, ${s}::timestamptz
|
|
28
|
-
from capacity where allowed ${a?I`and ${a.create} and not exists (select 1 from target)`:I``} ${r?I`and exists (select 1 from receipt)`:I``}
|
|
29
|
-
returning id
|
|
30
|
-
) select allowed, exists (select 1 from inserted) as inserted ${a?I`, exists (select 1 from forwarded) as steered`:I``} from capacity`}async deliver(e,t,n,r,i,o,s=!0){if(!i)return s&&await this.enqueue(e,t,n,r,o)?{taskId:t.id}:{};let c=t.event,l=I`select id from ${f} where organization_id = ${e} and status in ('queued', 'running', 'waiting')
|
|
31
|
-
and agent = ${t.agent} and source = ${t.source} and flow = 'default'
|
|
32
|
-
and requester is not distinct from ${t.requester??null}
|
|
33
|
-
and event->>'appId' is not distinct from ${c?.appId??null}
|
|
34
|
-
and event->>'installationId' is not distinct from ${c?.installationId??null}
|
|
35
|
-
and event->'chat'->'thread'->>'id' is not distinct from ${c?.chat?.thread.id??null}
|
|
36
|
-
and event->'actor'->>'id' = ${c?.actor.id||null}
|
|
37
|
-
order by created_at desc, public_id desc limit 1 for update`,u=this.insertion(e,t,n,r,o,{target:l,create:s}),d=[I`select pg_advisory_xact_lock(3, hashtext(${JSON.stringify([e,a(t)])}))`];o!==void 0&&s&&d.push(I`select pg_advisory_xact_lock(1, hashtext(${e}))`);let[p]=await h(this.db,d,u);if(!p?.allowed)throw Error(`Organization task queue is full`);return p.inserted?{taskId:t.id}:p.steered?{steered:!0}:{}}async claim(e,t,n=!1,i){let a=i===void 0?I`true`:I`(select count(*) from ${f} active where active.organization_id = ${f.organizationId} and active.status in ('running', 'waiting')) < ${i}`;if(!n){let[e]=await m(this.db,()=>b(this.db,I`select exists (select 1 from ${f} where status = 'queued' and ${a})
|
|
38
|
-
and ${t===void 0?I`true`:I`(select count(*) from ${f} where status in ('running', 'waiting')) < ${t}`} as ready`));if(!e?.ready)return}let o=C(32).toString(`base64url`),s=I`translate(rtrim(replace(encode(convert_to(format('{"task":%s,"organization":%s,"attempt":%s}',
|
|
39
|
-
to_json(public_id), to_json(organization_id), attempts + 1), 'UTF8'), 'base64'), E'\\n', ''), '='), '+/', '-_') || '.' || ${o}`,c=I`with stamp as materialized (select date_trunc('milliseconds', clock_timestamp()) as at), picked as materialized (
|
|
40
|
-
select id, ${s} as bearer from ${f} where status = 'queued'
|
|
41
|
-
and ${a}
|
|
42
|
-
${t===void 0?I``:I`and (select count(*) from ${f} where status in ('running', 'waiting')) < ${t}`}
|
|
43
|
-
order by created_at, id limit 1 for update
|
|
44
|
-
), claimed as (
|
|
45
|
-
update ${f} set status = 'running', attempts = attempts + 1, locked_at = (select at from stamp),
|
|
46
|
-
started_at = (select at from stamp), updated_at = (select at from stamp), last_seen_at = (select at from stamp),
|
|
47
|
-
token_hash = translate(rtrim(encode(sha256(convert_to(picked.bearer, 'UTF8')), 'base64'), '='), '+/', '-_')
|
|
48
|
-
from picked where ${f.id} = picked.id returning ${f}.*
|
|
49
|
-
) select to_jsonb(claimed) as record, exists (select 1 from ${f} where status = 'queued' and id <> claimed.id
|
|
50
|
-
and ${i===void 0?I`true`:I`(select count(*) from ${f} active where active.organization_id = ${f.organizationId} and active.status in ('running', 'waiting')) + case when ${f.organizationId} = claimed.organization_id then 1 else 0 end < ${i}`})
|
|
51
|
-
and ${t===void 0?I`true`:I`(select count(*) from ${f} where status in ('running', 'waiting')) + 1 < ${t}`} as more from claimed`,[l]=await h(this.db,t===void 0&&i===void 0?[]:[I`select pg_advisory_xact_lock(2, 0)`],c);if(!l)return;let u=new L(g),d=Object.fromEntries(Object.entries(O(f)).map(([e,t])=>{let n=l.record[u.getColumnCasing(t)];return[e,n===null?null:t.mapFromDriverValue(n)]}));return{organizationId:d.organizationId,status:_(d),token:r(d.publicId,d.organizationId,d.attempts,o).token,more:l.more}}async touch(e,t,n,r,i,a=!1){let o=j(f.status,[`running`,`waiting`]),s=new Date(i).toISOString(),[c]=await this.db.update(f).set({lastSeenAt:I`case when ${o} then ${s}::timestamptz else ${f.lastSeenAt} end`,updatedAt:I`case when ${o} then ${s}::timestamptz else ${f.updatedAt} end`}).where(this.fence(e,t,{tokenHash:n,attempts:r,statuses:a?[`running`,`waiting`,`completed`,`failed`,`cancelled`]:[`running`,`waiting`]})).returning();return c&&_(c)}async patchTask(e,t,n,r,i={}){let{answer:a,archivedAt:o,autoArchived:s,lastSeenAt:c,...l}=n,[u]=await this.db.update(f).set({...Object.fromEntries(Object.entries(l).map(([e,t])=>[e,t??null])),...a===void 0?{}:{answer:I`coalesce(${f.answer}, '[]'::jsonb) || ${JSON.stringify([a])}::jsonb`},...Object.hasOwn(n,`archivedAt`)?{archivedAt:o===void 0?null:new Date(o)}:{},...Object.hasOwn(n,`lastSeenAt`)?{lastSeenAt:c===void 0?null:new Date(c)}:{},updatedAt:new Date(r)}).where(this.fence(e,t,i)).returning({id:f.id});return!!u}async archiveStopped(e,r,i){await this.db.update(f).set({archivedAt:new Date(r)}).where(w(D(f.organizationId,e),i?j(f.publicId,i):void 0,N(f.archivedAt),j(f.status,[...t]),P(I`coalesce(${f.finishedAt}, ${f.updatedAt})`,new Date(r-n))))}async requeue(e,t,n,r={}){let[i]=await this.db.update(f).set({status:`queued`,lockedAt:null,handle:null,tokenHash:null,lastSeenAt:null,updatedAt:new Date(n)}).where(this.fence(e,t,{...r,statuses:[`running`,`waiting`]})).returning({id:f.id});return!!i}async finish(e,t,n,r,i={}){let a=new Date(r),[o]=await this.db.update(f).set({status:n.status,result:n.result??null,error:n.error??null,tokens:n.tokens??null,lastSeenAt:a,lockedAt:null,finishedAt:a,updatedAt:a}).where(this.fence(e,t,{...i,statuses:[`queued`,`running`,`waiting`]})).returning({id:f.id});return!!o}async continueTask(e,t,n,r,i){let a=I`(select value from ${l} where key = ${S(e,`note`)} ||
|
|
52
|
-
case when ${f.source} = ${f.event}->>'integration' then
|
|
53
|
-
(${f.event}->>'appId') || ':' || (${f.event}->>'installationId') || ':' || coalesce(${f.event}->'chat'->'thread'->>'id', ${f.event}->>'deliveryId')
|
|
54
|
-
else 'task:' || ${f.publicId} end
|
|
55
|
-
and (${l.expiresAt} is null or ${l.expiresAt} > ${new Date(r).toISOString()}::timestamptz))`,o=I`(${JSON.stringify(n.context??{})}::jsonb - 'note') || jsonb_strip_nulls(jsonb_build_object('note', nullif(${a}, '""'::jsonb)))`,[s]=await this.db.update(f).set({prompt:n.prompt??null,context:o,status:`queued`,attempts:0,generation:I`${f.generation} + 1`,inboxAck:-1,result:null,error:null,tokens:null,handle:null,tokenHash:null,lastSeenAt:null,logCursor:null,lockedAt:null,startedAt:null,finishedAt:null,cancelRequestedAt:null,approval:null,answer:null,archivedAt:null,updatedAt:new Date(r)}).where(this.fence(e,t,{...i,statuses:[`completed`,`failed`,`cancelled`]})).returning({context:f.context});return s&&(n.context=s.context??void 0),!!s}async completeTask(e,t,n,r){let{outcome:i,usage:a,note:s}=n,c=new Date(r).toISOString(),d=s&&x(e,`note`,s.key),p=s?s.value?I`, note as (
|
|
56
|
-
insert into ${l} (key, value, expires_at)
|
|
57
|
-
select ${d}, ${JSON.stringify(s.value)}::jsonb, ${new Date(r+s.ttlMs).toISOString()}::timestamptz from finished
|
|
58
|
-
on conflict (key) do update set value = excluded.value, expires_at = excluded.expires_at
|
|
59
|
-
)`:I`, note as (delete from ${l} where key = ${d} and exists (select 1 from finished))`:I``,[m]=await b(this.db,I`
|
|
60
|
-
with finished as (
|
|
61
|
-
update ${f} set status = ${i.status}, result = ${JSON.stringify(i.result??null)}::jsonb,
|
|
62
|
-
error = ${i.error??null}, tokens = ${JSON.stringify(i.tokens??null)}::jsonb,
|
|
63
|
-
last_seen_at = ${c}::timestamptz, locked_at = null, finished_at = ${c}::timestamptz, updated_at = ${c}::timestamptz
|
|
64
|
-
where ${this.fence(e,t,{attempts:n.attempts,tokenHash:n.tokenHash,statuses:[`running`,`waiting`]})}
|
|
65
|
-
returning id, installation_id, generation
|
|
66
|
-
), inbox as (delete from ${u} where (task_id, generation) in (select id, generation from finished)), recorded as (
|
|
67
|
-
insert into ${o} (organization_id, task_id, installation_id, agent, target, engine, model, credential, runner_ms, tokens, at, updated_at)
|
|
68
|
-
select ${e}, id, installation_id, ${a.agent}, ${a.target}, ${a.engine??null}, ${a.model??null},
|
|
69
|
-
${a.credential}, ${a.runnerElapsedMs}, ${JSON.stringify(a.tokens??null)}::jsonb, ${new Date(a.at).toISOString()}::timestamptz, ${c}::timestamptz from finished
|
|
70
|
-
on conflict (task_id) do update set installation_id = excluded.installation_id, agent = excluded.agent, target = excluded.target,
|
|
71
|
-
engine = excluded.engine, model = excluded.model, credential = excluded.credential, runner_ms = ${o.runnerMs} + excluded.runner_ms,
|
|
72
|
-
tokens = ${R(I`${o.tokens}`,a.tokens)}, at = excluded.at, updated_at = excluded.updated_at
|
|
73
|
-
) ${p}
|
|
74
|
-
select exists (select 1 from finished) as completed`);return!!m?.completed}async cancel(e,t,n,r={}){let a=new Date(n).toISOString(),[o]=await b(this.db,I`
|
|
75
|
-
with cancelled as (
|
|
76
|
-
update ${f} set status = case when status = 'queued' then 'cancelled' else status end,
|
|
77
|
-
finished_at = case when status = 'queued' then ${a}::timestamptz else finished_at end,
|
|
78
|
-
inbox_seq = case when status = 'queued' then inbox_seq else inbox_seq + 1 end,
|
|
79
|
-
cancel_requested_at = ${a}::timestamptz, updated_at = ${a}::timestamptz
|
|
80
|
-
where ${this.fence(e,t,{...r,statuses:i})} returning id, generation, inbox_seq, status
|
|
81
|
-
), message as (
|
|
82
|
-
insert into ${u} (organization_id, task_id, seq, generation, kind, value, at)
|
|
83
|
-
select ${e}, id, inbox_seq, generation, 'cancel', 'null'::jsonb, ${a}::timestamptz from cancelled where status in ('running', 'waiting')
|
|
84
|
-
) select exists(select 1 from cancelled) as accepted`);return!!o?.accepted}async cancelRequested(e,t){let[n]=await m(this.db,()=>this.db.select({at:f.cancelRequestedAt}).from(f).where(this.where(e,t)));return!!n?.at}filter(e,t){let n=t.status?[t.status]:t.statuses,r=t.q?.trim(),i=r&&`%${r.replace(/[\\%_]/g,`\\$&`)}%`;return w(D(f.organizationId,e),n?j(f.status,n):void 0,t.agent?D(f.agent,t.agent):void 0,t.source?D(f.source,t.source):void 0,t.archived===void 0?void 0:t.archived?M(f.archivedAt):N(f.archivedAt),i?F(A(I`${f.event}->>'text'`,i),A(f.prompt,i),A(f.agent,i),A(f.publicId,i)):void 0)}pageQuery(e,t){let{before:n}=t,r=t.summary?{publicId:f.publicId,source:f.source,agent:f.agent,flow:f.flow,prompt:f.prompt,event:I`case when ${f.event} is not null then jsonb_build_object('integration', ${f.event}->>'integration', 'type', ${f.event}->>'type', 'text', ${f.event}->>'text') end`.as(`event`),status:f.status,attempts:f.attempts,createdAt:f.createdAt,startedAt:f.startedAt,finishedAt:f.finishedAt}:O(f),i=this.db.select(r).from(f).where(w(this.filter(e,t),n?this.after(n):void 0)).orderBy(...V(f));return t.limit===void 0?i:i.limit(t.limit)}after(e){let t=I`(${B(f.createdAt)}, ${f.publicId}) < (${new Date(e.createdAt).toISOString()}::timestamptz, ${e.id})`;return F(k(z(f.status),e.rank),w(D(z(f.status),e.rank),t))}record(e,t){return t?v({task:v({id:e.publicId,source:e.source,agent:e.agent,flow:e.flow,prompt:e.prompt,event:e.event}),status:e.status,attempts:e.attempts,createdAt:y(e.createdAt),startedAt:e.startedAt?y(e.startedAt):void 0,finishedAt:e.finishedAt?y(e.finishedAt):void 0}):_(e)}async list(e,t={}){return(await m(this.db,()=>this.pageQuery(e,t))).map(e=>this.record(e,t.summary))}async changes(e,t){if(!e.length)return{rows:[],deleted:[]};let n=e.map(e=>e.organizationId),r=e.flatMap(e=>e.ids.map(()=>e.organizationId)),i=e.flatMap(e=>e.ids),a=i.length?I`(${f.organizationId}, ${f.publicId}) in (select * from unnest(${I.param(r)}::text[], ${I.param(i)}::text[]))`:I`false`,[o,c]=await Promise.all([m(this.db,()=>this.db.select({organizationId:f.organizationId,publicId:f.publicId,source:f.source,agent:f.agent,flow:f.flow,status:f.status,approval:f.approval,answer:I`case when ${a} then ${f.answer} end`,result:I`case when ${a} then ${f.result} end`,error:I`case when ${a} then ${f.error} end`,attempts:f.attempts,archivedAt:f.archivedAt,createdAt:f.createdAt,startedAt:f.startedAt,finishedAt:f.finishedAt,updatedAt:f.updatedAt}).from(f).where(F(w(j(f.organizationId,n),k(f.updatedAt,new Date(t))),i.length?a:void 0))),m(this.db,()=>this.db.select().from(s).where(w(j(s.organizationId,n),k(s.deletedAt,new Date(t)))))]);return{rows:o.map(e=>({organizationId:e.organizationId,status:v({task:{id:e.publicId,source:e.source,agent:e.agent,flow:e.flow},status:e.status,approval:e.approval,answer:Array.isArray(e.answer)?e.answer:void 0,result:e.result,error:e.error,attempts:e.attempts,archivedAt:e.archivedAt&&y(e.archivedAt),createdAt:y(e.createdAt),startedAt:e.startedAt&&y(e.startedAt),finishedAt:e.finishedAt&&y(e.finishedAt),updatedAt:y(e.updatedAt)})})),deleted:c.map(e=>({organizationId:e.organizationId,id:e.publicId,at:y(e.deletedAt)}))}}countQuery(e,t){return this.db.select({all:I`count(*)::int`.as(`all`),active:I`(count(*) filter (where ${j(f.status,i)}))::int`.as(`active`),waiting:I`(count(*) filter (where ${D(f.status,`waiting`)}))::int`.as(`waiting`)}).from(f).where(this.filter(e,t))}async counts(e,t={}){let[n]=await m(this.db,()=>this.countQuery(e,t));return n??{all:0,active:0,waiting:0}}async listWithCounts(e,t){let n=this.db.$with(`totals`).as(this.countQuery(e,t)),r=this.db.$with(`page`).as(this.pageQuery(e,{...t,limit:t.limit??20})),i=Object.fromEntries(Object.keys(r._.selectedFields).map(e=>[e,r[e]])),a=await m(this.db,()=>this.db.with(n,r).select({...i,all:n.all,active:n.active,waiting:n.waiting}).from(n).leftJoin(r,I`true`).orderBy(...V({status:i.status,createdAt:i.createdAt,publicId:i.publicId}))),{all:o=0,active:s=0,waiting:c=0}=a[0]??{};return{items:a.filter(e=>e.publicId!==null&&e.publicId!==void 0).map(e=>this.record(e,t.summary)),counts:{all:o,active:s,waiting:c}}}async runningCount(){let[e]=await m(this.db,()=>this.db.select({value:I`count(*)::int`}).from(f).where(j(f.status,[`running`,`waiting`])));return e?.value??0}async running(){return(await m(this.db,()=>this.db.select().from(f).where(j(f.status,[`running`,`waiting`])))).map(e=>({organizationId:e.organizationId,status:_(e)}))}async appendLogs(e,t,n,r,i,a,o){let s=n.length?I`, inserted as (
|
|
85
|
-
insert into ${c} (organization_id, task_id, seq, at, level, line)
|
|
86
|
-
select ${e}, accepted.id, entry.seq, to_timestamp(entry.at / 1000.0), entry.level, entry.line
|
|
87
|
-
from accepted cross join jsonb_to_recordset(${JSON.stringify(n)}::jsonb) as entry(seq int, at bigint, level text, line text)
|
|
88
|
-
)`:I``,[l]=await b(this.db,I`
|
|
89
|
-
with accepted as (
|
|
90
|
-
update ${f} set log_cursor = ${i.cursor}, log_seq = ${i.seq}, log_bytes = ${i.bytes}, updated_at = ${new Date(a).toISOString()}::timestamptz
|
|
91
|
-
where ${this.fence(e,t,o)} and coalesce(log_seq, 0) = ${r.seq} and coalesce(log_cursor, -1) = ${r.cursor}
|
|
92
|
-
returning id
|
|
93
|
-
) ${s} select exists (select 1 from accepted) as accepted`);return!!l?.accepted}async readInbox(e,t,n,r){return(await m(this.db,()=>this.db.select({seq:u.seq,generation:u.generation,at:u.at,kind:u.kind,value:u.value}).from(u).innerJoin(f,D(f.id,u.taskId)).where(w(this.where(e,t),D(f.generation,n),j(f.status,i),D(u.generation,n),I`${u.seq} > ${r}`)).orderBy(T(u.seq)).limit(100))).map(e=>({...e,at:y(e.at)}))}async appendInbox(e,t,n,r,a,o){let[s]=await b(this.db,I`
|
|
94
|
-
with next as (
|
|
95
|
-
update ${f} set inbox_seq = inbox_seq + 1, updated_at = ${new Date(a).toISOString()}::timestamptz where ${this.fence(e,t,{generation:o,statuses:i})} returning id, inbox_seq, generation
|
|
96
|
-
) insert into ${u} (organization_id, task_id, seq, generation, kind, value, at)
|
|
97
|
-
select ${e}, id, inbox_seq, generation, ${n}, ${JSON.stringify(r??null)}::jsonb, ${new Date(a).toISOString()}::timestamptz from next returning seq`);return s&&{seq:s.seq,generation:o,at:a,kind:n,value:r}}async fetchInbox(e,t,n,r,i){let[a]=await m(this.db,()=>b(this.db,I`
|
|
98
|
-
select coalesce(jsonb_agg(jsonb_build_object('seq', i.seq, 'generation', i.generation, 'at', extract(epoch from i.at) * 1000, 'kind', i.kind, 'value', i.value) order by i.seq) filter (where i.seq is not null), '[]'::jsonb) as entries
|
|
99
|
-
from ${f} left join ${u} i on i.task_id = ${f.id} and i.generation = ${f.generation} and i.seq > ${i}
|
|
100
|
-
where ${this.fence(e,t,{tokenHash:n,attempts:r,statuses:[`running`,`waiting`]})} group by ${f.id}`));return a?.entries}async ackInbox(e,t,n,r){if(r.generation!==void 0&&r.generation!==n.generation)return!1;let[i]=await b(this.db,I`
|
|
101
|
-
with current as (
|
|
102
|
-
select id from ${f} where ${this.fence(e,t,{...r,generation:n.generation,statuses:void 0})}
|
|
103
|
-
and inbox_seq >= ${n.seq} and (status in ('running', 'waiting') or (status in ('completed', 'failed', 'cancelled') and inbox_ack >= ${n.seq})) for update
|
|
104
|
-
), applied as (
|
|
105
|
-
delete from ${u} where task_id in (select id from current) and generation = ${n.generation} and seq <= ${n.seq} returning seq, kind, value
|
|
106
|
-
), answers as (
|
|
107
|
-
select jsonb_agg(a.value order by a.seq) as value from jsonb_to_recordset(${JSON.stringify(n.answers??[])}::jsonb) a(seq int, value jsonb)
|
|
108
|
-
where exists (select 1 from applied where applied.seq = a.seq and applied.kind = 'ask')
|
|
109
|
-
), updated as (
|
|
110
|
-
update ${f} set inbox_ack = greatest(inbox_ack, ${n.seq}), answer = coalesce(answer, '[]'::jsonb) || coalesce(answers.value, '[]'::jsonb),
|
|
111
|
-
status = case when exists(select 1 from applied where kind = 'cancel') then 'cancelled'
|
|
112
|
-
when exists(select 1 from applied where kind = 'approve' and value->>'approvalId' = ${f.approval}->>'id') then 'running' else status end,
|
|
113
|
-
approval = case when exists(select 1 from applied where kind = 'approve' and value->>'approvalId' = ${f.approval}->>'id') then null else approval end,
|
|
114
|
-
finished_at = case when exists(select 1 from applied where kind = 'cancel') then now() else finished_at end,
|
|
115
|
-
updated_at = now()
|
|
116
|
-
from answers where id in (select id from current)
|
|
117
|
-
) select exists (select 1 from current) as accepted`);return!!i?.accepted}async pendingInbox(){return(await m(this.db,()=>this.db.select().from(f).where(w(j(f.status,[`running`,`waiting`]),I`exists (select 1 from ${u} where ${u.taskId} = ${f.id} and ${u.generation} = ${f.generation})`)))).map(e=>({organizationId:e.organizationId,status:_(e)}))}};export{H as DrizzleQueue};
|
package/dist/refresh-Bmy2r1Ee.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{D as e,Tn as t}from"./dispatch-BsW_1m7e.js";import{i as n}from"./cli-B1ObVrL4.js";const r=n({name:`upgrade refresh`,options:{},run:()=>e(t())});export{r as commandRefreshUpdate};
|
package/dist/remote-CxFnEjZl.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{Ct as t}from"./dispatch-BsW_1m7e.js";import{c as n,d as r,f as i,g as a,h as o,i as s,l as c,m as l,p as u,u as ee}from"./prompt-CMXmt2l9.js";import{a as d}from"./load-SnZd7xG1.js";import{t as f}from"./integrations-B2CavXR1.js";import p from"node:path";import m from"node:process";import h from"node:fs";import{execFile as g}from"node:child_process";import{createHash as _}from"node:crypto";import v from"node:fs/promises";import{promisify as y}from"node:util";import te from"node:http";import*as b from"openid-client";const x={"**/":`(?:.*/)?`,"/**":`/.*`,"**":`.*`,"*":`[^/]*`,"?":`[^/]`};function S(e){return e.split(/\r?\n/).flatMap(e=>{let t=e.trimEnd();if(!t||t.startsWith(`#`))return[];let n=t.startsWith(`!`);n&&(t=t.slice(1));let r=t.endsWith(`/`);r&&(t=t.slice(0,-1));let i=t.replace(/^\//,``).replace(/[.+^${}()|[\]\\]/g,`\\$&`).replace(/\*\*\/|\/\*\*$|\*\*|\*|\?/g,e=>x[e]),a=t.includes(`/`);return[{pattern:RegExp(a?`^${i}$`:`^(?:.*/)?${i}$`),negate:n,directory:r}]})}const C=(e,t,n)=>e.reduce((e,r)=>(!r.directory||n)&&r.pattern.test(t)?!r.negate:e,!1);async function w(e,t,n=``){let r=[];for(let i of await v.readdir(p.join(e,n),{withFileTypes:!0})){let a=n?`${n}/${i.name}`:i.name;i.isDirectory()&&!C(t,a,!0)?r.push(...await w(e,t,a)):i.isFile()&&!C(t,a,!1)&&r.push(a)}return r}async function T(e){return(await y(g)(`git`,[`-C`,e,`ls-files`,`--cached`,`--others`,`--exclude-standard`,`-z`,`--`,`.`],{maxBuffer:67108864}).catch(()=>void 0))?.stdout.split(`\0`).filter(Boolean)}async function E(e){let t=await T(e)??await w(e,S(await v.readFile(p.join(e,`.gitignore`),`utf8`).catch(()=>``))),n={};for(let r of t){if(r===`agent.json`||r===`system.md`)continue;let t=p.join(e,r);(await v.lstat(t).catch(()=>void 0))?.isFile()&&(n[r]=await v.readFile(t,`utf8`))}return n}var D=e({deviceSignIn:()=>P,hasBrowser:()=>ne,logoutSession:()=>z,loopbackSignIn:()=>N,refreshSignIn:()=>F,revokeSignIn:()=>I,selectLoginOrganization:()=>L,sessions:()=>B,signIn:()=>R});const O=`openid profile email offline_access organizations:read`,k=e=>`${e}/.well-known/oauth-cli-client.json`;async function A(e,n){let r=new URL(e).origin,i=await fetch(`${r}/.well-known/oauth-protected-resource`).catch(n=>{throw new t(`login-failed`,`No Coder server answers at ${e}: ${n.message}`)}),a=await i.json().catch(()=>({})),o=Array.isArray(a.authorization_servers)?a.authorization_servers[0]:void 0;if(!i.ok||a.resource!==r||typeof o!=`string`)throw new t(`login-failed`,`${e} does not offer sign-in.`,{hint:`Sign-in needs a Postgres-backed server; see coder docs self-host`});if(n!==void 0&&o!==n)throw new t(`login-failed`,`The server's sign-in issuer has changed. Sign in again before using this session.`);return{config:await b.discovery(new URL(o),k(e),void 0,b.None(),new URL(o).protocol===`http:`?{execute:[b.allowInsecureRequests]}:void 0).catch(e=>{throw new t(`login-failed`,`Wular Auth at ${o} did not answer: ${e.message}`)}),resource:r}}function j(e,n,r){let i=n.claims(),a=n.refresh_token??r?.refreshToken;if(!a)throw new t(`login-failed`,`Wular Auth returned no refresh token.`);return{token:n.access_token,refreshToken:a,expiresAt:Date.now()+(n.expires_in??600)*1e3,issuer:e.serverMetadata().issuer,user:i?{name:typeof i.name==`string`?i.name:``,email:typeof i.email==`string`?i.email:``}:r?.user??{name:``,email:``}}}const M=e=>new t(`login-failed`,e instanceof b.ResponseBodyError||e instanceof b.AuthorizationResponseError?e.error===`access_denied`?`Sign-in was denied in the browser.`:e.error_description??e.error:e instanceof Error?e.message:String(e));async function N(e,n){let{config:r,resource:i}=await A(e),a=b.randomPKCECodeVerifier(),o=b.randomState(),s=te.createServer();await new Promise(e=>s.listen(0,`127.0.0.1`,e));let{port:c}=s.address(),l=`http://127.0.0.1:${c}/callback`;try{let e=new Promise((e,n)=>{let r=setTimeout(()=>n(new t(`login-failed`,`Sign-in timed out.`)),3e5);s.on(`request`,(t,n)=>{let i=new URL(t.url??`/`,l);if(i.pathname!==`/callback`||i.searchParams.get(`state`)!==o){n.writeHead(404).end();return}n.writeHead(200,{"content-type":`text/plain; charset=utf-8`}).end(i.searchParams.has(`error`)?`Sign-in failed. You can close this tab and return to the terminal.`:`Signed in. You can close this tab and return to the terminal.`),clearTimeout(r),e(i)})});return n(b.buildAuthorizationUrl(r,{redirect_uri:l,scope:O,resource:i,code_challenge:await b.calculatePKCECodeChallenge(a),code_challenge_method:`S256`,state:o}).href),j(r,await b.authorizationCodeGrant(r,await e,{pkceCodeVerifier:a,expectedState:o},{resource:i}).catch(e=>{throw M(e)}))}finally{s.close(),s.closeAllConnections()}}async function P(e,t){let{config:n,resource:r}=await A(e);try{let e=await b.initiateDeviceAuthorization(n,{scope:O,resource:r});return t(e.user_code,e.verification_uri_complete??e.verification_uri),j(n,await b.pollDeviceAuthorizationGrant(n,e,{resource:r}))}catch(e){throw M(e)}}async function F(e,n){let{config:r,resource:i}=await A(e,n.issuer);try{return j(r,await b.refreshTokenGrant(r,n.refreshToken,{resource:i}),n)}catch(e){if(e instanceof b.ResponseBodyError&&(e.error===`invalid_grant`||e.error===`invalid_client`))return;throw new t(`server`,`Wular Auth did not refresh the session: ${e instanceof Error?e.message:String(e)}`)}}async function I(e,t){let{config:n}=await A(e,t.issuer);n.serverMetadata().revocation_endpoint&&await b.tokenRevocation(n,t.refreshToken,{token_type_hint:`refresh_token`})}async function L(e,n,r){if(!e.length)throw new t(`login-failed`,`This account belongs to no workspace.`);if(n){let r=e.find(e=>e.slug===n);if(!r)throw new t(`login-failed`,`You are not a member of workspace "${n}".`);return r}if(e.length<=1)return e[0];if(!r)throw new t(`login-failed`,`Choose a workspace for this server.`,{hint:`Pass --workspace <slug>.`});let i=await r(e);return e.find(e=>e.slug===i)}const ne=()=>!m.env.SSH_CONNECTION&&(m.platform!==`linux`||!!(m.env.DISPLAY||m.env.WAYLAND_DISPLAY));async function R(e,n={}){let r=n.device?await P(e,n.onCode??(()=>{})):await N(e,n.open??s),i=await fetch(`${e}/me`,{headers:{authorization:`Bearer ${r.token}`}}).catch(n=>{throw new t(`login-failed`,`No Coder server answers at ${e}: ${n.message}`)}),a=await i.json().catch(()=>({}));if(!i.ok)throw new t(`login-failed`,`Signed in, but the server refused the token.`);let o=await L(a.organizations??[],n.organization,n.chooseOrganization);return{...r,...o?{organization:o}:{},at:Date.now()}}async function z(e){let n=r(),i=n[e];if(!i)throw new t(`login-failed`,`Not signed in to ${e}.`);return await I(e,i).catch(()=>void 0),delete n[e],l(n),{ok:!0,server:e}}const B={async login(e={}){let t=G(e),n=await R(t,e);return e.save!==!1&&l({...r(),[t]:n}),{...n,server:t}},logout:(e={})=>z(G(e)),status:()=>Object.fromEntries(Object.entries(r()).map(([e,t])=>[e,{user:t.user,organization:t.organization,at:t.at}]))};function V(e,t){let n=t,r;return{expiresAt:()=>n.expiresAt,async renew(){return r||=H(e,n).finally(()=>{r=void 0}),n=await r,n.token}}}async function H(e,t){let n=_(`sha256`).update(e).digest(`hex`),r=`${i()}.${n}.lock`;for(h.mkdirSync(p.dirname(r),{recursive:!0});;)try{let e=h.openSync(r,`wx`,384);try{h.writeFileSync(e,String(process.pid))}catch(e){throw h.unlinkSync(r),e}finally{h.closeSync(e)}break}catch(e){if(e.code!==`EEXIST`)throw e;try{let e=Number(h.readFileSync(r,`utf8`));e?process.kill(e,0):Date.now()-h.statSync(r).mtimeMs>3e4&&h.unlinkSync(r)}catch(e){if(e.code===`ESRCH`)try{h.unlinkSync(r)}catch{}}await new Promise(e=>setTimeout(e,25))}try{return await U(e,t)}finally{h.unlinkSync(r)}}async function U(e,n){let i=e=>e&&e.refreshToken!==n.refreshToken?e:void 0,a=i(r()[e]);if(a&&a.expiresAt>n.expiresAt)return a;let o=await F(e,n),s=r();if(o){let t={...n,...o};return l({...s,[e]:t}),t}let c=i(s[e]);if(c)return c;throw delete s[e],l(s),new t(`login-failed`,`Signed out of ${e}.`,{hint:`Sign in again: coder auth login`})}var W=e({addCredential:()=>Q,coderClient:()=>q,connect:()=>K,loginCredential:()=>$,pushAgents:()=>J,serverFor:()=>G});function G(e={}){let r=u(e.server);if(!n(r)){if(!e.yes)throw new t(`invalid-option`,`First use of Coder server ${new URL(r).origin} needs confirmation.`,{hint:`Inspect the origin, then pass yes: true.`});c(r)}return r}function K(e={}){let t=G(e);return q(t,{token:e.token,missingHint:`auth.login({ server: '${t}' })`,organization:e.organization})}function q(e,{token:n,missingHint:r,organization:i}={}){let s=u(e),c=ee(s),l=c?.token,d=m.env.ADMIN_TOKEN,f=n??l??d;if(f&&f===d&&!a(s))throw new t(`invalid-option`,`ADMIN_TOKEN cannot be sent to a non-loopback server.`);if(!f)throw new t(`login-failed`,`Not signed in to ${s}.`,{...r?{hint:r}:{}});return new o(s,{token:f},{organization:i??c?.organization?.slug,renewal:c&&f===l?V(s,c):void 0})}async function J(e,n,r){let i=(await d(n,f)).filter(e=>!e.builtin),a=r?i.filter(e=>e.id===r):i;if(r&&!a.length)throw new t(`invalid-option`,`No workspace agent named "${r}".`);let o=[];for(let t of a)o.push(await e.agents.put(t.id,{definition:t.definition,systemPrompt:await v.readFile(p.join(t.dir,`system.md`),`utf8`).catch(()=>``),files:await E(t.dir),name:t.name,description:t.definition.description}));return o}const Y=/^[A-Za-z_][A-Za-z0-9_]*$/,X=[`claude`,`codex`,`custom`],Z=(e,n)=>new t(`invalid-option`,e,n?{hint:n}:{}),re=()=>new Promise(e=>setTimeout(e,1e3));async function ie(){let e=``;for await(let t of m.stdin)e+=t.toString();return e.replace(/\r?\n$/,``)}async function Q(e,t){let n=Array.isArray(t.env)?t.env:Object.keys(t.env);for(let e of n)if(!Y.test(e))throw Z(`Invalid environment variable name ${JSON.stringify(e)}.`);if(!t.engine)throw Z(`Missing required --engine.`,`Use claude, codex, or custom`);let r=X.find(e=>e===t.engine);if(!r)throw Z(`Invalid --engine value.`,`Use claude, codex, or custom`);if(!n.length)throw Z(`At least one --env NAME is required.`);if(t.value!==void 0&&n.length!==1)throw Z(`--value requires exactly one --env NAME.`);let i=Array.isArray(t.env)?Object.fromEntries(await Promise.all(n.map(async e=>{let n=t.value===`-`?await ie():t.value??m.env[e];if(!n)throw Z(`Environment variable ${e} is not set.`);return[e,n]}))):t.env;return K(t).credentials.add({...e?{label:e}:{},env:i,engine:r,workspace:t.workspace,noCheck:t.noCheck,default:t.default})}async function $(e,t={}){if(e!==`claude`&&e!==`codex`)throw Z(`Name the engine to sign in to.`,`Usage: coder credentials login <claude|codex>`);let n=K(t).credentials,r=await n.login(e);t.onStart?.(()=>n.cancelLogin(r.id));let i=async e=>{for(;!e(r.state);)await re(),r=await n.loginStatus(r.id)};return await i(e=>e!==`starting`),t.onOpen?.(r),e===`claude`&&r.state===`open`&&t.code&&await n.loginCode(r.id,await t.code()),await i(e=>e===`done`||e===`failed`),r}export{W as a,D as c,J as i,K as n,G as o,$ as r,B as s,Q as t};
|
package/dist/remove-C15WLaXT.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Ct as e}from"./dispatch-BsW_1m7e.js";import{i as t,t as n}from"./cli-B1ObVrL4.js";import{p as r}from"./output-BKeyLbvt.js";import{n as i,o as a}from"./args-DcBCtXhz.js";import o from"node:process";const s={json:i,server:a,yes:i},c=t({name:`runner remove`,globalFlags:{cwd:!1},help:{usage:`coder runner remove <id> [--server [url]] [--json]`,flags:[n]},options:s,args:1,async run({options:t,args:[n]}){let{removeRunner:r}=await import(`./runner-wDYhkVsM.js`).then(e=>e.a);if(!n)throw new e(`invalid-option`,`Missing runner id.`);return r(n,t)},print:(e,{args:[t]})=>o.stdout.write(`Removed ${r.bold(t)}.\n`)});export{c as commandRunnerRemove,s as runnerOptions};
|
package/dist/remove-CTZYjjSr.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{i as t}from"./cli-B1ObVrL4.js";import{p as n}from"./output-BKeyLbvt.js";import{i as r}from"./models-C-S7HqSb.js";import{n as i}from"./add-QExQhTzi.js";import a from"node:process";var o=e({commandModelRemove:()=>s,printModelChange:()=>c});const s=t({name:`model remove`,help:{usage:`coder model remove <name>`,summary:`Remove a configured custom model.`,flags:[[`--workspace`,`target <repo>/.coder/config.json instead of the user file`]]},options:i,args:1,run:({options:e,args:[t],cwd:n})=>r(n,t,e),print:e=>c(`removed`,e.removed,e.file)});function c(e,t,r){a.stdout.write(`${e} ${n.cyan(t)} ${n.dim(`(${r})`)}\n`)}export{o as n,c as t};
|
package/dist/remove-CTl-H0f0.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Ct as e}from"./dispatch-BsW_1m7e.js";import{i as t,t as n}from"./cli-B1ObVrL4.js";import{p as r}from"./output-BKeyLbvt.js";import{n as i,o as a}from"./args-DcBCtXhz.js";import o from"node:process";const s={json:i,server:a,workspace:i,yes:i},c=()=>new e(`invalid-option`,`Missing credential label.`),l=t({name:`credentials remove`,globalFlags:{cwd:!1},help:{usage:`coder credentials remove <label> [--workspace] [--server [url]] [--json]`,flags:[[`--workspace`,`the workspace credential of that label`],n]},options:s,args:1,async run({options:e,args:[t]}){let{connect:n}=await import(`./remote-CxFnEjZl.js`).then(e=>e.a);if(!t)throw c();return n(e).credentials.remove(t,e)},print:(e,{args:[t]})=>o.stdout.write(`Removed ${r.bold(t)}.\n`)});export{l as commandCredentialsRemove,s as credentialOptions,c as missingLabel};
|
package/dist/remove-DX2FVo5b.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{st as e}from"./dispatch-BsW_1m7e.js";import{i as t}from"./cli-B1ObVrL4.js";import{n,t as r}from"./args-DcBCtXhz.js";import i from"node:process";const a=t({name:`mcp remove`,helpName:`mcp rm`,help:{usage:`coder mcp rm <name> [--user] [--cwd <dir>]`,summary:"Remove `mcp.<name>` from the repo config (or the user config with --user).",flags:[[`--user`,`edit ~/.coder config`]]},options:{...r,user:n},args:1,run:({options:t,args:[n],cwd:r})=>e(r,n,t),print:({name:e,file:t})=>i.stdout.write(`Removed MCP server "${e}" from ${t}.\n`)});export{a as commandMcpRemove};
|
package/dist/rename-D1g4TnHQ.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Ct as e}from"./dispatch-BsW_1m7e.js";import{i as t,t as n}from"./cli-B1ObVrL4.js";import{p as r}from"./output-BKeyLbvt.js";import{runnerOptions as i}from"./remove-C15WLaXT.js";import a from"node:process";const o=t({name:`runner rename`,globalFlags:{cwd:!1},help:{usage:`coder runner rename <id> <name> [--server [url]] [--json]`,flags:[n]},options:i,args:2,async run({options:t,args:[n,r]}){let{updateRunner:i}=await import(`./runner-wDYhkVsM.js`).then(e=>e.a);if(!n||!r)throw new e(`invalid-option`,`Usage: coder runner rename <id> <name>`);return i(n,{name:r},t)},print:(e,{args:[t]})=>a.stdout.write(`Renamed ${t} to ${r.bold(e.name)}.\n`)});export{o as commandRunnerRename};
|
package/dist/result-D49VN8PM.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{Ct as e,mn as t}from"./dispatch-BsW_1m7e.js";import{i as n}from"./cli-B1ObVrL4.js";import{c as r,m as i,p as a,s as o}from"./output-BKeyLbvt.js";import{l as s,t as c}from"./args-DcBCtXhz.js";import{gateLine as l,gateRunningLine as u,paintPlain as d,printLedger as f,resultJson as p,stepSymbol as m,taskLabel as h,taskLine as g}from"./watch-DmwaEvoi.js";import _ from"node:process";const v=n({name:`flow result`,help:{usage:`coder flow result [run-id] [--tail <n|all>] [--json]`,summary:`Show a flow run's status and result, with its tasks, gates, and token ledger.
|
|
2
|
-
--tail <n> caps the step rows (0 for the result alone). Defaults to the most
|
|
3
|
-
recent run. To watch a run live, prefer \`coder flow watch\`.`,flags:[[`--tail <n|all>`,`show the last n step rows (default: all; 0 hides them)`]],examples:[[`coder flow result --tail 0`,`the most recent run's result, no step rows`]]},options:{...c,tail:s},args:1,async run({options:t,args:[n]}){let{runResult:r}=await import(`./executor-vMppVLB6.js`).then(e=>e.y),i=r(n);if(!i&&!t.json)throw new e(`flow-failed`,n?`No flow run "${n}".`:`No flow runs yet.`,{hint:`Run one: coder flow run <name>`});return i},json:e=>e&&p(e),print:(e,{options:t})=>b(e,t.tail)});function y(e,t=!1){let n=a;if(t)return e.map(d);let r=(t,n)=>{for(let r=t+1;r<e.length;r+=1){let t=e[r].depth;if(t<n)return!1;if(t===n)return!0}return!1};return e.map((e,t)=>{let i=``;for(let n=0;n<e.depth;n+=1)i+=r(t,n)?`│ `:` `;return i+=e.log?`│ `:r(t,e.depth)?`├─`:`└─`,`${n.dim(i)} ${e.body}`})}function b(e,n=`all`){let s=a,c=!_.stdout.isTTY;_.stdout.write(`${s.bold(`Flow`)} ${s.cyan(e.name)} ${s.dim(`(${e.runId})`)}. ${s.bold(i(e.status))}\n`);let d=e.steps,p=d.filter(e=>t.includes(e.status)).length,v=e.status===`running`?`${p}/${d.length} tasks`:`${e.taskCount} tasks`;if(_.stdout.write(`${s.dim(`started ${e.startedAt}${e.endedAt?` · ended ${e.endedAt}`:``} · ${v}`)}\n`),n!==0){let t=new Map,r=new Map,i=new Map,a=[];for(let n of e.events)if(n.kind===`task-start`){let e={name:h(n.name,n.prompt),engine:n.engine,depth:n.depth??0};t.set(n.taskId,e),r.set(n.taskId,e)}else if(n.kind===`task-end`){r.delete(n.taskId);let e=t.get(n.taskId);a.push({depth:e?.depth??0,body:g(m(n.status,c),e?.name??null,n.taskId,n.tokens,e?.engine)})}else if(n.kind===`gate-start`)i.set(n.gateId,{cmd:n.cmd,depth:n.depth??0});else if(n.kind===`gate`)n.gateId&&i.delete(n.gateId),a.push({depth:n.depth??0,body:l(n,c)});else if(n.kind===`log`)for(let e of n.message.split(`
|
|
4
|
-
`))a.push({depth:n.depth??0,body:s.light(e),log:!0});else n.kind===`flow-start`&&a.push({depth:n.depth-1,body:s.bold(`flow ${n.name}`)});for(let[e,t]of r)a.push({depth:t.depth??0,body:g(m(`running`,c),t.name,e,null,t.engine)+(c?``:` ${s.light(`running`)}`)});for(let e of i.values())a.push({depth:e.depth,body:u(e.cmd,m(`running`,c))+(c?``:` ${s.light(`running`)}`)});if(!a.length)for(let e of n===`all`?d:d.slice(-n))a.push({depth:0,body:g(m(e.status,c),e.name,e.taskId??`-`,e.tokens)});let o=y(a,c),f=n===`all`?o:o.slice(-n);f.length&&_.stdout.write(`\n${f.join(`
|
|
5
|
-
`)}\n`)}e.endedAt&&e.result!==void 0&&_.stdout.write(`\n${s.bold(`Result:`)}\n${r(e.result)}\n`),e.error&&_.stdout.write(`\n${s.red(`error:`)} ${e.error}\n`),f(e.ledger);let b=e.status===`running`?[`Follow live: coder flow watch ${e.runId}`,`Stop it: coder flow stop ${e.runId}`]:e.status===`stopped`||e.status===`failed`?[`Resume: coder flow resume ${e.runId}`]:[];b.length&&_.stdout.write(`\n${o(b,s)}\n`)}export{v as commandResult};
|
package/dist/result-DGWyUHYU.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import{Et as e,It as t,Mn as n,pn as r}from"./dispatch-BsW_1m7e.js";import{i,r as a}from"./cli-B1ObVrL4.js";import{S as o,a as s,d as c,m as l,o as u,p as d,s as f,u as p,x as m,y as h}from"./output-BKeyLbvt.js";import{i as g,l as _,n as v,s as y,t as b}from"./args-DcBCtXhz.js";import x from"node:process";const S={server:g,workspace:y,yes:v};function C(e,t,n,r=d){let i=e?.error?.message??t;return e?.finalMessage||(i?`${r.red(`error:`)} ${i}`:n)}const w=1e3;function T(e,t=d,{truncate:n=!0}={}){let r=e=>e.split(`
|
|
2
|
-
`).map(e=>` ${t.dim(e)}`);return!n||e.length<=w?[t.dim(`prompt:`),...r(e)]:[t.dim(`prompt:`),...r(e.slice(0,500).trimEnd()),t.light(` … <${e.length-w} chars trimmed> …`),...r(e.slice(-500).trimStart())]}function E(e,t=d){let n=[];e.permissions&&n.push([`perms`,e.permissions]),e.cwd&&n.push([`cwd`,e.cwd]);for(let t of e.addDirs??[])n.push([`add-dir`,t]);return n.map(([e,n])=>`${t.dim(e.padEnd(8))} ${n}`)}function D(t,n){if(n)return t.createdAt?`started ${s(e(t.createdAt))} ago`:``;let r=t.createdAt&&t.completedAt?Date.parse(t.completedAt)-Date.parse(t.createdAt):null;return[t.completedAt?`finished ${s(e(t.completedAt))} ago`:``,r!==null&&r>=0?`took ${s(r)}`:``].filter(Boolean).join(` · `)}function O(e,{status:n,tokens:i,tokenModel:a,files:o,live:s=!1,style:u=d}){let f=D(e,r.includes(e.status)||n===`waiting-approval`),m=e=>u.dim(e.padEnd(8));return[`${m(`task`)} ${u.cyan(e.id)}`,...e.name?[`${m(`name`)} ${e.name}`]:[],`${m(`status`)} ${l(n)}${f?` ${u.dim(`(${f})`)}`:``}`,`${m(`engine`)} ${t(e)}`,...E(e,u),...i?[`${m(`tokens`)} ${s?c(i):p(i,a??e.model)}${s?u.dim(` (so far)`):``}`]:[],...k(o,m,u)]}const k=(e,t,n)=>e?.length?[`${t(`files`)} ${e.join(`, `)} ${n.dim(`(shell edits not included)`)}`]:[];function A(e,{tokens:t,tokenModel:n,files:r,statusChanged:i=!0,style:a=d}){let o=e=>a.dim(e.padEnd(8)),c=e.createdAt&&e.completedAt?Date.parse(e.completedAt)-Date.parse(e.createdAt):null;return[...i?[`${o(`status`)} ${l(e.status)}${c!==null&&c>=0?` ${a.dim(`(took ${s(c)})`)}`:``}`]:[],...t?[`${o(`tokens`)} ${p(t,n??e.model)}`]:[],...k(r,o,a)]}function j(e,t=300,{plain:n=!1,style:r=d}={}){if(e.length<=t)return e;let i=`<${e.length-t} more chars>`;return`${e.slice(0,t)} ${n?i:r.dim(i)}`}const M=` `.repeat(8),N={assistant:`●`,reasoning:`✻`,tool:`→`,"tool-result":` `,usage:`·`,status:`·`,info:`·`,error:`✘`,steer:`⚑`};function P(e,t){let n=/^\x1b\[[0-9;]*m/.exec(t(``))?.[0];return t(n&&e.includes(F)?e.split(F).join(`${F}${n}`):e)}const F=`\x1B[0m`;function I(e,t,n,r,i=r.dim){if(!e)return``;let a=(e.length>t?e.slice(0,t):e).split(`
|
|
3
|
-
`).map(e=>P(e,i));return e.length>t&&(a[a.length-1]+=` ${r.light(`<${e.length-t} more chars>`)}`),a.length>n?[...a.slice(0,n),r.light(`… +${a.length-n} more lines`)].join(`
|
|
4
|
-
`):a.join(`
|
|
5
|
-
`)}var L=class e{opts;presentation;separated=!1;entryAt=null;lastTool;lastCall=``;seq=0;view;style;static async create(t={}){return new e(t,await import(`./log-view-DeJstSkw.js`).then(e=>e.n))}constructor(e,t){this.opts=e,this.presentation=t,this.view=new t.LogView(e.cwd,{keepAnsi:!0}),this.style=e.style??d}get lastAssistantMessage(){return this.view.lastAssistantMessage}render(e){let t=Date.parse(String(e.at??``));this.entryAt=Number.isFinite(t)?t:null;let n=this.seq++,[r]=this.view.reduce({seq:n,at:t,level:`out`,line:``,entry:e});if(!r)return[];this.separated=r.separated&&r.seq===n;let i=this.style,a=r.sourceKind,o=r.title,c=this.opts.trim??500,l=this.opts.explicitTrim||c===1/0?1/0:6;if(r.kind===`usage`)return this.compose(a,i.dim(o),!1);if(r.kind===`approval`&&r.state){let t=e=>this.presentation.stripCwd(String(e??``),this.opts.cwd),i=t(e.summary),c=i.slice(i.indexOf(`: `)+2),l=i&&!this.lastCall.includes(c)?` · ${i}`:``,u=r.result&&r.result.durationMs>=1e3?` · ${s(r.result.durationMs)}`:``,d=r.seq===n?`${o} ${r.state}${l}`:`${r.state}${u}`;return this.compose(a,this.approval(d,t(e.reason??e.message)),!1)}if(r.kind===`approval`)return this.compose(a,this.approval(o,r.detail??``),!1);if(r.kind===`assistant`)return this.compose(a,o,!0);if(r.kind===`steer`)return this.compose(a,i.yellow(o),!0);if(r.kind===`error`)return this.compose(a,i.red(o),!0);if(r.kind===`reasoning`){let e=Math.round((r.durationMs??0)/1e3),t=e>=1?`thought ${s(e*1e3)} · `:``,n=l===1/0?`${i.dim(t)}${I(o,c,1/0,i)}`:this.clip(`${t}${o.split(`
|
|
6
|
-
`)[0]??``}`,3,i.dim);return this.compose(a,n,!1)}if(r.kind===`tool`&&r.seq===n)return this.lastTool=r.tool,this.lastCall=o,this.compose(a,this.clip(o.replace(/\s*\n\s*/g,` `),2,i.light),!1);if(r.kind===`tool`||r.kind===`tool-result`){let e=r.result??{ok:r.tone!==`error`,exitCode:r.exitCode,durationMs:r.durationMs??0,detail:o},t=[r.tool&&r.tool!==this.lastTool?i.dim(`from ${r.tool}`):``,e.ok?``:i.red(e.exitCode===void 0?`failed`:`exit ${e.exitCode}`),e.durationMs>=3e3?i.dim(s(e.durationMs)):``].filter(Boolean),n=I(e.detail,c,l,i),a=[...t.length?[t.join(i.dim(` · `))]:[],...n?[n]:[]];return a.length?this.compose(`tool-result`,a.join(`
|
|
7
|
-
`),!1):[]}return this.compose(a,this.clip(o,3,i.dim),!1)}approval(e,t){let n=this.style,r=this.opts.width?this.opts.width-M.length:1/0,i=`${e}${t?`. ${t}`:``}`;return!t||m(i)<=r?`${n.light(e)}${t?n.dim(`. ${t}`):``}`:[this.clip(e,1,n.light),this.clip(t,2,n.dim)].join(`
|
|
8
|
-
`)}clip(e,t,n){let r=this.opts.trim??500;if(this.opts.explicitTrim||r===1/0)return I(e,r,1/0,this.style,n);let i=this.opts.width;return i?o(e,Math.max(i-M.length,24),t).map(e=>P(e,n)).join(`
|
|
9
|
-
`):n(e)}compose(e,t,n){let r=this.separated?[``]:[],i=N[e]??(this.presentation.isApproval(e)?`⚑`:`·`),[a=``,...o]=t.split(`
|
|
10
|
-
`);return[...r,`${this.gutter(e)}${this.style.dim(i)} ${a}`,...o.map(e=>n?e:`${M}${e}`)]}gutter(e){let t=` `.repeat(6);return e===`tool-result`||!this.opts.startedAt||this.entryAt===null?t:`${this.style.dim(u(this.entryAt-this.opts.startedAt).padStart(5))} `}};const R=(e,t)=>e===`completed`?t.green(e):e===`failed`?t.red(e):e===`running`?t.yellow(e):t.dim(e);function z(e){return e.startedAt===void 0?``:s((e.finishedAt??Date.now())-e.startedAt)}function B(e){let t=(e.result?.output??``).trim().split(`
|
|
11
|
-
`);for(let e=t.length-1;e>=0;--e){let n=t[e].trim();if(n.startsWith(`{`))try{let e=JSON.parse(n).reply;return typeof e==`string`?e:void 0}catch{return}}}function V(e,t){x.stdout.write(`${t.bold(e.task.id)} ${R(e.status,t)}${e.error?` ${t.red(e.error)}`:``}${z(e)?` ${t.dim(`took ${z(e)}`)}`:``}\n`),e.credential&&x.stdout.write(`${t.dim(`credential`)} ${e.credential}\n`);let n=B(e);n&&x.stdout.write(`\n${t.bold(`Reply`)}\n${n.trim()}\n`)}function H(e,t=!1){let{task:n,steps:r,result:i}=e;return{taskId:n.id,name:n.name??null,prompt:n.prompt??null,system:n.system??null,status:e.status,engine:n.engine,model:n.model??null,effort:n.effort??null,permissions:n.permissions??null,cwd:n.cwd??null,addDirs:n.addDirs??[],createdAt:n.createdAt??null,completedAt:n.completedAt??null,...e.idleMs===void 0?{}:{idleMs:e.idleMs,lastActivityAt:e.lastActivityAt??null,stalled:e.stalled},pendingApprovals:e.pendingApprovals,...r.length?{steps:r}:{},turnCount:e.turns.length,...t?{turns:e.turns}:{},result:i}}async function U(e,t,i={}){let{task:a,steps:o,result:c,turns:l,pendingApprovals:u}=e,p=d,m=r.includes(a.status),g=O(a,{status:e.status,tokens:c?.tokens??e.liveTokens??null,tokenModel:c?.model,files:c?.touchedFiles?.map(e=>n(a.cwd??t,e)),live:!c?.tokens&&!!e.liveTokens,style:p});if(a.prompt&&g.push(...T(a.prompt,p)),u.length){g.push(``,p.dim(`pending approvals:`));for(let e of u)g.push(` ${p.cyan(e.id)} ${e.summary}`),e.cwd&&g.push(` ${p.dim(`runs in ${e.cwd}`)}`),g.push(` ${p.bold(`coder task approve ${a.id} ${e.id}`)} ${p.dim(`(--deny to reject)`)}`)}if(o.length){g.push(``,p.dim(`steps:`));let e=await L.create({cwd:a.cwd??t,startedAt:Date.parse(a.createdAt??``)||void 0,width:h(),style:p}),n=c?.finalMessage&&String(o.at(-1)?.message??``).trim()===String(c.finalMessage).trim()?o.slice(0,-1):o;for(let t of n)g.push(...e.render(t))}if(g.push(``),i.turns&&l.length)l.forEach((e,t)=>{t&&g.push(``),g.push(p.dim(`Turn ${t+1} of ${l.length}. ${j(String(e.prompt??``))}`)),g.push(String(e.finalMessage||p.dim(`(no final message)`)))});else if(c)g.push(C({...c,error:c.error??void 0},a.error,`(no final message)`,p)),l.length>1&&g.push(p.dim(`Turn ${l.length} of ${l.length}. All answers are in coder task result ${a.id} --turns.`));else if(m){let{lastLog:t}=e;g.push(p.dim(e.stalled?`Result pending. No progress for ${s(e.idleMs??0)}. The task may be stalled.${t?` Last: ${j(t.message??t.kind??``)}`:``}`:`Result pending. The task is still running.`))}else g.push(p.dim(`(no result)`));if(m&&!i.wait){let t=[`Wait in its own background shell, one per task; do not poll: coder task result ${a.id} --wait`,`Follow live: coder task watch ${a.id}`];e.stalled&&t.push(`Check the transcript: coder task result ${a.id} --tail all`),g.push(``,f(t,p))}x.stdout.write(`${g.join(`
|
|
12
|
-
`)}\n`)}const W=i({name:`task result`,help:{usage:`coder task result [task-id] [--server [url]]`,summary:`Show a task's status and its final answer (result pending while it runs), plus
|
|
13
|
-
any pending approvals. --wait blocks until it finishes, then prints. --tail <n>
|
|
14
|
-
includes the last n progress-log steps (--tail all for the whole transcript).
|
|
15
|
-
Defaults to the most recent task. Shortcut: \`coder result\`.
|
|
16
|
-
|
|
17
|
-
Run each --wait in its own background shell, one per task. Never wait on several
|
|
18
|
-
tasks in one call, or their approvals and answers never reach you one by one.`,flags:[[`--wait`,`block until the task finishes or needs an approval, then print`],[`--turns`,`every turn's answer (a steered task accretes turns)`],[`--tail <n|all>`,`include the last n progress-log steps (default: 0, final result only)`],a],exitCodes:[[`0`,`The task completed successfully.`],[`1`,`The task failed or was cancelled.`],[`4`,`An approval is pending; answer it, then run --wait again.`]],examples:[[`coder result <task-id> --wait`,`block until the task finishes, print the answer`],[`coder result <task-id> --turns`,`every turn's answer for a steered task`]]},options:{...b,tail:_,wait:v,turns:v,...S},args:1,run:async({options:e,args:[t]})=>{let{tasks:n}=await import(`./task-CvSqiwxo.js`).then(e=>e.t);return n.result(t,{...e,organization:e.workspace,onWaiting:e=>x.stderr.write(`${d.dim(`[coder] waiting for task ${e} to finish...`)}\n`)})},json:(e,{options:t})=>`attempts`in e?e:H(e,t.turns),print:(e,{options:t,cwd:n})=>`attempts`in e?V(e,d):U(e,n,t),exit:(e,{options:t})=>t.wait&&!(`attempts`in e)?e.task.status===`completed`?0:1:void 0});export{L as LogRenderer,W as commandResult,C as finalMessageLine,V as printOutcome,T as promptBlock,B as replyOf,R as statusStyle,O as taskHeaderLines,A as taskSummaryLines,j as trimStep};
|
package/dist/resume-ywzc7z6A.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./cli-B1ObVrL4.js";import{printFollow as t,printRunSummary as n}from"./watch-DmwaEvoi.js";import{RUN_FLAGS as r,hooks as i,parseRunArgs as a,printDetached as o,runOptions as s}from"./run-D7SJ-ieT.js";const c=e({name:`flow resume`,help:{usage:`coder flow resume [run-id] [--wait] [--json] [--dry-run]`,summary:`Re-run a flow from its journal: finished steps replay instantly, the first
|
|
2
|
-
changed or new step onward runs live. Defaults to the most recent run.
|
|
3
|
-
Accepts the same flags as flow run.`,flags:[[`--wait`,`follow the run in the foreground (Ctrl-C detaches; it keeps running)`],[`--concurrency <n>`,`tasks running at once`],[`--max-tasks <n>`,`total tasks the run may dispatch`]],examples:[[`coder flow resume`,`continue the most recent run`]]},options:r,args:1,async run({options:e,args:[n],cwd:r}){let{resumeRun:o}=await import(`./executor-vMppVLB6.js`).then(e=>e.y),c=await o(n,{...s(e,r),...e.args===void 0?{}:{args:a(e.args,[])}},i(e));return c.status===`running`&&c.watch&&await t(c.watch,e),c},print:e=>e.status===`running`?o(e):n(e)});export{c as commandResume};
|
package/dist/review-ZC0xG8XY.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{Ct as e}from"./dispatch-BsW_1m7e.js";import{i as t}from"./cli-B1ObVrL4.js";import{c as n,n as r,s as i,t as a}from"./args-DcBCtXhz.js";import o from"node:process";import*as s from"zod/mini";function c(e){let{summary:t}=e,n=`\`${t.baseSha}\`${t.worktree?` through the working tree`:`..\`${t.headSha}\``}`,r=(t.warnings??[]).flatMap(e=>[e,``]);if(t.worktree&&!t.files)return`${[`# Coder review`,``,`Nothing to review from ${n}.`,``,...r,`Flow run: \`${e.runId}\``].join(`
|
|
2
|
-
`)}\n`;let i=[`# Coder review`,``,`Reviewed ${n}${t.model?` with ${t.model}`:``} in ${(t.elapsedMs/1e3).toFixed(1)}s.`,``,...r,...e.findings.length?e.findings.flatMap(e=>[`- **${e.severity.toUpperCase()}** [\`${e.file}:${e.line}\`]. ${e.summary}`,` ${e.failure_scenario}`]):[`No findings after checking against the repository.`]];return t.posted!==void 0&&i.push(``,`Posted ${t.posted} new inline comment${t.posted===1?``:`s`}.`),i.push(``,`Flow run: \`${e.runId}\``),`${i.join(`
|
|
3
|
-
`)}\n`}const l=t({name:`review`,help:{usage:`coder review [--base <ref>] [--head <ref>] [--pr <n|url>] [--since <sha>] [--path <p>]... [--exclude <p>]... [--post] [--json|--md] [--engine <name>] [--model <alias|slug>] [--effort <low|medium|high>] [--cwd <dir>]`,summary:`Review changed code with a read-only agent. Every reported finding is checked
|
|
4
|
-
against the repository. Runs the built-in \`review\` flow. A local review covers
|
|
5
|
-
everything since the merge-base with the origin default branch, including
|
|
6
|
-
uncommitted and untracked files. Changed submodules are reviewed file by file.
|
|
7
|
-
PR reviews can post deduplicated inline comments.`,flags:[[`--base <ref>`,`local comparison base (default: merge-base with origin default)`],[`--head <ref>`,`review commits through this ref only (default: the working tree)`],[`--pr <n|url>`,`review a pull request by number (origin repo) or URL; GitHub via gh for now`],[`--since <sha>`,`keep only PR files and hunks changed since this commit`],[`--path <p>`,`review only this path, relative to cwd (repeatable)`],[`--exclude <p>`,`leave this path out, relative to cwd (repeatable)`],[`--post`,`post deduplicated inline comments and sticky PR summary`],[`--md`,`markdown output (the default)`],[`--engine <name>`,`codex, claude, or custom`],[`--model <alias|slug>`,`model for the review task`],[`--effort <low|medium|high>`,`reasoning effort and review depth (default: medium depth)`]],examples:[[`coder review`,`review the branch plus uncommitted work`],[`coder review --base main`,`review everything since main locally`],[`coder review --path src --exclude src/gen`,`review src without generated code`],[`coder review --pr 42 --post`,`review and post to pull request 42`]],seeAlso:`flow watch · docs review`},options:{...a,base:i,head:i,pr:i,since:i,path:n,exclude:n,post:r,md:r,engine:i,model:i,effort:s.optional(s.enum([`low`,`medium`,`high`],{error:`expected "low", "medium", or "high"`}))},async run({options:t,cwd:n}){let{runFlowByName:r}=await import(`./executor-vMppVLB6.js`).then(e=>e.t);if(t.json&&t.md)throw new e(`invalid-option`,`--json and --md are mutually exclusive.`);let i=await r(`review`,{cwd:n,args:{...t,cwd:n}});return{...i.result,runId:i.runId}},print:e=>o.stdout.write(c(e))});export{l as commandReview};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./cli-B1ObVrL4.js";import{n as t}from"./args-DcBCtXhz.js";import n from"node:process";const r=e({name:`server rotate-key`,globalFlags:{cwd:!1},help:{usage:`coder server rotate-key [--json]`,summary:`Re-seal stored app, installation, engine, and linked user secrets with the current key.`,env:[[`SERVER_ENCRYPTION_KEY`,`the new key`],[`SERVER_ENCRYPTION_KEY_PREVIOUS`,`the old key, still accepted while rotating`]]},options:{json:t},run:async()=>{let{rotateKey:e}=await import(`./maintenance-BAzr9Jlr.js`).then(e=>e.t);return e()},json:({moved:e})=>({ok:!0,moved:e}),print:({moved:e})=>n.stdout.write(`Re-sealed ${e} secret${e===1?``:`s`}.\n`)});export{r as commandServerRotateKey};
|
package/dist/run-D7SJ-ieT.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{Ct as e}from"./dispatch-BsW_1m7e.js";import{i as t}from"./cli-B1ObVrL4.js";import{p as n,s as r}from"./output-BKeyLbvt.js";import{n as i,s as a,t as o}from"./args-DcBCtXhz.js";import{FlowStepRenderer as s,printFollow as c,printRunSummary as l}from"./watch-DmwaEvoi.js";import u from"node:process";const d={...o,args:a,wait:i,concurrency:a,"max-tasks":a,"dry-run":i};function f(t){let n={};for(let r of t){let t=r.indexOf(`=`);if(t===-1)throw new e(`invalid-option`,`Invalid argument "${r}": expected key=value.`,{hint:`Help: coder flow run --help`});let i=r.slice(0,t),a=r.slice(t+1);try{n[i]=JSON.parse(a)}catch{n[i]=a}}return n}function p(t,n){if(t!==void 0)try{return JSON.parse(t)}catch(t){throw new e(`invalid-option`,`Invalid --args JSON: ${t instanceof Error?t.message:String(t)}`)}return n.length?f(n):{}}const m=e=>e?Number(e):void 0,h=(e,t)=>({cwd:t,dryRun:e[`dry-run`],concurrency:m(e.concurrency),maxTasks:m(e[`max-tasks`]),argv:u.argv.slice(2),wait:e.wait}),g=e=>e[`dry-run`]&&!e.json?v():{},_=t({name:`flow run`,help:{usage:`coder flow run <name|path> [--args '<json>' | key=value...] [--wait] [--concurrency N] [--max-tasks N] [--json] [--dry-run]`,summary:`Run a flow: a TypeScript file that orchestrates many coder tasks with gates,
|
|
2
|
-
journaling, and resume. Prints the run id and orchestrates in the background;
|
|
3
|
-
--wait follows the run in the foreground with live progress (Ctrl-C detaches;
|
|
4
|
-
it keeps running), and \`coder flow watch\` shows the same lines any time.
|
|
5
|
-
Stop a run with \`coder flow stop\`.`,flags:[[`--wait`,`follow the run in the foreground (Ctrl-C detaches; it keeps running)`],[`--args <json>`,`the flow's input as a JSON value (or pass bare key=value pairs)`],[`--concurrency <n>`,`tasks running at once (default: CPU count)`],[`--max-tasks <n>`,`total tasks the run may dispatch (default: CPU count x 10)`],[`--dry-run`,`print every resolved prompt and gate command without dispatching`]],examples:[[`coder flow run audit-routes --wait`,`run a discovered flow`],[`coder flow run ./scratch/one-off.ts --wait`,`run a flow by path`],[`coder flow run verify --args '{"clusters":["a","b"]}' --wait`,`pass structured input`]]},options:d,args:1/0,async run({options:t,args:[n,...r],cwd:i}){let{startRun:a}=await import(`./executor-vMppVLB6.js`).then(e=>e.y);if(!n)throw new e(`invalid-option`,`Missing flow name or path.`,{hint:[`Usage: coder flow run <name|path>`,`List: coder flow discover`]});let o=await a(n,{...h(t,i),args:p(t.args,r)},g(t));return o.status===`running`&&o.watch&&await c(o.watch,t),o},print:e=>e.status===`running`?y(e):l(e)});function v(){let e=new s,t=t=>e.emit(t);return{onTaskStart:e=>t({kind:`task-start`,...e}),onTaskEnd:e=>t({kind:`task-end`,...e}),onGateStart:e=>t({kind:`gate-start`,...e}),onGate:e=>t({kind:`gate`,...e}),onLog:(e,n)=>t({kind:`log`,message:e,depth:n}),onFlowStart:e=>t({kind:`flow-start`,...e}),onReplay:e=>t({kind:`replay`,count:e})}}function y(e){u.stdout.write(`${n.dim(`[flow]`)} run ${n.cyan(e.runId)} started in the background (running).\n`),u.stdout.write(`\n${r([`Result: coder flow result ${e.runId}`,`Runs: coder flow list`],n)}\n`)}export{d as RUN_FLAGS,_ as commandRun,g as hooks,p as parseRunArgs,y as printDetached,h as runOptions};
|
package/dist/run-DoRQSC_K.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{d as e,i as t,n,p as r}from"./cli-B1ObVrL4.js";import{p as i,r as a,s as o,u as s}from"./output-BKeyLbvt.js";import{c,i as l,n as u,s as d,t as f}from"./args-DcBCtXhz.js";import{printOutcome as p}from"./result-DGWyUHYU.js";import{printLine as m}from"./watch-CQu-tJKZ.js";import{TASK_FLAGS as h}from"./task-C8lmcNsf.js";import g from"node:process";function _(t){let n=e([{usage:`coder task result ${t} --wait`,blurb:`run this in its own background shell, one per task (never wait on several tasks in one call). Returns with the answer or a pending approval.`},{usage:`coder task steer ${t} "<follow-up>"`,blurb:`steer the task with a message (use 'ask' without interrupting main thread)`},{usage:`coder task stop ${t}`,blurb:`stop the task`},{usage:`coder task list`,blurb:`recent tasks`},{usage:`coder task --help`,blurb:`all task commands`}],i,i.blue);return[...r(`Next step`,n.slice(0,1),i),...r(`Related`,n.slice(1),i)].join(`
|
|
2
|
-
`)}function v(e,t){g.stdout.write(`${i.dim(`[coder]`)} task ${i.blue(e)} started in the background (${t}).\n`),g.stdout.write(`${_(e)}\n`)}function y(e){g.stderr.write(`${i.dim(`[coder]`)} Task ${i.cyan(e)} started and is waiting to finish. Press Ctrl-C to detach. It keeps running.\n`),g.stderr.write(`${_(e)}\n`)}function b(e){g.stderr.write(`\n${i.dim(`[coder] Detached. The task is still running.`)}\n\n${o([`Wait in its own background shell, one per task: coder task result ${e} --wait`],a)}\n`)}function x(e){g.stdout.write(`\n${e.finalMessage||(e.error?`${i.red(`error:`)} ${e.error}`:`(no final message)`)}\n\n`);let t=e.tokens?` tokens=${s(e.tokens,e.model)}`:``;g.stderr.write(`${i.dim(`[coder] task=${e.taskId} status=${e.status}${t}`)}\n`)}const S=t({name:`task run`,help:{usage:`coder task run "<task text>"`,summary:`Dispatch a coding task to the configured engine. Backgrounds by default and\nprints a task id; --wait runs in the foreground and prints the answer.\nShortcut: \`coder run "<text>"\`.\n\nWriting a task: one task per focused goal, independent goals as parallel runs.\nThe worker starts with nothing but the text, so include the goal, file paths,\nconstraints and any context only you have. Delegate rather than doing the work\nyourself first, however small it looks.\n\nWaiting: run \`coder task result <task-id> --wait\` in its own background shell, one\nper task. Never wait on several tasks in one call, or their approvals and answers\nnever reach you one by one.\n\n${n}`,flags:[[`--output-schema <json>`,`JSON Schema for the task answer`],[`--name <name>`,`label the task (shown in list/result)`],[`--agent <id>`,`run as that agent: its system.md, engine settings, MCP servers and flows; flags override them`],[`--system <text>`,`standing instructions prepended to the task (kept out of prompt previews)`],...h,[`--server [url] [--workspace <slug>]`,`run the task on your Coder server and follow it here (--background prints its id); --resume continues a finished server task`],[`--repo <owner/name>`,`with --server: check out a repo from the workspace's installs`],[`--runner <name>`,`with --server: where it runs (a runner kind or a registered runner)`]],exitCodes:[[`0`,`The task started, or --wait printed a successful answer.`],[`1`,`Dispatch or the task failed.`],[`3`,`No engine could start; follow fallback.instructions in the JSON payload.`],[`4`,`An approval is pending; answer it, then run result --wait again.`],[`130`,`The foreground wait was detached and the task is still running.`]],examples:[[`coder run "add a /health endpoint"`,`dispatch in the background, print a task id`],[`coder result <task-id> --wait`,`then block until it finishes and print the answer`],[`coder run --wait "fix the failing test"`,`or block on the run itself`],[`coder task run --model luna --system "tests live in test/, don't touch anything outside of it" "rename foo to bar"`,`pick an engine via its model alias; --system adds standing instructions`],[`coder task run --agent reviewer "review the last commit"`,`run a repo agent from .coder/agents/reviewer`],[`coder run --add-dir ../api --add-dir ../shared "update the client for the new endpoint"`,`let the task reach sibling repos too`]]},options:{...f,agent:d,"output-schema":d,engine:d,model:d,effort:d,permissions:d,resume:d,host:d,name:d,system:d,mcp:d,"add-dir":c,background:u,wait:u,"simulate-approval":u,server:l,workspace:d,yes:u,repo:d,runner:d},args:1/0,async run({options:e,args:t}){let{tasks:n}=await import(`./task-CvSqiwxo.js`).then(e=>e.t),r=e.json,a;return g.on(`SIGINT`,()=>{a&&b(a),g.exit(130)}),n.run(t.join(` `).trim(),{cwd:e.cwd,agent:e.agent,outputSchema:e[`output-schema`]?JSON.parse(e[`output-schema`]):void 0,engine:e.engine,model:e.model,effort:e.effort,permissions:e.permissions,name:e.name,system:e.system,resume:e.resume,mcp:e.mcp,addDirs:e[`add-dir`],wait:e.server===void 0?e.wait:!e.background,simulateApproval:e[`simulate-approval`],repo:e.repo,runner:e.runner,server:e.server,yes:e.yes,organization:e.workspace,onFallback:({engine:e,detail:t,next:n})=>g.stderr.write(`[coder] ${e} failed to start (${t}); falling back to ${n}.\n`),onNote:e=>g.stderr.write(`[coder] ${e}\n`),onWaiting:e=>{a=e,r||y(e)},onLog:e=>r?g.stdout.write(`${JSON.stringify(e,null,2)}\n`):m(e,i)})},print(e,{options:t}){if(`attempts`in e)return t.background?void g.stdout.write(`${e.task.id}\n`):p(e,i);t.wait?x(e):v(e.taskId,e.status)},exit:(e,{options:t})=>(`attempts`in e?!t.background:t.wait)?e.status===`completed`?0:1:void 0});export{S as commandTask};
|
package/dist/run-ukCf2Mdy.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as e}from"./prompt-CMXmt2l9.js";import{i as t,r as n}from"./cli-B1ObVrL4.js";import{p as r,s as i}from"./output-BKeyLbvt.js";import{i as a,n as o,s,t as c}from"./args-DcBCtXhz.js";import{printOutcome as l}from"./result-DGWyUHYU.js";import{printLine as u}from"./watch-CQu-tJKZ.js";import d from"node:process";const f={...c,flow:s,server:a,workspace:s,wait:o,task:s,yes:o},p=t({name:`agent run --task`,options:f,run:async({options:e,cwd:t})=>{let{agents:n}=await import(`./agent-BlQ_dNNm.js`).then(e=>e.t);return n.runTask(e.task,{cwd:t})}}),m=t({name:`agent run`,help:{usage:`coder agent run <agent> <file> [--server [url] [--wait]] [--flow <name>] [--json] [--cwd <dir>]`,summary:`Run a recorded platform event (AgentEvent JSON) through an agent. With --server it goes through your Coder server exactly like a webhook: real app, tokens, runner, and the reply is posted. Without it the engine runs here on the agent's prompt and this checkout, platform tools off, and the reply is printed.`,flags:[n,[`--wait`,`with --server: follow the task log here until it finishes, then print the reply`],[`--flow <name>`,`override the matched flow`]],examples:[[`coder agent run helper sample-slack-mention.json`,`offline: print what the agent would reply`],[`coder agent run helper event.json --server`,`for real, through the server`]]},options:f,args:2,run:async({options:e,args:[t,n],cwd:i})=>{let{agents:a}=await import(`./agent-BlQ_dNNm.js`).then(e=>e.t);return a.run(t,n,{...e,cwd:i,organization:e.workspace,...e.json?{}:{onLog:e=>u(e,r),onDone:e=>l(e,r)}})},json:e=>Array.isArray(e)&&e.length===1?e[0]:e,print(t,{options:n}){if(!Array.isArray(t)){if(`tasks`in t){if(!t.tasks.length)return void d.stdout.write(`The server accepted the event but no agent matched it.
|
|
2
|
-
`);d.stdout.write(`${r.bold(`Queued on the server`)} as task ${t.tasks.join(`, `)}.\n\n${i([`Watch it: coder task watch ${t.tasks[0]} --server ${e(n.server)}`],r)}\n`);return}t.reply===void 0?t.result!==void 0&&d.stdout.write(`${JSON.stringify(t.result,null,2)}\n`):d.stdout.write(`${t.reply.trim()}\n`)}}}),h=Object.assign(e=>(e.some(e=>e===`--task`||e.startsWith(`--task=`))?p:m)(e),{commandName:`agent run`,help:m.help});export{h as commandAgentRun};
|
package/dist/runner-D-REfOUe.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as e}from"./cli-B1ObVrL4.js";const t=e(`runner`,{add:async()=>(await import(`./add-D7X3gxap.js`)).commandRunnerAdd,default:async()=>(await import(`./default-B_nKaX0-.js`)).commandRunnerDefault,test:async()=>(await import(`./test-CDKz4jY_.js`)).commandRunnerTest,serve:async()=>(await import(`./serve-P9pFkEnE.js`)).commandRunnerServe,list:async()=>(await import(`./list-byYLBl1U.js`)).commandRunnerList,rename:async()=>(await import(`./rename-D1g4TnHQ.js`)).commandRunnerRename,remove:async()=>(await import(`./remove-C15WLaXT.js`)).commandRunnerRemove},{menu:[{usage:`add <kind>`,blurb:`connect a runner`},{usage:`default <id>`,blurb:`set the default in its scope`},{usage:`test <id>`,blurb:`check a runner connection`},{usage:`serve --url <public url>`,blurb:`run your server's tasks on this machine`},{usage:`list`,blurb:`list your runners and the workspace's`},{usage:`rename <id> <name>`,blurb:`rename a runner`},{usage:`remove <id>`,blurb:`remove a runner`}],description:[`Run your Coder server's tasks on your own machine, reached through any tunnel.`],exampleCommand:`runner serve`});export{t as commandRunner};
|
package/dist/runner-wDYhkVsM.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{Ct as t}from"./dispatch-BsW_1m7e.js";import{n}from"./remote-CxFnEjZl.js";var r=e({addRunner:()=>a,addRunnerFields:()=>u,listRunners:()=>i,pairRunner:()=>o,removeRunner:()=>l,testRunner:()=>c,updateRunner:()=>s});const i=(e={})=>n(e).runners.list(),a=(e,t={})=>n(t).runners.add(e),o=(e,t={})=>n(t).runners.pair(e),s=(e,t,r={})=>n(r).runners.update(e,t),c=(e,t={})=>n(t).runners.test(e),l=(e,t={})=>n(t).runners.remove(e);async function u(e,r){let i=n(r),{catalog:a}=await i.runners.list(),o=a.find(t=>t.kind===e);if(!o)throw new t(`invalid-option`,`Unknown runner kind.`);if(!o.available)throw new t(`invalid-option`,o.reason??`Runner unavailable.`);let s={};for(let e of r.field??[]){let n=e.indexOf(`=`);if(n<1)throw new t(`invalid-option`,`Use --field key=value.`);let r=e.slice(0,n),i=e.slice(n+1),a=o.fields.find(e=>e.key===r);if(!a)throw new t(`invalid-option`,`Unknown runner field ${r}.`);if(a.secret){if(!/^env:[A-Z_][A-Z0-9_]*$/.test(i)||!process.env[i.slice(4)])throw new t(`invalid-option`,`Read ${r} from the environment with --field ${r}=env:VARIABLE.`);s[r]=process.env[i.slice(4)]}else s[r]=i}let c=r.scope??((await i.me()).user?`personal`:`workspace`);if(c!==`personal`&&c!==`workspace`)throw new t(`invalid-option`,`Scope must be personal or workspace.`);return o.connect===`pair`?i.runners.pair({name:r.name,scope:c}):i.runners.add({kind:o.kind,name:r.name??o.name,scope:c,config:s})}export{r as a,l as i,i as n,c as o,o as r,s,a as t};
|
package/dist/serve-BJ_Mbm2m.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{$ as t,An as n,Ct as r,Ht as i,K as a,Mt as o,Nt as s,Tn as c,U as l,W as u,dt as d,et as f,lt as p,q as m,rn as h,tt as g,vt as _}from"./dispatch-BsW_1m7e.js";import{i as v,n as y,r as b,u as x}from"./load-SnZd7xG1.js";import{c as S,d as C,l as ee,n as te}from"./integrations-B2CavXR1.js";import{c as ne}from"./models-C-S7HqSb.js";import{o as w}from"./local-BRy1EUq2.js";import{a as T,d as E,f as re,l as D,n as ie,o as ae,p as O,r as oe,s as se,t as ce,u as le}from"./http-D01Udu4u.js";import{$ as ue,$n as de,$t as fe,A as pe,An as me,At as he,B as ge,Bt as _e,C as ve,Cn as ye,Ct as be,D as xe,Dn as Se,Dt as Ce,E as we,En as Te,Et as Ee,F as De,Fn as Oe,Ft as ke,G as Ae,Gn as je,Gt as Me,H as Ne,Hn as Pe,Ht as Fe,I as Ie,In as Le,It as Re,J as ze,Jn as Be,Jt as Ve,K as He,Kn as Ue,Kt as We,L as Ge,Ln as k,Lt as Ke,M as qe,Mn as Je,Mt as Ye,N as Xe,Nn as Ze,Nt as Qe,O as A,On as $e,Ot as j,P as et,Pn as tt,Pt as nt,Q as rt,Qn as it,Qt as at,R as ot,Rn as st,S as M,Sn as N,St as P,T as ct,Tn as lt,Tt as ut,U as dt,Un as ft,Ut as pt,V as mt,Vt as ht,W as gt,Wn as _t,Wt as vt,Xn as F,Xt as yt,Y as bt,Yn as I,Yt as xt,Z as St,Zn as Ct,Zt as wt,_ as Tt,_n as Et,_t as Dt,an as Ot,b as L,bn as kt,bt as At,c as jt,cn as Mt,d as Nt,dn as Pt,dt as Ft,en as It,er as R,et as Lt,f as Rt,fn as zt,g as Bt,gn as z,gt as Vt,hn as Ht,ht as Ut,i as Wt,in as Gt,j as Kt,jn as qt,jt as B,k as Jt,kn as Yt,kt as Xt,l as Zt,ln as Qt,lt as $t,m as V,mt as en,nn as tn,nt as nn,o as rn,on as an,ot as on,p as H,q as sn,qn as cn,qt as ln,r as un,rn as dn,rt as fn,sn as pn,st as mn,t as hn,tn as gn,tr as _n,tt as vn,un as yn,ut as bn,v as xn,vn as U,vt as Sn,w as Cn,wn,wt as Tn,x as W,xn as G,xt as En,y as Dn,yn as On,yt as kn,z as An,zn as K,zt as jn}from"./store-j8icrG0v.js";import{n as Mn,r as Nn}from"./env-YRY3I60r.js";import{l as Pn}from"./schema-DoNO0dPh.js";import{r as Fn,t as In}from"./migrate-Czh3TEK5.js";import{n as Ln,r as Rn}from"./usage-CSh-xwQ2.js";import q from"node:path";import J from"node:process";import*as Y from"zod/mini";import zn from"node:fs";import{createHash as Bn,randomBytes as Vn,randomUUID as Hn}from"node:crypto";import X from"node:fs/promises";import{isDeepStrictEqual as Un}from"node:util";import Wn from"node:http";import{sql as Gn}from"drizzle-orm";async function Kn(e){try{return await X.readdir(e,{withFileTypes:!0})}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function qn(e){try{return await X.lstat(e),!0}catch(e){if(e.code===`ENOENT`)return!1;throw e}}async function Jn(e,t){if(e===t||!await qn(e))return 0;let r=await Kn(e),i=r.filter(e=>e.isDirectory()).length;if(!await qn(t))return await n(e,t),i;for(let i of r)await n(q.join(e,i.name),q.join(t,i.name));return await X.rmdir(e),i}async function Yn(e){let t=q.dirname(e),n=q.basename(e);for(let e of await Kn(t)){let r=e.name.startsWith(n)?e.name.slice(n.length):``;if(!e.isFile()||!(r===`.tmp`||/^\.\d+(?:\.[a-f0-9-]{36})?\.tmp$/.test(r)))continue;let i=Number(e.name.slice(n.length+1).split(`.`)[0]);if(Number.isInteger(i)&&i>0)try{process.kill(i,0);continue}catch(e){if(e.code!==`ESRCH`)continue}await X.unlink(q.join(t,e.name)).catch(e=>{if(e.code!==`ENOENT`)throw e})}}async function Xn(e,t){if(await Yn(e),e===t||!await qn(e))return 0;if(!await qn(t))return await n(e,t),1;let r=JSON.parse(await X.readFile(e,`utf8`)),i=JSON.parse(await X.readFile(t,`utf8`)),a={...r,...i,...r.rows||i.rows?{rows:{...r.rows,...i.rows}}:{}},o=`${t}.${process.pid}.${Hn()}.tmp`;try{await X.writeFile(o,`${JSON.stringify(a)}\n`,{mode:384,flag:`wx`}),await X.rename(o,t),await X.unlink(e)}finally{await X.rm(o,{force:!0})}return 1}async function Zn(){let e=o(),t=s(`state`),n=o(`archive`),r=o(`flows-archived`),i=o(`usage.json`),a=o(`runner`,`usage.json`),c={from:s(`checkouts`),to:o(`checkouts`)},l={from:s(`update-check.json`),to:o(`update-check.json`)},u={cache:e,tasks:0,flows:0,files:0},d=(await Kn(t)).filter(e=>e.isDirectory()).map(e=>({archive:s(`state`,e.name,`archive`),flows:s(`state`,e.name,`flows-archived`),usage:s(`state`,e.name,`usage.json`),runnerUsage:s(`state`,e.name,`runner`,`usage.json`)}));await Yn(i),await Yn(a);for(let e of d)u.tasks+=await Jn(e.archive,n),u.flows+=await Jn(e.flows,r),u.files+=await Xn(e.usage,i),u.files+=await Xn(e.runnerUsage,a);return await Jn(c.from,c.to),u.files+=await Xn(l.from,l.to),u}async function Qn(e){let t=(e.now??Date.now)(),n=await e.store.list(`runner`);return{online:1+n.filter(({value:e})=>e.lastSeen!==void 0&&t-e.lastSeen<3e5).length,total:1+n.length}}async function $n(e){let t=(e.now??Date.now)(),n=e.health,{body:r,status:i}=n&&t-n.at<5e3?n:await er(e);e.health=i===200?{at:n&&t-n.at<5e3?n.at:t,body:r,status:i}:void 0;let a=Math.max(0,t-(e.limits?.startedAt??t))/1e3;return T({...r,uptime:a},i,{"cache-control":`no-store`})}async function er(e){let t=e.config.store===`postgres`?`down`:`none`,n={online:0,total:0},r=!0;try{if(e.config.store===`postgres`){if(!e.databaseHealth)throw Error(`Database health probe is unavailable`);await e.databaseHealth(),t=`ok`}n=e.healthRunners?await e.healthRunners():await Qn(e)}catch{r=!1,e.config.store===`postgres`&&(t=`down`)}return{body:{ok:r,version:c(),db:t,runners:n},status:r?200:503}}async function tr(e){let t=(e.now??Date.now)();if(e.queue.metrics&&!e.local)return{...await e.queue.metrics(e.organizationId,t-864e5),runnersOnline:(await Qn(e)).online,requests:e.limits?.requests??0,rateLimitRejections:e.limits?.rejections??0};let n=await e.queue.list(e.organizationId),r=e.local?[...V(e.local.cwd,!1),...V(e.local.cwd,!0)]:[],i=new Map([...r,...n.map(e=>e.status===`queued`?e:r.find(t=>t.task.id===e.task.id)??e)].map(e=>[e.task.id,e])),a={queued:0,running:0,waiting:0,completed:0,failed:0,cancelled:0},o=0;for(let e of i.values())e.createdAt>=t-864e5&&a[e.status]++,e.status===`queued`&&o++;return{tasks:a,queueDepth:o,runnersOnline:(await Qn(e)).online,requests:e.limits?.requests??0,rateLimitRejections:e.limits?.rejections??0}}async function nr(e,t,n,r){if(!t.auth)return T({mode:jn(t),organization:{id:t.organizationId},server:rr(t)});let i=t.session;return T({mode:jn(t),user:i.user,organization:i.organizations.find(e=>e.id===i.organizationId)??null,organizations:i.organizations,manageMembersUrl:`${t.auth.issuer}/auth/onboarding`,server:rr(t)})}function rr(e){return{name:e.config.name??`Coder`,store:e.config.store,...e.config.publicUrl?{url:e.config.publicUrl}:{},subscriptions:{claude:!!e.config.subscriptions?.claude,codex:!!e.config.subscriptions?.codex}}}async function ir(e,t,n,r){let i=e.headers.get(`content-type`)??``,a=i.includes(`application/json`)?await e.json().catch(()=>void 0):await e.formData().then(e=>Object.fromEntries(e.entries()),()=>void 0);if(!a||typeof a!=`object`)return T({error:`Send the workspace as a form or JSON body.`},400);let o=typeof a.organization==`string`?a.organization:``,s=o?await t.auth.setOrganization(e.headers,o):void 0;if(!s)return T({error:`You are not a member of that workspace.`},403);let{cookies:c,...l}=s,u=i.includes(`application/json`)?T({organization:l}):O(`/dash`,303);for(let e of c)u.headers.append(`set-cookie`,e);return u}async function ar(e,t,n,r){let i=t.session.user.id;n.id;let a=(await e.json().catch(()=>({}))).engine??``;if(!ur.has(a)||!t.config.subscriptions?.[a])return T({error:`Sign in with ${a||`that engine`} is off on this server.`},403);let o=t.runners[t.config.runner];if(!o||o.kind===`github-actions`)return T({error:`Sign-in cannot run on the ${t.config.runner} runner.`},409);let s=`login-${Vn(12).toString(`base64url`)}`,c=ft(s,t.organizationId,0),l={owner:i,engine:a,state:`starting`,tokenHash:c.hash,runner:o.kind,createdAt:dr(t),expiresAt:dr(t)+lr};await fr(t,s,l);let u;try{let e=await o.start({id:s},{CODER_SERVER:t.config.publicUrl??``,CODER_TASK_TOKEN:c.token,CODER_LOGIN:a}),n=await t.store.patchLogin(s,{handle:e},{tokenHash:l.tokenHash});if(!n)return await o.stop(e).catch(()=>{}),T({error:`This sign-in is gone. Start again.`},409);u=n}catch(e){return await t.store.delete(`login`,s),T({error:e instanceof Error?e.message:String(e)},502)}return T(pr(s,u),201)}async function or(e,t,n,r){t.session.user.id;let i=n.id??``,a=i&&!i.includes(`/`)?await mr(t,i):void 0;return a?T(pr(i,a)):T({error:`This sign-in is gone. Start again.`},404)}async function sr(e,t,n,r){t.session.user.id;let i=n.id??``,a=i&&!i.includes(`/`)?await mr(t,i):void 0;if(!a)return T({error:`This sign-in is gone. Start again.`},404);let o=await e.json().catch(()=>({})),s=typeof o.code==`string`?o.code.trim():``;return a.engine!==`claude`||a.state!==`open`||!s||!await t.store.patchLogin(i,{state:`verifying`,input:K(t.config,s)},{state:`open`,tokenHash:a.tokenHash})?T({error:`This sign-in is not waiting for a code.`},409):T({ok:!0})}async function cr(e,t,n,r){t.session.user.id;let i=n.id??``,a=i&&!i.includes(`/`)?await mr(t,i):void 0;return a?(await t.store.delete(`login`,i),a.handle&&await t.runners[a.runner]?.stop(a.handle).catch(()=>{}),T({ok:!0})):T({error:`This sign-in is gone. Start again.`},404)}const lr=6e5,ur=new Set([`claude`,`codex`]),dr=e=>(e.now??Date.now)();function fr(e,t,n){return e.store.put(`login`,t,n,{ttlMs:Math.max(1,n.expiresAt-dr(e))})}function pr(e,t){return{id:e,engine:t.engine,state:t.state,expiresAt:t.expiresAt,...t.url?{url:t.url}:{},...t.code?{code:t.code}:{},...t.error?{error:t.error}:{},...t.label?{label:t.label}:{}}}async function mr(e,t){let n=await e.store.get(`login`,t);return n&&n.owner===e.session?.user.id?n:void 0}async function hr(e,t,n,r){let i=n.id,a=t.callbackLogin,o=Date.now()+25e3;for(;!a.input&&Date.now()<o&&!e.signal.aborted;){await new Promise(e=>setTimeout(e,250));let e=await t.store.get(`login`,i);if(!e)return new Response(`Unauthorized`,{status:401});a=e}if(!a.input)return T({});let s=await t.store.patchLogin(i,{input:null},{input:a.input,tokenHash:a.tokenHash});return T(s?{code:k(t.config,a.input)}:{})}async function gr(e,t,n,r){n.id;let i=t.callbackLogin;return T({engine:i.engine})}async function _r(e,t,n,r){let i=n.id,a=t.callbackLogin,o=await e.json().catch(()=>({}));if(a.state===`done`||a.state===`failed`)return T({ok:!0});let s={state:[`starting`,`open`,`verifying`],tokenHash:a.tokenHash};if(typeof o.error==`string`)return await t.store.patchLogin(i,{state:`failed`,error:o.error.slice(0,500)},s),T({ok:!0});let c=o.result?.env;if(c){let e=a.engine===`claude`?`CLAUDE_CODE_OAUTH_TOKEN`:`CODEX_AUTH_JSON`;if(Object.keys(c).join()!==e||typeof c[e]!=`string`)return T({error:`Invalid sign-in result`},400);let n=`${a.engine}-subscription`,r=o.result?.account;return await t.store.completeLogin(i,a.tokenHash,n,{...st(t.config,{env:c}),engine:a.engine,createdAt:(t.now??Date.now)(),...r?.email||r?.plan?{account:{...typeof r.email==`string`?{email:r.email}:{},...typeof r.plan==`string`?{plan:r.plan}:{}}}:{}})?T({ok:!0}):T({error:`This sign-in changed. Try again.`},409)}let l={...typeof o.url==`string`&&/^https:\/\//.test(o.url)?{url:o.url}:{},...typeof o.code==`string`?{code:o.code.slice(0,64)}:{}};return(a.state===`starting`?await t.store.patchLogin(i,{...l,state:`open`},{state:`starting`,tokenHash:a.tokenHash})??await t.store.patchLogin(i,l,{...s,state:[`open`,`verifying`]}):await t.store.patchLogin(i,l,s))?T({ok:!0}):T({error:`This sign-in changed. Try again.`},409)}async function vr(e,t,n,r){let i=n.id,a=t.operatorApp??!1;if(!/^[a-z0-9_-]+$/.test(r.pathname.split(`/`)[2]))return;let o=a?`*`:t.session?.user.id??`anonymous`,s=t.integrations[i];if(!s)return I(`Unknown integration "${i}"; run coder agent integrations list to see them`,404);let c=t.config.publicUrl;if(!c)return I(`PUBLIC_URL is not set on this server; set it to the address platforms should call and restart`,400);t.fetch,t.now?.();let l=F(r.searchParams);if(!l)return I(`Setup link is missing or malformed; start again from the agent's Platforms tab`,400);if(!l.definition.integrations[i])return I(`This agent declares no ${i} integration in its agent.json`,400);if(l.state.public&&!a)return I(`Only the server operator creates public apps`,403);let u=Ue(i,l.state),d=l.state.tx?await de(t,l.state.tx,`create`,o)===u?l.state.tx:void 0:await R(t,`create`,o,u);if(!d)return I(`This app creation link is invalid, expired, or already used`,403);let f={...l.state,tx:d};return s.app.createPage({publicUrl:c,state:f,definition:l.definition,encodedState:w(f)})}async function yr(e,t,n,r){let i=n.id,a=t.operatorApp??!1;if(!/^[a-z0-9_-]+$/.test(r.pathname.split(`/`)[2]))return;let o=a?`*`:t.session?.user.id??`anonymous`,s=t.integrations[i];if(!s)return I(`Unknown integration "${i}"; run coder agent integrations list to see them`,404);let c=t.config.publicUrl;if(!c)return I(`PUBLIC_URL is not set on this server; set it to the address platforms should call and restart`,400);let l=t.fetch??fetch,u=t.now?.()??Date.now(),d=oe(r.searchParams.get(`state`)),f=F(r.searchParams)??(d&&F(new URLSearchParams(Object.entries(d).filter(([,e])=>e!==void 0))))??void 0;if(!f)return I(`Setup state was lost between the platform and this server; start again`,400);if(!f.state.tx||!await it(t,f.state.tx,`create`,o,Ue(i,f.state)))return I(`This app creation link is invalid, expired, or already used`,403);let p=await s.app.createCallback(e,{publicUrl:c,...f,fetch:l}).catch(e=>I(`Creating the ${i} app failed: ${e instanceof Error?e.message:e}`,400));if(p instanceof Response)return p;let m={id:`${i}:${p.platformAppId}`,integration:i,agent:f.state.agent,name:p.name,...f.state.repo?{agentsRepo:f.state.repo}:{},...f.state.repo?{branch:f.state.branch??`main`}:{},...a?{builtin:!0}:{},credentials:K(t.config,p.credentials),createdAt:u};if(await t.store.put(`app`,m.id,m),a)return I(`Created ${p.name}. Every workspace on this server can now connect it from its dashboard.`);let h=await R(t,`install`,o,m.id),g=`/dash/agents/${encodeURIComponent(m.agent)}/platforms`;return O(`${c}/install/${i}?app=${encodeURIComponent(m.id)}&state=${w({tx:h,back:g})}`)}async function br(e,t,n,r){let i=n.id,a=t.operatorApp??!1;if(!/^[a-z0-9_-]+$/.test(r.pathname.split(`/`)[2]))return;let o=a?`*`:t.session?.user.id??`anonymous`,s=t.integrations[i];if(!s)return I(`Unknown integration "${i}"; run coder agent integrations list to see them`,404);let c=t.config.publicUrl;if(!c)return I(`PUBLIC_URL is not set on this server; set it to the address platforms should call and restart`,400);let l=t.fetch??fetch,u=t.now?.()??Date.now(),d=new URLSearchParams(await e.clone().text()),f=oe(r.searchParams.get(`state`)),p=F(r.searchParams)??(f&&F(new URLSearchParams(Object.entries(f).filter(([,e])=>e!==void 0))))??(d&&F(d));if(!p)return I(`Setup state was lost between the platform and this server; start again`,400);if(!p.state.tx||!await it(t,p.state.tx,`create`,o,Ue(i,p.state)))return I(`This app creation link is invalid, expired, or already used`,403);let m=await s.app.createCallback(e,{publicUrl:c,...p,fetch:l}).catch(e=>I(`Creating the ${i} app failed: ${e instanceof Error?e.message:e}`,400));if(m instanceof Response)return m;let h={id:`${i}:${m.platformAppId}`,integration:i,agent:p.state.agent,name:m.name,...p.state.repo?{agentsRepo:p.state.repo}:{},...p.state.repo?{branch:p.state.branch??`main`}:{},...a?{builtin:!0}:{},credentials:K(t.config,m.credentials),createdAt:u};if(await t.store.put(`app`,h.id,h),a)return I(`Created ${m.name}. Every workspace on this server can now connect it from its dashboard.`);let g=await R(t,`install`,o,h.id),_=`/dash/agents/${encodeURIComponent(h.agent)}/platforms`;return O(`${c}/install/${i}?app=${encodeURIComponent(h.id)}&state=${w({tx:g,back:_})}`)}async function xr(e,t,n,r){let i=n.id,a=t.operatorApp??!1;if(!/^[a-z0-9_-]+$/.test(r.pathname.split(`/`)[2]))return;let o=a?`*`:t.session?.user.id??`anonymous`,s=t.integrations[i];if(!s)return I(`Unknown integration "${i}"; run coder agent integrations list to see them`,404);let c=t.config.publicUrl;if(!c)return I(`PUBLIC_URL is not set on this server; set it to the address platforms should call and restart`,400);t.fetch,t.now?.();let l=oe(r.searchParams.get(`state`)),u=r.searchParams.get(`app`),d=l?.tx?await de(t,l.tx,`install`,o):void 0;if(!d||u&&u!==d)return I(`This installation link is invalid, expired, or already used`,403);let f=await t.store.get(`app`,u??d);if(!f)return I(`This app is not known to this server; create it first`,400);let p=k(t.config,f.credentials);return O(s.app.installUrl(f,p,{publicUrl:c,state:r.searchParams.get(`state`)??w({})}))}async function Sr(e,t,n,r){let i=n.id,a=t.operatorApp??!1;if(!/^[a-z0-9_-]+$/.test(r.pathname.split(`/`)[2]))return;let o=a?`*`:t.session?.user.id??`anonymous`,s=t.integrations[i];if(!s)return I(`Unknown integration "${i}"; run coder agent integrations list to see them`,404);let c=t.config.publicUrl;if(!c)return I(`PUBLIC_URL is not set on this server; set it to the address platforms should call and restart`,400);let l=t.fetch??fetch,u=t.now?.()??Date.now(),d=oe(r.searchParams.get(`state`)),f=r.searchParams.get(`app`),p=d?.tx?await de(t,d.tx,`install`,o):void 0;if(!p||f&&f!==p||!await it(t,d.tx,`install`,o,p))return I(`This installation link is invalid, expired, or already used`,403);let m=await t.store.get(`app`,f??p),h=d?.link?await t.store.get(`installation`,d.link):void 0,g=m??(h&&await Be(t,h,i));if(!g)return d&&!d.link?I(`Connected.`):I(`This install does not match any app on this server; create the app first`,400);let _=k(t.config,g.credentials),v=await s.app.installCallback(e,{app:g,credentials:_,publicUrl:c,fetch:l,connect:je(t,g,c)}).catch(e=>I(e instanceof Error?e.message:String(e),400));if(v instanceof Response)return v;let y=`${g.id}:${v.platformInstallId}`,b=t.session;v.user&&b&&t.auth&&await t.auth.link(b.user,i,v.user.id,{organizations:b.organizations.map(e=>e.id),...v.user.token?{token:K(t.config,v.user.token)}:{}});let x=await t.store.get(`installation`,y),S={...x,id:y,app:g.id,integration:i,account:v.account??x?.account??h?.account??{login:`unknown`},...v.token?{token:K(t.config,v.token)}:{},...v.installer?{installer:v.installer}:{},createdAt:x?.createdAt??u};delete S.deletedAt;let C=h&&!h.deletedAt?h:void 0;C&&(S=cn(S,C.integration,C.id));try{await t.store.put(`installation`,y,S)}catch{return I(`This ${i} installation is already connected to another workspace; disconnect it there first`,409)}if(C&&await t.store.put(`installation`,C.id,cn(C,i,y)),s.renew){let e=await(await import(`./store-j8icrG0v.js`).then(e=>e.X)).renewInstallation({...t,fetch:l},g,v.platformInstallId).then(()=>void 0,e=>e instanceof Error?e.message:String(e));if(e)return I(`Connected, but ${i} did not start sending events yet. ${e}. Coder tries again within the hour.`,502)}let ee=_t(d?.back);return ee?O(`${c.replace(/\/$/,``)}${ee}`):v.response}const Z=(e,t=200)=>ee(`<title>Coder</title><p>${S(e)}</p>`,t);function Cr(e,t,n){return n&&t.organizations.some(e=>e.id===n)?{...Pe(e,n),session:t}:void 0}async function wr(e,t){let n=await e.store.get(`installation`,t);return n&&!n.deletedAt?e.store.get(`app`,n.app):void 0}async function Tr(e,t,n,r){let i=t.linkContext,a=i.session,o=e=>{let t=_n(i,e);return t&&a.organizations.some(e=>e.id===t)?{...Pe(i,t),session:a}:i},s=r.searchParams.get(`token`)??``,c=o(s);if(await de(c,s,`link`,a.user.id))return await Pt(e,void 0,t.dashboardHosts)??new Response(`UI is not built`,{status:503});let l=await Ct(c,s,`link-start`,a.user.id);if(!l)return new Response(`This link is invalid or has expired.`,{status:400});let u=await R(c,`link`,a.user.id,l,3e5);return O(`/connect?token=${encodeURIComponent(u)}`)}async function Er(e,t,n,r){let i=t.linkContext,a=i.session,o=e=>{let t=_n(i,e);return t&&a.organizations.some(e=>e.id===t)?{...Pe(i,t),session:a}:i},s=await e.json().catch(()=>({})),c=typeof s.token==`string`?await Ct(o(s.token),s.token,`link`,a.user.id):void 0;if(!c)return T({error:`This link is invalid or has expired.`},400);let l=JSON.parse(c);return await t.auth.link(a.user,l.platform,l.platformUserId,{organizations:a.organizations.map(e=>e.id)})===`taken`?T({error:`That platform account is connected to someone else.`},409):T({ok:!0,...l})}async function Dr(e,t,n,r){let i=t.integrations[n.integration].auth.user,a=t.config.publicUrl,o=t.linkContext.session,s=r.searchParams.get(`installation`)??``,c=Cr(t,o,s?await t.installationOrganization?.(s):void 0);if(!c)return Z(`Only members of the workspace this agent works for can link here.`,403);let l=await wr(c,s);if(!l)return Z(`This installation is no longer connected.`,404);let u=await R(c,`link-oauth`,o.user.id,s);return O(i.authorizeUrl(k(t.config,l.credentials),{publicUrl:a,state:u}))}async function Or(e,t,n,r){let i=t.integrations[n.integration],a=i.auth.user,o=t.config.publicUrl,s=t.linkContext.session,c=r.searchParams.get(`state`)??``,l=Cr(t,s,_n(t,c)),u=l&&await Ct(l,c,`link-oauth`,s.user.id),d=l&&u?await wr(l,u):void 0;if(!l||!d)return Z(`This link is invalid or has expired.`,400);let f=await a.exchange(e,k(t.config,d.credentials),{publicUrl:o,fetch:t.fetch??fetch}).catch(e=>e instanceof Error?e:Error(String(e)));return f instanceof Error?Z(f.message,400):await t.auth.link(s.user,i.id,f.id,{organizations:s.organizations.map(e=>e.id),...f.token?{token:K(t.config,f.token)}:{}})===`taken`?Z(`That ${i.id} account is connected to someone else.`,409):Z(`Linked ${f.login??f.id} on ${i.id} to your Coder account. Mention the agent again to start.`)}const kr=Y.object({installation:Y.string().check(Y.minLength(1)),integration:Y.string().check(Y.minLength(1)),token:Y.string().check(Y.minLength(1)),account:Y.optional(Y.string())});async function Ar(e,t){let n;try{n=await e.json()}catch{return new Response(`Invalid JSON`,{status:400})}let r=kr.safeParse(n);if(!r.success)return new Response(`Invalid connection`,{status:400});let{installation:i,integration:a,token:o,account:s}=r.data,c=await t.store.get(`installation`,i);if(!c||c.deletedAt)return new Response(`Unknown installation`,{status:404});let l={kind:`oauth`,token:K(t.config,o),...s?{account:s}:{}};return await Wt(t.store,`installation`,i,{connections:{...c.connections,[a]:l}}),T({ok:!0})}async function jr(e,t,n,r){let i=await t.store.get(`app`,n);if(!i)return T({error:`Unknown app`},404);let a=t.config.publicUrl;if(!a)return T({error:`PUBLIC_URL is not set on this server`},400);let o=await R(t,`install`,t.session?.user.id??`anonymous`,i.id),s=w({tx:o,...r?{back:r}:{}});return T({url:`${a.replace(/\/$/,``)}/install/${i.integration}?app=${encodeURIComponent(i.id)}&state=${s}`})}async function Mr(e,t,n,r){let i=r.searchParams.get(`agent`),a=t.serverOrganizationId,[o,s]=await Promise.all([t.store.list(`app`),a!==void 0&&a!==t.organizationId&&t.scope?t.scope(a).store.list(`app`).then(e=>e.map(({id:e,value:t})=>({id:e,value:{...t,builtin:!0}}))):[]]),c=[...o,...s];return T(c.filter(({value:e})=>!i||e.agent===i).map(({id:e,value:t})=>{let{credentials:n,...r}=t;return{id:e,value:r}}))}async function Nr(e,t,n,r){let i=r.searchParams.get(`agent`),[a,o]=await Promise.all([t.store.list(`installation`),i?t.store.list(`app`):[]]),s=new Set(o.filter(({value:e})=>e.agent===i).map(({id:e})=>e));return T(a.filter(({value:e})=>!i||s.has(e.app)).map(({id:e,value:t})=>{let{token:n,connections:r,...i}=t;return{id:e,value:i}}))}function Pr(e){return T(Object.values(e.integrations).map(e=>({id:e.id,name:e.name,brand:e.brand,description:e.description,installLabel:e.installLabel??`Connect ${e.id}`,organizationApps:e.organizationApps===!0,events:Object.fromEntries(Object.entries(e.events).map(([e,{description:t,noisy:n,addressed:r}])=>[e,{description:t,...n?{noisy:n}:{},...r?{addressed:r}:{}}])),presets:e.tools.presets,repositories:!!e.repos})))}async function Fr(e){let t=new Map;for(let{value:n}of await e.store.list(`installation`)){let r=e.integrations[n.integration];if(n.deletedAt||!r?.repos)continue;let i=await e.store.get(`app`,n.app);if(i)try{let a=await r.auth.token(n.token?{...n,token:k(e.config,n.token)}:n,k(e.config,i.credentials));for(let e of await r.repos.list(n,a))t.has(e)||t.set(e,{repo:e,integration:r.id})}catch{}}return T([...t.values()].sort((e,t)=>e.repo.localeCompare(t.repo)))}async function Ir(e,t){let n=(await e.store.list(`installation`)).filter(({value:t})=>!t.deletedAt&&e.integrations[t.integration]?.repos),r=new Map((await un(e.store,n.map(({value:e})=>e.app))).map(({id:e,value:t})=>[e,t]));for(let{value:i}of n){let n=e.integrations[i.integration];if(i.deletedAt||!n?.repos)continue;let a=r.get(i.app);if(!(!a||a.integration!==n.id))try{let r=i.token?{...i,token:k(e.config,i.token)}:i,o=await n.auth.token(r,k(e.config,a.credentials));if((await n.repos.list(r,o)).includes(t))return{contents:n,token:o,app:a,installation:i}}catch{}}}async function Lr(e,t,n){let r=await Ir(e,t);if(!r)return T({error:`No installed app can read ${t}`},400);let i=await r.contents.repos.listDir(t,He,r.token,n).catch(()=>[]),a=await Promise.all(i.map(async i=>{let a=await r.contents.repos.readFile(t,`${He}/${i}/agent.json`,r.token,n).catch(()=>void 0);if(a===void 0)return;let o={};try{o=JSON.parse(a)}catch{}let s=await G(e.store,i),c=s?.source===`repo`&&s.repo===t,l=c?await N(e.store,i):void 0;return{id:i,name:typeof o.name==`string`?o.name:i,...typeof o.description==`string`?{description:o.description}:{},...c?{version:s.currentVersion,...l?.source?{commit:l.source.commit}:{}}:{},...s&&!c?{taken:!0}:{}}}));return T({repo:t,agents:a.filter(Boolean)})}async function Rr(e,t,n,r){let i=r.searchParams.get(`repo`);return i?Lr(t,i,r.searchParams.get(`ref`)||`HEAD`):T({error:`repo is required`},400)}async function zr(e,t,n,r){let i=await e.json().catch(()=>void 0),a=i?.agents;if(typeof i?.repo!=`string`||i.ref!==void 0&&typeof i.ref!=`string`||a!==void 0&&!(Array.isArray(a)&&a.every(e=>typeof e==`string`)))return T({error:`repo is required, ref must be a string and agents a list of ids`},400);try{let e=await Ir(t,i.repo);if(!e)return T({error:`No installed app can read ${i.repo}`},400);let n=i.ref??`HEAD`,r=a??await e.contents.repos.listDir(i.repo,`.coder/agents`,e.token,n);for(let e of r){let n=await G(t.store,e);if(n&&(n.source!==`repo`||n.repo!==i.repo))return T({error:`Agent id "${e}" is already taken`},409)}let o=await sn(t.store,e.contents,i.repo,n,e.token,(t.now??Date.now)(),{slugs:r});return await bt(t,o),T({imported:o.map(e=>e.agent)})}catch(e){return T({error:e instanceof Error?e.message:String(e)},400)}}async function Br(e,t,n,r){if(t.source!==`repo`||!t.repo)return;let i=(await(r??e.store.list(`app`))).find(({value:e})=>e.agent===t.id&&e.agentsRepo===t.repo)?.value;return((i&&e.integrations[i.integration])??Object.values(e.integrations).find(e=>e.repos))?.repos?.url(t.repo,t.path,i?.branch??n?.commit)}async function Vr(e,t,n){let r=await On(e.store,t);return await wn(e.store,n,t,r)?On(e.store,t):r}async function Q(e,t){let n=(e.now??Date.now)(),r=e.local?await nn(e.store,e.local.cwd,e.integrations,t).catch(()=>void 0):void 0;return{now:n,local:r,loadCurrent:()=>r?Promise.resolve(r.find(({record:e})=>e.id===t)??{}):Vr(e,t,n)}}async function Hr(e,t,n,r){let i=n.slug;if(n.version&&Number(n.version),n.version&&!/^\d+$/.test(r.pathname.split(`/`).at(-1)))return D();let{now:a,local:o,loadCurrent:s}=await Q(t,i);if(!o&&t.store.listAgentSummaries&&(await lt(t.store,a),re(r)))return T(await qr(t,r));let c=o??(t.store.listAgentSummaries?await t.store.listAgentSummaries():await kt(t.store));if(!o&&!t.store.listAgentSummaries&&await lt(t.store,a,c)&&(c=await kt(t.store)),re(r))return T(await qr(t,r,c));let l;return T(await Promise.all(c.map(async({record:e,version:n})=>{e.source===`repo`&&e.repo&&(l??=t.store.list(`app`));let r=await Br(t,e,n,l);return{...e,definition:n?.definition,...r?{sourceUrl:r}:{}}})))}async function Ur(e,t,n,r){let i=n.slug;if(n.version&&Number(n.version),n.version&&!/^\d+$/.test(r.pathname.split(`/`).at(-1)))return D();let{now:a,local:o,loadCurrent:s}=await Q(t,i),c=E(r,10,50),l=ie(r),[u,d]=await Promise.all([o?s().then(e=>e.record):G(t.store,i),o?Promise.resolve(o.flatMap(({version:e})=>e?[{value:e}]:[])):t.store.listVersions?.(i,c+1,l)]);return u?T(await Jr(t,u,c,l??u.currentVersion+1,d)):T({error:`No agent named "${i}"`},404)}async function Wr(e,t,n,r){let i=n.slug,a=n.version?Number(n.version):void 0;if(n.version&&!/^\d+$/.test(r.pathname.split(`/`).at(-1)))return D();let{now:o,local:s,loadCurrent:c}=await Q(t,i),l=s?s.find(({version:e})=>e?.version===a)?.version:await N(t.store,i,a);return l?T(l):T({error:`No version ${a} for agent "${i}"`},404)}async function Gr(e,t,n,r){let i=n.slug;if(n.version&&Number(n.version),n.version&&!/^\d+$/.test(r.pathname.split(`/`).at(-1)))return D();let{now:a,local:o,loadCurrent:s}=await Q(t,i),c=r.searchParams.get(`versions`)!==`0`,l=r.searchParams.get(`content`)!==`0`,[{record:u,version:d},f]=await Promise.all([!l&&!o&&t.store.listAgentSummaries&&!v()[i]?t.store.listAgentSummaries({slug:i}).then(e=>e[0]??{}):s(),c?o?o.flatMap(({version:e})=>e?[{value:e}]:[]):t.store.listVersions?t.store.listVersions(i):t.store.list(`agentversion`,{prefix:`${i}:`}):[]]);if(!u)return T({error:`No agent named "${i}"`},404);let p=f.map(({value:e})=>{let{systemPrompt:t,files:n,...r}=e;return r}),m=await Br(t,u,d);return T({...u,...d?{definition:d.definition,...l&&`systemPrompt`in d?{systemPrompt:d.systemPrompt,...d.files?{files:d.files}:{}}:{}}:{},...m?{sourceUrl:m}:{},...c?{versions:p}:{}})}const Kr={builtin:`builtin`,dashboard:`upload`,repository:`repo`};async function qr(e,t,n){let r=E(t,24,100),i=ie(t),a=t.searchParams.get(`q`)?.trim().toLowerCase(),o=Kr[t.searchParams.get(`type`)??``],s=t.searchParams.get(`platform`),c=t.searchParams.get(`connect`)===`1`,l=e.serverOrganizationId,u=e.store.list(`app`),[d,f,p,m]=await Promise.all([u,e.store.list(`installation`),c&&l!==void 0&&l!==e.organizationId&&e.scope?e.scope(l).store.list(`app`):[],n?n.filter(({record:e})=>(!i||e.id>i)&&(!o||e.source===o)&&(!a||[e.id,e.name,e.description,e.repo].some(e=>e?.toLowerCase().includes(a)))):e.store.listAgentSummaries({after:i,source:o,q:a,platform:s??void 0,limit:r+1})]),h=new Set(f.filter(({value:e})=>!e.deletedAt).map(({value:e})=>e.app)),g=(e,t)=>{let n=d.filter(({value:n})=>n.agent===e&&n.integration===t);return n.length?n.some(({value:e})=>h.has(e.id))?`installed`:`created`:`none`},_=[];for(let{record:e,version:t}of m){let n=Object.keys(t?.definition?.integrations??{}).sort();if(!(s&&!n.includes(s))&&(_.push({record:e,version:t,ids:n}),_.length>r))break}let v=le(_,r,e=>e.record.id);return{...v,...c?{connectable:[...d,...p.map(e=>({...e,value:{...e.value,builtin:!0}}))].filter(({value:e})=>e.builtin&&!h.has(e.id)).map(({value:e})=>({id:e.id,integration:e.integration}))}:{},items:await Promise.all(v.items.map(async({record:t,version:n,ids:r})=>{let i=await Br(e,t,n,u);return{...t,definition:n?.definition,...i?{sourceUrl:i}:{},platforms:r.map(e=>({id:e,state:g(t.id,e)}))}}))}}async function Jr(e,t,n,r,i){let a=r-n-2,o=(i??await e.store.list(`agentversion`,{prefix:`${t.id}:`,...a>0?{after:$e(t.id,a)}:{},limit:n+1})).map(({value:e})=>{let{systemPrompt:t,files:n,definition:r,...i}=e;return i}).filter(e=>e.version<r).reverse();return le(o,n,e=>e.version)}function Yr(e){if(!e||Array.isArray(e)||typeof e!=`object`)return!1;let t=Object.entries(e);if(t.length>100)return!1;let n=0;for(let[e,r]of t){if(typeof r!=`string`||e.startsWith(`/`)||e.includes(`\\`)||e.includes(`\0`)||e.split(`/`).includes(`..`)||e===`agent.json`||e===`system.md`)return!1;n+=Buffer.byteLength(e)+Buffer.byteLength(r)}return n<=262144}async function Xr(e,t,n,r){let i=n.slug;if(n.version&&Number(n.version),n.version&&!/^\d+$/.test(r.pathname.split(`/`).at(-1)))return D();let{now:a,local:o,loadCurrent:s}=await Q(t,i),c=await e.json().catch(()=>void 0);try{let e=x({[i]:c})[i];if(!e||typeof e!=`object`)throw Error(`settings must be an object`);let{record:n,version:r}=await s();if(!n||!r)throw Error(`No agent named "${i}".`);return Se({...n,settings:void 0},r,e,t.integrations),t.local?(await xe(t,t=>{t.agents={...t.agents,[i]:e}}),await nn(t.store,t.local.cwd,t.integrations),T(await G(t.store,i))):T(await Te(t.store,i,e,(t.now??Date.now)()))}catch(e){return T({error:e instanceof Error?e.message:String(e)},400)}}async function Zr(e,t,n,r){let i=n.slug;if(n.version&&Number(n.version),n.version&&!/^\d+$/.test(r.pathname.split(`/`).at(-1)))return D();let{now:a,local:o,loadCurrent:s}=await Q(t,i),{record:c}=await s();if(!c)return T({error:`No agent named "${i}"`},404);if(c.source===`builtin`)return T({error:`Built-in agents cannot be deleted.`},400);if(t.local&&!await vn(t.local.cwd,t.integrations,i))return T({error:`Delete .coder/agents/${i} in the repo`},409);for(let{id:e}of await t.store.list(`agentversion`,{prefix:`${i}:`}))await t.store.delete(`agentversion`,e);return await t.store.delete(`agent`,i),T({ok:!0})}async function Qr(e,t,n,r){let i=n.slug;if(n.version&&Number(n.version),n.version&&!/^\d+$/.test(r.pathname.split(`/`).at(-1)))return D();let{now:a,local:o,loadCurrent:s}=await Q(t,i),c=await e.json().catch(()=>void 0);if(!c||typeof c.systemPrompt!=`string`||c.files!==void 0&&!Yr(c.files)||c.name!==void 0&&typeof c.name!=`string`||c.description!==void 0&&typeof c.description!=`string`)return T({error:`definition and systemPrompt are required; files must contain strings`},400);try{b([i]);let[e]=y({definitions:{[i]:{json:c.definition,builtin:!1}},usage:void 0},t.integrations);if(!e)throw Error(`No agent named "${i}".`);let n=t.local?await G(t.store,i):void 0,r=t.local&&n?await N(t.store,i):void 0,a=c.files;t.local&&(await fn(t.local.cwd,t.integrations,i,{definition:{...c.definition,...c.name===void 0?{}:{name:c.name},...c.description===void 0?{}:{description:c.description}},systemPrompt:c.systemPrompt,...a?{files:a}:{}}),await nn(t.store,t.local.cwd,t.integrations));let o=t.local?void 0:await ye(t.store,{id:i,name:c.name??e.name,description:c.description??e.definition.description,source:`upload`,definition:e.definition,systemPrompt:c.systemPrompt,files:a,importedFrom:`upload`},(t.now??Date.now)()),s=o?.version??await N(t.store,i),l=o?.unchanged??Un(r&&{...r,createdAt:0},{...s,createdAt:0});await bt(t,[s]);let u=o?.record??await G(t.store,i);return T({...u,definition:s.definition,version:s.version,unchanged:l})}catch(e){return T({error:e instanceof Error?e.message:String(e)},400)}}async function $r(e,t,n,r){let i=n.id,a=Number(r.searchParams.get(`after`)??-1),o=Number.isFinite(a)?a:-1;r.searchParams.has(`limit`)&&E(r,500,2e3);let s=await t.store.get(`task`,i);if(!s||t.local&&s.handle?.startsWith(`cli:`)&&s.task.flow==="default"){let n=s?.task.cwd??t.local?.cwd;if(!n||!H(n,i,!1))return T({error:`No task "${i}"`},404);{let r=Number(e.headers.get(`last-event-id`)??o);return si(e,t,`cli:${n}:${i}`,Number.isFinite(r)?r:o,async e=>{let t=H(n,i);if(t)return{status:t,lines:Rt(n,i,e,500),pendingResult:ei(n,t,!t.result)}})}}let c=Number(e.headers.get(`last-event-id`)??o),l=t.statementTimeout??((e,t)=>t());return si(e,t,i,Number.isFinite(c)?c:o,e=>l(ai,async()=>{let n=await t.store.get(`task`,i);if(!n)return;let r=n.task.runner===`github-actions`&&n.handle,a=r&&A.has(n.status)?(await(await Oe(t,n.task))?.status(n.handle).catch(()=>void 0))?.state===`running`:!1;return{status:n,lines:([`running`,`waiting`].includes(n.status)||r)&&n.handle?await yt(t,n,e,500).catch(()=>wt(t.store,i,e,500)):await wt(t.store,i,e,500),pendingLogs:a}}))}function ei(e,t,n=!1){if(!A.has(t.status)||t.error||t.status===`cancelled`)return!1;let r=i(e,t.task.id),a=Math.max(t.finishedAt??0,Date.parse(r?.resumedAt??r?.createdAt??``)||0);return n||(zn.statSync(q.join(h(e,t.task.id),`result.json`),{throwIfNoEntry:!1})?.mtimeMs??0)<a}const ti=1e3,$=3e4;function ni(e,t,n,r){let i=[...new Set((r.searchParams.get(`tasks`)??``).split(`,`).filter(Boolean))].slice(0,100),a=Date.now(),o=t.taskWatcher??new ii,s=o.tag(t),[c,l]=(e.headers.get(`last-event-id`)??``).split(`-`),u=Number(c),d=u>0&&`-${l}`===s,f=d?Math.min(Math.max(u,a-29e4),a):a,p=u>0&&(!d||u<f)?`event: reset
|
|
2
|
-
data: {}
|
|
3
|
-
|
|
4
|
-
`:``,m=new TextEncoder,h=()=>{},g=new ReadableStream({start(n){n.enqueue(m.encode(`retry: ${ti}\nid: ${f}${s}\n\n${p}`)),h=o.watch(t,i,f,e=>n.enqueue(m.encode(e)),()=>n.close());let r=()=>{h();try{n.close()}catch{}};e.signal.aborted?r():e.signal.addEventListener(`abort`,r)},cancel(){h()}});return new Response(g,{headers:{"content-type":`text/event-stream; charset=utf-8`,"cache-control":`no-cache, no-transform`}})}function ri(e,t){let{task:n,approval:r,archivedAt:i,createdAt:a,startedAt:o,finishedAt:s}=e;return{id:n.id,agent:n.agent,status:e.status,approval:r??null,archivedAt:e.autoArchived&&!t?void 0:i,createdAt:a,startedAt:o,finishedAt:s,...t?{result:e.result??null,error:e.error??null,answer:e.answer??null}:{}}}var ii=class{options;watches=new Set;timer;reading=!1;closed=!1;last=Date.now();scans=new Map;left=new Map;archived=new Map;reads=0;generation=Hn().slice(0,8);constructor(e={}){this.options=e}watch(e,t,n,r,i){if(this.closed)return queueMicrotask(i),()=>{};let a=Date.now();this.watches.size||(this.last=a);let o={ctx:e,ids:new Set(t),sent:new Map,gone:new Set,from:n,fresh:!0,tag:this.tag(e),beat:a,marked:a,until:a+(this.options.lifeMs??29e4),send:r,close:i};return this.watches.add(o),this.timer||(this.timer=setInterval(()=>this.tick(),this.options.pollMs??1e3),this.timer.unref?.()),this.tick(),()=>this.drop(o)}tag(e){return`-${Bn(`sha256`).update(e.organizationId).digest(`hex`).slice(0,8)}${e.queue instanceof rn?`.${this.generation}`:``}`}close(){this.closed=!0;for(let e of[...this.watches]){this.drop(e);try{e.close()}catch{}}}drop(e){this.watches.delete(e)&&(this.watches.size||(clearInterval(this.timer),this.timer=void 0))}tick(){let e=Date.now();for(let t of[...this.watches])if(e>=t.until){this.drop(t);try{t.close()}catch{}}else e-t.beat>=(this.options.heartbeatMs??2e4)&&(t.beat=e,this.send(t,`: ping
|
|
5
|
-
|
|
6
|
-
`));this.reading||!this.watches.size||(this.reading=!0,this.read(e).finally(()=>this.reading=!1))}send(e,t){try{e.send(t)}catch{this.drop(e)}}async read(e){let t=[...this.watches],n=new Map;for(let e of t){let t=n.get(e.ctx.organizationId)??{ctx:e.ctx,ids:new Set};for(let n of e.ids)t.ids.add(n);n.set(e.ctx.organizationId,t)}let r=Math.min(this.last,...t.flatMap(e=>e.fresh?[e.from]:[]));this.reads++;let i=await this.changes(n,r-$,e).catch(()=>void 0);if(i){this.last=e;for(let n of t){if(!this.watches.has(n))continue;let t=[];try{t=this.news(n,i,e)}catch{}!t.length&&e-n.marked>=(this.options.heartbeatMs??2e4)&&t.push(`id: ${e}${n.tag}\n\n`),t.length&&(n.marked=e,this.send(n,t.join(``)))}}}async changes(e,t,n){let r=await[...e.values()][0].ctx.queue.changes([...e].map(([e,t])=>({organizationId:e,ids:[...t.ids]})),t),a=new Map;for(let{organizationId:e,status:t}of r.rows){let n=a.get(e)??new Map;a.set(e,n.set(t.task.id,t))}let o=new Map;for(let{organizationId:e,id:t,at:n}of r.deleted){let r=o.get(e)??new Map;o.set(e,r.set(t,n))}for(let[t,{ctx:r}]of e){if(!r.local)continue;let e=[...a.get(t)?.values()??[]],o=this.scans.get(r.local.cwd);if(!o||n-o.at>=4e3||e.some(e=>e.updatedAt>o.at)){let e=!o||n-o.archivedAt>=15e3;await xn(r,r.local.cwd);let t=e?V(r.local.cwd,!0):o.archived,a=V(r.local.cwd,!1),s=new Set(a.map(e=>e.task.id)),c=[...a,...t.filter(e=>!s.has(e.task.id))],l=new Set(c.map(e=>e.task.id)),u=this.left.get(r.local.cwd)??new Map;for(let e of o?.rows??[])l.has(e.task.id)||u.set(e.task.id,o.at);for(let[e,t]of u)(t<n-6e5||l.has(e))&&u.delete(e);let d=this.archived.get(r.local.cwd)??new Set;for(let e of d)l.has(e)?d.delete(e):i(r.local.cwd,e)||(u.set(e,o?.at??n),d.delete(e));this.left.set(r.local.cwd,u),this.scans.set(r.local.cwd,o={at:n,rows:c,archived:t,archivedAt:e?n:o.archivedAt})}a.set(t,new Map(Ie(r.local.cwd,o.rows,e).map(e=>[e.task.id,e])))}return{rows:a,deleted:o}}news(e,{rows:t,deleted:n},r){let{ctx:i}=e,a=t.get(i.organizationId)??new Map,o=[],s=(t,n)=>{let i=JSON.stringify(n);e.sent.get(t)!==i&&(e.sent.set(t,i),o.push(`id: ${r}${e.tag}\nevent: task\ndata: ${i}\n\n`))},c=e=>({id:e,deleted:!0}),l=t=>{let n=i.local&&H(i.local.cwd,t,e.ids.has(t));if(s(t,n?ri(n,e.ids.has(t)):c(t)),e.gone.add(t),n&&i.local){let e=this.archived.get(i.local.cwd)??new Set;this.archived.set(i.local.cwd,e.add(t))}};for(let[t,n]of a){let a=e.ids.has(t);e.gone.delete(t);let o=ri(a&&i.local&&n.local&&A.has(n.status)?H(i.local.cwd,t)??n:n,a);if(i.local&&n.local&&e.sent.get(t)!==JSON.stringify(o)&&r-(n.finishedAt??0)<$&&ei(i.local.cwd,n)){e.sent.has(t)||e.sent.set(t,``);continue}a||i.local&&!e.fresh||n.updatedAt>e.from-$?s(t,o):e.fresh&&e.sent.set(t,JSON.stringify(o))}for(let t of e.ids)a.has(t)||l(t);for(let[t,r]of n.get(i.organizationId)??[])r>e.from-$&&s(t,c(t));if(i.local){for(let t of e.sent.keys())!a.has(t)&&!e.ids.has(t)&&!e.gone.has(t)&&l(t);for(let[t,n]of this.left.get(i.local.cwd)??[])n>e.from-$&&!a.has(t)&&e.sent.get(t)!==JSON.stringify(c(t))&&l(t)}return e.fresh=!1,e.from=r,o}};const ai=1e4;var oi=class{options;feeds=new Map;closed=!1;reads=0;constructor(e={}){this.options=e}watch(e,t,n,r,i){if(this.closed)return queueMicrotask(i),()=>{};let a=this.feeds.get(e),o=a?.reading!==void 0&&Date.now()-a.reading>=(this.options.stallMs??1e4);if(!a||o){let t={key:e,read:n,watches:new Set,head:1/0};if(a){clearTimeout(a.timer);for(let e of a.watches)t.watches.add(Object.assign(e,{feed:t}));a.watches.clear()}this.feeds.set(e,a=t)}let s={cursor:t,feed:a,timers:[],send:r,close:i};s.timers=[setTimeout(()=>this.end(s),this.options.lifeMs??5e4),setInterval(()=>this.send(s,`: ping
|
|
7
|
-
|
|
8
|
-
`),this.options.heartbeatMs??2e4)];for(let e of s.timers)e.unref?.();return a.watches.add(s),a.reading===void 0&&t<a.head&&(clearTimeout(a.timer),this.read(a)),()=>this.drop(s)}close(){this.closed=!0;for(let e of[...this.feeds.values()])for(let t of[...e.watches])this.end(t)}drop(e){let{feed:t}=e;for(let t of e.timers)clearTimeout(t);!t.watches.delete(e)||t.watches.size||(clearTimeout(t.timer),this.feeds.get(t.key)===t&&this.feeds.delete(t.key))}end(e,t=``){try{t&&e.send(t),e.close()}catch{}this.drop(e)}send(e,t){try{e.send(t)}catch{this.drop(e)}}async read(e){if(e.timer=void 0,this.feeds.get(e.key)!==e||!e.watches.size)return;let t=[...e.watches],n=Math.min(...t.map(e=>e.cursor));e.reading=Date.now(),this.reads++;let r=await e.read(n).catch(()=>null);if(e.reading=void 0,this.feeds.get(e.key)!==e)return;let i=t.filter(t=>e.watches.has(t)),a=i.length<e.watches.size?0:this.options.pollMs??1e3;if(r===void 0)for(let e of i)this.end(e);else if(r){let{status:t,lines:o,pendingLogs:s,pendingResult:c}=r,l=o.length===500,u=A.has(t.status)&&!l&&!s&&!c,d=o.map(e=>[e.seq,`id: ${e.seq}\nevent: log\ndata: ${JSON.stringify(e)}\n\n`]);e.head=Math.max(n,o.at(-1)?.seq??n),l&&(a=0);for(let e of i){let t=d.flatMap(([t,n])=>t>e.cursor?[n]:[]).join(``);e.cursor=Math.max(e.cursor,o.at(-1)?.seq??-1),u?this.end(e,`${t}event: end\ndata: {}\n\n`):t&&this.send(e,t)}}this.feeds.get(e.key)===e&&(e.timer=setTimeout(()=>void this.read(e),a),e.timer.unref?.())}};function si(e,t,n,r,i){let a=t.logWatcher??new oi,o=new TextEncoder,s=()=>{},c=new ReadableStream({start(c){c.enqueue(o.encode(`retry: ${ti}\n\n`)),s=a.watch(`${t.organizationId}:${n}`,r,i,e=>c.enqueue(o.encode(e)),()=>c.close());let l=()=>{s();try{c.close()}catch{}};e.signal.aborted?l():e.signal.addEventListener(`abort`,l)},cancel(){s()}});return new Response(c,{headers:{"content-type":`text/event-stream; charset=utf-8`,"cache-control":`no-cache, no-transform`}})}var ci=class{options;entries=new Map;pending=new Map;constructor(e={ttlMs:6e5,max:100}){this.options=e}get size(){return this.entries.size}get inFlight(){return this.pending.size}has(e){return this.entries.has(e)}keys(){return this.entries.keys()}async get(e,t){let n=this.options.now??Date.now,r=n(),i=this.entries.get(e);if(i&&r-i.at<this.options.ttlMs)return i.value;for(let[t,n]of this.entries)t!==e&&r-n.at>=this.options.ttlMs&&this.entries.delete(t);let a=this.pending.get(e);return a||(a=Promise.resolve().then(t).then(t=>{if(t===void 0)return i?.value;if(this.options.accept&&!this.options.accept(t))return i?.value??t;this.entries.set(e,{value:t,at:n()});let r=this.entries.keys().next().value;return this.entries.size>this.options.max&&r!==void 0&&this.entries.delete(r),t}).catch(()=>i?.value).finally(()=>this.pending.delete(e)),this.pending.set(e,a)),a}};const li=/^[a-z0-9][a-z0-9-]*$/,ui=new Set([`openrouter.ai`,`ai-gateway.vercel.sh`,`api.groq.com`,`api.together.xyz`]);function di(e){return{builtin:{codex:m,claude:u},models:e.models??{}}}async function fi(e,t){let{baseUrl:n,envKey:r,key:i}=await W(e);if(!n||!/^https?:\/\//.test(n)||!URL.canParse(n))return T({error:`An http or https base URL is required`},400);let a=!i&&r&&await pi(t,n,r)?await mn(t,r):void 0,o=i||a,s=t.settings??={},c=s.probes??=new ci({ttlMs:6e5,max:100,now:t.now,accept:e=>e.reachable}),l=`${new URL(n).host}|${r??``}|${C(String(o??``))}`;return T(await c.get(l,()=>ne({baseUrl:n},{key:o,fetch:t.fetch})))}async function pi(e,t,n){let r=new URL(t).host;if(ui.has(r))return!0;let i=(await we(e)).models??{};return Object.values(i).some(e=>`baseUrl`in e&&e.envKey===n&&new URL(e.baseUrl).host===r)}async function mi(e,t,n,r){return T(di(await we(t)))}async function hi(e,t,n,r){let{name:i=``,...a}=await W(e);return!li.test(i)||f(i)?T({error:`Invalid model name "${i}"`},400):M(t,e=>{if(e.models?.[i])throw new L(`"${i}" already exists`);e.models={...e.models,[i]:a}})}async function gi(e,t,n,r){let i=n.name;return M(t,e=>{if(!e.models?.[i])throw new L(`No model "${i}"`);d(e,i)})}async function _i(e,t,n,r){let i=n.name,{spec:o}=await W(e);return M(t,e=>{if(!li.test(i))throw new L(`Invalid alias name "${i}"`);let t=e.models?.[i];if(t&&g(t))throw new L(`"${i}" is a custom model name`);let n=p(o,_(e));if(!n?.model||n.engine===`custom`)throw new L(`"${o}" does not name a codex or claude model`);let r=n.engine===`claude`?u:m,s=o.split(`:`).some(e=>a.has(e)||l.has(e));e.models={...e.models,[i]:{provider:n.engine,model:r[n.model]??n.model,...s&&n.effort?{effort:n.effort}:{}}}})}async function vi(e,n,r,i){let a=r.name;return M(n,e=>{let n=e.models??={},r=n[a];r&&(g(r)||t(r))?r.disabled=!0:n[a]={disabled:!0}})}async function yi(e,n,r,i){let a=r.name;return M(n,e=>{let n=e.models??={},r=n[a];r&&(g(r)||t(r))?delete r.disabled:delete n[a]})}const bi=/^[a-z0-9][a-z0-9_-]*$/i;async function xi(e,t,n,r){return T((await we(t)).mcp??{})}async function Si(e,t,n,r){let{name:i=``,...a}=await W(e);return bi.test(i)?M(t,e=>{e.mcp={...e.mcp,[i]:a}}):T({error:`Invalid server name "${i}"`},400)}async function Ci(e,t,n,r){let i=n.name;return M(t,e=>{if(!e.mcp?.[i])throw new L(`No MCP server "${i}"`);delete e.mcp[i]})}const wi={npm:[`npx`,`-y`],pypi:[`uvx`],oci:[`docker`,`run`,`-i`,`--rm`]},Ti=(e=[])=>e.map(({name:e,description:t,isRequired:n,isSecret:r,value:i,default:a})=>({name:e,...t?{description:t}:{},...i??a?{placeholder:i??a}:{},required:n===!0,secret:r===!0}));function Ei(e=[],t,n){return e.flatMap((e,r)=>{let i=`${t}:${r}`,a=Object.entries(e.variables??{}),o=e.value??e.default,s=(e,t,r)=>{let[i]=Ti([{...r,name:e}]);return n.push({...i,label:t}),`{${e}}`};if(a.length)for(let[e,t]of a)o=o?.replaceAll(`{${e}}`,s(`${i}:${e}`,e,t));else o===void 0&&(e.valueHint||e.isRequired)&&(o=s(i,e.valueHint??e.name??i,e));return[...e.type===`named`&&e.name?[e.name]:[],...o===void 0?[]:[o]]})}function Di(e){let t=e.remotes?.find(e=>e.type===`streamable-http`||e.type===`sse`);if(t)return{type:t.type===`sse`?`sse`:`http`,url:t.url,env:[],headers:Ti(t.headers)};let n=e.packages?.find(e=>wi[e.registryType]&&(e.transport?.type??`stdio`)===`stdio`);if(!n)return;let[r,...i]=wi[n.registryType],a=[],o=Ei(n.runtimeArguments,`runtime`,a),s=Ei(n.packageArguments,`package`,a);return{type:`stdio`,command:n.runtimeHint??r,args:[...!n.runtimeHint||n.runtimeHint===r?i:[],...o,n.identifier,...s],...a.length?{argumentInputs:a}:{},env:Ti(n.environmentVariables),headers:[]}}async function Oi(e,t,n){let r=n.searchParams.get(`q`)?.trim()??``,i=t.settings??={},a=await(i.registry??=new ci({ttlMs:6e5,max:100,now:t.now})).get(r,()=>ki(t,r));return a?T(a):T({error:`The MCP registry did not answer. Try again.`},502)}async function ki(e,t){let n=new URLSearchParams({version:`latest`,limit:`30`});t&&n.set(`search`,t);try{let t=await(e.fetch??fetch)(`https://registry.modelcontextprotocol.io/v0.1/servers?${n}`,{headers:{accept:`application/json`},signal:AbortSignal.timeout(2e4)});if(!t.ok)return;let{servers:r=[]}=await t.json();return r.flatMap(({server:e})=>{let t=Di(e);return t?[{name:e.name,title:e.title??e.name.split(`/`).pop()??e.name,description:e.description??``,...t}]:[]})}catch{return}}const Ai=`/api/auth/callback`,ji=`/.well-known/oauth-client.json`,Mi=`/.well-known/oauth-cli-client.json`,Ni=`openid profile email offline_access organizations:read`;function Pi(e,t){return{client_id:`${e}${ji}`,client_name:`Coder at ${new URL(e).host}`,redirect_uris:[`${e}${Ai}`],post_logout_redirect_uris:[`${e}/?signed_out=1`],grant_types:[`authorization_code`,`refresh_token`],response_types:[`code`],token_endpoint_auth_method:`private_key_jwt`,token_endpoint_auth_signing_alg:`ES256`,jwks:t,scope:Ni}}function Fi(e){return{client_id:`${e}${Mi}`,client_name:`Coder CLI for ${new URL(e).host}`,redirect_uris:[`http://127.0.0.1/callback`],grant_types:[`authorization_code`,`refresh_token`,`urn:ietf:params:oauth:grant-type:device_code`],response_types:[`code`],token_endpoint_auth_method:`none`,scope:Ni}}function Ii(e,t){return{resource:new URL(e).origin,authorization_servers:[t],bearer_methods_supported:[`header`],scopes_supported:Ni.split(` `)}}function Li(e){let t=T(e);return t.headers.set(`cache-control`,`public, max-age=3600`),t}function Ri(e,t,n,r){return t.config.publicUrl&&t.auth?Li(Pi(t.config.publicUrl,t.auth.jwks)):void 0}function zi(e,t,n,r){return t.config.publicUrl&&t.auth?Li(Fi(t.config.publicUrl)):void 0}function Bi(e,t,n,r){return t.config.publicUrl&&t.auth?Li(Ii(t.config.publicUrl,t.auth.issuer)):void 0}const Vi=[U(`GET`,ji,Ri,Qe),U(`GET`,Mi,zi,Qe),U(`GET`,`/.well-known/oauth-protected-resource`,Bi,Qe),U(`GET`,`/health`,(e,t)=>$n(t)),U(`GET`,`/`,Mt,Re),U(`GET`,`/login`,zt,_e),...Et(`/login`,Qt,_e).filter(e=>e.method!==`GET`),U(`POST`,`/dash/token`,pn,ut),...Et(`/dash`,an,Tn)],Hi=[U(`GET`,`/api/auth/capabilities`,(e,t)=>T({wular:t.auth?.issuer??null})),...Et(`/api/auth`,(e,t)=>t.auth.handler(e),At),U(`GET`,`/me`,nr,Dt),U(`POST`,`/me/organization`,ir,ke)],Ui=[...z(`/tasks`,[U(`GET`,`/:id/messages`,ln,Ce),U(`POST`,`/:id/ack`,vt,Ce),U(`POST`,`/:id/heartbeat`,Me,Ce),U(`POST`,`/:id/result`,xt,En),U(`POST`,`/:id/credential`,Ve,En),U(`GET`,`/:id`,We,Fe)]),...z(`/logins`,[U(`GET`,`/:id/input`,hr,Ye),U(`GET`,`/:id`,gr,Ye),U(`POST`,`/:id`,_r,Ye)]),...z(`/runners`,[U(`POST`,`/register`,dn)])],Wi=[...z(`/create`,[U(`GET`,`/:id`,vr,P),U(`POST`,`/:id`,vr,P),U(`GET`,`/:id/callback`,yr,P),U(`POST`,`/:id/callback`,br,P)]),...z(`/install`,[U(`GET`,`/:id`,xr,j),U(`POST`,`/:id`,xr,j),U(`GET`,`/:id/callback`,Sr,j),U(`POST`,`/:id/callback`,Sr,j)])],Gi=z(`/connect`,[U(`GET`,``,Tr,pt),U(`POST`,``,Er,pt),U(`GET`,`/:integration`,Dr,nt),U(`GET`,`/:integration/callback`,Or,nt)]),Ki=[...z(`/hooks`,[U(`POST`,`/*`,(e,t,n)=>mt(e,t,n[`*`]),(e,t,n)=>t.integrations[n[`*`]]?t:D())]),...Wi,...Gi],qi=[U(`GET`,`/metrics`,async(e,t)=>T(await tr(t),200,{"cache-control":`no-store`}),kn),U(`GET`,`/usage`,Ln),U(`GET`,`/usage/totals`,Rn)],Ji=z(``,[U(`GET`,`/folders`,(e,t)=>T(qt(t.local.cwd))),U(`POST`,`/folders/check`,async(e,t)=>{let n=await e.json().catch(()=>void 0);return T(Yt(n?.path))}),U(`POST`,`/folders/clone`,async(e,t)=>{let n=await e.json().catch(()=>void 0);return T(await me(n?.url))}),U(`POST`,`/folders/pick`,async(e,t)=>T(await Je()))],he),Yi=z(``,[U(`GET`,`/engines/status`,async(e,t)=>T(await Nt())),U(`POST`,`/engines/:engine/login`,en),U(`POST`,`/engines/:engine/logout`,Ut)],Ee),Xi=[U(`POST`,`/apps/:id/install`,(e,t,n,r)=>jr(e,t,n.id,r.searchParams.get(`back`))),U(`GET`,`/apps`,Mr),U(`GET`,`/installations`,Nr),U(`POST`,`/connections`,(e,t)=>Ar(e,t)),U(`GET`,`/integrations`,(e,t)=>Pr(t)),U(`GET`,`/repositories`,(e,t)=>Fr(t))],Zi=[U(`GET`,`/agents/import`,Rr),U(`POST`,`/agents/import`,zr),U(`GET`,`/agents`,Hr),U(`PATCH`,`/agents/:slug/settings`,Xr),U(`GET`,`/agents/:slug/versions`,Ur),U(`GET`,`/agents/:slug/versions/:version`,Wr),U(`GET`,`/agents/:slug`,Gr),U(`DELETE`,`/agents/:slug`,Zr,(e,t)=>Ke(t,`Only an owner or admin can delete an agent.`)),U(`PUT`,`/agents/:slug`,Qr)],Qi=[U(`GET`,`/credentials`,Ft),U(`POST`,`/credentials`,on,be),U(`POST`,`/credentials/:label/default`,$t),U(`DELETE`,`/credentials/:label`,bn),U(`POST`,`/logins`,ar,B),U(`GET`,`/logins/:id`,or,B),U(`POST`,`/logins/:id`,sr,B),U(`DELETE`,`/logins/:id`,cr,B)],$i=[U(`GET`,`/runners`,gn),U(`POST`,`/runners`,fe),U(`POST`,`/runners/pair`,tn),U(`POST`,`/runners/:id/test`,at),U(`PATCH`,`/runners/:id`,Gt),U(`DELETE`,`/runners/:id`,It)],ea=[U(`GET`,`/tasks`,De),U(`POST`,`/tasks`,Jt),U(`GET`,`/tasks/:id`,Ge),U(`DELETE`,`/tasks/:id`,ot),U(`GET`,`/tasks/:id/logs`,ge),U(`GET`,`/tasks/:id/stream`,$r),U(`POST`,`/tasks/:id/steer`,An),U(`POST`,`/tasks/:id/ask`,qe),U(`POST`,`/tasks/:id/continue`,et),U(`POST`,`/tasks/:id/approve`,pe),U(`POST`,`/tasks/:id/cancel`,Xe),U(`POST`,`/tasks/:id/archive`,Kt),U(`GET`,`/events`,ni)],ta=[U(`GET`,`/config`,Cn),U(`PATCH`,`/config`,ve),U(`PUT`,`/config`,ct)],na=[U(`POST`,`/models/probe`,(e,t)=>fi(e,t)),U(`GET`,`/models`,mi),U(`POST`,`/models`,hi),U(`DELETE`,`/models/:name`,gi),U(`POST`,`/models/:name/alias`,_i),U(`POST`,`/models/:name/disable`,vi),U(`POST`,`/models/:name/enable`,yi)],ra=[U(`GET`,`/mcp`,xi),U(`POST`,`/mcp`,Si),U(`DELETE`,`/mcp/:name`,Ci),U(`GET`,`/mcp-registry`,(e,t,n,r)=>Oi(e,t,r))],ia=[U(`GET`,`/flows`,Ne),U(`GET`,`/pulls`,dt),U(`POST`,`/flows/:name/run`,Ae),U(`POST`,`/review`,gt)],aa=z(`/admin`,[...qi,...Ji,...Yi,...Xi,...Zi,...Qi,...$i,...ea,...ta,...na,...ra,...ia]).map(e=>({...e,guard:Sn(e.guard)})),oa=[...Ui,...aa,...Hi,...Ki,...Vi];async function sa(e,t,n){if(!Xt(e,t))return D();let r=new URL(e.url);return n.scope instanceof Response?n.scope:(t=n.scope??t,await Ht(oa,e,t,r)??yn(e,t,r))}const ca=`x-coder-request-scope`;function la(e,{sessions:t,cookies:n}){let r=e.auth;return r?{...e,auth:{...r,session(e,i){let a=JSON.stringify([...[`cookie`,`authorization`,`x-coder-organization`].map(t=>e.get(t)),!!i]),o=t.get(a);return o||(o=r.session(e,i,n),t.set(a,o)),o}}}:e}function ua(e,t,n){let r=t.requestScopes??=new Map,i=e.headers.get(ca),a=n&&i?r.get(i):void 0;if(a)return{req:e,ctx:la(t,a),end(){}};let o=new Headers(e.headers);if(o.delete(ca),!t.auth)return{req:i?new Request(e,{headers:o}):e,ctx:t,end(){}};let s=Hn(),c={sessions:new Map,cookies:[]};return r.set(s,c),o.set(ca,s),{req:new Request(e,{headers:o}),ctx:la(t,c),cookies:c.cookies,end:()=>r.delete(s)}}async function da(e,t,n={}){t.limits??=new ue((t.now??Date.now)()),t.limits.requests++,t.settings??={},t.taskWatcher??=new ii,t.logWatcher??=new oi,t.dashboardHosts??=new Ot;let r=()=>fa(e,t,n);return t.dbProfile?t.dbProfile.request(n.inProcess===!0,r):r()}async function fa(e,t,n){let r=await ae(e,ce(new URL(e.url).pathname));if(r instanceof Response)return r;let i=ua(r,t,n.inProcess===!0),a=!1;try{let r=n.clientIp??`unknown`,o=await Lt(i.req,i.ctx,r),s=pa(o instanceof Response?o:await sa(i.req,i.ctx,o),i.cookies),c=new URL(e.url).pathname.split(`/`),l=c[1]===`tasks`,u=c[1]===`admin`&&c[2]===`tasks`;return e.method!==`GET`&&s.ok&&![`hooks`,`tasks`,`logins`].includes(c[1])&&Zt(t),e.method!==`GET`&&s.ok&&!(l&&c.length===4&&c[2]&&c[3]===`heartbeat`)&&!(u&&c.length===5&&c[3]&&[`steer`,`ask`,`approve`,`archive`].includes(c[4]))&&(l||u||c[1]===`admin`&&c[2]===`review`||c[1]===`admin`&&c[2]===`flows`&&c.length===5&&c[3]&&c[4]===`run`)&&rt(t,u&&c.length===3&&e.method===`POST`||u&&c.length===5&&!!c[3]&&c[4]===`continue`),a=!!s.body&&(s.headers.get(`content-type`)??``).includes(`text/html`),a?ma(s,i.end):s}finally{a||i.end()}}function pa(e,t=[]){if(!t.length)return e;let n=new Headers(e.headers);for(let e of t)n.append(`set-cookie`,e);return new Response(e.body,{status:e.status,statusText:e.statusText,headers:n})}function ma(e,t){let n=e.body.getReader(),r=new ReadableStream({async pull(e){try{let{done:r,value:i}=await n.read();r?(t(),e.close()):e.enqueue(i)}catch(n){t(),e.error(n)}},cancel(e){return t(),n.cancel(e)}});return new Response(r,e)}async function ha(e={}){let t=e.env??J.env,n=Mn(t,e.host??`node`),i=e.runner??n.runner;if((e.host===`vercel`||t.VERCEL)&&(i===`local`||i===`local-docker`))throw new r(`invalid-option`,`The ${i} runner cannot run on Vercel.`,{hint:`Leave RUNNER unset to use vercel-sandbox.`});if(n.store===`memory`&&i!==`local`&&i!==`local-docker`)throw new r(`invalid-option`,`The ${i} runner needs a database.`,{hint:`Set DATABASE_URL, or use RUNNER=local for a memory server.`});if(!n.publicUrl)throw new r(`invalid-option`,`PUBLIC_URL is required to start a Coder server.`,{hint:`Set PUBLIC_URL to the address platforms and browsers use.`});let a=[];if(n.store===`memory`&&!e.local&&a.push(`test server, not for production: everything is in memory, nothing survives a restart, no sign-in; set DATABASE_URL for a real deployment`),!t.SERVER_ENCRYPTION_KEY&&!e.local&&a.push(`secrets are stored unencrypted; set SERVER_ENCRYPTION_KEY (openssl rand -base64 32)`),n.store===`postgres`&&!n.encryptionKey)throw new r(`invalid-option`,`SERVER_ENCRYPTION_KEY is required for a Postgres server.`,{hint:`Set SERVER_ENCRYPTION_KEY (openssl rand -base64 32); sign-in keys derive from it.`});let o=te(n.integrations),s=n.store===`memory`&&!n.adminToken?Vn(18).toString(`base64url`):void 0;n.store===`postgres`&&n.adminToken&&a.push(`ADMIN_TOKEN is ignored with Postgres; owners and admins sign in with coder auth login`);let c={...n,...n.store===`postgres`?{adminToken:void 0}:{},...s?{adminToken:s}:{},...e.runner?{runner:e.runner}:{}},l=await hn(c,{local:!!e.local});if(l.connection)try{let e=await Fn(l.connection.db);if(!e.applied)throw new r(`server`,`The database is not set up yet.`,{hint:`Create the tables: coder server migrate`});e.pending&&a.push(`database is ${e.pending} migration${e.pending===1?``:`s`} behind; run coder server migrate`)}catch(e){throw await l.close(),e}try{c.store===`memory`&&await lt(l.store(l.defaultOrganizationId),Date.now());let n=l.connection&&c.auth?await(await import(`./auth-BOyXPOtu.js`)).createAuth(l.connection.db,c):void 0,i=e.cwd??J.cwd(),u=l.store(l.defaultOrganizationId),d=tt({kind:c.runner,workDir:c.workDir,config:c.runnerConfig,local:!(e.host===`vercel`||t.VERCEL),sandbox:{region:Le(c.databaseUrl),snapshots:{get:e=>u.get(`snapshot`,e),put:(e,t)=>u.put(`snapshot`,e,t)}}});if(!d[c.runner])throw await l.close(),new r(`invalid-option`,`Runner ${c.runner} is not configured.`,{hint:`Set RUNNER_CONFIG to JSON containing url and secret.`});let f=new Ot,p=new ue,m=new Map,h=new Map,g=new ii,_=new oi,v=t=>{let r=m.get(t);if(r)return r;let a=l.store(t),s={limits:p,...l.connection?{databaseHealth:async()=>{await l.connection.db.execute(Gn`select 1`)},statementTimeout:l.connection.statementTimeout,healthRunners:async()=>{let[e]=await l.connection.db.select({total:Gn`count(*)::int`,online:Gn`count(*) filter (where ${Pn.lastSeen} > clock_timestamp() - interval '5 minutes')::int`}).from(Pn);return e??{online:0,total:0}}}:{},config:c,settings:{},organizationId:t,integrations:o,runners:d,store:a,queue:l.queue,requestScopes:h,taskWatcher:g,logWatcher:_,dashboardHosts:f,dbProfile:l.connection?.profile,chatState:l.chatState,loadAgent:ze(o,{cwd:i,config:c,store:a}),...n?{auth:n}:{},scope:v,webhookTarget:(e,t)=>l.webhookTarget(e,t),appRecord:e=>l.appRecord(e),installationOrganization:e=>l.installationOrganization(e),installations:e=>l.installations(e),serverOrganizationId:l.defaultOrganizationId,taskOrganization:(e,t)=>l.taskOrganization(e,t),...e.local?{local:e.local}:{}};return m.set(t,s),s};globalThis.__coder={handle:e=>da(e,v(l.defaultOrganizationId),{inProcess:!0})};let y=v(l.defaultOrganizationId),b;return e.local&&(await Bt(y),b=setImmediate(()=>{Dn(y).catch(()=>void 0)})),{config:c,context:v,defaultContext:y,warnings:a,...s?{mintedToken:s}:{},sweep:l.sweep,close:async()=>{g.close(),_.close(),b&&clearImmediate(b),await y.local?.usageSync?.catch(()=>void 0),await Tt(y),await l.close()}}}catch(e){throw await l.close(),e}}var ga=e({serve:()=>ba,serverHandler:()=>va});function _a(e){try{let t=new URL(e);return Vt.has(t.hostname)?Number(t.port||(t.protocol===`https:`?443:80)):void 0}catch{return}}function va(e=J.env,t=e.VERCEL?`vercel`:`node`){Nn();let n,r=()=>n??=ha({env:e,host:t}).catch(e=>{throw n=void 0,e});return Object.assign(async(t,n)=>{let i=await r(),a=n?e=>n(e):e=>void e.catch(()=>{}),o=e=>({...i.context(e),waitUntil:a,scope:o});return da(t,o(i.defaultContext.organizationId),{clientIp:e.VERCEL?t.headers.get(`x-forwarded-for`)?.split(`,`,1)[0]?.trim():void 0})},{scheduled:async()=>{let e=await r();await Promise.all([e.sweep(),import(`./store-j8icrG0v.js`).then(e=>e.X).then(t=>t.renewInstallations(e.defaultContext)),St(e.defaultContext,!1,!0),jt(e.defaultContext)])},close:async()=>{let e=n;n=void 0,await(await e)?.close()}})}async function ya(e={}){Nn();let t=e.env??J.env;if(e.runner&&!Ze.includes(e.runner))throw new r(`invalid-option`,`Invalid --runner value: use ${Ze.join(`, `)}`);if(e.port!==void 0&&(!Number.isInteger(e.port)||e.port<1||e.port>65535))throw new r(`invalid-option`,`Invalid port: use 1 through 65535.`);let n=t.PORT&&/^\d+$/.test(t.PORT)?Number(t.PORT):void 0,i=_a(t.PUBLIC_URL),a=e.port??n??i??8787;if(!Number.isInteger(a)||a<1||a>65535)throw new r(`invalid-option`,`Invalid PORT: use 1 through 65535.`);let o=t.PUBLIC_URL?t:{...t,PUBLIC_URL:`http://localhost:${a}`},s=!!(t.DATABASE_URL||t.POSTGRES_URL);if(s&&e.memory)throw new r(`invalid-option`,`A memory server cannot use DATABASE_URL.`,{hint:`Unset DATABASE_URL, or drop --memory.`});let c=(e.host??t.HOST??(s?void 0:`127.0.0.1`))?.replace(/^\[(.*)\]$/,`$1`),l=!s&&!e.memory;if(l&&!Vt.has(c))throw new r(`invalid-option`,`A local server listens on loopback only.`,{hint:`Reach it through a tunnel or a proxy on this machine; set DATABASE_URL for a deployment, or use --memory for a test server.`});if(e.memory&&t.VERCEL)throw new r(`invalid-option`,`A memory server cannot run on Vercel.`,{hint:`Set DATABASE_URL for a real deployment.`});let u,d,f=l?new Promise((e,t)=>{d=t,u=()=>{Zn().then(e,t)}}):void 0,p=f?.then(()=>void 0).catch(()=>void 0),m=l?{cwd:e.cwd??J.cwd(),port:a,cacheMaintenance:p}:void 0,h=await ha({cwd:e.cwd,env:o,runner:e.runner,...m?{local:m}:{}}),g=h.defaultContext,_=()=>{h.sweep().catch(()=>{}),import(`./store-j8icrG0v.js`).then(e=>e.X).then(e=>e.renewInstallations(g)).catch(()=>{})};_();let v=setInterval(_,36e5);v.unref();let y=setInterval(()=>{St(g,!1,!0).catch(()=>{}),jt(g).catch(()=>{}),t.PUBLIC_URL||import(`./store-j8icrG0v.js`).then(e=>e.X).then(e=>e.renewInstallations(g,`sync`)).catch(()=>{})},6e4);y.unref();let b=Wn.createServer(se((e,t)=>da(e,g,{clientIp:t}),{limit:ce,admit:e=>s||ht(e.socket.remoteAddress,e.url??`/`)})),x=h.config.publicUrl;i!==void 0&&i!==a&&h.warnings.push(`PUBLIC_URL points at port ${i} but the server listens on ${a}`),await new Promise((e,t)=>{b.once(`error`,t),b.listen(a,c,e)}).catch(async e=>{throw d?.(e),clearInterval(y),clearInterval(v),await h.close(),e});let S=u?setTimeout(u,0):void 0,C=!1,ee=async()=>{C||(C=!0,clearInterval(y),clearInterval(v),g.taskWatcher?.close(),g.logWatcher?.close(),await new Promise((e,t)=>b.close(n=>n?t(n):e())),await p,S&&clearTimeout(S),await h.close())},te=g.auth?`Wular Auth (${g.auth.issuer})`:void 0,ne=`http://localhost:${a}`,w=jn(g),T=w===`local`?ne:x,E=h.config.store===`memory`?h.mintedToken??t.ADMIN_TOKEN:void 0;return{address:ne,publicUrl:x,warnings:h.warnings,close:ee,runner:h.config.runner,store:h.config.store,mode:w,...f?{cacheMigration:f}:{},maxTasks:h.config.maxTasks??h.config.limits?.concurrentTasks??10,...te?{signIn:te}:{},...h.mintedToken?{mintedToken:h.mintedToken}:{},...h.config.store===`postgres`&&t.DATABASE_URL?{database:In(t.DATABASE_URL)}:{},...Vt.has(new URL(T).hostname)?{dashboard:`${T}/dash${E?`#token=${encodeURIComponent(E)}`:``}`}:{}}}async function ba(e={}){try{return await ya(e)}catch(e){if(e instanceof r)throw e;let t=e instanceof Error&&e.cause instanceof Error?`: ${e.cause.message}`:``;throw new r(`server`,`${e instanceof Error?e.message:String(e)}${t}`)}}export{Ni as a,Ai as i,ga as n,ji as o,va as r,ba as t};
|
package/dist/serve-C1MMhM1F.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{Ct as e,Qt as t}from"./dispatch-BsW_1m7e.js";import{i as n}from"./prompt-CMXmt2l9.js";import{i as r}from"./cli-B1ObVrL4.js";import{p as i,s as a}from"./output-BKeyLbvt.js";import{n as o,s,t as c}from"./args-DcBCtXhz.js";import l from"node:process";import*as u from"zod/mini";function d(e){let r=i,o=[...e.publicUrl===e.address?[]:[[`public`,e.publicUrl]],[`store`,e.database??(e.mode===`local`?t():e.store)],[`runner`,e.runner],...e.signIn?[[`sign-in`,e.signIn]]:[],...e.mintedToken?[[`token`,e.mintedToken]]:[]],s=Math.max(...o.map(([e])=>e.length))+2;l.stdout.write(`${r.bold({local:`Coder local server`,memory:`Coder test server`,cloud:`Coder server`}[e.mode])} ${r.dim(`listening on ${e.address}`)}\n`);for(let[e,t]of o)l.stdout.write(` ${r.light(e.padEnd(s))}${t}\n`);e.warnings.length&&l.stdout.write(`
|
|
2
|
-
`);for(let t of e.warnings)l.stdout.write(` ${r.yellow(`!`)} ${t}\n`);if(e.cacheMigration?.then(e=>{(e.tasks||e.flows||e.files)&&l.stdout.write(`\n moved ${e.tasks.toLocaleString(`en-US`)} archived tasks to ${e.cache}\n`)}).catch(e=>l.stderr.write(`\n Cache migration failed: ${e instanceof Error?e.message:String(e)}\n`)),e.mode===`memory`&&l.stdout.write(`\n${a([`the CLI reaches this server with its token in ADMIN_TOKEN: coder task list --server ${e.publicUrl}`],r)}\n`),e.dashboard){let t=l.stdout.isTTY&&n(e.dashboard);l.stdout.write(t?`\nOpening the dashboard in your browser. If it doesn't open, go to:\n ${e.dashboard}\n`:`\n ${r.light(`dashboard`)} ${e.dashboard}\n`)}}const f=r({name:`server serve`,help:{usage:`coder server serve [--port <n>] [--host <address>] [--memory] [--runner <name>] [--json] [--cwd <dir>]`,summary:`Run the Coder server on Bun: the address platforms deliver events to, the dashboard, and the worker that runs tasks. With DATABASE_URL it is a full server with sign-in and workspaces. Without one it is the dashboard for this machine's CLI: its config, agents, tasks and engine logins, on loopback only. --memory makes a throwaway test server that keeps everything in memory. Configured through the environment; every variable is in coder docs self-host. It never migrates the database itself: coder server migrate does.`,flags:[[`--port <n>`,`listen port (default: PORT, else the port in a localhost PUBLIC_URL, else 8787)`],[`--host <address>`,`listen address (default: HOST, else 127.0.0.1 without a database, else every interface)`],[`--memory`,`a throwaway test server: everything in memory, no sign-in, admin token only`],[`--runner <name>`,`local, local-docker, vercel-sandbox, github-actions, or http`]],env:[[`PUBLIC_URL`,`the address platforms and browsers reach the server at (default http://localhost:<port>)`],[`PORT`,`listen port, as hosts set it (default 8787)`],[`HOST`,`listen address, as --host`],[`DATABASE_URL`,`Postgres, set up by coder server migrate; turns on sign-in and workspaces`],[`AUTH_WULAR_URL`,`the Wular Auth issuer people sign in with (default https://auth.wular.ai)`],[`SERVER_ENCRYPTION_KEY`,`encrypts stored secrets and derives the sign-in keys; required with DATABASE_URL (openssl rand -base64 32)`],[`RUNNER`,`where tasks run: local (default), local-docker, vercel-sandbox, github-actions, http`],[`MAX_TASKS, TASK_TIMEOUT, TASK_STALL, TASK_ATTEMPTS`,`runner capacity and lifecycle limits`],[`ADMIN_TOKEN`,`local and memory servers: the dashboard and CLI key; minted and shown when unset`],[`CODER_CACHE_HOME`,`archived tasks, flows and usage (default OS cache directory/wular-coder)`],[`WORK_DIR`,`where tasks check out repositories`],[`SERVER_NAME`,`what the dashboard calls this server (default Coder)`]],examples:[[`PUBLIC_URL=https://abc.ngrok.app coder server serve`,`receive GitHub and Slack events through a tunnel; the tunnel serves only their webhooks and callbacks`],[`PUBLIC_URL=https://agents.example.com DATABASE_URL=postgres://... coder server serve`,`on your own host, backed by Postgres`]]},options:{...c,port:u.optional(u.coerce.number().check(u.int(),u.positive())),host:s,runner:s,memory:o},async run({options:t,cwd:n}){let{rerunUnderBun:r}=await import(`./env-YRY3I60r.js`).then(e=>e.t);if(await r(),t.memory&&!l.env.ADMIN_TOKEN&&!l.stdout.isTTY)throw new e(`invalid-option`,`Memory server needs an admin token: set ADMIN_TOKEN, or run in a terminal to get a printed one.`);let{serve:i}=await import(`./serve-BJ_Mbm2m.js`).then(e=>e.n),a=await i({cwd:n,port:t.port,...t.host?{host:t.host}:{},...t.runner?{runner:t.runner}:{},...t.memory?{memory:!0}:{}}),o=()=>void a.close().finally(()=>l.exit(0));return l.once(`SIGINT`,o),l.once(`SIGTERM`,o),a},json:e=>({ok:!0,address:e.address,publicUrl:e.publicUrl,runner:e.runner,store:e.store,mode:e.mode,maxTasks:e.maxTasks,...e.signIn?{signIn:e.signIn}:{},...e.mintedToken?{adminToken:e.mintedToken}:{},warnings:e.warnings}),print:d});export{f as commandServerServe};
|
package/dist/serve-DtrOHaoS.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import{Dt as e,G as t,Ht as n,Nn as r,Tn as i,b as a,jn as o,nt as s,on as c,rn as l,v as u,y as d}from"./dispatch-BsW_1m7e.js";import{i as f}from"./cli-B1ObVrL4.js";import{s as p}from"./args-DcBCtXhz.js";import{n as m}from"./mcp-server-DGzme0YX.js";import h from"node:path";import g from"node:fs";import{spawn as _}from"node:child_process";import{randomUUID as v}from"node:crypto";function y(e){return h.join(e,`sidecar.json`)}function b(e){return o(y(e))??{sessionId:null,declineStreak:0}}async function x(e){let t=h.join(e,`sidecar.lock`),n=Date.now()+12e4;for(;;)try{return g.mkdirSync(t),()=>{try{g.rmdirSync(t)}catch{}}}catch{try{if(Date.now()-g.statSync(t).mtimeMs>9e4){g.rmdirSync(t);continue}}catch{continue}if(Date.now()>n)throw Error(`sidecar lock wait timed out`);await new Promise(e=>setTimeout(e,250))}}function S(e,n,r,i){return[`-p`,i,`--output-format`,`json`,`--model`,`sonnet`,`--effort`,`low`,`--strict-mcp-config`,`--no-chrome`,`--mcp-config`,`{"mcpServers":{}}`,`--settings`,`{"disableClaudeAiConnectors":true}`,r?`--resume`:`--session-id`,n,...t,`--add-dir`,e]}function C(e,t,n,r,i){let a=S(t,n,r,i);return new Promise((t,n)=>{let r=_(`claude`,a,{cwd:e,stdio:[`ignore`,`pipe`,`pipe`]}),i=``,o=``,s=setTimeout(()=>{r.kill(`SIGKILL`),n(Error(`sidecar call timed out`))},12e4);r.stdout.on(`data`,e=>i+=e),r.stderr.on(`data`,e=>o+=e),r.on(`error`,e=>{clearTimeout(s),n(e)}),r.on(`close`,e=>{if(clearTimeout(s),e!==0){n(Error(`sidecar claude exited ${e}: ${o.trim().slice(0,200)}`));return}try{let e=JSON.parse(i);if(e.is_error){n(Error(`sidecar turn errored: ${String(e.result??``).slice(0,200)}`));return}t(String(e.result??``))}catch{n(Error(`sidecar returned unparseable output`))}})})}function w(e){let t=e.match(/\{[^{}]*"decision"[^{}]*\}/);if(!t)return null;try{let e=JSON.parse(t[0]);if(e.decision===`accept`||e.decision===`decline`||e.decision===`escalate`)return{decision:e.decision,reason:String(e.reason??``)}}catch{}return null}async function T(e,t,n){let i=null;try{i=await x(t);let a=b(t);if(a.declineStreak>=3)return{decision:`escalate`,reason:`sidecar decline streak; needs human review`};if(!a.sessionId){let i=v();await C(e,t,i,!1,`You are the approval reviewer for a "coder" background coding task. The task runs inside an OS sandbox; you review only actions that escape it.
|
|
2
|
-
|
|
3
|
-
Rules:
|
|
4
|
-
- git stays read-only: decline any git write (commit/push/checkout/reset/...).
|
|
5
|
-
- Decline anything destructive or system-level (sudo, rm -rf outside workspace, killing processes, changing system config, piping downloads to shells).
|
|
6
|
-
- Temp locations (/tmp, \$TMPDIR, os temp dirs) and paths this task created are workspace scratch. They can be deleted after checking the progress log.
|
|
7
|
-
- Accept actions clearly needed for the task goal (package installs in the workspace, running tests/builds/linters, reading system info, network to well-known package registries).
|
|
8
|
-
- Escalate when genuinely uncertain, when the action is irreversible beyond the workspace, or when it touches credentials/secrets.
|
|
9
|
-
|
|
10
|
-
You may Read/Grep workspace files and the task progress log to inform a decision. Do this only when the action line alone is not enough. Most decisions should not need it.
|
|
11
|
-
|
|
12
|
-
Reply with ONLY one line of JSON: {"decision":"accept"|"decline"|"escalate","reason":"<short>"}. Acknowledge now with {"decision":"escalate","reason":"ready"}.${n.taskGoal?`\n\nTask goal: ${n.taskGoal.replace(/\s+/g,` `).slice(0,500)}`:``}${`\nTask progress log: ${h.join(t,`log.jsonl`)}`}`),a.sessionId=i,r(y(t),a)}let o=w(await C(e,t,a.sessionId,!0,`action: ${n.summary.slice(0,500)}`));return o?.decision===`decline`?a.declineStreak+=1:o?.decision===`accept`&&(a.declineStreak=0),r(y(t),a),o??{decision:`escalate`,reason:`sidecar verdict unparseable`}}catch(e){return{decision:`escalate`,reason:`sidecar unavailable: ${e instanceof Error?e.message:String(e)}`}}finally{i?.()}}const E=new Set([`Write`,`Edit`,`MultiEdit`,`NotebookEdit`]);async function D(t,r,i){let o=String(i.tool_name??``),f=i.input??i.tool_input??{},p=c(t),m=l(t,r),h=s(t),g=n=>e(t,r,n),_,v;if(o===`Bash`){let e=String(f.command??``);v=`run command: ${e||`(unknown command)`}`,_=u(e,{allowedNetworkHosts:h.approvals.allowedNetworkHosts})}else if(E.has(o)){let e=String(f.file_path??f.notebook_path??``);v=`${o}: ${e||`(unknown path)`}`,_=d(e?[e]:[],p)}else v=`${o||`(unknown tool)`}: ${JSON.stringify(f).slice(0,200)}`,_={decision:`escalate`,reason:`tool needs approval: ${o}`};g({kind:`approval-decision`,method:o,decision:_.decision,reason:_.reason,summary:v});let y=_.decision,b=_.reason;if(y===`escalate`){let e=await T(t,m,{taskGoal:n(t,r)?.prompt??null,summary:v});g({kind:`sidecar-decision`,decision:e.decision,reason:e.reason,summary:v}),e.decision===`escalate`?(y=await a(m,{method:`claude/${o}`,summary:v,params:{tool_name:o,input:f}},{timeoutMs:h.approvals.escalationTimeoutMs,onEvent:g}),b=`escalated for human review`):(y=e.decision,b=e.reason)}return y===`accept`?{behavior:`allow`,updatedInput:f}:{behavior:`deny`,message:`Denied by coder policy: ${b}`}}const O={approval_prompt:{description:`Coder approval policy for claude permission prompts.`,inputSchema:{type:`object`,additionalProperties:!0},handler:(e,{cwd:t,taskId:n})=>D(t,n,e).catch(e=>({behavior:`deny`,message:`coder mcp tool failed: ${e instanceof Error?e.message:String(e)}`}))}},k=f({name:`mcp serve`,options:{cwd:p},args:1,run:({args:e,cwd:t})=>m(`coder`,O,{cwd:t,taskId:e[0]},void 0,i())});export{k as commandMcp};
|
package/dist/serve-P9pFkEnE.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,t}from"./cli-B1ObVrL4.js";import{p as n,s as r}from"./output-BKeyLbvt.js";import{n as i,o as a,s as o,t as s}from"./args-DcBCtXhz.js";import c from"node:process";import*as l from"zod/mini";const u=e({name:`runner serve`,help:{usage:`coder runner serve --url <public url> [--token <token>] [--runner-url <url>] [--port <n>] [--name <name>] [--workspace] [--server [url]] [--json]`,summary:`Run tasks on this machine with its own claude and codex logins. Expose the port with any tunnel (cloudflared, ngrok, Tailscale Funnel or a public VS Code port) and pass the tunnel's URL; each start registers the current URL, so a changing tunnel URL is fine. Choose a default with coder runner default. Tasks use their named runner, the agent setting, your default, the workspace default, then the server default.`,flags:[[`--url <public url>`,`the HTTPS address the server reaches this runner at`],[`--token <token>`,`one-use pairing token, --url is the Coder server`],[`--runner-url <url>`,`public tunnel address when pairing, or CODER_RUNNER_URL`],[`--port <n>`,`local port the tunnel forwards to (default 4100)`],[`--name <name>`,`shown in the dashboard (default: this machine's hostname)`],[`--workspace`,`run every member's tasks, not only yours (owners and admins)`],t],examples:[[`cloudflared tunnel --url http://localhost:4100`,`expose the port in one terminal`],[`coder runner serve --url https://abc.trycloudflare.com`,`then serve through it`]]},options:{...s,port:l.optional(l.coerce.number().check(l.int(),l.positive())),url:o,name:o,token:o,"runner-url":o,workspace:i,server:a,yes:i},async run({options:e}){let{serveRunner:t}=await import(`./serve-yjSw0B1a.js`).then(e=>e.n),n=await t({...e,runnerUrl:e[`runner-url`]}),r=()=>void n.close().finally(()=>c.exit(0));return c.once(`SIGINT`,r),c.once(`SIGTERM`,r),n},json:({server:e,close:t,...n})=>({ok:!0,...n}),print:e=>c.stdout.write(`Runner ${n.bold(e.name)} serves ${e.server} at ${n.cyan(e.config.url??``)} (${e.scope}), listening on localhost:${e.port}.\n${r([`Tasks run here with this machine's own claude and codex logins`,`Stop with Ctrl-C; the server marks the runner offline`],n,n.cyan)}\n`)});export{u as commandRunnerServe};
|
package/dist/serve-yjSw0B1a.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{Ct as t,Nt as n}from"./dispatch-BsW_1m7e.js";import{n as r,o as i}from"./remote-CxFnEjZl.js";import{u as a}from"./integrations-B2CavXR1.js";import{t as o}from"./local-BRy1EUq2.js";import{s,t as c}from"./http-D01Udu4u.js";import l from"node:path";import u from"node:fs";import{createHmac as d,randomBytes as f}from"node:crypto";import p from"node:os";import m from"node:http";var h=e({runnerController:()=>C,serveRunner:()=>b});const g=()=>n(`runners.json`);function _(){try{return JSON.parse(u.readFileSync(g(),`utf8`))}catch{return{}}}function v(e){u.mkdirSync(l.dirname(g()),{recursive:!0}),u.writeFileSync(g(),JSON.stringify(e,null,2),{mode:384})}const y=e=>[`cloudflared tunnel --url http://localhost:${e}`,`ngrok http ${e}`,`tailscale funnel ${e}`,`VS Code: forward port ${e} in the Ports view and set its visibility to Public`];async function b(e={}){let a=e.port??4100,l=e.token?e.runnerUrl??process.env.CODER_RUNNER_URL:e.url;if(!l)throw new t(`invalid-option`,e.token?`Expose this runner and set CODER_RUNNER_URL or --runner-url to its public HTTPS address.`:`Expose this runner with a tunnel, then pass its public URL with --url.`,{hint:y(a)});let u=e.token?i({...e,server:e.url??e.server,yes:!0}):i(e),d=_(),h=d[u]??{secret:f(32).toString(`base64url`)},g=new o(n(`runner`)),b=C({secret:h.secret,server:u,runner:g}),x=m.createServer(s(b,{limit:c}));await new Promise((e,t)=>{x.once(`error`,t),x.listen(a,`127.0.0.1`,e)});let S=()=>new Promise(e=>x.close(()=>e())),w=e.name??p.hostname(),T=async(e,n)=>{let r=await fetch(`${u}/runners/register`,{method:`POST`,redirect:`manual`,signal:AbortSignal.timeout(5e3),headers:{"content-type":`application/json`},body:JSON.stringify({...e?{token:e}:{id:h.id,organizationId:h.organizationId},name:w,url:l,secret:h.secret,...n?{offline:n}:{}})});if(!r.ok)throw new t(`server`,`Runner registration failed`,{status:r.status});return r.json()},E;try{if(e.token){let t=await T(e.token);E=t,h.organizationId=t.organizationId}else{let n=h.id&&h.organizationId?await T().catch(e=>{if(!(e instanceof t&&e.status===401))throw e}):void 0;if(n)E=n;else{let t=r(e),n=await t.me();E=await t.runners.add({kind:`http`,name:w,scope:e.workspace||!n.user?`workspace`:`personal`,config:{url:l,secret:h.secret}}),h.organizationId=n.organization?.id,h.id=E.id,E=await T()}}h.id=E.id,v({...d,[u]:h})}catch(e){throw await S(),e}let D=Promise.resolve(),O=setInterval(()=>{D=D.then(()=>T().then(()=>{})).catch(()=>{})},6e4);return{...E,port:a,server:u,close:async()=>{clearInterval(O),await D,await T(void 0,!0).catch(()=>{}),await S()}}}const x=3e5,S=(e,t=200)=>new Response(JSON.stringify(e),{status:t,headers:{"content-type":`application/json`}});function C(e){let t=e.now??Date.now,n=new Map,r=(r,i)=>{let o=r.headers.get(`x-coder-timestamp`)??``,s=r.headers.get(`x-coder-nonce`)??``,c=r.headers.get(`x-coder-signature`)??``,l=Number(o);if(!s||!Number.isFinite(l)||Math.abs(t()-l)>x)return!1;let u=d(`sha256`,e.secret).update(`${i}.${o}.${s}`).digest(`base64url`);if(!a(c,u))return!1;for(let[e,r]of n)r<t()&&n.delete(e);return!n.has(s)&&(n.set(s,l+x),!0)};return async t=>{let n=t.method===`GET`?``:await t.text();if(!r(t,n))return S({error:`Unauthorized`},401);let i=new URL(t.url),[,a,o]=i.pathname.split(`/`).map(decodeURIComponent);try{if(t.method===`POST`&&a===`start`&&!o){let t=JSON.parse(n);if(typeof t.task!=`string`||!t.env)return S({error:`Invalid start`},400);let r=t.env.CODER_TASK_TOKEN;if(typeof r!=`string`)return S({error:`Invalid start`},400);let i={CODER_SERVER:e.server,CODER_TASK_TOKEN:r,CODER_INBOX_MODE:e.runner.push?`push`:`poll`,...t.env.CODER_LOGIN===`claude`||t.env.CODER_LOGIN===`codex`?{CODER_LOGIN:t.env.CODER_LOGIN}:{}};return S({handle:await e.runner.start({id:t.task},i)})}if(t.method===`GET`&&a===`health`&&!o)return S({ok:!0});if(!o)return S({error:`Not found`},404);if(t.method===`POST`&&a===`messages`&&e.runner.push){let{entries:t}=JSON.parse(n);return!Array.isArray(t)||!t.length?S({error:`Invalid messages`},400):S(await e.runner.push(o,t))}return t.method===`GET`&&a===`status`?S(await e.runner.status(o)):t.method===`GET`&&a===`logs`?S(await e.runner.logs(o,Number(i.searchParams.get(`after`)??-1))):t.method===`POST`&&a===`stop`?(await e.runner.stop(o),new Response(null,{status:204})):S({error:`Not found`},404)}catch(e){return S({error:e instanceof Error?e.message:String(e)},400)}}}export{h as n,b as t};
|
package/dist/server-DDWTnmbx.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as e}from"./cli-B1ObVrL4.js";const t=e(`server`,{serve:async()=>(await import(`./serve-C1MMhM1F.js`)).commandServerServe,migrate:async()=>(await import(`./migrate-w7KfzUAR.js`)).commandServerMigrate,"rotate-key":async()=>(await import(`./rotate-key-Bf8_99ck.js`)).commandServerRotateKey,app:async()=>(await import(`./app-y6BYm2eH.js`)).commandServerApp,workflow:async()=>(await import(`./workflow-IrouAus_.js`)).commandServerWorkflow},{menu:[{usage:`serve [--port <n>]`,blurb:`run the server`},{usage:`migrate`,blurb:`apply pending database migrations`},{usage:`rotate-key`,blurb:`re-seal secrets with SERVER_ENCRYPTION_KEY`},{usage:`app create <integration>`,blurb:`create the built-in agent's public app`},{usage:`workflow`,blurb:`print the GitHub Actions workflow for RUNNER=github-actions`}],description:[`Self-host Coder: the server your agents and platform apps talk to, with a dashboard and sign-in. We run one as the hosted service; you can run your own.`],exampleCommand:`server serve`},{nested:[`app`]});export{t as commandServer};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{w as e}from"./dispatch-BsW_1m7e.js";import{i as t}from"./cli-B1ObVrL4.js";import{f as n,p as r,t as i}from"./output-BKeyLbvt.js";import{n as a,t as o}from"./args-DcBCtXhz.js";import s from"node:process";const c=t({name:`setup-host`,help:{usage:`coder setup-host [claude] [codex] [agents] [--json]`,summary:`Set up coder in your host: check engines and auth, seed the config, and
|
|
2
|
-
install the host plugin/skill for the named host(s). Claude Code gets its
|
|
3
|
-
marketplace plugin; "agents" installs a skill into ~/.agents/skills for
|
|
4
|
-
every host that reads the Agent Skills standard dir (Codex, Pi, OpenCode,
|
|
5
|
-
...). "codex" is an alias for agents. With no host, checks and seeds.`,examples:[[`coder setup-host claude`,`install the Claude Code plugin`],[`coder setup-host agents`,`install the skill into ~/.agents/skills (Codex, Pi, OpenCode, ...)`]]},options:{...o,codex:a,claude:a,agents:a},args:1/0,run:({options:t,args:n,cwd:r})=>e(r,{...t,hosts:n},()=>t.json||l()),print:u});function l(){s.stdout.write(`${r.bold(`Coder host setup`)}\n\n`)}function u(e){let t=r.bold,a=r.dim,{codex:o,claude:c,codexUpdate:l,config:u,configFile:d,claudePlugin:f,agentsSkill:p,ready:m}=e,h=[],g=o.available?o.loggedIn?n(`codex ${a(`${o.detail}; ${o.auth}`)}`):i(`codex not logged in ${a(`(${o.auth})`)} - run: codex login`):i(`codex CLI not installed - run: npm install -g @openai/codex`),_=c.available?c.loggedIn?n(`claude ${a(`${c.detail}; ${c.auth}`)}`):i(`claude not logged in - run: claude auth login`):i(`claude CLI not installed - run: npm install -g @anthropic-ai/claude-code`);h.push(t(`Available Engines`),g,_,` ${a(`custom models (local/provider endpoints): coder model --help`)}`),l?.updated?h.push(n(`codex ${a(`updated ${l.from} -> ${o.detail} (GPT-6 support)`)}`)):l&&h.push(i(`codex ${l.note}`)),h.push(``);let v=e=>{let t=u.engines?.[e]??{};return[t.model,t.effort,t.permissions].filter(Boolean).join(`/`)};h.push(t(`Config`),` chain: ${(u.chain??[]).join(` -> `)} codex: ${v(`codex`)} claude: ${v(`claude`)}`,` ${a(d)} ${a(`(coder config set <key> <value> to change)`)}`,``);let y=[[`claude plugin`,f??null],[`agents skill `,p??null]];for(let[e,t]of y)t&&h.push(t.installed?n(`${e} ${a(t.note)}`):i(`${e} ${t.note}`),``);h.push(m?n(`ready - try: coder run --wait "explain this repo's layout"`):i(`not ready - install an engine CLI to run tasks: codex (npm install -g @openai/codex, then codex login) or claude (npm install -g @anthropic-ai/claude-code, then claude auth login)`)),s.stdout.write(`${h.join(`
|
|
6
|
-
`)}\n`)}export{c as commandSetupHost};
|