@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
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import e from"node:path";import t from"node:process";import{fileURLToPath as n}from"node:url";import*as r from"zod/mini";import i from"node:fs";import{execFileSync as a,spawn as o,spawnSync as s}from"node:child_process";import{createHash as c,randomUUID as l}from"node:crypto";import u from"node:os";import d from"node:net";import f from"node:readline";function p(t,n){if(!n)return``;if(!e.isAbsolute(n))return n;let r=e.relative(t,n);return r&&!r.startsWith(`..`)?r:n}function m(e){try{return JSON.parse(i.readFileSync(e,`utf8`))}catch{return null}}function h(t,n){i.mkdirSync(e.dirname(t),{recursive:!0});let r=`${t}.${process.pid}.${l()}.tmp`;try{i.writeFileSync(r,`${JSON.stringify(n,null,2)}\n`,{encoding:`utf8`,flag:`wx`}),i.renameSync(r,t)}finally{i.rmSync(r,{force:!0})}}function g(t,n){if(i.mkdirSync(e.dirname(n),{recursive:!0}),i.existsSync(n))throw Object.assign(Error(`Directory already exists: ${n}`),{code:`EEXIST`});try{i.renameSync(t,n);return}catch(e){if(e.code!==`EXDEV`)throw e}let r=`${n}.${process.pid}.${l()}.tmp`;try{i.cpSync(t,r,{recursive:!0,preserveTimestamps:!0,verbatimSymlinks:!0,errorOnExist:!0,force:!1}),i.renameSync(r,n),i.rmSync(t,{recursive:!0})}finally{i.rmSync(r,{recursive:!0,force:!0})}}async function _(t,n){if(await i.promises.mkdir(e.dirname(n),{recursive:!0}),await i.promises.lstat(n).catch(e=>{if(e.code!==`ENOENT`)throw e}))throw Object.assign(Error(`Directory already exists: ${n}`),{code:`EEXIST`});try{await i.promises.rename(t,n);return}catch(e){if(e.code!==`EXDEV`)throw e}let r=`${n}.${process.pid}.${l()}.tmp`;try{await i.promises.cp(t,r,{recursive:!0,preserveTimestamps:!0,verbatimSymlinks:!0,errorOnExist:!0,force:!1}),await i.promises.rename(r,n),await i.promises.rm(t,{recursive:!0})}finally{await i.promises.rm(r,{recursive:!0,force:!0})}}function v(e){let t=0,n=``;return()=>{let r;try{r=i.statSync(e).size}catch{return[]}if(r<t&&(t=0,n=``),r===t)return[];let a;try{a=i.openSync(e,`r`)}catch{return[]}try{let e=Buffer.alloc(r-t),o=i.readSync(a,e,0,e.length,t);t+=o;let s=(n+e.toString(`utf8`,0,o)).split(`
|
|
2
|
-
`);return n=s.pop()??``,s.filter(Boolean)}finally{i.closeSync(a)}}}function y(e){return String(e??``).replace(/[^A-Za-z0-9._-]/g,`-`).replace(/^-+|-+$/g,``)}function b(n,r=t.platform){return r===`win32`?`pipe:\\\\.\\pipe\\${y(`${e.win32.basename(n)}-codex-app-server`)}`:`unix:${e.join(n,`broker.sock`)}`}function x(e){if(typeof e!=`string`||e.length===0)throw Error(`Missing broker endpoint.`);if(e.startsWith(`pipe:`)){let t=e.slice(5);if(!t)throw Error(`Broker pipe endpoint is missing its path.`);return{kind:`pipe`,path:t}}if(e.startsWith(`unix:`)){let t=e.slice(5);if(!t)throw Error(`Broker Unix socket endpoint is missing its path.`);return{kind:`unix`,path:t}}throw Error(`Unsupported broker endpoint: ${e}`)}function S(){let t=e.dirname(n(import.meta.url));for(let n=0;n<10;n++){let n=e.join(t,`package.json`);try{if(JSON.parse(i.readFileSync(n,`utf8`)).name===`@wular/coder`)return t}catch{}let r=e.dirname(t);if(r===t)break;t=r}return e.resolve(e.dirname(n(import.meta.url)),`..`)}const C=S(),w=i.existsSync(e.join(C,`dist/cli.js`))?e.join(C,`dist/cli.js`):e.join(C,`src/cli.ts`);function T(){try{return JSON.parse(i.readFileSync(e.join(C,`package.json`),`utf8`)).version??`unknown`}catch{return`unknown`}}function E(e){try{return JSON.parse(i.readFileSync(e,`utf8`)).version??null}catch{return null}}function ee(){return C}const te={false:`broker.json`,true:`broker-network.json`};function ne(t=`coder-`){return i.mkdtempSync(e.join(u.tmpdir(),t))}function re(e){let t=x(e);return d.createConnection({path:t.path})}async function ie(e,t=2e3){let n=Date.now();for(;Date.now()-n<t;){if(await new Promise(t=>{let n=re(e);n.on(`connect`,()=>{n.end(),t(!0)}),n.on(`error`,()=>t(!1))}))return!0;await new Promise(e=>setTimeout(e,50))}return!1}function ae({scriptPath:e,cwd:n,endpoint:r,pidFile:a,logFile:s,networkAccess:c=!1,env:l=t.env}){let u=i.openSync(s,`a`),d=o(t.execPath,[e,`serve`,`--endpoint`,r,`--cwd`,n,`--pid-file`,a,`--network-access`,String(c)],{cwd:n,env:l,detached:!0,stdio:[`ignore`,u,u]});return d.unref(),i.closeSync(u),d}function oe(){let e=[new URL(`./lib/broker.js`,import.meta.url),new URL(`./main.js`,import.meta.url)];for(let t of e){let e=n(t);if(i.existsSync(e))return e}throw Error("Coder broker script not found next to the runtime. Rebuild with `bun run build`.")}function se(t,n=!1){return e.join(A(t),te[n?`true`:`false`])}function ce(e,t=!1){let n=se(e,t);if(!i.existsSync(n))return null;try{let e=JSON.parse(i.readFileSync(n,`utf8`));return(e.networkAccess??!1)===t?e:null}catch{return null}}function le(e,t,n=t.networkAccess??!1){let r=A(e);i.mkdirSync(r,{recursive:!0}),i.writeFileSync(se(e,n),`${JSON.stringify(t,null,2)}\n`,`utf8`)}function ue(e,t=!1){let n=se(e,t);i.existsSync(n)&&i.unlinkSync(n)}async function de(e){if(!e)return!1;try{return await ie(e,150)}catch{return!1}}async function fe(n,r={}){let i=r.scriptPath??oe(),a=T(),o=r.networkAccess??!1,s=ce(n,o),c=s?.version===a&&s?.scriptPath===i&&(s?.networkAccess??!1)===o;if(s&&c&&await de(s.endpoint))return s;s&&(pe({endpoint:s.endpoint??null,pidFile:s.pidFile??null,logFile:s.logFile??null,sessionDir:s.sessionDir??null,pid:s.pid??null,killProcess:r.killProcess??null}),ue(n,o));let l=ne(),u=(r.createBrokerEndpoint??b)(l,r.platform),d=e.join(l,`broker.pid`),f=e.join(l,`broker.log`),p=ae({scriptPath:i,cwd:n,endpoint:u,pidFile:d,logFile:f,networkAccess:o,env:r.env??t.env});if(!await ie(u,r.timeoutMs??2e3))return pe({endpoint:u,pidFile:d,logFile:f,sessionDir:l,pid:p.pid??null,killProcess:r.killProcess??null}),null;let m={endpoint:u,pidFile:d,logFile:f,sessionDir:l,pid:p.pid??null,networkAccess:o,version:a,scriptPath:i};return le(n,m,o),m}function pe({endpoint:t=null,pidFile:n,logFile:r,sessionDir:a=null,pid:o=null,killProcess:s=null}){if(Number.isFinite(o)&&s)try{s(o)}catch{}if(n&&i.existsSync(n)&&i.unlinkSync(n),r&&i.existsSync(r)&&i.unlinkSync(r),t)try{let e=x(t);e.kind===`unix`&&i.existsSync(e.path)&&i.unlinkSync(e.path)}catch{}let c=a??(n?e.dirname(n):r?e.dirname(r):null);if(c&&i.existsSync(c))try{i.rmdirSync(c)}catch{}}function me(e,n=[],r={}){let i=s(e,n,{cwd:r.cwd,env:r.env,encoding:`utf8`,input:r.input,maxBuffer:r.maxBuffer,stdio:r.stdio??`pipe`,shell:t.platform===`win32`?t.env.SHELL||!0:!1,windowsHide:!0});return{command:e,args:n,status:i.status??0,signal:i.signal??null,stdout:i.stdout??``,stderr:i.stderr??``,error:i.error??null}}function he(e,t=[`--version`],n={}){let r=me(e,t,n);return r.error&&r.error.code===`ENOENT`?{available:!1,detail:`not found`}:r.error?{available:!1,detail:r.error.message}:r.status===0?{available:!0,detail:r.stdout.trim()||r.stderr.trim()||`ok`}:{available:!1,detail:r.stderr.trim()||r.stdout.trim()||`exit ${r.status}`}}function ge(e){return/not found|no running instance|cannot find|does not exist|no such process/i.test(e)}function _e(e,n={}){if(!Number.isFinite(e))return{attempted:!1,delivered:!1,method:null};let r=e,i=n.platform??t.platform,a=n.runCommandImpl??me,o=n.killImpl??t.kill.bind(t);if(i===`win32`){let e=a(`taskkill`,[`/PID`,String(r),`/T`,`/F`],{cwd:n.cwd,env:n.env});if(!e.error&&e.status===0)return{attempted:!0,delivered:!0,method:`taskkill`,result:e};let t=`${e.stderr}\n${e.stdout}`.trim();if(!e.error&&ge(t))return{attempted:!0,delivered:!1,method:`taskkill`,result:e};if(e.error?.code===`ENOENT`)try{return o(r),{attempted:!0,delivered:!0,method:`kill`}}catch(e){if(e?.code===`ESRCH`)return{attempted:!0,delivered:!1,method:`kill`};throw e}throw e.error?e.error:Error(ve(e))}try{return o(-r,`SIGTERM`),{attempted:!0,delivered:!0,method:`process-group`}}catch(e){if(e?.code!==`ESRCH`)try{return o(r,`SIGTERM`),{attempted:!0,delivered:!0,method:`process`}}catch(e){if(e?.code===`ESRCH`)return{attempted:!0,delivered:!1,method:`process`};throw e}return{attempted:!0,delivered:!1,method:`process-group`}}}function ve(e){let t=[`${e.command} ${e.args.join(` `)}`.trim()];e.signal?t.push(`signal=${e.signal}`):t.push(`exit=${e.status}`);let n=(e.stderr||``).trim(),r=(e.stdout||``).trim();return n?t.push(n):r&&t.push(r),t.join(`: `)}function ye(e){return new Promise(n=>{let r=o(e,t.argv.slice(1),{env:t.env,shell:!1,stdio:`inherit`}),i=()=>r.kill(`SIGINT`),a=()=>r.kill(`SIGTERM`);t.once(`SIGINT`,i),t.once(`SIGTERM`,a);let s=e=>{t.off(`SIGINT`,i),t.off(`SIGTERM`,a),n(e)};r.once(`error`,e=>s({error:e,status:null,signal:null})),r.once(`close`,(e,t)=>s({status:e,signal:t}))})}const be=-32001,xe=`coder/notice`,Se=`coder/appServerExited`,Ce=`broker/recycle`;function we(){let e=me(`codex`,[`--version`]),t=/(\d+\.\d+\.\d+(?:-[\w.]+)?)/.exec(`${e.stdout} ${e.stderr}`);return t?t[1]:`0.144.1`}function Te(){return{title:`Coder`,name:`coder`,version:we()}}const Ee={experimentalApi:!1,requestAttestation:!1,optOutNotificationMethods:[`item/agentMessage/delta`,`item/reasoning/summaryTextDelta`,`item/reasoning/summaryPartAdded`,`item/reasoning/textDelta`]};function De(e,t,n){return n===void 0?{code:e,message:t}:{code:e,message:t,data:n}}function Oe(e,t){let n=Error(e);return n.data=t,t?.code!==void 0&&(n.rpcCode=t.code),n}var ke=class{cwd;options;pending;nextId;stderr;closed;exitError;notificationHandler;serverRequestHandler;noticeHandler;lineBuffer;transport;exitPromise;exitResolved;resolveExit;handleServerRequest;constructor(e,t={}){this.cwd=e,this.options=t,this.pending=new Map,this.nextId=1,this.stderr=``,this.closed=!1,this.exitError=null,this.notificationHandler=null,this.serverRequestHandler=null,this.noticeHandler=null,this.lineBuffer=``,this.transport=`unknown`,this.handleServerRequest=e=>this.defaultHandleServerRequest(e),this.exitPromise=new Promise(e=>{this.resolveExit=e})}setNotificationHandler(e){this.notificationHandler=e}setServerRequestHandler(e){this.serverRequestHandler=e}setNoticeHandler(e){this.noticeHandler=e}request(e,t){if(this.closed)throw Error(`codex app-server client is closed.`);if(this.exitResolved)return Promise.reject(this.exitError??Error(`codex app-server connection closed.`));let n=this.nextId;return this.nextId+=1,new Promise((r,i)=>{this.pending.set(n,{resolve:r,reject:i,method:e}),this.sendMessage({id:n,method:e,params:t})})}notify(e,t={}){this.closed||this.sendMessage({method:e,params:t})}handleChunk(e){this.lineBuffer+=e;let t=this.lineBuffer.indexOf(`
|
|
3
|
-
`);for(;t!==-1;){let e=this.lineBuffer.slice(0,t);this.lineBuffer=this.lineBuffer.slice(t+1),this.handleLine(e),t=this.lineBuffer.indexOf(`
|
|
4
|
-
`)}}handleLine(e){if(!e.trim())return;let t;try{t=JSON.parse(e)}catch(t){this.handleExit(Oe(`Failed to parse codex app-server JSONL: ${t instanceof Error?t.message:String(t)}`,{line:e}));return}if(t.id!==void 0&&t.method){this.handleServerRequest(t);return}if(t.id!==void 0){let e=this.pending.get(t.id);if(!e)return;this.pending.delete(t.id),t.error?e.reject(Oe(t.error.message??`codex app-server ${e.method} failed.`,t.error)):e.resolve(t.result??{});return}if(t.method===`coder/notice`){this.noticeHandler?.(String(t.params?.message??``));return}if(t.method===`coder/appServerExited`){this.handleExit(Oe(String(t.params?.message??`codex app-server exited.`)));return}t.method&&this.notificationHandler&&this.notificationHandler(t)}defaultHandleServerRequest(e){let t=this.serverRequestHandler;if(!t){this.sendMessage({id:e.id,error:De(-32601,`Unsupported server request: ${e.method}`)});return}Promise.resolve().then(()=>t(e.method,e.params??{})).then(t=>{this.sendMessage({id:e.id,result:t??{}})}).catch(t=>{this.sendMessage({id:e.id,error:De(-32e3,t instanceof Error?t.message:String(t))})})}handleExit(e){if(!this.exitResolved){this.exitResolved=!0,this.exitError=e??null;for(let e of this.pending.values())e.reject(this.exitError??Error(`codex app-server connection closed.`));this.pending.clear(),this.resolveExit(void 0)}}sendMessage(e){throw Error(`sendMessage must be implemented by subclasses.`)}},Ae=class extends ke{proc;readline;constructor(e,t={}){super(e,t),this.transport=`direct`}async initialize(){let e=this.options.networkAccess??!1;this.proc=o(`codex`,je(e,this.options.nativeMcp),{cwd:this.cwd,env:this.options.env??t.env,stdio:[`pipe`,`pipe`,`pipe`],shell:t.platform===`win32`?t.env.SHELL||!0:!1,windowsHide:!0});let n=this.proc.stdout,r=this.proc.stderr;if(!n||!r)throw Error(`codex app-server did not expose stdio streams.`);n.setEncoding(`utf8`),r.setEncoding(`utf8`),r.on(`data`,e=>{this.stderr+=e}),this.proc.on(`error`,e=>{this.handleExit(e)}),this.proc.stdin?.on(`error`,()=>{}),this.proc.on(`exit`,(e,t)=>{let n=this.stderr.trim(),r=e===0?null:Oe(`codex app-server exited unexpectedly (${t?`signal ${t}`:`exit ${e}`}).${n?`\n${n}`:``}`);this.handleExit(r)}),this.readline=f.createInterface({input:n}),this.readline.on(`line`,e=>{this.handleLine(e)}),await this.request(`initialize`,{clientInfo:this.options.clientInfo??Te(),capabilities:this.options.capabilities??Ee}),this.notify(`initialized`,{})}async close(){if(this.closed){await this.exitPromise;return}this.closed=!0,this.readline&&this.readline.close(),this.proc&&!this.proc.killed&&(this.proc.stdin?.end(),setTimeout(()=>{if(this.proc&&!this.proc.killed&&this.proc.exitCode===null)if(t.platform===`win32`)try{_e(this.proc.pid)}catch{}else this.proc.kill(`SIGTERM`)},50).unref?.()),await this.exitPromise}sendMessage(e){let t=`${JSON.stringify(e)}\n`,n=this.proc?.stdin;if(!n)throw Error(`codex app-server stdin is not available.`);n.write(t)}};function je(e,t=!1){return[`-c`,`sandbox_workspace_write.network_access=${e}`,`app-server`,...t?[]:[`--disable`,`plugins`,`--disable`,`apps`]]}var Me=class extends ke{endpoint;socket;constructor(e,t={}){super(e,t),this.transport=`broker`,this.endpoint=t.brokerEndpoint}async initialize(){await new Promise((e,t)=>{let n=x(this.endpoint);this.socket=d.createConnection({path:n.path}),this.socket.setEncoding(`utf8`),this.socket.on(`connect`,e),this.socket.on(`data`,e=>{this.handleChunk(e)}),this.socket.on(`error`,e=>{this.exitResolved||t(e),this.handleExit(e)}),this.socket.on(`close`,()=>{this.handleExit(this.exitError)})}),await this.request(`initialize`,{clientInfo:this.options.clientInfo??Te(),capabilities:this.options.capabilities??Ee}),this.notify(`initialized`,{})}async close(){if(this.closed){await this.exitPromise;return}this.closed=!0,this.socket&&this.socket.end(),await this.exitPromise}sendMessage(e){let t=`${JSON.stringify(e)}\n`,n=this.socket;if(!n)throw Error(`codex app-server broker connection is not connected.`);n.write(t)}},Ne=class{static async connect(e,n={}){let r=n.networkAccess??!1,i=null;!n.disableBroker&&!n.nativeMcp&&(i=n.brokerEndpoint??n.env?.CODER_APP_SERVER_ENDPOINT??t.env.CODER_APP_SERVER_ENDPOINT??null,!i&&n.reuseExistingBroker&&(i=ce(e,r)?.endpoint??null),!i&&!n.reuseExistingBroker&&(i=(await fe(e,{env:n.env,networkAccess:r}))?.endpoint??null));let a=i?new Me(e,{...n,brokerEndpoint:i}):new Ae(e,n);return await a.initialize(),a}};async function Pe(e,t,n){for(let r of[!1,!0]){if(!ce(e,r))continue;let i=null;try{return i=await Ne.connect(e,{networkAccess:r,reuseExistingBroker:!0}),await i.request(t,{threadId:n}),!0}catch{}finally{await i?.close().catch(()=>{})}}return!1}function Fe(e){try{let t=o(`codex`,e,{detached:!0,stdio:`ignore`});t.on(`error`,()=>{}),t.unref()}catch{}}async function Ie(e,t){await Pe(e,`thread/archive`,t)||Fe([`archive`,t])}function Le(t){let n=e.join(process.env.CODEX_HOME||e.join(u.homedir(),`.codex`),`archived_sessions`);try{return i.readdirSync(n).some(e=>e.endsWith(`-${t}.jsonl`))}catch{return!1}}function Re(e){return new Promise(t=>{try{let n=o(`codex`,[`unarchive`,e],{stdio:`ignore`});n.on(`error`,()=>t(!1)),n.on(`close`,e=>t(e===0))}catch{t(!1)}})}async function ze(e,t){return await Pe(e,`thread/delete`,t)?!0:s(`codex`,[`delete`,`--force`,t],{encoding:`utf8`}).status===0}const Be=[`completed`,`failed`,`cancelled`],Ve=[`queued`,`running`],He=/^[a-z0-9][a-z0-9_-]*$/i;function Ue(e){return He.test(e)}function We(e,t){if(!Ue(e))throw Error(`Invalid ${t} "${e}".`)}function D(...t){return e.join(e.resolve(process.env.CODER_HOME||e.join(u.homedir(),`.coder`)),...t)}function O(...t){let n=u.homedir(),r=u.platform(),i=process.env.CODER_CACHE_HOME||(r===`darwin`?e.join(n,`Library`,`Caches`,`wular-coder`):r===`win32`?e.join(process.env.LOCALAPPDATA||e.join(n,`AppData`,`Local`),`wular-coder`,`cache`):e.join(process.env.XDG_CACHE_HOME||e.join(n,`.cache`),`wular-coder`));return e.join(e.resolve(i),...t)}function Ge(){return D()}function Ke(t){return t?e.join(t,`flows`):D(`state`,`global`,`flows`)}function qe(){return O(`flows-archived`)}function Je(){return O(`usage.json`)}function Ye(e=Je()){return`${e}.${process.pid}.${l()}.tmp`}function Xe(){return O(`runner`,`usage.json`)}function k(e){try{return a(`git`,[`rev-parse`,`--show-toplevel`],{cwd:e,encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()}catch{return e}}const Ze=`global`;function A(e){return D(`state`,Ze)}function Qe(){let t=D(`state`),n=[];try{n=i.readdirSync(t,{withFileTypes:!0})}catch{}return n.filter(e=>e.isDirectory()&&e.name!==Ze).map(n=>e.join(t,n.name))}function j(t){return e.join(A(t),`jobs`)}const $e=18e5,et=(e,t=Date.now())=>t-e>$e;function M(e){return O(`archive`)}function N(t,n){We(n,`task id`);let r=e.join(j(t),n);if(i.existsSync(e.join(r,`job.json`)))return r;let a=e.join(M(t),n);if(i.existsSync(e.join(a,`job.json`)))return a;for(let t of Qe()){let r=e.join(t,`jobs`,n);if(i.existsSync(e.join(r,`job.json`)))return r}return r}function tt(e,t,n={}){return t.archived&&(n.auto||!t.autoArchived)?t:t.archived?P(e,t.id,{autoArchived:void 0}):P(e,t.id,{archived:!0,archivedAt:new Date().toISOString(),...n.auto?{autoArchived:!0}:{}},{touch:!n.auto})}function nt(t,n,r={}){if(Ve.includes(n.status))return tt(t,n,r);let i=N(t,n.id),a=e.join(M(t),n.id);i!==a&&g(i,a);let o=tt(t,n,r);return n.engine!==`claude`&&n.threadId&&Ie(t,n.threadId),o}function rt(e){return!!e.archived&&(e.resumedAt??``)>(e.archivedAt??``)}function it(t,n){let r=N(t,n.id),i=e.join(j(t),n.id);return r!==i&&g(r,i),P(t,n.id,{archived:void 0,archivedAt:void 0,autoArchived:void 0})}function at(){let e=Math.random().toString(36).slice(2,8);return`task-${Date.now().toString(36)}-${e}`}function P(t,n,r,a={}){let o=N(t,n);i.mkdirSync(o,{recursive:!0});let s=e.join(o,`job.json`),c=F(t,n)??{id:n,createdAt:new Date().toISOString(),status:`queued`},l={...c,...r,updatedAt:a.touch===!1?c.updatedAt:new Date().toISOString()};return i.writeFileSync(s,`${JSON.stringify(l,null,2)}\n`,`utf8`),l}function ot(e){return e.agent&&(e.engine=e.agent),delete e.agent,e}function F(t,n){if(!Ue(n))return null;let r=e.join(N(t,n),`job.json`);if(!i.existsSync(r))return null;try{return ot(JSON.parse(i.readFileSync(r,`utf8`)))}catch{return null}}function st(e,t){let n=N(e,t);return i.existsSync(n)?(i.rmSync(n,{recursive:!0,force:!0}),!0):!1}function ct(e){if(!e)return!1;try{return process.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function lt(e){try{let t=a(`ps`,[`-o`,`lstart=`,`-p`,String(e)],{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`],env:{...process.env,TZ:Intl.DateTimeFormat().resolvedOptions().timeZone}}).trim(),n=t?Date.parse(t):NaN;return Number.isFinite(n)?n:null}catch{return null}}function ut(e,t,n){if(!ct(e))return!1;let r=n(e),i=Date.parse(t.resumedAt??t.createdAt??``);return r===null||!Number.isFinite(i)||r<=i+6e4}function I(e,t,n=lt){if(t.status!==`running`&&t.status!==`queued`)return t;let r;if(t.pid)r=!ut(t.pid,t,n);else{let e=Date.parse(t.updatedAt??t.createdAt??``);r=Number.isFinite(e)&&Date.now()-e>6e4}return r?P(e,t.id,{status:`failed`,error:`worker exited without finishing`,completedAt:new Date().toISOString()}):t}function dt(t,n){let r=[];for(let a of t){let t=[];try{t=i.readdirSync(a)}catch{continue}for(let o of t){if(n.has(o))continue;let t=e.join(a,o,`job.json`);try{let e=ot(JSON.parse(i.readFileSync(t,`utf8`)));n.add(o),r.push(e)}catch{}}}return r}async function*ft(t){let n=await i.promises.readdir(e.dirname(A(t)),{withFileTypes:!0}).catch(()=>[]),r=[{dir:j(t),archived:!1},{dir:M(t),archived:!0},...n.filter(e=>e.isDirectory()&&e.name!==Ze).map(n=>({dir:e.join(e.dirname(A(t)),n.name,`jobs`),archived:!1}))];for(let{dir:t,archived:n}of r){let r=await i.promises.readdir(t,{withFileTypes:!0}).catch(()=>[]);for(let i of r)i.isDirectory()&&Ue(i.name)&&(yield{id:i.name,dir:e.join(t,i.name),archived:n})}}const pt=(e,t)=>String(t.updatedAt??``).localeCompare(String(e.updatedAt??``));function mt(){let e=new Map;return t=>(e.has(t)||e.set(t,lt(t)),e.get(t))}function ht(t){let n=mt(),r=[j(t),...Qe().map(t=>e.join(t,`jobs`))],i=[];for(let e of dt(r,new Set)){let r=I(t,e,n);r.archived&&!rt(r)?nt(t,r,{auto:!0}):i.push(r.archived?it(t,r):r)}return i.sort(pt)}function gt(e,t,n=!1){if(t.status===`queued`)return!0;let r=t.generation??0;if(n&&!r)return!1;let i=F(e,t.task.id);return i?r?t.startedAt===void 0||(Date.parse(i.resumedAt??``)||0)<t.startedAt:!1:!0}function _t(t){let n=m(e.join(A(t),`runner`,`task.json`))??{},r=e=>e===void 0?void 0:new Date(e).toISOString();return Object.values(n).map(({value:e})=>e).filter(e=>gt(t,e)).map(e=>{let t=e.status===`waiting`?`running`:e.status,n=e.archivedAt??(Be.includes(t)&&et(e.finishedAt??e.updatedAt)?e.finishedAt??e.updatedAt:void 0);return{id:e.task.id,status:t,...e.task.name?{name:e.task.name}:{},...e.task.prompt?{prompt:e.task.prompt}:{},...e.task.cwd?{cwd:e.task.cwd}:{},...e.task.agent?{agentId:e.task.agent}:{},source:e.task.source??`dashboard`,...e.error?{error:e.error}:{},createdAt:r(e.createdAt),updatedAt:r(e.updatedAt),...e.finishedAt?{completedAt:r(e.finishedAt)}:{},...n===void 0?{}:{archived:!0,archivedAt:r(n)}}})}function vt(t,n){let r=mt(),i=n?.migrate??!0,a=new Set,o=[];for(let e of dt([M(t)],a))rt(e)?i&&it(t,I(t,e,r)):o.push(I(t,e,r));let s=[j(t),...Qe().map(t=>e.join(t,`jobs`))];for(let e of dt(s,a))if(e.archived&&!rt(e)){let n=I(t,e,r);o.push(i?nt(t,n,{auto:!0}):n)}return o.sort(pt)}function yt(e,t){let n=vt(e),r=[...ht(e),...n].sort(pt);if(!t)return r[0]??null;let i=r.find(e=>e.id===t);if(i)return i;let a=r.filter(e=>e.id.startsWith(t));if(a.length===1)return a[0];if(a.length>1)throw Error(`Task reference "${t}" is ambiguous. Use a longer id.`);return null}function bt(t,n){let r=N(t,n);try{i.mkdirSync(r,{recursive:!0}),i.writeFileSync(e.join(r,`heartbeat`),``,`utf8`)}catch{}}function xt(t,n){let r=N(t,n.id),a=Date.parse(n.updatedAt??``)||0;for(let t of[`log.jsonl`,`heartbeat`])try{a=Math.max(a,i.statSync(e.join(r,t)).mtimeMs)}catch{}return a?new Date(a).toISOString():void 0}async function St(e,t,n=400){let r=t;for(;!Be.includes(r.status);)await new Promise(e=>setTimeout(e,n)),r=I(e,F(e,r.id)??r);return r}const Ct=`steer-queue.jsonl`;function wt(t,n,r){let a=N(t,n);i.mkdirSync(a,{recursive:!0}),i.appendFileSync(e.join(a,Ct),`${JSON.stringify({at:new Date().toISOString(),text:r})}\n`,`utf8`)}function Tt(t,n){let r=N(t,n),a=e.join(r,Ct),o=e.join(r,`steer-claim-${process.pid}-${Date.now()}.tmp`);try{i.renameSync(a,o)}catch{return[]}try{return i.readFileSync(o,`utf8`).split(/\r?\n/).filter(Boolean).map(e=>{try{return String(JSON.parse(e).text??``)}catch{return``}}).filter(Boolean)}finally{try{i.unlinkSync(o)}catch{}}}function Et(t,n,r){let a=N(t,n);i.mkdirSync(a,{recursive:!0}),i.appendFileSync(e.join(a,`log.jsonl`),`${JSON.stringify({at:new Date().toISOString(),...r})}\n`,`utf8`)}function Dt(t,n){let r=e.join(N(t,n),`results.jsonl`);return i.existsSync(r)?i.readFileSync(r,`utf8`).split(/\r?\n/).filter(Boolean).flatMap(e=>{try{return[JSON.parse(e)]}catch{return[]}}):[]}function Ot(e,t){if(t<=0)return[];let n=0;for(let r=e.length-1;r>=0;--r)if(e[r]?.kind!==`usage`&&(n+=1)===t)return e.slice(r);return e}function kt(t,n,r=40){let a=e.join(N(t,n),`log.jsonl`);return i.existsSync(a)?i.readFileSync(a,`utf8`).split(/\r?\n/).filter(Boolean).slice(-r).map(e=>{try{return JSON.parse(e)}catch{return{message:e}}}):[]}function At(e){return[e.engine??`-`,e.model,e.model?e.effort:null].filter(Boolean).join(`/`)}function jt(e){let t=Date.parse(e??``);return Number.isFinite(t)?Math.max(0,Date.now()-t):0}const Mt=6e5;var L=class extends Error{code;hint;taskId;payload;approval;result;runId;status;constructor(e,t,n={}){super(t),this.name=`CoderError`,this.code=e,Object.assign(this,n)}};const R={chain:[`codex`,`claude`],engines:{codex:{model:`gpt-6.1-sol`,effort:`high`,permissions:`auto`},claude:{model:`opus`,effort:`medium`,permissions:`auto`}},models:{},approvals:{escalationTimeoutMs:12e4,allowedNetworkHosts:[]}},Nt=e=>e===`failed`?0:e===`completed`?3:e===`cancelled`?2:1,Pt=(e,t)=>e.rank-t.rank||t.createdAt-e.createdAt||(t.id<e.id?-1:+(t.id>e.id)),z={luna:`gpt-6-luna`,sol:`gpt-6.1-sol`,astra:`gpt-6-astra`},Ft=new Set([`low`,`medium`,`high`]),B={sonnet:`sonnet`,opus:`opus`,fable:`fable`},V=new Set([`low`,`medium`,`high`]),It={"read-only":{sandbox:`read-only`,approvalPolicy:`never`,approvalMode:null},"workspace-write":{sandbox:`workspace-write`,approvalPolicy:`never`,approvalMode:null},auto:{sandbox:`workspace-write`,approvalPolicy:`on-request`,approvalMode:`auto`}},Lt={"read-only":[`--permission-mode`,`dontAsk`,`--disallowedTools`,`Edit`,`Write`,`NotebookEdit`],"workspace-write":[`--permission-mode`,`acceptEdits`],auto:[`--permission-mode`,`auto`]},Rt=[`--permission-mode`,`dontAsk`,`--disallowedTools`,`Edit`,`Write`,`NotebookEdit`,`Bash`,`WebFetch`,`WebSearch`,`Task`],zt=/failIfUnavailable|sandbox\b[^.\n]*?(?:failed|could ?n[o']t|cannot|unavailable|not available|not supported)/i,Bt=new Set([`localhost`,`127.0.0.1`,`::1`,`[::1]`]);function Vt(e){return e.flatMap(e=>d.isIPv6(e)?[`[${e}]`]:e.startsWith(`[`)||e.includes(`:`)||d.isIP(e)?[e]:[e,`*.${e}`])}function Ht(e,t,n=[],r=[],i=[]){let a=e===`read-only`?r:[...r,...i],o=a.length?{permissions:{additionalDirectories:a}}:{};return JSON.stringify(e===`read-only`?{...o,sandbox:{enabled:!0,failIfUnavailable:!0,autoAllowBashIfSandboxed:!0,filesystem:{denyWrite:[t,...r],...i.length?{allowWrite:i}:{}}}}:{...o,sandbox:{enabled:!0,autoAllowBashIfSandboxed:!0,...e===`auto`&&n.length?{network:{allowedDomains:Vt(n),...n.some(e=>Bt.has(e))?{allowLocalBinding:!0}:{}}}:{}}})}const Ut=r.enum([`codex`,`claude`]),Wt=r.enum([`codex`,`claude`,`custom`]),Gt=r.enum([`low`,`medium`,`high`]),Kt=r.enum([`read-only`,`workspace-write`,`auto`]),qt=r.partial(r.strictObject({model:r.string().check(r.minLength(1)),effort:Gt,permissions:Kt})),Jt=r.partial(r.strictObject({model:r.string().check(r.minLength(1)),effort:Gt,permissions:Kt,network:r.boolean()})),Yt=r.strictObject({baseUrl:r.url(),model:r.string().check(r.minLength(1)),envKey:r.optional(r.string().check(r.minLength(1))),wireApi:r.optional(r.enum([`chat`,`responses`])),disabled:r.optional(r.boolean())}),Xt=r.strictObject({provider:Ut,model:r.string().check(r.minLength(1)),effort:r.optional(Gt),disabled:r.optional(r.boolean())}),Zt=r.strictObject({disabled:r.boolean()}),Qt=r.union([Yt,Xt,Zt]),$t=r.strictObject({escalationTimeoutMs:r.number().check(r.positive()),allowedNetworkHosts:r.array(r.string())}),en=r.enum([`observe`,`comment`,`write`]),tn=r.string().check(r.regex(/^[a-z0-9][a-z0-9_-]*$/i,`agent or flow name`)),nn=r.strictObject({allowedTools:r.optional(r.union([en,r.array(r.string())])),allowedEvents:r.optional(r.array(r.string()))}),rn=r.union([r.boolean(),r.strictObject({engine:r.optional(r.string()),model:r.optional(r.string()),effort:r.optional(Gt),permissions:r.optional(Kt),runner:r.optional(r.enum([`local`,`local-docker`,`vercel-sandbox`,`github-actions`])),integrations:r.optional(r.record(r.string(),nn))})]),an=r.strictObject({command:r.optional(r.string().check(r.minLength(1))),args:r.optional(r.array(r.string())),env:r.optional(r.record(r.string(),r.string())),url:r.optional(r.string().check(r.minLength(1))),type:r.optional(r.enum([`stdio`,`http`,`sse`])),headers:r.optional(r.record(r.string(),r.string())),tools:r.optional(r.array(r.string())),description:r.optional(r.string())}).check(r.refine(e=>!!e.command!=!!e.url,`one of command or url`)),on=r.strictObject({chain:r.array(Wt).check(r.minLength(1)),engines:r.partial(r.strictObject({codex:Jt,claude:qt,custom:qt})),models:r.optional(r.record(r.string().check(r.regex(/^[a-z0-9][a-z0-9./_-]*$/i,`model name`)),Qt)),agents:r.optional(r.record(tn,rn)),mcp:r.optional(r.record(tn,an)),approvals:$t}),sn=r.partial(r.extend(on,{approvals:r.partial($t)}));function H(e){return`baseUrl`in e}function cn(e){return`provider`in e}function ln(e,t){return t??e===`auto`}const un=/^(?!-)[a-z0-9-]{1,63}(?<!-)(?:\.(?!-)[a-z0-9-]{1,63}(?<!-))*(?::\d{1,5})?$/i;function dn(e){if(d.isIP(e))return!0;let t=/^\[([^\]]+)\](?::\d{1,5})?$/.exec(e);return t?d.isIPv6(t[1]):e.length<=253&&un.test(e)}function fn(e,t){delete e.models?.[t];for(let n of Object.values(e.engines??{}))n?.model===t&&delete n.model}function U(e){let t=Object.keys(e?.agents??{}).filter(e=>[`codex`,`claude`,`custom`].includes(e));if(t.length)return t.map(e=>`agents.${e}: engine defaults moved to engines.${e}`);let n=sn.safeParse(e);if(!n.success)return n.error.issues.map(e=>`${e.path.join(`.`)||`config`}: ${e.message}`);let r=W(R,n.data),i=[];for(let[e,t]of(n.data.approvals?.allowedNetworkHosts??[]).entries())dn(t)||i.push(`approvals.allowedNetworkHosts.${e}: "${t}" is not a host name or IP address`);for(let[e,t]of Object.entries(n.data.models??{})){if(e===`codex`||e===`claude`||e===`custom`){i.push(`models.${e}: reserved engine name`);continue}if(cn(t)){let n=r.models?.[t.model];n&&!H(n)&&i.push(`models.${e}: alias target "${t.model}" is itself a config entry`)}}return i}function pn(e){if(!i.existsSync(e))return null;try{return JSON.parse(i.readFileSync(e,`utf8`))}catch(t){let n=t instanceof Error?t.message:String(t);throw Error(`Invalid JSON in ${e}: ${n}`)}}function mn(e){return W(R,e)}function W(e,t){if(!t||typeof t!=`object`||Array.isArray(t))return t??e;let n={...e},r=e;for(let[e,i]of Object.entries(t))n[e]=i&&typeof i==`object`&&!Array.isArray(i)&&r?.[e]&&typeof r[e]==`object`?W(r[e],i):i;return n}function G(){return D(`config.json`)}const hn=[`coder.config.json`,`coder.json`];function K(t){let n=e.join(t,`.coder`,`config.json`);if(i.existsSync(n))return n;for(let r of hn){let a=e.join(t,r);if(i.existsSync(a)){i.mkdirSync(e.dirname(n),{recursive:!0}),i.renameSync(a,n),process.stderr.write(`coder: moved ${r} to .coder/config.json\n`);break}}return n}const gn=`CODER_WORKSPACE_CONFIG`;function _n(e,t){let n=t.approvals?.allowedNetworkHosts?.filter(t=>e.approvals.allowedNetworkHosts.includes(t)),r=Object.fromEntries(Object.entries(t.engines??{}).map(([e,t])=>[e,{...t?.model?{model:t.model}:{},...t?.effort?{effort:t.effort}:{}}])),i=Object.entries(t.models??{}).filter(([,e])=>e.disabled===!0);return{...t.chain?{chain:t.chain.filter(t=>e.chain.includes(t))}:{},engines:r,models:Object.fromEntries(i.map(([e])=>[e,{disabled:!0}])),...n?{approvals:{...e.approvals,allowedNetworkHosts:n}}:{}}}function q(e){let t=k(e),n=process.env[gn],r=[[G(),pn(G())],...n?[[`the workspace config`,JSON.parse(n)]]:[]],i=K(t);r.push([i,pn(i)]);let a=R;for(let[e,t]of r){if(!t)continue;let r=U(t);if(r.length)throw Error(`Invalid config in ${e}:\n ${r.join(`
|
|
5
|
-
`)}`);a=W(a,n&&e===i?_n(a,t):t)}let o=U(a);if(o.length)throw Error(`Invalid merged config:\n ${o.join(`
|
|
6
|
-
`)}`);return a}function vn(e){return e.replace(/\/+$/,``).replace(/\/(chat\/completions|completions|responses)$/,``)}function yn(e,t,n){let r=[K(k(e)),G()];for(let e of r){let r;try{r=pn(e)}catch{continue}if(r?.models?.[t])return Object.assign(r.models[t],n),!U(r).length&&(i.writeFileSync(e,`${JSON.stringify(r,null,2)}\n`,`utf8`),!0)}return!1}function bn(e){return/\/(chat\/completions|completions|responses)\/*$/.test(e)}function xn(e,t){let n=vn(e);return bn(e)||/\/v\d+(alpha|beta)?$/.test(n)?[`${n}/${t}`]:[`${n}/${t}`,`${n}/v1/${t}`]}function Sn(e,t,n){let r=t?e.models?.[t]:void 0;if(!t||!r||!H(r))return null;let i=`coder-${t}`;return{model:r.model,modelProvider:i,configOverrides:{[`model_providers.${i}`]:{name:t,base_url:n?.url??vn(r.baseUrl),...r.envKey&&!n?{env_key:r.envKey}:{},wire_api:`responses`}}}}function Cn(e){return e?z[e]??e:null}function wn(e){return e in z||e in B}function Tn(e,t){return!!(t&&e.models?.[t]?.disabled)}function En(e,t){if(Tn(e,t))throw Error(`model "${t}" is disabled in config`)}function Dn(e,t){if(!e)return null;let n=String(e).trim().split(`:`).map(e=>e.trim());if(!n.length||n.length>3||n.some(e=>!e))throw Error(`Invalid engine spec "${e}".`);let r=null,i=null,a=null,o=e=>Ft.has(e)||V.has(e);for(let t of n)if(t===`codex`||t===`claude`||t===`custom`){if(r)throw Error(`Invalid engine spec "${e}".`);r=t}else if(o(t)&&!a)a=t;else if(!i)i=t;else throw Error(`Invalid engine spec "${e}".`);let s=i?t.models?.[i]:void 0;if(s&&cn(s)){if(s.disabled)throw Error(`model "${i}" is disabled in config`);if(r&&r!==s.provider)throw Error(`Alias "${i}" runs on ${s.provider}, not ${r}.`);r=s.provider,a=a??s.effort??null,i=s.model}r||=i&&i in B?`claude`:i&&s&&H(s)?`custom`:`codex`;let c=t.engines[r]??{},l=i??c.model??null;return En(t,l),{engine:r,model:l,effort:a??c.effort??null}}function On(t){let n=G();return i.mkdirSync(e.dirname(n),{recursive:!0}),i.writeFileSync(n,`${JSON.stringify(t,null,2)}\n`,`utf8`),n}function kn(e,t){return t.split(`.`).reduce((e,t)=>e?.[t],e)}function An(e,t){return t?K(k(e)):G()}function jn(e,t){let n=q(e);return t?kn(n,t):n}function Mn(e,t,n,r={}){let i=An(e,r.workspace);Nn(i,e=>{let i=t.split(`.`),a=i.at(-1),o=e;for(let e of i.slice(0,-1))(typeof o[e]!=`object`||o[e]===null)&&(o[e]={}),o=o[e];r.unset?delete o[a]:o[a]=n});let a=kn(q(e),t)??null;return{file:i,key:t,...r.unset?{unset:!0}:{value:n},effective:a}}function Nn(t,n){let r=i.existsSync(t)?JSON.parse(i.readFileSync(t,`utf8`)):{};n(r),r.models&&Object.keys(r.models).length===0&&delete r.models;let a=U(r);if(a.length)throw Error(`Refusing to write invalid config:\n ${a.join(`
|
|
7
|
-
`)}`);i.mkdirSync(e.dirname(t),{recursive:!0}),i.writeFileSync(t,`${JSON.stringify(r,null,2)}\n`,`utf8`)}function Pn(e,t){return t?G():K(k(e))}function Fn(e,t){let n={};for(let r of(e??``).split(`,`).map(e=>e.trim()).filter(Boolean)){let e=r.indexOf(`=`);if(e<1)throw Error(`Invalid ${t} "${r}": use KEY=VALUE (values may hold \${VAR}).`);n[r.slice(0,e)]=r.slice(e+1)}return n}function In(e,t,n,r){let i=Pn(e,r);return Nn(i,e=>{e.mcp={...e.mcp,[t]:n}}),{name:t,file:i}}function Ln(e,t,n={}){let[r,...i]=n.command??[];if(!t)throw Error(`Usage: coder mcp add <name> [--tools a,b] [--user] (--url <url> [--header K=V] | -- <command> [args...])`);if(!r&&!n.url)throw Error("Give a remote --url, or a command after `--`.");if(r&&n.url)throw Error(`Use either --url or a command, not both.`);let a=n.tools?{tools:n.tools.split(`,`).map(e=>e.trim()).filter(Boolean)}:{},o=Fn(n.env,`--env`),s=Fn(n.header,`--header`);return In(e,t,n.url?{url:n.url,...n.transport?{type:n.transport}:{},...Object.keys(s).length?{headers:s}:{},...a}:{command:r,...i.length?{args:i}:{},...Object.keys(o).length?{env:o}:{},...a},n.user)}function Rn(e,t,n,r={}){if(!t||!n)throw Error(`Usage: coder mcp add-json <name> '<json entry>' [--user]`);let i=n;if(typeof n==`string`)try{i=JSON.parse(n)}catch(e){throw Error(`Invalid JSON: ${e instanceof Error?e.message:String(e)}`)}if(!i||typeof i!=`object`||Array.isArray(i))throw Error(`The entry must be a JSON object.`);return In(e,t,i,r.user)}function zn(e){return q(e).mcp??{}}function Bn(e,t,n={}){if(!t)throw Error(`Usage: coder mcp rm <name> [--user]`);let r=Pn(e,n.user);return Nn(r,e=>{if(!e.mcp?.[t])throw Error(`No MCP server "${t}" in ${r}.`);delete e.mcp[t],Object.keys(e.mcp).length||delete e.mcp}),{name:t,file:r}}const Vn=/access token could not be refreshed/i,Hn=/model is not supported|Codex cannot run model/i;function Un(e){return e instanceof Error?e.message:String(e??``)}function J(e){return Vn.test(e??``)}function Wn(e){return Hn.test(e??``)}function Gn(e,t){return!Wn(e)||/Codex cannot run model/.test(e??``)?null:`Codex cannot run model ${/'([^']+)' model/.exec(e??``)?.[1]??t??`this model`} on the signed-in account. Run \`codex login\` with an account that has it, or pick another alias (coder model list).`}function Kn(t=process.env){return e.join(t.CODEX_HOME||e.join(u.homedir(),`.codex`),`auth.json`)}function qn(e){try{let t=JSON.parse(Buffer.from(String(e).split(`.`)[1]??``,`base64url`).toString(`utf8`));return String(t.sub??t.email??``)}catch{return``}}function Jn(e=process.env,t){let n=Kn(e),r;try{r=i.statSync(n).mtimeMs}catch{return``}if(t?.file===n&&t.mtimeMs===r)return t.fingerprint??``;try{let e=JSON.parse(i.readFileSync(n,`utf8`)),a=e.OPENAI_API_KEY?c(`sha256`).update(String(e.OPENAI_API_KEY)).digest(`hex`):``,o=[e.auth_mode??``,e.tokens?.account_id??``,qn(e.tokens?.id_token),a].join(`|`);return t&&Object.assign(t,{file:n,mtimeMs:r,fingerprint:o}),o}catch{return t?.file===n?t.fingerprint??``:``}}const Yn=`CODER_MAILBOX`,Xn=/^([a-f0-9-]{36})\.(?:req|applying)\.json$/;function Zn(e){if(!e)return l();if(!e.task||!Number.isInteger(e.generation)||e.generation<0||!Number.isInteger(e.seq)||e.seq<0)throw Error(`Invalid command key`);let t=c(`sha256`).update(JSON.stringify([e.task,e.generation,e.seq])).digest(`hex`).slice(0,32);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}const Qn=[`hint`,`taskId`,`payload`,`approval`,`result`,`runId`,`status`];function $n(e=t.env){return e.CODER_MAILBOX||void 0}function er(e,t){let n=`${e}.${l()}.tmp`;i.writeFileSync(n,JSON.stringify(t),{encoding:`utf8`,flag:`wx`}),i.renameSync(n,e)}async function tr(t,n,r={}){let a=r.dir??$n();if(!a)throw Error(`No mailbox: not inside an agent task.`);let o=r.id??l(),s=e.join(a,`${o}.res.json`);i.existsSync(s)||er(e.join(a,`${o}.req.json`),{kind:t,payload:n});let c=Date.now();for(;!i.existsSync(s);){if(r.timeoutMs&&Date.now()-c>=r.timeoutMs)throw Error(`Worker control timed out`);await new Promise(e=>setTimeout(e,100))}let{result:u,error:d}=JSON.parse(i.readFileSync(s,`utf8`));if(r.keepReply||i.rmSync(s,{force:!0}),d){let{code:e,message:t,...n}=d;throw new L(e,t,n)}return u}function nr(t,n){i.mkdirSync(t,{recursive:!0});let r=new Set,a=async(a,o)=>{let s;try{let r=e.join(t,a);if(!i.lstatSync(r).isFile())throw Error(`mailbox request is not a regular file`);let{kind:c,payload:l}=JSON.parse(i.readFileSync(r,`utf8`)),u=e.join(t,`${o}.applying.json`);i.existsSync(u)||er(u,{kind:c,payload:l});let d=Object.hasOwn(n,c)?n[c]:void 0;if(!d)throw Error(`unknown mailbox request "${c}"`);s={result:await d(l??{})??null}}catch(e){let t=e instanceof L?e:void 0;s={error:{code:t?.code??`invalid-option`,message:e instanceof Error?e.message:String(e),...Object.fromEntries(Qn.flatMap(e=>t?.[e]===void 0?[]:[[e,t[e]]]))}}}try{er(e.join(t,`${o}.res.json`),s),i.rmSync(e.join(t,`${o}.req.json`),{force:!0}),i.rmSync(e.join(t,`${o}.applying.json`),{force:!0}),r.delete(o)}catch{}},o=setInterval(()=>{let n=[];try{n=i.readdirSync(t)}catch{return}for(let o of n){let n=Xn.exec(o)?.[1];if(n){if(i.existsSync(e.join(t,`${n}.res.json`))){i.rmSync(e.join(t,o),{force:!0});continue}r.has(n)||(r.add(n),a(o,n))}}},100);return()=>clearInterval(o)}function rr(t,n){return n.agentId?e.join(N(t,n.id),`mailbox`):null}function ir(e,t){let n=`${e}.${process.pid}.${l()}.tmp`;i.writeFileSync(n,`${JSON.stringify(t)}\n`,`utf8`),i.renameSync(n,e)}function ar(e){let t=e instanceof Error?e.message:String(e);return/no active turn|active turn.*(?:ended|completed)|turn.*(?:already )?(?:ended|completed)|turn.*not active/i.test(t)}function Y(e,t,n){return Object.assign(Error(e),{retryable:t,...n===void 0?{}:{rpcCode:n}})}function or(e,t,n,r){if(!e||e.id!==t||e.method!==`turn/steer`&&e.method!==`turn/interrupt`)throw Y(`Invalid Codex control request.`,!1);let i=e.params;if(!i||typeof i!=`object`||i.threadId!==n)throw Y(`Codex control request does not match its owning thread.`,!1);if(e.method===`turn/interrupt`){if(i.turnId!==r)throw Y(`Codex turn/interrupt request does not match its owning active turn.`,!1);return{method:e.method,params:i}}if(i.expectedTurnId!==r)throw Y(`Codex turn/steer request does not match its owning active turn.`,!1);let a=i.input;if(!Array.isArray(a)||a.length!==1||a[0]?.type!==`text`||typeof a[0]?.text!=`string`||!a[0].text.trim())throw Y(`Invalid Codex turn/steer input schema.`,!1);return{method:e.method,params:i}}async function sr(t,{threadId:n,turnId:r}){let a=i.mkdtempSync(e.join(u.tmpdir(),`coder-codex-control-`)),o=`file:${a}`,s=new Set,c=new Set,l=!1,d=!1,f=(o=!1)=>{if(!(l&&!o||d)){d=!0;try{for(let o of i.readdirSync(a).filter(e=>e.endsWith(`.request.json`))){let u=o.slice(0,-13),d=e.join(a,o),f=e.join(a,`${u}.response.json`);if(i.existsSync(f)){i.unlinkSync(d);continue}if(c.has(u))continue;let p=`${d}.${process.pid}.processing`;try{i.renameSync(d,p)}catch{continue}c.add(u);let m=(async()=>{let e;try{if(l)throw Y(`Codex owner endpoint is shutting down.`,!0);let a=or(JSON.parse(i.readFileSync(p,`utf8`)),u,n,r);try{let n=await t.request(a.method,a.params);e={id:u,result:n}}catch(t){let n=t;e={id:u,error:{message:t instanceof Error?t.message:String(t),retryable:ar(t),...n.rpcCode===void 0?{}:{rpcCode:n.rpcCode}}}}}catch(t){let n=t;e={id:u,error:{message:n.message,retryable:n.retryable===!0,...n.rpcCode===void 0?{}:{rpcCode:n.rpcCode}}}}try{ir(f,e)}finally{c.delete(u);try{i.unlinkSync(p)}catch{}}})();s.add(m),m.then(()=>s.delete(m),()=>s.delete(m))}}catch{}finally{d=!1}}},p=setInterval(f,10);return p.unref?.(),{endpoint:o,async close(){l||(l=!0,clearInterval(p),f(!0),await Promise.allSettled([...s]),await new Promise(e=>setTimeout(e,50)),i.rmSync(a,{recursive:!0,force:!0}))}}}function cr(t){if(t?.startsWith(`file:`)&&t.length>5){let n=e.resolve(t.slice(5)),r=e.resolve(u.tmpdir());e.dirname(n)===r&&e.basename(n).startsWith(`coder-codex-control-`)&&i.rmSync(n,{recursive:!0,force:!0})}}async function lr(t,n,r,a=3e3,o){if(!t)return{ok:!1,retryable:!0,detail:`Codex owner endpoint is not ready.`};if(!t.startsWith(`file:`)||t.length===5)return{ok:!1,retryable:!1,detail:`Unsupported Codex control endpoint: ${t}`};let s=t.slice(5);if(!i.existsSync(s))return{ok:!1,retryable:!0,detail:`Codex owner endpoint is no longer available.`};let c=Zn(o),l=e.join(s,`${c}.request.json`),u=e.join(s,`${c}.response.json`);try{i.existsSync(u)||ir(l,{id:c,method:n,params:r,command:o})}catch(e){return{ok:!1,retryable:e.code===`ENOENT`,detail:e instanceof Error?e.message:String(e)}}let d=Date.now();for(;Date.now()-d<a;){try{let e=JSON.parse(i.readFileSync(u,`utf8`));try{(!o||e?.error?.retryable)&&i.unlinkSync(u)}catch{}return e?.id===c?e?.error?{ok:!1,retryable:e.error.retryable===!0,detail:String(e.error.message??`Malformed Codex owner error response.`)}:`result`in e?{ok:!0,retryable:!1,result:e.result,detail:`Codex owner accepted control.`}:{ok:!1,retryable:!1,detail:`Malformed Codex owner response.`}:{ok:!1,retryable:!1,detail:`Malformed Codex owner response id.`}}catch(e){if(e.code!==`ENOENT`)return{ok:!1,retryable:!1,detail:`Invalid Codex owner response: ${e instanceof Error?e.message:String(e)}`};if(!i.existsSync(s))return{ok:!1,retryable:!1,detail:`Codex owner endpoint closed after control publication; acceptance is unknown.`}}await new Promise(e=>setTimeout(e,10))}return{ok:!1,retryable:!1,detail:`Timed out waiting for Codex owner acknowledgement.`}}const ur=`Coder Task`;function dr(e,t=72){let n=String(e??``).trim().replace(/\s+/g,` `);return n?n.length<=t?n:`${n.slice(0,t-3)}...`:``}function fr(e){let t=dr(e,56);return t?`${ur}: ${t}`:ur}function pr(e){return e?.params?.threadId??null}function mr(e){return e?.params?.turnId?e.params.turnId:e?.params?.turn?.id?e.params.turn.id:null}function hr(e){let t=new Set;for(let n of e)for(let e of n.changes??[])e.path&&t.add(e.path);return[...t]}function gr(e,t){let n=[];for(let r of e.matchAll(/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/gm)){let e=t===`delete`,i=Number(e?r[1]:r[3]),a=Number((e?r[2]:r[4])??1);!Number.isFinite(i)||!Number.isFinite(a)||n.push(a<=1?`L${i}`:`L${i}-L${i+a-1}`)}return n}function _r(e){try{let t=i.readFileSync(e,`utf8`),n=t?t.split(/\r\n|\r|\n/).length-+!!t.endsWith(`
|
|
8
|
-
`):0;return n>0?[n===1?`L1`:`L1-L${n}`]:[]}catch{return[]}}function vr(e,t,n){let r=typeof e.kind==`string`?e.kind:e.kind?.type??`change`,i=e.path||`(unknown path)`,a=gr(e.diff??``,r),o=a.length||r!==`add`||!t?a:_r(i),s=typeof e.kind==`object`&&e.kind?.move_path?` -> ${n?p(n,e.kind.move_path):e.kind.move_path}`:``;return`${r} ${n?p(n,i):i}${s}${o.length?` ${o.join(`, `)}`:``}`}function yr(e,t=!1,n){return(e.changes??[]).map(e=>vr(e,t,n)).join(`; `)}function br(e){let t=e.trim().split(` `)[0]??``;return t===`/dev/null`?``:t.replace(/^[ab]\//,``)}function xr(e,t){let n=new Map,r=``,i=``;for(let t of e.split(/\r?\n/)){if(t.startsWith(`--- `)){r=br(t.slice(4));continue}if(t.startsWith(`+++ `)){i=br(t.slice(4));continue}let e=/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/.exec(t);if(!e)continue;let a=Number(e[1]),o=Number(e[2]??1),s=Number(e[3]),c=Number(e[4]??1),l=c===0,u=(l?r:i)||i||r||`(unknown path)`,d=l?a:s,f=l?o:c,p=f<=1?`L${d}`:`L${d}-L${d+f-1}`,m=n.get(u)??[];m.push(p),n.set(u,m)}return[...n].map(([e,n])=>`${t?p(t,e):e} ${n.join(`, `)}`).join(`; `)}function Sr(e){if(!e||typeof e!=`object`)return null;let t=e=>typeof e==`number`&&Number.isFinite(e)?e:0,n=t(e.inputTokens),r=t(e.cachedInputTokens),i=t(e.outputTokens);return{input:n,cachedInput:r,output:i,total:t(e.totalTokens)||n+r+i}}function Cr(e){if(e.tokenUsageByThread.size===0)return null;let t={input:0,cachedInput:0,output:0,total:0};for(let n of e.tokenUsageByThread.values())t.input+=n.input,t.cachedInput+=n.cachedInput,t.output+=n.output,t.total+=n.total;return t}function wr(e){return String(e??``).replace(/\s+/g,` `).trim()}function X(e){if(!e)return[];if(typeof e==`string`){let t=wr(e);return t?[t]:[]}if(Array.isArray(e))return e.flatMap(e=>X(e));if(typeof e==`object`){let t=e;if(typeof t.text==`string`)return X(t.text);if(`summary`in t)return X(t.summary);if(`content`in t)return X(t.content);if(`parts`in t)return X(t.parts)}return[]}function Tr(e,t){let n=[];for(let r of[...e,...t]){let e=wr(r);!e||n.includes(e)||n.push(e)}return n}function Z(e,t,n=null,r={}){!e||t==null||e({message:t,phase:n,...r})}function Er(e,t){t&&Z(e,t.message,t.phase??null,t.extra??{})}function Dr(e){return e.replace(/^\/(?:usr\/)?bin\/\w*sh\s+-l?c\s+/,``)}function Or(e,t){let n=e?.extra?.kind;return!e||n!==`tool`&&n!==`tool-result`||typeof t.id!=`string`?e:{...e,extra:{...e.extra,callId:t.id}}}function kr(e,t){switch(e.type){case`commandExecution`:return{message:Dr(String(e.command??``).trim()),phase:`running`,extra:{kind:`tool`,tool:`command`}};case`fileChange`:return null;case`mcpToolCall`:return{message:`${e.server}/${e.tool}`,phase:`investigating`,extra:{kind:`tool`,tool:String(e.tool??``)}};case`dynamicToolCall`:return{message:String(e.tool??``),phase:`investigating`,extra:{kind:`tool`,tool:String(e.tool??``)}};case`webSearch`:return{message:`search: ${String(e.query??``).trim()}`,phase:`investigating`,extra:{kind:`tool`,tool:`search`}};default:return null}}function Ar(e,t){switch(e.type){case`agentMessage`:{let t=String(e.text??``).trim();return t?{message:t,phase:null,extra:{kind:`assistant`}}:null}case`reasoning`:{let t=X(e.summary).join(`
|
|
9
|
-
`);return t?{message:t,phase:null,extra:{kind:`reasoning`}}:null}case`commandExecution`:{let t=typeof e.exitCode==`number`?e.exitCode:null;return{message:String(e.aggregatedOutput??``).trim(),phase:`running`,extra:{kind:`tool-result`,tool:`command`,command:String(e.command??``).trim(),...t===null?{isError:e.status!==`completed`}:{exitCode:t}}}}case`fileChange`:return{message:yr(e,!0,t)||`(details unavailable)`,phase:`editing`,extra:{kind:`tool`,tool:`edit`}};case`mcpToolCall`:return{message:`${e.server}/${e.tool} ${e.status}`,phase:`investigating`,extra:{kind:`tool-result`,isError:e.status!==`completed`}};case`dynamicToolCall`:return{message:`${e.tool} ${e.status}`,phase:`investigating`,extra:{kind:`tool-result`,isError:e.status!==`completed`}};default:return null}}function jr(e,t={}){let n,r,i=new Promise((e,t)=>{n=e,r=t});return{threadId:e,rootThreadId:e,threadIds:new Set([e]),threadTurnIds:new Map,turnId:null,bufferedNotifications:[],completion:i,resolveCompletion:n,rejectCompletion:r,finalTurn:null,completed:!1,finalAnswerSeen:!1,pendingCollaborations:new Set,activeSubagentTurns:new Set,completionTimer:null,lastAgentMessage:``,reasoningSummary:[],error:null,fileChanges:[],commandExecutions:[],tokenUsageByThread:new Map,lastDiffSummary:``,loggedTokens:0,reportedChanges:new Set,cwd:t.cwd??``,itemIndex:new Map,onProgress:t.onProgress??null,onHeartbeat:t.onHeartbeat??null}}function Mr(e){e.completionTimer&&=(clearTimeout(e.completionTimer),null)}function Nr(e,t=null){e.completed||(Mr(e),e.completed=!0,t?(e.finalTurn=t,e.turnId||=t.id??null):e.finalTurn||={id:e.turnId??`inferred-turn`,status:`completed`},e.resolveCompletion(e))}function Pr(e){e.completed||e.finalTurn||!e.finalAnswerSeen||e.pendingCollaborations.size>0||e.activeSubagentTurns.size>0||(Mr(e),e.completionTimer=setTimeout(()=>{e.completionTimer=null,!(e.completed||e.finalTurn||!e.finalAnswerSeen)&&(e.pendingCollaborations.size>0||e.activeSubagentTurns.size>0||Nr(e,null))},250),e.completionTimer.unref?.())}function Fr(e,t){let n=pr(t);if(!n||!e.threadIds.has(n))return!1;let r=e.threadTurnIds.get(n)??null,i=mr(t);return r===null||i===null||i===r}function Ir(e,t,n,r=null){if(t.id&&e.itemIndex.set(t.id,t),t.type===`collabAgentToolCall`){(!r||r===e.threadId)&&(n===`started`||t.status===`inProgress`?e.pendingCollaborations.add(t.id):n===`completed`&&(e.pendingCollaborations.delete(t.id),Pr(e)));for(let n of t.receiverThreadIds??[])e.threadIds.add(n)}if(t.type===`agentMessage`){t.text&&(!r||r===e.threadId)&&(e.lastAgentMessage=t.text.trim(),n===`completed`&&t.phase===`final_answer`&&(e.finalAnswerSeen=!0,Pr(e)));return}if(t.type===`reasoning`&&n===`completed`){e.reasoningSummary=Tr(e.reasoningSummary,X(t.summary));return}if(t.type===`fileChange`&&n===`completed`){e.fileChanges.push(t);return}t.type===`commandExecution`&&n===`completed`&&e.commandExecutions.push(t)}function Lr(e,t){switch(e.onHeartbeat?.(),t.method){case`thread/started`:e.threadIds.add(t.params.thread.id);break;case`turn/started`:e.threadIds.add(t.params.threadId),e.threadTurnIds.set(t.params.threadId,t.params.turn.id),(t.params.threadId??null)!==e.threadId&&e.activeSubagentTurns.add(t.params.threadId),Z(e.onProgress,`Turn started (${t.params.turn.id}).`,`starting`,{kind:`status`,threadId:t.params.threadId??null,turnId:t.params.turn.id??null});break;case`item/started`:Ir(e,t.params.item,`started`,t.params.threadId??null),Er(e.onProgress,Or(kr(t.params.item,e.cwd),t.params.item));break;case`item/completed`:{Ir(e,t.params.item,`completed`,t.params.threadId??null);let n=t.params.item;if(n?.type===`fileChange`)for(let t of n.changes??[])t.path&&e.reportedChanges.add(p(e.cwd,t.path));Er(e.onProgress,Or(Ar(n,e.cwd),n));break}case`thread/tokenUsage/updated`:{let n=Sr(t.params?.tokenUsage?.total??t.params?.tokenUsage),r=pr(t);if(n&&r){e.tokenUsageByThread.set(r,n);let t=Cr(e);t&&(!e.loggedTokens||t.total-e.loggedTokens>=1e3)&&(e.loggedTokens=t.total,e.onProgress?.({kind:`usage`,tokens:t}))}break}case`turn/diff/updated`:{let n=xr(String(t.params?.diff??``),e.cwd).split(`; `).filter(t=>!e.reportedChanges.has(t.split(` `)[0]??``)).join(`; `);n&&n!==e.lastDiffSummary&&(e.lastDiffSummary=n,Z(e.onProgress,`changed: ${n}`,`editing`,{kind:`status`}));break}case`item/autoApprovalReview/completed`:{let n=t.params?.review??{},r=t.params?.action??{},i=Dr(String(r.command??r.type??``).trim());Z(e.onProgress,`Auto-review ${n.status}. ${dr(i,48)}${n.rationale?`. ${dr(n.rationale,320)}`:``}`,null,{kind:`auto-review`,decision:String(n.status??``),...n.riskLevel?{riskLevel:String(n.riskLevel)}:{},...i?{summary:`run command: ${i}`}:{},...n.rationale?{reason:String(n.rationale)}:{}});break}case`error`:e.error=t.params.error,Z(e.onProgress,`Codex error: ${t.params.error.message}`,`failed`,{kind:`error`});break;case`turn/completed`:if((t.params.threadId??null)!==e.threadId){e.activeSubagentTurns.delete(t.params.threadId),Pr(e);break}Z(e.onProgress,`Turn ${t.params.turn.status}.`,`finalizing`,{kind:`status`}),Nr(e,t.params.turn)}}async function Rr(e,t,n,r={}){let i=jr(t,r),a=e.notificationHandler;e.setNotificationHandler(e=>{if(!i.turnId){i.bufferedNotifications.push(e);return}if(e.method===`thread/started`){Lr(i,e);return}if(!Fr(i,e)){a?.(e);return}Lr(i,e)});let o=r.onApprovalRequest;o&&e.setServerRequestHandler((e,t)=>o(e,t,i));try{let t=await n();i.turnId=t.turn?.id??null,i.turnId&&(i.threadTurnIds.set(i.threadId,i.turnId),await r.onTurnStarted?.(i.turnId));for(let e of i.bufferedNotifications)Fr(i,e)?Lr(i,e):a?.(e);i.bufferedNotifications.length=0,t.turn?.status&&t.turn.status!==`inProgress`&&Nr(i,t.turn);let o=e.exitPromise?.then(()=>{throw e.exitError??Error(`codex app-server connection closed before the turn completed.`)});return await(o?Promise.race([i.completion,o]):i.completion)}finally{Mr(i),e.setNotificationHandler(a??null),e.setServerRequestHandler(null)}}function zr(e,t,n=[]){return e!==`workspace-write`||!n.length?null:{type:`workspaceWrite`,writableRoots:n,networkAccess:t??!1}}const Br=`coder_read_only`;function Vr(e,t=[]){return(e??`read-only`)!==`read-only`||!t.length?null:{default_permissions:Br,[`permissions.${Br}`]:{extends:`:read-only`,filesystem:Object.fromEntries(t.map(e=>[e,`write`]))}}}function Hr(e=[],t=[],n=!1){let r={};!n&&t.length&&(r.mcp_servers=Object.fromEntries(t.map(e=>[e,{enabled:!1}])));let i=new Set([...t,...e.map(e=>e.name)]);for(let n of e){let e=n.name;if(t.includes(e)){for(let t=1;i.has(e);t++)e=`${n.name}_coder_${t}`;i.add(e)}r[`mcp_servers.${e}`]={...n.url?{url:n.url,...n.headers?{http_headers:n.headers}:{}}:{command:n.command,args:n.args??[],...n.env?{env:n.env}:{}},...n.tools?.length?{enabled_tools:n.tools}:{}}}return r}function Ur(e){return e.split(/\r?\n/).map(e=>e.trimEnd()).filter(e=>e&&!e.startsWith(`WARNING: proceeding, even though we could not update PATH:`)).join(`
|
|
10
|
-
`)}async function Wr(e,t,n={}){let r=n.connect??Ne.connect,i={...n.networkAccess===void 0?{}:{networkAccess:n.networkAccess},nativeMcp:n.nativeMcp??!1},a=null;try{a=await r(e,i);let n=await t(a);return await a.close(),n}catch(n){let o=n,s=a?.transport===`broker`||!!process.env.CODER_APP_SERVER_ENDPOINT,c=a?.transport===`broker`&&o?.rpcCode===-32001||s&&(o?.code===`ENOENT`||o?.code===`ECONNREFUSED`);if(a&&=(await a.close().catch(()=>{}),null),!c)throw n;let l=await r(e,{...i,disableBroker:!0});try{return await t(l)}finally{await l.close()}}}function Q(t){let n=process.env.CODEX_AUTH_JSON;if(n){let t=e.join(u.homedir(),`.codex`),r=e.join(t,`auth.json`);if(!i.existsSync(r)){i.mkdirSync(t,{recursive:!0,mode:448});try{i.writeFileSync(r,n,{encoding:`utf8`,flag:`wx`,mode:384})}catch(e){if(e.code!==`EEXIST`)throw e}}}let r=he(`codex`,[`--version`],{cwd:t});if(!r.available)return r;let a=he(`codex`,[`app-server`,`--help`],{cwd:t});return a.available?{available:!0,detail:`${r.detail}; app-server runtime available`}:{available:!1,detail:`${r.detail}; app-server runtime unavailable: ${a.detail}`}}async function Gr(e){let t=Q(e);if(!t.available)return{available:!1,loggedIn:!1,detail:t.detail};let n=null;try{n=await Ne.connect(e,{reuseExistingBroker:!0});let t=await n.request(`account/read`,{refreshToken:!1}),r=t?.account??null;return r?.type===`chatgpt`?{available:!0,loggedIn:!0,detail:r.email?`ChatGPT login active for ${r.email}`:`ChatGPT login active`}:r?.type===`apiKey`?{available:!0,loggedIn:!0,detail:`API key configured`}:t?.requiresOpenaiAuth===!1?{available:!0,loggedIn:!0,detail:`Active provider does not require OpenAI authentication`}:{available:!0,loggedIn:!1,detail:"Not authenticated. Run `codex login`."}}catch(e){let t=s(`codex`,[`login`,`status`],{encoding:`utf8`}),n=`${t.stdout??``}${t.stderr??``}`.trim();return t.status===0?{available:!0,loggedIn:!0,detail:n||`Logged in`}:{available:!0,loggedIn:!1,detail:n||(e instanceof Error?e.message:String(e))}}finally{await n?.close().catch(()=>{})}}async function Kr(e,{endpoint:t,threadId:n,turnId:r}){if(!n||!r)return{interrupted:!1,detail:`missing threadId or turnId`};let i=await lr(t,`turn/interrupt`,{threadId:n,turnId:r});return i.ok?{interrupted:!0,detail:`Interrupted ${r} on ${n}.`}:{interrupted:!1,detail:i.detail}}async function qr(e,{endpoint:t,threadId:n,turnId:r,text:i,command:a}){if(!n)return{steered:!1,retryable:!0,detail:`missing active threadId`};if(!r)return{steered:!1,retryable:!0,detail:`missing active turnId`};let o=i.trim();if(!o)return{steered:!1,retryable:!1,detail:`empty follow-up`};let s=await lr(t,`turn/steer`,{threadId:n,input:[{type:`text`,text:o,text_elements:[]}],expectedTurnId:r},3e3,a);return s.ok?s.result?.turnId===r?{steered:!0,retryable:!1,detail:`Steered follow-up into ${r} on ${n}.`}:{steered:!1,retryable:!1,detail:`turn/steer returned unexpected turnId ${String(s.result?.turnId??`(missing)`)}; expected ${r}`}:{steered:!1,retryable:s.retryable,detail:s.detail}}async function Jr(e,t={},n={}){let r=Q(e);if(!r.available)throw Error(`Codex CLI is not available: ${r.detail}`);let i=t.prompt?.trim();if(!i)throw Error(`A prompt is required.`);let a=Vr(t.sandbox,t.writableRoots),o=a?{}:{sandbox:t.sandbox??`read-only`},s={...t.configOverrides??{},...a},c=Object.keys(s).length?s:null,l=zr(t.sandbox,t.networkAccess,t.writableRoots),u=async n=>{let r=null,a,s=await n.request(`config/read`,{cwd:e,includeLayers:!1}),u={...c,...Hr(t.mcpServers,Object.keys(s.config?.mcp_servers??{}),t.nativeMcp),...t.nativeMcp?{}:{"features.apps":!1,"features.plugins":!1}};if(t.resumeThreadId)Z(t.onProgress,`Resuming thread ${t.resumeThreadId}.`,`starting`,{kind:`status`}),Le(t.resumeThreadId)&&await Re(t.resumeThreadId),a=(await n.request(`thread/resume`,{threadId:t.resumeThreadId,cwd:e,model:t.model??null,modelProvider:t.modelProvider??null,config:u,approvalPolicy:t.approvalPolicy??`never`,...o,...t.approvalsReviewer?{approvalsReviewer:t.approvalsReviewer}:{}})).thread.id;else if(Z(t.onProgress,`Starting Codex task thread.`,`starting`,{kind:`status`}),a=(await n.request(`thread/start`,{cwd:e,model:t.model??null,modelProvider:t.modelProvider??null,config:u,approvalPolicy:t.approvalPolicy??`never`,...o,...t.approvalsReviewer?{approvalsReviewer:t.approvalsReviewer}:{},serviceName:`coder_runtime`,ephemeral:t.ephemeral??!1})).thread.id,!(t.ephemeral??!1))try{await n.request(`thread/name/set`,{threadId:a,name:fr(i)})}catch(e){let t=String(e?.message??e??``);if(!t.includes(`unknown variant`)&&!t.includes(`unknown method`))throw e}Z(t.onProgress,`Thread ready (${a}).`,`starting`,{kind:`status`,threadId:a});let d;try{d=await Rr(n,a,()=>n.request(`turn/start`,{threadId:a,input:[{type:`text`,text:i,text_elements:[]}],model:t.model??null,effort:t.effort??null,outputSchema:t.outputSchema??null,...l?{sandboxPolicy:l}:{}}),{cwd:e,onProgress:t.onProgress,onHeartbeat:t.onHeartbeat,onApprovalRequest:t.onApprovalRequest,onTurnStarted:t.onControlReady?async e=>{r=await sr(n,{threadId:a,turnId:e}),t.onControlReady?.(r.endpoint,a,e)}:void 0}),t.onResult?.({status:d.finalTurn?.status===`completed`?0:1,threadId:a,turnId:d.turnId,finalMessage:d.lastAgentMessage,error:d.error??null})}finally{await r?.close()}return{status:d.finalTurn?.status===`completed`?0:1,threadId:a,turnId:d.turnId,finalMessage:d.lastAgentMessage,reasoningSummary:d.reasoningSummary,turn:d.finalTurn,error:d.error??d.finalTurn?.error??null,stderr:Ur(n.stderr),fileChanges:d.fileChanges,touchedFiles:hr(d.fileChanges),tokens:Cr(d),model:t.model??null,commandExecutions:d.commandExecutions}},d=async e=>{e.setNoticeHandler?.(e=>Z(t.onProgress,e,`starting`,{kind:`status`}));try{let t=await u(e);return J(t.error?.message)&&await Yr(e),t}catch(t){throw J(Un(t))&&await Yr(e),t}},f=()=>Wr(e,d,{...n,networkAccess:t.networkAccess,nativeMcp:t.nativeMcp}),p=!1,m=()=>(p=!0,Z(t.onProgress,`Codex login changed; restarted the Codex app-server and retrying the turn once.`,`starting`,{kind:`status`}),f());try{let e=await f().catch(e=>{if(!J(Un(e)))throw e;return m()}),n=!e.touchedFiles?.length&&!e.commandExecutions.length;!p&&n&&J(e.error?.message)&&(e=await m());let r=Gn(e.error?.message,t.model);return r?{...e,error:{...e.error,message:r}}:e}catch(e){let n=Gn(Un(e),t.model);throw n?Error(n):e}}async function Yr(e){e.transport===`broker`&&await e.request(Ce,{}).catch(()=>{})}const Xr=new Set([`Write`,`Edit`,`MultiEdit`,`NotebookEdit`]);function Zr(e){return typeof e==`string`?e:Array.isArray(e)?e.map(e=>typeof e?.text==`string`?e.text:``).join(``):e==null?``:JSON.stringify(e)}function Qr(e){if(!e)return 0;let t=e.split(/\r\n|\r|\n/);return t.at(-1)===``&&t.pop(),Math.max(1,t.length)}function $r(e,t,n=!1){if(!t)return[];let r;try{r=i.readFileSync(e,`utf8`)}catch{return[]}let a=[],o=0;for(;o<=r.length;){let e=r.indexOf(t,o);if(e<0)break;let i=Qr(r.slice(0,e))+1,s=Math.max(1,Qr(t));if(a.push(s===1?`L${i}`:`L${i}-L${i+s-1}`),!n)break;o=e+Math.max(t.length,1)}return a.length>4?[...a.slice(0,4),`+${a.length-4} matches`]:a}function ei(e){let t=(typeof e==`string`?e:JSON.stringify(e)??String(e)).replace(/\s+/g,` `).trim();return t.length>80?`${t.slice(0,80)}…`:t}function ti(t,n,r){let i=String(n.file_path??n.notebook_path??n.path??``),a=i?e.isAbsolute(i)?i:e.resolve(r,i):``,o=i?p(r,a)||i:`(unknown path)`,s=n.path?` in ${p(r,String(n.path))}`:``;if(t===`Write`){let e=Qr(String(n.content??``));return`Write ${o} ${e?`L1-L${e}`:`(empty file)`}`}if(t===`Edit`){let e=$r(a,String(n.old_string??``),n.replace_all===!0);return`Edit ${o}${e.length?` ${e.join(`, `)}`:``}`}if(t===`MultiEdit`){let e=Array.isArray(n.edits)?n.edits:[],t=e.flatMap(e=>$r(a,String(e?.old_string??``),e?.replace_all===!0));return`MultiEdit ${o}${t.length?` ${t.join(`, `)}`:``} (${e.length} edits)`}if(t===`NotebookEdit`){let e=n.cell_id??n.cell_number;return`NotebookEdit ${o}${e==null?``:` cell ${e}`}`}if(t===`Read`){let e=Number(n.offset??0),t=Number(n.limit??0);return`Read ${o}${e&&t?` L${e}-L${e+t-1}`:e?` from L${e}`:``}`}if(t===`Bash`)return`Bash ${String(n.command??``).trim()||`(no command)`}`;if(t===`Glob`)return`Glob ${String(n.pattern??``)}${s}`;if(t===`Grep`){let e=n.glob?` (${String(n.glob)})`:``;return`Grep ${String(n.pattern??``)}${s}${e}`}if(t===`Task`)return`Task ${n.subagent_type?`${String(n.subagent_type)}: `:``}${ei(n.description??n.prompt??``)}`;if(t===`WebFetch`)return`WebFetch ${String(n.url??``)}`;if(t===`WebSearch`)return`WebSearch ${String(n.query??``)}`;if(t===`TodoWrite`){let e=Array.isArray(n.todos)?n.todos:[];return`TodoWrite ${e.length} item${e.length===1?``:`s`}`}let c=Object.entries(n??{}).map(([e,t])=>`${e}=${ei(t)}`).join(` `);return c?`${t} ${c}`:t}function ni(e){if(!e||typeof e!=`object`)return null;let t=e=>typeof e==`number`&&Number.isFinite(e)?e:0,n=t(e.input_tokens),r=t(e.cache_read_input_tokens)+t(e.cache_creation_input_tokens),i=t(e.output_tokens);return{input:n,cachedInput:r,output:i,total:n+r+i}}function ri(){let e=s(`claude`,[`--version`],{encoding:`utf8`});return e.error||e.status!==0?{available:!1,detail:`claude CLI not found on PATH (npm install -g @anthropic-ai/claude-code)`}:{available:!0,detail:String(e.stdout||``).trim()}}function ii(){if(t.env.CLAUDE_CODE_OAUTH_TOKEN)return{loggedIn:!0,detail:`CLAUDE_CODE_OAUTH_TOKEN configured`};if(t.env.ANTHROPIC_API_KEY)return{loggedIn:!0,detail:`ANTHROPIC_API_KEY configured`};let e=s(`claude`,[`auth`,`status`,`--json`],{encoding:`utf8`});if(e.error||e.status!==0)return{loggedIn:!1,detail:`not logged in`};try{let t=JSON.parse(String(e.stdout||``));return t.loggedIn?{loggedIn:!0,detail:[t.email,t.subscriptionType].filter(Boolean).join(`, `)||`logged in`}:{loggedIn:!1,detail:`not logged in`}}catch{return{loggedIn:!1,detail:`unknown`}}}function ai(e,n){let r=n.permissions??`auto`,i=n.mcpServers??[],a={};r===`auto`&&n.approvalTaskId&&(a.coder={type:`stdio`,command:t.execPath,args:[w,`mcp`,`serve`,n.approvalTaskId,`--cwd`,e]});for(let e of i)a[e.name]=e.url?{type:e.type??`http`,url:e.url,...e.headers?{headers:e.headers}:{}}:{type:`stdio`,command:e.command,args:e.args??[],...e.env?{env:e.env}:{}};return a}function oi(t,n,r,i){let a=[`-p`,`--input-format`,`stream-json`,`--output-format`,`stream-json`,`--verbose`,`--replay-user-messages`];a.push(n.resumeSessionId?`--resume`:`--session-id`,r),n.model&&a.push(`--model`,n.model),n.effort&&a.push(`--effort`,n.effort),n.outputSchema&&a.push(`--json-schema`,JSON.stringify(n.outputSchema));let o=n.permissions??`auto`,s=n.additionalDirectories??[],c=o===`read-only`?n.readOnlyAllowedTools??[]:[],l=n.mcpServers??[],u=ai(t,n),d=o===`auto`&&n.approvalTaskId,f=l.flatMap(e=>e.tools?.length?e.tools.map(t=>`mcp__${e.name}__${t}`):[`mcp__${e.name}`]),p=Object.keys(u).length?[`--mcp-config`,i??e.join(n.taskRoot??t,`.claude-mcp.json`)]:n.nativeMcp?[]:[`--mcp-config`,`{"mcpServers":{}}`];n.nativeMcp||a.push(`--strict-mcp-config`,`--no-chrome`),d?(a.push(`--permission-mode`,`default`,...p,`--permission-prompt-tool`,`mcp__coder__approval_prompt`),f.length&&a.push(`--allowedTools`,...f)):c.length?a.push(...Rt,...p,`--allowedTools`,...c,...f):(a.push(...Lt[o]??Lt.auto,...p),f.length&&a.push(`--allowedTools`,...f));let m=n.writableDirectories??[];for(let e of[...s,...o===`read-only`?[]:m])a.push(`--add-dir`,e);let h=Ht(o,t,n.allowedNetworkHosts??[],s,m),g={...h?JSON.parse(h):{},...n.nativeMcp?{}:{disableClaudeAiConnectors:!0}};return Object.keys(g).length&&a.push(`--settings`,JSON.stringify(g)),a}function si(e,t){return Object.assign(Error(e),{retryable:t})}function ci(e,t){let n=t&&Zn(t),r=n&&`${n.slice(0,14)}5${n.slice(15,19)}${(Number.parseInt(n[19],16)&3|8).toString(16)}${n.slice(20)}`;return{type:`user`,...r?{uuid:r}:{},message:{role:`user`,content:[{type:`text`,text:e}]}}}function li(e){let t=!0;return{sendInitial(t,n){return new Promise((r,i)=>{e(`${JSON.stringify(ci(t,n))}\n`,e=>{e?i(e):r()})})},sendSteer(n,r){return t?new Promise((t,i)=>{e(`${JSON.stringify(ci(n,r))}\n`,e=>{if(!e){t();return}let n=e.code,r=n===`EPIPE`||n===`ERR_STREAM_DESTROYED`||n===`ERR_STREAM_WRITE_AFTER_END`;i(si(`Failed to write Claude live steer: ${e.message}`,r))})}):Promise.reject(si(`Claude turn is no longer accepting live input.`,!0))},stopAccepting(){t=!1}}}function ui(e,n){let r=`${e}.${t.pid}.${l()}.tmp`;i.writeFileSync(r,`${JSON.stringify(n)}\n`,`utf8`),i.renameSync(r,e)}async function di(n){let r=i.mkdtempSync(e.join(u.tmpdir(),`coder-claude-steer-`)),a=`file:${r}`,o=new Set,s=new Set,c=!1,l=!1,d=(a=!1)=>{if(!(c&&!a||l)){l=!0;try{for(let a of i.readdirSync(r).filter(e=>e.endsWith(`.request.json`))){let c=a.slice(0,-13),l=e.join(r,a),u=e.join(r,`${c}.response.json`);if(i.existsSync(u)){i.unlinkSync(l);continue}if(s.has(c))continue;let d=`${l}.${t.pid}.processing`;try{i.renameSync(l,d)}catch{continue}s.add(c);let f=(async()=>{let e;try{let t=JSON.parse(i.readFileSync(d,`utf8`)),r=typeof t?.params?.text==`string`?t.params.text.trim():``;if(t?.method!==`turn/steer`||!r||t?.id!==c)e={id:c,error:{message:`Invalid Claude steer request.`,retryable:!1}};else try{await n(r,t.command),e={id:c,result:{accepted:!0}}}catch(t){let n=t;e={id:c,error:{message:n.message,retryable:n.retryable===!0}}}}catch(t){e={id:c,error:{message:`Invalid Claude steer JSON: ${t instanceof Error?t.message:String(t)}`,retryable:!1}}}try{ui(u,e)}finally{s.delete(c);try{i.unlinkSync(d)}catch{}}})();o.add(f),f.then(()=>o.delete(f),()=>o.delete(f))}}catch{}finally{l=!1}}},f=setInterval(d,10);return{endpoint:a,async close(){c=!0,clearInterval(f),d(!0),await Promise.allSettled([...o]),await new Promise(e=>setTimeout(e,50)),i.rmSync(r,{recursive:!0,force:!0})}}}async function fi(t,n,r=3e3,a){if(!t)return{steered:!1,retryable:!0,detail:`Claude live steer endpoint is not ready.`};let o=n.trim();if(!o)return{steered:!1,retryable:!1,detail:`empty follow-up`};if(!t.startsWith(`file:`)||t.length===5)return{steered:!1,retryable:!1,detail:`Unsupported Claude steer endpoint: ${t}`};let s=t.slice(5);if(!i.existsSync(s))return{steered:!1,retryable:!0,detail:`Claude live steer endpoint is no longer available.`};let c=Zn(a),l=e.join(s,`${c}.request.json`),u=e.join(s,`${c}.response.json`);try{i.existsSync(u)||ui(l,{id:c,method:`turn/steer`,params:{text:o},command:a})}catch(e){return{steered:!1,retryable:e.code===`ENOENT`,detail:e instanceof Error?e.message:String(e)}}let d=Date.now();for(;Date.now()-d<r;){try{let e=JSON.parse(i.readFileSync(u,`utf8`));try{(!a||e?.error?.retryable)&&i.unlinkSync(u)}catch{}return e?.result?.accepted===!0?{steered:!0,retryable:!1,detail:`Claude accepted the live follow-up.`}:{steered:!1,retryable:e?.error?.retryable===!0,detail:String(e?.error?.message??`Malformed Claude steer response.`)}}catch(e){if(e.code!==`ENOENT`)return{steered:!1,retryable:!1,detail:`Invalid Claude steer response: ${e instanceof Error?e.message:String(e)}`}}await new Promise(e=>setTimeout(e,10))}return{steered:!1,retryable:!1,detail:`Timed out waiting for Claude live steer acknowledgement.`}}async function pi(n,r){let a=r.resumeSessionId??l(),s=ai(n,r),c=Object.keys(s).length?e.join(r.taskRoot??n,`.claude-mcp-${l()}.json`):void 0;c&&(i.mkdirSync(e.dirname(c),{recursive:!0}),i.writeFileSync(c,`${JSON.stringify({mcpServers:s})}\n`,{encoding:`utf8`,flag:`wx`,mode:384}));let u=oi(n,r,a,c),d=()=>{if(c)try{i.unlinkSync(c)}catch{}};return r.onProgress?.({kind:`status`,message:`claude turn started (session ${a})`,threadId:a}),new Promise((s,c)=>{let l=o(r.executable??`claude`,u,{cwd:n,stdio:[`pipe`,`pipe`,`pipe`],...r.env?{env:{...t.env,...r.env}}:{}}),f=``,p=``,m=[],h=null,g=a,_=null,v=!1,y=li((e,t)=>l.stdin.write(e,t)),b=Date.now(),x=new Map,S=0,C=0,w=new Set,T=t=>{if(!(!t||typeof t!=`object`)){if(d(),r.onHeartbeat?.(),t.type===`system`&&t.subtype===`init`&&t.session_id)g=t.session_id;else if(t.type===`assistant`){let i=ni(t.message?.usage);if(i){S+=i.output;let e=i.input+i.cachedInput+S;(!C||e-C>=1e3)&&(C=e,r.onProgress?.({kind:`usage`,tokens:{...i,output:S,total:e},threadId:g}))}for(let i of t.message?.content??[])if(i?.type===`tool_use`){let t=String(i.name??`Tool`);if(i.id&&x.set(String(i.id),{name:t,at:Date.now()}),Xr.has(t)){let t=String(i.input?.file_path??i.input?.notebook_path??``);t&&w.add(e.isAbsolute(t)?t:e.resolve(n,t))}r.onProgress?.({kind:`tool`,tool:t,...i.id?{callId:String(i.id)}:{},message:ti(t,i.input??{},n),threadId:g})}else i?.type===`text`&&typeof i.text==`string`&&i.text.trim()?r.onProgress?.({kind:`assistant`,message:i.text.trim(),threadId:g}):i?.type===`thinking`&&typeof i.thinking==`string`&&i.thinking.trim()&&r.onProgress?.({kind:`reasoning`,message:i.thinking.trim(),durationMs:Math.max(1e3,Date.now()-b),threadId:g})}else if(t.type===`user`){for(let e of t.message?.content??[])if(e?.type===`tool_result`){let t=Zr(e.content).trim(),n=e.is_error===!0,i=e.tool_use_id?x.get(String(e.tool_use_id)):void 0;if(e.tool_use_id&&x.delete(String(e.tool_use_id)),!t&&!n&&!i)continue;r.onProgress?.({kind:`tool-result`,...e.tool_use_id?{callId:String(e.tool_use_id)}:{},...i?{tool:i.name,durationMs:Date.now()-i.at}:{},...n?{isError:!0}:{},message:t||(n?`(tool failed with no output)`:``),threadId:g})}}else t.type===`result`&&(h=t,r.onResult?.({status:+!!t.is_error,threadId:t.session_id??g,finalMessage:t.structured_output===void 0?String(t.result??``).trim():JSON.stringify(t.structured_output),error:t.is_error?{message:String(t.result??``)}:null}),t.session_id&&(g=t.session_id),y.stopAccepting(),l.stdin.end());b=Date.now()}};l.stdout.on(`data`,e=>{f+=e;let t;for(;(t=f.indexOf(`
|
|
11
|
-
`))>=0;){let e=f.slice(0,t).trim();if(f=f.slice(t+1),e)try{T(JSON.parse(e))}catch(e){m.push(`Invalid Claude stream-json output: ${e instanceof Error?e.message:String(e)}`)}}}),l.stderr.on(`data`,e=>{p+=e});let E=()=>{y.stopAccepting(),l.kill(`SIGTERM`),d();let e=_?.endpoint;e?.startsWith(`file:`)&&i.rmSync(e.slice(5),{recursive:!0,force:!0}),t.exit(143)};t.on(`SIGTERM`,E),(async()=>{r.onSteerReady&&(_=await di((e,t)=>y.sendSteer(e,t))),await y.sendInitial(r.prompt,r.command),_&&r.onSteerReady?.(_.endpoint)})().catch(e=>{v||(v=!0,y.stopAccepting(),l.kill(`SIGTERM`),d(),t.removeListener(`SIGTERM`,E),_?.close(),c(e))}),l.on(`error`,e=>{v||(v=!0,y.stopAccepting(),t.removeListener(`SIGTERM`,E),d(),_?.close(),c(Error(`claude spawn failed: ${e.message}`)))}),l.on(`close`,async e=>{if(v)return;v=!0,y.stopAccepting(),t.removeListener(`SIGTERM`,E),d(),await _?.close();let n=f.trim();if(n)try{T(JSON.parse(n))}catch(e){m.push(`Invalid trailing Claude stream-json output: ${e instanceof Error?e.message:String(e)}`)}let i=h?.structured_output===void 0?(h?.result??``).trim():JSON.stringify(h.structured_output),a=e!==0||h?.is_error===!0||h==null||m.length>0;s({status:+!!a,threadId:h?.session_id??g,turnId:null,finalMessage:i,touchedFiles:[...w],tokens:ni(h?.usage),model:h?.modelUsage&&Object.keys(h.modelUsage).join(`+`)||r.model||null,error:a?{message:m[0]||i||p.trim()||`claude exited ${e}`}:null})})})}const $=`@wular/coder`,mi=`https://registry.npmjs.org/${$}/latest`;function hi(){return O(`update-check.json`)}function gi(e,t){let n=String(e).split(`.`).map(e=>parseInt(e,10)||0),r=String(t).split(`.`).map(e=>parseInt(e,10)||0);for(let e=0;e<3;e+=1){if((n[e]??0)>(r[e]??0))return 1;if((n[e]??0)<(r[e]??0))return-1}return 0}function _i(){try{return JSON.parse(i.readFileSync(hi(),`utf8`))}catch{return null}}function vi(e){try{i.mkdirSync(O(),{recursive:!0}),i.writeFileSync(hi(),JSON.stringify(e))}catch{}}function yi(){try{i.rmSync(hi(),{force:!0})}catch{}}function bi(e,n){if(t.env.CODER_NO_UPDATE_CHECK||t.env.CI)return;let r=_i();if(!r?.checkedAt||Date.now()-r.checkedAt>864e5)try{o(t.execPath,[n,`upgrade`,`refresh`],{detached:!0,stdio:`ignore`}).unref()}catch{}return r?.latest&&gi(r.latest,e)>0?r.latest:void 0}async function xi(e){let t=_i()?.latest??null;try{let e=new AbortController,n=setTimeout(()=>e.abort(),3e3),r=await fetch(mi,{signal:e.signal,headers:{accept:`application/json`}});if(clearTimeout(n),r.ok){let e=await r.json();e?.version&&(t=e.version)}}catch{}vi({checkedAt:Date.now(),latest:t,current:e})}function Si(e){let t=e;try{t=i.realpathSync(e)}catch{}let n=t.replace(/\\/g,`/`);return/\/\.bun\//.test(n)?{pm:`bun`,command:[`bun`,`add`,`-g`,`${$}@latest`]}:/\/\.pnpm\//.test(n)||/\/pnpm(-global)?\//i.test(n)||/\/Library\/pnpm\//.test(n)?{pm:`pnpm`,command:[`pnpm`,`add`,`-g`,`${$}@latest`]}:/\/\.config\/yarn\/global\//.test(n)||/\/yarn\/global\//.test(n)||/\/Yarn\/Data\/global\//.test(n)?{pm:`yarn`,command:[`yarn`,`global`,`add`,`${$}@latest`]}:{pm:`npm`,command:[`npm`,`install`,`-g`,`${$}@latest`]}}function Ci(e){s(`claude`,[`plugin`,`marketplace`,`remove`,`coder-plugins`],{encoding:`utf8`});let t=s(`claude`,[`plugin`,`marketplace`,`add`,e],{encoding:`utf8`}),n=s(`claude`,[`plugin`,`install`,`coder@coder-plugins`],{encoding:`utf8`}),r=t.status===0&&n.status===0;return{marketplace:e,installed:r,note:r?`Plugin installed; restart any running Claude Code session to load it.`:`Automatic install failed (${(n.stderr||t.stderr||`claude not found`).trim()}); run: claude plugin marketplace add "${e}" && claude plugin install coder@coder-plugins`}}function wi(){return e.join(u.homedir(),`.agents`,`skills`,`coder`)}function Ti(){try{let t=i.readFileSync(e.join(wi(),`SKILL.md`),`utf8`);return/^\s*version:\s*(\S+)/m.exec(t)?.[1]??null}catch{return null}}function Ei(t){let n=wi();try{let r=e.join(t,`plugins`,`agents`,`skills`,`coder`);i.rmSync(n,{recursive:!0,force:!0}),i.mkdirSync(n,{recursive:!0}),i.cpSync(r,n,{recursive:!0});let a=e.join(n,`SKILL.md`),o=i.readFileSync(a,`utf8`).replace(`
|
|
12
|
-
---
|
|
13
|
-
`,`\nmetadata:\n version: ${T()}\n---\n`);return i.writeFileSync(a,o),{marketplace:n,installed:!0,note:`Skill installed to ~/.agents/skills/coder; restart running sessions to load it.`}}catch(e){return{marketplace:n,installed:!1,note:`Skill install failed: ${e instanceof Error?e.message:String(e)}`}}}function Di(e){if(e.available)return null;let t=s(`npm`,[`install`,`-g`,`@openai/codex@latest`],{encoding:`utf8`});return t.status===0?{installed:!0,note:`codex CLI installed (runs your custom models; no login needed for them)`}:{installed:!1,note:`custom models run on the codex CLI and it is not installed; auto-install failed: ${(t.stderr||`npm not found`).trim()}. Run: npm install -g @openai/codex`}}const Oi={codex:{"gpt-6-astra":`0.154.0`,"gpt-6-sol":`0.156.1`,"gpt-6-luna":`0.156.1`,"gpt-6.1-sol":`0.159.1`},claude:{sonnet:`2.1.197`,fable:`2.1.257`,opus:`2.1.280`}};function ki(e){let t=/(\d+\.\d+\.\d+)/.exec(String(e??``));return t?t[1]:null}function Ai(e,t,n){let r=t?Oi[e][t]:void 0,i=ki(n.detail);return!r||!i||gi(i,r)>=0?null:`${e} ${i} predates ${t} (needs ${r}), so it may fail or run another model. Run: ${e} update`}function ji(e){if(!e.available)return null;let t=ki(e.detail);if(!t||gi(t,`0.159.1`)>=0)return null;let n=s(`codex`,[`update`],{encoding:`utf8`});return n.status!==0&&(n=s(`npm`,[`install`,`-g`,`@openai/codex@latest`],{encoding:`utf8`})),n.status===0?{updated:!0,from:t}:{updated:!1,from:t,note:`codex ${t} is too old for the default codex model (needs >= 0.159.1); auto-update failed: ${(n.stderr||`codex/npm not found`).trim()}. Run: codex update`}}async function Mi(e,t={},r){let a=t.hosts??[],o=a.find(e=>![`claude`,`codex`,`agents`].includes(e));if(o)throw new L(`invalid-option`,`Unknown host "${o}". Use claude, codex, or agents.`,{hint:`Codex, Pi, OpenCode, and other Agent Skills hosts: coder setup-host agents`});let s=e=>t[e]||a.includes(e);r?.();let c=Q(e),l=ji(c);l?.updated&&(c=Q(e));let u=c.available?await Gr(e):{loggedIn:!1,detail:c.detail},d=ri(),f=d.available?ii():{loggedIn:!1,detail:d.detail},p=G();if(!i.existsSync(p)){let e=c.available?[`codex`,`claude`]:d.available?[`claude`,`codex`]:[`codex`,`claude`];On({...R,chain:e})}let m=ee(),h=s(`claude`)?Ci(m):null,g=s(`agents`)||s(`codex`)?Ei(m):null,_=q(e),v=c.available&&u.loggedIn||d.available&&f.loggedIn;return{codex:{available:c.available,detail:c.detail,auth:u.detail,loggedIn:u.loggedIn},...l?{codexUpdate:l}:{},claude:{available:d.available,detail:d.detail,auth:f.detail,loggedIn:f.loggedIn},configFile:p,runtime:n(new URL(`../bin/coder.mjs`,import.meta.url)),...h?{claudePlugin:h}:{},...g?{agentsSkill:g}:{},config:_,ready:v}}async function Ni(t={},n){let r=!t.pluginsOnly,a=!t.cliOnly,o=ee(),c=e.join(o,`plugins/claude/.claude-plugin/plugin.json`),l={cli:T(),claude:E(c)},u={};if(r){let e=Si(w),[r,...i]=t.pm===`npm`?[`npm`,`install`,`-g`,`@wular/coder@latest`]:t.pm===`pnpm`?[`pnpm`,`add`,`-g`,`@wular/coder@latest`]:t.pm===`yarn`?[`yarn`,`global`,`add`,`@wular/coder@latest`]:t.pm===`bun`?[`bun`,`add`,`-g`,`@wular/coder@latest`]:e.command,a=t.pm??e.pm;n?.(`via ${a}`);let o=s(r,i,{encoding:`utf8`});if(o.error?.code===`ENOENT`)throw new L(`invalid-option`,`${a} not found on PATH. Re-run with --pm <npm|pnpm|yarn|bun>, or update manually: ${r} ${i.join(` `)}`);if(o.status!==0){let e=(o.stderr||o.stdout||``).trim();throw new L(`invalid-option`,`CLI update failed (${a}).${e?`\n${e}`:``}\nRun manually: ${r} ${i.join(` `)}`)}yi();let c=T();u.cli={pm:a,from:l.cli,to:c,changed:c!==l.cli}}if(a){if(t.claude||!t.codex&&ri().available){let e=Ci(o);u.claudePlugin={installed:e.installed,note:e.note,from:l.claude,to:E(c)}}if(i.existsSync(wi())){let e=Ti(),t=Ei(o);u.agentsSkill={installed:t.installed,note:t.note,from:e,to:Ti()}}}return u}const Pi=new Set(`commit.checkout.switch.restore.stash.reset.rebase.merge.push.pull.cherry-pick.revert.clean.am.apply.tag.branch.worktree.filter-branch.filter-repo.gc.prune.reflog.remote.submodule.config`.split(`.`)),Fi=[/\bsudo\b/,/\brm\s+(-[a-zA-Z]*r[a-zA-Z]*f|-[a-zA-Z]*f[a-zA-Z]*r)\b.*\s(\/\*?|~\/?|\$HOME\/?)(\s|$)/,/\b(shutdown|reboot|halt|poweroff)\b/,/\bmkfs\b|\bdiskutil\s+erase/i,/\b(chmod|chown)\b.*-R.*\s\/(\s|$)/,/\bkill(all)?\s+-9\s+1\b/,/curl[^|;&]*\|\s*(ba|z|da)?sh\b/,/wget[^|;&]*\|\s*(ba|z|da)?sh\b/,/\blaunchctl\b|\bsystemctl\b/,/\bdefaults\s+write\b/,/>\s*\/dev\/(sd|disk)/],Ii=new Set([`status`,`log`,`diff`,`show`,`blame`,`rev-parse`,`ls-files`,`ls-tree`,`cat-file`,`describe`,`shortlog`,`grep`,`branch`,`stash`]);function Li(e){return e.match(/^\s*(?:ba|z|da)?sh\s+(?:-[a-zA-Z]+\s+)*(?:-c\s+)?(["'])([\s\S]*)\1\s*$/)?.[2]??e}function Ri(e){return e.trim().split(/\s+/).filter(Boolean)}function zi(e){let t=e.find((e,t)=>t>0&&!e.startsWith(`-`));if(!t)return{decision:`accept`,reason:`bare git`};if(t===`branch`&&e.some(e=>/^-(d|D|m|M|c|C|f|u)|^--(delete|move|copy|force|set-upstream)/.test(e)))return{decision:`decline`,reason:`git branch write operation (git is read-only for Coder)`};if(t===`stash`){let t=e.find((e,t)=>t>1&&!e.startsWith(`-`));return t===`list`||t===`show`?{decision:`accept`,reason:`git stash ${t} is read-only`}:{decision:`decline`,reason:`git stash write operation (git is read-only for Coder)`}}return Ii.has(t)?{decision:`accept`,reason:`git ${t} is read-only`}:Pi.has(t)?{decision:`decline`,reason:`git ${t} is a write operation (git is read-only for Coder)`}:{decision:`escalate`,reason:`unrecognized git subcommand: ${t}`}}function Bi(t,n={}){let r=Li(String(t??``));if(!r.trim())return{decision:`escalate`,reason:`empty command`};for(let e of Fi)if(e.test(r))return{decision:`decline`,reason:`matches hard-deny pattern ${e}`};if(/\$\(|`|<\(/.test(r))return{decision:`escalate`,reason:`contains command substitution`};let i=r.split(/&&|\|\||;|\||\r?\n/).map(e=>e.trim()).filter(Boolean);if(i.length>1){let e={decision:`accept`,reason:`all segments safe`};for(let t of i){let r=Bi(t,n);if(r.decision===`decline`)return r;r.decision===`escalate`&&(e=r)}return e}let a=Ri(r),o=e.basename(a[0]??``);if(o===`git`)return zi(a);let s=n.networkHost;return s?(n.allowedNetworkHosts??[]).some(e=>s===e||s.endsWith(`.${e}`))?{decision:`accept`,reason:`network host ${s} is allowlisted`}:{decision:`escalate`,reason:`network access to ${s}`}:{decision:`escalate`,reason:`command needs approval: ${o||`(unknown)`}`}}function Vi(t,n){if(!t.length)return{decision:`escalate`,reason:`file change with no resolvable paths`};for(let r of t){let t=e.resolve(n,r),i=e.relative(n,t);if(i.startsWith(`..`)||e.isAbsolute(i))return{decision:`escalate`,reason:`path outside workspace: ${r}`};if(i===`.git`||i.startsWith(`.git${e.sep}`))return{decision:`decline`,reason:`direct .git modification: ${r}`}}return{decision:`accept`,reason:`all paths inside workspace`}}function Hi(t){return e.join(t,`approvals`)}function Ui(t){let n=Hi(t);return i.existsSync(n)?i.readdirSync(n).filter(e=>e.endsWith(`.request.json`)).flatMap(t=>{let r=t.replace(/\.request\.json$/,``),i=m(e.join(n,t));if(!i)return[];let a=m(e.join(n,`${r}.response.json`));return[{...i,id:r,response:a}]}).sort((e,t)=>String(e.createdAt??``).localeCompare(String(t.createdAt??``))):[]}function Wi(t,n,r){let a=Hi(t),o=e.join(a,`${n}.request.json`);if(!i.existsSync(o))throw Error(`No pending approval "${n}" for this task.`);i.writeFileSync(e.join(a,`${n}.response.json`),`${JSON.stringify({decision:r,answeredAt:new Date().toISOString()},null,2)}\n`,`utf8`)}async function Gi(t,n,{timeoutMs:r,onEvent:a}){let o=Hi(t);i.mkdirSync(o,{recursive:!0});let s=`apr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`;i.writeFileSync(e.join(o,`${s}.request.json`),`${JSON.stringify({...n,createdAt:new Date().toISOString()},null,2)}\n`,`utf8`),a?.({kind:`approval-escalated`,approvalId:s,summary:n.summary,message:`Approval needed (${s}): ${n.summary}. Answer with: coder task approve ${e.basename(t)} ${s} [--deny]`});let c=e.join(o,`${s}.response.json`),l=Date.now()+r;for(;Date.now()<l;){if(i.existsSync(c))try{let e=JSON.parse(i.readFileSync(c,`utf8`)).decision===`accept`?`accept`:`decline`;return a?.({kind:`approval-answered`,approvalId:s,decision:e}),e}catch{}await new Promise(e=>setTimeout(e,400))}return a?.({kind:`approval-timeout`,approvalId:s,message:`Approval ${s} timed out; declining.`}),`decline`}function Ki(e,t={}){return Gi(e,{method:`simulate`,summary:`simulated approval probe (--simulate-approval)`},{timeoutMs:t.timeoutMs??12e4,onEvent:t.onEvent??null})}function qi({workspaceRoot:e,taskDir:t,mode:n=`auto`,escalationTimeoutMs:r=12e4,allowedNetworkHosts:i=[],onEvent:a=null}){return async(o,s,c)=>{if(o===`item/commandExecution/requestApproval`){let l=c?.itemIndex?.get(s.itemId??``),u=s.command??l?.command??``,d=s.cwd??l?.cwd??e,f=`Run command. ${u||`Unknown command`}${s.reason?`. ${s.reason}`:``}`;if(n===`deny`)return a?.({kind:`approval-decision`,method:o,decision:`decline`,reason:`deny mode`,summary:f}),{decision:`decline`};let p=Bi(u,{networkHost:s.networkApprovalContext?.host??null,allowedNetworkHosts:i});return a?.({kind:`approval-decision`,method:o,decision:p.decision,reason:p.reason,summary:f}),p.decision===`escalate`?{decision:await Gi(t,{method:o,summary:f,command:u,cwd:d,params:s},{timeoutMs:r,onEvent:a})}:{decision:p.decision}}if(o===`item/fileChange/requestApproval`){let i=(c?.itemIndex?.get(s.itemId??``)?.changes??[]).map(e=>e.path).filter(e=>!!e),l=`Apply file changes. ${i.join(`, `)||`Unknown paths`}${s.reason?`. ${s.reason}`:``}`;if(n===`deny`)return a?.({kind:`approval-decision`,method:o,decision:`decline`,reason:`deny mode`,summary:l}),{decision:`decline`};let u=Vi(i,e);return a?.({kind:`approval-decision`,method:o,decision:u.decision,reason:u.reason,summary:l}),u.decision===`escalate`?{decision:await Gi(t,{method:o,summary:l,paths:i,params:s},{timeoutMs:r,onEvent:a})}:{decision:u.decision}}throw a?.({kind:`approval-unsupported`,method:o}),Error(`Coder does not handle server request ${o}; treating as denied.`)}}const Ji=/usage|quota|rate.?limit|429|401|unauthorized|not authenticated|login|insufficient|exhausted|not available|ENOENT/i;function Yi(e){return Ji.test(e)&&!Wn(e)}var Xi=class extends Error{engine;detail;constructor(e,t){super(t),this.engine=e,this.detail=t}};function Zi(e,t){let n=e.engine,r=!!n,i=e.model,a=e.effort,o=e=>{let n=e?t.models?.[e]:void 0;return n&&cn(n)?n:void 0},s=e=>{let n=e?t.models?.[e]:void 0;return n&&H(n)?n:void 0};if(o(i)){let e;try{e=Dn(i,t)}catch(e){throw new L(`invalid-option`,e instanceof Error?e.message:String(e))}e&&(r||(n=e.engine),i=e.model??void 0,a=a??e.effort??void 0)}if(!n&&i&&(i in B?n=`claude`:i in z?n=`codex`:s(i)?n=`custom`:/^(?:claude-|opus|sonnet|haiku|fable)/i.test(i)&&(n=`claude`)),n=n??t.chain[0]??`codex`,n!==`codex`&&n!==`claude`&&n!==`custom`){let e=n in z||n in B||n in(t.models??{})?` "${n}" is a model; use --model ${n}.`:``;throw new L(`invalid-option`,`Invalid --engine "${n}". Use codex, claude, or custom.${e}`)}let c=t.engines[n]??{},l=i??c.model??null,u=a??c.effort??null;if(o(l)){let e;try{e=Dn(l,t)}catch(e){throw new L(`invalid-option`,e instanceof Error?e.message:String(e))}e&&(r||(n=e.engine),l=e.model,u=a??e.effort??u)}let d=e.permissions??c.permissions??`auto`;try{En(t,l)}catch(e){throw new L(`invalid-option`,e instanceof Error?e.message:String(e))}if(n===`custom`){let e=Object.entries(t.models??{}).filter(([,e])=>H(e)).map(([e])=>e);if(!l&&e.length===1&&(l=e[0]),!l||!s(l))throw new L(`invalid-option`,l?`No custom model named "${l}". Configured: ${e.join(`, `)||`none`}.`:`No custom model to run: pass --model <name> or set engines.custom.model.`,{hint:`Add one: coder model add <name> --base-url <url> --model <id>`})}let f=n===`claude`;if(!(d in It))throw new L(`invalid-option`,`Invalid --permissions "${d}". Use one of: ${Object.keys(It).join(`, `)}`);if(!f&&u&&!Ft.has(u))throw new L(`invalid-option`,`Invalid codex --effort "${u}". Use one of: ${[...Ft].join(`, `)}`);if(f&&u&&!V.has(u))throw new L(`invalid-option`,`Invalid claude --effort "${u}". Use one of: ${[...V].join(`, `)}`);return{engine:n,model:l,effort:u,permissions:d}}const Qi=r.strictObject({name:r.string().check(r.minLength(1)),command:r.optional(r.string().check(r.minLength(1))),args:r.optional(r.array(r.string())),env:r.optional(r.record(r.string(),r.string())),url:r.optional(r.string().check(r.minLength(1))),type:r.optional(r.enum([`stdio`,`http`,`sse`])),headers:r.optional(r.record(r.string(),r.string())),tools:r.optional(r.array(r.string()))}).check(r.refine(e=>!!e.command!=!!e.url,`one of command or url`)),$i=r.array(Qi);function ea(e,t={}){let n=e.trim();return/^[\[{]/.test(n)?na(n):(n===`all`?Object.keys(t):n.split(`,`).map(e=>e.trim()).filter(Boolean)).map(e=>{let n=t[e];if(!n)throw new L(`invalid-option`,`Unknown MCP server "${e}".`,{hint:`configured: ${Object.keys(t).join(`, `)||`none`}; or pass a JSON array`});return{name:e,...n}})}function ta(e,t={},n={}){return typeof e==`string`&&!e.trim()&&(e=void 0),{mcp:typeof e==`string`?ea(e,{...t,...n}):e??Object.entries(n).map(([e,t])=>({name:e,...t})),nativeMcp:typeof e==`string`&&e.trim()===`all`}}function na(e){let t;try{t=JSON.parse(e)}catch(e){throw new L(`invalid-option`,`Invalid --mcp JSON: ${e instanceof Error?e.message:String(e)}`)}let n=$i.safeParse(t);if(!n.success)throw new L(`invalid-option`,`Invalid --mcp value: ${r.prettifyError(n.error)}`,{hint:`--mcp '[{"name":"docs","command":"npx","args":["-y","docs-mcp"],"tools":["search"]}]'`});return n.data}function ra(n,r=t.env,a){let o=e=>e.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)(?::-([^}]*))?\}/g,(e,t,n)=>r[t]??n??``),s=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e,o(t)]));return(n??[]).map(t=>{let n={...t,...t.command?{command:o(t.command)}:{},...t.args?{args:t.args.map(o)}:{},...t.url?{url:o(t.url)}:{},...t.env?{env:s(t.env)}:{},...t.headers?{headers:s(t.headers)}:{}};if(!a||!n.command)return n;let c=(n.command.includes(e.sep)?[e.resolve(a,n.command)]:(n.env?.PATH??r.PATH??`/usr/bin:/bin`).split(e.delimiter).map(t=>e.resolve(a,t,n.command))).find(e=>{try{return i.accessSync(e,i.constants.X_OK),i.statSync(e).isFile()}catch{return!1}});if(!c)throw new L(`invalid-option`,`MCP server "${t.name}" command cannot be resolved.`);return n.command=i.realpathSync(c),n.args=n.args?.map(t=>{if(t.startsWith(`-`)||e.isAbsolute(t))return t;let n=e.resolve(a,t),r=i.existsSync(n)&&i.statSync(n).isFile();return!r&&!t.startsWith(`./`)&&!t.startsWith(`../`)?t:r?i.realpathSync(n):n}),n})}function ia(t,n=[]){let r=[...new Set(n.map(n=>e.resolve(t,n)))];for(let e of r)if(!i.statSync(e,{throwIfNoEntry:!1})?.isDirectory())throw new L(`invalid-option`,`--add-dir ${e} is not a directory.`);return r}function aa(e,t){return e===`read-only`&&zt.test(t??``)}const oa=[`read-only`,`workspace-write`,`auto`];function sa(e,t,n){if(!t)return n.permissions;if(oa.indexOf(t)>oa.indexOf(n.permissions))throw new L(`invalid-option`,`task "${e??`task`}" asks for ${t} but agent "${n.agent}" is ${n.permissions}: lower the task's permissions or raise the agent's`);return t}function ca(e){if(!e.resume)return e;let t=yt(e.cwd,e.resume);return t?{...e,cwd:e.cwdExplicit===!1?t.cwd??e.cwd:e.cwd,engine:e.engine??t.engine,model:e.model??t.model??void 0,effort:e.effort??t.effort??void 0,permissions:e.permissions??t.permissions??void 0,outputSchema:e.outputSchema??t.outputSchema}:e}function la(n,r){let a=N(n,r),s=i.openSync(e.join(a,`worker.log`),`a`),c=o(t.execPath,[w,`task`,`worker`,r,`--cwd`,n],{cwd:n,detached:!0,stdio:[`ignore`,s,s],env:{...t.env,CODER_WORKER:`1`}});c.unref(),i.closeSync(s),P(n,r,{pid:c.pid??null})}async function ua(t,n,r,i,a){let o=r.cwd,s=n.engine===`claude`?ri():Q(o),c=n.model?t.models?.[n.model]:void 0;if(!s.available&&c&&H(c)){let e=Di(s);r.onNote?.(e.note),s=Q(o)}if(!s.available)throw new Xi(n.engine,s.detail);let u=c?null:n.engine===`claude`?Ai(`claude`,n.model,s):Ai(`codex`,Cn(n.model),s);u&&r.onNote?.(u);let d=null,f=r.addDirs??[];if(i.resume){let e=yt(o,i.resume);d=e?.threadId??i.resume,f=[...new Set([...e?.addDirs??[],...f])]}let p=r.taskId??at(),h=P(o,p,{status:`queued`,...r.taskId?{dispatchId:l()}:{},kind:`task`,name:i.name??null,system:r.system??null,engine:n.engine,prompt:r.prompt,...r.outputSchema?{outputSchema:r.outputSchema}:{},model:n.model,effort:n.effort,permissions:n.permissions,resumeThreadId:d,cwd:o,background:!r.wait,...i.simulateApproval?{simulateApproval:!0}:{},...r.flowRunId?{flowRunId:r.flowRunId}:{},...r.agentId?{agentId:r.agentId}:{},...r.source?{source:r.source}:{},...r.author?{author:r.author}:{},...r.repo?{repo:r.repo}:{},...r.mcp?.length?{mcp:r.mcp}:{},nativeMcp:r.nativeMcp??!1,...f.length?{addDirs:f}:{}});if(la(o,p),!a)return{taskId:p,task:F(o,p)??h,engine:n.engine,startupCheck:`pending`};let g=2**53-1,_=new Set([`status`,`usage`]),v=()=>kt(o,p,g).filter(e=>{let{phase:t,kind:n}=e;return t!==`starting`&&!_.has(String(n??``))}).length,y=Date.now()+15e3,b=h,x=null,S=null;for(;Date.now()<(S??y)&&(b=F(o,p)??b,b.status!==`failed`&&b.status!==`completed`);){if(b.threadId&&x===null&&(x=v(),S=Date.now()+5e3),x!==null&&v()>x){b=F(o,p)??b;break}await new Promise(e=>setTimeout(e,150))}if(b.status===`failed`){let t=m(e.join(N(o,p),`result.json`))?.error?.message??``,r=kt(o,p,5).map(e=>e.message??``).join(`
|
|
14
|
-
`),i=t||r;throw aa(n.permissions,i)?new L(`read-only-unavailable`,i):Yi(i)?new Xi(n.engine,i):new L(`startup-failed`,i,{taskId:p})}return{taskId:p,task:b,engine:n.engine,startupCheck:b.threadId?`passed`:`pending`}}function da(e,t,n,r,i){return{error:`${e} failed to start: ${t}`,fallback:{action:`run-native-subagent`,reason:`no-engine-available`,permissions:n,instructions:`Mention the engine failure to the user, including any limit reset time. If your harness has a native subagent facility, spawn one subagent with fallback.task verbatim, prefixed with: "NEVER run git write operations (commit, checkout, stash, reset, push, etc.); leave changes uncommitted." If fallback.permissions is "read-only", append: "Investigate and report without modifying anything." If it is "workspace-write", append: "Never touch anything outside the workspace." Relay its output when it completes. If your harness has no native subagent facility, report the failure and stop; do not implement the task yourself.`,note:`Every coder engine failed to start. Spawn your own native subagent and forward the task verbatim; tell it to never run git write operations (commit, checkout, stash, reset, push, ...) and to honor the permissions.`,...r?{system:r}:{},task:i}}}async function fa(e,n={}){if(t.env.CODER_WORKER&&!n.fromMailbox)throw new L(`nested-dispatch`,`Nested dispatch is disabled inside a worker; do the work directly.`);if(e.outputSchema!==void 0&&(!e.outputSchema||typeof e.outputSchema!=`object`||Array.isArray(e.outputSchema)))throw new L(`invalid-option`,`outputSchema must be an object.`);if(!e.prompt.trim())throw new L(`invalid-option`,`Missing task text.`,{hint:[`Usage: coder run "<task text>"`,`Help: coder task run --help`]});e=ca(e),e={...e,addDirs:ia(e.cwd,e.addDirs)};let r=q(e.cwd),i=ta(e.mcp,r.mcp),a={...e,mcp:i.mcp,nativeMcp:e.nativeMcp??i.nativeMcp},o={engine:e.engine,model:e.model,effort:e.effort,permissions:e.permissions},s={name:e.name,resume:e.resume,simulateApproval:e.simulateApproval};for(;;){let t=Zi(o,r);try{return await ua(r,t,a,s,n.waitForStartup!==!1)}catch(n){if(!(n instanceof Xi))throw n;let i=r.chain[r.chain.indexOf(n.engine)+1];if(!i){let r=da(n.engine,n.detail,t.permissions,e.system,e.prompt);throw new L(`chain-exhausted`,r.error,{payload:r})}e.onFallback?.({engine:n.engine,detail:n.detail,next:i}),o={engine:i,permissions:e.permissions},s={name:void 0,resume:void 0,simulateApproval:void 0}}}}function pa(e,t){if(t.status!==`failed`)return;let n=t.result;if(!n||!Yi(n.error?.message??``)||!(!n.touchedFiles?.length&&!n.fileChanges?.length&&!n.commandExecutions?.length))return;let r=q(e).chain;return r[r.indexOf(t.task.engine)+1]}function ma(t,n){return m(e.join(N(t,n),`result.json`))}function ha(e,t,n=0){if(n===0)return[];let r=kt(e,t,2**53-1);return n===`all`?r:Ot(r,n)}function ga(e,t,n={}){let r=F(e,t);if(!r)throw Error(`No task found for "${t}".`);return{taskId:t,status:r.status,result:Ve.includes(r.status)?null:ma(e,t),steps:ha(e,t,n.tail),turns:Dt(e,t),task:r}}async function _a(e,t,n={}){let r=F(e,t);if(!r)throw Error(`No task found for "${t}".`);let i=await va(e,r);if(i.reason===`approval`){let e=i.approval;throw new L(`approval-pending`,`Approval needed for task ${t}: ${e.summary}`,{taskId:t,approval:e})}n.onSettle?.();let a=i.task;return{taskId:t,status:a.status,result:ma(e,t),steps:ha(e,t,n.tail),turns:Dt(e,t),task:a}}async function va(e,t,n=400){let r=t;for(;;){if(Be.includes(r.status))return{task:r,reason:`terminal`};let t=Ui(N(e,r.id)).filter(e=>!e.response);if(t[0]){let e=t[0].params;return{task:r,reason:`approval`,approval:{id:t[0].id,summary:String(t[0].summary??``),cwd:typeof t[0].cwd==`string`?t[0].cwd:null,networkHost:e?.networkApprovalContext?.host??null}}}await new Promise(e=>setTimeout(e,n)),r=I(e,F(e,r.id)??r)}}export{cn as $,qe as $t,Q as A,_ as An,We as At,nr as B,vt as Bt,Di as C,w as Cn,L as Ct,xi as D,x as Dn,Et as Dt,bi as E,ee as En,jt as Et,Yn as F,yt as Ft,Rt as G,_t as Gt,Un as H,F as Ht,rr as I,At as It,It as J,Dt as Jt,Ft as K,gt as Kt,tr as L,at as Lt,Jr as M,p as Mn,O as Mt,qr as N,h as Nn,D as Nt,pi as O,v as On,et as Ot,cr as P,wt as Pt,xn as Q,Ge as Qt,$n as R,Ue as Rt,Ki as S,ce as Sn,Nt as St,Ni as T,T as Tn,Mt as Tt,V as U,tt as Ut,Jn as V,ht as Vt,B as W,lt as Wt,jn as X,st as Xt,gn as Y,I as Yt,Mn as Z,M as Zt,qi as _,be as _n,U as _t,Yi as a,Ye as an,an as at,Gi as b,Ne as bn,On as bt,ra as c,ft as cn,vn as ct,la as d,St as dn,fn as dt,Ke as en,wn as et,pa as f,P as fn,Cn as ft,Wi as g,Se as gn,K as gt,ca as h,ze as hn,G as ht,aa as i,Je as in,Rn as it,Kr as j,m as jn,Tt as jt,fi as k,g as kn,nt as kt,Zi as l,bt as ln,Dn as lt,_a as m,Be as mn,Sn as mt,sa as n,A as nn,q as nt,ma as o,k as on,zn as ot,va as p,Ve as pn,ln as pt,z as q,kt as qt,fa as r,N as rn,Ln as rt,ga as s,Ot as sn,Bn as st,da as t,Xe as tn,H as tt,ta as u,it as un,yn as ut,Bi as v,xe as vn,mn as vt,Mi as w,C as wn,$e as wt,Ui as x,ye as xn,Pt as xt,Vi as y,Ce as yn,Nn as yt,Zn as z,xt as zt};
|
package/dist/docs-DFs7lOJp.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./cli-B1ObVrL4.js";import{g as t,p as n,s as r}from"./output-BKeyLbvt.js";import{n as i}from"./args-DcBCtXhz.js";import{t as a}from"./docs-DKROso-4.js";import o from"node:process";const s=e({name:`docs`,globalFlags:{cwd:!1},help:{usage:`coder docs [topic] [--json]`,summary:"Print bundled documentation. With no topic, list the available topics; with a\ntopic, print that doc's raw markdown to stdout (unstyled, for an agent to\nconsume). Topics with sub-pages list them as `<topic>/<page>` (also accepted as\n`<topic>-<page>`). `coder docs skill` prints the host skill so an engine can\nload it once per session (--claude for the Claude Code flavor).",flags:[[`--claude`,`with the skill topic: print the Claude Code flavor`]],examples:[[`coder docs`,`list the available topics`],[`coder docs flows`,`print the Flows doc`],[`coder docs review`,`print the Review doc`]]},options:{json:i,claude:i},args:1,run:({options:e,args:[t]})=>a(t,e),print:e=>o.stdout.write(`content`in e?e.content.endsWith(`
|
|
2
|
-
`)?e.content:`${e.content}\n`:c(e.topics))});function c(e){let i=n,a=e=>e.includes(`/`)?` ${e}`:e;return t([{header:`topic`,value:e=>a(e.name),paint:e=>i.cyan(e)},{header:`about`,value:e=>e.description,paint:e=>i.light(e)}],e,i)+`\n${r([`Read a topic: coder docs <topic>`],i)}\n`}export{s as commandDocs};
|
package/dist/docs-DKROso-4.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{Ct as e,En as t}from"./dispatch-BsW_1m7e.js";import n from"node:path";import r from"node:fs";const i=[{name:`readme`,file:`README.md`,description:`What Coder is and how to get started.`},{name:`skill`,file:`plugins/agents/skills/coder/SKILL.md`,description:`How a host agent should drive Coder.`}];function a(e){let t=n.join(e,`docs`),a=[];try{a=r.readdirSync(t,{withFileTypes:!0})}catch{a=[]}let c=(t,r)=>({name:t,file:r,description:s(n.join(e,r))}),l=[...new Set(a.filter(e=>e.isDirectory()?o(n.join(t,e.name)):e.name.endsWith(`.md`)).map(e=>e.isDirectory()?e.name:n.basename(e.name,`.md`)))].sort(),u=[];for(let e of l){let i=n.join(t,e);if(!a.some(t=>t.isDirectory()&&t.name===e)){u.push(c(e,n.join(`docs`,`${e}.md`)));continue}u.push(c(e,n.join(`docs`,e,`index.md`)));let o=r.readdirSync(i).filter(e=>e.endsWith(`.md`)&&e!==`index.md`).sort();for(let t of o){let r=n.basename(t,`.md`);u.push(c(`${e}/${r}`,n.join(`docs`,e,t)))}}let d=i.map(e=>({name:e.name,file:e.file,description:e.description}));return[...u,...d]}function o(e){return r.existsSync(n.join(e,`index.md`))}function s(e){let t=``;try{t=r.readFileSync(e,`utf8`)}catch{return``}let n=t.split(`
|
|
2
|
-
`),i=``,a=``,o=!1;for(let e of n){let t=e.trim();if(t.startsWith("```")){o=!o;continue}if(!(o||t===``)){if(t.startsWith(`#`)){i||=t.replace(/^#+\s*/,``);continue}a=t;break}}return c(a)||i}function c(e){if(!e)return``;let t=e.match(/^.*?[.!?](?=\s|$)/);return(t?t[0]:e).trim()}function l(i,o={}){let s=t(),c=a(s);if(!i)return{topics:c.map(e=>({name:e.name,description:e.description}))};let l=i.toLowerCase(),u=c.find(e=>{let t=e.name.toLowerCase();return t===l||t.replace(`/`,`-`)===l});if(u?.name===`skill`&&o.claude&&(u={...u,file:`plugins/claude/skills/dispatch/SKILL.md`}),!u)throw new e(`invalid-option`,`Unknown docs topic "${i}". Available: ${c.map(e=>e.name).join(`, `)}`,{hint:`List topics: coder docs`});let d=n.join(s,u.file),f;try{f=r.readFileSync(d,`utf8`)}catch{throw new e(`invalid-option`,`Could not read docs for "${u.name}" (${u.file}).`)}return{name:u.name,content:f}}export{l as t};
|
package/dist/enable-D2DqZvcU.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{toggle as e}from"./disable-DQC56YFy.js";const t=e(!1,{usage:`coder model enable <name> [--workspace]`,summary:`Re-enable a disabled model.`,flags:[[`--workspace`,`target <repo>/.coder/config.json instead of the user file`]]});export{t as commandModelEnable};
|
package/dist/env-YRY3I60r.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{Ct as t,xn as n}from"./dispatch-BsW_1m7e.js";import r from"node:path";import i from"node:process";import*as a from"zod/mini";import o from"node:os";var s=e({loadServerConfig:()=>g,requireBunServer:()=>v,rerunUnderBun:()=>y});const c=e=>a._default(a.coerce.number().check(a.int(),a.positive()),e),l=a.pipe(a.optional(a.string()),a.transform(e=>e===`1`)),u=(e,t)=>a.string().check(a.overwrite(e=>e.replace(/\/$/,``)),a.refine(e=>URL.canParse(e),{error:`must be a URL`,abort:!0}),a.refine(t=>e(new URL(t)),t)),d=e=>a.pipe(a.transform(e=>e||void 0),e),f=a.pipe(a.string(),a.transform((e,t)=>{try{let t=JSON.parse(e);if(t&&!Array.isArray(t)&&typeof t==`object`)return t}catch{}return t.issues.push({code:`custom`,message:`must be a JSON object`,input:e}),a.NEVER})),p=a.object({AUTH_WULAR_URL:a._default(u(e=>e.protocol===`https:`||e.hostname===`localhost`,`must use HTTPS unless it is localhost`),`https://auth.wular.ai`)}),m=a.object({SERVER_LIMITS:d(a.optional(a.pipe(f,a.strictObject({principalPerMinute:a.optional(a.number().check(a.int(),a.positive())),authPerMinute:a.optional(a.number().check(a.int(),a.positive())),registerPerMinute:a.optional(a.number().check(a.int(),a.positive())),ipPerMinute:a.optional(a.number().check(a.int(),a.positive())),pairingPerMinute:a.optional(a.number().check(a.int(),a.positive())),concurrentTasks:a.optional(a.number().check(a.int(),a.positive()))})))),RUNNER:a.optional(a.enum([`local`,`local-docker`,`vercel-sandbox`,`github-actions`,`http`])),RUNNER_CONFIG:d(a._default(f,{})),WORK_DIR:a.optional(a.string()),SERVER_ENCRYPTION_KEY:a.optional(a.string()),SERVER_ENCRYPTION_KEY_PREVIOUS:a.optional(a.string()),ADMIN_TOKEN:a.optional(a.string()),PUBLIC_URL:d(a.optional(u(e=>e.pathname===`/`&&!e.search&&!e.hash,`must be an origin, with no path, query or fragment`))),SERVER_NAME:a.optional(a.string().check(a.trim())),VERCEL_PROJECT_PRODUCTION_URL:a.optional(a.string()),VERCEL_URL:a.optional(a.string()),VERCEL:a.optional(a.string()),DATABASE_URL:a.optional(a.string()),POSTGRES_URL:a.optional(a.string()),DATABASE_POOL_MAX:a.optional(a.coerce.number().check(a.int(),a.positive())),DATABASE_IDLE_TIMEOUT:a.optional(a.coerce.number().check(a.int(),a.positive())),MAX_TASKS:a.optional(a.coerce.number().check(a.int(),a.positive())),MAX_QUEUED:c(1e3),TASK_STALL:c(3e5),TASK_ATTEMPTS:c(2),TASK_TIMEOUT:c(18e5),CLAUDE_SUBSCRIPTIONS:l,CODEX_SUBSCRIPTIONS:l,SERVER_INTEGRATIONS:d(a.optional(a.string()))});function h(e,n){let r=e.safeParse(n);if(r.success)return r.data;let i=r.error.issues[0];throw new t(`invalid-option`,`Invalid server configuration:${String(i.path[0])} ${i.message}`)}function g(e=i.env,n=`node`){let a=h(m,e),s=a.DATABASE_URL??a.POSTGRES_URL,c=s?`postgres`:`memory`;if(c===`postgres`&&!a.SERVER_ENCRYPTION_KEY)throw new t(`invalid-option`,`SERVER_ENCRYPTION_KEY is required with DATABASE_URL`);let l=n===`vercel`?a.VERCEL_PROJECT_PRODUCTION_URL??a.VERCEL_URL:void 0,u=a.PUBLIC_URL??(l?`https://${l}`:void 0),d=c===`postgres`?h(p,e).AUTH_WULAR_URL:void 0;return{runner:a.RUNNER??(n===`vercel`||a.VERCEL?`vercel-sandbox`:`local`),store:c,workDir:a.WORK_DIR??r.join(o.tmpdir(),`coder`),...a.SERVER_ENCRYPTION_KEY?{encryptionKey:a.SERVER_ENCRYPTION_KEY}:{},...a.SERVER_ENCRYPTION_KEY_PREVIOUS?{previousEncryptionKey:a.SERVER_ENCRYPTION_KEY_PREVIOUS}:{},...a.ADMIN_TOKEN?{adminToken:a.ADMIN_TOKEN}:{},...u?{publicUrl:u}:{},...a.SERVER_NAME?{name:a.SERVER_NAME}:{},...s?{databaseUrl:s,databasePool:{max:a.DATABASE_POOL_MAX??(n===`vercel`||a.VERCEL?2:10),idleTimeout:a.DATABASE_IDLE_TIMEOUT??(n===`vercel`||a.VERCEL?30:240)}}:{},runnerConfig:a.RUNNER_CONFIG,maxTasks:a.MAX_TASKS,limits:a.SERVER_LIMITS,maxQueued:a.MAX_QUEUED,taskTimeoutMs:a.TASK_TIMEOUT,taskStallMs:a.TASK_STALL,taskAttempts:a.TASK_ATTEMPTS,...a.CLAUDE_SUBSCRIPTIONS||a.CODEX_SUBSCRIPTIONS?{subscriptions:{claude:a.CLAUDE_SUBSCRIPTIONS,codex:a.CODEX_SUBSCRIPTIONS}}:{},...d?{auth:{wular:{url:d}}}:{},...a.SERVER_INTEGRATIONS?{integrations:a.SERVER_INTEGRATIONS.split(`,`).map(e=>e.trim()).filter(Boolean)}:{}}}function _(){return new t(`invalid-option`,`The Coder server needs Bun; the CLI itself runs on Node.`,{hint:[i.platform===`win32`?`Install Bun: powershell -c "irm bun.sh/install.ps1 | iex"`:`Install Bun: curl -fsSL https://bun.sh/install | bash`,`Or with npm: npm install -g bun`,`Then run the command again. More: https://bun.sh/docs/installation`]})}function v(){if(typeof Bun>`u`)throw _()}async function y(){if(typeof Bun<`u`)return;let e=i.platform===`win32`?[`bun.exe`,`bun.cmd`,`bun`]:[`bun`];for(let t of e){let e=await n(t);if(e.error?.code!==`ENOENT`&&e.error?.code!==`EINVAL`){if(e.error)throw e.error;if(e.signal){let t=o.constants.signals[e.signal];i.exit(typeof t==`number`?128+t:1)}i.exit(e.status??1)}}throw _()}export{g as n,v as r,s as t};
|
package/dist/exec-DuUkLMqg.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{B as t,Ct as n,I as r,c as i,f as a,l as o,m as s,n as c,nt as l,r as u,u as d}from"./dispatch-BsW_1m7e.js";import{a as f,f as p,o as m}from"./load-SnZd7xG1.js";import{t as h}from"./integrations-B2CavXR1.js";import{a as g}from"./discover-Qanr5TEO.js";import{n as _}from"./executor-vMppVLB6.js";import{REVIEW_PLATFORM as v,postReview as y,resolveReviewTarget as b}from"./flow/builtin/review.js";import{a as x,i as S,n as C,r as w}from"./mcp-CmcL1MCG.js";import T from"node:path";import E from"node:process";import{readFileSync as D,readdirSync as O,realpathSync as k}from"node:fs";import A from"node:os";import j from"node:fs/promises";var M=e({AGENT_TASK_PREFIX:()=>N,agentInstructions:()=>G,agentSystemPrompt:()=>W,agentTaskOptions:()=>H,builtinArgs:()=>V,builtinTaskArgs:()=>z,defaultTask:()=>X,execAgent:()=>L,postReply:()=>F,renderContext:()=>J,startAgentMailbox:()=>Z,taskFromEvent:()=>P,waitForAgentTask:()=>R});const N=`agent:`;function P(e,t,n){let r=h[n.integration];return{id:`local-${n.deliveryId}-${e.id}`,source:n.integration,agent:e.id,flow:t,runner:`local`,event:n,definition:e.definition,...e.usage?{usage:e.usage}:{},tools:r?{[n.integration]:p(e,n.integration,r)}:{}}}async function F(e,t,n,r,i=e.id){if(!t.chat)throw Error(`The ${t.integration} event has no thread to reply in`);let[{Chat:a},{LocalChatState:o}]=await Promise.all([import(`chat`),import(`./chat-3Znsevah.js`).then(e=>e.r)]),s=await e.adapter({fetch,appId:t.appId.slice(e.id.length+1),name:i,installationId:t.installationId,token:async()=>r}),c=new a({userName:i,adapters:{[e.id]:s},state:new o,logger:`error`});await c.initialize();let l=c.thread(t.chat.thread.id);s.reply&&t.chat.message?.id?await l.reply(t.chat.message.id,n):await l.post(n)}function I(e,t){return Object.fromEntries(Object.keys(e.tools).map(n=>[n,t[S(n)]??(n===e.event?.integration?t.APP_TOKEN:void 0)]))}async function L(e){let{cwd:t,flow:n}=e,r=l(t),i=await f(t,h),a=e.task;!a&&e.taskFile&&(a={...JSON.parse(await j.readFile(T.resolve(t,e.taskFile),`utf8`)),flow:n});let s=i.find(t=>t.id===e.agent);if(!s&&a&&(s={id:a.agent,name:a.definition.name??a.agent,definition:a.definition,...a.usage?{usage:a.usage}:{},...a.files?{files:a.files}:{},builtin:!1}),!s)throw Error(`No agent named "${e.agent}".`);a??=await B(t,s,n,e);let c=a.event,p=c&&h[c.integration];if(c&&!p)throw Error(`Unknown integration "${c.integration}".`);if(n==="default"){let i=X(s,a),l=e.noteFile?void 0:await j.mkdtemp(T.join(A.tmpdir(),`coder-note-`)),f=e.noteFile??T.join(l,`note`);e.noteFile||await j.writeFile(f,a.context?.note??``);let h=o(m(s),r),g=d(a.mcp?.join(`,`),r.mcp,s.definition.mcp),_=[...w(a,e.toolEnvironment?.tokens??I(a,E.env)),C(f),...g.mcp],v=e.resumeTaskId?{taskId:e.resumeTaskId}:await u({taskId:e.taskId,mcp:_,nativeMcp:g.nativeMcp,cwd:t,agentId:a.agent,...a.author?{author:a.author}:{},...c?.repo?{repo:`${c.repo.owner}/${c.repo.name}`}:{},...e.source?{source:e.source}:{name:`${N}${a.id}`},engine:h.engine,model:h.model??void 0,effort:h.effort??void 0,permissions:a.permissions??h.permissions,system:i.system,prompt:i.prompt,outputSchema:a.context?.outputSchema,wait:!0});await e.onTask?.(v.taskId);let y=await R(t,v.taskId,e.onApproval),b=(y.result?.finalMessage??y.result?.error?.message??``).trim(),x=(await j.readFile(f,`utf8`).catch(()=>``)).trim();l&&await j.rm(l,{recursive:!0,force:!0});let S=e.post!==!1&&!!p;return S&&await F(p,c,b,e.postToken??E.env.APP_TOKEN,a.author),{ok:y.status===`completed`,flow:n,reply:b,posted:S,taskId:v.taskId,tokens:y.result?.tokens??void 0,...x===(a.context?.note??``).trim()?{}:{note:x}}}let v=g(n,t),y=v.scope===`builtin`?{...await z(a,s,e.post!==!1),cwd:t,...a.args}:a.args??c,b=await _(v.path,{cwd:t,...e.taskId?{runId:e.taskId}:{},args:y,ceiling:{agent:s.id,permissions:a.permissions??o(m(s),r).permissions},...e.postToken?{integrationToken:e.postToken}:{}},{...e.onTask?{onTaskStart:t=>e.onTask(t.taskId)}:{},...e.onStart?{onStart:e.onStart}:{}});return{ok:!0,flow:n,runId:b.runId,result:b.result,tokens:b.tokens}}async function R(e,t,r,i=s,a=()=>new Promise(e=>setTimeout(e,100))){let o;for(;;)try{return await i(e,t)}catch(e){if(!(e instanceof n)||e.code!==`approval-pending`||!r)throw e;e.approval?.id!==o&&(o=e.approval?.id,await r(e.approval)),await a()}}async function z(e,t,n=!0){if(!e.event)throw Error(`built-in flows need a GitHub pull request event`);return{...await V(e.event,t,e.context,e.author,n),...m(t),...e.permissions?{permissions:e.permissions}:{}}}async function B(e,t,n,r){if(r.taskFile){let t=JSON.parse(await j.readFile(T.resolve(e,r.taskFile),`utf8`));return{...t,flow:n,tools:t.tools??{}}}if(!r.eventFile)throw Error(`Missing --task or --event file.`);return P(t,n,JSON.parse(await j.readFile(T.resolve(e,r.eventFile),`utf8`)))}function V(e,t,n,r,i=!0){let a=h[e.integration]?.repos?.pullRequest(e);if(!a)throw Error(`built-in flows need a pull request event`);return{pr:a,post:i,...r?{author:r}:{}}}async function H(e,t,r){let i=await f(e,h),a=i.find(e=>e.id===t);if(!a)throw new n(`invalid-option`,`No agent named "${t}".`,{hint:`Agents here: ${i.map(e=>e.id).join(`, `)}`});let{definition:o,usage:s}=a,c=o.mcp??{},u=d(r,l(e).mcp,c);return{engine:s?.engine??o.engine,model:s?.model??o.model,effort:s?.effort??o.effort,permissions:s?.permissions??o.permissions,system:G(a)||void 0,...u}}const U=48e3;function W(e){let t=[`You are an agent named "{name}" acting on behalf of a software team. You receive one request, a platform event or a task, and must produce the reply that goes back to its thread verbatim. Be direct and specific, use the attached tools to read context before answering, never invent facts about the repository, and stay within the actions your tools allow. Reply in plain markdown with no preamble.`.replace(`{name}`,e.definition.name??e.id)];e.definition.description&&t.push(`Your role: ${e.definition.description}`);let n=G(e);return n&&t.push(`## Agent instructions\n\n${n}`),t.join(`
|
|
2
|
-
|
|
3
|
-
`)}function G(e){if(!e.dir)return K(e.files??{});let t;try{t=O(e.dir).filter(e=>e.endsWith(`.md`))}catch{return``}t.sort((e,t)=>e===`system.md`?-1:t===`system.md`?1:e.localeCompare(t));let n=``;for(let r of t){let t=`### ${r}\n\n${D(T.join(e.dir,r),`utf8`).trim()}\n`;if(n+=t.slice(0,U-n.length),n.length===U)break}return n.trimEnd()}function K(e){let t=Object.keys(e).filter(e=>e.endsWith(`.md`));t.sort((e,t)=>e===`system.md`?-1:t===`system.md`?1:e.localeCompare(t));let n=``;for(let r of t){let t=`### ${r}\n\n${e[r].trim()}\n`;if(n+=t.slice(0,U-n.length),n.length===U)break}return n.trimEnd()}function q(e){let t=[`**Integration:** ${e.integration}`,`**Type:** ${e.type}`,`**Actor:** ${e.actor.login??e.actor.id}`];return e.repo&&t.push(`**Repo:** ${e.repo.owner}/${e.repo.name}`),e.chat&&t.push(`**Thread:** ${e.chat.thread.id}${e.chat.thread.isDM?` (direct message)`:``}`),[t.join(`
|
|
4
|
-
`),e.promptContext,e.text].filter(Boolean).join(`
|
|
5
|
-
|
|
6
|
-
`)}function J(e){if(!e)return``;let t=[];return e.messages?.length&&t.push(`## Recent thread\n\n${e.messages.map(e=>`- ${e.user}: ${e.text}`).join(`
|
|
7
|
-
`)}`),e.note&&t.push(`## Note from earlier in this thread\n\n${e.note}`),e.instructions&&t.push(`## Repository instructions\n\n${e.instructions}`),e.user&&t.push(`## Who asked\n\n${e.user.name} (${e.user.email}), a member of this Coder server.`),t.join(`
|
|
8
|
-
|
|
9
|
-
`)}function Y({event:e,prompt:t}){return t===void 0?e?q(e):``:e?.repo?`**Repo:** ${e.repo.owner}/${e.repo.name}\n\n${t}`:t}function X(e,t){let n=J(t.context),r=t.prompt===void 0&&t.event?h[t.event.integration]?.hint:void 0,i=Y(t);return{system:[W(e),r?`## Platform\n\n${r}`:``].filter(Boolean).join(`
|
|
10
|
-
|
|
11
|
-
`),prompt:n?`${i}\n\n${n}`:i}}function Z(e,o){let l=r(e,o);if(!l)return()=>{};let d={agent:o.agentId,permissions:o.permissions??`auto`},f=k(e),p=new Map((o.mcp??[]).map(e=>[e.name,e])),m=e=>{if(!e.command)return e;let[t]=i([e],E.env,f);return{...e,command:t.command,args:t.args}},h=e=>{try{return k(e)}catch{return null}},g=[e,...o.addDirs??[]].flatMap(e=>h(T.resolve(e))??[]),_=e=>g.some(t=>e===t||e.startsWith(t+T.sep)),S=new Map,C=new Set,w=()=>{let e=x(i(o.mcp),v);return e?{token:e}:{}};return t(l,{async dispatch(e){let t=e.name??`task`;if(e.mcp!==void 0&&(typeof e.mcp!=`string`||/^[\[{]/.test(e.mcp.trim())))throw new n(`invalid-option`,`Mailbox MCP selections must be server names.`);let r=(e.mcp??``).split(`,`).map(e=>e.trim()).filter(Boolean).map(e=>{let t=e===`all`?void 0:p.get(e);if(!t)throw new n(`invalid-option`,`MCP server "${e}" is not authorized for agent "${d.agent}".`);return m(t)}),i=T.resolve(String(e.cwd??f));if(h(i)!==h(f)&&r.some(e=>e.command))throw new n(`invalid-option`,`Inherited stdio MCP servers do not allow a cwd override.`);let a=[i,...(e.addDirs??[]).map(e=>T.resolve(i,e))],o=a.find(e=>!h(e));if(o)throw new n(`invalid-option`,`task "${t}" asks for ${o}, which does not exist`);let[s,...l]=a.map(e=>h(e)),g=[s,...l].find(e=>!_(e));if(g)throw new n(`invalid-option`,`task "${t}" asks for ${g}, outside the workspace of agent "${d.agent}"`);if(e.resume&&!S.has(e.resume))throw new n(`invalid-option`,`task "${t}" resumes a task this flow did not start`);let v=await u({prompt:String(e.prompt??``),outputSchema:e.outputSchema,cwd:s,engine:e.engine,model:e.model,effort:e.effort,mcp:r,permissions:c(t,e.permissions,d),name:e.name,system:e.system,resume:e.resume,addDirs:l,flowRunId:e.flowRunId,wait:!0},{fromMailbox:!0});return S.set(v.taskId,s),{taskId:v.taskId}},async wait(e){let t=S.get(e.taskId);if(!t)throw new n(`invalid-option`,`No task "${e.taskId}" started by this flow.`);let r=await s(t,e.taskId);return{status:r.status,result:r.result,model:r.task.model??null,next:a(t,r)??null}},review(t){if(t.op===`resolveTarget`){let{repo:r,...i}=t.input??{};if(!o.repo&&!/^\d+$/.test(String(i.pr)))throw new n(`invalid-option`,`review target must be a pull request number in this task's repository`);let a=b({...i,cwd:e,...o.repo?{repo:o.repo}:{},...o.author?{author:o.author}:{}},w());return a.pr&&C.add(`${a.pr.repo}#${a.pr.number}`),a}if(t.op!==`post`)throw new n(`invalid-option`,`unknown review action "${t.op}"`);if(!C.has(`${t.input?.repo}#${t.input?.pr}`))throw new n(`invalid-option`,`review post: pull request was not resolved by this task`);return y({...t.input,cwd:e},w())}})}export{P as a,M as i,H as n,L as r,N as t};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{$t as t,At as n,Cn as r,Ct as i,Et as a,Ht as o,It as s,L as c,On as l,R as u,Rt as d,Vt as f,Wt as p,en as m,f as ee,kn as h,m as te,mn as g,n as _,r as ne}from"./dispatch-BsW_1m7e.js";import{r as re,s as ie}from"./output-BKeyLbvt.js";import{a as v}from"./discover-Qanr5TEO.js";import{l as ae,s as oe}from"./actions-FzDNxMFf.js";import{createRequire as se}from"node:module";import y from"node:path";import b from"node:process";import{fileURLToPath as ce,pathToFileURL as x}from"node:url";import S from"node:fs";import{spawn as le,spawnSync as ue}from"node:child_process";import de,{randomUUID as fe}from"node:crypto";import pe from"node:os";import{AsyncLocalStorage as me}from"node:async_hooks";function he(e){return typeof e!=`object`||!e?JSON.stringify(e)??`null`:Array.isArray(e)?`[${e.map(he).join(`,`)}]`:`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${he(e[t])}`).join(`,`)}}`}function ge(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function C(e,t){return de.createHash(`sha256`).update(`${e}\0${he(t)}`).digest(`hex`)}function w(e){return S.existsSync(e)?S.readFileSync(e,`utf8`).split(/\r?\n/).filter(Boolean).map(e=>{try{return JSON.parse(e)}catch{return null}}).filter(e=>e!==null):[]}var _e=class{file;recorded;seq=0;constructor(e,t){this.file=t,this.recorded=e.map(e=>({...e})),S.writeFileSync(t,``,`utf8`)}write(e){e.seq=this.seq++,S.appendFileSync(this.file,`${JSON.stringify(e)}\n`,`utf8`)}replay(...e){let t=this.recorded.find(t=>!t.consumed&&e.includes(t.fingerprint));if(!t)return null;t.consumed=!0;let{consumed:n,...r}=t;return this.write(r),r}record(e){this.write({...e,seq:0})}},ve=e({archiveFlaggedRuns:()=>Ne,archiveRun:()=>N,archiveRuns:()=>je,collectFlowRuns:()=>Le,deleteRun:()=>P,deleteRuns:()=>Me,flowSteps:()=>Ie,generateRunId:()=>O,latestRun:()=>H,listArchivedRuns:()=>V,listRuns:()=>B,markRunArchived:()=>M,readFlowRecord:()=>L,readRawRecord:()=>F,reconcileRun:()=>I,resumeRun:()=>Oe,runDirFor:()=>j,runResult:()=>E,startRun:()=>De,unarchiveRun:()=>Pe,watchRun:()=>D,writeFlowRecord:()=>R});const T=`CODER_FLOW_ATTACH`;function ye(){try{return ue(`bun`,[`--version`],{stdio:`ignore`}).status===0}catch{return!1}}function be(e,t){if(!e.endsWith(`.ts`)||b.versions.bun||b.features.typescript)return;if(!ye())throw new i(`invalid-option`,`This flow is a TypeScript file (${e}) and this Node cannot run TypeScript.`,{hint:[`Upgrade to Node 23.6+ or install bun: https://bun.sh`,`Or write the flow as .mjs / .js`]});let n=ue(`bun`,[r,...t],{stdio:`inherit`});b.exit(n.status??1)}function xe(e){b.once(`SIGINT`,()=>{(async()=>{let{runId:t}=e,n=S.existsSync(y.join(j(t),mt));if(b.stderr.write(`\n[flow] Stopping run ${t}. No new tasks will dispatch.\n`),n){let t=e.runningIds();t.length&&b.stderr.write(`[flow] left running: ${t.join(`, `)}\n`)}else{let n=await _t(t,e.runningIds());n.length&&b.stderr.write(`[flow] stopped tasks: ${n.join(`, `)}\n`)}b.stderr.write(`\n${ie([`Resume: coder flow resume ${t}`],re)}\n`),e.requestStop(),b.exit(130)})()})}function Se(e){let t=y.join(j(e),`events.jsonl`),n=e=>{try{S.appendFileSync(t,`${JSON.stringify(e)}\n`,`utf8`)}catch{}};return{onStart:e=>xe(e),onTaskStart:e=>n({kind:`task-start`,...e}),onTaskEnd:e=>n({kind:`task-end`,...e}),onGateStart:e=>n({kind:`gate-start`,...e}),onGate:e=>n({kind:`gate`,...e}),onLog:(e,t)=>n({kind:`log`,message:e,depth:t}),onFlowStart:e=>n({kind:`flow-start`,...e}),onReplay:e=>n({kind:`replay`,count:e})}}async function Ce(e){let t=b.env[T];if(t){delete b.env[T];try{await $(t,e,Se(t)),b.exit(0)}catch(e){Z(t,e instanceof Error?e.message:String(e)),b.exit(1)}}}function we(e,t,n){let i=j(e.runId);S.writeFileSync(y.join(i,`events.jsonl`),``,`utf8`);let a=S.openSync(y.join(i,`flow.log`),`a`),o=le(b.execPath,[r,...t],{detached:!0,stdio:[`ignore`,a,a],env:{...b.env,[T]:e.runId}});return o.unref(),S.closeSync(a),{runId:e.runId,status:`running`,...n?{watch:D(e.runId,{bootPid:o.pid})}:{}}}async function Te(e,t,n){try{return await n()}catch(n){if(!(n instanceof i)||n.code!==`flow-failed`)throw n;let r=t?`
|
|
2
|
-
[flow] dry-run ended early: a downstream step depends on real task output (stub it or run for real).`:``;throw new i(`flow-failed`,`[flow] ${e} ${n.runId} failed: ${n.message}${r}`,{runId:n.runId,hint:`Resume${e===`resume`?` again`:``}: coder flow resume ${n.runId}`})}}function Ee(e,t){let n=e?L(e):H();if(!n)throw new i(`flow-failed`,e?`No flow run "${e}".`:t,{hint:`Run one: coder flow run <name>`});return n}async function De(e,t={},n={}){return t.argv&&(be(v(e,t.cwd?y.resolve(t.cwd):b.cwd()).path,t.argv),await Ce(t),!t.dryRun)?we(Y(e,t),t.argv,t.wait):Te(`run`,t.dryRun,()=>St(e,t,n))}async function Oe(e,t={},n={}){let r=Ee(e,`No flow runs to resume.`);return t.argv&&(be(r.script,t.argv),await Ce(t),!t.dryRun)?we(Y(``,t,r.runId),t.argv,t.wait):Te(`resume`,t.dryRun,()=>$(r.runId,t,n))}function ke(e){let t=y.join(j(e),`events.jsonl`);return S.existsSync(t)?S.readFileSync(t,`utf8`).split(`
|
|
3
|
-
`).filter(Boolean).flatMap(e=>{try{return[JSON.parse(e)]}catch{return[]}}):[]}function E(e,t={}){let n=e?L(e):H();return n?{...n,steps:Ie(n.runId,t.tail),journal:w(y.join(j(n.runId),`journal.jsonl`)).map(e=>({kind:e.kind,taskId:e.taskId,tokens:e.tokens})),events:ke(n.runId)}:null}function D(e,t={}){let n=Ee(e,`No flow runs yet.`);return{record:n,events:yt(n.runId,t.bootPid,{tail:t.tail}),final(){let e=E(n.runId,{tail:0});if(!e)throw new i(`flow-failed`,`[flow] run ${n.runId} vanished while following.`,{hint:`Recent runs: coder flow list`});return e}}}function Ae(e){let t=L(e);if(!t)throw new i(`flow-failed`,`No flow run "${e}".`,{hint:`Recent runs: coder flow list`});if(t.status===`running`||t.status===`queued`)throw new i(`flow-failed`,`Run ${t.runId} is still running.`,{runId:t.runId,hint:`Stop it first: coder flow stop ${t.runId}`});return t}function je(e,t={}){if(t.allStopped){let e=B().filter(e=>e.status!==`running`&&e.status!==`queued`);for(let t of e)N(t);let t=e.map(e=>e.runId);return{archived:t,count:t.length}}if(!e)throw new i(`invalid-option`,`Missing run id.`,{hint:[`Archive one: coder flow archive <run-id>`,`Archive all stopped: coder flow archive --all-stopped`]});let n=Ae(e);return N(n),{runId:n.runId,archived:!0}}function Me(e,t={}){if(t.allArchived){let e=V().filter(e=>P(e.runId)).map(e=>e.runId);return{deleted:e,count:e.length}}if(!e)throw new i(`invalid-option`,`Missing run id.`,{hint:[`Delete one: coder flow delete <run-id>`,`Delete all archived: coder flow delete --all-archived`]});let n=Ae(e);return{runId:n.runId,deleted:P(n.runId)}}function O(){return`flow-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}function k(){let e=u();return m(e)}function A(){return t()}function j(e){n(e,`flow run id`);let t=y.join(k(),e);if(S.existsSync(y.join(t,`flow.json`)))return t;let r=y.join(A(),e);return S.existsSync(y.join(r,`flow.json`))?r:t}function M(e){if(e.archived)return e;let t={...e,archived:!0,archivedAt:new Date().toISOString()};return R(j(e.runId),t),t}function N(e){let t=j(e.runId),n=y.join(A(),e.runId);return t!==n&&h(t,n),M(e)}function Ne(e){for(let t of e){let e=L(t);e&&N(e)}}function Pe(e){let t=j(e.runId),n=y.join(k(),e.runId);t!==n&&h(t,n);let r={...e,archived:void 0,archivedAt:void 0};return R(j(e.runId),r),r}function P(e){let t=j(e);return S.existsSync(y.join(t,`flow.json`))?(S.rmSync(t,{recursive:!0,force:!0}),!0):!1}function F(e){if(!d(e))return null;let t=y.join(j(e),`flow.json`);if(!S.existsSync(t))return null;try{return JSON.parse(S.readFileSync(t,`utf8`))}catch{return null}}function I(e){return e.status!==`running`||!e.pid||Q(e)?e:(Z(e.runId,`orchestrator died`),F(e.runId)??e)}function L(e){let t=F(e);return t?I(t):null}function R(e,t){S.writeFileSync(y.join(e,`flow.json`),`${JSON.stringify(t,null,2)}\n`,`utf8`)}function z(e){let t=[];try{t=S.readdirSync(e)}catch{return[]}let n=[];for(let r of t)try{n.push(I(JSON.parse(S.readFileSync(y.join(e,r,`flow.json`),`utf8`))))}catch{}return n}const Fe=(e,t)=>String(t.startedAt).localeCompare(String(e.startedAt));function B(){let e=[];for(let t of z(k()))t.archived?N(t):e.push(t);return e.sort(Fe)}function V(e){let t=e?.migrate??!0,n=z(A()),r=new Set(n.map(e=>e.runId));for(let e of z(k()))e.archived&&!r.has(e.runId)&&n.push(t?N(e):e);return n.sort(Fe)}function H(){return[...B(),...V()].sort(Fe)[0]??null}function Ie(e,t=`all`){if(t===0)return[];let n=w(y.join(j(e),`journal.jsonl`)).filter(e=>e.kind===`task`),r=f(b.cwd()),i=new Map(r.map(e=>[e.id,e])),a=e=>e?.name??e?.prompt?.replace(/\s+/g,` `).trim().slice(0,60)??null,o=n.map(e=>{let t=e.taskId?i.get(e.taskId):void 0;return{taskId:e.taskId??null,name:a(t),status:t?.status??e.result?.status??`?`,tokens:e.tokens??null}}),s=new Set(o.map(e=>e.taskId));for(let t of r)t.flowRunId===e&&!s.has(t.id)&&o.push({taskId:t.id,name:a(t),status:t.status,tokens:null});return t===`all`?o:o.slice(-t)}function Le(e={}){let t=e.limit===`all`?void 0:e.limit,n;if(e.archived)n=V();else{let e=[];n=B().filter(t=>t.status===`running`||t.status===`queued`||a(t.endedAt??t.startedAt)<=18e5||(M(t),e.push(t.runId),!1)),oe(b.cwd(),e,{flows:!0})}let r=t===void 0?0:Math.max(0,n.length-t);return{runs:t===void 0?n:n.slice(0,t),clipped:r}}const Re=globalThis,U=Re.__coderFlowCtxALS??=new me,W=Re.__coderFlowScopeALS??=new me;function ze(){return W.getStore()?.args}function Be(){return U.getStore()?.integrationToken}function G(){return W.getStore()?.depth??0}var Ve=class{limit;active=0;queue=[];constructor(e){this.limit=e}async run(e){this.active<this.limit?this.active+=1:await new Promise(e=>this.queue.push(e));try{return await e()}finally{let e=this.queue.shift();e?e():--this.active}}};function He(e,t){return t?e?{input:e.input+t.input,cachedInput:e.cachedInput+t.cachedInput,output:e.output+t.output,total:e.total+t.total}:{...t}:e}function Ue(e,t){if(!t.tokens)return;let n=t.model??`default`;e.ledger[n]=He(e.ledger[n]??null,t.tokens)}function We(e){return!!e&&typeof e.safeParse==`function`}async function K(e){try{let t=await import(`zod`);if(typeof t.toJSONSchema==`function`)return t.toJSONSchema(e)}catch{}return null}async function Ge(e){let t=await K(e);return`Reply with only a single JSON object ${t?`matching this JSON Schema:\n${JSON.stringify(t,null,2)}`:`matching the requested shape`}\nUse no prose or markdown fences. Return only the JSON object.`}function Ke(e){let t=e.trim(),n=t.match(/```(?:json)?\s*([\s\S]*?)```/i);n&&(t=n[1].trim());let r=t.indexOf(`{`);if(r===-1)throw Error(`no JSON object found in reply`);let i=0,a=!1,o=!1;for(let e=r;e<t.length;e+=1){let n=t[e];if(a){o?o=!1:n===`\\`?o=!0:n===`"`&&(a=!1);continue}if(n===`"`)a=!0;else if(n===`{`)i+=1;else if(n===`}`&&(--i,i===0))return JSON.parse(t.slice(r,e+1))}throw Error(`unterminated JSON object in reply`)}function q(e,t){if(!We(e))return{ok:!0,data:t};let n=e.safeParse(t);if(n.success)return{ok:!0,data:n.data};let r=n.error?.issues??n.error?.errors??[];return{ok:!1,errors:Array.isArray(r)?r.map(e=>`${(e.path??[]).join(`.`)||`(root)`}: ${e.message}`).join(`; `):String(n.error)}}function qe(e,t,n){return{cwd:t,engine:e.engine,model:e.model,effort:e.effort,mcp:e.mcp,permissions:n?.ceiling?_(e.name,e.permissions,n.ceiling):e.permissions,name:e.name,system:e.system,addDirs:e.addDirs,wait:!0,flowRunId:n?.runId}}async function Je(e,t,n,r){let i=t.cwd?y.resolve(t.cwd):n?.cwd??b.cwd(),a=t.returns?await K(t.returns):null,l=t.returns&&!a?[t.system,await Ge(t.returns)].filter(Boolean).join(`
|
|
4
|
-
|
|
5
|
-
`):t.system,d;for(;;){let f={prompt:e,...qe(t,i,n),system:l,...a?{outputSchema:a}:{},...d?{engine:d,model:void 0,effort:void 0,resume:void 0}:{resume:r??t.resume}},p=!!u(),m=p?await c(`dispatch`,f):await ne({...f,onFallback:e=>nt(`${e.engine} failed to start. Falling back to ${e.next}. ${e.detail.replace(/\s+/g,` `).slice(0,140)}`)});n?.running.add(m.taskId);let h=o(i,m.taskId),g=h?s(h):void 0;n?.hooks.onTaskStart?.({taskId:m.taskId,name:t.name,prompt:e,engine:g,depth:G()});let _;try{if(p)_=await c(`wait`,{taskId:m.taskId});else{let e=await te(i,m.taskId);_={status:e.status,result:e.result,model:e.task.model??null,next:ee(i,e)??null}}}finally{n?.running.delete(m.taskId)}if(_.next){let e=_.next;n?.hooks.onTaskEnd?.({taskId:m.taskId,status:`failed`,tokens:null}),d=e;continue}return{taskId:m.taskId,status:_.status,output:_.result?.finalMessage||_.result?.error?.message||``,tokens:_.result?.tokens??null,model:_.result?.model??_.model}}}async function Ye(e,t,n){if(n?.dryRun){b.stdout.write(`\n[dry-run] task${t.name?` (${t.name})`:``}:\n${e}\n`);let n={...t,returns:t.returns?`<schema>`:void 0};return b.stdout.write(`[dry-run] opts: ${JSON.stringify(n)}\n`),{taskId:`dry`,status:`completed`,output:`[dry-run]`,data:void 0,tokens:null,model:t.model??null}}let r=await Je(e,t,n);if(r.status!==`completed`){let e={...r,data:void 0};throw new i(`task-failed`,`Task ${r.taskId} ${r.status}: ${r.output||`no output`}`,{taskId:r.taskId,result:e})}let a=r.output,o=r.tokens,s;if(t.returns){let e;try{e=q(t.returns,Ke(a))}catch(t){e={ok:!1,errors:t instanceof Error?t.message:String(t)}}if(e.ok)s=e.data;else{let c=await Je(`Your previous reply did not match the required format: ${e.errors}\n\nReply again with the required JSON object.`,t,n,r.taskId);a=c.output||a,o=He(o,c.tokens);try{let e=q(t.returns,Ke(a));if(!e.ok)throw Error(e.errors);s=e.data}catch(e){let t={taskId:r.taskId,status:`completed`,output:a,data:void 0,tokens:o,model:r.model};throw new i(`task-failed`,`Task ${r.taskId} produced no valid structured output: ${e instanceof Error?e.message:String(e)}`,{taskId:r.taskId,result:t})}}}return{taskId:r.taskId,status:`completed`,output:a,data:s,tokens:o,model:r.model}}async function Xe(e){if(e)return await K(e)??`<schema>`}async function Ze(e,t={}){let n=U.getStore();if(!n)return Ye(e,t);let r={prompt:e,agent:t.engine,model:t.model,effort:t.effort,...t.mcp===void 0?{}:{mcp:t.mcp},permissions:t.permissions,name:t.name,system:t.system,resume:t.resume,cwd:t.cwd,...t.addDirs?.length?{addDirs:t.addDirs}:{},returns:await Xe(t.returns)},a=C(`task`,ge(r)),o=n.journal.replay(a,C(`task`,r));if(o)return o.result;if(n.taskCount+=1,n.taskCount>n.maxTasks)throw Error(`Flow exceeded --max-tasks (${n.maxTasks}). Raise it with --max-tasks, or fix a runaway loop; the run is resumable.`);return n.semaphore.run(async()=>{let r=new Date().toISOString(),o;try{o=await Ye(e,t,n)}catch(e){let t=e instanceof i?e.result:void 0;throw t&&n.hooks.onTaskEnd?.({taskId:t.taskId,status:t.status===`completed`?`failed`:t.status,tokens:t.tokens}),e}return Ue(n,o),n.dryRun||n.hooks.onTaskEnd?.({taskId:o.taskId,status:o.status,tokens:o.tokens}),n.journal.record({kind:`task`,fingerprint:a,result:o,taskId:o.taskId,tokens:o.tokens,startedAt:r,endedAt:new Date().toISOString()}),o})}const J=262144;function Qe(e){let t=[];for(let n=e;;){t.push(y.join(n,`node_modules`,`.bin`));let e=y.dirname(n);if(e===n)break;n=e}let n=b.platform===`win32`?`;`:`:`;return{...b.env,PATH:[...t,b.env.PATH??``].join(n)}}async function $e(e,t){return new Promise(n=>{let r=le(e,{shell:!0,cwd:t,env:Qe(t)}),i=``,a=e=>{i.length>=J||(i+=e,i.length>=J&&(i=`${i.slice(0,J)}\n... [gate output truncated]`))};r.stdout?.on(`data`,a),r.stderr?.on(`data`,a),r.on(`error`,e=>n({ok:!1,code:1,output:String(e.message??e).trim()})),r.on(`close`,e=>n({ok:e===0,code:e??0,output:i.trim()}))})}async function et(e,t={}){let n=U.getStore(),r=t.cwd?y.resolve(t.cwd):n?.cwd??b.cwd();if(!n)return $e(e,r);let i=C(`gate`,{cmd:e,cwd:t.cwd}),a=n.journal.replay(i);if(a)return a.result;if(n.dryRun){b.stdout.write(`\n[dry-run] gate: ${e}\n`);let t={ok:!0,code:0,output:``};return n.journal.record({kind:`gate`,fingerprint:i,result:t,startedAt:new Date().toISOString(),endedAt:new Date().toISOString()}),t}let o=new Date().toISOString(),s=`gate-${b.pid}-${fe()}`,c=G();n.hooks.onGateStart?.({gateId:s,cmd:e,depth:c});let l=await $e(e,r);return n.hooks.onGate?.({gateId:s,cmd:e,ok:l.ok,code:l.code,depth:c}),n.journal.record({kind:`gate`,fingerprint:i,result:l,startedAt:o,endedAt:new Date().toISOString()}),l}async function tt(e,...t){return Promise.all(e.map(async(e,n)=>{let r=e;for(let i of t)try{r=await i(r,e,n)}catch{return null}return r}))}function nt(e){let t=U.getStore();if(t)try{S.appendFileSync(y.join(t.runDir,`flow.log`),`${JSON.stringify({at:new Date().toISOString(),message:e})}\n`,`utf8`)}catch{}t?.hooks.onLog?t.hooks.onLog(e,G()):(b.stderr.isTTY||!t)&&b.stderr.write(`[flow] ${e}\n`)}const rt=se(import.meta.url);function it(e){let t=y.dirname(ce(import.meta.url));for(;y.basename(t)!==`dist`&&y.dirname(t)!==t;)t=y.dirname(t);return y.basename(t)===`dist`?x(y.join(t,e)).href:null}function at(e){if(!(e===`@wular/coder`||e===`@wular/coder/flow`||e===`zod`||e.startsWith(`zod/`)))return null;try{return x(rt.resolve(e)).href}catch{}return e===`@wular/coder/flow`?it(`flow/index.js`):e===`@wular/coder`?it(`sdk.js`):null}const ot=/(\bfrom\s+|\bimport\s+|\bimport\s*\(\s*)(['"])([^'"]+)\2/g;function st(e){return e.replace(ot,(e,t,n,r)=>{let i=at(r);return i?`${t}${n}${i}${n}`:e})}async function ct(e){let t=W.getStore(),n=t.imports??={dirs:new Set,node:!1};if(b.versions?.bun){if(n.dirs.has(e))return;n.dirs.add(e);let{plugin:t}=await import(`bun`),r=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);t({name:`coder-flow:${e}`,setup(e){e.onLoad({filter:RegExp(`^${r}/(?!.*node_modules/).*\\.m?[jt]sx?$`)},e=>({contents:st(S.readFileSync(e.path,`utf8`)),loader:y.extname(e.path).replace(/^\.m?/,``)}))}});return}if(n.node)return;n.node=!0;let{register:r}=await import(`node:module`),i=Object.fromEntries([`@wular/coder`,`@wular/coder/flow`,`zod`].flatMap(e=>{let t=at(e);return t?[[e,t]]:[]})),a=`const urls = ${JSON.stringify(i)}, parent = ${JSON.stringify(import.meta.url)};
|
|
6
|
-
export function resolve(spec, ctx, next) {
|
|
7
|
-
if (urls[spec]) return { url: urls[spec], shortCircuit: true };
|
|
8
|
-
return next(spec, spec.startsWith('zod/') ? { ...ctx, parentURL: parent } : ctx);
|
|
9
|
-
}`;r(`data:text/javascript,${encodeURIComponent(a)}`)}async function lt(e,t,n){try{return await import(x(e).href)}catch(e){let r=e instanceof Error?e.message:String(e);throw t===`.ts`&&!b.versions?.bun&&/Unknown file extension|Unexpected token|SyntaxError|Cannot parse|import type|interface/i.test(r)?Error(`Could not run ${y.basename(n)}: TypeScript flows need bun. Run under \`bun\`, or write the flow as .mjs/.js.`):e}}async function ut(e){if(!S.existsSync(e))throw Error(`Cannot read flow file: ${e}`);return await ct(y.dirname(e)),lt(e,y.extname(e),e)}async function dt(e,t){let n=W.getStore();n.args=t??{};let r=await ut(e),i=U.getStore();i?.flowConcurrency&&!n.depth&&typeof r.concurrency==`number`&&(i.semaphore.limit=Math.max(1,r.concurrency),R(i.runDir,{...L(i.runId),concurrency:i.semaphore.limit}));let a=r.args,o=n.args;if(We(a)){let e=a.safeParse(t??{});if(!e.success){let e=q(a,t??{});throw Error(`Invalid flow args: ${e.errors??`validation failed`}`)}o=e.data,n.args=o}let s=r.default;return typeof s==`function`?s(o):s}async function ft(e,t){let n=U.getStore(),r=n?.cwd??b.cwd(),i=v(e,r);if(!n)return W.run({args:t??{},depth:0},()=>dt(i.path,t));let a=W.getStore();if(a&&a.depth>=1)throw Error(`flow("${e}") nesting is one level deep; a sub-flow cannot call flow().`);let o=C(`flow`,{name:i.name,args:t??{}}),s=n.journal.replay(o);if(s)return s.result;let c=new Date().toISOString();n.hooks.onFlowStart?.({name:i.name,depth:(a?.depth??0)+1});let l=await W.run({args:t??{},depth:(a?.depth??0)+1,imports:a?.imports},()=>dt(i.path,t));return n.journal.record({kind:`flow`,fingerprint:o,result:l,startedAt:c,endedAt:new Date().toISOString()}),l}var pt=e({STOP_KEEP_TASKS_MARKER:()=>mt,markRunFailed:()=>Z,orchestratorAlive:()=>Q,pidAlive:()=>ht,prepareRun:()=>Y,resumeFlow:()=>$,runFlowByName:()=>St,stopFlowTasks:()=>_t,stopRun:()=>vt,streamFlowCore:()=>yt});function Y(e,t={},n){let r,i,a;if(n){let e=L(n);if(!e)throw Error(`No flow run "${n}".`);e.archived&&Pe(e),r=e.name,i=e.script,a=t.args??e.args}else{let n=v(e,t.cwd?y.resolve(t.cwd):b.cwd());r=n.name,i=n.path,a=t.args??{}}let o=n??t.runId??O(),s=j(o);S.mkdirSync(s,{recursive:!0});let c={runId:o,name:r,script:i,args:a,status:`running`,startedAt:new Date().toISOString(),concurrency:Math.max(1,t.concurrency??pe.cpus().length),maxTasks:Math.max(1,t.maxTasks??pe.cpus().length*10),taskCount:0,ledger:{}};return R(s,c),c}function X(e,t,n){R(e,{...t,endedAt:new Date().toISOString(),pid:void 0,pidStartedAt:void 0,...n})}function Z(e,t){let n=F(e);!n||n.status!==`running`||X(j(e),n,{status:`failed`,error:t})}const mt=`stop-keep-tasks`;function ht(e){try{return b.kill(e,0),!0}catch{return!1}}function Q(e){if(!e.pid||!ht(e.pid))return!1;let t=p(e.pid),n=Date.parse(e.pidStartedAt??``);return t===null||!Number.isFinite(n)||t<=n+6e4}function gt(e){let t=f(b.cwd()),n=new Map(t.map(e=>[e.id,e])),r=new Set(t.filter(t=>t.flowRunId===e).map(e=>e.id));for(let t of w(y.join(j(e),`journal.jsonl`)))t.kind===`task`&&t.taskId&&r.add(t.taskId);return[...r].filter(e=>{let t=n.get(e);return!!t&&!g.includes(t.status)})}async function _t(e,t=[]){let n=b.cwd(),r=[];for(let i of new Set([...gt(e),...t])){let e=o(n,i);if(!(!e||g.includes(e.status)))try{await ae(n,e),r.push(i)}catch{}}return r}async function vt(e,t={}){let n=e?L(e):H();if(!n)throw new i(`flow-failed`,e?`No flow run "${e}".`:`No flow runs.`,{hint:`Run one: coder flow run <name>`});if(n.status!==`running`)throw new i(`flow-failed`,`Run ${n.runId} is not running.`,{runId:n.runId,hint:`Result: coder flow result ${n.runId}`});let r=j(n.runId);if(!Q(n))return X(r,n,{status:`failed`,error:`orchestrator died`}),{runId:n.runId,status:`failed`,stoppedTasks:[],keptTasks:gt(n.runId)};let a=gt(n.runId),s=y.join(r,mt);t.keepTasks&&S.writeFileSync(s,``,`utf8`);try{b.kill(n.pid,`SIGINT`);let e=L(n.runId);for(let t=0;t<25&&e?.status===`running`;t+=1)await new Promise(e=>setTimeout(e,200)),e=L(n.runId);if(!e||e.status===`running`)throw new i(`flow-failed`,`Run ${n.runId} did not stop within 5s.`,{runId:n.runId,hint:`Check it: coder flow result ${n.runId}`});let t=b.cwd(),r=[],s=[];for(let e of a){let n=o(t,e);n&&(n.status===`cancelled`?r.push(e):g.includes(n.status)||s.push(e))}return{runId:n.runId,status:e.status,stoppedTasks:r,keptTasks:s}}finally{if(t.keepTasks)try{S.unlinkSync(s)}catch{}}}async function*yt(e,t,n={}){let r=y.join(j(e),`events.jsonl`),i=n.tail??`all`,a=0;if(i!==`all`)try{a=Math.max(0,S.readFileSync(r,`utf8`).split(`
|
|
10
|
-
`).length-1-i)}catch{}let o=l(r),s=()=>{let e=[];for(let t of o()){if(a>0){--a;continue}try{e.push(JSON.parse(t))}catch{}}return e},c=L(e);for(;!c||c.status===`running`;){yield*s();let n=c?.pid?!Q(c):t!==void 0&&!ht(t);if(c&&(c.pid||t!==void 0)&&n){Z(e,`orchestrator died`);break}await new Promise(e=>setTimeout(e,400)),c=L(e)??c}yield*s()}function bt(e,t,n,r){let i={...Y(e,t,r),pid:b.pid,pidStartedAt:new Date().toISOString()},{runId:a}=i,o=j(a);R(o,i);let s=y.join(o,`journal.jsonl`),c=r?w(s):[],l=new _e(c,s),u={runId:a,runDir:o,cwd:t.cwd?y.resolve(t.cwd):b.cwd(),journal:l,semaphore:new Ve(i.concurrency),flowConcurrency:t.concurrency===void 0,maxTasks:i.maxTasks,dryRun:t.dryRun??!1,ledger:{},running:new Set,taskCount:0,stopping:!1,hooks:n,...t.integrationToken?{integrationToken:t.integrationToken}:{},...t.ceiling?{ceiling:t.ceiling}:{}};return{started:{runId:a,runDir:o,ctx:u,markStopped:()=>{u.stopping=!0,X(o,i,{status:`stopped`,concurrency:u.semaphore.limit,taskCount:u.taskCount,ledger:u.ledger})}},args:i.args,name:i.name,replayable:c.length}}async function xt(e,t,n,r){let{ctx:a,runDir:o,runId:s}=e,c=L(s);try{let e=await U.run(a,()=>W.run({args:r??{},depth:0},()=>dt(t,r)));return X(o,c,{status:`completed`,concurrency:a.semaphore.limit,taskCount:a.taskCount,ledger:a.ledger,result:e}),{runId:s,name:n,status:`completed`,result:e,tokens:a.ledger,taskCount:a.taskCount}}catch(e){throw a.stopping||X(o,c,{status:`failed`,concurrency:a.semaphore.limit,taskCount:a.taskCount,ledger:a.ledger,error:e instanceof Error?e.message:String(e)}),e instanceof i&&(e.code===`chain-exhausted`||e.code===`approval-pending`)?(e.runId??=s,e):new i(`flow-failed`,e instanceof Error?e.message:String(e),{runId:s})}}async function St(e,t={},n={}){let{started:r}=bt(e,t,n),i=L(r.runId).script;return n.onStart?.({runId:r.runId,requestStop:r.markStopped,runningIds:()=>[...r.ctx.running]}),xt(r,i,L(r.runId).name,t.args??{})}async function $(e,t={},n={}){let{started:r,args:i,name:a,replayable:o}=bt(``,t,n,e),s=L(e).script;return n.onStart?.({runId:e,requestStop:r.markStopped,runningIds:()=>[...r.ctx.running]}),o&&n.onReplay?.(o),xt(r,s,a,i)}export{Oe as _,Be as a,De as b,et as c,Ze as d,je as f,L as g,O as h,vt as i,nt as l,Me as m,St as n,ze as o,Le as p,_t as r,ft as s,pt as t,tt as u,E as v,D as x,ve as y};
|
package/dist/flow-DmERAnR8.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as e}from"./cli-B1ObVrL4.js";const t=e(`flow`,{run:async()=>(await import(`./run-D7SJ-ieT.js`)).commandRun,list:async()=>(await import(`./list-KvL7AUhD.js`)).commandList,ls:async()=>(await import(`./list-KvL7AUhD.js`)).commandList,discover:async()=>(await import(`./discover-lgTYwoQp.js`)).commandDiscover,result:async()=>(await import(`./result-D49VN8PM.js`)).commandResult,watch:async()=>(await import(`./watch-DmwaEvoi.js`)).commandWatch,stream:async()=>(await import(`./watch-DmwaEvoi.js`)).commandWatch,stop:async()=>(await import(`./stop-TrebIIuv.js`)).commandStop,resume:async()=>(await import(`./resume-ywzc7z6A.js`)).commandResume,archive:async()=>(await import(`./archive-C5c_HQS1.js`)).commandArchive,delete:async()=>(await import(`./delete-Bjteibld.js`)).commandDelete},{menu:[{usage:`run <name|path> [--wait] [--args ...]`,blurb:`run a flow in the background (--wait to follow it live)`},{usage:`list`,blurb:`recent flow runs (by default running + just stopped)`},{usage:`discover`,blurb:`list flows runnable here (workspace + global)`},{usage:`result [run-id]`,blurb:`progress and result of a run`},{usage:`watch [run-id]`,blurb:`watch a run live (replay + follow)`},{usage:`stop [run-id]`,blurb:`stop a run and its still-running tasks`},{usage:`resume [run-id]`,blurb:`continue a stopped or edited run`},{usage:`archive <run-id> | --all-stopped`,blurb:`hide a run (or all stopped) from the list`},{usage:`delete <run-id> | --all-archived`,blurb:`delete a run's record (or all archived)`}],description:[`Orchestrate many coder tasks with a plain TypeScript file: dispatch, gates,`,`concurrency, journaling, and resume. Flows live in .coder/flows/ (workspace)`,"or ~/.coder/flows/ (global). See `coder docs flows`."]},{aliases:{stream:`watch`,ls:`list`},hint:`Run a flow: coder flow run <name>`});export{t as commandFlow};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{a as t,i as n,n as r,o as i}from"./local-BRy1EUq2.js";var a=e({ACTIONS_WORKFLOW_YAML:()=>o,GithubActionsRunner:()=>c});const o=`name: Coder agent
|
|
2
|
-
run-name: Coder agent \${{ inputs.task }}
|
|
3
|
-
on:
|
|
4
|
-
workflow_dispatch:
|
|
5
|
-
inputs:
|
|
6
|
-
task: { required: true, type: string }
|
|
7
|
-
server: { required: true, type: string }
|
|
8
|
-
token: { required: true, type: string }
|
|
9
|
-
mode: { required: true, type: string }
|
|
10
|
-
jobs:
|
|
11
|
-
run:
|
|
12
|
-
runs-on: ubuntu-latest
|
|
13
|
-
steps:
|
|
14
|
-
- uses: actions/setup-node@v4
|
|
15
|
-
with: { node-version: 22 }
|
|
16
|
-
- run: npm i -g @wular/coder @anthropic-ai/claude-code @openai/codex
|
|
17
|
-
${n().map(e=>` - run: sudo sh -c '${e}'\n`).join(``)} - run: coder agent run --task "$TASK"
|
|
18
|
-
env:
|
|
19
|
-
TASK: \${{ inputs.task }}
|
|
20
|
-
CODER_SERVER: \${{ inputs.server }}
|
|
21
|
-
CODER_TASK_TOKEN: \${{ inputs.token }}
|
|
22
|
-
CODER_INBOX_MODE: \${{ inputs.mode }}
|
|
23
|
-
`,s=e=>t(e);var c=class{options;kind=`github-actions`;fetcher;constructor(e={}){this.options=e,this.fetcher=e.fetch??fetch}async request(e,t={},n=1e4){if(!this.options.token)throw Error(`RUNNER_CONFIG.token is required for github-actions`);let r=AbortSignal.timeout(n);for(let n=0;;n++){let i=await this.fetcher(`https://api.github.com${e}`,{...t,signal:r,redirect:`manual`,headers:{accept:`application/vnd.github+json`,authorization:`Bearer ${this.options.token}`,"content-type":`application/json`,"user-agent":`coder`,"x-github-api-version":`2022-11-28`,...t.headers}});if((t.method??`GET`)!==`GET`||n===2||i.status!==429&&i.status<500)return i;let a=Number(i.headers.get(`retry-after`));await i.body?.cancel(),await new Promise((e,t)=>{let i=()=>{clearTimeout(s),r.removeEventListener(`abort`,o)},o=()=>{i(),t(r.reason)},s=setTimeout(()=>{i(),e()},Number.isFinite(a)&&a>0?a*1e3:100*2**n);r.addEventListener(`abort`,o,{once:!0}),r.aborted&&o()})}}async start(e,t){let n=this.options.repo??(e.event?.repo&&`${e.event.repo.owner}/${e.event.repo.name}`);if(!n)throw Error(`The github-actions runner requires a repository`);let r=Date.now()+(this.options.lookupTimeoutMs??25e3),a=encodeURIComponent(this.options.workflow??`coder-agent.yml`),o=e.event?.repo,s=this.options.ref??(o&&`${o.owner}/${o.name}`===n?o.defaultBranch:void 0);if(!s){let e=await this.request(`/repos/${n}`,{},Math.max(1,r-Date.now()));if(!e.ok)throw Error(`GitHub repository lookup failed: ${e.status}`);let t=await e.json();if(!t.default_branch)throw Error(`GitHub repository has no default branch`);s=t.default_branch}let c=`/repos/${n}/actions/workflows/${a}/runs?event=workflow_dispatch&per_page=100&branch=${encodeURIComponent(s)}`,l=await this.request(c,{},Math.max(1,r-Date.now()));if(!l.ok)throw Error(`GitHub workflow run lookup failed: ${l.status}`);let u=await l.json(),d=Math.max(0,...u.workflow_runs.map(e=>e.id)),f=await this.request(`/repos/${n}/actions/workflows/${a}/dispatches`,{method:`POST`,body:JSON.stringify({ref:s,inputs:{task:e.id,server:t.CODER_SERVER,token:t.CODER_TASK_TOKEN,mode:t.CODER_INBOX_MODE}})},Math.max(1,r-Date.now()));if(f.status!==204)throw Error(`GitHub workflow dispatch failed: ${f.status}`);do{for(let t=1;Date.now()<r;t++){let a=await this.request(`${c}&page=${t}`,{},Math.max(1,r-Date.now()));if(!a.ok)throw Error(`GitHub workflow run lookup failed: ${a.status}`);let o=(await a.json()).workflow_runs.find(t=>t.id>d&&t.display_title===`Coder agent ${e.id}`);if(o)return i({repo:n,run:o.id});if(!a.headers.get(`link`)?.includes(`rel="next"`))break}await new Promise(e=>setTimeout(e,Math.min(this.options.pollIntervalMs??1e3,Math.max(0,r-Date.now()))))}while(Date.now()<r);throw Error(`GitHub workflow run for task ${e.id} was not found before timeout`)}async status(e){let{repo:t,run:n}=s(e),r=await this.request(`/repos/${t}/actions/runs/${n}`);if(r.status===404)return{state:`exited`,code:1};if(!r.ok)throw Error(`GitHub workflow status failed: ${r.status}`);let i=await r.json();return i.status===`completed`?{state:`exited`,code:i.conclusion===`success`?0:1}:{state:`running`}}async logs(e,t=-1){let{repo:n,run:i}=s(e),a=[];for(let e=1;;e++){let t=await this.request(`/repos/${n}/actions/runs/${i}/jobs?per_page=100&page=${e}`);if(!t.ok)throw Error(`GitHub workflow jobs failed: ${t.status}`);let r=await t.json();if(a.push(...r.jobs),!t.headers.get(`link`)?.includes(`rel="next"`))break}let o=[];for(let e of a.sort((e,t)=>e.id-t.id)){let r=await this.request(`/repos/${n}/actions/jobs/${e.id}/logs`);if(r.status===404)return{lines:[],next:t};if(r.status===302&&r.headers.get(`location`)){let e=await this.fetcher(r.headers.get(`location`),{redirect:`manual`,signal:AbortSignal.timeout(1e4)});if(!e.ok)throw Error(`GitHub job log download failed: ${e.status}`);o.push(await e.text())}else if(r.ok)o.push(await r.text());else throw Error(`GitHub job logs failed: ${r.status}`)}let c=r(o.join(`
|
|
24
|
-
`));return{lines:c.slice(t+1),next:Math.max(t,c.length-1)}}async stop(e){let{repo:t,run:n}=s(e),r=await this.request(`/repos/${t}/actions/runs/${n}/cancel`,{method:`POST`});if(r.status!==202&&r.status!==409)throw Error(`GitHub workflow cancellation failed: ${r.status}`)}};export{c as n,a as r,o as t};
|
package/dist/http-D01Udu4u.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,o as t}from"./local-BRy1EUq2.js";import{Readable as n}from"node:stream";import{pipeline as r}from"node:stream/promises";function i(e,t=200,n={}){return new Response(JSON.stringify(e),{status:t,headers:{"content-type":`application/json`,...n}})}const a=e=>e.searchParams.has(`cursor`);function o(t){if(t)try{return e(t)}catch{return}}const s=e=>o(e.searchParams.get(`cursor`));function c(e,t=50,n=200){let r=Number(e.searchParams.get(`limit`)??t);return Number.isInteger(r)&&r>0?Math.min(r,n):t}function l(e,n,r){let i=e.slice(0,n);return{items:i,...e.length>n?{next:t(r(i.at(-1)))}:{}}}const u=(e,t=302)=>new Response(null,{status:t,headers:{location:e}}),d=()=>new Response(`Forbidden`,{status:403}),f=()=>new Response(`Not found`,{status:404}),p=()=>new Response(`Method not allowed`,{status:405}),m=e=>u(`/login?return=${encodeURIComponent(`${e.pathname}${e.search}`)}`),h=e=>e.startsWith(`/api/auth`)?65536:1048576;async function g(e,t,n){let r=Number(t??0);if(Number.isFinite(r)&&r>n)throw Object.assign(Error(`Payload too large`),{status:413});let i=[],a=0;for await(let t of e){if(a+=t.byteLength,a>n)throw Object.assign(Error(`Payload too large`),{status:413});i.push(t)}let o=new Uint8Array(a),s=0;for(let e of i)o.set(e,s),s+=e.byteLength;return o}function _(e){let t=new Headers;for(let[n,r]of Object.entries(e))r!==void 0&&t.set(n,Array.isArray(r)?r.join(`, `):r);return t}async function v(e,t,n){let r=e.url??`/`,i=await g(e,e.headers[`content-length`],t);return new Request(`http://${e.headers.host??`localhost`}${r}`,{method:e.method,headers:_(e.headers),body:i.byteLength?Buffer.from(i):void 0,signal:n})}function y(e,{limit:t,admit:i=()=>!0}){return async(a,o)=>{if(!i(a))return void o.writeHead(404).end(`Not found`);let s=new AbortController,c=()=>{a.socket.destroyed&&s.abort()};o.once(`close`,()=>s.abort()),c();try{let i=await e(await v(a,t(a.url??`/`),s.signal),a.socket.remoteAddress?.replace(/^::ffff:/,``));c();let l=Object.fromEntries(i.headers.entries()),u=i.headers.getSetCookie();u.length&&(l[`set-cookie`]=u),o.writeHead(i.status,l),i.body?await r(n.fromWeb(i.body),o).catch(()=>{}):o.end()}catch(e){if(o.headersSent)return void o.destroy();let t=typeof e==`object`&&e&&`status`in e;t||console.error(`coder server: request failed`,e);let n=t?e instanceof Error?e.message:String(e):`Internal server error`;o.writeHead(t?Number(e.status):500,{"content-type":`application/json`}),o.end(JSON.stringify({error:n}))}}}async function b(e,t){if(e.method===`GET`||e.method===`HEAD`||!e.body)return e;try{let n=await g(e.body,e.headers.get(`content-length`)??void 0,t);return new Request(e.url,{method:e.method,headers:e.headers,body:n.byteLength?Buffer.from(n):void 0,signal:e.signal})}catch(e){if(e.status===413)return new Response(`Payload too large`,{status:413});throw e}}export{i as a,p as c,c as d,a as f,d as i,f as l,m,s as n,b as o,u as p,o as r,y as s,h as t,l as u};
|