@linzumi/cli 1.0.133 → 1.0.135
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/impl-res/index.js +1 -1
- package/dist/impl-ts/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/impl-res/index.js
CHANGED
|
@@ -320,7 +320,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
320
320
|
]`;continue}i+=n[l],n[l]==="\\"?o=!0:s&&n[l]==="]"?s=!1:!s&&n[l]==="["&&(s=!0)}try{new RegExp(i)}catch{return console.warn(`Could not convert regex pattern at ${t.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),e.source}return i}function Wc(e,t){if(t.target==="openAi"&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),t.target==="openApi3"&&e.keyType?._def.typeName===D.ZodEnum)return{type:"object",required:e.keyType._def.values,properties:e.keyType._def.values.reduce((n,i)=>({...n,[i]:Te(e.valueType._def,{...t,currentPath:[...t.currentPath,"properties",i]})??Bt(t)}),{}),additionalProperties:t.rejectedAdditionalProperties};let r={type:"object",additionalProperties:Te(e.valueType._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]})??t.allowedAdditionalProperties};if(t.target==="openApi3")return r;if(e.keyType?._def.typeName===D.ZodString&&e.keyType._def.checks?.length){let{type:n,...i}=Vc(e.keyType._def,t);return{...r,propertyNames:i}}else{if(e.keyType?._def.typeName===D.ZodEnum)return{...r,propertyNames:{enum:e.keyType._def.values}};if(e.keyType?._def.typeName===D.ZodBranded&&e.keyType._def.type._def.typeName===D.ZodString&&e.keyType._def.type._def.checks?.length){let{type:n,...i}=Zc(e.keyType._def,t);return{...r,propertyNames:i}}}return r}function Ok(e,t){if(t.mapStrategy==="record")return Wc(e,t);let r=Te(e.keyType._def,{...t,currentPath:[...t.currentPath,"items","items","0"]})||Bt(t),n=Te(e.valueType._def,{...t,currentPath:[...t.currentPath,"items","items","1"]})||Bt(t);return{type:"array",maxItems:125,items:{type:"array",items:[r,n],minItems:2,maxItems:2}}}function Ak(e){let t=e.values,n=Object.keys(e.values).filter(o=>typeof t[t[o]]!="number").map(o=>t[o]),i=Array.from(new Set(n.map(o=>typeof o)));return{type:i.length===1?i[0]==="string"?"string":"number":["string","number"],enum:n}}function Ck(e){return e.target==="openAi"?void 0:{not:Bt({...e,currentPath:[...e.currentPath,"not"]})}}function Ek(e){return e.target==="openApi3"?{enum:["null"],nullable:!0}:{type:"null"}}var ed={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function $k(e,t){if(t.target==="openApi3")return Pk(e,t);let r=e.options instanceof Map?Array.from(e.options.values()):e.options;if(r.every(n=>n._def.typeName in ed&&(!n._def.checks||!n._def.checks.length))){let n=r.reduce((i,o)=>{let s=ed[o._def.typeName];return s&&!i.includes(s)?[...i,s]:i},[]);return{type:n.length>1?n:n[0]}}else if(r.every(n=>n._def.typeName==="ZodLiteral"&&!n.description)){let n=r.reduce((i,o)=>{let s=typeof o._def.value;switch(s){case"string":case"number":case"boolean":return[...i,s];case"bigint":return[...i,"integer"];case"object":if(o._def.value===null)return[...i,"null"];default:return i}},[]);if(n.length===r.length){let i=n.filter((o,s,a)=>a.indexOf(o)===s);return{type:i.length>1?i:i[0],enum:r.reduce((o,s)=>o.includes(s._def.value)?o:[...o,s._def.value],[])}}}else if(r.every(n=>n._def.typeName==="ZodEnum"))return{type:"string",enum:r.reduce((n,i)=>[...n,...i._def.values.filter(o=>!n.includes(o))],[])};return Pk(e,t)}var Pk=(e,t)=>{let r=(e.options instanceof Map?Array.from(e.options.values()):e.options).map((n,i)=>Te(n._def,{...t,currentPath:[...t.currentPath,"anyOf",`${i}`]})).filter(n=>!!n&&(!t.strictUnions||typeof n=="object"&&Object.keys(n).length>0));return r.length?{anyOf:r}:void 0};function Rk(e,t){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(e.innerType._def.typeName)&&(!e.innerType._def.checks||!e.innerType._def.checks.length))return t.target==="openApi3"?{type:ed[e.innerType._def.typeName],nullable:!0}:{type:[ed[e.innerType._def.typeName],"null"]};if(t.target==="openApi3"){let n=Te(e.innerType._def,{...t,currentPath:[...t.currentPath]});return n&&"$ref"in n?{allOf:[n],nullable:!0}:n&&{...n,nullable:!0}}let r=Te(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","0"]});return r&&{anyOf:[r,{type:"null"}]}}function Ik(e,t){let r={type:"number"};if(!e.checks)return r;for(let n of e.checks)switch(n.kind){case"int":r.type="integer",B_(r,"type",n.message,t);break;case"min":t.target==="jsonSchema7"?n.inclusive?at(r,"minimum",n.value,n.message,t):at(r,"exclusiveMinimum",n.value,n.message,t):(n.inclusive||(r.exclusiveMinimum=!0),at(r,"minimum",n.value,n.message,t));break;case"max":t.target==="jsonSchema7"?n.inclusive?at(r,"maximum",n.value,n.message,t):at(r,"exclusiveMaximum",n.value,n.message,t):(n.inclusive||(r.exclusiveMaximum=!0),at(r,"maximum",n.value,n.message,t));break;case"multipleOf":at(r,"multipleOf",n.value,n.message,t);break}return r}function Mk(e,t){let r=t.target==="openAi",n={type:"object",properties:{}},i=[],o=e.shape();for(let a in o){let l=o[a];if(l===void 0||l._def===void 0)continue;let d=HN(l);d&&r&&(l._def.typeName==="ZodOptional"&&(l=l._def.innerType),l.isNullable()||(l=l.nullable()),d=!1);let u=Te(l._def,{...t,currentPath:[...t.currentPath,"properties",a],propertyPath:[...t.currentPath,"properties",a]});u!==void 0&&(n.properties[a]=u,d||i.push(a))}i.length&&(n.required=i);let s=WN(e,t);return s!==void 0&&(n.additionalProperties=s),n}function WN(e,t){if(e.catchall._def.typeName!=="ZodNever")return Te(e.catchall._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]});switch(e.unknownKeys){case"passthrough":return t.allowedAdditionalProperties;case"strict":return t.rejectedAdditionalProperties;case"strip":return t.removeAdditionalStrategy==="strict"?t.allowedAdditionalProperties:t.rejectedAdditionalProperties}}function HN(e){try{return e.isOptional()}catch{return!0}}var zk=(e,t)=>{if(t.currentPath.toString()===t.propertyPath?.toString())return Te(e.innerType._def,t);let r=Te(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","1"]});return r?{anyOf:[{not:Bt(t)},r]}:Bt(t)};var jk=(e,t)=>{if(t.pipeStrategy==="input")return Te(e.in._def,t);if(t.pipeStrategy==="output")return Te(e.out._def,t);let r=Te(e.in._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),n=Te(e.out._def,{...t,currentPath:[...t.currentPath,"allOf",r?"1":"0"]});return{allOf:[r,n].filter(i=>i!==void 0)}};function Nk(e,t){return Te(e.type._def,t)}function Fk(e,t){let n={type:"array",uniqueItems:!0,items:Te(e.valueType._def,{...t,currentPath:[...t.currentPath,"items"]})};return e.minSize&&at(n,"minItems",e.minSize.value,e.minSize.message,t),e.maxSize&&at(n,"maxItems",e.maxSize.value,e.maxSize.message,t),n}function Gk(e,t){return e.rest?{type:"array",minItems:e.items.length,items:e.items.map((r,n)=>Te(r._def,{...t,currentPath:[...t.currentPath,"items",`${n}`]})).reduce((r,n)=>n===void 0?r:[...r,n],[]),additionalItems:Te(e.rest._def,{...t,currentPath:[...t.currentPath,"additionalItems"]})}:{type:"array",minItems:e.items.length,maxItems:e.items.length,items:e.items.map((r,n)=>Te(r._def,{...t,currentPath:[...t.currentPath,"items",`${n}`]})).reduce((r,n)=>n===void 0?r:[...r,n],[])}}function qk(e){return{not:Bt(e)}}function Dk(e){return Bt(e)}var Lk=(e,t)=>Te(e.innerType._def,t);var Uk=(e,t,r)=>{switch(t){case D.ZodString:return Vc(e,r);case D.ZodNumber:return Ik(e,r);case D.ZodObject:return Mk(e,r);case D.ZodBigInt:return gk(e,r);case D.ZodBoolean:return yk();case D.ZodDate:return J_(e,r);case D.ZodUndefined:return qk(r);case D.ZodNull:return Ek(r);case D.ZodArray:return _k(e,r);case D.ZodUnion:case D.ZodDiscriminatedUnion:return $k(e,r);case D.ZodIntersection:return xk(e,r);case D.ZodTuple:return Gk(e,r);case D.ZodRecord:return Wc(e,r);case D.ZodLiteral:return kk(e,r);case D.ZodEnum:return wk(e);case D.ZodNativeEnum:return Ak(e);case D.ZodNullable:return Rk(e,r);case D.ZodOptional:return zk(e,r);case D.ZodMap:return Ok(e,r);case D.ZodSet:return Fk(e,r);case D.ZodLazy:return()=>e.getter()._def;case D.ZodPromise:return Nk(e,r);case D.ZodNaN:case D.ZodNever:return Ck(r);case D.ZodEffects:return Sk(e,r);case D.ZodAny:return Bt(r);case D.ZodUnknown:return Dk(r);case D.ZodDefault:return vk(e,r);case D.ZodBranded:return Zc(e,r);case D.ZodReadonly:return Lk(e,r);case D.ZodCatch:return bk(e,r);case D.ZodPipeline:return jk(e,r);case D.ZodFunction:case D.ZodVoid:case D.ZodSymbol:return;default:return(n=>{})(t)}};function Te(e,t,r=!1){let n=t.seen.get(e);if(t.override){let a=t.override?.(e,t,n,r);if(a!==mk)return a}if(n&&!r){let a=KN(n,t);if(a!==void 0)return a}let i={def:e,path:t.currentPath,jsonSchema:void 0};t.seen.set(e,i);let o=Uk(e,e.typeName,t),s=typeof o=="function"?Te(o(),t):o;if(s&&BN(e,t,s),t.postProcess){let a=t.postProcess(s,e,t);return i.jsonSchema=s,a}return i.jsonSchema=s,s}var KN=(e,t)=>{switch(t.$refStrategy){case"root":return{$ref:e.path.join("/")};case"relative":return{$ref:Uc(t.currentPath,e.path)};case"none":case"seen":return e.path.length<t.currentPath.length&&e.path.every((r,n)=>t.currentPath[n]===r)?(console.warn(`Recursive reference detected at ${t.currentPath.join("/")}! Defaulting to any`),Bt(t)):t.$refStrategy==="seen"?Bt(t):void 0}},BN=(e,t,r)=>(e.description&&(r.description=e.description,t.markdownDescription&&(r.markdownDescription=e.description)),r);var Y_=(e,t)=>{let r=hk(t),n=typeof t=="object"&&t.definitions?Object.entries(t.definitions).reduce((l,[d,u])=>({...l,[d]:Te(u._def,{...r,currentPath:[...r.basePath,r.definitionPath,d]},!0)??Bt(r)}),{}):void 0,i=typeof t=="string"?t:t?.nameStrategy==="title"?void 0:t?.name,o=Te(e._def,i===void 0?r:{...r,currentPath:[...r.basePath,r.definitionPath,i]},!1)??Bt(r),s=typeof t=="object"&&t.name!==void 0&&t.nameStrategy==="title"?t.name:void 0;s!==void 0&&(o.title=s),r.flags.hasReferencedOpenAiAnyType&&(n||(n={}),n[r.openAiAnyTypeName]||(n[r.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:r.$refStrategy==="relative"?"1":[...r.basePath,r.definitionPath,r.openAiAnyTypeName].join("/")}}));let a=i===void 0?n?{...o,[r.definitionPath]:n}:o:{$ref:[...r.$refStrategy==="relative"?[]:r.basePath,r.definitionPath,i].join("/"),[r.definitionPath]:{...n,[i]:o}};return r.target==="jsonSchema7"?a.$schema="http://json-schema.org/draft-07/schema#":(r.target==="jsonSchema2019-09"||r.target==="openAi")&&(a.$schema="https://json-schema.org/draft/2019-09/schema#"),r.target==="openAi"&&("anyOf"in a||"oneOf"in a||"allOf"in a||"type"in a&&Array.isArray(a.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),a};function JN(e){return!e||e==="jsonSchema7"||e==="draft-7"?"draft-7":e==="jsonSchema2019-09"||e==="draft-2020-12"?"draft-2020-12":"draft-7"}function eg(e,t){return Cn(e)?w_(e,{target:JN(t?.target),io:t?.pipeStrategy??"input"}):Y_(e,{strictUnions:t?.strictUnions??!0,pipeStrategy:t?.pipeStrategy??"input"})}function tg(e){let r=fo(e)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=Lc(r);if(typeof n!="string")throw new Error("Schema method literal must be a string");return n}function rg(e,t){let r=co(e,t);if(!r.success)throw r.error;return r.data}var QN=6e4,Hc=class{constructor(t){this._options=t,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(Tc,r=>{this._oncancel(r)}),this.setNotificationHandler(Ac,r=>{this._onprogress(r)}),this.setRequestHandler(Oc,r=>({})),this._taskStore=t?.taskStore,this._taskMessageQueue=t?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(Cc,async(r,n)=>{let i=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!i)throw new ce(ve.InvalidParams,"Failed to retrieve task: Task not found");return{...i}}),this.setRequestHandler(Pc,async(r,n)=>{let i=async()=>{let o=r.params.taskId;if(this._taskMessageQueue){let a;for(;a=await this._taskMessageQueue.dequeue(o,n.sessionId);){if(a.type==="response"||a.type==="error"){let l=a.message,d=l.id,u=this._requestResolvers.get(d);if(u)if(this._requestResolvers.delete(d),a.type==="response")u(l);else{let c=l,f=new ce(c.error.code,c.error.message,c.error.data);u(f)}else{let c=a.type==="response"?"Response":"Error";this._onerror(new Error(`${c} handler missing for request ${d}`))}continue}await this._transport?.send(a.message,{relatedRequestId:n.requestId})}}let s=await this._taskStore.getTask(o,n.sessionId);if(!s)throw new ce(ve.InvalidParams,`Task not found: ${o}`);if(!mo(s.status))return await this._waitForTaskUpdate(o,n.signal),await i();if(mo(s.status)){let a=await this._taskStore.getTaskResult(o,n.sessionId);return this._clearTaskQueue(o),{...a,_meta:{...a._meta,[uo]:{taskId:o}}}}return await i()};return await i()}),this.setRequestHandler($c,async(r,n)=>{try{let{tasks:i,nextCursor:o}=await this._taskStore.listTasks(r.params?.cursor,n.sessionId);return{tasks:i,nextCursor:o,_meta:{}}}catch(i){throw new ce(ve.InvalidParams,`Failed to list tasks: ${i instanceof Error?i.message:String(i)}`)}}),this.setRequestHandler(Ic,async(r,n)=>{try{let i=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!i)throw new ce(ve.InvalidParams,`Task not found: ${r.params.taskId}`);if(mo(i.status))throw new ce(ve.InvalidParams,`Cannot cancel task in terminal status: ${i.status}`);await this._taskStore.updateTaskStatus(r.params.taskId,"cancelled","Client cancelled task execution.",n.sessionId),this._clearTaskQueue(r.params.taskId);let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new ce(ve.InvalidParams,`Task not found after cancellation: ${r.params.taskId}`);return{_meta:{},...o}}catch(i){throw i instanceof ce?i:new ce(ve.InvalidRequest,`Failed to cancel task: ${i instanceof Error?i.message:String(i)}`)}}))}async _oncancel(t){if(!t.params.requestId)return;this._requestHandlerAbortControllers.get(t.params.requestId)?.abort(t.params.reason)}_setupTimeout(t,r,n,i,o=!1){this._timeoutInfo.set(t,{timeoutId:setTimeout(i,r),startTime:Date.now(),timeout:r,maxTotalTimeout:n,resetTimeoutOnProgress:o,onTimeout:i})}_resetTimeout(t){let r=this._timeoutInfo.get(t);if(!r)return!1;let n=Date.now()-r.startTime;if(r.maxTotalTimeout&&n>=r.maxTotalTimeout)throw this._timeoutInfo.delete(t),ce.fromError(ve.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:r.maxTotalTimeout,totalElapsed:n});return clearTimeout(r.timeoutId),r.timeoutId=setTimeout(r.onTimeout,r.timeout),!0}_cleanupTimeout(t){let r=this._timeoutInfo.get(t);r&&(clearTimeout(r.timeoutId),this._timeoutInfo.delete(t))}async connect(t){if(this._transport)throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=t;let r=this.transport?.onclose;this._transport.onclose=()=>{r?.(),this._onclose()};let n=this.transport?.onerror;this._transport.onerror=o=>{n?.(o),this._onerror(o)};let i=this._transport?.onmessage;this._transport.onmessage=(o,s)=>{i?.(o,s),Vl(o)||Yx(o)?this._onresponse(o):M_(o)?this._onrequest(o,s):Xx(o)?this._onnotification(o):this._onerror(new Error(`Unknown message type: ${JSON.stringify(o)}`))},await this._transport.start()}_onclose(){let t=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let n of this._timeoutInfo.values())clearTimeout(n.timeoutId);this._timeoutInfo.clear();for(let n of this._requestHandlerAbortControllers.values())n.abort();this._requestHandlerAbortControllers.clear();let r=ce.fromError(ve.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(let n of t.values())n(r)}_onerror(t){this.onerror?.(t)}_onnotification(t){let r=this._notificationHandlers.get(t.method)??this.fallbackNotificationHandler;r!==void 0&&Promise.resolve().then(()=>r(t)).catch(n=>this._onerror(new Error(`Uncaught error in notification handler: ${n}`)))}_onrequest(t,r){let n=this._requestHandlers.get(t.method)??this.fallbackRequestHandler,i=this._transport,o=t.params?._meta?.[uo]?.taskId;if(n===void 0){let u={jsonrpc:"2.0",id:t.id,error:{code:ve.MethodNotFound,message:"Method not found"}};o&&this._taskMessageQueue?this._enqueueTaskMessage(o,{type:"error",message:u,timestamp:Date.now()},i?.sessionId).catch(c=>this._onerror(new Error(`Failed to enqueue error response: ${c}`))):i?.send(u).catch(c=>this._onerror(new Error(`Failed to send an error response: ${c}`)));return}let s=new AbortController;this._requestHandlerAbortControllers.set(t.id,s);let a=Bx(t.params)?t.params.task:void 0,l=this._taskStore?this.requestTaskStore(t,i?.sessionId):void 0,d={signal:s.signal,sessionId:i?.sessionId,_meta:t.params?._meta,sendNotification:async u=>{if(s.signal.aborted)return;let c={relatedRequestId:t.id};o&&(c.relatedTask={taskId:o}),await this.notification(u,c)},sendRequest:async(u,c,f)=>{if(s.signal.aborted)throw new ce(ve.ConnectionClosed,"Request was cancelled");let p={...f,relatedRequestId:t.id};o&&!p.relatedTask&&(p.relatedTask={taskId:o});let m=p.relatedTask?.taskId??o;return m&&l&&await l.updateTaskStatus(m,"input_required"),await this.request(u,c,p)},authInfo:r?.authInfo,requestId:t.id,requestInfo:r?.requestInfo,taskId:o,taskStore:l,taskRequestedTtl:a?.ttl,closeSSEStream:r?.closeSSEStream,closeStandaloneSSEStream:r?.closeStandaloneSSEStream};Promise.resolve().then(()=>{a&&this.assertTaskHandlerCapability(t.method)}).then(()=>n(t,d)).then(async u=>{if(s.signal.aborted)return;let c={result:u,jsonrpc:"2.0",id:t.id};o&&this._taskMessageQueue?await this._enqueueTaskMessage(o,{type:"response",message:c,timestamp:Date.now()},i?.sessionId):await i?.send(c)},async u=>{if(s.signal.aborted)return;let c={jsonrpc:"2.0",id:t.id,error:{code:Number.isSafeInteger(u.code)?u.code:ve.InternalError,message:u.message??"Internal error",...u.data!==void 0&&{data:u.data}}};o&&this._taskMessageQueue?await this._enqueueTaskMessage(o,{type:"error",message:c,timestamp:Date.now()},i?.sessionId):await i?.send(c)}).catch(u=>this._onerror(new Error(`Failed to send response: ${u}`))).finally(()=>{this._requestHandlerAbortControllers.get(t.id)===s&&this._requestHandlerAbortControllers.delete(t.id)})}_onprogress(t){let{progressToken:r,...n}=t.params,i=Number(r),o=this._progressHandlers.get(i);if(!o){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(t)}`));return}let s=this._responseHandlers.get(i),a=this._timeoutInfo.get(i);if(a&&s&&a.resetTimeoutOnProgress)try{this._resetTimeout(i)}catch(l){this._responseHandlers.delete(i),this._progressHandlers.delete(i),this._cleanupTimeout(i),s(l);return}o(n)}_onresponse(t){let r=Number(t.id),n=this._requestResolvers.get(r);if(n){if(this._requestResolvers.delete(r),Vl(t))n(t);else{let s=new ce(t.error.code,t.error.message,t.error.data);n(s)}return}let i=this._responseHandlers.get(r);if(i===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(t)}`));return}this._responseHandlers.delete(r),this._cleanupTimeout(r);let o=!1;if(Vl(t)&&t.result&&typeof t.result=="object"){let s=t.result;if(s.task&&typeof s.task=="object"){let a=s.task;typeof a.taskId=="string"&&(o=!0,this._taskProgressTokens.set(a.taskId,r))}}if(o||this._progressHandlers.delete(r),Vl(t))i(t);else{let s=ce.fromError(t.error.code,t.error.message,t.error.data);i(s)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(t,r,n){let{task:i}=n??{};if(!i){try{yield{type:"result",result:await this.request(t,r,n)}}catch(s){yield{type:"error",error:s instanceof ce?s:new ce(ve.InternalError,String(s))}}return}let o;try{let s=await this.request(t,fa,n);if(s.task)o=s.task.taskId,yield{type:"taskCreated",task:s.task};else throw new ce(ve.InternalError,"Task creation did not return a task");for(;;){let a=await this.getTask({taskId:o},n);if(yield{type:"taskStatus",task:a},mo(a.status)){a.status==="completed"?yield{type:"result",result:await this.getTaskResult({taskId:o},r,n)}:a.status==="failed"?yield{type:"error",error:new ce(ve.InternalError,`Task ${o} failed`)}:a.status==="cancelled"&&(yield{type:"error",error:new ce(ve.InternalError,`Task ${o} was cancelled`)});return}if(a.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:o},r,n)};return}let l=a.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(d=>setTimeout(d,l)),n?.signal?.throwIfAborted()}}catch(s){yield{type:"error",error:s instanceof ce?s:new ce(ve.InternalError,String(s))}}}request(t,r,n){let{relatedRequestId:i,resumptionToken:o,onresumptiontoken:s,task:a,relatedTask:l}=n??{};return new Promise((d,u)=>{let c=b=>{u(b)};if(!this._transport){c(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(t.method),a&&this.assertTaskCapability(t.method)}catch(b){c(b);return}n?.signal?.throwIfAborted();let f=this._requestMessageId++,p={...t,jsonrpc:"2.0",id:f};n?.onprogress&&(this._progressHandlers.set(f,n.onprogress),p.params={...t.params,_meta:{...t.params?._meta||{},progressToken:f}}),a&&(p.params={...p.params,task:a}),l&&(p.params={...p.params,_meta:{...p.params?._meta||{},[uo]:l}});let m=b=>{this._responseHandlers.delete(f),this._progressHandlers.delete(f),this._cleanupTimeout(f),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:f,reason:String(b)}},{relatedRequestId:i,resumptionToken:o,onresumptiontoken:s}).catch(v=>this._onerror(new Error(`Failed to send cancellation: ${v}`)));let y=b instanceof ce?b:new ce(ve.RequestTimeout,String(b));u(y)};this._responseHandlers.set(f,b=>{if(!n?.signal?.aborted){if(b instanceof Error)return u(b);try{let y=co(r,b.result);y.success?d(y.data):u(y.error)}catch(y){u(y)}}}),n?.signal?.addEventListener("abort",()=>{m(n?.signal?.reason)});let h=n?.timeout??QN,_=()=>m(ce.fromError(ve.RequestTimeout,"Request timed out",{timeout:h}));this._setupTimeout(f,h,n?.maxTotalTimeout,_,n?.resetTimeoutOnProgress??!1);let g=l?.taskId;if(g){let b=y=>{let v=this._responseHandlers.get(f);v?v(y):this._onerror(new Error(`Response handler missing for side-channeled request ${f}`))};this._requestResolvers.set(f,b),this._enqueueTaskMessage(g,{type:"request",message:p,timestamp:Date.now()}).catch(y=>{this._cleanupTimeout(f),u(y)})}else this._transport.send(p,{relatedRequestId:i,resumptionToken:o,onresumptiontoken:s}).catch(b=>{this._cleanupTimeout(f),u(b)})})}async getTask(t,r){return this.request({method:"tasks/get",params:t},Ec,r)}async getTaskResult(t,r,n){return this.request({method:"tasks/result",params:t},r,n)}async listTasks(t,r){return this.request({method:"tasks/list",params:t},Rc,r)}async cancelTask(t,r){return this.request({method:"tasks/cancel",params:t},rk,r)}async notification(t,r){if(!this._transport)throw new Error("Not connected");this.assertNotificationCapability(t.method);let n=r?.relatedTask?.taskId;if(n){let a={...t,jsonrpc:"2.0",params:{...t.params,_meta:{...t.params?._meta||{},[uo]:r.relatedTask}}};await this._enqueueTaskMessage(n,{type:"notification",message:a,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(t.method)&&!t.params&&!r?.relatedRequestId&&!r?.relatedTask){if(this._pendingDebouncedNotifications.has(t.method))return;this._pendingDebouncedNotifications.add(t.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(t.method),!this._transport)return;let a={...t,jsonrpc:"2.0"};r?.relatedTask&&(a={...a,params:{...a.params,_meta:{...a.params?._meta||{},[uo]:r.relatedTask}}}),this._transport?.send(a,r).catch(l=>this._onerror(l))});return}let s={...t,jsonrpc:"2.0"};r?.relatedTask&&(s={...s,params:{...s.params,_meta:{...s.params?._meta||{},[uo]:r.relatedTask}}}),await this._transport.send(s,r)}setRequestHandler(t,r){let n=tg(t);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(i,o)=>{let s=rg(t,i);return Promise.resolve(r(s,o))})}removeRequestHandler(t){this._requestHandlers.delete(t)}assertCanSetRequestHandler(t){if(this._requestHandlers.has(t))throw new Error(`A request handler for ${t} already exists, which would be overridden`)}setNotificationHandler(t,r){let n=tg(t);this._notificationHandlers.set(n,i=>{let o=rg(t,i);return Promise.resolve(r(o))})}removeNotificationHandler(t){this._notificationHandlers.delete(t)}_cleanupTaskProgressHandler(t){let r=this._taskProgressTokens.get(t);r!==void 0&&(this._progressHandlers.delete(r),this._taskProgressTokens.delete(t))}async _enqueueTaskMessage(t,r,n){if(!this._taskStore||!this._taskMessageQueue)throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let i=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(t,r,n,i)}async _clearTaskQueue(t,r){if(this._taskMessageQueue){let n=await this._taskMessageQueue.dequeueAll(t,r);for(let i of n)if(i.type==="request"&&M_(i.message)){let o=i.message.id,s=this._requestResolvers.get(o);s?(s(new ce(ve.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(o)):this._onerror(new Error(`Resolver missing for request ${o} during task ${t} cleanup`))}}}async _waitForTaskUpdate(t,r){let n=this._options?.defaultTaskPollInterval??1e3;try{let i=await this._taskStore?.getTask(t);i?.pollInterval&&(n=i.pollInterval)}catch{}return new Promise((i,o)=>{if(r.aborted){o(new ce(ve.InvalidRequest,"Request cancelled"));return}let s=setTimeout(i,n);r.addEventListener("abort",()=>{clearTimeout(s),o(new ce(ve.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(t,r){let n=this._taskStore;if(!n)throw new Error("No task store configured");return{createTask:async i=>{if(!t)throw new Error("No request provided");return await n.createTask(i,t.id,{method:t.method,params:t.params},r)},getTask:async i=>{let o=await n.getTask(i,r);if(!o)throw new ce(ve.InvalidParams,"Failed to retrieve task: Task not found");return o},storeTaskResult:async(i,o,s)=>{await n.storeTaskResult(i,o,s,r);let a=await n.getTask(i,r);if(a){let l=Jl.parse({method:"notifications/tasks/status",params:a});await this.notification(l),mo(a.status)&&this._cleanupTaskProgressHandler(i)}},getTaskResult:i=>n.getTaskResult(i,r),updateTaskStatus:async(i,o,s)=>{let a=await n.getTask(i,r);if(!a)throw new ce(ve.InvalidParams,`Task "${i}" not found - it may have been cleaned up`);if(mo(a.status))throw new ce(ve.InvalidParams,`Cannot update task "${i}" from terminal status "${a.status}" to "${o}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await n.updateTaskStatus(i,o,s,r);let l=await n.getTask(i,r);if(l){let d=Jl.parse({method:"notifications/tasks/status",params:l});await this.notification(d),mo(l.status)&&this._cleanupTaskProgressHandler(i)}},listTasks:i=>n.listTasks(i,r)}}};function Zk(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Vk(e,t){let r={...e};for(let n in t){let i=n,o=t[i];if(o===void 0)continue;let s=r[i];Zk(s)&&Zk(o)?r[i]={...s,...o}:r[i]=o}return r}var $A=vv(Dy(),1),RA=vv(PA(),1);function DU(){let e=new $A.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,RA.default)(e),e}var $f=class{constructor(t){this._ajv=t??DU()}getValidator(t){let r="$id"in t&&typeof t.$id=="string"?this._ajv.getSchema(t.$id)??this._ajv.compile(t):this._ajv.compile(t);return n=>r(n)?{valid:!0,data:n,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(r.errors)}}};var Rf=class{constructor(t){this._server=t}requestStream(t,r,n){return this._server.requestStream(t,r,n)}createMessageStream(t,r){let n=this._server.getClientCapabilities();if((t.tools||t.toolChoice)&&!n?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let i=t.messages[t.messages.length-1],o=Array.isArray(i.content)?i.content:[i.content],s=o.some(u=>u.type==="tool_result"),a=t.messages.length>1?t.messages[t.messages.length-2]:void 0,l=a?Array.isArray(a.content)?a.content:[a.content]:[],d=l.some(u=>u.type==="tool_use");if(s){if(o.some(u=>u.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!d)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(d){let u=new Set(l.filter(f=>f.type==="tool_use").map(f=>f.id)),c=new Set(o.filter(f=>f.type==="tool_result").map(f=>f.toolUseId));if(u.size!==c.size||![...u].every(f=>c.has(f)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:t},Yl,r)}elicitInputStream(t,r){let n=this._server.getClientCapabilities(),i=t.mode??"form";switch(i){case"url":{if(!n?.elicitation?.url)throw new Error("Client does not support url elicitation.");break}case"form":{if(!n?.elicitation?.form)throw new Error("Client does not support form elicitation.");break}}let o=i==="form"&&t.mode===void 0?{...t,mode:"form"}:t;return this.requestStream({method:"elicitation/create",params:o},ga,r)}async getTask(t,r){return this._server.getTask({taskId:t},r)}async getTaskResult(t,r,n){return this._server.getTaskResult({taskId:t},r,n)}async listTasks(t,r){return this._server.listTasks(t?{cursor:t}:void 0,r)}async cancelTask(t,r){return this._server.cancelTask({taskId:t},r)}};function IA(e,t,r){if(!e)throw new Error(`${r} does not support task creation (required for ${t})`);switch(t){case"tools/call":if(!e.tools?.call)throw new Error(`${r} does not support task creation for tools/call (required for ${t})`);break;default:break}}function MA(e,t,r){if(!e)throw new Error(`${r} does not support task creation (required for ${t})`);switch(t){case"sampling/createMessage":if(!e.sampling?.createMessage)throw new Error(`${r} does not support task creation for sampling/createMessage (required for ${t})`);break;case"elicitation/create":if(!e.elicitation?.create)throw new Error(`${r} does not support task creation for elicitation/create (required for ${t})`);break;default:break}}var If=class extends Hc{constructor(t,r){super(r),this._serverInfo=t,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(Xl.options.map((n,i)=>[n,i])),this.isMessageIgnored=(n,i)=>{let o=this._loggingLevels.get(i);return o?this.LOG_LEVEL_SEVERITY.get(n)<this.LOG_LEVEL_SEVERITY.get(o):!1},this._capabilities=r?.capabilities??{},this._instructions=r?.instructions,this._jsonSchemaValidator=r?.jsonSchemaValidator??new $f,this.setRequestHandler(N_,n=>this._oninitialize(n)),this.setNotificationHandler(F_,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(V_,async(n,i)=>{let o=i.sessionId||i.requestInfo?.headers["mcp-session-id"]||void 0,{level:s}=n.params,a=Xl.safeParse(s);return a.success&&this._loggingLevels.set(o,a.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new Rf(this)}),this._experimental}registerCapabilities(t){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=Vk(this._capabilities,t)}setRequestHandler(t,r){let i=fo(t)?.method;if(!i)throw new Error("Schema is missing a method literal");let o;if(Cn(i)){let a=i;o=a._zod?.def?.value??a.value}else{let a=i;o=a._def?.value??a.value}if(typeof o!="string")throw new Error("Schema method literal must be a string");if(o==="tools/call"){let a=async(l,d)=>{let u=co(_a,l);if(!u.success){let m=u.error instanceof Error?u.error.message:String(u.error);throw new ce(ve.InvalidParams,`Invalid tools/call request: ${m}`)}let{params:c}=u.data,f=await Promise.resolve(r(l,d));if(c.task){let m=co(fa,f);if(!m.success){let h=m.error instanceof Error?m.error.message:String(m.error);throw new ce(ve.InvalidParams,`Invalid task creation result: ${h}`)}return m.data}let p=co(Fc,f);if(!p.success){let m=p.error instanceof Error?p.error.message:String(p.error);throw new ce(ve.InvalidParams,`Invalid tools/call result: ${m}`)}return p.data};return super.setRequestHandler(t,a)}return super.setRequestHandler(t,r)}assertCapabilityForMethod(t){switch(t){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${t})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${t})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${t})`);break;case"ping":break}}assertNotificationCapability(t){switch(t){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${t})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${t})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${t})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${t})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(t){if(this._capabilities)switch(t){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${t})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${t})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${t})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${t})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${t})`);break;case"ping":case"initialize":break}}assertTaskCapability(t){MA(this._clientCapabilities?.tasks?.requests,t,"Client")}assertTaskHandlerCapability(t){this._capabilities&&IA(this._capabilities.tasks?.requests,t,"Server")}async _oninitialize(t){let r=t.params.protocolVersion;return this._clientCapabilities=t.params.capabilities,this._clientVersion=t.params.clientInfo,{protocolVersion:Wx.includes(r)?r:R_,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},kc)}async createMessage(t,r){if((t.tools||t.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let n=t.messages[t.messages.length-1],i=Array.isArray(n.content)?n.content:[n.content],o=i.some(d=>d.type==="tool_result"),s=t.messages.length>1?t.messages[t.messages.length-2]:void 0,a=s?Array.isArray(s.content)?s.content:[s.content]:[],l=a.some(d=>d.type==="tool_use");if(o){if(i.some(d=>d.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!l)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(l){let d=new Set(a.filter(c=>c.type==="tool_use").map(c=>c.id)),u=new Set(i.filter(c=>c.type==="tool_result").map(c=>c.toolUseId));if(d.size!==u.size||![...d].every(c=>u.has(c)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return t.tools?this.request({method:"sampling/createMessage",params:t},W_,r):this.request({method:"sampling/createMessage",params:t},Yl,r)}async elicitInput(t,r){switch(t.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let i=t;return this.request({method:"elicitation/create",params:i},ga,r)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let i=t.mode==="form"?t:{...t,mode:"form"},o=await this.request({method:"elicitation/create",params:i},ga,r);if(o.action==="accept"&&o.content&&i.requestedSchema)try{let a=this._jsonSchemaValidator.getValidator(i.requestedSchema)(o.content);if(!a.valid)throw new ce(ve.InvalidParams,`Elicitation response content does not match requested schema: ${a.errorMessage}`)}catch(s){throw s instanceof ce?s:new ce(ve.InternalError,`Error validating elicitation response: ${s instanceof Error?s.message:String(s)}`)}return o}}}createElicitationCompletionNotifier(t,r){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:t}},r)}async listRoots(t,r){return this.request({method:"roots/list",params:t},H_,r)}async sendLoggingMessage(t,r){if(this._capabilities.logging&&!this.isMessageIgnored(t.level,r))return this.notification({method:"notifications/message",params:t})}async sendResourceUpdated(t){return this.notification({method:"notifications/resources/updated",params:t})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};var jA=Symbol.for("mcp.completable");function By(e){return!!e&&typeof e=="object"&&jA in e}function NA(e){return e[jA]?.complete}var zA;(function(e){e.Completable="McpCompletable"})(zA||(zA={}));var LU=/^[A-Za-z0-9._-]{1,128}$/;function UU(e){let t=[];if(e.length===0)return{isValid:!1,warnings:["Tool name cannot be empty"]};if(e.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${e.length})`]};if(e.includes(" ")&&t.push("Tool name contains spaces, which may cause parsing issues"),e.includes(",")&&t.push("Tool name contains commas, which may cause parsing issues"),(e.startsWith("-")||e.endsWith("-"))&&t.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts"),(e.startsWith(".")||e.endsWith("."))&&t.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts"),!LU.test(e)){let r=e.split("").filter(n=>!/[A-Za-z0-9._-]/.test(n)).filter((n,i,o)=>o.indexOf(n)===i);return t.push(`Tool name contains invalid characters: ${r.map(n=>`"${n}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings:t}}return{isValid:!0,warnings:t}}function ZU(e,t){if(t.length>0){console.warn(`Tool name validation warning for "${e}":`);for(let r of t)console.warn(` - ${r}`);console.warn("Tool registration will proceed, but this may cause compatibility issues."),console.warn("Consider updating the tool name to conform to the MCP tool naming standard."),console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.")}}function Jy(e){let t=UU(e);return ZU(e,t.warnings),t.isValid}var Mf=class{constructor(t){this._mcpServer=t}registerToolTask(t,r,n){let i={taskSupport:"required",...r.execution};if(i.taskSupport==="forbidden")throw new Error(`Cannot register task-based tool '${t}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool(t,r.title,r.description,r.inputSchema,r.outputSchema,r.annotations,i,r._meta,n)}};var zf=class{constructor(t,r){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new If(t,r)}get experimental(){return this._experimental||(this._experimental={tasks:new Mf(this)}),this._experimental}async connect(t){return await this.server.connect(t)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(wo(Nc)),this.server.assertCanSetRequestHandler(wo(_a)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(Nc,()=>({tools:Object.entries(this._registeredTools).filter(([,t])=>t.enabled).map(([t,r])=>{let n={name:t,title:r.title,description:r.description,inputSchema:(()=>{let i=ya(r.inputSchema);return i?eg(i,{strictUnions:!0,pipeStrategy:"input"}):VU})(),annotations:r.annotations,execution:r.execution,_meta:r._meta};if(r.outputSchema){let i=ya(r.outputSchema);i&&(n.outputSchema=eg(i,{strictUnions:!0,pipeStrategy:"output"}))}return n})})),this.server.setRequestHandler(_a,async(t,r)=>{try{let n=this._registeredTools[t.params.name];if(!n)throw new ce(ve.InvalidParams,`Tool ${t.params.name} not found`);if(!n.enabled)throw new ce(ve.InvalidParams,`Tool ${t.params.name} disabled`);let i=!!t.params.task,o=n.execution?.taskSupport,s="createTask"in n.handler;if((o==="required"||o==="optional")&&!s)throw new ce(ve.InternalError,`Tool ${t.params.name} has taskSupport '${o}' but was not registered with registerToolTask`);if(o==="required"&&!i)throw new ce(ve.MethodNotFound,`Tool ${t.params.name} requires task augmentation (taskSupport: 'required')`);if(o==="optional"&&!i&&s)return await this.handleAutomaticTaskPolling(n,t,r);let a=await this.validateToolInput(n,t.params.arguments,t.params.name),l=await this.executeToolHandler(n,a,r);return i||await this.validateToolOutput(n,l,t.params.name),l}catch(n){if(n instanceof ce&&n.code===ve.UrlElicitationRequired)throw n;return this.createToolError(n instanceof Error?n.message:String(n))}}),this._toolHandlersInitialized=!0)}createToolError(t){return{content:[{type:"text",text:t}],isError:!0}}async validateToolInput(t,r,n){if(!t.inputSchema)return;let o=ya(t.inputSchema)??t.inputSchema,s=await qc(o,r);if(!s.success){let a="error"in s?s.error:"Unknown error",l=Dc(a);throw new ce(ve.InvalidParams,`Input validation error: Invalid arguments for tool ${n}: ${l}`)}return s.data}async validateToolOutput(t,r,n){if(!t.outputSchema||!("content"in r)||r.isError)return;if(!r.structuredContent)throw new ce(ve.InvalidParams,`Output validation error: Tool ${n} has an output schema but no structured content was provided`);let i=ya(t.outputSchema),o=await qc(i,r.structuredContent);if(!o.success){let s="error"in o?o.error:"Unknown error",a=Dc(s);throw new ce(ve.InvalidParams,`Output validation error: Invalid structured content for tool ${n}: ${a}`)}}async executeToolHandler(t,r,n){let i=t.handler;if("createTask"in i){if(!n.taskStore)throw new Error("No task store provided.");let s={...n,taskStore:n.taskStore};if(t.inputSchema){let a=i;return await Promise.resolve(a.createTask(r,s))}else{let a=i;return await Promise.resolve(a.createTask(s))}}if(t.inputSchema){let s=i;return await Promise.resolve(s(r,n))}else{let s=i;return await Promise.resolve(s(n))}}async handleAutomaticTaskPolling(t,r,n){if(!n.taskStore)throw new Error("No task store provided for task-capable tool.");let i=await this.validateToolInput(t,r.params.arguments,r.params.name),o=t.handler,s={...n,taskStore:n.taskStore},a=i?await Promise.resolve(o.createTask(i,s)):await Promise.resolve(o.createTask(s)),l=a.task.taskId,d=a.task,u=d.pollInterval??5e3;for(;d.status!=="completed"&&d.status!=="failed"&&d.status!=="cancelled";){await new Promise(f=>setTimeout(f,u));let c=await n.taskStore.getTask(l);if(!c)throw new ce(ve.InternalError,`Task ${l} not found during polling`);d=c}return await n.taskStore.getTaskResult(l)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(wo(Gc)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(Gc,async t=>{switch(t.params.ref.type){case"ref/prompt":return lk(t),this.handlePromptCompletion(t,t.params.ref);case"ref/resource":return dk(t),this.handleResourceCompletion(t,t.params.ref);default:throw new ce(ve.InvalidParams,`Invalid completion reference: ${t.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(t,r){let n=this._registeredPrompts[r.name];if(!n)throw new ce(ve.InvalidParams,`Prompt ${r.name} not found`);if(!n.enabled)throw new ce(ve.InvalidParams,`Prompt ${r.name} disabled`);if(!n.argsSchema)return Pd;let o=fo(n.argsSchema)?.[t.params.argument.name];if(!By(o))return Pd;let s=NA(o);if(!s)return Pd;let a=await s(t.params.argument.value,t.params.context);return GA(a)}async handleResourceCompletion(t,r){let n=Object.values(this._registeredResourceTemplates).find(s=>s.resourceTemplate.uriTemplate.toString()===r.uri);if(!n){if(this._registeredResources[r.uri])return Pd;throw new ce(ve.InvalidParams,`Resource template ${t.params.ref.uri} not found`)}let i=n.resourceTemplate.completeCallback(t.params.argument.name);if(!i)return Pd;let o=await i(t.params.argument.value,t.params.context);return GA(o)}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(wo(pa)),this.server.assertCanSetRequestHandler(wo(ha)),this.server.assertCanSetRequestHandler(wo(Mc)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(pa,async(t,r)=>{let n=Object.entries(this._registeredResources).filter(([o,s])=>s.enabled).map(([o,s])=>({uri:o,name:s.name,...s.metadata})),i=[];for(let o of Object.values(this._registeredResourceTemplates)){if(!o.resourceTemplate.listCallback)continue;let s=await o.resourceTemplate.listCallback(r);for(let a of s.resources)i.push({...o.metadata,...a})}return{resources:[...n,...i]}}),this.server.setRequestHandler(ha,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([r,n])=>({name:r,uriTemplate:n.resourceTemplate.uriTemplate.toString(),...n.metadata}))})),this.server.setRequestHandler(Mc,async(t,r)=>{let n=new URL(t.params.uri),i=this._registeredResources[n.toString()];if(i){if(!i.enabled)throw new ce(ve.InvalidParams,`Resource ${n} disabled`);return i.readCallback(n,r)}for(let o of Object.values(this._registeredResourceTemplates)){let s=o.resourceTemplate.uriTemplate.match(n.toString());if(s)return o.readCallback(n,s,r)}throw new ce(ve.InvalidParams,`Resource ${n} not found`)}),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(wo(zc)),this.server.assertCanSetRequestHandler(wo(jc)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(zc,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,t])=>t.enabled).map(([t,r])=>({name:t,title:r.title,description:r.description,arguments:r.argsSchema?WU(r.argsSchema):void 0}))})),this.server.setRequestHandler(jc,async(t,r)=>{let n=this._registeredPrompts[t.params.name];if(!n)throw new ce(ve.InvalidParams,`Prompt ${t.params.name} not found`);if(!n.enabled)throw new ce(ve.InvalidParams,`Prompt ${t.params.name} disabled`);if(n.argsSchema){let i=ya(n.argsSchema),o=await qc(i,t.params.arguments);if(!o.success){let l="error"in o?o.error:"Unknown error",d=Dc(l);throw new ce(ve.InvalidParams,`Invalid arguments for prompt ${t.params.name}: ${d}`)}let s=o.data,a=n.callback;return await Promise.resolve(a(s,r))}else{let i=n.callback;return await Promise.resolve(i(r))}}),this._promptHandlersInitialized=!0)}resource(t,r,...n){let i;typeof n[0]=="object"&&(i=n.shift());let o=n[0];if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let s=this._createRegisteredResource(t,void 0,r,i,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}else{if(this._registeredResourceTemplates[t])throw new Error(`Resource template ${t} is already registered`);let s=this._createRegisteredResourceTemplate(t,void 0,r,i,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}}registerResource(t,r,n,i){if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let o=this._createRegisteredResource(t,n.title,r,n,i);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),o}else{if(this._registeredResourceTemplates[t])throw new Error(`Resource template ${t} is already registered`);let o=this._createRegisteredResourceTemplate(t,n.title,r,n,i);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),o}}_createRegisteredResource(t,r,n,i,o){let s={name:t,title:r,metadata:i,readCallback:o,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({uri:null}),update:a=>{typeof a.uri<"u"&&a.uri!==n&&(delete this._registeredResources[n],a.uri&&(this._registeredResources[a.uri]=s)),typeof a.name<"u"&&(s.name=a.name),typeof a.title<"u"&&(s.title=a.title),typeof a.metadata<"u"&&(s.metadata=a.metadata),typeof a.callback<"u"&&(s.readCallback=a.callback),typeof a.enabled<"u"&&(s.enabled=a.enabled),this.sendResourceListChanged()}};return this._registeredResources[n]=s,s}_createRegisteredResourceTemplate(t,r,n,i,o){let s={resourceTemplate:n,title:r,metadata:i,readCallback:o,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({name:null}),update:d=>{typeof d.name<"u"&&d.name!==t&&(delete this._registeredResourceTemplates[t],d.name&&(this._registeredResourceTemplates[d.name]=s)),typeof d.title<"u"&&(s.title=d.title),typeof d.template<"u"&&(s.resourceTemplate=d.template),typeof d.metadata<"u"&&(s.metadata=d.metadata),typeof d.callback<"u"&&(s.readCallback=d.callback),typeof d.enabled<"u"&&(s.enabled=d.enabled),this.sendResourceListChanged()}};this._registeredResourceTemplates[t]=s;let a=n.uriTemplate.variableNames;return Array.isArray(a)&&a.some(d=>!!n.completeCallback(d))&&this.setCompletionRequestHandler(),s}_createRegisteredPrompt(t,r,n,i,o){let s={title:r,description:n,argsSchema:i===void 0?void 0:fs(i),callback:o,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({name:null}),update:a=>{typeof a.name<"u"&&a.name!==t&&(delete this._registeredPrompts[t],a.name&&(this._registeredPrompts[a.name]=s)),typeof a.title<"u"&&(s.title=a.title),typeof a.description<"u"&&(s.description=a.description),typeof a.argsSchema<"u"&&(s.argsSchema=fs(a.argsSchema)),typeof a.callback<"u"&&(s.callback=a.callback),typeof a.enabled<"u"&&(s.enabled=a.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[t]=s,i&&Object.values(i).some(l=>{let d=l instanceof en?l._def?.innerType:l;return By(d)})&&this.setCompletionRequestHandler(),s}_createRegisteredTool(t,r,n,i,o,s,a,l,d){Jy(t);let u={title:r,description:n,inputSchema:FA(i),outputSchema:FA(o),annotations:s,execution:a,_meta:l,handler:d,enabled:!0,disable:()=>u.update({enabled:!1}),enable:()=>u.update({enabled:!0}),remove:()=>u.update({name:null}),update:c=>{typeof c.name<"u"&&c.name!==t&&(typeof c.name=="string"&&Jy(c.name),delete this._registeredTools[t],c.name&&(this._registeredTools[c.name]=u)),typeof c.title<"u"&&(u.title=c.title),typeof c.description<"u"&&(u.description=c.description),typeof c.paramsSchema<"u"&&(u.inputSchema=fs(c.paramsSchema)),typeof c.outputSchema<"u"&&(u.outputSchema=fs(c.outputSchema)),typeof c.callback<"u"&&(u.handler=c.callback),typeof c.annotations<"u"&&(u.annotations=c.annotations),typeof c._meta<"u"&&(u._meta=c._meta),typeof c.enabled<"u"&&(u.enabled=c.enabled),this.sendToolListChanged()}};return this._registeredTools[t]=u,this.setToolRequestHandlers(),this.sendToolListChanged(),u}tool(t,...r){if(this._registeredTools[t])throw new Error(`Tool ${t} is already registered`);let n,i,o,s;if(typeof r[0]=="string"&&(n=r.shift()),r.length>1){let l=r[0];if(Qy(l))i=r.shift(),r.length>1&&typeof r[0]=="object"&&r[0]!==null&&!Qy(r[0])&&(s=r.shift());else if(typeof l=="object"&&l!==null){if(Object.values(l).some(d=>typeof d=="object"&&d!==null))throw new Error(`Tool ${t} expected a Zod schema or ToolAnnotations, but received an unrecognized object`);s=r.shift()}}let a=r[0];return this._createRegisteredTool(t,void 0,n,i,o,s,{taskSupport:"forbidden"},void 0,a)}registerTool(t,r,n){if(this._registeredTools[t])throw new Error(`Tool ${t} is already registered`);let{title:i,description:o,inputSchema:s,outputSchema:a,annotations:l,_meta:d}=r;return this._createRegisteredTool(t,i,o,s,a,l,{taskSupport:"forbidden"},d,n)}prompt(t,...r){if(this._registeredPrompts[t])throw new Error(`Prompt ${t} is already registered`);let n;typeof r[0]=="string"&&(n=r.shift());let i;r.length>1&&(i=r.shift());let o=r[0],s=this._createRegisteredPrompt(t,void 0,n,i,o);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),s}registerPrompt(t,r,n){if(this._registeredPrompts[t])throw new Error(`Prompt ${t} is already registered`);let{title:i,description:o,argsSchema:s}=r,a=this._createRegisteredPrompt(t,i,o,s,n);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),a}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage(t,r){return this.server.sendLoggingMessage(t,r)}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}};var VU={type:"object",properties:{}};function qA(e){return e!==null&&typeof e=="object"&&"parse"in e&&typeof e.parse=="function"&&"safeParse"in e&&typeof e.safeParse=="function"}function DA(e){return"_def"in e||"_zod"in e||qA(e)}function Qy(e){return typeof e!="object"||e===null||DA(e)?!1:Object.keys(e).length===0?!0:Object.values(e).some(qA)}function FA(e){if(e){if(Qy(e))return fs(e);if(!DA(e))throw new Error("inputSchema must be a Zod schema or raw shape, received an unrecognized object");return e}}function WU(e){let t=fo(e);return t?Object.entries(t).map(([r,n])=>{let i=uk(n),o=ck(n);return{name:r,description:i,required:!o}}):[]}function wo(e){let r=fo(e)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=Lc(r);if(typeof n=="string")return n;throw new Error("Schema method literal must be a string")}function GA(e){return{completion:{values:e.slice(0,100),total:e.length,hasMore:e.length>100}}}var Pd={completion:{values:[],hasMore:!1}};import UA from"node:process";var jf=class{append(t){this._buffer=this._buffer?Buffer.concat([this._buffer,t]):t}readMessage(){if(!this._buffer)return null;let t=this._buffer.indexOf(`
|
|
321
321
|
`);if(t===-1)return null;let r=this._buffer.toString("utf8",0,t).replace(/\r$/,"");return this._buffer=this._buffer.subarray(t+1),KU(r)}clear(){this._buffer=void 0}};function KU(e){return ek.parse(JSON.parse(e))}function LA(e){return JSON.stringify(e)+`
|
|
322
322
|
`}var Nf=class{constructor(t=UA.stdin,r=UA.stdout){this._stdin=t,this._stdout=r,this._readBuffer=new jf,this._started=!1,this._ondata=n=>{this._readBuffer.append(n),this.processReadBuffer()},this._onerror=n=>{this.onerror?.(n)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let t=this._readBuffer.readMessage();if(t===null)break;this.onmessage?.(t)}catch(t){this.onerror?.(t)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(t){return new Promise(r=>{let n=LA(t);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};function JU(e){let t={};t.listChanged=!1;let r={};r.resources=t,e.server.registerCapabilities(r),e.server.setRequestHandler(pa,()=>{let n={};return n.resources=[],n}),e.server.setRequestHandler(ha,()=>{let n={};return n.resourceTemplates=[],n})}function QU(e){return{registerTool:(t,r,n,i)=>{e.tool(t,r,n,i)}}}async function Xy(e){let t=e.delegationAuthFilePath;if(t!==void 0){let n=e.explicitToken,i=e.authFilePath;if(n!==void 0)return{TAG:"Error",_0:"--delegation-auth-file cannot be combined with --token or --auth-file"};if(i!==void 0)return{TAG:"Error",_0:"--delegation-auth-file cannot be combined with --token or --auth-file"};let o=DS(t,Date.now());return o.TAG==="Ok"?{TAG:"Ok",_0:{accessToken:o._0.accessToken,mode:"PersonalAgentDelegation"}}:{TAG:"Error",_0:o._0.summary}}let r=await f0(e.serviceUrl,e.explicitToken,e.authFilePath,e.workspaceSlug,e.channelSlug,void 0);return r.TAG==="Ok"?{TAG:"Ok",_0:{accessToken:r._0,mode:"LocalRunner"}}:{TAG:"Error",_0:r._0.summary}}function Yy(e,t){let r=or(e,"token");return{serviceUrl:t,explicitToken:r!==void 0?r:process.env.LINZUMI_MCP_ACCESS_TOKEN,authFilePath:or(e,"auth-file"),delegationAuthFilePath:or(e,"delegation-auth-file"),workspaceSlug:or(e,"workspace"),channelSlug:or(e,"channel")}}async function XU(e){let t=pu(e);if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=t._0;if(hu(r,"help"))return Mo(yu()),{TAG:"Ok",_0:void 0};let n=_u(r,"api-url");if(n.TAG!=="Ok")return{TAG:"Error",_0:n._0};let i=n._0,o=await Xy(Yy(r,i));if(o.TAG!=="Ok")return{TAG:"Error",_0:o._0};let s=o._0,a=gu(or(r,"mode")),l=km(or(r,"tool-scope"));if(a.TAG!=="Ok")return{TAG:"Error",_0:a._0};let d=a._0;if(l.TAG!=="Ok")return{TAG:"Error",_0:l._0};let u=or(r,"owner-username"),c=u!==void 0?u:process.env.LINZUMI_MCP_OWNER_USERNAME,f=or(r,"cwd"),p=f!==void 0?f:process.cwd(),m=or(r,"thread-id"),h=m!==void 0?m:process.env[C0],_=Op({serviceUrl:i,accessToken:s.accessToken,authMode:s.mode,operatingMode:d});if(_.TAG!=="Ok")return{TAG:"Error",_0:_._0};let g=new zf({name:"linzumi",version:"0.1.0"});return JU(g),nw(QU(g),{client:_._0,toolScope:l._0,operatingMode:d,cwd:p,serviceUrl:i,defaultThreadId:h,ownerUsername:c,agentSession:hu(r,"agent-session"),devServices:J0(process.env)}),await g.connect(new Nf),{TAG:"Ok",_0:void 0}}async function YU(e){let t=pu(e);if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=t._0,n=_u(r,"api-url");if(n.TAG!=="Ok")return{TAG:"Error",_0:n._0};let i=n._0,o=or(r,"format"),s=o!==void 0?o:"codex",a=gu(or(r,"mode"));if(a.TAG!=="Ok")return{TAG:"Error",_0:a._0};let l;if(hu(r,"include-token")){let f=await Xy(Yy(r,i));l=f.TAG==="Ok"?{TAG:"Ok",_0:f._0.accessToken}:{TAG:"Error",_0:f._0}}else l={TAG:"Ok",_0:void 0};if(l.TAG!=="Ok")return{TAG:"Error",_0:l._0};let d=km(or(r,"tool-scope"));if(d.TAG!=="Ok")return{TAG:"Error",_0:d._0};let u=or(r,"owner-username"),c=iw({command:or(r,"command"),serviceUrl:i,accessToken:l._0,delegationAuthFilePath:or(r,"delegation-auth-file"),ownerUsername:u!==void 0?u:process.env.LINZUMI_MCP_OWNER_USERNAME,operatingMode:a._0,toolScope:d._0});switch(s){case"claude-code":return Mo(ow(c)),{TAG:"Ok",_0:void 0};case"codex":return Mo(sw(c)),{TAG:"Ok",_0:void 0};default:return{TAG:"Error",_0:"--format must be codex or claude-code"}}}async function e2(e){let t=pu(e);if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=t._0,n=_u(r,"api-url");if(n.TAG!=="Ok")return{TAG:"Error",_0:n._0};let i=n._0,o=await Xy(Yy(r,i));if(o.TAG!=="Ok")return{TAG:"Error",_0:o._0};let s=o._0,a=s.mode,l;if(a==="LocalRunner"){let d=await Xs(i,s.accessToken,or(r,"workspace"),or(r,"channel"),void 0);if(d.TAG==="Ok")switch(d._0){case"Usable":l={TAG:"Ok",_0:void 0};break;case"Rejected":case"NotFound":l={TAG:"Error",_0:"Linzumi MCP auth validation failed"};break}else l={TAG:"Error",_0:d._0.summary}}else{let d=gu(or(r,"mode"));if(d.TAG==="Ok"){let u=Op({serviceUrl:i,accessToken:s.accessToken,authMode:s.mode,operatingMode:d._0});if(u.TAG==="Ok")try{await u._0.validateAuth(),l={TAG:"Ok",_0:void 0}}catch(c){let f=Q(c);l={TAG:"Error",_0:js(f)}}else l={TAG:"Error",_0:u._0}}else l={TAG:"Error",_0:d._0}}return l.TAG!=="Ok"?{TAG:"Error",_0:l._0}:(Mo(`Linzumi MCP auth OK
|
|
323
|
-
`),{TAG:"Ok",_0:void 0})}async function ZA(e){let t=e.slice(1),r=e[0];if(r!==void 0)switch(r){case"--help":case"-h":return Mo(yu()),{TAG:"Ok",_0:void 0};case"config":return await YU(t);case"doctor":return await e2(t);case"server":return await XU(t);default:return{TAG:"Error",_0:"unknown linzumi mcp command: "+r}}else return Mo(yu()),{TAG:"Ok",_0:void 0}}function VA(e){if(typeof e=="number"&&e%1===0)return e}function r2(e){if(typeof e=="string")return e}function n2(e){let t=e.replaceAll("-","+").replaceAll("_","/");switch(t.length&3){case 2:return t+"==";case 3:return t+"=";default:return t}}function WA(e){let t=e.split(".")[1];if(t===void 0)return;let r=Buffer.from(n2(t),"base64").toString("utf8"),n;try{n=JSON.parse(r)}catch{n=void 0}if(typeof n=="object"&&n!==null&&!Array.isArray(n))return n}function HA(e){let t=WA(e);if(t===void 0)return{actorUserId:void 0,actorUsername:void 0};let r=VA(t.actor_id);return{actorUserId:r!==void 0?r:VA(t.sub),actorUsername:r2(t.actor_username)}}function KA(e){let t=x(WA(e),n=>n.workspace_scope),r=t!==void 0?Array.isArray(t)?Ne(t,n=>{if(typeof n=="string"&&n.trim()!=="")return n}):[]:[];if(r.length===1)return r[0]}function $d(){return k("1.0.133","0.0.0-unbundled")}function eb(){return"linzumi "+k("1.0.133","0.0.0-unbundled")}import*as $o from"node:os";import*as gm from"node:path";import*as pv from"node:crypto";function Ff(e){let t=parseFloat(e);if(!Number.isNaN(t))return t}function XA(e){return"local_runner:"+e}var i2="kandan-local-codex-runner",o2="rescript";function YA(e){let t={};t.clientName=i2,t.clientId=e.clientId;let r=e.machineFingerprint;t.machineFingerprint=r!==void 0?r:null,Object.entries(a0(e.machineFingerprintV2)).forEach(s=>{t[s[0]]=s[1]}),t.runnerPid=e.runnerPid,t.version=e.version,t.hostname=e.hostname,t.cwd=e.cwd;let n=e.workspace;t.workspace=n!==void 0?n:null;let i=e.channel;t.channel=i!==void 0?i:null,t.capabilities=e.capabilities;let o=e.generationOverlapEpoch;if(o!==void 0){let s={};s.epoch=o,s.overlap=!0,t.generation=s}return t.commander_impl=o2,t}function eC(e,t,r){let n={};return n.last_seq=r,t!==void 0&&(n.runner_id=e,n.thread_id=t),n}function yn(e,t){return e.catch(r=>t(Q(r)))}function rC(){let e=[],t=[],r={contents:!1},n=()=>{let s=e.shift();return s!==void 0?Promise.resolve({done:!1,value:s}):r.contents?Promise.resolve({done:!0}):new Promise((a,l)=>{t.push(a)})},i=()=>(r.contents=!0,Promise.resolve({done:!0})),o={};return o[Symbol.asyncIterator]=()=>({next:n,return:i}),{iterable:o,push:s=>{if(r.contents)return!1;let a=t.shift();return a!==void 0?(a({done:!1,value:s}),!0):(e.push(s),!0)},close:()=>{r.contents=!0,(()=>{for(;;){let a=t.shift();if(a===void 0)return;a({done:!0})}})()}}}function nC(e){return import(e)}var a2="@anthropic-ai/claude-agent-sdk";function iC(e){return rC()}function l2(e){return{next:()=>e.next(),close:()=>{e.close()},interrupt:()=>e.interrupt(),setModel:t=>e.setModel(t),setPermissionMode:t=>e.setPermissionMode(t),applyFlagSettings:t=>e.applyFlagSettings(t),supportedCommands:()=>e.supportedCommands()}}async function oC(){let e=await nC(a2);return{query:t=>l2(e.query(t)),getSessionInfo:(t,r)=>e.getSessionInfo(t,r),listSessions:t=>e.listSessions(t),getSessionMessages:(t,r)=>e.getSessionMessages(t,r)}}var tb=["codex","claude-code","pi","opencode"];function xs(e){return e}function aC(e){switch(e.TAG){case"SessionStarted":return"session_started";case"TurnStarted":return"turn_started";case"ItemStarted":return"item_started";case"ItemDelta":return"item_delta";case"ItemCompleted":return"item_completed";case"ApprovalRequested":return"approval_requested";case"UsageUpdated":return"usage_updated";case"RateLimitUpdated":return"rate_limit_updated";case"ActivityPulse":return"activity_pulse";case"TurnCompleted":return"turn_completed";case"TurnFailed":return"turn_failed";case"TurnInterrupted":return"turn_interrupted";case"HarnessDied":return"harness_died"}}function dr(e,t){delete e[t]}function d2(e){switch(e){case"SocketOpen":return"open";case"SocketMessage":return"message";case"SocketClose":return"close";case"SocketError":return"error"}}function u2(e){let t=e.data,r;r=t==null||typeof t!="string"?void 0:t;let n=e.code,i;i=n==null||typeof n!="number"||(n|0)!==n?void 0:n|0;let o=e.reason,s;return s=o==null||typeof o!="string"?void 0:o,{data:r,code:i,reason:s}}function c2(e){return{readyState:()=>e.readyState,send:t=>{e.send(t)},close:()=>{e.close()},on:(t,r)=>{e.addEventListener(d2(t),n=>r(u2(n)),{})}}}function Gf(e,t){return c2(new WebSocket(e,t))}var lC=0,ks=1;var f2="file",m2=["mcp_oauth_credentials_store","cli_auth_credentials_store"],V8=m2.flatMap(e=>["-c",e+'="'+f2+'"']);var p2="kandan-local-codex-runner",h2="0.0.1";function uC(){return Object.fromEntries([["clientInfo",Object.fromEntries([["name",p2],["version",h2]])],["capabilities",Object.fromEntries([["experimentalApi",!0]])]])}var _2=new RegExp("\\bsession\\b.+\\bis archived\\b","i");function cC(e){return _2.test(e)}var g2=new RegExp("^thread not found(?:\\s*:|\\b)","i");function fC(e){return g2.test(e.trim())}function y2(e){try{e.unref();return}catch{return}}var pC="codex app-server websocket closed",b2="codex app-server websocket is not open";function v2(e){let t=e.method;if(typeof t=="string")return t}function S2(e){let t=e.error;if(t===void 0)return{TAG:"ResultReply",_0:k(e.result,null)};if(typeof t!="object"||t===null||Array.isArray(t))return{TAG:"ErrorReply",code:0,message:JSON.stringify(t)};let r=t.code,n=r!==void 0&&typeof r=="number"?r:0,i=t.message;return{TAG:"ErrorReply",code:n,message:typeof i=="string"?i:""}}function qf(e,t,r,n){let i=JSON.stringify(n);t(r,i);try{return e.socket.send(i),{TAG:"Ok",_0:void 0}}catch(o){let s=Q(o);return{TAG:"Error",_0:Ye(s).message}}}function yC(e,t,r){try{return t(r)}catch(n){let i=Q(n);return e("codex.notification_callback_failed",Object.fromEntries([["purpose","codex.app_server"],["method",r.method],["message",Ye(i).message]]))}}function hC(e,t,r){try{return t(r)}catch(n){let i=Q(n);return e("codex.close_callback_failed",Object.fromEntries([["purpose","codex.app_server"],["message",Ye(i).message]]))}}function w2(e,t){let r;if(t.TAG==="Ok")r=[["jsonrpc","2.0"],["id",e],["result",t._0]];else{let n=t._0;r=[["jsonrpc","2.0"],["id",e],["error",Object.fromEntries([["code",n[0]],["message",n[1]]])]]}return Object.fromEntries(r)}async function x2(e,t,r,n){let i={TAG:"Error",_0:[-32601,"unhandled Codex app-server request: "+n.method]},o=e.requestCallbacks.slice(),s,a=0;for(;uu(s)&&a<o.length;){let d=o[a];if(d!==void 0){let u=0,c;try{c=await d(n),u=1}catch(f){let p=Q(f);s={TAG:"Error",_0:[-32e3,Ye(p).message]}}u===1&&c!==void 0&&(s={TAG:"Ok",_0:c})}a=a+1|0}let l=k(s,i);qf(t,r,"outgoing",w2(n.id,l))}function k2(e,t,r,n,i){let o;try{o=JSON.parse(i)}catch(p){let m=Q(p);r("codex.app_server_frame_malformed",Object.fromEntries([["purpose","codex.app_server"],["message",Ye(m).message],["payload",i.slice(0,512)],["payloadChars",i.length]])),o=void 0}let s;if(o!==void 0){let p=0;typeof o=="object"&&o!==null&&!Array.isArray(o)?s=o:p=1,p===1&&(r("codex.app_server_frame_malformed",Object.fromEntries([["purpose","codex.app_server"],["message","codex app-server sent non-object JSON-RPC message"],["payload",i.slice(0,512)],["payloadChars",i.length]])),s=void 0)}else s=void 0;if(s===void 0)return;let a=Or(s.id),l=a&&(Or(s.result)||Or(s.error)),d=v2(s);if(l){let p=k(s.id,null),m=JSON.stringify(p),h=e.pending[m];return h!==void 0?(dr(e.pending,m),h.resolvePending({TAG:"Ok",_0:S2(s)})):void 0}if(a)if(d!==void 0){yn(x2(e,t,n,{id:k(s.id,null),method:d,params:s.params}),p=>Promise.resolve());return}else return;if(d===void 0)return;let u=s.params,c={method:d,params:u};e.notificationCallbacks.length!==0?e.notificationCallbacks.forEach(p=>yC(r,p,c)):e.pendingNotifications.push(c)}function T2(e,t,r){return Object.fromEntries(r!==void 0?[["jsonrpc","2.0"],["id",e],["method",t],["params",r]]:[["jsonrpc","2.0"],["id",e],["method",t]])}function _C(e,t){return Object.fromEntries(t!==void 0?[["jsonrpc","2.0"],["method",e],["params",t]]:[["jsonrpc","2.0"],["method",e]])}function gC(e,t,r,n,i,o){return t.socket.readyState()===ks?new Promise((s,a)=>{e.pending[JSON.stringify(n)]={resolvePending:s};let l=qf(t,r,"request",T2(n,i,o));l.TAG!=="Ok"&&(dr(e.pending,JSON.stringify(n)),s({TAG:"Error",_0:l._0}))}):Promise.resolve({TAG:"Error",_0:b2})}async function bC(e,t,r,n){let i=t!==void 0?t:u=>({socket:Gf(u,[]),ping:void 0}),o=r!==void 0?r:2e3,s=n!==void 0?n:()=>Date.now(),a=s()+o,l,d="websocket open failed";for(;uu(l);){let u;try{u={TAG:"Ok",_0:i(e)}}catch(c){let f=Q(c);u={TAG:"Error",_0:Ye(f).message}}if(u.TAG==="Ok"){let c=u._0;if(await new Promise((f,p)=>{c.socket.on("SocketOpen",m=>f(!0)),c.socket.on("SocketError",m=>f(!1))}))l={TAG:"Ok",_0:c};else{try{c.socket.close()}catch{}s()>a&&(l={TAG:"Error",_0:d})}}else d=u._0,s()>a&&(l={TAG:"Error",_0:d})}return k(l,{TAG:"Error",_0:d})}async function vC(e,t){let r={pending:{},notificationCallbacks:[],requestCallbacks:[],pendingNotifications:[],closeCallbacks:[],nextId:1,closeError:void 0},n=t.audit,i=t.onWire,o=setInterval(()=>{let d=e.ping;if(d!==void 0&&e.socket.readyState()===ks)try{return d()}catch{return}},t.keepaliveIntervalMs);y2(o);let s=d=>{clearInterval(o);let u=Object.entries(r.pending);if(Object.entries(r.pending).forEach(p=>dr(r.pending,p[0])),u.forEach(p=>p[1].resolvePending({TAG:"Error",_0:d})),r.closeError!==void 0)return;r.closeError=d;let f=r.closeCallbacks.slice();r.closeCallbacks.splice(0,r.closeCallbacks.length),f.forEach(p=>hC(n,p,d))};e.socket.on("SocketClose",d=>s(pC)),e.socket.on("SocketError",d=>s(pC)),e.socket.on("SocketMessage",d=>{let u=d.data;if(u!==void 0)return i("incoming",u),k2(r,e,n,i,u)});let a=await gC(r,e,i,"initialize","initialize",uC());if(a.TAG!=="Ok")return{TAG:"Error",_0:a._0};let l=a._0;return l.TAG!=="ResultReply"?{TAG:"Error",_0:"codex initialize failed: "+l.message}:(qf(e,i,"outgoing",_C("initialized",void 0)),{TAG:"Ok",_0:{request:(d,u)=>{let c=r.nextId;return r.nextId=r.nextId+1|0,gC(r,e,i,c,d,u)},notify:(d,u)=>{qf(e,i,"outgoing",_C(d,u))},onNotification:d=>{r.notificationCallbacks.push(d);let u=r.pendingNotifications.slice();r.pendingNotifications.splice(0,r.pendingNotifications.length),u.forEach(c=>yC(n,d,c))},onRequest:d=>{r.requestCallbacks.push(d)},onClose:d=>{let u=r.closeError;if(u!==void 0)return hC(n,d,u);r.closeCallbacks.push(d)},isClosed:()=>Or(r.closeError),close:()=>{clearInterval(o);try{return e.socket.close()}catch{return}}}})}import*as SC from"node:os";import*as ko from"node:path";function rb(e){let t=zs(e,"LINZUMI_CONTROL_CURSOR_DIR");return t!==void 0&&t.trim()!==""?t.trim():ko.join(SC.homedir(),".linzumi","control-cursors")}var A2=new RegExp("[^A-Za-z0-9._-]+","g"),C2=new RegExp("^[-.]+|[-.]+$","g");function nb(e){let t=e.replace(A2,"-").replace(C2,"").slice(0,80),r=vn(e).slice(0,8);return(t===""?"runner":t)+"."+r}function wC(e,t){return ko.join(rb(t),nb(e)+".json")}function xC(e,t){return ko.join(rb(t),nb(e)+".start-turn.json")}function kC(e,t){return ko.join(rb(t),nb(e)+".source-seq.json")}function TC(e,t){return e+" "+t}function OC(e,t,r){return e+" "+t+" "+r}var AC="__control_epoch";function E2(e){let t;try{t=JSON.parse(e)}catch{t=void 0}if(t===void 0)return{TAG:"Error",_0:void 0};if(typeof t!="object"||t===null||Array.isArray(t))return{TAG:"Error",_0:void 0};let r={},n={contents:void 0};return Object.entries(t).forEach(i=>{let o=i[1],s=i[0];if(s===AC)if(typeof o=="string"&&o!==""){n.contents=o;return}else return;else if(typeof o=="number"&&er(o)&&o>=0){r[s]=o;return}else return}),{TAG:"Ok",_0:{cursors:r,epoch:n.contents}}}function P2(e,t){let r=Sr(e);if(r.TAG==="Ok"){let i=E2(r._0);return i.TAG==="Ok"?i._0:(t("control_cursor_store.corrupt_ignored",Object.fromEntries([["path",e]])),{cursors:{},epoch:void 0})}let n=r._0;return Vi(n,"ENOENT")||t("control_cursor_store.read_failed",Object.fromEntries([["path",e],["message",n.message]])),{cursors:{},epoch:void 0}}function $2(e,t){let r={};return t!==void 0&&(r[AC]=t),Object.entries(e).forEach(n=>{r[n[0]]=n[1]}),JSON.stringify(r)+`
|
|
323
|
+
`),{TAG:"Ok",_0:void 0})}async function ZA(e){let t=e.slice(1),r=e[0];if(r!==void 0)switch(r){case"--help":case"-h":return Mo(yu()),{TAG:"Ok",_0:void 0};case"config":return await YU(t);case"doctor":return await e2(t);case"server":return await XU(t);default:return{TAG:"Error",_0:"unknown linzumi mcp command: "+r}}else return Mo(yu()),{TAG:"Ok",_0:void 0}}function VA(e){if(typeof e=="number"&&e%1===0)return e}function r2(e){if(typeof e=="string")return e}function n2(e){let t=e.replaceAll("-","+").replaceAll("_","/");switch(t.length&3){case 2:return t+"==";case 3:return t+"=";default:return t}}function WA(e){let t=e.split(".")[1];if(t===void 0)return;let r=Buffer.from(n2(t),"base64").toString("utf8"),n;try{n=JSON.parse(r)}catch{n=void 0}if(typeof n=="object"&&n!==null&&!Array.isArray(n))return n}function HA(e){let t=WA(e);if(t===void 0)return{actorUserId:void 0,actorUsername:void 0};let r=VA(t.actor_id);return{actorUserId:r!==void 0?r:VA(t.sub),actorUsername:r2(t.actor_username)}}function KA(e){let t=x(WA(e),n=>n.workspace_scope),r=t!==void 0?Array.isArray(t)?Ne(t,n=>{if(typeof n=="string"&&n.trim()!=="")return n}):[]:[];if(r.length===1)return r[0]}function $d(){return k("1.0.135","0.0.0-unbundled")}function eb(){return"linzumi "+k("1.0.135","0.0.0-unbundled")}import*as $o from"node:os";import*as gm from"node:path";import*as pv from"node:crypto";function Ff(e){let t=parseFloat(e);if(!Number.isNaN(t))return t}function XA(e){return"local_runner:"+e}var i2="kandan-local-codex-runner",o2="rescript";function YA(e){let t={};t.clientName=i2,t.clientId=e.clientId;let r=e.machineFingerprint;t.machineFingerprint=r!==void 0?r:null,Object.entries(a0(e.machineFingerprintV2)).forEach(s=>{t[s[0]]=s[1]}),t.runnerPid=e.runnerPid,t.version=e.version,t.hostname=e.hostname,t.cwd=e.cwd;let n=e.workspace;t.workspace=n!==void 0?n:null;let i=e.channel;t.channel=i!==void 0?i:null,t.capabilities=e.capabilities;let o=e.generationOverlapEpoch;if(o!==void 0){let s={};s.epoch=o,s.overlap=!0,t.generation=s}return t.commander_impl=o2,t}function eC(e,t,r){let n={};return n.last_seq=r,t!==void 0&&(n.runner_id=e,n.thread_id=t),n}function yn(e,t){return e.catch(r=>t(Q(r)))}function rC(){let e=[],t=[],r={contents:!1},n=()=>{let s=e.shift();return s!==void 0?Promise.resolve({done:!1,value:s}):r.contents?Promise.resolve({done:!0}):new Promise((a,l)=>{t.push(a)})},i=()=>(r.contents=!0,Promise.resolve({done:!0})),o={};return o[Symbol.asyncIterator]=()=>({next:n,return:i}),{iterable:o,push:s=>{if(r.contents)return!1;let a=t.shift();return a!==void 0?(a({done:!1,value:s}),!0):(e.push(s),!0)},close:()=>{r.contents=!0,(()=>{for(;;){let a=t.shift();if(a===void 0)return;a({done:!0})}})()}}}function nC(e){return import(e)}var a2="@anthropic-ai/claude-agent-sdk";function iC(e){return rC()}function l2(e){return{next:()=>e.next(),close:()=>{e.close()},interrupt:()=>e.interrupt(),setModel:t=>e.setModel(t),setPermissionMode:t=>e.setPermissionMode(t),applyFlagSettings:t=>e.applyFlagSettings(t),supportedCommands:()=>e.supportedCommands()}}async function oC(){let e=await nC(a2);return{query:t=>l2(e.query(t)),getSessionInfo:(t,r)=>e.getSessionInfo(t,r),listSessions:t=>e.listSessions(t),getSessionMessages:(t,r)=>e.getSessionMessages(t,r)}}var tb=["codex","claude-code","pi","opencode"];function xs(e){return e}function aC(e){switch(e.TAG){case"SessionStarted":return"session_started";case"TurnStarted":return"turn_started";case"ItemStarted":return"item_started";case"ItemDelta":return"item_delta";case"ItemCompleted":return"item_completed";case"ApprovalRequested":return"approval_requested";case"UsageUpdated":return"usage_updated";case"RateLimitUpdated":return"rate_limit_updated";case"ActivityPulse":return"activity_pulse";case"TurnCompleted":return"turn_completed";case"TurnFailed":return"turn_failed";case"TurnInterrupted":return"turn_interrupted";case"HarnessDied":return"harness_died"}}function dr(e,t){delete e[t]}function d2(e){switch(e){case"SocketOpen":return"open";case"SocketMessage":return"message";case"SocketClose":return"close";case"SocketError":return"error"}}function u2(e){let t=e.data,r;r=t==null||typeof t!="string"?void 0:t;let n=e.code,i;i=n==null||typeof n!="number"||(n|0)!==n?void 0:n|0;let o=e.reason,s;return s=o==null||typeof o!="string"?void 0:o,{data:r,code:i,reason:s}}function c2(e){return{readyState:()=>e.readyState,send:t=>{e.send(t)},close:()=>{e.close()},on:(t,r)=>{e.addEventListener(d2(t),n=>r(u2(n)),{})}}}function Gf(e,t){return c2(new WebSocket(e,t))}var lC=0,ks=1;var f2="file",m2=["mcp_oauth_credentials_store","cli_auth_credentials_store"],V8=m2.flatMap(e=>["-c",e+'="'+f2+'"']);var p2="kandan-local-codex-runner",h2="0.0.1";function uC(){return Object.fromEntries([["clientInfo",Object.fromEntries([["name",p2],["version",h2]])],["capabilities",Object.fromEntries([["experimentalApi",!0]])]])}var _2=new RegExp("\\bsession\\b.+\\bis archived\\b","i");function cC(e){return _2.test(e)}var g2=new RegExp("^thread not found(?:\\s*:|\\b)","i");function fC(e){return g2.test(e.trim())}function y2(e){try{e.unref();return}catch{return}}var pC="codex app-server websocket closed",b2="codex app-server websocket is not open";function v2(e){let t=e.method;if(typeof t=="string")return t}function S2(e){let t=e.error;if(t===void 0)return{TAG:"ResultReply",_0:k(e.result,null)};if(typeof t!="object"||t===null||Array.isArray(t))return{TAG:"ErrorReply",code:0,message:JSON.stringify(t)};let r=t.code,n=r!==void 0&&typeof r=="number"?r:0,i=t.message;return{TAG:"ErrorReply",code:n,message:typeof i=="string"?i:""}}function qf(e,t,r,n){let i=JSON.stringify(n);t(r,i);try{return e.socket.send(i),{TAG:"Ok",_0:void 0}}catch(o){let s=Q(o);return{TAG:"Error",_0:Ye(s).message}}}function yC(e,t,r){try{return t(r)}catch(n){let i=Q(n);return e("codex.notification_callback_failed",Object.fromEntries([["purpose","codex.app_server"],["method",r.method],["message",Ye(i).message]]))}}function hC(e,t,r){try{return t(r)}catch(n){let i=Q(n);return e("codex.close_callback_failed",Object.fromEntries([["purpose","codex.app_server"],["message",Ye(i).message]]))}}function w2(e,t){let r;if(t.TAG==="Ok")r=[["jsonrpc","2.0"],["id",e],["result",t._0]];else{let n=t._0;r=[["jsonrpc","2.0"],["id",e],["error",Object.fromEntries([["code",n[0]],["message",n[1]]])]]}return Object.fromEntries(r)}async function x2(e,t,r,n){let i={TAG:"Error",_0:[-32601,"unhandled Codex app-server request: "+n.method]},o=e.requestCallbacks.slice(),s,a=0;for(;uu(s)&&a<o.length;){let d=o[a];if(d!==void 0){let u=0,c;try{c=await d(n),u=1}catch(f){let p=Q(f);s={TAG:"Error",_0:[-32e3,Ye(p).message]}}u===1&&c!==void 0&&(s={TAG:"Ok",_0:c})}a=a+1|0}let l=k(s,i);qf(t,r,"outgoing",w2(n.id,l))}function k2(e,t,r,n,i){let o;try{o=JSON.parse(i)}catch(p){let m=Q(p);r("codex.app_server_frame_malformed",Object.fromEntries([["purpose","codex.app_server"],["message",Ye(m).message],["payload",i.slice(0,512)],["payloadChars",i.length]])),o=void 0}let s;if(o!==void 0){let p=0;typeof o=="object"&&o!==null&&!Array.isArray(o)?s=o:p=1,p===1&&(r("codex.app_server_frame_malformed",Object.fromEntries([["purpose","codex.app_server"],["message","codex app-server sent non-object JSON-RPC message"],["payload",i.slice(0,512)],["payloadChars",i.length]])),s=void 0)}else s=void 0;if(s===void 0)return;let a=Or(s.id),l=a&&(Or(s.result)||Or(s.error)),d=v2(s);if(l){let p=k(s.id,null),m=JSON.stringify(p),h=e.pending[m];return h!==void 0?(dr(e.pending,m),h.resolvePending({TAG:"Ok",_0:S2(s)})):void 0}if(a)if(d!==void 0){yn(x2(e,t,n,{id:k(s.id,null),method:d,params:s.params}),p=>Promise.resolve());return}else return;if(d===void 0)return;let u=s.params,c={method:d,params:u};e.notificationCallbacks.length!==0?e.notificationCallbacks.forEach(p=>yC(r,p,c)):e.pendingNotifications.push(c)}function T2(e,t,r){return Object.fromEntries(r!==void 0?[["jsonrpc","2.0"],["id",e],["method",t],["params",r]]:[["jsonrpc","2.0"],["id",e],["method",t]])}function _C(e,t){return Object.fromEntries(t!==void 0?[["jsonrpc","2.0"],["method",e],["params",t]]:[["jsonrpc","2.0"],["method",e]])}function gC(e,t,r,n,i,o){return t.socket.readyState()===ks?new Promise((s,a)=>{e.pending[JSON.stringify(n)]={resolvePending:s};let l=qf(t,r,"request",T2(n,i,o));l.TAG!=="Ok"&&(dr(e.pending,JSON.stringify(n)),s({TAG:"Error",_0:l._0}))}):Promise.resolve({TAG:"Error",_0:b2})}async function bC(e,t,r,n){let i=t!==void 0?t:u=>({socket:Gf(u,[]),ping:void 0}),o=r!==void 0?r:2e3,s=n!==void 0?n:()=>Date.now(),a=s()+o,l,d="websocket open failed";for(;uu(l);){let u;try{u={TAG:"Ok",_0:i(e)}}catch(c){let f=Q(c);u={TAG:"Error",_0:Ye(f).message}}if(u.TAG==="Ok"){let c=u._0;if(await new Promise((f,p)=>{c.socket.on("SocketOpen",m=>f(!0)),c.socket.on("SocketError",m=>f(!1))}))l={TAG:"Ok",_0:c};else{try{c.socket.close()}catch{}s()>a&&(l={TAG:"Error",_0:d})}}else d=u._0,s()>a&&(l={TAG:"Error",_0:d})}return k(l,{TAG:"Error",_0:d})}async function vC(e,t){let r={pending:{},notificationCallbacks:[],requestCallbacks:[],pendingNotifications:[],closeCallbacks:[],nextId:1,closeError:void 0},n=t.audit,i=t.onWire,o=setInterval(()=>{let d=e.ping;if(d!==void 0&&e.socket.readyState()===ks)try{return d()}catch{return}},t.keepaliveIntervalMs);y2(o);let s=d=>{clearInterval(o);let u=Object.entries(r.pending);if(Object.entries(r.pending).forEach(p=>dr(r.pending,p[0])),u.forEach(p=>p[1].resolvePending({TAG:"Error",_0:d})),r.closeError!==void 0)return;r.closeError=d;let f=r.closeCallbacks.slice();r.closeCallbacks.splice(0,r.closeCallbacks.length),f.forEach(p=>hC(n,p,d))};e.socket.on("SocketClose",d=>s(pC)),e.socket.on("SocketError",d=>s(pC)),e.socket.on("SocketMessage",d=>{let u=d.data;if(u!==void 0)return i("incoming",u),k2(r,e,n,i,u)});let a=await gC(r,e,i,"initialize","initialize",uC());if(a.TAG!=="Ok")return{TAG:"Error",_0:a._0};let l=a._0;return l.TAG!=="ResultReply"?{TAG:"Error",_0:"codex initialize failed: "+l.message}:(qf(e,i,"outgoing",_C("initialized",void 0)),{TAG:"Ok",_0:{request:(d,u)=>{let c=r.nextId;return r.nextId=r.nextId+1|0,gC(r,e,i,c,d,u)},notify:(d,u)=>{qf(e,i,"outgoing",_C(d,u))},onNotification:d=>{r.notificationCallbacks.push(d);let u=r.pendingNotifications.slice();r.pendingNotifications.splice(0,r.pendingNotifications.length),u.forEach(c=>yC(n,d,c))},onRequest:d=>{r.requestCallbacks.push(d)},onClose:d=>{let u=r.closeError;if(u!==void 0)return hC(n,d,u);r.closeCallbacks.push(d)},isClosed:()=>Or(r.closeError),close:()=>{clearInterval(o);try{return e.socket.close()}catch{return}}}})}import*as SC from"node:os";import*as ko from"node:path";function rb(e){let t=zs(e,"LINZUMI_CONTROL_CURSOR_DIR");return t!==void 0&&t.trim()!==""?t.trim():ko.join(SC.homedir(),".linzumi","control-cursors")}var A2=new RegExp("[^A-Za-z0-9._-]+","g"),C2=new RegExp("^[-.]+|[-.]+$","g");function nb(e){let t=e.replace(A2,"-").replace(C2,"").slice(0,80),r=vn(e).slice(0,8);return(t===""?"runner":t)+"."+r}function wC(e,t){return ko.join(rb(t),nb(e)+".json")}function xC(e,t){return ko.join(rb(t),nb(e)+".start-turn.json")}function kC(e,t){return ko.join(rb(t),nb(e)+".source-seq.json")}function TC(e,t){return e+" "+t}function OC(e,t,r){return e+" "+t+" "+r}var AC="__control_epoch";function E2(e){let t;try{t=JSON.parse(e)}catch{t=void 0}if(t===void 0)return{TAG:"Error",_0:void 0};if(typeof t!="object"||t===null||Array.isArray(t))return{TAG:"Error",_0:void 0};let r={},n={contents:void 0};return Object.entries(t).forEach(i=>{let o=i[1],s=i[0];if(s===AC)if(typeof o=="string"&&o!==""){n.contents=o;return}else return;else if(typeof o=="number"&&er(o)&&o>=0){r[s]=o;return}else return}),{TAG:"Ok",_0:{cursors:r,epoch:n.contents}}}function P2(e,t){let r=Sr(e);if(r.TAG==="Ok"){let i=E2(r._0);return i.TAG==="Ok"?i._0:(t("control_cursor_store.corrupt_ignored",Object.fromEntries([["path",e]])),{cursors:{},epoch:void 0})}let n=r._0;return Vi(n,"ENOENT")||t("control_cursor_store.read_failed",Object.fromEntries([["path",e],["message",n.message]])),{cursors:{},epoch:void 0}}function $2(e,t){let r={};return t!==void 0&&(r[AC]=t),Object.entries(e).forEach(n=>{r[n[0]]=n[1]}),JSON.stringify(r)+`
|
|
324
324
|
`}function Df(e,t,r,n){let i=r!==void 0?r:!1,o=n!==void 0?n:!1,s=P2(e,t),a=s.cursors,l={contents:s.epoch},d={contents:!1},u={contents:void 0},c=()=>{if(!d.contents)return;d.contents=!1;let m=$2(a,l.contents),h=e+".tmp",_=Ce(mr(ko.dirname(e)),()=>o?Ev(h,e,ko.dirname(e),m):Ce(Wi(h,m),()=>Hi(h,e)));if(_.TAG!=="Ok")return t("control_cursor_store.write_failed",Object.fromEntries([["path",e],["message",_._0.message]]))},f=()=>{if(d.contents=!0,u.contents!==void 0)return;let h=setTimeout(()=>{u.contents=void 0,c()},250);h.unref(),u.contents=mt(h)},p=()=>{let m=u.contents;m!==void 0&&(clearTimeout(se(m)),u.contents=void 0),c()};return{initial:m=>a[m],onAdvance:(m,h)=>{let _=a[m];_!==void 0&&h<=_||(a[m]=h,f())},reset:(m,h)=>{if(!de(a[m],h))return a[m]=h,f()},flush:p,epoch:()=>l.contents,adoptEpoch:m=>{if(de(l.contents,m))return!1;let h=l.contents!==void 0,_=!h&&i&&Object.entries(a).length!==0;return l.contents=m,(h||_)&&(_&&t("control_cursor_store.pre_epoch_seqs_discarded",Object.fromEntries([["path",e],["epoch",m],["discardedSeqs",Object.entries(a).length]])),Object.entries(a).forEach(g=>dr(a,g[0]))),f(),(h||_)&&p(),h}}}function CC(e,t,r,n,i){return{current:()=>e.epoch(),adopt:(o,s)=>{let a=e.epoch(),l=e.adoptEpoch(s),d=t.adoptEpoch(s),u=l||d;return u&&r("kandan.control_epoch_changed",Object.fromEntries([["runnerId",n],["kandanUrl",i],["topic",o],["previousEpoch",a!==void 0?a:null],["epoch",s],["controlCursorCleared",l],["startTurnWatermarksCleared",d]])),u}}}var W8=1800*1e3;var H8=new RegExp("[^A-Za-z0-9._-]+","g"),K8=new RegExp("^[-.]+|[-.]+$","g");function EC(e){return{initial:t=>e.initial(t),onAdvance:(t,r)=>e.onAdvance(t,r),flush:()=>e.flush()}}function ib(e,t){return e!==void 0?t>e:!0}function ob(e,t,r,n){if(n!==void 0){let i=e.initial(t);i!==void 0&&r<=i&&n("commander.invariant_violation",Object.fromEntries([["invariant","watermark_regression"],["thread_id",null],["harness",null],["detail","watermark_key="+t+" committed_source_seq="+r.toString()+" durable_floor="+i.toString()]]))}e.onAdvance(t,r),e.flush()}function PC(e){return e!==void 0?Array.isArray(e)?Ne(e,t=>{if(typeof t!="object"||t===null||Array.isArray(t))return;let r=t.threadId;if(r===void 0||typeof r!="string")return;let n=t.channelId,i;if(n!==void 0)switch(typeof n){case"string":i=n;break;case"number":i=n.toString();break;default:i=""}else i="";let o=t.highestProcessedSourceSeq,s=o!==void 0&&typeof o=="number"&&er(o)?o:void 0,a=t.leaseEpoch,l=a!==void 0&&typeof a=="number"&&er(a)?a:void 0;return{channelId:i,threadId:r,highestProcessedSourceSeq:s,leaseEpoch:l}}):[]:[]}function RC(){let e=new Map;return{current:t=>e.get(t),adopt:(t,r)=>{if(!er(r))return!1;let n=e.get(t);return n!==void 0&&(r<n||r===n)?!1:(e.set(t,r),!0)},release:t=>{e.delete(t)},snapshot:()=>e.entries().toArray().map(t=>({threadId:t[0],leaseEpoch:t[1]}))}}function Lf(e,t){let r=e[t];if(typeof r=="object"&&r!==null&&!Array.isArray(r))return r}function j2(e,t){let r=e[t];if(typeof r=="string")return r}function To(e,t){let r=e[t];if(r!==void 0&&typeof r=="number"&&isFinite(r)&&Math.round(r)===r)return r}function sb(e){return W(Lf(e,"usage"),t=>({inputTokens:To(t,"input_tokens"),outputTokens:To(t,"output_tokens"),cacheCreationInputTokens:To(t,"cache_creation_input_tokens"),cacheReadInputTokens:To(t,"cache_read_input_tokens")}))}function zC(){return{completed:{inputTokens:0,outputTokens:0,cacheCreationInputTokens:0,cacheReadInputTokens:0},current:void 0,lastEmittedKey:void 0}}function IC(e,t){let r=n=>t!==void 0?n(t):0;return{inputTokens:k(To(e,"input_tokens"),r(n=>n.inputTokens)),outputTokens:k(To(e,"output_tokens"),r(n=>n.outputTokens)),cacheCreationInputTokens:k(To(e,"cache_creation_input_tokens"),r(n=>n.cacheCreationInputTokens)),cacheReadInputTokens:k(To(e,"cache_read_input_tokens"),r(n=>n.cacheReadInputTokens))}}function MC(e){let t=(a,l)=>{let d=e.current;return a+(d!==void 0?l(d):0)},r=t(e.completed.inputTokens,a=>a.inputTokens),n=t(e.completed.outputTokens,a=>a.outputTokens),i=t(e.completed.cacheCreationInputTokens,a=>a.cacheCreationInputTokens),o=t(e.completed.cacheReadInputTokens,a=>a.cacheReadInputTokens),s=r.toString()+":"+n.toString()+":"+(i.toString()+":"+o.toString());if(!de(e.lastEmittedKey,s))return e.lastEmittedKey=s,{inputTokens:r,outputTokens:n,cacheCreationInputTokens:i,cacheReadInputTokens:o}}function jC(e,t){let r=x(t,n=>j2(n,"type"));if(r!==void 0)switch(r){case"message_delta":let n=x(t,s=>Lf(s,"usage"));return n!==void 0?(e.current=IC(n,e.current),MC(e)):void 0;case"message_start":let i=x(x(t,s=>Lf(s,"message")),s=>Lf(s,"usage"));if(i===void 0)return;let o=e.current;return o!==void 0&&(e.completed.inputTokens=e.completed.inputTokens+o.inputTokens,e.completed.outputTokens=e.completed.outputTokens+o.outputTokens,e.completed.cacheCreationInputTokens=e.completed.cacheCreationInputTokens+o.cacheCreationInputTokens,e.completed.cacheReadInputTokens=e.completed.cacheReadInputTokens+o.cacheReadInputTokens),e.current=IC(i,void 0),MC(e);default:return}}function Id(e){if(e<425){if(e===402||e===408)return"transient_upstream"}else{if(e===425)return"transient_upstream";if(e===429)return"rate_limited"}return e>=500&&e<=599?"transient_upstream":"deterministic"}function lb(e){return e==="Text"?"text":"thinking"}function GC(){return{activeMessageId:void 0,syntheticMessageCounter:0,completedMessageIds:[],consumedAssistantMessageIds:new Set,blocksByMessageId:{}}}function ab(e,t){let r=e[t];if(typeof r=="object"&&r!==null&&!Array.isArray(r))return r}function Oo(e,t){let r=e[t];if(typeof r=="string")return r}function FC(e,t){let r=e[t];if(r!==void 0&&typeof r=="number"&&isFinite(r)&&Math.round(r)===r)return r|0}function db(e,t){return e.syntheticMessageCounter=e.syntheticMessageCounter+1|0,"synthetic-claude-message:"+t+":"+e.syntheticMessageCounter.toString()}function F2(e,t){let r=e.activeMessageId;if(r!==void 0)return r;let n=db(e,t);return e.activeMessageId=n,n}function ub(e,t){return"claude-message:"+e+":content-block:"+t.toString()}function Uf(e,t,r,n){if(r===void 0)return;let i=F2(e,"orphan-stream-event"),o=e.blocksByMessageId[i],s;if(o!==void 0)s=o;else{let l=[];e.blocksByMessageId[i]=l,s=l}let a=s.find(l=>l.index===r);a!==void 0?a.content=a.content+k(n,""):s.push({kind:t,index:r,content:k(n,"")})}function qC(e,t){let r=x(t,n=>Oo(n,"type"));if(r!==void 0)switch(r){case"content_block_delta":let n=x(t,c=>ab(c,"delta")),i=x(t,c=>FC(c,"index")),o=x(n,c=>Oo(c,"type"));if(o!==void 0)switch(o){case"text_delta":Uf(e,"Text",i,x(n,c=>Oo(c,"text")));break;case"thinking_delta":Uf(e,"Thinking",i,x(n,c=>Oo(c,"thinking")));break}return e.activeMessageId;case"content_block_start":let s=x(t,c=>ab(c,"content_block")),a=x(t,c=>FC(c,"index")),l=x(s,c=>Oo(c,"type"));if(l!==void 0)switch(l){case"text":Uf(e,"Text",a,x(s,c=>Oo(c,"text")));break;case"thinking":Uf(e,"Thinking",a,x(s,c=>Oo(c,"thinking")));break}return e.activeMessageId;case"message_start":let d=x(x(t,c=>ab(c,"message")),c=>Oo(c,"id"));e.activeMessageId=d!==void 0?d:db(e,"missing-message-start-id");return;case"message_stop":let u=e.activeMessageId;u!==void 0&&!e.consumedAssistantMessageIds.has(u)&&e.completedMessageIds.push(u),e.activeMessageId=void 0;return;default:return}}function DC(e,t){if(t!==void 0){e.consumedAssistantMessageIds.add(t);let n=Ro(e.completedMessageIds,t);return n!==void 0&&e.completedMessageIds.splice(n,1),t}let r=e.completedMessageIds.shift();return r!==void 0?(e.consumedAssistantMessageIds.add(r),r):db(e,"missing-assistant-frame-id")}function LC(e,t){let r=e.blocksByMessageId[t];return r!==void 0?(dr(e.blocksByMessageId,t),r.toSorted((n,i)=>ou(n.index,i.index))):[]}function UC(e,t){let r=e[t];if(typeof r=="object"&&r!==null&&!Array.isArray(r))return r}function cb(e,t){let r=e[t];if(typeof r=="string")return r}function fb(e,t){let r=e[t];if(r!==void 0&&typeof r=="number"&&isFinite(r))return r}function q2(e){if(e===void 0||e<0)return;let t=e<=1?e*100:e;return Math.min(100,Math.round(t))}function D2(e){if(e!==void 0&&e>0)return e>1e12?Math.round(e):Math.round(e*1e3)}function mb(e){let t=cb(e,"status"),r=cb(e,"rateLimitType"),n=r!==void 0?r:cb(e,"rate_limit_type"),i=q2(fb(e,"utilization")),o=fb(e,"resetsAt"),s=D2(o!==void 0?o:fb(e,"resets_at"));if(!(t===void 0&&i===void 0&&s===void 0))return{status:t,windowLabel:n,utilizationPercent:i,resetsAtMs:s}}function ZC(e){let t=UC(e,"rate_limit_info");if(t!==void 0)return mb(t);let r=UC(e,"rate_limit");return mb(r!==void 0?r:e)}var U2="edge_blocked";function Z2(e){let t=e.toLowerCase(),r=t.includes("<html")||t.includes("<!doctype html"),n=t.includes("cloudflare");return t.includes("sorry, you have been blocked")||t.includes("attention required")&&n||t.includes("cf_chl_")||t.includes("challenge-platform")||t.includes("just a moment")&&(n||t.includes("cf-"))?!0:r?t.includes("cloudflare ray id")||t.includes("cf-ray")?!0:n?t.includes("blocked"):!1:!1}function WC(e,t){let r=e.exec(t);if(r==null)return;let n=r.slice(1)[0];if(n===void 0)return;let i=se(n);if(i!==void 0)return i}var V2=[new RegExp("\\bAPI Error:?\\s*([1-5]\\d{2})\\b","i"),new RegExp("\\b(?:HTTP|status(?:\\s+code)?)[\\s:]+([1-5]\\d{2})\\b","i")],W2=[new RegExp('"request[_-]id"\\s*:\\s*"([^"]{1,128})"',"i"),new RegExp('\\brequest[_ -]id[:=]\\s*"?([A-Za-z0-9_-]{6,128})',"i"),new RegExp("\\b(req_[A-Za-z0-9]{6,})\\b")],H2=new RegExp('"error"\\s*:\\s*\\{[^{}]*?"message"\\s*:\\s*"((?:[^"\\\\]|\\\\.){1,500})"');function VC(e,t){return We(e,void 0,(r,n)=>r!==void 0?r:WC(n,t))}function K2(e){let t;try{t=JSON.parse('"'+e+'"')}catch{return e}return typeof t=="string"?t:e}function B2(e){let t=WC(H2,e),n=(t!==void 0?K2(t):e).trim();return n.length<=200?n:n.slice(0,199)+"\u2026"}function HC(e){return{status:x(VC(V2,e),t=>kl(t,void 0)),requestId:VC(W2,e),edgeBlocked:Z2(e),message:B2(e)}}function pb(e){return Or(e.status)||Or(e.requestId)?!0:e.edgeBlocked}function KC(e,t){let r=[],n=t.status;n!==void 0&&r.push("HTTP "+n.toString());let i=t.requestId;return i!==void 0&&r.push("request "+i),t.edgeBlocked&&r.push("blocked at the network edge by Cloudflare before reaching Linzumi - our infrastructure, not your usage; retrying usually succeeds "+("[failure_class="+U2+"]")),r.length!==0?e+" ("+r.join(", ")+")":e}function BC(e){let t={},r=e.status;t.status=r!==void 0?r:null;let n=e.requestId;return t.request_id=n!==void 0?n:null,t.edge_blocked=e.edgeBlocked,t.message=e.message,t}function XC(e,t,r){return{emitEvent:r,announcedSessionId:e,onSessionStarted:t,sessionAnnounced:!1,pendingTurnIds:[],startedTurns:new Set,terminalTurns:new Set,startedItems:new Set,activeTurnId:void 0,mintedTurnCount:0,usage:zC(),identity:GC()}}function ja(e,t){let r=e[t];if(typeof r=="object"&&r!==null&&!Array.isArray(r))return r}function kt(e,t){let r=e[t];if(typeof r=="string")return r}function JC(e,t){let r=e[t];if(typeof r=="boolean")return r}function hb(e,t){let r=e[t];if(Array.isArray(r))return r}function Ao(e){if(e===void 0)return;let t=e.trim();if(t!=="")return t}function Q2(e){let t=kt(e,"session_id"),r=t!==void 0?t:kt(e,"sessionId");if(r!==void 0)return r;let n=ja(e,"message");if(n===void 0)return;let i=kt(n,"session_id");return i!==void 0?i:kt(n,"sessionId")}function X2(e,t){if(e.sessionAnnounced)return!1;let r=Q2(t);if(r===void 0)return!1;let n=e.announcedSessionId,i=n!==void 0?n:r;return e.sessionAnnounced=!0,e.emitEvent({TAG:"SessionStarted",harnessSessionId:i}),e.onSessionStarted(i),!0}function Md(e,t){return e.startedTurns.has(t)?!e.terminalTurns.has(t):!1}var YC=Md;function eE(e){let t=e.activeTurnId;return t!==void 0?Md(e,t):!1}function tE(e,t){e.mintedTurnCount=e.mintedTurnCount+1|0;let r="claude:"+t+":turn:"+e.mintedTurnCount.toString();return e.pendingTurnIds.push(r),r}function Na(e){let t=e.activeTurnId;if(t!==void 0&&Md(e,t))return t;let r=e.pendingTurnIds.shift(),n=r!==void 0?r:(e.mintedTurnCount=e.mintedTurnCount+1|0,"claude-adapter-turn-"+e.mintedTurnCount.toString());return e.startedTurns.add(n),e.activeTurnId=n,e.emitEvent({TAG:"TurnStarted",turnId:n}),n}function _b(e,t){if(e.terminalTurns.add(t),de(e.activeTurnId,t)){e.activeTurnId=void 0;return}}function QC(e){return e.turnId+"/"+e.itemId+"/"+e.streamKind}function gb(e,t){if(!e.startedItems.has(QC(t)))return e.startedItems.add(QC(t)),e.emitEvent({TAG:"ItemStarted",item:t})}function yb(e,t,r){gb(e,t),e.emitEvent({TAG:"ItemCompleted",item:t,content:r})}function Y2(e,t,r){gb(e,t),e.emitEvent({TAG:"ItemDelta",item:t,delta:r})}function Ts(e,t){let r=e.activeTurnId;if(k(W(r,n=>Md(e,n)),!0))return e.emitEvent({TAG:"ActivityPulse",turnId:r,signalKind:t})}function eZ(e,t){let r=Ne(k(hb(e,"errors"),[]),s=>{if(typeof s=="string")return Ao(s)}).join("; "),n=Ao(r);if(n!==void 0)return n;let i=Ao(kt(e,"result"));if(i!==void 0)return i;let o=Ao(kt(e,"error"));return o!==void 0?o:k(t,"error")}function tZ(e){let t=kt(e,"subtype"),r=k(JC(e,"is_error"),!1),n=de(t,"interrupt")||de(t,"error_interrupted")||k(JC(e,"is_interrupt"),!1),i=r||de(t,"error_max_turns")||de(t,"error_during_execution");return n?"Interrupted":i?{TAG:"Errored",reason:eZ(e,t)}:"Success"}function rZ(e,t){let r=HC(t),n=r.status;return{fate:e!==void 0?e==="error_max_turns"?"deterministic":n!==void 0?Id(n):"transient_upstream":n!==void 0?Id(n):"transient_upstream",reason:pb(r)?KC("Claude Code failed: "+t,r):"Claude Code failed: "+t,providerDetail:pb(r)?BC(r):void 0}}function nZ(e,t){let r=kt(e,"id");if(r!==void 0)return r;let n=kt(e,"tool_use_id");return n!==void 0?n:"content-block-"+t.toString()}function iZ(e){return e==="Text"?"assistant":"reasoning"}function oZ(e){let t={};t.type=lb(e.kind);let r=e.kind,n;return n=r==="Text"?"text":"thinking",t[n]=e.content,t}function sZ(e,t){let r=Na(e),n=ja(t,"message"),i=k(x(n,y=>hb(y,"content")),[]),o=DC(e.identity,x(n,y=>kt(y,"id"))),a=LC(e.identity,o).filter(y=>y.content.trim()!==""),l={};a.forEach(y=>{let v=lb(y.kind),S=l[v];S!==void 0?S.push(y.index):l[v]=[y.index]});let d={};i.forEach((y,v)=>{let S;if(S=typeof y=="object"&&y!==null&&!Array.isArray(y)?kt(y,"type"):void 0,S===void 0)return;switch(S){case"text":case"thinking":break;default:return}let A=k(S,""),C=d[A];C!==void 0?C.push(v):d[A]=[v]});let u=new Set;a.forEach(y=>{u.add(y.index)});let c=(y,v)=>{let S=k(d[y],[]),A=Ro(S,v);A!==void 0&&S.splice(A,1);let C=k(l[y],[]),V=C[0];if(V!==void 0&&v<V)return C.shift(),!0;let re=Ro(C,v);if(re!==void 0)return C.splice(re,1),!0;let fe=au(C,J=>!S.includes(J));return fe!==void 0?(C.splice(fe,1),!0):!1},f=y=>{if(u.has(y)){let v=y+1|0;for(;u.has(v);)v=v+1|0;return u.add(v),v}return u.add(y),y},p=(y,v)=>({turnId:r,itemId:ub(o,y),streamKind:v}),m=[];a.forEach(y=>{m.push({index:y.index,events:[[p(y.index,iZ(y.kind)),oZ(y)]]})}),i.forEach((y,v)=>{if(typeof y!="object"||y===null||Array.isArray(y))return;let S=kt(y,"type");if(S!==void 0)switch(S){case"text":if(c("text",v))return;if(Ao(kt(y,"text"))!==void 0){m.push({index:v,events:[[p(f(v),"assistant"),y]]});return}else return;case"thinking":if(c("thinking",v))return;if(Ao(kt(y,"thinking"))!==void 0){m.push({index:v,events:[[p(f(v),"reasoning"),y]]});return}else return;case"tool_use":m.push({index:v,events:[[{turnId:r,itemId:nZ(y,v),streamKind:"command_output"},y]]});return;default:return}});let h=i.some(y=>typeof y=="object"&&y!==null&&!Array.isArray(y)?de(kt(y,"type"),"text"):!1),_=a.some(y=>y.kind==="Text"),g=h||_,b=Ao(kt(t,"text"));return g||b===void 0||m.push({index:i.length,events:[[p(f(i.length),"assistant"),b]]}),m.toSorted((y,v)=>ou(y.index,v.index)).flatMap(y=>y.events)}function aZ(e){if(e!==void 0&&e!=="")return e}function lZ(e,t){let r=ja(t,"event"),n=jC(e.usage,r),i=qC(e.identity,r),o={contents:!1};if(n!==void 0){let d=Na(e);e.emitEvent({TAG:"UsageUpdated",turnId:d,usage:n}),o.contents=!0}let s=(d,u)=>W(i,c=>({turnId:Na(e),itemId:ub(c,d),streamKind:u})),a=d=>{let u=d.index;if(u!==void 0&&typeof u=="number"&&isFinite(u)&&Math.round(u)===u)return u|0},l=x(r,d=>kt(d,"type"));if(l!==void 0)switch(l){case"content_block_delta":let d=x(r,b=>ja(b,"delta")),u=x(r,a),c=(b,y)=>{let v=aZ(y);if(u===void 0||v===void 0)return;let S=s(u,b);if(S!==void 0){Y2(e,S,v),o.contents=!0;return}},f=x(d,b=>kt(b,"type")),p=0;f==="thinking_delta"?c("reasoning",x(d,b=>kt(b,"thinking"))):p=1,p===1&&c("assistant",x(d,b=>kt(b,"text")));break;case"content_block_start":let m=x(r,b=>ja(b,"content_block")),h=x(r,a),_=(b,y,v)=>{let S=Ao(y);if(h===void 0||S===void 0)return;let A=s(h,b);if(A!==void 0){yb(e,A,v),o.contents=!0;return}},g=x(m,b=>kt(b,"type"));if(g!==void 0)switch(g){case"text":_("assistant",x(m,b=>kt(b,"text")),k(W(m,b=>b),null));break;case"thinking":_("reasoning",x(m,b=>kt(b,"thinking")),k(W(m,b=>b),null));break}break}if(!o.contents)return Ts(e,"stream_event")}function dZ(e,t){let r=ja(t,"message"),n=k(x(r,o=>hb(o,"content")),[]),i={contents:!1};if(n.forEach((o,s)=>{if(typeof o!="object"||o===null||Array.isArray(o)||!de(kt(o,"type"),"tool_result"))return;let a=Na(e),l=kt(o,"tool_use_id"),d;if(l!==void 0)d=l;else{let u=kt(o,"id");d=u!==void 0?u:"content-block-"+s.toString()}yb(e,{turnId:a,itemId:d,streamKind:"command_output"},o),i.contents=!0}),!i.contents)return Ts(e,"user")}function uZ(e,t){_b(e,t),e.emitEvent({TAG:"TurnCompleted",turnId:t})}function cZ(e,t,r){_b(e,t),e.emitEvent({TAG:"TurnInterrupted",turnId:t,reason:r})}function fZ(e,t,r){_b(e,t),e.emitEvent({TAG:"TurnFailed",turnId:t,failure:r})}function mZ(e,t){let r=tZ(t);if(typeof r!="object"){if(r==="Success"){let i=Na(e),o=sb(t);return o!==void 0&&e.emitEvent({TAG:"UsageUpdated",turnId:i,usage:o}),uZ(e,i)}let n=e.activeTurnId;return n!==void 0&&Md(e,n)?cZ(e,n,void 0):void 0}else{let n=Na(e),i=sb(t);return i!==void 0&&e.emitEvent({TAG:"UsageUpdated",turnId:n,usage:i}),fZ(e,n,rZ(kt(t,"subtype"),r.reason))}}function rE(e,t){if(typeof t!="object"||t===null||Array.isArray(t))return;let r=X2(e,t),n=kt(t,"type");if(n!==void 0)switch(n){case"assistant":sZ(e,t).forEach(s=>{let a=s[0];return a.streamKind==="command_output"?gb(e,a):yb(e,a,s[1])});return;case"rate_limit_event":let i=ZC(t);return i!==void 0?e.emitEvent({TAG:"RateLimitUpdated",rateLimit:i}):Ts(e,"rate_limit_event");case"result":return mZ(e,t);case"stream_event":return lZ(e,t);case"system":let o=kt(t,"subtype");return o!==void 0?o==="init"?r?void 0:Ts(e,"system:init"):Ts(e,"system:"+o):Ts(e,"system");case"user":return dZ(e,t);default:return Ts(e,n)}}var hZ=["liveModelSwitch","liveEffortSwitch","sessionHistoryListing","slashCommandCatalog"];function Fa(e){let t=nr(e);return t!==void 0?k(fr(se(t)),"unknown error"):"unknown error"}function nE(e){if(e===void 0)return{TAG:"Ok",_0:void 0};switch(e){case"never":return{TAG:"Ok",_0:"bypassPermissions"};case"on-failure":return{TAG:"Ok",_0:"acceptEdits"};case"on-request":case"untrusted":return{TAG:"Ok",_0:"default"};default:return{TAG:"Error",_0:"unsupported Claude Code approval policy: "+e}}}function sE(e){let t=W(e,r=>r.trim().toLowerCase());if(t===void 0)return"EffortNotApplied";switch(t){case"default":return"ClearEffort";case"high":return{TAG:"SetEffort",_0:"high"};case"low":return{TAG:"SetEffort",_0:"low"};case"medium":return{TAG:"SetEffort",_0:"medium"};case"xhigh":return{TAG:"SetEffort",_0:"xhigh"};default:return"EffortNotApplied"}}function _Z(e){let t=e.attachments.length,r;if(t!==0){let o={};o.type="text",o.text=e.text,r=[o].concat(e.attachments)}else r=e.text;let n={};n.role="user",n.content=r;let i={};return i.type="user",i.message=n,i.parent_tool_use_id=null,i}function gZ(e,t,r){let n={};return n.tool_name=e,n.input=t,r!==void 0&&(n.suggestions=r),n}function yZ(e,t){let r={};return r.behavior="allow",r.toolUseID=e,r.updatedInput=t,r}function aE(e,t){let r={};return r.behavior="deny",r.message=k(t,"denied by the approval bridge"),r.toolUseID=e,r}function iE(e){return{harnessSessionId:e.harnessSessionId,dispatchTurn:async t=>{if(e.stopped)return{TAG:"Error",_0:{fate:"transient_local",reason:"the session is stopped; no turn can be dispatched",providerDetail:void 0}};let r;if(t.model===e.currentModel)r={TAG:"Ok",_0:void 0};else try{await e.connection.setModel(t.model),e.currentModel=t.model,r={TAG:"Ok",_0:void 0}}catch(a){let l=Q(a);r={TAG:"Error",_0:{fate:"transient_local",reason:"setModel failed: "+Fa(l),providerDetail:void 0}}}if(r.TAG!=="Ok")return{TAG:"Error",_0:r._0};let n=sE(t.reasoningEffort),i;if(typeof n!="object")if(n==="ClearEffort"&&Or(e.currentEffort))try{let a={};a.effortLevel=null,await e.connection.applyFlagSettings(a),e.currentEffort=void 0,i={TAG:"Ok",_0:void 0}}catch(a){let l=Q(a);i={TAG:"Error",_0:{fate:"transient_local",reason:"applyFlagSettings failed: "+Fa(l),providerDetail:void 0}}}else i={TAG:"Ok",_0:void 0};else{let a=n._0;if(Zi(a,e.currentEffort))try{let l={};l.effortLevel=a,await e.connection.applyFlagSettings(l),e.currentEffort=a,i={TAG:"Ok",_0:void 0}}catch(l){let d=Q(l);i={TAG:"Error",_0:{fate:"transient_local",reason:"applyFlagSettings failed: "+Fa(d),providerDetail:void 0}}}else i={TAG:"Ok",_0:void 0}}if(i.TAG!=="Ok")return{TAG:"Error",_0:i._0};let o=tE(e.projector,e.harnessSessionId);if(e.input.push(_Z(t.input)))return{TAG:"Ok",_0:{turnId:o}};let s=Ro(e.projector.pendingTurnIds,o);return s!==void 0&&e.projector.pendingTurnIds.splice(s,1),{TAG:"Error",_0:{fate:"transient_local",reason:"the streaming input is closed; no turn can be dispatched",providerDetail:void 0}}},steerTurn:(t,r)=>Promise.resolve({TAG:"Error",_0:{TAG:"NotSupported",capability:"midTurnSteer"}}),interruptTurn:async t=>{if(!YC(e.projector,t))return{TAG:"Ok",_0:void 0};try{return await e.connection.interrupt(),{TAG:"Ok",_0:void 0}}catch(r){let n=Q(r);return{TAG:"Error",_0:{fate:"transient_local",reason:"interrupt failed: "+Fa(n),providerDetail:void 0}}}},respondToApproval:(t,r)=>{let n=au(e.pendingApprovals,s=>s.requestId===t),i=x(n,s=>e.pendingApprovals[s]);if(i===void 0)return Promise.resolve({TAG:"Error",_0:{fate:"deterministic",reason:"no unresolved approval request with id "+t,providerDetail:void 0}});n!==void 0&&e.pendingApprovals.splice(n,1);let o;if(r.TAG==="Approve"){let s=r.updatedInput;o=yZ(t,s!==void 0?s:i.toolInput)}else o=aE(t,r.message);return i.resolveDecision(o),Promise.resolve({TAG:"Ok",_0:void 0})},injectContext:t=>Promise.resolve({TAG:"Error",_0:{TAG:"NotSupported",capability:"sessionContextInjection"}}),archiveSession:()=>Promise.resolve({TAG:"Error",_0:{TAG:"NotSupported",capability:"sessionArchiveRestore"}}),unarchiveSession:()=>Promise.resolve({TAG:"Error",_0:{TAG:"NotSupported",capability:"sessionArchiveRestore"}}),stopSession:()=>(e.stopped||(e.stopped=!0,e.input.close(),e.connection.close()),Promise.resolve())}}function oE(e,t,r,n,i){let o=iC(),s={contents:void 0},a=J=>{let K=s.contents;if(!(K!==void 0&&K.stopped))return i(J)},l={contents:void 0},d=new Promise((J,K)=>{l.contents=J}),u=J=>{let K=l.contents;if(K!==void 0)return l.contents=void 0,K(J)},c=XC(n,J=>u({TAG:"Ok",_0:J}),a),f=(J,K,ae)=>new Promise((z,Z)=>{let $=ae.toolUseID,I=s.contents;return I!==void 0?(I.pendingApprovals.push({requestId:$,toolInput:K,resolveDecision:z}),a({TAG:"ApprovalRequested",request:{requestId:$,turnId:c.activeTurnId,kind:"canUseTool",summary:J,payload:gZ(J,K,Qn(ae.suggestions))}})):z(aE($,"approval bridge not ready"))}),p=sE(t.reasoningEffort),m;m=typeof p!="object"?void 0:p._0;let h=e.env,_=Object.entries(t.environment).length,g,b=0;if(h!==void 0||_!==0?b=1:g=void 0,b===1){let J={};h!==void 0?Object.entries(h).forEach(K=>{J[K[0]]=K[1]}):Object.entries(process.env).forEach(K=>{J[K[0]]=K[1]}),Object.entries(t.environment).forEach(K=>{J[K[0]]=K[1]}),g=J}let y={};y.type="preset",y.preset="claude_code";let v={};v.type="preset",v.preset="claude_code";let S=t.developerInstructions;S!==void 0&&(v.append=S);let A;A=r==="bypassPermissions"?!0:void 0;let C=e.sdk.query({prompt:o.iterable,options:{cwd:t.cwd,model:t.model,persistSession:!0,includePartialMessages:!0,tools:y,settingSources:["user","project","local"],systemPrompt:v,resume:n,permissionMode:r,allowDangerouslySkipPermissions:A,effort:m,env:g,canUseTool:f}}),V={harnessSessionId:k(n,""),currentModel:t.model,currentEffort:m,input:o,connection:C,projector:c,pendingApprovals:[],stopped:!1,diedReported:!1};s.contents=V;let re=J=>{if(!(V.stopped||V.diedReported))return V.diedReported=!0,e.audit("claude.sdk_stream_died",Object.fromEntries([["reason",J]])),a({TAG:"HarnessDied",failure:{fate:"transient_local",reason:J,providerDetail:void 0}})};return(async()=>{let J=!0;for(;J;){let K;try{K=await V.connection.next()}catch(ae){let z=Q(ae);J=!1;let Z="Claude Code SDK stream threw: "+Fa(z);u({TAG:"Error",_0:{fate:"transient_local",reason:Z,providerDetail:void 0}}),re(Z),K=void 0}if(K!==void 0)if(K.done){J=!1;let ae=eE(V.projector)?"Claude Code stopped mid-turn: the SDK stream ended before the turn produced a final response. The turn was failed instead of being reported complete - retry the message to continue.":"Claude Code SDK stream ended while the session was idle";u({TAG:"Error",_0:{fate:"transient_local",reason:"Claude Code SDK stream ended before the session started",providerDetail:void 0}}),re(ae)}else rE(V.projector,K.value)}})(),{state:V,started:d}}function lE(e){let t=[];return{harness:"claude-code",capabilities:hZ,startSession:async(i,o)=>{let s=nE(i.approvalPolicy);if(s.TAG!=="Ok")return{TAG:"Error",_0:{fate:"deterministic",reason:s._0,providerDetail:void 0}};let a=oE(e,i,s._0,void 0,o),l=await a.started;return l.TAG==="Ok"?(a.state.harnessSessionId=l._0,t.push(a.state),{TAG:"Ok",_0:iE(a.state)}):(a.state.input.close(),a.state.connection.close(),{TAG:"Error",_0:l._0})},attachSession:async(i,o,s)=>{let a=nE(o.approvalPolicy);if(a.TAG!=="Ok")return{TAG:"Error",_0:{fate:"deterministic",reason:a._0,providerDetail:void 0}};let l={};l.dir=o.cwd;let d;try{let f=await e.sdk.getSessionInfo(i,l);d={TAG:"Ok",_0:Or(f==null?void 0:mt(f))}}catch(f){let p=Q(f);d={TAG:"Error",_0:{fate:"transient_local",reason:"getSessionInfo failed: "+Fa(p),providerDetail:void 0}}}if(d.TAG!=="Ok")return{TAG:"Error",_0:d._0};if(!d._0)return{TAG:"Error",_0:{fate:"deterministic",reason:"Claude Code session "+i+" was not found for "+o.cwd,providerDetail:void 0}};let u=oE(e,o,a._0,i,s),c=await u.started;return c.TAG==="Ok"?(u.state.harnessSessionId=c._0,t.push(u.state),{TAG:"Ok",_0:iE(u.state)}):(u.state.input.close(),u.state.connection.close(),{TAG:"Error",_0:c._0})},reap:()=>(t.forEach(i=>{if(!i.stopped)return i.stopped=!0,i.input.close(),i.connection.close()}),t.splice(0,t.length),Promise.resolve())}}import*as Zf from"node:path";function bb(e){switch(e){case"rescript":return"Rescript";case"ts":return"Ts";default:return}}function Ga(e){return e==="Ts"?"ts":"rescript"}function vb(e){return Zf.join(e,".linzumi","commanderImpl")}function dE(e){let t=Sr(e);if(t.TAG==="Ok")return bb(t._0.trim())}function uE(e,t){let r=e+".tmp."+process.pid.toString()+"."+mu(6);return Ce(mr(Zf.dirname(e)),()=>{let n=Ce(Wi(r,Ga(t)+`
|
|
325
325
|
`),()=>Hi(r,e));return n.TAG==="Ok"?{TAG:"Ok",_0:void 0}:(Yn(r),{TAG:"Error",_0:n._0})})}function fE(e,t){return e!==void 0?t<=e:!1}function mE(e,t,r){e.onAdvance(t,r),e.flush()}function cE(e){let t=nr(e);if(t===void 0)return String(e);let r=se(t),n=fr(r);return n!==void 0?n:String(r)}function pE(e,t,r,n,i){let o;try{o={TAG:"Ok",_0:t()}}catch(s){o={TAG:"Error",_0:Q(s)}}if(o.TAG==="Ok"){let s=o._0;if(s.TAG==="Returned")return r();yn(s._0.then(a=>r()),a=>{let l=W(i,u=>u(a)),d=0;return l!==void 0&&l!=="Withhold"?r():d=1,d===1&&n("kandan.control_ack_withheld_on_failure",Object.fromEntries([["controlType",e],["message",cE(a)]])),Promise.resolve()});return}n("kandan.control_handler_threw",Object.fromEntries([["controlType",e],["message",cE(o._0)]])),r()}function hE(e,t){return x(e[t],hr)}function _E(e,t){return x(e[t],Lo)}function gE(e,t){return x(e[t],De)}function wZ(e){if(typeof e!="object"||e===null||Array.isArray(e))return;let t=e.status,r=e.response;if(t==="ok"&&typeof r=="object"&&r!==null&&!Array.isArray(r))return r}function xZ(e){let t=De(e);if(t===void 0)return;let r=k(gE(t,"payload"),{}),n=hE(t,"body"),i;if(n!==void 0)i=n;else{let a=x(r.body,hr);i=a!==void 0?a:x(r.text,hr)}let o=_E(t,"seq");if(o===void 0||i===void 0)return;let s=k(gE(t,"actor"),{});return{seq:o,messageType:k(hE(t,"type"),"thread.message"),actorKind:k(x(s.kind,hr),"unknown"),actorSlug:x(s.slug,hr),actorUserId:_E(t,"actor_user_id"),body:i,payload:r}}function kZ(e){return e!==void 0?Array.isArray(e)?Ne(e,xZ):[]:[]}async function yE(e,t,r,n){let i=r.workspace,o=r.channel,s=r.threadId;if(i===void 0)return[];if(o===void 0)return[];if(s===void 0)return[];let a=Object.fromEntries([["workspace",i],["channel",o],["thread_id",s]]),l=await e(t,"session:thread_context",a);if(l.TAG==="Ok"){let d=l._0,u=wZ(d);return u!==void 0?kZ(u.messages):(n("kandan.reconnect_thread_context_fetch_failed",Object.fromEntries([["thread_id",s],["reply",JSON.stringify(d).slice(0,300)]])),[])}return n("kandan.reconnect_thread_context_fetch_failed",Object.fromEntries([["thread_id",s],["message",l._0]])),[]}function TZ(e,t){return"Codex "+e+" did not reply within "+t.toString()+"ms (start request timed out)"}function OZ(e,t,r,n){return t<=0?n:new Promise((i,o)=>{let s=e.setTimer(()=>i({TAG:"Error",_0:TZ(r,t)}),t);n.then(a=>(e.clearTimer(s),i(a),Promise.resolve()))})}function Sb(e){return e==="ResumeArchived"?"resume_archived":"forced_inject_not_found"}var AZ="the server marked the durable engine session dead after an acknowledged-but-unexecuted turn";async function bE(e,t,r,n,i,o){let s={};s.threadId=n,Object.entries(i).forEach(m=>{s[m[0]]=m[1]});let a=s,l=(m,h)=>OZ(t,r,m,e(m,h)),d=async(m,h)=>{o.log("kandan.reconnect_thread_unarchive_started",Object.fromEntries([["codex_thread_id",n],["discovered_by",Sb(m)],["message",h]]));let g=await(async()=>{let v=await l("thread/unarchive",Object.fromEntries([["threadId",n]]));if(v.TAG!=="Ok")return{TAG:"Error",_0:v._0};let S=v._0;if(S.TAG!=="ResultReply")return{TAG:"Error",_0:"thread/unarchive failed: "+S.message};let A=await l("thread/resume",a);if(A.TAG!=="Ok")return{TAG:"Error",_0:A._0};let C=A._0;return C.TAG==="ResultReply"?{TAG:"Ok",_0:void 0}:{TAG:"Error",_0:"thread/resume after unarchive failed: "+C.message}})();if(g.TAG==="Ok")return o.log("kandan.reconnect_thread_unarchive_resumed",Object.fromEntries([["codex_thread_id",n],["discovered_by",Sb(m)]])),{TAG:"Ok",_0:"Resumed"};let b=g._0;o.log("kandan.reconnect_thread_unarchive_failed",Object.fromEntries([["codex_thread_id",n],["discovered_by",Sb(m)],["archive_error",h],["message",b]]));let y;return y=m==="ResumeArchived"?b:"thread/inject_items failed: "+h+"; archive recovery failed: "+b,{TAG:"Error",_0:{message:y}}},u=async m=>{o.log(o.forceRehydrate?"kandan.reconnect_thread_rehydrate_forced":"kandan.reconnect_thread_resume_failed",Object.fromEntries([["codex_thread_id",n],["message",m],["forced",o.forceRehydrate],["rehydrating",!0]]));let h=await(async()=>{let g=o.buildRehydrationItems,b;if(g!==void 0){let re=await g(m);re.TAG==="Ok"?b=re._0:(o.log("kandan.reconnect_thread_rehydration_items_failed",Object.fromEntries([["codex_thread_id",n],["message",re._0]])),b=void 0)}else b=void 0;let y,v=0;if(b!==void 0&&b.length!==0?y={TAG:"Ok",_0:b.slice()}:v=1,v===1){let re=await o.buildRehydrationText(m);y=re.TAG==="Ok"?{TAG:"Ok",_0:[Object.fromEntries([["type","agentMessage"],["text",re._0]])]}:{TAG:"Error",_0:re._0}}if(y.TAG!=="Ok")return{TAG:"Error",_0:y._0};let S=await l("thread/inject_items",Object.fromEntries([["threadId",n],["items",y._0]]));if(S.TAG!=="Ok")return{TAG:"Error",_0:S._0};let A=S._0;if(A.TAG==="ResultReply"){let re=await l("thread/resume",a);if(re.TAG!=="Ok")return{TAG:"Error",_0:re._0};let fe=re._0;return fe.TAG==="ResultReply"?{TAG:"Ok",_0:void 0}:{TAG:"Error",_0:"rehydrated thread/resume failed: "+fe.message}}let C=A.message;if(!(o.forceRehydrate&&fC(C)))return{TAG:"Error",_0:"thread/inject_items failed: "+C};let V=await d("ForcedInjectNotFound",C);return V.TAG==="Ok"?{TAG:"Ok",_0:V._0}:{TAG:"Error",_0:V._0.message}})();if(h.TAG==="Ok"){let g=h._0;return g!==void 0?{TAG:"Ok",_0:g}:(o.log("kandan.reconnect_thread_rehydrated",Object.fromEntries([["codex_thread_id",n],["resume_failure",m]])),{TAG:"Ok",_0:{TAG:"Rehydrated",resumeFailure:m}})}let _=h._0;return o.log("kandan.reconnect_thread_rehydration_failed",Object.fromEntries([["codex_thread_id",n],["resume_failure",m],["rehydration_failure",_]])),{TAG:"Error",_0:{message:"could not resume this thread's engine session ("+m+") and rebuilding a fresh session from the thread transcript also failed ("+_+")"}}};if(o.forceRehydrate)return await u(AZ);let c=await l("thread/resume",a);if(c.TAG!=="Ok")return{TAG:"Error",_0:{message:c._0}};let f=c._0;if(f.TAG==="ResultReply")return{TAG:"Ok",_0:"Resumed"};let p=f.message;return cC(p)?await d("ResumeArchived",p):await u(p)}function qa(e,t){let r=e.indexOf(t);if(r!==-1)return r}var SE=[["codexThreadId","harness_session_id"],["codex_thread_id","harness_session_id"],["kandanThreadId","thread_id"],["kandan_preview_ticket","linzumi_preview_ticket"],["kandan_thread_id","thread_id"],["linzumiThreadId","thread_id"],["linzumi_thread_id","thread_id"],["local_codex_runner","commander"],["runnerId","commander_id"],["runner_config","commander_config"],["runner_id","commander_id"]],Vf=[["commander","local_codex_runner"],["commander_config","runner_config"],["commander_id","runner_id"],["harness_session_id","codex_thread_id"],["linzumi_preview_ticket","kandan_preview_ticket"],["thread_id","kandan_thread_id"]],wb=[["engine_boot_reconnect","harness_boot_reconnect"],["engine_for_runner_event_type","harness_for_commander_event_type"],["engine_rejected_steer","harness_rejected_steer"],["engine_unavailable","harness_unavailable"],["join_engine","join_harness"],["kandan-local-codex-runner","linzumi-commander"],["local_codex_runner","commander"],["original_engine","original_harness"],["resume_engine","resume_harness"]];function EZ(){let e=process.env.LINZUMI_NAMING_DUAL_EMIT;if(e===void 0)return!0;let t=e.trim().toLowerCase();return t!=="0"?t!=="false":!1}function xb(e){let t={};return e.forEach(r=>{t[r[0]]=r[1]}),t}function PZ(e){let t={};return e.forEach(r=>{t[r[1]]=r[0]}),t}var xE=xb(SE),kE=xb(Vf),$Z=xb(wb),RZ=PZ(wb);function IZ(e){return e.endsWith("_canonical")?!0:e.endsWith("_legacy")}function TE(e,t){return t>=32?e:Array.isArray(e)?e.map(r=>TE(r,t+1|0)):e===null?e:typeof e==="object"?OE(e,t):e}function OE(e,t){let r=Object.keys(e),n={};return r.forEach(i=>{let o=e[i];if(o!==void 0){n[i]=TE(o,t+1|0);return}}),r.forEach(i=>{if(IZ(i))return;let o=n[i];if(o===void 0)return;let s=xE[i];if(s!==void 0)n[s]=o;else{let c=kE[i];c!==void 0&&(n[c]!==void 0||(n[c]=o))}let a=n[i];if(a===void 0||typeof a!="string")return;let l=$Z[a];if(l!==void 0){if(n[i+"_canonical"]!==void 0)return;n[i+"_canonical"]=l;return}let d=RZ[a];if(!(d===void 0||n[i+"_legacy"]!==void 0)){n[i+"_legacy"]=d;return}}),n}function AE(e){return EZ()?OE(e,0):e}function CE(e){let t=e.slice();return e.forEach(r=>{let n=xE[r];n!==void 0&&!t.includes(n)&&t.push(n);let i=kE[r];if(i!==void 0&&!t.includes(i)){t.push(i);return}}),t}var Da="<SENSITIVE_DATA>",MZ=CE(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"]),zZ=["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"],jZ=new RegExp("^(authorization|cookie|set-cookie|password)$","i"),NZ=new RegExp("(^|[_-])(access[_-]?token|api[_-]?key|auth[_-]?token|oauth[_-]?code|refresh[_-]?token|secret|token)$","i"),FZ=new RegExp("\\beyJ[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b","g");function GZ(e){return e!==void 0?jZ.test(e)?!0:NZ.test(e):!1}function PE(e){let t={contents:!1};return Iv(e).forEach(r=>{if(MZ.includes(r.toLowerCase())){e.set(r,Da),t.contents=!0;return}}),t.contents}function qZ(e){let t=qa(e,"?"),r=qa(e,"#");if(t===void 0||r!==void 0&&r<t)return e;let n=e.slice(0,t),i=r!==void 0?e.slice(t+1|0,r):e.slice(t+1|0),o=r!==void 0?e.slice(r):"",s=new URLSearchParams(i);return PE(s)?n+"?"+s.toString()+o:e}function DZ(e){let t=zn(e);if(t===void 0)return qZ(e);let r=se(t);return PE(r.searchParams),r.toString()}function $E(e){return DZ(e).replace(FZ,Da)}function LZ(e){let t=qa(e,"=");return t!==void 0?[e.slice(0,t),e.slice(t+1|0)]:[e,void 0]}function kb(e,t){if(GZ(t))return Da;if(Array.isArray(e))return t==="args"?UZ(e):e.map(r=>kb(r,void 0));if(e===null)return e;switch(typeof e){case"string":return $E(e);case"object":return RE(e);default:return e}}function UZ(e){let t={contents:!1};return e.map(r=>{if(typeof r=="string"){if(t.contents)return t.contents=!1,Da;let n=LZ(r),i=n[0];return zZ.includes(i)?n[1]!==void 0?i+"="+Da:(t.contents=!0,r):$E(r)}return t.contents=!1,kb(r,void 0)})}function RE(e){let t=e.name,r=typeof t=="string"?t.toLowerCase():void 0,n;if(r!==void 0)switch(r){case"authorization":case"cookie":case"set-cookie":n=!0;break;default:n=!1}else n=!1;let i={};return Object.entries(e).forEach(o=>{let s=o[0];if(s!=="runner_console"){i[s]=n&&s==="value"?Da:kb(o[1],s);return}}),i}var IE=RE;var WZ=IS(e=>({joinRef:e.item(0,Jm(bt)),ref:e.item(1,Jm(bt)),topic:e.item(2,bt),event:e.item(3,bt),payload:e.item(4,ES)}));function ME(e){return Qs(e,WZ)}function Hf(e){let t=nr(e);return t!==void 0?k(fr(se(t)),"unknown error"):"unknown error"}function KZ(e){let t=x(nr(e),r=>Sv(r));return t!==void 0?t:null}function _i(e){return e.TAG==="Transport"?e._0.message:e.message}function BZ(e,t){return{TAG:"Transport",_0:{phase:"WaitForConnection",reason:"TimeoutReason",message:"phoenix push timed out after "+e.toString()+"ms waiting for connection: "+t}}}function JZ(e,t){return{TAG:"Transport",_0:{phase:"Reply",reason:"TimeoutReason",message:"phoenix push timed out after "+e.toString()+"ms: "+t}}}function NE(e){return e.TAG==="Transport"?e._0.phase==="WaitForConnection":!1}function FE(e){return{initial:t=>e.initial(t),onAdvance:(t,r)=>e.onAdvance(t,r),reset:(t,r)=>e.reset(t,r)}}function GE(e){return{current:t=>e.current(),adopt:(t,r)=>e.adopt(t,r)}}var QZ="base64url.bearer.phx.";function XZ(e){let t;t=typeof e=="object"&&e!==null&&!Array.isArray(e)?IE(e):e;let r=JSON.stringify(t);return r.length<=400?r:r.slice(0,400)+"\u2026"}var YZ=new RegExp("/$");function eV(e){let t=zn(e);if(t===void 0)return{TAG:"Error",_0:"Invalid URL"};let r=se(t);switch(r.protocol){case"http:":r.protocol="ws:";break;case"https:":r.protocol="wss:";break}return r.pathname=r.pathname.replace(YZ,"")+"/socket/websocket",r.searchParams.set("vsn","2.0.0"),{TAG:"Ok",_0:r.toString()}}function tV(e){return[QZ+Mv(e),"phoenix"]}function zE(e){let t=r=>r!==void 0?r:null;return JSON.stringify([t(e.joinRef),t(e.ref),e.topic,e.event,e.payload])}function rV(e){let t;try{t={TAG:"Ok",_0:JSON.parse(e)}}catch(n){let i=Q(n);t={TAG:"Error",_0:Hf(i)}}if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=ME(t._0);return r.TAG==="Ok"?{TAG:"Ok",_0:r._0}:{TAG:"Error",_0:"invalid Phoenix frame"}}function qE(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}function Bf(e,t){return x(e,r=>{let n=r[t];if(typeof n=="object"&&n!==null&&!Array.isArray(n))return n})}function La(e,t){return x(e,r=>{let n=r[t];if(typeof n=="string")return n})}function Wf(e){if(typeof e!="object"||e===null||Array.isArray(e))return;let t=e.status,r=e.response;if(t==="ok"&&typeof r=="object"&&r!==null&&!Array.isArray(r))return r}function nV(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?Zi(e.status,"ok"):!1}function iV(e){return typeof e!="object"||e===null||Array.isArray(e)?!1:typeof e.type=="string"}function Kf(e,t){let r=e[t];if(r!==void 0&&typeof r=="number"&&er(r))return r}function jE(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return Kf(e,"control_seq")}function oV(e){if(typeof e!="object"||e===null||Array.isArray(e))return;let t=e.event,r=e.payload;if(t===void 0||typeof t!="string"||r===void 0||typeof r!="object"||r===null||Array.isArray(r))return;let n=e.control_seq;return n!==void 0?typeof n=="number"&&er(n)?{event:t,payload:r,controlSeq:n}:void 0:{event:t,payload:r,controlSeq:void 0}}var sV="npm install -g @linzumi/cli@latest",aV=new RegExp("^npm install -g @linzumi\\/cli(@[0-9A-Za-z^~.-]{1,32})?$"),lV=new RegExp("^\\d+\\.\\d+\\.\\d+(?:[-+][0-9A-Za-z.-]{1,32})?$");function dV(e){return e!==void 0&&typeof e=="string"&&e.length<=100&&aV.test(e)?e:sV}function uV(e){return e!==void 0&&typeof e=="string"&&e.length<=64&&lV.test(e)?"@linzumi/cli "+e+" or newer":"a newer @linzumi/cli"}function Tb(e){let t=qE(e),r=Bf(t,"response"),n=La(r,"error");if(n!==void 0)return n;let i=La(r,"reason");if(i!==void 0)return i;let o=La(r,"message");if(o!==void 0)return o;let s=La(t,"error");return t!==void 0?s!==void 0?s:"unknown":"invalid reply"}function cV(e){let t=Bf(qE(e),"response");if(t===void 0||!de(t.error,"commander_version_too_old"))return Tb(e);let r=uV(t.min_version),n=dV(t.upgrade_command);return"commander_version_too_old: this Linzumi server requires "+r+". Update with: "+n}function fV(e){let t=e;if(La(t,"agent_provider")==="claude-code")return"claude-code-sdk";let n=Bf(t,"metadata"),i=Bf(n,"local_codex_runner");return La(i,"agent_provider")==="claude-code"?"claude-code-sdk":"codex-app-server"}function mV(e,t){let r;try{r=e.initial(t)}catch{r=void 0}if(r!==void 0&&er(r)&&r>=0)return r}function pV(e,t){if(e===void 0)return;let r;try{r=e.current(t)}catch{r=void 0}if(r!==void 0&&r!=="")return r}async function DE(e,t,r,n){let i=n!==void 0?n:{},o=r!==void 0?r:Gf,s;s=t.TAG==="Token"?t._0:void 0;let a={contents:s},l=()=>{if(t.TAG==="Token")return{TAG:"Ok",_0:t._0};let T;try{T=t._0()}catch{T=void 0}if(T!==void 0&&T.trim()!=="")return a.contents=T,{TAG:"Ok",_0:T};let N=a.contents;return N!==void 0?{TAG:"Ok",_0:N}:{TAG:"Error",_0:{TAG:"Failed",message:"phoenix token provider returned no usable token"}}},d=i.onOperatorNotice,u=d!==void 0?d:T=>{console.error(T)},c=i.auditEvent,f=c!==void 0?c:(T,N)=>{},p=i.onPushRecorded,m=p!==void 0?p:T=>{},h=k(i.pushTimeoutMs,3e4),_=i.controlCursorStore,g=i.controlEpochStore,b={},y={},v={},S={},A={},C={},V={},re={},fe=new Set,J={contents:1},K=[],ae=[],z=[],Z=[],$={nextRef:1,websocket:void 0,closed:!1,connected:!1,hasEverConnected:!1,connectionGeneration:0,ready:Promise.resolve({TAG:"Ok",_0:void 0}),settleReady:void 0,reconnectTimer:void 0,reconnectAttempts:0,backoffResetTimer:void 0,heartbeatTimer:void 0,connectedAt:void 0},I=T=>{let N=Object.entries(b);N.forEach(G=>dr(b,G[0])),N.forEach(G=>{let ee=G[1];clearTimeout(ee.timer),ee.settle({TAG:"Error",_0:T})})},F=()=>{if($.settleReady!==void 0)return;let N={contents:void 0};$.ready=new Promise((G,ee)=>{N.contents=G}),$.settleReady=N.contents},B=()=>{let T=$.settleReady;T!==void 0&&T({TAG:"Ok",_0:void 0}),$.settleReady=void 0},X=T=>{let N=$.settleReady;N!==void 0&&N({TAG:"Error",_0:T}),$.settleReady=void 0},Se=()=>{let T=$.heartbeatTimer;if(T!==void 0){clearInterval(se(T)),$.heartbeatTimer=void 0;return}},Ee=()=>{let T=$.backoffResetTimer;if(T!==void 0){clearTimeout(se(T)),$.backoffResetTimer=void 0;return}},Ze=T=>{$.closed=!0;let N=$.reconnectTimer;N!==void 0&&(clearTimeout(se(N)),$.reconnectTimer=void 0),Se(),Ee();let G=$.websocket;G!==void 0&&G.close(),X(T),I({TAG:"Transport",_0:{phase:"Reply",reason:"ClientClosed",message:"phoenix client closed"}})},ot=T=>k(re[T],0),Pe=T=>{dr(S,T),dr(A,T),dr(C,T),dr(V,T),re[T]=ot(T)+1|0},dt=(T,N)=>{let G=S[T];if(G!==void 0){if(N===G+1){let H=G+1,he=A[T];if(he!==void 0)for(;he.has(H+1);)H=H+1,he.delete(H);S[T]=H;return}let ee=A[T],te;if(ee!==void 0)te=ee;else{let H=new Set;A[T]=H,te=H}te.add(N);return}S[T]=N},Ge=(T,N)=>{let G=jE(N);if(G===void 0)return!0;let ee=S[T],te=ee!==void 0?G<=ee:!1,H=A[T],he=H!==void 0?H.has(G):!1;return te||he?!1:(dt(T,G),!0)},Xe=(T,N)=>{if(_!==void 0)try{return _.onAdvance(T,N)}catch{return}},Et=(T,N)=>{if(!T.startsWith("local_runner:"))return;let G=Kf(N,"control_high_water");if(G===void 0)return;let ee=S[T];if(ee!==void 0&&G<ee){Pe(T);let te=0;if(_===void 0)return;let H=_.reset;if(H===void 0)return;try{return H(T,te)}catch{return}}},tr=(T,N)=>{let G=T.startsWith("local_runner:");if(g===void 0||!G)return!1;let ee=N.control_epoch;if(ee===void 0||typeof ee!="string"||ee==="")return!1;let te;try{te=g.adopt(T,ee)}catch{te=!1}return te&&Pe(T),te},Tt=T=>{let N=S[T];if(N!==void 0)return N;if(_===void 0)return;let G=mV(_,T);return G!==void 0?(S[T]=G,G):0},je=new Set,R=(T,N,G,ee)=>{try{let te=!1;if(T.startsWith("local_runner:")&&N==="control"&&iV(ee)){let H;if(Ge(T,ee)){let he=jE(ee);if(he!==void 0){let Zt=C[T],rr;if(Zt!==void 0)rr=Zt;else{let cr=new Set;C[T]=cr,rr=cr}rr.add(he)}let gt=ot(T),Ot=he!==void 0?()=>{if(gt!==ot(T))return;let Zt=C[T];Zt!==void 0&&Zt.delete(he);let rr=V[T];rr!==void 0&&he<=rr||(V[T]=he);let cr=x(Zt,Ur=>We(Ur.values().toArray(),void 0,(Tr,Zr)=>Tr!==void 0&&Tr<=Zr?Tr:Zr)),kr=cr!==void 0?cr-1:V[T];if(kr===void 0)return;let vt=S[T],jt=vt!==void 0&&vt<kr?vt:kr;Xe(T,jt)}:()=>{};K.forEach(Zt=>Zt(ee,Ot)),H=!1}else H=!0;te=H}if(!te&&G===void 0&&N!=="phx_reply"&&N!=="phx_error"){ae.forEach(H=>H(T,N,ee));return}else return}catch(te){let H=Q(te),he=Hf(H);try{f("phoenix.pushed_frame_dispatch_failed",Object.fromEntries([["topic",T],["frame",N],["message",he],["stack",KZ(H)],["payloadSnippet",XZ(ee)],["dropped",!0]]))}catch{}if(je.has(N))return;je.add(N);try{return u('linzumi: dropped a pushed "'+N+'" frame on '+T+" whose dispatch failed ("+he+"); see the CLI audit log for the payload snippet.")}catch{return}}},ge=(T,N)=>{let G=S[T],ee={contents:G!==void 0&&G>=N?G:N},te=A[T];if(te!==void 0)for(te.values().toArray().forEach(H=>{if(H<=ee.contents){te.delete(H);return}});te.has(ee.contents+1);)ee.contents=ee.contents+1,te.delete(ee.contents);S[T]=ee.contents},ye=T=>{let N=S[T];if(N===void 0)return;let G=C[T],ee=G!==void 0&&G.size>0?W(We(G.values().toArray(),void 0,(te,H)=>te!==void 0&&te<=H?te:H),te=>te-1):void 0;Xe(T,ee!==void 0&&ee<N?ee:N)},le=(T,N)=>{if(T.startsWith("chat:")){let G=N.events;return G===void 0?{TAG:"Ok",_0:void 0}:G===null?{TAG:"Ok",_0:void 0}:Array.isArray(G)?(G.forEach(ee=>{ae.forEach(te=>te(T,"event",ee))}),{TAG:"Ok",_0:void 0}):{TAG:"Error",_0:"phoenix rejoin returned invalid events for "+T}}else{if(!T.startsWith("local_runner:"))return{TAG:"Ok",_0:void 0};let G=N.controls;if(G===void 0)return{TAG:"Ok",_0:void 0};if(G===null)return{TAG:"Ok",_0:void 0};if(!Array.isArray(G))return{TAG:"Error",_0:"phoenix rejoin returned invalid controls for "+T};G.forEach(te=>{let H=oV(te);if(H===void 0)return;let he={};Object.entries(H.payload).forEach(Ot=>{he[Ot[0]]=Ot[1]}),he.replayed=!0;let gt=H.controlSeq;gt!==void 0&&(he.control_seq=gt),R(T,H.event,void 0,he)});let ee=Kf(N,"controls_advance_to");if(ee!==void 0){let te=N.control_high_water;typeof te=="number"&&ee>te||ge(T,ee)}return ye(T),{TAG:"Ok",_0:void 0}}},Ke=(T,N,G,ee,te)=>{let H=$.websocket;if(H===void 0)return Promise.resolve({TAG:"Error",_0:{TAG:"Transport",_0:{phase:"WaitForConnection",reason:"SocketNotOpen",message:"phoenix websocket is not open"}}});if(H.readyState()!==ks)return Promise.resolve({TAG:"Error",_0:{TAG:"Transport",_0:{phase:"WaitForConnection",reason:"SocketNotOpen",message:"phoenix websocket is not open"}}});let he=$.nextRef.toString();$.nextRef=$.nextRef+1|0,N==="phx_join"&&(v[T]=he);let gt=N==="phx_join"?he:v[T],Ot=AE(G),kr=zE({joinRef:gt,ref:he,topic:T,event:N,payload:Ot}),vt=Math.max(0,Math.ceil(ee))|0;return new Promise((jt,Ur)=>{let Tr=setTimeout(()=>{if(b[he]!==void 0)return dr(b,he),jt({TAG:"Error",_0:JZ(vt,N)})},vt);b[he]={event:N,timer:Tr,settle:jt};try{m({provider:fV(Ot),rawFrameText:kr,topic:T,event:N,payload:Ot})}catch{}let Zr;try{Zr={TAG:"Ok",_0:H.send(kr)}}catch(Di){let bi=Q(Di);Zr={TAG:"Error",_0:Hf(bi)}}return Zr.TAG==="Ok"?te!==void 0?te():void 0:jt({TAG:"Error",_0:{TAG:"Failed",message:Zr._0}})})},L=(T,N)=>{let G={};if(N.forEach(ee=>{Object.entries(ee).forEach(te=>{let H=te[1],he=te[0],gt=he==="last_seq",Ot=G[he];if(gt&&typeof Ot=="number"&&typeof H=="number"){G[he]=H<Ot?H:Ot;return}if(Ot===void 0){G[he]=H;return}})}),T.startsWith("local_runner:")){let ee=Tt(T);ee!==void 0&&(G.last_control_seq=ee);let te=pV(g,T);te!==void 0&&(G.last_control_epoch=te)}return G},ke=T=>Object.entries(T).map(N=>N[1].payload()),be=async T=>{let N=0,G=0,ee=!0;for(;ee;){let te=y[T];if(te!==void 0){let H=Tt(T),he=await Ke(T,"phx_join",L(T,ke(te)),h,void 0);if(N=N+1|0,he.TAG==="Ok"){let gt=Wf(he._0);if(gt!==void 0){let Ot=gt.controls,Zt=Array.isArray(Ot)?Ot.length:0;G=G+Zt|0;let rr=de(gt.controls_truncated,!0),cr=Tt(T),kr;if(rr){let vt=Kf(gt,"control_high_water");kr=vt!==void 0&&cr!==void 0?vt-cr>0?vt-cr:0:void 0}else kr=0;if(f("phoenix.control_backlog_fetch_progress",Object.fromEntries([["topic",T],["fetches",N],["fetched",G],["remaining_estimate",kr!==void 0?kr:null],["truncated",rr]])),rr)if(de(cr,H)){let vt=cr!==void 0?cr.toString():"undefined";u("phoenix.control_backlog_fetch_stalled topic="+T+" fetches="+N.toString()+" fetched="+G.toString()+" cursor="+vt+"; a truncated reply made no cursor progress - stopping this fetch loop (a server paging bug; the next reconnect resumes from the watermark)"),ee=!1}else{if(N%20===0){let jt=kr!==void 0?kr.toString():"unknown";u("phoenix.control_backlog_cap_exceeded topic="+T+" fetches="+N.toString()+" fetched="+G.toString()+" remaining_estimate="+jt+"; continuing the paginated backlog fetch (a healthy connection never reconnects, so nothing is deferred)")}await new Promise((jt,Ur)=>{setImmediate(()=>jt())})}else ee=!1}else ee=!1}else ee=!1}else ee=!1}},Me=T=>{if(!fe.has(T)){fe.add(T),yn(be(T).then(()=>{fe.delete(T)}),N=>(fe.delete(T),Promise.resolve()));return}},wt={},ft=async()=>{Object.entries(wt).forEach(te=>dr(wt,te[0]));let T=Object.entries(y),N,G=0;for(;N===void 0&&G<T.length;){let te=T[G];if(te!==void 0){let H=te[0],he=await Ke(H,"phx_join",L(H,ke(te[1])),h,void 0);if(he.TAG==="Ok"){let gt=Wf(he._0);gt!==void 0?wt[H]=gt:N={TAG:"Failed",message:"phoenix rejoin failed for "+H}}else N=he._0}G=G+1|0}let ee=N;return ee!==void 0?{TAG:"Error",_0:ee}:{TAG:"Ok",_0:void 0}},Lt={contents:()=>Promise.resolve()},Ut=()=>{let T=$.closed,N=$.reconnectTimer;if(T||N!==void 0)return;F();let G=Math.min(1e4,250*2**$.reconnectAttempts);$.reconnectAttempts=$.reconnectAttempts+1|0,$.reconnectTimer=mt(setTimeout(()=>{$.reconnectTimer=void 0,Lt.contents()},Math.random()*G|0))},xt=(T,N,G)=>{let ee=$.connected,te=$.connectedAt;$.connectedAt=void 0,$.connected=!1;let H=$.websocket;if($.websocket=void 0,Se(),Ee(),H!==void 0&&(H.readyState()===lC||H.readyState()===ks))try{H.close()}catch{}if(I(T),Ut(),!ee)return;let he;he=G!==void 0&&G!==""?G:void 0;let gt=W(te,rr=>Math.max(0,Date.now()-rr)),Ot=$.reconnectAttempts,Zt={closeCode:N,closeReason:he,previousSessionDurationMs:gt,reconnectCount:Ot};Z.forEach(rr=>{try{return rr(Zt)}catch{return}})},M=()=>{Se(),$.heartbeatTimer=mt(setInterval(()=>{let T=$.websocket;if(T===void 0||T.readyState()!==ks)return;let N=$.nextRef.toString();$.nextRef=$.nextRef+1|0;let te={joinRef:void 0,ref:N,topic:"phoenix",event:"heartbeat",payload:{}};try{return T.send(zE(te))}catch{return}},3e4))},j=()=>{Ee();let T=setTimeout(()=>{if($.backoffResetTimer=void 0,$.connected){$.reconnectAttempts=0;return}},3e4);T.unref(),$.backoffResetTimer=mt(T)},U=(T,N)=>new Promise((G,ee)=>{let te={contents:void 0},H=he=>{let gt=te.contents;gt!==void 0&&(clearTimeout(se(gt)),te.contents=void 0),G(he)};T.on("SocketOpen",he=>H({TAG:"Ok",_0:void 0})),T.on("SocketError",he=>H({TAG:"Error",_0:"websocket open failed"})),T.on("SocketClose",he=>H({TAG:"Error",_0:"websocket closed before open"})),te.contents=mt(setTimeout(()=>{te.contents=void 0,H({TAG:"Error",_0:"websocket open timed out after "+N.toString()+"ms"})},N))}),Oe=async()=>{if($.closed)return;let T=l(),N=eV(e),G;if(T.TAG==="Ok")if(N.TAG==="Ok"){let H;try{H={TAG:"Ok",_0:o(N._0,tV(T._0))}}catch(he){let gt=Q(he);H={TAG:"Error",_0:{TAG:"Failed",message:Hf(gt)}}}G=H.TAG==="Ok"?{TAG:"Ok",_0:H._0}:{TAG:"Error",_0:H._0}}else G={TAG:"Error",_0:{TAG:"Failed",message:N._0}};else G={TAG:"Error",_0:T._0};if(G.TAG==="Ok"){let H=G._0;$.websocket=H,H.on("SocketMessage",vt=>{let jt=$.websocket;if(jt!==void 0&&jt===H){let Ur=rV(k(vt.data,"undefined"));if(Ur.TAG==="Ok"){let Tr=Ur._0,Zr=Tr.payload,Di=Tr.event,bi=Tr.topic,nu=Tr.ref;if(nu!==void 0&&(Di==="phx_reply"||Di==="phx_error")){let Li=b[nu];if(Li!==void 0){dr(b,nu),clearTimeout(Li.timer);let O$=Di==="phx_error",A$=nV(Zr)&&Li.event!=="phx_join";if(O$)Li.settle({TAG:"Error",_0:{TAG:"Failed",message:"phoenix push failed"}});else if(A$)Li.settle({TAG:"Error",_0:{TAG:"Failed",message:"phoenix push failed: "+Tb(Zr)}});else{let C$=y[bi],tl=Wf(Zr),iu;if(C$!==void 0&&tl!==void 0&&Li.event==="phx_join"){let yv=tr(bi,tl);Et(bi,tl);let bv=yv?{TAG:"Ok",_0:void 0}:le(bi,tl);bv.TAG==="Ok"?(bi.startsWith("local_runner:")&&(de(tl.controls_truncated,!0)||yv)&&Me(bi),iu=!1):(Li.settle({TAG:"Error",_0:{TAG:"Failed",message:bv._0}}),iu=!0)}else iu=!1;iu||Li.settle({TAG:"Ok",_0:Zr})}}}return R(bi,Di,nu,Zr)}else return f("phoenix.frame_decode_failed",Object.fromEntries([["message",Ur._0],["dropped",!0]]))}}),H.on("SocketClose",vt=>{let jt=$.websocket;if(jt!==void 0&&jt===H)return xt({TAG:"Transport",_0:{phase:"Reply",reason:"SocketClosedReason",message:"phoenix websocket closed"}},vt.code,vt.reason)}),H.on("SocketError",vt=>{let jt=$.websocket;if(jt!==void 0&&jt===H)return xt({TAG:"Transport",_0:{phase:"Reply",reason:"SocketClosedReason",message:"phoenix websocket closed"}},void 0,void 0)});let he=await U(H,h),gt=()=>{if($.closed)return!0;let vt=$.websocket;return vt!==void 0?vt!==H:!1},Ot;if(he.TAG==="Ok")if(gt())Ot={TAG:"Ok",_0:!1};else{$.connectionGeneration=$.connectionGeneration+1|0;let vt=await ft();Ot=vt.TAG==="Ok"?gt()?{TAG:"Ok",_0:!1}:{TAG:"Ok",_0:!0}:{TAG:"Error",_0:vt._0}}else Ot={TAG:"Error",_0:{TAG:"Failed",message:he._0}};if(Ot.TAG==="Ok"){if(!Ot._0||($.connected=!0,$.connectedAt=Date.now(),$.hasEverConnected=!0,j(),M(),B(),$.connectionGeneration<=1))return;let vt={};Object.entries(wt).forEach(Ur=>{vt[Ur[0]]=Ur[1]});let jt={contents:!1};return z.forEach(Ur=>{if(jt.contents)return;let Tr;try{Tr={TAG:"Ok",_0:Ur(vt)}}catch{Tr={TAG:"Error",_0:void 0}}if(Tr.TAG!=="Ok"){jt.contents=!0;return}yn(Tr._0,Zr=>Promise.resolve())}),jt.contents&&!$.closed?xt({TAG:"Transport",_0:{phase:"Reply",reason:"SocketClosedReason",message:"phoenix websocket reconnect failed"}},void 0,void 0):void 0}let Zt=$.websocket,rr=Zt!==void 0?Zt!==H:!1,cr=$.closed||rr,kr=$.hasEverConnected;return cr?void 0:kr?xt({TAG:"Transport",_0:{phase:"Reply",reason:"SocketClosedReason",message:"phoenix websocket reconnect failed"}},void 0,void 0):Ze(Ot._0)}let ee=$.closed,te=$.hasEverConnected;if(!ee)return te?xt({TAG:"Transport",_0:{phase:"Reply",reason:"SocketClosedReason",message:"phoenix websocket reconnect failed"}},void 0,void 0):Ze(G._0)};Lt.contents=Oe;let qe=(T,N)=>{let G=$.ready;return new Promise((ee,te)=>{let H=setTimeout(()=>ee({TAG:"Error",_0:BZ(h,T)}),Math.max(0,N-Date.now())|0);G.then(he=>{clearTimeout(H),ee(he)})})},Ie=async(T,N,G,ee)=>{let te=Date.now()+h,H=await qe(N,te);return H.TAG==="Ok"?await Ke(T,N,G,te-Date.now(),ee):{TAG:"Error",_0:H._0}},Be=async(T,N,G)=>{let ee=G.registrationId,te;if(ee!==void 0)te=ee;else{let Tr="join-registration-"+J.contents.toString();J.contents=J.contents+1|0,te=Tr}let H=y[T],he=H!==void 0?ke(H):[],gt=await Ie(T,"phx_join",L(T,he.concat([N])),void 0);if(gt.TAG!=="Ok")return{TAG:"Error",_0:gt._0};let Ot=gt._0,Zt=Wf(Ot);if(Zt===void 0)return{TAG:"Error",_0:{TAG:"Failed",message:"phoenix join failed: "+cV(Ot)}};let rr=y[T],cr=rr!==void 0?rr:{},kr=Object.entries(cr).length===0,vt=G.rejoinPayload;if(cr[te]={payload:vt!==void 0?vt:()=>N},y[T]=cr,!(kr&&T.startsWith("local_runner:")))return{TAG:"Ok",_0:Zt};let jt=tr(T,Zt);Et(T,Zt);let Ur=jt?{TAG:"Ok",_0:void 0}:le(T,Zt);return Ur.TAG!=="Ok"?{TAG:"Error",_0:{TAG:"Failed",message:Ur._0}}:((de(Zt.controls_truncated,!0)||jt)&&Me(T),{TAG:"Ok",_0:Zt})},el={join:(T,N,G)=>Be(T,N,k(G,{rejoinPayload:void 0,registrationId:void 0})),unregisterJoin:(T,N)=>{let G=y[T];if(!(G===void 0||(dr(G,N),Object.entries(G).length!==0)))return dr(y,T),dr(v,T)},push:Ie,pushIfConnected:(T,N,G)=>$.connected?Ke(T,N,G,h,void 0):Promise.resolve({TAG:"Error",_0:{TAG:"Transport",_0:{phase:"WaitForConnection",reason:"NotConnected",message:"phoenix client is not connected"}}}),onControl:T=>{K.push(T)},onEvent:T=>{ae.push(T)},onReconnect:T=>{z.push(T)},onDisconnect:T=>{Z.push(T)},forceReconnect:T=>$.closed||!$.connected?!1:(xt({TAG:"Transport",_0:{phase:"Reply",reason:"SocketClosedReason",message:"phoenix websocket closed"}},void 0,k(T,"forced_stale_reconnect")),!0),hardReset:T=>{if($.closed)return!1;xt({TAG:"Transport",_0:{phase:"Reply",reason:"SocketClosedReason",message:"phoenix websocket closed"}},void 0,k(T,"hard_reset"));let N=$.reconnectTimer;return N!==void 0&&(clearTimeout(se(N)),$.reconnectTimer=void 0),Oe(),!0},close:()=>Ze({TAG:"Transport",_0:{phase:"WaitForConnection",reason:"ClientClosed",message:"phoenix client closed"}})};F(),Oe();let gv=await $.ready;return gv.TAG==="Ok"?{TAG:"Ok",_0:el}:{TAG:"Error",_0:gv._0}}var e7=10*6e4;function hV(e,t){let r=setTimeout(e,t);return r.unref(),r}function _V(e){clearTimeout(e)}var Ab={setTimer:hV,clearTimer:_V};var yV=["deterministic","transient_upstream","transient_local","rate_limited","needs_approval","needs_decision"],LE=ju(yV);function Jf(e){switch(e){case"deterministic":return"deterministic";case"needs_approval":return"needs_approval";case"needs_decision":return"needs_decision";case"rate_limited":return"rate_limited";case"transient_local":return"transient_local";case"transient_upstream":return"transient_upstream";default:return}}function bV(e){if(typeof e=="object")return"recover";switch(e){case"HoldUntilResetPolicy":return"hold_until_reset";case"RedImmediatelyPolicy":return"red_immediately";case"NeverLaddersPolicy":return"never_ladders"}}function Eb(e){let t=e.transpiledItemCount,r=e.redactedReasoningCount,n=(t!==void 0?" items="+t.toString():"")+(r!==void 0?" redacted="+r.toString():"");return"user_switch "+e.sourceHarness+"->"+e.targetHarness+" model="+k(e.model,"unspecified")+n}function $b(e){let t={};t.exportable=e.transpileFeasibility.exportable,t.target_adapter_available=e.transpileFeasibility.targetAdapterAvailable;let r={};r.available=e.available,r.source_harness=e.sourceHarness,r.target_harness=e.targetHarness;let n=e.model;return n!==void 0&&(r.model=n),r.transpile_feasibility=t,r.offer_reason=e.offerReason,r}function UE(e){switch(e){case"deterministic":return"RedImmediatelyPolicy";case"transient_upstream":return{TAG:"RecoverPolicy",rungs:[{rung:"in_place_resume",maxAttempts:2}]};case"transient_local":return{TAG:"RecoverPolicy",rungs:[{rung:"redispatch",maxAttempts:1},{rung:"worker_rebuild",maxAttempts:1}]};case"rate_limited":return"HoldUntilResetPolicy";case"needs_approval":case"needs_decision":return"NeverLaddersPolicy"}}var vV=15*6e4,SV=30*6e4;function Cb(e,t){let r=W(e,i=>i.trim());if(r===void 0||r==="")return t;let n=Number(r);return isFinite(n)&&n>0?Math.floor(n):t}function zd(e){return{maxRecoveryRungs:Cb(e.LINZUMI_FATE_LADDER_MAX_RECOVERY_RUNGS,4),maxLadderMs:Cb(e.LINZUMI_FATE_LADDER_BUDGET_MS,vV),maxRateLimitHoldMs:Cb(e.LINZUMI_FATE_LADDER_MAX_HOLD_MS,SV)}}function wV(e){if(typeof e=="object")return e._0;switch(e){case"ClassificationStep":return"classification";case"HoldStep":return"hold";case"UserSwitchStep":return"user_cross_harness_switch"}}function Rb(e,t){return{fate:e,startedAtMs:t,rungCursor:0,cursorAttempts:0,recoveryRungsAttempted:0,holdCommitted:!1,holdDispatched:!1,userSwitchInvoked:!1,entries:[],historyTruncated:!1}}function Lr(e,t){return e.entries.length>=16?e.historyTruncated?e:{fate:e.fate,startedAtMs:e.startedAtMs,rungCursor:e.rungCursor,cursorAttempts:e.cursorAttempts,recoveryRungsAttempted:e.recoveryRungsAttempted,holdCommitted:e.holdCommitted,holdDispatched:e.holdDispatched,userSwitchInvoked:e.userSwitchInvoked,entries:e.entries,historyTruncated:!0}:{fate:e.fate,startedAtMs:e.startedAtMs,rungCursor:e.rungCursor,cursorAttempts:e.cursorAttempts,recoveryRungsAttempted:e.recoveryRungsAttempted,holdCommitted:e.holdCommitted,holdDispatched:e.holdDispatched,userSwitchInvoked:e.userSwitchInvoked,entries:e.entries.concat([t]),historyTruncated:e.historyTruncated}}function xV(e){switch(e){case"budget_rungs_exhausted":case"budget_wall_clock_exhausted":case"rungs_exhausted":case"grant_unavailable":return!0;default:return!1}}function ZE(e,t,r){if(e!=="transient_local"||r===void 0||!(r.backendDead&&xV(t)))return;let n=r.exportable&&r.targetAdapterAvailable,i=n?"the "+r.sourceHarness+" harness backend died and automatic recovery is exhausted; this job can continue on "+r.targetHarness+" if the user chooses to switch":r.exportable?"the "+r.sourceHarness+" harness backend died and automatic recovery is exhausted, but the "+r.targetHarness+" harness is not available on this machine":"the "+r.sourceHarness+" harness backend died and automatic recovery is exhausted, but no recorded harness activity is exportable to carry over";return{available:n,sourceHarness:r.sourceHarness,targetHarness:r.targetHarness,model:r.model,transpileFeasibility:{exportable:r.exportable,targetAdapterAvailable:r.targetAdapterAvailable},offerReason:i}}function kV(e,t){switch(t){case"in_place_resume":return e.inPlaceResume;case"redispatch":return e.redispatch;case"worker_rebuild":return e.workerRebuild}}function VE(e){let t=e.grants,r=e.breaker,n=e.budgets,i=e.nowMs,o=e.fate;if(o===void 0)return{TAG:"Stand",cause:"no_fate"};let s=UE(o),a=e.run,l=a!==void 0?a:Rb(o,i);if(typeof s!="object")switch(s){case"HoldUntilResetPolicy":if(l.holdCommitted)return{TAG:"Red",cause:"hold_already_committed",run:Lr(l,{rung:"HoldStep",outcome:"rungs_exhausted",atMs:i,detail:"the one hold-and-dispatch was already spent",resetAtMs:void 0})};let d=e.rateLimitResetAtMs,u=0;if(d!==void 0&&d>i){if(d-i>n.maxRateLimitHoldMs){let p=Math.round((d-i)/1e3).toString(),m=Math.round(n.maxRateLimitHoldMs/1e3).toString();return{TAG:"Red",cause:"hold_unavailable_reset_beyond_bound",run:Lr(l,{rung:"HoldStep",outcome:"hold_unavailable_reset_beyond_bound",atMs:i,detail:"reset is "+p+"s away, beyond the "+m+"s hold budget",resetAtMs:d})}}let c=r(o,i),f=0;if(typeof c!="object")f=2;else{let p=c.reason;return{TAG:"BreakerHold",reason:p,run:Lr(l,{rung:"HoldStep",outcome:"breaker_held",atMs:i,detail:p,resetAtMs:void 0})}}if(f===2)return{TAG:"HoldUntilReset",resetAtMs:d,run:Lr({fate:l.fate,startedAtMs:l.startedAtMs,rungCursor:l.rungCursor,cursorAttempts:l.cursorAttempts,recoveryRungsAttempted:l.recoveryRungsAttempted,holdCommitted:!0,holdDispatched:l.holdDispatched,userSwitchInvoked:l.userSwitchInvoked,entries:l.entries,historyTruncated:l.historyTruncated},{rung:"HoldStep",outcome:"held",atMs:i,detail:void 0,resetAtMs:d})}}else u=1;if(u===1){if(!t.inPlaceResume)return{TAG:"Red",cause:"hold_unavailable_no_reset",run:Lr(l,{rung:"HoldStep",outcome:"hold_unavailable_no_reset",atMs:i,detail:"no known rate-limit reset timestamp",resetAtMs:void 0})};let c=r(o,i),f=0;if(typeof c!="object")f=2;else{let p=c.reason;return{TAG:"BreakerHold",reason:p,run:Lr(l,{rung:{TAG:"RungStep",_0:"in_place_resume"},outcome:"breaker_held",atMs:i,detail:p,resetAtMs:void 0})}}if(f===2){if(l.recoveryRungsAttempted<n.maxRecoveryRungs)return{TAG:"ExecuteRung",rung:"in_place_resume",run:Lr({fate:l.fate,startedAtMs:l.startedAtMs,rungCursor:l.rungCursor,cursorAttempts:l.cursorAttempts,recoveryRungsAttempted:l.recoveryRungsAttempted+1|0,holdCommitted:l.holdCommitted,holdDispatched:l.holdDispatched,userSwitchInvoked:l.userSwitchInvoked,entries:l.entries,historyTruncated:l.historyTruncated},{rung:{TAG:"RungStep",_0:"in_place_resume"},outcome:"attempted",atMs:i,detail:"reducer-granted bounded retry (transient-evidence carve-out; no known reset to hold for)",resetAtMs:void 0})};let p=l.recoveryRungsAttempted.toString(),m=n.maxRecoveryRungs.toString();return{TAG:"Red",cause:"budget_rungs_exhausted",run:Lr(l,{rung:"ClassificationStep",outcome:"budget_rungs_exhausted",atMs:i,detail:p+" recovery rungs attempted (budget "+m+")",resetAtMs:void 0})}}}break;case"RedImmediatelyPolicy":return{TAG:"Red",cause:"deterministic_by_design",run:Lr(l,{rung:"ClassificationStep",outcome:"no_rungs_by_design",atMs:i,detail:"classification: deterministic, no rungs attempted by design",resetAtMs:void 0})};case"NeverLaddersPolicy":return{TAG:"Stand",cause:"never_ladders"}}else{let d=s.rungs;if(l.recoveryRungsAttempted>=n.maxRecoveryRungs){let _=l.recoveryRungsAttempted.toString(),g=n.maxRecoveryRungs.toString();return{TAG:"Red",cause:"budget_rungs_exhausted",run:Lr(l,{rung:"ClassificationStep",outcome:"budget_rungs_exhausted",atMs:i,detail:_+" recovery rungs attempted (budget "+g+")",resetAtMs:void 0})}}if(i-l.startedAtMs>n.maxLadderMs){let _=Math.round((i-l.startedAtMs)/1e3).toString(),g=Math.round(n.maxLadderMs/1e3).toString();return{TAG:"Red",cause:"budget_wall_clock_exhausted",run:Lr(l,{rung:"ClassificationStep",outcome:"budget_wall_clock_exhausted",atMs:i,detail:"ladder open "+_+"s (budget "+g+"s)",resetAtMs:void 0})}}let u=l.rungCursor,c=l.cursorAttempts,f=!1,p=d[u];for(;(()=>{let _=p;return _!==void 0?c>=_.maxAttempts:!1})();)u=u+1|0,c=0,p=d[u];for(;(()=>{let _=p;return _!==void 0?!kV(t,_.rung):!1})();)f=!0,u=u+1|0,c=0,p=d[u];let m=p;if(m===void 0)return{TAG:"Red",cause:f?"grant_unavailable":"rungs_exhausted",run:Lr(l,{rung:"ClassificationStep",outcome:f?"grant_unavailable":"rungs_exhausted",atMs:i,detail:f?"no executable recovery rung in this session context":"every recovery rung for this fate was already attempted",resetAtMs:void 0})};let h=r(o,i);if(typeof h=="object"){let _=h.reason;return{TAG:"BreakerHold",reason:_,run:Lr(l,{rung:{TAG:"RungStep",_0:m.rung},outcome:"breaker_held",atMs:i,detail:_,resetAtMs:void 0})}}return{TAG:"ExecuteRung",rung:m.rung,run:Lr({fate:l.fate,startedAtMs:l.startedAtMs,rungCursor:u,cursorAttempts:c+1|0,recoveryRungsAttempted:l.recoveryRungsAttempted+1|0,holdCommitted:l.holdCommitted,holdDispatched:l.holdDispatched,userSwitchInvoked:l.userSwitchInvoked,entries:l.entries,historyTruncated:l.historyTruncated},{rung:{TAG:"RungStep",_0:m.rung},outcome:"attempted",atMs:i,detail:void 0,resetAtMs:void 0})}}}function WE(e,t,r){return e.userSwitchInvoked?{TAG:"Error",_0:"the one user-invoked cross-harness switch for this turn was already spent"}:{TAG:"Ok",_0:Lr({fate:e.fate,startedAtMs:e.startedAtMs,rungCursor:e.rungCursor,cursorAttempts:e.cursorAttempts,recoveryRungsAttempted:e.recoveryRungsAttempted,holdCommitted:e.holdCommitted,holdDispatched:e.holdDispatched,userSwitchInvoked:!0,entries:e.entries,historyTruncated:e.historyTruncated},{rung:"UserSwitchStep",outcome:"switch_invoked",atMs:t,detail:Eb(r),resetAtMs:void 0,userSwitch:r})}}function Ib(e,t,r,n,i){let o;switch(t){case"switch_dispatched":o="switch_dispatched";break;case"switch_failed":o="switch_failed";break;case"switch_refused":o="switch_refused";break}return Lr(e,{rung:"UserSwitchStep",outcome:o,atMs:r,detail:i!==void 0?Eb(n)+" - "+i:Eb(n),resetAtMs:void 0,userSwitch:n})}function Qf(e,t,r,n){let i=n!==void 0?se(n):void 0,o=UE(t),s=c=>{let f={};f.rung=wV(c.rung),f.outcome=c.outcome,f.at_ms=c.atMs;let p=c.detail;p!==void 0&&(f.detail=p.slice(0,200));let m=c.resetAtMs;m!==void 0&&(f.reset_at_ms=m);let h=c.userSwitch;if(h!==void 0){f.source_harness=h.sourceHarness,f.target_harness=h.targetHarness;let _=h.model;_!==void 0&&(f.model=_);let g=h.transpiledItemCount;g!==void 0&&(f.transpiled_item_count=g);let b=h.redactedReasoningCount;b!==void 0&&(f.redacted_reasoning_count=b)}return f},a=e!==void 0?e.entries.slice(0,16).map(s):[],l={};l.fate=t,l.policy=bV(o),l.recovery_rungs_attempted=e!==void 0?e.recoveryRungsAttempted:0;let d={};d.max_recovery_rungs=r.maxRecoveryRungs,d.max_ladder_ms=r.maxLadderMs,d.max_rate_limit_hold_ms=r.maxRateLimitHoldMs,l.budget=d,e!==void 0&&e.historyTruncated&&(l.history_truncated=!0),i!==void 0&&(l.failover_offer=$b(i));let u;if(u=t==="deterministic"?a.length===0:!1,u){let c={};c.rung="classification",c.outcome="no_rungs_by_design",c.at_ms=0,c.detail="classification: deterministic, no rungs attempted by design",l.entries=[c]}else l.entries=a;return l}var HE="switching this job to another harness at the user's request";function OV(e,t,r){let n=r.sandboxedNeverDefault&&de(t,"workspace-write");if(e===void 0)return{TAG:"Ok",_0:n?"never":"on-request"};switch(e){case"default":return{TAG:"Ok",_0:n?"never":"on-request"};case"never":return{TAG:"Ok",_0:de(t,"danger-full-access")||n?"never":"on-request"};case"on-failure":return{TAG:"Ok",_0:"on-failure"};case"on-request":return{TAG:"Ok",_0:"on-request"};default:return{TAG:"Error",_0:"unsupported Codex approval policy: "+e}}}function KE(e,t,r){return sr(OV(e,t,r),n=>n==="on-failure"?"on-request":n)}function BE(e,t){switch(e){case"danger-full-access":return{TAG:"Ok",_0:Object.fromEntries([["type","dangerFullAccess"]])};case"read-only":return{TAG:"Ok",_0:Object.fromEntries([["type","readOnly"],["access",Object.fromEntries([["type","fullAccess"]])],["networkAccess",!1]])};case"workspace-write":return{TAG:"Ok",_0:Object.fromEntries([["type","workspaceWrite"],["writableRoots",[t]],["readOnlyAccess",Object.fromEntries([["type","fullAccess"]])],["networkAccess",!1],["excludeTmpdirEnvVar",!1],["excludeSlashTmp",!1]])};default:return{TAG:"Error",_0:"unsupported Codex sandbox mode: "+e}}}function CV(e){let t=e.item,n=(typeof t=="object"&&t!==null&&!Array.isArray(t)?t:e).type,i=n!==void 0?hr(n):void 0;if(i!==void 0)switch(i){case"commandExecution":case"terminalInput":return"running terminal command";case"agentMessage":case"fileChange":case"reasoning":case"webSearch":case"webSearchCall":case"web_search_call":return"streaming response";default:return}}function Mb(e,t){switch(e){case"command/exec/outputDelta":return"running terminal command";case"item/agentMessage/delta":case"item/reasoning/textDelta":return"streaming response";default:return e.startsWith("item/commandExecution/")?"running terminal command":CV(t)}}var PV=fn(e=>({decision:e.f("decision",bt),label:e.f("label",bt),description:e.f("description",Qt(bt))})),$V=fn(e=>({requestId:e.f("requestId",bt),kind:e.f("kind",bt),summary:e.f("summary",bt),reason:e.f("reason",Qt(bt)),port:e.f("port",Qt(Js)),pid:e.f("pid",Qt(Js)),command:e.f("command",Qt(bt)),cwd:e.f("cwd",Qt(bt)),processName:e.f("processName",Qt(bt)),processIconKey:e.f("processIconKey",Qt(bt)),processIconPath:e.f("processIconPath",Qt(bt)),choices:e.f("choices",Qt(zu(PV))),allowedActorSlug:e.f("allowedActorSlug",Qt(bt)),allowedActorUserId:e.f("allowedActorUserId",Qt(Js))})),RV=ju(["starting turn","streaming response","running terminal command","interrupt requested","retrying empty turn","model stream stalled - resuming automatically from the last streamed checkpoint","upstream outage detected - recovery paused, resuming automatically","awaiting approval"]),t7=$S([fn(e=>(e.tag("status","queued"),{TAG:"Queued",reason:e.f("reason",Qt(bt))})),fn(e=>(e.tag("status","processed"),{TAG:"Processed",reason:e.f("reason",Qt(bt))})),fn(e=>(e.tag("status","processing"),{TAG:"Processing",reason:e.f("reason",RV),approval:e.f("approval",Qt($V))})),fn(e=>(e.tag("status","ignored"),{TAG:"Ignored",reason:e.f("reason",bt)})),fn(e=>(e.tag("status","failed"),{TAG:"Failed",reason:e.f("reason",bt),retryable:e.f("retryable",Qt(CS)),fate:e.f("fate",Qt(LE))})),fn(e=>(e.tag("status","interrupted"),{TAG:"Interrupted",reason:e.f("reason",bt)}))]);function MV(e){let t=e.actorSlug,r;if(t!==void 0){let o=t.trim();r=o===""?"unknown":o}else r="unknown";let n=e.actorUserId,i=n!==void 0?n.toString():"unknown";return["Kandan message seq="+e.seq.toString()+" from "+r+" (user_id="+i+"):","",e.body].join(`
|
|
326
326
|
`)}function JE(e){let t=e.body.trimStart();return t.startsWith("!")?t:MV(e)}function zb(e,t){let r=e[t];if(typeof r=="object"&&r!==null&&!Array.isArray(r))return r}function In(e,t){let r=e[t];if(typeof r=="string")return r}function Os(e,t){let r=e[t];if(Array.isArray(r))return r}function jd(e){return Ne(e,t=>{if(typeof t!="object"||t===null||Array.isArray(t))return;if(In(t,"type")==="text")return In(t,"text")}).join(`
|
package/dist/impl-ts/index.js
CHANGED
|
@@ -667,7 +667,7 @@ ${n}
|
|
|
667
667
|
`)}catch(o){n?.(o instanceof Error?o.message:String(o))}}}}function Rhe(e,n){let t=e.trim();if(t.length<=n)return t;let r="... ";return`${r}${t.slice(t.length-(n-r.length))}`}function Ehe(e){let n=Object.entries(e);return n.length<=fN?e:(n.sort(([,t],[,r])=>Date.parse(t.lastAt)-Date.parse(r.lastAt)),Object.fromEntries(n.slice(-fN)))}function xN(e,n,t,r,o=hN){let i=e.load(),s=(i[n]?.count??0)+1,a=t instanceof Error?t.message:String(t??"");return e.save(Ehe({...i,[n]:{count:s,lastError:Rhe(a===""?"the engine worker never started":a,Ihe),lastAt:new Date(r).toISOString()}})),{count:s,tripped:s>=o}}function _N(e,n){let t=e.load();if(t[n]===void 0)return!1;let{[n]:r,...o}=t;return e.save(o),!0}function bN(e,n,t=hN){let r=e.load()[n];return r!==void 0&&r.count>=t?r:void 0}function mC(e,n=fC){let t=wN.find(r=>e!==r&&e.startsWith(`${r}/`));if(t===void 0)return!1;try{return n(e).dev===n(t).dev}catch{return!1}}function vN(e,n=fC){let t=wN.find(i=>e!==i&&e.startsWith(`${i}/`));if(t===void 0)return!1;let r;try{r=n(t).dev}catch{return!1}let o=e;for(;o!==t;)try{return n(o).dev===r}catch(i){let s=typeof i=="object"&&i!==null&&"code"in i?i.code:void 0;if(s!=="ENOENT"&&s!=="ENOTDIR")return!1;let a=mN(o);if(a===o)break;o=a}return!0}function hC(e,n={}){let t=n.realpathFn??She,r;try{r=t(Phe($t(e)))}catch{return!1}return!mC(r,n.statFn??fC)}function SN(e,n=hC){let t=e.load(),r=[],o={};for(let[i,s]of Object.entries(t)){let a=!1;try{a=n(i)}catch{a=!1}a?r.push(i):o[i]=s}return r.length>0&&e.save(o),r}function gC(e){return(e instanceof Error?e.message:String(e??"")).startsWith(kN)}function CN(e,n){return`${kN}${e} on this computer: the last ${n.count} attempts there died during startup (most recent error: ${n.lastError}). Check that the folder exists and its disk/volume is mounted. The pause clears after one successful session, or on runner restart (\`linzumi connect\`) once the folder is present again.`}var hN,Ihe,fN,wN,kN,TN=F(()=>{"use strict";iC();ms();hN=3,Ihe=480,fN=50;wN=["/Volumes"];kN="coding sessions are paused for "});import{mkdirSync as Dhe,rmSync as PN,writeFileSync as Mhe,promises as IN}from"node:fs";import{join as Ahe}from"node:path";import{StringDecoder as $he}from"node:string_decoder";function Ohe(e){return`'${e.replaceAll("'","'\\''")}'`}function Lhe(e,n){return`__lz_live_out=${Ohe(n)}; if ! : >> "$__lz_live_out" 2>/dev/null; then __lz_live_out=/dev/null; fi; { ${e}${cx}`}function jhe(e){return RN.test(e)&&e.endsWith(cx)}function EN(e){let n=e.match(RN)?.[0];return n===void 0||!e.endsWith(cx)?e:e.slice(n.length,e.length-cx.length)}function DN(e){let n=e.LINZUMI_CLAUDE_LIVE_BASH?.trim().toLowerCase();return!(n==="0"||n==="false"||n==="off"||n==="no")}function MN(e){let n=e.pollIntervalMs??Fhe,t=e.maxEmittedBytesPerTool??zhe,r=new Map,o=!1,i=c=>{let l=r.get(c);if(l!==void 0){r.delete(c),l.timer!==void 0&&(clearInterval(l.timer),l.timer=void 0);try{PN(l.file,{force:!0})}catch{}}},s=async(c,l)=>{if(!l.reading){l.reading=!0;try{let p=await IN.stat(l.file);if(p.size<=l.offset)return;let m=Math.min(p.size-l.offset,qhe,t-l.emittedBytes);if(m<=0){i(c);return}let f=await IN.open(l.file,"r");try{let y=Buffer.alloc(m),{bytesRead:x}=await f.read(y,0,m,l.offset);if(x<=0)return;l.offset+=x,l.emittedBytes+=x;let w=l.decoder.write(y.subarray(0,x));w!==""&&r.get(c)===l&&e.onOutputDelta(c,w),l.emittedBytes>=t&&(e.log?.("claude_live_bash.output_budget_exhausted",{tool_use_id:c,emitted_bytes:l.emittedBytes}),i(c))}finally{await f.close()}}catch(p){r.get(c)===l&&(e.log?.("claude_live_bash.tail_read_failed",{tool_use_id:c,message:p instanceof Error?p.message:String(p)}),i(c))}finally{l.reading=!1}}},a=(c,l)=>{i(c);let p={file:l,decoder:new $he("utf8"),offset:0,emittedBytes:0,reading:!1,timer:void 0};r.set(c,p);let m=setInterval(()=>{s(c,p)},n);m.unref?.(),p.timer=m},d=(c,l)=>{if(o)return;let p=l.command;if(typeof p!="string"||p.trim()===""||l.run_in_background===!0||jhe(p))return;let m=Ahe(e.captureDir,`${c.replaceAll(/[^\w-]/g,"_")}.out`);try{Dhe(e.captureDir,{recursive:!0}),Mhe(m,"")}catch(f){e.log?.("claude_live_bash.capture_file_failed",{tool_use_id:c,message:f instanceof Error?f.message:String(f)});return}return a(c,m),{...l,command:Lhe(p,m)}};return{hookMatchers:[{matcher:"Bash",hooks:[async c=>{let l={continue:!0};if(typeof c!="object"||c===null)return l;let p=c;if(p.hook_event_name!=="PreToolUse"||p.tool_name!=="Bash"||typeof p.tool_use_id!="string"||p.tool_use_id===""||typeof p.tool_input!="object"||p.tool_input===null||p.permission_mode!=="bypassPermissions")return l;let m=d(p.tool_use_id,p.tool_input);return m===void 0?l:{continue:!0,hookSpecificOutput:{hookEventName:"PreToolUse",updatedInput:m}}}]}],wrapApprovedTool:d,settleTool:i,settleAll:()=>{for(let c of[...r.keys()])i(c)},close:()=>{o=!0;for(let c of[...r.keys()])i(c);try{PN(e.captureDir,{recursive:!0,force:!0})}catch{}}}}var RN,cx,Fhe,zhe,qhe,yC=F(()=>{"use strict";RN=/^__lz_live_out='(?:[^']|'\\'')*'; if ! : >> "\$__lz_live_out" 2>\/dev\/null; then __lz_live_out=\/dev\/null; fi; \{ /,cx=`
|
|
668
668
|
} > >(tee -a -- "$__lz_live_out") 2> >(tee -a -- "$__lz_live_out" >&2)`;Fhe=200,zhe=262144,qhe=65536});import{spawnSync as Nhe}from"node:child_process";import{existsSync as Uhe}from"node:fs";import{homedir as Bhe}from"node:os";import{basename as Jhe,posix as LN,win32 as Khe}from"node:path";function bC(e){return e==="win32"?Khe:LN}function Vhe(e,n){let t=Jhe(e).includes("fish")?`printf '%s%s%s' '${lx}' (string join ':' $PATH) '${_C}'`:`printf '%s%s%s' '${lx}' "$PATH" '${_C}'`;switch(n){case"interactive_login":return["-l","-i","-c",t];case"interactive":return["-i","-c",t];case"login":return["-l","-c",t]}}function Whe(e,n){let t=Nhe(e,[...n],{encoding:"utf8",timeout:5e3,killSignal:"SIGKILL",stdio:["ignore","pipe","ignore"]});return{stdout:typeof t.stdout=="string"?t.stdout:void 0,error:t.error}}function $f(e){return{env:e?.env??process.env,platform:e?.platform??process.platform,homeDir:e?.homeDir??Bhe(),fileExists:e?.fileExists??Uhe,runLoginShell:e?.runLoginShell}}function Hhe(e){if(e===void 0)return;let n=e.lastIndexOf(lx),t=e.lastIndexOf(_C);if(n===-1||t===-1||t<=n)return;let r=e.slice(n+lx.length,t).trim();return r===""?void 0:r}function Ghe(e){let n=$f(e);if(n.platform==="win32")return;let t=e===void 0;if(e!==void 0&&e.runLoginShell===void 0||t&&process.env.VITEST!==void 0)return;if(t&&$N)return AN;let r=n.env.SHELL?.trim(),o=n.runLoginShell??Whe,i=[];if(r!==void 0&&r!=="")for(let a of["interactive_login","interactive","login"]){let d=o(r,Vhe(r,a)),u=Hhe(d.stdout);if(u!==void 0)for(let c of u.split(":"))c!==""&&i.push(c)}let s=i.length===0?void 0:wC(i).join(":");return t&&(AN=s,$N=!0),s}function Zhe(e){let n=$f(e);if(n.platform==="win32")return[];let t=n.homeDir,r=LN.join,o=n.env.VOLTA_HOME?.trim(),i=n.env.BUN_INSTALL?.trim(),s=n.env.npm_config_prefix?.trim(),a=n.env.N_PREFIX?.trim();return wC([r(t,".local","bin"),r(t,".volta","bin"),o===void 0||o===""?void 0:r(o,"bin"),r(t,".bun","bin"),i===void 0||i===""?void 0:r(i,"bin"),r(t,".npm-global","bin"),s===void 0||s===""?void 0:r(s,"bin"),a===void 0||a===""?void 0:r(a,"bin"),r(t,".claude","local"),"/opt/homebrew/bin","/usr/local/bin"].filter(d=>d!==void 0))}function ON(e,n){return e===void 0?[]:e.split(bC(n).delimiter).filter(t=>t!=="")}function wC(e){return Array.from(new Set(e))}function jN(e){let n=$f(e);return wC([...ON(n.env.PATH,n.platform),...ON(Ghe(e),n.platform),...Zhe(e)])}function px(e){let n=e===void 0;if(n&&process.env.VITEST!==void 0)return process.env.PATH??"";if(n&&xC!==void 0)return xC;let t=$f(e),r=jN(e).join(bC(t.platform).delimiter);return r!==""&&(t.env.PATH=r),n&&(xC=r),r}function fx(e,n){let t=$f(n);if(e.includes("/")||e.includes("\\"))return t.fileExists(e)?e:void 0;let r=t.platform==="win32"?[`${e}.exe`,`${e}.cmd`,e]:[e],o=bC(t.platform).join;for(let i of jN(n))for(let s of r){let a=o(i,s);if(t.fileExists(a))return a}}function FN(e,n){return[`\`${e}\` was not found on this runner's PATH, the login-shell PATH, or the common install locations (~/.local/bin, ~/.volta/bin, ~/.bun/bin, npm-global, Homebrew).`,`If \`${e}\` works in your terminal, the runner process does not see your shell's PATH (common when the runner is launched from an app or service instead of a terminal).`,`Fix: pass ${n} "$(command -v ${e})" when starting the runner, or make sure ${e}'s directory is on your login-shell PATH.`].join(`
|
|
669
669
|
`)}var lx,_C,AN,$N,xC,vC=F(()=>{"use strict";lx="__LINZUMI_LOGIN_PATH_BEGIN__",_C="__LINZUMI_LOGIN_PATH_END__";$N=!1});import{closeSync as Qhe,openSync as Xhe,readSync as Yhe,statSync as ege}from"node:fs";function xd(e){return typeof e!="string"||e===""?e:nge.reduce((n,t)=>t.source.startsWith("\\beyJ")?n.replace(t,"<redacted>"):n.replace(t,"$1<redacted>"),e)}function zN(e,n){if(typeof e!="string"||e==="")return;if(Buffer.byteLength(e,"utf8")<=n)return e;let t=Buffer.from(e,"utf8"),r=t.length-n;for(;r<t.length&&((t[r]??0)&192)===128;)r+=1;return t.subarray(r).toString("utf8")}function age(e,n){let t;try{let{size:r}=ege(e),o=r>n?r-n:0,i=r-o;if(i<=0)return"";let s=Buffer.allocUnsafe(i);t=Xhe(e,"r");let a=Yhe(t,s,0,i,o);return s.subarray(0,a).toString("utf8")}catch{return""}finally{if(t!==void 0)try{Qhe(t)}catch{}}}function qN(e){let n=e.now??Date.now,t=e.setIntervalImpl??setInterval,r=e.clearIntervalImpl??clearInterval,o=e.readTail??age,i=Math.max(rge,e.intervalMs??tge),s=Math.max(1,e.maxTailBytes??oge),a=Math.max(1,e.maxLifecycleEvents??ige),d=[],u=!1,c,l=v=>{try{for(d.push(v);d.length>a;)d.shift()}catch{}},p=()=>{try{let v=e.backendStderrSnapshot?.();if(typeof v!="string"||v==="")return;let b=v.length>s?v.slice(v.length-s):v;return xd(b)}catch{return}},m=()=>{let v=xd(o(e.runnerLogFile,s)),b=p(),k={kind:"runner_diagnostic_log",captured_at:new Date(n()).toISOString(),lifecycle:d.map(R=>({event:R.event,at:R.atIso,...R.closeCode===void 0?{}:{close_code:R.closeCode},...R.closeReason===void 0?{}:{close_reason:xd(R.closeReason)},...R.previousSessionDurationMs===void 0?{}:{previous_session_duration_ms:R.previousSessionDurationMs},...R.reconnectCount===void 0?{}:{reconnect_count:R.reconnectCount}})),runner_log_tail:v,...b===void 0?{}:{backend_stderr:b}};return{bundle_name:"runner-diagnostics",exported_at:new Date(n()).toISOString(),diagnostics:k,telemetry_ndjson:d.map(R=>JSON.stringify(R)).join(`
|
|
670
|
-
`)}},f=Math.max(256,e.spoolTailBytes??sge),y=(v,b)=>{let k=v.diagnostics!==null&&typeof v.diagnostics=="object"&&!Array.isArray(v.diagnostics)?{...v.diagnostics}:{},R=zN(k.runner_log_tail,f),P=zN(k.backend_stderr,f);return R!==void 0&&(k.runner_log_tail=R),P!==void 0&&(k.backend_stderr=P),k.spool_reason=b instanceof Error?b.message:String(b),{...v,diagnostics:k}},x=async()=>{let v=d.length,b=m();try{await Promise.resolve(e.upload(b)),d.splice(0,v)}catch(k){let R=!1;if(e.spool!==void 0&&v>0)try{R=e.spool.append(y(b,k))}catch{R=!1}R&&d.splice(0,v);try{e.log?.("runner_diagnostics.upload_failed",{buffered_events:d.length,spooled:R,error:k instanceof Error?k.message:String(k)})}catch{}}},w=()=>{u||c!==void 0||(c=t(()=>{x()},i),c.unref?.())},S=()=>{u=!0,c!==void 0&&(r(c),c=void 0)};try{e.log?.("runner_diagnostics.enabled",{destination:"linzumi",runner_log_file:e.runnerLogFile,interval_ms:i,note:"runner lifecycle + runner-log tail + backend stderr are uploaded to Linzumi for support diagnostics (auto-deleted after 4 days)"})}catch{}return w(),{recordLifecycle:l,flushNow:x,stop:S}}var nge,tge,rge,oge,ige,sge,mx=F(()=>{"use strict";nge=[/(--token[=\s]+)\S+/gi,/(bearer\s+)[^\s,;"'\]\}]+/gi,/((?:access[_-]?token|api[_-]?key|auth[_-]?token|authorization|secret|password|refresh[_-]?token|session[_-]?token|jwt|token)["']?\s*[:=]\s*["']?)[^\s,;"'\]\}]+/gi,/\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g];tge=45e3,rge=5e3,oge=64*1024,ige=200,sge=16*1024});import dge from"blessed";function uge(e){if(e.indexOf("%;")===-1)return e;let n=0,t="",r=0;for(;r<e.length;){let o=e[r],i=e[r+1];if(o==="%"&&i==="%"){t+="%%",r+=2;continue}if(o==="%"&&i==="?"){n+=1,t+="%?",r+=2;continue}if(o==="%"&&i===";"){n>0&&(n-=1,t+="%;"),r+=2;continue}t+=o,r+=1}return t}function UN(e=dge){let t=e.Tput?.prototype,r=t?._compile;if(t===void 0||typeof r!="function"||t[NN]===!0)return;let o=function(s,a,d){let u=typeof d=="string"?uge(d):d;return r.call(this,s,a,u)};t._compile=o,Object.defineProperty(t,NN,{value:!0,enumerable:!1,configurable:!0,writable:!0})}var NN,BN=F(()=>{"use strict";NN="__linzumiSetulcShimInstalled"});function JN(e){return e===void 0?!1:(e.unicode=!0,e.features!==void 0&&(e.features.unicode=!0),e.brokenACS=!0,!0)}function KN(e){if(e===void 0)return;let n=e.tput,t=e.program?.tput;if(n===void 0&&t===void 0){console.warn("[blessedAcsCharsetShim] screen has no tput; ACS charset fix was NOT applied - dynamic cells may render garbled");return}JN(n),t!==void 0&&t!==n&&JN(t)}var VN=F(()=>{"use strict"});var WN,cge,Of,lge,HN,GN=F(()=>{"use strict";WN=Symbol.for("linzumi.blessedPartialScreenCrashGuard"),cge=e=>{console.warn(e)},Of=(e,n)=>{n===void 0||process.removeListener(e,n)},lge=(e,n)=>{let t=e.instances.indexOf(n);t===-1||(e.instances.splice(t,1),e.total-=1),e.global=e.instances[0]??null,e.total===0&&(Of("uncaughtException",e._exceptionHandler),Of("SIGTERM",e._sigtermHandler),Of("SIGINT",e._sigintHandler),Of("SIGQUIT",e._sigquitHandler),Of("exit",e._exitHandler),delete e._exceptionHandler,delete e._sigtermHandler,delete e._sigintHandler,delete e._sigquitHandler,delete e._exitHandler,delete e._bound),n.destroyed=!0},HN=(e,n={})=>{let t=e.prototype;switch(t[WN]){case!0:return;case void 0:break}let r=t.destroy;t[WN]=!0,t.destroy=function(){switch(this.program){case null:case void 0:(n.warn??cge)({event:"runner.tui_partial_screen_teardown",branch:"screen_destroy_missing_program",program_present:!1,action:"cleanup_partial_screen_registration"}),lge(e,this);break;default:r.call(this);break}}}});function ZN(e){if(typeof e!="function")return;let n=e;if(!(!Array.isArray(n.instances)||typeof n.total!="number"))return n}function Lf(e,n){if(typeof n=="function")try{process.removeListener(e,n)}catch{}}function pge(e,n){try{let t=e.instances.indexOf(n);return t===-1?!1:(e.instances.splice(t,1),e.total-=1,e.global=e.instances[0],e.total===0&&(e.global=null,Lf("uncaughtException",e._exceptionHandler),Lf("SIGTERM",e._sigtermHandler),Lf("SIGINT",e._sigintHandler),Lf("SIGQUIT",e._sigquitHandler),Lf("exit",e._exitHandler),delete e._exceptionHandler,delete e._sigtermHandler,delete e._sigintHandler,delete e._sigquitHandler,delete e._exitHandler,delete e._bound),!0)}catch{return!1}}function fge(e,n,t,r){let o=0;for(let i of e.instances.slice()){if(n.has(i))continue;let s=i.program===void 0,a;if(!s&&typeof i.destroy=="function")try{i.destroy()}catch(d){a=d}pge(e,i),o+=1,xo(t,"runner.tui_stranded_screen_swept",{partial_construction:s,destroy_error:a===void 0?null:a instanceof Error?a.message:String(a),...r})}return o}function QN(e,n,t={}){let r=t.sinks??{},o=t.context??{},i=new Set(e?.instances??[]);try{return n()}catch(s){let a=e===void 0?0:fge(e,i,r,o);throw xo(r,"runner.tui_screen_construction_failed",{message:s instanceof Error?s.message:String(s),stack:s instanceof Error?s.stack??null:null,swept_screens:a,...o}),s}}var XN=F(()=>{"use strict";Zu()});var jt,SC,Xs=F(()=>{"use strict";jt="1.0.
|
|
670
|
+
`)}},f=Math.max(256,e.spoolTailBytes??sge),y=(v,b)=>{let k=v.diagnostics!==null&&typeof v.diagnostics=="object"&&!Array.isArray(v.diagnostics)?{...v.diagnostics}:{},R=zN(k.runner_log_tail,f),P=zN(k.backend_stderr,f);return R!==void 0&&(k.runner_log_tail=R),P!==void 0&&(k.backend_stderr=P),k.spool_reason=b instanceof Error?b.message:String(b),{...v,diagnostics:k}},x=async()=>{let v=d.length,b=m();try{await Promise.resolve(e.upload(b)),d.splice(0,v)}catch(k){let R=!1;if(e.spool!==void 0&&v>0)try{R=e.spool.append(y(b,k))}catch{R=!1}R&&d.splice(0,v);try{e.log?.("runner_diagnostics.upload_failed",{buffered_events:d.length,spooled:R,error:k instanceof Error?k.message:String(k)})}catch{}}},w=()=>{u||c!==void 0||(c=t(()=>{x()},i),c.unref?.())},S=()=>{u=!0,c!==void 0&&(r(c),c=void 0)};try{e.log?.("runner_diagnostics.enabled",{destination:"linzumi",runner_log_file:e.runnerLogFile,interval_ms:i,note:"runner lifecycle + runner-log tail + backend stderr are uploaded to Linzumi for support diagnostics (auto-deleted after 4 days)"})}catch{}return w(),{recordLifecycle:l,flushNow:x,stop:S}}var nge,tge,rge,oge,ige,sge,mx=F(()=>{"use strict";nge=[/(--token[=\s]+)\S+/gi,/(bearer\s+)[^\s,;"'\]\}]+/gi,/((?:access[_-]?token|api[_-]?key|auth[_-]?token|authorization|secret|password|refresh[_-]?token|session[_-]?token|jwt|token)["']?\s*[:=]\s*["']?)[^\s,;"'\]\}]+/gi,/\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g];tge=45e3,rge=5e3,oge=64*1024,ige=200,sge=16*1024});import dge from"blessed";function uge(e){if(e.indexOf("%;")===-1)return e;let n=0,t="",r=0;for(;r<e.length;){let o=e[r],i=e[r+1];if(o==="%"&&i==="%"){t+="%%",r+=2;continue}if(o==="%"&&i==="?"){n+=1,t+="%?",r+=2;continue}if(o==="%"&&i===";"){n>0&&(n-=1,t+="%;"),r+=2;continue}t+=o,r+=1}return t}function UN(e=dge){let t=e.Tput?.prototype,r=t?._compile;if(t===void 0||typeof r!="function"||t[NN]===!0)return;let o=function(s,a,d){let u=typeof d=="string"?uge(d):d;return r.call(this,s,a,u)};t._compile=o,Object.defineProperty(t,NN,{value:!0,enumerable:!1,configurable:!0,writable:!0})}var NN,BN=F(()=>{"use strict";NN="__linzumiSetulcShimInstalled"});function JN(e){return e===void 0?!1:(e.unicode=!0,e.features!==void 0&&(e.features.unicode=!0),e.brokenACS=!0,!0)}function KN(e){if(e===void 0)return;let n=e.tput,t=e.program?.tput;if(n===void 0&&t===void 0){console.warn("[blessedAcsCharsetShim] screen has no tput; ACS charset fix was NOT applied - dynamic cells may render garbled");return}JN(n),t!==void 0&&t!==n&&JN(t)}var VN=F(()=>{"use strict"});var WN,cge,Of,lge,HN,GN=F(()=>{"use strict";WN=Symbol.for("linzumi.blessedPartialScreenCrashGuard"),cge=e=>{console.warn(e)},Of=(e,n)=>{n===void 0||process.removeListener(e,n)},lge=(e,n)=>{let t=e.instances.indexOf(n);t===-1||(e.instances.splice(t,1),e.total-=1),e.global=e.instances[0]??null,e.total===0&&(Of("uncaughtException",e._exceptionHandler),Of("SIGTERM",e._sigtermHandler),Of("SIGINT",e._sigintHandler),Of("SIGQUIT",e._sigquitHandler),Of("exit",e._exitHandler),delete e._exceptionHandler,delete e._sigtermHandler,delete e._sigintHandler,delete e._sigquitHandler,delete e._exitHandler,delete e._bound),n.destroyed=!0},HN=(e,n={})=>{let t=e.prototype;switch(t[WN]){case!0:return;case void 0:break}let r=t.destroy;t[WN]=!0,t.destroy=function(){switch(this.program){case null:case void 0:(n.warn??cge)({event:"runner.tui_partial_screen_teardown",branch:"screen_destroy_missing_program",program_present:!1,action:"cleanup_partial_screen_registration"}),lge(e,this);break;default:r.call(this);break}}}});function ZN(e){if(typeof e!="function")return;let n=e;if(!(!Array.isArray(n.instances)||typeof n.total!="number"))return n}function Lf(e,n){if(typeof n=="function")try{process.removeListener(e,n)}catch{}}function pge(e,n){try{let t=e.instances.indexOf(n);return t===-1?!1:(e.instances.splice(t,1),e.total-=1,e.global=e.instances[0],e.total===0&&(e.global=null,Lf("uncaughtException",e._exceptionHandler),Lf("SIGTERM",e._sigtermHandler),Lf("SIGINT",e._sigintHandler),Lf("SIGQUIT",e._sigquitHandler),Lf("exit",e._exitHandler),delete e._exceptionHandler,delete e._sigtermHandler,delete e._sigintHandler,delete e._sigquitHandler,delete e._exitHandler,delete e._bound),!0)}catch{return!1}}function fge(e,n,t,r){let o=0;for(let i of e.instances.slice()){if(n.has(i))continue;let s=i.program===void 0,a;if(!s&&typeof i.destroy=="function")try{i.destroy()}catch(d){a=d}pge(e,i),o+=1,xo(t,"runner.tui_stranded_screen_swept",{partial_construction:s,destroy_error:a===void 0?null:a instanceof Error?a.message:String(a),...r})}return o}function QN(e,n,t={}){let r=t.sinks??{},o=t.context??{},i=new Set(e?.instances??[]);try{return n()}catch(s){let a=e===void 0?0:fge(e,i,r,o);throw xo(r,"runner.tui_screen_construction_failed",{message:s instanceof Error?s.message:String(s),stack:s instanceof Error?s.stack??null:null,swept_screens:a,...o}),s}}var XN=F(()=>{"use strict";Zu()});var jt,SC,Xs=F(()=>{"use strict";jt="1.0.135",SC=`linzumi ${jt}`});import ea from"blessed";function u4(e){return e.includes(gx)?e.replace(wge,"").replace(vge,"").includes(gx):!1}function Sge(e){return typeof e=="object"&&e!==null&&e.name==="escape"}function e4(e){return e.mode.type==="table"?!1:(e.mode={type:"table"},!0)}function Tge(e){return kge.test(e)}function c4(e){if(!e.includes(gx))return[];let n=[];for(let t of e.matchAll(Cge))n.push(t[1]==="A"?"up":"down");return n}function Pge(e){return Tge(e)?c4(e):[]}function _x(e,n={}){let t=vt.dashboard,r={trigger:e.trigger,had_tui:t!==void 0,stdin_was_tty_at_start:vt.stdinWasTtyAtStart,stdout_was_tty_at_start:vt.stdoutWasTtyAtStart};if(t===void 0)return xo(n,"runner.tui_teardown_ok",r),{hadTui:!1,ok:!0,swallowedErrorCode:void 0};vt.dashboard=void 0,vt.stop?.(),vt.stop=void 0;try{return t.destroy(),xo(n,"runner.tui_teardown_ok",r),{hadTui:!0,ok:!0,swallowedErrorCode:void 0}}catch(o){let i=Ap(o);return xo(n,"runner.tui_teardown_tty_error",{...r,stage:"screen_destroy",code:i??null,message:o instanceof Error?o.message:String(o),swallowed:!0}),{hadTui:!0,ok:!1,swallowedErrorCode:i}}}function Mge(){_x({trigger:"crash"},{log:Ig})}function l4(e,n={log:Ig}){if(vt.degradedToHeadless)return;vt.degradedToHeadless=!0;let t=_x({trigger:"tty_write_error"},n);xo(n,"runner.tui_degraded_headless",{code:e.code??null,stage:e.stage,had_tui:t.hadTui,teardown_ok:t.ok,note:"terminal detached mid-run; console disabled, runner continues headless"});try{process.stderr.write(`linzumi runner: terminal lost (write ${e.code??"error"}); Commander TUI disabled, runner continues headless
|
|
671
671
|
`)}catch(r){nd(r)===void 0&&xo(n,"runner.tui_degrade_farewell_write_failed",{message:r instanceof Error?r.message:String(r),stage:e.stage,swallowed:!0})}}function bx(e,n){if(p4()){let r=lye(jf);if(Age(jf,e,n,Date.now()),r!==void 0){r.render(Date.now());return}dye(jf),uye(jf);let o=AC(jf,Date.now());if(o!==void 0){MC(o);return}}let t=x4(e,n);if(t!==void 0)try{process.stdout.write(`${t}
|
|
672
672
|
`)}catch(r){if(nd(r)===void 0)throw r}}function p4(){if(vt.degradedToHeadless)return!1;switch(process.env.LINZUMI_RUNNER_CONSOLE){case"dashboard":return!0;case"lines":return!1;default:return process.stdout.isTTY===!0}}function wx(){return p4()}function Age(e,n,t,r){let o=Nv(n);e.lastUpdateAtMs=r;let i=d4(e)?.key;switch(o){case"onboarding.discovery_agents_started":e.browserUrl=xe(t.kandanUrl),e.workspace=xe(t.workspace),e.runnerId=xe(Mt(t,"runnerId"));break;case"kandan.connection_stale":e.connectionStale=!0;break;case"kandan.connection_recovered":e.connectionStale=!1;break;case"runner.notice":{let s=xe(t.message);if(s===void 0)break;let a=xe(t.key)??s,d=e.notices.get(a),u=xe(t.severity)??"warning",c=Un(t.count)??(d?.count??0)+1;if(d===void 0){e.notices.set(a,{key:a,severity:u,message:s,count:c,updatedAtMs:r});for(let l of e.notices.keys()){if(e.notices.size<=hge)break;e.notices.delete(l)}}else d.severity=u,d.message=s,d.count=c,d.updatedAtMs=r;break}case"onboarding.discovery_status":{let s=xe(t.phase),a=xe(t.status),d=hx(t.metadata),u=xe(d?.worker_id);if(s!==void 0&&a!==void 0){let c=s==="conversations",l=c?s:u??s,p=e.discovery.get(l),m=c?jge(p?.metadata,d):d;e.discovery.set(l,{key:l,phase:s,status:c?Fge(p,a,d):a,placesSearched:Math.max(p?.placesSearched??0,Un(t.places_searched)??0),message:xe(t.message)??(c?p?.message:void 0),currentPlace:xe(t.current_place)??(c?p?.currentPlace:void 0),currentSource:xe(t.current_source)??(c?p?.currentSource:void 0),lastError:xe(t.last_error),metadata:m,updatedAtMs:r})}break}case"kandan.roster_seeded":{let s=Mye(t.threads)??[];for(let a of s){let d=hx(a),u=xe(Mt(d,"kandan_thread_id"));if(u===void 0)continue;let c=`linzumi:${u}`;if((e.jobs.get(c)??Array.from(e.jobs.values()).find(m=>m.linzumiThreadId===u))!==void 0)continue;let p=Un(d?.last_activity_at_ms);e.jobs.set(c,{key:c,createdAtMs:p??0,createdOrdinal:jC(e),agentProvider:void 0,linzumiThreadId:u,linzumiThreadTitle:void 0,codexThreadId:void 0,tokenUsage:void 0,lastIncomingPreview:void 0,lastIncomingAtMs:void 0,lastAssistantPreview:void 0,lastAssistantAtMs:void 0,latestCodexEventId:void 0,eventType:"idle (server roster)",creditExhaustion:void 0,queueDepth:void 0,turnId:void 0,updatedAtMs:p??0})}e.rosterTruncated=Aye(t.truncated)??e.rosterTruncated;break}case"kandan.message_queued":case"codex.turn_starting":{let s=EC(e,t,r);s.linzumiThreadId=xe(Mt(t,"linzumi_thread_id"))??s.linzumiThreadId,s.linzumiThreadTitle=S4(t)??s.linzumiThreadTitle,s.codexThreadId=xe(Mt(t,"codex_thread_id"))??s.codexThreadId,s.lastIncomingPreview=xe(t.body_preview)??s.lastIncomingPreview,s.lastIncomingAtMs=Un(t.message_received_at_ms)??s.lastIncomingAtMs,s.queueDepth=Un(t.queue_depth)??s.queueDepth,s.eventType=Cye(o),s.updatedAtMs=r;break}case"codex.notification":{let s=xe(t.token_usage_summary),a=xe(t.rate_limit_summary),d=xe(t.credit_exhaustion_summary);s!==void 0&&(e.tokenUsage=s),a!==void 0&&(e.rateLimit=r4(e.rateLimit,a)),d!==void 0&&(e.creditExhaustion=d);let u=xe(t.method),c=hx(t.metadata);if(!(xe(c?.threadId)!==void 0||xe(c?.turnId)!==void 0||xe(c?.itemId)!==void 0))break;let p=xe(c?.threadId),m=p===void 0?d4(e):vye(e,`codex:${p}`,r);m!==void 0&&(m.codexThreadId=p??m.codexThreadId,m.tokenUsage=s??m.tokenUsage,m.creditExhaustion=d??m.creditExhaustion,m.latestCodexEventId=b4(t),m.eventType=t.credit_exhaustion_detected===!0?"credit_exhausted":u??o,m.turnId=xe(c?.turnId)??m.turnId,m.updatedAtMs=r);break}case"kandan.codex_output_forwarded":case"kandan.codex_delta_forwarded":case"kandan.codex_reasoning_delta_forwarded":case"kandan.codex_command_output_forwarded":case"kandan.codex_file_change_forwarded":case"kandan.codex_web_search_progress_forwarded":{let s=EC(e,t,r);s.latestCodexEventId=xe(t.item_key)??s.latestCodexEventId,s.eventType=kye(o,t),s.turnId=xe(t.turn_id)??s.turnId,xe(t.structured_kind)==="codex_assistant_message"&&(s.lastAssistantPreview=xe(t.body_preview)??s.lastAssistantPreview,s.lastAssistantAtMs=r),s.updatedAtMs=r;break}case"claude_code.turn_starting":case"claude_code.message_queued":{let s=Dc(e,t,r);s.lastIncomingPreview=xe(t.body_preview)??s.lastIncomingPreview,s.lastIncomingAtMs=Un(t.message_received_at_ms)??s.lastIncomingAtMs,s.eventType=o==="claude_code.message_queued"?"message_queued":"turn_starting",s.updatedAtMs=r;break}case"claude_code.session_started":{let s=Dc(e,t,r);s.eventType="session_started",s.updatedAtMs=r;break}case"claude_code.turn_completed":{let s=Dc(e,t,r);s.lastAssistantPreview=xe(t.body_preview)??s.lastAssistantPreview,s.lastAssistantAtMs=r,s.eventType="turn_completed",s.updatedAtMs=r;break}case"claude_code.turn_terminal":{let s=Dc(e,t,r);s.turnId=xe(t.turn_id)??s.turnId,s.eventType=`turn_${xe(t.outcome)??"terminal"}`,s.updatedAtMs=r;break}case"claude_code.rate_limit":{let s=xe(t.rate_limit_summary);s!==void 0&&(e.rateLimit=r4(e.rateLimit,s));let a=Dc(e,t,r);a.eventType="rate_limit",a.updatedAtMs=r;break}case"claude_code.token_usage":{let s=xe(t.token_usage_summary),a=Dc(e,t,r);s!==void 0&&(e.tokenUsage=s,a.tokenUsage=s),a.eventType="token_usage",a.updatedAtMs=r;break}default:break}nye(e,o,t,i)}function AC(e,n){if(e.jobs.size===0&&e.discovery.size===0&&e.notices.size===0&&e.tokenUsage===void 0&&e.rateLimit===void 0&&e.creditExhaustion===void 0)return;let t=_d(e);switch(e.mode.type){case"table":return e.jobs.size===0&&e.discovery.size>0?$ge(e,n):qge(e,t,n);case"raw_all":return i4(e,"Raw Stream",void 0,"esc: table",e.rawLines,n);case"raw_job":{let r=e.mode.jobKey,o=e.jobs.get(r),i=`Raw Stream: ${FC(o?.linzumiThreadId)} / ${zC(o?.codexThreadId,o?.agentProvider)}`;return i4(e,i,o?.tokenUsage,"esc: table",e.rawLines.filter(s=>s.jobKey===r),n)}}}function $ge(e,n){let t=Array.from(e.discovery.values()).sort((s,a)=>yx(s.phase).localeCompare(yx(a.phase))),r=t.reduce((s,a)=>s+a.placesSearched,0),o=t.some(s=>["starting","running"].includes(s.status)),i=t.length===0?["Discovery starting 0 places Waiting for discovery agents"]:t.map(s=>[vx(s.phase).padEnd(14),Sx(s.status).padEnd(10),`${String(s.placesSearched)} places`.padEnd(10),$C(s)].join(" "));return[LC(),"","Linzumi setup","New computer connected","",`Continue in the browser: ${e.browserUrl??"open the Linzumi setup page"}`,"",Oge(t),`Workspace: ${e.workspace??"?"}`,`Runner: ${e.runnerId??"?"}`,`Status: ${o?"searching":"finished"} Places searched: ${r}`,`Last update: ${Ai(e.lastUpdateAtMs,n)}${Ac(e)}`,"","Phase Status Places Detail","------------- ---------- --------- ------------------------------",...i,""].join(`
|
|
673
673
|
`)}function yx(e){switch(e){case"projects":return"1-projects";case"conversations":return"2-conversations";default:return`3-${e}`}}function vx(e){switch(e){case"projects":return"Projects";case"conversations":return"Conversations";default:return"Discovery"}}function Sx(e){switch(e){case"starting":return"starting";case"running":return"searching";case"completed":return"done";case"failed":return"failed";default:return e}}function Oge(e){return e.length===0?"I'm waiting for the discovery agents to start.":e.some(t=>["starting","running"].includes(t.status))?"I'm scouting existing projects and coding-agent conversations.":"Discovery is finished and idle. Select a project in the browser or move on."}function $C(e){if(e.lastError!==void 0)return e.lastError;let n=OC(e);if(n!==void 0)return n;let t=zge(e.currentSource);return e.currentPlace!==void 0?t===void 0?e.currentPlace:`${t}: ${e.currentPlace}`:e.message??f4(e.phase)}function OC(e){if(e.phase!=="conversations"||!TC(e.metadata))return;let n=Un(e.metadata?.total_count)??(Un(e.metadata?.codex_count)??0)+(Un(e.metadata?.claude_code_count)??0),t=Un(e.metadata?.imported_count)??Un(e.metadata?.reported_count);return t===void 0||n<=0?void 0:`${e.status==="completed"?"Imported":"Importing"} [${Lge(t,n)}] ${t} / ${n} Codex/Claude Code conversations`}function TC(e){return xe(e?.worker_id)==="conversations-local-import"||Un(e?.imported_count)!==void 0||Un(e?.failed_import_count)!==void 0||Un(e?.total_count)!==void 0}function Lge(e,n){let r=Math.min(10,Math.max(0,Math.floor(e/n*10)));return`${"#".repeat(r)}${"-".repeat(10-r)}`}function jge(e,n){return e===void 0?n:n===void 0?e:{...e,...n,...Ff(e,n,"codex_count"),...Ff(e,n,"claude_code_count"),...Ff(e,n,"reported_count"),...Ff(e,n,"imported_count"),...Ff(e,n,"total_count")}}function Ff(e,n,t){let r=Un(e[t]),o=Un(n[t]);return r===void 0&&o===void 0?{}:{[t]:Math.max(r??0,o??0)}}function Fge(e,n,t){return e?.status==="running"&&TC(e.metadata)&&!TC(t)?e.status:n}function zge(e){switch(e){case"git":return"Git";case"codex":return"Codex";case"claude_code":return"Claude Code";case void 0:return;default:return e}}function f4(e){switch(e){case"projects":return"Checking common project folders and Git worktrees.";case"conversations":return"Checking Codex and Claude Code sessions.";default:return"Checking local context."}}function qge(e,n,t){let r=h4(e,n,t);return[LC(),"","Linzumi Commander","",`Jobs: ${n.length}${e.rosterTruncated?" (first 200 of this node's roster)":""} Last update: ${Ai(e.lastUpdateAtMs,t)}${Ac(e)}`,...m4(e.creditExhaustion),`Overall Token Usage: ${e.tokenUsage??"?"}`,`Account rate limits: ${e.rateLimit??"?"}`,"Controls: up/down select | enter raw job | r raw stream | esc table",...PC(e),"",Tye(r.rows),""].join(`
|
package/package.json
CHANGED