@linzumi/cli 1.0.128 → 1.0.129
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[d],n[d]==="\\"?o=!0:a&&n[d]==="]"?a=!1:!a&&n[d]==="["&&(a=!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 fc(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===G.ZodEnum)return{type:"object",required:e.keyType._def.values,properties:e.keyType._def.values.reduce((n,i)=>({...n,[i]:ke(e.valueType._def,{...t,currentPath:[...t.currentPath,"properties",i]})??Ft(t)}),{}),additionalProperties:t.rejectedAdditionalProperties};let r={type:"object",additionalProperties:ke(e.valueType._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]})??t.allowedAdditionalProperties};if(t.target==="openApi3")return r;if(e.keyType?._def.typeName===G.ZodString&&e.keyType._def.checks?.length){let{type:n,...i}=cc(e.keyType._def,t);return{...r,propertyNames:i}}else{if(e.keyType?._def.typeName===G.ZodEnum)return{...r,propertyNames:{enum:e.keyType._def.values}};if(e.keyType?._def.typeName===G.ZodBranded&&e.keyType._def.type._def.typeName===G.ZodString&&e.keyType._def.type._def.checks?.length){let{type:n,...i}=uc(e.keyType._def,t);return{...r,propertyNames:i}}}return r}function wx(e,t){if(t.mapStrategy==="record")return fc(e,t);let r=ke(e.keyType._def,{...t,currentPath:[...t.currentPath,"items","items","0"]})||Ft(t),n=ke(e.valueType._def,{...t,currentPath:[...t.currentPath,"items","items","1"]})||Ft(t);return{type:"array",maxItems:125,items:{type:"array",items:[r,n],minItems:2,maxItems:2}}}function xx(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 kx(e){return e.target==="openAi"?void 0:{not:Ft({...e,currentPath:[...e.currentPath,"not"]})}}function Tx(e){return e.target==="openApi3"?{enum:["null"],nullable:!0}:{type:"null"}}var Pl={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function Ax(e,t){if(t.target==="openApi3")return Ox(e,t);let r=e.options instanceof Map?Array.from(e.options.values()):e.options;if(r.every(n=>n._def.typeName in Pl&&(!n._def.checks||!n._def.checks.length))){let n=r.reduce((i,o)=>{let a=Pl[o._def.typeName];return a&&!i.includes(a)?[...i,a]: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 a=typeof o._def.value;switch(a){case"string":case"number":case"boolean":return[...i,a];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,a,s)=>s.indexOf(o)===a);return{type:i.length>1?i:i[0],enum:r.reduce((o,a)=>o.includes(a._def.value)?o:[...o,a._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 Ox(e,t)}var Ox=(e,t)=>{let r=(e.options instanceof Map?Array.from(e.options.values()):e.options).map((n,i)=>ke(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 Ex(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:Pl[e.innerType._def.typeName],nullable:!0}:{type:[Pl[e.innerType._def.typeName],"null"]};if(t.target==="openApi3"){let n=ke(e.innerType._def,{...t,currentPath:[...t.currentPath]});return n&&"$ref"in n?{allOf:[n],nullable:!0}:n&&{...n,nullable:!0}}let r=ke(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","0"]});return r&&{anyOf:[r,{type:"null"}]}}function Cx(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",m_(r,"type",n.message,t);break;case"min":t.target==="jsonSchema7"?n.inclusive?He(r,"minimum",n.value,n.message,t):He(r,"exclusiveMinimum",n.value,n.message,t):(n.inclusive||(r.exclusiveMinimum=!0),He(r,"minimum",n.value,n.message,t));break;case"max":t.target==="jsonSchema7"?n.inclusive?He(r,"maximum",n.value,n.message,t):He(r,"exclusiveMaximum",n.value,n.message,t):(n.inclusive||(r.exclusiveMaximum=!0),He(r,"maximum",n.value,n.message,t));break;case"multipleOf":He(r,"multipleOf",n.value,n.message,t);break}return r}function $x(e,t){let r=t.target==="openAi",n={type:"object",properties:{}},i=[],o=e.shape();for(let s in o){let d=o[s];if(d===void 0||d._def===void 0)continue;let l=Xj(d);l&&r&&(d._def.typeName==="ZodOptional"&&(d=d._def.innerType),d.isNullable()||(d=d.nullable()),l=!1);let u=ke(d._def,{...t,currentPath:[...t.currentPath,"properties",s],propertyPath:[...t.currentPath,"properties",s]});u!==void 0&&(n.properties[s]=u,l||i.push(s))}i.length&&(n.required=i);let a=Qj(e,t);return a!==void 0&&(n.additionalProperties=a),n}function Qj(e,t){if(e.catchall._def.typeName!=="ZodNever")return ke(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 Xj(e){try{return e.isOptional()}catch{return!0}}var Px=(e,t)=>{if(t.currentPath.toString()===t.propertyPath?.toString())return ke(e.innerType._def,t);let r=ke(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","1"]});return r?{anyOf:[{not:Ft(t)},r]}:Ft(t)};var Rx=(e,t)=>{if(t.pipeStrategy==="input")return ke(e.in._def,t);if(t.pipeStrategy==="output")return ke(e.out._def,t);let r=ke(e.in._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),n=ke(e.out._def,{...t,currentPath:[...t.currentPath,"allOf",r?"1":"0"]});return{allOf:[r,n].filter(i=>i!==void 0)}};function zx(e,t){return ke(e.type._def,t)}function Ix(e,t){let n={type:"array",uniqueItems:!0,items:ke(e.valueType._def,{...t,currentPath:[...t.currentPath,"items"]})};return e.minSize&&He(n,"minItems",e.minSize.value,e.minSize.message,t),e.maxSize&&He(n,"maxItems",e.maxSize.value,e.maxSize.message,t),n}function jx(e,t){return e.rest?{type:"array",minItems:e.items.length,items:e.items.map((r,n)=>ke(r._def,{...t,currentPath:[...t.currentPath,"items",`${n}`]})).reduce((r,n)=>n===void 0?r:[...r,n],[]),additionalItems:ke(e.rest._def,{...t,currentPath:[...t.currentPath,"additionalItems"]})}:{type:"array",minItems:e.items.length,maxItems:e.items.length,items:e.items.map((r,n)=>ke(r._def,{...t,currentPath:[...t.currentPath,"items",`${n}`]})).reduce((r,n)=>n===void 0?r:[...r,n],[])}}function Mx(e){return{not:Ft(e)}}function Nx(e){return Ft(e)}var Fx=(e,t)=>ke(e.innerType._def,t);var qx=(e,t,r)=>{switch(t){case G.ZodString:return cc(e,r);case G.ZodNumber:return Cx(e,r);case G.ZodObject:return $x(e,r);case G.ZodBigInt:return mx(e,r);case G.ZodBoolean:return px();case G.ZodDate:return p_(e,r);case G.ZodUndefined:return Mx(r);case G.ZodNull:return Tx(r);case G.ZodArray:return fx(e,r);case G.ZodUnion:case G.ZodDiscriminatedUnion:return Ax(e,r);case G.ZodIntersection:return bx(e,r);case G.ZodTuple:return jx(e,r);case G.ZodRecord:return fc(e,r);case G.ZodLiteral:return vx(e,r);case G.ZodEnum:return yx(e);case G.ZodNativeEnum:return xx(e);case G.ZodNullable:return Ex(e,r);case G.ZodOptional:return Px(e,r);case G.ZodMap:return wx(e,r);case G.ZodSet:return Ix(e,r);case G.ZodLazy:return()=>e.getter()._def;case G.ZodPromise:return zx(e,r);case G.ZodNaN:case G.ZodNever:return kx(r);case G.ZodEffects:return gx(e,r);case G.ZodAny:return Ft(r);case G.ZodUnknown:return Nx(r);case G.ZodDefault:return _x(e,r);case G.ZodBranded:return uc(e,r);case G.ZodReadonly:return Fx(e,r);case G.ZodCatch:return hx(e,r);case G.ZodPipeline:return Rx(e,r);case G.ZodFunction:case G.ZodVoid:case G.ZodSymbol:return;default:return(n=>{})(t)}};function ke(e,t,r=!1){let n=t.seen.get(e);if(t.override){let s=t.override?.(e,t,n,r);if(s!==dx)return s}if(n&&!r){let s=Yj(n,t);if(s!==void 0)return s}let i={def:e,path:t.currentPath,jsonSchema:void 0};t.seen.set(e,i);let o=qx(e,e.typeName,t),a=typeof o=="function"?ke(o(),t):o;if(a&&eM(e,t,a),t.postProcess){let s=t.postProcess(a,e,t);return i.jsonSchema=a,s}return i.jsonSchema=a,a}var Yj=(e,t)=>{switch(t.$refStrategy){case"root":return{$ref:e.path.join("/")};case"relative":return{$ref:dc(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`),Ft(t)):t.$refStrategy==="seen"?Ft(t):void 0}},eM=(e,t,r)=>(e.description&&(r.description=e.description,t.markdownDescription&&(r.markdownDescription=e.description)),r);var g_=(e,t)=>{let r=cx(t),n=typeof t=="object"&&t.definitions?Object.entries(t.definitions).reduce((d,[l,u])=>({...d,[l]:ke(u._def,{...r,currentPath:[...r.basePath,r.definitionPath,l]},!0)??Ft(r)}),{}):void 0,i=typeof t=="string"?t:t?.nameStrategy==="title"?void 0:t?.name,o=ke(e._def,i===void 0?r:{...r,currentPath:[...r.basePath,r.definitionPath,i]},!1)??Ft(r),a=typeof t=="object"&&t.name!==void 0&&t.nameStrategy==="title"?t.name:void 0;a!==void 0&&(o.title=a),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 s=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"?s.$schema="http://json-schema.org/draft-07/schema#":(r.target==="jsonSchema2019-09"||r.target==="openAi")&&(s.$schema="https://json-schema.org/draft/2019-09/schema#"),r.target==="openAi"&&("anyOf"in s||"oneOf"in s||"allOf"in s||"type"in s&&Array.isArray(s.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),s};function tM(e){return!e||e==="jsonSchema7"||e==="draft-7"?"draft-7":e==="jsonSchema2019-09"||e==="draft-2020-12"?"draft-2020-12":"draft-7"}function y_(e,t){return wn(e)?Gh(e,{target:tM(t?.target),io:t?.pipeStrategy??"input"}):g_(e,{strictUnions:t?.strictUnions??!0,pipeStrategy:t?.pipeStrategy??"input"})}function b_(e){let r=Xi(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 v_(e,t){let r=Qi(e,t);if(!r.success)throw r.error;return r.data}var rM=6e4,mc=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(Vu,r=>{this._oncancel(r)}),this.setNotificationHandler(Ju,r=>{this._onprogress(r)}),this.setRequestHandler(Wu,r=>({})),this._taskStore=t?.taskStore,this._taskMessageQueue=t?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(Bu,async(r,n)=>{let i=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!i)throw new se(pe.InvalidParams,"Failed to retrieve task: Task not found");return{...i}}),this.setRequestHandler(Hu,async(r,n)=>{let i=async()=>{let o=r.params.taskId;if(this._taskMessageQueue){let s;for(;s=await this._taskMessageQueue.dequeue(o,n.sessionId);){if(s.type==="response"||s.type==="error"){let d=s.message,l=d.id,u=this._requestResolvers.get(l);if(u)if(this._requestResolvers.delete(l),s.type==="response")u(d);else{let c=d,f=new se(c.error.code,c.error.message,c.error.data);u(f)}else{let c=s.type==="response"?"Response":"Error";this._onerror(new Error(`${c} handler missing for request ${l}`))}continue}await this._transport?.send(s.message,{relatedRequestId:n.requestId})}}let a=await this._taskStore.getTask(o,n.sessionId);if(!a)throw new se(pe.InvalidParams,`Task not found: ${o}`);if(!Yi(a.status))return await this._waitForTaskUpdate(o,n.signal),await i();if(Yi(a.status)){let s=await this._taskStore.getTaskResult(o,n.sessionId);return this._clearTaskQueue(o),{...s,_meta:{...s._meta,[Hi]:{taskId:o}}}}return await i()};return await i()}),this.setRequestHandler(Qu,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 se(pe.InvalidParams,`Failed to list tasks: ${i instanceof Error?i.message:String(i)}`)}}),this.setRequestHandler(Yu,async(r,n)=>{try{let i=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!i)throw new se(pe.InvalidParams,`Task not found: ${r.params.taskId}`);if(Yi(i.status))throw new se(pe.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 se(pe.InvalidParams,`Task not found after cancellation: ${r.params.taskId}`);return{_meta:{},...o}}catch(i){throw i instanceof se?i:new se(pe.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),se.fromError(pe.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,a)=>{i?.(o,a),wl(o)||Kw(o)?this._onresponse(o):Xh(o)?this._onrequest(o,a):Bw(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=se.fromError(pe.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?.[Hi]?.taskId;if(n===void 0){let u={jsonrpc:"2.0",id:t.id,error:{code:pe.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 a=new AbortController;this._requestHandlerAbortControllers.set(t.id,a);let s=Vw(t.params)?t.params.task:void 0,d=this._taskStore?this.requestTaskStore(t,i?.sessionId):void 0,l={signal:a.signal,sessionId:i?.sessionId,_meta:t.params?._meta,sendNotification:async u=>{if(a.signal.aborted)return;let c={relatedRequestId:t.id};o&&(c.relatedTask={taskId:o}),await this.notification(u,c)},sendRequest:async(u,c,f)=>{if(a.signal.aborted)throw new se(pe.ConnectionClosed,"Request was cancelled");let m={...f,relatedRequestId:t.id};o&&!m.relatedTask&&(m.relatedTask={taskId:o});let p=m.relatedTask?.taskId??o;return p&&d&&await d.updateTaskStatus(p,"input_required"),await this.request(u,c,m)},authInfo:r?.authInfo,requestId:t.id,requestInfo:r?.requestInfo,taskId:o,taskStore:d,taskRequestedTtl:s?.ttl,closeSSEStream:r?.closeSSEStream,closeStandaloneSSEStream:r?.closeStandaloneSSEStream};Promise.resolve().then(()=>{s&&this.assertTaskHandlerCapability(t.method)}).then(()=>n(t,l)).then(async u=>{if(a.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(a.signal.aborted)return;let c={jsonrpc:"2.0",id:t.id,error:{code:Number.isSafeInteger(u.code)?u.code:pe.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)===a&&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 a=this._responseHandlers.get(i),s=this._timeoutInfo.get(i);if(s&&a&&s.resetTimeoutOnProgress)try{this._resetTimeout(i)}catch(d){this._responseHandlers.delete(i),this._progressHandlers.delete(i),this._cleanupTimeout(i),a(d);return}o(n)}_onresponse(t){let r=Number(t.id),n=this._requestResolvers.get(r);if(n){if(this._requestResolvers.delete(r),wl(t))n(t);else{let a=new se(t.error.code,t.error.message,t.error.data);n(a)}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(wl(t)&&t.result&&typeof t.result=="object"){let a=t.result;if(a.task&&typeof a.task=="object"){let s=a.task;typeof s.taskId=="string"&&(o=!0,this._taskProgressTokens.set(s.taskId,r))}}if(o||this._progressHandlers.delete(r),wl(t))i(t);else{let a=se.fromError(t.error.code,t.error.message,t.error.data);i(a)}}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(a){yield{type:"error",error:a instanceof se?a:new se(pe.InternalError,String(a))}}return}let o;try{let a=await this.request(t,Va,n);if(a.task)o=a.task.taskId,yield{type:"taskCreated",task:a.task};else throw new se(pe.InternalError,"Task creation did not return a task");for(;;){let s=await this.getTask({taskId:o},n);if(yield{type:"taskStatus",task:s},Yi(s.status)){s.status==="completed"?yield{type:"result",result:await this.getTaskResult({taskId:o},r,n)}:s.status==="failed"?yield{type:"error",error:new se(pe.InternalError,`Task ${o} failed`)}:s.status==="cancelled"&&(yield{type:"error",error:new se(pe.InternalError,`Task ${o} was cancelled`)});return}if(s.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:o},r,n)};return}let d=s.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(l=>setTimeout(l,d)),n?.signal?.throwIfAborted()}}catch(a){yield{type:"error",error:a instanceof se?a:new se(pe.InternalError,String(a))}}}request(t,r,n){let{relatedRequestId:i,resumptionToken:o,onresumptiontoken:a,task:s,relatedTask:d}=n??{};return new Promise((l,u)=>{let c=y=>{u(y)};if(!this._transport){c(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(t.method),s&&this.assertTaskCapability(t.method)}catch(y){c(y);return}n?.signal?.throwIfAborted();let f=this._requestMessageId++,m={...t,jsonrpc:"2.0",id:f};n?.onprogress&&(this._progressHandlers.set(f,n.onprogress),m.params={...t.params,_meta:{...t.params?._meta||{},progressToken:f}}),s&&(m.params={...m.params,task:s}),d&&(m.params={...m.params,_meta:{...m.params?._meta||{},[Hi]:d}});let p=y=>{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(y)}},{relatedRequestId:i,resumptionToken:o,onresumptiontoken:a}).catch(v=>this._onerror(new Error(`Failed to send cancellation: ${v}`)));let b=y instanceof se?y:new se(pe.RequestTimeout,String(y));u(b)};this._responseHandlers.set(f,y=>{if(!n?.signal?.aborted){if(y instanceof Error)return u(y);try{let b=Qi(r,y.result);b.success?l(b.data):u(b.error)}catch(b){u(b)}}}),n?.signal?.addEventListener("abort",()=>{p(n?.signal?.reason)});let h=n?.timeout??rM,_=()=>p(se.fromError(pe.RequestTimeout,"Request timed out",{timeout:h}));this._setupTimeout(f,h,n?.maxTotalTimeout,_,n?.resetTimeoutOnProgress??!1);let g=d?.taskId;if(g){let y=b=>{let v=this._responseHandlers.get(f);v?v(b):this._onerror(new Error(`Response handler missing for side-channeled request ${f}`))};this._requestResolvers.set(f,y),this._enqueueTaskMessage(g,{type:"request",message:m,timestamp:Date.now()}).catch(b=>{this._cleanupTimeout(f),u(b)})}else this._transport.send(m,{relatedRequestId:i,resumptionToken:o,onresumptiontoken:a}).catch(y=>{this._cleanupTimeout(f),u(y)})})}async getTask(t,r){return this.request({method:"tasks/get",params:t},Ku,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},Xu,r)}async cancelTask(t,r){return this.request({method:"tasks/cancel",params:t},Xw,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 s={...t,jsonrpc:"2.0",params:{...t.params,_meta:{...t.params?._meta||{},[Hi]:r.relatedTask}}};await this._enqueueTaskMessage(n,{type:"notification",message:s,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 s={...t,jsonrpc:"2.0"};r?.relatedTask&&(s={...s,params:{...s.params,_meta:{...s.params?._meta||{},[Hi]:r.relatedTask}}}),this._transport?.send(s,r).catch(d=>this._onerror(d))});return}let a={...t,jsonrpc:"2.0"};r?.relatedTask&&(a={...a,params:{...a.params,_meta:{...a.params?._meta||{},[Hi]:r.relatedTask}}}),await this._transport.send(a,r)}setRequestHandler(t,r){let n=b_(t);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(i,o)=>{let a=v_(t,i);return Promise.resolve(r(a,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=b_(t);this._notificationHandlers.set(n,i=>{let o=v_(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"&&Xh(i.message)){let o=i.message.id,a=this._requestResolvers.get(o);a?(a(new se(pe.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 se(pe.InvalidRequest,"Request cancelled"));return}let a=setTimeout(i,n);r.addEventListener("abort",()=>{clearTimeout(a),o(new se(pe.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 se(pe.InvalidParams,"Failed to retrieve task: Task not found");return o},storeTaskResult:async(i,o,a)=>{await n.storeTaskResult(i,o,a,r);let s=await n.getTask(i,r);if(s){let d=Al.parse({method:"notifications/tasks/status",params:s});await this.notification(d),Yi(s.status)&&this._cleanupTaskProgressHandler(i)}},getTaskResult:i=>n.getTaskResult(i,r),updateTaskStatus:async(i,o,a)=>{let s=await n.getTask(i,r);if(!s)throw new se(pe.InvalidParams,`Task "${i}" not found - it may have been cleaned up`);if(Yi(s.status))throw new se(pe.InvalidParams,`Cannot update task "${i}" from terminal status "${s.status}" to "${o}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await n.updateTaskStatus(i,o,a,r);let d=await n.getTask(i,r);if(d){let l=Al.parse({method:"notifications/tasks/status",params:d});await this.notification(l),Yi(d.status)&&this._cleanupTaskProgressHandler(i)}},listTasks:i=>n.listTasks(i,r)}}};function Gx(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Dx(e,t){let r={...e};for(let n in t){let i=n,o=t[i];if(o===void 0)continue;let a=r[i];Gx(a)&&Gx(o)?r[i]={...a,...o}:r[i]=o}return r}var AO=mb(oy(),1),EO=mb(OO(),1);function WD(){let e=new AO.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,EO.default)(e),e}var Hc=class{constructor(t){this._ajv=t??WD()}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 Qc=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],a=o.some(u=>u.type==="tool_result"),s=t.messages.length>1?t.messages[t.messages.length-2]:void 0,d=s?Array.isArray(s.content)?s.content:[s.content]:[],l=d.some(u=>u.type==="tool_use");if(a){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(!l)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(l){let u=new Set(d.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},$l,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},Ha,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 CO(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 $O(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 Xc=class extends mc{constructor(t,r){super(r),this._serverInfo=t,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(Cl.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 Hc,this.setRequestHandler(t_,n=>this._oninitialize(n)),this.setNotificationHandler(r_,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(d_,async(n,i)=>{let o=i.sessionId||i.requestInfo?.headers["mcp-session-id"]||void 0,{level:a}=n.params,s=Cl.safeParse(a);return s.success&&this._loggingLevels.set(o,s.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new Qc(this)}),this._experimental}registerCapabilities(t){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=Dx(this._capabilities,t)}setRequestHandler(t,r){let i=Xi(t)?.method;if(!i)throw new Error("Schema is missing a method literal");let o;if(wn(i)){let s=i;o=s._zod?.def?.value??s.value}else{let s=i;o=s._def?.value??s.value}if(typeof o!="string")throw new Error("Schema method literal must be a string");if(o==="tools/call"){let s=async(d,l)=>{let u=Qi(Ka,d);if(!u.success){let p=u.error instanceof Error?u.error.message:String(u.error);throw new se(pe.InvalidParams,`Invalid tools/call request: ${p}`)}let{params:c}=u.data,f=await Promise.resolve(r(d,l));if(c.task){let p=Qi(Va,f);if(!p.success){let h=p.error instanceof Error?p.error.message:String(p.error);throw new se(pe.InvalidParams,`Invalid task creation result: ${h}`)}return p.data}let m=Qi(ic,f);if(!m.success){let p=m.error instanceof Error?m.error.message:String(m.error);throw new se(pe.InvalidParams,`Invalid tools/call result: ${p}`)}return m.data};return super.setRequestHandler(t,s)}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){$O(this._clientCapabilities?.tasks?.requests,t,"Client")}assertTaskHandlerCapability(t){this._capabilities&&CO(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:Lw.includes(r)?r:Hh,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"},Uu)}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(l=>l.type==="tool_result"),a=t.messages.length>1?t.messages[t.messages.length-2]:void 0,s=a?Array.isArray(a.content)?a.content:[a.content]:[],d=s.some(l=>l.type==="tool_use");if(o){if(i.some(l=>l.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 l=new Set(s.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(l.size!==u.size||![...l].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},u_,r):this.request({method:"sampling/createMessage",params:t},$l,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},Ha,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},Ha,r);if(o.action==="accept"&&o.content&&i.requestedSchema)try{let s=this._jsonSchemaValidator.getValidator(i.requestedSchema)(o.content);if(!s.valid)throw new se(pe.InvalidParams,`Elicitation response content does not match requested schema: ${s.errorMessage}`)}catch(a){throw a instanceof se?a:new se(pe.InternalError,`Error validating elicitation response: ${a instanceof Error?a.message:String(a)}`)}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},c_,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 RO=Symbol.for("mcp.completable");function my(e){return!!e&&typeof e=="object"&&RO in e}function zO(e){return e[RO]?.complete}var PO;(function(e){e.Completable="McpCompletable"})(PO||(PO={}));var JD=/^[A-Za-z0-9._-]{1,128}$/;function BD(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"),!JD.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 KD(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 py(e){let t=BD(e);return KD(e,t.warnings),t.isValid}var Yc=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 ef=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 Xc(t,r)}get experimental(){return this._experimental||(this._experimental={tasks:new Yc(this)}),this._experimental}async connect(t){return await this.server.connect(t)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(lo(nc)),this.server.assertCanSetRequestHandler(lo(Ka)),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=Qa(r.inputSchema);return i?y_(i,{strictUnions:!0,pipeStrategy:"input"}):HD})(),annotations:r.annotations,execution:r.execution,_meta:r._meta};if(r.outputSchema){let i=Qa(r.outputSchema);i&&(n.outputSchema=y_(i,{strictUnions:!0,pipeStrategy:"output"}))}return n})})),this.server.setRequestHandler(Ka,async(t,r)=>{try{let n=this._registeredTools[t.params.name];if(!n)throw new se(pe.InvalidParams,`Tool ${t.params.name} not found`);if(!n.enabled)throw new se(pe.InvalidParams,`Tool ${t.params.name} disabled`);let i=!!t.params.task,o=n.execution?.taskSupport,a="createTask"in n.handler;if((o==="required"||o==="optional")&&!a)throw new se(pe.InternalError,`Tool ${t.params.name} has taskSupport '${o}' but was not registered with registerToolTask`);if(o==="required"&&!i)throw new se(pe.MethodNotFound,`Tool ${t.params.name} requires task augmentation (taskSupport: 'required')`);if(o==="optional"&&!i&&a)return await this.handleAutomaticTaskPolling(n,t,r);let s=await this.validateToolInput(n,t.params.arguments,t.params.name),d=await this.executeToolHandler(n,s,r);return i||await this.validateToolOutput(n,d,t.params.name),d}catch(n){if(n instanceof se&&n.code===pe.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=Qa(t.inputSchema)??t.inputSchema,a=await ac(o,r);if(!a.success){let s="error"in a?a.error:"Unknown error",d=sc(s);throw new se(pe.InvalidParams,`Input validation error: Invalid arguments for tool ${n}: ${d}`)}return a.data}async validateToolOutput(t,r,n){if(!t.outputSchema||!("content"in r)||r.isError)return;if(!r.structuredContent)throw new se(pe.InvalidParams,`Output validation error: Tool ${n} has an output schema but no structured content was provided`);let i=Qa(t.outputSchema),o=await ac(i,r.structuredContent);if(!o.success){let a="error"in o?o.error:"Unknown error",s=sc(a);throw new se(pe.InvalidParams,`Output validation error: Invalid structured content for tool ${n}: ${s}`)}}async executeToolHandler(t,r,n){let i=t.handler;if("createTask"in i){if(!n.taskStore)throw new Error("No task store provided.");let a={...n,taskStore:n.taskStore};if(t.inputSchema){let s=i;return await Promise.resolve(s.createTask(r,a))}else{let s=i;return await Promise.resolve(s.createTask(a))}}if(t.inputSchema){let a=i;return await Promise.resolve(a(r,n))}else{let a=i;return await Promise.resolve(a(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,a={...n,taskStore:n.taskStore},s=i?await Promise.resolve(o.createTask(i,a)):await Promise.resolve(o.createTask(a)),d=s.task.taskId,l=s.task,u=l.pollInterval??5e3;for(;l.status!=="completed"&&l.status!=="failed"&&l.status!=="cancelled";){await new Promise(f=>setTimeout(f,u));let c=await n.taskStore.getTask(d);if(!c)throw new se(pe.InternalError,`Task ${d} not found during polling`);l=c}return await n.taskStore.getTaskResult(d)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(lo(oc)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(oc,async t=>{switch(t.params.ref.type){case"ref/prompt":return ix(t),this.handlePromptCompletion(t,t.params.ref);case"ref/resource":return ox(t),this.handleResourceCompletion(t,t.params.ref);default:throw new se(pe.InvalidParams,`Invalid completion reference: ${t.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(t,r){let n=this._registeredPrompts[r.name];if(!n)throw new se(pe.InvalidParams,`Prompt ${r.name} not found`);if(!n.enabled)throw new se(pe.InvalidParams,`Prompt ${r.name} disabled`);if(!n.argsSchema)return sd;let o=Xi(n.argsSchema)?.[t.params.argument.name];if(!my(o))return sd;let a=zO(o);if(!a)return sd;let s=await a(t.params.argument.value,t.params.context);return jO(s)}async handleResourceCompletion(t,r){let n=Object.values(this._registeredResourceTemplates).find(a=>a.resourceTemplate.uriTemplate.toString()===r.uri);if(!n){if(this._registeredResources[r.uri])return sd;throw new se(pe.InvalidParams,`Resource template ${t.params.ref.uri} not found`)}let i=n.resourceTemplate.completeCallback(t.params.argument.name);if(!i)return sd;let o=await i(t.params.argument.value,t.params.context);return jO(o)}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(lo(Ja)),this.server.assertCanSetRequestHandler(lo(Ba)),this.server.assertCanSetRequestHandler(lo(ec)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(Ja,async(t,r)=>{let n=Object.entries(this._registeredResources).filter(([o,a])=>a.enabled).map(([o,a])=>({uri:o,name:a.name,...a.metadata})),i=[];for(let o of Object.values(this._registeredResourceTemplates)){if(!o.resourceTemplate.listCallback)continue;let a=await o.resourceTemplate.listCallback(r);for(let s of a.resources)i.push({...o.metadata,...s})}return{resources:[...n,...i]}}),this.server.setRequestHandler(Ba,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([r,n])=>({name:r,uriTemplate:n.resourceTemplate.uriTemplate.toString(),...n.metadata}))})),this.server.setRequestHandler(ec,async(t,r)=>{let n=new URL(t.params.uri),i=this._registeredResources[n.toString()];if(i){if(!i.enabled)throw new se(pe.InvalidParams,`Resource ${n} disabled`);return i.readCallback(n,r)}for(let o of Object.values(this._registeredResourceTemplates)){let a=o.resourceTemplate.uriTemplate.match(n.toString());if(a)return o.readCallback(n,a,r)}throw new se(pe.InvalidParams,`Resource ${n} not found`)}),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(lo(tc)),this.server.assertCanSetRequestHandler(lo(rc)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(tc,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,t])=>t.enabled).map(([t,r])=>({name:t,title:r.title,description:r.description,arguments:r.argsSchema?QD(r.argsSchema):void 0}))})),this.server.setRequestHandler(rc,async(t,r)=>{let n=this._registeredPrompts[t.params.name];if(!n)throw new se(pe.InvalidParams,`Prompt ${t.params.name} not found`);if(!n.enabled)throw new se(pe.InvalidParams,`Prompt ${t.params.name} disabled`);if(n.argsSchema){let i=Qa(n.argsSchema),o=await ac(i,t.params.arguments);if(!o.success){let d="error"in o?o.error:"Unknown error",l=sc(d);throw new se(pe.InvalidParams,`Invalid arguments for prompt ${t.params.name}: ${l}`)}let a=o.data,s=n.callback;return await Promise.resolve(s(a,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 a=this._createRegisteredResource(t,void 0,r,i,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),a}else{if(this._registeredResourceTemplates[t])throw new Error(`Resource template ${t} is already registered`);let a=this._createRegisteredResourceTemplate(t,void 0,r,i,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),a}}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 a={name:t,title:r,metadata:i,readCallback:o,enabled:!0,disable:()=>a.update({enabled:!1}),enable:()=>a.update({enabled:!0}),remove:()=>a.update({uri:null}),update:s=>{typeof s.uri<"u"&&s.uri!==n&&(delete this._registeredResources[n],s.uri&&(this._registeredResources[s.uri]=a)),typeof s.name<"u"&&(a.name=s.name),typeof s.title<"u"&&(a.title=s.title),typeof s.metadata<"u"&&(a.metadata=s.metadata),typeof s.callback<"u"&&(a.readCallback=s.callback),typeof s.enabled<"u"&&(a.enabled=s.enabled),this.sendResourceListChanged()}};return this._registeredResources[n]=a,a}_createRegisteredResourceTemplate(t,r,n,i,o){let a={resourceTemplate:n,title:r,metadata:i,readCallback:o,enabled:!0,disable:()=>a.update({enabled:!1}),enable:()=>a.update({enabled:!0}),remove:()=>a.update({name:null}),update:l=>{typeof l.name<"u"&&l.name!==t&&(delete this._registeredResourceTemplates[t],l.name&&(this._registeredResourceTemplates[l.name]=a)),typeof l.title<"u"&&(a.title=l.title),typeof l.template<"u"&&(a.resourceTemplate=l.template),typeof l.metadata<"u"&&(a.metadata=l.metadata),typeof l.callback<"u"&&(a.readCallback=l.callback),typeof l.enabled<"u"&&(a.enabled=l.enabled),this.sendResourceListChanged()}};this._registeredResourceTemplates[t]=a;let s=n.uriTemplate.variableNames;return Array.isArray(s)&&s.some(l=>!!n.completeCallback(l))&&this.setCompletionRequestHandler(),a}_createRegisteredPrompt(t,r,n,i,o){let a={title:r,description:n,argsSchema:i===void 0?void 0:Ho(i),callback:o,enabled:!0,disable:()=>a.update({enabled:!1}),enable:()=>a.update({enabled:!0}),remove:()=>a.update({name:null}),update:s=>{typeof s.name<"u"&&s.name!==t&&(delete this._registeredPrompts[t],s.name&&(this._registeredPrompts[s.name]=a)),typeof s.title<"u"&&(a.title=s.title),typeof s.description<"u"&&(a.description=s.description),typeof s.argsSchema<"u"&&(a.argsSchema=Ho(s.argsSchema)),typeof s.callback<"u"&&(a.callback=s.callback),typeof s.enabled<"u"&&(a.enabled=s.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[t]=a,i&&Object.values(i).some(d=>{let l=d instanceof Jr?d._def?.innerType:d;return my(l)})&&this.setCompletionRequestHandler(),a}_createRegisteredTool(t,r,n,i,o,a,s,d,l){py(t);let u={title:r,description:n,inputSchema:IO(i),outputSchema:IO(o),annotations:a,execution:s,_meta:d,handler:l,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"&&py(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=Ho(c.paramsSchema)),typeof c.outputSchema<"u"&&(u.outputSchema=Ho(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,a;if(typeof r[0]=="string"&&(n=r.shift()),r.length>1){let d=r[0];if(hy(d))i=r.shift(),r.length>1&&typeof r[0]=="object"&&r[0]!==null&&!hy(r[0])&&(a=r.shift());else if(typeof d=="object"&&d!==null){if(Object.values(d).some(l=>typeof l=="object"&&l!==null))throw new Error(`Tool ${t} expected a Zod schema or ToolAnnotations, but received an unrecognized object`);a=r.shift()}}let s=r[0];return this._createRegisteredTool(t,void 0,n,i,o,a,{taskSupport:"forbidden"},void 0,s)}registerTool(t,r,n){if(this._registeredTools[t])throw new Error(`Tool ${t} is already registered`);let{title:i,description:o,inputSchema:a,outputSchema:s,annotations:d,_meta:l}=r;return this._createRegisteredTool(t,i,o,a,s,d,{taskSupport:"forbidden"},l,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],a=this._createRegisteredPrompt(t,void 0,n,i,o);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),a}registerPrompt(t,r,n){if(this._registeredPrompts[t])throw new Error(`Prompt ${t} is already registered`);let{title:i,description:o,argsSchema:a}=r,s=this._createRegisteredPrompt(t,i,o,a,n);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),s}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 HD={type:"object",properties:{}};function MO(e){return e!==null&&typeof e=="object"&&"parse"in e&&typeof e.parse=="function"&&"safeParse"in e&&typeof e.safeParse=="function"}function NO(e){return"_def"in e||"_zod"in e||MO(e)}function hy(e){return typeof e!="object"||e===null||NO(e)?!1:Object.keys(e).length===0?!0:Object.values(e).some(MO)}function IO(e){if(e){if(hy(e))return Ho(e);if(!NO(e))throw new Error("inputSchema must be a Zod schema or raw shape, received an unrecognized object");return e}}function QD(e){let t=Xi(e);return t?Object.entries(t).map(([r,n])=>{let i=ax(n),o=sx(n);return{name:r,description:i,required:!o}}):[]}function lo(e){let r=Xi(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 jO(e){return{completion:{values:e.slice(0,100),total:e.length,hasMore:e.length>100}}}var sd={completion:{values:[],hasMore:!1}};import qO from"node:process";var tf=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),YD(r)}clear(){this._buffer=void 0}};function YD(e){return Hw.parse(JSON.parse(e))}function FO(e){return JSON.stringify(e)+`
|
|
322
322
|
`}var rf=class{constructor(t=qO.stdin,r=qO.stdout){this._stdin=t,this._stdout=r,this._readBuffer=new tf,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=FO(t);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};function tL(e){let t={};t.listChanged=!1;let r={};r.resources=t,e.server.registerCapabilities(r),e.server.setRequestHandler(Ja,()=>{let n={};return n.resources=[],n}),e.server.setRequestHandler(Ba,()=>{let n={};return n.resourceTemplates=[],n})}function rL(e){return{registerTool:(t,r,n,i)=>{e.tool(t,r,n,i)}}}async function _y(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=Mv(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 l0(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 gy(e,t){let r=Wt(e,"token");return{serviceUrl:t,explicitToken:r!==void 0?r:process.env.LINZUMI_MCP_ACCESS_TOKEN,authFilePath:Wt(e,"auth-file"),delegationAuthFilePath:Wt(e,"delegation-auth-file"),workspaceSlug:Wt(e,"workspace"),channelSlug:Wt(e,"channel")}}async function nL(e){let t=jd(e);if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=t._0;if(Md(r,"help"))return go(qd()),{TAG:"Ok",_0:void 0};let n=Nd(r,"api-url");if(n.TAG!=="Ok")return{TAG:"Error",_0:n._0};let i=n._0,o=await _y(gy(r,i));if(o.TAG!=="Ok")return{TAG:"Error",_0:o._0};let a=o._0,s=Fd(Wt(r,"mode")),d=Lf(Wt(r,"tool-scope"));if(s.TAG!=="Ok")return{TAG:"Error",_0:s._0};let l=s._0;if(d.TAG!=="Ok")return{TAG:"Error",_0:d._0};let u=Wt(r,"owner-username"),c=u!==void 0?u:process.env.LINZUMI_MCP_OWNER_USERNAME,f=Wt(r,"cwd"),m=f!==void 0?f:process.cwd(),p=Wt(r,"thread-id"),h=p!==void 0?p:process.env[k0],_=Um({serviceUrl:i,accessToken:a.accessToken,authMode:a.mode,operatingMode:l});if(_.TAG!=="Ok")return{TAG:"Error",_0:_._0};let g=new ef({name:"linzumi",version:"0.1.0"});return tL(g),Y0(rL(g),{client:_._0,toolScope:d._0,operatingMode:l,cwd:m,serviceUrl:i,defaultThreadId:h,ownerUsername:c,agentSession:Md(r,"agent-session"),devServices:W0(process.env)}),await g.connect(new rf),{TAG:"Ok",_0:void 0}}async function iL(e){let t=jd(e);if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=t._0,n=Nd(r,"api-url");if(n.TAG!=="Ok")return{TAG:"Error",_0:n._0};let i=n._0,o=Wt(r,"format"),a=o!==void 0?o:"codex",s=Fd(Wt(r,"mode"));if(s.TAG!=="Ok")return{TAG:"Error",_0:s._0};let d;if(Md(r,"include-token")){let f=await _y(gy(r,i));d=f.TAG==="Ok"?{TAG:"Ok",_0:f._0.accessToken}:{TAG:"Error",_0:f._0}}else d={TAG:"Ok",_0:void 0};if(d.TAG!=="Ok")return{TAG:"Error",_0:d._0};let l=Lf(Wt(r,"tool-scope"));if(l.TAG!=="Ok")return{TAG:"Error",_0:l._0};let u=Wt(r,"owner-username"),c=eS({command:Wt(r,"command"),serviceUrl:i,accessToken:d._0,delegationAuthFilePath:Wt(r,"delegation-auth-file"),ownerUsername:u!==void 0?u:process.env.LINZUMI_MCP_OWNER_USERNAME,operatingMode:s._0,toolScope:l._0});switch(a){case"claude-code":return go(tS(c)),{TAG:"Ok",_0:void 0};case"codex":return go(rS(c)),{TAG:"Ok",_0:void 0};default:return{TAG:"Error",_0:"--format must be codex or claude-code"}}}async function oL(e){let t=jd(e);if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=t._0,n=Nd(r,"api-url");if(n.TAG!=="Ok")return{TAG:"Error",_0:n._0};let i=n._0,o=await _y(gy(r,i));if(o.TAG!=="Ok")return{TAG:"Error",_0:o._0};let a=o._0,s=a.mode,d;if(s==="LocalRunner"){let l=await Pa(i,a.accessToken,Wt(r,"workspace"),Wt(r,"channel"),void 0);if(l.TAG==="Ok")switch(l._0){case"Usable":d={TAG:"Ok",_0:void 0};break;case"Rejected":case"NotFound":d={TAG:"Error",_0:"Linzumi MCP auth validation failed"};break}else d={TAG:"Error",_0:l._0.summary}}else{let l=Fd(Wt(r,"mode"));if(l.TAG==="Ok"){let u=Um({serviceUrl:i,accessToken:a.accessToken,authMode:a.mode,operatingMode:l._0});if(u.TAG==="Ok")try{await u._0.validateAuth(),d={TAG:"Ok",_0:void 0}}catch(c){let f=re(c);d={TAG:"Error",_0:ga(f)}}else d={TAG:"Error",_0:u._0}}else d={TAG:"Error",_0:l._0}}return d.TAG!=="Ok"?{TAG:"Error",_0:d._0}:(go(`Linzumi MCP auth OK
|
|
323
|
-
`),{TAG:"Ok",_0:void 0})}async function GO(e){let t=e.slice(1),r=e[0];if(r!==void 0)switch(r){case"--help":case"-h":return go(qd()),{TAG:"Ok",_0:void 0};case"config":return await iL(t);case"doctor":return await oL(t);case"server":return await nL(t);default:return{TAG:"Error",_0:"unknown linzumi mcp command: "+r}}else return go(qd()),{TAG:"Ok",_0:void 0}}function DO(e){if(typeof e=="number"&&e%1===0)return e}function sL(e){if(typeof e=="string")return e}function lL(e){let t=e.replaceAll("-","+").replaceAll("_","/");switch(t.length&3){case 2:return t+"==";case 3:return t+"=";default:return t}}function LO(e){let t=e.split(".")[1];if(t===void 0)return;let r=Buffer.from(lL(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 ZO(e){let t=LO(e);if(t===void 0)return{actorUserId:void 0,actorUsername:void 0};let r=DO(t.actor_id);return{actorUserId:r!==void 0?r:DO(t.sub),actorUsername:sL(t.actor_username)}}function UO(e){let t=A(LO(e),n=>n.workspace_scope),r=t!==void 0?Array.isArray(t)?ct(t,n=>{if(typeof n=="string"&&n.trim()!=="")return n}):[]:[];if(r.length===1)return r[0]}function ld(){return O("1.0.128","0.0.0-unbundled")}function yy(){return"linzumi "+O("1.0.128","0.0.0-unbundled")}import*as ma from"node:os";import*as If from"node:path";import*as OC from"node:crypto";function nf(e){let t=parseFloat(e);if(!Number.isNaN(t))return t}function BO(e){return"local_runner:"+e}var dL="kandan-local-codex-runner",uL="rescript";function KO(e){let t={};t.clientName=dL,t.clientId=e.clientId;let r=e.machineFingerprint;t.machineFingerprint=r!==void 0?r:null,Object.entries(n0(e.machineFingerprintV2)).forEach(a=>{t[a[0]]=a[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 a={};a.epoch=o,a.overlap=!0,t.generation=a}return t.commander_impl=uL,t}function HO(e,t,r){let n={};return n.last_seq=r,t!==void 0&&(n.runner_id=e,n.thread_id=t),n}function mn(e,t){return e.catch(r=>t(re(r)))}function ar(e,t){delete e[t]}function cL(e){switch(e){case"SocketOpen":return"open";case"SocketMessage":return"message";case"SocketClose":return"close";case"SocketError":return"error"}}function fL(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,a;return a=o==null||typeof o!="string"?void 0:o,{data:r,code:i,reason:a}}function mL(e){return{readyState:()=>e.readyState,send:t=>{e.send(t)},close:()=>{e.close()},on:(t,r)=>{e.addEventListener(cL(t),n=>r(fL(n)),{})}}}function af(e,t){return mL(new WebSocket(e,t))}var XO=0,sa=1;var pL="file",hL=["mcp_oauth_credentials_store","cli_auth_credentials_store"],V6=hL.flatMap(e=>["-c",e+'="'+pL+'"']);var _L="kandan-local-codex-runner",gL="0.0.1";function eA(){return Object.fromEntries([["clientInfo",Object.fromEntries([["name",_L],["version",gL]])],["capabilities",Object.fromEntries([["experimentalApi",!0]])]])}var yL=new RegExp("\\bsession\\b.+\\bis archived\\b","i");function tA(e){return yL.test(e)}var bL=new RegExp("^thread not found(?:\\s*:|\\b)","i");function rA(e){return bL.test(e.trim())}function vL(e){try{e.unref();return}catch{return}}var iA="codex app-server websocket closed",SL="codex app-server websocket is not open";function wL(e){let t=e.method;if(typeof t=="string")return t}function xL(e){let t=e.error;if(t===void 0)return{TAG:"ResultReply",_0:O(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 sf(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 a=re(o);return{TAG:"Error",_0:Be(a).message}}}function lA(e,t,r){try{return t(r)}catch(n){let i=re(n);return e("codex.notification_callback_failed",Object.fromEntries([["purpose","codex.app_server"],["method",r.method],["message",Be(i).message]]))}}function oA(e,t,r){try{return t(r)}catch(n){let i=re(n);return e("codex.close_callback_failed",Object.fromEntries([["purpose","codex.app_server"],["message",Be(i).message]]))}}function kL(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 TL(e,t,r,n){let i={TAG:"Error",_0:[-32601,"unhandled Codex app-server request: "+n.method]},o=e.requestCallbacks.slice(),a,s=0;for(;$d(a)&&s<o.length;){let l=o[s];if(l!==void 0){let u=0,c;try{c=await l(n),u=1}catch(f){let m=re(f);a={TAG:"Error",_0:[-32e3,Be(m).message]}}u===1&&c!==void 0&&(a={TAG:"Ok",_0:c})}s=s+1|0}let d=O(a,i);sf(t,r,"outgoing",kL(n.id,d))}function OL(e,t,r,n,i){let o;try{o=JSON.parse(i)}catch(m){let p=re(m);r("codex.app_server_frame_malformed",Object.fromEntries([["purpose","codex.app_server"],["message",Be(p).message],["payload",i.slice(0,512)],["payloadChars",i.length]])),o=void 0}let a;if(o!==void 0){let m=0;typeof o=="object"&&o!==null&&!Array.isArray(o)?a=o:m=1,m===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]])),a=void 0)}else a=void 0;if(a===void 0)return;let s=ho(a.id),d=s&&(ho(a.result)||ho(a.error)),l=wL(a);if(d){let m=O(a.id,null),p=JSON.stringify(m),h=e.pending[p];return h!==void 0?(ar(e.pending,p),h.resolvePending({TAG:"Ok",_0:xL(a)})):void 0}if(s)if(l!==void 0){mn(TL(e,t,n,{id:O(a.id,null),method:l,params:a.params}),m=>Promise.resolve());return}else return;if(l===void 0)return;let u=a.params,c={method:l,params:u};e.notificationCallbacks.length!==0?e.notificationCallbacks.forEach(m=>lA(r,m,c)):e.pendingNotifications.push(c)}function AL(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 aA(e,t){return Object.fromEntries(t!==void 0?[["jsonrpc","2.0"],["method",e],["params",t]]:[["jsonrpc","2.0"],["method",e]])}function sA(e,t,r,n,i,o){return t.socket.readyState()===sa?new Promise((a,s)=>{e.pending[JSON.stringify(n)]={resolvePending:a};let d=sf(t,r,"request",AL(n,i,o));d.TAG!=="Ok"&&(ar(e.pending,JSON.stringify(n)),a({TAG:"Error",_0:d._0}))}):Promise.resolve({TAG:"Error",_0:SL})}async function dA(e,t,r,n){let i=t!==void 0?t:u=>({socket:af(u,[]),ping:void 0}),o=r!==void 0?r:2e3,a=n!==void 0?n:()=>Date.now(),s=a()+o,d,l="websocket open failed";for(;$d(d);){let u;try{u={TAG:"Ok",_0:i(e)}}catch(c){let f=re(c);u={TAG:"Error",_0:Be(f).message}}if(u.TAG==="Ok"){let c=u._0;if(await new Promise((f,m)=>{c.socket.on("SocketOpen",p=>f(!0)),c.socket.on("SocketError",p=>f(!1))}))d={TAG:"Ok",_0:c};else{try{c.socket.close()}catch{}a()>s&&(d={TAG:"Error",_0:l})}}else l=u._0,a()>s&&(d={TAG:"Error",_0:l})}return O(d,{TAG:"Error",_0:l})}async function uA(e,t){let r={pending:{},notificationCallbacks:[],requestCallbacks:[],pendingNotifications:[],closeCallbacks:[],nextId:1,closeError:void 0},n=t.audit,i=t.onWire,o=setInterval(()=>{let l=e.ping;if(l!==void 0&&e.socket.readyState()===sa)try{return l()}catch{return}},t.keepaliveIntervalMs);vL(o);let a=l=>{clearInterval(o);let u=Object.entries(r.pending);if(Object.entries(r.pending).forEach(m=>ar(r.pending,m[0])),u.forEach(m=>m[1].resolvePending({TAG:"Error",_0:l})),r.closeError!==void 0)return;r.closeError=l;let f=r.closeCallbacks.slice();r.closeCallbacks.splice(0,r.closeCallbacks.length),f.forEach(m=>oA(n,m,l))};e.socket.on("SocketClose",l=>a(iA)),e.socket.on("SocketError",l=>a(iA)),e.socket.on("SocketMessage",l=>{let u=l.data;if(u!==void 0)return i("incoming",u),OL(r,e,n,i,u)});let s=await sA(r,e,i,"initialize","initialize",eA());if(s.TAG!=="Ok")return{TAG:"Error",_0:s._0};let d=s._0;return d.TAG!=="ResultReply"?{TAG:"Error",_0:"codex initialize failed: "+d.message}:(sf(e,i,"outgoing",aA("initialized",void 0)),{TAG:"Ok",_0:{request:(l,u)=>{let c=r.nextId;return r.nextId=r.nextId+1|0,sA(r,e,i,c,l,u)},notify:(l,u)=>{sf(e,i,"outgoing",aA(l,u))},onNotification:l=>{r.notificationCallbacks.push(l);let u=r.pendingNotifications.slice();r.pendingNotifications.splice(0,r.pendingNotifications.length),u.forEach(c=>lA(n,l,c))},onRequest:l=>{r.requestCallbacks.push(l)},onClose:l=>{let u=r.closeError;if(u!==void 0)return oA(n,l,u);r.closeCallbacks.push(l)},isClosed:()=>ho(r.closeError),close:()=>{clearInterval(o);try{return e.socket.close()}catch{return}}}})}import*as cA from"node:os";import*as uo from"node:path";function by(e){let t=_a(e,"LINZUMI_CONTROL_CURSOR_DIR");return t!==void 0&&t.trim()!==""?t.trim():uo.join(cA.homedir(),".linzumi","control-cursors")}var CL=new RegExp("[^A-Za-z0-9._-]+","g"),$L=new RegExp("^[-.]+|[-.]+$","g");function vy(e){let t=e.replace(CL,"-").replace($L,"").slice(0,80),r=pn(e).slice(0,8);return(t===""?"runner":t)+"."+r}function fA(e,t){return uo.join(by(t),vy(e)+".json")}function mA(e,t){return uo.join(by(t),vy(e)+".start-turn.json")}function pA(e,t){return uo.join(by(t),vy(e)+".source-seq.json")}function hA(e,t){return e+" "+t}function _A(e,t,r){return e+" "+t+" "+r}var gA="__control_epoch";function PL(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],a=i[0];if(a===gA)if(typeof o=="string"&&o!==""){n.contents=o;return}else return;else if(typeof o=="number"&&Bt(o)&&o>=0){r[a]=o;return}else return}),{TAG:"Ok",_0:{cursors:r,epoch:n.contents}}}function RL(e,t){let r=ur(e);if(r.TAG==="Ok"){let i=PL(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 Ii(n,"ENOENT")||t("control_cursor_store.read_failed",Object.fromEntries([["path",e],["message",n.message]])),{cursors:{},epoch:void 0}}function zL(e,t){let r={};return t!==void 0&&(r[gA]=t),Object.entries(e).forEach(n=>{r[n[0]]=n[1]}),JSON.stringify(r)+`
|
|
323
|
+
`),{TAG:"Ok",_0:void 0})}async function GO(e){let t=e.slice(1),r=e[0];if(r!==void 0)switch(r){case"--help":case"-h":return go(qd()),{TAG:"Ok",_0:void 0};case"config":return await iL(t);case"doctor":return await oL(t);case"server":return await nL(t);default:return{TAG:"Error",_0:"unknown linzumi mcp command: "+r}}else return go(qd()),{TAG:"Ok",_0:void 0}}function DO(e){if(typeof e=="number"&&e%1===0)return e}function sL(e){if(typeof e=="string")return e}function lL(e){let t=e.replaceAll("-","+").replaceAll("_","/");switch(t.length&3){case 2:return t+"==";case 3:return t+"=";default:return t}}function LO(e){let t=e.split(".")[1];if(t===void 0)return;let r=Buffer.from(lL(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 ZO(e){let t=LO(e);if(t===void 0)return{actorUserId:void 0,actorUsername:void 0};let r=DO(t.actor_id);return{actorUserId:r!==void 0?r:DO(t.sub),actorUsername:sL(t.actor_username)}}function UO(e){let t=A(LO(e),n=>n.workspace_scope),r=t!==void 0?Array.isArray(t)?ct(t,n=>{if(typeof n=="string"&&n.trim()!=="")return n}):[]:[];if(r.length===1)return r[0]}function ld(){return O("1.0.129","0.0.0-unbundled")}function yy(){return"linzumi "+O("1.0.129","0.0.0-unbundled")}import*as ma from"node:os";import*as If from"node:path";import*as OC from"node:crypto";function nf(e){let t=parseFloat(e);if(!Number.isNaN(t))return t}function BO(e){return"local_runner:"+e}var dL="kandan-local-codex-runner",uL="rescript";function KO(e){let t={};t.clientName=dL,t.clientId=e.clientId;let r=e.machineFingerprint;t.machineFingerprint=r!==void 0?r:null,Object.entries(n0(e.machineFingerprintV2)).forEach(a=>{t[a[0]]=a[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 a={};a.epoch=o,a.overlap=!0,t.generation=a}return t.commander_impl=uL,t}function HO(e,t,r){let n={};return n.last_seq=r,t!==void 0&&(n.runner_id=e,n.thread_id=t),n}function mn(e,t){return e.catch(r=>t(re(r)))}function ar(e,t){delete e[t]}function cL(e){switch(e){case"SocketOpen":return"open";case"SocketMessage":return"message";case"SocketClose":return"close";case"SocketError":return"error"}}function fL(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,a;return a=o==null||typeof o!="string"?void 0:o,{data:r,code:i,reason:a}}function mL(e){return{readyState:()=>e.readyState,send:t=>{e.send(t)},close:()=>{e.close()},on:(t,r)=>{e.addEventListener(cL(t),n=>r(fL(n)),{})}}}function af(e,t){return mL(new WebSocket(e,t))}var XO=0,sa=1;var pL="file",hL=["mcp_oauth_credentials_store","cli_auth_credentials_store"],V6=hL.flatMap(e=>["-c",e+'="'+pL+'"']);var _L="kandan-local-codex-runner",gL="0.0.1";function eA(){return Object.fromEntries([["clientInfo",Object.fromEntries([["name",_L],["version",gL]])],["capabilities",Object.fromEntries([["experimentalApi",!0]])]])}var yL=new RegExp("\\bsession\\b.+\\bis archived\\b","i");function tA(e){return yL.test(e)}var bL=new RegExp("^thread not found(?:\\s*:|\\b)","i");function rA(e){return bL.test(e.trim())}function vL(e){try{e.unref();return}catch{return}}var iA="codex app-server websocket closed",SL="codex app-server websocket is not open";function wL(e){let t=e.method;if(typeof t=="string")return t}function xL(e){let t=e.error;if(t===void 0)return{TAG:"ResultReply",_0:O(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 sf(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 a=re(o);return{TAG:"Error",_0:Be(a).message}}}function lA(e,t,r){try{return t(r)}catch(n){let i=re(n);return e("codex.notification_callback_failed",Object.fromEntries([["purpose","codex.app_server"],["method",r.method],["message",Be(i).message]]))}}function oA(e,t,r){try{return t(r)}catch(n){let i=re(n);return e("codex.close_callback_failed",Object.fromEntries([["purpose","codex.app_server"],["message",Be(i).message]]))}}function kL(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 TL(e,t,r,n){let i={TAG:"Error",_0:[-32601,"unhandled Codex app-server request: "+n.method]},o=e.requestCallbacks.slice(),a,s=0;for(;$d(a)&&s<o.length;){let l=o[s];if(l!==void 0){let u=0,c;try{c=await l(n),u=1}catch(f){let m=re(f);a={TAG:"Error",_0:[-32e3,Be(m).message]}}u===1&&c!==void 0&&(a={TAG:"Ok",_0:c})}s=s+1|0}let d=O(a,i);sf(t,r,"outgoing",kL(n.id,d))}function OL(e,t,r,n,i){let o;try{o=JSON.parse(i)}catch(m){let p=re(m);r("codex.app_server_frame_malformed",Object.fromEntries([["purpose","codex.app_server"],["message",Be(p).message],["payload",i.slice(0,512)],["payloadChars",i.length]])),o=void 0}let a;if(o!==void 0){let m=0;typeof o=="object"&&o!==null&&!Array.isArray(o)?a=o:m=1,m===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]])),a=void 0)}else a=void 0;if(a===void 0)return;let s=ho(a.id),d=s&&(ho(a.result)||ho(a.error)),l=wL(a);if(d){let m=O(a.id,null),p=JSON.stringify(m),h=e.pending[p];return h!==void 0?(ar(e.pending,p),h.resolvePending({TAG:"Ok",_0:xL(a)})):void 0}if(s)if(l!==void 0){mn(TL(e,t,n,{id:O(a.id,null),method:l,params:a.params}),m=>Promise.resolve());return}else return;if(l===void 0)return;let u=a.params,c={method:l,params:u};e.notificationCallbacks.length!==0?e.notificationCallbacks.forEach(m=>lA(r,m,c)):e.pendingNotifications.push(c)}function AL(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 aA(e,t){return Object.fromEntries(t!==void 0?[["jsonrpc","2.0"],["method",e],["params",t]]:[["jsonrpc","2.0"],["method",e]])}function sA(e,t,r,n,i,o){return t.socket.readyState()===sa?new Promise((a,s)=>{e.pending[JSON.stringify(n)]={resolvePending:a};let d=sf(t,r,"request",AL(n,i,o));d.TAG!=="Ok"&&(ar(e.pending,JSON.stringify(n)),a({TAG:"Error",_0:d._0}))}):Promise.resolve({TAG:"Error",_0:SL})}async function dA(e,t,r,n){let i=t!==void 0?t:u=>({socket:af(u,[]),ping:void 0}),o=r!==void 0?r:2e3,a=n!==void 0?n:()=>Date.now(),s=a()+o,d,l="websocket open failed";for(;$d(d);){let u;try{u={TAG:"Ok",_0:i(e)}}catch(c){let f=re(c);u={TAG:"Error",_0:Be(f).message}}if(u.TAG==="Ok"){let c=u._0;if(await new Promise((f,m)=>{c.socket.on("SocketOpen",p=>f(!0)),c.socket.on("SocketError",p=>f(!1))}))d={TAG:"Ok",_0:c};else{try{c.socket.close()}catch{}a()>s&&(d={TAG:"Error",_0:l})}}else l=u._0,a()>s&&(d={TAG:"Error",_0:l})}return O(d,{TAG:"Error",_0:l})}async function uA(e,t){let r={pending:{},notificationCallbacks:[],requestCallbacks:[],pendingNotifications:[],closeCallbacks:[],nextId:1,closeError:void 0},n=t.audit,i=t.onWire,o=setInterval(()=>{let l=e.ping;if(l!==void 0&&e.socket.readyState()===sa)try{return l()}catch{return}},t.keepaliveIntervalMs);vL(o);let a=l=>{clearInterval(o);let u=Object.entries(r.pending);if(Object.entries(r.pending).forEach(m=>ar(r.pending,m[0])),u.forEach(m=>m[1].resolvePending({TAG:"Error",_0:l})),r.closeError!==void 0)return;r.closeError=l;let f=r.closeCallbacks.slice();r.closeCallbacks.splice(0,r.closeCallbacks.length),f.forEach(m=>oA(n,m,l))};e.socket.on("SocketClose",l=>a(iA)),e.socket.on("SocketError",l=>a(iA)),e.socket.on("SocketMessage",l=>{let u=l.data;if(u!==void 0)return i("incoming",u),OL(r,e,n,i,u)});let s=await sA(r,e,i,"initialize","initialize",eA());if(s.TAG!=="Ok")return{TAG:"Error",_0:s._0};let d=s._0;return d.TAG!=="ResultReply"?{TAG:"Error",_0:"codex initialize failed: "+d.message}:(sf(e,i,"outgoing",aA("initialized",void 0)),{TAG:"Ok",_0:{request:(l,u)=>{let c=r.nextId;return r.nextId=r.nextId+1|0,sA(r,e,i,c,l,u)},notify:(l,u)=>{sf(e,i,"outgoing",aA(l,u))},onNotification:l=>{r.notificationCallbacks.push(l);let u=r.pendingNotifications.slice();r.pendingNotifications.splice(0,r.pendingNotifications.length),u.forEach(c=>lA(n,l,c))},onRequest:l=>{r.requestCallbacks.push(l)},onClose:l=>{let u=r.closeError;if(u!==void 0)return oA(n,l,u);r.closeCallbacks.push(l)},isClosed:()=>ho(r.closeError),close:()=>{clearInterval(o);try{return e.socket.close()}catch{return}}}})}import*as cA from"node:os";import*as uo from"node:path";function by(e){let t=_a(e,"LINZUMI_CONTROL_CURSOR_DIR");return t!==void 0&&t.trim()!==""?t.trim():uo.join(cA.homedir(),".linzumi","control-cursors")}var CL=new RegExp("[^A-Za-z0-9._-]+","g"),$L=new RegExp("^[-.]+|[-.]+$","g");function vy(e){let t=e.replace(CL,"-").replace($L,"").slice(0,80),r=pn(e).slice(0,8);return(t===""?"runner":t)+"."+r}function fA(e,t){return uo.join(by(t),vy(e)+".json")}function mA(e,t){return uo.join(by(t),vy(e)+".start-turn.json")}function pA(e,t){return uo.join(by(t),vy(e)+".source-seq.json")}function hA(e,t){return e+" "+t}function _A(e,t,r){return e+" "+t+" "+r}var gA="__control_epoch";function PL(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],a=i[0];if(a===gA)if(typeof o=="string"&&o!==""){n.contents=o;return}else return;else if(typeof o=="number"&&Bt(o)&&o>=0){r[a]=o;return}else return}),{TAG:"Ok",_0:{cursors:r,epoch:n.contents}}}function RL(e,t){let r=ur(e);if(r.TAG==="Ok"){let i=PL(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 Ii(n,"ENOENT")||t("control_cursor_store.read_failed",Object.fromEntries([["path",e],["message",n.message]])),{cursors:{},epoch:void 0}}function zL(e,t){let r={};return t!==void 0&&(r[gA]=t),Object.entries(e).forEach(n=>{r[n[0]]=n[1]}),JSON.stringify(r)+`
|
|
324
324
|
`}function lf(e,t,r,n){let i=r!==void 0?r:!1,o=n!==void 0?n:!1,a=RL(e,t),s=a.cursors,d={contents:a.epoch},l={contents:!1},u={contents:void 0},c=()=>{if(!l.contents)return;l.contents=!1;let p=zL(s,d.contents),h=e+".tmp",_=Oe(cr(uo.dirname(e)),()=>o?xb(h,e,uo.dirname(e),p):Oe(ha(h,p),()=>ji(h,e)));if(_.TAG!=="Ok")return t("control_cursor_store.write_failed",Object.fromEntries([["path",e],["message",_._0.message]]))},f=()=>{if(l.contents=!0,u.contents!==void 0)return;let h=setTimeout(()=>{u.contents=void 0,c()},250);h.unref(),u.contents=yt(h)},m=()=>{let p=u.contents;p!==void 0&&(clearTimeout(ce(p)),u.contents=void 0),c()};return{initial:p=>s[p],onAdvance:(p,h)=>{let _=s[p];_!==void 0&&h<=_||(s[p]=h,f())},reset:(p,h)=>{if(!be(s[p],h))return s[p]=h,f()},flush:m,epoch:()=>d.contents,adoptEpoch:p=>{if(be(d.contents,p))return!1;let h=d.contents!==void 0,_=!h&&i&&Object.entries(s).length!==0;return d.contents=p,(h||_)&&(_&&t("control_cursor_store.pre_epoch_seqs_discarded",Object.fromEntries([["path",e],["epoch",p],["discardedSeqs",Object.entries(s).length]])),Object.entries(s).forEach(g=>ar(s,g[0]))),f(),(h||_)&&m(),h}}}function yA(e,t,r,n,i){return{current:()=>e.epoch(),adopt:(o,a)=>{let s=e.epoch(),d=e.adoptEpoch(a),l=t.adoptEpoch(a),u=d||l;return u&&r("kandan.control_epoch_changed",Object.fromEntries([["runnerId",n],["kandanUrl",i],["topic",o],["previousEpoch",s!==void 0?s:null],["epoch",a],["controlCursorCleared",d],["startTurnWatermarksCleared",l]])),u}}}var W6=1800*1e3;var J6=new RegExp("[^A-Za-z0-9._-]+","g"),B6=new RegExp("^[-.]+|[-.]+$","g");function bA(e){return{initial:t=>e.initial(t),onAdvance:(t,r)=>e.onAdvance(t,r),flush:()=>e.flush()}}function Sy(e,t){return e!==void 0?t>e:!0}function wy(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 vA(e){return e!==void 0?Array.isArray(e)?ct(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,a=o!==void 0&&typeof o=="number"&&Bt(o)?o:void 0,s=t.leaseEpoch,d=s!==void 0&&typeof s=="number"&&Bt(s)?s:void 0;return{channelId:i,threadId:r,highestProcessedSourceSeq:a,leaseEpoch:d}}):[]:[]}function wA(){let e=new Map;return{current:t=>e.get(t),adopt:(t,r)=>{if(!Bt(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]}))}}import*as df from"node:path";function xy(e){switch(e){case"rescript":return"Rescript";case"ts":return"Ts";default:return}}function hs(e){return e==="Ts"?"ts":"rescript"}function ky(e){return df.join(e,".linzumi","commanderImpl")}function xA(e){let t=ur(e);if(t.TAG==="Ok")return xy(t._0.trim())}function kA(e,t){let r=e+".tmp."+process.pid.toString()+"."+Id(6);return Oe(cr(df.dirname(e)),()=>{let n=Oe(ha(r,hs(t)+`
|
|
325
325
|
`),()=>ji(r,e));return n.TAG==="Ok"?{TAG:"Ok",_0:void 0}:(Zn(r),{TAG:"Error",_0:n._0})})}function OA(e,t){return e!==void 0?t<=e:!1}function AA(e,t,r){e.onAdvance(t,r),e.flush()}function TA(e){let t=er(e);if(t===void 0)return String(e);let r=ce(t),n=dr(r);return n!==void 0?n:String(r)}function EA(e,t,r,n,i){let o;try{o={TAG:"Ok",_0:t()}}catch(a){o={TAG:"Error",_0:re(a)}}if(o.TAG==="Ok"){let a=o._0;if(a.TAG==="Returned")return r();mn(a._0.then(s=>r()),s=>{let d=Q(i,u=>u(s)),l=0;return d!==void 0&&d!=="Withhold"?r():l=1,l===1&&n("kandan.control_ack_withheld_on_failure",Object.fromEntries([["controlType",e],["message",TA(s)]])),Promise.resolve()});return}n("kandan.control_handler_threw",Object.fromEntries([["controlType",e],["message",TA(o._0)]])),r()}function CA(e,t){return A(e[t],Mr)}function $A(e,t){return A(e[t],Oo)}function PA(e,t){return A(e[t],Ne)}function GL(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 DL(e){let t=Ne(e);if(t===void 0)return;let r=O(PA(t,"payload"),{}),n=CA(t,"body"),i;if(n!==void 0)i=n;else{let s=A(r.body,Mr);i=s!==void 0?s:A(r.text,Mr)}let o=$A(t,"seq");if(o===void 0||i===void 0)return;let a=O(PA(t,"actor"),{});return{seq:o,messageType:O(CA(t,"type"),"thread.message"),actorKind:O(A(a.kind,Mr),"unknown"),actorSlug:A(a.slug,Mr),actorUserId:$A(t,"actor_user_id"),body:i,payload:r}}function LL(e){return e!==void 0?Array.isArray(e)?ct(e,DL):[]:[]}async function RA(e,t,r,n){let i=r.workspace,o=r.channel,a=r.threadId;if(i===void 0)return[];if(o===void 0)return[];if(a===void 0)return[];let s=Object.fromEntries([["workspace",i],["channel",o],["thread_id",a]]),d=await e(t,"session:thread_context",s);if(d.TAG==="Ok"){let l=d._0,u=GL(l);return u!==void 0?LL(u.messages):(n("kandan.reconnect_thread_context_fetch_failed",Object.fromEntries([["thread_id",a],["reply",JSON.stringify(l).slice(0,300)]])),[])}return n("kandan.reconnect_thread_context_fetch_failed",Object.fromEntries([["thread_id",a],["message",d._0]])),[]}function ZL(e,t){return"Codex "+e+" did not reply within "+t.toString()+"ms (start request timed out)"}function UL(e,t,r,n){return t<=0?n:new Promise((i,o)=>{let a=e.setTimer(()=>i({TAG:"Error",_0:ZL(r,t)}),t);n.then(s=>(e.clearTimer(a),i(s),Promise.resolve()))})}function Ty(e){return e==="ResumeArchived"?"resume_archived":"forced_inject_not_found"}var VL="the server marked the durable engine session dead after an acknowledged-but-unexecuted turn";async function zA(e,t,r,n,i,o){let a={};a.threadId=n,Object.entries(i).forEach(p=>{a[p[0]]=p[1]});let s=a,d=(p,h)=>UL(t,r,p,e(p,h)),l=async(p,h)=>{o.log("kandan.reconnect_thread_unarchive_started",Object.fromEntries([["codex_thread_id",n],["discovered_by",Ty(p)],["message",h]]));let g=await(async()=>{let v=await d("thread/unarchive",Object.fromEntries([["threadId",n]]));if(v.TAG!=="Ok")return{TAG:"Error",_0:v._0};let w=v._0;if(w.TAG!=="ResultReply")return{TAG:"Error",_0:"thread/unarchive failed: "+w.message};let E=await d("thread/resume",s);if(E.TAG!=="Ok")return{TAG:"Error",_0:E._0};let R=E._0;return R.TAG==="ResultReply"?{TAG:"Ok",_0:void 0}:{TAG:"Error",_0:"thread/resume after unarchive failed: "+R.message}})();if(g.TAG==="Ok")return o.log("kandan.reconnect_thread_unarchive_resumed",Object.fromEntries([["codex_thread_id",n],["discovered_by",Ty(p)]])),{TAG:"Ok",_0:"Resumed"};let y=g._0;o.log("kandan.reconnect_thread_unarchive_failed",Object.fromEntries([["codex_thread_id",n],["discovered_by",Ty(p)],["archive_error",h],["message",y]]));let b;return b=p==="ResumeArchived"?y:"thread/inject_items failed: "+h+"; archive recovery failed: "+y,{TAG:"Error",_0:{message:b}}},u=async p=>{o.log(o.forceRehydrate?"kandan.reconnect_thread_rehydrate_forced":"kandan.reconnect_thread_resume_failed",Object.fromEntries([["codex_thread_id",n],["message",p],["forced",o.forceRehydrate],["rehydrating",!0]]));let h=await(async()=>{let g=o.buildRehydrationItems,y;if(g!==void 0){let oe=await g(p);oe.TAG==="Ok"?y=oe._0:(o.log("kandan.reconnect_thread_rehydration_items_failed",Object.fromEntries([["codex_thread_id",n],["message",oe._0]])),y=void 0)}else y=void 0;let b,v=0;if(y!==void 0&&y.length!==0?b={TAG:"Ok",_0:y.slice()}:v=1,v===1){let oe=await o.buildRehydrationText(p);b=oe.TAG==="Ok"?{TAG:"Ok",_0:[Object.fromEntries([["type","agentMessage"],["text",oe._0]])]}:{TAG:"Error",_0:oe._0}}if(b.TAG!=="Ok")return{TAG:"Error",_0:b._0};let w=await d("thread/inject_items",Object.fromEntries([["threadId",n],["items",b._0]]));if(w.TAG!=="Ok")return{TAG:"Error",_0:w._0};let E=w._0;if(E.TAG==="ResultReply"){let oe=await d("thread/resume",s);if(oe.TAG!=="Ok")return{TAG:"Error",_0:oe._0};let ye=oe._0;return ye.TAG==="ResultReply"?{TAG:"Ok",_0:void 0}:{TAG:"Error",_0:"rehydrated thread/resume failed: "+ye.message}}let R=E.message;if(!(o.forceRehydrate&&rA(R)))return{TAG:"Error",_0:"thread/inject_items failed: "+R};let ee=await l("ForcedInjectNotFound",R);return ee.TAG==="Ok"?{TAG:"Ok",_0:ee._0}:{TAG:"Error",_0:ee._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",p]])),{TAG:"Ok",_0:{TAG:"Rehydrated",resumeFailure:p}})}let _=h._0;return o.log("kandan.reconnect_thread_rehydration_failed",Object.fromEntries([["codex_thread_id",n],["resume_failure",p],["rehydration_failure",_]])),{TAG:"Error",_0:{message:"could not resume this thread's engine session ("+p+") and rebuilding a fresh session from the thread transcript also failed ("+_+")"}}};if(o.forceRehydrate)return await u(VL);let c=await d("thread/resume",s);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 m=f.message;return tA(m)?await l("ResumeArchived",m):await u(m)}function _s(e,t){let r=e.indexOf(t);if(r!==-1)return r}var jA=[["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"]],uf=[["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"]],Oy=[["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 JL(){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 Ay(e){let t={};return e.forEach(r=>{t[r[0]]=r[1]}),t}function BL(e){let t={};return e.forEach(r=>{t[r[1]]=r[0]}),t}var NA=Ay(jA),FA=Ay(uf),KL=Ay(Oy),HL=BL(Oy);function QL(e){return e.endsWith("_canonical")?!0:e.endsWith("_legacy")}function qA(e,t){return t>=32?e:Array.isArray(e)?e.map(r=>qA(r,t+1|0)):e===null?e:typeof e==="object"?GA(e,t):e}function GA(e,t){let r=Object.keys(e),n={};return r.forEach(i=>{let o=e[i];if(o!==void 0){n[i]=qA(o,t+1|0);return}}),r.forEach(i=>{if(QL(i))return;let o=n[i];if(o===void 0)return;let a=NA[i];if(a!==void 0)n[a]=o;else{let c=FA[i];c!==void 0&&(n[c]!==void 0||(n[c]=o))}let s=n[i];if(s===void 0||typeof s!="string")return;let d=KL[s];if(d!==void 0){if(n[i+"_canonical"]!==void 0)return;n[i+"_canonical"]=d;return}let l=HL[s];if(!(l===void 0||n[i+"_legacy"]!==void 0)){n[i+"_legacy"]=l;return}}),n}function DA(e){return JL()?GA(e,0):e}function LA(e){let t=e.slice();return e.forEach(r=>{let n=NA[r];n!==void 0&&!t.includes(n)&&t.push(n);let i=FA[r];if(i!==void 0&&!t.includes(i)){t.push(i);return}}),t}var gs="<SENSITIVE_DATA>",XL=LA(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"]),YL=["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"],e2=new RegExp("^(authorization|cookie|set-cookie|password)$","i"),t2=new RegExp("(^|[_-])(access[_-]?token|api[_-]?key|auth[_-]?token|oauth[_-]?code|refresh[_-]?token|secret|token)$","i"),r2=new RegExp("\\beyJ[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b","g");function n2(e){return e!==void 0?e2.test(e)?!0:t2.test(e):!1}function UA(e){let t={contents:!1};return Ab(e).forEach(r=>{if(XL.includes(r.toLowerCase())){e.set(r,gs),t.contents=!0;return}}),t.contents}function i2(e){let t=_s(e,"?"),r=_s(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):"",a=new URLSearchParams(i);return UA(a)?n+"?"+a.toString()+o:e}function o2(e){let t=Cn(e);if(t===void 0)return i2(e);let r=ce(t);return UA(r.searchParams),r.toString()}function VA(e){return o2(e).replace(r2,gs)}function a2(e){let t=_s(e,"=");return t!==void 0?[e.slice(0,t),e.slice(t+1|0)]:[e,void 0]}function Ey(e,t){if(n2(t))return gs;if(Array.isArray(e))return t==="args"?s2(e):e.map(r=>Ey(r,void 0));if(e===null)return e;switch(typeof e){case"string":return VA(e);case"object":return WA(e);default:return e}}function s2(e){let t={contents:!1};return e.map(r=>{if(typeof r=="string"){if(t.contents)return t.contents=!1,gs;let n=a2(r),i=n[0];return YL.includes(i)?n[1]!==void 0?i+"="+gs:(t.contents=!0,r):VA(r)}return t.contents=!1,Ey(r,void 0)})}function WA(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 a=o[0];if(a!=="runner_console"){i[a]=n&&a==="value"?gs:Ey(o[1],a);return}}),i}var JA=WA;var d2=Ev(e=>({joinRef:e.item(0,mm(sn)),ref:e.item(1,mm(sn)),topic:e.item(2,sn),event:e.item(3,sn),payload:e.item(4,xv)}));function BA(e){return Bs(e,d2)}function ff(e){let t=er(e);return t!==void 0?O(dr(ce(t)),"unknown error"):"unknown error"}function c2(e){let t=A(er(e),r=>hb(r));return t!==void 0?t:null}function si(e){return e.TAG==="Transport"?e._0.message:e.message}function f2(e,t){return{TAG:"Transport",_0:{phase:"WaitForConnection",reason:"TimeoutReason",message:"phoenix push timed out after "+e.toString()+"ms waiting for connection: "+t}}}function m2(e,t){return{TAG:"Transport",_0:{phase:"Reply",reason:"TimeoutReason",message:"phoenix push timed out after "+e.toString()+"ms: "+t}}}function QA(e){return e.TAG==="Transport"?e._0.phase==="WaitForConnection":!1}function XA(e){return{initial:t=>e.initial(t),onAdvance:(t,r)=>e.onAdvance(t,r),reset:(t,r)=>e.reset(t,r)}}function YA(e){return{current:t=>e.current(),adopt:(t,r)=>e.adopt(t,r)}}var p2="base64url.bearer.phx.";function h2(e){let t;t=typeof e=="object"&&e!==null&&!Array.isArray(e)?JA(e):e;let r=JSON.stringify(t);return r.length<=400?r:r.slice(0,400)+"\u2026"}var _2=new RegExp("/$");function g2(e){let t=Cn(e);if(t===void 0)return{TAG:"Error",_0:"Invalid URL"};let r=ce(t);switch(r.protocol){case"http:":r.protocol="ws:";break;case"https:":r.protocol="wss:";break}return r.pathname=r.pathname.replace(_2,"")+"/socket/websocket",r.searchParams.set("vsn","2.0.0"),{TAG:"Ok",_0:r.toString()}}function y2(e){return[p2+Eb(e),"phoenix"]}function KA(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 b2(e){let t;try{t={TAG:"Ok",_0:JSON.parse(e)}}catch(n){let i=re(n);t={TAG:"Error",_0:ff(i)}}if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=BA(t._0);return r.TAG==="Ok"?{TAG:"Ok",_0:r._0}:{TAG:"Error",_0:"invalid Phoenix frame"}}function eE(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}function pf(e,t){return A(e,r=>{let n=r[t];if(typeof n=="object"&&n!==null&&!Array.isArray(n))return n})}function ys(e,t){return A(e,r=>{let n=r[t];if(typeof n=="string")return n})}function cf(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 v2(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?Rs(e.status,"ok"):!1}function S2(e){return typeof e!="object"||e===null||Array.isArray(e)?!1:typeof e.type=="string"}function mf(e,t){let r=e[t];if(r!==void 0&&typeof r=="number"&&Bt(r))return r}function HA(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return mf(e,"control_seq")}function w2(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"&&Bt(n)?{event:t,payload:r,controlSeq:n}:void 0:{event:t,payload:r,controlSeq:void 0}}var x2="npm install -g @linzumi/cli@latest",k2=new RegExp("^npm install -g @linzumi\\/cli(@[0-9A-Za-z^~.-]{1,32})?$"),T2=new RegExp("^\\d+\\.\\d+\\.\\d+(?:[-+][0-9A-Za-z.-]{1,32})?$");function O2(e){return e!==void 0&&typeof e=="string"&&e.length<=100&&k2.test(e)?e:x2}function A2(e){return e!==void 0&&typeof e=="string"&&e.length<=64&&T2.test(e)?"@linzumi/cli "+e+" or newer":"a newer @linzumi/cli"}function Cy(e){let t=eE(e),r=pf(t,"response"),n=ys(r,"error");if(n!==void 0)return n;let i=ys(r,"reason");if(i!==void 0)return i;let o=ys(r,"message");if(o!==void 0)return o;let a=ys(t,"error");return t!==void 0?a!==void 0?a:"unknown":"invalid reply"}function E2(e){let t=pf(eE(e),"response");if(t===void 0||!be(t.error,"commander_version_too_old"))return Cy(e);let r=A2(t.min_version),n=O2(t.upgrade_command);return"commander_version_too_old: this Linzumi server requires "+r+". Update with: "+n}function C2(e){let t=e;if(ys(t,"agent_provider")==="claude-code")return"claude-code-sdk";let n=pf(t,"metadata"),i=pf(n,"local_codex_runner");return ys(i,"agent_provider")==="claude-code"?"claude-code-sdk":"codex-app-server"}function $2(e,t){let r;try{r=e.initial(t)}catch{r=void 0}if(r!==void 0&&Bt(r)&&r>=0)return r}function P2(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 tE(e,t,r,n){let i=n!==void 0?n:{},o=r!==void 0?r:af,a;a=t.TAG==="Token"?t._0:void 0;let s={contents:a},d=()=>{if(t.TAG==="Token")return{TAG:"Ok",_0:t._0};let x;try{x=t._0()}catch{x=void 0}if(x!==void 0&&x.trim()!=="")return s.contents=x,{TAG:"Ok",_0:x};let j=s.contents;return j!==void 0?{TAG:"Ok",_0:j}:{TAG:"Error",_0:{TAG:"Failed",message:"phoenix token provider returned no usable token"}}},l=i.onOperatorNotice,u=l!==void 0?l:x=>{console.error(x)},c=i.auditEvent,f=c!==void 0?c:(x,j)=>{},m=i.onPushRecorded,p=m!==void 0?m:x=>{},h=O(i.pushTimeoutMs,3e4),_=i.controlCursorStore,g=i.controlEpochStore,y={},b={},v={},w={},E={},R={},ee={},oe={},ye=new Set,_e={contents:1},me=[],he=[],N=[],W=[],P={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},z=x=>{let j=Object.entries(y);j.forEach(F=>ar(y,F[0])),j.forEach(F=>{let X=F[1];clearTimeout(X.timer),X.settle({TAG:"Error",_0:x})})},M=()=>{if(P.settleReady!==void 0)return;let j={contents:void 0};P.ready=new Promise((F,X)=>{j.contents=F}),P.settleReady=j.contents},J=()=>{let x=P.settleReady;x!==void 0&&x({TAG:"Ok",_0:void 0}),P.settleReady=void 0},K=x=>{let j=P.settleReady;j!==void 0&&j({TAG:"Error",_0:x}),P.settleReady=void 0},we=()=>{let x=P.heartbeatTimer;if(x!==void 0){clearInterval(ce(x)),P.heartbeatTimer=void 0;return}},Ce=()=>{let x=P.backoffResetTimer;if(x!==void 0){clearTimeout(ce(x)),P.backoffResetTimer=void 0;return}},Je=x=>{P.closed=!0;let j=P.reconnectTimer;j!==void 0&&(clearTimeout(ce(j)),P.reconnectTimer=void 0),we(),Ce();let F=P.websocket;F!==void 0&&F.close(),K(x),z({TAG:"Transport",_0:{phase:"Reply",reason:"ClientClosed",message:"phoenix client closed"}})},at=x=>O(oe[x],0),Ae=x=>{ar(w,x),ar(E,x),ar(R,x),ar(ee,x),oe[x]=at(x)+1|0},lt=(x,j)=>{let F=w[x];if(F!==void 0){if(j===F+1){let V=F+1,ue=E[x];if(ue!==void 0)for(;ue.has(V+1);)V=V+1,ue.delete(V);w[x]=V;return}let X=E[x],Y;if(X!==void 0)Y=X;else{let V=new Set;E[x]=V,Y=V}Y.add(j);return}w[x]=j},Le=(x,j)=>{let F=HA(j);if(F===void 0)return!0;let X=w[x],Y=X!==void 0?F<=X:!1,V=E[x],ue=V!==void 0?V.has(F):!1;return Y||ue?!1:(lt(x,F),!0)},tt=(x,j)=>{if(_!==void 0)try{return _.onAdvance(x,j)}catch{return}},Zt=(x,j)=>{if(!x.startsWith("local_runner:"))return;let F=mf(j,"control_high_water");if(F===void 0)return;let X=w[x];if(X!==void 0&&F<X){Ae(x);let Y=0;if(_===void 0)return;let V=_.reset;if(V===void 0)return;try{return V(x,Y)}catch{return}}},sr=(x,j)=>{let F=x.startsWith("local_runner:");if(g===void 0||!F)return!1;let X=j.control_epoch;if(X===void 0||typeof X!="string"||X==="")return!1;let Y;try{Y=g.adopt(x,X)}catch{Y=!1}return Y&&Ae(x),Y},Dt=x=>{let j=w[x];if(j!==void 0)return j;if(_===void 0)return;let F=$2(_,x);return F!==void 0?(w[x]=F,F):0},lr=new Set,T=(x,j,F,X)=>{try{let Y=!1;if(x.startsWith("local_runner:")&&j==="control"&&S2(X)){let V;if(Le(x,X)){let ue=HA(X);if(ue!==void 0){let Rt=R[x],Vt;if(Rt!==void 0)Vt=Rt;else{let Xt=new Set;R[x]=Xt,Vt=Xt}Vt.add(ue)}let st=at(x),pt=ue!==void 0?()=>{if(st!==at(x))return;let Rt=R[x];Rt!==void 0&&Rt.delete(ue);let Vt=ee[x];Vt!==void 0&&ue<=Vt||(ee[x]=ue);let Xt=A(Rt,zr=>rt(zr.values().toArray(),void 0,(hr,Ir)=>hr!==void 0&&hr<=Ir?hr:Ir)),pr=Xt!==void 0?Xt-1:ee[x];if(pr===void 0)return;let ut=w[x],Tt=ut!==void 0&&ut<pr?ut:pr;tt(x,Tt)}:()=>{};me.forEach(Rt=>Rt(X,pt)),V=!1}else V=!0;Y=V}if(!Y&&F===void 0&&j!=="phx_reply"&&j!=="phx_error"){he.forEach(V=>V(x,j,X));return}else return}catch(Y){let V=re(Y),ue=ff(V);try{f("phoenix.pushed_frame_dispatch_failed",Object.fromEntries([["topic",x],["frame",j],["message",ue],["stack",c2(V)],["payloadSnippet",h2(X)],["dropped",!0]]))}catch{}if(lr.has(j))return;lr.add(j);try{return u('linzumi: dropped a pushed "'+j+'" frame on '+x+" whose dispatch failed ("+ue+"); see the CLI audit log for the payload snippet.")}catch{return}}},B=(x,j)=>{let F=w[x],X={contents:F!==void 0&&F>=j?F:j},Y=E[x];if(Y!==void 0)for(Y.values().toArray().forEach(V=>{if(V<=X.contents){Y.delete(V);return}});Y.has(X.contents+1);)X.contents=X.contents+1,Y.delete(X.contents);w[x]=X.contents},Z=x=>{let j=w[x];if(j===void 0)return;let F=R[x],X=F!==void 0&&F.size>0?Q(rt(F.values().toArray(),void 0,(Y,V)=>Y!==void 0&&Y<=V?Y:V),Y=>Y-1):void 0;tt(x,X!==void 0&&X<j?X:j)},U=(x,j)=>{if(x.startsWith("chat:")){let F=j.events;return F===void 0?{TAG:"Ok",_0:void 0}:F===null?{TAG:"Ok",_0:void 0}:Array.isArray(F)?(F.forEach(X=>{he.forEach(Y=>Y(x,"event",X))}),{TAG:"Ok",_0:void 0}):{TAG:"Error",_0:"phoenix rejoin returned invalid events for "+x}}else{if(!x.startsWith("local_runner:"))return{TAG:"Ok",_0:void 0};let F=j.controls;if(F===void 0)return{TAG:"Ok",_0:void 0};if(F===null)return{TAG:"Ok",_0:void 0};if(!Array.isArray(F))return{TAG:"Error",_0:"phoenix rejoin returned invalid controls for "+x};F.forEach(Y=>{let V=w2(Y);if(V===void 0)return;let ue={};Object.entries(V.payload).forEach(pt=>{ue[pt[0]]=pt[1]}),ue.replayed=!0;let st=V.controlSeq;st!==void 0&&(ue.control_seq=st),T(x,V.event,void 0,ue)});let X=mf(j,"controls_advance_to");if(X!==void 0){let Y=j.control_high_water;typeof Y=="number"&&X>Y||B(x,X)}return Z(x),{TAG:"Ok",_0:void 0}}},ge=(x,j,F,X,Y)=>{let V=P.websocket;if(V===void 0)return Promise.resolve({TAG:"Error",_0:{TAG:"Transport",_0:{phase:"WaitForConnection",reason:"SocketNotOpen",message:"phoenix websocket is not open"}}});if(V.readyState()!==sa)return Promise.resolve({TAG:"Error",_0:{TAG:"Transport",_0:{phase:"WaitForConnection",reason:"SocketNotOpen",message:"phoenix websocket is not open"}}});let ue=P.nextRef.toString();P.nextRef=P.nextRef+1|0,j==="phx_join"&&(v[x]=ue);let st=j==="phx_join"?ue:v[x],pt=DA(F),pr=KA({joinRef:st,ref:ue,topic:x,event:j,payload:pt}),ut=Math.max(0,Math.ceil(X))|0;return new Promise((Tt,zr)=>{let hr=setTimeout(()=>{if(y[ue]!==void 0)return ar(y,ue),Tt({TAG:"Error",_0:m2(ut,j)})},ut);y[ue]={event:j,timer:hr,settle:Tt};try{p({provider:C2(pt),rawFrameText:pr,topic:x,event:j,payload:pt})}catch{}let Ir;try{Ir={TAG:"Ok",_0:V.send(pr)}}catch(Pi){let di=re(Pi);Ir={TAG:"Error",_0:ff(di)}}return Ir.TAG==="Ok"?Y!==void 0?Y():void 0:Tt({TAG:"Error",_0:{TAG:"Failed",message:Ir._0}})})},$e=(x,j)=>{let F={};if(j.forEach(X=>{Object.entries(X).forEach(Y=>{let V=Y[1],ue=Y[0],st=ue==="last_seq",pt=F[ue];if(st&&typeof pt=="number"&&typeof V=="number"){F[ue]=V<pt?V:pt;return}if(pt===void 0){F[ue]=V;return}})}),x.startsWith("local_runner:")){let X=Dt(x);X!==void 0&&(F.last_control_seq=X);let Y=P2(g,x);Y!==void 0&&(F.last_control_epoch=Y)}return F},mt=x=>Object.entries(x).map(j=>j[1].payload()),Ut=async x=>{let j=0,F=0,X=!0;for(;X;){let Y=b[x];if(Y!==void 0){let V=Dt(x),ue=await ge(x,"phx_join",$e(x,mt(Y)),h,void 0);if(j=j+1|0,ue.TAG==="Ok"){let st=cf(ue._0);if(st!==void 0){let pt=st.controls,Rt=Array.isArray(pt)?pt.length:0;F=F+Rt|0;let Vt=be(st.controls_truncated,!0),Xt=Dt(x),pr;if(Vt){let ut=mf(st,"control_high_water");pr=ut!==void 0&&Xt!==void 0?ut-Xt>0?ut-Xt:0:void 0}else pr=0;if(f("phoenix.control_backlog_fetch_progress",Object.fromEntries([["topic",x],["fetches",j],["fetched",F],["remaining_estimate",pr!==void 0?pr:null],["truncated",Vt]])),Vt)if(be(Xt,V)){let ut=Xt!==void 0?Xt.toString():"undefined";u("phoenix.control_backlog_fetch_stalled topic="+x+" fetches="+j.toString()+" fetched="+F.toString()+" cursor="+ut+"; a truncated reply made no cursor progress - stopping this fetch loop (a server paging bug; the next reconnect resumes from the watermark)"),X=!1}else{if(j%20===0){let Tt=pr!==void 0?pr.toString():"unknown";u("phoenix.control_backlog_cap_exceeded topic="+x+" fetches="+j.toString()+" fetched="+F.toString()+" remaining_estimate="+Tt+"; continuing the paginated backlog fetch (a healthy connection never reconnects, so nothing is deferred)")}await new Promise((Tt,zr)=>{setImmediate(()=>Tt())})}else X=!1}else X=!1}else X=!1}else X=!1}},Qt=x=>{if(!ye.has(x)){ye.add(x),mn(Ut(x).then(()=>{ye.delete(x)}),j=>(ye.delete(x),Promise.resolve()));return}},Tr={},Pt=async()=>{Object.entries(Tr).forEach(Y=>ar(Tr,Y[0]));let x=Object.entries(b),j,F=0;for(;j===void 0&&F<x.length;){let Y=x[F];if(Y!==void 0){let V=Y[0],ue=await ge(V,"phx_join",$e(V,mt(Y[1])),h,void 0);if(ue.TAG==="Ok"){let st=cf(ue._0);st!==void 0?Tr[V]=st:j={TAG:"Failed",message:"phoenix rejoin failed for "+V}}else j=ue._0}F=F+1|0}let X=j;return X!==void 0?{TAG:"Error",_0:X}:{TAG:"Ok",_0:void 0}},En={contents:()=>Promise.resolve()},on=()=>{let x=P.closed,j=P.reconnectTimer;if(x||j!==void 0)return;M();let F=Math.min(1e4,250*2**P.reconnectAttempts);P.reconnectAttempts=P.reconnectAttempts+1|0,P.reconnectTimer=yt(setTimeout(()=>{P.reconnectTimer=void 0,En.contents()},Math.random()*F|0))},Rr=(x,j,F)=>{let X=P.connected,Y=P.connectedAt;P.connectedAt=void 0,P.connected=!1;let V=P.websocket;if(P.websocket=void 0,we(),Ce(),V!==void 0&&(V.readyState()===XO||V.readyState()===sa))try{V.close()}catch{}if(z(x),on(),!X)return;let ue;ue=F!==void 0&&F!==""?F:void 0;let st=Q(Y,Vt=>Math.max(0,Date.now()-Vt)),pt=P.reconnectAttempts,Rt={closeCode:j,closeReason:ue,previousSessionDurationMs:st,reconnectCount:pt};W.forEach(Vt=>{try{return Vt(Rt)}catch{return}})},I=()=>{we(),P.heartbeatTimer=yt(setInterval(()=>{let x=P.websocket;if(x===void 0||x.readyState()!==sa)return;let j=P.nextRef.toString();P.nextRef=P.nextRef+1|0;let Y={joinRef:void 0,ref:j,topic:"phoenix",event:"heartbeat",payload:{}};try{return x.send(KA(Y))}catch{return}},3e4))},L=()=>{Ce();let x=setTimeout(()=>{if(P.backoffResetTimer=void 0,P.connected){P.reconnectAttempts=0;return}},3e4);x.unref(),P.backoffResetTimer=yt(x)},D=(x,j)=>new Promise((F,X)=>{let Y={contents:void 0},V=ue=>{let st=Y.contents;st!==void 0&&(clearTimeout(ce(st)),Y.contents=void 0),F(ue)};x.on("SocketOpen",ue=>V({TAG:"Ok",_0:void 0})),x.on("SocketError",ue=>V({TAG:"Error",_0:"websocket open failed"})),x.on("SocketClose",ue=>V({TAG:"Error",_0:"websocket closed before open"})),Y.contents=yt(setTimeout(()=>{Y.contents=void 0,V({TAG:"Error",_0:"websocket open timed out after "+j.toString()+"ms"})},j))}),Pe=async()=>{if(P.closed)return;let x=d(),j=g2(e),F;if(x.TAG==="Ok")if(j.TAG==="Ok"){let V;try{V={TAG:"Ok",_0:o(j._0,y2(x._0))}}catch(ue){let st=re(ue);V={TAG:"Error",_0:{TAG:"Failed",message:ff(st)}}}F=V.TAG==="Ok"?{TAG:"Ok",_0:V._0}:{TAG:"Error",_0:V._0}}else F={TAG:"Error",_0:{TAG:"Failed",message:j._0}};else F={TAG:"Error",_0:x._0};if(F.TAG==="Ok"){let V=F._0;P.websocket=V,V.on("SocketMessage",ut=>{let Tt=P.websocket;if(Tt!==void 0&&Tt===V){let zr=b2(O(ut.data,"undefined"));if(zr.TAG==="Ok"){let hr=zr._0,Ir=hr.payload,Pi=hr.event,di=hr.topic,Ad=hr.ref;if(Ad!==void 0&&(Pi==="phx_reply"||Pi==="phx_error")){let Ri=y[Ad];if(Ri!==void 0){ar(y,Ad),clearTimeout(Ri.timer);let $C=Pi==="phx_error",PC=v2(Ir)&&Ri.event!=="phx_join";if($C)Ri.settle({TAG:"Error",_0:{TAG:"Failed",message:"phoenix push failed"}});else if(PC)Ri.settle({TAG:"Error",_0:{TAG:"Failed",message:"phoenix push failed: "+Cy(Ir)}});else{let RC=b[di],$s=cf(Ir),Ed;if(RC!==void 0&&$s!==void 0&&Ri.event==="phx_join"){let cb=sr(di,$s);Zt(di,$s);let fb=cb?{TAG:"Ok",_0:void 0}:U(di,$s);fb.TAG==="Ok"?(di.startsWith("local_runner:")&&(be($s.controls_truncated,!0)||cb)&&Qt(di),Ed=!1):(Ri.settle({TAG:"Error",_0:{TAG:"Failed",message:fb._0}}),Ed=!0)}else Ed=!1;Ed||Ri.settle({TAG:"Ok",_0:Ir})}}}return T(di,Pi,Ad,Ir)}else return f("phoenix.frame_decode_failed",Object.fromEntries([["message",zr._0],["dropped",!0]]))}}),V.on("SocketClose",ut=>{let Tt=P.websocket;if(Tt!==void 0&&Tt===V)return Rr({TAG:"Transport",_0:{phase:"Reply",reason:"SocketClosedReason",message:"phoenix websocket closed"}},ut.code,ut.reason)}),V.on("SocketError",ut=>{let Tt=P.websocket;if(Tt!==void 0&&Tt===V)return Rr({TAG:"Transport",_0:{phase:"Reply",reason:"SocketClosedReason",message:"phoenix websocket closed"}},void 0,void 0)});let ue=await D(V,h),st=()=>{if(P.closed)return!0;let ut=P.websocket;return ut!==void 0?ut!==V:!1},pt;if(ue.TAG==="Ok")if(st())pt={TAG:"Ok",_0:!1};else{P.connectionGeneration=P.connectionGeneration+1|0;let ut=await Pt();pt=ut.TAG==="Ok"?st()?{TAG:"Ok",_0:!1}:{TAG:"Ok",_0:!0}:{TAG:"Error",_0:ut._0}}else pt={TAG:"Error",_0:{TAG:"Failed",message:ue._0}};if(pt.TAG==="Ok"){if(!pt._0||(P.connected=!0,P.connectedAt=Date.now(),P.hasEverConnected=!0,L(),I(),J(),P.connectionGeneration<=1))return;let ut={};Object.entries(Tr).forEach(zr=>{ut[zr[0]]=zr[1]});let Tt={contents:!1};return N.forEach(zr=>{if(Tt.contents)return;let hr;try{hr={TAG:"Ok",_0:zr(ut)}}catch{hr={TAG:"Error",_0:void 0}}if(hr.TAG!=="Ok"){Tt.contents=!0;return}mn(hr._0,Ir=>Promise.resolve())}),Tt.contents&&!P.closed?Rr({TAG:"Transport",_0:{phase:"Reply",reason:"SocketClosedReason",message:"phoenix websocket reconnect failed"}},void 0,void 0):void 0}let Rt=P.websocket,Vt=Rt!==void 0?Rt!==V:!1,Xt=P.closed||Vt,pr=P.hasEverConnected;return Xt?void 0:pr?Rr({TAG:"Transport",_0:{phase:"Reply",reason:"SocketClosedReason",message:"phoenix websocket reconnect failed"}},void 0,void 0):Je(pt._0)}let X=P.closed,Y=P.hasEverConnected;if(!X)return Y?Rr({TAG:"Transport",_0:{phase:"Reply",reason:"SocketClosedReason",message:"phoenix websocket reconnect failed"}},void 0,void 0):Je(F._0)};En.contents=Pe;let xe=(x,j)=>{let F=P.ready;return new Promise((X,Y)=>{let V=setTimeout(()=>X({TAG:"Error",_0:f2(h,x)}),Math.max(0,j-Date.now())|0);F.then(ue=>{clearTimeout(V),X(ue)})})},Ze=async(x,j,F,X)=>{let Y=Date.now()+h,V=await xe(j,Y);return V.TAG==="Ok"?await ge(x,j,F,Y-Date.now(),X):{TAG:"Error",_0:V._0}},qe=async(x,j,F)=>{let X=F.registrationId,Y;if(X!==void 0)Y=X;else{let hr="join-registration-"+_e.contents.toString();_e.contents=_e.contents+1|0,Y=hr}let V=b[x],ue=V!==void 0?mt(V):[],st=await Ze(x,"phx_join",$e(x,ue.concat([j])),void 0);if(st.TAG!=="Ok")return{TAG:"Error",_0:st._0};let pt=st._0,Rt=cf(pt);if(Rt===void 0)return{TAG:"Error",_0:{TAG:"Failed",message:"phoenix join failed: "+E2(pt)}};let Vt=b[x],Xt=Vt!==void 0?Vt:{},pr=Object.entries(Xt).length===0,ut=F.rejoinPayload;if(Xt[Y]={payload:ut!==void 0?ut:()=>j},b[x]=Xt,!(pr&&x.startsWith("local_runner:")))return{TAG:"Ok",_0:Rt};let Tt=sr(x,Rt);Zt(x,Rt);let zr=Tt?{TAG:"Ok",_0:void 0}:U(x,Rt);return zr.TAG!=="Ok"?{TAG:"Error",_0:{TAG:"Failed",message:zr._0}}:((be(Rt.controls_truncated,!0)||Tt)&&Qt(x),{TAG:"Ok",_0:Rt})},CC={join:(x,j,F)=>qe(x,j,O(F,{rejoinPayload:void 0,registrationId:void 0})),unregisterJoin:(x,j)=>{let F=b[x];if(!(F===void 0||(ar(F,j),Object.entries(F).length!==0)))return ar(b,x),ar(v,x)},push:Ze,pushIfConnected:(x,j,F)=>P.connected?ge(x,j,F,h,void 0):Promise.resolve({TAG:"Error",_0:{TAG:"Transport",_0:{phase:"WaitForConnection",reason:"NotConnected",message:"phoenix client is not connected"}}}),onControl:x=>{me.push(x)},onEvent:x=>{he.push(x)},onReconnect:x=>{N.push(x)},onDisconnect:x=>{W.push(x)},forceReconnect:x=>P.closed||!P.connected?!1:(Rr({TAG:"Transport",_0:{phase:"Reply",reason:"SocketClosedReason",message:"phoenix websocket closed"}},void 0,O(x,"forced_stale_reconnect")),!0),hardReset:x=>{if(P.closed)return!1;Rr({TAG:"Transport",_0:{phase:"Reply",reason:"SocketClosedReason",message:"phoenix websocket closed"}},void 0,O(x,"hard_reset"));let j=P.reconnectTimer;return j!==void 0&&(clearTimeout(ce(j)),P.reconnectTimer=void 0),Pe(),!0},close:()=>Je({TAG:"Transport",_0:{phase:"WaitForConnection",reason:"ClientClosed",message:"phoenix client closed"}})};M(),Pe();let ub=await P.ready;return ub.TAG==="Ok"?{TAG:"Ok",_0:CC}:{TAG:"Error",_0:ub._0}}var tH=10*6e4;function R2(e,t){let r=setTimeout(e,t);return r.unref(),r}function z2(e){clearTimeout(e)}var Py={setTimer:R2,clearTimer:z2};function j2(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"}}var M2={rung:"cross_harness_failover",maxAttempts:1};function rE(e){return{sourceHarness:e.sourceHarness,targetHarness:e.targetHarness,model:e.model}}function N2(e){let t=e.transpiledItemCount,r=e.redactedReasoningCount,n=(t!==void 0?" items="+t.toString():"")+(r!==void 0?" redacted="+r.toString():"");return"failover "+e.sourceHarness+"->"+e.targetHarness+" model="+O(e.model,"unspecified")+n}function nE(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 F2=15*6e4,q2=30*6e4;function Ry(e,t){let r=Q(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 zy(e){return{maxRecoveryRungs:Ry(e.LINZUMI_FATE_LADDER_MAX_RECOVERY_RUNGS,4),maxLadderMs:Ry(e.LINZUMI_FATE_LADDER_BUDGET_MS,F2),maxRateLimitHoldMs:Ry(e.LINZUMI_FATE_LADDER_MAX_HOLD_MS,q2)}}function G2(e){return typeof e!="object"?e==="ClassificationStep"?"classification":"hold":e._0}function D2(e,t){return{fate:e,startedAtMs:t,rungCursor:0,cursorAttempts:0,recoveryRungsAttempted:0,holdCommitted:!1,holdDispatched:!1,entries:[],historyTruncated:!1}}function nn(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,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,entries:e.entries.concat([t]),historyTruncated:e.historyTruncated}}function L2(e,t){switch(t){case"in_place_resume":return e.inPlaceResume;case"redispatch":return e.redispatch;case"worker_rebuild":return e.workerRebuild;case"cross_harness_failover":return O(e.crossHarnessFailover,!1)}}function iE(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 a=nE(o),s=e.run,d=s!==void 0?s:D2(o,i);if(typeof a!="object")switch(a){case"HoldUntilResetPolicy":if(d.holdCommitted)return{TAG:"Red",cause:"hold_already_committed",run:nn(d,{rung:"HoldStep",outcome:"rungs_exhausted",atMs:i,detail:"the one hold-and-dispatch was already spent",resetAtMs:void 0})};let l=e.rateLimitResetAtMs,u=0;if(l!==void 0&&l>i){if(l-i>n.maxRateLimitHoldMs){let m=Math.round((l-i)/1e3).toString(),p=Math.round(n.maxRateLimitHoldMs/1e3).toString();return{TAG:"Red",cause:"hold_unavailable_reset_beyond_bound",run:nn(d,{rung:"HoldStep",outcome:"hold_unavailable_reset_beyond_bound",atMs:i,detail:"reset is "+m+"s away, beyond the "+p+"s hold budget",resetAtMs:l})}}let c=r(o,i),f=0;if(typeof c!="object")f=2;else{let m=c.reason;return{TAG:"BreakerHold",reason:m,run:nn(d,{rung:"HoldStep",outcome:"breaker_held",atMs:i,detail:m,resetAtMs:void 0})}}if(f===2)return{TAG:"HoldUntilReset",resetAtMs:l,run:nn({fate:d.fate,startedAtMs:d.startedAtMs,rungCursor:d.rungCursor,cursorAttempts:d.cursorAttempts,recoveryRungsAttempted:d.recoveryRungsAttempted,holdCommitted:!0,holdDispatched:d.holdDispatched,entries:d.entries,historyTruncated:d.historyTruncated},{rung:"HoldStep",outcome:"held",atMs:i,detail:void 0,resetAtMs:l})}}else u=1;if(u===1){if(!t.inPlaceResume)return{TAG:"Red",cause:"hold_unavailable_no_reset",run:nn(d,{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 m=c.reason;return{TAG:"BreakerHold",reason:m,run:nn(d,{rung:{TAG:"RungStep",_0:"in_place_resume"},outcome:"breaker_held",atMs:i,detail:m,resetAtMs:void 0})}}if(f===2){if(d.recoveryRungsAttempted<n.maxRecoveryRungs)return{TAG:"ExecuteRung",rung:"in_place_resume",run:nn({fate:d.fate,startedAtMs:d.startedAtMs,rungCursor:d.rungCursor,cursorAttempts:d.cursorAttempts,recoveryRungsAttempted:d.recoveryRungsAttempted+1|0,holdCommitted:d.holdCommitted,holdDispatched:d.holdDispatched,entries:d.entries,historyTruncated:d.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 m=d.recoveryRungsAttempted.toString(),p=n.maxRecoveryRungs.toString();return{TAG:"Red",cause:"budget_rungs_exhausted",run:nn(d,{rung:"ClassificationStep",outcome:"budget_rungs_exhausted",atMs:i,detail:m+" recovery rungs attempted (budget "+p+")",resetAtMs:void 0})}}}break;case"RedImmediatelyPolicy":return{TAG:"Red",cause:"deterministic_by_design",run:nn(d,{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 l=a.rungs,u=e.failover,c;if(c=o==="transient_local"&&u!==void 0?l.concat([M2]):l,d.recoveryRungsAttempted>=n.maxRecoveryRungs){let b=d.recoveryRungsAttempted.toString(),v=n.maxRecoveryRungs.toString();return{TAG:"Red",cause:"budget_rungs_exhausted",run:nn(d,{rung:"ClassificationStep",outcome:"budget_rungs_exhausted",atMs:i,detail:b+" recovery rungs attempted (budget "+v+")",resetAtMs:void 0})}}if(i-d.startedAtMs>n.maxLadderMs){let b=Math.round((i-d.startedAtMs)/1e3).toString(),v=Math.round(n.maxLadderMs/1e3).toString();return{TAG:"Red",cause:"budget_wall_clock_exhausted",run:nn(d,{rung:"ClassificationStep",outcome:"budget_wall_clock_exhausted",atMs:i,detail:"ladder open "+b+"s (budget "+v+"s)",resetAtMs:void 0})}}let f=d.rungCursor,m=d.cursorAttempts,p=!1,h=c[f];for(;(()=>{let b=h;return b!==void 0?m>=b.maxAttempts:!1})();)f=f+1|0,m=0,h=c[f];for(;(()=>{let b=h;return b!==void 0?!L2(t,b.rung):!1})();)p=!0,f=f+1|0,m=0,h=c[f];let _=h;if(_===void 0)return{TAG:"Red",cause:p?"grant_unavailable":"rungs_exhausted",run:nn(d,{rung:"ClassificationStep",outcome:p?"grant_unavailable":"rungs_exhausted",atMs:i,detail:p?"no executable recovery rung in this session context":"every recovery rung for this fate was already attempted",resetAtMs:void 0})};let g=r(o,i),y=0;if(typeof g!="object")y=1;else{let b=g.reason;return{TAG:"BreakerHold",reason:b,run:nn(d,{rung:{TAG:"RungStep",_0:_.rung},outcome:"breaker_held",atMs:i,detail:b,resetAtMs:void 0})}}if(y===1){let b=_.rung,v=e.failover,w,E=0;return b==="cross_harness_failover"&&v!==void 0?w={rung:{TAG:"RungStep",_0:"cross_harness_failover"},outcome:"attempted",atMs:i,detail:N2(rE(v)),resetAtMs:void 0,failover:rE(v)}:E=2,E===2&&(w={rung:{TAG:"RungStep",_0:_.rung},outcome:"attempted",atMs:i,detail:void 0,resetAtMs:void 0}),{TAG:"ExecuteRung",rung:_.rung,run:nn({fate:d.fate,startedAtMs:d.startedAtMs,rungCursor:f,cursorAttempts:m+1|0,recoveryRungsAttempted:d.recoveryRungsAttempted+1|0,holdCommitted:d.holdCommitted,holdDispatched:d.holdDispatched,entries:d.entries,historyTruncated:d.historyTruncated},w)}}}}function oE(e,t,r){let n=nE(t),i=l=>{let u={};u.rung=G2(l.rung),u.outcome=l.outcome,u.at_ms=l.atMs;let c=l.detail;c!==void 0&&(u.detail=c.slice(0,200));let f=l.resetAtMs;f!==void 0&&(u.reset_at_ms=f);let m=l.failover;if(m!==void 0){u.source_harness=m.sourceHarness,u.target_harness=m.targetHarness;let p=m.model;p!==void 0&&(u.model=p);let h=m.transpiledItemCount;h!==void 0&&(u.transpiled_item_count=h);let _=m.redactedReasoningCount;_!==void 0&&(u.redacted_reasoning_count=_)}return u},o=e!==void 0?e.entries.slice(0,16).map(i):[],a={};a.fate=t,a.policy=j2(n),a.recovery_rungs_attempted=e!==void 0?e.recoveryRungsAttempted:0;let s={};s.max_recovery_rungs=r.maxRecoveryRungs,s.max_ladder_ms=r.maxLadderMs,s.max_rate_limit_hold_ms=r.maxRateLimitHoldMs,a.budget=s,e!==void 0&&e.historyTruncated&&(a.history_truncated=!0);let d;if(d=t==="deterministic"?o.length===0:!1,d){let l={};l.rung="classification",l.outcome="no_rungs_by_design",l.at_ms=0,l.detail="classification: deterministic, no rungs attempted by design",a.entries=[l]}else a.entries=o;return a}function U2(e,t,r){let n=r.sandboxedNeverDefault&&be(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:be(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 aE(e,t,r){return rr(U2(e,t,r),n=>n==="on-failure"?"on-request":n)}function sE(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 W2(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 lE(e){let t=e.body.trimStart();return t.startsWith("!")?t:W2(e)}var B2=["deterministic","transient_upstream","transient_local","rate_limited","needs_approval","needs_decision"],rH=Ov(B2);function hf(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 uE(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"}import*as _E from"node:url";function H2(e){return e}function Ht(e,t){return e[t]}function k(e,t){return A(e[t],Mr)}function Te(e,t){return A(e[t],Ne)}function bf(e,t){return A(e[t],Li)}function la(e,t){return A(e[t],Oo)}function _f(e,t){let r=e[t];return r!==void 0?su(r):[]}function jy(e){if(typeof e=="string"&&e.trim()!=="")return e}function We(e,t){return A(e[t],jy)}var Q2="phoenix_insert_body_limit",gf="\0",yf="\uFFFD";function X2(e,t,r){if(e.length<=t)return{text:e,truncated:!1};let n="[Linzumi truncated "+r+"]",i=Math.max(0,(t-n.length|0)-1|0);return{text:(e.slice(0,i)+" "+n).slice(0,t),truncated:!0}}var cE=`
|
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 Phe(e,n){let t=e.trim();if(t.length<=n)return t;let r="... ";return`${r}${t.slice(t.length-(n-r.length))}`}function Ihe(e){let n=Object.entries(e);return n.length<=pN?e:(n.sort(([,t],[,r])=>Date.parse(t.lastAt)-Date.parse(r.lastAt)),Object.fromEntries(n.slice(-pN)))}function yN(e,n,t,r,o=mN){let i=e.load(),s=(i[n]?.count??0)+1,a=t instanceof Error?t.message:String(t??"");return e.save(Ihe({...i,[n]:{count:s,lastError:Phe(a===""?"the engine worker never started":a,The),lastAt:new Date(r).toISOString()}})),{count:s,tripped:s>=o}}function xN(e,n){let t=e.load();if(t[n]===void 0)return!1;let{[n]:r,...o}=t;return e.save(o),!0}function _N(e,n,t=mN){let r=e.load()[n];return r!==void 0&&r.count>=t?r:void 0}function mC(e,n=fC){let t=bN.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 wN(e,n=fC){let t=bN.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=fN(o);if(a===o)break;o=a}return!0}function hC(e,n={}){let t=n.realpathFn??whe,r;try{r=t(Che($t(e)))}catch{return!1}return!mC(r,n.statFn??fC)}function vN(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(SN)}function kN(e,n){return`${SN}${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 mN,The,pN,bN,SN,CN=F(()=>{"use strict";iC();ms();mN=3,The=480,pN=50;bN=["/Volumes"];SN="coding sessions are paused for "});import{mkdirSync as Rhe,rmSync as TN,writeFileSync as Ehe,promises as PN}from"node:fs";import{join as Dhe}from"node:path";import{StringDecoder as Mhe}from"node:string_decoder";function Ahe(e){return`'${e.replaceAll("'","'\\''")}'`}function $he(e,n){return`__lz_live_out=${Ahe(n)}; if ! : >> "$__lz_live_out" 2>/dev/null; then __lz_live_out=/dev/null; fi; { ${e}${cx}`}function Ohe(e){return IN.test(e)&&e.endsWith(cx)}function RN(e){let n=e.match(IN)?.[0];return n===void 0||!e.endsWith(cx)?e:e.slice(n.length,e.length-cx.length)}function EN(e){let n=e.LINZUMI_CLAUDE_LIVE_BASH?.trim().toLowerCase();return!(n==="0"||n==="false"||n==="off"||n==="no")}function DN(e){let n=e.pollIntervalMs??Lhe,t=e.maxEmittedBytesPerTool??jhe,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{TN(l.file,{force:!0})}catch{}}},s=async(c,l)=>{if(!l.reading){l.reading=!0;try{let p=await PN.stat(l.file);if(p.size<=l.offset)return;let m=Math.min(p.size-l.offset,Fhe,t-l.emittedBytes);if(m<=0){i(c);return}let f=await PN.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 Mhe("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||Ohe(p))return;let m=Dhe(e.captureDir,`${c.replaceAll(/[^\w-]/g,"_")}.out`);try{Rhe(e.captureDir,{recursive:!0}),Ehe(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:$he(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{TN(e.captureDir,{recursive:!0,force:!0})}catch{}}}}var IN,cx,Lhe,jhe,Fhe,yC=F(()=>{"use strict";IN=/^__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)`;Lhe=200,jhe=262144,Fhe=65536});import{spawnSync as zhe}from"node:child_process";import{existsSync as qhe}from"node:fs";import{homedir as Nhe}from"node:os";import{basename as Uhe,posix as ON,win32 as Bhe}from"node:path";function bC(e){return e==="win32"?Bhe:ON}function Jhe(e,n){let t=Uhe(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 Khe(e,n){let t=zhe(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??Nhe(),fileExists:e?.fileExists??qhe,runLoginShell:e?.runLoginShell}}function Vhe(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 Whe(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&&AN)return MN;let r=n.env.SHELL?.trim(),o=n.runLoginShell??Khe,i=[];if(r!==void 0&&r!=="")for(let a of["interactive_login","interactive","login"]){let d=o(r,Jhe(r,a)),u=Vhe(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&&(MN=s,AN=!0),s}function Hhe(e){let n=$f(e);if(n.platform==="win32")return[];let t=n.homeDir,r=ON.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 $N(e,n){return e===void 0?[]:e.split(bC(n).delimiter).filter(t=>t!=="")}function wC(e){return Array.from(new Set(e))}function LN(e){let n=$f(e);return wC([...$N(n.env.PATH,n.platform),...$N(Whe(e),n.platform),...Hhe(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=LN(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 LN(n))for(let s of r){let a=o(i,s);if(t.fileExists(a))return a}}function jN(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,MN,AN,xC,vC=F(()=>{"use strict";lx="__LINZUMI_LOGIN_PATH_BEGIN__",_C="__LINZUMI_LOGIN_PATH_END__";AN=!1});import{closeSync as Ghe,openSync as Zhe,readSync as Qhe,statSync as Xhe}from"node:fs";function xd(e){return typeof e!="string"||e===""?e:Yhe.reduce((n,t)=>t.source.startsWith("\\beyJ")?n.replace(t,"<redacted>"):n.replace(t,"$1<redacted>"),e)}function FN(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 ige(e,n){let t;try{let{size:r}=Xhe(e),o=r>n?r-n:0,i=r-o;if(i<=0)return"";let s=Buffer.allocUnsafe(i);t=Zhe(e,"r");let a=Qhe(t,s,0,i,o);return s.subarray(0,a).toString("utf8")}catch{return""}finally{if(t!==void 0)try{Ghe(t)}catch{}}}function zN(e){let n=e.now??Date.now,t=e.setIntervalImpl??setInterval,r=e.clearIntervalImpl??clearInterval,o=e.readTail??ige,i=Math.max(nge,e.intervalMs??ege),s=Math.max(1,e.maxTailBytes??tge),a=Math.max(1,e.maxLifecycleEvents??rge),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??oge),y=(v,b)=>{let k=v.diagnostics!==null&&typeof v.diagnostics=="object"&&!Array.isArray(v.diagnostics)?{...v.diagnostics}:{},R=FN(k.runner_log_tail,f),P=FN(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 Yhe,ege,nge,tge,rge,oge,mx=F(()=>{"use strict";Yhe=[/(--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];ege=45e3,nge=5e3,tge=64*1024,rge=200,oge=16*1024});import sge from"blessed";function age(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 NN(e=sge){let t=e.Tput?.prototype,r=t?._compile;if(t===void 0||typeof r!="function"||t[qN]===!0)return;let o=function(s,a,d){let u=typeof d=="string"?age(d):d;return r.call(this,s,a,u)};t._compile=o,Object.defineProperty(t,qN,{value:!0,enumerable:!1,configurable:!0,writable:!0})}var qN,UN=F(()=>{"use strict";qN="__linzumiSetulcShimInstalled"});function BN(e){return e===void 0?!1:(e.unicode=!0,e.features!==void 0&&(e.features.unicode=!0),e.brokenACS=!0,!0)}function JN(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}BN(n),t!==void 0&&t!==n&&BN(t)}var KN=F(()=>{"use strict"});var VN,dge,Of,uge,WN,HN=F(()=>{"use strict";VN=Symbol.for("linzumi.blessedPartialScreenCrashGuard"),dge=e=>{console.warn(e)},Of=(e,n)=>{n===void 0||process.removeListener(e,n)},uge=(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},WN=(e,n={})=>{let t=e.prototype;switch(t[VN]){case!0:return;case void 0:break}let r=t.destroy;t[VN]=!0,t.destroy=function(){switch(this.program){case null:case void 0:(n.warn??dge)({event:"runner.tui_partial_screen_teardown",branch:"screen_destroy_missing_program",program_present:!1,action:"cleanup_partial_screen_registration"}),uge(e,this);break;default:r.call(this);break}}}});function GN(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 cge(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 lge(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}cge(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 ZN(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:lge(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 QN=F(()=>{"use strict";Zu()});var jt,SC,Xs=F(()=>{"use strict";jt="1.0.
|
|
670
|
+
`)}},f=Math.max(256,e.spoolTailBytes??oge),y=(v,b)=>{let k=v.diagnostics!==null&&typeof v.diagnostics=="object"&&!Array.isArray(v.diagnostics)?{...v.diagnostics}:{},R=FN(k.runner_log_tail,f),P=FN(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 Yhe,ege,nge,tge,rge,oge,mx=F(()=>{"use strict";Yhe=[/(--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];ege=45e3,nge=5e3,tge=64*1024,rge=200,oge=16*1024});import sge from"blessed";function age(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 NN(e=sge){let t=e.Tput?.prototype,r=t?._compile;if(t===void 0||typeof r!="function"||t[qN]===!0)return;let o=function(s,a,d){let u=typeof d=="string"?age(d):d;return r.call(this,s,a,u)};t._compile=o,Object.defineProperty(t,qN,{value:!0,enumerable:!1,configurable:!0,writable:!0})}var qN,UN=F(()=>{"use strict";qN="__linzumiSetulcShimInstalled"});function BN(e){return e===void 0?!1:(e.unicode=!0,e.features!==void 0&&(e.features.unicode=!0),e.brokenACS=!0,!0)}function JN(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}BN(n),t!==void 0&&t!==n&&BN(t)}var KN=F(()=>{"use strict"});var VN,dge,Of,uge,WN,HN=F(()=>{"use strict";VN=Symbol.for("linzumi.blessedPartialScreenCrashGuard"),dge=e=>{console.warn(e)},Of=(e,n)=>{n===void 0||process.removeListener(e,n)},uge=(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},WN=(e,n={})=>{let t=e.prototype;switch(t[VN]){case!0:return;case void 0:break}let r=t.destroy;t[VN]=!0,t.destroy=function(){switch(this.program){case null:case void 0:(n.warn??dge)({event:"runner.tui_partial_screen_teardown",branch:"screen_destroy_missing_program",program_present:!1,action:"cleanup_partial_screen_registration"}),uge(e,this);break;default:r.call(this);break}}}});function GN(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 cge(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 lge(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}cge(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 ZN(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:lge(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 QN=F(()=>{"use strict";Zu()});var jt,SC,Xs=F(()=>{"use strict";jt="1.0.129",SC=`linzumi ${jt}`});import ea from"blessed";function d4(e){return e.includes(gx)?e.replace(_ge,"").replace(bge,"").includes(gx):!1}function wge(e){return typeof e=="object"&&e!==null&&e.name==="escape"}function YN(e){return e.mode.type==="table"?!1:(e.mode={type:"table"},!0)}function kge(e){return vge.test(e)}function u4(e){if(!e.includes(gx))return[];let n=[];for(let t of e.matchAll(Sge))n.push(t[1]==="A"?"up":"down");return n}function Cge(e){return kge(e)?u4(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 Ege(){_x({trigger:"crash"},{log:Ig})}function c4(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(l4()){let r=uye(jf);if(Dge(jf,e,n,Date.now()),r!==void 0){r.render(Date.now());return}sye(jf),aye(jf);let o=AC(jf,Date.now());if(o!==void 0){MC(o);return}}let t=y4(e,n);if(t!==void 0)try{process.stdout.write(`${t}
|
|
672
672
|
`)}catch(r){if(nd(r)===void 0)throw r}}function l4(){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 l4()}function Dge(e,n,t,r){let o=Nv(n);e.lastUpdateAtMs=r;let i=a4(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<=fge)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?Oge(p?.metadata,d):d;e.discovery.set(l,{key:l,phase:s,status:c?Lge(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=Eye(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=Dye(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=v4(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=Sye(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=t4(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?a4(e):bye(e,`codex:${p}`,r);m!==void 0&&(m.codexThreadId=p??m.codexThreadId,m.tokenUsage=s??m.tokenUsage,m.creditExhaustion=d??m.creditExhaustion,m.latestCodexEventId=_4(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=vye(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=t4(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}Yge(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?Mge(e,n):Fge(e,t,n);case"raw_all":return o4(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 o4(e,i,o?.tokenUsage,"esc: table",e.rawLines.filter(s=>s.jobKey===r),n)}}}function Mge(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"}`,"",Age(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 Age(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=jge(e.currentSource);return e.currentPlace!==void 0?t===void 0?e.currentPlace:`${t}: ${e.currentPlace}`:e.message??p4(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"} [${$ge(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 $ge(e,n){let r=Math.min(10,Math.max(0,Math.floor(e/n*10)));return`${"#".repeat(r)}${"-".repeat(10-r)}`}function Oge(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 Lge(e,n,t){return e?.status==="running"&&TC(e.metadata)&&!TC(t)?e.status:n}function jge(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 p4(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 Fge(e,n,t){let r=m4(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)}`,...f4(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),"",kye(r.rows),""].join(`
|
package/package.json
CHANGED