@agiflowai/agent-cli 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.0.5
4
+ - Fix Claude Code context issue.
5
+
3
6
  ## 0.0.4
4
7
  - Update to support Claude Code 2.0.
5
8
 
@@ -58,7 +58,7 @@ ${e}`,Ts=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),ks=Objec
58
58
  if (${g}.issues.length) payload.issues = payload.issues.concat(${g}.issues.map(iss => ({
59
59
  ...iss,
60
60
  path: iss.path ? [${$e(d)}, ...iss.path] : [${$e(d)}]
61
- })));`),p.write(`newResult[${$e(d)}] = ${g}.value`)}p.write("payload.value = newResult;"),p.write("return payload;");const h=p.compile();return(d,g)=>h(E,d,g)};let s;const i=Ct,o=!Un.jitless,l=o&&Go.value,f=e.catchall;let m;t._zod.parse=(E,p)=>{m??(m=n.value);const _=E.value;if(!i(_))return E.issues.push({expected:"object",code:"invalid_type",input:_,inst:t}),E;const T=[];if(o&&l&&p?.async===!1&&p.jitless!==!0)s||(s=r(e.shape)),E=s(E,p);else{E.value={};const g=m.shape;for(const F of m.keys){const $=g[F],A=$._zod.run({value:_[F],issues:[]},p),B=$._zod.optin==="optional"&&$._zod.optout==="optional";A instanceof Promise?T.push(A.then(R=>B?dn(R,E,F,_):qe(R,E,F))):B?dn(A,E,F,_):qe(A,E,F)}}if(!f)return T.length?Promise.all(T).then(()=>E):E;const u=[],c=m.keySet,h=f._zod,d=h.def.type;for(const g of Object.keys(_)){if(c.has(g))continue;if(d==="never"){u.push(g);continue}const F=h.run({value:_[g],issues:[]},p);F instanceof Promise?T.push(F.then($=>qe($,E,g))):qe(F,E,g)}return u.length&&E.issues.push({code:"unrecognized_keys",keys:u,input:_,inst:t}),T.length?Promise.all(T).then(()=>E):E}});function gn(t,e,n,r){for(const s of t)if(s.issues.length===0)return e.value=s.value,e;return e.issues.push({code:"invalid_union",input:e.value,inst:n,errors:t.map(s=>s.issues.map(i=>Ee(i,r,De())))}),e}const Fu=y("$ZodUnion",(t,e)=>{W.init(t,e),H(t._zod,"optin",()=>e.options.some(n=>n._zod.optin==="optional")?"optional":void 0),H(t._zod,"optout",()=>e.options.some(n=>n._zod.optout==="optional")?"optional":void 0),H(t._zod,"values",()=>{if(e.options.every(n=>n._zod.values))return new Set(e.options.flatMap(n=>Array.from(n._zod.values)))}),H(t._zod,"pattern",()=>{if(e.options.every(n=>n._zod.pattern)){const n=e.options.map(r=>r._zod.pattern);return new RegExp(`^(${n.map(r=>xt(r.source)).join("|")})$`)}}),t._zod.parse=(n,r)=>{let s=!1;const i=[];for(const o of e.options){const a=o._zod.run({value:n.value,issues:[]},r);if(a instanceof Promise)i.push(a),s=!0;else{if(a.issues.length===0)return a;i.push(a)}}return s?Promise.all(i).then(o=>gn(o,n,t,r)):gn(i,n,t,r)}}),Su=y("$ZodIntersection",(t,e)=>{W.init(t,e),t._zod.parse=(n,r)=>{const s=n.value,i=e.left._zod.run({value:s,issues:[]},r),o=e.right._zod.run({value:s,issues:[]},r);return i instanceof Promise||o instanceof Promise?Promise.all([i,o]).then(([l,f])=>fn(n,l,f)):fn(n,i,o)}});function bt(t,e){if(t===e)return{valid:!0,data:t};if(t instanceof Date&&e instanceof Date&&+t==+e)return{valid:!0,data:t};if(nt(t)&&nt(e)){const n=Object.keys(e),r=Object.keys(t).filter(i=>n.indexOf(i)!==-1),s={...t,...e};for(const i of r){const o=bt(t[i],e[i]);if(!o.valid)return{valid:!1,mergeErrorPath:[i,...o.mergeErrorPath]};s[i]=o.data}return{valid:!0,data:s}}if(Array.isArray(t)&&Array.isArray(e)){if(t.length!==e.length)return{valid:!1,mergeErrorPath:[]};const n=[];for(let r=0;r<t.length;r++){const s=t[r],i=e[r],o=bt(s,i);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function fn(t,e,n){if(e.issues.length&&t.issues.push(...e.issues),n.issues.length&&t.issues.push(...n.issues),Oe(t))return t;const r=bt(e.value,n.value);if(!r.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(r.mergeErrorPath)}`);return t.value=r.data,t}const wu=y("$ZodRecord",(t,e)=>{W.init(t,e),t._zod.parse=(n,r)=>{const s=n.value;if(!nt(s))return n.issues.push({expected:"record",code:"invalid_type",input:s,inst:t}),n;const i=[];if(e.keyType._zod.values){const o=e.keyType._zod.values;n.value={};for(const l of o)if(typeof l=="string"||typeof l=="number"||typeof l=="symbol"){const f=e.valueType._zod.run({value:s[l],issues:[]},r);f instanceof Promise?i.push(f.then(m=>{m.issues.length&&n.issues.push(...Fe(l,m.issues)),n.value[l]=m.value})):(f.issues.length&&n.issues.push(...Fe(l,f.issues)),n.value[l]=f.value)}let a;for(const l in s)o.has(l)||(a=a??[],a.push(l));a&&a.length>0&&n.issues.push({code:"unrecognized_keys",input:s,inst:t,keys:a})}else{n.value={};for(const o of Reflect.ownKeys(s)){if(o==="__proto__")continue;const a=e.keyType._zod.run({value:o,issues:[]},r);if(a instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(a.issues.length){n.issues.push({origin:"record",code:"invalid_key",issues:a.issues.map(f=>Ee(f,r,De())),input:o,path:[o],inst:t}),n.value[a.value]=a.value;continue}const l=e.valueType._zod.run({value:s[o],issues:[]},r);l instanceof Promise?i.push(l.then(f=>{f.issues.length&&n.issues.push(...Fe(o,f.issues)),n.value[a.value]=f.value})):(l.issues.length&&n.issues.push(...Fe(o,l.issues)),n.value[a.value]=l.value)}}return i.length?Promise.all(i).then(()=>n):n}}),Cu=y("$ZodEnum",(t,e)=>{W.init(t,e);const n=Uo(e.entries);t._zod.values=new Set(n),t._zod.pattern=new RegExp(`^(${n.filter(r=>jo.has(typeof r)).map(r=>typeof r=="string"?ze(r):r.toString()).join("|")})$`),t._zod.parse=(r,s)=>{const i=r.value;return t._zod.values.has(i)||r.issues.push({code:"invalid_value",values:n,input:i,inst:t}),r}}),bu=y("$ZodLiteral",(t,e)=>{W.init(t,e),t._zod.values=new Set(e.values),t._zod.pattern=new RegExp(`^(${e.values.map(n=>typeof n=="string"?ze(n):n?n.toString():String(n)).join("|")})$`),t._zod.parse=(n,r)=>{const s=n.value;return t._zod.values.has(s)||n.issues.push({code:"invalid_value",values:e.values,input:s,inst:t}),n}}),Au=y("$ZodTransform",(t,e)=>{W.init(t,e),t._zod.parse=(n,r)=>{const s=e.transform(n.value,n);if(r.async)return(s instanceof Promise?s:Promise.resolve(s)).then(o=>(n.value=o,n));if(s instanceof Promise)throw new Pe;return n.value=s,n}}),Tu=y("$ZodOptional",(t,e)=>{W.init(t,e),t._zod.optin="optional",t._zod.optout="optional",H(t._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,void 0]):void 0),H(t._zod,"pattern",()=>{const n=e.innerType._zod.pattern;return n?new RegExp(`^(${xt(n.source)})?$`):void 0}),t._zod.parse=(n,r)=>e.innerType._zod.optin==="optional"?e.innerType._zod.run(n,r):n.value===void 0?n:e.innerType._zod.run(n,r)}),ku=y("$ZodNullable",(t,e)=>{W.init(t,e),H(t._zod,"optin",()=>e.innerType._zod.optin),H(t._zod,"optout",()=>e.innerType._zod.optout),H(t._zod,"pattern",()=>{const n=e.innerType._zod.pattern;return n?new RegExp(`^(${xt(n.source)}|null)$`):void 0}),H(t._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,null]):void 0),t._zod.parse=(n,r)=>n.value===null?n:e.innerType._zod.run(n,r)}),Iu=y("$ZodDefault",(t,e)=>{W.init(t,e),t._zod.optin="optional",H(t._zod,"values",()=>e.innerType._zod.values),t._zod.parse=(n,r)=>{if(n.value===void 0)return n.value=e.defaultValue,n;const s=e.innerType._zod.run(n,r);return s instanceof Promise?s.then(i=>pn(i,e)):pn(s,e)}});function pn(t,e){return t.value===void 0&&(t.value=e.defaultValue),t}const $u=y("$ZodPrefault",(t,e)=>{W.init(t,e),t._zod.optin="optional",H(t._zod,"values",()=>e.innerType._zod.values),t._zod.parse=(n,r)=>(n.value===void 0&&(n.value=e.defaultValue),e.innerType._zod.run(n,r))}),Ou=y("$ZodNonOptional",(t,e)=>{W.init(t,e),H(t._zod,"values",()=>{const n=e.innerType._zod.values;return n?new Set([...n].filter(r=>r!==void 0)):void 0}),t._zod.parse=(n,r)=>{const s=e.innerType._zod.run(n,r);return s instanceof Promise?s.then(i=>mn(i,t)):mn(s,t)}});function mn(t,e){return!t.issues.length&&t.value===void 0&&t.issues.push({code:"invalid_type",expected:"nonoptional",input:t.value,inst:e}),t}const xu=y("$ZodCatch",(t,e)=>{W.init(t,e),t._zod.optin="optional",H(t._zod,"optout",()=>e.innerType._zod.optout),H(t._zod,"values",()=>e.innerType._zod.values),t._zod.parse=(n,r)=>{const s=e.innerType._zod.run(n,r);return s instanceof Promise?s.then(i=>(n.value=i.value,i.issues.length&&(n.value=e.catchValue({...n,error:{issues:i.issues.map(o=>Ee(o,r,De()))},input:n.value}),n.issues=[]),n)):(n.value=s.value,s.issues.length&&(n.value=e.catchValue({...n,error:{issues:s.issues.map(i=>Ee(i,r,De()))},input:n.value}),n.issues=[]),n)}}),Pu=y("$ZodPipe",(t,e)=>{W.init(t,e),H(t._zod,"values",()=>e.in._zod.values),H(t._zod,"optin",()=>e.in._zod.optin),H(t._zod,"optout",()=>e.out._zod.optout),t._zod.parse=(n,r)=>{const s=e.in._zod.run(n,r);return s instanceof Promise?s.then(i=>Dn(i,e,r)):Dn(s,e,r)}});function Dn(t,e,n){return Oe(t)?t:e.out._zod.run({value:t.value,issues:t.issues},n)}const Ru=y("$ZodReadonly",(t,e)=>{W.init(t,e),H(t._zod,"propValues",()=>e.innerType._zod.propValues),H(t._zod,"values",()=>e.innerType._zod.values),H(t._zod,"optin",()=>e.innerType._zod.optin),H(t._zod,"optout",()=>e.innerType._zod.optout),t._zod.parse=(n,r)=>{const s=e.innerType._zod.run(n,r);return s instanceof Promise?s.then(En):En(s)}});function En(t){return t.value=Object.freeze(t.value),t}const Nu=y("$ZodCustom",(t,e)=>{ie.init(t,e),W.init(t,e),t._zod.parse=(n,r)=>n,t._zod.check=n=>{const r=n.value,s=e.fn(r);if(s instanceof Promise)return s.then(i=>yn(i,n,r,t));yn(s,n,r,t)}});function yn(t,e,n,r){if(!t){const s={code:"custom",input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(s.params=r._zod.def.params),e.issues.push(Re(s))}}class Bu{constructor(){this._map=new Map,this._idmap=new Map}add(e,...n){const r=n[0];if(this._map.set(e,r),r&&typeof r=="object"&&"id"in r){if(this._idmap.has(r.id))throw new Error(`ID ${r.id} already exists in the registry`);this._idmap.set(r.id,e)}return this}clear(){return this._map=new Map,this._idmap=new Map,this}remove(e){const n=this._map.get(e);return n&&typeof n=="object"&&"id"in n&&this._idmap.delete(n.id),this._map.delete(e),this}get(e){const n=e._zod.parent;if(n){const r={...this.get(n)??{}};return delete r.id,{...r,...this._map.get(e)}}return this._map.get(e)}has(e){return this._map.has(e)}}function Uu(){return new Bu}const Ye=Uu();function zu(t,e){return new t({type:"string",...I(e)})}function Mu(t,e){return new t({type:"string",coerce:!0,...I(e)})}function Gu(t,e){return new t({type:"string",format:"email",check:"string_format",abort:!1,...I(e)})}function vn(t,e){return new t({type:"string",format:"guid",check:"string_format",abort:!1,...I(e)})}function ju(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,...I(e)})}function Lu(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...I(e)})}function Wu(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...I(e)})}function Zu(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...I(e)})}function Vu(t,e){return new t({type:"string",format:"url",check:"string_format",abort:!1,...I(e)})}function Hu(t,e){return new t({type:"string",format:"emoji",check:"string_format",abort:!1,...I(e)})}function Ku(t,e){return new t({type:"string",format:"nanoid",check:"string_format",abort:!1,...I(e)})}function qu(t,e){return new t({type:"string",format:"cuid",check:"string_format",abort:!1,...I(e)})}function Yu(t,e){return new t({type:"string",format:"cuid2",check:"string_format",abort:!1,...I(e)})}function Ju(t,e){return new t({type:"string",format:"ulid",check:"string_format",abort:!1,...I(e)})}function Qu(t,e){return new t({type:"string",format:"xid",check:"string_format",abort:!1,...I(e)})}function Xu(t,e){return new t({type:"string",format:"ksuid",check:"string_format",abort:!1,...I(e)})}function ec(t,e){return new t({type:"string",format:"ipv4",check:"string_format",abort:!1,...I(e)})}function tc(t,e){return new t({type:"string",format:"ipv6",check:"string_format",abort:!1,...I(e)})}function nc(t,e){return new t({type:"string",format:"cidrv4",check:"string_format",abort:!1,...I(e)})}function rc(t,e){return new t({type:"string",format:"cidrv6",check:"string_format",abort:!1,...I(e)})}function sc(t,e){return new t({type:"string",format:"base64",check:"string_format",abort:!1,...I(e)})}function ic(t,e){return new t({type:"string",format:"base64url",check:"string_format",abort:!1,...I(e)})}function oc(t,e){return new t({type:"string",format:"e164",check:"string_format",abort:!1,...I(e)})}function ac(t,e){return new t({type:"string",format:"jwt",check:"string_format",abort:!1,...I(e)})}function uc(t,e){return new t({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...I(e)})}function cc(t,e){return new t({type:"string",format:"date",check:"string_format",...I(e)})}function lc(t,e){return new t({type:"string",format:"time",check:"string_format",precision:null,...I(e)})}function hc(t,e){return new t({type:"string",format:"duration",check:"string_format",...I(e)})}function dc(t,e){return new t({type:"number",checks:[],...I(e)})}function gc(t,e){return new t({type:"number",coerce:!0,checks:[],...I(e)})}function fc(t,e){return new t({type:"number",check:"number_format",abort:!1,format:"safeint",...I(e)})}function pc(t,e){return new t({type:"boolean",...I(e)})}function mc(t){return new t({type:"any"})}function Dc(t){return new t({type:"unknown"})}function Ec(t,e){return new t({type:"never",...I(e)})}function _n(t,e){return new Yn({check:"less_than",...I(e),value:t,inclusive:!1})}function yt(t,e){return new Yn({check:"less_than",...I(e),value:t,inclusive:!0})}function Fn(t,e){return new Jn({check:"greater_than",...I(e),value:t,inclusive:!1})}function vt(t,e){return new Jn({check:"greater_than",...I(e),value:t,inclusive:!0})}function Sn(t,e){return new Ia({check:"multiple_of",...I(e),value:t})}function er(t,e){return new Oa({check:"max_length",...I(e),maximum:t})}function rt(t,e){return new xa({check:"min_length",...I(e),minimum:t})}function tr(t,e){return new Pa({check:"length_equals",...I(e),length:t})}function yc(t,e){return new Ra({check:"string_format",format:"regex",...I(e),pattern:t})}function vc(t){return new Na({check:"string_format",format:"lowercase",...I(t)})}function _c(t){return new Ba({check:"string_format",format:"uppercase",...I(t)})}function Fc(t,e){return new Ua({check:"string_format",format:"includes",...I(e),includes:t})}function Sc(t,e){return new za({check:"string_format",format:"starts_with",...I(e),prefix:t})}function wc(t,e){return new Ma({check:"string_format",format:"ends_with",...I(e),suffix:t})}function Me(t){return new Ga({check:"overwrite",tx:t})}function Cc(t){return Me(e=>e.normalize(t))}function bc(){return Me(t=>t.trim())}function Ac(){return Me(t=>t.toLowerCase())}function Tc(){return Me(t=>t.toUpperCase())}function kc(t,e,n){return new t({type:"array",element:e,...I(n)})}function Ic(t,e,n){return new t({type:"custom",check:"custom",fn:e,...I(n)})}const $c=y("ZodISODateTime",(t,e)=>{tu.init(t,e),Q.init(t,e)});function Oc(t){return uc($c,t)}const xc=y("ZodISODate",(t,e)=>{nu.init(t,e),Q.init(t,e)});function Pc(t){return cc(xc,t)}const Rc=y("ZodISOTime",(t,e)=>{ru.init(t,e),Q.init(t,e)});function Nc(t){return lc(Rc,t)}const Bc=y("ZodISODuration",(t,e)=>{su.init(t,e),Q.init(t,e)});function Uc(t){return hc(Bc,t)}const zc=(t,e)=>{jn.init(t,e),t.name="ZodError",Object.defineProperties(t,{format:{value:n=>Qo(t,n)},flatten:{value:n=>Jo(t,n)},addIssue:{value:n=>t.issues.push(n)},addIssues:{value:n=>t.issues.push(...n)},isEmpty:{get(){return t.issues.length===0}}})},at=y("ZodError",zc,{Parent:Error}),Mc=Xo(at),Gc=ea(at),jc=Wn(at),Lc=Zn(at),J=y("ZodType",(t,e)=>(W.init(t,e),t.def=e,Object.defineProperty(t,"_def",{value:e}),t.check=(...n)=>t.clone({...e,checks:[...e.checks??[],...n.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),t.clone=(n,r)=>be(t,n,r),t.brand=()=>t,t.register=(n,r)=>(n.add(t,r),t),t.parse=(n,r)=>Mc(t,n,r,{callee:t.parse}),t.safeParse=(n,r)=>jc(t,n,r),t.parseAsync=async(n,r)=>Gc(t,n,r,{callee:t.parseAsync}),t.safeParseAsync=async(n,r)=>Lc(t,n,r),t.spa=t.safeParseAsync,t.refine=(n,r)=>t.check(Rl(n,r)),t.superRefine=n=>t.check(Nl(n)),t.overwrite=n=>t.check(Me(n)),t.optional=()=>bn(t),t.nullable=()=>An(t),t.nullish=()=>bn(An(t)),t.nonoptional=n=>Al(t,n),t.array=()=>Ce(t),t.or=n=>ut([t,n]),t.and=n=>Dl(t,n),t.transform=n=>Tn(t,_l(n)),t.default=n=>wl(t,n),t.prefault=n=>bl(t,n),t.catch=n=>kl(t,n),t.pipe=n=>Tn(t,n),t.readonly=()=>Ol(t),t.describe=n=>{const r=t.clone();return Ye.add(r,{description:n}),r},Object.defineProperty(t,"description",{get(){return Ye.get(t)?.description},configurable:!0}),t.meta=(...n)=>{if(n.length===0)return Ye.get(t);const r=t.clone();return Ye.add(r,n[0]),r},t.isOptional=()=>t.safeParse(void 0).success,t.isNullable=()=>t.safeParse(null).success,t)),nr=y("_ZodString",(t,e)=>{Nt.init(t,e),J.init(t,e);const n=t._zod.bag;t.format=n.format??null,t.minLength=n.minimum??null,t.maxLength=n.maximum??null,t.regex=(...r)=>t.check(yc(...r)),t.includes=(...r)=>t.check(Fc(...r)),t.startsWith=(...r)=>t.check(Sc(...r)),t.endsWith=(...r)=>t.check(wc(...r)),t.min=(...r)=>t.check(rt(...r)),t.max=(...r)=>t.check(er(...r)),t.length=(...r)=>t.check(tr(...r)),t.nonempty=(...r)=>t.check(rt(1,...r)),t.lowercase=r=>t.check(vc(r)),t.uppercase=r=>t.check(_c(r)),t.trim=()=>t.check(bc()),t.normalize=(...r)=>t.check(Cc(...r)),t.toLowerCase=()=>t.check(Ac()),t.toUpperCase=()=>t.check(Tc())}),rr=y("ZodString",(t,e)=>{Nt.init(t,e),nr.init(t,e),t.email=n=>t.check(Gu(Wc,n)),t.url=n=>t.check(Vu(Zc,n)),t.jwt=n=>t.check(ac(ol,n)),t.emoji=n=>t.check(Hu(Vc,n)),t.guid=n=>t.check(vn(wn,n)),t.uuid=n=>t.check(ju(Je,n)),t.uuidv4=n=>t.check(Lu(Je,n)),t.uuidv6=n=>t.check(Wu(Je,n)),t.uuidv7=n=>t.check(Zu(Je,n)),t.nanoid=n=>t.check(Ku(Hc,n)),t.guid=n=>t.check(vn(wn,n)),t.cuid=n=>t.check(qu(Kc,n)),t.cuid2=n=>t.check(Yu(qc,n)),t.ulid=n=>t.check(Ju(Yc,n)),t.base64=n=>t.check(sc(rl,n)),t.base64url=n=>t.check(ic(sl,n)),t.xid=n=>t.check(Qu(Jc,n)),t.ksuid=n=>t.check(Xu(Qc,n)),t.ipv4=n=>t.check(ec(Xc,n)),t.ipv6=n=>t.check(tc(el,n)),t.cidrv4=n=>t.check(nc(tl,n)),t.cidrv6=n=>t.check(rc(nl,n)),t.e164=n=>t.check(oc(il,n)),t.datetime=n=>t.check(Oc(n)),t.date=n=>t.check(Pc(n)),t.time=n=>t.check(Nc(n)),t.duration=n=>t.check(Uc(n))});function v(t){return zu(rr,t)}const Q=y("ZodStringFormat",(t,e)=>{K.init(t,e),nr.init(t,e)}),Wc=y("ZodEmail",(t,e)=>{Va.init(t,e),Q.init(t,e)}),wn=y("ZodGUID",(t,e)=>{Wa.init(t,e),Q.init(t,e)}),Je=y("ZodUUID",(t,e)=>{Za.init(t,e),Q.init(t,e)}),Zc=y("ZodURL",(t,e)=>{Ha.init(t,e),Q.init(t,e)}),Vc=y("ZodEmoji",(t,e)=>{Ka.init(t,e),Q.init(t,e)}),Hc=y("ZodNanoID",(t,e)=>{qa.init(t,e),Q.init(t,e)}),Kc=y("ZodCUID",(t,e)=>{Ya.init(t,e),Q.init(t,e)}),qc=y("ZodCUID2",(t,e)=>{Ja.init(t,e),Q.init(t,e)}),Yc=y("ZodULID",(t,e)=>{Qa.init(t,e),Q.init(t,e)}),Jc=y("ZodXID",(t,e)=>{Xa.init(t,e),Q.init(t,e)}),Qc=y("ZodKSUID",(t,e)=>{eu.init(t,e),Q.init(t,e)}),Xc=y("ZodIPv4",(t,e)=>{iu.init(t,e),Q.init(t,e)}),el=y("ZodIPv6",(t,e)=>{ou.init(t,e),Q.init(t,e)}),tl=y("ZodCIDRv4",(t,e)=>{au.init(t,e),Q.init(t,e)}),nl=y("ZodCIDRv6",(t,e)=>{uu.init(t,e),Q.init(t,e)}),rl=y("ZodBase64",(t,e)=>{cu.init(t,e),Q.init(t,e)}),sl=y("ZodBase64URL",(t,e)=>{hu.init(t,e),Q.init(t,e)}),il=y("ZodE164",(t,e)=>{du.init(t,e),Q.init(t,e)}),ol=y("ZodJWT",(t,e)=>{fu.init(t,e),Q.init(t,e)}),Bt=y("ZodNumber",(t,e)=>{Xn.init(t,e),J.init(t,e),t.gt=(r,s)=>t.check(Fn(r,s)),t.gte=(r,s)=>t.check(vt(r,s)),t.min=(r,s)=>t.check(vt(r,s)),t.lt=(r,s)=>t.check(_n(r,s)),t.lte=(r,s)=>t.check(yt(r,s)),t.max=(r,s)=>t.check(yt(r,s)),t.int=r=>t.check(Cn(r)),t.safe=r=>t.check(Cn(r)),t.positive=r=>t.check(Fn(0,r)),t.nonnegative=r=>t.check(vt(0,r)),t.negative=r=>t.check(_n(0,r)),t.nonpositive=r=>t.check(yt(0,r)),t.multipleOf=(r,s)=>t.check(Sn(r,s)),t.step=(r,s)=>t.check(Sn(r,s)),t.finite=()=>t;const n=t._zod.bag;t.minValue=Math.max(n.minimum??Number.NEGATIVE_INFINITY,n.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,t.maxValue=Math.min(n.maximum??Number.POSITIVE_INFINITY,n.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,t.isInt=(n.format??"").includes("int")||Number.isSafeInteger(n.multipleOf??.5),t.isFinite=!0,t.format=n.format??null});function re(t){return dc(Bt,t)}const al=y("ZodNumberFormat",(t,e)=>{pu.init(t,e),Bt.init(t,e)});function Cn(t){return fc(al,t)}const ul=y("ZodBoolean",(t,e)=>{mu.init(t,e),J.init(t,e)});function Ae(t){return pc(ul,t)}const cl=y("ZodAny",(t,e)=>{Du.init(t,e),J.init(t,e)});function he(){return mc(cl)}const ll=y("ZodUnknown",(t,e)=>{Eu.init(t,e),J.init(t,e)});function Ne(){return Dc(ll)}const hl=y("ZodNever",(t,e)=>{yu.init(t,e),J.init(t,e)});function dl(t){return Ec(hl,t)}const gl=y("ZodArray",(t,e)=>{vu.init(t,e),J.init(t,e),t.element=e.element,t.min=(n,r)=>t.check(rt(n,r)),t.nonempty=n=>t.check(rt(1,n)),t.max=(n,r)=>t.check(er(n,r)),t.length=(n,r)=>t.check(tr(n,r)),t.unwrap=()=>t.element});function Ce(t,e){return kc(gl,t,e)}const fl=y("ZodObject",(t,e)=>{_u.init(t,e),J.init(t,e),H(t,"shape",()=>e.shape),t.keyof=()=>ne(Object.keys(t._zod.def.shape)),t.catchall=n=>t.clone({...t._zod.def,catchall:n}),t.passthrough=()=>t.clone({...t._zod.def,catchall:Ne()}),t.loose=()=>t.clone({...t._zod.def,catchall:Ne()}),t.strict=()=>t.clone({...t._zod.def,catchall:dl()}),t.strip=()=>t.clone({...t._zod.def,catchall:void 0}),t.extend=n=>Ho(t,n),t.merge=n=>Ko(t,n),t.pick=n=>Zo(t,n),t.omit=n=>Vo(t,n),t.partial=(...n)=>qo(sr,t,n[0]),t.required=(...n)=>Yo(ir,t,n[0])});function ye(t,e){const n={type:"object",get shape(){return Pt(this,"shape",{...t}),this.shape},...I(e)};return new fl(n)}const pl=y("ZodUnion",(t,e)=>{Fu.init(t,e),J.init(t,e),t.options=e.options});function ut(t,e){return new pl({type:"union",options:t,...I(e)})}const ml=y("ZodIntersection",(t,e)=>{Su.init(t,e),J.init(t,e)});function Dl(t,e){return new ml({type:"intersection",left:t,right:e})}const El=y("ZodRecord",(t,e)=>{wu.init(t,e),J.init(t,e),t.keyType=e.keyType,t.valueType=e.valueType});function ct(t,e,n){return new El({type:"record",keyType:t,valueType:e,...I(n)})}const At=y("ZodEnum",(t,e)=>{Cu.init(t,e),J.init(t,e),t.enum=e.entries,t.options=Object.values(e.entries);const n=new Set(Object.keys(e.entries));t.extract=(r,s)=>{const i={};for(const o of r)if(n.has(o))i[o]=e.entries[o];else throw new Error(`Key ${o} not found in enum`);return new At({...e,checks:[],...I(s),entries:i})},t.exclude=(r,s)=>{const i={...e.entries};for(const o of r)if(n.has(o))delete i[o];else throw new Error(`Key ${o} not found in enum`);return new At({...e,checks:[],...I(s),entries:i})}});function ne(t,e){const n=Array.isArray(t)?Object.fromEntries(t.map(r=>[r,r])):t;return new At({type:"enum",entries:n,...I(e)})}const yl=y("ZodLiteral",(t,e)=>{bu.init(t,e),J.init(t,e),t.values=new Set(e.values),Object.defineProperty(t,"value",{get(){if(e.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return e.values[0]}})});function b(t,e){return new yl({type:"literal",values:Array.isArray(t)?t:[t],...I(e)})}const vl=y("ZodTransform",(t,e)=>{Au.init(t,e),J.init(t,e),t._zod.parse=(n,r)=>{n.addIssue=i=>{if(typeof i=="string")n.issues.push(Re(i,n.value,e));else{const o=i;o.fatal&&(o.continue=!1),o.code??(o.code="custom"),o.input??(o.input=n.value),o.inst??(o.inst=t),o.continue??(o.continue=!0),n.issues.push(Re(o))}};const s=e.transform(n.value,n);return s instanceof Promise?s.then(i=>(n.value=i,n)):(n.value=s,n)}});function _l(t){return new vl({type:"transform",transform:t})}const sr=y("ZodOptional",(t,e)=>{Tu.init(t,e),J.init(t,e),t.unwrap=()=>t._zod.def.innerType});function bn(t){return new sr({type:"optional",innerType:t})}const Fl=y("ZodNullable",(t,e)=>{ku.init(t,e),J.init(t,e),t.unwrap=()=>t._zod.def.innerType});function An(t){return new Fl({type:"nullable",innerType:t})}const Sl=y("ZodDefault",(t,e)=>{Iu.init(t,e),J.init(t,e),t.unwrap=()=>t._zod.def.innerType,t.removeDefault=t.unwrap});function wl(t,e){return new Sl({type:"default",innerType:t,get defaultValue(){return typeof e=="function"?e():e}})}const Cl=y("ZodPrefault",(t,e)=>{$u.init(t,e),J.init(t,e),t.unwrap=()=>t._zod.def.innerType});function bl(t,e){return new Cl({type:"prefault",innerType:t,get defaultValue(){return typeof e=="function"?e():e}})}const ir=y("ZodNonOptional",(t,e)=>{Ou.init(t,e),J.init(t,e),t.unwrap=()=>t._zod.def.innerType});function Al(t,e){return new ir({type:"nonoptional",innerType:t,...I(e)})}const Tl=y("ZodCatch",(t,e)=>{xu.init(t,e),J.init(t,e),t.unwrap=()=>t._zod.def.innerType,t.removeCatch=t.unwrap});function kl(t,e){return new Tl({type:"catch",innerType:t,catchValue:typeof e=="function"?e:()=>e})}const Il=y("ZodPipe",(t,e)=>{Pu.init(t,e),J.init(t,e),t.in=e.in,t.out=e.out});function Tn(t,e){return new Il({type:"pipe",in:t,out:e})}const $l=y("ZodReadonly",(t,e)=>{Ru.init(t,e),J.init(t,e)});function Ol(t){return new $l({type:"readonly",innerType:t})}const xl=y("ZodCustom",(t,e)=>{Nu.init(t,e),J.init(t,e)});function Pl(t){const e=new ie({check:"custom"});return e._zod.check=t,e}function Rl(t,e={}){return Ic(xl,t,e)}function Nl(t){const e=Pl(n=>(n.addIssue=r=>{if(typeof r=="string")n.issues.push(Re(r,n.value,e._zod.def));else{const s=r;s.fatal&&(s.continue=!1),s.code??(s.code="custom"),s.input??(s.input=n.value),s.inst??(s.inst=e),s.continue??(s.continue=!e._zod.def.abort),n.issues.push(Re(s))}},t(n.value,n)));return e}function kn(t){return Mu(rr,t)}function In(t){return gc(Bt,t)}const P=ye({eventType:v(),command:v(),payload:ye({sessionId:v(),timestamp:re().default(()=>Date.now())})}),Bl=ne([V.STARTING,V.IDLE,V.PAUSED,V.STOPPED,V.ERROR]),Ul=ne([Y.CLAUDE_CODE,Y.GEMINI_CLI]),zl=ne([cn.STDOUT,cn.STDERR]),or=P.extend({eventType:b(O.STATUS).default(O.STATUS),command:b(S.REQUEST).default(S.REQUEST),payload:P.shape.payload.extend({data:v().default(""),fullscreen:Ae().default(!1).optional()})}),ar=P.extend({eventType:b(O.RESIZE).default(O.RESIZE),command:b(S.REQUEST).default(S.REQUEST),payload:P.shape.payload.extend({data:v().default(""),cols:In(),rows:In()})}),ur=P.extend({eventType:b(O.DIRECT_CONTROL).default(O.DIRECT_CONTROL),command:b(S.REQUEST).default(S.REQUEST),payload:P.shape.payload.extend({data:v(),controlType:ne(["interrupt","cancel","eof","signal"]).default("interrupt"),metadata:ct(v(),he()).optional()})}),Tt=P.extend({eventType:b(O.STATUS).default(O.STATUS),command:b(S.RESPONSE).default(S.RESPONSE),payload:P.shape.payload.extend({data:v().default(""),status:Bl.default(V.IDLE),agentType:Ul.optional(),pid:re().optional(),version:v().optional(),capabilities:Ce(v()).optional(),message:v().optional()})}),cr=P.extend({eventType:b(O.MESSAGE_INPUT).default(O.MESSAGE_INPUT),command:b(S.REQUEST).default(S.REQUEST),payload:P.shape.payload.extend({data:kn(),messageId:v(),content:kn(),metadata:ct(v(),he()).optional()})}),Ml=P.extend({eventType:b(O.MESSAGE_INPUT).default(O.MESSAGE_INPUT),command:b(S.RESPONSE).default(S.RESPONSE),payload:P.shape.payload.extend({data:v().default(""),id:v(),sessionId:v(),memberId:v().nullable().optional(),messageType:ne(["input","output","error","system"]),content:v(),contentSize:re().nullable(),messageTimestamp:v(),metadata:he().nullable(),createdAt:v(),updatedAt:v()})}),Gl=P.extend({eventType:b(O.MESSAGE_OUTPUT).default(O.MESSAGE_OUTPUT),command:b(S.REQUEST).default(S.REQUEST),payload:P.shape.payload.extend({data:v().default("")})}),lr=P.extend({eventType:b(O.MESSAGE_OUTPUT).default(O.MESSAGE_OUTPUT),command:b(S.RESPONSE).default(S.RESPONSE),payload:P.shape.payload.extend({data:v().default(""),id:v(),messageId:v(),memberId:v().nullable().optional(),messageType:ne(["input","output","error","system"]),parts:Ce(Ne()).default([]),contentSize:re().nullable(),messageTimestamp:v(),stream:zl.optional(),isComplete:Ae().optional().default(!1),metadata:he().nullable(),createdAt:v(),updatedAt:v()})}),jl=P.extend({eventType:b(O.MESSAGE_OUTPUT_PERMISSION_REQUESTED).default(O.MESSAGE_OUTPUT_PERMISSION_REQUESTED),command:b(S.REQUEST).default(S.REQUEST),payload:P.shape.payload.extend({data:v().default(""),messageId:v(),toolName:v(),description:v(),metadata:ct(v(),he()).optional()})}),hr=P.extend({eventType:b(O.MESSAGE_STDIN).default(O.MESSAGE_STDIN),command:b(S.REQUEST).default(S.REQUEST),payload:P.shape.payload.extend({data:v().default("")})}),dr=P.extend({eventType:b(O.MESSAGE_STDOUT).default(O.MESSAGE_STDOUT),command:b(S.RESPONSE).default(S.RESPONSE),payload:P.shape.payload.extend({data:v().default("")})}),Ll=P.extend({eventType:b(O.MESSAGE_OUTPUT_STARTED).default(O.MESSAGE_OUTPUT_STARTED),command:b(S.RESPONSE).default(S.RESPONSE),payload:P.shape.payload.extend({data:v().default(""),id:v(),messageId:v(),memberId:v().nullable().optional(),messageType:ne(["input","output","error","system"]),parts:Ce(Ne()).default([]),contentSize:re().nullable(),messageTimestamp:v(),metadata:he().nullable(),createdAt:v(),updatedAt:v()})}),Wl=P.extend({eventType:b(O.MESSAGE_OUTPUT_ENDED).default(O.MESSAGE_OUTPUT_ENDED),command:b(S.RESPONSE).default(S.RESPONSE),payload:P.shape.payload.extend({data:v().default(""),id:v(),messageId:v(),memberId:v().nullable().optional(),messageType:ne(["input","output","error","system"]),parts:Ce(Ne()),contentSize:re().nullable(),messageTimestamp:v(),totalTokens:re().optional(),completionTime:re().optional(),metadata:he().nullable(),createdAt:v(),updatedAt:v()})}),Zl=P.extend({eventType:b(O.MESSAGE_DELETED).default(O.MESSAGE_DELETED),command:b(S.RESPONSE).default(S.RESPONSE),payload:P.shape.payload.extend({data:v().default(""),id:v()})}),Vl=P.extend({eventType:b(O.ERROR).default(O.ERROR),command:b(S.REQUEST).default(S.REQUEST),payload:P.shape.payload.extend({data:v().default("")})}),gr=P.extend({eventType:b(O.ERROR).default(O.ERROR),command:b(S.RESPONSE).default(S.RESPONSE),payload:P.shape.payload.extend({data:v().default(""),error:ye({code:v().default("UNKNOWN_ERROR"),message:v().default("An unknown error occurred"),details:he().optional(),stack:v().optional()})})}),Hl=P.extend({eventType:b(O.STATUS).default(O.STATUS),command:b(S.ACK).default(S.ACK),payload:P.shape.payload.extend({data:v().default(""),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),agentSessionsSent:re().default(0)})}),Kl=P.extend({eventType:b(O.MESSAGE_INPUT).default(O.MESSAGE_INPUT),command:b(S.ACK).default(S.ACK),payload:P.shape.payload.extend({data:v().default(""),messageId:v(),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),agentSessionsSent:re().default(0)})}),ql=P.extend({eventType:b(O.MESSAGE_OUTPUT).default(O.MESSAGE_OUTPUT),command:b(S.ACK).default(S.ACK),payload:P.shape.payload.extend({data:v().default(""),messageId:v(),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),agentSessionsSent:re().default(0)})}),Yl=P.extend({eventType:b(O.MESSAGE_DELETED).default(O.MESSAGE_DELETED),command:b(S.ACK).default(S.ACK),payload:P.shape.payload.extend({data:v().default(""),id:v(),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),agentSessionsSent:re().default(0)})}),Jl=P.extend({eventType:b(O.ERROR).default(O.ERROR),command:b(S.ACK).default(S.ACK),payload:P.shape.payload.extend({data:v().default(""),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),agentSessionsSent:re().default(0)})});ut([or,ar,ur,Tt,cr,Ml,Gl,lr,jl,hr,dr,Ll,Wl,Zl,Vl,gr,Hl,Kl,ql,Yl,Jl]);const U=ye({eventType:v(),command:v(),payload:ye({sessionId:v(),timestamp:re().default(()=>Date.now())})}),Ql=ne([me.IDLE,me.BUSY,me.OFFLINE,me.STARTING]),fr=U.extend({eventType:b(N.STATUS).default(N.STATUS),command:b(S.REQUEST).default(S.REQUEST),payload:U.shape.payload.extend({data:v().default("")})}),kt=U.extend({eventType:b(N.STATUS).default(N.STATUS),command:b(S.RESPONSE).default(S.RESPONSE),payload:U.shape.payload.extend({data:v().default(""),status:Ql.default(me.IDLE)})}),Xl=U.extend({eventType:b(N.ERROR).default(N.ERROR),command:b(S.REQUEST).default(S.REQUEST),payload:U.shape.payload.extend({data:v().default("")})}),pr=U.extend({eventType:b(N.ERROR).default(N.ERROR),command:b(S.RESPONSE).default(S.RESPONSE),payload:U.shape.payload.extend({data:v().default(""),error:ye({code:v().default("UNKNOWN_ERROR"),message:v().default("An unknown error occurred"),details:he().optional()})})}),mr=U.extend({eventType:b(N.TERMINATE).default(N.TERMINATE),command:b(S.REQUEST).default(S.REQUEST),payload:U.shape.payload.extend({data:v().optional().default("")})}),Dr=U.extend({eventType:b(N.TERMINATE).default(N.TERMINATE),command:b(S.RESPONSE).default(S.RESPONSE),payload:U.shape.payload.extend({data:v().optional().default("")})}),Er=U.extend({eventType:b(N.LIST).default(N.LIST),command:b(S.REQUEST).default(S.REQUEST),payload:U.shape.payload.extend({data:v().optional().default("")})}),yr=U.extend({eventType:b(N.LIST).default(N.LIST),command:b(S.RESPONSE).default(S.RESPONSE),payload:U.shape.payload.extend({data:v().optional().default("")})}),Ut=U.extend({eventType:b(N.START_AGENT).default(N.START_AGENT),command:b(S.REQUEST).default(S.REQUEST),payload:U.shape.payload.extend({data:v().default(""),agentType:v(),agentSessionId:v(),agentConfig:ye({conversationSessionId:v().optional(),workingDirectory:v().nullable(),environment:ct(v(),v()).optional(),args:Ce(v()).optional(),commands:Ce(v()).optional(),mcps:he().optional(),hooks:he().optional(),xterm:Ae().optional().default(!1),docker:Ae().optional().default(!1),dockerImage:v().optional(),autonomous:Ae().optional().default(!1),worktree:ut([Ae(),ye({branch:v().optional(),name:v().optional()})]).optional().default(!1)}).optional()})}),eh=U.extend({eventType:b(N.START_AGENT).default(N.START_AGENT),command:b(S.RESPONSE).default(S.RESPONSE),payload:U.shape.payload.extend({data:v().default(""),agentSessionId:v(),agentType:v(),status:ne(["started","failed"]).default("started"),message:v().optional()})}),th=U.extend({eventType:b(N.START_AGENT).default(N.START_AGENT),command:b(S.ACK).default(S.ACK),payload:U.shape.payload.extend({data:v().default(""),agentType:v(),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),daemonsSent:re().default(0)})}),vr=U.extend({eventType:b(N.STOP_AGENT).default(N.STOP_AGENT),command:b(S.REQUEST).default(S.REQUEST),payload:U.shape.payload.extend({data:v().default(""),agentSessionId:v()})}),_r=U.extend({eventType:b(N.STOP_AGENT).default(N.STOP_AGENT),command:b(S.RESPONSE).default(S.RESPONSE),payload:U.shape.payload.extend({data:v().default(""),agentSessionId:v(),status:ne(["stopped","not_found","failed"]).default("stopped"),message:v().optional()})}),nh=U.extend({eventType:b(N.STOP_AGENT).default(N.STOP_AGENT),command:b(S.ACK).default(S.ACK),payload:U.shape.payload.extend({data:v().default(""),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),daemonsSent:re().default(0)})}),rh=U.extend({eventType:b(N.TERMINATE).default(N.TERMINATE),command:b(S.ACK).default(S.ACK),payload:U.shape.payload.extend({data:v().default(""),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),daemonsSent:re().default(0)})}),sh=U.extend({eventType:b(N.LIST).default(N.LIST),command:b(S.ACK).default(S.ACK),payload:U.shape.payload.extend({data:v().default(""),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),daemonsSent:re().default(0)})});ut([fr,kt,Xl,pr,mr,Dr,Er,yr,Ut,eh,th,vr,_r,nh,rh,sh]);const Fr=D.z.object({VITE_INJECT_AGIFLOW_APP_ENDPOINT:D.z.string().url().default("").describe("Server base URL for both HTTP API and WebSocket connections"),VITE_INJECT_AGIFLOW_APP_DOCKER_ENDPOINT:D.z.string().url().default("").describe("Server base URL when running inside Docker containers"),VITE_AGENT_CLI_DOCKER_IMAGE:D.z.string().default("").describe("Docker image name for containerized Claude Code agents"),VITE_AGENT_CLI_DOCKER_NETWORK:D.z.string().default("").describe("Docker network mode for containerized agents"),VITE_SAVE_RAW:D.z.preprocess(t=>t==="false"||t===""||t===null||t===void 0?!1:t==="true"?!0:t,D.z.boolean()).default(!1)});Rn.config({override:!1,debug:!1});const ae=Fr.parse({VITE_INJECT_AGIFLOW_APP_ENDPOINT:"https://agiflow.io",VITE_INJECT_AGIFLOW_APP_DOCKER_ENDPOINT:"https://agiflow.io",VITE_AGENT_CLI_DOCKER_IMAGE:"agiflowai/agent-cli:v0.0.2",VITE_AGENT_CLI_DOCKER_NETWORK:""});function Sr(t=!1){return process.env.AGENT_CONTAINER_MODE==="true"||t?ae.VITE_INJECT_AGIFLOW_APP_DOCKER_ENDPOINT:ae.VITE_INJECT_AGIFLOW_APP_ENDPOINT}function ih(t){const e=new URL(t);return e.protocol=e.protocol==="https:"?"wss:":"ws:",e.toString()}function wr(t=!0,e){const r=fe.hostname().replace(/[^a-zA-Z0-9-]/g,"-");if(t){const s=e||process.cwd(),i=ts.createHash("sha256").update(s).digest("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"").slice(0,8);return`claude-daemon-${r}-${i}`}return`claude-daemon-${r}-${Date.now()}`}function Cr(){return{hostname:fe.hostname(),platform:fe.platform(),arch:fe.arch(),release:fe.release(),cpus:fe.cpus().length,totalMemory:fe.totalmem(),type:fe.type()}}function oh(t){return t.replace(/^http/,"ws")}function br(t,e=3e3){return t.replace(/^ws/,"http").replace(/:\d+$/,`:${e}`)}function Ar(t,e=3e5,n){let r=null;const s=n||console,i=()=>{o(),t().catch(a=>{s.warn?.("Heartbeat failed:",a)||console.warn("Heartbeat failed:",a)}),r=setInterval(async()=>{try{await t()}catch(a){s.warn?.("Heartbeat failed:",a)||console.warn("Heartbeat failed:",a)}},e)},o=()=>{r&&(clearInterval(r),r=null)};return{start:i,stop:o}}class ah{ws=null;options;callbacks;isConnected=!1;reconnectTimer=null;shouldReconnect=!0;currentSessionId=null;credentialsService;logger;pingInterval=null;connectionAttempts=0;maxReconnectAttempts=10;heartbeatInterval=null;constructor(e,n={}){const r=D.SubEnvManager.isContainerMode?2e3:5e3;this.options={reconnectInterval:r,...e},this.callbacks=n,this.credentialsService=e.credentialsService??new D.CredentialsService,this.logger=e.logger??new D.Logger({verbose:e.verbose??!1}),D.SubEnvManager.isContainerMode&&this.logger.debug("🐳 Docker WebSocket service initialized with enhanced connectivity handling")}async connect(e){if(this.ws&&this.ws.readyState===_e.OPEN)return;this.currentSessionId=e;const n=await this.buildWebSocketUrl(e);return D.SubEnvManager.isContainerMode&&(this.logger.info(`🐳 Docker WebSocket connecting to: ${n}`),this.logger.debug("Docker network environment:",{hostname:D.SubEnvManager.hostname,containerMode:D.SubEnvManager.isContainerMode,serverUrl:this.options.serverUrl})),new Promise((r,s)=>{const i={};this.options.apiKey&&(i["x-api-key"]=this.options.apiKey),this.ws=new _e(n,{headers:i}),this.ws.on("open",()=>{this.isConnected=!0,this.connectionAttempts=0;const o=this.logger;o&&(D.SubEnvManager.isContainerMode?o.info(`🐳 Docker WebSocket connected successfully to ${n}`):o.info(`🔌 WebSocket connected to ${n}`)),D.SubEnvManager.isContainerMode&&this.startHealthMonitoring(),this.startAgentHeartbeat(),this.callbacks.onConnect&&this.callbacks.onConnect(),r()}),this.ws.on("message",o=>{try{const a=JSON.parse(o.toString());this.handleMessage(a)}catch(a){this.log(`Error parsing message: ${a}`)}}),this.ws.on("close",(o,a)=>{this.isConnected=!1,this.currentSessionId=null,this.callbacks.onDisconnect&&this.callbacks.onDisconnect(o,a.toString()),this.shouldReconnect&&this.scheduleReconnect(e)}),this.ws.on("error",o=>{D.SubEnvManager.isContainerMode&&this.logger.error("🐳 Docker WebSocket connection error:",new Error(`Docker WebSocket error: ${o.message}. URL: ${n}, Hostname: ${D.SubEnvManager.hostname}, Server: ${this.options.serverUrl}`)),o.message.includes("401")&&this.options.apiKey&&this.log(`API key first 8 chars: ${this.options.apiKey.substring(0,8)}...`),(o.message.includes("ECONNREFUSED")||o.message.includes("ENOTFOUND"))&&this.logger.error("🐳 Docker networking issue - check if server is accessible from container"),this.callbacks.onError&&this.callbacks.onError(o),this.isConnected||s(o)}),setTimeout(()=>{this.isConnected||s(new Error("WebSocket connection timeout"))},1e4)})}disconnect(){this.shouldReconnect=!1,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.stopHealthMonitoring(),this.stopAgentHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1}isWebSocketConnected(){return this.isConnected}getCurrentSessionId(){if(!this.currentSessionId)throw new Error("No active session ID");return this.currentSessionId}setCurrentSessionId(e){this.currentSessionId=e}sendAgentStatus(e){const n={eventType:O.STATUS,command:S.RESPONSE,payload:{sessionId:this.getCurrentSessionId(),timestamp:Date.now(),data:"",status:e.status||V.IDLE,agentType:e.agentType,pid:e.pid,version:e.version,capabilities:e.capabilities,message:e.message}};this.sendMessage(Tt.parse(n))}sendAgentOutput(e){const n=new Date().toISOString(),r={eventType:O.MESSAGE_OUTPUT,command:S.RESPONSE,payload:{sessionId:this.getCurrentSessionId(),timestamp:Date.now(),data:e.content,id:e.messageId,messageId:e.messageId,messageType:"output",parts:[],contentSize:e.content.length,messageTimestamp:n,stream:e.stream,isComplete:e.isComplete||!1,metadata:e.metadata,createdAt:n,updatedAt:n}};this.sendMessage(lr.parse(r))}sendAgentError(e){const n={eventType:O.ERROR,command:S.RESPONSE,payload:{sessionId:this.getCurrentSessionId(),timestamp:Date.now(),data:"",error:{code:e.code,message:e.message,details:e.details,stack:e.stack}}};this.sendMessage(gr.parse(n))}sendStdoutMessage(e){const n={eventType:O.MESSAGE_STDOUT,command:S.RESPONSE,payload:{sessionId:this.getCurrentSessionId(),timestamp:Date.now(),data:e}};this.sendMessage(dr.parse(n))}sendMessage(e){if(this.ws&&this.ws.readyState===_e.OPEN)try{this.ws.send(JSON.stringify(e))}catch(n){D.SubEnvManager.isContainerMode?(this.logger.error("🐳 Docker WebSocket send error:",n),this.logger.debug("🐳 Message that failed to send:",e)):this.logger.error("WebSocket send error:",n),this.currentSessionId&&this.scheduleReconnect(this.currentSessionId)}else{const n=this.ws?this.ws.readyState:"no socket";D.SubEnvManager.isContainerMode?this.logger.warn(`🐳 Docker WebSocket not ready to send message. State: ${n}`):this.logger.warn(`WebSocket not ready to send message. State: ${n}`)}}handleMessage(e){try{switch(e.eventType){case O.STATUS:if(e.command===S.REQUEST){const n=or.parse(e);this.callbacks.onStatusRequest&&this.callbacks.onStatusRequest(n)}break;case O.MESSAGE_INPUT:if(e.command===S.REQUEST){const n=cr.parse(e);this.callbacks.onMessageInput&&this.callbacks.onMessageInput(n)}break;case O.MESSAGE_STDIN:if(e.command===S.REQUEST){const n=hr.parse(e);this.callbacks.onStdinInput&&this.callbacks.onStdinInput(n)}break;case O.RESIZE:if(e.command===S.REQUEST){const n=ar.parse(e),r=this.logger;r&&r.info(`📐 Received resize event: ${n.payload.cols}x${n.payload.rows}`),this.callbacks.onResizeRequest?this.callbacks.onResizeRequest(n):r&&r.warn("📐 No onResizeRequest callback registered, ignoring resize event")}break;case O.DIRECT_CONTROL:if(e.command===S.REQUEST){const n=ur.parse(e),r=this.logger;r&&r.info(`🎮 Received direct control event: ${n.payload.controlType} - data: ${JSON.stringify(n.payload.data)}`),this.callbacks.onDirectControl?this.callbacks.onDirectControl(n):r&&r.warn("🎮 No onDirectControl callback registered, ignoring direct control event")}break;default:this.callbacks.onMessage&&this.callbacks.onMessage(e)}}catch(n){this.log(`Error validating message: ${n}`)}}scheduleReconnect(e){if(this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.connectionAttempts++,this.connectionAttempts>this.maxReconnectAttempts){D.SubEnvManager.isContainerMode?this.logger.error(`🐳 Docker WebSocket max reconnection attempts (${this.maxReconnectAttempts}) exceeded. Giving up.`):this.logger.error(`WebSocket max reconnection attempts (${this.maxReconnectAttempts}) exceeded. Giving up.`);return}const n=this.options.reconnectInterval||2e3,r=D.SubEnvManager.isContainerMode?Math.min(this.connectionAttempts,5):1,s=n*r;D.SubEnvManager.isContainerMode&&this.logger.info(`🐳 Docker WebSocket reconnection attempt ${this.connectionAttempts}/${this.maxReconnectAttempts} in ${s}ms`),this.reconnectTimer=setTimeout(async()=>{try{await this.connect(e)}catch(i){const o=i instanceof Error?i.message:String(i);D.SubEnvManager.isContainerMode?this.logger.error(`🐳 Docker WebSocket reconnection failed: ${o}`):this.log(`Reconnection failed: ${o}`),this.scheduleReconnect(e)}},s)}async buildWebSocketUrl(e){const n=new URL(this.options.serverUrl);n.protocol==="http:"?n.protocol="ws:":n.protocol==="https:"&&(n.protocol="wss:"),n.pathname=`/api/v1/organizations/${this.options.organizationId}/agent-sessions/${e}/ws`,n.searchParams.set("clientType","agent");const r=await this.credentialsService.getDeviceId();return n.searchParams.set("deviceId",r||"unknown"),n.toString()}startHealthMonitoring(){this.pingInterval&&clearInterval(this.pingInterval),this.pingInterval=setInterval(()=>{this.ws&&this.ws.readyState===_e.OPEN||(this.logger.warn("🐳 Docker WebSocket connection lost during health check"),this.stopHealthMonitoring(),this.currentSessionId&&this.scheduleReconnect(this.currentSessionId))},3e4)}stopHealthMonitoring(){this.pingInterval&&(clearInterval(this.pingInterval),this.pingInterval=null)}startAgentHeartbeat(){this.heartbeatInterval&&clearInterval(this.heartbeatInterval),this.sendHeartbeat(),this.heartbeatInterval=setInterval(()=>{this.sendHeartbeat()},3e4)}stopAgentHeartbeat(){this.heartbeatInterval&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}sendHeartbeat(){if(this.isConnected&&this.currentSessionId)try{const e={eventType:O.STATUS,command:S.RESPONSE,payload:{sessionId:this.currentSessionId,timestamp:Date.now(),data:"",status:V.IDLE,message:"Heartbeat"}},n=Tt.parse(e);this.sendMessage(n),this.logger.debug("Agent session heartbeat sent")}catch(e){this.logger.warn("Failed to send agent session heartbeat:",e)}}log(e){this.options.verbose&&console.log(`[AGENT-WS] ${e}`)}}class uh{session;logger;constructor(e){this.logger=e??new D.Logger({verbose:!1})}spawn(e,n){const r=e.agentSessionId||On.ulid(),s=e.workingDir||process.cwd(),i={};e.agentApiKey&&(i[D.ENV_KEYS.AGENT_API_KEY]=e.agentApiKey),e.agentOrganizationId&&(i[D.ENV_KEYS.AGENT_ORGANIZATION_ID]=e.agentOrganizationId),e.agentDeviceGuid&&(i[D.ENV_KEYS.AGENT_DEVICE_GUID]=e.agentDeviceGuid),e.agentServerUrl&&(i[D.ENV_KEYS.AGENT_SERVER_URL]=e.agentServerUrl),e.agentType&&(i[D.ENV_KEYS.AGENT_TYPE]=e.agentType),i[D.ENV_KEYS.AGENT_SESSION_ID]=r,this.logger.debug("PTY Environment Variables:",{...process.env,...i,...e.env,TERM:"xterm-256color",COLORTERM:"truecolor"});const o=es.spawn(e.command,e.args||[],{name:"xterm-256color",cwd:s,env:{...process.env,...i,...e.env,TERM:"xterm-256color",COLORTERM:"truecolor"}}),a={id:r,ptyProcess:o,command:e.command,workingDir:s,status:"running",createdAt:new Date,lastActivity:new Date,logStream:e.logStream};return o.onData(l=>{a.lastActivity=new Date,a.logStream&&a.logStream.write(l),process.stdout.isTTY&&process.stdout.write(l),n?.onData&&n.onData(l,l)}),o.onExit(l=>{const f=l.exitCode,m=l.signal;a.status=f===0?"stopped":"error",a.lastActivity=new Date,this.logger.info(`PTY process ${r} exited with code ${f}${m?` (signal: ${m})`:""}`),a.logStream&&a.logStream.end(),n?.onExit&&n.onExit(f,m)}),this.session=a,a}sendInput(e){return this.session?.ptyProcess?(this.session.ptyProcess.write(e),this.session.lastActivity=new Date,!0):(this.logger.warn("No active process to send input to"),!1)}resize(e,n){return this.session?.ptyProcess?(this.session.ptyProcess.resize(e,n),this.session.lastActivity=new Date,!0):!1}kill(e){if(!this.session?.ptyProcess)return this.logger.warn("No PTY session to kill"),!1;try{return this.session.ptyProcess.kill(e),this.session.status="stopped",!0}catch(n){return this.logger.error(`Failed to kill PTY session : ${n}`),!1}}getSession(){return this.session}isSessionRunning(){return this.session?.status==="running"}}class It{logger;targetDirectory;originalDirectory;envFilePatterns=[".env",".env.development",".dev.vars",".env.test"];constructor(e){if(this.targetDirectory=C.resolve(e.targetDirectory),this.originalDirectory=e.originalDirectory?C.resolve(e.originalDirectory):void 0,this.logger=e.logger??new D.Logger({verbose:!1}),!k.existsSync(this.targetDirectory))throw new Error(`Target directory does not exist: ${this.targetDirectory}`);if(this.originalDirectory&&!k.existsSync(this.originalDirectory))throw new Error(`Original directory does not exist: ${this.originalDirectory}`)}async setup(){const e={envFilesCopied:[],errors:[]};try{this.originalDirectory&&(this.logger.info("Copying environment files..."),e.envFilesCopied=await this.copyEnvironmentFiles(),this.logger.success(`Copied ${e.envFilesCopied.filter(n=>n.copied).length} environment files`))}catch(n){const r=`Setup failed: ${n.message}`;e.errors.push(r),this.logger.error(r)}return e}async copyEnvironmentFiles(){if(!this.originalDirectory)return[];const e=[],n=await this.findEnvironmentFiles(this.originalDirectory);for(const r of n)try{const s=C.relative(this.originalDirectory,r),i=C.join(this.targetDirectory,s),o=C.dirname(i);k.existsSync(o)||await pe.mkdir(o,{recursive:!0}),await pe.copyFile(r,i),e.push({originalPath:r,targetPath:i,relativePath:s,copied:!0}),this.logger.debug(`Copied: ${s}`)}catch(s){e.push({originalPath:r,targetPath:"",relativePath:C.relative(this.originalDirectory,r),copied:!1}),this.logger.warn(`Failed to copy ${r}: ${s.message}`)}return e}async findEnvironmentFiles(e,n=0){const r=[];if(n>=5)return r;try{const i=await pe.readdir(e,{withFileTypes:!0});for(const o of i){const a=C.join(e,o.name);if(o.isDirectory()){if(this.shouldSkipDirectory(o.name))continue;const l=await this.findEnvironmentFiles(a,n+1);r.push(...l)}else o.isFile()&&this.isEnvironmentFile(o.name)&&r.push(a)}}catch(i){this.logger.debug(`Cannot read directory ${e}: ${i.message}`)}return r}isEnvironmentFile(e){return this.envFilePatterns.some(n=>n.includes("*")?!1:e===n||e.startsWith(n+"."))}shouldSkipDirectory(e){return["node_modules",".git",".next",".nuxt","dist","build","coverage",".nyc_output",".cache","tmp","temp",".vscode",".idea","__pycache__",".pytest_cache",".mypy_cache"].includes(e)||e.startsWith(".")}async installDependencies(e="pnpm"){try{const n=C.join(this.targetDirectory,"package.json");if(!k.existsSync(n))return this.logger.debug("No package.json found, skipping dependency installation"),!1;if(!this.isPackageManagerAvailable(e))if(this.logger.warn(`${e} is not available, trying npm...`),this.isPackageManagerAvailable("npm"))e="npm";else throw new Error("No package manager available (tried pnpm, npm)");const r=this.getInstallCommand(e);this.logger.info(`Running: ${r}`);try{return se.execSync(r,{cwd:this.targetDirectory,stdio:"pipe",encoding:"utf8"}),!0}catch(s){if(s.message?.includes("EUNSUPPORTEDPROTOCOL")||s.message?.includes("workspace:"))return this.logger.warn("Workspace protocol detected in dependencies, skipping installation"),this.logger.debug("This is expected in Docker containers where dependencies are pre-installed"),!1;throw s}}catch(n){return this.logger.error(`Failed to install dependencies: ${n.message}`),!1}}isPackageManagerAvailable(e){try{return se.execSync(`${e} --version`,{stdio:"pipe",timeout:5e3}),!0}catch{return!1}}getInstallCommand(e){switch(e){case"pnpm":return"pnpm install";case"yarn":return"yarn install";case"npm":default:return"npm install"}}async getEnvironmentFiles(){return this.originalDirectory?await this.findEnvironmentFiles(this.originalDirectory):[]}getTargetDirectory(){return this.targetDirectory}getOriginalDirectory(){return this.originalDirectory}hasPackageJson(){return k.existsSync(C.join(this.targetDirectory,"package.json"))}isNodeProject(){return["package.json","node_modules","yarn.lock","package-lock.json","pnpm-lock.yaml"].some(n=>k.existsSync(C.join(this.targetDirectory,n)))}isPythonProject(){return["requirements.txt","pyproject.toml","setup.py","Pipfile","poetry.lock","uv.lock"].some(n=>k.existsSync(C.join(this.targetDirectory,n)))}isNxMonorepo(){return["nx.json","workspace.json","angular.json"].some(n=>k.existsSync(C.join(this.targetDirectory,n)))}getDefaultPreAgentHooks(e){if(e&&e.length>0)return this.logger.debug("User provided pre-agent hooks, skipping defaults"),e;const n=[];return this.isNodeProject()&&!k.existsSync(C.join(this.targetDirectory,"node_modules"))&&this.hasPackageJson()&&(this.logger.info("No node_modules found, adding default pnpm install hook"),n.push("pnpm install"),this.isNxMonorepo()&&(this.logger.info("Nx monorepo detected, adding default build hook"),n.push("nx run-many -t build"))),this.isPythonProject()&&(k.existsSync(C.join(this.targetDirectory,".venv"))||k.existsSync(C.join(this.targetDirectory,"venv"))||(this.logger.info("No virtual environment found, adding default Python setup hooks"),k.existsSync(C.join(this.targetDirectory,"uv.lock"))?n.push("uv sync"):k.existsSync(C.join(this.targetDirectory,"requirements.txt"))&&(n.push("python -m venv .venv"),n.push(".venv/bin/pip install -r requirements.txt")))),n}async preAgentSetup(e){const n={hooks:[]};if(this.originalDirectory){const r=await this.setup();n.envFilesCopied=r.envFilesCopied,n.errors=r.errors}return n.hooks=this.getDefaultPreAgentHooks(e),n}async buildNxMonorepo(){try{if(!this.isNxAvailable())return this.logger.warn("Nx is not available, skipping build"),!1;this.logger.info("Running: nx run-many -t build");try{return se.execSync("nx run-many -t build",{cwd:this.targetDirectory,stdio:"pipe",encoding:"utf8",timeout:3e5}),!0}catch(e){if(e.message?.includes("workspace:")||e.message?.includes("Cannot find module")||e.message?.includes("ENOENT"))return this.logger.warn("Build failed due to workspace or dependency issues, skipping build"),this.logger.debug("This is expected in Docker containers with pre-built applications"),!1;throw e}}catch(e){return this.logger.error(`Failed to build Nx monorepo: ${e.message}`),!1}}isNxAvailable(){try{return se.execSync("nx --version",{stdio:"pipe",timeout:5e3}),!0}catch{try{return se.execSync("npx nx --version",{stdio:"pipe",timeout:1e4}),!0}catch{return!1}}}}class Tr{logger;onData;onExit;ctrlCCount=0;ctrlCTimeout=null;CTRL_C_RESET_MS=3e3;constructor({logger:e,onData:n,onExit:r}){this.logger=e??new D.Logger({verbose:!1}),this.onData=n,this.onExit=r,this.start()}handleCtrlC(){return this.ctrlCCount++,this.ctrlCTimeout&&clearTimeout(this.ctrlCTimeout),this.ctrlCCount===1?(this.logger.debug("First Ctrl+C detected - Claude will clear input. Press Ctrl+C again to exit."),this.ctrlCTimeout=setTimeout(()=>{this.ctrlCCount=0,this.ctrlCTimeout=null},this.CTRL_C_RESET_MS),!1):this.ctrlCCount>=2?(this.logger.debug("Second Ctrl+C detected - initiating graceful exit."),this.ctrlCTimeout&&(clearTimeout(this.ctrlCTimeout),this.ctrlCTimeout=null),this.ctrlCCount=0,!0):!1}start(){if(this.logger.info("StdinForwarding starting..."),!process.stdin.isTTY){this.logger.warn("No TTY available for stdin forwarding");return}this.logger.debug("Setting up process event handlers..."),process.on("SIGINT",()=>{this.logger.info("Process received SIGINT"),this.onExit("SIGINT")}),process.on("SIGTERM",()=>{this.logger.info("Process received SIGTERM"),this.onExit("SIGTERM")}),process.on("uncaughtException",async e=>{this.logger.error("Uncaught exception:",e);try{this.onExit("uncaughtException")}catch{}process.exit(1)}),process.on("unhandledRejection",async e=>{this.logger.error("Unhandled rejection:",e);try{this.onExit(e.toString())}catch{}process.exit(1)}),this.logger.debug("Setting stdin to raw mode...");try{process.stdin.setRawMode(!0),process.stdin.resume(),process.stdin.setEncoding("utf8"),this.logger.debug("Stdin raw mode enabled successfully")}catch(e){this.logger.error("Failed to set stdin raw mode:",e);return}this.logger.debug("Setting up stdin data handler..."),process.stdin.on("data",e=>{try{if(this.logger.debug("=== STDIN DATA RECEIVED ==="),e==="")if(this.handleCtrlC()){this.logger.debug("Double Ctrl+C detected, exiting agent"),this.onExit(e);return}else{this.logger.debug("First Ctrl+C detected, forwarding to Claude to clear input"),this.onData(e);return}if(e===""){this.logger.debug("Received Ctrl+D (EOF), exiting agent"),this.onExit(e);return}this.logger.debug(`Forwarding stdin data: ${JSON.stringify(e)} (length: ${e.length}, chars: ${e.split("").map(o=>o.charCodeAt(0)).join(",")})`),e.length===1&&e.charCodeAt(0)>=32&&e.charCodeAt(0)<=126?this.logger.debug("Normal typing character detected"):e==="\r"||e===`
61
+ })));`),p.write(`newResult[${$e(d)}] = ${g}.value`)}p.write("payload.value = newResult;"),p.write("return payload;");const h=p.compile();return(d,g)=>h(E,d,g)};let s;const i=Ct,o=!Un.jitless,l=o&&Go.value,f=e.catchall;let m;t._zod.parse=(E,p)=>{m??(m=n.value);const _=E.value;if(!i(_))return E.issues.push({expected:"object",code:"invalid_type",input:_,inst:t}),E;const T=[];if(o&&l&&p?.async===!1&&p.jitless!==!0)s||(s=r(e.shape)),E=s(E,p);else{E.value={};const g=m.shape;for(const F of m.keys){const $=g[F],A=$._zod.run({value:_[F],issues:[]},p),B=$._zod.optin==="optional"&&$._zod.optout==="optional";A instanceof Promise?T.push(A.then(R=>B?dn(R,E,F,_):qe(R,E,F))):B?dn(A,E,F,_):qe(A,E,F)}}if(!f)return T.length?Promise.all(T).then(()=>E):E;const u=[],c=m.keySet,h=f._zod,d=h.def.type;for(const g of Object.keys(_)){if(c.has(g))continue;if(d==="never"){u.push(g);continue}const F=h.run({value:_[g],issues:[]},p);F instanceof Promise?T.push(F.then($=>qe($,E,g))):qe(F,E,g)}return u.length&&E.issues.push({code:"unrecognized_keys",keys:u,input:_,inst:t}),T.length?Promise.all(T).then(()=>E):E}});function gn(t,e,n,r){for(const s of t)if(s.issues.length===0)return e.value=s.value,e;return e.issues.push({code:"invalid_union",input:e.value,inst:n,errors:t.map(s=>s.issues.map(i=>Ee(i,r,De())))}),e}const Fu=y("$ZodUnion",(t,e)=>{W.init(t,e),H(t._zod,"optin",()=>e.options.some(n=>n._zod.optin==="optional")?"optional":void 0),H(t._zod,"optout",()=>e.options.some(n=>n._zod.optout==="optional")?"optional":void 0),H(t._zod,"values",()=>{if(e.options.every(n=>n._zod.values))return new Set(e.options.flatMap(n=>Array.from(n._zod.values)))}),H(t._zod,"pattern",()=>{if(e.options.every(n=>n._zod.pattern)){const n=e.options.map(r=>r._zod.pattern);return new RegExp(`^(${n.map(r=>xt(r.source)).join("|")})$`)}}),t._zod.parse=(n,r)=>{let s=!1;const i=[];for(const o of e.options){const a=o._zod.run({value:n.value,issues:[]},r);if(a instanceof Promise)i.push(a),s=!0;else{if(a.issues.length===0)return a;i.push(a)}}return s?Promise.all(i).then(o=>gn(o,n,t,r)):gn(i,n,t,r)}}),Su=y("$ZodIntersection",(t,e)=>{W.init(t,e),t._zod.parse=(n,r)=>{const s=n.value,i=e.left._zod.run({value:s,issues:[]},r),o=e.right._zod.run({value:s,issues:[]},r);return i instanceof Promise||o instanceof Promise?Promise.all([i,o]).then(([l,f])=>fn(n,l,f)):fn(n,i,o)}});function bt(t,e){if(t===e)return{valid:!0,data:t};if(t instanceof Date&&e instanceof Date&&+t==+e)return{valid:!0,data:t};if(nt(t)&&nt(e)){const n=Object.keys(e),r=Object.keys(t).filter(i=>n.indexOf(i)!==-1),s={...t,...e};for(const i of r){const o=bt(t[i],e[i]);if(!o.valid)return{valid:!1,mergeErrorPath:[i,...o.mergeErrorPath]};s[i]=o.data}return{valid:!0,data:s}}if(Array.isArray(t)&&Array.isArray(e)){if(t.length!==e.length)return{valid:!1,mergeErrorPath:[]};const n=[];for(let r=0;r<t.length;r++){const s=t[r],i=e[r],o=bt(s,i);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function fn(t,e,n){if(e.issues.length&&t.issues.push(...e.issues),n.issues.length&&t.issues.push(...n.issues),Oe(t))return t;const r=bt(e.value,n.value);if(!r.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(r.mergeErrorPath)}`);return t.value=r.data,t}const wu=y("$ZodRecord",(t,e)=>{W.init(t,e),t._zod.parse=(n,r)=>{const s=n.value;if(!nt(s))return n.issues.push({expected:"record",code:"invalid_type",input:s,inst:t}),n;const i=[];if(e.keyType._zod.values){const o=e.keyType._zod.values;n.value={};for(const l of o)if(typeof l=="string"||typeof l=="number"||typeof l=="symbol"){const f=e.valueType._zod.run({value:s[l],issues:[]},r);f instanceof Promise?i.push(f.then(m=>{m.issues.length&&n.issues.push(...Fe(l,m.issues)),n.value[l]=m.value})):(f.issues.length&&n.issues.push(...Fe(l,f.issues)),n.value[l]=f.value)}let a;for(const l in s)o.has(l)||(a=a??[],a.push(l));a&&a.length>0&&n.issues.push({code:"unrecognized_keys",input:s,inst:t,keys:a})}else{n.value={};for(const o of Reflect.ownKeys(s)){if(o==="__proto__")continue;const a=e.keyType._zod.run({value:o,issues:[]},r);if(a instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(a.issues.length){n.issues.push({origin:"record",code:"invalid_key",issues:a.issues.map(f=>Ee(f,r,De())),input:o,path:[o],inst:t}),n.value[a.value]=a.value;continue}const l=e.valueType._zod.run({value:s[o],issues:[]},r);l instanceof Promise?i.push(l.then(f=>{f.issues.length&&n.issues.push(...Fe(o,f.issues)),n.value[a.value]=f.value})):(l.issues.length&&n.issues.push(...Fe(o,l.issues)),n.value[a.value]=l.value)}}return i.length?Promise.all(i).then(()=>n):n}}),Cu=y("$ZodEnum",(t,e)=>{W.init(t,e);const n=Uo(e.entries);t._zod.values=new Set(n),t._zod.pattern=new RegExp(`^(${n.filter(r=>jo.has(typeof r)).map(r=>typeof r=="string"?ze(r):r.toString()).join("|")})$`),t._zod.parse=(r,s)=>{const i=r.value;return t._zod.values.has(i)||r.issues.push({code:"invalid_value",values:n,input:i,inst:t}),r}}),bu=y("$ZodLiteral",(t,e)=>{W.init(t,e),t._zod.values=new Set(e.values),t._zod.pattern=new RegExp(`^(${e.values.map(n=>typeof n=="string"?ze(n):n?n.toString():String(n)).join("|")})$`),t._zod.parse=(n,r)=>{const s=n.value;return t._zod.values.has(s)||n.issues.push({code:"invalid_value",values:e.values,input:s,inst:t}),n}}),Au=y("$ZodTransform",(t,e)=>{W.init(t,e),t._zod.parse=(n,r)=>{const s=e.transform(n.value,n);if(r.async)return(s instanceof Promise?s:Promise.resolve(s)).then(o=>(n.value=o,n));if(s instanceof Promise)throw new Pe;return n.value=s,n}}),Tu=y("$ZodOptional",(t,e)=>{W.init(t,e),t._zod.optin="optional",t._zod.optout="optional",H(t._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,void 0]):void 0),H(t._zod,"pattern",()=>{const n=e.innerType._zod.pattern;return n?new RegExp(`^(${xt(n.source)})?$`):void 0}),t._zod.parse=(n,r)=>e.innerType._zod.optin==="optional"?e.innerType._zod.run(n,r):n.value===void 0?n:e.innerType._zod.run(n,r)}),ku=y("$ZodNullable",(t,e)=>{W.init(t,e),H(t._zod,"optin",()=>e.innerType._zod.optin),H(t._zod,"optout",()=>e.innerType._zod.optout),H(t._zod,"pattern",()=>{const n=e.innerType._zod.pattern;return n?new RegExp(`^(${xt(n.source)}|null)$`):void 0}),H(t._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,null]):void 0),t._zod.parse=(n,r)=>n.value===null?n:e.innerType._zod.run(n,r)}),Iu=y("$ZodDefault",(t,e)=>{W.init(t,e),t._zod.optin="optional",H(t._zod,"values",()=>e.innerType._zod.values),t._zod.parse=(n,r)=>{if(n.value===void 0)return n.value=e.defaultValue,n;const s=e.innerType._zod.run(n,r);return s instanceof Promise?s.then(i=>pn(i,e)):pn(s,e)}});function pn(t,e){return t.value===void 0&&(t.value=e.defaultValue),t}const $u=y("$ZodPrefault",(t,e)=>{W.init(t,e),t._zod.optin="optional",H(t._zod,"values",()=>e.innerType._zod.values),t._zod.parse=(n,r)=>(n.value===void 0&&(n.value=e.defaultValue),e.innerType._zod.run(n,r))}),Ou=y("$ZodNonOptional",(t,e)=>{W.init(t,e),H(t._zod,"values",()=>{const n=e.innerType._zod.values;return n?new Set([...n].filter(r=>r!==void 0)):void 0}),t._zod.parse=(n,r)=>{const s=e.innerType._zod.run(n,r);return s instanceof Promise?s.then(i=>mn(i,t)):mn(s,t)}});function mn(t,e){return!t.issues.length&&t.value===void 0&&t.issues.push({code:"invalid_type",expected:"nonoptional",input:t.value,inst:e}),t}const xu=y("$ZodCatch",(t,e)=>{W.init(t,e),t._zod.optin="optional",H(t._zod,"optout",()=>e.innerType._zod.optout),H(t._zod,"values",()=>e.innerType._zod.values),t._zod.parse=(n,r)=>{const s=e.innerType._zod.run(n,r);return s instanceof Promise?s.then(i=>(n.value=i.value,i.issues.length&&(n.value=e.catchValue({...n,error:{issues:i.issues.map(o=>Ee(o,r,De()))},input:n.value}),n.issues=[]),n)):(n.value=s.value,s.issues.length&&(n.value=e.catchValue({...n,error:{issues:s.issues.map(i=>Ee(i,r,De()))},input:n.value}),n.issues=[]),n)}}),Pu=y("$ZodPipe",(t,e)=>{W.init(t,e),H(t._zod,"values",()=>e.in._zod.values),H(t._zod,"optin",()=>e.in._zod.optin),H(t._zod,"optout",()=>e.out._zod.optout),t._zod.parse=(n,r)=>{const s=e.in._zod.run(n,r);return s instanceof Promise?s.then(i=>Dn(i,e,r)):Dn(s,e,r)}});function Dn(t,e,n){return Oe(t)?t:e.out._zod.run({value:t.value,issues:t.issues},n)}const Ru=y("$ZodReadonly",(t,e)=>{W.init(t,e),H(t._zod,"propValues",()=>e.innerType._zod.propValues),H(t._zod,"values",()=>e.innerType._zod.values),H(t._zod,"optin",()=>e.innerType._zod.optin),H(t._zod,"optout",()=>e.innerType._zod.optout),t._zod.parse=(n,r)=>{const s=e.innerType._zod.run(n,r);return s instanceof Promise?s.then(En):En(s)}});function En(t){return t.value=Object.freeze(t.value),t}const Nu=y("$ZodCustom",(t,e)=>{ie.init(t,e),W.init(t,e),t._zod.parse=(n,r)=>n,t._zod.check=n=>{const r=n.value,s=e.fn(r);if(s instanceof Promise)return s.then(i=>yn(i,n,r,t));yn(s,n,r,t)}});function yn(t,e,n,r){if(!t){const s={code:"custom",input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(s.params=r._zod.def.params),e.issues.push(Re(s))}}class Bu{constructor(){this._map=new Map,this._idmap=new Map}add(e,...n){const r=n[0];if(this._map.set(e,r),r&&typeof r=="object"&&"id"in r){if(this._idmap.has(r.id))throw new Error(`ID ${r.id} already exists in the registry`);this._idmap.set(r.id,e)}return this}clear(){return this._map=new Map,this._idmap=new Map,this}remove(e){const n=this._map.get(e);return n&&typeof n=="object"&&"id"in n&&this._idmap.delete(n.id),this._map.delete(e),this}get(e){const n=e._zod.parent;if(n){const r={...this.get(n)??{}};return delete r.id,{...r,...this._map.get(e)}}return this._map.get(e)}has(e){return this._map.has(e)}}function Uu(){return new Bu}const Ye=Uu();function zu(t,e){return new t({type:"string",...I(e)})}function Mu(t,e){return new t({type:"string",coerce:!0,...I(e)})}function Gu(t,e){return new t({type:"string",format:"email",check:"string_format",abort:!1,...I(e)})}function vn(t,e){return new t({type:"string",format:"guid",check:"string_format",abort:!1,...I(e)})}function ju(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,...I(e)})}function Lu(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...I(e)})}function Wu(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...I(e)})}function Zu(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...I(e)})}function Vu(t,e){return new t({type:"string",format:"url",check:"string_format",abort:!1,...I(e)})}function Hu(t,e){return new t({type:"string",format:"emoji",check:"string_format",abort:!1,...I(e)})}function Ku(t,e){return new t({type:"string",format:"nanoid",check:"string_format",abort:!1,...I(e)})}function qu(t,e){return new t({type:"string",format:"cuid",check:"string_format",abort:!1,...I(e)})}function Yu(t,e){return new t({type:"string",format:"cuid2",check:"string_format",abort:!1,...I(e)})}function Ju(t,e){return new t({type:"string",format:"ulid",check:"string_format",abort:!1,...I(e)})}function Qu(t,e){return new t({type:"string",format:"xid",check:"string_format",abort:!1,...I(e)})}function Xu(t,e){return new t({type:"string",format:"ksuid",check:"string_format",abort:!1,...I(e)})}function ec(t,e){return new t({type:"string",format:"ipv4",check:"string_format",abort:!1,...I(e)})}function tc(t,e){return new t({type:"string",format:"ipv6",check:"string_format",abort:!1,...I(e)})}function nc(t,e){return new t({type:"string",format:"cidrv4",check:"string_format",abort:!1,...I(e)})}function rc(t,e){return new t({type:"string",format:"cidrv6",check:"string_format",abort:!1,...I(e)})}function sc(t,e){return new t({type:"string",format:"base64",check:"string_format",abort:!1,...I(e)})}function ic(t,e){return new t({type:"string",format:"base64url",check:"string_format",abort:!1,...I(e)})}function oc(t,e){return new t({type:"string",format:"e164",check:"string_format",abort:!1,...I(e)})}function ac(t,e){return new t({type:"string",format:"jwt",check:"string_format",abort:!1,...I(e)})}function uc(t,e){return new t({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...I(e)})}function cc(t,e){return new t({type:"string",format:"date",check:"string_format",...I(e)})}function lc(t,e){return new t({type:"string",format:"time",check:"string_format",precision:null,...I(e)})}function hc(t,e){return new t({type:"string",format:"duration",check:"string_format",...I(e)})}function dc(t,e){return new t({type:"number",checks:[],...I(e)})}function gc(t,e){return new t({type:"number",coerce:!0,checks:[],...I(e)})}function fc(t,e){return new t({type:"number",check:"number_format",abort:!1,format:"safeint",...I(e)})}function pc(t,e){return new t({type:"boolean",...I(e)})}function mc(t){return new t({type:"any"})}function Dc(t){return new t({type:"unknown"})}function Ec(t,e){return new t({type:"never",...I(e)})}function _n(t,e){return new Yn({check:"less_than",...I(e),value:t,inclusive:!1})}function yt(t,e){return new Yn({check:"less_than",...I(e),value:t,inclusive:!0})}function Fn(t,e){return new Jn({check:"greater_than",...I(e),value:t,inclusive:!1})}function vt(t,e){return new Jn({check:"greater_than",...I(e),value:t,inclusive:!0})}function Sn(t,e){return new Ia({check:"multiple_of",...I(e),value:t})}function er(t,e){return new Oa({check:"max_length",...I(e),maximum:t})}function rt(t,e){return new xa({check:"min_length",...I(e),minimum:t})}function tr(t,e){return new Pa({check:"length_equals",...I(e),length:t})}function yc(t,e){return new Ra({check:"string_format",format:"regex",...I(e),pattern:t})}function vc(t){return new Na({check:"string_format",format:"lowercase",...I(t)})}function _c(t){return new Ba({check:"string_format",format:"uppercase",...I(t)})}function Fc(t,e){return new Ua({check:"string_format",format:"includes",...I(e),includes:t})}function Sc(t,e){return new za({check:"string_format",format:"starts_with",...I(e),prefix:t})}function wc(t,e){return new Ma({check:"string_format",format:"ends_with",...I(e),suffix:t})}function Me(t){return new Ga({check:"overwrite",tx:t})}function Cc(t){return Me(e=>e.normalize(t))}function bc(){return Me(t=>t.trim())}function Ac(){return Me(t=>t.toLowerCase())}function Tc(){return Me(t=>t.toUpperCase())}function kc(t,e,n){return new t({type:"array",element:e,...I(n)})}function Ic(t,e,n){return new t({type:"custom",check:"custom",fn:e,...I(n)})}const $c=y("ZodISODateTime",(t,e)=>{tu.init(t,e),Q.init(t,e)});function Oc(t){return uc($c,t)}const xc=y("ZodISODate",(t,e)=>{nu.init(t,e),Q.init(t,e)});function Pc(t){return cc(xc,t)}const Rc=y("ZodISOTime",(t,e)=>{ru.init(t,e),Q.init(t,e)});function Nc(t){return lc(Rc,t)}const Bc=y("ZodISODuration",(t,e)=>{su.init(t,e),Q.init(t,e)});function Uc(t){return hc(Bc,t)}const zc=(t,e)=>{jn.init(t,e),t.name="ZodError",Object.defineProperties(t,{format:{value:n=>Qo(t,n)},flatten:{value:n=>Jo(t,n)},addIssue:{value:n=>t.issues.push(n)},addIssues:{value:n=>t.issues.push(...n)},isEmpty:{get(){return t.issues.length===0}}})},at=y("ZodError",zc,{Parent:Error}),Mc=Xo(at),Gc=ea(at),jc=Wn(at),Lc=Zn(at),J=y("ZodType",(t,e)=>(W.init(t,e),t.def=e,Object.defineProperty(t,"_def",{value:e}),t.check=(...n)=>t.clone({...e,checks:[...e.checks??[],...n.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),t.clone=(n,r)=>be(t,n,r),t.brand=()=>t,t.register=(n,r)=>(n.add(t,r),t),t.parse=(n,r)=>Mc(t,n,r,{callee:t.parse}),t.safeParse=(n,r)=>jc(t,n,r),t.parseAsync=async(n,r)=>Gc(t,n,r,{callee:t.parseAsync}),t.safeParseAsync=async(n,r)=>Lc(t,n,r),t.spa=t.safeParseAsync,t.refine=(n,r)=>t.check(Rl(n,r)),t.superRefine=n=>t.check(Nl(n)),t.overwrite=n=>t.check(Me(n)),t.optional=()=>bn(t),t.nullable=()=>An(t),t.nullish=()=>bn(An(t)),t.nonoptional=n=>Al(t,n),t.array=()=>Ce(t),t.or=n=>ut([t,n]),t.and=n=>Dl(t,n),t.transform=n=>Tn(t,_l(n)),t.default=n=>wl(t,n),t.prefault=n=>bl(t,n),t.catch=n=>kl(t,n),t.pipe=n=>Tn(t,n),t.readonly=()=>Ol(t),t.describe=n=>{const r=t.clone();return Ye.add(r,{description:n}),r},Object.defineProperty(t,"description",{get(){return Ye.get(t)?.description},configurable:!0}),t.meta=(...n)=>{if(n.length===0)return Ye.get(t);const r=t.clone();return Ye.add(r,n[0]),r},t.isOptional=()=>t.safeParse(void 0).success,t.isNullable=()=>t.safeParse(null).success,t)),nr=y("_ZodString",(t,e)=>{Nt.init(t,e),J.init(t,e);const n=t._zod.bag;t.format=n.format??null,t.minLength=n.minimum??null,t.maxLength=n.maximum??null,t.regex=(...r)=>t.check(yc(...r)),t.includes=(...r)=>t.check(Fc(...r)),t.startsWith=(...r)=>t.check(Sc(...r)),t.endsWith=(...r)=>t.check(wc(...r)),t.min=(...r)=>t.check(rt(...r)),t.max=(...r)=>t.check(er(...r)),t.length=(...r)=>t.check(tr(...r)),t.nonempty=(...r)=>t.check(rt(1,...r)),t.lowercase=r=>t.check(vc(r)),t.uppercase=r=>t.check(_c(r)),t.trim=()=>t.check(bc()),t.normalize=(...r)=>t.check(Cc(...r)),t.toLowerCase=()=>t.check(Ac()),t.toUpperCase=()=>t.check(Tc())}),rr=y("ZodString",(t,e)=>{Nt.init(t,e),nr.init(t,e),t.email=n=>t.check(Gu(Wc,n)),t.url=n=>t.check(Vu(Zc,n)),t.jwt=n=>t.check(ac(ol,n)),t.emoji=n=>t.check(Hu(Vc,n)),t.guid=n=>t.check(vn(wn,n)),t.uuid=n=>t.check(ju(Je,n)),t.uuidv4=n=>t.check(Lu(Je,n)),t.uuidv6=n=>t.check(Wu(Je,n)),t.uuidv7=n=>t.check(Zu(Je,n)),t.nanoid=n=>t.check(Ku(Hc,n)),t.guid=n=>t.check(vn(wn,n)),t.cuid=n=>t.check(qu(Kc,n)),t.cuid2=n=>t.check(Yu(qc,n)),t.ulid=n=>t.check(Ju(Yc,n)),t.base64=n=>t.check(sc(rl,n)),t.base64url=n=>t.check(ic(sl,n)),t.xid=n=>t.check(Qu(Jc,n)),t.ksuid=n=>t.check(Xu(Qc,n)),t.ipv4=n=>t.check(ec(Xc,n)),t.ipv6=n=>t.check(tc(el,n)),t.cidrv4=n=>t.check(nc(tl,n)),t.cidrv6=n=>t.check(rc(nl,n)),t.e164=n=>t.check(oc(il,n)),t.datetime=n=>t.check(Oc(n)),t.date=n=>t.check(Pc(n)),t.time=n=>t.check(Nc(n)),t.duration=n=>t.check(Uc(n))});function v(t){return zu(rr,t)}const Q=y("ZodStringFormat",(t,e)=>{K.init(t,e),nr.init(t,e)}),Wc=y("ZodEmail",(t,e)=>{Va.init(t,e),Q.init(t,e)}),wn=y("ZodGUID",(t,e)=>{Wa.init(t,e),Q.init(t,e)}),Je=y("ZodUUID",(t,e)=>{Za.init(t,e),Q.init(t,e)}),Zc=y("ZodURL",(t,e)=>{Ha.init(t,e),Q.init(t,e)}),Vc=y("ZodEmoji",(t,e)=>{Ka.init(t,e),Q.init(t,e)}),Hc=y("ZodNanoID",(t,e)=>{qa.init(t,e),Q.init(t,e)}),Kc=y("ZodCUID",(t,e)=>{Ya.init(t,e),Q.init(t,e)}),qc=y("ZodCUID2",(t,e)=>{Ja.init(t,e),Q.init(t,e)}),Yc=y("ZodULID",(t,e)=>{Qa.init(t,e),Q.init(t,e)}),Jc=y("ZodXID",(t,e)=>{Xa.init(t,e),Q.init(t,e)}),Qc=y("ZodKSUID",(t,e)=>{eu.init(t,e),Q.init(t,e)}),Xc=y("ZodIPv4",(t,e)=>{iu.init(t,e),Q.init(t,e)}),el=y("ZodIPv6",(t,e)=>{ou.init(t,e),Q.init(t,e)}),tl=y("ZodCIDRv4",(t,e)=>{au.init(t,e),Q.init(t,e)}),nl=y("ZodCIDRv6",(t,e)=>{uu.init(t,e),Q.init(t,e)}),rl=y("ZodBase64",(t,e)=>{cu.init(t,e),Q.init(t,e)}),sl=y("ZodBase64URL",(t,e)=>{hu.init(t,e),Q.init(t,e)}),il=y("ZodE164",(t,e)=>{du.init(t,e),Q.init(t,e)}),ol=y("ZodJWT",(t,e)=>{fu.init(t,e),Q.init(t,e)}),Bt=y("ZodNumber",(t,e)=>{Xn.init(t,e),J.init(t,e),t.gt=(r,s)=>t.check(Fn(r,s)),t.gte=(r,s)=>t.check(vt(r,s)),t.min=(r,s)=>t.check(vt(r,s)),t.lt=(r,s)=>t.check(_n(r,s)),t.lte=(r,s)=>t.check(yt(r,s)),t.max=(r,s)=>t.check(yt(r,s)),t.int=r=>t.check(Cn(r)),t.safe=r=>t.check(Cn(r)),t.positive=r=>t.check(Fn(0,r)),t.nonnegative=r=>t.check(vt(0,r)),t.negative=r=>t.check(_n(0,r)),t.nonpositive=r=>t.check(yt(0,r)),t.multipleOf=(r,s)=>t.check(Sn(r,s)),t.step=(r,s)=>t.check(Sn(r,s)),t.finite=()=>t;const n=t._zod.bag;t.minValue=Math.max(n.minimum??Number.NEGATIVE_INFINITY,n.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,t.maxValue=Math.min(n.maximum??Number.POSITIVE_INFINITY,n.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,t.isInt=(n.format??"").includes("int")||Number.isSafeInteger(n.multipleOf??.5),t.isFinite=!0,t.format=n.format??null});function re(t){return dc(Bt,t)}const al=y("ZodNumberFormat",(t,e)=>{pu.init(t,e),Bt.init(t,e)});function Cn(t){return fc(al,t)}const ul=y("ZodBoolean",(t,e)=>{mu.init(t,e),J.init(t,e)});function Ae(t){return pc(ul,t)}const cl=y("ZodAny",(t,e)=>{Du.init(t,e),J.init(t,e)});function he(){return mc(cl)}const ll=y("ZodUnknown",(t,e)=>{Eu.init(t,e),J.init(t,e)});function Ne(){return Dc(ll)}const hl=y("ZodNever",(t,e)=>{yu.init(t,e),J.init(t,e)});function dl(t){return Ec(hl,t)}const gl=y("ZodArray",(t,e)=>{vu.init(t,e),J.init(t,e),t.element=e.element,t.min=(n,r)=>t.check(rt(n,r)),t.nonempty=n=>t.check(rt(1,n)),t.max=(n,r)=>t.check(er(n,r)),t.length=(n,r)=>t.check(tr(n,r)),t.unwrap=()=>t.element});function Ce(t,e){return kc(gl,t,e)}const fl=y("ZodObject",(t,e)=>{_u.init(t,e),J.init(t,e),H(t,"shape",()=>e.shape),t.keyof=()=>ne(Object.keys(t._zod.def.shape)),t.catchall=n=>t.clone({...t._zod.def,catchall:n}),t.passthrough=()=>t.clone({...t._zod.def,catchall:Ne()}),t.loose=()=>t.clone({...t._zod.def,catchall:Ne()}),t.strict=()=>t.clone({...t._zod.def,catchall:dl()}),t.strip=()=>t.clone({...t._zod.def,catchall:void 0}),t.extend=n=>Ho(t,n),t.merge=n=>Ko(t,n),t.pick=n=>Zo(t,n),t.omit=n=>Vo(t,n),t.partial=(...n)=>qo(sr,t,n[0]),t.required=(...n)=>Yo(ir,t,n[0])});function ye(t,e){const n={type:"object",get shape(){return Pt(this,"shape",{...t}),this.shape},...I(e)};return new fl(n)}const pl=y("ZodUnion",(t,e)=>{Fu.init(t,e),J.init(t,e),t.options=e.options});function ut(t,e){return new pl({type:"union",options:t,...I(e)})}const ml=y("ZodIntersection",(t,e)=>{Su.init(t,e),J.init(t,e)});function Dl(t,e){return new ml({type:"intersection",left:t,right:e})}const El=y("ZodRecord",(t,e)=>{wu.init(t,e),J.init(t,e),t.keyType=e.keyType,t.valueType=e.valueType});function ct(t,e,n){return new El({type:"record",keyType:t,valueType:e,...I(n)})}const At=y("ZodEnum",(t,e)=>{Cu.init(t,e),J.init(t,e),t.enum=e.entries,t.options=Object.values(e.entries);const n=new Set(Object.keys(e.entries));t.extract=(r,s)=>{const i={};for(const o of r)if(n.has(o))i[o]=e.entries[o];else throw new Error(`Key ${o} not found in enum`);return new At({...e,checks:[],...I(s),entries:i})},t.exclude=(r,s)=>{const i={...e.entries};for(const o of r)if(n.has(o))delete i[o];else throw new Error(`Key ${o} not found in enum`);return new At({...e,checks:[],...I(s),entries:i})}});function ne(t,e){const n=Array.isArray(t)?Object.fromEntries(t.map(r=>[r,r])):t;return new At({type:"enum",entries:n,...I(e)})}const yl=y("ZodLiteral",(t,e)=>{bu.init(t,e),J.init(t,e),t.values=new Set(e.values),Object.defineProperty(t,"value",{get(){if(e.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return e.values[0]}})});function b(t,e){return new yl({type:"literal",values:Array.isArray(t)?t:[t],...I(e)})}const vl=y("ZodTransform",(t,e)=>{Au.init(t,e),J.init(t,e),t._zod.parse=(n,r)=>{n.addIssue=i=>{if(typeof i=="string")n.issues.push(Re(i,n.value,e));else{const o=i;o.fatal&&(o.continue=!1),o.code??(o.code="custom"),o.input??(o.input=n.value),o.inst??(o.inst=t),o.continue??(o.continue=!0),n.issues.push(Re(o))}};const s=e.transform(n.value,n);return s instanceof Promise?s.then(i=>(n.value=i,n)):(n.value=s,n)}});function _l(t){return new vl({type:"transform",transform:t})}const sr=y("ZodOptional",(t,e)=>{Tu.init(t,e),J.init(t,e),t.unwrap=()=>t._zod.def.innerType});function bn(t){return new sr({type:"optional",innerType:t})}const Fl=y("ZodNullable",(t,e)=>{ku.init(t,e),J.init(t,e),t.unwrap=()=>t._zod.def.innerType});function An(t){return new Fl({type:"nullable",innerType:t})}const Sl=y("ZodDefault",(t,e)=>{Iu.init(t,e),J.init(t,e),t.unwrap=()=>t._zod.def.innerType,t.removeDefault=t.unwrap});function wl(t,e){return new Sl({type:"default",innerType:t,get defaultValue(){return typeof e=="function"?e():e}})}const Cl=y("ZodPrefault",(t,e)=>{$u.init(t,e),J.init(t,e),t.unwrap=()=>t._zod.def.innerType});function bl(t,e){return new Cl({type:"prefault",innerType:t,get defaultValue(){return typeof e=="function"?e():e}})}const ir=y("ZodNonOptional",(t,e)=>{Ou.init(t,e),J.init(t,e),t.unwrap=()=>t._zod.def.innerType});function Al(t,e){return new ir({type:"nonoptional",innerType:t,...I(e)})}const Tl=y("ZodCatch",(t,e)=>{xu.init(t,e),J.init(t,e),t.unwrap=()=>t._zod.def.innerType,t.removeCatch=t.unwrap});function kl(t,e){return new Tl({type:"catch",innerType:t,catchValue:typeof e=="function"?e:()=>e})}const Il=y("ZodPipe",(t,e)=>{Pu.init(t,e),J.init(t,e),t.in=e.in,t.out=e.out});function Tn(t,e){return new Il({type:"pipe",in:t,out:e})}const $l=y("ZodReadonly",(t,e)=>{Ru.init(t,e),J.init(t,e)});function Ol(t){return new $l({type:"readonly",innerType:t})}const xl=y("ZodCustom",(t,e)=>{Nu.init(t,e),J.init(t,e)});function Pl(t){const e=new ie({check:"custom"});return e._zod.check=t,e}function Rl(t,e={}){return Ic(xl,t,e)}function Nl(t){const e=Pl(n=>(n.addIssue=r=>{if(typeof r=="string")n.issues.push(Re(r,n.value,e._zod.def));else{const s=r;s.fatal&&(s.continue=!1),s.code??(s.code="custom"),s.input??(s.input=n.value),s.inst??(s.inst=e),s.continue??(s.continue=!e._zod.def.abort),n.issues.push(Re(s))}},t(n.value,n)));return e}function kn(t){return Mu(rr,t)}function In(t){return gc(Bt,t)}const P=ye({eventType:v(),command:v(),payload:ye({sessionId:v(),timestamp:re().default(()=>Date.now())})}),Bl=ne([V.STARTING,V.IDLE,V.PAUSED,V.STOPPED,V.ERROR]),Ul=ne([Y.CLAUDE_CODE,Y.GEMINI_CLI]),zl=ne([cn.STDOUT,cn.STDERR]),or=P.extend({eventType:b(O.STATUS).default(O.STATUS),command:b(S.REQUEST).default(S.REQUEST),payload:P.shape.payload.extend({data:v().default(""),fullscreen:Ae().default(!1).optional()})}),ar=P.extend({eventType:b(O.RESIZE).default(O.RESIZE),command:b(S.REQUEST).default(S.REQUEST),payload:P.shape.payload.extend({data:v().default(""),cols:In(),rows:In()})}),ur=P.extend({eventType:b(O.DIRECT_CONTROL).default(O.DIRECT_CONTROL),command:b(S.REQUEST).default(S.REQUEST),payload:P.shape.payload.extend({data:v(),controlType:ne(["interrupt","cancel","eof","signal"]).default("interrupt"),metadata:ct(v(),he()).optional()})}),Tt=P.extend({eventType:b(O.STATUS).default(O.STATUS),command:b(S.RESPONSE).default(S.RESPONSE),payload:P.shape.payload.extend({data:v().default(""),status:Bl.default(V.IDLE),agentType:Ul.optional(),pid:re().optional(),version:v().optional(),capabilities:Ce(v()).optional(),message:v().optional()})}),cr=P.extend({eventType:b(O.MESSAGE_INPUT).default(O.MESSAGE_INPUT),command:b(S.REQUEST).default(S.REQUEST),payload:P.shape.payload.extend({data:kn(),messageId:v(),content:kn(),metadata:ct(v(),he()).optional()})}),Ml=P.extend({eventType:b(O.MESSAGE_INPUT).default(O.MESSAGE_INPUT),command:b(S.RESPONSE).default(S.RESPONSE),payload:P.shape.payload.extend({data:v().default(""),id:v(),sessionId:v(),memberId:v().nullable().optional(),messageType:ne(["input","output","error","system"]),content:v(),contentSize:re().nullable(),messageTimestamp:v(),metadata:he().nullable(),createdAt:v(),updatedAt:v()})}),Gl=P.extend({eventType:b(O.MESSAGE_OUTPUT).default(O.MESSAGE_OUTPUT),command:b(S.REQUEST).default(S.REQUEST),payload:P.shape.payload.extend({data:v().default("")})}),lr=P.extend({eventType:b(O.MESSAGE_OUTPUT).default(O.MESSAGE_OUTPUT),command:b(S.RESPONSE).default(S.RESPONSE),payload:P.shape.payload.extend({data:v().default(""),id:v(),messageId:v(),memberId:v().nullable().optional(),messageType:ne(["input","output","error","system"]),parts:Ce(Ne()).default([]),contentSize:re().nullable(),messageTimestamp:v(),stream:zl.optional(),isComplete:Ae().optional().default(!1),metadata:he().nullable(),createdAt:v(),updatedAt:v()})}),jl=P.extend({eventType:b(O.MESSAGE_OUTPUT_PERMISSION_REQUESTED).default(O.MESSAGE_OUTPUT_PERMISSION_REQUESTED),command:b(S.REQUEST).default(S.REQUEST),payload:P.shape.payload.extend({data:v().default(""),messageId:v(),toolName:v(),description:v(),metadata:ct(v(),he()).optional()})}),hr=P.extend({eventType:b(O.MESSAGE_STDIN).default(O.MESSAGE_STDIN),command:b(S.REQUEST).default(S.REQUEST),payload:P.shape.payload.extend({data:v().default("")})}),dr=P.extend({eventType:b(O.MESSAGE_STDOUT).default(O.MESSAGE_STDOUT),command:b(S.RESPONSE).default(S.RESPONSE),payload:P.shape.payload.extend({data:v().default("")})}),Ll=P.extend({eventType:b(O.MESSAGE_OUTPUT_STARTED).default(O.MESSAGE_OUTPUT_STARTED),command:b(S.RESPONSE).default(S.RESPONSE),payload:P.shape.payload.extend({data:v().default(""),id:v(),messageId:v(),memberId:v().nullable().optional(),messageType:ne(["input","output","error","system"]),parts:Ce(Ne()).default([]),contentSize:re().nullable(),messageTimestamp:v(),metadata:he().nullable(),createdAt:v(),updatedAt:v()})}),Wl=P.extend({eventType:b(O.MESSAGE_OUTPUT_ENDED).default(O.MESSAGE_OUTPUT_ENDED),command:b(S.RESPONSE).default(S.RESPONSE),payload:P.shape.payload.extend({data:v().default(""),id:v(),messageId:v(),memberId:v().nullable().optional(),messageType:ne(["input","output","error","system"]),parts:Ce(Ne()),contentSize:re().nullable(),messageTimestamp:v(),totalTokens:re().optional(),completionTime:re().optional(),metadata:he().nullable(),createdAt:v(),updatedAt:v()})}),Zl=P.extend({eventType:b(O.MESSAGE_DELETED).default(O.MESSAGE_DELETED),command:b(S.RESPONSE).default(S.RESPONSE),payload:P.shape.payload.extend({data:v().default(""),id:v()})}),Vl=P.extend({eventType:b(O.ERROR).default(O.ERROR),command:b(S.REQUEST).default(S.REQUEST),payload:P.shape.payload.extend({data:v().default("")})}),gr=P.extend({eventType:b(O.ERROR).default(O.ERROR),command:b(S.RESPONSE).default(S.RESPONSE),payload:P.shape.payload.extend({data:v().default(""),error:ye({code:v().default("UNKNOWN_ERROR"),message:v().default("An unknown error occurred"),details:he().optional(),stack:v().optional()})})}),Hl=P.extend({eventType:b(O.STATUS).default(O.STATUS),command:b(S.ACK).default(S.ACK),payload:P.shape.payload.extend({data:v().default(""),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),agentSessionsSent:re().default(0)})}),Kl=P.extend({eventType:b(O.MESSAGE_INPUT).default(O.MESSAGE_INPUT),command:b(S.ACK).default(S.ACK),payload:P.shape.payload.extend({data:v().default(""),messageId:v(),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),agentSessionsSent:re().default(0)})}),ql=P.extend({eventType:b(O.MESSAGE_OUTPUT).default(O.MESSAGE_OUTPUT),command:b(S.ACK).default(S.ACK),payload:P.shape.payload.extend({data:v().default(""),messageId:v(),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),agentSessionsSent:re().default(0)})}),Yl=P.extend({eventType:b(O.MESSAGE_DELETED).default(O.MESSAGE_DELETED),command:b(S.ACK).default(S.ACK),payload:P.shape.payload.extend({data:v().default(""),id:v(),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),agentSessionsSent:re().default(0)})}),Jl=P.extend({eventType:b(O.ERROR).default(O.ERROR),command:b(S.ACK).default(S.ACK),payload:P.shape.payload.extend({data:v().default(""),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),agentSessionsSent:re().default(0)})});ut([or,ar,ur,Tt,cr,Ml,Gl,lr,jl,hr,dr,Ll,Wl,Zl,Vl,gr,Hl,Kl,ql,Yl,Jl]);const U=ye({eventType:v(),command:v(),payload:ye({sessionId:v(),timestamp:re().default(()=>Date.now())})}),Ql=ne([me.IDLE,me.BUSY,me.OFFLINE,me.STARTING]),fr=U.extend({eventType:b(N.STATUS).default(N.STATUS),command:b(S.REQUEST).default(S.REQUEST),payload:U.shape.payload.extend({data:v().default("")})}),kt=U.extend({eventType:b(N.STATUS).default(N.STATUS),command:b(S.RESPONSE).default(S.RESPONSE),payload:U.shape.payload.extend({data:v().default(""),status:Ql.default(me.IDLE)})}),Xl=U.extend({eventType:b(N.ERROR).default(N.ERROR),command:b(S.REQUEST).default(S.REQUEST),payload:U.shape.payload.extend({data:v().default("")})}),pr=U.extend({eventType:b(N.ERROR).default(N.ERROR),command:b(S.RESPONSE).default(S.RESPONSE),payload:U.shape.payload.extend({data:v().default(""),error:ye({code:v().default("UNKNOWN_ERROR"),message:v().default("An unknown error occurred"),details:he().optional()})})}),mr=U.extend({eventType:b(N.TERMINATE).default(N.TERMINATE),command:b(S.REQUEST).default(S.REQUEST),payload:U.shape.payload.extend({data:v().optional().default("")})}),Dr=U.extend({eventType:b(N.TERMINATE).default(N.TERMINATE),command:b(S.RESPONSE).default(S.RESPONSE),payload:U.shape.payload.extend({data:v().optional().default("")})}),Er=U.extend({eventType:b(N.LIST).default(N.LIST),command:b(S.REQUEST).default(S.REQUEST),payload:U.shape.payload.extend({data:v().optional().default("")})}),yr=U.extend({eventType:b(N.LIST).default(N.LIST),command:b(S.RESPONSE).default(S.RESPONSE),payload:U.shape.payload.extend({data:v().optional().default("")})}),Ut=U.extend({eventType:b(N.START_AGENT).default(N.START_AGENT),command:b(S.REQUEST).default(S.REQUEST),payload:U.shape.payload.extend({data:v().default(""),agentType:v(),agentSessionId:v(),agentConfig:ye({conversationSessionId:v().optional(),workingDirectory:v().nullable(),environment:ct(v(),v()).optional(),args:Ce(v()).optional(),commands:Ce(v()).optional(),mcps:he().optional(),hooks:he().optional(),xterm:Ae().optional().default(!1),docker:Ae().optional().default(!1),dockerImage:v().optional(),autonomous:Ae().optional().default(!1),worktree:ut([Ae(),ye({branch:v().optional(),name:v().optional()})]).optional().default(!1)}).optional()})}),eh=U.extend({eventType:b(N.START_AGENT).default(N.START_AGENT),command:b(S.RESPONSE).default(S.RESPONSE),payload:U.shape.payload.extend({data:v().default(""),agentSessionId:v(),agentType:v(),status:ne(["started","failed"]).default("started"),message:v().optional()})}),th=U.extend({eventType:b(N.START_AGENT).default(N.START_AGENT),command:b(S.ACK).default(S.ACK),payload:U.shape.payload.extend({data:v().default(""),agentType:v(),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),daemonsSent:re().default(0)})}),vr=U.extend({eventType:b(N.STOP_AGENT).default(N.STOP_AGENT),command:b(S.REQUEST).default(S.REQUEST),payload:U.shape.payload.extend({data:v().default(""),agentSessionId:v()})}),_r=U.extend({eventType:b(N.STOP_AGENT).default(N.STOP_AGENT),command:b(S.RESPONSE).default(S.RESPONSE),payload:U.shape.payload.extend({data:v().default(""),agentSessionId:v(),status:ne(["stopped","not_found","failed"]).default("stopped"),message:v().optional()})}),nh=U.extend({eventType:b(N.STOP_AGENT).default(N.STOP_AGENT),command:b(S.ACK).default(S.ACK),payload:U.shape.payload.extend({data:v().default(""),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),daemonsSent:re().default(0)})}),rh=U.extend({eventType:b(N.TERMINATE).default(N.TERMINATE),command:b(S.ACK).default(S.ACK),payload:U.shape.payload.extend({data:v().default(""),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),daemonsSent:re().default(0)})}),sh=U.extend({eventType:b(N.LIST).default(N.LIST),command:b(S.ACK).default(S.ACK),payload:U.shape.payload.extend({data:v().default(""),status:ne(["forwarded","failed"]).default("forwarded"),message:v(),daemonsSent:re().default(0)})});ut([fr,kt,Xl,pr,mr,Dr,Er,yr,Ut,eh,th,vr,_r,nh,rh,sh]);const Fr=D.z.object({VITE_INJECT_AGIFLOW_APP_ENDPOINT:D.z.string().url().default("").describe("Server base URL for both HTTP API and WebSocket connections"),VITE_INJECT_AGIFLOW_APP_DOCKER_ENDPOINT:D.z.string().url().default("").describe("Server base URL when running inside Docker containers"),VITE_AGENT_CLI_DOCKER_IMAGE:D.z.string().default("").describe("Docker image name for containerized Claude Code agents"),VITE_AGENT_CLI_DOCKER_NETWORK:D.z.string().default("").describe("Docker network mode for containerized agents"),VITE_SAVE_RAW:D.z.preprocess(t=>t==="false"||t===""||t===null||t===void 0?!1:t==="true"?!0:t,D.z.boolean()).default(!1)});Rn.config({override:!1,debug:!1});const ae=Fr.parse({VITE_INJECT_AGIFLOW_APP_ENDPOINT:"https://agiflow.io",VITE_INJECT_AGIFLOW_APP_DOCKER_ENDPOINT:"https://agiflow.io",VITE_AGENT_CLI_DOCKER_IMAGE:"agiflowai/agent-cli:v0.0.3",VITE_AGENT_CLI_DOCKER_NETWORK:""});function Sr(t=!1){return process.env.AGENT_CONTAINER_MODE==="true"||t?ae.VITE_INJECT_AGIFLOW_APP_DOCKER_ENDPOINT:ae.VITE_INJECT_AGIFLOW_APP_ENDPOINT}function ih(t){const e=new URL(t);return e.protocol=e.protocol==="https:"?"wss:":"ws:",e.toString()}function wr(t=!0,e){const r=fe.hostname().replace(/[^a-zA-Z0-9-]/g,"-");if(t){const s=e||process.cwd(),i=ts.createHash("sha256").update(s).digest("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"").slice(0,8);return`claude-daemon-${r}-${i}`}return`claude-daemon-${r}-${Date.now()}`}function Cr(){return{hostname:fe.hostname(),platform:fe.platform(),arch:fe.arch(),release:fe.release(),cpus:fe.cpus().length,totalMemory:fe.totalmem(),type:fe.type()}}function oh(t){return t.replace(/^http/,"ws")}function br(t,e=3e3){return t.replace(/^ws/,"http").replace(/:\d+$/,`:${e}`)}function Ar(t,e=3e5,n){let r=null;const s=n||console,i=()=>{o(),t().catch(a=>{s.warn?.("Heartbeat failed:",a)||console.warn("Heartbeat failed:",a)}),r=setInterval(async()=>{try{await t()}catch(a){s.warn?.("Heartbeat failed:",a)||console.warn("Heartbeat failed:",a)}},e)},o=()=>{r&&(clearInterval(r),r=null)};return{start:i,stop:o}}class ah{ws=null;options;callbacks;isConnected=!1;reconnectTimer=null;shouldReconnect=!0;currentSessionId=null;credentialsService;logger;pingInterval=null;connectionAttempts=0;maxReconnectAttempts=10;heartbeatInterval=null;constructor(e,n={}){const r=D.SubEnvManager.isContainerMode?2e3:5e3;this.options={reconnectInterval:r,...e},this.callbacks=n,this.credentialsService=e.credentialsService??new D.CredentialsService,this.logger=e.logger??new D.Logger({verbose:e.verbose??!1}),D.SubEnvManager.isContainerMode&&this.logger.debug("🐳 Docker WebSocket service initialized with enhanced connectivity handling")}async connect(e){if(this.ws&&this.ws.readyState===_e.OPEN)return;this.currentSessionId=e;const n=await this.buildWebSocketUrl(e);return D.SubEnvManager.isContainerMode&&(this.logger.info(`🐳 Docker WebSocket connecting to: ${n}`),this.logger.debug("Docker network environment:",{hostname:D.SubEnvManager.hostname,containerMode:D.SubEnvManager.isContainerMode,serverUrl:this.options.serverUrl})),new Promise((r,s)=>{const i={};this.options.apiKey&&(i["x-api-key"]=this.options.apiKey),this.ws=new _e(n,{headers:i}),this.ws.on("open",()=>{this.isConnected=!0,this.connectionAttempts=0;const o=this.logger;o&&(D.SubEnvManager.isContainerMode?o.info(`🐳 Docker WebSocket connected successfully to ${n}`):o.info(`🔌 WebSocket connected to ${n}`)),D.SubEnvManager.isContainerMode&&this.startHealthMonitoring(),this.startAgentHeartbeat(),this.callbacks.onConnect&&this.callbacks.onConnect(),r()}),this.ws.on("message",o=>{try{const a=JSON.parse(o.toString());this.handleMessage(a)}catch(a){this.log(`Error parsing message: ${a}`)}}),this.ws.on("close",(o,a)=>{this.isConnected=!1,this.currentSessionId=null,this.callbacks.onDisconnect&&this.callbacks.onDisconnect(o,a.toString()),this.shouldReconnect&&this.scheduleReconnect(e)}),this.ws.on("error",o=>{D.SubEnvManager.isContainerMode&&this.logger.error("🐳 Docker WebSocket connection error:",new Error(`Docker WebSocket error: ${o.message}. URL: ${n}, Hostname: ${D.SubEnvManager.hostname}, Server: ${this.options.serverUrl}`)),o.message.includes("401")&&this.options.apiKey&&this.log(`API key first 8 chars: ${this.options.apiKey.substring(0,8)}...`),(o.message.includes("ECONNREFUSED")||o.message.includes("ENOTFOUND"))&&this.logger.error("🐳 Docker networking issue - check if server is accessible from container"),this.callbacks.onError&&this.callbacks.onError(o),this.isConnected||s(o)}),setTimeout(()=>{this.isConnected||s(new Error("WebSocket connection timeout"))},1e4)})}disconnect(){this.shouldReconnect=!1,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.stopHealthMonitoring(),this.stopAgentHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1}isWebSocketConnected(){return this.isConnected}getCurrentSessionId(){if(!this.currentSessionId)throw new Error("No active session ID");return this.currentSessionId}setCurrentSessionId(e){this.currentSessionId=e}sendAgentStatus(e){const n={eventType:O.STATUS,command:S.RESPONSE,payload:{sessionId:this.getCurrentSessionId(),timestamp:Date.now(),data:"",status:e.status||V.IDLE,agentType:e.agentType,pid:e.pid,version:e.version,capabilities:e.capabilities,message:e.message}};this.sendMessage(Tt.parse(n))}sendAgentOutput(e){const n=new Date().toISOString(),r={eventType:O.MESSAGE_OUTPUT,command:S.RESPONSE,payload:{sessionId:this.getCurrentSessionId(),timestamp:Date.now(),data:e.content,id:e.messageId,messageId:e.messageId,messageType:"output",parts:[],contentSize:e.content.length,messageTimestamp:n,stream:e.stream,isComplete:e.isComplete||!1,metadata:e.metadata,createdAt:n,updatedAt:n}};this.sendMessage(lr.parse(r))}sendAgentError(e){const n={eventType:O.ERROR,command:S.RESPONSE,payload:{sessionId:this.getCurrentSessionId(),timestamp:Date.now(),data:"",error:{code:e.code,message:e.message,details:e.details,stack:e.stack}}};this.sendMessage(gr.parse(n))}sendStdoutMessage(e){const n={eventType:O.MESSAGE_STDOUT,command:S.RESPONSE,payload:{sessionId:this.getCurrentSessionId(),timestamp:Date.now(),data:e}};this.sendMessage(dr.parse(n))}sendMessage(e){if(this.ws&&this.ws.readyState===_e.OPEN)try{this.ws.send(JSON.stringify(e))}catch(n){D.SubEnvManager.isContainerMode?(this.logger.error("🐳 Docker WebSocket send error:",n),this.logger.debug("🐳 Message that failed to send:",e)):this.logger.error("WebSocket send error:",n),this.currentSessionId&&this.scheduleReconnect(this.currentSessionId)}else{const n=this.ws?this.ws.readyState:"no socket";D.SubEnvManager.isContainerMode?this.logger.warn(`🐳 Docker WebSocket not ready to send message. State: ${n}`):this.logger.warn(`WebSocket not ready to send message. State: ${n}`)}}handleMessage(e){try{switch(e.eventType){case O.STATUS:if(e.command===S.REQUEST){const n=or.parse(e);this.callbacks.onStatusRequest&&this.callbacks.onStatusRequest(n)}break;case O.MESSAGE_INPUT:if(e.command===S.REQUEST){const n=cr.parse(e);this.callbacks.onMessageInput&&this.callbacks.onMessageInput(n)}break;case O.MESSAGE_STDIN:if(e.command===S.REQUEST){const n=hr.parse(e);this.callbacks.onStdinInput&&this.callbacks.onStdinInput(n)}break;case O.RESIZE:if(e.command===S.REQUEST){const n=ar.parse(e),r=this.logger;r&&r.info(`📐 Received resize event: ${n.payload.cols}x${n.payload.rows}`),this.callbacks.onResizeRequest?this.callbacks.onResizeRequest(n):r&&r.warn("📐 No onResizeRequest callback registered, ignoring resize event")}break;case O.DIRECT_CONTROL:if(e.command===S.REQUEST){const n=ur.parse(e),r=this.logger;r&&r.info(`🎮 Received direct control event: ${n.payload.controlType} - data: ${JSON.stringify(n.payload.data)}`),this.callbacks.onDirectControl?this.callbacks.onDirectControl(n):r&&r.warn("🎮 No onDirectControl callback registered, ignoring direct control event")}break;default:this.callbacks.onMessage&&this.callbacks.onMessage(e)}}catch(n){this.log(`Error validating message: ${n}`)}}scheduleReconnect(e){if(this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.connectionAttempts++,this.connectionAttempts>this.maxReconnectAttempts){D.SubEnvManager.isContainerMode?this.logger.error(`🐳 Docker WebSocket max reconnection attempts (${this.maxReconnectAttempts}) exceeded. Giving up.`):this.logger.error(`WebSocket max reconnection attempts (${this.maxReconnectAttempts}) exceeded. Giving up.`);return}const n=this.options.reconnectInterval||2e3,r=D.SubEnvManager.isContainerMode?Math.min(this.connectionAttempts,5):1,s=n*r;D.SubEnvManager.isContainerMode&&this.logger.info(`🐳 Docker WebSocket reconnection attempt ${this.connectionAttempts}/${this.maxReconnectAttempts} in ${s}ms`),this.reconnectTimer=setTimeout(async()=>{try{await this.connect(e)}catch(i){const o=i instanceof Error?i.message:String(i);D.SubEnvManager.isContainerMode?this.logger.error(`🐳 Docker WebSocket reconnection failed: ${o}`):this.log(`Reconnection failed: ${o}`),this.scheduleReconnect(e)}},s)}async buildWebSocketUrl(e){const n=new URL(this.options.serverUrl);n.protocol==="http:"?n.protocol="ws:":n.protocol==="https:"&&(n.protocol="wss:"),n.pathname=`/api/v1/organizations/${this.options.organizationId}/agent-sessions/${e}/ws`,n.searchParams.set("clientType","agent");const r=await this.credentialsService.getDeviceId();return n.searchParams.set("deviceId",r||"unknown"),n.toString()}startHealthMonitoring(){this.pingInterval&&clearInterval(this.pingInterval),this.pingInterval=setInterval(()=>{this.ws&&this.ws.readyState===_e.OPEN||(this.logger.warn("🐳 Docker WebSocket connection lost during health check"),this.stopHealthMonitoring(),this.currentSessionId&&this.scheduleReconnect(this.currentSessionId))},3e4)}stopHealthMonitoring(){this.pingInterval&&(clearInterval(this.pingInterval),this.pingInterval=null)}startAgentHeartbeat(){this.heartbeatInterval&&clearInterval(this.heartbeatInterval),this.sendHeartbeat(),this.heartbeatInterval=setInterval(()=>{this.sendHeartbeat()},3e4)}stopAgentHeartbeat(){this.heartbeatInterval&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}sendHeartbeat(){if(this.isConnected&&this.currentSessionId)try{const e={eventType:O.STATUS,command:S.RESPONSE,payload:{sessionId:this.currentSessionId,timestamp:Date.now(),data:"",status:V.IDLE,message:"Heartbeat"}},n=Tt.parse(e);this.sendMessage(n),this.logger.debug("Agent session heartbeat sent")}catch(e){this.logger.warn("Failed to send agent session heartbeat:",e)}}log(e){this.options.verbose&&console.log(`[AGENT-WS] ${e}`)}}class uh{session;logger;constructor(e){this.logger=e??new D.Logger({verbose:!1})}spawn(e,n){const r=e.agentSessionId||On.ulid(),s=e.workingDir||process.cwd(),i={};e.agentApiKey&&(i[D.ENV_KEYS.AGENT_API_KEY]=e.agentApiKey),e.agentOrganizationId&&(i[D.ENV_KEYS.AGENT_ORGANIZATION_ID]=e.agentOrganizationId),e.agentDeviceGuid&&(i[D.ENV_KEYS.AGENT_DEVICE_GUID]=e.agentDeviceGuid),e.agentServerUrl&&(i[D.ENV_KEYS.AGENT_SERVER_URL]=e.agentServerUrl),e.agentType&&(i[D.ENV_KEYS.AGENT_TYPE]=e.agentType),i[D.ENV_KEYS.AGENT_SESSION_ID]=r,this.logger.debug("PTY Environment Variables:",{...process.env,...i,...e.env,TERM:"xterm-256color",COLORTERM:"truecolor"});const o=es.spawn(e.command,e.args||[],{name:"xterm-256color",cwd:s,env:{...process.env,...i,...e.env,TERM:"xterm-256color",COLORTERM:"truecolor"}}),a={id:r,ptyProcess:o,command:e.command,workingDir:s,status:"running",createdAt:new Date,lastActivity:new Date,logStream:e.logStream};return o.onData(l=>{a.lastActivity=new Date,a.logStream&&a.logStream.write(l),process.stdout.isTTY&&process.stdout.write(l),n?.onData&&n.onData(l,l)}),o.onExit(l=>{const f=l.exitCode,m=l.signal;a.status=f===0?"stopped":"error",a.lastActivity=new Date,this.logger.info(`PTY process ${r} exited with code ${f}${m?` (signal: ${m})`:""}`),a.logStream&&a.logStream.end(),n?.onExit&&n.onExit(f,m)}),this.session=a,a}sendInput(e){return this.session?.ptyProcess?(this.session.ptyProcess.write(e),this.session.lastActivity=new Date,!0):(this.logger.warn("No active process to send input to"),!1)}resize(e,n){return this.session?.ptyProcess?(this.session.ptyProcess.resize(e,n),this.session.lastActivity=new Date,!0):!1}kill(e){if(!this.session?.ptyProcess)return this.logger.warn("No PTY session to kill"),!1;try{return this.session.ptyProcess.kill(e),this.session.status="stopped",!0}catch(n){return this.logger.error(`Failed to kill PTY session : ${n}`),!1}}getSession(){return this.session}isSessionRunning(){return this.session?.status==="running"}}class It{logger;targetDirectory;originalDirectory;envFilePatterns=[".env",".env.development",".dev.vars",".env.test"];constructor(e){if(this.targetDirectory=C.resolve(e.targetDirectory),this.originalDirectory=e.originalDirectory?C.resolve(e.originalDirectory):void 0,this.logger=e.logger??new D.Logger({verbose:!1}),!k.existsSync(this.targetDirectory))throw new Error(`Target directory does not exist: ${this.targetDirectory}`);if(this.originalDirectory&&!k.existsSync(this.originalDirectory))throw new Error(`Original directory does not exist: ${this.originalDirectory}`)}async setup(){const e={envFilesCopied:[],errors:[]};try{this.originalDirectory&&(this.logger.info("Copying environment files..."),e.envFilesCopied=await this.copyEnvironmentFiles(),this.logger.success(`Copied ${e.envFilesCopied.filter(n=>n.copied).length} environment files`))}catch(n){const r=`Setup failed: ${n.message}`;e.errors.push(r),this.logger.error(r)}return e}async copyEnvironmentFiles(){if(!this.originalDirectory)return[];const e=[],n=await this.findEnvironmentFiles(this.originalDirectory);for(const r of n)try{const s=C.relative(this.originalDirectory,r),i=C.join(this.targetDirectory,s),o=C.dirname(i);k.existsSync(o)||await pe.mkdir(o,{recursive:!0}),await pe.copyFile(r,i),e.push({originalPath:r,targetPath:i,relativePath:s,copied:!0}),this.logger.debug(`Copied: ${s}`)}catch(s){e.push({originalPath:r,targetPath:"",relativePath:C.relative(this.originalDirectory,r),copied:!1}),this.logger.warn(`Failed to copy ${r}: ${s.message}`)}return e}async findEnvironmentFiles(e,n=0){const r=[];if(n>=5)return r;try{const i=await pe.readdir(e,{withFileTypes:!0});for(const o of i){const a=C.join(e,o.name);if(o.isDirectory()){if(this.shouldSkipDirectory(o.name))continue;const l=await this.findEnvironmentFiles(a,n+1);r.push(...l)}else o.isFile()&&this.isEnvironmentFile(o.name)&&r.push(a)}}catch(i){this.logger.debug(`Cannot read directory ${e}: ${i.message}`)}return r}isEnvironmentFile(e){return this.envFilePatterns.some(n=>n.includes("*")?!1:e===n||e.startsWith(n+"."))}shouldSkipDirectory(e){return["node_modules",".git",".next",".nuxt","dist","build","coverage",".nyc_output",".cache","tmp","temp",".vscode",".idea","__pycache__",".pytest_cache",".mypy_cache"].includes(e)||e.startsWith(".")}async installDependencies(e="pnpm"){try{const n=C.join(this.targetDirectory,"package.json");if(!k.existsSync(n))return this.logger.debug("No package.json found, skipping dependency installation"),!1;if(!this.isPackageManagerAvailable(e))if(this.logger.warn(`${e} is not available, trying npm...`),this.isPackageManagerAvailable("npm"))e="npm";else throw new Error("No package manager available (tried pnpm, npm)");const r=this.getInstallCommand(e);this.logger.info(`Running: ${r}`);try{return se.execSync(r,{cwd:this.targetDirectory,stdio:"pipe",encoding:"utf8"}),!0}catch(s){if(s.message?.includes("EUNSUPPORTEDPROTOCOL")||s.message?.includes("workspace:"))return this.logger.warn("Workspace protocol detected in dependencies, skipping installation"),this.logger.debug("This is expected in Docker containers where dependencies are pre-installed"),!1;throw s}}catch(n){return this.logger.error(`Failed to install dependencies: ${n.message}`),!1}}isPackageManagerAvailable(e){try{return se.execSync(`${e} --version`,{stdio:"pipe",timeout:5e3}),!0}catch{return!1}}getInstallCommand(e){switch(e){case"pnpm":return"pnpm install";case"yarn":return"yarn install";case"npm":default:return"npm install"}}async getEnvironmentFiles(){return this.originalDirectory?await this.findEnvironmentFiles(this.originalDirectory):[]}getTargetDirectory(){return this.targetDirectory}getOriginalDirectory(){return this.originalDirectory}hasPackageJson(){return k.existsSync(C.join(this.targetDirectory,"package.json"))}isNodeProject(){return["package.json","node_modules","yarn.lock","package-lock.json","pnpm-lock.yaml"].some(n=>k.existsSync(C.join(this.targetDirectory,n)))}isPythonProject(){return["requirements.txt","pyproject.toml","setup.py","Pipfile","poetry.lock","uv.lock"].some(n=>k.existsSync(C.join(this.targetDirectory,n)))}isNxMonorepo(){return["nx.json","workspace.json","angular.json"].some(n=>k.existsSync(C.join(this.targetDirectory,n)))}getDefaultPreAgentHooks(e){if(e&&e.length>0)return this.logger.debug("User provided pre-agent hooks, skipping defaults"),e;const n=[];return this.isNodeProject()&&!k.existsSync(C.join(this.targetDirectory,"node_modules"))&&this.hasPackageJson()&&(this.logger.info("No node_modules found, adding default pnpm install hook"),n.push("pnpm install"),this.isNxMonorepo()&&(this.logger.info("Nx monorepo detected, adding default build hook"),n.push("nx run-many -t build"))),this.isPythonProject()&&(k.existsSync(C.join(this.targetDirectory,".venv"))||k.existsSync(C.join(this.targetDirectory,"venv"))||(this.logger.info("No virtual environment found, adding default Python setup hooks"),k.existsSync(C.join(this.targetDirectory,"uv.lock"))?n.push("uv sync"):k.existsSync(C.join(this.targetDirectory,"requirements.txt"))&&(n.push("python -m venv .venv"),n.push(".venv/bin/pip install -r requirements.txt")))),n}async preAgentSetup(e){const n={hooks:[]};if(this.originalDirectory){const r=await this.setup();n.envFilesCopied=r.envFilesCopied,n.errors=r.errors}return n.hooks=this.getDefaultPreAgentHooks(e),n}async buildNxMonorepo(){try{if(!this.isNxAvailable())return this.logger.warn("Nx is not available, skipping build"),!1;this.logger.info("Running: nx run-many -t build");try{return se.execSync("nx run-many -t build",{cwd:this.targetDirectory,stdio:"pipe",encoding:"utf8",timeout:3e5}),!0}catch(e){if(e.message?.includes("workspace:")||e.message?.includes("Cannot find module")||e.message?.includes("ENOENT"))return this.logger.warn("Build failed due to workspace or dependency issues, skipping build"),this.logger.debug("This is expected in Docker containers with pre-built applications"),!1;throw e}}catch(e){return this.logger.error(`Failed to build Nx monorepo: ${e.message}`),!1}}isNxAvailable(){try{return se.execSync("nx --version",{stdio:"pipe",timeout:5e3}),!0}catch{try{return se.execSync("npx nx --version",{stdio:"pipe",timeout:1e4}),!0}catch{return!1}}}}class Tr{logger;onData;onExit;ctrlCCount=0;ctrlCTimeout=null;CTRL_C_RESET_MS=3e3;constructor({logger:e,onData:n,onExit:r}){this.logger=e??new D.Logger({verbose:!1}),this.onData=n,this.onExit=r,this.start()}handleCtrlC(){return this.ctrlCCount++,this.ctrlCTimeout&&clearTimeout(this.ctrlCTimeout),this.ctrlCCount===1?(this.logger.debug("First Ctrl+C detected - Claude will clear input. Press Ctrl+C again to exit."),this.ctrlCTimeout=setTimeout(()=>{this.ctrlCCount=0,this.ctrlCTimeout=null},this.CTRL_C_RESET_MS),!1):this.ctrlCCount>=2?(this.logger.debug("Second Ctrl+C detected - initiating graceful exit."),this.ctrlCTimeout&&(clearTimeout(this.ctrlCTimeout),this.ctrlCTimeout=null),this.ctrlCCount=0,!0):!1}start(){if(this.logger.info("StdinForwarding starting..."),!process.stdin.isTTY){this.logger.warn("No TTY available for stdin forwarding");return}this.logger.debug("Setting up process event handlers..."),process.on("SIGINT",()=>{this.logger.info("Process received SIGINT"),this.onExit("SIGINT")}),process.on("SIGTERM",()=>{this.logger.info("Process received SIGTERM"),this.onExit("SIGTERM")}),process.on("uncaughtException",async e=>{this.logger.error("Uncaught exception:",e);try{this.onExit("uncaughtException")}catch{}process.exit(1)}),process.on("unhandledRejection",async e=>{this.logger.error("Unhandled rejection:",e);try{this.onExit(e.toString())}catch{}process.exit(1)}),this.logger.debug("Setting stdin to raw mode...");try{process.stdin.setRawMode(!0),process.stdin.resume(),process.stdin.setEncoding("utf8"),this.logger.debug("Stdin raw mode enabled successfully")}catch(e){this.logger.error("Failed to set stdin raw mode:",e);return}this.logger.debug("Setting up stdin data handler..."),process.stdin.on("data",e=>{try{if(this.logger.debug("=== STDIN DATA RECEIVED ==="),e==="")if(this.handleCtrlC()){this.logger.debug("Double Ctrl+C detected, exiting agent"),this.onExit(e);return}else{this.logger.debug("First Ctrl+C detected, forwarding to Claude to clear input"),this.onData(e);return}if(e===""){this.logger.debug("Received Ctrl+D (EOF), exiting agent"),this.onExit(e);return}this.logger.debug(`Forwarding stdin data: ${JSON.stringify(e)} (length: ${e.length}, chars: ${e.split("").map(o=>o.charCodeAt(0)).join(",")})`),e.length===1&&e.charCodeAt(0)>=32&&e.charCodeAt(0)<=126?this.logger.debug("Normal typing character detected"):e==="\r"||e===`
62
62
  `||e===`\r
63
63
  `?this.logger.debug("Enter key detected"):e===" "?this.logger.debug("Tab key detected"):e==="\b"||e===""?this.logger.debug("Backspace detected"):this.logger.debug(`Special character detected (code: ${e.charCodeAt(0)})`),this.logger.debug("About to call onData..."),this.onData(e),this.logger.debug("onData call completed")}catch(n){this.logger.error("Error handling stdin data:",n)}}),process.stdin.on("error",e=>{this.logger.error("Stdin error:",e)}),process.stdin.on("end",()=>{this.logger.info("Stdin ended")}),this.logger.info("Stdin forwarding enabled for fullscreen agent")}restore(){this.logger.info("Restoring stdio handler to terminal...");try{this.ctrlCTimeout&&(clearTimeout(this.ctrlCTimeout),this.ctrlCTimeout=null),this.ctrlCCount=0,process.stdin.isTTY&&(process.stdin.removeAllListeners("data"),process.stdin.removeAllListeners("error"),process.stdin.removeAllListeners("end"),process.stdin.setRawMode(!1),process.stdin.pause()),this.logger.info("Stdio handler restored to terminal successfully")}catch(e){throw this.logger.error("Error restoring stdio handler:",e),e}}}class Ge extends Kr.EventEmitter{logger;isShuttingDown=!1;activeTerminations=new Map;callbacks={};constructor(e){super(),this.logger=e??new D.Logger({verbose:!1})}registerCallbacks(e){this.callbacks={...this.callbacks,...e}}async handleAgentSigint(e){this.logger.info(`Agent ${e} received SIGINT (Ctrl+C), stopping agent only`);const n={agentSessionId:e,reason:"agent_sigint",signal:"SIGINT"},r=this.activeTerminations.get(e);if(r)return this.logger.debug(`Termination already in progress for agent ${e}`),r;const s=this.performAgentSigintTermination(n);this.activeTerminations.set(e,s);try{await s}finally{this.activeTerminations.delete(e)}}async performAgentSigintTermination(e){try{this.emit("agent:sigint",e),this.callbacks.onAgentSigint&&await this.callbacks.onAgentSigint(e),this.emit("agent:cleanup",e),this.callbacks.onAgentTerminated&&await this.callbacks.onAgentTerminated(e)}catch(n){throw this.logger.error(`Error handling agent SIGINT: ${n}`),n}}async handlePtyTermination(e){const{agentSessionId:n,exitCode:r,signal:s}=e;this.logger.info(`PTY terminated naturally for session agent ${n}. Exit code: ${r}, Signal: ${s}`);const i=this.activeTerminations.get(n);if(i)return this.logger.debug(`Termination already in progress for agent ${n}`),i;const o=this.performPtyTermination(e);this.activeTerminations.set(n,o);try{await o}finally{this.activeTerminations.delete(n)}}async performPtyTermination(e){try{this.emit("pty:terminated",e),this.callbacks.onPtyTerminated&&await this.callbacks.onPtyTerminated(e),e.reason==="natural"&&(this.emit("agent:cleanup",e),this.callbacks.onAgentTerminated&&await this.callbacks.onAgentTerminated(e))}catch(n){throw this.logger.error(`Error handling PTY termination: ${n}`),n}}async terminateAgent(e,n={}){const{force:r=!1,timeout:s=5e3}=n;this.logger.info(`Terminating agent ${e} for session force: ${r}`);const i={agentSessionId:e,reason:"user_requested"},o=this.activeTerminations.get(e);if(o)return this.logger.debug(`Termination already in progress for agent ${e}`),o;const a=this.performAgentTermination(i,{force:r,timeout:s});this.activeTerminations.set(e,a);try{await a}finally{this.activeTerminations.delete(e)}}async performAgentTermination(e,n){const{force:r,timeout:s}=n;try{this.emit("agent:terminating",e);const i=new Promise((a,l)=>{setTimeout(()=>l(new Error(`Termination timeout for agent ${e.agentSessionId}`)),s)}),o=new Promise(a=>{const l=f=>{f.agentSessionId===e.agentSessionId&&(this.off("agent:terminated",l),a())};this.on("agent:terminated",l)});try{await Promise.race([o,i]),this.logger.info(`Agent ${e.agentSessionId} terminated gracefully`)}catch(a){if(r)this.logger.warn(`Forcefully terminating agent ${e.agentSessionId} after timeout`),this.emit("agent:force-terminate",e);else throw a}this.callbacks.onAgentTerminated&&await this.callbacks.onAgentTerminated(e)}catch(i){throw this.logger.error(`Error terminating agent: ${i}`),i}}async shutdownDaemon(e){if(this.isShuttingDown){this.logger.debug("Daemon shutdown already in progress");return}this.isShuttingDown=!0,this.logger.info("Initiating daemon shutdown, terminating all agents...");try{this.callbacks.onDaemonTerminating&&await this.callbacks.onDaemonTerminating(),this.emit("daemon:shutting-down");const n=e.map(r=>this.terminateAgent(r,{force:!0,timeout:3e3}).catch(s=>{this.logger.error(`Failed to terminate agent ${r}: ${s}`)}));await Promise.allSettled(n),this.logger.info("All agents terminated, daemon can now exit"),this.emit("daemon:shutdown-complete")}catch(n){throw this.logger.error(`Error during daemon shutdown: ${n}`),n}finally{this.isShuttingDown=!1}}isShuttingDownNow(){return this.isShuttingDown}async waitForActiveTerminations(){this.activeTerminations.size!==0&&(this.logger.info(`Waiting for ${this.activeTerminations.size} active terminations to complete...`),await Promise.allSettled(this.activeTerminations.values()),this.logger.info("All active terminations completed"))}cleanup(){this.removeAllListeners(),this.activeTerminations.clear(),this.callbacks={}}}class kr{agentType;serverUrl;apiUrl;apiKey;verbose;organizationId;standalone;logger;credentialsService;terminationService;onFullscreenChange;wsService;httpService;ptyRunner;agentInfo=null;ptySessionId=null;xtermEnabled=!1;stdinForwarding=null;isFullscreen=!1;stdoutBuffer="";stdoutThrottleTimer=null;lastStdoutSent=0;STDOUT_THROTTLE_MS=500;STDOUT_BUFFER_LIMIT=64*1024;backgroundOutputBuffer=[];BACKGROUND_BUFFER_SIZE=10;BACKGROUND_CHUNK_MAX_SIZE=2048;constructor(e){this.agentType=e.agentType,this.serverUrl=e.serverUrl,this.apiUrl=e.apiUrl,this.apiKey=e.apiKey,this.verbose=e.verbose??!1,this.organizationId=e.organizationId,this.standalone=e.standalone??!1,this.logger=e.logger??new D.Logger({verbose:this.verbose}),this.credentialsService=e.credentialsService??new D.CredentialsService,this.terminationService=e.terminationService??new Ge(this.logger),this.onFullscreenChange=e.onFullscreenChange,this.ptyRunner=new uh(this.logger);const n={serverUrl:e.serverUrl,apiKey:e.apiKey,verbose:e.verbose,organizationId:e.organizationId,credentialsService:this.credentialsService,logger:this.logger},r={onStatusRequest:i=>this.handleStatusRequest(i),onMessageInput:i=>this.handleMessageInput(i),onStdinInput:i=>this.handleStdinInput(i),onResizeRequest:i=>this.handleResizeRequest(i),onDirectControl:i=>this.handleDirectControl(i),onConnect:()=>this.onWebSocketConnect(),onDisconnect:(i,o)=>this.onWebSocketDisconnect(i,o),onError:i=>this.onWebSocketError(i)};this.wsService=new ah(n,r);const s=Sr();this.httpService=new D.AgentHttpService({apiUrl:this.apiUrl||s,organizationId:this.organizationId,apiKey:this.apiKey,logger:this.logger}),this.standalone&&this.initializeStdinForwarding()}initializeStdinForwarding(){this.stdinForwarding=new Tr({logger:this.logger,onData:e=>{this.logger.debug(`StdinForwarding received data: ${JSON.stringify(e)}`),this.sendInputToPty(e)},onExit:e=>{this.logger.info(`StdinForwarding received exit signal: ${e}`),this.disconnect(),process.exit(0)}})}async connectToSession(e){await this.wsService.connect(e),this.wsService.sendAgentStatus({agentType:this.agentType,status:V.IDLE,message:`${this.agentType} agent connected`})}disconnect(){if(this.standalone&&this.stdinForwarding)try{this.stdinForwarding.restore(),this.stdinForwarding=null}catch(e){this.logger.error("Error restoring stdin forwarding:",e)}this.flushStdoutBuffer(),this.stdoutThrottleTimer&&(clearTimeout(this.stdoutThrottleTimer),this.stdoutThrottleTimer=null),this.ptySessionId&&(this.logger.info(`Terminating PTY session: ${this.ptySessionId}`),this.ptyRunner.kill(),this.ptySessionId=null),this.wsService.disconnect(),this.agentInfo=null}onWebSocketConnect(){this.logger.debug(`WebSocket connected for ${this.agentType} agent`)}onWebSocketDisconnect(e,n){this.logger.debug(`WebSocket disconnected for ${this.agentType} agent (${e}): ${n}`)}onWebSocketError(e){this.logger.error(`WebSocket error for ${this.agentType} agent: ${e.message}`)}async handleStatusRequest(e){this.logger.debug(`Handling status request for session: ${e.payload.sessionId}`);try{try{this.wsService.getCurrentSessionId()!==e.payload.sessionId&&(this.wsService.setCurrentSessionId(e.payload.sessionId),this.logger.debug(`Set current session ID to: ${e.payload.sessionId}`))}catch{this.wsService.setCurrentSessionId(e.payload.sessionId),this.logger.debug(`Set current session ID to: ${e.payload.sessionId}`)}let n=V.IDLE,r=`${this.agentType} agent is idle`;this.agentInfo&&this.agentInfo.agentSessionId===e.payload.sessionId?(n=this.agentInfo.status,n===V.IDLE?r=`${this.agentType} agent is running`:n===V.STARTING?r=`${this.agentType} agent is starting`:n===V.ERROR?r=`${this.agentType} agent encountered an error`:n===V.STOPPED&&(r=`${this.agentType} agent is stopped`)):(this.logger.debug(`No active agent process for session ${e.payload.sessionId}, but daemon is ready`),r=`${this.agentType} daemon ready, agent not launched`),e.payload.fullscreen===!0&&(this.logger.debug("Status request includes fullscreen=true, enabling fullscreen mode"),this.setFullscreen(!0)),this.wsService.sendAgentStatus({agentType:this.agentType,status:n,message:r,pid:this.agentInfo?.process?.pid||process.pid,version:await this.getVersion()||void 0,capabilities:["chat","code-editing","file-operations"]})}catch(n){this.wsService.sendAgentError({code:"STATUS_FAILED",message:`Status request failed: ${n.message}`,details:{error:n.toString()}})}}async handleMessageInput(e){this.logger.debug(`Handling message input: ${e.payload.content}`);const n=e.payload.content;if(this.sendInputToPty("\x1B[I"),this.agentType.toLowerCase().includes(Y.GEMINI_CLI)){this.logger.debug("Gemini agent detected - pasting content with newline");for(const s of[" "," "])await new Promise(i=>{setTimeout(()=>{this.sendInputToPty(s),i(null)},150)});await new Promise(s=>{setTimeout(()=>{this.sendInputToPty(`${n}
64
64
  `),s(null)},150)}),await new Promise(s=>{setTimeout(()=>{this.sendInputToPty("\r"),s(null)},150)})}else this.sendInputToPty(n),setTimeout(()=>{this.sendInputToPty("\r")},50)}async handleStdinInput(e){if(!this.xtermEnabled){this.logger.debug("Stdin input received but xterm is not enabled, ignoring");return}this.logger.debug(`Handling stdin input: ${e.payload.data}`),this.sendInputToPty(e.payload.data)}async handleResizeRequest(e){if(this.logger.info(`🖥️ Resize request received: ${e.payload.cols}x${e.payload.rows}, xterm enabled: ${this.xtermEnabled}`),!this.xtermEnabled){this.logger.warn("Resize request received but xterm is not enabled, ignoring");return}this.setFullscreen(!0),this.resizePty(e.payload.cols,e.payload.rows),setTimeout(()=>{this.sendBackgroundBuffer()},1e3),this.logger.info(`✅ PTY resized to ${e.payload.cols}x${e.payload.rows}`)}async handleDirectControl(e){this.logger.debug(`Handling direct control request: ${e.payload.controlType} - data: ${JSON.stringify(e.payload.data)}`);try{this.sendInputToPty(e.payload.data),this.logger.debug(`Direct control signal sent to PTY: ${e.payload.controlType}`)}catch(n){this.logger.error(`Failed to send direct control signal to PTY: ${n}`)}}sendStdoutEvent(e){if(!this.xtermEnabled||!this.agentInfo||(this.addToBackgroundBuffer(e),!this.isFullscreen))return;if(this.stdoutBuffer+=e,this.stdoutBuffer.length>this.STDOUT_BUFFER_LIMIT){this.logger.debug(`📦 Stdout buffer limit exceeded (${this.stdoutBuffer.length} chars), flushing immediately`),this.flushStdoutBuffer();return}const r=Date.now()-this.lastStdoutSent;if(r>=this.STDOUT_THROTTLE_MS)this.flushStdoutBuffer();else if(!this.stdoutThrottleTimer){const s=this.STDOUT_THROTTLE_MS-r;this.stdoutThrottleTimer=setTimeout(()=>{this.flushStdoutBuffer()},s)}}flushStdoutBuffer(){if(this.stdoutBuffer)try{this.wsService.sendStdoutMessage(this.stdoutBuffer),this.lastStdoutSent=Date.now(),this.logger.debug(`📤 Stdout buffer flushed: ${this.stdoutBuffer.length} chars`),this.stdoutBuffer="",this.stdoutThrottleTimer&&(clearTimeout(this.stdoutThrottleTimer),this.stdoutThrottleTimer=null)}catch(e){this.logger.error("Failed to send stdout event:",e)}}addToBackgroundBuffer(e){const n=e.length>this.BACKGROUND_CHUNK_MAX_SIZE?e.substring(e.length-this.BACKGROUND_CHUNK_MAX_SIZE):e;this.backgroundOutputBuffer.push(n),this.backgroundOutputBuffer.length>this.BACKGROUND_BUFFER_SIZE&&this.backgroundOutputBuffer.shift(),this.logger.debug(`📦 Added ${n.length} chars to background buffer (${this.backgroundOutputBuffer.length}/${this.BACKGROUND_BUFFER_SIZE} chunks)`)}sendBackgroundBuffer(){if(this.backgroundOutputBuffer.length===0)return;this.logger.debug(`📤 Sending background buffer: ${this.backgroundOutputBuffer.length} chunks`);const e=this.backgroundOutputBuffer.join("");if(e)try{this.wsService.sendStdoutMessage(e),this.logger.debug(`📤 Background buffer sent: ${e.length} chars`)}catch(n){this.logger.error("Failed to send background buffer:",n)}}setXtermEnabled(e){this.xtermEnabled=e,this.logger.debug(`Xterm functionality ${e?"enabled":"disabled"}`)}setFullscreen(e,n=!1){const r=this.isFullscreen;this.isFullscreen=e,this.logger.debug(`Agent fullscreen mode ${e?"enabled":"disabled"}`),e&&!r&&this.xtermEnabled&&this.agentInfo&&this.sendBackgroundBuffer(),!n&&r!==e&&this.agentInfo&&this.onFullscreenChange&&this.onFullscreenChange(this.agentInfo.agentSessionId,e)}getFullscreen(){return this.isFullscreen}sendAgentStatus(e){this.wsService.sendAgentStatus(e)}sendAgentOutput(e){this.wsService.sendAgentOutput(e)}sendAgentError(e){this.wsService.sendAgentError(e)}getAgentInfo(){return this.agentInfo}sendInputToPty(e){this.ptyRunner.sendInput(e)}setAgentInfo(e){if(this.agentInfo=e,e.agentSessionId)try{this.wsService.setCurrentSessionId(e.agentSessionId)}catch{}}getAgentEnvironmentVariables(){const e={};for(const[n,r]of Object.entries(process.env))r!==void 0&&(e[n]=r);return this.apiKey&&(e[D.ENV_KEYS.AGENT_API_KEY]=this.apiKey),this.organizationId&&(e[D.ENV_KEYS.AGENT_ORGANIZATION_ID]=this.organizationId),this.serverUrl&&(e[D.ENV_KEYS.AGENT_SERVER_URL]=this.serverUrl),e[D.ENV_KEYS.AGENT_TYPE]=this.agentType,e[D.ENV_KEYS.VERBOSE]=this.verbose?"true":"false",e}configureNodeOptions(e){let n=null;const r=C.join(__dirname,"networkLog.js"),s=C.join(__dirname,"networkLog.ts"),i=C.join(__dirname,"..","networkLog.js"),o=C.join(__dirname,"..","networkLog.ts");k.existsSync(r)?n=r:k.existsSync(s)?n=s:k.existsSync(i)?n=i:k.existsSync(o)&&(n=o);let l=e["NODE_OPTIONS"]||"";return this.logger.debug("Network logging hook configuration:",{sameDirJs:r,sameDirTs:s,parentDirJs:i,parentDirTs:o,foundPath:n,existingNodeOptions:l,alreadyIncludes:l.includes("networkLog")}),n&&!l.includes("networkLog")?(l=`${l} --require ${n}`.trim(),this.logger.debug(`Network logging hook added to NODE_OPTIONS: ${n}`)):n?this.logger.debug("Network logging hook already included in NODE_OPTIONS"):this.logger.warn("Network logging hook not found at any expected location"),this.logger.debug(`Final NODE_OPTIONS: ${l}`),l}async sendInputToAgent(e){this.ptyRunner.sendInput(e)||this.logger.warn("Failed to send input to PTY session")}resizePty(e,n){this.ptyRunner.resize(e,n)}async executePreAgentStartHooks(e,n,r){const i=new It({targetDirectory:n,logger:this.logger}).getDefaultPreAgentHooks(e);if(!i||i.length===0){this.logger.debug("No pre-agent start hooks to execute");return}this.logger.info(`Executing ${i.length} pre-agent start hook(s) in ${n}`);const o=[];for(let a=0;a<i.length;a++){const l=i[a];this.logger.info(`[${a+1}/${i.length}] Executing hook: ${l}`);let f;if(r)try{f=(await this.httpService.startMessage(r,{messageType:"output",metadata:{hookIndex:a+1,totalHooks:i.length,command:l,status:"running"}})).id}catch(m){this.logger.debug("Failed to start hook message:",m)}try{const{spawn:m}=await import("child_process"),E=await new Promise(p=>{const _=m(l,{cwd:n,shell:!0,stdio:["pipe","pipe","pipe"]});let T="",u="";_.stdout?.on("data",c=>{const h=c.toString();T+=h,this.logger.debug(`[Hook stdout] ${h.trim()}`)}),_.stderr?.on("data",c=>{const h=c.toString();u+=h,this.logger.warn(`[Hook stderr] ${h.trim()}`)}),_.on("close",c=>{if(c===0)this.logger.success(`Hook completed successfully: ${l}`),T.trim()&&this.logger.debug(`Hook stdout: ${T.trim()}`),p({success:!0,stdout:T.trim()});else{this.logger.error(`Hook failed with exit code ${c}: ${l}`),T.trim()&&this.logger.error(`Hook stdout (full output): ${T.trim()}`),u.trim()&&this.logger.error(`Hook stderr (full error): ${u.trim()}`);const h=[];u.trim()&&h.push(`stderr: ${u.trim()}`),T.trim()&&h.push(`stdout: ${T.trim()}`);const d=h.length>0?`Hook failed with exit code ${c}. ${h.join(" | ")}`:`Hook failed with exit code ${c}`;p({success:!1,error:d,stderr:u.trim()||T.trim()||void 0})}}),_.on("error",c=>{this.logger.error(`Hook execution error: ${l}`,c),p({success:!1,error:c.message})})});if(r&&f)try{const p=E.success?"completed":"failed",_=E.success?`✅ Hook completed: ${l}`:`❌ Hook failed: ${l}
@@ -126,4 +126,4 @@ The workspace is created but may require manual setup.`,metadata:{eventType:"wor
126
126
  Authentication cancelled`),process.exit(0)):(this.error(`Authentication failed: ${m}`),process.exit(1))}const a=new vh({serverUrl:n,apiUrl:r,authToken:o.api_key,organizationId:o.organization_id,verbose:e.verbose,reconnectInterval:s,stableDeviceId:!e.uniqueInstance,options:{clientId:"agiflow-cli-daemon",baseUrl:r,verbose:e.verbose}}),l=async f=>{console.log(`
127
127
  📡 Received ${f}, initiating graceful shutdown...`);try{await a.stop()}catch(m){this.error(`Error during shutdown: ${m}`),process.exit(1)}};process.on("SIGINT",()=>l("SIGINT")),process.on("SIGTERM",()=>l("SIGTERM")),process.on("SIGHUP",()=>l("SIGHUP"));try{await a.start();const f=a.getStats();this.success("Agiflow Daemon connected successfully"),this.info(`🆔 Daemon ID: ${f.daemonId}`),this.info(`💻 Device GUID: ${f.deviceGuid}`),this.info(`Press Ctrl+C to disconnect
128
128
  `)}catch(f){this.error(`Failed to connect daemon: ${f}`),process.exit(1)}}}class Nr extends it{register(e){e.command("logout").description("Log out and clean up stored credentials").option("-v, --verbose","Enable verbose logging").option("--remove-all","Remove entire .agiflow directory (default: remove only credential files)").action(async n=>{try{await this.execute(n)}catch(r){this.handleError(r)}})}async execute(e){e.verbose&&console.log("🔐 Logging out and cleaning up credentials...");try{if(!await D.FileSystemUtils.exists(D.FileSystemUtils.AGIFLOW_DIR)){this.info("No stored credentials found. You are already logged out.");return}if(e.removeAll)await D.FileSystemUtils.remove(D.FileSystemUtils.AGIFLOW_DIR),e.verbose&&this.info(`Removed entire directory: ${D.FileSystemUtils.AGIFLOW_DIR}`),this.success("Successfully logged out and removed all Agiflow configuration");else{const r=["api-key.json","credentials.json"];let s=0;for(const i of r){const o=require("path").join(D.FileSystemUtils.AGIFLOW_DIR,i);await D.FileSystemUtils.exists(o)&&(await D.FileSystemUtils.remove(o),s++,e.verbose&&this.info(`Removed: ${i}`))}s===0?this.info("No credential files found. You are already logged out."):this.success(`Successfully logged out and removed ${s} credential file(s)`)}}catch(n){const r=n instanceof Error?n.message:String(n);this.error(`Failed to clean up credentials: ${r}`),process.exit(1)}}}Rn.config();async function _h(){const t=new as;t.name("agiflow").description("@agiflowai/agent-cli").option("-v, --verbose","enable verbose logging").option("--debug","enable debug mode");const e=new Or;"register"in e&&typeof e.register=="function"?e.register(t):t.command("claude").description("Launch Claude Code agent").action(async()=>{await e.run?.([])});const n=new Rr;"register"in n&&typeof n.register=="function"?n.register(t):t.command("connect").description("Connect agent").action(async()=>{await n.run?.([])});const r=new Nr;"register"in r&&typeof r.register=="function"?r.register(t):t.command("logout").description("Logout and clean up credentials").action(async()=>{await r.run?.([])});try{await t.parseAsync(process.argv)}catch(s){console.error("[cli] error",s.message),t.opts().debug&&s instanceof Error&&console.error(s.stack),process.exit(1)}}_h();exports.BaseCommand=it;exports.ClaudeCommand=Or;exports.ConfigSchema=Fr;exports.ConnectCommand=Rr;exports.DaemonHttpService=xr;exports.DaemonWsService=Pr;exports.DeviceCodeAuthService=zt;exports.LogoutCommand=Nr;exports.config=ae;exports.createHeartbeat=Ar;exports.generateDeviceId=wr;exports.getServerUrl=Sr;exports.getSystemInfo=Cr;exports.getWebSocketUrl=ih;exports.httpToWebSocket=oh;exports.webSocketToHttp=br;
129
- //# sourceMappingURL=cli-C9n9uE4j.js.map
129
+ //# sourceMappingURL=cli-CUdEH93F.js.map