@wular/coder 0.2.12 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,17 +1,4 @@
1
1
  #!/usr/bin/env node
2
- var IY=Object.defineProperty;var b2=(Y,W)=>{for(var Q in W)IY(Y,Q,{get:W[Q],enumerable:!0,configurable:!0,set:(X)=>W[Q]=()=>X})};import r from"node:fs";import T2 from"node:net";import m0 from"node:path";import S from"node:process";var f0;function L(Y,W,Q){function X(K,z){if(!K._zod)Object.defineProperty(K,"_zod",{value:{def:z,constr:G,traits:new Set},enumerable:!1});if(K._zod.traits.has(Y))return;K._zod.traits.add(Y),W(K,z);let J=G.prototype,N=Object.keys(J);for(let U=0;U<N.length;U++){let B=N[U];if(!(B in K))K[B]=J[B].bind(K)}}let q=Q?.Parent??Object;class H extends q{}Object.defineProperty(H,"name",{value:Y});function G(K){var z;let J=Q?.Parent?new H:this;X(J,K),(z=J._zod).deferred??(z.deferred=[]);for(let N of J._zod.deferred)N();return J}return Object.defineProperty(G,"init",{value:X}),Object.defineProperty(G,Symbol.hasInstance,{value:(K)=>{if(Q?.Parent&&K instanceof Q.Parent)return!0;return K?._zod?.traits?.has(Y)}}),Object.defineProperty(G,"name",{value:Y}),G}var g2=Symbol("zod_brand");class v extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}(f0=globalThis).__zod_globalConfig??(f0.__zod_globalConfig={});var A0=globalThis.__zod_globalConfig;function _(Y){if(Y)Object.assign(A0,Y);return A0}function p0(Y){let W=Object.values(Y).filter((X)=>typeof X==="number");return Object.entries(Y).filter(([X,q])=>W.indexOf(+X)===-1).map(([X,q])=>q)}function l0(Y,W){if(typeof W==="bigint")return W.toString();return W}function o0(Y){return{get value(){{let Q=Y();return Object.defineProperty(this,"value",{value:Q}),Q}throw Error("cached value already set")}}}function n0(Y){return Y===null||Y===void 0}function V0(Y){let W=Y.startsWith("^")?1:0,Q=Y.endsWith("$")?Y.length-1:Y.length;return Y.slice(W,Q)}var r0=Symbol("evaluating");function M(Y,W,Q){let X=void 0;Object.defineProperty(Y,W,{get(){if(X===r0)return;if(X===void 0)X=r0,X=Q();return X},set(q){Object.defineProperty(Y,W,{value:q})},configurable:!0})}function d0(Y,W,Q){Object.defineProperty(Y,W,{value:Q,writable:!0,enumerable:!0,configurable:!0})}function i0(...Y){let W={};for(let Q of Y){let X=Object.getOwnPropertyDescriptors(Q);Object.assign(W,X)}return Object.defineProperties({},W)}var P0="captureStackTrace"in Error?Error.captureStackTrace:(...Y)=>{};function X0(Y){return typeof Y==="object"&&Y!==null&&!Array.isArray(Y)}function $0(Y){if(X0(Y)===!1)return!1;let W=Y.constructor;if(W===void 0)return!0;if(typeof W!=="function")return!0;let Q=W.prototype;if(X0(Q)===!1)return!1;if(Object.prototype.hasOwnProperty.call(Q,"isPrototypeOf")===!1)return!1;return!0}var t0=new Set(["string","number","symbol"]);function l(Y){return Y.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function o(Y,W,Q){let X=new Y._zod.constr(W??Y._zod.def);if(!W||Q?.parent)X._zod.parent=Y;return X}function O(Y){let W=Y;if(!W)return{};if(typeof W==="string")return{error:()=>W};if(W?.message!==void 0){if(W?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");W.error=W.message}if(delete W.message,typeof W.error==="string")return{...W,error:()=>W.error};return W}function s0(Y){return Object.keys(Y).filter((W)=>{return Y[W]._zod.optin==="optional"&&Y[W]._zod.optout==="optional"})}var a0={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-340282346638528860000000000000000000000,340282346638528860000000000000000000000],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function e0(Y,W){if(!$0(W))throw Error("Invalid input to extend: expected a plain object");let Q=Y._zod.def.checks;if(Q&&Q.length>0){let H=Y._zod.def.shape;for(let G in W)if(Object.getOwnPropertyDescriptor(H,G)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let q=i0(Y._zod.def,{get shape(){let H={...Y._zod.def.shape,...W};return d0(this,"shape",H),H}});return o(Y,q)}function Y3(Y,W,Q){let q=W._zod.def.checks;if(q&&q.length>0)throw Error(".partial() cannot be used on object schemas containing refinements");let G=i0(W._zod.def,{get shape(){let K=W._zod.def.shape,z={...K};if(Q)for(let J in Q){if(!(J in K))throw Error(`Unrecognized key: "${J}"`);if(!Q[J])continue;z[J]=Y?new Y({type:"optional",innerType:K[J]}):K[J]}else for(let J in K)z[J]=Y?new Y({type:"optional",innerType:K[J]}):K[J];return d0(this,"shape",z),z},checks:[]});return o(W,G)}function m(Y,W=0){if(Y.aborted===!0)return!0;for(let Q=W;Q<Y.issues.length;Q++)if(Y.issues[Q]?.continue!==!0)return!0;return!1}function W3(Y,W=0){if(Y.aborted===!0)return!0;for(let Q=W;Q<Y.issues.length;Q++)if(Y.issues[Q]?.continue===!1)return!0;return!1}function x(Y,W){return W.map((Q)=>{var X;return(X=Q).path??(X.path=[]),Q.path.unshift(Y),Q})}function Q0(Y){return typeof Y==="string"?Y:Y?.message}function C(Y,W,Q){let X=Y.message?Y.message:Q0(Y.inst?._zod.def?.error?.(Y))??Q0(W?.error?.(Y))??Q0(Q.customError?.(Y))??Q0(Q.localeError?.(Y))??"Invalid input",{inst:q,continue:H,input:G,...K}=Y;if(K.path??(K.path=[]),K.message=X,W?.reportInput)K.input=G;return K}function Q3(Y){if(Array.isArray(Y))return"array";if(typeof Y==="string")return"string";return"unknown"}var X3=(Y,W)=>{Y.name="$ZodError",Object.defineProperty(Y,"_zod",{value:Y._zod,enumerable:!1}),Object.defineProperty(Y,"issues",{value:W,enumerable:!1}),Y.message=JSON.stringify(W,l0,2),Object.defineProperty(Y,"toString",{value:()=>Y.message,enumerable:!1})},q3=L("$ZodError",X3),n=L("$ZodError",X3,{Parent:Error});var wY=(Y)=>(W,Q,X,q)=>{let H=X?{...X,async:!1}:{async:!1},G=W._zod.run({value:Q,issues:[]},H);if(G instanceof Promise)throw new v;if(G.issues.length){let K=new(q?.Err??Y)(G.issues.map((z)=>C(z,H,_())));throw P0(K,q?.callee),K}return G.value},q0=wY(n),FY=(Y)=>async(W,Q,X,q)=>{let H=X?{...X,async:!0}:{async:!0},G=W._zod.run({value:Q,issues:[]},H);if(G instanceof Promise)G=await G;if(G.issues.length){let K=new(q?.Err??Y)(G.issues.map((z)=>C(z,H,_())));throw P0(K,q?.callee),K}return G.value},G0=FY(n),RY=(Y)=>(W,Q,X)=>{let q=X?{...X,async:!1}:{async:!1},H=W._zod.run({value:Q,issues:[]},q);if(H instanceof Promise)throw new v;return H.issues.length?{success:!1,error:new(Y??q3)(H.issues.map((G)=>C(G,q,_())))}:{success:!0,data:H.value}},d=RY(n),MY=(Y)=>async(W,Q,X)=>{let q=X?{...X,async:!0}:{async:!0},H=W._zod.run({value:Q,issues:[]},q);if(H instanceof Promise)H=await H;return H.issues.length?{success:!1,error:new Y(H.issues.map((G)=>C(G,q,_())))}:{success:!0,data:H.value}},i=MY(n);var G3=/^https?$/;var SY="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",jY=new RegExp(`^${SY}$`);var H3=(Y)=>{let W=Y?`[\\s\\S]{${Y?.minimum??0},${Y?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${W}$`)},K3=/^-?\d+n?$/,z3=/^-?\d+$/,H0=/^-?\d+(?:\.\d+)?$/,J3=/^(?:true|false)$/i;var k=L("$ZodCheck",(Y,W)=>{var Q;Y._zod??(Y._zod={}),Y._zod.def=W,(Q=Y._zod).onattach??(Q.onattach=[])}),TY={number:"number",bigint:"bigint",object:"date"};var O0=L("$ZodCheckGreaterThan",(Y,W)=>{k.init(Y,W);let Q=TY[typeof W.value];Y._zod.onattach.push((X)=>{let q=X._zod.bag,H=(W.inclusive?q.minimum:q.exclusiveMinimum)??Number.NEGATIVE_INFINITY;if(W.value>H)if(W.inclusive)q.minimum=W.value;else q.exclusiveMinimum=W.value}),Y._zod.check=(X)=>{if(W.inclusive?X.value>=W.value:X.value>W.value)return;X.issues.push({origin:Q,code:"too_small",minimum:typeof W.value==="object"?W.value.getTime():W.value,input:X.value,inclusive:W.inclusive,inst:Y,continue:!W.abort})}});var N3=L("$ZodCheckNumberFormat",(Y,W)=>{k.init(Y,W),W.format=W.format||"float64";let Q=W.format?.includes("int"),X=Q?"int":"number",[q,H]=a0[W.format];Y._zod.onattach.push((G)=>{let K=G._zod.bag;if(K.format=W.format,K.minimum=q,K.maximum=H,Q)K.pattern=z3}),Y._zod.check=(G)=>{let K=G.value;if(Q){if(!Number.isInteger(K)){G.issues.push({expected:X,format:W.format,code:"invalid_type",continue:!1,input:K,inst:Y});return}if(!Number.isSafeInteger(K)){if(K>0)G.issues.push({input:K,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:Y,origin:X,inclusive:!0,continue:!W.abort});else G.issues.push({input:K,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:Y,origin:X,inclusive:!0,continue:!W.abort});return}}if(K<q)G.issues.push({origin:"number",input:K,code:"too_small",minimum:q,inclusive:!0,inst:Y,continue:!W.abort});if(K>H)G.issues.push({origin:"number",input:K,code:"too_big",maximum:H,inclusive:!0,inst:Y,continue:!W.abort})}});var L3=L("$ZodCheckMinLength",(Y,W)=>{var Q;k.init(Y,W),(Q=Y._zod.def).when??(Q.when=(X)=>{let q=X.value;return!n0(q)&&q.length!==void 0}),Y._zod.onattach.push((X)=>{let q=X._zod.bag.minimum??Number.NEGATIVE_INFINITY;if(W.minimum>q)X._zod.bag.minimum=W.minimum}),Y._zod.check=(X)=>{let q=X.value;if(q.length>=W.minimum)return;let G=Q3(q);X.issues.push({origin:G,code:"too_small",minimum:W.minimum,inclusive:!0,input:q,inst:Y,continue:!W.abort})}});var I0=L("$ZodCheckStringFormat",(Y,W)=>{var Q,X;if(k.init(Y,W),Y._zod.onattach.push((q)=>{let H=q._zod.bag;if(H.format=W.format,W.pattern)H.patterns??(H.patterns=new Set),H.patterns.add(W.pattern)}),W.pattern)(Q=Y._zod).check??(Q.check=(q)=>{if(W.pattern.lastIndex=0,W.pattern.test(q.value))return;q.issues.push({origin:"string",code:"invalid_format",format:W.format,input:q.value,...W.pattern?{pattern:W.pattern.toString()}:{},inst:Y,continue:!W.abort})});else(X=Y._zod).check??(X.check=()=>{})}),U3=L("$ZodCheckRegex",(Y,W)=>{I0.init(Y,W),Y._zod.check=(Q)=>{if(W.pattern.lastIndex=0,W.pattern.test(Q.value))return;Q.issues.push({origin:"string",code:"invalid_format",format:"regex",input:Q.value,pattern:W.pattern.toString(),inst:Y,continue:!W.abort})}});var B3={major:4,minor:4,patch:3};var w=L("$ZodType",(Y,W)=>{var Q;Y??(Y={}),Y._zod.def=W,Y._zod.bag=Y._zod.bag||{},Y._zod.version=B3;let X=[...Y._zod.def.checks??[]];if(Y._zod.traits.has("$ZodCheck"))X.unshift(Y);for(let q of X)for(let H of q._zod.onattach)H(Y);if(X.length===0)(Q=Y._zod).deferred??(Q.deferred=[]),Y._zod.deferred?.push(()=>{Y._zod.run=Y._zod.parse});else{let q=(G,K,z)=>{let J=m(G),N;for(let U of K){if(U._zod.def.when){if(W3(G))continue;if(!U._zod.def.when(G))continue}else if(J)continue;let B=G.issues.length,E=U._zod.check(G);if(E instanceof Promise&&z?.async===!1)throw new v;if(N||E instanceof Promise)N=(N??Promise.resolve()).then(async()=>{if(await E,G.issues.length===B)return;if(!J)J=m(G,B)});else{if(G.issues.length===B)continue;if(!J)J=m(G,B)}}if(N)return N.then(()=>{return G});return G},H=(G,K,z)=>{if(m(G))return G.aborted=!0,G;let J=q(K,X,z);if(J instanceof Promise){if(z.async===!1)throw new v;return J.then((N)=>Y._zod.parse(N,z))}return Y._zod.parse(J,z)};Y._zod.run=(G,K)=>{if(K.skipChecks)return Y._zod.parse(G,K);if(K.direction==="backward"){let J=Y._zod.parse({value:G.value,issues:[]},{...K,skipChecks:!0});if(J instanceof Promise)return J.then((N)=>{return H(N,G,K)});return H(J,G,K)}let z=Y._zod.parse(G,K);if(z instanceof Promise){if(K.async===!1)throw new v;return z.then((J)=>q(J,X,K))}return q(z,X,K)}}M(Y,"~standard",()=>({validate:(q)=>{try{let H=d(Y,q);return H.success?{value:H.data}:{issues:H.error?.issues}}catch(H){return i(Y,q).then((G)=>G.success?{value:G.data}:{issues:G.error?.issues})}},vendor:"zod",version:1}))}),D0=L("$ZodString",(Y,W)=>{w.init(Y,W),Y._zod.pattern=[...Y?._zod.bag?.patterns??[]].pop()??H3(Y._zod.bag),Y._zod.parse=(Q,X)=>{if(W.coerce)try{Q.value=String(Q.value)}catch(q){}if(typeof Q.value==="string")return Q;return Q.issues.push({expected:"string",code:"invalid_type",input:Q.value,inst:Y}),Q}}),w0=L("$ZodStringFormat",(Y,W)=>{I0.init(Y,W),D0.init(Y,W)});var E3=L("$ZodURL",(Y,W)=>{w0.init(Y,W),Y._zod.check=(Q)=>{try{let X=Q.value.trim();if(!W.normalize&&W.protocol?.source===G3.source){if(!/^https?:\/\//i.test(X)){Q.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:Q.value,inst:Y,continue:!W.abort});return}}let q=new URL(X);if(W.hostname){if(W.hostname.lastIndex=0,!W.hostname.test(q.hostname))Q.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:W.hostname.source,input:Q.value,inst:Y,continue:!W.abort})}if(W.protocol){if(W.protocol.lastIndex=0,!W.protocol.test(q.protocol.endsWith(":")?q.protocol.slice(0,-1):q.protocol))Q.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:W.protocol.source,input:Q.value,inst:Y,continue:!W.abort})}if(W.normalize)Q.value=q.href;else Q.value=X;return}catch(X){Q.issues.push({code:"invalid_format",format:"url",input:Q.value,inst:Y,continue:!W.abort})}}});var F0=L("$ZodNumber",(Y,W)=>{w.init(Y,W),Y._zod.pattern=Y._zod.bag.pattern??H0,Y._zod.parse=(Q,X)=>{if(W.coerce)try{Q.value=Number(Q.value)}catch(G){}let q=Q.value;if(typeof q==="number"&&!Number.isNaN(q)&&Number.isFinite(q))return Q;let H=typeof q==="number"?Number.isNaN(q)?"NaN":!Number.isFinite(q)?"Infinity":void 0:void 0;return Q.issues.push({expected:"number",code:"invalid_type",input:q,inst:Y,...H?{received:H}:{}}),Q}}),O3=L("$ZodNumberFormat",(Y,W)=>{N3.init(Y,W),F0.init(Y,W)}),I3=L("$ZodBoolean",(Y,W)=>{w.init(Y,W),Y._zod.pattern=J3,Y._zod.parse=(Q,X)=>{if(W.coerce)try{Q.value=Boolean(Q.value)}catch(H){}let q=Q.value;if(typeof q==="boolean")return Q;return Q.issues.push({expected:"boolean",code:"invalid_type",input:q,inst:Y}),Q}}),D3=L("$ZodBigInt",(Y,W)=>{w.init(Y,W),Y._zod.pattern=K3,Y._zod.parse=(Q,X)=>{if(W.coerce)try{Q.value=BigInt(Q.value)}catch(q){}if(typeof Q.value==="bigint")return Q;return Q.issues.push({expected:"bigint",code:"invalid_type",input:Q.value,inst:Y}),Q}});var w3=L("$ZodNever",(Y,W)=>{w.init(Y,W),Y._zod.parse=(Q,X)=>{return Q.issues.push({expected:"never",code:"invalid_type",input:Q.value,inst:Y}),Q}});var F3=L("$ZodDate",(Y,W)=>{w.init(Y,W),Y._zod.parse=(Q,X)=>{if(W.coerce)try{Q.value=new Date(Q.value)}catch(K){}let q=Q.value,H=q instanceof Date;if(H&&!Number.isNaN(q.getTime()))return Q;return Q.issues.push({expected:"date",code:"invalid_type",input:q,...H?{received:"Invalid Date"}:{},inst:Y}),Q}});function V3(Y,W,Q){if(Y.issues.length)W.issues.push(...x(Q,Y.issues));W.value[Q]=Y.value}var R3=L("$ZodArray",(Y,W)=>{w.init(Y,W),Y._zod.parse=(Q,X)=>{let q=Q.value;if(!Array.isArray(q))return Q.issues.push({expected:"array",code:"invalid_type",input:q,inst:Y}),Q;Q.value=Array(q.length);let H=[];for(let G=0;G<q.length;G++){let K=q[G],z=W.element._zod.run({value:K,issues:[]},X);if(z instanceof Promise)H.push(z.then((J)=>V3(J,Q,G)));else V3(z,Q,G)}if(H.length)return Promise.all(H).then(()=>Q);return Q}});function K0(Y,W,Q,X,q,H){let G=Q in X;if(Y.issues.length){if(q&&H&&!G)return;W.issues.push(...x(Q,Y.issues))}if(!G&&!q){if(!Y.issues.length)W.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[Q]});return}if(Y.value===void 0){if(G)W.value[Q]=void 0}else W.value[Q]=Y.value}function _Y(Y){let W=Object.keys(Y.shape);for(let X of W)if(!Y.shape?.[X]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${X}": expected a Zod schema`);let Q=s0(Y.shape);return{...Y,keys:W,keySet:new Set(W),numKeys:W.length,optionalKeys:new Set(Q)}}function CY(Y,W,Q,X,q,H){let G=[],K=q.keySet,z=q.catchall._zod,J=z.def.type,N=z.optin==="optional",U=z.optout==="optional";for(let B in W){if(B==="__proto__")continue;if(K.has(B))continue;if(J==="never"){G.push(B);continue}let E=z.run({value:W[B],issues:[]},X);if(E instanceof Promise)Y.push(E.then((j)=>K0(j,Q,B,W,N,U)));else K0(E,Q,B,W,N,U)}if(G.length)Q.issues.push({code:"unrecognized_keys",keys:G,input:W,inst:H});if(!Y.length)return Q;return Promise.all(Y).then(()=>{return Q})}var M3=L("$ZodObject",(Y,W)=>{if(w.init(Y,W),!Object.getOwnPropertyDescriptor(W,"shape")?.get){let K=W.shape;Object.defineProperty(W,"shape",{get:()=>{let z={...K};return Object.defineProperty(W,"shape",{value:z}),z}})}let X=o0(()=>_Y(W));M(Y._zod,"propValues",()=>{let K=W.shape,z={};for(let J in K){let N=K[J]._zod;if(N.values){z[J]??(z[J]=new Set);for(let U of N.values)z[J].add(U)}}return z});let q=X0,H=W.catchall,G;Y._zod.parse=(K,z)=>{G??(G=X.value);let J=K.value;if(!q(J))return K.issues.push({expected:"object",code:"invalid_type",input:J,inst:Y}),K;K.value={};let N=[],U=G.shape;for(let B of G.keys){let E=U[B],j=E._zod.optin==="optional",Y0=E._zod.optout==="optional",b=E._zod.run({value:J[B],issues:[]},z);if(b instanceof Promise)N.push(b.then((h)=>K0(h,K,B,J,j,Y0)));else K0(b,K,B,J,j,Y0)}if(!H)return N.length?Promise.all(N).then(()=>K):K;return CY(N,J,K,z,X.value,Y)}});function P3(Y,W,Q,X){for(let H of Y)if(H.issues.length===0)return W.value=H.value,W;let q=Y.filter((H)=>!m(H));if(q.length===1)return W.value=q[0].value,q[0];return W.issues.push({code:"invalid_union",input:W.value,inst:Q,errors:Y.map((H)=>H.issues.map((G)=>C(G,X,_())))}),W}var S3=L("$ZodUnion",(Y,W)=>{w.init(Y,W),M(Y._zod,"optin",()=>W.options.some((X)=>X._zod.optin==="optional")?"optional":void 0),M(Y._zod,"optout",()=>W.options.some((X)=>X._zod.optout==="optional")?"optional":void 0),M(Y._zod,"values",()=>{if(W.options.every((X)=>X._zod.values))return new Set(W.options.flatMap((X)=>Array.from(X._zod.values)));return}),M(Y._zod,"pattern",()=>{if(W.options.every((X)=>X._zod.pattern)){let X=W.options.map((q)=>q._zod.pattern);return new RegExp(`^(${X.map((q)=>V0(q.source)).join("|")})$`)}return});let Q=W.options.length===1?W.options[0]._zod.run:null;Y._zod.parse=(X,q)=>{if(Q)return Q(X,q);let H=!1,G=[];for(let K of W.options){let z=K._zod.run({value:X.value,issues:[]},q);if(z instanceof Promise)G.push(z),H=!0;else{if(z.issues.length===0)return z;G.push(z)}}if(!H)return P3(G,X,Y,q);return Promise.all(G).then((K)=>{return P3(K,X,Y,q)})}});var j3=L("$ZodRecord",(Y,W)=>{w.init(Y,W),Y._zod.parse=(Q,X)=>{let q=Q.value;if(!$0(q))return Q.issues.push({expected:"record",code:"invalid_type",input:q,inst:Y}),Q;let H=[],G=W.keyType._zod.values;if(G){Q.value={};let K=new Set;for(let J of G)if(typeof J==="string"||typeof J==="number"||typeof J==="symbol"){K.add(typeof J==="number"?J.toString():J);let N=W.keyType._zod.run({value:J,issues:[]},X);if(N instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(N.issues.length){Q.issues.push({code:"invalid_key",origin:"record",issues:N.issues.map((E)=>C(E,X,_())),input:J,path:[J],inst:Y});continue}let U=N.value,B=W.valueType._zod.run({value:q[J],issues:[]},X);if(B instanceof Promise)H.push(B.then((E)=>{if(E.issues.length)Q.issues.push(...x(J,E.issues));Q.value[U]=E.value}));else{if(B.issues.length)Q.issues.push(...x(J,B.issues));Q.value[U]=B.value}}let z;for(let J in q)if(!K.has(J))z=z??[],z.push(J);if(z&&z.length>0)Q.issues.push({code:"unrecognized_keys",input:q,inst:Y,keys:z})}else{Q.value={};for(let K of Reflect.ownKeys(q)){if(K==="__proto__")continue;if(!Object.prototype.propertyIsEnumerable.call(q,K))continue;let z=W.keyType._zod.run({value:K,issues:[]},X);if(z instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(typeof K==="string"&&H0.test(K)&&z.issues.length){let U=W.keyType._zod.run({value:Number(K),issues:[]},X);if(U instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(U.issues.length===0)z=U}if(z.issues.length){if(W.mode==="loose")Q.value[K]=q[K];else Q.issues.push({code:"invalid_key",origin:"record",issues:z.issues.map((U)=>C(U,X,_())),input:K,path:[K],inst:Y});continue}let N=W.valueType._zod.run({value:q[K],issues:[]},X);if(N instanceof Promise)H.push(N.then((U)=>{if(U.issues.length)Q.issues.push(...x(K,U.issues));Q.value[z.value]=U.value}));else{if(N.issues.length)Q.issues.push(...x(K,N.issues));Q.value[z.value]=N.value}}}if(H.length)return Promise.all(H).then(()=>Q);return Q}});var T3=L("$ZodEnum",(Y,W)=>{w.init(Y,W);let Q=p0(W.entries),X=new Set(Q);Y._zod.values=X,Y._zod.pattern=new RegExp(`^(${Q.filter((q)=>t0.has(typeof q)).map((q)=>typeof q==="string"?l(q):q.toString()).join("|")})$`),Y._zod.parse=(q,H)=>{let G=q.value;if(X.has(G))return q;return q.issues.push({code:"invalid_value",values:Q,input:G,inst:Y}),q}}),Z3=L("$ZodLiteral",(Y,W)=>{if(w.init(Y,W),W.values.length===0)throw Error("Cannot create literal schema with no valid values");let Q=new Set(W.values);Y._zod.values=Q,Y._zod.pattern=new RegExp(`^(${W.values.map((X)=>typeof X==="string"?l(X):X?l(X.toString()):String(X)).join("|")})$`),Y._zod.parse=(X,q)=>{let H=X.value;if(Q.has(H))return X;return X.issues.push({code:"invalid_value",values:W.values,input:H,inst:Y}),X}});function $3(Y,W){if(W===void 0&&(Y.issues.length||Y.fallback))return{issues:[],value:void 0};return Y}var _3=L("$ZodOptional",(Y,W)=>{w.init(Y,W),Y._zod.optin="optional",Y._zod.optout="optional",M(Y._zod,"values",()=>{return W.innerType._zod.values?new Set([...W.innerType._zod.values,void 0]):void 0}),M(Y._zod,"pattern",()=>{let Q=W.innerType._zod.pattern;return Q?new RegExp(`^(${V0(Q.source)})?$`):void 0}),Y._zod.parse=(Q,X)=>{if(W.innerType._zod.optin==="optional"){let q=Q.value,H=W.innerType._zod.run(Q,X);if(H instanceof Promise)return H.then((G)=>$3(G,q));return $3(H,q)}if(Q.value===void 0)return Q;return W.innerType._zod.run(Q,X)}});function C3(Y,W){return new Y({type:"string",...O(W)})}function m4(Y,W){return new Y({type:"string",coerce:!0,...O(W)})}function v3(Y,W){return new Y({type:"string",format:"url",check:"string_format",abort:!1,...O(W)})}function x3(Y,W){return new Y({type:"number",checks:[],...O(W)})}function u4(Y,W){return new Y({type:"number",coerce:!0,checks:[],...O(W)})}function b3(Y,W){return new Y({type:"number",check:"number_format",abort:!1,format:"safeint",...O(W)})}function k3(Y,W){return new Y({type:"boolean",...O(W)})}function y4(Y,W){return new Y({type:"boolean",coerce:!0,...O(W)})}function f4(Y,W){return new Y({type:"bigint",coerce:!0,...O(W)})}function g3(Y,W){return new Y({type:"never",...O(W)})}function r4(Y,W){return new Y({type:"date",coerce:!0,...O(W)})}function xY(Y,W){return new O0({check:"greater_than",...O(W),value:Y,inclusive:!1})}function bY(Y,W){return new O0({check:"greater_than",...O(W),value:Y,inclusive:!0})}function p4(Y){return xY(0,Y)}function l4(Y){return bY(0,Y)}function o4(Y,W){return new L3({check:"min_length",...O(W),minimum:Y})}function n4(Y,W){return new U3({check:"string_format",format:"regex",...O(W),pattern:Y})}var F=L("ZodMiniType",(Y,W)=>{if(!Y._zod)throw Error("Uninitialized schema in ZodMiniType.");w.init(Y,W),Y.def=W,Y.type=W.type,Y.parse=(Q,X)=>q0(Y,Q,X,{callee:Y.parse}),Y.safeParse=(Q,X)=>d(Y,Q,X),Y.parseAsync=async(Q,X)=>G0(Y,Q,X,{callee:Y.parseAsync}),Y.safeParseAsync=async(Q,X)=>i(Y,Q,X),Y.check=(...Q)=>{return Y.clone({...W,checks:[...W.checks??[],...Q.map((X)=>typeof X==="function"?{_zod:{check:X,def:{check:"custom"},onattach:[]}}:X)]},{parent:!0})},Y.with=Y.check,Y.clone=(Q,X)=>o(Y,Q,X),Y.brand=()=>Y,Y.register=(Q,X)=>{return Q.add(Y,X),Y},Y.apply=(Q)=>Q(Y)}),c3=L("ZodMiniString",(Y,W)=>{D0.init(Y,W),F.init(Y,W)});function t(Y){return C3(c3,Y)}var gY=L("ZodMiniStringFormat",(Y,W)=>{w0.init(Y,W),c3.init(Y,W)});var hY=L("ZodMiniURL",(Y,W)=>{E3.init(Y,W),gY.init(Y,W)});function s9(Y){return v3(hY,Y)}var m3=L("ZodMiniNumber",(Y,W)=>{F0.init(Y,W),F.init(Y,W)});function a9(Y){return x3(m3,Y)}var cY=L("ZodMiniNumberFormat",(Y,W)=>{O3.init(Y,W),m3.init(Y,W)});function e9(Y){return b3(cY,Y)}var mY=L("ZodMiniBoolean",(Y,W)=>{I3.init(Y,W),F.init(Y,W)});function u3(Y){return k3(mY,Y)}var YQ=L("ZodMiniBigInt",(Y,W)=>{D3.init(Y,W),F.init(Y,W)});var uY=L("ZodMiniNever",(Y,W)=>{w3.init(Y,W),F.init(Y,W)});function yY(Y){return g3(uY,Y)}var WQ=L("ZodMiniDate",(Y,W)=>{F3.init(Y,W),F.init(Y,W)});var fY=L("ZodMiniArray",(Y,W)=>{R3.init(Y,W),F.init(Y,W)});function QQ(Y,W){return new fY({type:"array",element:Y,...O(W)})}var y3=L("ZodMiniObject",(Y,W)=>{M3.init(Y,W),F.init(Y,W),M(Y,"shape",()=>W.shape)});function f3(Y,W){let Q={type:"object",shape:Y??{},...O(W)};return new y3(Q)}function XQ(Y,W){return new y3({type:"object",shape:Y,catchall:yY(),...O(W)})}function qQ(Y,W){return e0(Y,W)}function GQ(Y,W){return Y3(r3,Y,W)}var rY=L("ZodMiniUnion",(Y,W)=>{S3.init(Y,W),F.init(Y,W)});function HQ(Y,W){return new rY({type:"union",options:Y,...O(W)})}var h3=L("ZodMiniRecord",(Y,W)=>{j3.init(Y,W),F.init(Y,W)});function KQ(Y,W,Q){if(!W||!W._zod)return new h3({type:"record",keyType:t(),valueType:Y,...O(W)});return new h3({type:"record",keyType:Y,valueType:W,...O(Q)})}var pY=L("ZodMiniEnum",(Y,W)=>{T3.init(Y,W),F.init(Y,W),Y.options=Object.values(W.entries)});function zQ(Y,W){let Q=Array.isArray(Y)?Object.fromEntries(Y.map((X)=>[X,X])):Y;return new pY({type:"enum",entries:Q,...O(W)})}var lY=L("ZodMiniLiteral",(Y,W)=>{Z3.init(Y,W),F.init(Y,W)});function JQ(Y,W){return new lY({type:"literal",values:Array.isArray(Y)?Y:[Y],...O(W)})}var r3=L("ZodMiniOptional",(Y,W)=>{_3.init(Y,W),F.init(Y,W)});function R0(Y){return new r3({type:"optional",innerType:Y})}var nY=R0(u3()),z0=R0(t()),LQ={cwd:z0,json:nY};function M0(Y){let W=Y.def;while(W){if(W.type==="boolean")return!0;let Q=W.innerType??W.in;W=Q?Q.def:void 0}return!1}function p3(Y,W){let Q=W.shape,X={},q=[],H=!1,G=(z,J,N,U)=>{let B=Q[J],E=U?"-":"--";if(!B)throw Error(`Unknown option ${E}${z} (use -- to pass literal text starting with -)`);if(M0(B))return X[J]=N===void 0?!0:N!=="false",0;if(N===void 0)throw Error(`Missing value for ${E}${z}`);return X[J]=N,1};for(let z=0;z<Y.length;z+=1){let J=Y[z];if(H){q.push(J);continue}if(J==="--"){H=!0;continue}if(!J.startsWith("-")||J==="-"){q.push(J);continue}if(J.startsWith("--")){let[U,B]=J.slice(2).split("=",2);if(B===void 0&&Q[U]&&!M0(Q[U]))z+=G(U,U,Y[z+1],!1);else G(U,U,B,!1);continue}let N=J.slice(1);if(Q[N]&&!M0(Q[N]))z+=G(N,N,Y[z+1],!0);else G(N,N,void 0,!0)}let K=W.safeParse(X);if(!K.success){let z=K.error.issues[0],J=String(z.path[0]??""),N=X[J];throw Error(N===void 0?`Missing required --${J}.`:`Invalid --${J} value ${JSON.stringify(N)}: ${z.message}`)}return{options:K.data,positionals:q}}import F2 from"node:net";import e from"node:process";import{spawn as R2}from"node:child_process";import M2 from"node:readline";import l3 from"node:path";import dY from"node:process";function iY(Y){return String(Y??"").replace(/[^A-Za-z0-9._-]/g,"-").replace(/^-+|-+$/g,"")}function o3(Y,W=dY.platform){if(W==="win32")return`pipe:\\\\.\\pipe\\${iY(`${l3.win32.basename(Y)}-codex-app-server`)}`;return`unix:${l3.join(Y,"broker.sock")}`}function g(Y){if(typeof Y!=="string"||Y.length===0)throw Error("Missing broker endpoint.");if(Y.startsWith("pipe:")){let W=Y.slice(5);if(!W)throw Error("Broker pipe endpoint is missing its path.");return{kind:"pipe",path:W}}if(Y.startsWith("unix:")){let W=Y.slice(5);if(!W)throw Error("Broker Unix socket endpoint is missing its path.");return{kind:"unix",path:W}}throw Error(`Unsupported broker endpoint: ${Y}`)}import D from"node:fs";import z2 from"node:net";import J2 from"node:os";import y from"node:path";import v0 from"node:process";import{spawn as N2}from"node:child_process";import{fileURLToPath as L2}from"node:url";import{execFileSync as a3}from"node:child_process";import $ from"node:fs";import eY from"node:os";import P from"node:path";import{spawn as d3,spawnSync as tY}from"node:child_process";import sY from"node:fs";import aY from"node:os";import n3 from"node:path";function i3(Y){try{let W=d3("codex",["archive",Y],{detached:!0,stdio:"ignore"});W.on("error",()=>{}),W.unref()}catch{}}function IQ(Y){let W=n3.join(process.env.CODEX_HOME||n3.join(aY.homedir(),".codex"),"archived_sessions");try{return sY.readdirSync(W).some((Q)=>Q.endsWith(`-${Y}.jsonl`))}catch{return!1}}function DQ(Y){return new Promise((W)=>{try{let Q=d3("codex",["unarchive",Y],{stdio:"ignore"});Q.on("error",()=>W(!1)),Q.on("close",(X)=>W(X===0))}catch{W(!1)}})}function wQ(Y){return tY("codex",["delete","--force",Y],{encoding:"utf8"}).status===0}var t3=["completed","failed","cancelled"],RQ=["queued","running"];var Y2="CODER_HOME";function e3(){return P.resolve(process.env[Y2]||P.join(eY.homedir(),".coder"))}var s3=new Map;function vQ(Y){let W=s3.get(Y);if(W!==void 0)return W;let Q;try{Q=a3("git",["rev-parse","--show-toplevel"],{cwd:Y,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()}catch{Q=Y}return s3.set(Y,Q),Q}var YY="global";function s(Y){return P.join(e3(),"state",YY)}var J0=null;function j0(){if(J0)return J0;let Y=P.join(e3(),"state"),W=[];try{W=$.readdirSync(Y,{withFileTypes:!0})}catch{}return J0=W.filter((Q)=>Q.isDirectory()&&Q.name!==YY).map((Q)=>P.join(Y,Q.name)),J0}function T0(Y){return P.join(s(Y),"jobs")}function N0(Y){return P.join(s(Y),"archive")}function T(Y,W){let Q=P.join(T0(Y),W);if($.existsSync(P.join(Q,"job.json")))return Q;let X=P.join(N0(Y),W);if($.existsSync(P.join(X,"job.json")))return X;for(let q of j0()){let H=P.join(q,"jobs",W);if($.existsSync(P.join(H,"job.json")))return H}return Q}function W2(Y,W){return W.archived?W:QY(Y,W.id,{archived:!0,archivedAt:new Date().toISOString()})}function WY(Y,W){let Q=W2(Y,W);if(W.engine==="codex"&&W.threadId)i3(W.threadId);let X=T(Y,W.id),q=P.join(N0(Y),W.id);if(X!==q)try{$.mkdirSync(N0(Y),{recursive:!0}),$.renameSync(X,q)}catch{}return Q}function xQ(){let Y=Math.random().toString(36).slice(2,8);return`coder-${Date.now().toString(36)}-${Y}`}function QY(Y,W,Q){let X=T(Y,W);$.mkdirSync(X,{recursive:!0});let q=P.join(X,"job.json"),G={...qY(Y,W)??{id:W,createdAt:new Date().toISOString(),status:"queued"},...Q,updatedAt:new Date().toISOString()};return $.writeFileSync(q,`${JSON.stringify(G,null,2)}
3
- `,"utf8"),G}function XY(Y){if(!Y.engine&&(Y.agent==="codex"||Y.agent==="claude"))Y.engine=Y.agent;return Y}function qY(Y,W){let Q=P.join(T(Y,W),"job.json");if(!$.existsSync(Q))return null;try{return XY(JSON.parse($.readFileSync(Q,"utf8")))}catch{return null}}function bQ(Y,W){let Q=T(Y,W);if(!$.existsSync(Q))return!1;return $.rmSync(Q,{recursive:!0,force:!0}),!0}function Q2(Y){if(!Y)return!1;try{return process.kill(Y,0),!0}catch(W){return W.code==="EPERM"}}function X2(Y){try{let W=a3("ps",["-o","lstart=","-p",String(Y)],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim(),Q=W?Date.parse(W):NaN;return Number.isFinite(Q)?Q:null}catch{return null}}function q2(Y,W){if(!Q2(Y))return!1;let Q=X2(Y),X=Date.parse(W.createdAt??"");if(Q===null||!Number.isFinite(X))return!0;return Q<=X+60000}var G2=60000;function GY(Y,W){if(W.status!=="running"&&W.status!=="queued")return W;let Q;if(W.pid)Q=!q2(W.pid,W);else{let X=Date.parse(W.updatedAt??W.createdAt??"");Q=Number.isFinite(X)&&Date.now()-X>G2}if(Q)return QY(Y,W.id,{status:"failed",error:"worker exited without finishing",completedAt:new Date().toISOString()});return W}function S0(Y,W){let Q=[];for(let X of Y){let q=[];try{q=$.readdirSync(X)}catch{continue}for(let H of q){if(W.has(H))continue;let G=P.join(X,H,"job.json");try{let K=XY(JSON.parse($.readFileSync(G,"utf8")));W.add(H),Q.push(K)}catch{}}}return Q}var Z0=(Y,W)=>String(W.updatedAt??"").localeCompare(String(Y.updatedAt??""));function H2(Y){let W=[T0(Y),...j0().map((X)=>P.join(X,"jobs"))],Q=[];for(let X of S0(W,new Set))if(X.archived)WY(Y,X);else Q.push(GY(Y,X));return Q.sort(Z0)}function K2(Y,W){let Q=W?.migrate??!0,X=new Set,q=S0([N0(Y)],X),H=[T0(Y),...j0().map((G)=>P.join(G,"jobs"))];for(let G of S0(H,X))if(G.archived)q.push(Q?WY(Y,G):G);return q.sort(Z0)}function kQ(Y,W){let Q=[...H2(Y),...K2(Y)].sort(Z0);if(!W)return Q[0]??null;let X=Q.find((H)=>H.id===W);if(X)return X;let q=Q.filter((H)=>H.id.startsWith(W));if(q.length===1)return q[0];if(q.length>1)throw Error(`Job reference "${W}" is ambiguous. Use a longer id.`);return null}function gQ(Y,W){let Q=T(Y,W);try{$.mkdirSync(Q,{recursive:!0}),$.writeFileSync(P.join(Q,"heartbeat"),"","utf8")}catch{}}function hQ(Y,W){let Q=T(Y,W.id),X=Date.parse(W.updatedAt??"")||0;for(let q of["log.jsonl","heartbeat"])try{X=Math.max(X,$.statSync(P.join(Q,q)).mtimeMs)}catch{}return X?new Date(X).toISOString():void 0}async function cQ(Y,W,Q=400){let X=W;while(!t3.includes(X.status))await new Promise((q)=>setTimeout(q,Q)),X=GY(Y,qY(Y,X.id)??X);return X}var HY="steer-queue.jsonl";function mQ(Y,W,Q){let X=T(Y,W);$.mkdirSync(X,{recursive:!0}),$.appendFileSync(P.join(X,HY),`${JSON.stringify({at:new Date().toISOString(),text:Q})}
4
- `,"utf8")}function uQ(Y,W){let Q=T(Y,W),X=P.join(Q,HY),q=P.join(Q,`steer-claim-${process.pid}-${Date.now()}.tmp`);try{$.renameSync(X,q)}catch{return[]}try{return $.readFileSync(q,"utf8").split(/\r?\n/).filter(Boolean).map((H)=>{try{return String(JSON.parse(H).text??"")}catch{return""}}).filter(Boolean)}finally{try{$.unlinkSync(q)}catch{}}}function yQ(Y,W,Q){let X=T(Y,W);$.mkdirSync(X,{recursive:!0}),$.appendFileSync(P.join(X,"log.jsonl"),`${JSON.stringify({at:new Date().toISOString(),...Q})}
5
- `,"utf8")}function fQ(Y,W,Q=40){let X=P.join(T(Y,W),"log.jsonl");if(!$.existsSync(X))return[];return $.readFileSync(X,"utf8").split(/\r?\n/).filter(Boolean).slice(-Q).map((H)=>{try{return JSON.parse(H)}catch{return{message:H}}})}import _0 from"node:fs";import{fileURLToPath as C0}from"node:url";var oQ=C0(import.meta.url);function KY(){try{return JSON.parse(_0.readFileSync(C0(new URL("../package.json",import.meta.url)),"utf8")).version??"unknown"}catch{return"unknown"}}function nQ(Y){try{return JSON.parse(_0.readFileSync(Y,"utf8")).version??null}catch{return null}}function dQ(){return C0(new URL("..",import.meta.url))}var U2="broker.json";function A2(Y="coder-"){return D.mkdtempSync(y.join(J2.tmpdir(),Y))}function B2(Y){let W=g(Y);return z2.createConnection({path:W.path})}async function JY(Y,W=2000){let Q=Date.now();while(Date.now()-Q<W){if(await new Promise((q)=>{let H=B2(Y);H.on("connect",()=>{H.end(),q(!0)}),H.on("error",()=>q(!1))}))return!0;await new Promise((q)=>setTimeout(q,50))}return!1}function V2({scriptPath:Y,cwd:W,endpoint:Q,pidFile:X,logFile:q,env:H=v0.env}){let G=D.openSync(q,"a"),K=N2(v0.execPath,[Y,"serve","--endpoint",Q,"--cwd",W,"--pid-file",X],{cwd:W,env:H,detached:!0,stdio:["ignore",G,G]});return K.unref(),D.closeSync(G),K}function P2(){let Y=[new URL("./lib/broker.js",import.meta.url),new URL("./broker.js",import.meta.url)];for(let W of Y){let Q=L2(W);if(D.existsSync(Q))return Q}throw Error("Coder broker script not found next to the runtime. Rebuild with `bun run build`.")}function x0(Y){return y.join(s(Y),U2)}function b0(Y){let W=x0(Y);if(!D.existsSync(W))return null;try{return JSON.parse(D.readFileSync(W,"utf8"))}catch{return null}}function $2(Y,W){let Q=s(Y);D.mkdirSync(Q,{recursive:!0}),D.writeFileSync(x0(Y),`${JSON.stringify(W,null,2)}
6
- `,"utf8")}function E2(Y){let W=x0(Y);if(D.existsSync(W))D.unlinkSync(W)}async function O2(Y){if(!Y)return!1;try{return await JY(Y,150)}catch{return!1}}async function NY(Y,W={}){let Q=W.scriptPath??P2(),X=KY(),q=b0(Y),H=q?.version===X&&q?.scriptPath===Q;if(q&&H&&await O2(q.endpoint))return q;if(q)zY({endpoint:q.endpoint??null,pidFile:q.pidFile??null,logFile:q.logFile??null,sessionDir:q.sessionDir??null,pid:q.pid??null,killProcess:W.killProcess??null}),E2(Y);let G=A2(),z=(W.createBrokerEndpoint??o3)(G,W.platform),J=y.join(G,"broker.pid"),N=y.join(G,"broker.log"),U=V2({scriptPath:Q,cwd:Y,endpoint:z,pidFile:J,logFile:N,env:W.env??v0.env});if(!await JY(z,W.timeoutMs??2000))return zY({endpoint:z,pidFile:J,logFile:N,sessionDir:G,pid:U.pid??null,killProcess:W.killProcess??null}),null;let E={endpoint:z,pidFile:J,logFile:N,sessionDir:G,pid:U.pid??null,version:X,scriptPath:Q};return $2(Y,E),E}function zY({endpoint:Y=null,pidFile:W,logFile:Q,sessionDir:X=null,pid:q=null,killProcess:H=null}){if(Number.isFinite(q)&&H)try{H(q)}catch{}if(W&&D.existsSync(W))D.unlinkSync(W);if(Q&&D.existsSync(Q))D.unlinkSync(Q);if(Y)try{let K=g(Y);if(K.kind==="unix"&&D.existsSync(K.path))D.unlinkSync(K.path)}catch{}let G=X??(W?y.dirname(W):Q?y.dirname(Q):null);if(G&&D.existsSync(G))try{D.rmdirSync(G)}catch{}}import{spawnSync as I2}from"node:child_process";import a from"node:process";function L0(Y,W=[],Q={}){let X=I2(Y,W,{cwd:Q.cwd,env:Q.env,encoding:"utf8",input:Q.input,maxBuffer:Q.maxBuffer,stdio:Q.stdio??"pipe",shell:a.platform==="win32"?a.env.SHELL||!0:!1,windowsHide:!0});return{command:Y,args:W,status:X.status??0,signal:X.signal??null,stdout:X.stdout??"",stderr:X.stderr??"",error:X.error??null}}function J1(Y,W=["--version"],Q={}){let X=L0(Y,W,Q);if(X.error&&X.error.code==="ENOENT")return{available:!1,detail:"not found"};if(X.error)return{available:!1,detail:X.error.message};if(X.status!==0)return{available:!1,detail:X.stderr.trim()||X.stdout.trim()||`exit ${X.status}`};return{available:!0,detail:X.stdout.trim()||X.stderr.trim()||"ok"}}function D2(Y){return/not found|no running instance|cannot find|does not exist|no such process/i.test(Y)}function LY(Y,W={}){if(!Number.isFinite(Y))return{attempted:!1,delivered:!1,method:null};let Q=Y,X=W.platform??a.platform,q=W.runCommandImpl??L0,H=W.killImpl??a.kill.bind(a);if(X==="win32"){let G=q("taskkill",["/PID",String(Q),"/T","/F"],{cwd:W.cwd,env:W.env});if(!G.error&&G.status===0)return{attempted:!0,delivered:!0,method:"taskkill",result:G};let K=`${G.stderr}
7
- ${G.stdout}`.trim();if(!G.error&&D2(K))return{attempted:!0,delivered:!1,method:"taskkill",result:G};if(G.error?.code==="ENOENT")try{return H(Q),{attempted:!0,delivered:!0,method:"kill"}}catch(z){if(z?.code==="ESRCH")return{attempted:!0,delivered:!1,method:"kill"};throw z}if(G.error)throw G.error;throw Error(w2(G))}try{return H(-Q,"SIGTERM"),{attempted:!0,delivered:!0,method:"process-group"}}catch(G){if(G?.code!=="ESRCH")try{return H(Q,"SIGTERM"),{attempted:!0,delivered:!0,method:"process"}}catch(K){if(K?.code==="ESRCH")return{attempted:!0,delivered:!1,method:"process"};throw K}return{attempted:!0,delivered:!1,method:"process-group"}}}function w2(Y){let W=[`${Y.command} ${Y.args.join(" ")}`.trim()];if(Y.signal)W.push(`signal=${Y.signal}`);else W.push(`exit=${Y.status}`);let Q=(Y.stderr||"").trim(),X=(Y.stdout||"").trim();if(Q)W.push(Q);else if(X)W.push(X);return W.join(": ")}var UY="CODER_APP_SERVER_ENDPOINT",BY=-32001,S2="0.144.1",k0;function j2(){if(k0===void 0){let Y=L0("codex",["--version"]),W=/(\d+\.\d+\.\d+(?:-[\w.]+)?)/.exec(`${Y.stdout} ${Y.stderr}`);k0=W?W[1]:S2}return k0}function VY(){return{title:"Coder",name:"coder",version:j2()}}var PY={experimentalApi:!1,requestAttestation:!1,optOutNotificationMethods:["item/agentMessage/delta","item/reasoning/summaryTextDelta","item/reasoning/summaryPartAdded","item/reasoning/textDelta"]};function AY(Y,W,Q){return Q===void 0?{code:Y,message:W}:{code:Y,message:W,data:Q}}function g0(Y,W){let Q=Error(Y);if(Q.data=W,W?.code!==void 0)Q.rpcCode=W.code;return Q}class h0{cwd;options;pending;nextId;stderr;closed;exitError;notificationHandler;serverRequestHandler;lineBuffer;transport;exitPromise;exitResolved;resolveExit;handleServerRequest;constructor(Y,W={}){this.cwd=Y,this.options=W,this.pending=new Map,this.nextId=1,this.stderr="",this.closed=!1,this.exitError=null,this.notificationHandler=null,this.serverRequestHandler=null,this.lineBuffer="",this.transport="unknown",this.handleServerRequest=(Q)=>this.defaultHandleServerRequest(Q),this.exitPromise=new Promise((Q)=>{this.resolveExit=Q})}setNotificationHandler(Y){this.notificationHandler=Y}setServerRequestHandler(Y){this.serverRequestHandler=Y}request(Y,W){if(this.closed)throw Error("codex app-server client is closed.");let Q=this.nextId;return this.nextId+=1,new Promise((X,q)=>{this.pending.set(Q,{resolve:X,reject:q,method:Y}),this.sendMessage({id:Q,method:Y,params:W})})}notify(Y,W={}){if(this.closed)return;this.sendMessage({method:Y,params:W})}handleChunk(Y){this.lineBuffer+=Y;let W=this.lineBuffer.indexOf(`
8
- `);while(W!==-1){let Q=this.lineBuffer.slice(0,W);this.lineBuffer=this.lineBuffer.slice(W+1),this.handleLine(Q),W=this.lineBuffer.indexOf(`
9
- `)}}handleLine(Y){if(!Y.trim())return;let W;try{W=JSON.parse(Y)}catch(Q){this.handleExit(g0(`Failed to parse codex app-server JSONL: ${Q instanceof Error?Q.message:String(Q)}`,{line:Y}));return}if(W.id!==void 0&&W.method){this.handleServerRequest(W);return}if(W.id!==void 0){let Q=this.pending.get(W.id);if(!Q)return;if(this.pending.delete(W.id),W.error)Q.reject(g0(W.error.message??`codex app-server ${Q.method} failed.`,W.error));else Q.resolve(W.result??{});return}if(W.method&&this.notificationHandler)this.notificationHandler(W)}defaultHandleServerRequest(Y){let W=this.serverRequestHandler;if(!W){this.sendMessage({id:Y.id,error:AY(-32601,`Unsupported server request: ${Y.method}`)});return}Promise.resolve().then(()=>W(Y.method,Y.params??{})).then((Q)=>{this.sendMessage({id:Y.id,result:Q??{}})}).catch((Q)=>{this.sendMessage({id:Y.id,error:AY(-32000,Q instanceof Error?Q.message:String(Q))})})}handleExit(Y){if(this.exitResolved)return;this.exitResolved=!0,this.exitError=Y??null;for(let W of this.pending.values())W.reject(this.exitError??Error("codex app-server connection closed."));this.pending.clear(),this.resolveExit(void 0)}sendMessage(Y){throw Error("sendMessage must be implemented by subclasses.")}}class $Y extends h0{proc;readline;constructor(Y,W={}){super(Y,W);this.transport="direct"}async initialize(){this.proc=R2("codex",["-c","sandbox_workspace_write.network_access=false","app-server","--disable","plugins"],{cwd:this.cwd,env:this.options.env??e.env,stdio:["pipe","pipe","pipe"],shell:e.platform==="win32"?e.env.SHELL||!0:!1,windowsHide:!0});let Y=this.proc.stdout,W=this.proc.stderr;if(!Y||!W)throw Error("codex app-server did not expose stdio streams.");Y.setEncoding("utf8"),W.setEncoding("utf8"),W.on("data",(Q)=>{this.stderr+=Q}),this.proc.on("error",(Q)=>{this.handleExit(Q)}),this.proc.on("exit",(Q,X)=>{let q=this.stderr.trim(),H=Q===0?null:g0(`codex app-server exited unexpectedly (${X?`signal ${X}`:`exit ${Q}`}).${q?`
10
- ${q}`:""}`);this.handleExit(H)}),this.readline=M2.createInterface({input:Y}),this.readline.on("line",(Q)=>{this.handleLine(Q)}),await this.request("initialize",{clientInfo:this.options.clientInfo??VY(),capabilities:this.options.capabilities??PY}),this.notify("initialized",{})}async close(){if(this.closed){await this.exitPromise;return}if(this.closed=!0,this.readline)this.readline.close();if(this.proc&&!this.proc.killed)this.proc.stdin?.end(),setTimeout(()=>{if(this.proc&&!this.proc.killed&&this.proc.exitCode===null)if(e.platform==="win32")try{LY(this.proc.pid)}catch{}else this.proc.kill("SIGTERM")},50).unref?.();await this.exitPromise}sendMessage(Y){let W=`${JSON.stringify(Y)}
11
- `,Q=this.proc?.stdin;if(!Q)throw Error("codex app-server stdin is not available.");Q.write(W)}}class EY extends h0{endpoint;socket;constructor(Y,W={}){super(Y,W);this.transport="broker",this.endpoint=W.brokerEndpoint}async initialize(){await new Promise((Y,W)=>{let Q=g(this.endpoint);this.socket=F2.createConnection({path:Q.path}),this.socket.setEncoding("utf8"),this.socket.on("connect",Y),this.socket.on("data",(X)=>{this.handleChunk(X)}),this.socket.on("error",(X)=>{if(!this.exitResolved)W(X);this.handleExit(X)}),this.socket.on("close",()=>{this.handleExit(this.exitError)})}),await this.request("initialize",{clientInfo:this.options.clientInfo??VY(),capabilities:this.options.capabilities??PY}),this.notify("initialized",{})}async close(){if(this.closed){await this.exitPromise;return}if(this.closed=!0,this.socket)this.socket.end();await this.exitPromise}sendMessage(Y){let W=`${JSON.stringify(Y)}
12
- `,Q=this.socket;if(!Q)throw Error("codex app-server broker connection is not connected.");Q.write(W)}}class c0{static async connect(Y,W={}){let Q=null;if(!W.disableBroker){if(Q=W.brokerEndpoint??W.env?.[UY]??e.env[UY]??null,!Q&&W.reuseExistingBroker)Q=b0(Y)?.endpoint??null;if(!Q&&!W.reuseExistingBroker)Q=(await NY(Y,{env:W.env}))?.endpoint??null}let X=Q?new EY(Y,{...W,brokerEndpoint:Q}):new $Y(Y,W);return await X.initialize(),X}}var Z2=new Set(["turn/start","review/start","thread/compact/start"]);function OY(Y,W,Q){let X=new Set;if(W?.threadId)X.add(W.threadId);if(Y==="review/start"&&Q?.reviewThreadId)X.add(Q.reviewThreadId);return X}function f(Y,W,Q){return Q===void 0?{code:Y,message:W}:{code:Y,message:W,data:Q}}function Z(Y,W){if(Y.destroyed)return;Y.write(`${JSON.stringify(W)}
13
- `)}var _2=new Set(["turn/interrupt","turn/steer"]);function C2(Y){return typeof Y?.method==="string"&&_2.has(Y.method)}function v2(Y){if(!Y)return;r.mkdirSync(m0.dirname(Y),{recursive:!0}),r.writeFileSync(Y,`${S.pid}
14
- `,"utf8")}async function x2(){let[Y,...W]=S.argv.slice(2);if(Y!=="serve")throw Error("Usage: node src/lib/broker.mjs serve --endpoint <value> [--cwd <path>] [--pid-file <path>]");let{options:Q}=p3(W,f3({cwd:z0,"pid-file":z0,endpoint:t()})),X=Q.cwd?m0.resolve(S.cwd(),Q.cwd):S.cwd(),q=String(Q.endpoint),H=g(q),G=Q["pid-file"]?m0.resolve(Q["pid-file"]):null;v2(G);let K=await c0.connect(X,{disableBroker:!0}),z=null,J=null,N=null,U=new Set,B=new Map;function E(A){for(let[I,c]of B)if(c===A)B.delete(I),K.sendMessage({id:I,error:f(-32000,"Broker client disconnected before answering the server request.")})}function j(A){if(E(A),z===A)z=null;if(J===A)J=null,N=null}function Y0(A){let I=z??J;if(!I)return;if(Z(I,A),A.method==="turn/completed"&&J===I){let c=A.params?.threadId??null;if(!c||!N||N.has(c)){if(J=null,N=null,z===I)z=null}}}async function b(A){for(let I of U)I.end();if(await K.close().catch(()=>{}),await new Promise((I)=>A.close(I)),H.kind==="unix"&&r.existsSync(H.path))r.unlinkSync(H.path);if(G&&r.existsSync(G))r.unlinkSync(G)}K.setNotificationHandler(Y0),K.handleServerRequest=(A)=>{let I=J??z;if(!I||I.destroyed){K.sendMessage({id:A.id,error:f(-32601,`No broker client available to answer ${A.method}.`)});return}B.set(A.id,I),Z(I,A)};let h=T2.createServer((A)=>{U.add(A),A.setEncoding("utf8");let I="";A.on("data",async(c)=>{I+=c;let W0=I.indexOf(`
15
- `);while(W0!==-1){let u0=I.slice(0,W0);if(I=I.slice(W0+1),W0=I.indexOf(`
16
- `),!u0.trim())continue;let V;try{V=JSON.parse(u0)}catch(R){Z(A,{id:null,error:f(-32700,`Invalid JSON: ${R instanceof Error?R.message:String(R)}`)});continue}if(V.id!==void 0&&!V.method&&B.has(V.id)){B.delete(V.id),K.sendMessage(V);continue}if(V.id!==void 0&&V.method==="initialize"){Z(A,{id:V.id,result:{userAgent:"coder-broker"}});continue}if(V.method==="initialized"&&V.id===void 0)continue;if(V.id!==void 0&&V.method==="broker/shutdown")Z(A,{id:V.id,result:{}}),await b(h),S.exit(0);if(V.id===void 0||!V.method)continue;let y0=C2(V)&&J&&J!==A&&!z;if((z&&z!==A||J&&J!==A)&&!y0){Z(A,{id:V.id,error:f(BY,"Shared Codex broker is busy.")});continue}if(y0){try{let R=await K.request(V.method,V.params??{});Z(A,{id:V.id,result:R})}catch(R){let p=R;Z(A,{id:V.id,error:f(p.rpcCode??-32000,p.message)})}continue}let U0=Z2.has(V.method);if(z=A,U0)J=A,N=OY(V.method,V.params??{},null);try{let R=await K.request(V.method,V.params??{});if(Z(A,{id:V.id,result:R}),U0)N=OY(V.method,V.params??{},R);if(z===A)z=null}catch(R){let p=R;if(Z(A,{id:V.id,error:f(p.rpcCode??-32000,p.message)}),z===A)z=null;if(J===A&&U0)J=null,N=null}}}),A.on("close",()=>{U.delete(A),j(A)}),A.on("error",()=>{U.delete(A),j(A)})});S.on("SIGTERM",async()=>{await b(h),S.exit(0)}),S.on("SIGINT",async()=>{await b(h),S.exit(0)}),h.listen(H.path)}x2().catch((Y)=>{S.stderr.write(`${Y instanceof Error?Y.message:String(Y)}
17
- `),S.exit(1)});
2
+ import{a as e,l as t,r as n,t as r,u as i}from"../app-server-Dwd7IcQH.js";import a from"node:process";import o from"node:fs";import s from"node:path";import*as c from"zod/mini";import l from"node:net";const u=new Set([`turn/start`,`review/start`,`thread/compact/start`]);function d(e,t,n){let r=new Set;return t?.threadId&&r.add(t.threadId),e===`review/start`&&n?.reviewThreadId&&r.add(n.reviewThreadId),r}function f(e,t,n){return n===void 0?{code:e,message:t}:{code:e,message:t,data:n}}function p(e,t){e.destroyed||e.write(`${JSON.stringify(t)}\n`)}const m=new Set([`turn/interrupt`,`turn/steer`]);function h(e){return typeof e?.method==`string`&&m.has(e.method)}function g(e){e&&(o.mkdirSync(s.dirname(e),{recursive:!0}),o.writeFileSync(e,`${a.pid}\n`,`utf8`))}async function _(){let[m,..._]=a.argv.slice(2);if(m!==`serve`)throw Error(`Usage: node src/lib/broker.mjs serve --endpoint <value> [--cwd <path>] [--pid-file <path>]`);let{options:v}=t(_,c.object({cwd:i,"pid-file":i,endpoint:c.string()})),y=v.cwd?s.resolve(a.cwd(),v.cwd):a.cwd(),b=e(String(v.endpoint)),x=v[`pid-file`]?s.resolve(v[`pid-file`]):null;g(x);let S=await n.connect(y,{disableBroker:!0}),C=null,w=null,T=null,E=new Set,D=new Map;function O(e){for(let[t,n]of D)n===e&&(D.delete(t),S.sendMessage({id:t,error:f(-32e3,`Broker client disconnected before answering the server request.`)}))}function k(e){O(e),C===e&&(C=null),w===e&&(w=null,T=null)}function A(e){let t=C??w;if(t&&(p(t,e),e.method===`turn/completed`&&w===t)){let n=e.params?.threadId??null;(!n||!T||T.has(n))&&(w=null,T=null,C===t&&(C=null))}}async function j(e){for(let e of E)e.end();await S.close().catch(()=>{}),await new Promise(t=>e.close(t)),b.kind===`unix`&&o.existsSync(b.path)&&o.unlinkSync(b.path),x&&o.existsSync(x)&&o.unlinkSync(x)}S.setNotificationHandler(A),S.handleServerRequest=e=>{let t=w??C;if(!t||t.destroyed){S.sendMessage({id:e.id,error:f(-32601,`No broker client available to answer ${e.method}.`)});return}D.set(e.id,t),p(t,e)};let M=l.createServer(e=>{E.add(e),e.setEncoding(`utf8`);let t=``;e.on(`data`,async n=>{t+=n;let i=t.indexOf(`
3
+ `);for(;i!==-1;){let n=t.slice(0,i);if(t=t.slice(i+1),i=t.indexOf(`
4
+ `),!n.trim())continue;let o;try{o=JSON.parse(n)}catch(t){p(e,{id:null,error:f(-32700,`Invalid JSON: ${t instanceof Error?t.message:String(t)}`)});continue}if(o.id!==void 0&&!o.method&&D.has(o.id)){D.delete(o.id),S.sendMessage(o);continue}if(o.id!==void 0&&o.method===`initialize`){p(e,{id:o.id,result:{userAgent:`coder-broker`}});continue}if(o.method===`initialized`&&o.id===void 0||(o.id!==void 0&&o.method===`broker/shutdown`&&(p(e,{id:o.id,result:{}}),await j(M),a.exit(0)),o.id===void 0||!o.method))continue;let s=h(o)&&w&&w!==e&&!C;if((C&&C!==e||w&&w!==e)&&!s){p(e,{id:o.id,error:f(r,`Shared Codex broker is busy.`)});continue}if(s){try{let t=await S.request(o.method,o.params??{});p(e,{id:o.id,result:t})}catch(t){let n=t;p(e,{id:o.id,error:f(n.rpcCode??-32e3,n.message)})}continue}let c=u.has(o.method);C=e,c&&(w=e,T=d(o.method,o.params??{},null));try{let t=await S.request(o.method,o.params??{});p(e,{id:o.id,result:t}),c&&(T=d(o.method,o.params??{},t)),C===e&&(C=null)}catch(t){let n=t;p(e,{id:o.id,error:f(n.rpcCode??-32e3,n.message)}),C===e&&(C=null),w===e&&c&&(w=null,T=null)}}}),e.on(`close`,()=>{E.delete(e),k(e)}),e.on(`error`,()=>{E.delete(e),k(e)})});a.on(`SIGTERM`,async()=>{await j(M),a.exit(0)}),a.on(`SIGINT`,async()=>{await j(M),a.exit(0)}),M.listen(b.path)}_().catch(e=>{a.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),a.exit(1)});export{};
@@ -0,0 +1,16 @@
1
+ import{A as e,C as t,F as n,I as r,M as i,N as a,O as o,P as s,T as c,U as l,V as u,W as d,f,i as ee,j as p,l as m,m as h,o as g,r as _,s as v,u as te,v as y,w as ne,y as b,z as re}from"./app-server-Dwd7IcQH.js";import{createRequire as ie}from"node:module";import x from"node:process";import S from"node:fs";import C from"node:path";import{spawn as w,spawnSync as T}from"node:child_process";import ae from"node:os";import{fileURLToPath as oe,pathToFileURL as se}from"node:url";import*as E from"zod/mini";import ce,{randomUUID as le}from"node:crypto";import{AsyncLocalStorage as ue}from"node:async_hooks";function de(e){let t=x.env.FORCE_COLOR,n=t!=null&&t!==``&&t!==`0`||t!==`0`&&e.isTTY&&!x.env.NO_COLOR,r=(e,t)=>n?`\x1b[${e}m${t}\x1b[0m`:t;return{blue:e=>r(`34`,e),bold:e=>r(`1`,e),cyan:e=>r(`36`,e),dim:e=>r(`38;5;246`,e),light:e=>r(`38;5;249`,e),green:e=>r(`32`,e),red:e=>r(`31`,e)}}const D=de(x.stdout),O=de(x.stderr);function fe(e,t=O){let n=e.map(e=>{let t=e.indexOf(`coder `);return t===-1?{label:e,cmd:``}:{label:e.slice(0,t),cmd:e.slice(t)}}),r=Math.max(0,...n.map(e=>e.label.length));return n.map(({label:e,cmd:n})=>n?` ${t.dim(e.padEnd(r))}${t.bold(n)}`:` ${t.dim(e)}`).join(`
2
+ `)}function pe(e,t={}){let n=typeof t==`number`?t:t.code??1,r=typeof t==`object`?t.hint:null,i=r==null?[]:Array.isArray(r)?r:[r];x.stderr.write(`${O.red(e)}\n`),i.length&&x.stderr.write(`\n${fe(i,O)}\n`),x.exit(n)}function k(e){x.stdout.write(`${JSON.stringify(e,null,2)}\n`)}function me(e,t=D){return(JSON.stringify(e,null,2)??`null`).split(`
3
+ `).map(e=>e.replace(/"((?:[^"\\]|\\.)*)":/g,(e,n)=>`${t.light(`"${n}"`)}:`).replace(/: (-?\d[\d.eE+-]*|true|false|null)(,?)$/,(e,n,r)=>`: ${t.blue(n)}${r}`)).join(`
4
+ `)}function he(e){let t=Date.parse(e??``);return Number.isFinite(t)?Math.max(0,Date.now()-t):0}function ge(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?`${n}m`:`${Math.floor(n/60)}h${n%60}m`}function A(e){return e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(+(e<1e4))}k`:`${(e/1e6).toFixed(1)}M`}function _e(e,t){let n=[`in ${A(e.input)}`,...e.cachedInput?[`cached ${A(e.cachedInput)}`]:[],`out ${A(e.output)}`];return`${A(e.total)} (${n.join(` · `)}) on ${t||`default model`}`}function ve(e,t,n,r=D){let i=e?.error?.message??t;return e?.finalMessage||(i?`${r.red(`error:`)} ${i}`:n)}function ye(e,t=D){let n=e=>e.split(`
5
+ `).map(e=>` ${t.dim(e)}`);return e.length<=1e3?[t.dim(`prompt:`),...n(e)]:[t.dim(`prompt:`),...n(e.slice(0,500).trimEnd()),t.light(` … <${e.length-1e3} chars trimmed> …`),...n(e.slice(-500).trimStart())]}function be(e){return[e.agent??`-`,e.model,e.model?e.effort:null].filter(Boolean).join(`/`)}function xe(e,t=D){let n=[];return e.permissions&&n.push([`perms`,e.permissions]),e.cwd&&n.push([`cwd`,e.cwd]),n.map(([e,n])=>`${t.dim(e.padEnd(8))} ${n}`)}function Se(e,t=300,{plain:n=!1,style:r=D}={}){if(e.length<=t)return e;let i=`<${e.length-t} more chars>`;return`${e.slice(0,t)} ${n?i:r.dim(i)}`}const Ce=10*6e4,we=2*6e4;function Te(e,t){return e.length>t?`${e.slice(0,t-1)}…`:e.padEnd(t)}function Ee(e){return` ${D.bold(D.green(`✔`))} ${e}`}function De(e){return` ${D.bold(D.red(`✘`))} ${e}`}function Oe(e=x.stdout){try{return e.getWindowSize?.()[0]??e.columns}catch{return e.columns}}function ke(e=x.stdout){try{return e.getWindowSize?.()[1]??e.rows}catch{return e.rows}}function Ae(e){return e>=768&&e<=879||e>=8203&&e<=8207||e>=65024&&e<=65039?0:e>=4352&&e<=4447||e>=11904&&e<=42191||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65072&&e<=65103||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=127744&&e<=129791||e>=131072&&e<=262141?2:1}function je(e){let t=0;for(let n of e.replace(/\x1b\[[0-9;]*m/g,``))t+=Ae(n.codePointAt(0));return t}function Me(e,t){let n=0,r=``;for(let i=0;i<e.length;){let a=e[i]===`\x1B`?/^\x1b\[[0-9;]*m/.exec(e.slice(i)):null;if(a){r+=a[0],i+=a[0].length;continue}let o=e.codePointAt(i),s=String.fromCodePoint(o),c=Ae(o);if(n+c>t-1)return`${r}\x1b[0m${D.dim(`…`)}`;r+=s,n+=c,i+=s.length}return r}function Ne(){let e=x.stdin;if(!e.isTTY||!x.stdout.isTTY)return()=>{};e.setRawMode(!0),e.resume();let t=e=>{e.includes(3)&&x.kill(x.pid,`SIGINT`),e.includes(26)&&x.kill(x.pid,`SIGTSTP`)};return e.on(`data`,t),e.unref(),()=>{e.off(`data`,t),e.isTTY&&e.setRawMode(!1),e.pause()}}var Pe=class{stream;quietMs;lines=[];painted=[];paintedWidths=[];paintedCols;resizeTimer;tty;constructor(e=x.stdout,t=250){this.stream=e,this.quietMs=t,this.tty=!!e.isTTY,this.tty&&e.on(`resize`,this.onResize)}set(e){this.lines=e,!(!this.tty||this.resizeTimer)&&this.paint()}commit(e){this.clear(),this.stream.write(e)}clear(){if(!this.painted.length)return;let e=Oe(this.stream),t=this.painted.length;e&&this.paintedCols&&e!==this.paintedCols&&(t=this.paintedWidths.reduce((t,n)=>t+Math.max(1,Math.ceil(n/e)),0)),this.stream.write(`\x1b[${t}A\x1b[0J`),this.painted=[],this.paintedWidths=[]}done(){this.resizeTimer&&(clearTimeout(this.resizeTimer),this.resizeTimer=void 0,this.paint()),this.tty&&this.stream.off(`resize`,this.onResize)}paint(){this.clear();let e=Oe(this.stream),t=e?this.lines.map(t=>Me(t,e-1)):this.lines,n=ke(this.stream);n&&t.length>n-1&&(t=n>1?t.slice(-(n-1)):[]);for(let e of t)this.stream.write(`${e}\n`);this.painted=t,this.paintedWidths=t.map(je),this.paintedCols=e}onResize=()=>{this.clear(),this.resizeTimer&&clearTimeout(this.resizeTimer),this.resizeTimer=setTimeout(()=>{this.resizeTimer=void 0,this.paint()},this.quietMs),this.resizeTimer.unref?.()}};function Fe(e,t=0){let n=e.padEnd(t);return e===`running`?D.green(n):e===`failed`||e===`cancelled`?D.red(n):e===`completed`?D.blue(n):D.dim(n)}function Ie(e,t,n=!1){n?k({taskId:e,status:`awaiting-approval`,approval:t}):(x.stdout.write(`Approval needed for task ${e}: ${t.summary}\n`),x.stderr.write(`\n${fe([`Approve: coder approve ${e} ${t.id}`,`Deny: coder approve ${e} ${t.id} --deny`,`Then: coder task result ${e} --wait`],O)}\n`)),x.exit(4)}function Le(e,t,n){if(e.length>t){let r=e.slice(t);pe(`Unexpected argument${r.length>1?`s`:``}: ${r.join(` `)}`,{hint:`Help: coder ${n} --help`})}}function j(e){return e.cwd?C.resolve(String(e.cwd)):x.cwd()}function Re(e,n){let r=t(e,n);return r||pe(n?`No task found for "${n}".`:`No tasks found for this workspace.`,{hint:n?[`List tasks: coder task list`,`Start one: coder run "<text>"`]:[`Start one: coder run "<text>"`]}),r}const M=`@wular/coder`,ze=`https://registry.npmjs.org/${M}/latest`;function Be(){return C.join(s(),`update-check.json`)}function Ve(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 He(){try{return JSON.parse(S.readFileSync(Be(),`utf8`))}catch{return null}}function Ue(e){try{S.mkdirSync(s(),{recursive:!0}),S.writeFileSync(Be(),JSON.stringify(e))}catch{}}function We(){try{S.rmSync(Be(),{force:!0})}catch{}}function Ge(e,t){if(x.env.CODER_NO_UPDATE_CHECK||x.env.CI)return;let n=He();if(n?.latest&&Ve(n.latest,e)>0&&x.stderr.write(O.dim(`coder ${e} -> `)+O.bold(n.latest)+O.dim(` available. run: coder upgrade
6
+
7
+ `)),!n?.checkedAt||Date.now()-n.checkedAt>864e5)try{w(x.execPath,[t,`_refreshUpdate`],{detached:!0,stdio:`ignore`}).unref()}catch{}}async function Ke(e){let t=He()?.latest??null;try{let e=new AbortController,n=setTimeout(()=>e.abort(),3e3),r=await fetch(ze,{signal:e.signal,headers:{accept:`application/json`}});if(clearTimeout(n),r.ok){let e=await r.json();e?.version&&(t=e.version)}}catch{}Ue({checkedAt:Date.now(),latest:t,current:e})}function qe(e){let t=e;try{t=S.realpathSync(e)}catch{}let n=t.replace(/\\/g,`/`);return/\/\.bun\//.test(n)?{pm:`bun`,command:[`bun`,`add`,`-g`,`${M}@latest`]}:/\/\.pnpm\//.test(n)||/\/pnpm(-global)?\//i.test(n)||/\/Library\/pnpm\//.test(n)?{pm:`pnpm`,command:[`pnpm`,`add`,`-g`,`${M}@latest`]}:/\/\.config\/yarn\/global\//.test(n)||/\/yarn\/global\//.test(n)||/\/Yarn\/Data\/global\//.test(n)?{pm:`yarn`,command:[`yarn`,`global`,`add`,`${M}@latest`]}:{pm:`npm`,command:[`npm`,`install`,`-g`,`${M}@latest`]}}function N(e){try{return JSON.parse(S.readFileSync(e,`utf8`))}catch{return null}}function Je(e,t){let n=`${e}.tmp`;S.writeFileSync(n,`${JSON.stringify(t,null,2)}\n`,`utf8`),S.renameSync(n,e)}function Ye(e){let t=0,n=``;return()=>{let r;try{r=S.statSync(e).size}catch{return[]}if(r<t&&(t=0,n=``),r===t)return[];let i;try{i=S.openSync(e,`r`)}catch{return[]}try{let e=Buffer.alloc(r-t),a=S.readSync(i,e,0,e.length,t);t+=a;let o=(n+e.toString(`utf8`,0,a)).split(`
8
+ `);return n=o.pop()??``,o.filter(Boolean)}finally{S.closeSync(i)}}}const Xe=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(`.`)),Ze=[/\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)/],Qe=new Set([`status`,`log`,`diff`,`show`,`blame`,`rev-parse`,`ls-files`,`ls-tree`,`cat-file`,`describe`,`shortlog`,`grep`,`branch`,`stash`]);function $e(e){let t=e.match(/^\s*(?:ba|z|da)?sh\s+(?:-[a-zA-Z]+\s+)*(?:-c\s+)?(["'])([\s\S]*)\1\s*$/);return t?t[2]:e}function et(e){return e.trim().split(/\s+/).filter(Boolean)}function tt(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 Qe.has(t)?{decision:`accept`,reason:`git ${t} is read-only`}:Xe.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 nt(e,t={}){let n=$e(String(e??``));if(!n.trim())return{decision:`escalate`,reason:`empty command`};for(let e of Ze)if(e.test(n))return{decision:`decline`,reason:`matches hard-deny pattern ${e}`};if(/\$\(|`|<\(/.test(n))return{decision:`escalate`,reason:`contains command substitution`};let r=n.split(/&&|\|\||;|\||\r?\n/).map(e=>e.trim()).filter(Boolean);if(r.length>1){let e={decision:`accept`,reason:`all segments safe`};for(let n of r){let r=nt(n,t);if(r.decision===`decline`)return r;r.decision===`escalate`&&(e=r)}return e}let i=et(n),a=C.basename(i[0]??``);if(a===`git`)return tt(i);let o=t.networkHost;return o?(t.allowedNetworkHosts??[]).some(e=>o===e||o.endsWith(`.${e}`))?{decision:`accept`,reason:`network host ${o} is allowlisted`}:{decision:`escalate`,reason:`network access to ${o}`}:{decision:`escalate`,reason:`command needs approval: ${a||`(unknown)`}`}}function rt(e,t){if(!e.length)return{decision:`escalate`,reason:`file change with no resolvable paths`};for(let n of e){let e=C.resolve(t,n),r=C.relative(t,e);if(r.startsWith(`..`)||C.isAbsolute(r))return{decision:`escalate`,reason:`path outside workspace: ${n}`};if(r===`.git`||r.startsWith(`.git${C.sep}`))return{decision:`decline`,reason:`direct .git modification: ${n}`}}return{decision:`accept`,reason:`all paths inside workspace`}}function it(e){return C.join(e,`approvals`)}function at(e){let t=it(e);return S.existsSync(t)?S.readdirSync(t).filter(e=>e.endsWith(`.request.json`)).flatMap(e=>{let n=e.replace(/\.request\.json$/,``),r=N(C.join(t,e));if(!r)return[];let i=N(C.join(t,`${n}.response.json`));return[{...r,id:n,response:i}]}).sort((e,t)=>String(e.createdAt??``).localeCompare(String(t.createdAt??``))):[]}function ot(e,t,n){let r=it(e),i=C.join(r,`${t}.request.json`);if(!S.existsSync(i))throw Error(`No pending approval "${t}" for this job.`);S.writeFileSync(C.join(r,`${t}.response.json`),`${JSON.stringify({decision:n,answeredAt:new Date().toISOString()},null,2)}\n`,`utf8`)}async function st(e,t,{timeoutMs:n,onEvent:r}){let i=it(e);S.mkdirSync(i,{recursive:!0});let a=`apr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`;S.writeFileSync(C.join(i,`${a}.request.json`),`${JSON.stringify({...t,createdAt:new Date().toISOString()},null,2)}\n`,`utf8`),r?.({kind:`approval-escalated`,approvalId:a,summary:t.summary,message:`Approval needed (${a}): ${t.summary}. Answer with: coder approve <job> ${a} [--deny]`});let o=C.join(i,`${a}.response.json`),s=Date.now()+n;for(;Date.now()<s;){if(S.existsSync(o))try{let e=JSON.parse(S.readFileSync(o,`utf8`)).decision===`accept`?`accept`:`decline`;return r?.({kind:`approval-answered`,approvalId:a,decision:e}),e}catch{}await new Promise(e=>setTimeout(e,400))}return r?.({kind:`approval-timeout`,approvalId:a,message:`Approval ${a} timed out; declining.`}),`decline`}function ct(e,t={}){return st(e,{method:`simulate`,summary:`simulated approval probe (--simulate-approval)`},{timeoutMs:t.timeoutMs??12e4,onEvent:t.onEvent??null})}function lt({workspaceRoot:e,jobDir:t,mode:n=`auto`,escalationTimeoutMs:r=12e4,allowedNetworkHosts:i=[],onEvent:a=null}){return async(o,s,c)=>{if(o===`item/commandExecution/requestApproval`){let e=s.command??c?.itemIndex?.get(s.itemId??``)?.command??``,l=`run command: ${e||`(unknown command)`}${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=nt(e,{networkHost:s.networkApprovalContext?.host??null,allowedNetworkHosts:i});return a?.({kind:`approval-decision`,method:o,decision:u.decision,reason:u.reason,summary:l}),u.decision===`escalate`?{decision:await st(t,{method:o,summary:l,command:e,params:s},{timeoutMs:r,onEvent:a})}:{decision:u.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=rt(i,e);return a?.({kind:`approval-decision`,method:o,decision:u.decision,reason:u.reason,summary:l}),u.decision===`escalate`?{decision:await st(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.`)}}async function ut(e,t,r=400){let i=t;for(;;){if(u.includes(i.status))return{job:i,reason:`terminal`};let t=at(n(e,i.id)).filter(e=>!e.response);if(t[0])return{job:i,reason:`approval`,approval:{id:t[0].id,summary:String(t[0].summary??``)}};await new Promise(e=>setTimeout(e,r)),i=a(e,p(e,i.id)??i)}}const dt=`Coder Task`;function ft(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(`
9
+ `)}function pt(e,t=72){let n=String(e??``).trim().replace(/\s+/g,` `);return n?n.length<=t?n:`${n.slice(0,t-3)}...`:``}function mt(e){let t=pt(e,56);return t?`${dt}: ${t}`:dt}function ht(e){return e?.params?.threadId??null}function gt(e){return e?.params?.turnId?e.params.turnId:e?.params?.turn?.id?e.params.turn.id:null}function _t(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 vt(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 yt(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 bt(e){return String(e??``).replace(/\s+/g,` `).trim()}function P(e){if(!e)return[];if(typeof e==`string`){let t=bt(e);return t?[t]:[]}if(Array.isArray(e))return e.flatMap(e=>P(e));if(typeof e==`object`){let t=e;if(typeof t.text==`string`)return P(t.text);if(`summary`in t)return P(t.summary);if(`content`in t)return P(t.content);if(`parts`in t)return P(t.parts)}return[]}function xt(e,t){let n=[];for(let r of[...e,...t]){let e=bt(r);!e||n.includes(e)||n.push(e)}return n}function F(e,t,n=null,r={}){!e||!t||e({message:t,phase:n,...r})}function St(e){switch(e.type){case`commandExecution`:return{message:`Running command: ${String(e.command??``).trim()}`,phase:`running`};case`fileChange`:return{message:`Applying ${e.changes.length} file change(s).`,phase:`editing`};case`mcpToolCall`:return{message:`Calling ${e.server}/${e.tool}.`,phase:`investigating`};case`dynamicToolCall`:return{message:`Running tool: ${e.tool}.`,phase:`investigating`};case`webSearch`:return{message:`Searching: ${String(e.query??``).trim()}`,phase:`investigating`};default:return null}}function Ct(e){switch(e.type){case`commandExecution`:{let t=String(e.aggregatedOutput??``).trim();return{message:`Command ${e.status===`completed`?`completed`:e.status}: ${String(e.command??``).trim()} (exit ${e.exitCode??`?`})`+(t?`\n${t}`:``),phase:`running`}}case`fileChange`:return{message:`File changes ${e.status}.`,phase:`editing`};case`mcpToolCall`:return{message:`Tool ${e.server}/${e.tool} ${e.status}.`,phase:`investigating`};case`dynamicToolCall`:return{message:`Tool ${e.tool} ${e.status}.`,phase:`investigating`};default:return null}}function wt(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,itemIndex:new Map,onProgress:t.onProgress??null,onHeartbeat:t.onHeartbeat??null}}function Tt(e){e.completionTimer&&=(clearTimeout(e.completionTimer),null)}function Et(e,t=null){e.completed||(Tt(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 Dt(e){e.completed||e.finalTurn||!e.finalAnswerSeen||e.pendingCollaborations.size>0||e.activeSubagentTurns.size>0||(Tt(e),e.completionTimer=setTimeout(()=>{e.completionTimer=null,!(e.completed||e.finalTurn||!e.finalAnswerSeen)&&(e.pendingCollaborations.size>0||e.activeSubagentTurns.size>0||Et(e,null))},250),e.completionTimer.unref?.())}function Ot(e,t){let n=ht(t);if(!n||!e.threadIds.has(n))return!1;let r=e.threadTurnIds.get(n)??null,i=gt(t);return r===null||i===null||i===r}function kt(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),Dt(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,n===`completed`&&t.phase===`final_answer`&&(e.finalAnswerSeen=!0,Dt(e)));return}if(t.type===`reasoning`&&n===`completed`){e.reasoningSummary=xt(e.reasoningSummary,P(t.summary));return}if(t.type===`fileChange`&&n===`completed`){e.fileChanges.push(t);return}t.type===`commandExecution`&&n===`completed`&&e.commandExecutions.push(t)}function At(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),F(e.onProgress,`Turn started (${t.params.turn.id}).`,`starting`,{threadId:t.params.threadId??null,turnId:t.params.turn.id??null});break;case`item/started`:kt(e,t.params.item,`started`,t.params.threadId??null);{let n=St(t.params.item);F(e.onProgress,n?.message,n?.phase??null)}break;case`item/completed`:kt(e,t.params.item,`completed`,t.params.threadId??null);{let n=Ct(t.params.item);F(e.onProgress,n?.message,n?.phase??null)}break;case`thread/tokenUsage/updated`:{let n=vt(t.params?.tokenUsage?.total??t.params?.tokenUsage),r=ht(t);n&&r&&e.tokenUsageByThread.set(r,n);break}case`error`:e.error=t.params.error,F(e.onProgress,`Codex error: ${t.params.error.message}`,`failed`);break;case`turn/completed`:if((t.params.threadId??null)!==e.threadId){e.activeSubagentTurns.delete(t.params.threadId),Dt(e);break}F(e.onProgress,`Turn ${t.params.turn.status}.`,`finalizing`),Et(e,t.params.turn);break;default:break}}async function jt(e,t,n,r={}){let i=wt(t,r),a=e.notificationHandler;e.setNotificationHandler(e=>{if(!i.turnId){i.bufferedNotifications.push(e);return}if(e.method===`thread/started`){At(i,e);return}if(!Ot(i,e)){a?.(e);return}At(i,e)});let o=r.onApprovalRequest;o&&e.setServerRequestHandler((e,t)=>o(e,t,i));try{let e=await n();i.turnId=e.turn?.id??null,i.turnId&&i.threadTurnIds.set(i.threadId,i.turnId);for(let e of i.bufferedNotifications)Ot(i,e)?At(i,e):a?.(e);return i.bufferedNotifications.length=0,e.turn?.status&&e.turn.status!==`inProgress`&&Et(i,e.turn),await i.completion}finally{Tt(i),e.setNotificationHandler(a??null),e.setServerRequestHandler(null)}}async function Mt(e,t){let n=null;try{n=await _.connect(e);let r=await t(n);return await n.close(),r}catch(r){let i=r,a=n?.transport===`broker`||!!process.env.CODER_APP_SERVER_ENDPOINT,o=n?.transport===`broker`&&i?.rpcCode===-32001||a&&(i?.code===`ENOENT`||i?.code===`ECONNREFUSED`);if(n&&=(await n.close().catch(()=>{}),null),!o)throw r;let s=await _.connect(e,{disableBroker:!0});try{return await t(s)}finally{await s.close()}}}function I(e){let t=ee(`codex`,[`--version`],{cwd:e});if(!t.available)return t;let n=ee(`codex`,[`app-server`,`--help`],{cwd:e});return n.available?{available:!0,detail:`${t.detail}; app-server runtime available`}:{available:!1,detail:`${t.detail}; app-server runtime unavailable: ${n.detail}`}}async function Nt(e){let t=I(e);if(!t.available)return{available:!1,loggedIn:!1,detail:t.detail};let n=null;try{n=await _.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=T(`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 Pt(e,{threadId:t,turnId:n}){if(!t||!n)return{interrupted:!1,detail:`missing threadId or turnId`};let r=null;try{return r=await _.connect(e,{reuseExistingBroker:!0}),await r.request(`turn/interrupt`,{threadId:t,turnId:n}),{interrupted:!0,detail:`Interrupted ${n} on ${t}.`}}catch(e){return{interrupted:!1,detail:e instanceof Error?e.message:String(e)}}finally{await r?.close().catch(()=>{})}}async function Ft(e,{threadId:t,text:n}){if(!t)return{steered:!1,detail:`missing threadId`};let r=n.trim();if(!r)return{steered:!1,detail:`empty follow-up`};let i=null;try{return i=await _.connect(e,{reuseExistingBroker:!0}),await i.request(`turn/steer`,{threadId:t,input:[{type:`text`,text:r,text_elements:[]}]}),{steered:!0,detail:`Steered follow-up into the active turn on ${t}.`}}catch(e){return{steered:!1,detail:e instanceof Error?e.message:String(e)}}finally{await i?.close().catch(()=>{})}}async function It(e,t={}){let n=I(e);if(!n.available)throw Error(`Codex CLI is not available: ${n.detail}`);let r=t.prompt?.trim();if(!r)throw Error(`A prompt is required.`);return Mt(e,async n=>{let i;if(t.resumeThreadId)F(t.onProgress,`Resuming thread ${t.resumeThreadId}.`,`starting`),l(t.resumeThreadId)&&await d(t.resumeThreadId),i=(await n.request(`thread/resume`,{threadId:t.resumeThreadId,cwd:e,model:t.model??null,modelProvider:t.modelProvider??null,config:t.configOverrides??null,approvalPolicy:t.approvalPolicy??`never`,sandbox:t.sandbox??`read-only`})).thread.id;else{F(t.onProgress,`Starting Codex task thread.`,`starting`),i=(await n.request(`thread/start`,{cwd:e,model:t.model??null,modelProvider:t.modelProvider??null,config:t.configOverrides??null,approvalPolicy:t.approvalPolicy??`never`,sandbox:t.sandbox??`read-only`,serviceName:`coder_runtime`,ephemeral:t.ephemeral??!1})).thread.id;try{await n.request(`thread/name/set`,{threadId:i,name:mt(r)})}catch(e){let t=String(e?.message??e??``);if(!t.includes(`unknown variant`)&&!t.includes(`unknown method`))throw e}}F(t.onProgress,`Thread ready (${i}).`,`starting`,{threadId:i});let a=await jt(n,i,()=>n.request(`turn/start`,{threadId:i,input:[{type:`text`,text:r,text_elements:[]}],model:t.model??null,effort:t.effort??null,outputSchema:t.outputSchema??null}),{onProgress:t.onProgress,onHeartbeat:t.onHeartbeat,onApprovalRequest:t.onApprovalRequest});return{status:a.finalTurn?.status===`completed`?0:1,threadId:i,turnId:a.turnId,finalMessage:a.lastAgentMessage,reasoningSummary:a.reasoningSummary,turn:a.finalTurn,error:a.error,stderr:ft(n.stderr),fileChanges:a.fileChanges,touchedFiles:_t(a.fileChanges),tokens:yt(a),model:t.model??null,commandExecutions:a.commandExecutions}})}const Lt={chain:[`codex`,`claude`],agents:{codex:{model:`gpt-5.6-terra`,effort:`high`,permissions:`auto`},claude:{model:`opus`,effort:`medium`,permissions:`auto`}},models:{},approvals:{escalationTimeoutMs:12e4,allowedNetworkHosts:[]}},L={spark:`gpt-5.3-codex-spark`,luna:`gpt-5.6-luna`,terra:`gpt-5.6-terra`,sol:`gpt-5.6-sol`},R=new Set([`low`,`medium`,`high`]),z={sonnet:`sonnet`,opus:`opus`,fable:`fable`},B=new Set([`low`,`medium`,`high`]),Rt={"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`}},zt={"read-only":[`--permission-mode`,`dontAsk`,`--disallowedTools`,`Edit`,`Write`,`NotebookEdit`],"workspace-write":[`--permission-mode`,`acceptEdits`],auto:[`--permission-mode`,`auto`]},Bt=/failIfUnavailable|sandbox\b[^.\n]*?(?:failed|could ?n[o']t|cannot|unavailable|not available|not supported)/i;function Vt(e,t){return e===`read-only`?JSON.stringify({sandbox:{enabled:!0,failIfUnavailable:!0,autoAllowBashIfSandboxed:!0,filesystem:{denyWrite:[t]}}}):null}const Ht=E.enum([`codex`,`claude`]),Ut=E.enum([`codex`,`claude`,`custom`]),Wt=E.enum([`low`,`medium`,`high`]),Gt=E.enum([`read-only`,`workspace-write`,`auto`]),Kt=E.partial(E.strictObject({model:E.string().check(E.minLength(1)),effort:Wt,permissions:Gt})),qt=E.strictObject({baseUrl:E.url(),model:E.string().check(E.minLength(1)),envKey:E.optional(E.string().check(E.minLength(1))),wireApi:E.optional(E.enum([`chat`,`responses`])),disabled:E.optional(E.boolean())}),Jt=E.strictObject({provider:Ht,model:E.string().check(E.minLength(1)),effort:E.optional(Wt),disabled:E.optional(E.boolean())}),Yt=E.strictObject({disabled:E.boolean()}),Xt=E.union([qt,Jt,Yt]),Zt=E.strictObject({escalationTimeoutMs:E.number().check(E.positive()),allowedNetworkHosts:E.array(E.string())}),Qt=E.strictObject({chain:E.array(Ut).check(E.minLength(1)),agents:E.partial(E.strictObject({codex:Kt,claude:Kt,custom:Kt})),models:E.optional(E.record(E.string().check(E.regex(/^[a-z0-9][a-z0-9./_-]*$/i,`model name`)),Xt)),approvals:Zt}),$t=E.partial(E.extend(Qt,{approvals:E.partial(Zt)}));function V(e){return`baseUrl`in e}function H(e){return`provider`in e}function U(e){let t=$t.safeParse(e);if(!t.success)return t.error.issues.map(e=>`${e.path.join(`.`)||`config`}: ${e.message}`);let n=tn(Lt,t.data),r=[];for(let[e,i]of Object.entries(t.data.models??{})){if(e===`codex`||e===`claude`||e===`custom`){r.push(`models.${e}: reserved agent name`);continue}if(H(i)){let t=n.models?.[i.model];t&&!V(t)&&r.push(`models.${e}: alias target "${i.model}" is itself a config entry`)}}return r}function en(e){if(!S.existsSync(e))return null;try{return JSON.parse(S.readFileSync(e,`utf8`))}catch(t){let n=t instanceof Error?t.message:String(t);throw Error(`Invalid JSON in ${e}: ${n}`)}}function tn(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))i&&typeof i==`object`&&!Array.isArray(i)&&r?.[e]&&typeof r[e]==`object`?n[e]=tn(r[e],i):n[e]=i;return n}function W(){return C.join(s(),`config.json`)}function nn(e){let t=r(e),n=Lt;for(let e of[W(),C.join(t,`coder.config.json`)]){let t=en(e);if(!t)continue;let r=U(t);if(r.length)throw Error(`Invalid config in ${e}:\n ${r.join(`
10
+ `)}`);n=tn(n,t)}let i=U(n);if(i.length)throw Error(`Invalid merged config:\n ${i.join(`
11
+ `)}`);return n}function rn(e){return e.replace(/\/+$/,``).replace(/\/(chat\/completions|completions|responses)$/,``)}function an(e,t,n){let i=[C.join(r(e),`coder.config.json`),W()];for(let e of i){let r;try{r=en(e)}catch{continue}if(r?.models?.[t])return Object.assign(r.models[t],n),U(r).length?!1:(S.writeFileSync(e,`${JSON.stringify(r,null,2)}\n`,`utf8`),!0)}return!1}function on(e){return/\/(chat\/completions|completions|responses)\/*$/.test(e)}function sn(e,t){let n=rn(e);return on(e)||/\/v\d+(alpha|beta)?$/.test(n)?[`${n}/${t}`]:[`${n}/${t}`,`${n}/v1/${t}`]}function cn(e,t,n){let r=t?e.models?.[t]:void 0;if(!t||!r||!V(r))return null;let i=`coder-${t}`;return{model:r.model,modelProvider:i,configOverrides:{[`model_providers.${i}`]:{name:t,base_url:n?.url??rn(r.baseUrl),...r.envKey&&!n?{env_key:r.envKey}:{},wire_api:`responses`}}}}function ln(e){return e?L[e]??e:null}function un(e){return e in L||e in z}function dn(e,t){return!!(t&&e.models?.[t]?.disabled)}function fn(e,t){if(dn(e,t))throw Error(`model "${t}" is disabled in config`)}function pn(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 agent spec "${e}".`);let r=null,i=null,a=null,o=e=>R.has(e)||B.has(e);for(let t of n)if(t===`codex`||t===`claude`||t===`custom`){if(r)throw Error(`Invalid agent spec "${e}".`);r=t}else if(o(t)&&!a)a=t;else if(!i)i=t;else throw Error(`Invalid agent spec "${e}".`);let s=i?t.models?.[i]:void 0;if(s&&H(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 z?`claude`:i&&s&&V(s)?`custom`:`codex`;let c=t.agents[r]??{},l=i??c.model??null;return fn(t,l),{agent:r,model:l,effort:a??c.effort??null}}function mn(e){let t=W();return S.mkdirSync(C.dirname(t),{recursive:!0}),S.writeFileSync(t,`${JSON.stringify(e,null,2)}\n`,`utf8`),t}function hn(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 gn(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 _n(){let e=T(`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 vn(){let e=T(`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`}}}async function yn(e,t){let n=t.resumeSessionId??le(),r=[`-p`,t.prompt,`--output-format`,`stream-json`,`--verbose`];r.push(t.resumeSessionId?`--resume`:`--session-id`,n),t.model&&r.push(`--model`,t.model),t.effort&&r.push(`--effort`,t.effort);let i=t.permissions??`auto`;r.push(...zt[i]??zt.auto);let a=Vt(i,e);return a&&r.push(`--settings`,a),t.onProgress?.({message:`claude turn started (session ${n})`,threadId:n}),new Promise((i,a)=>{let o=w(`claude`,r,{cwd:e,stdio:[`ignore`,`pipe`,`pipe`]}),s=``,c=``,l=null,u=n,d=e=>{if(!(!e||typeof e!=`object`))if(t.onHeartbeat?.(),e.type===`system`&&e.subtype===`init`&&e.session_id)u=e.session_id;else if(e.type===`assistant`)for(let n of e.message?.content??[])n?.type===`tool_use`&&t.onProgress?.({message:`${n.name} ${JSON.stringify(n.input??{})}`,threadId:u});else if(e.type===`user`){for(let n of e.message?.content??[])if(n?.type===`tool_result`){let e=hn(n.content).trim();e&&t.onProgress?.({message:e,threadId:u})}}else e.type===`result`&&(l=e,e.session_id&&(u=e.session_id))};o.stdout.on(`data`,e=>{s+=e;let t;for(;(t=s.indexOf(`
12
+ `))>=0;){let e=s.slice(0,t).trim();if(s=s.slice(t+1),e)try{d(JSON.parse(e))}catch{}}}),o.stderr.on(`data`,e=>{c+=e});let f=()=>{o.kill(`SIGTERM`),process.exit(143)};process.on(`SIGTERM`,f),o.on(`error`,e=>{process.removeListener(`SIGTERM`,f),a(Error(`claude spawn failed: ${e.message}`))}),o.on(`close`,e=>{process.removeListener(`SIGTERM`,f);let n=s.trim();if(n)try{d(JSON.parse(n))}catch{}let r=l?.result??``,a=e!==0||l?.is_error===!0||l==null;i({status:+!!a,threadId:l?.session_id??u,turnId:null,finalMessage:r,tokens:gn(l?.usage),model:l?.modelUsage&&Object.keys(l.modelUsage).join(`+`)||t.model||null,error:a?{message:r||c.trim()||`claude exited ${e}`}:null})})})}function bn(e){T(`claude`,[`plugin`,`marketplace`,`remove`,`coder-plugins`],{encoding:`utf8`});let t=T(`claude`,[`plugin`,`marketplace`,`add`,e],{encoding:`utf8`}),n=T(`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 xn(){return C.join(ae.homedir(),`.agents`,`skills`,`coder`)}function Sn(){try{let e=S.readFileSync(C.join(xn(),`SKILL.md`),`utf8`);return/^\s*version:\s*(\S+)/m.exec(e)?.[1]??null}catch{return null}}function Cn(e){let t=xn();try{let n=C.join(e,`plugins`,`agents`,`skills`,`coder`);S.rmSync(t,{recursive:!0,force:!0}),S.mkdirSync(t,{recursive:!0}),S.cpSync(n,t,{recursive:!0});let r=C.join(t,`SKILL.md`),i=S.readFileSync(r,`utf8`).replace(`
13
+ ---
14
+ `,`\nmetadata:\n version: ${h()}\n---\n`);return S.writeFileSync(r,i),{marketplace:t,installed:!0,note:`Skill installed to ~/.agents/skills/coder; restart running sessions to load it.`}}catch(e){return{marketplace:t,installed:!1,note:`Skill install failed: ${e instanceof Error?e.message:String(e)}`}}}function wn(e){if(e.available)return null;let t=T(`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`}}function Tn(e){let t=/(\d+\.\d+\.\d+)/.exec(String(e??``));return t?t[1]:null}function En(e){if(!e.available)return null;let t=Tn(e.detail);if(!t||Ve(t,`0.144.0`)>=0)return null;let n=T(`codex`,[`update`],{encoding:`utf8`});return n.status!==0&&(n=T(`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 GPT-5.6 model (needs >= 0.144.0); auto-update failed: ${(n.stderr||`codex/npm not found`).trim()}. Run: codex update`}}const Dn=/usage|quota|rate.?limit|429|401|unauthorized|not authenticated|login|insufficient|exhausted|not available|ENOENT/i,On=`CODER_WORKER`;var G=class extends Error{code;hint;taskId;payload;approval;result;runId;constructor(e,t,n={}){super(t),this.name=`CoderError`,this.code=e,Object.assign(this,n)}},kn=class extends Error{agent;detail;constructor(e,t){super(t),this.agent=e,this.detail=t}};function An(e,t){let n=e.agent,r=!!n,i=e.model,a=e.effort,o=e=>{let n=e?t.models?.[e]:void 0;return n&&H(n)?n:void 0},s=e=>{let n=e?t.models?.[e]:void 0;return n&&V(n)?n:void 0};if(o(i)){let e;try{e=pn(i,t)}catch(e){throw new G(`invalid-option`,e instanceof Error?e.message:String(e))}e&&(r||(n=e.agent),i=e.model??void 0,a=a??e.effort??void 0)}if(!n&&i&&(i in z?n=`claude`:i in L?n=`codex`:s(i)&&(n=`custom`)),n=n??t.chain[0]??`codex`,n!==`codex`&&n!==`claude`&&n!==`custom`){let e=n in L||n in z||n in(t.models??{})?` "${n}" is a model; use --model ${n}.`:``;throw new G(`invalid-option`,`Invalid --agent "${n}". Use codex, claude, or custom.${e}`)}let c=t.agents[n]??{},l=i??c.model??null,u=a??c.effort??null;if(o(l)){let e;try{e=pn(l,t)}catch(e){throw new G(`invalid-option`,e instanceof Error?e.message:String(e))}e&&(r||(n=e.agent),l=e.model,u=a??e.effort??u)}let d=e.permissions??c.permissions??`auto`;try{fn(t,l)}catch(e){throw new G(`invalid-option`,e instanceof Error?e.message:String(e))}if(n===`custom`){let e=Object.entries(t.models??{}).filter(([,e])=>V(e)).map(([e])=>e);if(!l&&e.length===1&&(l=e[0]),!l||!s(l))throw new G(`invalid-option`,l?`No custom model named "${l}". Configured: ${e.join(`, `)||`none`}.`:`No custom model to run: pass --model <name> or set agents.custom.model.`,{hint:`Add one: coder model add <name> --base-url <url> --model <id>`})}let f=n===`claude`?`claude`:`codex`;if(!(d in Rt))throw new G(`invalid-option`,`Invalid --permissions "${d}". Use one of: ${Object.keys(Rt).join(`, `)}`);if(f===`codex`&&u&&!R.has(u))throw new G(`invalid-option`,`Invalid codex --effort "${u}". Use one of: ${[...R].join(`, `)}`);if(f===`claude`&&u&&!B.has(u))throw new G(`invalid-option`,`Invalid claude --effort "${u}". Use one of: ${[...B].join(`, `)}`);return{engine:f,agent:n,model:l,effort:u,permissions:d}}function jn(e,t){return e===`read-only`&&Bt.test(t??``)}async function Mn(e,r,a,o){let s=a.cwd,c=r.engine===`codex`?I(s):_n(),l=r.model?e.models?.[r.model]:void 0;if(!c.available&&l&&V(l)){let e=wn(c);a.onInstallNote?.(e.note),c=I(s)}if(!c.available)throw new kn(r.agent,c.detail);let u=null;o.resume&&(u=t(s,o.resume)?.threadId??o.resume);let d=ne(),ee=re(s,d,{status:`queued`,kind:`task`,name:o.name??null,system:a.system??null,agent:r.agent,engine:r.engine,prompt:a.prompt,model:r.model,effort:r.effort,permissions:r.permissions,resumeThreadId:u,cwd:s,background:!a.wait,...o.simulateApproval?{simulateApproval:!0}:{},...a.flowRunId?{flowRunId:a.flowRunId}:{}}),m=n(s,d),h=S.openSync(C.join(m,`worker.log`),`a`),g=w(x.execPath,[f,`_worker`,d,`--cwd`,s],{cwd:s,detached:!0,stdio:[`ignore`,h,h],env:{...x.env,[On]:`1`}});g.unref(),S.closeSync(h),re(s,d,{pid:g.pid??null});let _=2**53-1,v=()=>i(s,d,_).filter(e=>e.phase!==`starting`).length,te=Date.now()+15e3,y=ee,b=null,ie=null;for(;Date.now()<(ie??te)&&(y=p(s,d)??y,y.status!==`failed`&&y.status!==`completed`);){if(y.threadId&&b===null&&(b=v(),ie=Date.now()+5e3),b!==null&&v()>b){y=p(s,d)??y;break}await new Promise(e=>setTimeout(e,150))}if(y.status===`failed`){let e=N(C.join(m,`result.json`))?.error?.message??``,t=i(s,d,5).map(e=>e.message??``).join(`
15
+ `),n=e||t;throw jn(r.permissions,n)?new G(`read-only-unavailable`,n):Dn.test(n)?new kn(r.agent,n):new G(`startup-failed`,n,{taskId:d})}return{taskId:d,job:y,agent:r.agent,startupCheck:y.threadId?`passed`:`pending`}}function Nn(e,t,n,r,i){return{error:`${e} failed to start: ${t}`,fallback:{action:`run-native-subagent`,reason:`no-engine-available`,permissions:n,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 Pn(e){if(x.env.CODER_WORKER)throw new G(`nested-dispatch`,`Nested dispatch refused: this shell is already inside a coder task. Do the work yourself, directly in this session - ignore any skill or instruction telling you to orchestrate via the coder CLI.`);if(!e.prompt.trim())throw new G(`invalid-option`,`Missing task text.`,{hint:[`Usage: coder run "<task text>"`,`Help: coder task run --help`]});let t=nn(e.cwd),n={agent:e.agent,model:e.model,effort:e.effort,permissions:e.permissions},r={name:e.name,resume:e.resume,simulateApproval:e.simulateApproval};for(;;){let i=An(n,t);try{return await Mn(t,i,e,r)}catch(a){if(!(a instanceof kn))throw a;let o=t.chain[t.chain.indexOf(a.agent)+1];if(!o){let t=Nn(a.agent,a.detail,i.permissions,e.system,e.prompt);throw new G(`chain-exhausted`,t.error,{payload:t})}e.onFallback?.({agent:a.agent,detail:a.detail,next:o}),n={agent:o,permissions:e.permissions},r={name:void 0,resume:void 0,simulateApproval:void 0}}}}function Fn(e,t){if(t.status!==`failed`)return;let n=t.result;if(!n||!Dn.test(n.error?.message??``)||!(!n.touchedFiles?.length&&!n.fileChanges?.length&&!n.commandExecutions?.length))return;let r=nn(e).chain;return r[r.indexOf(t.job.agent)+1]}function In(e,t){return N(C.join(n(e,t),`result.json`))}function Ln(e,t,n=0){return n===0?[]:i(e,t,n===`all`?2**53-1:n)}function Rn(e,t,n={}){let r=p(e,t);if(!r)throw Error(`No task found for "${t}".`);return{taskId:t,status:r.status,result:In(e,t),steps:Ln(e,t,n.tail),job:r}}async function zn(e,t,n={}){let r=p(e,t);if(!r)throw Error(`No task found for "${t}".`);let i=await ut(e,r);if(i.reason===`approval`){let e=i.approval;throw new G(`approval-pending`,`Approval needed for task ${t}: ${e.summary}`,{taskId:t,approval:e})}n.onSettle?.();let a=i.job;return{taskId:t,status:a.status,result:In(e,t),steps:Ln(e,t,n.tail),job:a}}const Bn=[`.ts`,`.mjs`,`.js`];function Vn(e,t){let n=[];try{n=S.readdirSync(e)}catch{return[]}let r=[];for(let i of n.sort()){let n=C.extname(i);Bn.includes(n)&&r.push({name:C.basename(i,n),path:C.join(e,i),scope:t})}return r}function Hn(e){let t=r(e),n=[],i=C.resolve(e);for(;n.push({dir:C.join(i,`.coder`,`flows`),scope:`workspace`}),i!==t&&C.dirname(i)!==i;)i=C.dirname(i);return n.push({dir:C.join(s(),`flows`),scope:`global`}),n}function Un(e){let t=new Set,n=[];for(let{dir:r,scope:i}of Hn(e))for(let e of Vn(r,i))t.has(e.name)||(t.add(e.name),n.push(e));return n}function Wn(e){return e.includes(`/`)||Bn.includes(C.extname(e))}function Gn(e,t){if(Wn(e)){let n=C.resolve(t,e);if(S.existsSync(n))return{name:C.basename(n,C.extname(n)),path:n};throw Error(`Flow file not found: ${e}`)}let n=Un(t).find(t=>t.name===e);if(!n)throw Error(`No flow named "${e}". Run \`coder flow discover\` to see available flows.`);return{name:n.name,path:n.path}}function Kn(e,t,n={}){if(t.length)try{w(x.execPath,[f,`_archiveSweep`,`--cwd`,e,...n.flows?[`--flows`]:[],...t],{detached:!0,stdio:`ignore`}).unref()}catch{}}async function qn(e){let{options:n,positionals:r}=m(e,E.object({cwd:te,flows:v})),i=j(n);for(let e of r){if(n.flows){let t=Z(e);t&&Fr(t);continue}let r=t(i,e);r&&y(i,r)}}async function Jn(e){let{options:t,positionals:n}=m(e,E.object({...g,"all-stopped":v}));Le(n,1,`task archive`);let r=j(t);if(t[`all-stopped`]){let e=o(r).filter(e=>u.includes(e.status));for(let t of e)y(r,t);let n=e.map(e=>e.id);if(t.json){k({archived:n,count:n.length});return}x.stdout.write(n.length?`Archived ${n.length} stopped task${n.length===1?``:`s`}.\n`:`${D.dim(`No stopped tasks to archive.`)}\n`);return}let i=n[0];i||pe(`Missing task id.`,{hint:[`Archive one: coder task archive <task-id>`,`Archive all stopped: coder task archive --all-stopped`]});let a=Re(r,i);if(y(r,a),t.json){k({taskId:a.id,archived:!0});return}x.stdout.write(`Archived task ${D.cyan(a.id)}.\n`)}async function Yn(e,t){let n=t.engine===`claude`?{detail:`claude worker terminated`}:await Pt(e,{threadId:t.threadId,turnId:t.turnId});if(t.pid&&t.status===`running`)try{x.kill(t.pid,`SIGTERM`)}catch{}return re(e,t.id,{status:`cancelled`,completedAt:new Date().toISOString()}),{taskId:t.id,status:`cancelled`,interrupt:n.detail}}async function Xn(e){let{options:t,positionals:n}=m(e,E.object(g));Le(n,1,`task stop`);let r=j(t),i=Re(r,n[0]),{interrupt:a}=await Yn(r,i);if(t.json){k({taskId:i.id,status:`cancelled`,interrupt:a});return}x.stdout.write(`Stopped task ${D.cyan(i.id)} ${D.dim(`(${a})`)}\n`)}function Zn(e){return typeof e!=`object`||!e?JSON.stringify(e)??`null`:Array.isArray(e)?`[${e.map(Zn).join(`,`)}]`:`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${Zn(e[t])}`).join(`,`)}}`}function Qn(e,t){return ce.createHash(`sha256`).update(`${e}\0${Zn(t)}`).digest(`hex`)}function K(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 $n=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&&t.fingerprint===e);if(!t)return null;t.consumed=!0;let{consumed:n,...r}=t;return this.write(r),r}record(e){this.write({...e,seq:0})}};const er=globalThis,q=er.__coderFlowCtxALS??=new ue,J=er.__coderFlowScopeALS??=new ue;function tr(){return J.getStore()?.args}function nr(){return J.getStore()?.depth??0}var rr=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 ir(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 ar(e,t){if(!t.tokens)return;let n=t.model??`default`;e.ledger[n]=ir(e.ledger[n]??null,t.tokens)}function or(e){return!!e&&typeof e.safeParse==`function`}async function sr(e){try{let t=await import(`zod`);if(typeof t.toJSONSchema==`function`)return t.toJSONSchema(e)}catch{}return null}async function cr(e){let t=await sr(e);return`Reply with ONLY a single JSON object ${t?`matching this JSON Schema:\n${JSON.stringify(t,null,2)}`:`matching the requested shape`}\nNo prose, no markdown fences — just the JSON object.`}function lr(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 ur(e,t){if(!or(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 dr(e,t,n){return{cwd:t,agent:e.agent,model:e.model,effort:e.effort,permissions:e.permissions,name:e.name,system:e.system,wait:!0,flowRunId:n?.runId}}async function fr(e,t,n,r){let i=t.cwd?C.resolve(t.cwd):n?.cwd??x.cwd(),a;for(;;){let o=await Pn({prompt:e,...dr(t,i,n),...a?{agent:a,model:void 0,effort:void 0,resume:void 0}:{resume:r??t.resume},onFallback:e=>Sr(`${e.agent} failed to start — falling back to ${e.next} (${e.detail.replace(/\s+/g,` `).slice(0,140)})`)});n?.running.add(o.taskId);let s=p(i,o.taskId),c=s?be(s):void 0;n?.hooks.onTaskStart?.({taskId:o.taskId,name:t.name,prompt:e,agent:c,depth:nr()});let l;try{l=await zn(i,o.taskId)}finally{n?.running.delete(o.taskId)}let u=Fn(i,l);if(u){n?.hooks.onTaskEnd?.({taskId:o.taskId,status:`failed`,tokens:null}),a=u;continue}return{taskId:o.taskId,status:l.status,output:l.result?.finalMessage||l.result?.error?.message||``,tokens:l.result?.tokens??null,model:l.result?.model??l.job.model??null}}}async function pr(e,t,n){let r=e;if(t.returns&&(r=`${e}\n\n${await cr(t.returns)}`),n?.dryRun){x.stdout.write(`\n[dry-run] task${t.name?` (${t.name})`:``}:\n${r}\n`);let e={...t,returns:t.returns?`<schema>`:void 0};return x.stdout.write(`[dry-run] opts: ${JSON.stringify(e)}\n`),{taskId:`dry`,status:`completed`,output:`[dry-run]`,data:void 0,tokens:null,model:t.model??null}}let i=await fr(r,t,n);if(i.status!==`completed`){let e={...i,data:void 0};throw new G(`task-failed`,`Task ${i.taskId} ${i.status}: ${i.output||`no output`}`,{taskId:i.taskId,result:e})}let a=i.output,o=i.tokens,s;if(t.returns){let e;try{e=ur(t.returns,lr(a))}catch(t){e={ok:!1,errors:t instanceof Error?t.message:String(t)}}if(e.ok)s=e.data;else{let r=await fr(`Your previous reply did not match the required format: ${e.errors}\n\n${await cr(t.returns)}`,t,n,i.taskId);a=r.output||a,o=ir(o,r.tokens);try{let e=ur(t.returns,lr(a));if(!e.ok)throw Error(e.errors);s=e.data}catch(e){let t={taskId:i.taskId,status:`completed`,output:a,data:void 0,tokens:o,model:i.model};throw new G(`task-failed`,`Task ${i.taskId} produced no valid structured output: ${e instanceof Error?e.message:String(e)}`,{taskId:i.taskId,result:t})}}}return{taskId:i.taskId,status:`completed`,output:a,data:s,tokens:o,model:i.model}}async function mr(e){if(e)return await sr(e)??`<schema>`}async function hr(e,t={}){let n=q.getStore();if(!n)return pr(e,t);let r=Qn(`task`,{prompt:e,agent:t.agent,model:t.model,effort:t.effort,permissions:t.permissions,name:t.name,system:t.system,resume:t.resume,cwd:t.cwd,returns:await mr(t.returns)}),i=n.journal.replay(r);if(i)return i.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 i=new Date().toISOString(),a;try{a=await pr(e,t,n)}catch(e){let t=e instanceof G?e.result:void 0;throw t&&n.hooks.onTaskEnd?.({taskId:t.taskId,status:t.status===`completed`?`failed`:t.status,tokens:t.tokens}),e}return ar(n,a),n.dryRun||n.hooks.onTaskEnd?.({taskId:a.taskId,status:a.status,tokens:a.tokens}),n.journal.record({kind:`task`,fingerprint:r,result:a,taskId:a.taskId,tokens:a.tokens,startedAt:i,endedAt:new Date().toISOString()}),a})}const gr=256*1024;let _r=0;function vr(e){let t=[];for(let n=e;;){t.push(C.join(n,`node_modules`,`.bin`));let e=C.dirname(n);if(e===n)break;n=e}let n=x.platform===`win32`?`;`:`:`;return{...x.env,PATH:[...t,x.env.PATH??``].join(n)}}async function yr(e,t){return new Promise(n=>{let r=w(e,{shell:!0,cwd:t,env:vr(t)}),i=``,a=e=>{i.length>=gr||(i+=e,i.length>=gr&&(i=`${i.slice(0,gr)}\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 br(e,t={}){let n=q.getStore(),r=t.cwd?C.resolve(t.cwd):n?.cwd??x.cwd();if(!n)return yr(e,r);let i=Qn(`gate`,{cmd:e,cwd:t.cwd}),a=n.journal.replay(i);if(a)return a.result;if(n.dryRun){x.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-${x.pid}-${_r+=1}`,c=nr();n.hooks.onGateStart?.({gateId:s,cmd:e,depth:c});let l=await yr(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 xr(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 Sr(e){let t=q.getStore();if(t)try{S.appendFileSync(C.join(t.runDir,`flow.log`),`${JSON.stringify({at:new Date().toISOString(),message:e})}\n`,`utf8`)}catch{}t?.hooks.onLog?t.hooks.onLog(e,nr()):(x.stderr.isTTY||!t)&&x.stderr.write(`[flow] ${e}\n`)}const Cr=ie(import.meta.url);function wr(e){let t=C.dirname(oe(import.meta.url));for(;C.basename(t)!==`dist`&&C.dirname(t)!==t;)t=C.dirname(t);return C.basename(t)===`dist`?se(C.join(t,e)).href:null}function Tr(e){if(!(e===`@wular/coder`||e===`@wular/coder/flow`||e===`zod`||e.startsWith(`zod/`)))return null;try{return se(Cr.resolve(e)).href}catch{}return e===`@wular/coder/flow`?wr(`flow/index.js`):e===`@wular/coder`?wr(`sdk.js`):null}const Er=/(\bfrom\s+|\bimport\s+|\bimport\s*\(\s*)(['"])([^'"]+)\2/g;function Dr(e){return e.replace(Er,(e,t,n,r)=>{let i=Tr(r);return i?`${t}${n}${i}${n}`:e})}async function Or(e,t,n){try{return await import(se(e).href)}catch(e){let r=e instanceof Error?e.message:String(e);throw t===`.ts`&&!x.versions?.bun&&/Unknown file extension|Unexpected token|SyntaxError|Cannot parse|import type|interface/i.test(r)?Error(`Could not run ${C.basename(n)}: TypeScript flows need bun. Run under \`bun\`, or write the flow as .mjs/.js.`):e}}async function kr(e){let t=C.extname(e),n;try{n=S.readFileSync(e,`utf8`)}catch{throw Error(`Cannot read flow file: ${e}`)}let r=Dr(n);if(r===n)return Or(e,t,e);let i=C.dirname(e);try{for(let e of S.readdirSync(i)){if(!e.startsWith(`.__coderflow_`))continue;let t=C.join(i,e);Date.now()-S.statSync(t).mtimeMs>10*6e4&&S.unlinkSync(t)}}catch{}let a=`${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`,o=C.join(i,`.__coderflow_${a}${t}`),s=`__coderflow_loaded_${a}`,c=new Promise(e=>{globalThis[s]=e});S.writeFileSync(o,`globalThis[${JSON.stringify(s)}]?.();${r}`,`utf8`);let l=Or(o,t,e);try{await Promise.race([c,l.then(()=>void 0,()=>void 0)])}finally{delete globalThis[s];try{S.unlinkSync(o)}catch{}}return await l}async function Ar(e,t){let n=J.getStore();n.args=t??{};let r=await kr(e),i=r.args,a=n.args;if(or(i)){let e=i.safeParse(t??{});if(!e.success){let e=ur(i,t??{});throw Error(`Invalid flow args: ${e.errors??`validation failed`}`)}a=e.data,n.args=a}let o=r.default;return typeof o==`function`?o(a):o}async function jr(e,t){let n=q.getStore(),r=Gn(e,n?.cwd??x.cwd());if(!n)return J.run({args:t??{},depth:0},()=>Ar(r.path,t));let i=J.getStore();if(i&&i.depth>=1)throw Error(`flow("${e}") nesting is one level deep; a sub-flow cannot call flow().`);let a=Qn(`flow`,{name:r.name,args:t??{}}),o=n.journal.replay(a);if(o)return o.result;let s=new Date().toISOString();n.hooks.onFlowStart?.({name:r.name,depth:(i?.depth??0)+1});let c=await J.run({args:t??{},depth:(i?.depth??0)+1},()=>Ar(r.path,t));return n.journal.record({kind:`flow`,fingerprint:a,result:c,startedAt:s,endedAt:new Date().toISOString()}),c}function Mr(){return`flow-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}function Y(){return C.join(s(),`state`,`global`,`flows`)}function Nr(){return C.join(s(),`state`,`global`,`flows-archived`)}function X(e){b(e,`flow run id`);let t=C.join(Y(),e);if(S.existsSync(C.join(t,`flow.json`)))return t;let n=C.join(Nr(),e);return S.existsSync(C.join(n,`flow.json`))?n:t}function Pr(e){if(e.archived)return e;let t={...e,archived:!0,archivedAt:new Date().toISOString()};return Q(X(e.runId),t),t}function Fr(e){let t=Pr(e),n=X(e.runId),r=C.join(Nr(),e.runId);if(n!==r)try{S.mkdirSync(Nr(),{recursive:!0}),S.renameSync(n,r)}catch{}return t}function Ir(e){let t=X(e.runId),n=C.join(Y(),e.runId);if(t!==n)try{S.mkdirSync(Y(),{recursive:!0}),S.renameSync(t,n)}catch{}let r={...e,archived:void 0,archivedAt:void 0};return Q(X(e.runId),r),r}function Lr(e){let t=X(e);return S.existsSync(C.join(t,`flow.json`))?(S.rmSync(t,{recursive:!0,force:!0}),!0):!1}function Rr(e){if(!c(e))return null;let t=C.join(X(e),`flow.json`);if(!S.existsSync(t))return null;try{return JSON.parse(S.readFileSync(t,`utf8`))}catch{return null}}function zr(e){return e.status!==`running`||!e.pid||Zr(e)?e:(Jr(e.runId,`orchestrator died`),Rr(e.runId)??e)}function Z(e){let t=Rr(e);return t?zr(t):null}function Q(e,t){S.writeFileSync(C.join(e,`flow.json`),`${JSON.stringify(t,null,2)}\n`,`utf8`)}function Br(e){let t=[];try{t=S.readdirSync(e)}catch{return[]}let n=[];for(let r of t)try{n.push(zr(JSON.parse(S.readFileSync(C.join(e,r,`flow.json`),`utf8`))))}catch{}return n}const Vr=(e,t)=>String(t.startedAt).localeCompare(String(e.startedAt));function Hr(){let e=[];for(let t of Br(Y()))t.archived?Fr(t):e.push(t);return e.sort(Vr)}function Ur(e){let t=e?.migrate??!0,n=Br(Nr()),r=new Set(n.map(e=>e.runId));for(let e of Br(Y()))e.archived&&!r.has(e.runId)&&n.push(t?Fr(e):e);return n.sort(Vr)}function Wr(){return[...Hr(),...Ur()].sort(Vr)[0]??null}function Gr(e,t=`all`){if(t===0)return[];let n=K(C.join(X(e),`journal.jsonl`)).filter(e=>e.kind===`task`),r=o(x.cwd()),i=new Map(r.map(e=>[e.id,e])),a=e=>e?.name??e?.prompt?.replace(/\s+/g,` `).trim().slice(0,60)??null,s=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}}),c=new Set(s.map(e=>e.taskId));for(let t of r)t.flowRunId===e&&!c.has(t.id)&&s.push({taskId:t.id,name:a(t),status:t.status,tokens:null});return t===`all`?s:s.slice(-t)}function Kr(e={}){let t;if(e.archived)t=Ur();else{let e=[];t=Hr().filter(t=>t.status===`running`||t.status===`queued`||he(t.endedAt??t.startedAt)<=6e5?!0:(Pr(t),e.push(t.runId),!1)),Kn(x.cwd(),e,{flows:!0})}let n=e.limit===void 0?0:Math.max(0,t.length-e.limit);return{runs:e.limit===void 0?t:t.slice(0,e.limit),clipped:n}}function qr(e,t={},n){let r,i,a;if(n){let e=Z(n);if(!e)throw Error(`No flow run "${n}".`);e.archived&&Ir(e),r=e.name,i=e.script,a=t.args??e.args}else{let n=Gn(e,t.cwd?C.resolve(t.cwd):x.cwd());r=n.name,i=n.path,a=t.args??{}}let o=n??Mr(),s=X(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??ae.cpus().length),maxTasks:Math.max(1,t.maxTasks??ae.cpus().length*10),taskCount:0,ledger:{}};return Q(s,c),c}function $(e,t,n){Q(e,{...t,endedAt:new Date().toISOString(),pid:void 0,pidStartedAt:void 0,...n})}function Jr(e,t){let n=Rr(e);!n||n.status!==`running`||$(X(e),n,{status:`failed`,error:t})}const Yr=`stop-keep-tasks`;function Xr(e){try{return x.kill(e,0),!0}catch{return!1}}function Zr(t){if(!t.pid||!Xr(t.pid))return!1;let n=e(t.pid),r=Date.parse(t.pidStartedAt??``);return n===null||!Number.isFinite(r)||n<=r+6e4}function Qr(e){let t=o(x.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 K(C.join(X(e),`journal.jsonl`)))t.kind===`task`&&t.taskId&&r.add(t.taskId);return[...r].filter(e=>{let t=n.get(e);return!!t&&!u.includes(t.status)})}async function $r(e,t=[]){let n=x.cwd(),r=[];for(let i of new Set([...Qr(e),...t])){let e=p(n,i);if(!(!e||u.includes(e.status)))try{await Yn(n,e),r.push(i)}catch{}}return r}async function ei(e,t={}){let n=e?Z(e):Wr();if(!n)throw new G(`flow-failed`,e?`No flow run "${e}".`:`No flow runs.`,{hint:`Run one: coder flow run <name>`});if(n.status!==`running`)throw new G(`flow-failed`,`Run ${n.runId} is not running.`,{runId:n.runId,hint:`Result: coder flow result ${n.runId}`});let r=X(n.runId);if(!Zr(n))return $(r,n,{status:`failed`,error:`orchestrator died`}),{runId:n.runId,status:`failed`,stoppedTasks:[],keptTasks:Qr(n.runId)};let i=Qr(n.runId),a=C.join(r,Yr);t.keepTasks&&S.writeFileSync(a,``,`utf8`);try{x.kill(n.pid,`SIGINT`);let e=Z(n.runId);for(let t=0;t<25&&e?.status===`running`;t+=1)await new Promise(e=>setTimeout(e,200)),e=Z(n.runId);if(!e||e.status===`running`)throw new G(`flow-failed`,`Run ${n.runId} did not stop within 5s.`,{runId:n.runId,hint:`Check it: coder flow result ${n.runId}`});let t=x.cwd(),r=[],a=[];for(let e of i){let n=p(t,e);n&&(n.status===`cancelled`?r.push(e):u.includes(n.status)||a.push(e))}return{runId:n.runId,status:e.status,stoppedTasks:r,keptTasks:a}}finally{if(t.keepTasks)try{S.unlinkSync(a)}catch{}}}async function*ti(e,t,n={}){let r=C.join(X(e),`events.jsonl`),i=n.tail??`all`,a=0;if(i!==`all`)try{a=Math.max(0,S.readFileSync(r,`utf8`).split(`
16
+ `).length-1-i)}catch{}let o=Ye(r),s=()=>{let e=[];for(let t of o()){if(a>0){--a;continue}try{e.push(JSON.parse(t))}catch{}}return e},c=Z(e);for(;!c||c.status===`running`;){yield*s();let n=c?.pid?!Zr(c):t!==void 0&&!Xr(t);if(c&&(c.pid||t!==void 0)&&n){Jr(e,`orchestrator died`);break}await new Promise(e=>setTimeout(e,400)),c=Z(e)??c}yield*s()}function ni(e,t,n,r){let i={...qr(e,t,r),pid:x.pid,pidStartedAt:new Date().toISOString()},{runId:a}=i,o=X(a);Q(o,i);let s=C.join(o,`journal.jsonl`),c=r?K(s):[],l=new $n(c,s),u={runId:a,runDir:o,cwd:t.cwd?C.resolve(t.cwd):x.cwd(),journal:l,semaphore:new rr(i.concurrency),maxTasks:i.maxTasks,dryRun:t.dryRun??!1,ledger:{},running:new Set,taskCount:0,stopping:!1,hooks:n};return{started:{runId:a,runDir:o,ctx:u,markStopped:()=>{u.stopping=!0,$(o,i,{status:`stopped`,taskCount:u.taskCount,ledger:u.ledger})}},args:i.args,name:i.name,replayable:c.length}}async function ri(e,t,n,r){let{ctx:i,runDir:a,runId:o}=e,s=Z(o);try{let e=await q.run(i,()=>J.run({args:r??{},depth:0},()=>Ar(t,r)));return $(a,s,{status:`completed`,taskCount:i.taskCount,ledger:i.ledger,result:e}),{runId:o,name:n,status:`completed`,result:e,tokens:i.ledger,taskCount:i.taskCount}}catch(e){throw i.stopping||$(a,s,{status:`failed`,taskCount:i.taskCount,ledger:i.ledger,error:e instanceof Error?e.message:String(e)}),new G(`flow-failed`,e instanceof Error?e.message:String(e),{runId:o})}}async function ii(e,t={},n={}){let{started:r}=ni(e,t,n),i=Z(r.runId).script;return n.onStart?.({runId:r.runId,requestStop:r.markStopped,runningIds:()=>[...r.ctx.running]}),ri(r,i,Z(r.runId).name,t.args??{})}async function ai(e,t={},n={}){let{started:r,args:i,name:a,replayable:o}=ni(``,t,n,e),s=Z(e).script;return n.onStart?.({runId:e,requestStop:r.markStopped,runningIds:()=>[...r.ctx.running]}),o&&n.onReplay?.(o),ri(r,s,a,i)}export{Lt as $,j as $t,Un as A,we as At,xn as B,fe as Bt,hr as C,Ye as Ct,Jn as D,qe as Dt,Yn as E,We as Et,Nn as F,Te as Ft,Sn as G,xe as Gt,En as H,A as Ht,Pn as I,pe as It,yn as J,Fe as Jt,vn as K,Ne as Kt,jn as L,ve as Lt,G as M,Ce as Mt,Dn as N,he as Nt,qn as O,Ge as Ot,On as P,De as Pt,L as Q,Re as Qt,Rn as R,ge as Rt,ti as S,ct as St,Xn as T,Je as Tt,Cn as U,_e as Ut,wn as V,me as Vt,bn as W,Ee as Wt,z as X,ye as Xt,B as Y,k as Yt,R as Z,Le as Zt,ai as _,Ft as _t,Lr as a,nn as at,$r as b,lt as bt,br as c,an as ct,Hr as d,W as dt,Ie as en,Rt as et,Sr as f,U as ft,Z as g,It as gt,qr as h,I as ht,tr as i,V as it,Gn as j,Pe as jt,Kn as k,Ke as kt,Wr as l,ln as lt,xr as m,Nt as mt,Fr as n,ke as nn,H as nt,jr as o,rn as ot,Jr as p,mn as pt,_n as q,D as qt,Kr as r,Se as rn,un as rt,Gr as s,pn as st,Yr as t,Oe as tn,sn as tt,Ur as u,cn as ut,X as v,ut as vt,K as w,N as wt,ei as x,at as xt,ii as y,ot as yt,zn as z,be as zt};