@linzumi/cli 1.0.195 → 1.0.196

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.
@@ -40,7 +40,7 @@ ${u}`.split(`
40
40
  `,"utf8")}catch{return}}function CC(){let e=process.env.LINZUMI_CLI_AUDIT_LOG?.trim();return e===void 0||e===""?kC(SC(),".linzumi","logs","command-events.jsonl"):e}function y_(){let e=process.env.LINZUMI_RUNNER_LOG_FILE?.trim();return e===void 0||e===""?kC(SC(),".linzumi","logs","linzumi-runner.log"):e}function Zi(e){return fF(e)}function TC(e,n){return Ule(n)?jd:typeof e=="string"?mF(e):Array.isArray(e)?n==="args"?Nle(e):e.map(t=>TC(t,void 0)):e!==null&&typeof e=="object"?fF(e):e}function fF(e){let n=typeof e.name=="string"?e.name.toLowerCase():void 0,t=n==="authorization"||n==="cookie"||n==="set-cookie";return Object.fromEntries(Object.entries(e).filter(([r])=>r!=="runner_console").map(([r,o])=>[r,t&&r==="value"?jd:TC(o,r)]))}function Lle(e,n){let t=Fle(n.runner_console);return t===void 0?e:{...e,...Zi(t)}}function Fle(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}function Nle(e){let n=!1;return e.map(t=>{if(typeof t!="string")return n=!1,TC(t,void 0);if(n)return n=!1,jd;let[r,o]=zle(t);return qle.has(r)?o===void 0?(n=!0,t):`${r}=${jd}`:mF(t)})}function zle(e){let n=e.indexOf("=");return n===-1?[e,void 0]:[e.slice(0,n),e.slice(n+1)]}function Ule(e){return e===void 0?!1:/^(authorization|cookie|set-cookie|password)$/i.test(e)||/(^|[_-])(access[_-]?token|api[_-]?key|auth[_-]?token|oauth[_-]?code|refresh[_-]?token|secret|token)$/i.test(e)}function mF(e){return Ble(e).replace(/\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,jd)}function Ble(e){let n;try{n=new URL(e)}catch{return Jle(e)}for(let t of[...n.searchParams.keys()])cF.has(t.toLowerCase())&&n.searchParams.set(t,jd);return n.toString()}function Jle(e){let n=e.indexOf("?"),t=e.indexOf("#");if(n===-1||t!==-1&&t<n)return e;let r=e.slice(0,n),o=t===-1?e.slice(n+1):e.slice(n+1,t),i=t===-1?"":e.slice(t),s=new URLSearchParams(o),a=!1;for(let d of[...s.keys()])cF.has(d.toLowerCase())&&(s.set(d,jd),a=!0);switch(a){case!0:return`${r}?${s.toString()}${i}`;case!1:return e}}function Kle(e){return e.closed||e.destroyed?Promise.resolve():new Promise((n,t)=>{e.once("error",t),e.end(n)})}var jd,cF,qle,jle,zt=U(()=>{"use strict";g_();jd="<SENSITIVE_DATA>",cF=aF(new Set(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"])),qle=new Set(["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"]),jle=3e4});function Wle(e){let n=new Map;return{report:r=>{let o=r.key??r.message,i=r.audience??"user",s=e.nowMs(),a=n.get(o),d=a===void 0?{key:o,severity:r.severity,message:r.message,audience:i,count:1,firstAtMs:s,lastAtMs:s}:{...a,severity:r.severity,message:r.message,audience:i,count:a.count+1,lastAtMs:s};n.delete(o),n.set(o,d);for(let u of n.keys()){if(n.size<=Vle)break;n.delete(u)}return e.writeAuditEvent(hF,{severity:d.severity,audience:d.audience,key:d.key,message:d.message,count:d.count}),e.tuiActive()?(d.audience==="user"&&e.reportConsoleEvent(hF,{severity:d.severity,key:d.key,message:d.message,count:d.count}),d):(d.count===1&&e.writeStderr(`${Hle(d.severity)}${d.message}
41
41
  `),d)},notices:()=>Array.from(n.values()),reset:()=>n.clear()}}function Hle(e){switch(e){case"warning":return"WARNING: ";case"error":return"ERROR: ";case"info":return""}}function gF(e){PC=e}function Fr(e){return Gle.report(e)}var Vle,hF,PC,Gle,$f=U(()=>{"use strict";zt();Vle=50,hF="runner.notice";PC={tuiActive:()=>!1,reportConsoleEvent:()=>{}};Gle=Wle({tuiActive:()=>PC.tuiActive(),writeAuditEvent:(e,n)=>ye(e,n),reportConsoleEvent:(e,n)=>PC.reportConsoleEvent(e,n),writeStderr:e=>{process.stderr.write(e)},nowMs:Date.now})});import{realpath as __,writeFile as Zle,mkdir as Qle,open as Xle}from"node:fs/promises";import{constants as yF}from"node:fs";import{homedir as Yle}from"node:os";import{basename as EC,extname as xF,isAbsolute as bF,join as _F,relative as vF,resolve as RC}from"node:path";async function AC(e,n){if(n.attachments.length===0)return[];if(n.seq===void 0)throw new Error("Kandan attachment input missing source message seq");let t=_F(e.cwd,".kandan",e.attachmentDirectoryName,`message-${n.seq}`);await Qle(t,{recursive:!0});let r=[];for(let[o,i]of n.attachments.entries()){let s=i.url;if(s===void 0)throw new Error(`attachment ${o+1} for message ${n.seq} is missing a URL`);let a=ope(i.fileName??i.id??`attachment-${o+1}`,o),d=_F(t,a),u=kF(e.kandanUrl,s),c=await(e.fetch??globalThis.fetch)(u,{headers:npe(e,u)});if(!c.ok)throw new Error(`attachment ${a} download failed: ${c.status} ${c.statusText}`);let l=Buffer.from(await c.arrayBuffer());await Zle(d,l),r.push({fileName:a,contentType:i.contentType,sizeBytes:i.sizeBytes??l.byteLength,path:d,isImage:ipe(i.contentType,i.kind),dataBase64:l.toString("base64")})}return r}function MC(e,n,t={}){if(e.trimStart().startsWith("!"))return e;let r=n.length===0?[]:["","Linzumi attachments downloaded for this message:",...n.map(i=>{let s=[i.contentType,i.sizeBytes===void 0?void 0:`${i.sizeBytes} bytes`].flatMap(d=>d===void 0?[]:[d]),a=s.length===0?"":` (${s.join(", ")})`;return`- ${i.fileName}${a}: ${i.path}`})],o=t.uploadInstructionMode==="footer"?["If you create files that should be attached back to Kandan, end your assistant response with:","Kandan attachments:","- relative/or/absolute/path/to/file","Only attach non-hidden files: source/text files of any language are fine, as are common document, image, patch, archive, or video types."]:["When you create files that should be attached back to Linzumi, use the linzumi_upload_files MCP tool silently.","Do not mention that you are using the upload tool. Do not print an upload manifest or upload footer in the message.","The MCP upload tool is the only supported path for attaching generated files to Linzumi messages.","Attach files to the reply you already posted with target.kind=latest_assistant_message; only use new_message when you have not posted a reply yet, and never repeat your reply text as the new message body."];return[e,...r,"",...o].join(`
42
42
  `)}function SF(e){return e.flatMap(n=>n.isImage?[{type:"localImage",path:n.path}]:[])}async function DC(e,n){let t=await AC(e,n),r=MC(n.body,t,{uploadInstructionMode:"footer"}),o=t.flatMap(i=>{let s=spe(i.contentType);return s!==void 0?[{type:"image",source:{type:"base64",media_type:s,data:i.dataBase64}}]:[]});return o.length===0?r:[{type:"text",text:r},...o]}async function epe(e,n,t){if(y(t.kind)!=="codex_assistant_message")return{fileIds:[],attachedRawPaths:[]};let r=await __(e.cwd),o=await IF(r),i=await ape(n,r);if(i.length===0)return{fileIds:[],attachedRawPaths:[]};let s=await Promise.all(i.map(async({rawPath:c,resolvedPath:l})=>{let p=await PF(o,l);return{rawPath:c,fileName:EC(l),contentType:RF(l,p.classification),sizeBytes:p.bytes.byteLength,bytes:p.bytes}})),a=await ype(e.kandan,e.topic,"session:prepare_message_uploads",{workspace:e.workspace,channel:e.channel,files:s.map(c=>({file_name:c.fileName,content_type:c.contentType,size_bytes:c.sizeBytes}))}),d=$e(a.uploads)??[];if(d.length!==s.length)throw new Error("Kandan attachment prepare response count mismatch");return await Promise.all(s.map(async(c,l)=>{let p=E(d[l]),f=y(p?.upload_url),g=y(p?.upload_method)??"PUT";if(f===void 0)throw new Error("Kandan attachment prepare response missing upload_url");let m=c.bytes,_=m.buffer.slice(m.byteOffset,m.byteOffset+m.byteLength),b=await(e.fetch??globalThis.fetch)(kF(e.kandanUrl,f),{method:g,headers:{"content-type":c.contentType},body:_});if(!b.ok)throw new Error(`Kandan attachment upload failed for ${c.fileName}: ${b.status} ${b.statusText}`)})),{fileIds:d.map(c=>{let l=y(E(c)?.file_id);if(l===void 0)throw new Error("Kandan attachment prepare response missing file_id");return l}),attachedRawPaths:s.map(c=>c.rawPath)}}async function OC(e,n){let t=await __(e),r=await IF(t),o=await TF(t,n),i=await PF(r,o);return{fileName:EC(o),contentType:RF(o,i.classification),sizeBytes:i.bytes.byteLength,bytes:i.bytes}}function kF(e,n){let t=rpe(n);if(t!==void 0)return t;if(e===void 0)throw new Error(`relative attachment URL cannot be resolved without Kandan URL: ${n}`);let r=e.replace(/^wss:\/\//,"https://").replace(/^ws:\/\//,"http://");return new URL(n,r).toString()}function npe(e,n){return tpe(e.kandanUrl,n)?{authorization:`Bearer ${e.token}`}:{}}function tpe(e,n){if(e===void 0)return!1;try{let t=new URL(e.replace(/^wss:\/\//,"https://").replace(/^ws:\/\//,"http://")).origin;return new URL(n).origin===t}catch{return!1}}function rpe(e){try{return new URL(e).toString()}catch{return}}function ope(e,n){let t=EC(e).replaceAll(/[^\w.\- ]/g,"_").trim(),r=t===""||t==="."||t===".."?`attachment-${n+1}`:t;return`${n+1}-${r}`}function ipe(e,n){return e!==void 0&&e.toLowerCase().startsWith("image/")?!0:n?.toLowerCase()==="image"}function spe(e){switch(e?.split(";")[0]?.trim().toLowerCase()){case"image/png":return"image/png";case"image/jpeg":return"image/jpeg";case"image/gif":return"image/gif";case"image/webp":return"image/webp";default:return}}async function ape(e,n){let t=e.split(/\r?\n/),r=t.findIndex(s=>s.trim().toLowerCase()==="kandan attachments:");if(r===-1)return[];let o=new Set,i=[];for(let s of t.slice(r+1)){let a=s.trim(),d=CF(a);if(d==="")continue;if(d===void 0)break;if(gpe(d))continue;if(!hpe(d))break;let u;try{u=await TF(n,d)}catch(c){if(c.code==="ENOENT")break;throw c}o.has(u)||(o.add(u),i.push({rawPath:d,resolvedPath:u}))}return i}function CF(e){if(e==="")return"";let n=e.startsWith("- ")?e.slice(2).trim():e;if(n!=="")return n.replace(/^`|`$/g,"")}async function TF(e,n){if(n==="")throw new Error("Kandan attachment path must not be empty");let t=bF(n)?RC(n):RC(e,n);return await __(t)}async function PF(e,n){let t=e.find(s=>dpe(s.path,n));if(t===void 0){let s=e.map(a=>a.label).join(", ");throw new Error(`Kandan attachment path must resolve inside an allowed upload root (${s}): ${n}`)}if(vF(t.path,n).split(/[\\/]+/).find(s=>s.startsWith("."))!==void 0)throw new Error(`Kandan attachment upload path must not include hidden path segments: ${n}`);let i=await Xle(n,yF.O_RDONLY|yF.O_NONBLOCK);try{if(!(await i.stat()).isFile())throw new Error(`Kandan attachment path is not a file: ${n}`);let a=xF(n).toLowerCase();if(wF.has(a))return{classification:"known-type",bytes:await i.readFile()};let d=Buffer.alloc(IC),{bytesRead:u}=await i.read(d,0,IC,0);if(d.subarray(0,u).includes(0))throw new Error(`Kandan attachment upload requires a known media/document type or text content (binary content is not allowed): ${n}`);let c=await i.readFile();if(c.subarray(0,IC).includes(0))throw new Error(`Kandan attachment upload requires a known media/document type or text content (binary content is not allowed): ${n}`);return{classification:"text-content",bytes:c}}finally{await i.close()}}async function IF(e){let n=[{path:e,label:"runner cwd"}],t=process.env.HOME?.trim(),r=RC(t===void 0||t===""?Yle():t,"Downloads");try{let o=await __(r);n.some(i=>i.path===o)||n.push({path:o,label:"~/Downloads"})}catch{return n}return n}function dpe(e,n){let t=vF(e,n);return t===""||!t.startsWith("..")&&!bF(t)}function upe(e){let n=e.toLowerCase();return n.endsWith(".png")?"image/png":n.endsWith(".jpg")||n.endsWith(".jpeg")?"image/jpeg":n.endsWith(".gif")?"image/gif":n.endsWith(".webp")?"image/webp":n.endsWith(".csv")?"text/csv":n.endsWith(".json")?"application/json":n.endsWith(".md")||n.endsWith(".txt")||n.endsWith(".log")?"text/plain":"application/octet-stream"}function RF(e,n){if(e.toLowerCase().endsWith(".py"))return"text/x-python";let r=upe(e);return n==="text-content"&&r==="application/octet-stream"?"text/plain":r}function cpe(e,n=[]){let t=e.split(/\r?\n/),r=t.findIndex(a=>a.trim().toLowerCase()==="kandan attachments:");if(r===-1)return e;let o=[],i=!1;for(let a of t.slice(r+1)){if(a.trim()===""){switch(i){case!0:o.push(a);break;case!1:break}continue}fpe(a,n)||(o.push(a),i=!0)}let s=[...t.slice(0,r),...o];for(;s.length>0&&s[s.length-1]?.trim()==="";)s.pop();return s.join(`
43
- `)}function lpe(e,n,t=[]){let r=cpe(e,t);switch(r.trim()===""&&n.length>0){case!0:return"Attached file.";case!1:return r}}function ppe(e,n){return y(e.kind)==="codex_assistant_message"?{...e,content:n}:e}function fpe(e,n){let t=CF(e.trim());return t===""?!0:t===void 0?!1:n.includes(t)}function hpe(e){let n=xF(e).toLowerCase();return n===""?!/\s/.test(e):wF.has(n)||mpe.test(n)}function gpe(e){return e.split(/[\\/]+/).some(n=>n.startsWith("."))}async function ype(e,n,t,r){let o=await e.push(n,t,r);if(ne(o)&&o.status==="ok"&&ne(o.response))return o.response;throw new Error(`kandan push failed: ${t}: ${JSON.stringify(o).slice(0,500)}`)}async function x_(e,n,t){switch(n){case"session:post_thread_message":case"session:stream_thread_message":case"session:edit_thread_message":break;default:return t}let r=n==="session:edit_thread_message",o=r?E(t.structured):E(E(t.payload)?.structured),i=typeof t.body=="string"?t.body:void 0;if(o===void 0||i===void 0||y(o.stream_state)!=="completed")return t;let s,a;try{let l=await epe(e,i,o);s=l.fileIds,a=l.attachedRawPaths}catch(l){return e.log?.("pipeline.attachment_prepare_degraded",{event:n,message:l instanceof Error?l.message:String(l)}),t}let d=lpe(i,s,a),u=ppe(o,d);if(d===i&&s.length===0)return t;let c={...t,body:d,...s.length===0?{}:{uploaded_file_ids:s}};return r?{...c,structured:u}:{...c,payload:{...E(t.payload)??{},structured:u}}}var wF,IC,mpe,b_=U(()=>{"use strict";et();zn();wF=new Set([".csv",".diff",".gif",".htm",".html",".jpeg",".jpg",".json",".jsonl",".log",".md",".mp4",".patch",".pdf",".png",".svg",".txt",".webm",".webp",".xml",".zip"]);IC=8192;mpe=/^\.[a-z0-9_+-]{1,12}$/});function k_(e,n){switch(e){case"warning":case"error":return{diagnostic_summary:jC(e,n)??`${e}: seen (no details)`,diagnostic_payload:qC(n,0),diagnostic_payload_keys:Object.keys(n).sort()};default:return{}}}function MF(e,n=12e3){let t=[],r=n,o=!1,i=a=>{if(!o){if(a.length<=r){t.push(a),r-=a.length;return}t.push(a.slice(0,r)),r=0,o=!0}},s=(a,d)=>{if(o)return;if(a===void 0){i("null");return}if(typeof a=="string"){let c=a.length<=w_?a:`${a.slice(0,w_)}...`;i(JSON.stringify(S_(c)));return}if(a===null||typeof a=="boolean"){i(JSON.stringify(a));return}if(typeof a=="number"){i(JSON.stringify(a)??"null");return}if(d>=AF){i(JSON.stringify("[max-depth]"));return}if(!ne(a)){i("[");for(let c=0;c<a.length;c+=1){if(o)return;c>0&&i(","),s(a[c],d+1)}i("]");return}i("{");let u=!0;for(let c in a){if(o)return;Object.prototype.hasOwnProperty.call(a,c)&&(u?u=!1:i(","),i(JSON.stringify(c)),i(":"),DF(c)?i(JSON.stringify(v_)):s(a[c],d+1))}i("}")};return s(e,0),o?`${t.join("")}...`:t.join("")}function jC(e,n){let t=EF(n.error),r=EF(n.item),o=Qi(n.code)??$C(n.code)??Qi(t?.code)??$C(t?.code)??Qi(n.status)??$C(n.status),i=Qi(n.message)??Qi(n.detail)??Qi(n.reason)??Qi(t?.message)??Qi(t?.detail)??Qi(t?.reason),s=Qi(r?.type),a=o===void 0?void 0:S_(o),d=a===void 0?e:`${e} ${a}`,u=i===void 0?s===void 0?void 0:`item.type=${s}`:S_(i);return u===void 0?void 0:`${d}: ${u}`}function qC(e,n){if(e===void 0)return null;if(typeof e=="string"){let t=S_(e);return t.length<=w_?t:`${t.slice(0,w_)}...`}return e===null||typeof e=="boolean"||typeof e=="number"?e:n>=AF?"[max-depth]":Array.isArray(e)?e.map(t=>qC(t,n+1)):Object.fromEntries(Object.entries(e).map(([t,r])=>[t,DF(t)?v_:qC(r,n+1)]))}function DF(e){let n=e.replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/[\s-]+/g,"_").toLowerCase();switch(n){case"authorization":case"cookie":case"cookies":case"credential":case"credentials":case"password":case"secret":case"token":case"access_key":case"api_key":case"auth_token":case"bearer_token":case"client_secret":case"id_token":case"private_key":case"proxy_authorization":case"refresh_token":case"secret_key":case"session_token":case"set_cookie":case"sig":case"signature":case"signing_key":case"x_amz_signature":case"x_api_key":return!0;default:return n.endsWith("_api_key")||n.endsWith("_access_key")||n.endsWith("_private_key")||n.endsWith("_secret_key")||n.endsWith("_authorization")||n.endsWith("_cookie")||n.endsWith("_cookies")||n.endsWith("_token")||n.endsWith("_secret")||n.endsWith("_password")||n.endsWith("_signature")||n.endsWith("_sig")||n.endsWith("_credential")||n.endsWith("_credentials")}}function S_(e){return e.replace(/https?:\/\/\S*(?:token|secret|signature|sig|x-amz-signature|api[_-]?key|access[_-]?key|private[_-]?key|refresh)\S*/gi,_pe).replace(/(^|[^A-Za-z0-9_-])(["']?)(set-cookie|cookie)\2\s*(:|=)\s*(["']?)[^\r\n"']*\5/gi,(n,t,r,o,i,s)=>`${t}${r}${o}${r}${i}${i===":"&&s===""?" ":""}${s}${v_}${s}`).replace(new RegExp(`(^|[^A-Za-z0-9_-])(["']?)(${xpe})\\2\\s*(:|=)\\s*(["']?)(?:(?:Bearer|Basic|Digest|Token|ApiKey|OAuth|Negotiate)\\s+)?[^"'\\s,;}&]+\\5`,"gi"),(n,t,r,o,i,s)=>`${t}${r}${o}${r}${i}${i===":"&&s===""?" ":""}${s}${v_}${s}`).replace(/\bBearer\s+[^\s,;]+/gi,"Bearer [redacted]")}function EF(e){return ne(e)?e:void 0}function Qi(e){return typeof e=="string"&&e.trim()!==""?e.trim():void 0}function $C(e){return typeof e=="number"&&Number.isFinite(e)?e.toString():void 0}var v_,_pe,AF,w_,xpe,C_=U(()=>{"use strict";zn();v_="[redacted]",_pe="[redacted-url]",AF=12,w_=8e3,xpe="(?:(?:[A-Za-z0-9]+[_-]+)*(?:proxy-authorization|authorization|set-cookie|cookie|x-api-key|api[_-]?key|access[_-]?key|access[_-]?token|private[_-]?key|refresh(?:[_-]?token)?|auth[_-]?token|id[_-]?token|client[_-]?secret|bearer[_-]?token|session[_-]?token|secret[_-]?key|signing[_-]?key|credential|credentials|token|secret|password|signature|sig))"});function qf(e){let n=e.channelSession;return{...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{reasoningEffort:n.reasoningEffort},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:Lf(n.approvalPolicy,n.sandbox,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...n.sandbox===void 0?{}:{sandbox:n.sandbox}}}function OF(e){let n=e.channelSession;return{cwd:e.cwd,...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{effort:n.reasoningEffort},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:Lf(n.approvalPolicy,n.sandbox,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...n.sandbox===void 0?{}:{sandboxPolicy:bpe(n.sandbox,e.cwd)}}}function Uc(e,n,t){if(!(e===void 0||e==="default"))return jf(e,n,t)}function jf(e,n,t){let r=t?.sandboxedNeverDefault===!0&&n==="workspace-write";switch(e){case void 0:case"default":return r?"never":"on-request";case"never":return n==="danger-full-access"||r?"never":"on-request";case"on-request":case"on-failure":return e;default:throw new Error(`unsupported Codex approval policy: ${e}`)}}function Lf(e,n,t){let r=jf(e,n,t);return r==="never"&&n==="danger-full-access"?$F:r==="on-failure"?"on-request":r}function Ff(e,n,t){try{return Lf(e,n,t)===$F}catch{return!1}}function Bc(e){switch(e){case"read-only":case"workspace-write":return!0;default:return!1}}function Jc(e){switch(e){case"on-request":case"on-failure":case"untrusted":return!0;default:return!1}}function bpe(e,n){switch(e){case"danger-full-access":return{type:"dangerFullAccess"};case"read-only":return{type:"readOnly",access:{type:"fullAccess"},networkAccess:!1};case"workspace-write":return{type:"workspaceWrite",writableRoots:[n],readOnlyAccess:{type:"fullAccess"},networkAccess:!1,excludeTmpdirEnvVar:!1,excludeSlashTmp:!1};default:throw new Error(`unsupported Codex sandbox mode: ${e}`)}}var $F,Nf=U(()=>{"use strict";$F={granular:{sandbox_approval:!1,rules:!1,skill_approval:!1,request_permissions:!1,mcp_elicitations:!0}}});var T_,qF,LC=U(()=>{"use strict";T_=`<linzumi_markdown_media_guidance>
43
+ `)}function lpe(e,n,t=[]){let r=cpe(e,t);switch(r.trim()===""&&n.length>0){case!0:return"Attached file.";case!1:return r}}function ppe(e,n){return y(e.kind)==="codex_assistant_message"?{...e,content:n}:e}function fpe(e,n){let t=CF(e.trim());return t===""?!0:t===void 0?!1:n.includes(t)}function hpe(e){let n=xF(e).toLowerCase();return n===""?!/\s/.test(e):wF.has(n)||mpe.test(n)}function gpe(e){return e.split(/[\\/]+/).some(n=>n.startsWith("."))}async function ype(e,n,t,r){let o=await e.push(n,t,r);if(ne(o)&&o.status==="ok"&&ne(o.response))return o.response;throw new Error(`kandan push failed: ${t}: ${JSON.stringify(o).slice(0,500)}`)}async function x_(e,n,t){switch(n){case"session:post_thread_message":case"session:stream_thread_message":case"session:edit_thread_message":break;default:return t}let r=n==="session:edit_thread_message",o=r?E(t.structured):E(E(t.payload)?.structured),i=typeof t.body=="string"?t.body:void 0;if(o===void 0||i===void 0||y(o.stream_state)!=="completed")return t;let s,a;try{let l=await epe(e,i,o);s=l.fileIds,a=l.attachedRawPaths}catch(l){return e.log?.("pipeline.attachment_prepare_degraded",{event:n,message:l instanceof Error?l.message:String(l)}),t}let d=lpe(i,s,a),u=ppe(o,d);if(d===i&&s.length===0)return t;let c={...t,body:d,...s.length===0?{}:{uploaded_file_ids:s}};return r?{...c,structured:u}:{...c,payload:{...E(t.payload)??{},structured:u}}}var wF,IC,mpe,b_=U(()=>{"use strict";et();zn();wF=new Set([".csv",".diff",".gif",".htm",".html",".jpeg",".jpg",".json",".jsonl",".log",".md",".mp4",".patch",".pdf",".png",".svg",".txt",".webm",".webp",".xml",".zip"]);IC=8192;mpe=/^\.[a-z0-9_+-]{1,12}$/});function k_(e,n){switch(e){case"warning":case"error":return{diagnostic_summary:jC(e,n)??`${e}: seen (no details)`,diagnostic_payload:qC(n,0),diagnostic_payload_keys:Object.keys(n).sort()};default:return{}}}function MF(e,n=12e3){let t=[],r=n,o=!1,i=a=>{if(!o){if(a.length<=r){t.push(a),r-=a.length;return}t.push(a.slice(0,r)),r=0,o=!0}},s=(a,d)=>{if(o)return;if(a===void 0){i("null");return}if(typeof a=="string"){let c=a.length<=w_?a:`${a.slice(0,w_)}...`;i(JSON.stringify(S_(c)));return}if(a===null||typeof a=="boolean"){i(JSON.stringify(a));return}if(typeof a=="number"){i(JSON.stringify(a)??"null");return}if(d>=AF){i(JSON.stringify("[max-depth]"));return}if(!ne(a)){i("[");for(let c=0;c<a.length;c+=1){if(o)return;c>0&&i(","),s(a[c],d+1)}i("]");return}i("{");let u=!0;for(let c in a){if(o)return;Object.prototype.hasOwnProperty.call(a,c)&&(u?u=!1:i(","),i(JSON.stringify(c)),i(":"),DF(c)?i(JSON.stringify(v_)):s(a[c],d+1))}i("}")};return s(e,0),o?`${t.join("")}...`:t.join("")}function jC(e,n){let t=EF(n.error),r=EF(n.item),o=Qi(n.code)??$C(n.code)??Qi(t?.code)??$C(t?.code)??Qi(n.status)??$C(n.status),i=Qi(n.message)??Qi(n.detail)??Qi(n.reason)??Qi(t?.message)??Qi(t?.detail)??Qi(t?.reason),s=Qi(r?.type),a=o===void 0?void 0:S_(o),d=a===void 0?e:`${e} ${a}`,u=i===void 0?s===void 0?void 0:`item.type=${s}`:S_(i);return u===void 0?void 0:`${d}: ${u}`}function qC(e,n){if(e===void 0)return null;if(typeof e=="string"){let t=S_(e);return t.length<=w_?t:`${t.slice(0,w_)}...`}return e===null||typeof e=="boolean"||typeof e=="number"?e:n>=AF?"[max-depth]":Array.isArray(e)?e.map(t=>qC(t,n+1)):Object.fromEntries(Object.entries(e).map(([t,r])=>[t,DF(t)?v_:qC(r,n+1)]))}function DF(e){let n=e.replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/[\s-]+/g,"_").toLowerCase();switch(n){case"authorization":case"cookie":case"cookies":case"credential":case"credentials":case"password":case"secret":case"token":case"access_key":case"api_key":case"auth_token":case"bearer_token":case"client_secret":case"id_token":case"private_key":case"proxy_authorization":case"refresh_token":case"secret_key":case"session_token":case"set_cookie":case"sig":case"signature":case"signing_key":case"x_amz_signature":case"x_api_key":return!0;default:return n.endsWith("_api_key")||n.endsWith("_access_key")||n.endsWith("_private_key")||n.endsWith("_secret_key")||n.endsWith("_authorization")||n.endsWith("_cookie")||n.endsWith("_cookies")||n.endsWith("_token")||n.endsWith("_secret")||n.endsWith("_password")||n.endsWith("_signature")||n.endsWith("_sig")||n.endsWith("_credential")||n.endsWith("_credentials")}}function S_(e){return e.replace(/https?:\/\/\S*(?:token|secret|signature|sig|x-amz-signature|api[_-]?key|access[_-]?key|private[_-]?key|refresh)\S*/gi,_pe).replace(/(^|[^A-Za-z0-9_-])(["']?)(set-cookie|cookie)\2\s*(:|=)\s*(["']?)[^\r\n"']*\5/gi,(n,t,r,o,i,s)=>`${t}${r}${o}${r}${i}${i===":"&&s===""?" ":""}${s}${v_}${s}`).replace(new RegExp(`(^|[^A-Za-z0-9_-])(["']?)(${xpe})\\2\\s*(:|=)\\s*(["']?)(?:(?:Bearer|Basic|Digest|Token|ApiKey|OAuth|Negotiate)\\s+)?[^"'\\s,;}&]+\\5`,"gi"),(n,t,r,o,i,s)=>`${t}${r}${o}${r}${i}${i===":"&&s===""?" ":""}${s}${v_}${s}`).replace(/\bBearer\s+[^\s,;]+/gi,"Bearer [redacted]")}function EF(e){return ne(e)?e:void 0}function Qi(e){return typeof e=="string"&&e.trim()!==""?e.trim():void 0}function $C(e){return typeof e=="number"&&Number.isFinite(e)?e.toString():void 0}var v_,_pe,AF,w_,xpe,C_=U(()=>{"use strict";zn();v_="[redacted]",_pe="[redacted-url]",AF=12,w_=8e3,xpe="(?:(?:[A-Za-z0-9]+[_-]+)*(?:proxy-authorization|authorization|set-cookie|cookie|x-api-key|api[_-]?key|access[_-]?key|access[_-]?token|private[_-]?key|refresh(?:[_-]?token)?|auth[_-]?token|id[_-]?token|client[_-]?secret|bearer[_-]?token|session[_-]?token|secret[_-]?key|signing[_-]?key|credential|credentials|token|secret|password|signature|sig))"});function qf(e){let n=e.channelSession;return{...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{config:{model_reasoning_effort:n.reasoningEffort}},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:Lf(n.approvalPolicy,n.sandbox,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...n.sandbox===void 0?{}:{sandbox:n.sandbox}}}function OF(e){let n=e.channelSession;return{cwd:e.cwd,...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{effort:n.reasoningEffort},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:Lf(n.approvalPolicy,n.sandbox,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...n.sandbox===void 0?{}:{sandboxPolicy:bpe(n.sandbox,e.cwd)}}}function Uc(e,n,t){if(!(e===void 0||e==="default"))return jf(e,n,t)}function jf(e,n,t){let r=t?.sandboxedNeverDefault===!0&&n==="workspace-write";switch(e){case void 0:case"default":return r?"never":"on-request";case"never":return n==="danger-full-access"||r?"never":"on-request";case"on-request":case"on-failure":return e;default:throw new Error(`unsupported Codex approval policy: ${e}`)}}function Lf(e,n,t){let r=jf(e,n,t);return r==="never"&&n==="danger-full-access"?$F:r==="on-failure"?"on-request":r}function Ff(e,n,t){try{return Lf(e,n,t)===$F}catch{return!1}}function Bc(e){switch(e){case"read-only":case"workspace-write":return!0;default:return!1}}function Jc(e){switch(e){case"on-request":case"on-failure":case"untrusted":return!0;default:return!1}}function bpe(e,n){switch(e){case"danger-full-access":return{type:"dangerFullAccess"};case"read-only":return{type:"readOnly",networkAccess:!1};case"workspace-write":return{type:"workspaceWrite",writableRoots:[n],networkAccess:!1,excludeTmpdirEnvVar:!1,excludeSlashTmp:!1};default:throw new Error(`unsupported Codex sandbox mode: ${e}`)}}var $F,Nf=U(()=>{"use strict";$F={granular:{sandbox_approval:!1,rules:!1,skill_approval:!1,request_permissions:!1,mcp_elicitations:!0}}});var T_,qF,LC=U(()=>{"use strict";T_=`<linzumi_markdown_media_guidance>
44
44
  Some Linzumi users have opted into rich Markdown media rendering. When you are
45
45
  writing a visible Linzumi message, channel message, or thread reply, you may use
46
46
  these Markdown-compatible media directives:
@@ -1510,7 +1510,7 @@ To kick the agent off:
1510
1510
  `,O=Buffer.byteLength(P,"utf8");if(O>s)return l("runner_diagnostics.spool_entry_dropped",{reason:"entry_too_large",entry_bytes:O,max_entry_bytes:s}),!1;BMe(n,{recursive:!0}),f(u)+O>i&&g(),_(O);let R=b()?`
1511
1511
  `:"";return NMe(u,`${R}${P}`,"utf8"),!0}catch(T){return l("runner_diagnostics.spool_failed",{error:T instanceof Error?T.message:String(T)}),!1}},v=C=>{let T=[],P=KMe(C,"utf8");for(let O of P.split(`
1512
1512
  `))if(O.trim()!=="")try{let R=JSON.parse(O);R!==null&&typeof R=="object"&&T.push({parsed:R,raw:O})}catch{}return T};return{append:w,drain:async C=>{if(c)return{uploadedBatches:0,uploadedEntries:0,remainingBatches:p().length,skipped:!0};c=!0;let T=0,P=0;try{g(),_(0);let O=a()-o;for(let R of p()){let j;try{j=v(R)}catch(H){l("runner_diagnostics.spool_batch_unreadable",{file:R,error:H instanceof Error?H.message:String(H)}),m(R,"unreadable");continue}let B=j.filter(H=>{let X=dDe(H.parsed);return X===void 0||X>=O});if(B.length===0){m(R,"empty_or_expired");continue}let K=$E(R,".jsonl"),D=B.map(H=>H.raw).join(`
1513
- `),J=B.map(H=>H.parsed.spooled_at).filter(H=>typeof H=="string"),W={bundle_name:"runner-diagnostics-spool",exported_at:new Date(a()).toISOString(),idempotency_key:K,diagnostics:{kind:"runner_diagnostic_log",spool_batch:!0,idempotency_key:K,entry_count:B.length,...J.length===0?{}:{first_spooled_at:J[0],last_spooled_at:J[J.length-1]}},telemetry_ndjson:D};try{await C(W)}catch(H){l("runner_diagnostics.spool_upload_failed",{file:R,remaining_batches:p().length,error:H instanceof Error?H.message:String(H)});break}T+=1,P+=B.length;try{xV(R)}catch(H){l("runner_diagnostics.spool_delete_failed",{file:R,error:H instanceof Error?H.message:String(H)})}}}catch(O){l("runner_diagnostics.spool_drain_failed",{error:O instanceof Error?O.message:String(O)})}finally{c=!1}return{uploadedBatches:T,uploadedEntries:P,remainingBatches:p().length,skipped:!1}},pendingBatchFiles:p}}var QMe,XMe,YMe,eDe,nDe,bV,rDe,oDe,wV=U(()=>{"use strict";Rb();QMe=32*1024*1024,XMe=10080*60*1e3,YMe=4*1024*1024,eDe=1024*1024,nDe="spool.jsonl",bV=/^batch-(\d{1,16})-[0-9a-f-]+\.jsonl$/;rDe=/\b([A-Z][A-Z0-9_]{1,})=("[^"\n]*"|'[^'\n]*'|[^\s"'`;,)\]}]+)/g,oDe=/(?:\/(?:[A-Za-z0-9._@~+-]|%[0-9A-Fa-f]{2})+){2,}/g});var Xt,jE,za=U(()=>{"use strict";Xt="1.0.195",jE=`linzumi ${Xt}`});import{closeSync as kV,existsSync as FE,mkdirSync as uDe,openSync as CV,readFileSync as TV,renameSync as cDe,unlinkSync as yu,writeFileSync as lDe,writeSync as PV}from"node:fs";import{dirname as IV,join as pDe}from"node:path";function NE(e){return e instanceof Hs||e instanceof Error&&e.name===EV&&"lockPath"in e&&"heldBy"in e}function zE(e,n=at(),t){let r=t===void 0?encodeURIComponent(e):uu(t);return pDe(IV(n),"runners",`${r}.lock`)}function zv(e){let n=zE(e.machineId,e.configPath,e.linzumiUrl),t=e.isPidAlive??jV,r=e.now??(()=>new Date),o=e.killPid??CDe,i=r().toISOString(),s={version:1,machineId:e.machineId,runnerId:e.runnerId,pid:e.pid??process.pid,cwd:e.cwd,workspace:e.workspace,...e.linzumiUrl===void 0?{}:{linzumiUrl:Gn(e.linzumiUrl)},...e.launchSource===void 0?{}:{launchSource:e.launchSource},startedAt:i,heartbeatAt:i,cliVersion:e.cliVersion??Xt,...e.gracefulUpdateDrain===!0?{gracefulUpdateDrain:!0}:{}};gDe(e.machineId,e.configPath,e.linzumiUrl,t,r,o,e.onTakeover),yDe(n,s,t,r,o,e.onTakeover,e.beforeReadExistingLock,e.beforeReplaceStaleLock);let a=()=>AV(n,s,r),d=setInterval(a,RV);return d.unref(),{path:n,record:s,heartbeat:a,release:()=>{clearInterval(d),$V(n,s)}}}function AV(e,n,t){try{let r=Bv(e);if(r===void 0||r.machineId!==n.machineId||r.runnerId!==n.runnerId||r.pid!==n.pid||r.startedAt!==n.startedAt)return;let o={...r,heartbeatAt:t().toISOString()},i=`${e}.tmp`;lDe(i,`${JSON.stringify(o,null,2)}
1513
+ `),J=B.map(H=>H.parsed.spooled_at).filter(H=>typeof H=="string"),W={bundle_name:"runner-diagnostics-spool",exported_at:new Date(a()).toISOString(),idempotency_key:K,diagnostics:{kind:"runner_diagnostic_log",spool_batch:!0,idempotency_key:K,entry_count:B.length,...J.length===0?{}:{first_spooled_at:J[0],last_spooled_at:J[J.length-1]}},telemetry_ndjson:D};try{await C(W)}catch(H){l("runner_diagnostics.spool_upload_failed",{file:R,remaining_batches:p().length,error:H instanceof Error?H.message:String(H)});break}T+=1,P+=B.length;try{xV(R)}catch(H){l("runner_diagnostics.spool_delete_failed",{file:R,error:H instanceof Error?H.message:String(H)})}}}catch(O){l("runner_diagnostics.spool_drain_failed",{error:O instanceof Error?O.message:String(O)})}finally{c=!1}return{uploadedBatches:T,uploadedEntries:P,remainingBatches:p().length,skipped:!1}},pendingBatchFiles:p}}var QMe,XMe,YMe,eDe,nDe,bV,rDe,oDe,wV=U(()=>{"use strict";Rb();QMe=32*1024*1024,XMe=10080*60*1e3,YMe=4*1024*1024,eDe=1024*1024,nDe="spool.jsonl",bV=/^batch-(\d{1,16})-[0-9a-f-]+\.jsonl$/;rDe=/\b([A-Z][A-Z0-9_]{1,})=("[^"\n]*"|'[^'\n]*'|[^\s"'`;,)\]}]+)/g,oDe=/(?:\/(?:[A-Za-z0-9._@~+-]|%[0-9A-Fa-f]{2})+){2,}/g});var Xt,jE,za=U(()=>{"use strict";Xt="1.0.196",jE=`linzumi ${Xt}`});import{closeSync as kV,existsSync as FE,mkdirSync as uDe,openSync as CV,readFileSync as TV,renameSync as cDe,unlinkSync as yu,writeFileSync as lDe,writeSync as PV}from"node:fs";import{dirname as IV,join as pDe}from"node:path";function NE(e){return e instanceof Hs||e instanceof Error&&e.name===EV&&"lockPath"in e&&"heldBy"in e}function zE(e,n=at(),t){let r=t===void 0?encodeURIComponent(e):uu(t);return pDe(IV(n),"runners",`${r}.lock`)}function zv(e){let n=zE(e.machineId,e.configPath,e.linzumiUrl),t=e.isPidAlive??jV,r=e.now??(()=>new Date),o=e.killPid??CDe,i=r().toISOString(),s={version:1,machineId:e.machineId,runnerId:e.runnerId,pid:e.pid??process.pid,cwd:e.cwd,workspace:e.workspace,...e.linzumiUrl===void 0?{}:{linzumiUrl:Gn(e.linzumiUrl)},...e.launchSource===void 0?{}:{launchSource:e.launchSource},startedAt:i,heartbeatAt:i,cliVersion:e.cliVersion??Xt,...e.gracefulUpdateDrain===!0?{gracefulUpdateDrain:!0}:{}};gDe(e.machineId,e.configPath,e.linzumiUrl,t,r,o,e.onTakeover),yDe(n,s,t,r,o,e.onTakeover,e.beforeReadExistingLock,e.beforeReplaceStaleLock);let a=()=>AV(n,s,r),d=setInterval(a,RV);return d.unref(),{path:n,record:s,heartbeat:a,release:()=>{clearInterval(d),$V(n,s)}}}function AV(e,n,t){try{let r=Bv(e);if(r===void 0||r.machineId!==n.machineId||r.runnerId!==n.runnerId||r.pid!==n.pid||r.startedAt!==n.startedAt)return;let o={...r,heartbeatAt:t().toISOString()},i=`${e}.tmp`;lDe(i,`${JSON.stringify(o,null,2)}
1514
1514
  `,"utf8"),cDe(i,e)}catch{}}function _u(e,n,t){if(!n(e.pid))return{state:"dead"};let r=e.heartbeatAt??e.startedAt,o=Date.parse(r);return Number.isNaN(o)||t().getTime()-o>fDe?{state:"wedged",reason:e.heartbeatAt===void 0?"missing_heartbeat":"stale_heartbeat"}:{state:"live"}}function MV(e,n,t,r){return t!==Uv||e.launchSource!==Uv?!1:r.state!=="live"?!0:mDe(n,e.cliVersion)>0}function mDe(e,n){let t=SV(e),r=SV(n);for(let o=0;o<3;o++){let i=t.core[o],s=r.core[o];if(i===void 0||s===void 0)throw new Error(`compareCliVersions: unexpected undefined at core index ${o}`);if(i!==s)return i>s?1:-1}return t.prerelease.length===0&&r.prerelease.length===0?0:t.prerelease.length===0?1:r.prerelease.length===0?-1:hDe(t.prerelease,r.prerelease)}function SV(e){let n=e.trim().replace(/^v/i,"").split("+",1)[0]??"",t=n.indexOf("-"),r=t===-1?n:n.slice(0,t),o=t===-1?"":n.slice(t+1),i=r.split("."),s=[LE(i[0]),LE(i[1]),LE(i[2])],a=o===""?[]:o.split(".").filter(d=>d!=="");return{core:s,prerelease:a}}function LE(e){let n=Number.parseInt(e??"",10);return Number.isInteger(n)&&n>=0?n:0}function hDe(e,n){let t=Math.max(e.length,n.length);for(let r=0;r<t;r++){let o=e[r],i=n[r];if(o===void 0)return-1;if(i===void 0)return 1;let s=Number.parseInt(o,10),a=Number.parseInt(i,10),d=s.toString()===o,u=a.toString()===i;if(d&&u){if(s!==a)return s>a?1:-1}else{if(d!==u)return d?-1:1;if(o!==i)return o>i?1:-1}}return 0}function DV(e,n,t,r,o){try{r(n.pid)}catch(i){let s=i!==null&&typeof i=="object"&&"code"in i?i.code:void 0;if(s!=="ESRCH")throw s==="EPERM"||s==="EACCES"?new Error(`Cannot take over the runner lock at ${e}: its holder process (pid ${n.pid}) is owned by another user and cannot be stopped. Stop that process, or remove the lock file, then retry.`):i}o?.({lockPath:e,holderPid:n.pid,holderRunnerId:n.runnerId,reason:t})}function gDe(e,n,t,r,o,i,s){if(t===void 0||Ir(t)!==Ir(ir))return;let a=zE(e,n),d=Bv(a);if(d!==void 0){if(_u(d,r,o).state==="live")throw new Hs(a,d);OV(a,r,()=>{let u=FE(a)?UE(a):void 0;if(u===void 0)return;let c=_u(u,r,o);if(c.state==="live")throw new Hs(a,u);c.state==="wedged"&&DV(a,u,c.reason,i,s),yu(a)})}}function yDe(e,n,t,r,o,i,s,a){if(Nv(e,n))return;s?.();let d=Bv(e);if(d===void 0){if(Nv(e,n))return;throw new Error(`another Linzumi runner lock appeared while starting: ${e}`)}if(_u(d,t,r).state==="live")throw new Hs(e,d);a?.(),OV(e,t,()=>{let u=FE(e)?UE(e):void 0;if(u!==void 0){let c=_u(u,t,r);if(c.state==="live")throw new Hs(e,u);c.state==="wedged"&&DV(e,u,c.reason,o,i),yu(e)}if(!Nv(e,n))throw new Error(`another Linzumi runner lock appeared while starting: ${e}`)})}function Nv(e,n){uDe(IV(e),{recursive:!0});try{let t=CV(e,"wx");try{PV(t,`${JSON.stringify(n,null,2)}
1515
1515
  `)}finally{kV(t)}return!0}catch(t){if(Ql(t,"EEXIST"))return!1;throw t}}function OV(e,n,t){let r=`${e}.replace`;for(;;)try{let o=CV(r,"wx");try{PV(o,`${process.pid}
1516
1516
  `),t()}finally{kV(o),yu(r)}return}catch(o){if(Ql(o,"EEXIST")){let i=_De(r);if(i===void 0)continue;if(n(i))throw new Error(["another Linzumi runner is already replacing a stale runner lock",`lock: ${e}`,"Wait for that startup to finish, then retry."].join(`
@@ -1622,10 +1622,10 @@ ${t}`.toLowerCase();return r.includes("not logged in")||r.includes("not authenti
1622
1622
  `),b0(t,n)}catch{try{eg(t,{force:!0})}catch{}return!1}if(e==="ts")try{eg(Y$e(),{force:!0})}catch{}return!0}function nqe(e){try{let n=globalThis.__linzumiCommanderChooserMarkJoined;if(n===void 0)return;let t=n();t!==void 0&&e("commander.chooser.fallback_reported",{...t})}catch{}}function xZ(e,n){let t=e!==null&&typeof e=="object"&&!Array.isArray(e)?e.commander_impl:void 0;if(typeof t!="string")return;let r=t.trim()==="rescript"?"rescript":"ts",o=eqe();if(o===r)return;let i=aQ(r);n("runner.commander_impl_assigned",{impl:r,previousCache:o??null,persisted:i,runningImpl:kM})}function tqe(e){let n=e.replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^[-.]+|[-.]+$/g,"").slice(0,80),t=Iu("sha256").update(e).digest("hex").slice(0,8),r=n===""?"runner":n;return Tt(pp(),`${r}.${t}.json`)}function rqe(e){let n=e.replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^[-.]+|[-.]+$/g,"").slice(0,80),t=Iu("sha256").update(e).digest("hex").slice(0,8),r=n===""?"runner":n;return Tt(pp(),`${r}.${t}.start-turn.json`)}function oqe(e){let n=e.replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^[-.]+|[-.]+$/g,"").slice(0,80),t=Iu("sha256").update(e).digest("hex").slice(0,8),r=n===""?"runner":n;return Tt(pp(),`${r}.${t}.vm-fallback-notice.json`)}function iqe(e,n){let t;try{if(!cp(e))return;t=Ha(e,"utf8")}catch(r){n("vm_fallback_notice_store.read_failed",{path:e,message:r instanceof Error?r.message:String(r)});return}try{let r=JSON.parse(t);if(typeof r=="object"&&r!==null){let o=r.readinessFingerprint;if(typeof o=="string"&&o!=="")return o}}catch{}}function bZ(e,n,t){try{if(n===void 0){eg(e,{force:!0});return}Ru(Ga(e),{recursive:!0});let r=`${e}.tmp`;ng(r,`${JSON.stringify({readinessFingerprint:n})}
1623
1623
  `,"utf8"),b0(r,e)}catch(r){t("vm_fallback_notice_store.write_failed",{path:e,message:r instanceof Error?r.message:String(r)})}}function sqe(e){let n=e.replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^[-.]+|[-.]+$/g,"").slice(0,80),t=Iu("sha256").update(e).digest("hex").slice(0,8),r=n===""?"runner":n;return Tt(pp(),`${r}.${t}.source-seq.json`)}function aqe(e,n){return`${e} ${n}`}function Qh(e){let n=e.issued_at;return typeof n=="string"&&n!==""?n:void 0}function uQ(e){return e.replayed===!0}function dqe(e,n){if(!uQ(e))return;let t=Qh(e);if(t===void 0)return;let r=Date.parse(t);if(Number.isNaN(r))return;let o=n-r;return o>dQ?o:void 0}function uqe(e,n){if(e.type!=="start_instance"||!uQ(e))return!1;let t=ro(e);return t===void 0?!1:n(t)}function cqe(e,n){return e!==void 0&&n<=e}function lqe(e,n,t){e.onAdvance(n,t),e.flush()}function pqe(e,n){return e().then(t=>(n?.(),t))}function fqe(e){return"then"in e&&typeof e.then=="function"}function mqe(e,n,t,r,o){let i;try{i=n()}catch(s){r("kandan.control_handler_threw",{controlType:e,message:s instanceof Error?s.message:String(s)}),t();return}if(i===void 0||!fqe(i)){t();return}i.then(t,s=>{if(o?.(s)==="quarantine"){t();return}r("kandan.control_ack_withheld_on_failure",{controlType:e,message:s instanceof Error?s.message:String(s)})})}function _qe(e,n=Date.now,t=cQ,r){let o=r?.afterMs??yqe,i=r?.forcedReconnectAfterMs??hqe,s=r?.forcedReconnectRetryMs??gqe,a=n(),d=!1,u,c=!1,l=0,p,f=0,g=0;return{recordServerAck:()=>{a=n(),u=void 0,c=!1,l=0,p=void 0,f=0,g=0,d&&(d=!1,e("kandan.connection_recovered",{staleThresholdMs:t}))},check:()=>{let m=n(),_=m-a;!d&&_>t&&(d=!0,u=m,e("kandan.connection_stale",{lastServerAckAgoMs:_,staleThresholdMs:t}));let b=u===void 0?0:m-u;if(d&&r?.onReconnectNeeded!==void 0&&u!==void 0&&b>=i&&(p===void 0||m-p>=s)&&(l+=1,p=m,e("kandan.connection_force_reconnect",{staleForMs:b,lastServerAckAgoMs:_,attempt:l,forcedReconnectAfterMs:i}),r.onReconnectNeeded({staleForMs:b,lastServerAckAgoMs:_,attempt:l})===!1?f+=1:f=0,r.onHardResetNeeded!==void 0&&f>=iM)){if(f=0,g>=vZ)c||(c=!0,e("kandan.connection_hard_reset_exhausted",{staleForMs:b,lastServerAckAgoMs:_,attempt:l,hardResets:g,hardResetFailureLimit:vZ}),r.onUnrecoverable({staleForMs:b,lastServerAckAgoMs:_}));else if(b<o){g+=1;let v=r.onHardResetNeeded({staleForMs:b,lastServerAckAgoMs:_,attempt:l,uninitiatedDispatches:iM,hardResets:g});e("kandan.connection_hard_reset",{staleForMs:b,lastServerAckAgoMs:_,attempt:l,uninitiatedDispatches:iM,hardResets:g,initiated:v!==!1})}}d&&!c&&r!==void 0&&u!==void 0&&b>=o&&(c=!0,e("kandan.connection_unrecoverable",{staleForMs:b,lastServerAckAgoMs:_,escalateAfterMs:o}),r.onUnrecoverable({staleForMs:b,lastServerAckAgoMs:_}))},isStale:()=>d}}function sM(e,n,t){let r=t?.discardSeqsOnFirstEpochAdoption===!0,o=t?.fsyncOnWrite===!0,{cursors:i,epoch:s}=wqe(e,n),a=s,d=!1,u,c=()=>{if(d){d=!1;try{Ru(Ga(e),{recursive:!0});let f=`${e}.tmp`,g=`${JSON.stringify({...a===void 0?{}:{[lQ]:a},...Object.fromEntries(i)})}
1624
1624
  `;if(o){let m=gZ(f,"w");try{ng(m,g,"utf8"),hZ(m)}finally{mZ(m)}b0(f,e);let _=gZ(Ga(e),"r");try{hZ(_)}finally{mZ(_)}}else ng(f,g,"utf8"),b0(f,e)}catch(f){n("control_cursor_store.write_failed",{path:e,message:f instanceof Error?f.message:String(f)})}}},l=()=>{d=!0,u===void 0&&(u=setTimeout(()=>{u=void 0,c()},xqe),u.unref?.())},p=()=>{u!==void 0&&(clearTimeout(u),u=void 0),c()};return{initial:f=>i.get(f),onAdvance:(f,g)=>{let m=i.get(f);m!==void 0&&g<=m||(i.set(f,g),l())},reset:(f,g)=>{i.get(f)!==g&&(i.set(f,g),l())},flush:p,epoch:()=>a,adoptEpoch:f=>{if(a===f)return!1;let g=a!==void 0,m=!g&&r&&i.size>0;return a=f,(g||m)&&(m&&n("control_cursor_store.pre_epoch_seqs_discarded",{path:e,epoch:f,discardedSeqs:i.size}),i.clear()),l(),(g||m)&&p(),g}}}function bqe(e,n,t,r){return{current:()=>e.epoch(),adopt:(o,i)=>{let s=e.epoch(),a=e.adoptEpoch(i),d=n.adoptEpoch(i),u=a||d;return u&&t("kandan.control_epoch_changed",{runnerId:r.runnerId,kandanUrl:r.kandanUrl,topic:o,previousEpoch:s??null,epoch:i,controlCursorCleared:a,startTurnWatermarksCleared:d}),u}}}function vqe(e,n){return typeof e=="object"&&e!==null&&e.code===n}function wqe(e,n){let t=new Map,r;try{r=Ha(e,"utf8")}catch(s){return vqe(s,"ENOENT")||n("control_cursor_store.read_failed",{path:e,message:s instanceof Error?s.message:String(s)}),{cursors:t,epoch:void 0}}let o;try{o=JSON.parse(r)}catch{o=void 0}if(o===null||typeof o!="object"||Array.isArray(o))return n("control_cursor_store.corrupt_ignored",{path:e}),{cursors:t,epoch:void 0};let i;for(let[s,a]of Object.entries(o)){if(s===lQ){typeof a=="string"&&a!==""&&(i=a);continue}typeof a=="number"&&Number.isInteger(a)&&a>=0&&t.set(s,a)}return{cursors:t,epoch:i}}function Sqe(e,n){return e.type==="replace_runner"?!0:!("instanceId"in e)||e.instanceId===void 0||e.instanceId===n}function kqe(e){return"instanceId"in e?e.instanceId:void 0}function Cqe(e,n){let t=new URL(n);if(t.protocol!=="https:"&&t.protocol!=="http:")throw new Error("workspace viewport URL must use http or https");let r=new URL(Gn(e)).origin;if(t.origin!==r)throw new Error("workspace viewport URL must stay on the configured Linzumi origin")}function Tqe(e,n){Cqe(e,n)}function aM(e){return e!==void 0&&e.delegated===!0&&e.threadProcess==="already_started"}function Tu(e){return e.threadProcess?.role==="thread"||e.agentReplay!==void 0?!1:e.spawnThreadRunner!==void 0||e.codexUrl===void 0}function Pqe(e,n){let t=e.threadProcess,r=ro(n);return t?.role!=="thread"?!(Tu(e)&&r!==void 0&&Eqe(n)):r!==void 0?r===t.kandanThreadId:"instanceId"in n&&n.instanceId!==void 0&&n.instanceId!==""||n.type==="replace_runner"}function Iqe(e,n,t){switch(e.threadProcess?.role){case"thread":return!1;default:switch(n.type){case"resolve_claude_user_input_request":case"deny_claude_user_input_request":return t.has(n.requestId);default:return!1}}}function Rqe(e,n,t,r,o){switch(e.threadProcess?.role){case"thread":return!1;default:switch(n.type){case"resolve_codex_user_input_request":case"deny_codex_user_input_request":return[t,...r.values()].filter(i=>i!==void 0).some(i=>i.currentKandanThreadId()===n.threadId||i.currentCodexThreadId()===n.threadId||i.currentCodexThreadId()===n.sessionId)||n.sessionId!==void 0&&o.has(n.sessionId);default:return!1}}}function Eqe(e){switch(e.type){case"forward_http_request":case"forward_tcp_open":case"forward_tcp_send":case"forward_tcp_close":case"resolve_claude_user_input_request":case"deny_claude_user_input_request":case"resolve_codex_user_input_request":case"deny_codex_user_input_request":return!0;default:return!1}}function Aqe(e){let n=e;if(n.kind!=="build_golden_image"&&n.type!=="build_golden_image")return;let t=Cu(n.golden_image_public_id),r=Cu(n.build_claim_token);if(!(t===void 0||r===void 0))return{goldenImagePublicId:t,buildClaimToken:r,projectPublicId:Cu(n.project_public_id),computeKey:Cu(n.compute_key),name:Cu(n.name),sourceThreadId:Cu(n.source_thread_id),cwd:Cu(n.cwd)}}function Cu(e){return typeof e=="string"&&e!==""?e:void 0}function Mqe(e){return e.type==="resolve_codex_user_input_request"?{...e,answers:e.answers.map(({questionId:n,selectedLabels:t})=>({questionId:n,...t===void 0?{}:{selectedLabels:t}}))}:e}function ro(e){switch(e.type){case"start_instance":case"reconnect_thread":case"forward_http_request":case"forward_tcp_open":case"forward_tcp_send":case"forward_tcp_close":case"remote_codex_exec":case"remote_codex_exec_cancel":case"stop_turn":case"steer_turn":case"list_agent_slash_commands":case"resolve_claude_user_input_request":case"deny_claude_user_input_request":case"resolve_codex_user_input_request":case"deny_codex_user_input_request":case"set_thread_collaboration_mode":case"compact_thread":case"review_thread":case"update_thread_interaction_access":{let n=y(e.threadId)?.trim();return n===void 0||n===""?void 0:n}default:return}}async function Dqe(e,n,t,r){let o=ro(r);if(o!==void 0){let s=r.type==="resolve_codex_user_input_request"||r.type==="deny_codex_user_input_request"?r.sessionId===void 0?void 0:await t.get(r.sessionId):void 0,a=n.get(o),d=Array.from(new Set([...a===void 0?[]:[a],...s===void 0?[]:[s],...Array.from(n.values()).filter(c=>c.currentKandanThreadId()===o)])),u=[...e?.currentKandanThreadId()===o?[e]:[],...d.filter(c=>c!==e)].filter(c=>c!==void 0);if(r.type==="update_thread_interaction_access"){let c,l;for(let p of u){let f=await p.handleControl(r);f!==void 0&&(c??=f,f.ok===!0&&(l??=f))}return l??c}for(let c of u){let l=await c.handleControl(r);if(l!==void 0)return l}return}let i=await(e?.handleControl(r)??Promise.resolve(void 0));if(i!==void 0)return i;for(let s of n.values()){let a=await s.handleControl(r);if(a!==void 0)return a}}function Oqe(e){return e.codexUrl===void 0&&e.threadProcessRole!=="thread"&&e.ownsStartedAppServer}async function $qe(e){let n=e.setTimeoutFn??setTimeout,t=Promise.allSettled([e.requiredHealthPublication,...e.pushes]).then(()=>{}),r=new Promise(o=>{n(()=>o(),e.safetyCapMs)?.unref?.()});await Promise.race([t,r]),e.exit()}function wZ(e,n=process.env){let t=n.LINZUMI_APP_SERVER_EXIT_LOOP_STATE_FILE?.trim();return t!==void 0&&t!==""?t:Tt(ig(),".linzumi","app-server-exit-loop",`${Sl(e)}.json`)}function jqe(e,n){return{load:()=>{try{let t=JSON.parse(Ha(e,"utf8"));return typeof t.count=="number"&&Number.isFinite(t.count)&&typeof t.lastExitAt=="string"?{count:t.count,lastExitAt:t.lastExitAt}:void 0}catch{return}},save:t=>{try{Ru(Ga(e),{recursive:!0}),ng(e,`${JSON.stringify(t,null,2)}
1625
- `)}catch(r){n?.(r instanceof Error?r.message:String(r))}}}}function Lqe(e,n=cp){try{if(n(e))return}catch{return}return`the runner's working directory ${e} no longer exists (deleted, or its disk/volume is unmounted); remount the volume or reconnect from an existing folder`}function Fqe(e,n,t=pQ,r=qqe){let o=e.load(),i=o===void 0?Number.NaN:Date.parse(o.lastExitAt),s=n-i,d=o!==void 0&&Number.isFinite(i)&&s>=0&&s<=t?o.count+1:1;return e.save({count:d,lastExitAt:new Date(n).toISOString()}),{count:d,crashLoop:d>=r}}function Nqe(e){let n=new Map,t={failed:!1},r;return{observeNotification:(o,i)=>{if(t.failed)return;let s=zqe(i);if(s===void 0)return;r=Date.now();let a=_0(i);if(y0.has(o)){for(let[d,u]of n)u===s&&(a===void 0||a===d)&&n.delete(d);return}a!==void 0&&n.set(a,s)},failActiveTurns:o=>{if(t.failed)return;t.failed=!0;let i=Array.from(n);if(n.clear(),i.length===0)return;e.onActiveThreadsFailed?.(i.map(([d])=>d));let s=Array.from(e.sessions()),a=typeof o=="function"?o:d=>o;for(let[d,u]of i){let c=a({threadId:d,turnId:u});e.log("codex.active_turn_failed_on_connection_loss",{thread_id:d,turn_id:u,cause:c});for(let l of s)Va(l,"turn/failed",{threadId:d,turnId:u,reason:c,...Hc("infra_turn_kill")},e.log)}},activeTurnCount:()=>n.size,activeTurns:()=>Array.from(n,([o,i])=>({threadId:o,turnId:i})),lastActivityAtMs:()=>r}}function zqe(e){let n=E(e.turn),t=E(e.item),r=E(t?.turn);return y(n?.id)??y(e.turnId)??y(e.turn_id)??y(t?.turnId)??y(t?.turn_id)??y(r?.id)}function _0(e){let n=E(e.thread),t=E(e.turn);return y(e.threadId)??y(e.thread_id)??y(n?.id)??y(t?.threadId)??y(t?.thread_id)}function Va(e,n,t,r,o){if(e===void 0)return!1;try{return e.handleCodexNotification(n,t,o),!0}catch(i){return r("codex.notification_session_dispatch_failed",{method:n,message:i instanceof Error?i.message:String(i)}),!1}}function Uqe(e,n=!0){let t=new Map,r=n,o=0,i=()=>[...t.values()].reduce((c,l)=>c+1+l.parentFrames.length+l.childFrames.length,0),s=(c,l)=>{if(c!=="item/started"&&c!=="item/completed")return;let p=E(l.item),f=_0(l);if(p===void 0||y(p.type)!=="subAgentActivity"||y(p.kind)!=="started"||f===void 0)return;let g=y(p.id),m=y(p.agentThreadId)??y(p.agent_thread_id);return{key:`${f}:${g??m??"missing-item-id"}`,sequence:0,activityPending:!0,method:c,params:l,parentThreadId:f,childThreadId:m,itemId:g,captureAuthority:"pre_disable_accepted",parentFrames:[],childFrames:[]}},a=(c,l)=>{let p=c.filter(f=>f.ownsCodexThreadId(l));switch(p.length){case 0:return;case 1:return p[0];default:{let f=p.filter(g=>g.currentCodexThreadId?.()===l);switch(f.length){case 1:return f[0];case 0:throw new Error(`multiple inherited channel sessions own Codex thread ${l}`);default:throw new Error(`multiple direct channel sessions own Codex thread ${l}`)}}}},d=(c,l)=>{let p=[...t.values()].filter(f=>f.key!==l&&f.activityPending&&f.childThreadId===c);if(p.length>1)throw new Error(`multiple deferred Codex subagent edges claim child ${c}`);return p[0]},u=c=>{let l=[...t.values()].flatMap(f=>[...f.activityPending&&d(f.parentThreadId,f.key)===void 0&&a(c,f.parentThreadId)!==void 0?[{kind:"activity",sequence:f.sequence,activity:f}]:[],...f.parentFrames.flatMap(g=>!f.activityPending&&a(c,f.parentThreadId)!==void 0?[{kind:"parent_frame",sequence:g.sequence,activity:f,frame:g}]:[]),...f.childFrames.flatMap(g=>!f.activityPending&&f.childThreadId!==void 0&&a(c,f.childThreadId)!==void 0?[{kind:"frame",sequence:g.sequence,activity:f,frame:g}]:[])]).sort((f,g)=>f.sequence-g.sequence)[0];if(l===void 0)return;let p=l.kind==="activity"||l.kind==="parent_frame"?a(c,l.activity.parentThreadId):l.activity.childThreadId===void 0?void 0:a(c,l.activity.childThreadId);if(p===void 0)throw new Error(`deferred Codex subagent owner disappeared for ${l.activity.parentThreadId}`);if(l.kind==="activity"){if(!Va(p,l.activity.method,l.activity.params,e,{captureAuthority:l.activity.captureAuthority}))return;if(l.activity.childThreadId!==void 0&&a(c,l.activity.childThreadId)===void 0)throw new Error(`deferred Codex subagent child was not registered: ${l.activity.childThreadId}`);l.activity.parentFrames.length===0&&l.activity.childFrames.length===0?t.delete(l.activity.key):t.set(l.activity.key,{...l.activity,activityPending:!1})}else if(l.kind==="parent_frame"){if(!p.ownsCodexThreadId(l.activity.parentThreadId))throw new Error(`deferred Codex subagent parent owner disappeared for ${l.activity.parentThreadId}`);if(!Va(p,l.frame.method,l.frame.params,e,{captureAuthority:l.activity.captureAuthority}))return;let g=l.activity.parentFrames.filter(({sequence:m})=>m!==l.frame.sequence);!l.activity.activityPending&&g.length===0&&l.activity.childFrames.length===0?t.delete(l.activity.key):t.set(l.activity.key,{...l.activity,parentFrames:g})}else{if(l.activity.childThreadId===void 0||!p.ownsCodexThreadId(l.activity.childThreadId))throw new Error(`deferred Codex subagent child owner disappeared for ${l.activity.childThreadId??l.activity.key}`);if(!Va(p,l.frame.method,l.frame.params,e,{captureAuthority:l.activity.captureAuthority}))return;let g=l.activity.childFrames.filter(({sequence:m})=>m!==l.frame.sequence);!l.activity.activityPending&&l.activity.parentFrames.length===0&&g.length===0?t.delete(l.activity.key):t.set(l.activity.key,{...l.activity,childFrames:g})}u(c)};return{dispatch:(c,l,p)=>{if(!r){u(c);let _=_0(p);if(_!==void 0&&y0.has(l)){let b=[...t.values()].filter(({activityPending:C,childThreadId:T})=>C&&T===_);if(b.length>1)throw new Error(`multiple deferred Codex subagent edges claim child ${_}`);let w=[...t.values()].filter(({activityPending:C,parentThreadId:T})=>C&&T===_).sort((C,T)=>C.sequence-T.sequence)[0],v=b[0],S=w??v;if(S!==void 0){if(i()>=1e3)throw new Error("deferred Codex subagent activity and frames exceeded 1000 entries");let C={sequence:o++,method:l,params:p};t.set(S.key,{...S,...w!==void 0?{parentFrames:[...S.parentFrames,C]}:{childFrames:[...S.childFrames,C]}}),e("codex.subagent_activity_parent_unresolved",{phase:w!==void 0?"post_disable_parent_terminal_deferred":"post_disable_child_terminal_deferred",parent_thread_id:S.parentThreadId,child_thread_id:S.childThreadId??null,item_id:S.itemId??null,method:l}),u(c);return}}for(let b of c)Va(b,l,p,e);return}u(c);let f=s(l,p);if(f===void 0){let _=_0(p),b=_===void 0?[]:[...t.values()].filter(({childThreadId:C,activityPending:T})=>T&&C===_);if(b.length>1)throw new Error(`multiple deferred Codex subagent edges claim child ${_}`);let w=b[0],v=_===void 0?void 0:[...t.values()].filter(({parentThreadId:C,activityPending:T})=>T&&C===_).sort((C,T)=>C.sequence-T.sequence)[0],S=v??w;if(S!==void 0){if(i()>=1e3)throw new Error("deferred Codex subagent activity and frames exceeded 1000 entries");let C={sequence:o++,method:l,params:p};t.set(S.key,{...S,...v!==void 0?{parentFrames:[...S.parentFrames,C]}:{childFrames:[...S.childFrames,C]}}),e("codex.subagent_activity_parent_unresolved",{phase:v!==void 0?"parent_frame_deferred":"child_frame_deferred",parent_thread_id:S.parentThreadId,child_thread_id:S.childThreadId??null,item_id:S.itemId??null,method:l});return}for(let C of c)Va(C,l,p,e);u(c);return}let g=d(f.parentThreadId,f.key);if(g!==void 0){if(i()>=1e3&&!t.has(f.key))throw new Error("deferred Codex subagent activity exceeded 1000 entries");let _=t.get(f.key);t.set(f.key,{...f,sequence:_?.sequence??o++,parentFrames:_?.parentFrames??[],childFrames:_?.childFrames??[]}),e("codex.subagent_activity_parent_unresolved",{phase:"nested_activity_deferred",parent_thread_id:f.parentThreadId,child_thread_id:f.childThreadId??null,item_id:f.itemId??null,blocked_by_parent_thread_id:g.parentThreadId,blocked_by_item_id:g.itemId??null,method:l});return}let m=a(c,f.parentThreadId);if(m===void 0){if(i()>=1e3&&!t.has(f.key))throw new Error("deferred Codex subagent activity exceeded 1000 entries");let _=t.get(f.key);t.set(f.key,{...f,sequence:_?.sequence??o++,parentFrames:_?.parentFrames??[],childFrames:_?.childFrames??[]}),e("codex.subagent_activity_parent_unresolved",{phase:"deferred",parent_thread_id:f.parentThreadId,child_thread_id:f.childThreadId??null,item_id:f.itemId??null,method:l});return}if(!Va(m,l,p,e))throw new Error(`Codex subagent activity owner dispatch failed for ${f.parentThreadId}`);u(c)},reconcile:c=>{u(c)},setEnabled:c=>{if(!c&&r&&t.size>0){let l=[...t.values()],p=new Map(l.map(_=>[_.key,_.childFrames.filter(({method:b})=>y0.has(b))])),f=new Map(l.map(_=>[_.key,_.parentFrames.filter(({method:b})=>y0.has(b))])),g=new Set,m=_=>{if(g.has(_.key))return;g.add(_.key);let b=d(_.parentThreadId,_.key);b!==void 0&&m(b)};for(let _ of l){let b=p.get(_.key)?.length??0,w=f.get(_.key)?.length??0;_.activityPending&&b===0&&w===0&&m(_),b>0&&m(_),w>0&&(d(_.parentThreadId,_.key)!==void 0||_.childFrames.length>0)&&m(_)}for(let _ of l){e("codex.subagent_activity_parent_unresolved",{phase:"feature_disabled",parent_thread_id:_.parentThreadId,child_thread_id:_.childThreadId??null,item_id:_.itemId??null,method:_.method,buffered_frame_count:_.parentFrames.length+_.childFrames.length});let b=p.get(_.key)??[];if(_.parentFrames.length===0&&b.length===0&&!g.has(_.key))t.delete(_.key);else{let w=g.has(_.key)?_.childFrames:b;t.set(_.key,{..._,activityPending:g.has(_.key),childFrames:w})}}}r=c},close:()=>{for(let c of t.values())e("codex.subagent_activity_parent_unresolved",{phase:"runner_close",parent_thread_id:c.parentThreadId,child_thread_id:c.childThreadId??null,item_id:c.itemId??null,method:c.method,buffered_frame_count:c.parentFrames.length+c.childFrames.length});t.clear()}}}async function Bqe(e){return e.closePromise!==void 0||(e.closePromise=(async()=>{let n=[];e.removeHandlers?.(),e.removeHandlers=void 0;for(let t of[...e.actions].reverse())try{await t()}catch(r){n.push(r instanceof Error?r:new Error(String(r)))}if(e.actions.splice(0),n[0]!==void 0)throw n[0]})()),e.closePromise}async function SZ(e){let n=new Map,t=[!1,!0];for(let r of t){let o=await e.request("thread/list",{limit:50,sortKey:"updated_at",sortDirection:"desc",archived:r,useStateDbOnly:!0,sourceKinds:["subAgentThreadSpawn"]});if("error"in o)throw new Error(`thread/list failed: ${o.error.message}`);let s=E(o.result)?.data;if(!Array.isArray(s))throw new Error("thread/list result.data must be an array");if(!s.every(ne))throw new Error("thread/list result.data entries must be objects");for(let a of s){let d=fQ(a),u=Kqe(a,r);n.has(d)||n.set(d,u)}}return Array.from(n.values()).sort(Vqe)}function Qs(e,n,t){let r=n.flatMap(i=>{let s=e[i];if(s==null)return[];if(typeof s!="string")throw new Error(`thread/list ${t} must be a string (${i})`);return[s]}),o=r[0];if(o!==void 0&&r.some(i=>i!==o))throw new Error(`thread/list ${t} aliases disagree`);return o}function uM(e,n,t){if(e!==void 0&&n!==void 0&&e!==n)throw new Error(`thread/list ${t} source and thread values disagree`);return e??n}function Jqe(e){let n=Qs(e,["parentThreadId","parent_thread_id"],"parent thread id"),t=Qs(e,["agentNickname","agent_nickname"],"agent nickname"),r=Qs(e,["agentRole","agent_role"],"agent role"),o={...n===void 0?{}:{parentThreadId:n},...t===void 0?{}:{agentNickname:t},...r===void 0?{}:{agentRole:r}},i=e.source;if(typeof i=="string"){if(i==="subAgentThreadSpawn"&&(n===void 0||n.trim()===""))throw new Error("thread/list subagent spawn requires a parent thread id");return{source:i,...o}}let s=E(i);if(s===void 0)throw new Error("thread/list thread source must be a string or object");let a=Qs(s,["custom"],"custom source");if(a!==void 0)return{source:a,...o};let d=Qs(s,["internal"],"internal source");if(d!==void 0)return{source:d,...o};let u=[s.subAgent,s.subagent].filter(b=>b!==void 0);if(u.length!==1)throw new Error("thread/list structured source requires exactly one subAgent/subagent value");let c=u[0];if(c==="review")return{source:"subAgentReview",...o};if(c==="compact")return{source:"subAgentCompact",...o};if(c==="memory_consolidation")return{source:"subAgentOther",...o};let l=E(c);if(l===void 0)throw new Error("thread/list subagent source has an unknown shape");let p=[E(l.thread_spawn),E(l.threadSpawn)].filter(b=>b!==void 0),f=p[0];if(f===void 0){if(Qs(l,["other"],"subagent other source")!==void 0)return{source:"subAgentOther",...o};throw new Error("thread/list subagent source has an unknown shape")}if(p.length!==1)throw new Error("thread/list subagent source has conflicting spawn variants");let g=uM(Qs(f,["parent_thread_id","parentThreadId"],"subagent parent thread id"),n,"parent thread id");if(g===void 0||g.trim()==="")throw new Error("thread/list subagent spawn requires a parent thread id");let m=uM(Qs(f,["agent_nickname","agentNickname"],"subagent nickname"),t,"agent nickname"),_=uM(Qs(f,["agent_role","agentRole"],"subagent role"),r,"agent role");return{source:"subAgentThreadSpawn",parentThreadId:g,...m===void 0?{}:{agentNickname:m},..._===void 0?{}:{agentRole:_}}}function Kqe(e,n){let t=fQ(e),r=E(e.gitInfo),o=y(e.preview)??"",i=y(e.name)??"",s=y(e.title)??(i===""?o:i),a=y(e.description)??y(e.summary)??o;return{id:t,title:s??"",description:a??"",preview:o.replace(/\s+/g," ").trim(),cwd:y(e.cwd)??"",...Jqe(e),createdAt:kZ(e.createdAt),updatedAt:kZ(e.updatedAt),archived:n,modelProvider:y(e.modelProvider)??"",cliVersion:y(e.cliVersion)??"",gitBranch:y(r?.branch)??"",gitOriginUrl:y(r?.originUrl)??"",path:y(e.path)??""}}function fQ(e){let n=e.id;if(typeof n!="string"||n.trim()==="")throw new Error("thread/list thread id must be a non-empty string");return n}function kZ(e){return typeof e=="number"&&Number.isFinite(e)?new Date(e*1e3).toISOString():y(e)??""}function Vqe(e,n){let t=E(e),r=E(n),o=Date.parse(y(t?.createdAt)??y(t?.updatedAt)??""),i=Date.parse(y(r?.createdAt)??y(r?.updatedAt)??"");return CZ(o)-CZ(i)}function CZ(e){return Number.isFinite(e)?e:Number.MAX_SAFE_INTEGER}function Wqe(e){if("error"in e)throw new Error(`thread/start failed: ${e.error.message}`);return y(E(E(e.result)?.thread)?.id)}function Ro(e){let n=e?.trim();return n===void 0||n===""?void 0:n}function IM(e){let n=Ro(e.projectSharedInstructions),t=Ro(e.projectPersonalInstructions),r=Ro(e.projectMemory);return{projectBound:e.projectId!==void 0||e.projectPublicId!==void 0||n!==void 0||t!==void 0||r!==void 0,projectSharedInstructions:n,projectPersonalInstructions:t,projectMemory:r}}function Hqe(e){return($e(e)??[]).flatMap(t=>{let r=E(t),o=y(r?.runnerId);return o===void 0?[]:[{runnerId:o,version:y(r?.version)??null}]})}function TZ(e){if(e===void 0)return{type:"missing"};let n=E(e);if(n===void 0)return{type:"invalid",reason:"runner_config_not_object"};let t=$e(n.allowedCwds);if(t===void 0)return{type:"invalid",reason:"allowed_cwds_not_array"};let r=[];for(let[s,a]of t.entries()){let d=y(a);if(d===void 0)return{type:"invalid",reason:`allowed_cwd_${s}_not_string`};r.push(d)}let o=n.configVersion,i=o==null?null:Y(o);return i===void 0?{type:"invalid",reason:"config_version_not_integer"}:{type:"ok",config:{allowedCwds:r,configVersion:i}}}function Hh(e){let n=E(e),t=E(n?.runner_config);if(t===void 0||!Object.prototype.hasOwnProperty.call(t,"multiAgentJobsEnabled"))return!1;let r=t.multiAgentJobsEnabled;if(typeof r!="boolean")throw new Error("runner_config.multiAgentJobsEnabled must be a boolean when present");return r}function cM(e){let n=E(e),t=E(n?.runner_config);if(t===void 0||!Object.prototype.hasOwnProperty.call(t,"documentSurfacesEnabled"))return!1;let r=t.documentSurfacesEnabled;if(typeof r!="boolean")throw new Error("runner_config.documentSurfacesEnabled must be a boolean when present");return r}function PZ(e){let n=e.linzumiAgentMcpToken??e.codingJobMcpToken;return n===void 0?!1:Rf(n)}function Gqe(e){let n=E(e);if(E(n?.runner_config)?.rosterEnabled!==!0)return;let r=E(n?.roster),o=r===void 0?void 0:$e(r.threads);if(o===void 0)return;let i=[],s=0;for(let a of o){let d=E(a),u=y(d?.kandan_thread_id);if(u===void 0){s+=1;continue}let c=y(d?.last_activity_at),l=c===void 0?Number.NaN:Date.parse(c),p=d?.channel_id,f=Y(p),g=y(p)??(f===void 0?null:String(f));i.push({kandanThreadId:u,providerSessionKey:y(d?.provider_session_key)??null,channelId:g,title:y(d?.title)??null,channelSlug:y(d?.channel_slug)??null,cwd:y(d?.cwd)??null,lastActivityAtMs:Number.isNaN(l)?null:l})}return{threads:i,truncated:r?.truncated===!0,skippedEntries:s}}function Zqe(e){return e.appliedModel!==void 0||e.appliedApprovalPolicy!==void 0||e.appliedReasoningEffort!==void 0||e.controlSandbox!==void 0}function Qqe(e){if(e.debugTrace===void 0)return;let n=new Date().toISOString();return ML({dir:e.debugTrace.dir,contentMode:e.debugTrace.contentMode,runId:[n,"pid",String(process.pid),"runner",e.runnerId].join("-"),manifest:{pid:process.pid,argv:OL(process.argv),runnerId:e.runnerId,cwd:e.cwd,kandanUrl:e.kandanUrl,workspaceSlug:e.workspaceSlug??null,threadProcess:e.threadProcess??null,fast:e.fast===!0,startedAt:n}})}function RM(e){let n=e.launchTui&&e.consoleReporter===void 0?void 0:(r,o)=>{e.launchTui||aA(r,o),e.consoleReporter?.(r,o)},t=e.logFile??y_();return t8(t),mb("runner_process"),pF(t,n)}function n6e(e,n,t,r){let o=iG({steps:{stopAccepting:()=>{n.stopAccepting()},interruptInFlightTurns:()=>n.interruptInFlightTurns().catch(s=>{t("runner.drain_interrupt_states_failed",{message:s instanceof Error?s.message:String(s)})}),checkpointCurrentTurn:()=>{},flushInboundQueues:()=>{n.flushInboundQueues()},flushOutbox:()=>e().catch(()=>{})},deadlineMs:Xqe,log:(s,a)=>t(s,a),exit:(s,a)=>{let d=Y5(a),u={log:(c,l)=>t(c,l)};Gv({trigger:d},u),XA({signal:a,stop:r?.supervisorStop,finishExit:()=>n8(s,{trigger:d,stdinWasTty:process.stdin.isTTY===!0,stdoutWasTty:process.stdout.isTTY===!0},{sinks:u})})},signals:r?.signals??["SIGTERM","SIGINT","SIGHUP"]}),i=()=>{e().catch(()=>{})};return process.once("exit",i),{uninstall:()=>{o.uninstall(),process.off("exit",i)},triggerFastExitDrain:s=>o.trigger(s)}}async function t6e(e,n,t){try{return e()}catch(r){if(!NE(r))throw r;t("runner.lock_held_by_live_process",{runnerId:n.runnerId,heldByRunnerId:r.heldBy.runnerId,heldByPid:r.heldBy.pid,lockPath:r.lockPath});let o=n.lockTakeover,i=RZ(r.lockPath,o?.takeover,t),s=_u(r.heldBy,i.isPidAlive,()=>new Date(i.now()));if(MV(r.heldBy,Xt,n.launchSource,s)){t("runner.lock_auto_takeover_for_update",{runnerId:n.runnerId,heldByRunnerId:r.heldBy.runnerId,heldByPid:r.heldBy.pid,lockPath:r.lockPath,fromVersion:r.heldBy.cliVersion,toVersion:Xt,launchSource:Uv,holderState:s.state});let c=o?.prompt??IZ(o);return await HE({holder:r.heldBy,lockPath:r.lockPath,baseMessage:r.message,takeOverWithoutPrompt:!0,prompt:c,takeover:i}),e()}if(!XV(o))throw r;let a=o.prompt??IZ(o),d=RZ(r.lockPath,o.takeover,t);if((await HE({holder:r.heldBy,lockPath:r.lockPath,baseMessage:r.message,takeOverWithoutPrompt:o.takeOverWithoutPrompt===!0,prompt:a,takeover:d})).outcome==="declined")throw new Dh;return t("runner.lock_takeover_interactive",{runnerId:n.runnerId,heldByRunnerId:r.heldBy.runnerId,heldByPid:r.heldBy.pid,lockPath:r.lockPath}),e()}}function IZ(e){return{isInteractive:()=>e?.forceNonInteractive!==!0&&Mh()&&process.stdin.isTTY===!0&&process.stderr.isTTY===!0,writeReport:n=>{process.stderr.write(`${n}
1626
- `)},promptYesNo:n=>r6e(n)}}function r6e(e){return new Promise(n=>{let t=M$e({input:process.stdin,output:process.stderr});t.question(e,r=>{t.close(),n(/^y(es)?$/i.test(r.trim()))})})}function RZ(e,n,t){return{isPidAlive:n?.isPidAlive??o6e,signalPid:n?.signalPid??((r,o)=>{process.kill(r,o)}),lockReleased:n?.lockReleased??(()=>!cp(e)),currentLockOwner:n?.currentLockOwner??(()=>gu(e)),sleep:n?.sleep??GV,now:n?.now??(()=>Date.now()),log:n?.log??((r,o)=>{t(r,o),ye(r,o)})}}function o6e(e){try{return process.kill(e,0),!0}catch(n){return(n!==null&&typeof n=="object"&&"code"in n?n.code:void 0)!=="ESRCH"}}function i6e(e,n,t,r,o,i){let s=d6e(n,r,o,i);ye("process.spawn",{command:e,args:s,cwd:t,purpose:"codex.tui"});let a=C0(e,s,{cwd:t,env:process.env,stdio:"inherit"});return ye("process.spawned",{command:e,args:s,cwd:t,pid:a.pid,purpose:"codex.tui"}),a.once("exit",(d,u)=>{ye("process.exit",{command:e,args:s,cwd:t,pid:a.pid,code:d,signal:u,purpose:"codex.tui"})}),a}async function s6e(e){await Promise.all(Array.from(e,n=>n.handleKandanReconnect()))}function a6e(e,n){if(!Array.isArray(e))return;let t=e.find(r=>ne(r)&&typeof r.name=="string"&&r.name.toLowerCase()===n.toLowerCase()&&typeof r.value=="string");return ne(t)&&typeof t.value=="string"?t.value:void 0}function d6e(e,n,t,r){let o=c6e(t,r);return n===void 0?["--remote",e,...o]:["resume","--remote",e,...o,n]}function u6e(e,n){let t=new Set(n);return e!==void 0&&t.add(e),Array.from(t).sort((r,o)=>r-o)}function CM(e){let n=new URL(e);if(n.port==="")return;let t=Number.parseInt(n.port,10);if(!Number.isInteger(t)||t<=0||t>65535)throw new Error(`invalid Kandan URL port: ${e}`);return t}function c6e(e,n){let t=e?.model===void 0?[]:["--model",e.model],r=e?.reasoningEffort===void 0?[]:["-c",`model_reasoning_effort="${e.reasoningEffort}"`],o=n===!0?["-c",'service_tier="fast"']:[];return[...t,...r,...o]}async function l6e(e,n){let t=await e.request("thread/resume",{threadId:n});if(!("error"in t))return;if(!t.error.message.includes("no rollout found"))throw new Error(`failed to prepare Codex TUI resume: ${t.error.message}`);let r=await e.request("thread/inject_items",{threadId:n,items:[{type:"agentMessage",text:""}]});if("error"in r)throw new Error(`failed to prepare Codex TUI resume: ${r.error.message}`);let o=await e.request("thread/resume",{threadId:n});if("error"in o)throw new Error(`failed to verify Codex TUI resume: ${o.error.message}`)}async function p6e(e,n,t,r){if(t.workspace===void 0||t.channel===void 0||t.threadId===void 0)return[];try{let o=await e.push(n,"session:thread_context",{workspace:t.workspace,channel:t.channel,thread_id:t.threadId});if(ne(o)&&o.status==="ok"&&ne(o.response))return ux(o.response.messages);r("kandan.reconnect_thread_context_fetch_failed",{thread_id:t.threadId,reply:JSON.stringify(o).slice(0,300)})}catch(o){r("kandan.reconnect_thread_context_fetch_failed",{thread_id:t.threadId,message:o instanceof Error?o.message:String(o)})}return[]}async function m6e(e,n,t,r){if(!(t.workspace===void 0||t.channel===void 0||t.threadId===void 0))try{let o=[],i,s,a,d=0;for(let u=0;u<f6e;u+=1){let c=await e.push(n,"session:thread_transcript",{workspace:t.workspace,channel:t.channel,thread_id:t.threadId,...a===void 0?{}:{cursor:a}});if(!ne(c)||c.status!=="ok"||!ne(c.response))return r("kandan.reconnect_thread_transcript_fetch_failed",{thread_id:t.threadId,page:u,reply:JSON.stringify(c).slice(0,300)}),u===0?void 0:{nodes:o,budget:i,threadTitle:s};let l=xK(c.response);if(l===void 0)return u===0?void 0:{nodes:o,budget:i,threadTitle:s};i=i??l.budget,s=s??l.threadTitle,o=[...l.nodes,...o],d+=l.nodes.reduce((g,m)=>m.kind==="reasoning"?g:g+m.body.length,0);let p=i?.maxEmissionTokens,f=p!==void 0&&d/4>=p;if(!l.hasMore||l.cursor===void 0||f)break;a=l.cursor}return{nodes:o,budget:i,threadTitle:s}}catch(o){r("kandan.reconnect_thread_transcript_fetch_failed",{thread_id:t.threadId,message:o instanceof Error?o.message:String(o)})}}async function EZ(e,n,t,r,o,i){i("kandan.reconnect_thread_unarchive_started",{codex_thread_id:n,discovered_by:r,message:o});try{let s=await Si("thread/unarchive",e.request("thread/unarchive",{threadId:n}));if("error"in s)throw new Error(`thread/unarchive failed: ${s.error.message}`);let a=await Si("thread/resume",e.request("thread/resume",t));if("error"in a)throw new Error(`thread/resume after unarchive failed: ${a.error.message}`);return i("kandan.reconnect_thread_unarchive_resumed",{codex_thread_id:n,discovered_by:r}),{mode:"resumed"}}catch(s){let a=s instanceof Error?s.message:String(s);throw i("kandan.reconnect_thread_unarchive_failed",{codex_thread_id:n,discovered_by:r,archive_error:o,message:a}),new Error(r==="forced_inject_not_found"?`thread/inject_items failed: ${o}; archive recovery failed: ${a}`:a)}}async function y6e(e,n,t,r){let o={threadId:n,...t},i;if(r.forceRehydrate===!0)i="the server marked the durable engine session dead after an acknowledged-but-unexecuted turn";else{let a=await Si("thread/resume",e.request("thread/resume",o));if(!("error"in a))return{mode:"resumed"};if(h6e(a.error.message))return await EZ(e,n,o,"resume_archived",a.error.message,r.log);i=a.error.message}r.log(r.forceRehydrate===!0?"kandan.reconnect_thread_rehydrate_forced":"kandan.reconnect_thread_resume_failed",{codex_thread_id:n,message:i,forced:r.forceRehydrate===!0,rehydrating:!0});let s;try{let a;try{a=await r.buildRehydrationItems?.(i)}catch(c){r.log("kandan.reconnect_thread_rehydration_items_failed",{codex_thread_id:n,message:c instanceof Error?c.message:String(c)}),a=void 0}let d=a!==void 0&&a.length>0?[...a]:[{type:"agentMessage",text:await r.buildRehydrationText(i)}],u=await Si("thread/inject_items",e.request("thread/inject_items",{threadId:n,items:d}));if("error"in u){if(r.forceRehydrate===!0&&g6e(u.error.message))return await EZ(e,n,o,"forced_inject_not_found",u.error.message,r.log);s=`thread/inject_items failed: ${u.error.message}`}else{let c=await Si("thread/resume",e.request("thread/resume",o));"error"in c&&(s=`rehydrated thread/resume failed: ${c.error.message}`)}}catch(a){s=a instanceof Error?a.message:String(a)}if(s!==void 0)throw r.log("kandan.reconnect_thread_rehydration_failed",{codex_thread_id:n,resume_failure:i,rehydration_failure:s}),new Error(`could not resume this thread's engine session (${i}) and rebuilding a fresh session from the thread transcript also failed (${s})`);return r.log("kandan.reconnect_thread_rehydrated",{codex_thread_id:n,resume_failure:i}),{mode:"rehydrated",resumeFailure:i}}async function _6e(e,n,t,r,o){let i="agent_provider_unavailable:codex";if(o("kandan.start_instance_codex_app_server_unavailable",{controlType:r.type,thread_id:ro(r)??null,instanceId:t}),r.type==="start_instance"||r.type==="reconnect_thread")try{await oo(e,n,r,"failed",i,{instanceId:t,failureClass:"engine_unavailable"})}catch(s){o("kandan.start_instance_unavailable_state_push_failed",{agent_provider:"codex",message:s instanceof Error?s.message:String(s)})}throw new Error(i)}async function lM(e,n,t,r,o,i,s,a,d,u,c,l,p,f,g,m,_,b,w,v,S,C,T,P,O,R,j,B){if(e===void 0)switch(m.type){case"remote_codex_exec":case"remote_codex_exec_cancel":return await pM(m,r,a.value,d,u,_);case"list_agent_slash_commands":case"resolve_claude_user_input_request":case"deny_claude_user_input_request":case"resolve_codex_user_input_request":case"deny_codex_user_input_request":break;case"compact_thread":case"review_thread":if(m.agentProvider!=="claude-code")return{instanceId:r,controlType:m.type,requestId:m.requestId.trim()||null,ok:!1,error:"agent_provider_unavailable:codex"};break;case"clone_repository":break;case"set_workspace_viewport":break;case"start_instance":case"reconnect_thread":{let D=ap(m);if(D.type==="ok"&&D.provider==="claude-code"||v!==void 0)break;return await _6e(n,t,r,m,_)}default:return{instanceId:r,controlType:m.type,requestId:"requestId"in m?y(m.requestId)??null:null,ok:!1,error:"agent_provider_unavailable:codex"}}let K=()=>{if(e===void 0)throw new Error("shared codex app-server connection is unavailable");return e};switch(m.type){case"set_workspace_viewport":return Tqe(o.kandanUrl,m.url),{instanceId:r,controlType:m.type,ok:!0,url:m.url};case"compact_thread":{let D=m.requestId.trim(),J=y(m.providerSessionKey)?.trim()??"",W=m.agentProvider??"codex";if(D==="")return{instanceId:r,controlType:m.type,requestId:null,ok:!1,error:"request_id_required"};if(W!=="codex")return{instanceId:r,controlType:m.type,requestId:D,ok:!1,error:`agent_compaction_unsupported:${W}`};if(J==="")return{instanceId:r,controlType:m.type,requestId:D,ok:!1,error:"provider_session_key_required"};let H=await K().request("thread/compact/start",{threadId:J});return"error"in H?{instanceId:r,controlType:m.type,requestId:D,ok:!1,error:`codex_compaction_failed:${H.error.message}`}:{instanceId:r,controlType:m.type,requestId:D,ok:!0,threadId:m.threadId,providerSessionKey:J}}case"start_instance":{let D=no(m.cwd,a.value),J=ap(m),W="starting_codex_session",H;switch(J.type){case"ok":break;case"unsupported":return{instanceId:r,controlType:m.type,ok:!1,error:`agent_provider_unsupported:${J.value}`}}let X=J.provider;if(!D.ok){_("kandan.start_instance_cwd_rejected",{thread_id:ro(m)??null,reason:D.reason,allowedCwdCount:a.value.length});try{await JZ(n,t,m,D.reason,a.value,{instanceId:r})}catch(we){_("kandan.start_instance_cwd_failed_state_push_failed",{reason:D.reason,message:we instanceof Error?we.message:String(we)})}return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:D.reason,allowedCwds:a.value}}let be=await s(X),Re=g0({agentProvider:X,modelProvider:y(m.modelProvider),model:y(m.model),modelTransportCatalogStatus:SM(m,_),llmProxyBinding:wM(m.llmProxy),hasNativeCodexAuth:be.hasNativeCodexAuth},Ma,be.agentProviders);if(Re.type==="blocked"){_("linzumi.start_instance_model_account_preflight_rejected",{agent_provider:X,model_provider:y(m.modelProvider)??null,model:y(m.model)??"default",reason:Re.code,discriminator:Re.reason});try{await oo(n,t,m,"failed",Re.message,{instanceId:r,failureClass:"provider_binding_rejected",modelAccountRejection:{identity:Re.identity,reason:Re.reason}})}catch(we){_("linzumi.start_instance_model_account_state_push_failed",{message:we instanceof Error?we.message:String(we)})}return{instanceId:r,controlType:m.type,ok:!1,error:Re.code}}let ie=Wa(m,"processing",`starting ${R6e(X)} session`,{instanceId:r});ie!==void 0&&n.push(t,"message_state",ie).catch(we=>{_("kandan.start_instance_processing_state_push_failed",{message:we instanceof Error?we.message:String(we)})});try{let we=await v?.(m,D.cwd);if(we!==void 0)return we;if(X==="codex"){let Oe=OZ(o,m);if(Oe!==void 0){try{await oo(n,t,m,"failed",Oe,{instanceId:r,failureClass:"provider_binding_rejected"})}catch(bn){_("kandan.start_instance_wafer_state_push_failed",{message:bn instanceof Error?bn.message:String(bn)})}return{instanceId:r,controlType:m.type,ok:!1,error:Oe}}}return X==="claude-code"?(W="starting_claude_code_session",(await jZ({kandan:n,topic:t,control:m,options:o,log:_,debugTrace:b,instanceId:r,cwd:D.cwd,matchedRoot:D.matchedRoot,activeClaudeCodeSessions:c,pendingClaudeCodeApprovals:l,pendingClaudeCodeUserQuestions:p,ensureClaudeCodeForwardPortSession:f,disposeClaudeCodeForwardPortSession:g,resumeSessionId:Ro(m.resumeSessionId),leaseEpochFor:C,onLiveSourceSeqAccepted:T,onUndeliveredFollowUpsAtClose:O,claudeThreadAccessStore:B,setStartupStage:bn=>{W=bn}})).controlResponse):(await yQ({codex:K(),kandan:n,topic:t,control:m,options:o,instanceId:r,cwd:D.cwd,matchedRoot:D.matchedRoot,onStartedThread:w,startAgentReplayCodex:S,setStartupStage:Oe=>{W=Oe},setStartedCodexThreadId:Oe=>{H=Oe}})).controlResponse}catch(we){let qe=AZ(W,we);_("kandan.start_instance_failed",{stage:W,message:we instanceof Error?we.message:String(we),thread_id:fn(m,"threadId")??null,source_seq:Y(m.sourceSeq)??Y(m.rootSeq)??null,codex_thread_id:H??null});try{X==="claude-code"?await BZ({kandan:n,topic:t,control:m,failureReason:qe,rawFailureText:we instanceof Error?we.message:String(we),failureClass:fM(W),codexThreadId:H,instanceId:r,log:_}):await oo(n,t,m,"failed",qe,{codexThreadId:H,instanceId:r,failureClass:fM(W)})}catch{}throw we}}case"reconnect_thread":{let D=no(m.cwd,a.value),J=ap(m),W=y(m.transportCeilingRecoveryRequestId),H="starting_codex_session";if(!D.ok){try{await JZ(n,t,m,D.reason,a.value,{instanceId:r})}catch(un){_("kandan.reconnect_thread_cwd_failed_state_push_failed",{reason:D.reason,message:un instanceof Error?un.message:String(un)})}return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:D.reason,allowedCwds:a.value}}switch(J.type){case"ok":break;case"unsupported":return{instanceId:r,controlType:m.type,ok:!1,error:`agent_provider_unsupported:${J.value}`}}let X=J.provider,be=await s(X),Re=g0({agentProvider:X,modelProvider:y(m.modelProvider),model:y(m.model),modelTransportCatalogStatus:SM(m,_),llmProxyBinding:wM(m.llmProxy),hasNativeCodexAuth:be.hasNativeCodexAuth},Ma,be.agentProviders);if(Re.type==="blocked"){_("linzumi.reconnect_thread_model_account_preflight_rejected",{agent_provider:X,model_provider:y(m.modelProvider)??null,model:y(m.model)??"default",reason:Re.code,discriminator:Re.reason});try{await oo(n,t,m,"failed",Re.message,{instanceId:r,failureClass:"provider_binding_rejected",modelAccountRejection:{identity:Re.identity,reason:Re.reason}})}catch(un){_("linzumi.reconnect_thread_model_account_state_push_failed",{message:un instanceof Error?un.message:String(un)})}return{instanceId:r,controlType:m.type,ok:!1,error:Re.code}}let ie=Ro(m.codexThreadId);if(ie===void 0)return{instanceId:r,controlType:m.type,ok:!1,error:"missing_codex_thread_id"};let we=Ro(m.workDescription),qe=await v?.(m,D.cwd);if(qe!==void 0)return qe;if(X==="codex"){let un=OZ(o,m);if(un!==void 0)return{instanceId:r,controlType:m.type,ok:!1,error:un}}if(X==="claude-code"){let un=c.get(ie);if(un!==void 0&&we!==void 0){let je=Y(m.rootSeq),Xe=Y(m.sourceSeq)??je,_e=ae=>{let pe=ae.disposition==="parked"?Wa(m,"queued",rl(ae.queuePosition),{instanceId:r,codexThreadId:ie}):Wa(m,"processing","queued Claude Code input",{instanceId:r,codexThreadId:ie});pe!==void 0&&n.push(t,"message_state",pe).catch(Te=>{_("kandan.reconnect_thread_queue_state_push_failed",{message:Te instanceof Error?Te.message:String(Te)})})},q=vi($e(m.attachments)??[]),F=await DC({cwd:D.cwd,kandanUrl:o.kandanUrl,token:o.token,fetch:o.fetch,attachmentDirectoryName:"local-claude-code-attachments"},{seq:Xe,body:we,attachments:q}).then(ae=>({ok:!0,content:ae})).catch(ae=>({ok:!1,error:ae}));if(!F.ok){let ae=F.error instanceof Error?F.error.message:String(F.error),pe=`Claude Code input attachment download failed: ${ae}`;try{await oo(n,t,m,"failed",pe,{instanceId:r,codexThreadId:ie,failureClass:"attachment_download_failed"})}catch(Te){_("kandan.reconnect_thread_queue_failed_state_push_failed",{message:Te instanceof Error?Te.message:String(Te)})}return{instanceId:r,controlType:m.type,agentProvider:"claude-code",ok:!1,error:"claude_code_attachment_download_failed",message:ae}}let z=fn(m,"threadId"),V=fn(m,"channel");if(Xe!==void 0&&z!==void 0&&V!==void 0&&P?.(V,z,{seq:Xe,type:"thread.message",actorKind:void 0,actorSlug:void 0,actorUserId:void 0,threadId:z,threadTitle:void 0,replyToSeq:Y(m.rootSeq),localRunnerEventType:void 0,body:we,attachments:q,traceparent:y(m.traceparent)}),V!==void 0&&z!==void 0&&R?.({channel:V,threadId:z,sourceSeq:Xe,transportCeilingRecoveryRequestId:W})===!0)return _("claude_code.message_duplicate_ignored",{linzumi_thread_id:z,claude_session_id:ie,body_preview:Pu(we),source_seq:Xe??null}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",cwd:D.cwd,matchedRoot:D.matchedRoot,codexThreadId:ie,queuedInput:!0,duplicate:!0};await dm({cwd:D.cwd,threadKey:un.threadId,turnRef:Xe===void 0?`followup-${Date.now()}`:`seq-${Xe}`,log:(ae,pe)=>_(ae,pe)});try{let ae=un.enqueueInput({content:F.content,sourceSeq:Xe});if(ae==="duplicate")return _("claude_code.message_duplicate_ignored",{linzumi_thread_id:fn(m,"threadId")??null,claude_session_id:ie,body_preview:Pu(we),source_seq:Xe??null}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",cwd:D.cwd,matchedRoot:D.matchedRoot,codexThreadId:ie,queuedInput:!0,duplicate:!0};_e(ae),_("claude_code.message_queued",{linzumi_thread_id:fn(m,"threadId")??null,claude_session_id:ie,body_preview:Pu(we),message_received_at_ms:Date.now(),source_seq:Xe??null}),b?.record("commander","claude.input_queued",{linzumiThreadId:fn(m,"threadId")??null,claudeSessionId:ie,sourceSeq:Xe??null,bodyPreview:Pu(we)})}catch(ae){let pe=ae instanceof Error?ae.message:String(ae),Te=`Claude Code input queue closed: ${pe}`;try{await oo(n,t,m,"failed",Te,{instanceId:r,codexThreadId:ie,failureClass:"claude_input_queue_closed"})}catch(Z){_("kandan.reconnect_thread_queue_closed_state_push_failed",{message:Z instanceof Error?Z.message:String(Z)})}return{instanceId:r,controlType:m.type,agentProvider:"claude-code",ok:!1,error:"claude_code_session_closed",message:pe}}if(Xe!==void 0){let ae=Xe,pe=un,Te="Claude Code session did not respond after resume - send your message again to start fresh",Z=j;Db({windowMs:Z?.windowMs??uh(process.env),isDelivered:()=>pe.inputDelivered(ae),isSessionClosed:()=>Pi(c,[ie],[pe.threadId])===void 0,lastSdkActivityMs:()=>pe.lastSdkActivityMs(),hasPendingBlockingRequest:()=>tg({threadId:pe.threadId,pendingApprovals:l,pendingQuestions:p}),log:_,onWedged:de=>{let ue=Z?.recordWedge(pe.threadId,ae)??Number.MAX_SAFE_INTEGER;_("claude_code.dispatch_liveness_wedged",{linzumi_thread_id:pe.threadId,claude_session_id:ie,source_seq:ae,waited_ms:de.waitedMs,cause:de.cause,attempt:Z===void 0?null:ue,dispatch:"queued_input"});let en=()=>{Z?.clear(pe.threadId,ae),oo(n,t,m,"failed",Te,{instanceId:r,codexThreadId:ie,failureClass:"claude_dispatch_wedged"}).catch(Ye=>{_("claude_code.dispatch_wedged_state_push_failed",{linzumi_thread_id:pe.threadId,source_seq:ae,message:Ye instanceof Error?Ye.message:String(Ye)})})};if(Z!==void 0&&ue===1){oo(n,t,m,"processing","restarting Claude Code session to recover this message",{instanceId:r,codexThreadId:ie}).catch(()=>{}),Z.killAndRespawn({threadId:pe.threadId,claudeSessionId:ie,reason:`claude_dispatch_liveness: no SDK output within ${de.waitedMs}ms of queued input (seq ${ae})`}).then(Ye=>{Ye==="no_replay_path"&&en()}).catch(Ye=>{_("claude_code.dispatch_supervisor_respawn_failed",{linzumi_thread_id:pe.threadId,source_seq:ae,message:Ye instanceof Error?Ye.message:String(Ye)}),en()});return}en()}})}return{instanceId:r,controlType:m.type,agentProvider:"claude-code",cwd:D.cwd,matchedRoot:D.matchedRoot,codexThreadId:ie,queuedInput:!0}}if(un!==void 0)return{instanceId:r,controlType:m.type,agentProvider:"claude-code",ok:!1,error:"claude_code_active_session_requires_work_description"};{let je=fn(m,"threadId"),Xe=fn(m,"channel"),_e=Y(m.sourceSeq)??Y(m.rootSeq);if(we!==void 0&&je!==void 0&&Xe!==void 0&&_e!==void 0&&R?.({channel:Xe,threadId:je,sourceSeq:_e,transportCeilingRecoveryRequestId:W})===!0)return _("claude_code.replayed_turn_already_applied_ignored",{linzumi_thread_id:je,claude_session_id:ie,body_preview:Pu(we),source_seq:_e,replayed:m.replayed===!0}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",cwd:D.cwd,matchedRoot:D.matchedRoot,codexThreadId:ie,queuedInput:!0,duplicate:!0}}try{let je=Wa(m,"processing","resuming Claude Code session",{instanceId:r,codexThreadId:ie});return je!==void 0&&n.push(t,"message_state",je).catch(_e=>{_("kandan.reconnect_thread_processing_state_push_failed",{message:_e instanceof Error?_e.message:String(_e)})}),H="starting_claude_code_session",(await jZ({kandan:n,topic:t,control:m,options:o,log:_,debugTrace:b,instanceId:r,cwd:D.cwd,matchedRoot:D.matchedRoot,resumeSessionId:ie,activeClaudeCodeSessions:c,pendingClaudeCodeApprovals:l,pendingClaudeCodeUserQuestions:p,ensureClaudeCodeForwardPortSession:f,disposeClaudeCodeForwardPortSession:g,leaseEpochFor:C,onLiveSourceSeqAccepted:T,onUndeliveredFollowUpsAtClose:O,claudeThreadAccessStore:B,setStartupStage:_e=>{H=_e}})).controlResponse}catch(je){let Xe=AZ(H,je);_("kandan.reconnect_thread_failed",{stage:H,message:je instanceof Error?je.message:String(je),thread_id:fn(m,"threadId")??null,source_seq:Y(m.sourceSeq)??Y(m.rootSeq)??null,agent_provider:X,provider_session_key:ie});try{await BZ({kandan:n,topic:t,control:m,failureReason:Xe,rawFailureText:je instanceof Error?je.message:String(je),failureClass:fM(H),codexThreadId:ie,instanceId:r,log:_})}catch{}throw je}}o.codexUrl===void 0&&zb(D.cwd,{configHome:Oa()});let Oe=mp(o,m),bn=w===void 0?void 0:await Si("thread/attach",w(m,D.cwd,ie));if(we!==void 0){let un=Y(m.rootSeq),je=Y(m.sourceSeq)??un;if(bn===void 0||je===void 0)throw new Error("cannot reconnect a Kandan thread without a session");let Xe=fn(m,"channel"),_e=fn(m,"threadId");if(Xe!==void 0&&_e!==void 0&&R?.({channel:Xe,threadId:_e,sourceSeq:je,transportCeilingRecoveryRequestId:W})===!0)return _("kandan.reconnect_thread_seq_already_applied",{linzumi_thread_id:_e,codex_thread_id:ie,source_seq:je}),{instanceId:r,controlType:m.type,cwd:D.cwd,matchedRoot:D.matchedRoot,codexThreadId:ie,duplicate:!0};let q=fn(m,"workspace"),F=await y6e(K(),ie,qf({cwd:D.cwd,fast:Oe.fast,channelSession:{model:Oe.model,reasoningEffort:Oe.reasoningEffort,approvalPolicy:Oe.approvalPolicy,sandbox:Oe.sandbox,sandboxedApprovalNeverDefault:Oe.sandboxedApprovalNeverDefault}}),{forceRehydrate:m.sessionRehydrate===!0,log:_,buildRehydrationItems:async ae=>{let pe=await m6e(n,t,{workspace:q,channel:Xe,threadId:_e},_);if(pe===void 0||pe.nodes.length===0)return;let Te=bK({nodes:pe.nodes,budget:pe.budget,resumeFailure:ae,threadTitle:pe.threadTitle,linzumiContext:wa(m.linzumiContext)});return _("kandan.reconnect_thread_rehydration_ir_emitted",{linzumi_thread_id:_e,codex_thread_id:ie,emitted_nodes:Te.emittedNodeCount,omitted_nodes:Te.omittedNodeCount,redacted_reasoning:Te.redactedReasoningCount,emitted_token_estimate:Te.emittedTokenEstimate,max_emission_tokens:Te.maxEmissionTokens}),Te.items},buildRehydrationText:async ae=>T4({messages:await p6e(n,t,{workspace:q,channel:Xe,threadId:_e},_),resumeFailure:ae,linzumiContext:wa(m.linzumiContext)})});if(F.mode==="rehydrated"){ye("runner.thread_resume_rehydrated",{purpose:"linzumi.thread_runner",threadId:_e??null,codexThreadId:ie,sourceSeq:je,resumeFailure:F.resumeFailure});try{await oo(n,t,m,"processing","rebuilt the coding session from durable thread history after an unresumable engine session",{codexThreadId:ie,instanceId:r})}catch(ae){_("kandan.reconnect_thread_rehydrated_state_push_failed",{message:ae instanceof Error?ae.message:String(ae)})}}let z=Uo(o.token),V=vi($e(m.attachments)??[]);await bn.startThreadMessageTurn({seq:je,body:we,actorSlug:z.actorUsername,actorUserId:z.actorUserId,attachments:V,boundStartTimeout:!0,transportCeilingRecoveryRequestId:W})}return{instanceId:r,controlType:m.type,cwd:D.cwd,matchedRoot:D.matchedRoot,codexThreadId:ie}}case"list_claude_code_sessions":{let D=no(m.cwd,a.value);if(!D.ok)return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:D.reason};if(!i.includes("claude-code"))return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:"agent_provider_unavailable:claude-code"};let J;try{J=await c9({cwd:D.cwd,limit:Y(m.limit),messagesPerSession:Y(m.messagesPerSession),provider:o.claudeCodeSessionHistoryProvider})}catch(W){return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:W instanceof Error?`claude_code_session_history_failed:${W.message}`:"claude_code_session_history_failed"}}return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!0,cwd:D.cwd,matchedRoot:D.matchedRoot,sessions:J}}case"list_agent_slash_commands":{let D=no(m.cwd,a.value);if(!D.ok)return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:D.reason};let J=y(m.agentProvider)??"claude-code";if(J!=="claude-code")return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:`agent_provider_unsupported:${J}`};if(!i.includes("claude-code"))return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:"agent_provider_unavailable:claude-code"};let W=y(m.providerSessionKey),H=W===void 0?void 0:c.get(W);if(H===void 0)return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:"no_active_claude_session"};try{return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!0,cwd:D.cwd,matchedRoot:D.matchedRoot,provider:"claude-code",providerSessionKey:W,commands:await H.slashCommands()}}catch(X){return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:X instanceof Error?`agent_slash_commands_failed:${X.message}`:"agent_slash_commands_failed"}}}case"browse_directory":return $Le(m,o);case"create_project":return FLe(m,o,a);case"clone_repository":return await JLe(m,o,a);case"suggest_tasks":return VLe(m,o,a.value,{kandan:n,topic:t});case"remote_codex_exec":return await pM(m,r,a.value,d,u,_);case"remote_codex_exec_cancel":return await pM(m,r,a.value,d,u,_);case"start_turn":{let D=await s("codex"),J=g0({agentProvider:"codex",modelProvider:void 0,model:void 0,llmProxyBinding:"absent",hasNativeCodexAuth:D.hasNativeCodexAuth},Ma,D.agentProviders);if(J.type==="blocked"){_("linzumi.start_turn_model_account_preflight_rejected",{thread_id:m.threadId,agent_provider:J.identity[0],model_provider:J.identity[1]??null,model:J.identity[2],reason:J.code,discriminator:J.reason});try{await n.push(t,"codex_error",{instanceId:r,message:J.message})}catch(H){throw _("linzumi.start_turn_model_account_error_push_failed",{thread_id:m.threadId,message:H instanceof Error?H.message:String(H)}),H}return{instanceId:r,controlType:m.type,ok:!1,error:J.code}}let W=await K().request("turn/start",{threadId:m.threadId,input:m.input});return{instanceId:r,controlType:m.type,response:W}}case"steer_turn":{let D=Pi(c,[m.providerSessionKey,m.threadId],[m.threadId]);if(D!==void 0){let X=z6e(m.input);if(X===void 0)return{instanceId:r,controlType:m.type,agentProvider:"claude-code",ok:!1,error:"claude_code_steer_requires_text_input"};let be;try{be=D.steerTurn(X)}catch(Oe){let bn=Oe instanceof Error?Oe.message:String(Oe);return _("claude_code.steer_failed",{thread_id:m.threadId,message:bn}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",ok:!1,error:"claude_code_steer_failed",message:bn,threadId:m.threadId}}if(!await P6e(be.applied))return _("claude_code.steer_not_applied",{thread_id:m.threadId,steered:be.steered}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",ok:!1,error:"claude_code_steer_not_applied",message:"The turn finished before the steering message could be applied. Linzumi will retry it as its own message automatically; if nothing happens shortly, send it as a new message.",threadId:m.threadId};let ie=Y(m.sourceSeq),we=y(m.workspace),qe=y(m.channel);return ie!==void 0&&we!==void 0&&qe!==void 0&&n.push(t,"message_state",{workspace:we,channel:qe,thread_id:m.threadId,instance_id:r,seq:ie,status:"processed",reason:xm,agent_provider:"claude-code"}).catch(Oe=>{_("claude_code.steer_terminal_state_push_failed",{thread_id:m.threadId,seq:ie,message:Oe instanceof Error?Oe.message:String(Oe)})}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",steered:be.steered,threadId:m.threadId}}let J=m.providerSessionKey??m.threadId,W=y(m.turnId);if(W===void 0)return{instanceId:r,controlType:m.type,agentProvider:"codex",threadId:m.threadId,ok:!1,error:"codex_steer_target_turn_unknown",message:"No live session tracks this thread, so the running turn cannot be steered from here. Linzumi will run the message as its own turn instead."};let H=await K().request("turn/steer",{threadId:J,expectedTurnId:W,input:um(m.input)});return{instanceId:r,controlType:m.type,response:H}}case"interrupt_turn":{let D=Pi(c,[m.threadId]);if(D!==void 0){let W=await D.interruptTurn("Interrupted by Linzumi");return{instanceId:r,controlType:m.type,agentProvider:"claude-code",interrupted:W,threadId:m.threadId}}let J=await K().request("turn/interrupt",{threadId:m.threadId,turnId:m.turnId??null});return{instanceId:r,controlType:m.type,response:J}}case"rewind_thread":return c.get(m.threadId)!==void 0||m.agentProvider==="claude-code"?{instanceId:r,controlType:m.type,agentProvider:"claude-code",requestId:y(m.requestId)??null,threadId:m.threadId,ok:!1,error:"claude_code_rewind_unsupported",message:"Claude Code does not support rewind yet"}:{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,threadId:m.threadId,ok:!1,error:"rewind_not_supported",message:"This runner does not support rewinding threads yet"};case"interrupt_queued_messages":{let D=y(m.agentProvider)?.trim();if(D!=="claude-code"){let H=await K().request("turn/interrupt",{threadId:m.threadId,turnId:null});return{instanceId:r,controlType:m.type,response:H}}let J=Pi(c,[m.threadId]);if(J===void 0)return{instanceId:r,controlType:m.type,agentProvider:D,ok:!1,error:"claude_code_session_not_active"};await J.interruptTurn("Claude Code interrupted by Linzumi"),J.abortController.abort(new Error("Claude Code interrupted by Linzumi"));let W=Y(m.throughSeq)??J.currentSourceSeq();if(W!==void 0)try{await Io(n,t,{workspace:J.workspace,channel:J.channel,threadId:J.threadId,sourceSeq:W,status:"failed",reason:"Claude Code interrupted by Linzumi",sessionId:m.threadId})}catch(H){_("kandan.claude_code_interrupt_state_push_failed",{message:H instanceof Error?H.message:String(H),thread_id:J.threadId,source_seq:W,claude_session_id:m.threadId})}return{instanceId:r,controlType:m.type,agentProvider:D,interrupted:!0,threadId:m.threadId}}case"stop_turn":{let D=Pi(c,[m.threadId,m.providerSessionKey],[m.threadId]);if(D!==void 0){let W=await k6e({activeSession:D,sessionKey:m.providerSessionKey??m.threadId,publishMessageState:H=>Io(n,t,H),log:_});return _("claude_code.turn_stopped",{thread_id:D.threadId,claude_session_id:m.providerSessionKey??m.threadId,discarded_queued_source_seqs:W}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",threadId:m.threadId,ok:!0,stopped:!0,confirmedHalt:!0}}let J=y(m.agentProvider)?.trim();if(J!=="claude-code")try{let W=await K().request("turn/interrupt",{threadId:m.providerSessionKey??m.threadId,turnId:m.turnId??null});return{instanceId:r,controlType:m.type,agentProvider:"codex",threadId:m.threadId,ok:!0,stopped:!0,confirmedHalt:!0,response:W}}catch(W){_("codex.stop_turn_no_session_interrupt_failed",{thread_id:m.threadId,message:W instanceof Error?W.message:String(W)})}return{instanceId:r,controlType:m.type,agentProvider:J??null,threadId:m.threadId,ok:!1,error:"stop_turn_session_not_active"}}case"resolve_codex_approval_request":{let D=l.get(m.requestId);if(D===void 0){if(m.agentProvider==="claude-code")return{instanceId:r,controlType:m.type,skipped:!0};let be=await K().request("resolve_codex_approval_request",{...m});return{instanceId:r,controlType:m.type,response:be}}if(m.agentProvider!==void 0&&m.agentProvider!=="claude-code")return{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_approval_provider_mismatch"};if(D.sessionId!==void 0&&m.threadId!==D.sessionId)return{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_approval_session_mismatch"};let J=D.decisions.get(m.decision);if(J===void 0)return _("runner.claude_code_approval_unknown_decision",{instanceId:r,requestId:m.requestId,decision:m.decision,threadId:D.threadId,claudeSessionId:D.sessionId}),{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_approval_unknown_decision",decision:m.decision};let W=Pi(c,[D.sessionId],[D.threadId]);if(W===void 0)return _("runner.claude_code_approval_session_not_active",{instanceId:r,requestId:m.requestId,threadId:D.threadId,claudeSessionId:D.sessionId}),{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_approval_session_not_active"};let H=J.type==="allow"?"processing":"failed";return await mQ({pending:D,decision:J,incomingStatus:H,publishMessageState:()=>Io(n,t,{workspace:D.workspace,channel:D.channel,threadId:D.threadId,sourceSeq:D.sourceSeq,status:H,reason:J.type==="allow"?"Claude Code tool approved":"Claude Code tool denied by Linzumi",sessionId:D.sessionId}),captureMessageStateAttemptGeneration:W.captureMessageStateAttemptGeneration,adoptMessageStateConsensusForAttempt:W.adoptMessageStateConsensusForAttempt,stopSession:be=>{W.interruptTurnBeforeAbort(be),W.abortController.abort(new Error(be))},log:_,reason:"human_decision"})==="stopped"?{instanceId:r,controlType:m.type,agentProvider:"claude-code",requestId:m.requestId,decision:m.decision,resolved:!1,error:"claude_code_approval_terminal_consensus"}:($Z({threadId:D.threadId,decision:J,log:_}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",requestId:m.requestId,decision:m.decision,resolved:!0})}case"resolve_codex_user_input_request":case"deny_codex_user_input_request":return{instanceId:r,controlType:m.type,agentProvider:"codex",threadId:m.threadId,requestId:m.requestId,ok:!1,error:"codex_user_input_request_not_found"};case"resolve_claude_user_input_request":{let D=p.get(m.requestId);if(D===void 0)return{instanceId:r,controlType:m.type,agentProvider:"claude-code",threadId:m.threadId,requestId:m.requestId,ok:!1,error:"claude_code_user_input_continuation_not_found"};if(m.agentProvider!==void 0&&m.agentProvider!=="claude-code")return{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_user_input_provider_mismatch"};if(m.threadId!==D.threadId)return{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_user_input_thread_mismatch"};if(D.sessionId!==void 0&&m.sessionId!==void 0&&m.sessionId!==D.sessionId)return{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_user_input_session_mismatch"};let J=m.answers.map(H=>({questionId:H.questionId,selectedLabels:H.selectedLabels??[],freeText:y(H.freeText)})),W=$6e({pending:D,answers:J,actorUserId:m.actorUserId,actorSlug:m.actorSlug,answeredAt:new Date().toISOString()});switch(W.type){case"error":{_("runner.claude_code_user_input_resolution_failed",{instanceId:r,requestId:m.requestId,error:W.error,selectedLabels:[...W.selectedLabels],threadId:D.threadId,claudeSessionId:D.sessionId,kind:D.kind}),D.resolve({type:"deny",message:W.error});try{await dp(n,t,{workspace:D.workspace,channel:D.channel,threadId:D.threadId,sourceSeq:D.sourceSeq,sessionId:D.sessionId,leaseEpoch:D.leaseEpoch,request:D.request,answerState:{kind:"Denied",reason:W.error,answers:J.map(H=>({questionId:H.questionId,selectedLabels:[...H.selectedLabels],freeText:H.freeText})),actorUserId:m.actorUserId,actorSlug:m.actorSlug,answeredAt:new Date().toISOString()},streamState:"completed"})}catch(H){throw _("kandan.claude_code_user_question_completed_publish_failed",{requestId:m.requestId,message:H instanceof Error?H.message:String(H)}),H}return{instanceId:r,controlType:m.type,agentProvider:"claude-code",threadId:D.threadId,requestId:m.requestId,ok:!1,error:W.error,selectedLabels:[...W.selectedLabels],requestKind:D.kind,denied:!0}}case"resolved":D.resolve(W.decision),D.kind==="tool_approval"&&$Z({threadId:D.threadId,decision:W.decision,log:_});break}{let H=Pi(c,[D.sessionId,y(m.sessionId)],[D.threadId]);if(H!==void 0){let X=D.threadId,be=D.sourceSeq,Re=D.sessionId;Db({windowMs:j?.windowMs??uh(process.env),isDelivered:()=>D.resolved(),isSessionClosed:()=>Pi(c,[Re],[X])===void 0,lastSdkActivityMs:()=>H.lastSdkActivityMs(),hasPendingBlockingRequest:()=>tg({threadId:X,pendingApprovals:l,pendingQuestions:p}),log:_,onWedged:ie=>{let we="Claude Code did not continue after your answer - the runner restarted the session; send your message again to continue";_("claude_code.dispatch_liveness_wedged",{linzumi_thread_id:X,claude_session_id:Re??null,source_seq:be,waited_ms:ie.waitedMs,cause:ie.cause,dispatch:W.dispatch}),H.abortController.abort(new Error(we)),(async()=>{let qe=H.sessionWork();qe!==void 0&&await Promise.race([qe.catch(()=>{}),new Promise(Oe=>{setTimeout(Oe,1e4).unref?.()})]),await Io(n,t,{workspace:D.workspace,channel:D.channel,threadId:X,sourceSeq:be,status:"failed",reason:we,sessionId:Re,failureClass:"claude_dispatch_wedged"})})().catch(qe=>{_("claude_code.dispatch_wedged_state_push_failed",{linzumi_thread_id:X,source_seq:be,message:qe instanceof Error?qe.message:String(qe)})})}})}}try{await dp(n,t,{workspace:D.workspace,channel:D.channel,threadId:D.threadId,sourceSeq:D.sourceSeq,sessionId:D.sessionId,leaseEpoch:D.leaseEpoch,request:D.request,answerState:W.answerState,streamState:"completed"})}catch(H){throw _("kandan.claude_code_user_question_completed_publish_failed",{requestId:m.requestId,message:H instanceof Error?H.message:String(H)}),H}return{instanceId:r,controlType:m.type,agentProvider:"claude-code",threadId:D.threadId,requestId:m.requestId,answers:J.map(H=>({questionId:H.questionId,selectedLabels:[...H.selectedLabels],...y(H.freeText)===void 0?{}:{freeText:y(H.freeText)}})),actorUserId:m.actorUserId,actorSlug:m.actorSlug,requestKind:D.kind,resolved:!0}}case"deny_claude_user_input_request":{let D=p.get(m.requestId);if(D===void 0)return{instanceId:r,controlType:m.type,agentProvider:"claude-code",threadId:m.threadId,requestId:m.requestId,ok:!1,error:"claude_code_user_input_continuation_not_found"};if(m.agentProvider!==void 0&&m.agentProvider!=="claude-code")return{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_user_input_provider_mismatch"};if(m.threadId!==D.threadId)return{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_user_input_thread_mismatch"};if(D.sessionId!==void 0&&m.sessionId!==void 0&&m.sessionId!==D.sessionId)return{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_user_input_session_mismatch"};D.resolve({type:"deny",message:m.reason??"Denied by Linzumi"});try{await dp(n,t,{workspace:D.workspace,channel:D.channel,threadId:D.threadId,sourceSeq:D.sourceSeq,sessionId:D.sessionId,leaseEpoch:D.leaseEpoch,request:D.request,answerState:{kind:"Denied",reason:m.reason??"Denied by Linzumi",actorUserId:m.actorUserId,actorSlug:m.actorSlug,answeredAt:new Date().toISOString()},streamState:"completed"})}catch(J){throw _("kandan.claude_code_user_question_completed_publish_failed",{requestId:m.requestId,message:J instanceof Error?J.message:String(J)}),J}return{instanceId:r,controlType:m.type,agentProvider:"claude-code",threadId:D.threadId,requestId:m.requestId,reason:m.reason??"Denied by Linzumi",actorUserId:m.actorUserId,actorSlug:m.actorSlug,denied:!0}}case"read_thread":{let D=await K().request("thread/read",{threadId:m.threadId,includeTurns:m.includeTurns??!0});return{instanceId:r,controlType:m.type,response:D}}case"update_session_settings":{let D=y(m.threadId),J=Pi(c,[D],[D]),W=y(m.approvalPolicy)??void 0,H=y(m.sandbox)??void 0;if(J===void 0)return{instanceId:r,controlType:m.type,skipped:!0};let X=await J.updateSettings({model:y(m.model)??void 0,approvalPolicy:W,reasoningEffort:y(m.reasoningEffort)??void 0}),be=y(X.model),Re=y(X.approval_policy),ie=y(X.reasoning_effort),we=y(m.sandbox);if(Zqe({appliedModel:be,appliedApprovalPolicy:Re,appliedReasoningEffort:ie,controlSandbox:we})){let qe={workspace:J.workspace,channel:J.channel,thread_id:J.threadId,codex_thread_id:m.threadId,updated_at:new Date().toISOString(),...be!==void 0?{model:be}:{},...Re!==void 0?{approvalPolicy:Re}:{},...ie!==void 0?{reasoningEffort:ie}:{},...we!==void 0?{sandbox:we}:{}},Oe=await n.push(t,"session:settings",qe);if(!(ne(Oe)&&Oe.status==="ok"))throw new Error(`kandan push failed: session:settings: ${JSON.stringify(Oe).slice(0,500)}`)}return Re!==void 0&&B?.record(J.threadId,{approvalPolicy:Re,sandbox:H}),X.approval_policy==="never"&&await xQ({kandan:n,topic:t,pendingClaudeCodeApprovals:l,pendingClaudeCodeUserQuestions:p,sessionThreadId:J.threadId,actorUserId:m.actorUserId,actorSlug:m.actorSlug,captureMessageStateAttemptGeneration:J.captureMessageStateAttemptGeneration,adoptMessageStateConsensusForAttempt:J.adoptMessageStateConsensusForAttempt,stopSession:qe=>{J.interruptTurnBeforeAbort(qe),J.abortController.abort(new Error(qe))},log:_,reason:"full_access_enabled"}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",threadId:m.threadId,applied:X}}case"stop_instance":case"kill_instance":{let D="threadId"in m&&typeof m.threadId=="string"?m.threadId:void 0,J=D===void 0?void 0:c.get(D);return J!==void 0?(await J.interruptTurn("Claude Code stopped by Linzumi"),J.abortController.abort(new Error("Claude Code stopped by Linzumi")),{instanceId:r,controlType:m.type,agentProvider:"claude-code",threadId:D,stopped:!0}):{instanceId:r,controlType:m.type,skipped:!0}}case"set_thread_collaboration_mode":return{instanceId:r,controlType:m.type,requestId:m.requestId,threadId:m.threadId,collaborationMode:m.collaborationMode,ok:!1,error:"thread_not_loaded"};case"review_thread":return{instanceId:r,controlType:m.type,requestId:m.requestId,threadId:m.threadId,ok:!1,error:"thread_not_loaded"};case"steer_child_thread":return _("steer_child_thread.missing_channel_session",{threadId:m.threadId,providerChildThreadId:m.providerChildThreadId,providerSessionKey:m.providerSessionKey}),{instanceId:r,controlType:m.type,ok:!1,error:"child_channel_session_not_loaded"};case"resolve_port_forward_request":case"update_thread_interaction_access":case"set_port_forward_enabled":case"forward_http_request":case"forward_tcp_open":case"forward_tcp_send":case"forward_tcp_close":case"start_local_editor":case"update_runner_config":case"multi_agent_jobs_state":case"document_surfaces_state":case"fleet_breaker_state":case"route_outage_state":case"stream_idle_timeout_default":case"set_commander_impl":case"replace_runner":return{instanceId:r,controlType:m.type,skipped:!0}}}async function pM(e,n,t,r,o,i){switch(e.type){case"remote_codex_exec":{let s=y(e.requestId)?.trim(),a=new AbortController;s!==void 0&&s!==""&&o.set(s,a);let d=await TK(e,{instanceId:n,allowedCwds:t,sandboxRunner:r,abortSignal:a.signal});return s!==void 0&&s!==""&&o.delete(s),i("remote_codex_exec.handled",{requestId:y(e.requestId)??null,ok:d.ok===!0,error:typeof d.error=="string"?d.error:null}),d}case"remote_codex_exec_cancel":{let s=y(e.requestId)?.trim();if(s===void 0||s==="")return{instanceId:n,controlType:e.type,ok:!1,error:"request_id_required"};let a=o.get(s);return a!==void 0&&(a.abort(new Error("remote_codex_exec_cancelled")),o.delete(s)),{instanceId:n,controlType:e.type,requestId:s,ok:!0,cancelled:a!==void 0}}}}function AZ(e,n){let t=b6e(n instanceof Error?n.message:String(n));switch(e){case"checking_project_trust":return`Codex could not start because this folder is not trusted locally. Trust the folder with linzumi paths add, or restart the runner from a trusted folder. Detail: ${t}`;case"starting_claude_code_session":return`Claude Code did not create a session. Restart the local runner and try again. Detail: ${t}`;case"claude_code_session_failed":return`Claude Code created a session, but the session failed before completing. Try starting the agent again; if it repeats, share this failed message with the runner owner. Detail: ${t}`;case"posting_claude_code_output":return`Claude Code created a session, but Linzumi could not post its response to this thread. Try starting the agent again; if it repeats, reconnect the local runner. Detail: ${t}`;case"starting_codex_session":return`Codex did not create a session. Restart the local runner and try again. Detail: ${t}`;case"binding_kandan_thread":return`Codex started, but Linzumi could not attach it to this thread. Try starting the agent again; if it repeats, share this failed message with the runner owner. Detail: ${t}`;case"starting_first_turn":return`Codex started, but the first prompt could not be delivered. Try sending the message again; if it repeats, reconnect the local runner. Detail: ${t}`}}function fM(e){return e==="checking_project_trust"?"project_untrusted":"start_stage_transient"}function fp(e,n){let t=e.trim();if(t.length<=n)return t;let r=" ... ";if(n<r.length+2)return t.slice(t.length-Math.max(1,n));let o=Math.max(1,Math.floor((n-r.length)/3)),i=Math.max(1,n-r.length-o);return`${t.slice(0,o)}${r}${t.slice(t.length-i)}`}function mM(e,n,t){let r=e==="startup"?`Claude Code startup readiness failed: ${n}`:`Claude Code readiness changed to ${n}`,o=t?.trim();return fp(o===void 0||o===""?r:`${r} (${o})`,480)}function x6e(e=Fr){e({severity:"info",key:"runner.execution_health_failed:claude-code",message:"Claude Code login restored - Claude Code coding jobs are available again."})}function b6e(e){return fp(e,240)}function v6e(){let e={value:{status:"starting",reason:"execution_leg_readiness_not_proven"}},n=(o,i=[])=>i.length===0?{status:"ready",adapters:o}:{status:"ready",adapters:o,failures:i},t=o=>{switch(o.status){case"starting":return[];case"ready":return o.failures??[];case"failed":return o.failures??[{adapter:o.adapter,reason:o.reason}]}};return{snapshot:()=>e.value,canClaimWork:o=>{switch(e.value.status){case"starting":case"failed":return!1;case"ready":return o===void 0||e.value.adapters.includes(o)}},markReady:o=>{switch(e.value.status){case"starting":e.value=n([o]);break;case"ready":{let i=t(e.value).find(s=>s.adapter===o);if(i!==void 0)throw new Error(`runner execution leg failed before readiness: ${i.reason}`);e.value.adapters.includes(o)||(e.value=n([...e.value.adapters,o],t(e.value)));break}case"failed":{let i=t(e.value),s=i.find(a=>a.adapter===o);if(s!==void 0)throw new Error(`runner execution leg failed before readiness: ${s.reason}`);e.value=n([o],i);break}}},markReadyAfterRecovery:o=>{switch(e.value.status){case"starting":e.value=n([o]);break;case"ready":{let i=e.value.adapters.includes(o)?e.value.adapters:[...e.value.adapters,o];e.value=n(i,t(e.value).filter(s=>s.adapter!==o));break}case"failed":{e.value=n([o],t(e.value).filter(i=>i.adapter!==o));break}}},markFailed:(o,i)=>{let s=o.trim();if(s==="")throw new Error("runner execution-leg failure requires a reason");let a={adapter:i,reason:s};switch(e.value.status){case"starting":e.value={status:"failed",adapter:i,reason:s};break;case"ready":{let d=e.value.adapters.filter(c=>c!==i),u=[...t(e.value).filter(c=>c.adapter!==i),a];e.value=d.length===0?{status:"failed",adapter:i,reason:s,...u.length===1?{}:{failures:u}}:n(d,u);break}case"failed":{let d=t(e.value);d.some(u=>u.adapter===i)||(e.value={...e.value,failures:[...d,a]});break}}},markNotReady:(o,i)=>{let s=o.trim();if(s==="")throw new Error("runner execution-leg demotion requires a reason");switch(e.value.status){case"starting":case"failed":break;case"ready":{let a=e.value.adapters.filter(u=>u!==i),d=[...t(e.value).filter(u=>u.adapter!==i),{adapter:i,reason:s}];e.value=a.length===0?{status:"failed",adapter:i,reason:s,...d.length===1?{}:{failures:d}}:n(a,d);break}}},refusalReason:o=>{switch(e.value.status){case"starting":return`runner_execution_leg_unhealthy: ${e.value.reason}`;case"failed":return`runner_execution_leg_unhealthy: ${(o===void 0?void 0:t(e.value).find(s=>s.adapter===o))?.reason??e.value.reason}`;case"ready":{if(o!==void 0&&!e.value.adapters.includes(o))return`runner_execution_leg_unhealthy: ${t(e.value).find(s=>s.adapter===o)?.reason??`${o}_readiness_not_proven`}`;throw new Error("runner execution leg is ready and has no refusal reason")}}},capabilityFields:()=>({executionHealth:e.value})}}async function w6e(e){if(MZ(e.health),e.activateDispatch(),await e.publishReadyHealth(),MZ(e.health),!e.signalGenerationReady())throw new Error("runner generation-ready signal was not delivered");return{type:"ready",delivered:!0}}function MZ(e){let n=e.snapshot();switch(n.status){case"ready":break;case"starting":throw new Error(`runner execution leg is starting: ${n.reason}`);case"failed":throw new Error(`runner execution leg is failed: ${n.reason}`)}}function S6e(e){let n=e.interruptActiveTurn(e.reason),t=e.interruptSessionControls;if(t!==void 0)try{t().catch(r=>{e.log("claude_code.session_control_interrupt_failed",{thread_id:e.threadId,message:r instanceof Error?r.message:String(r)})})}catch(r){e.log("claude_code.session_control_interrupt_failed",{thread_id:e.threadId,message:r instanceof Error?r.message:String(r)})}return n}async function k6e(e){let{activeSession:n}=e;n.interruptTurnBeforeAbort("stopped by user");let t=n.discardQueuedFollowUpsForStop();n.abortController.abort(new Error("stopped by user"));let r=n.currentSourceSeq(),o=[...new Set([r,...t].filter(s=>s!==void 0))],i=new Set(t);for(let s of o)try{await e.publishMessageState({workspace:n.workspace,channel:n.channel,threadId:n.threadId,sourceSeq:s,status:"interrupted",reason:"stopped by user",sessionId:e.sessionKey}),i.has(s)&&n.markFollowUpSeqDiscarded(s)}catch(a){e.log("kandan.claude_code_stop_state_push_failed",{message:a instanceof Error?a.message:String(a),thread_id:n.threadId,source_seq:s})}return t}function Pi(e,n,t=[]){let r=n.filter(i=>i!==void 0&&i!=="");for(let i of r){let s=e.get(i);if(s!==void 0)return s}let o=t.filter(i=>i!==void 0&&i!=="");if(o.length>0){for(let i of e.values())if(o.includes(i.threadId))return i}}function C6e(e,n){return Pi(e,[n],[n])===void 0?"codex":"claude-code"}async function P6e(e){let n;try{return await Promise.race([e,new Promise(t=>{n=setTimeout(()=>t(!0),T6e),n.unref?.()})])}finally{n!==void 0&&clearTimeout(n)}}async function mQ(e){let n=e.pending.sourceSeq;if(n===void 0)return e.log("claude_code.approval_consensus_source_seq_missing",{thread_id:e.pending.threadId,claude_session_id:e.pending.sessionId??null,reason:e.reason}),e.stopSession("Claude Code approval has no source sequence"),"stopped";let t=e.captureMessageStateAttemptGeneration(),r;try{r=await e.publishMessageState()}catch(i){e.log("claude_code.approval_consensus_push_unconfirmed",{thread_id:e.pending.threadId,source_seq:n,claude_session_id:e.pending.sessionId??null,reason:e.reason,message:i instanceof Error?i.message:String(i)}),r={kind:"unconfirmed"}}return e.adoptMessageStateConsensusForAttempt(n,e.incomingStatus,r,t)==="stop"?(e.log("claude_code.approval_terminal_consensus",{thread_id:e.pending.threadId,source_seq:n??null,claude_session_id:e.pending.sessionId??null,disposition:r.kind,reason:e.reason}),e.stopSession("Claude Code turn already terminated by the server"),"stopped"):(e.pending.resolve(e.decision),"resolved")}function DZ(e,n){switch(e.agentReplay?.provider){case"codex":return["codex"];case"claude-code":return["claude-code"];case"auto":case void 0:break}switch(e.claudeCodeRunner!==void 0||(n===void 0?e.claudeCodeAvailable===!0:n==="logged_in")){case!0:return["codex","claude-code"];case!1:return["codex"]}}function I6e(e){if(e.agentReplay?.provider==="codex"||e.codexUrl!==void 0||Xs(e))return!0;switch(e.dependencyStatus?.codex.available){case!1:return!1;case!0:case void 0:return!0}}function ap(e){let n=y(e.agentProvider)?.trim();switch(n){case void 0:case"":case"codex":return{type:"ok",provider:"codex"};case"claude-code":return{type:"ok",provider:"claude-code"};default:return{type:"unsupported",value:n}}}function R6e(e){switch(e){case"codex":return"Codex";case"claude-code":return"Claude Code"}}function v0(e){let n=y(e.modelProvider)?.trim(),t=E(e.llmProxy),r=y(t?.baseUrl)?.trim(),o=y(t?.token)?.trim(),i=r!==void 0&&r!==""&&o!==void 0&&o!==""?{baseUrl:r,token:o}:void 0;return n===void 0||n===""?i===void 0?{type:"none"}:{type:"provider",runtime:{provider:"openai-proxy",llmProxyBaseUrl:i.baseUrl,llmProxyToken:i.token}}:n!=="wafer"?{type:"error",error:`model_provider_unsupported:${n}`}:i===void 0?{type:"error",error:"wafer_model_provider_missing_llm_proxy"}:{type:"provider",runtime:{provider:"wafer",llmProxyBaseUrl:i.baseUrl,llmProxyToken:i.token}}}function hQ(e){if(e.type==="error")return e.error;if(e.type==="provider"&&e.runtime.provider==="openai-proxy"&&Bs()===void 0)return"codex_llm_proxy_requires_openai_api_key"}function OZ(e,n){let t=v0(n);switch(t.type){case"none":return;case"error":return t.error;case"provider":{let r=hQ(t);return r!==void 0?r:e.codexModelProvider?.provider===t.runtime.provider?void 0:t.runtime.provider==="wafer"?"wafer_model_provider_requires_thread_worker":"llm_proxy_model_provider_requires_thread_worker"}}}function E6e(e){if(e.linzumiAgentMcpToken===void 0||e.linzumiAgentMcpToken===""||GR(e.env))return;let n=A6e(e.env,e.kandanUrl);if(n===void 0||n==="")return hM("cloud agent turn requires a server URL (kandanUrl) and none was configured; refusing to run the @linzumi agent turn on the host");if(M6e(n))return hM(`cloud agent turn requires a PUBLICLY reachable server URL for the guest VM, got loopback ${n}; set LINZUMI_CLOUD_AGENT_PUBLIC_URL to the server's public base URL (e.g. https://serve.linzumi.com)`);if(!lu(e.env))return hM("smolcloud is the required execution path for @linzumi agent turns but no smolcloud API key resolved (SMOLCLOUD_API_KEY / cloud.apiKeyFile / SMOL_CLOUD_TOKEN); refusing to run the agent on the render host (set LINZUMI_VM_CLOUD_AGENT=0 only to explicitly opt back into host execution)");let t;try{t=Ks()}catch{throw new Error("workspace-agent cloud vm.json is present but invalid; refusing to arm the cloud agent turn on a corrupt config")}let r=YJ({env:e.env,config:t});if(r===void 0)throw new Error("workspace-agent cloud execution is enabled but no smolcloud API key resolved");let o=t?.agent,i={...o?.image===void 0?{}:{image:o.image},...o?.allowCidrs===void 0?{}:{allowCidrs:o.allowCidrs},...o?.autoStopSeconds===void 0?{}:{autoStopSeconds:o.autoStopSeconds}},s=e.modelProviderRuntime===void 0?void 0:(()=>{let a=P0(e.modelProviderRuntime);return{id:a.id,name:a.name,baseUrl:a.baseUrl,envKey:a.envKey,wireApi:a.wireApi,...a.httpHeaders===void 0?{}:{httpHeaders:a.httpHeaders},...a.envHttpHeaders===void 0?{}:{envHttpHeaders:a.envHttpHeaders}}})();return XJ({connection:r,workspaceSlug:e.workspaceSlug,kandanUrl:n,linzumiAgentMcpToken:e.linzumiAgentMcpToken,ownerUsername:e.ownerUsername,modelProvider:s,llmProxyToken:e.modelProviderRuntime?.llmProxyToken,agentSpec:i,prewarm:!0})}function hM(e){return()=>Promise.reject(new At(e))}function A6e(e,n){let t=e.LINZUMI_CLOUD_AGENT_PUBLIC_URL?.trim();return t!==void 0&&t!==""?t:n}function M6e(e){try{let n=new URL(e).hostname.toLowerCase();return n==="localhost"||n==="127.0.0.1"||n==="::1"||n==="0.0.0.0"}catch{return!1}}function P0(e){let n=`${e.llmProxyBaseUrl.replace(/\/+$/,"")}/v1`;switch(e.provider){case"wafer":return{id:"linzumi",name:"Linzumi Proxy",baseUrl:n,envKey:"LINZUMI_LLM_PROXY_TOKEN",wireApi:"responses"};case"openai-proxy":return{id:"linzumi",name:"Linzumi Proxy",baseUrl:n,envKey:"OPENAI_API_KEY",wireApi:"responses",envHttpHeaders:{"x-linzumi-llm-proxy-token":"LINZUMI_LLM_PROXY_TOKEN"}}}}function gQ(e){switch(e.provider){case"wafer":return{LINZUMI_LLM_PROXY_TOKEN:e.llmProxyToken};case"openai-proxy":{let n=Bs();if(n===void 0)throw new Error("codex llm proxy requires API-key auth (OPENAI_API_KEY in the environment or $CODEX_HOME/auth.json); ChatGPT OAuth credentials cannot be forwarded");return{LINZUMI_LLM_PROXY_TOKEN:e.llmProxyToken,OPENAI_API_KEY:n}}}}async function yQ(e){e.options.codexUrl===void 0&&(e.setStartupStage("checking_project_trust"),zb(e.cwd,{configHome:Oa()})),e.setStartupStage("starting_codex_session");let n=Ro(e.control.developerPrompt),t=wa(e.control.linzumiContext),r=mp(e.options,e.control),o=await Si("thread/start",e.codex.request("thread/start",{cwd:e.cwd,serviceName:"kandan-local-runner",personality:"pragmatic",developerInstructions:zf({cwd:e.cwd,planTool:"linzumi-mcp",mcpAvailable:!Xs(e.options)||OM(e.options),devServicesAvailable:!Xs(e.options),developerPrompt:n,...IM(e.control),linzumiContext:t,...Bc(r.sandbox)&&r.sandbox!==void 0?{sandboxNetworkPosture:{sandbox:r.sandbox,approvalCapable:Jc(r.approvalPolicy)}}:{}}),...eje(r)})),i=Wqe(o);e.setStartedCodexThreadId(i);let s=Ro(e.control.workDescription);i!==void 0&&n!==void 0&&await G6e(e.kandan,e.topic,e.control,n,i);let a;if(i!==void 0&&e.onStartedThread!==void 0&&(e.setStartupStage("binding_kandan_thread"),a=await Si("thread/attach",e.onStartedThread(e.control,e.cwd,i))),i!==void 0&&s!==void 0){e.setStartupStage("starting_first_turn");let d=Y(e.control.rootSeq),u=Y(e.control.sourceSeq)??d,c=vi($e(e.control.attachments)??[]);if(a===void 0||u===void 0)throw new vb({codexThreadId:i,kandanThreadId:fn(e.control,"threadId"),hasThreadSession:a!==void 0,sourceSeq:u});let l=Uo(e.options.token);e.startAgentReplayCodex?.(),await a.startThreadMessageTurn({seq:u,body:s,actorSlug:l.actorUsername,actorUserId:l.actorUserId,attachments:c,boundStartTimeout:!0})}return{controlResponse:{instanceId:e.instanceId,controlType:e.control.type,cwd:e.cwd,matchedRoot:e.matchedRoot,response:o},providerSession:{provider:"codex",cwd:e.cwd,matchedRoot:e.matchedRoot,sessionId:i}}}function D6e(e){let n=e.LINZUMI_CLAUDE_TURN_STALL_MS?.trim();if(n===void 0||n==="")return 6e5;let t=Number.parseInt(n,10);return Number.isFinite(t)&&t>0?t:6e5}function O6e(e){let n=e.onInputDelivered,t=e.isLiveSteerAllowed,r=e.onInputWait,o=e.onSourceSeqDelivered,i=[gM(e.content)],s=[e.sourceSeq],a=[],d=new Set,u=[],c=new Map,l=v=>new Promise(S=>{c.set(v,S)}),p=(v,S)=>{let C=c.get(v);C!==void 0&&(c.delete(v),C(S))},f={closed:!1},g=()=>{for(;f.closed;){let v=u.shift();if(v===void 0)return;v({done:!0,value:void 0})}},m=(v,S,C)=>{s.push(S),n?.(),S!==void 0&&o!==void 0&&!d.has(S)&&(d.add(S),o(S)),C?.();let T=u.shift();if(T===void 0){i.push(v);return}p(v,!0),T({done:!1,value:v})},_=(v,S,C)=>s.length>0?(a.push({message:v,sourceSeq:S,onDelivered:C}),{disposition:"parked",queuePosition:a.length}):(m(v,S,C),{disposition:"delivered"}),b=v=>{if(f.closed)throw new Error("Claude Code streaming input is closed");let S=gM(v.content);return _(S,v.sourceSeq,v.onDelivered)},w=v=>{if(f.closed)throw new Error("Claude Code streaming input is closed");let S=gM(v),C=l(S);if(s.length===0)return _(S,void 0),{steered:"steered_queued",applied:C};if(t?.()===!1)return _(S,void 0),{steered:"steered_queued",applied:C};let T=u.shift();return T===void 0?i.push(S):(p(S,!0),T({done:!1,value:S})),{steered:"steered_live",applied:C}};return{messages:{[Symbol.asyncIterator](){return{next(){let v=i.shift();return v!==void 0?(p(v,!0),Promise.resolve({done:!1,value:v})):f.closed?Promise.resolve({done:!0,value:void 0}):(r?.(s[0]),new Promise(S=>{u.push(S)}))}}}},close:()=>{if(s.length===0)for(;a.length>0;){let v=a.shift();v!==void 0&&m(v.message,v.sourceSeq,v.onDelivered)}f.closed=!0,g();for(let[v,S]of c)c.delete(v),S(!1)},enqueue:b,enqueueSteer:w,drainUndeliveredFollowUps:()=>a.splice(0),completeTurn:()=>{let v=s.shift();if(!f.closed&&s.length===0){let S=a.shift();S!==void 0&&m(S.message,S.sourceSeq,S.onDelivered)}return v},currentSourceSeq:()=>s[0]}}function gM(e){return{type:"user",message:{role:"user",content:e},parent_tool_use_id:null}}function $Z(e){if(e.decision.type!=="allow")return;let n=b9(e.decision.updatedPermissions);if(n.length!==0)try{S9(e.threadId,n),e.log("claude_code.thread_permission_grants_recorded",{linzumi_thread_id:e.threadId,rules:n.map(FI)})}catch(t){e.log("claude_code.thread_permission_grants_persist_failed",{linzumi_thread_id:e.threadId,message:t instanceof Error?t.message:String(t)})}}function $6e(e){let n=e.answers.map(t=>({questionId:t.questionId,selectedLabels:[...t.selectedLabels],freeText:t.freeText}));switch(e.pending.kind){case"question":return{type:"resolved",decision:{type:"answer_question",updatedInput:m9(e.pending.originalInput,e.pending.request,e.answers)},answerState:{kind:"Answered",answers:n,actorUserId:e.actorUserId,actorSlug:e.actorSlug,answeredAt:e.answeredAt},dispatch:"user_question_answer"};case"tool_approval":case"plan_review":{let t=e.answers.flatMap(i=>i.selectedLabels),r=t[0];if(r===void 0)return{type:"error",error:"claude_code_user_input_decision_missing",selectedLabels:t};let o=e.pending.approvalDecisions.get(r);return o===void 0?{type:"error",error:"claude_code_user_input_unknown_decision",selectedLabels:t}:{type:"resolved",decision:o,answerState:o.type==="deny"?{kind:"Denied",reason:o.message,answers:n,actorUserId:e.actorUserId,actorSlug:e.actorSlug,answeredAt:e.answeredAt}:{kind:"Answered",answers:n,actorUserId:e.actorUserId,actorSlug:e.actorSlug,answeredAt:e.answeredAt},dispatch:"user_input_decision"}}}}async function _Q(e){let n=e.sourceSeq;if(n===void 0)return{type:"deny",message:"Claude Code user input request had no source message"};if(e.pendingQuestions.has(e.questionRequest.requestId))return{type:"deny",message:"Claude Code user input request id was already pending"};if(tg({threadId:e.threadId,pendingApprovals:e.pendingApprovals,pendingQuestions:e.pendingQuestions}))return{type:"deny",message:"Claude Code already has a pending user input request"};if(e.signal.aborted)return{type:"deny",message:"Claude Code user input request cancelled by Linzumi"};let t="Claude Code user input request cancelled by Linzumi",r=e.approvalDecisions??new Map,o,i,s=!1,a=new Promise(d=>{let u=!1,c=()=>{i!==void 0&&e.signal.removeEventListener("abort",i),e.pendingQuestions.delete(e.questionRequest.requestId)},l=f=>{u||(u=!0,c(),d(f))};o=l,i=()=>{s||(s=!0,(async()=>{try{await dp(e.kandan,e.topic,{workspace:e.workspace,channel:e.channel,threadId:e.threadId,sourceSeq:n,sessionId:e.sessionId,leaseEpoch:e.leaseEpoch,request:e.questionRequest,answerState:{kind:"Denied",reason:t,answeredAt:new Date().toISOString()},streamState:"interrupted"})}catch(f){console.error("kandan.claude_code_user_input_abort_publish_failed",e.questionRequest.requestId,f instanceof Error?f.message:String(f))}finally{l({type:"deny",message:t})}})())};let p={sessionId:e.sessionId,workspace:e.workspace,channel:e.channel,threadId:e.threadId,sourceSeq:n,leaseEpoch:e.leaseEpoch,request:e.questionRequest,resolve:l,resolved:()=>u};switch(e.kind){case"question":e.pendingQuestions.set(e.questionRequest.requestId,{...p,kind:"question",originalInput:e.request.input});break;case"tool_approval":case"plan_review":e.pendingQuestions.set(e.questionRequest.requestId,{...p,kind:e.kind,approvalDecisions:r});break}});if(i!==void 0&&(e.signal.addEventListener("abort",i,{once:!0}),e.signal.aborted))return i(),a;try{await dp(e.kandan,e.topic,{workspace:e.workspace,channel:e.channel,threadId:e.threadId,sourceSeq:n,sessionId:e.sessionId,leaseEpoch:e.leaseEpoch,request:e.questionRequest,answerState:{kind:"NeedsAnswer"},streamState:"streaming"})}catch(d){return o?.({type:"deny",message:d instanceof Error?`Claude Code user input request push failed: ${d.message}`:"Claude Code user input request push failed"}),a}return a}async function dp(e,n,t){await e.push(n,"session:stream_thread_message",{workspace:t.workspace,channel:t.channel,thread_id:t.threadId,stream_key:g9(t.request.requestId),body:t.request.title,...t.leaseEpoch===void 0?{}:{lease_epoch:t.leaseEpoch},payload:{source_message_seq:t.sourceSeq,agent_provider:"claude-code",...t.sessionId===void 0?{}:{codex_thread_id:t.sessionId,provider_session_key:t.sessionId,claude_session_id:t.sessionId},structured:h9({request:t.request,sessionId:t.sessionId,sourceSeq:t.sourceSeq,answerState:t.answerState,streamState:t.streamState})}})}function tg(e){return[...e.pendingApprovals.values()].some(n=>n.threadId===e.threadId)||[...e.pendingQuestions.values()].some(n=>n.threadId===e.threadId)}async function q6e(e){let n=f9(e.request),t=new Map(n.choices.map(r=>[r.label,r.permissionDecision]));return _Q({kandan:e.kandan,topic:e.topic,pendingApprovals:e.pendingApprovals,pendingQuestions:e.pendingQuestions,workspace:e.workspace,channel:e.channel,threadId:e.threadId,sessionId:e.sessionId,sourceSeq:e.sourceSeq,request:e.request,questionRequest:n.request,kind:n.request.requestSource==="claude_code_plan_review"?"plan_review":"tool_approval",approvalDecisions:t,leaseEpoch:e.leaseEpoch,signal:e.signal})}function qZ(){return yM.value===void 0&&(yM.value=d8(a8(process.env))),yM.value}async function jZ(e){try{return await LZ(e)}catch(n){if(!(n instanceof Da))throw n;e.log("claude_code.dispatch_liveness_respawn_retry",{thread_id:fn(e.control,"threadId")??null,resume_session_id:e.resumeSessionId??null,waited_ms:n.waitedMs});try{return await LZ(e)}catch(t){throw t instanceof Da?new Error(j6e):t}}}async function LZ(e){let n=up(e.control,"workspace"),t=up(e.control,"channel"),r=up(e.control,"threadId"),o=Y(e.control.rootSeq),i=Y(e.control.sourceSeq)??o,s=Ro(e.control.workDescription);if(e.debugTrace?.record("commander","claude.provider_start",{controlType:e.control.type,instanceId:e.instanceId,workspace:n,channel:t,threadId:r,rootSeq:o??null,sourceSeq:i??null,resumeSessionId:e.resumeSessionId??null,cwd:e.cwd}),s===void 0)throw new Error("start_instance control missing workDescription");if(e.log("claude_code.turn_starting",{linzumi_thread_id:r,claude_session_id:e.resumeSessionId??null,body_preview:Pu(s),message_received_at_ms:Date.now()}),e.resumeSessionId!==void 0){let $=await qZ().acquire();($.waitedMs>0||$.timedOut)&&e.log("claude_code.resume_start_throttled",{linzumi_thread_id:r,claude_session_id:e.resumeSessionId,waited_ms:$.waitedMs,timed_out:$.timedOut})}let a=$=>{e.log("claude_code.turn_terminal",{turn_id:null,outcome:"failed",reason:$,thread_id:r,claude_session_id:e.resumeSessionId??null})},d,u=!1,c=!1,l,p=!1,f,g=0,m=!1,_=!1,b=!1,w,v=!1,S=$=>({workspace:n,channel:t,thread_id:r,codex_thread_id:$,provider_session_key:$,agent_provider:"claude-code",claude_session_id:$,cwd:e.cwd,instance_id:e.instanceId}),C=()=>{if(!u||!c||d===void 0)return;let $=()=>{let Le=d;if(p||!u||!c||Le===void 0)return;p=!0;let G=e.kandan.push(e.topic,"session:typing_start",S(Le)).then(()=>{}).catch(Pe=>{e.log("kandan.claude_code_typing_heartbeat_failed",{thread_id:r,claude_session_id:Le,message:Pe instanceof Error?Pe.message:String(Pe)})}).finally(()=>{p=!1});f=G,G.finally(()=>{f===G&&(f=void 0)})};$(),l===void 0&&(l=setInterval($,z$e),l.unref?.())},T=()=>{if(m){_=!0;return}u=!0,g+=1,C()},P=()=>{_&&(_=!1,T())},O=()=>{if(m){b=!0;return}ie.completeTurn()},R=()=>{b&&(b=!1,O())},j=()=>{b=!1,v=!0,ie.completeTurn()},B=async($,Le)=>{let G,Pe=new Promise(xt=>{G=setTimeout(()=>xt("timeout"),B$e),G.unref?.()}),We=await Promise.race([$.then(()=>"processed"),Pe]);G!==void 0&&clearTimeout(G),We==="timeout"&&e.log("claude_code.terminal_processing_timeout",{linzumi_thread_id:r,claude_session_id:Le.sessionId,event_type:Le.type})},K=async($,Le)=>{let G,Pe=new Promise(xt=>{G=setTimeout(()=>xt("timed_out"),U$e),G.unref?.()}),We=await Promise.race([$.then(()=>"settled"),Pe]);return G!==void 0&&clearTimeout(G),We==="timed_out"&&e.log("kandan.claude_code_typing_start_wait_timeout",{thread_id:r,claude_session_id:Le}),We},D=async()=>{let $=u,Le=d,G=g;if(u=!1,l!==void 0&&(clearInterval(l),l=void 0),!(!$||!c||Le===void 0))try{let Pe=f;if(Pe!==void 0&&await K(Pe,Le)==="timed_out"&&f===Pe&&(f=void 0,p=!1),u||g!==G)return;await e.kandan.push(e.topic,"session:typing_stop",S(Le))}catch(Pe){e.log("kandan.claude_code_typing_stop_failed",{thread_id:r,claude_session_id:Le,message:Pe instanceof Error?Pe.message:String(Pe)})}},J=vi($e(e.control.attachments)??[]),W=await DC({cwd:e.cwd,kandanUrl:e.options.kandanUrl,token:e.options.token,fetch:e.options.fetch,attachmentDirectoryName:"local-claude-code-attachments"},{seq:i,body:s,attachments:J}).then($=>({ok:!0,content:$})).catch($=>({ok:!1,error:$}));if(!W.ok){let $=W.error instanceof Error?W.error.message:String(W.error),Le=`Claude Code input attachment download failed: ${$}`;a(Le);try{await oo(e.kandan,e.topic,e.control,"failed",Le,{instanceId:e.instanceId,failureClass:"attachment_download_failed"})}catch(G){e.log("kandan.start_instance_claude_code_attachment_failed_state_push_failed",{message:G instanceof Error?G.message:String(G)})}return{controlResponse:{instanceId:e.instanceId,controlType:e.control.type,agentProvider:"claude-code",ok:!1,error:"claude_code_attachment_download_failed",message:$}}}let H=()=>{},X=!1,be=new Promise($=>{H=$}),Re=()=>{X||(X=!0,setImmediate(H))},ie=O6e({content:W.content,sourceSeq:i,onInputDelivered:T,isLiveSteerAllowed:()=>!m,onInputWait:$=>{$===void 0&&Re()},onSourceSeqDelivered:$=>{we.add($),e.onLiveSourceSeqAccepted?.({channel:t,threadId:r,sourceSeq:$})}}),we=new Set,qe=new Set,Oe=0,bn=Ro(e.control.developerPrompt),un=wa(e.control.linzumiContext),je=mp(e.options,e.control),Xe=y(e.control.approvalPolicy)!==void 0,_e=e.claudeThreadAccessStore?.resolve(r),q=gp(e.options),F=Xe?je.approvalPolicy:_e?.approvalPolicy??q.approvalPolicy,z=Xe?je.sandbox:_e?.sandbox??q.sandbox,V=F===void 0?void 0:jf(F,z),ae=V!==void 0?_M(V):je.approvalPolicy===void 0?void 0:_M(je.approvalPolicy);if(V!==void 0&&e.claudeThreadAccessStore?.record(r,{approvalPolicy:V,sandbox:z}),e.resumeSessionId!==void 0)try{await u9({cwd:e.cwd,sessionId:e.resumeSessionId,validator:e.options.claudeCodeSessionValidator})}catch($){throw a($ instanceof Error?$.message:String($)),$}let pe={runnerIdentity:Uo(e.options.token),codexVersion:void 0},Te=new AbortController,Z=Zm({stop:()=>{Te.signal.aborted||Te.abort(new Error("engine child reaper teardown"))},pid:void 0,ownProcessGroup:!1,kind:"claude_code"}),de=new Set(i===void 0?[]:[i]),ue={value:void 0},en=!1,Ye,Be=[],In=!1,ft,ee=Zs({kandanUrl:e.options.kandanUrl,accessToken:e.options.token,fetchImpl:e.options.fetch,operatingMode:"text"}),Q=s.trim().slice(0,2e3),he=iB({replacePlanSteps:ee.replaceCodingJobPlanSteps,threadId:r,goal:Q,log:e.log}),He=async()=>{if(e.resumeSessionId!==void 0)return;let $=5e3,Le=new AbortController,G,Pe=new Promise(We=>{G=setTimeout(()=>{Le.abort(new Error("claude goal seed timed out")),e.log("claude_code.goal_seed_timeout",{thread_id:r,timeout_ms:$}),We()},$)});try{await Promise.race([sB({upsertCodingJobPlan:ee.upsertCodingJobPlan,threadId:r,goal:Q,log:e.log,signal:Le.signal}),Pe])}finally{G!==void 0&&clearTimeout(G)}},N={model:je.model,modelProvider:je.modelProvider},ce=nB({flushJournaledTerminal:()=>te.flush(_Z),publishMessageState:$=>Io(e.kandan,e.topic,{workspace:n,channel:t,threadId:r,sourceSeq:$.sourceSeq,status:$.status,reason:$.reason,sessionId:d,fate:$.fate,retryable:$.retryable,holdDeadlineAt:$.holdDeadlineAt,model:$.model,provider:$.provider}),adoptMessageStateConsensus:($,Le,G)=>te.adoptMessageStateConsensus($,Le,G),acceptRestart:$=>te.acceptRouteOutageRestart($),enqueue:$=>ie.enqueue($).disposition,isSessionClosed:()=>Te.signal.aborted,attribution:()=>({...N.model===void 0?{}:{model:N.model},...N.modelProvider===void 0?{}:{provider:N.modelProvider}}),log:($,Le)=>e.log($,{thread_id:r,...Le})});i!==void 0&&ce.retainInput(i,W.content);let te=Y8({instanceId:e.instanceId,cwd:e.cwd,threadKey:`${n}:${t}:${r}`,persistDir:e.options.claudeCodeRunner===void 0?Zh():void 0,wire:()=>({workspaceSlug:n,channelSlug:t,kandanThreadId:r,codexThreadId:d??e.resumeSessionId,rootSeq:o,leaseEpoch:e.leaseEpochFor?.(r)}),push:async($,Le,G,Pe)=>{let We=await e.kandan.push(e.topic,$,Le,Pe);if(ne(We)&&We.status==="ok")return We;throw new Error(`kandan push failed: ${$}: ${JSON.stringify(We).slice(0,500)}`)},preparePush:($,Le)=>x_({kandan:e.kandan,topic:e.topic,workspace:n,channel:t,cwd:e.cwd,kandanUrl:e.options.kandanUrl,token:e.options.token,fetch:e.options.fetch,log:(G,Pe)=>e.log(G,Pe)},$,Le),runnerPayload:($,Le,G,Pe)=>Hi({...e.options,cwd:e.cwd},e.instanceId,$,Le,pe,G,Pe),currentSourceSeq:ie.currentSourceSeq,routeOutageActive:()=>Ta(void 0,N.model,0)==="active",runtimeMetadataForSourceSeq:()=>({model:N.model??null,model_provider:N.modelProvider??null}),onTurnTerminal:($,Le,G,Pe,We,xt,_a)=>{e.log("claude_code.turn_terminal",{turn_id:$,outcome:Le,reason:G??null,thread_id:r,claude_session_id:d??null,...xt===void 0?{}:{fate:xt}}),(Le==="failed"||Le==="interrupted")&&xt==="route_outage"&&We!==void 0&&ce.park({sourceSeq:We,reason:G,provider:_a?.provider,model:_a?.model,holdCeilingMs:_a?.holdCeilingMs}),Le==="completed"&&We!==void 0&&(e.onLiveSourceSeqAccepted?.({channel:t,threadId:r,sourceSeq:We}),ce.releaseRetained(We)),w?.(),w=void 0},onTodoWriteCompleted:he.handleTodoWrite,suppressProcessingState:()=>{for(let $ of e.pendingClaudeCodeApprovals.values())if($.threadId===r)return!0;for(let $ of e.pendingClaudeCodeUserQuestions.values())if($.threadId===r)return!0;return!1},log:e.log,debugTrace:e.debugTrace}),ke=e.options.claudeCodeRunner===void 0&&UB(process.env)?BB({captureDir:Tt(nQ(),`linzumi-claude-live-bash-${e.instanceId}`),onOutputDelta:($,Le)=>{d!==void 0&&te.handleTranscriptEvent({type:"command_output_delta",sessionId:d,itemKey:$,delta:Le})},log:($,Le)=>e.log($,Le)}):void 0,Ae,nn;try{let $=MQ(),Le=qM({...e.options,codingJobMcpToken:EM(e.control)});Ae=Le.cleanup;let G=$s({command:$.command,argsPrefix:$.argsPrefix,kandanUrl:e.options.kandanUrl,authFilePath:Le.path,ownerUsername:I0(e.options),operatingMode:"text",cwd:e.cwd,threadId:r,toolScope:e.options.codingJobToolScope,multiAgentJobs:e.options.multiAgentJobs===!0,devServices:{scope:e.options.runnerId,ownerPid:$M(e.options)}});nn=a4(G)}catch($){Ae?.(),Ae=void 0,e.log("claude_code.mcp_config_failed",{message:$ instanceof Error?$.message:String($),thread_id:r})}let Yn={kandan:e.kandan,topic:e.topic,workspace:n,channel:t,threadId:r,cwd:e.cwd,initialPrompt:s,rootSeq:o,log:e.log},pn=new Map,Kt=async $=>{let Le=Date.now(),G=DI($.rateLimit,Le);e.log("claude_code.rate_limit",{linzumi_thread_id:r,claude_session_id:$.sessionId??d??null,rate_limit_summary:`claude/${$.rateLimit.rateLimitType??"account"} ${G}`,status:$.rateLimit.status??null,utilization_percent:$.rateLimit.utilizationPercent??null,resets_at_ms:$.rateLimit.resetsAtMs??null});let Pe=$.rateLimit.rateLimitType??"account",We=Z6e($.rateLimit);if(We!==pn.get(Pe))try{await Q6e({kandan:e.kandan,topic:e.topic,workspace:n,channel:t,threadId:r,claudeSessionId:$.sessionId??d,rateLimit:$.rateLimit}),pn.set(Pe,We)}catch(xt){e.log("claude_code.rate_limit_post_failed",{thread_id:r,message:xt instanceof Error?xt.message:String(xt)})}},qo=async $=>{if(Oe=Date.now(),e.debugTrace?.record("claude-transcript","transcript.event",{eventType:$.type,threadId:r,activeSessionId:d??null,event:$}),jy.observeTranscriptEvent($),$.type==="tool_call"&&$.toolName==="Bash"){let G=y($.input.command);G!==void 0&&nx(r,G)}try{await U6e(Yn,$)}catch(G){e.log("claude_code.session_store_mirror_failed",{session_id:$.sessionId??null,event_type:$.type,message:G instanceof Error?G.message:String(G)})}if($.type==="session_started"){d=$.sessionId,e.log("claude_code.session_started",{linzumi_thread_id:r,claude_session_id:$.sessionId}),e.activeClaudeCodeSessions.set($.sessionId,{abortController:Te,workspace:n,channel:t,threadId:r,currentSourceSeq:ie.currentSourceSeq,adoptMessageStateConsensus:te.adoptMessageStateConsensus,captureMessageStateAttemptGeneration:te.captureMessageStateAttemptGeneration,adoptMessageStateConsensusForAttempt:te.adoptMessageStateConsensusForAttempt,pauseOutbox:()=>te.pauseOutbox(),resumeOutbox:()=>te.resumeOutbox(),inputDelivered:G=>we.has(G)||qe.has(G),lastSdkActivityMs:()=>Oe,enqueueInput:G=>{if(G.sourceSeq!==void 0&&de.has(G.sourceSeq))return"duplicate";let Pe=ie.enqueue(G);return G.sourceSeq!==void 0&&(ce.noteSupersession("new_user_input"),ce.retainInput(G.sourceSeq,G.content)),G.sourceSeq!==void 0&&de.add(G.sourceSeq),Pe},closeInput:ie.close,hasActiveTurn:()=>te.activeTurnId()!==void 0,sessionWork:()=>ue.value,steerTurn:ie.enqueueSteer,interruptTurn:async G=>{ce.noteSupersession("interrupt_turn");let Pe=te.interruptActiveTurn(G);return await Ye?.interrupt(),Pe},interruptTurnBeforeAbort:G=>{let Pe=Ye;return ce.noteSupersession("interrupt_before_abort"),S6e({reason:G,threadId:r,interruptActiveTurn:We=>te.interruptActiveTurn(We),interruptSessionControls:Pe===void 0?void 0:()=>Pe.interrupt(),log:e.log})},discardQueuedFollowUpsForStop:()=>(ce.noteSupersession("stop_discard"),ie.drainUndeliveredFollowUps().map(Pe=>Pe.sourceSeq).filter(Pe=>Pe!==void 0)),markFollowUpSeqDiscarded:G=>{qe.add(G)},slashCommands:async()=>{if(In)return Be;let G=await Ye?.supportedCommands();return In||G!==void 0&&(Be=G),Be},updateSettings:async G=>{let Pe={};if(G.model!==void 0&&(await Ye?.setModel(xM(G.model)),Pe.model=G.model,N.model=G.model),G.approvalPolicy!==void 0){let We=_M(G.approvalPolicy);We!==void 0&&(await Ye?.setPermissionMode(We),Pe.approval_policy=G.approvalPolicy)}if(G.reasoningEffort!==void 0){let We=NZ(G.reasoningEffort);We!==void 0&&(await Ye?.setEffort?.(We),Pe.reasoning_effort=G.reasoningEffort)}return Pe}}),e.ensureClaudeCodeForwardPortSession?.({sessionId:$.sessionId,workspace:n,channel:t,threadId:r,cwd:e.cwd,rootSeq:o,currentSourceSeq:ie.currentSourceSeq}),te.handleTranscriptEvent($),await e.kandan.push(e.topic,"session:bind",{workspace:n,channel:t,thread_id:r,codex_thread_id:$.sessionId,provider_session_key:$.sessionId,agent_provider:"claude-code",claude_session_id:$.sessionId,cwd:e.cwd,instance_id:e.instanceId}),c=!0,T();return}if($.type==="slash_command_catalog"){Be=$.commands,$.source==="commands_changed"&&(In=!0);return}let Le=$.type==="turn_completed"||$.type==="turn_interrupted"||$.type==="session_completed"||$.type==="session_failed";if(Le){m=!0;let G=te.activeTurnId(),Pe=!1,We=()=>{},xt=()=>{Pe=!0,We()},_a=new Promise(Fo=>{We=Fo});w=xt,te.handleTranscriptEvent($);let Bi=$.type==="turn_completed"||$.type==="turn_interrupted",Ny=Bi||G!==void 0||Pe;try{Ny?(await B(_a,$),await te.flush(_Z)):w===xt&&(w=void 0)}catch(Fo){e.log("claude_code.terminal_typing_flush_timeout",{linzumi_thread_id:r,claude_session_id:$.sessionId,event_type:$.type,message:Fo instanceof Error?Fo.message:String(Fo)})}w===xt&&(w=void 0),Bi&&(j(),ie.currentSourceSeq()!==void 0&&Re()),($.type==="session_completed"||$.type==="session_failed")&&d!==void 0&&(e.activeClaudeCodeSessions.delete(d),await e.disposeClaudeCodeForwardPortSession?.(d)),$.type==="session_completed"&&Re(),m=!1,await D(),R(),P(),await tx({threadKey:r,workspace:n,channel:t,threadId:r,push:(Fo,Rc)=>e.kandan.push(e.topic,Fo,Rc),log:(Fo,Rc)=>e.log(Fo,Rc)})}if(($.type==="turn_completed"||$.type==="session_completed")&&e.log("claude_code.turn_completed",{linzumi_thread_id:r,claude_session_id:$.sessionId,body_source:$.bodySource??null,body_preview:Pu($.body)}),$.type==="rate_limit"&&await Kt($),$.type==="tool_result"&&ke?.settleTool($.itemKey),($.type==="turn_interrupted"||$.type==="session_failed")&&ke?.settleAll(),$.type==="session_failed"&&e.log("claude_code.session_failed",{linzumi_thread_id:r,claude_session_id:$.sessionId??null,model_transport_lane:Lo.lane,reason:$.reason,api_error_status:$.apiErrorProvenance?.status??null,api_error_request_id:$.apiErrorProvenance?.requestId??null,api_error_message:$.apiErrorProvenance?.message??null}),$.type==="usage"){let G=r9($.usage);G!==void 0&&e.log("claude_code.token_usage",{linzumi_thread_id:r,claude_session_id:$.sessionId,token_usage_summary:G})}Le||te.handleTranscriptEvent($)},lr=E(e.control.llmProxy),xo=y(lr?.baseUrl)?.trim(),jo=y(lr?.token)?.trim(),Lo=g8({env:process.env,llmProxyBindingPresent:xo!==void 0&&xo!==""&&jo!==void 0&&jo!=="",hostedLinzumiAgentContext:e.control.linzumiAgent!==void 0||e.options.threadProcess?.role==="thread"&&e.options.linzumiAgentMcpToken!==void 0,routedNonAnthropicModel:vQ(je.model)!==void 0});e.log("claude_code.model_transport_lane",{linzumi_thread_id:r,lane:Lo.lane,credential_class:Lo.credentialClass,reason:Lo.reason});let jy=b8({lane:Lo.lane,workspace:n,channel:t,threadId:r,model:xM(je.model),push:($,Le)=>e.kandan.push(e.topic,$,Le),log:e.log}),jr,ha,zi;if(Lo.lane==="llm_proxy"&&xo!==void 0&&xo!==""&&jo!==void 0&&jo!==""){try{jr=await GP({upstreamBaseUrl:xo,initialToken:jo,log:(Le,G)=>e.log(Le,{linzumi_thread_id:r,...G}),debugTrace:e.debugTrace,debugTraceId:e.debugTrace===void 0?void 0:`claude-code:${e.instanceId}`,dispatcher:Xo()?.dispatcher,onUpstreamRateLimited:({retryAfterMs:Le})=>qZ().notifyRateLimited({retryAfterMs:Le})});let $=jr;ha=ZP({relay:jr,mint:()=>bQ(e.kandan,e.topic,$.currentToken()),log:(Le,G)=>e.log(Le,{linzumi_thread_id:r,...G})})}catch($){e.log("llm_proxy_relay.start_failed_fallback_to_env_token",{linzumi_thread_id:r,message:$ instanceof Error?$.message:String($)}),jr=void 0,ha=void 0}zi=jr!==void 0?UZ(process.env,{baseUrl:jr.baseUrl},je.model):UZ(process.env,{baseUrl:xo,token:jo},je.model)}else zi=W6e(process.env);let Ly=K$e(zi),Pc=()=>ie.currentSourceSeq()!==void 0&&!tg({threadId:r,pendingApprovals:e.pendingClaudeCodeApprovals,pendingQuestions:e.pendingClaudeCodeUserQuestions}),Fy=($,Le)=>{if(L6e($.toolName))return Promise.resolve({type:"allow"});let G=p9($);switch(G.type){case"question":return(async()=>{await D();let Pe=await _Q({kandan:e.kandan,topic:e.topic,pendingApprovals:e.pendingClaudeCodeApprovals,pendingQuestions:e.pendingClaudeCodeUserQuestions,workspace:n,channel:t,threadId:r,sessionId:d??e.resumeSessionId,sourceSeq:ie.currentSourceSeq(),request:$,questionRequest:G.request,kind:"question",approvalDecisions:void 0,leaseEpoch:e.leaseEpochFor?.(r),signal:Le});return T(),Pe})();case"invalid":return Promise.resolve({type:"deny",message:G.message});case"not_question":{let Pe=v9(dh(r),$);return Pe!==void 0?(e.log("claude_code.tool_approval_auto_granted",{linzumi_thread_id:r,tool_name:$.toolName,request_id:$.requestId}),Promise.resolve(Pe)):q6e({kandan:e.kandan,topic:e.topic,pendingApprovals:e.pendingClaudeCodeApprovals,pendingQuestions:e.pendingClaudeCodeUserQuestions,workspace:n,channel:t,threadId:r,sessionId:d??e.resumeSessionId,sourceSeq:ie.currentSourceSeq(),request:$,leaseEpoch:e.leaseEpochFor?.(r),signal:Le})}}},Ct=(async()=>{let $;await He(),await dm({cwd:e.cwd,threadKey:r,turnRef:i===void 0?"session-start":`seq-${i}`,log:(Pe,We)=>e.log(Pe,We)});let Le=NZ(je.reasoningEffort),G=dh(r).map(FI);try{try{$=await d9({cwd:e.cwd,prompt:s,includeHookEvents:!0,developerInstructions:zf({cwd:e.cwd,agentLabel:"Claude Code",planTool:"todo-write",devServicesAvailable:!0,developerPrompt:bn,...IM(e.control),linzumiContext:un}),model:xM(je.model),...typeof Le=="string"?{effort:Le}:{},...e.debugTrace===void 0?{}:{claudeCodeDebugFile:Tt(e.debugTrace.runDir,"claude-code-debug.log")},...ae===void 0?{}:{permissionMode:ae},...G.length===0?{}:{permissionGrantRules:G},resumeSessionId:e.resumeSessionId,abortController:Te,streamingInput:ie,...e.options.claudeCodeRunner===void 0?{turnStallThresholdMs:D6e(process.env),turnStallIsActive:Pc,apiWaitStatusThresholdMs:1e4,apiWaitStatusItemKey:Pe=>{let We=ie.currentSourceSeq();return We===void 0?void 0:`system:claude-api-wait:${We}:${Pe}`}}:{},runner:e.options.claudeCodeRunner,debugTrace:e.debugTrace,canUseTool:Fy,...nn===void 0?{}:{mcpServers:nn},...ke===void 0?{}:{preToolUseHookMatchers:ke.hookMatchers,wrapApprovedToolInput:(Pe,We,xt)=>We==="Bash"?ke.wrapApprovedTool(Pe,xt):void 0},env:Ly,allowedTools:["mcp__linzumi__*"],onSessionControls:Pe=>{Ye=Pe,ae==="bypassPermissions"&&(ft=xQ({kandan:e.kandan,topic:e.topic,pendingClaudeCodeApprovals:e.pendingClaudeCodeApprovals,pendingClaudeCodeUserQuestions:e.pendingClaudeCodeUserQuestions,sessionThreadId:r,captureMessageStateAttemptGeneration:te.captureMessageStateAttemptGeneration,adoptMessageStateConsensusForAttempt:te.adoptMessageStateConsensusForAttempt,stopSession:We=>{te.interruptActiveTurn(We),Te.abort(new Error(We))},log:e.log,reason:"full_access_started"}).catch(We=>{e.log("claude_code.startup_approval_drain_failed",{linzumi_thread_id:r,claude_session_id:d??null,message:We instanceof Error?We.message:String(We)})}))},onTurnCompleted:()=>{v?v=!1:O(),ie.currentSourceSeq()!==void 0&&Re()},onTranscriptEvent:qo})}finally{let We=ie.drainUndeliveredFollowUps().map(xt=>xt.sourceSeq).filter(xt=>xt!==void 0);We.length>0&&e.onUndeliveredFollowUpsAtClose!==void 0&&e.onUndeliveredFollowUpsAtClose({channel:t,threadId:r,sourceSeqs:We}),d!==void 0&&(e.activeClaudeCodeSessions.delete(d),await e.disposeClaudeCodeForwardPortSession?.(d)),await D(),ie.close(),Ae?.(),ke?.close()}}catch(Pe){throw te.submitLifecycle("codexDied",Pe instanceof Error?Pe.message:String(Pe)),await te.close(5e3).catch(()=>{}),await Promise.race([he.settle().catch(()=>{}),new Promise(We=>{setTimeout(We,5e3).unref?.()})]),a(Pe instanceof Error?Pe.message:String(Pe)),en||e.setStartupStage("claude_code_session_failed"),Pe}return en||e.setStartupStage("posting_claude_code_output"),await te.awaitTurnsSettled(3e4),await te.close(3e4),await Promise.race([he.settle(),new Promise(Pe=>{setTimeout(Pe,1e4).unref?.()})]),$})();Ct.finally(()=>Z.unregister()).catch(()=>{}),Ct.finally(()=>{ha?.stop(),jr?.close()}).catch(()=>{}),ue.value=Ct;let _f,kd=e.options.claudeCodeRunner===void 0||process.env.LINZUMI_CLAUDE_DISPATCH_LIVENESS_MS!==void 0?Db({windowMs:uh(process.env),isDelivered:()=>Oe>0,isSessionClosed:()=>!1,lastSdkActivityMs:()=>Oe,hasPendingBlockingRequest:()=>tg({threadId:r,pendingApprovals:e.pendingClaudeCodeApprovals,pendingQuestions:e.pendingClaudeCodeUserQuestions}),log:e.log,onWedged:$=>{_f={waitedMs:$.waitedMs},e.log("claude_code.dispatch_liveness_wedged",{linzumi_thread_id:r,claude_session_id:d??e.resumeSessionId??null,waited_ms:$.waitedMs,cause:$.cause,dispatch:e.resumeSessionId===void 0?"initial_turn":"resume_turn"}),Te.abort(new Da($.waitedMs))}}):void 0;Ct.finally(()=>kd?.stop()).catch(()=>{});let Cd;try{Cd=await Promise.race([Ct.then($=>({type:"session_ended",result:$})),be.then(()=>({type:"first_turn_settled"}))])}catch($){throw _f!==void 0&&!($ instanceof Da)?new Da(_f.waitedMs):$}finally{kd?.stop()}let ya=$=>({controlResponse:{instanceId:e.instanceId,controlType:e.control.type,agentProvider:"claude-code",cwd:e.cwd,matchedRoot:e.matchedRoot,response:{session:{id:$}}},providerSession:{provider:"claude-code",cwd:e.cwd,matchedRoot:e.matchedRoot,sessionId:$}});if(Cd.type==="session_ended")return ya(Cd.result.sessionId);e.setStartupStage("posting_claude_code_output"),en=!0,await te.awaitTurnsSettled(3e4);try{await te.flush(3e4)}catch($){e.log("claude_code.first_turn_flush_timeout",{linzumi_thread_id:r,claude_session_id:d??null,message:$ instanceof Error?$.message:String($)})}ft!==void 0&&await ft;let Ic=await Promise.race([Ct.then($=>({type:"session_ended",result:$}),()=>{}),new Promise($=>{setImmediate(()=>$(void 0))})]);if(Ic!==void 0)return ya(Ic.result.sessionId);Ct.then(()=>{e.log("claude_code.session_loop_ended",{linzumi_thread_id:r,claude_session_id:d??null})},$=>{e.log("claude_code.session_loop_failed",{linzumi_thread_id:r,claude_session_id:d??null,message:$ instanceof Error?$.message:String($)})});let xf=d??e.resumeSessionId;if(xf!==void 0)return ya(xf);let bf=await Ct;return ya(bf.sessionId)}function L6e(e){return e.startsWith("mcp__linzumi__")}function FZ(e){switch(e){case"untrusted":return 0;case"on-request":return 1;case"on-failure":return 2;case"never":return 3;default:return}}function _M(e){switch(e){case"never":return"bypassPermissions";case"on-request":case"untrusted":return"default";case"on-failure":return"acceptEdits";default:return}}function NZ(e){switch(e?.trim().toLowerCase()){case"default":return null;case"low":return"low";case"medium":return"medium";case"high":return"high";case"xhigh":return"xhigh";default:return}}function F6e(e,n){return[...e.entries()].filter(([,t])=>t.threadId===n)}function N6e(e,n){return[...e.entries()].flatMap(([t,r])=>{switch(r.kind){case"question":return[];case"tool_approval":case"plan_review":return r.threadId===n?[[t,r]]:[]}})}async function xQ(e){let n=F6e(e.pendingClaudeCodeApprovals,e.sessionThreadId);for(let[r,o]of n){if(await mQ({pending:o,decision:{type:"allow"},incomingStatus:"processing",publishMessageState:()=>Io(e.kandan,e.topic,{workspace:o.workspace,channel:o.channel,threadId:o.threadId,sourceSeq:o.sourceSeq,status:"processing",reason:"Claude Code tool approved",sessionId:o.sessionId??e.sessionThreadId}),captureMessageStateAttemptGeneration:e.captureMessageStateAttemptGeneration,adoptMessageStateConsensusForAttempt:e.adoptMessageStateConsensusForAttempt,stopSession:e.stopSession,log:e.log,reason:e.reason})==="stopped")return;e.log("claude_code.approval_request_auto_approved",{request_id:r,source_seq:o.sourceSeq,session_id:o.sessionId??e.sessionThreadId,reason:e.reason})}let t=N6e(e.pendingClaudeCodeUserQuestions,e.sessionThreadId);for(let[r,o]of t){let i=o.approvalDecisions.get("Allow")??{type:"allow"};o.resolve(i),await dp(e.kandan,e.topic,{workspace:o.workspace,channel:o.channel,threadId:o.threadId,sourceSeq:o.sourceSeq,sessionId:o.sessionId,leaseEpoch:o.leaseEpoch,request:o.request,answerState:i.type==="deny"?{kind:"Denied",reason:i.message,actorUserId:e.actorUserId,actorSlug:e.actorSlug,answeredAt:new Date().toISOString()}:{kind:"Answered",answers:[{questionId:o.request.questions[0]?.questionId??`${r}:decision`,selectedLabels:["Allow"]}],actorUserId:e.actorUserId,actorSlug:e.actorSlug,answeredAt:new Date().toISOString()},streamState:"completed"}),e.log("claude_code.user_input_request_auto_approved",{request_id:r,source_seq:o.sourceSeq,session_id:o.sessionId??e.sessionThreadId,kind:o.kind,reason:e.reason})}}function z6e(e){return ox(e)}async function U6e(e,n){let t=J6e(n);if(t===void 0)return;let r=K6e(e,n);if(r===void 0)return;let o="root",i=B6e(`${e.workspace}:${e.cwd}:${t}:${o}`);await e.kandan.push(e.topic,"claude_session_store_append",{workspace:e.workspace,channel:e.channel,thread_id:e.threadId,cwd:e.cwd,sessionId:t,subkey:o,sequence:i,entryType:n.type,payload:r})}function B6e(e){let n=zZ.get(e),t=Date.now()*1e3,r=n===void 0?t:Math.max(n+1,t);return zZ.set(e,r),r}function J6e(e){switch(e.type){case"unknown":case"session_failed":return e.sessionId;default:return e.sessionId}}function K6e(e,n){switch(n.type){case"assistant_delta":case"slash_command_catalog":return;case"session_started":return{prompt:e.initialPrompt,threadId:e.threadId,rootSeq:e.rootSeq??null};case"assistant_message":return{itemKey:n.itemKey,body:n.content,streamState:n.streamState};case"tool_call":return{itemKey:n.itemKey,toolName:n.toolName,input:n.input};case"tool_result":return{itemKey:n.itemKey,toolName:n.toolName??null,body:n.content,isError:n.isError};case"reasoning_delta":return;case"reasoning_message":return{itemKey:n.itemKey,body:n.content};case"command_output":return{itemKey:n.itemKey,body:n.content};case"command_output_delta":return;case"usage":return{usage:n.usage};case"rate_limit":return{body:`Claude Code rate limit: ${DI(n.rateLimit,Date.now())}`,status:n.rateLimit.status??null,rate_limit_type:n.rateLimit.rateLimitType??null,utilization_percent:n.rateLimit.utilizationPercent??null,resets_at_ms:n.rateLimit.resetsAtMs??null};case"unknown":return{itemKey:n.itemKey,body:n.summary};case"turn_completed":case"session_completed":return{body:n.body,bodySource:n.bodySource??null,usage:n.usage??null};case"turn_interrupted":return{body:"Claude Code turn interrupted"};case"session_failed":return{body:n.reason};case"agent_status":case"agent_task_update":case"permission_mode_changed":return}}function W6e(e){let n={};for(let[t,r]of Object.entries(e))r!==void 0&&(n[t]=r);return n}async function bQ(e,n,t){let r=await e.push(n,"llm_proxy:mint_session_token",t!==void 0&&t!==""?{currentToken:t}:{});if(ne(r)&&r.status==="ok"&&ne(r.response)&&typeof r.response.token=="string"&&r.response.token!==""){let o=r.response.max_age_seconds;return{token:r.response.token,...typeof o=="number"&&Number.isFinite(o)&&o>0?{maxAgeMs:o*1e3}:{}}}}function UZ(e,n,t){let r={};for(let[i,s]of Object.entries(e))s!==void 0&&(i==="ANTHROPIC_BASE_URL"||i==="ANTHROPIC_CUSTOM_HEADERS"||i.startsWith("CLAUDE_CODE_USE_")||(r[i]=s));r.ANTHROPIC_BASE_URL=n.baseUrl,n.token!==void 0&&(r.ANTHROPIC_CUSTOM_HEADERS=`${V6e}: ${n.token}`);let o=vQ(t);return o!==void 0&&(r.ANTHROPIC_DEFAULT_OPUS_MODEL=o,r.ANTHROPIC_DEFAULT_SONNET_MODEL=o,r.ANTHROPIC_DEFAULT_HAIKU_MODEL=o,r.CLAUDE_CODE_SUBAGENT_MODEL=o),r}function vQ(e){let n=e?.trim();switch(n){case void 0:case"":case"default":case"haiku":case"sonnet":case"opus":case"fable-5":return;default:return n.startsWith("claude")?void 0:n}}function xM(e){let n=e?.trim();switch(n){case void 0:case"":case"default":return;case"haiku":case"sonnet":case"opus":return n;case"fable-5":return"claude-fable-5";default:return H6e(n)?"sonnet":n}}function H6e(e){let n=e.toLowerCase();return n.startsWith("gpt-")||n.startsWith("o1")||n.startsWith("o3")||n.startsWith("o4")||n.startsWith("o5")||n.startsWith("codex")}async function G6e(e,n,t,r,o){let i=fn(t,"workspace"),s=fn(t,"channel"),a=fn(t,"threadId"),d=y(t.modelProvider)?.trim(),u=y(t.model)?.trim();i===void 0||s===void 0||a===void 0||await e.push(n,"session:post_thread_message",{workspace:i,channel:s,thread_id:a,body:`Starting a new Codex thread with instructions:
1625
+ `)}catch(r){n?.(r instanceof Error?r.message:String(r))}}}}function Lqe(e,n=cp){try{if(n(e))return}catch{return}return`the runner's working directory ${e} no longer exists (deleted, or its disk/volume is unmounted); remount the volume or reconnect from an existing folder`}function Fqe(e,n,t=pQ,r=qqe){let o=e.load(),i=o===void 0?Number.NaN:Date.parse(o.lastExitAt),s=n-i,d=o!==void 0&&Number.isFinite(i)&&s>=0&&s<=t?o.count+1:1;return e.save({count:d,lastExitAt:new Date(n).toISOString()}),{count:d,crashLoop:d>=r}}function Nqe(e){let n=new Map,t={failed:!1},r;return{observeNotification:(o,i)=>{if(t.failed)return;let s=zqe(i);if(s===void 0)return;r=Date.now();let a=_0(i);if(y0.has(o)){for(let[d,u]of n)u===s&&(a===void 0||a===d)&&n.delete(d);return}a!==void 0&&n.set(a,s)},failActiveTurns:o=>{if(t.failed)return;t.failed=!0;let i=Array.from(n);if(n.clear(),i.length===0)return;e.onActiveThreadsFailed?.(i.map(([d])=>d));let s=Array.from(e.sessions()),a=typeof o=="function"?o:d=>o;for(let[d,u]of i){let c=a({threadId:d,turnId:u});e.log("codex.active_turn_failed_on_connection_loss",{thread_id:d,turn_id:u,cause:c});for(let l of s)Va(l,"turn/failed",{threadId:d,turnId:u,reason:c,...Hc("infra_turn_kill")},e.log)}},activeTurnCount:()=>n.size,activeTurns:()=>Array.from(n,([o,i])=>({threadId:o,turnId:i})),lastActivityAtMs:()=>r}}function zqe(e){let n=E(e.turn),t=E(e.item),r=E(t?.turn);return y(n?.id)??y(e.turnId)??y(e.turn_id)??y(t?.turnId)??y(t?.turn_id)??y(r?.id)}function _0(e){let n=E(e.thread),t=E(e.turn);return y(e.threadId)??y(e.thread_id)??y(n?.id)??y(t?.threadId)??y(t?.thread_id)}function Va(e,n,t,r,o){if(e===void 0)return!1;try{return e.handleCodexNotification(n,t,o),!0}catch(i){return r("codex.notification_session_dispatch_failed",{method:n,message:i instanceof Error?i.message:String(i)}),!1}}function Uqe(e,n=!0){let t=new Map,r=n,o=0,i=()=>[...t.values()].reduce((c,l)=>c+1+l.parentFrames.length+l.childFrames.length,0),s=(c,l)=>{if(c!=="item/started"&&c!=="item/completed")return;let p=E(l.item),f=_0(l);if(p===void 0||y(p.type)!=="subAgentActivity"||y(p.kind)!=="started"||f===void 0)return;let g=y(p.id),m=y(p.agentThreadId)??y(p.agent_thread_id);return{key:`${f}:${g??m??"missing-item-id"}`,sequence:0,activityPending:!0,method:c,params:l,parentThreadId:f,childThreadId:m,itemId:g,captureAuthority:"pre_disable_accepted",parentFrames:[],childFrames:[]}},a=(c,l)=>{let p=c.filter(f=>f.ownsCodexThreadId(l));switch(p.length){case 0:return;case 1:return p[0];default:{let f=p.filter(g=>g.currentCodexThreadId?.()===l);switch(f.length){case 1:return f[0];case 0:throw new Error(`multiple inherited channel sessions own Codex thread ${l}`);default:throw new Error(`multiple direct channel sessions own Codex thread ${l}`)}}}},d=(c,l)=>{let p=[...t.values()].filter(f=>f.key!==l&&f.activityPending&&f.childThreadId===c);if(p.length>1)throw new Error(`multiple deferred Codex subagent edges claim child ${c}`);return p[0]},u=c=>{let l=[...t.values()].flatMap(f=>[...f.activityPending&&d(f.parentThreadId,f.key)===void 0&&a(c,f.parentThreadId)!==void 0?[{kind:"activity",sequence:f.sequence,activity:f}]:[],...f.parentFrames.flatMap(g=>!f.activityPending&&a(c,f.parentThreadId)!==void 0?[{kind:"parent_frame",sequence:g.sequence,activity:f,frame:g}]:[]),...f.childFrames.flatMap(g=>!f.activityPending&&f.childThreadId!==void 0&&a(c,f.childThreadId)!==void 0?[{kind:"frame",sequence:g.sequence,activity:f,frame:g}]:[])]).sort((f,g)=>f.sequence-g.sequence)[0];if(l===void 0)return;let p=l.kind==="activity"||l.kind==="parent_frame"?a(c,l.activity.parentThreadId):l.activity.childThreadId===void 0?void 0:a(c,l.activity.childThreadId);if(p===void 0)throw new Error(`deferred Codex subagent owner disappeared for ${l.activity.parentThreadId}`);if(l.kind==="activity"){if(!Va(p,l.activity.method,l.activity.params,e,{captureAuthority:l.activity.captureAuthority}))return;if(l.activity.childThreadId!==void 0&&a(c,l.activity.childThreadId)===void 0)throw new Error(`deferred Codex subagent child was not registered: ${l.activity.childThreadId}`);l.activity.parentFrames.length===0&&l.activity.childFrames.length===0?t.delete(l.activity.key):t.set(l.activity.key,{...l.activity,activityPending:!1})}else if(l.kind==="parent_frame"){if(!p.ownsCodexThreadId(l.activity.parentThreadId))throw new Error(`deferred Codex subagent parent owner disappeared for ${l.activity.parentThreadId}`);if(!Va(p,l.frame.method,l.frame.params,e,{captureAuthority:l.activity.captureAuthority}))return;let g=l.activity.parentFrames.filter(({sequence:m})=>m!==l.frame.sequence);!l.activity.activityPending&&g.length===0&&l.activity.childFrames.length===0?t.delete(l.activity.key):t.set(l.activity.key,{...l.activity,parentFrames:g})}else{if(l.activity.childThreadId===void 0||!p.ownsCodexThreadId(l.activity.childThreadId))throw new Error(`deferred Codex subagent child owner disappeared for ${l.activity.childThreadId??l.activity.key}`);if(!Va(p,l.frame.method,l.frame.params,e,{captureAuthority:l.activity.captureAuthority}))return;let g=l.activity.childFrames.filter(({sequence:m})=>m!==l.frame.sequence);!l.activity.activityPending&&l.activity.parentFrames.length===0&&g.length===0?t.delete(l.activity.key):t.set(l.activity.key,{...l.activity,childFrames:g})}u(c)};return{dispatch:(c,l,p)=>{if(!r){u(c);let _=_0(p);if(_!==void 0&&y0.has(l)){let b=[...t.values()].filter(({activityPending:C,childThreadId:T})=>C&&T===_);if(b.length>1)throw new Error(`multiple deferred Codex subagent edges claim child ${_}`);let w=[...t.values()].filter(({activityPending:C,parentThreadId:T})=>C&&T===_).sort((C,T)=>C.sequence-T.sequence)[0],v=b[0],S=w??v;if(S!==void 0){if(i()>=1e3)throw new Error("deferred Codex subagent activity and frames exceeded 1000 entries");let C={sequence:o++,method:l,params:p};t.set(S.key,{...S,...w!==void 0?{parentFrames:[...S.parentFrames,C]}:{childFrames:[...S.childFrames,C]}}),e("codex.subagent_activity_parent_unresolved",{phase:w!==void 0?"post_disable_parent_terminal_deferred":"post_disable_child_terminal_deferred",parent_thread_id:S.parentThreadId,child_thread_id:S.childThreadId??null,item_id:S.itemId??null,method:l}),u(c);return}}for(let b of c)Va(b,l,p,e);return}u(c);let f=s(l,p);if(f===void 0){let _=_0(p),b=_===void 0?[]:[...t.values()].filter(({childThreadId:C,activityPending:T})=>T&&C===_);if(b.length>1)throw new Error(`multiple deferred Codex subagent edges claim child ${_}`);let w=b[0],v=_===void 0?void 0:[...t.values()].filter(({parentThreadId:C,activityPending:T})=>T&&C===_).sort((C,T)=>C.sequence-T.sequence)[0],S=v??w;if(S!==void 0){if(i()>=1e3)throw new Error("deferred Codex subagent activity and frames exceeded 1000 entries");let C={sequence:o++,method:l,params:p};t.set(S.key,{...S,...v!==void 0?{parentFrames:[...S.parentFrames,C]}:{childFrames:[...S.childFrames,C]}}),e("codex.subagent_activity_parent_unresolved",{phase:v!==void 0?"parent_frame_deferred":"child_frame_deferred",parent_thread_id:S.parentThreadId,child_thread_id:S.childThreadId??null,item_id:S.itemId??null,method:l});return}for(let C of c)Va(C,l,p,e);u(c);return}let g=d(f.parentThreadId,f.key);if(g!==void 0){if(i()>=1e3&&!t.has(f.key))throw new Error("deferred Codex subagent activity exceeded 1000 entries");let _=t.get(f.key);t.set(f.key,{...f,sequence:_?.sequence??o++,parentFrames:_?.parentFrames??[],childFrames:_?.childFrames??[]}),e("codex.subagent_activity_parent_unresolved",{phase:"nested_activity_deferred",parent_thread_id:f.parentThreadId,child_thread_id:f.childThreadId??null,item_id:f.itemId??null,blocked_by_parent_thread_id:g.parentThreadId,blocked_by_item_id:g.itemId??null,method:l});return}let m=a(c,f.parentThreadId);if(m===void 0){if(i()>=1e3&&!t.has(f.key))throw new Error("deferred Codex subagent activity exceeded 1000 entries");let _=t.get(f.key);t.set(f.key,{...f,sequence:_?.sequence??o++,parentFrames:_?.parentFrames??[],childFrames:_?.childFrames??[]}),e("codex.subagent_activity_parent_unresolved",{phase:"deferred",parent_thread_id:f.parentThreadId,child_thread_id:f.childThreadId??null,item_id:f.itemId??null,method:l});return}if(!Va(m,l,p,e))throw new Error(`Codex subagent activity owner dispatch failed for ${f.parentThreadId}`);u(c)},reconcile:c=>{u(c)},setEnabled:c=>{if(!c&&r&&t.size>0){let l=[...t.values()],p=new Map(l.map(_=>[_.key,_.childFrames.filter(({method:b})=>y0.has(b))])),f=new Map(l.map(_=>[_.key,_.parentFrames.filter(({method:b})=>y0.has(b))])),g=new Set,m=_=>{if(g.has(_.key))return;g.add(_.key);let b=d(_.parentThreadId,_.key);b!==void 0&&m(b)};for(let _ of l){let b=p.get(_.key)?.length??0,w=f.get(_.key)?.length??0;_.activityPending&&b===0&&w===0&&m(_),b>0&&m(_),w>0&&(d(_.parentThreadId,_.key)!==void 0||_.childFrames.length>0)&&m(_)}for(let _ of l){e("codex.subagent_activity_parent_unresolved",{phase:"feature_disabled",parent_thread_id:_.parentThreadId,child_thread_id:_.childThreadId??null,item_id:_.itemId??null,method:_.method,buffered_frame_count:_.parentFrames.length+_.childFrames.length});let b=p.get(_.key)??[];if(_.parentFrames.length===0&&b.length===0&&!g.has(_.key))t.delete(_.key);else{let w=g.has(_.key)?_.childFrames:b;t.set(_.key,{..._,activityPending:g.has(_.key),childFrames:w})}}}r=c},close:()=>{for(let c of t.values())e("codex.subagent_activity_parent_unresolved",{phase:"runner_close",parent_thread_id:c.parentThreadId,child_thread_id:c.childThreadId??null,item_id:c.itemId??null,method:c.method,buffered_frame_count:c.parentFrames.length+c.childFrames.length});t.clear()}}}async function Bqe(e){return e.closePromise!==void 0||(e.closePromise=(async()=>{let n=[];e.removeHandlers?.(),e.removeHandlers=void 0;for(let t of[...e.actions].reverse())try{await t()}catch(r){n.push(r instanceof Error?r:new Error(String(r)))}if(e.actions.splice(0),n[0]!==void 0)throw n[0]})()),e.closePromise}async function SZ(e){let n=new Map,t=[!1,!0];for(let r of t){let o=await e.request("thread/list",{limit:50,sortKey:"updated_at",sortDirection:"desc",sourceKinds:["subAgentThreadSpawn"],archived:r,useStateDbOnly:!0});if("error"in o)throw new Error(`thread/list failed: ${o.error.message}`);let s=E(o.result)?.data;if(!Array.isArray(s))throw new Error("thread/list result.data must be an array");if(!s.every(ne))throw new Error("thread/list result.data entries must be objects");for(let a of s){let d=fQ(a),u=Kqe(a,r);n.has(d)||n.set(d,u)}}return Array.from(n.values()).sort(Vqe)}function Qs(e,n,t){let r=n.flatMap(i=>{let s=e[i];if(s==null)return[];if(typeof s!="string")throw new Error(`thread/list ${t} must be a string (${i})`);return[s]}),o=r[0];if(o!==void 0&&r.some(i=>i!==o))throw new Error(`thread/list ${t} aliases disagree`);return o}function uM(e,n,t){if(e!==void 0&&n!==void 0&&e!==n)throw new Error(`thread/list ${t} source and thread values disagree`);return e??n}function Jqe(e){let n=Qs(e,["parentThreadId","parent_thread_id"],"parent thread id"),t=Qs(e,["agentNickname","agent_nickname"],"agent nickname"),r=Qs(e,["agentRole","agent_role"],"agent role"),o={...n===void 0?{}:{parentThreadId:n},...t===void 0?{}:{agentNickname:t},...r===void 0?{}:{agentRole:r}},i=e.source;if(typeof i=="string"){if(i==="subAgentThreadSpawn"&&(n===void 0||n.trim()===""))throw new Error("thread/list subagent spawn requires a parent thread id");return{source:i,...o}}let s=E(i);if(s===void 0)throw new Error("thread/list thread source must be a string or object");let a=Qs(s,["custom"],"custom source");if(a!==void 0)return{source:a,...o};let d=Qs(s,["internal"],"internal source");if(d!==void 0)return{source:d,...o};let u=[s.subAgent,s.subagent].filter(b=>b!==void 0);if(u.length!==1)throw new Error("thread/list structured source requires exactly one subAgent/subagent value");let c=u[0];if(c==="review")return{source:"subAgentReview",...o};if(c==="compact")return{source:"subAgentCompact",...o};if(c==="memory_consolidation")return{source:"subAgentOther",...o};let l=E(c);if(l===void 0)throw new Error("thread/list subagent source has an unknown shape");let p=[E(l.thread_spawn),E(l.threadSpawn)].filter(b=>b!==void 0),f=p[0];if(f===void 0){if(Qs(l,["other"],"subagent other source")!==void 0)return{source:"subAgentOther",...o};throw new Error("thread/list subagent source has an unknown shape")}if(p.length!==1)throw new Error("thread/list subagent source has conflicting spawn variants");let g=uM(Qs(f,["parent_thread_id","parentThreadId"],"subagent parent thread id"),n,"parent thread id");if(g===void 0||g.trim()==="")throw new Error("thread/list subagent spawn requires a parent thread id");let m=uM(Qs(f,["agent_nickname","agentNickname"],"subagent nickname"),t,"agent nickname"),_=uM(Qs(f,["agent_role","agentRole"],"subagent role"),r,"agent role");return{source:"subAgentThreadSpawn",parentThreadId:g,...m===void 0?{}:{agentNickname:m},..._===void 0?{}:{agentRole:_}}}function Kqe(e,n){let t=fQ(e),r=E(e.gitInfo),o=y(e.preview)??"",i=y(e.name)??"",s=y(e.title)??(i===""?o:i),a=y(e.description)??y(e.summary)??o;return{id:t,title:s??"",description:a??"",preview:o.replace(/\s+/g," ").trim(),cwd:y(e.cwd)??"",...Jqe(e),createdAt:kZ(e.createdAt),updatedAt:kZ(e.updatedAt),archived:n,modelProvider:y(e.modelProvider)??"",cliVersion:y(e.cliVersion)??"",gitBranch:y(r?.branch)??"",gitOriginUrl:y(r?.originUrl)??"",path:y(e.path)??""}}function fQ(e){let n=e.id;if(typeof n!="string"||n.trim()==="")throw new Error("thread/list thread id must be a non-empty string");return n}function kZ(e){return typeof e=="number"&&Number.isFinite(e)?new Date(e*1e3).toISOString():y(e)??""}function Vqe(e,n){let t=E(e),r=E(n),o=Date.parse(y(t?.createdAt)??y(t?.updatedAt)??""),i=Date.parse(y(r?.createdAt)??y(r?.updatedAt)??"");return CZ(o)-CZ(i)}function CZ(e){return Number.isFinite(e)?e:Number.MAX_SAFE_INTEGER}function Wqe(e){if("error"in e)throw new Error(`thread/start failed: ${e.error.message}`);return y(E(E(e.result)?.thread)?.id)}function Ro(e){let n=e?.trim();return n===void 0||n===""?void 0:n}function IM(e){let n=Ro(e.projectSharedInstructions),t=Ro(e.projectPersonalInstructions),r=Ro(e.projectMemory);return{projectBound:e.projectId!==void 0||e.projectPublicId!==void 0||n!==void 0||t!==void 0||r!==void 0,projectSharedInstructions:n,projectPersonalInstructions:t,projectMemory:r}}function Hqe(e){return($e(e)??[]).flatMap(t=>{let r=E(t),o=y(r?.runnerId);return o===void 0?[]:[{runnerId:o,version:y(r?.version)??null}]})}function TZ(e){if(e===void 0)return{type:"missing"};let n=E(e);if(n===void 0)return{type:"invalid",reason:"runner_config_not_object"};let t=$e(n.allowedCwds);if(t===void 0)return{type:"invalid",reason:"allowed_cwds_not_array"};let r=[];for(let[s,a]of t.entries()){let d=y(a);if(d===void 0)return{type:"invalid",reason:`allowed_cwd_${s}_not_string`};r.push(d)}let o=n.configVersion,i=o==null?null:Y(o);return i===void 0?{type:"invalid",reason:"config_version_not_integer"}:{type:"ok",config:{allowedCwds:r,configVersion:i}}}function Hh(e){let n=E(e),t=E(n?.runner_config);if(t===void 0||!Object.prototype.hasOwnProperty.call(t,"multiAgentJobsEnabled"))return!1;let r=t.multiAgentJobsEnabled;if(typeof r!="boolean")throw new Error("runner_config.multiAgentJobsEnabled must be a boolean when present");return r}function cM(e){let n=E(e),t=E(n?.runner_config);if(t===void 0||!Object.prototype.hasOwnProperty.call(t,"documentSurfacesEnabled"))return!1;let r=t.documentSurfacesEnabled;if(typeof r!="boolean")throw new Error("runner_config.documentSurfacesEnabled must be a boolean when present");return r}function PZ(e){let n=e.linzumiAgentMcpToken??e.codingJobMcpToken;return n===void 0?!1:Rf(n)}function Gqe(e){let n=E(e);if(E(n?.runner_config)?.rosterEnabled!==!0)return;let r=E(n?.roster),o=r===void 0?void 0:$e(r.threads);if(o===void 0)return;let i=[],s=0;for(let a of o){let d=E(a),u=y(d?.kandan_thread_id);if(u===void 0){s+=1;continue}let c=y(d?.last_activity_at),l=c===void 0?Number.NaN:Date.parse(c),p=d?.channel_id,f=Y(p),g=y(p)??(f===void 0?null:String(f));i.push({kandanThreadId:u,providerSessionKey:y(d?.provider_session_key)??null,channelId:g,title:y(d?.title)??null,channelSlug:y(d?.channel_slug)??null,cwd:y(d?.cwd)??null,lastActivityAtMs:Number.isNaN(l)?null:l})}return{threads:i,truncated:r?.truncated===!0,skippedEntries:s}}function Zqe(e){return e.appliedModel!==void 0||e.appliedApprovalPolicy!==void 0||e.appliedReasoningEffort!==void 0||e.controlSandbox!==void 0}function Qqe(e){if(e.debugTrace===void 0)return;let n=new Date().toISOString();return ML({dir:e.debugTrace.dir,contentMode:e.debugTrace.contentMode,runId:[n,"pid",String(process.pid),"runner",e.runnerId].join("-"),manifest:{pid:process.pid,argv:OL(process.argv),runnerId:e.runnerId,cwd:e.cwd,kandanUrl:e.kandanUrl,workspaceSlug:e.workspaceSlug??null,threadProcess:e.threadProcess??null,fast:e.fast===!0,startedAt:n}})}function RM(e){let n=e.launchTui&&e.consoleReporter===void 0?void 0:(r,o)=>{e.launchTui||aA(r,o),e.consoleReporter?.(r,o)},t=e.logFile??y_();return t8(t),mb("runner_process"),pF(t,n)}function n6e(e,n,t,r){let o=iG({steps:{stopAccepting:()=>{n.stopAccepting()},interruptInFlightTurns:()=>n.interruptInFlightTurns().catch(s=>{t("runner.drain_interrupt_states_failed",{message:s instanceof Error?s.message:String(s)})}),checkpointCurrentTurn:()=>{},flushInboundQueues:()=>{n.flushInboundQueues()},flushOutbox:()=>e().catch(()=>{})},deadlineMs:Xqe,log:(s,a)=>t(s,a),exit:(s,a)=>{let d=Y5(a),u={log:(c,l)=>t(c,l)};Gv({trigger:d},u),XA({signal:a,stop:r?.supervisorStop,finishExit:()=>n8(s,{trigger:d,stdinWasTty:process.stdin.isTTY===!0,stdoutWasTty:process.stdout.isTTY===!0},{sinks:u})})},signals:r?.signals??["SIGTERM","SIGINT","SIGHUP"]}),i=()=>{e().catch(()=>{})};return process.once("exit",i),{uninstall:()=>{o.uninstall(),process.off("exit",i)},triggerFastExitDrain:s=>o.trigger(s)}}async function t6e(e,n,t){try{return e()}catch(r){if(!NE(r))throw r;t("runner.lock_held_by_live_process",{runnerId:n.runnerId,heldByRunnerId:r.heldBy.runnerId,heldByPid:r.heldBy.pid,lockPath:r.lockPath});let o=n.lockTakeover,i=RZ(r.lockPath,o?.takeover,t),s=_u(r.heldBy,i.isPidAlive,()=>new Date(i.now()));if(MV(r.heldBy,Xt,n.launchSource,s)){t("runner.lock_auto_takeover_for_update",{runnerId:n.runnerId,heldByRunnerId:r.heldBy.runnerId,heldByPid:r.heldBy.pid,lockPath:r.lockPath,fromVersion:r.heldBy.cliVersion,toVersion:Xt,launchSource:Uv,holderState:s.state});let c=o?.prompt??IZ(o);return await HE({holder:r.heldBy,lockPath:r.lockPath,baseMessage:r.message,takeOverWithoutPrompt:!0,prompt:c,takeover:i}),e()}if(!XV(o))throw r;let a=o.prompt??IZ(o),d=RZ(r.lockPath,o.takeover,t);if((await HE({holder:r.heldBy,lockPath:r.lockPath,baseMessage:r.message,takeOverWithoutPrompt:o.takeOverWithoutPrompt===!0,prompt:a,takeover:d})).outcome==="declined")throw new Dh;return t("runner.lock_takeover_interactive",{runnerId:n.runnerId,heldByRunnerId:r.heldBy.runnerId,heldByPid:r.heldBy.pid,lockPath:r.lockPath}),e()}}function IZ(e){return{isInteractive:()=>e?.forceNonInteractive!==!0&&Mh()&&process.stdin.isTTY===!0&&process.stderr.isTTY===!0,writeReport:n=>{process.stderr.write(`${n}
1626
+ `)},promptYesNo:n=>r6e(n)}}function r6e(e){return new Promise(n=>{let t=M$e({input:process.stdin,output:process.stderr});t.question(e,r=>{t.close(),n(/^y(es)?$/i.test(r.trim()))})})}function RZ(e,n,t){return{isPidAlive:n?.isPidAlive??o6e,signalPid:n?.signalPid??((r,o)=>{process.kill(r,o)}),lockReleased:n?.lockReleased??(()=>!cp(e)),currentLockOwner:n?.currentLockOwner??(()=>gu(e)),sleep:n?.sleep??GV,now:n?.now??(()=>Date.now()),log:n?.log??((r,o)=>{t(r,o),ye(r,o)})}}function o6e(e){try{return process.kill(e,0),!0}catch(n){return(n!==null&&typeof n=="object"&&"code"in n?n.code:void 0)!=="ESRCH"}}function i6e(e,n,t,r,o,i){let s=d6e(n,r,o,i);ye("process.spawn",{command:e,args:s,cwd:t,purpose:"codex.tui"});let a=C0(e,s,{cwd:t,env:process.env,stdio:"inherit"});return ye("process.spawned",{command:e,args:s,cwd:t,pid:a.pid,purpose:"codex.tui"}),a.once("exit",(d,u)=>{ye("process.exit",{command:e,args:s,cwd:t,pid:a.pid,code:d,signal:u,purpose:"codex.tui"})}),a}async function s6e(e){await Promise.all(Array.from(e,n=>n.handleKandanReconnect()))}function a6e(e,n){if(!Array.isArray(e))return;let t=e.find(r=>ne(r)&&typeof r.name=="string"&&r.name.toLowerCase()===n.toLowerCase()&&typeof r.value=="string");return ne(t)&&typeof t.value=="string"?t.value:void 0}function d6e(e,n,t,r){let o=c6e(t,r);return n===void 0?["--remote",e,...o]:["resume","--remote",e,...o,n]}function u6e(e,n){let t=new Set(n);return e!==void 0&&t.add(e),Array.from(t).sort((r,o)=>r-o)}function CM(e){let n=new URL(e);if(n.port==="")return;let t=Number.parseInt(n.port,10);if(!Number.isInteger(t)||t<=0||t>65535)throw new Error(`invalid Kandan URL port: ${e}`);return t}function c6e(e,n){let t=e?.model===void 0?[]:["--model",e.model],r=e?.reasoningEffort===void 0?[]:["-c",`model_reasoning_effort="${e.reasoningEffort}"`],o=n===!0?["-c",'service_tier="fast"']:[];return[...t,...r,...o]}async function l6e(e,n){let t=await e.request("thread/resume",{threadId:n});if(!("error"in t))return;if(!t.error.message.includes("no rollout found"))throw new Error(`failed to prepare Codex TUI resume: ${t.error.message}`);let r=await e.request("thread/inject_items",{threadId:n,items:[{type:"agentMessage",text:""}]});if("error"in r)throw new Error(`failed to prepare Codex TUI resume: ${r.error.message}`);let o=await e.request("thread/resume",{threadId:n});if("error"in o)throw new Error(`failed to verify Codex TUI resume: ${o.error.message}`)}async function p6e(e,n,t,r){if(t.workspace===void 0||t.channel===void 0||t.threadId===void 0)return[];try{let o=await e.push(n,"session:thread_context",{workspace:t.workspace,channel:t.channel,thread_id:t.threadId});if(ne(o)&&o.status==="ok"&&ne(o.response))return ux(o.response.messages);r("kandan.reconnect_thread_context_fetch_failed",{thread_id:t.threadId,reply:JSON.stringify(o).slice(0,300)})}catch(o){r("kandan.reconnect_thread_context_fetch_failed",{thread_id:t.threadId,message:o instanceof Error?o.message:String(o)})}return[]}async function m6e(e,n,t,r){if(!(t.workspace===void 0||t.channel===void 0||t.threadId===void 0))try{let o=[],i,s,a,d=0;for(let u=0;u<f6e;u+=1){let c=await e.push(n,"session:thread_transcript",{workspace:t.workspace,channel:t.channel,thread_id:t.threadId,...a===void 0?{}:{cursor:a}});if(!ne(c)||c.status!=="ok"||!ne(c.response))return r("kandan.reconnect_thread_transcript_fetch_failed",{thread_id:t.threadId,page:u,reply:JSON.stringify(c).slice(0,300)}),u===0?void 0:{nodes:o,budget:i,threadTitle:s};let l=xK(c.response);if(l===void 0)return u===0?void 0:{nodes:o,budget:i,threadTitle:s};i=i??l.budget,s=s??l.threadTitle,o=[...l.nodes,...o],d+=l.nodes.reduce((g,m)=>m.kind==="reasoning"?g:g+m.body.length,0);let p=i?.maxEmissionTokens,f=p!==void 0&&d/4>=p;if(!l.hasMore||l.cursor===void 0||f)break;a=l.cursor}return{nodes:o,budget:i,threadTitle:s}}catch(o){r("kandan.reconnect_thread_transcript_fetch_failed",{thread_id:t.threadId,message:o instanceof Error?o.message:String(o)})}}async function EZ(e,n,t,r,o,i){i("kandan.reconnect_thread_unarchive_started",{codex_thread_id:n,discovered_by:r,message:o});try{let s=await Si("thread/unarchive",e.request("thread/unarchive",{threadId:n}));if("error"in s)throw new Error(`thread/unarchive failed: ${s.error.message}`);let a=await Si("thread/resume",e.request("thread/resume",t));if("error"in a)throw new Error(`thread/resume after unarchive failed: ${a.error.message}`);return i("kandan.reconnect_thread_unarchive_resumed",{codex_thread_id:n,discovered_by:r}),{mode:"resumed"}}catch(s){let a=s instanceof Error?s.message:String(s);throw i("kandan.reconnect_thread_unarchive_failed",{codex_thread_id:n,discovered_by:r,archive_error:o,message:a}),new Error(r==="forced_inject_not_found"?`thread/inject_items failed: ${o}; archive recovery failed: ${a}`:a)}}async function y6e(e,n,t,r){let o={threadId:n,...t},i;if(r.forceRehydrate===!0)i="the server marked the durable engine session dead after an acknowledged-but-unexecuted turn";else{let a=await Si("thread/resume",e.request("thread/resume",o));if(!("error"in a))return{mode:"resumed"};if(h6e(a.error.message))return await EZ(e,n,o,"resume_archived",a.error.message,r.log);i=a.error.message}r.log(r.forceRehydrate===!0?"kandan.reconnect_thread_rehydrate_forced":"kandan.reconnect_thread_resume_failed",{codex_thread_id:n,message:i,forced:r.forceRehydrate===!0,rehydrating:!0});let s;try{let a;try{a=await r.buildRehydrationItems?.(i)}catch(c){r.log("kandan.reconnect_thread_rehydration_items_failed",{codex_thread_id:n,message:c instanceof Error?c.message:String(c)}),a=void 0}let d=a!==void 0&&a.length>0?[...a]:[{type:"agentMessage",text:await r.buildRehydrationText(i)}],u=await Si("thread/inject_items",e.request("thread/inject_items",{threadId:n,items:d}));if("error"in u){if(r.forceRehydrate===!0&&g6e(u.error.message))return await EZ(e,n,o,"forced_inject_not_found",u.error.message,r.log);s=`thread/inject_items failed: ${u.error.message}`}else{let c=await Si("thread/resume",e.request("thread/resume",o));"error"in c&&(s=`rehydrated thread/resume failed: ${c.error.message}`)}}catch(a){s=a instanceof Error?a.message:String(a)}if(s!==void 0)throw r.log("kandan.reconnect_thread_rehydration_failed",{codex_thread_id:n,resume_failure:i,rehydration_failure:s}),new Error(`could not resume this thread's engine session (${i}) and rebuilding a fresh session from the thread transcript also failed (${s})`);return r.log("kandan.reconnect_thread_rehydrated",{codex_thread_id:n,resume_failure:i}),{mode:"rehydrated",resumeFailure:i}}async function _6e(e,n,t,r,o){let i="agent_provider_unavailable:codex";if(o("kandan.start_instance_codex_app_server_unavailable",{controlType:r.type,thread_id:ro(r)??null,instanceId:t}),r.type==="start_instance"||r.type==="reconnect_thread")try{await oo(e,n,r,"failed",i,{instanceId:t,failureClass:"engine_unavailable"})}catch(s){o("kandan.start_instance_unavailable_state_push_failed",{agent_provider:"codex",message:s instanceof Error?s.message:String(s)})}throw new Error(i)}async function lM(e,n,t,r,o,i,s,a,d,u,c,l,p,f,g,m,_,b,w,v,S,C,T,P,O,R,j,B){if(e===void 0)switch(m.type){case"remote_codex_exec":case"remote_codex_exec_cancel":return await pM(m,r,a.value,d,u,_);case"list_agent_slash_commands":case"resolve_claude_user_input_request":case"deny_claude_user_input_request":case"resolve_codex_user_input_request":case"deny_codex_user_input_request":break;case"compact_thread":case"review_thread":if(m.agentProvider!=="claude-code")return{instanceId:r,controlType:m.type,requestId:m.requestId.trim()||null,ok:!1,error:"agent_provider_unavailable:codex"};break;case"clone_repository":break;case"set_workspace_viewport":break;case"start_instance":case"reconnect_thread":{let D=ap(m);if(D.type==="ok"&&D.provider==="claude-code"||v!==void 0)break;return await _6e(n,t,r,m,_)}default:return{instanceId:r,controlType:m.type,requestId:"requestId"in m?y(m.requestId)??null:null,ok:!1,error:"agent_provider_unavailable:codex"}}let K=()=>{if(e===void 0)throw new Error("shared codex app-server connection is unavailable");return e};switch(m.type){case"set_workspace_viewport":return Tqe(o.kandanUrl,m.url),{instanceId:r,controlType:m.type,ok:!0,url:m.url};case"compact_thread":{let D=m.requestId.trim(),J=y(m.providerSessionKey)?.trim()??"",W=m.agentProvider??"codex";if(D==="")return{instanceId:r,controlType:m.type,requestId:null,ok:!1,error:"request_id_required"};if(W!=="codex")return{instanceId:r,controlType:m.type,requestId:D,ok:!1,error:`agent_compaction_unsupported:${W}`};if(J==="")return{instanceId:r,controlType:m.type,requestId:D,ok:!1,error:"provider_session_key_required"};let H=await K().request("thread/compact/start",{threadId:J});return"error"in H?{instanceId:r,controlType:m.type,requestId:D,ok:!1,error:`codex_compaction_failed:${H.error.message}`}:{instanceId:r,controlType:m.type,requestId:D,ok:!0,threadId:m.threadId,providerSessionKey:J}}case"start_instance":{let D=no(m.cwd,a.value),J=ap(m),W="starting_codex_session",H;switch(J.type){case"ok":break;case"unsupported":return{instanceId:r,controlType:m.type,ok:!1,error:`agent_provider_unsupported:${J.value}`}}let X=J.provider;if(!D.ok){_("kandan.start_instance_cwd_rejected",{thread_id:ro(m)??null,reason:D.reason,allowedCwdCount:a.value.length});try{await JZ(n,t,m,D.reason,a.value,{instanceId:r})}catch(we){_("kandan.start_instance_cwd_failed_state_push_failed",{reason:D.reason,message:we instanceof Error?we.message:String(we)})}return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:D.reason,allowedCwds:a.value}}let be=await s(X),Re=g0({agentProvider:X,modelProvider:y(m.modelProvider),model:y(m.model),modelTransportCatalogStatus:SM(m,_),llmProxyBinding:wM(m.llmProxy),hasNativeCodexAuth:be.hasNativeCodexAuth},Ma,be.agentProviders);if(Re.type==="blocked"){_("linzumi.start_instance_model_account_preflight_rejected",{agent_provider:X,model_provider:y(m.modelProvider)??null,model:y(m.model)??"default",reason:Re.code,discriminator:Re.reason});try{await oo(n,t,m,"failed",Re.message,{instanceId:r,failureClass:"provider_binding_rejected",modelAccountRejection:{identity:Re.identity,reason:Re.reason}})}catch(we){_("linzumi.start_instance_model_account_state_push_failed",{message:we instanceof Error?we.message:String(we)})}return{instanceId:r,controlType:m.type,ok:!1,error:Re.code}}let ie=Wa(m,"processing",`starting ${R6e(X)} session`,{instanceId:r});ie!==void 0&&n.push(t,"message_state",ie).catch(we=>{_("kandan.start_instance_processing_state_push_failed",{message:we instanceof Error?we.message:String(we)})});try{let we=await v?.(m,D.cwd);if(we!==void 0)return we;if(X==="codex"){let Oe=OZ(o,m);if(Oe!==void 0){try{await oo(n,t,m,"failed",Oe,{instanceId:r,failureClass:"provider_binding_rejected"})}catch(bn){_("kandan.start_instance_wafer_state_push_failed",{message:bn instanceof Error?bn.message:String(bn)})}return{instanceId:r,controlType:m.type,ok:!1,error:Oe}}}return X==="claude-code"?(W="starting_claude_code_session",(await jZ({kandan:n,topic:t,control:m,options:o,log:_,debugTrace:b,instanceId:r,cwd:D.cwd,matchedRoot:D.matchedRoot,activeClaudeCodeSessions:c,pendingClaudeCodeApprovals:l,pendingClaudeCodeUserQuestions:p,ensureClaudeCodeForwardPortSession:f,disposeClaudeCodeForwardPortSession:g,resumeSessionId:Ro(m.resumeSessionId),leaseEpochFor:C,onLiveSourceSeqAccepted:T,onUndeliveredFollowUpsAtClose:O,claudeThreadAccessStore:B,setStartupStage:bn=>{W=bn}})).controlResponse):(await yQ({codex:K(),kandan:n,topic:t,control:m,options:o,instanceId:r,cwd:D.cwd,matchedRoot:D.matchedRoot,onStartedThread:w,startAgentReplayCodex:S,setStartupStage:Oe=>{W=Oe},setStartedCodexThreadId:Oe=>{H=Oe}})).controlResponse}catch(we){let qe=AZ(W,we);_("kandan.start_instance_failed",{stage:W,message:we instanceof Error?we.message:String(we),thread_id:fn(m,"threadId")??null,source_seq:Y(m.sourceSeq)??Y(m.rootSeq)??null,codex_thread_id:H??null});try{X==="claude-code"?await BZ({kandan:n,topic:t,control:m,failureReason:qe,rawFailureText:we instanceof Error?we.message:String(we),failureClass:fM(W),codexThreadId:H,instanceId:r,log:_}):await oo(n,t,m,"failed",qe,{codexThreadId:H,instanceId:r,failureClass:fM(W)})}catch{}throw we}}case"reconnect_thread":{let D=no(m.cwd,a.value),J=ap(m),W=y(m.transportCeilingRecoveryRequestId),H="starting_codex_session";if(!D.ok){try{await JZ(n,t,m,D.reason,a.value,{instanceId:r})}catch(un){_("kandan.reconnect_thread_cwd_failed_state_push_failed",{reason:D.reason,message:un instanceof Error?un.message:String(un)})}return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:D.reason,allowedCwds:a.value}}switch(J.type){case"ok":break;case"unsupported":return{instanceId:r,controlType:m.type,ok:!1,error:`agent_provider_unsupported:${J.value}`}}let X=J.provider,be=await s(X),Re=g0({agentProvider:X,modelProvider:y(m.modelProvider),model:y(m.model),modelTransportCatalogStatus:SM(m,_),llmProxyBinding:wM(m.llmProxy),hasNativeCodexAuth:be.hasNativeCodexAuth},Ma,be.agentProviders);if(Re.type==="blocked"){_("linzumi.reconnect_thread_model_account_preflight_rejected",{agent_provider:X,model_provider:y(m.modelProvider)??null,model:y(m.model)??"default",reason:Re.code,discriminator:Re.reason});try{await oo(n,t,m,"failed",Re.message,{instanceId:r,failureClass:"provider_binding_rejected",modelAccountRejection:{identity:Re.identity,reason:Re.reason}})}catch(un){_("linzumi.reconnect_thread_model_account_state_push_failed",{message:un instanceof Error?un.message:String(un)})}return{instanceId:r,controlType:m.type,ok:!1,error:Re.code}}let ie=Ro(m.codexThreadId);if(ie===void 0)return{instanceId:r,controlType:m.type,ok:!1,error:"missing_codex_thread_id"};let we=Ro(m.workDescription),qe=await v?.(m,D.cwd);if(qe!==void 0)return qe;if(X==="codex"){let un=OZ(o,m);if(un!==void 0)return{instanceId:r,controlType:m.type,ok:!1,error:un}}if(X==="claude-code"){let un=c.get(ie);if(un!==void 0&&we!==void 0){let je=Y(m.rootSeq),Xe=Y(m.sourceSeq)??je,_e=ae=>{let pe=ae.disposition==="parked"?Wa(m,"queued",rl(ae.queuePosition),{instanceId:r,codexThreadId:ie}):Wa(m,"processing","queued Claude Code input",{instanceId:r,codexThreadId:ie});pe!==void 0&&n.push(t,"message_state",pe).catch(Te=>{_("kandan.reconnect_thread_queue_state_push_failed",{message:Te instanceof Error?Te.message:String(Te)})})},q=vi($e(m.attachments)??[]),F=await DC({cwd:D.cwd,kandanUrl:o.kandanUrl,token:o.token,fetch:o.fetch,attachmentDirectoryName:"local-claude-code-attachments"},{seq:Xe,body:we,attachments:q}).then(ae=>({ok:!0,content:ae})).catch(ae=>({ok:!1,error:ae}));if(!F.ok){let ae=F.error instanceof Error?F.error.message:String(F.error),pe=`Claude Code input attachment download failed: ${ae}`;try{await oo(n,t,m,"failed",pe,{instanceId:r,codexThreadId:ie,failureClass:"attachment_download_failed"})}catch(Te){_("kandan.reconnect_thread_queue_failed_state_push_failed",{message:Te instanceof Error?Te.message:String(Te)})}return{instanceId:r,controlType:m.type,agentProvider:"claude-code",ok:!1,error:"claude_code_attachment_download_failed",message:ae}}let z=fn(m,"threadId"),V=fn(m,"channel");if(Xe!==void 0&&z!==void 0&&V!==void 0&&P?.(V,z,{seq:Xe,type:"thread.message",actorKind:void 0,actorSlug:void 0,actorUserId:void 0,threadId:z,threadTitle:void 0,replyToSeq:Y(m.rootSeq),localRunnerEventType:void 0,body:we,attachments:q,traceparent:y(m.traceparent)}),V!==void 0&&z!==void 0&&R?.({channel:V,threadId:z,sourceSeq:Xe,transportCeilingRecoveryRequestId:W})===!0)return _("claude_code.message_duplicate_ignored",{linzumi_thread_id:z,claude_session_id:ie,body_preview:Pu(we),source_seq:Xe??null}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",cwd:D.cwd,matchedRoot:D.matchedRoot,codexThreadId:ie,queuedInput:!0,duplicate:!0};await dm({cwd:D.cwd,threadKey:un.threadId,turnRef:Xe===void 0?`followup-${Date.now()}`:`seq-${Xe}`,log:(ae,pe)=>_(ae,pe)});try{let ae=un.enqueueInput({content:F.content,sourceSeq:Xe});if(ae==="duplicate")return _("claude_code.message_duplicate_ignored",{linzumi_thread_id:fn(m,"threadId")??null,claude_session_id:ie,body_preview:Pu(we),source_seq:Xe??null}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",cwd:D.cwd,matchedRoot:D.matchedRoot,codexThreadId:ie,queuedInput:!0,duplicate:!0};_e(ae),_("claude_code.message_queued",{linzumi_thread_id:fn(m,"threadId")??null,claude_session_id:ie,body_preview:Pu(we),message_received_at_ms:Date.now(),source_seq:Xe??null}),b?.record("commander","claude.input_queued",{linzumiThreadId:fn(m,"threadId")??null,claudeSessionId:ie,sourceSeq:Xe??null,bodyPreview:Pu(we)})}catch(ae){let pe=ae instanceof Error?ae.message:String(ae),Te=`Claude Code input queue closed: ${pe}`;try{await oo(n,t,m,"failed",Te,{instanceId:r,codexThreadId:ie,failureClass:"claude_input_queue_closed"})}catch(Z){_("kandan.reconnect_thread_queue_closed_state_push_failed",{message:Z instanceof Error?Z.message:String(Z)})}return{instanceId:r,controlType:m.type,agentProvider:"claude-code",ok:!1,error:"claude_code_session_closed",message:pe}}if(Xe!==void 0){let ae=Xe,pe=un,Te="Claude Code session did not respond after resume - send your message again to start fresh",Z=j;Db({windowMs:Z?.windowMs??uh(process.env),isDelivered:()=>pe.inputDelivered(ae),isSessionClosed:()=>Pi(c,[ie],[pe.threadId])===void 0,lastSdkActivityMs:()=>pe.lastSdkActivityMs(),hasPendingBlockingRequest:()=>tg({threadId:pe.threadId,pendingApprovals:l,pendingQuestions:p}),log:_,onWedged:de=>{let ue=Z?.recordWedge(pe.threadId,ae)??Number.MAX_SAFE_INTEGER;_("claude_code.dispatch_liveness_wedged",{linzumi_thread_id:pe.threadId,claude_session_id:ie,source_seq:ae,waited_ms:de.waitedMs,cause:de.cause,attempt:Z===void 0?null:ue,dispatch:"queued_input"});let en=()=>{Z?.clear(pe.threadId,ae),oo(n,t,m,"failed",Te,{instanceId:r,codexThreadId:ie,failureClass:"claude_dispatch_wedged"}).catch(Ye=>{_("claude_code.dispatch_wedged_state_push_failed",{linzumi_thread_id:pe.threadId,source_seq:ae,message:Ye instanceof Error?Ye.message:String(Ye)})})};if(Z!==void 0&&ue===1){oo(n,t,m,"processing","restarting Claude Code session to recover this message",{instanceId:r,codexThreadId:ie}).catch(()=>{}),Z.killAndRespawn({threadId:pe.threadId,claudeSessionId:ie,reason:`claude_dispatch_liveness: no SDK output within ${de.waitedMs}ms of queued input (seq ${ae})`}).then(Ye=>{Ye==="no_replay_path"&&en()}).catch(Ye=>{_("claude_code.dispatch_supervisor_respawn_failed",{linzumi_thread_id:pe.threadId,source_seq:ae,message:Ye instanceof Error?Ye.message:String(Ye)}),en()});return}en()}})}return{instanceId:r,controlType:m.type,agentProvider:"claude-code",cwd:D.cwd,matchedRoot:D.matchedRoot,codexThreadId:ie,queuedInput:!0}}if(un!==void 0)return{instanceId:r,controlType:m.type,agentProvider:"claude-code",ok:!1,error:"claude_code_active_session_requires_work_description"};{let je=fn(m,"threadId"),Xe=fn(m,"channel"),_e=Y(m.sourceSeq)??Y(m.rootSeq);if(we!==void 0&&je!==void 0&&Xe!==void 0&&_e!==void 0&&R?.({channel:Xe,threadId:je,sourceSeq:_e,transportCeilingRecoveryRequestId:W})===!0)return _("claude_code.replayed_turn_already_applied_ignored",{linzumi_thread_id:je,claude_session_id:ie,body_preview:Pu(we),source_seq:_e,replayed:m.replayed===!0}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",cwd:D.cwd,matchedRoot:D.matchedRoot,codexThreadId:ie,queuedInput:!0,duplicate:!0}}try{let je=Wa(m,"processing","resuming Claude Code session",{instanceId:r,codexThreadId:ie});return je!==void 0&&n.push(t,"message_state",je).catch(_e=>{_("kandan.reconnect_thread_processing_state_push_failed",{message:_e instanceof Error?_e.message:String(_e)})}),H="starting_claude_code_session",(await jZ({kandan:n,topic:t,control:m,options:o,log:_,debugTrace:b,instanceId:r,cwd:D.cwd,matchedRoot:D.matchedRoot,resumeSessionId:ie,activeClaudeCodeSessions:c,pendingClaudeCodeApprovals:l,pendingClaudeCodeUserQuestions:p,ensureClaudeCodeForwardPortSession:f,disposeClaudeCodeForwardPortSession:g,leaseEpochFor:C,onLiveSourceSeqAccepted:T,onUndeliveredFollowUpsAtClose:O,claudeThreadAccessStore:B,setStartupStage:_e=>{H=_e}})).controlResponse}catch(je){let Xe=AZ(H,je);_("kandan.reconnect_thread_failed",{stage:H,message:je instanceof Error?je.message:String(je),thread_id:fn(m,"threadId")??null,source_seq:Y(m.sourceSeq)??Y(m.rootSeq)??null,agent_provider:X,provider_session_key:ie});try{await BZ({kandan:n,topic:t,control:m,failureReason:Xe,rawFailureText:je instanceof Error?je.message:String(je),failureClass:fM(H),codexThreadId:ie,instanceId:r,log:_})}catch{}throw je}}o.codexUrl===void 0&&zb(D.cwd,{configHome:Oa()});let Oe=mp(o,m),bn=w===void 0?void 0:await Si("thread/attach",w(m,D.cwd,ie));if(we!==void 0){let un=Y(m.rootSeq),je=Y(m.sourceSeq)??un;if(bn===void 0||je===void 0)throw new Error("cannot reconnect a Kandan thread without a session");let Xe=fn(m,"channel"),_e=fn(m,"threadId");if(Xe!==void 0&&_e!==void 0&&R?.({channel:Xe,threadId:_e,sourceSeq:je,transportCeilingRecoveryRequestId:W})===!0)return _("kandan.reconnect_thread_seq_already_applied",{linzumi_thread_id:_e,codex_thread_id:ie,source_seq:je}),{instanceId:r,controlType:m.type,cwd:D.cwd,matchedRoot:D.matchedRoot,codexThreadId:ie,duplicate:!0};let q=fn(m,"workspace"),F=await y6e(K(),ie,qf({cwd:D.cwd,fast:Oe.fast,channelSession:{model:Oe.model,reasoningEffort:Oe.reasoningEffort,approvalPolicy:Oe.approvalPolicy,sandbox:Oe.sandbox,sandboxedApprovalNeverDefault:Oe.sandboxedApprovalNeverDefault}}),{forceRehydrate:m.sessionRehydrate===!0,log:_,buildRehydrationItems:async ae=>{let pe=await m6e(n,t,{workspace:q,channel:Xe,threadId:_e},_);if(pe===void 0||pe.nodes.length===0)return;let Te=bK({nodes:pe.nodes,budget:pe.budget,resumeFailure:ae,threadTitle:pe.threadTitle,linzumiContext:wa(m.linzumiContext)});return _("kandan.reconnect_thread_rehydration_ir_emitted",{linzumi_thread_id:_e,codex_thread_id:ie,emitted_nodes:Te.emittedNodeCount,omitted_nodes:Te.omittedNodeCount,redacted_reasoning:Te.redactedReasoningCount,emitted_token_estimate:Te.emittedTokenEstimate,max_emission_tokens:Te.maxEmissionTokens}),Te.items},buildRehydrationText:async ae=>T4({messages:await p6e(n,t,{workspace:q,channel:Xe,threadId:_e},_),resumeFailure:ae,linzumiContext:wa(m.linzumiContext)})});if(F.mode==="rehydrated"){ye("runner.thread_resume_rehydrated",{purpose:"linzumi.thread_runner",threadId:_e??null,codexThreadId:ie,sourceSeq:je,resumeFailure:F.resumeFailure});try{await oo(n,t,m,"processing","rebuilt the coding session from durable thread history after an unresumable engine session",{codexThreadId:ie,instanceId:r})}catch(ae){_("kandan.reconnect_thread_rehydrated_state_push_failed",{message:ae instanceof Error?ae.message:String(ae)})}}let z=Uo(o.token),V=vi($e(m.attachments)??[]);await bn.startThreadMessageTurn({seq:je,body:we,actorSlug:z.actorUsername,actorUserId:z.actorUserId,attachments:V,boundStartTimeout:!0,transportCeilingRecoveryRequestId:W})}return{instanceId:r,controlType:m.type,cwd:D.cwd,matchedRoot:D.matchedRoot,codexThreadId:ie}}case"list_claude_code_sessions":{let D=no(m.cwd,a.value);if(!D.ok)return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:D.reason};if(!i.includes("claude-code"))return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:"agent_provider_unavailable:claude-code"};let J;try{J=await c9({cwd:D.cwd,limit:Y(m.limit),messagesPerSession:Y(m.messagesPerSession),provider:o.claudeCodeSessionHistoryProvider})}catch(W){return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:W instanceof Error?`claude_code_session_history_failed:${W.message}`:"claude_code_session_history_failed"}}return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!0,cwd:D.cwd,matchedRoot:D.matchedRoot,sessions:J}}case"list_agent_slash_commands":{let D=no(m.cwd,a.value);if(!D.ok)return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:D.reason};let J=y(m.agentProvider)??"claude-code";if(J!=="claude-code")return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:`agent_provider_unsupported:${J}`};if(!i.includes("claude-code"))return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:"agent_provider_unavailable:claude-code"};let W=y(m.providerSessionKey),H=W===void 0?void 0:c.get(W);if(H===void 0)return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:"no_active_claude_session"};try{return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!0,cwd:D.cwd,matchedRoot:D.matchedRoot,provider:"claude-code",providerSessionKey:W,commands:await H.slashCommands()}}catch(X){return{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,ok:!1,error:X instanceof Error?`agent_slash_commands_failed:${X.message}`:"agent_slash_commands_failed"}}}case"browse_directory":return $Le(m,o);case"create_project":return FLe(m,o,a);case"clone_repository":return await JLe(m,o,a);case"suggest_tasks":return VLe(m,o,a.value,{kandan:n,topic:t});case"remote_codex_exec":return await pM(m,r,a.value,d,u,_);case"remote_codex_exec_cancel":return await pM(m,r,a.value,d,u,_);case"start_turn":{let D=await s("codex"),J=g0({agentProvider:"codex",modelProvider:void 0,model:void 0,llmProxyBinding:"absent",hasNativeCodexAuth:D.hasNativeCodexAuth},Ma,D.agentProviders);if(J.type==="blocked"){_("linzumi.start_turn_model_account_preflight_rejected",{thread_id:m.threadId,agent_provider:J.identity[0],model_provider:J.identity[1]??null,model:J.identity[2],reason:J.code,discriminator:J.reason});try{await n.push(t,"codex_error",{instanceId:r,message:J.message})}catch(H){throw _("linzumi.start_turn_model_account_error_push_failed",{thread_id:m.threadId,message:H instanceof Error?H.message:String(H)}),H}return{instanceId:r,controlType:m.type,ok:!1,error:J.code}}let W=await K().request("turn/start",{threadId:m.threadId,input:m.input});return{instanceId:r,controlType:m.type,response:W}}case"steer_turn":{let D=Pi(c,[m.providerSessionKey,m.threadId],[m.threadId]);if(D!==void 0){let X=z6e(m.input);if(X===void 0)return{instanceId:r,controlType:m.type,agentProvider:"claude-code",ok:!1,error:"claude_code_steer_requires_text_input"};let be;try{be=D.steerTurn(X)}catch(Oe){let bn=Oe instanceof Error?Oe.message:String(Oe);return _("claude_code.steer_failed",{thread_id:m.threadId,message:bn}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",ok:!1,error:"claude_code_steer_failed",message:bn,threadId:m.threadId}}if(!await P6e(be.applied))return _("claude_code.steer_not_applied",{thread_id:m.threadId,steered:be.steered}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",ok:!1,error:"claude_code_steer_not_applied",message:"The turn finished before the steering message could be applied. Linzumi will retry it as its own message automatically; if nothing happens shortly, send it as a new message.",threadId:m.threadId};let ie=Y(m.sourceSeq),we=y(m.workspace),qe=y(m.channel);return ie!==void 0&&we!==void 0&&qe!==void 0&&n.push(t,"message_state",{workspace:we,channel:qe,thread_id:m.threadId,instance_id:r,seq:ie,status:"processed",reason:xm,agent_provider:"claude-code"}).catch(Oe=>{_("claude_code.steer_terminal_state_push_failed",{thread_id:m.threadId,seq:ie,message:Oe instanceof Error?Oe.message:String(Oe)})}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",steered:be.steered,threadId:m.threadId}}let J=m.providerSessionKey??m.threadId,W=y(m.turnId);if(W===void 0)return{instanceId:r,controlType:m.type,agentProvider:"codex",threadId:m.threadId,ok:!1,error:"codex_steer_target_turn_unknown",message:"No live session tracks this thread, so the running turn cannot be steered from here. Linzumi will run the message as its own turn instead."};let H=await K().request("turn/steer",{threadId:J,expectedTurnId:W,input:um(m.input)});return{instanceId:r,controlType:m.type,response:H}}case"interrupt_turn":{let D=Pi(c,[m.threadId]);if(D!==void 0){let W=await D.interruptTurn("Interrupted by Linzumi");return{instanceId:r,controlType:m.type,agentProvider:"claude-code",interrupted:W,threadId:m.threadId}}let J=await K().request("turn/interrupt",{threadId:m.threadId,turnId:m.turnId??null});return{instanceId:r,controlType:m.type,response:J}}case"rewind_thread":return c.get(m.threadId)!==void 0||m.agentProvider==="claude-code"?{instanceId:r,controlType:m.type,agentProvider:"claude-code",requestId:y(m.requestId)??null,threadId:m.threadId,ok:!1,error:"claude_code_rewind_unsupported",message:"Claude Code does not support rewind yet"}:{instanceId:r,controlType:m.type,requestId:y(m.requestId)??null,threadId:m.threadId,ok:!1,error:"rewind_not_supported",message:"This runner does not support rewinding threads yet"};case"interrupt_queued_messages":{let D=y(m.agentProvider)?.trim();if(D!=="claude-code"){let H=await K().request("turn/interrupt",{threadId:m.threadId,turnId:null});return{instanceId:r,controlType:m.type,response:H}}let J=Pi(c,[m.threadId]);if(J===void 0)return{instanceId:r,controlType:m.type,agentProvider:D,ok:!1,error:"claude_code_session_not_active"};await J.interruptTurn("Claude Code interrupted by Linzumi"),J.abortController.abort(new Error("Claude Code interrupted by Linzumi"));let W=Y(m.throughSeq)??J.currentSourceSeq();if(W!==void 0)try{await Io(n,t,{workspace:J.workspace,channel:J.channel,threadId:J.threadId,sourceSeq:W,status:"failed",reason:"Claude Code interrupted by Linzumi",sessionId:m.threadId})}catch(H){_("kandan.claude_code_interrupt_state_push_failed",{message:H instanceof Error?H.message:String(H),thread_id:J.threadId,source_seq:W,claude_session_id:m.threadId})}return{instanceId:r,controlType:m.type,agentProvider:D,interrupted:!0,threadId:m.threadId}}case"stop_turn":{let D=Pi(c,[m.threadId,m.providerSessionKey],[m.threadId]);if(D!==void 0){let W=await k6e({activeSession:D,sessionKey:m.providerSessionKey??m.threadId,publishMessageState:H=>Io(n,t,H),log:_});return _("claude_code.turn_stopped",{thread_id:D.threadId,claude_session_id:m.providerSessionKey??m.threadId,discarded_queued_source_seqs:W}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",threadId:m.threadId,ok:!0,stopped:!0,confirmedHalt:!0}}let J=y(m.agentProvider)?.trim();if(J!=="claude-code")try{let W=await K().request("turn/interrupt",{threadId:m.providerSessionKey??m.threadId,turnId:m.turnId??null});return{instanceId:r,controlType:m.type,agentProvider:"codex",threadId:m.threadId,ok:!0,stopped:!0,confirmedHalt:!0,response:W}}catch(W){_("codex.stop_turn_no_session_interrupt_failed",{thread_id:m.threadId,message:W instanceof Error?W.message:String(W)})}return{instanceId:r,controlType:m.type,agentProvider:J??null,threadId:m.threadId,ok:!1,error:"stop_turn_session_not_active"}}case"resolve_codex_approval_request":{let D=l.get(m.requestId);if(D===void 0){if(m.agentProvider==="claude-code")return{instanceId:r,controlType:m.type,skipped:!0};let be=await K().request("resolve_codex_approval_request",{...m});return{instanceId:r,controlType:m.type,response:be}}if(m.agentProvider!==void 0&&m.agentProvider!=="claude-code")return{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_approval_provider_mismatch"};if(D.sessionId!==void 0&&m.threadId!==D.sessionId)return{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_approval_session_mismatch"};let J=D.decisions.get(m.decision);if(J===void 0)return _("runner.claude_code_approval_unknown_decision",{instanceId:r,requestId:m.requestId,decision:m.decision,threadId:D.threadId,claudeSessionId:D.sessionId}),{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_approval_unknown_decision",decision:m.decision};let W=Pi(c,[D.sessionId],[D.threadId]);if(W===void 0)return _("runner.claude_code_approval_session_not_active",{instanceId:r,requestId:m.requestId,threadId:D.threadId,claudeSessionId:D.sessionId}),{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_approval_session_not_active"};let H=J.type==="allow"?"processing":"failed";return await mQ({pending:D,decision:J,incomingStatus:H,publishMessageState:()=>Io(n,t,{workspace:D.workspace,channel:D.channel,threadId:D.threadId,sourceSeq:D.sourceSeq,status:H,reason:J.type==="allow"?"Claude Code tool approved":"Claude Code tool denied by Linzumi",sessionId:D.sessionId}),captureMessageStateAttemptGeneration:W.captureMessageStateAttemptGeneration,adoptMessageStateConsensusForAttempt:W.adoptMessageStateConsensusForAttempt,stopSession:be=>{W.interruptTurnBeforeAbort(be),W.abortController.abort(new Error(be))},log:_,reason:"human_decision"})==="stopped"?{instanceId:r,controlType:m.type,agentProvider:"claude-code",requestId:m.requestId,decision:m.decision,resolved:!1,error:"claude_code_approval_terminal_consensus"}:($Z({threadId:D.threadId,decision:J,log:_}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",requestId:m.requestId,decision:m.decision,resolved:!0})}case"resolve_codex_user_input_request":case"deny_codex_user_input_request":return{instanceId:r,controlType:m.type,agentProvider:"codex",threadId:m.threadId,requestId:m.requestId,ok:!1,error:"codex_user_input_request_not_found"};case"resolve_claude_user_input_request":{let D=p.get(m.requestId);if(D===void 0)return{instanceId:r,controlType:m.type,agentProvider:"claude-code",threadId:m.threadId,requestId:m.requestId,ok:!1,error:"claude_code_user_input_continuation_not_found"};if(m.agentProvider!==void 0&&m.agentProvider!=="claude-code")return{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_user_input_provider_mismatch"};if(m.threadId!==D.threadId)return{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_user_input_thread_mismatch"};if(D.sessionId!==void 0&&m.sessionId!==void 0&&m.sessionId!==D.sessionId)return{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_user_input_session_mismatch"};let J=m.answers.map(H=>({questionId:H.questionId,selectedLabels:H.selectedLabels??[],freeText:y(H.freeText)})),W=$6e({pending:D,answers:J,actorUserId:m.actorUserId,actorSlug:m.actorSlug,answeredAt:new Date().toISOString()});switch(W.type){case"error":{_("runner.claude_code_user_input_resolution_failed",{instanceId:r,requestId:m.requestId,error:W.error,selectedLabels:[...W.selectedLabels],threadId:D.threadId,claudeSessionId:D.sessionId,kind:D.kind}),D.resolve({type:"deny",message:W.error});try{await dp(n,t,{workspace:D.workspace,channel:D.channel,threadId:D.threadId,sourceSeq:D.sourceSeq,sessionId:D.sessionId,leaseEpoch:D.leaseEpoch,request:D.request,answerState:{kind:"Denied",reason:W.error,answers:J.map(H=>({questionId:H.questionId,selectedLabels:[...H.selectedLabels],freeText:H.freeText})),actorUserId:m.actorUserId,actorSlug:m.actorSlug,answeredAt:new Date().toISOString()},streamState:"completed"})}catch(H){throw _("kandan.claude_code_user_question_completed_publish_failed",{requestId:m.requestId,message:H instanceof Error?H.message:String(H)}),H}return{instanceId:r,controlType:m.type,agentProvider:"claude-code",threadId:D.threadId,requestId:m.requestId,ok:!1,error:W.error,selectedLabels:[...W.selectedLabels],requestKind:D.kind,denied:!0}}case"resolved":D.resolve(W.decision),D.kind==="tool_approval"&&$Z({threadId:D.threadId,decision:W.decision,log:_});break}{let H=Pi(c,[D.sessionId,y(m.sessionId)],[D.threadId]);if(H!==void 0){let X=D.threadId,be=D.sourceSeq,Re=D.sessionId;Db({windowMs:j?.windowMs??uh(process.env),isDelivered:()=>D.resolved(),isSessionClosed:()=>Pi(c,[Re],[X])===void 0,lastSdkActivityMs:()=>H.lastSdkActivityMs(),hasPendingBlockingRequest:()=>tg({threadId:X,pendingApprovals:l,pendingQuestions:p}),log:_,onWedged:ie=>{let we="Claude Code did not continue after your answer - the runner restarted the session; send your message again to continue";_("claude_code.dispatch_liveness_wedged",{linzumi_thread_id:X,claude_session_id:Re??null,source_seq:be,waited_ms:ie.waitedMs,cause:ie.cause,dispatch:W.dispatch}),H.abortController.abort(new Error(we)),(async()=>{let qe=H.sessionWork();qe!==void 0&&await Promise.race([qe.catch(()=>{}),new Promise(Oe=>{setTimeout(Oe,1e4).unref?.()})]),await Io(n,t,{workspace:D.workspace,channel:D.channel,threadId:X,sourceSeq:be,status:"failed",reason:we,sessionId:Re,failureClass:"claude_dispatch_wedged"})})().catch(qe=>{_("claude_code.dispatch_wedged_state_push_failed",{linzumi_thread_id:X,source_seq:be,message:qe instanceof Error?qe.message:String(qe)})})}})}}try{await dp(n,t,{workspace:D.workspace,channel:D.channel,threadId:D.threadId,sourceSeq:D.sourceSeq,sessionId:D.sessionId,leaseEpoch:D.leaseEpoch,request:D.request,answerState:W.answerState,streamState:"completed"})}catch(H){throw _("kandan.claude_code_user_question_completed_publish_failed",{requestId:m.requestId,message:H instanceof Error?H.message:String(H)}),H}return{instanceId:r,controlType:m.type,agentProvider:"claude-code",threadId:D.threadId,requestId:m.requestId,answers:J.map(H=>({questionId:H.questionId,selectedLabels:[...H.selectedLabels],...y(H.freeText)===void 0?{}:{freeText:y(H.freeText)}})),actorUserId:m.actorUserId,actorSlug:m.actorSlug,requestKind:D.kind,resolved:!0}}case"deny_claude_user_input_request":{let D=p.get(m.requestId);if(D===void 0)return{instanceId:r,controlType:m.type,agentProvider:"claude-code",threadId:m.threadId,requestId:m.requestId,ok:!1,error:"claude_code_user_input_continuation_not_found"};if(m.agentProvider!==void 0&&m.agentProvider!=="claude-code")return{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_user_input_provider_mismatch"};if(m.threadId!==D.threadId)return{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_user_input_thread_mismatch"};if(D.sessionId!==void 0&&m.sessionId!==void 0&&m.sessionId!==D.sessionId)return{instanceId:r,controlType:m.type,ok:!1,error:"claude_code_user_input_session_mismatch"};D.resolve({type:"deny",message:m.reason??"Denied by Linzumi"});try{await dp(n,t,{workspace:D.workspace,channel:D.channel,threadId:D.threadId,sourceSeq:D.sourceSeq,sessionId:D.sessionId,leaseEpoch:D.leaseEpoch,request:D.request,answerState:{kind:"Denied",reason:m.reason??"Denied by Linzumi",actorUserId:m.actorUserId,actorSlug:m.actorSlug,answeredAt:new Date().toISOString()},streamState:"completed"})}catch(J){throw _("kandan.claude_code_user_question_completed_publish_failed",{requestId:m.requestId,message:J instanceof Error?J.message:String(J)}),J}return{instanceId:r,controlType:m.type,agentProvider:"claude-code",threadId:D.threadId,requestId:m.requestId,reason:m.reason??"Denied by Linzumi",actorUserId:m.actorUserId,actorSlug:m.actorSlug,denied:!0}}case"read_thread":{let D=await K().request("thread/read",{threadId:m.threadId,includeTurns:m.includeTurns??!0});return{instanceId:r,controlType:m.type,response:D}}case"update_session_settings":{let D=y(m.threadId),J=Pi(c,[D],[D]),W=y(m.approvalPolicy)??void 0,H=y(m.sandbox)??void 0;if(J===void 0)return{instanceId:r,controlType:m.type,skipped:!0};let X=await J.updateSettings({model:y(m.model)??void 0,approvalPolicy:W,reasoningEffort:y(m.reasoningEffort)??void 0}),be=y(X.model),Re=y(X.approval_policy),ie=y(X.reasoning_effort),we=y(m.sandbox);if(Zqe({appliedModel:be,appliedApprovalPolicy:Re,appliedReasoningEffort:ie,controlSandbox:we})){let qe={workspace:J.workspace,channel:J.channel,thread_id:J.threadId,codex_thread_id:m.threadId,updated_at:new Date().toISOString(),...be!==void 0?{model:be}:{},...Re!==void 0?{approvalPolicy:Re}:{},...ie!==void 0?{reasoningEffort:ie}:{},...we!==void 0?{sandbox:we}:{}},Oe=await n.push(t,"session:settings",qe);if(!(ne(Oe)&&Oe.status==="ok"))throw new Error(`kandan push failed: session:settings: ${JSON.stringify(Oe).slice(0,500)}`)}return Re!==void 0&&B?.record(J.threadId,{approvalPolicy:Re,sandbox:H}),X.approval_policy==="never"&&await xQ({kandan:n,topic:t,pendingClaudeCodeApprovals:l,pendingClaudeCodeUserQuestions:p,sessionThreadId:J.threadId,actorUserId:m.actorUserId,actorSlug:m.actorSlug,captureMessageStateAttemptGeneration:J.captureMessageStateAttemptGeneration,adoptMessageStateConsensusForAttempt:J.adoptMessageStateConsensusForAttempt,stopSession:qe=>{J.interruptTurnBeforeAbort(qe),J.abortController.abort(new Error(qe))},log:_,reason:"full_access_enabled"}),{instanceId:r,controlType:m.type,agentProvider:"claude-code",threadId:m.threadId,applied:X}}case"stop_instance":case"kill_instance":{let D="threadId"in m&&typeof m.threadId=="string"?m.threadId:void 0,J=D===void 0?void 0:c.get(D);return J!==void 0?(await J.interruptTurn("Claude Code stopped by Linzumi"),J.abortController.abort(new Error("Claude Code stopped by Linzumi")),{instanceId:r,controlType:m.type,agentProvider:"claude-code",threadId:D,stopped:!0}):{instanceId:r,controlType:m.type,skipped:!0}}case"set_thread_collaboration_mode":return{instanceId:r,controlType:m.type,requestId:m.requestId,threadId:m.threadId,collaborationMode:m.collaborationMode,ok:!1,error:"thread_not_loaded"};case"review_thread":return{instanceId:r,controlType:m.type,requestId:m.requestId,threadId:m.threadId,ok:!1,error:"thread_not_loaded"};case"steer_child_thread":return _("steer_child_thread.missing_channel_session",{threadId:m.threadId,providerChildThreadId:m.providerChildThreadId,providerSessionKey:m.providerSessionKey}),{instanceId:r,controlType:m.type,ok:!1,error:"child_channel_session_not_loaded"};case"resolve_port_forward_request":case"update_thread_interaction_access":case"set_port_forward_enabled":case"forward_http_request":case"forward_tcp_open":case"forward_tcp_send":case"forward_tcp_close":case"start_local_editor":case"update_runner_config":case"multi_agent_jobs_state":case"document_surfaces_state":case"fleet_breaker_state":case"route_outage_state":case"stream_idle_timeout_default":case"set_commander_impl":case"replace_runner":return{instanceId:r,controlType:m.type,skipped:!0}}}async function pM(e,n,t,r,o,i){switch(e.type){case"remote_codex_exec":{let s=y(e.requestId)?.trim(),a=new AbortController;s!==void 0&&s!==""&&o.set(s,a);let d=await TK(e,{instanceId:n,allowedCwds:t,sandboxRunner:r,abortSignal:a.signal});return s!==void 0&&s!==""&&o.delete(s),i("remote_codex_exec.handled",{requestId:y(e.requestId)??null,ok:d.ok===!0,error:typeof d.error=="string"?d.error:null}),d}case"remote_codex_exec_cancel":{let s=y(e.requestId)?.trim();if(s===void 0||s==="")return{instanceId:n,controlType:e.type,ok:!1,error:"request_id_required"};let a=o.get(s);return a!==void 0&&(a.abort(new Error("remote_codex_exec_cancelled")),o.delete(s)),{instanceId:n,controlType:e.type,requestId:s,ok:!0,cancelled:a!==void 0}}}}function AZ(e,n){let t=b6e(n instanceof Error?n.message:String(n));switch(e){case"checking_project_trust":return`Codex could not start because this folder is not trusted locally. Trust the folder with linzumi paths add, or restart the runner from a trusted folder. Detail: ${t}`;case"starting_claude_code_session":return`Claude Code did not create a session. Restart the local runner and try again. Detail: ${t}`;case"claude_code_session_failed":return`Claude Code created a session, but the session failed before completing. Try starting the agent again; if it repeats, share this failed message with the runner owner. Detail: ${t}`;case"posting_claude_code_output":return`Claude Code created a session, but Linzumi could not post its response to this thread. Try starting the agent again; if it repeats, reconnect the local runner. Detail: ${t}`;case"starting_codex_session":return`Codex did not create a session. Restart the local runner and try again. Detail: ${t}`;case"binding_kandan_thread":return`Codex started, but Linzumi could not attach it to this thread. Try starting the agent again; if it repeats, share this failed message with the runner owner. Detail: ${t}`;case"starting_first_turn":return`Codex started, but the first prompt could not be delivered. Try sending the message again; if it repeats, reconnect the local runner. Detail: ${t}`}}function fM(e){return e==="checking_project_trust"?"project_untrusted":"start_stage_transient"}function fp(e,n){let t=e.trim();if(t.length<=n)return t;let r=" ... ";if(n<r.length+2)return t.slice(t.length-Math.max(1,n));let o=Math.max(1,Math.floor((n-r.length)/3)),i=Math.max(1,n-r.length-o);return`${t.slice(0,o)}${r}${t.slice(t.length-i)}`}function mM(e,n,t){let r=e==="startup"?`Claude Code startup readiness failed: ${n}`:`Claude Code readiness changed to ${n}`,o=t?.trim();return fp(o===void 0||o===""?r:`${r} (${o})`,480)}function x6e(e=Fr){e({severity:"info",key:"runner.execution_health_failed:claude-code",message:"Claude Code login restored - Claude Code coding jobs are available again."})}function b6e(e){return fp(e,240)}function v6e(){let e={value:{status:"starting",reason:"execution_leg_readiness_not_proven"}},n=(o,i=[])=>i.length===0?{status:"ready",adapters:o}:{status:"ready",adapters:o,failures:i},t=o=>{switch(o.status){case"starting":return[];case"ready":return o.failures??[];case"failed":return o.failures??[{adapter:o.adapter,reason:o.reason}]}};return{snapshot:()=>e.value,canClaimWork:o=>{switch(e.value.status){case"starting":case"failed":return!1;case"ready":return o===void 0||e.value.adapters.includes(o)}},markReady:o=>{switch(e.value.status){case"starting":e.value=n([o]);break;case"ready":{let i=t(e.value).find(s=>s.adapter===o);if(i!==void 0)throw new Error(`runner execution leg failed before readiness: ${i.reason}`);e.value.adapters.includes(o)||(e.value=n([...e.value.adapters,o],t(e.value)));break}case"failed":{let i=t(e.value),s=i.find(a=>a.adapter===o);if(s!==void 0)throw new Error(`runner execution leg failed before readiness: ${s.reason}`);e.value=n([o],i);break}}},markReadyAfterRecovery:o=>{switch(e.value.status){case"starting":e.value=n([o]);break;case"ready":{let i=e.value.adapters.includes(o)?e.value.adapters:[...e.value.adapters,o];e.value=n(i,t(e.value).filter(s=>s.adapter!==o));break}case"failed":{e.value=n([o],t(e.value).filter(i=>i.adapter!==o));break}}},markFailed:(o,i)=>{let s=o.trim();if(s==="")throw new Error("runner execution-leg failure requires a reason");let a={adapter:i,reason:s};switch(e.value.status){case"starting":e.value={status:"failed",adapter:i,reason:s};break;case"ready":{let d=e.value.adapters.filter(c=>c!==i),u=[...t(e.value).filter(c=>c.adapter!==i),a];e.value=d.length===0?{status:"failed",adapter:i,reason:s,...u.length===1?{}:{failures:u}}:n(d,u);break}case"failed":{let d=t(e.value);d.some(u=>u.adapter===i)||(e.value={...e.value,failures:[...d,a]});break}}},markNotReady:(o,i)=>{let s=o.trim();if(s==="")throw new Error("runner execution-leg demotion requires a reason");switch(e.value.status){case"starting":case"failed":break;case"ready":{let a=e.value.adapters.filter(u=>u!==i),d=[...t(e.value).filter(u=>u.adapter!==i),{adapter:i,reason:s}];e.value=a.length===0?{status:"failed",adapter:i,reason:s,...d.length===1?{}:{failures:d}}:n(a,d);break}}},refusalReason:o=>{switch(e.value.status){case"starting":return`runner_execution_leg_unhealthy: ${e.value.reason}`;case"failed":return`runner_execution_leg_unhealthy: ${(o===void 0?void 0:t(e.value).find(s=>s.adapter===o))?.reason??e.value.reason}`;case"ready":{if(o!==void 0&&!e.value.adapters.includes(o))return`runner_execution_leg_unhealthy: ${t(e.value).find(s=>s.adapter===o)?.reason??`${o}_readiness_not_proven`}`;throw new Error("runner execution leg is ready and has no refusal reason")}}},capabilityFields:()=>({executionHealth:e.value})}}async function w6e(e){if(MZ(e.health),e.activateDispatch(),await e.publishReadyHealth(),MZ(e.health),!e.signalGenerationReady())throw new Error("runner generation-ready signal was not delivered");return{type:"ready",delivered:!0}}function MZ(e){let n=e.snapshot();switch(n.status){case"ready":break;case"starting":throw new Error(`runner execution leg is starting: ${n.reason}`);case"failed":throw new Error(`runner execution leg is failed: ${n.reason}`)}}function S6e(e){let n=e.interruptActiveTurn(e.reason),t=e.interruptSessionControls;if(t!==void 0)try{t().catch(r=>{e.log("claude_code.session_control_interrupt_failed",{thread_id:e.threadId,message:r instanceof Error?r.message:String(r)})})}catch(r){e.log("claude_code.session_control_interrupt_failed",{thread_id:e.threadId,message:r instanceof Error?r.message:String(r)})}return n}async function k6e(e){let{activeSession:n}=e;n.interruptTurnBeforeAbort("stopped by user");let t=n.discardQueuedFollowUpsForStop();n.abortController.abort(new Error("stopped by user"));let r=n.currentSourceSeq(),o=[...new Set([r,...t].filter(s=>s!==void 0))],i=new Set(t);for(let s of o)try{await e.publishMessageState({workspace:n.workspace,channel:n.channel,threadId:n.threadId,sourceSeq:s,status:"interrupted",reason:"stopped by user",sessionId:e.sessionKey}),i.has(s)&&n.markFollowUpSeqDiscarded(s)}catch(a){e.log("kandan.claude_code_stop_state_push_failed",{message:a instanceof Error?a.message:String(a),thread_id:n.threadId,source_seq:s})}return t}function Pi(e,n,t=[]){let r=n.filter(i=>i!==void 0&&i!=="");for(let i of r){let s=e.get(i);if(s!==void 0)return s}let o=t.filter(i=>i!==void 0&&i!=="");if(o.length>0){for(let i of e.values())if(o.includes(i.threadId))return i}}function C6e(e,n){return Pi(e,[n],[n])===void 0?"codex":"claude-code"}async function P6e(e){let n;try{return await Promise.race([e,new Promise(t=>{n=setTimeout(()=>t(!0),T6e),n.unref?.()})])}finally{n!==void 0&&clearTimeout(n)}}async function mQ(e){let n=e.pending.sourceSeq;if(n===void 0)return e.log("claude_code.approval_consensus_source_seq_missing",{thread_id:e.pending.threadId,claude_session_id:e.pending.sessionId??null,reason:e.reason}),e.stopSession("Claude Code approval has no source sequence"),"stopped";let t=e.captureMessageStateAttemptGeneration(),r;try{r=await e.publishMessageState()}catch(i){e.log("claude_code.approval_consensus_push_unconfirmed",{thread_id:e.pending.threadId,source_seq:n,claude_session_id:e.pending.sessionId??null,reason:e.reason,message:i instanceof Error?i.message:String(i)}),r={kind:"unconfirmed"}}return e.adoptMessageStateConsensusForAttempt(n,e.incomingStatus,r,t)==="stop"?(e.log("claude_code.approval_terminal_consensus",{thread_id:e.pending.threadId,source_seq:n??null,claude_session_id:e.pending.sessionId??null,disposition:r.kind,reason:e.reason}),e.stopSession("Claude Code turn already terminated by the server"),"stopped"):(e.pending.resolve(e.decision),"resolved")}function DZ(e,n){switch(e.agentReplay?.provider){case"codex":return["codex"];case"claude-code":return["claude-code"];case"auto":case void 0:break}switch(e.claudeCodeRunner!==void 0||(n===void 0?e.claudeCodeAvailable===!0:n==="logged_in")){case!0:return["codex","claude-code"];case!1:return["codex"]}}function I6e(e){if(e.agentReplay?.provider==="codex"||e.codexUrl!==void 0||Xs(e))return!0;switch(e.dependencyStatus?.codex.available){case!1:return!1;case!0:case void 0:return!0}}function ap(e){let n=y(e.agentProvider)?.trim();switch(n){case void 0:case"":case"codex":return{type:"ok",provider:"codex"};case"claude-code":return{type:"ok",provider:"claude-code"};default:return{type:"unsupported",value:n}}}function R6e(e){switch(e){case"codex":return"Codex";case"claude-code":return"Claude Code"}}function v0(e){let n=y(e.modelProvider)?.trim(),t=E(e.llmProxy),r=y(t?.baseUrl)?.trim(),o=y(t?.token)?.trim(),i=r!==void 0&&r!==""&&o!==void 0&&o!==""?{baseUrl:r,token:o}:void 0;return n===void 0||n===""?i===void 0?{type:"none"}:{type:"provider",runtime:{provider:"openai-proxy",llmProxyBaseUrl:i.baseUrl,llmProxyToken:i.token}}:n!=="wafer"?{type:"error",error:`model_provider_unsupported:${n}`}:i===void 0?{type:"error",error:"wafer_model_provider_missing_llm_proxy"}:{type:"provider",runtime:{provider:"wafer",llmProxyBaseUrl:i.baseUrl,llmProxyToken:i.token}}}function hQ(e){if(e.type==="error")return e.error;if(e.type==="provider"&&e.runtime.provider==="openai-proxy"&&Bs()===void 0)return"codex_llm_proxy_requires_openai_api_key"}function OZ(e,n){let t=v0(n);switch(t.type){case"none":return;case"error":return t.error;case"provider":{let r=hQ(t);return r!==void 0?r:e.codexModelProvider?.provider===t.runtime.provider?void 0:t.runtime.provider==="wafer"?"wafer_model_provider_requires_thread_worker":"llm_proxy_model_provider_requires_thread_worker"}}}function E6e(e){if(e.linzumiAgentMcpToken===void 0||e.linzumiAgentMcpToken===""||GR(e.env))return;let n=A6e(e.env,e.kandanUrl);if(n===void 0||n==="")return hM("cloud agent turn requires a server URL (kandanUrl) and none was configured; refusing to run the @linzumi agent turn on the host");if(M6e(n))return hM(`cloud agent turn requires a PUBLICLY reachable server URL for the guest VM, got loopback ${n}; set LINZUMI_CLOUD_AGENT_PUBLIC_URL to the server's public base URL (e.g. https://serve.linzumi.com)`);if(!lu(e.env))return hM("smolcloud is the required execution path for @linzumi agent turns but no smolcloud API key resolved (SMOLCLOUD_API_KEY / cloud.apiKeyFile / SMOL_CLOUD_TOKEN); refusing to run the agent on the render host (set LINZUMI_VM_CLOUD_AGENT=0 only to explicitly opt back into host execution)");let t;try{t=Ks()}catch{throw new Error("workspace-agent cloud vm.json is present but invalid; refusing to arm the cloud agent turn on a corrupt config")}let r=YJ({env:e.env,config:t});if(r===void 0)throw new Error("workspace-agent cloud execution is enabled but no smolcloud API key resolved");let o=t?.agent,i={...o?.image===void 0?{}:{image:o.image},...o?.allowCidrs===void 0?{}:{allowCidrs:o.allowCidrs},...o?.autoStopSeconds===void 0?{}:{autoStopSeconds:o.autoStopSeconds}},s=e.modelProviderRuntime===void 0?void 0:(()=>{let a=P0(e.modelProviderRuntime);return{id:a.id,name:a.name,baseUrl:a.baseUrl,envKey:a.envKey,wireApi:a.wireApi,...a.httpHeaders===void 0?{}:{httpHeaders:a.httpHeaders},...a.envHttpHeaders===void 0?{}:{envHttpHeaders:a.envHttpHeaders}}})();return XJ({connection:r,workspaceSlug:e.workspaceSlug,kandanUrl:n,linzumiAgentMcpToken:e.linzumiAgentMcpToken,ownerUsername:e.ownerUsername,modelProvider:s,llmProxyToken:e.modelProviderRuntime?.llmProxyToken,agentSpec:i,prewarm:!0})}function hM(e){return()=>Promise.reject(new At(e))}function A6e(e,n){let t=e.LINZUMI_CLOUD_AGENT_PUBLIC_URL?.trim();return t!==void 0&&t!==""?t:n}function M6e(e){try{let n=new URL(e).hostname.toLowerCase();return n==="localhost"||n==="127.0.0.1"||n==="::1"||n==="0.0.0.0"}catch{return!1}}function P0(e){let n=`${e.llmProxyBaseUrl.replace(/\/+$/,"")}/v1`;switch(e.provider){case"wafer":return{id:"linzumi",name:"Linzumi Proxy",baseUrl:n,envKey:"LINZUMI_LLM_PROXY_TOKEN",wireApi:"responses"};case"openai-proxy":return{id:"linzumi",name:"Linzumi Proxy",baseUrl:n,envKey:"OPENAI_API_KEY",wireApi:"responses",envHttpHeaders:{"x-linzumi-llm-proxy-token":"LINZUMI_LLM_PROXY_TOKEN"}}}}function gQ(e){switch(e.provider){case"wafer":return{LINZUMI_LLM_PROXY_TOKEN:e.llmProxyToken};case"openai-proxy":{let n=Bs();if(n===void 0)throw new Error("codex llm proxy requires API-key auth (OPENAI_API_KEY in the environment or $CODEX_HOME/auth.json); ChatGPT OAuth credentials cannot be forwarded");return{LINZUMI_LLM_PROXY_TOKEN:e.llmProxyToken,OPENAI_API_KEY:n}}}}async function yQ(e){e.options.codexUrl===void 0&&(e.setStartupStage("checking_project_trust"),zb(e.cwd,{configHome:Oa()})),e.setStartupStage("starting_codex_session");let n=Ro(e.control.developerPrompt),t=wa(e.control.linzumiContext),r=mp(e.options,e.control),o=await Si("thread/start",e.codex.request("thread/start",eje(r,{cwd:e.cwd,serviceName:"kandan-local-runner",personality:"pragmatic",developerInstructions:zf({cwd:e.cwd,planTool:"linzumi-mcp",mcpAvailable:!Xs(e.options)||OM(e.options),devServicesAvailable:!Xs(e.options),developerPrompt:n,...IM(e.control),linzumiContext:t,...Bc(r.sandbox)&&r.sandbox!==void 0?{sandboxNetworkPosture:{sandbox:r.sandbox,approvalCapable:Jc(r.approvalPolicy)}}:{}})}))),i=Wqe(o);e.setStartedCodexThreadId(i);let s=Ro(e.control.workDescription);i!==void 0&&n!==void 0&&await G6e(e.kandan,e.topic,e.control,n,i);let a;if(i!==void 0&&e.onStartedThread!==void 0&&(e.setStartupStage("binding_kandan_thread"),a=await Si("thread/attach",e.onStartedThread(e.control,e.cwd,i))),i!==void 0&&s!==void 0){e.setStartupStage("starting_first_turn");let d=Y(e.control.rootSeq),u=Y(e.control.sourceSeq)??d,c=vi($e(e.control.attachments)??[]);if(a===void 0||u===void 0)throw new vb({codexThreadId:i,kandanThreadId:fn(e.control,"threadId"),hasThreadSession:a!==void 0,sourceSeq:u});let l=Uo(e.options.token);e.startAgentReplayCodex?.(),await a.startThreadMessageTurn({seq:u,body:s,actorSlug:l.actorUsername,actorUserId:l.actorUserId,attachments:c,boundStartTimeout:!0})}return{controlResponse:{instanceId:e.instanceId,controlType:e.control.type,cwd:e.cwd,matchedRoot:e.matchedRoot,response:o},providerSession:{provider:"codex",cwd:e.cwd,matchedRoot:e.matchedRoot,sessionId:i}}}function D6e(e){let n=e.LINZUMI_CLAUDE_TURN_STALL_MS?.trim();if(n===void 0||n==="")return 6e5;let t=Number.parseInt(n,10);return Number.isFinite(t)&&t>0?t:6e5}function O6e(e){let n=e.onInputDelivered,t=e.isLiveSteerAllowed,r=e.onInputWait,o=e.onSourceSeqDelivered,i=[gM(e.content)],s=[e.sourceSeq],a=[],d=new Set,u=[],c=new Map,l=v=>new Promise(S=>{c.set(v,S)}),p=(v,S)=>{let C=c.get(v);C!==void 0&&(c.delete(v),C(S))},f={closed:!1},g=()=>{for(;f.closed;){let v=u.shift();if(v===void 0)return;v({done:!0,value:void 0})}},m=(v,S,C)=>{s.push(S),n?.(),S!==void 0&&o!==void 0&&!d.has(S)&&(d.add(S),o(S)),C?.();let T=u.shift();if(T===void 0){i.push(v);return}p(v,!0),T({done:!1,value:v})},_=(v,S,C)=>s.length>0?(a.push({message:v,sourceSeq:S,onDelivered:C}),{disposition:"parked",queuePosition:a.length}):(m(v,S,C),{disposition:"delivered"}),b=v=>{if(f.closed)throw new Error("Claude Code streaming input is closed");let S=gM(v.content);return _(S,v.sourceSeq,v.onDelivered)},w=v=>{if(f.closed)throw new Error("Claude Code streaming input is closed");let S=gM(v),C=l(S);if(s.length===0)return _(S,void 0),{steered:"steered_queued",applied:C};if(t?.()===!1)return _(S,void 0),{steered:"steered_queued",applied:C};let T=u.shift();return T===void 0?i.push(S):(p(S,!0),T({done:!1,value:S})),{steered:"steered_live",applied:C}};return{messages:{[Symbol.asyncIterator](){return{next(){let v=i.shift();return v!==void 0?(p(v,!0),Promise.resolve({done:!1,value:v})):f.closed?Promise.resolve({done:!0,value:void 0}):(r?.(s[0]),new Promise(S=>{u.push(S)}))}}}},close:()=>{if(s.length===0)for(;a.length>0;){let v=a.shift();v!==void 0&&m(v.message,v.sourceSeq,v.onDelivered)}f.closed=!0,g();for(let[v,S]of c)c.delete(v),S(!1)},enqueue:b,enqueueSteer:w,drainUndeliveredFollowUps:()=>a.splice(0),completeTurn:()=>{let v=s.shift();if(!f.closed&&s.length===0){let S=a.shift();S!==void 0&&m(S.message,S.sourceSeq,S.onDelivered)}return v},currentSourceSeq:()=>s[0]}}function gM(e){return{type:"user",message:{role:"user",content:e},parent_tool_use_id:null}}function $Z(e){if(e.decision.type!=="allow")return;let n=b9(e.decision.updatedPermissions);if(n.length!==0)try{S9(e.threadId,n),e.log("claude_code.thread_permission_grants_recorded",{linzumi_thread_id:e.threadId,rules:n.map(FI)})}catch(t){e.log("claude_code.thread_permission_grants_persist_failed",{linzumi_thread_id:e.threadId,message:t instanceof Error?t.message:String(t)})}}function $6e(e){let n=e.answers.map(t=>({questionId:t.questionId,selectedLabels:[...t.selectedLabels],freeText:t.freeText}));switch(e.pending.kind){case"question":return{type:"resolved",decision:{type:"answer_question",updatedInput:m9(e.pending.originalInput,e.pending.request,e.answers)},answerState:{kind:"Answered",answers:n,actorUserId:e.actorUserId,actorSlug:e.actorSlug,answeredAt:e.answeredAt},dispatch:"user_question_answer"};case"tool_approval":case"plan_review":{let t=e.answers.flatMap(i=>i.selectedLabels),r=t[0];if(r===void 0)return{type:"error",error:"claude_code_user_input_decision_missing",selectedLabels:t};let o=e.pending.approvalDecisions.get(r);return o===void 0?{type:"error",error:"claude_code_user_input_unknown_decision",selectedLabels:t}:{type:"resolved",decision:o,answerState:o.type==="deny"?{kind:"Denied",reason:o.message,answers:n,actorUserId:e.actorUserId,actorSlug:e.actorSlug,answeredAt:e.answeredAt}:{kind:"Answered",answers:n,actorUserId:e.actorUserId,actorSlug:e.actorSlug,answeredAt:e.answeredAt},dispatch:"user_input_decision"}}}}async function _Q(e){let n=e.sourceSeq;if(n===void 0)return{type:"deny",message:"Claude Code user input request had no source message"};if(e.pendingQuestions.has(e.questionRequest.requestId))return{type:"deny",message:"Claude Code user input request id was already pending"};if(tg({threadId:e.threadId,pendingApprovals:e.pendingApprovals,pendingQuestions:e.pendingQuestions}))return{type:"deny",message:"Claude Code already has a pending user input request"};if(e.signal.aborted)return{type:"deny",message:"Claude Code user input request cancelled by Linzumi"};let t="Claude Code user input request cancelled by Linzumi",r=e.approvalDecisions??new Map,o,i,s=!1,a=new Promise(d=>{let u=!1,c=()=>{i!==void 0&&e.signal.removeEventListener("abort",i),e.pendingQuestions.delete(e.questionRequest.requestId)},l=f=>{u||(u=!0,c(),d(f))};o=l,i=()=>{s||(s=!0,(async()=>{try{await dp(e.kandan,e.topic,{workspace:e.workspace,channel:e.channel,threadId:e.threadId,sourceSeq:n,sessionId:e.sessionId,leaseEpoch:e.leaseEpoch,request:e.questionRequest,answerState:{kind:"Denied",reason:t,answeredAt:new Date().toISOString()},streamState:"interrupted"})}catch(f){console.error("kandan.claude_code_user_input_abort_publish_failed",e.questionRequest.requestId,f instanceof Error?f.message:String(f))}finally{l({type:"deny",message:t})}})())};let p={sessionId:e.sessionId,workspace:e.workspace,channel:e.channel,threadId:e.threadId,sourceSeq:n,leaseEpoch:e.leaseEpoch,request:e.questionRequest,resolve:l,resolved:()=>u};switch(e.kind){case"question":e.pendingQuestions.set(e.questionRequest.requestId,{...p,kind:"question",originalInput:e.request.input});break;case"tool_approval":case"plan_review":e.pendingQuestions.set(e.questionRequest.requestId,{...p,kind:e.kind,approvalDecisions:r});break}});if(i!==void 0&&(e.signal.addEventListener("abort",i,{once:!0}),e.signal.aborted))return i(),a;try{await dp(e.kandan,e.topic,{workspace:e.workspace,channel:e.channel,threadId:e.threadId,sourceSeq:n,sessionId:e.sessionId,leaseEpoch:e.leaseEpoch,request:e.questionRequest,answerState:{kind:"NeedsAnswer"},streamState:"streaming"})}catch(d){return o?.({type:"deny",message:d instanceof Error?`Claude Code user input request push failed: ${d.message}`:"Claude Code user input request push failed"}),a}return a}async function dp(e,n,t){await e.push(n,"session:stream_thread_message",{workspace:t.workspace,channel:t.channel,thread_id:t.threadId,stream_key:g9(t.request.requestId),body:t.request.title,...t.leaseEpoch===void 0?{}:{lease_epoch:t.leaseEpoch},payload:{source_message_seq:t.sourceSeq,agent_provider:"claude-code",...t.sessionId===void 0?{}:{codex_thread_id:t.sessionId,provider_session_key:t.sessionId,claude_session_id:t.sessionId},structured:h9({request:t.request,sessionId:t.sessionId,sourceSeq:t.sourceSeq,answerState:t.answerState,streamState:t.streamState})}})}function tg(e){return[...e.pendingApprovals.values()].some(n=>n.threadId===e.threadId)||[...e.pendingQuestions.values()].some(n=>n.threadId===e.threadId)}async function q6e(e){let n=f9(e.request),t=new Map(n.choices.map(r=>[r.label,r.permissionDecision]));return _Q({kandan:e.kandan,topic:e.topic,pendingApprovals:e.pendingApprovals,pendingQuestions:e.pendingQuestions,workspace:e.workspace,channel:e.channel,threadId:e.threadId,sessionId:e.sessionId,sourceSeq:e.sourceSeq,request:e.request,questionRequest:n.request,kind:n.request.requestSource==="claude_code_plan_review"?"plan_review":"tool_approval",approvalDecisions:t,leaseEpoch:e.leaseEpoch,signal:e.signal})}function qZ(){return yM.value===void 0&&(yM.value=d8(a8(process.env))),yM.value}async function jZ(e){try{return await LZ(e)}catch(n){if(!(n instanceof Da))throw n;e.log("claude_code.dispatch_liveness_respawn_retry",{thread_id:fn(e.control,"threadId")??null,resume_session_id:e.resumeSessionId??null,waited_ms:n.waitedMs});try{return await LZ(e)}catch(t){throw t instanceof Da?new Error(j6e):t}}}async function LZ(e){let n=up(e.control,"workspace"),t=up(e.control,"channel"),r=up(e.control,"threadId"),o=Y(e.control.rootSeq),i=Y(e.control.sourceSeq)??o,s=Ro(e.control.workDescription);if(e.debugTrace?.record("commander","claude.provider_start",{controlType:e.control.type,instanceId:e.instanceId,workspace:n,channel:t,threadId:r,rootSeq:o??null,sourceSeq:i??null,resumeSessionId:e.resumeSessionId??null,cwd:e.cwd}),s===void 0)throw new Error("start_instance control missing workDescription");if(e.log("claude_code.turn_starting",{linzumi_thread_id:r,claude_session_id:e.resumeSessionId??null,body_preview:Pu(s),message_received_at_ms:Date.now()}),e.resumeSessionId!==void 0){let $=await qZ().acquire();($.waitedMs>0||$.timedOut)&&e.log("claude_code.resume_start_throttled",{linzumi_thread_id:r,claude_session_id:e.resumeSessionId,waited_ms:$.waitedMs,timed_out:$.timedOut})}let a=$=>{e.log("claude_code.turn_terminal",{turn_id:null,outcome:"failed",reason:$,thread_id:r,claude_session_id:e.resumeSessionId??null})},d,u=!1,c=!1,l,p=!1,f,g=0,m=!1,_=!1,b=!1,w,v=!1,S=$=>({workspace:n,channel:t,thread_id:r,codex_thread_id:$,provider_session_key:$,agent_provider:"claude-code",claude_session_id:$,cwd:e.cwd,instance_id:e.instanceId}),C=()=>{if(!u||!c||d===void 0)return;let $=()=>{let Le=d;if(p||!u||!c||Le===void 0)return;p=!0;let G=e.kandan.push(e.topic,"session:typing_start",S(Le)).then(()=>{}).catch(Pe=>{e.log("kandan.claude_code_typing_heartbeat_failed",{thread_id:r,claude_session_id:Le,message:Pe instanceof Error?Pe.message:String(Pe)})}).finally(()=>{p=!1});f=G,G.finally(()=>{f===G&&(f=void 0)})};$(),l===void 0&&(l=setInterval($,z$e),l.unref?.())},T=()=>{if(m){_=!0;return}u=!0,g+=1,C()},P=()=>{_&&(_=!1,T())},O=()=>{if(m){b=!0;return}ie.completeTurn()},R=()=>{b&&(b=!1,O())},j=()=>{b=!1,v=!0,ie.completeTurn()},B=async($,Le)=>{let G,Pe=new Promise(xt=>{G=setTimeout(()=>xt("timeout"),B$e),G.unref?.()}),We=await Promise.race([$.then(()=>"processed"),Pe]);G!==void 0&&clearTimeout(G),We==="timeout"&&e.log("claude_code.terminal_processing_timeout",{linzumi_thread_id:r,claude_session_id:Le.sessionId,event_type:Le.type})},K=async($,Le)=>{let G,Pe=new Promise(xt=>{G=setTimeout(()=>xt("timed_out"),U$e),G.unref?.()}),We=await Promise.race([$.then(()=>"settled"),Pe]);return G!==void 0&&clearTimeout(G),We==="timed_out"&&e.log("kandan.claude_code_typing_start_wait_timeout",{thread_id:r,claude_session_id:Le}),We},D=async()=>{let $=u,Le=d,G=g;if(u=!1,l!==void 0&&(clearInterval(l),l=void 0),!(!$||!c||Le===void 0))try{let Pe=f;if(Pe!==void 0&&await K(Pe,Le)==="timed_out"&&f===Pe&&(f=void 0,p=!1),u||g!==G)return;await e.kandan.push(e.topic,"session:typing_stop",S(Le))}catch(Pe){e.log("kandan.claude_code_typing_stop_failed",{thread_id:r,claude_session_id:Le,message:Pe instanceof Error?Pe.message:String(Pe)})}},J=vi($e(e.control.attachments)??[]),W=await DC({cwd:e.cwd,kandanUrl:e.options.kandanUrl,token:e.options.token,fetch:e.options.fetch,attachmentDirectoryName:"local-claude-code-attachments"},{seq:i,body:s,attachments:J}).then($=>({ok:!0,content:$})).catch($=>({ok:!1,error:$}));if(!W.ok){let $=W.error instanceof Error?W.error.message:String(W.error),Le=`Claude Code input attachment download failed: ${$}`;a(Le);try{await oo(e.kandan,e.topic,e.control,"failed",Le,{instanceId:e.instanceId,failureClass:"attachment_download_failed"})}catch(G){e.log("kandan.start_instance_claude_code_attachment_failed_state_push_failed",{message:G instanceof Error?G.message:String(G)})}return{controlResponse:{instanceId:e.instanceId,controlType:e.control.type,agentProvider:"claude-code",ok:!1,error:"claude_code_attachment_download_failed",message:$}}}let H=()=>{},X=!1,be=new Promise($=>{H=$}),Re=()=>{X||(X=!0,setImmediate(H))},ie=O6e({content:W.content,sourceSeq:i,onInputDelivered:T,isLiveSteerAllowed:()=>!m,onInputWait:$=>{$===void 0&&Re()},onSourceSeqDelivered:$=>{we.add($),e.onLiveSourceSeqAccepted?.({channel:t,threadId:r,sourceSeq:$})}}),we=new Set,qe=new Set,Oe=0,bn=Ro(e.control.developerPrompt),un=wa(e.control.linzumiContext),je=mp(e.options,e.control),Xe=y(e.control.approvalPolicy)!==void 0,_e=e.claudeThreadAccessStore?.resolve(r),q=gp(e.options),F=Xe?je.approvalPolicy:_e?.approvalPolicy??q.approvalPolicy,z=Xe?je.sandbox:_e?.sandbox??q.sandbox,V=F===void 0?void 0:jf(F,z),ae=V!==void 0?_M(V):je.approvalPolicy===void 0?void 0:_M(je.approvalPolicy);if(V!==void 0&&e.claudeThreadAccessStore?.record(r,{approvalPolicy:V,sandbox:z}),e.resumeSessionId!==void 0)try{await u9({cwd:e.cwd,sessionId:e.resumeSessionId,validator:e.options.claudeCodeSessionValidator})}catch($){throw a($ instanceof Error?$.message:String($)),$}let pe={runnerIdentity:Uo(e.options.token),codexVersion:void 0},Te=new AbortController,Z=Zm({stop:()=>{Te.signal.aborted||Te.abort(new Error("engine child reaper teardown"))},pid:void 0,ownProcessGroup:!1,kind:"claude_code"}),de=new Set(i===void 0?[]:[i]),ue={value:void 0},en=!1,Ye,Be=[],In=!1,ft,ee=Zs({kandanUrl:e.options.kandanUrl,accessToken:e.options.token,fetchImpl:e.options.fetch,operatingMode:"text"}),Q=s.trim().slice(0,2e3),he=iB({replacePlanSteps:ee.replaceCodingJobPlanSteps,threadId:r,goal:Q,log:e.log}),He=async()=>{if(e.resumeSessionId!==void 0)return;let $=5e3,Le=new AbortController,G,Pe=new Promise(We=>{G=setTimeout(()=>{Le.abort(new Error("claude goal seed timed out")),e.log("claude_code.goal_seed_timeout",{thread_id:r,timeout_ms:$}),We()},$)});try{await Promise.race([sB({upsertCodingJobPlan:ee.upsertCodingJobPlan,threadId:r,goal:Q,log:e.log,signal:Le.signal}),Pe])}finally{G!==void 0&&clearTimeout(G)}},N={model:je.model,modelProvider:je.modelProvider},ce=nB({flushJournaledTerminal:()=>te.flush(_Z),publishMessageState:$=>Io(e.kandan,e.topic,{workspace:n,channel:t,threadId:r,sourceSeq:$.sourceSeq,status:$.status,reason:$.reason,sessionId:d,fate:$.fate,retryable:$.retryable,holdDeadlineAt:$.holdDeadlineAt,model:$.model,provider:$.provider}),adoptMessageStateConsensus:($,Le,G)=>te.adoptMessageStateConsensus($,Le,G),acceptRestart:$=>te.acceptRouteOutageRestart($),enqueue:$=>ie.enqueue($).disposition,isSessionClosed:()=>Te.signal.aborted,attribution:()=>({...N.model===void 0?{}:{model:N.model},...N.modelProvider===void 0?{}:{provider:N.modelProvider}}),log:($,Le)=>e.log($,{thread_id:r,...Le})});i!==void 0&&ce.retainInput(i,W.content);let te=Y8({instanceId:e.instanceId,cwd:e.cwd,threadKey:`${n}:${t}:${r}`,persistDir:e.options.claudeCodeRunner===void 0?Zh():void 0,wire:()=>({workspaceSlug:n,channelSlug:t,kandanThreadId:r,codexThreadId:d??e.resumeSessionId,rootSeq:o,leaseEpoch:e.leaseEpochFor?.(r)}),push:async($,Le,G,Pe)=>{let We=await e.kandan.push(e.topic,$,Le,Pe);if(ne(We)&&We.status==="ok")return We;throw new Error(`kandan push failed: ${$}: ${JSON.stringify(We).slice(0,500)}`)},preparePush:($,Le)=>x_({kandan:e.kandan,topic:e.topic,workspace:n,channel:t,cwd:e.cwd,kandanUrl:e.options.kandanUrl,token:e.options.token,fetch:e.options.fetch,log:(G,Pe)=>e.log(G,Pe)},$,Le),runnerPayload:($,Le,G,Pe)=>Hi({...e.options,cwd:e.cwd},e.instanceId,$,Le,pe,G,Pe),currentSourceSeq:ie.currentSourceSeq,routeOutageActive:()=>Ta(void 0,N.model,0)==="active",runtimeMetadataForSourceSeq:()=>({model:N.model??null,model_provider:N.modelProvider??null}),onTurnTerminal:($,Le,G,Pe,We,xt,_a)=>{e.log("claude_code.turn_terminal",{turn_id:$,outcome:Le,reason:G??null,thread_id:r,claude_session_id:d??null,...xt===void 0?{}:{fate:xt}}),(Le==="failed"||Le==="interrupted")&&xt==="route_outage"&&We!==void 0&&ce.park({sourceSeq:We,reason:G,provider:_a?.provider,model:_a?.model,holdCeilingMs:_a?.holdCeilingMs}),Le==="completed"&&We!==void 0&&(e.onLiveSourceSeqAccepted?.({channel:t,threadId:r,sourceSeq:We}),ce.releaseRetained(We)),w?.(),w=void 0},onTodoWriteCompleted:he.handleTodoWrite,suppressProcessingState:()=>{for(let $ of e.pendingClaudeCodeApprovals.values())if($.threadId===r)return!0;for(let $ of e.pendingClaudeCodeUserQuestions.values())if($.threadId===r)return!0;return!1},log:e.log,debugTrace:e.debugTrace}),ke=e.options.claudeCodeRunner===void 0&&UB(process.env)?BB({captureDir:Tt(nQ(),`linzumi-claude-live-bash-${e.instanceId}`),onOutputDelta:($,Le)=>{d!==void 0&&te.handleTranscriptEvent({type:"command_output_delta",sessionId:d,itemKey:$,delta:Le})},log:($,Le)=>e.log($,Le)}):void 0,Ae,nn;try{let $=MQ(),Le=qM({...e.options,codingJobMcpToken:EM(e.control)});Ae=Le.cleanup;let G=$s({command:$.command,argsPrefix:$.argsPrefix,kandanUrl:e.options.kandanUrl,authFilePath:Le.path,ownerUsername:I0(e.options),operatingMode:"text",cwd:e.cwd,threadId:r,toolScope:e.options.codingJobToolScope,multiAgentJobs:e.options.multiAgentJobs===!0,devServices:{scope:e.options.runnerId,ownerPid:$M(e.options)}});nn=a4(G)}catch($){Ae?.(),Ae=void 0,e.log("claude_code.mcp_config_failed",{message:$ instanceof Error?$.message:String($),thread_id:r})}let Yn={kandan:e.kandan,topic:e.topic,workspace:n,channel:t,threadId:r,cwd:e.cwd,initialPrompt:s,rootSeq:o,log:e.log},pn=new Map,Kt=async $=>{let Le=Date.now(),G=DI($.rateLimit,Le);e.log("claude_code.rate_limit",{linzumi_thread_id:r,claude_session_id:$.sessionId??d??null,rate_limit_summary:`claude/${$.rateLimit.rateLimitType??"account"} ${G}`,status:$.rateLimit.status??null,utilization_percent:$.rateLimit.utilizationPercent??null,resets_at_ms:$.rateLimit.resetsAtMs??null});let Pe=$.rateLimit.rateLimitType??"account",We=Z6e($.rateLimit);if(We!==pn.get(Pe))try{await Q6e({kandan:e.kandan,topic:e.topic,workspace:n,channel:t,threadId:r,claudeSessionId:$.sessionId??d,rateLimit:$.rateLimit}),pn.set(Pe,We)}catch(xt){e.log("claude_code.rate_limit_post_failed",{thread_id:r,message:xt instanceof Error?xt.message:String(xt)})}},qo=async $=>{if(Oe=Date.now(),e.debugTrace?.record("claude-transcript","transcript.event",{eventType:$.type,threadId:r,activeSessionId:d??null,event:$}),jy.observeTranscriptEvent($),$.type==="tool_call"&&$.toolName==="Bash"){let G=y($.input.command);G!==void 0&&nx(r,G)}try{await U6e(Yn,$)}catch(G){e.log("claude_code.session_store_mirror_failed",{session_id:$.sessionId??null,event_type:$.type,message:G instanceof Error?G.message:String(G)})}if($.type==="session_started"){d=$.sessionId,e.log("claude_code.session_started",{linzumi_thread_id:r,claude_session_id:$.sessionId}),e.activeClaudeCodeSessions.set($.sessionId,{abortController:Te,workspace:n,channel:t,threadId:r,currentSourceSeq:ie.currentSourceSeq,adoptMessageStateConsensus:te.adoptMessageStateConsensus,captureMessageStateAttemptGeneration:te.captureMessageStateAttemptGeneration,adoptMessageStateConsensusForAttempt:te.adoptMessageStateConsensusForAttempt,pauseOutbox:()=>te.pauseOutbox(),resumeOutbox:()=>te.resumeOutbox(),inputDelivered:G=>we.has(G)||qe.has(G),lastSdkActivityMs:()=>Oe,enqueueInput:G=>{if(G.sourceSeq!==void 0&&de.has(G.sourceSeq))return"duplicate";let Pe=ie.enqueue(G);return G.sourceSeq!==void 0&&(ce.noteSupersession("new_user_input"),ce.retainInput(G.sourceSeq,G.content)),G.sourceSeq!==void 0&&de.add(G.sourceSeq),Pe},closeInput:ie.close,hasActiveTurn:()=>te.activeTurnId()!==void 0,sessionWork:()=>ue.value,steerTurn:ie.enqueueSteer,interruptTurn:async G=>{ce.noteSupersession("interrupt_turn");let Pe=te.interruptActiveTurn(G);return await Ye?.interrupt(),Pe},interruptTurnBeforeAbort:G=>{let Pe=Ye;return ce.noteSupersession("interrupt_before_abort"),S6e({reason:G,threadId:r,interruptActiveTurn:We=>te.interruptActiveTurn(We),interruptSessionControls:Pe===void 0?void 0:()=>Pe.interrupt(),log:e.log})},discardQueuedFollowUpsForStop:()=>(ce.noteSupersession("stop_discard"),ie.drainUndeliveredFollowUps().map(Pe=>Pe.sourceSeq).filter(Pe=>Pe!==void 0)),markFollowUpSeqDiscarded:G=>{qe.add(G)},slashCommands:async()=>{if(In)return Be;let G=await Ye?.supportedCommands();return In||G!==void 0&&(Be=G),Be},updateSettings:async G=>{let Pe={};if(G.model!==void 0&&(await Ye?.setModel(xM(G.model)),Pe.model=G.model,N.model=G.model),G.approvalPolicy!==void 0){let We=_M(G.approvalPolicy);We!==void 0&&(await Ye?.setPermissionMode(We),Pe.approval_policy=G.approvalPolicy)}if(G.reasoningEffort!==void 0){let We=NZ(G.reasoningEffort);We!==void 0&&(await Ye?.setEffort?.(We),Pe.reasoning_effort=G.reasoningEffort)}return Pe}}),e.ensureClaudeCodeForwardPortSession?.({sessionId:$.sessionId,workspace:n,channel:t,threadId:r,cwd:e.cwd,rootSeq:o,currentSourceSeq:ie.currentSourceSeq}),te.handleTranscriptEvent($),await e.kandan.push(e.topic,"session:bind",{workspace:n,channel:t,thread_id:r,codex_thread_id:$.sessionId,provider_session_key:$.sessionId,agent_provider:"claude-code",claude_session_id:$.sessionId,cwd:e.cwd,instance_id:e.instanceId}),c=!0,T();return}if($.type==="slash_command_catalog"){Be=$.commands,$.source==="commands_changed"&&(In=!0);return}let Le=$.type==="turn_completed"||$.type==="turn_interrupted"||$.type==="session_completed"||$.type==="session_failed";if(Le){m=!0;let G=te.activeTurnId(),Pe=!1,We=()=>{},xt=()=>{Pe=!0,We()},_a=new Promise(Fo=>{We=Fo});w=xt,te.handleTranscriptEvent($);let Bi=$.type==="turn_completed"||$.type==="turn_interrupted",Ny=Bi||G!==void 0||Pe;try{Ny?(await B(_a,$),await te.flush(_Z)):w===xt&&(w=void 0)}catch(Fo){e.log("claude_code.terminal_typing_flush_timeout",{linzumi_thread_id:r,claude_session_id:$.sessionId,event_type:$.type,message:Fo instanceof Error?Fo.message:String(Fo)})}w===xt&&(w=void 0),Bi&&(j(),ie.currentSourceSeq()!==void 0&&Re()),($.type==="session_completed"||$.type==="session_failed")&&d!==void 0&&(e.activeClaudeCodeSessions.delete(d),await e.disposeClaudeCodeForwardPortSession?.(d)),$.type==="session_completed"&&Re(),m=!1,await D(),R(),P(),await tx({threadKey:r,workspace:n,channel:t,threadId:r,push:(Fo,Rc)=>e.kandan.push(e.topic,Fo,Rc),log:(Fo,Rc)=>e.log(Fo,Rc)})}if(($.type==="turn_completed"||$.type==="session_completed")&&e.log("claude_code.turn_completed",{linzumi_thread_id:r,claude_session_id:$.sessionId,body_source:$.bodySource??null,body_preview:Pu($.body)}),$.type==="rate_limit"&&await Kt($),$.type==="tool_result"&&ke?.settleTool($.itemKey),($.type==="turn_interrupted"||$.type==="session_failed")&&ke?.settleAll(),$.type==="session_failed"&&e.log("claude_code.session_failed",{linzumi_thread_id:r,claude_session_id:$.sessionId??null,model_transport_lane:Lo.lane,reason:$.reason,api_error_status:$.apiErrorProvenance?.status??null,api_error_request_id:$.apiErrorProvenance?.requestId??null,api_error_message:$.apiErrorProvenance?.message??null}),$.type==="usage"){let G=r9($.usage);G!==void 0&&e.log("claude_code.token_usage",{linzumi_thread_id:r,claude_session_id:$.sessionId,token_usage_summary:G})}Le||te.handleTranscriptEvent($)},lr=E(e.control.llmProxy),xo=y(lr?.baseUrl)?.trim(),jo=y(lr?.token)?.trim(),Lo=g8({env:process.env,llmProxyBindingPresent:xo!==void 0&&xo!==""&&jo!==void 0&&jo!=="",hostedLinzumiAgentContext:e.control.linzumiAgent!==void 0||e.options.threadProcess?.role==="thread"&&e.options.linzumiAgentMcpToken!==void 0,routedNonAnthropicModel:vQ(je.model)!==void 0});e.log("claude_code.model_transport_lane",{linzumi_thread_id:r,lane:Lo.lane,credential_class:Lo.credentialClass,reason:Lo.reason});let jy=b8({lane:Lo.lane,workspace:n,channel:t,threadId:r,model:xM(je.model),push:($,Le)=>e.kandan.push(e.topic,$,Le),log:e.log}),jr,ha,zi;if(Lo.lane==="llm_proxy"&&xo!==void 0&&xo!==""&&jo!==void 0&&jo!==""){try{jr=await GP({upstreamBaseUrl:xo,initialToken:jo,log:(Le,G)=>e.log(Le,{linzumi_thread_id:r,...G}),debugTrace:e.debugTrace,debugTraceId:e.debugTrace===void 0?void 0:`claude-code:${e.instanceId}`,dispatcher:Xo()?.dispatcher,onUpstreamRateLimited:({retryAfterMs:Le})=>qZ().notifyRateLimited({retryAfterMs:Le})});let $=jr;ha=ZP({relay:jr,mint:()=>bQ(e.kandan,e.topic,$.currentToken()),log:(Le,G)=>e.log(Le,{linzumi_thread_id:r,...G})})}catch($){e.log("llm_proxy_relay.start_failed_fallback_to_env_token",{linzumi_thread_id:r,message:$ instanceof Error?$.message:String($)}),jr=void 0,ha=void 0}zi=jr!==void 0?UZ(process.env,{baseUrl:jr.baseUrl},je.model):UZ(process.env,{baseUrl:xo,token:jo},je.model)}else zi=W6e(process.env);let Ly=K$e(zi),Pc=()=>ie.currentSourceSeq()!==void 0&&!tg({threadId:r,pendingApprovals:e.pendingClaudeCodeApprovals,pendingQuestions:e.pendingClaudeCodeUserQuestions}),Fy=($,Le)=>{if(L6e($.toolName))return Promise.resolve({type:"allow"});let G=p9($);switch(G.type){case"question":return(async()=>{await D();let Pe=await _Q({kandan:e.kandan,topic:e.topic,pendingApprovals:e.pendingClaudeCodeApprovals,pendingQuestions:e.pendingClaudeCodeUserQuestions,workspace:n,channel:t,threadId:r,sessionId:d??e.resumeSessionId,sourceSeq:ie.currentSourceSeq(),request:$,questionRequest:G.request,kind:"question",approvalDecisions:void 0,leaseEpoch:e.leaseEpochFor?.(r),signal:Le});return T(),Pe})();case"invalid":return Promise.resolve({type:"deny",message:G.message});case"not_question":{let Pe=v9(dh(r),$);return Pe!==void 0?(e.log("claude_code.tool_approval_auto_granted",{linzumi_thread_id:r,tool_name:$.toolName,request_id:$.requestId}),Promise.resolve(Pe)):q6e({kandan:e.kandan,topic:e.topic,pendingApprovals:e.pendingClaudeCodeApprovals,pendingQuestions:e.pendingClaudeCodeUserQuestions,workspace:n,channel:t,threadId:r,sessionId:d??e.resumeSessionId,sourceSeq:ie.currentSourceSeq(),request:$,leaseEpoch:e.leaseEpochFor?.(r),signal:Le})}}},Ct=(async()=>{let $;await He(),await dm({cwd:e.cwd,threadKey:r,turnRef:i===void 0?"session-start":`seq-${i}`,log:(Pe,We)=>e.log(Pe,We)});let Le=NZ(je.reasoningEffort),G=dh(r).map(FI);try{try{$=await d9({cwd:e.cwd,prompt:s,includeHookEvents:!0,developerInstructions:zf({cwd:e.cwd,agentLabel:"Claude Code",planTool:"todo-write",devServicesAvailable:!0,developerPrompt:bn,...IM(e.control),linzumiContext:un}),model:xM(je.model),...typeof Le=="string"?{effort:Le}:{},...e.debugTrace===void 0?{}:{claudeCodeDebugFile:Tt(e.debugTrace.runDir,"claude-code-debug.log")},...ae===void 0?{}:{permissionMode:ae},...G.length===0?{}:{permissionGrantRules:G},resumeSessionId:e.resumeSessionId,abortController:Te,streamingInput:ie,...e.options.claudeCodeRunner===void 0?{turnStallThresholdMs:D6e(process.env),turnStallIsActive:Pc,apiWaitStatusThresholdMs:1e4,apiWaitStatusItemKey:Pe=>{let We=ie.currentSourceSeq();return We===void 0?void 0:`system:claude-api-wait:${We}:${Pe}`}}:{},runner:e.options.claudeCodeRunner,debugTrace:e.debugTrace,canUseTool:Fy,...nn===void 0?{}:{mcpServers:nn},...ke===void 0?{}:{preToolUseHookMatchers:ke.hookMatchers,wrapApprovedToolInput:(Pe,We,xt)=>We==="Bash"?ke.wrapApprovedTool(Pe,xt):void 0},env:Ly,allowedTools:["mcp__linzumi__*"],onSessionControls:Pe=>{Ye=Pe,ae==="bypassPermissions"&&(ft=xQ({kandan:e.kandan,topic:e.topic,pendingClaudeCodeApprovals:e.pendingClaudeCodeApprovals,pendingClaudeCodeUserQuestions:e.pendingClaudeCodeUserQuestions,sessionThreadId:r,captureMessageStateAttemptGeneration:te.captureMessageStateAttemptGeneration,adoptMessageStateConsensusForAttempt:te.adoptMessageStateConsensusForAttempt,stopSession:We=>{te.interruptActiveTurn(We),Te.abort(new Error(We))},log:e.log,reason:"full_access_started"}).catch(We=>{e.log("claude_code.startup_approval_drain_failed",{linzumi_thread_id:r,claude_session_id:d??null,message:We instanceof Error?We.message:String(We)})}))},onTurnCompleted:()=>{v?v=!1:O(),ie.currentSourceSeq()!==void 0&&Re()},onTranscriptEvent:qo})}finally{let We=ie.drainUndeliveredFollowUps().map(xt=>xt.sourceSeq).filter(xt=>xt!==void 0);We.length>0&&e.onUndeliveredFollowUpsAtClose!==void 0&&e.onUndeliveredFollowUpsAtClose({channel:t,threadId:r,sourceSeqs:We}),d!==void 0&&(e.activeClaudeCodeSessions.delete(d),await e.disposeClaudeCodeForwardPortSession?.(d)),await D(),ie.close(),Ae?.(),ke?.close()}}catch(Pe){throw te.submitLifecycle("codexDied",Pe instanceof Error?Pe.message:String(Pe)),await te.close(5e3).catch(()=>{}),await Promise.race([he.settle().catch(()=>{}),new Promise(We=>{setTimeout(We,5e3).unref?.()})]),a(Pe instanceof Error?Pe.message:String(Pe)),en||e.setStartupStage("claude_code_session_failed"),Pe}return en||e.setStartupStage("posting_claude_code_output"),await te.awaitTurnsSettled(3e4),await te.close(3e4),await Promise.race([he.settle(),new Promise(Pe=>{setTimeout(Pe,1e4).unref?.()})]),$})();Ct.finally(()=>Z.unregister()).catch(()=>{}),Ct.finally(()=>{ha?.stop(),jr?.close()}).catch(()=>{}),ue.value=Ct;let _f,kd=e.options.claudeCodeRunner===void 0||process.env.LINZUMI_CLAUDE_DISPATCH_LIVENESS_MS!==void 0?Db({windowMs:uh(process.env),isDelivered:()=>Oe>0,isSessionClosed:()=>!1,lastSdkActivityMs:()=>Oe,hasPendingBlockingRequest:()=>tg({threadId:r,pendingApprovals:e.pendingClaudeCodeApprovals,pendingQuestions:e.pendingClaudeCodeUserQuestions}),log:e.log,onWedged:$=>{_f={waitedMs:$.waitedMs},e.log("claude_code.dispatch_liveness_wedged",{linzumi_thread_id:r,claude_session_id:d??e.resumeSessionId??null,waited_ms:$.waitedMs,cause:$.cause,dispatch:e.resumeSessionId===void 0?"initial_turn":"resume_turn"}),Te.abort(new Da($.waitedMs))}}):void 0;Ct.finally(()=>kd?.stop()).catch(()=>{});let Cd;try{Cd=await Promise.race([Ct.then($=>({type:"session_ended",result:$})),be.then(()=>({type:"first_turn_settled"}))])}catch($){throw _f!==void 0&&!($ instanceof Da)?new Da(_f.waitedMs):$}finally{kd?.stop()}let ya=$=>({controlResponse:{instanceId:e.instanceId,controlType:e.control.type,agentProvider:"claude-code",cwd:e.cwd,matchedRoot:e.matchedRoot,response:{session:{id:$}}},providerSession:{provider:"claude-code",cwd:e.cwd,matchedRoot:e.matchedRoot,sessionId:$}});if(Cd.type==="session_ended")return ya(Cd.result.sessionId);e.setStartupStage("posting_claude_code_output"),en=!0,await te.awaitTurnsSettled(3e4);try{await te.flush(3e4)}catch($){e.log("claude_code.first_turn_flush_timeout",{linzumi_thread_id:r,claude_session_id:d??null,message:$ instanceof Error?$.message:String($)})}ft!==void 0&&await ft;let Ic=await Promise.race([Ct.then($=>({type:"session_ended",result:$}),()=>{}),new Promise($=>{setImmediate(()=>$(void 0))})]);if(Ic!==void 0)return ya(Ic.result.sessionId);Ct.then(()=>{e.log("claude_code.session_loop_ended",{linzumi_thread_id:r,claude_session_id:d??null})},$=>{e.log("claude_code.session_loop_failed",{linzumi_thread_id:r,claude_session_id:d??null,message:$ instanceof Error?$.message:String($)})});let xf=d??e.resumeSessionId;if(xf!==void 0)return ya(xf);let bf=await Ct;return ya(bf.sessionId)}function L6e(e){return e.startsWith("mcp__linzumi__")}function FZ(e){switch(e){case"untrusted":return 0;case"on-request":return 1;case"on-failure":return 2;case"never":return 3;default:return}}function _M(e){switch(e){case"never":return"bypassPermissions";case"on-request":case"untrusted":return"default";case"on-failure":return"acceptEdits";default:return}}function NZ(e){switch(e?.trim().toLowerCase()){case"default":return null;case"low":return"low";case"medium":return"medium";case"high":return"high";case"xhigh":return"xhigh";default:return}}function F6e(e,n){return[...e.entries()].filter(([,t])=>t.threadId===n)}function N6e(e,n){return[...e.entries()].flatMap(([t,r])=>{switch(r.kind){case"question":return[];case"tool_approval":case"plan_review":return r.threadId===n?[[t,r]]:[]}})}async function xQ(e){let n=F6e(e.pendingClaudeCodeApprovals,e.sessionThreadId);for(let[r,o]of n){if(await mQ({pending:o,decision:{type:"allow"},incomingStatus:"processing",publishMessageState:()=>Io(e.kandan,e.topic,{workspace:o.workspace,channel:o.channel,threadId:o.threadId,sourceSeq:o.sourceSeq,status:"processing",reason:"Claude Code tool approved",sessionId:o.sessionId??e.sessionThreadId}),captureMessageStateAttemptGeneration:e.captureMessageStateAttemptGeneration,adoptMessageStateConsensusForAttempt:e.adoptMessageStateConsensusForAttempt,stopSession:e.stopSession,log:e.log,reason:e.reason})==="stopped")return;e.log("claude_code.approval_request_auto_approved",{request_id:r,source_seq:o.sourceSeq,session_id:o.sessionId??e.sessionThreadId,reason:e.reason})}let t=N6e(e.pendingClaudeCodeUserQuestions,e.sessionThreadId);for(let[r,o]of t){let i=o.approvalDecisions.get("Allow")??{type:"allow"};o.resolve(i),await dp(e.kandan,e.topic,{workspace:o.workspace,channel:o.channel,threadId:o.threadId,sourceSeq:o.sourceSeq,sessionId:o.sessionId,leaseEpoch:o.leaseEpoch,request:o.request,answerState:i.type==="deny"?{kind:"Denied",reason:i.message,actorUserId:e.actorUserId,actorSlug:e.actorSlug,answeredAt:new Date().toISOString()}:{kind:"Answered",answers:[{questionId:o.request.questions[0]?.questionId??`${r}:decision`,selectedLabels:["Allow"]}],actorUserId:e.actorUserId,actorSlug:e.actorSlug,answeredAt:new Date().toISOString()},streamState:"completed"}),e.log("claude_code.user_input_request_auto_approved",{request_id:r,source_seq:o.sourceSeq,session_id:o.sessionId??e.sessionThreadId,kind:o.kind,reason:e.reason})}}function z6e(e){return ox(e)}async function U6e(e,n){let t=J6e(n);if(t===void 0)return;let r=K6e(e,n);if(r===void 0)return;let o="root",i=B6e(`${e.workspace}:${e.cwd}:${t}:${o}`);await e.kandan.push(e.topic,"claude_session_store_append",{workspace:e.workspace,channel:e.channel,thread_id:e.threadId,cwd:e.cwd,sessionId:t,subkey:o,sequence:i,entryType:n.type,payload:r})}function B6e(e){let n=zZ.get(e),t=Date.now()*1e3,r=n===void 0?t:Math.max(n+1,t);return zZ.set(e,r),r}function J6e(e){switch(e.type){case"unknown":case"session_failed":return e.sessionId;default:return e.sessionId}}function K6e(e,n){switch(n.type){case"assistant_delta":case"slash_command_catalog":return;case"session_started":return{prompt:e.initialPrompt,threadId:e.threadId,rootSeq:e.rootSeq??null};case"assistant_message":return{itemKey:n.itemKey,body:n.content,streamState:n.streamState};case"tool_call":return{itemKey:n.itemKey,toolName:n.toolName,input:n.input};case"tool_result":return{itemKey:n.itemKey,toolName:n.toolName??null,body:n.content,isError:n.isError};case"reasoning_delta":return;case"reasoning_message":return{itemKey:n.itemKey,body:n.content};case"command_output":return{itemKey:n.itemKey,body:n.content};case"command_output_delta":return;case"usage":return{usage:n.usage};case"rate_limit":return{body:`Claude Code rate limit: ${DI(n.rateLimit,Date.now())}`,status:n.rateLimit.status??null,rate_limit_type:n.rateLimit.rateLimitType??null,utilization_percent:n.rateLimit.utilizationPercent??null,resets_at_ms:n.rateLimit.resetsAtMs??null};case"unknown":return{itemKey:n.itemKey,body:n.summary};case"turn_completed":case"session_completed":return{body:n.body,bodySource:n.bodySource??null,usage:n.usage??null};case"turn_interrupted":return{body:"Claude Code turn interrupted"};case"session_failed":return{body:n.reason};case"agent_status":case"agent_task_update":case"permission_mode_changed":return}}function W6e(e){let n={};for(let[t,r]of Object.entries(e))r!==void 0&&(n[t]=r);return n}async function bQ(e,n,t){let r=await e.push(n,"llm_proxy:mint_session_token",t!==void 0&&t!==""?{currentToken:t}:{});if(ne(r)&&r.status==="ok"&&ne(r.response)&&typeof r.response.token=="string"&&r.response.token!==""){let o=r.response.max_age_seconds;return{token:r.response.token,...typeof o=="number"&&Number.isFinite(o)&&o>0?{maxAgeMs:o*1e3}:{}}}}function UZ(e,n,t){let r={};for(let[i,s]of Object.entries(e))s!==void 0&&(i==="ANTHROPIC_BASE_URL"||i==="ANTHROPIC_CUSTOM_HEADERS"||i.startsWith("CLAUDE_CODE_USE_")||(r[i]=s));r.ANTHROPIC_BASE_URL=n.baseUrl,n.token!==void 0&&(r.ANTHROPIC_CUSTOM_HEADERS=`${V6e}: ${n.token}`);let o=vQ(t);return o!==void 0&&(r.ANTHROPIC_DEFAULT_OPUS_MODEL=o,r.ANTHROPIC_DEFAULT_SONNET_MODEL=o,r.ANTHROPIC_DEFAULT_HAIKU_MODEL=o,r.CLAUDE_CODE_SUBAGENT_MODEL=o),r}function vQ(e){let n=e?.trim();switch(n){case void 0:case"":case"default":case"haiku":case"sonnet":case"opus":case"fable-5":return;default:return n.startsWith("claude")?void 0:n}}function xM(e){let n=e?.trim();switch(n){case void 0:case"":case"default":return;case"haiku":case"sonnet":case"opus":return n;case"fable-5":return"claude-fable-5";default:return H6e(n)?"sonnet":n}}function H6e(e){let n=e.toLowerCase();return n.startsWith("gpt-")||n.startsWith("o1")||n.startsWith("o3")||n.startsWith("o4")||n.startsWith("o5")||n.startsWith("codex")}async function G6e(e,n,t,r,o){let i=fn(t,"workspace"),s=fn(t,"channel"),a=fn(t,"threadId"),d=y(t.modelProvider)?.trim(),u=y(t.model)?.trim();i===void 0||s===void 0||a===void 0||await e.push(n,"session:post_thread_message",{workspace:i,channel:s,thread_id:a,body:`Starting a new Codex thread with instructions:
1627
1627
 
1628
- ${r}`,payload:{metadata:{local_codex_runner:{event_type:"codex_start_instructions",codex_thread_id:o,instructions_body:r,...d===void 0||d===""?{}:{model_provider:d},...u===void 0||u===""?{}:{model:u}}}},client_message_id:`codex-start-instructions-${a}`})}function Pu(e){let n=e.replace(/\s+/g," ").trim();return n.length<=50?n:`${n.slice(0,47)}...`}function Z6e(e){return[e.status??"na",e.rateLimitType??"na",e.utilizationPercent??"na",e.resetsAtMs??"na"].join(":")}async function Q6e(e){await e.kandan.push(e.topic,"claude_rate_limit_state",{workspace:e.workspace,channel:e.channel,thread_id:e.threadId,agent_provider:"claude-code",...e.claudeSessionId===void 0?{}:{claude_session_id:e.claudeSessionId},rate_limit_type:e.rateLimit.rateLimitType??"account",status:e.rateLimit.status??"allowed",...e.rateLimit.utilizationPercent===void 0?{}:{utilization_percent:Math.min(100,Math.max(0,Math.round(e.rateLimit.utilizationPercent)))},...e.rateLimit.resetsAtMs===void 0?{}:{resets_at_ms:e.rateLimit.resetsAtMs}})}async function oo(e,n,t,r,o,i={}){let{failureClass:s,fateOverride:a,modelAccountRejection:d,...u}=i,c=Wa(t,r,o,{...u,...r==="failed"?Hc(s):{},...r==="failed"&&a!==void 0?{fate:a,retryable:ZC(a)}:{},...r==="failed"&&d!==void 0?{modelAccountRejection:d}:{}});c!==void 0&&await e.push(n,"message_state",c)}async function BZ(e,n={}){let t,r;try{r=U_(e.rawFailureText??e.failureReason),t=B_({stalled:!1,provenance:r})}catch(o){e.log("claude_code.start_path_fate_classification_failed",{message:o instanceof Error?o.message:String(o)})}t==="route_outage"&&r!==void 0&&X6e(e,r,n)||await oo(e.kandan,e.topic,e.control,"failed",e.failureReason,{codexThreadId:e.codexThreadId,instanceId:e.instanceId,failureClass:e.failureClass,...t===void 0?{}:{fateOverride:t}})}function X6e(e,n,t={}){let r=t.executeHold??uI,o=t.snapshotHoldCeilingMs??il,i=Y(e.control.rootSeq),s=Y(e.control.sourceSeq)??i,a=fn(e.control,"workspace"),d=fn(e.control,"channel"),u=fn(e.control,"threadId"),c=n.holdCeilingMinutes===void 0?void 0:n.holdCeilingMinutes*6e4,l=o();if(s===void 0||a===void 0||d===void 0||u===void 0||c===void 0&&(l===void 0||l<=0))return!1;let p=n.providerOutageRoute?.model,f=n.providerOutageRoute?.provider;return r({sourceSeq:s,reason:e.failureReason,provider:f,model:p,holdCeilingMs:c},{snapshotHoldCeilingMs:o,publishMessageState:g=>Io(e.kandan,e.topic,{workspace:a,channel:d,threadId:u,sourceSeq:g.sourceSeq,status:g.status,reason:g.reason,sessionId:e.codexThreadId,fate:g.fate,retryable:g.retryable,holdDeadlineAt:g.holdDeadlineAt,model:g.model,provider:g.provider}),adoptMessageStateConsensus:(g,m,_)=>(e.log("claude_code.start_path_route_outage_consensus_without_pipeline",{thread_id:u,source_seq:g,incoming_status:m,disposition:_.kind}),"stop"),redispatch:()=>!1,isSuperseded:()=>!1,attribution:()=>({...p===void 0?{}:{model:p},...f===void 0?{}:{provider:f}}),log:(g,m)=>e.log(g,{thread_id:u,start_path_never_started_turn:!0,...m})}).then(g=>{e.log("claude_code.start_path_route_outage_hold_settled",{thread_id:u,queued_seq:s,outcome:g})}).catch(async g=>{e.log("claude_code.start_path_route_outage_hold_crashed",{thread_id:u,queued_seq:s,message:g instanceof Error?g.message:String(g)});try{await oo(e.kandan,e.topic,e.control,"failed",e.failureReason,{codexThreadId:e.codexThreadId,instanceId:e.instanceId,failureClass:e.failureClass,fateOverride:"route_outage"})}catch{}}),!0}async function JZ(e,n,t,r,o,i={}){let s=Y(t.rootSeq),a=Y(t.sourceSeq)??s;if(a===void 0)return;let d=fn(t,"workspace"),u=fn(t,"channel"),c=fn(t,"threadId");d===void 0||u===void 0||c===void 0||await e.push(n,"message_state",{workspace:d,channel:u,thread_id:c,...i.instanceId===void 0?{}:{instance_id:i.instanceId},seq:a,status:"failed",reason:r,allowed_cwds:o})}async function Io(e,n,t){if(t.sourceSeq===void 0)return{kind:"unconfirmed"};let o=await(t.publishMode==="connected_only"?e.pushIfConnected:e.push)(n,"message_state",{workspace:t.workspace,channel:t.channel,thread_id:t.threadId,seq:t.sourceSeq,status:t.status,reason:t.reason,...t.status==="failed"?Hc(t.failureClass):{},...t.fate===void 0?{}:{fate:t.fate},...t.retryable===!0?{retryable:!0}:{},...t.holdDeadlineAt===void 0?{}:{hold_deadline_at:t.holdDeadlineAt},...t.model===void 0?{}:{model:t.model},...t.provider===void 0?{}:{provider:t.provider},...t.sessionId===void 0?{}:{codex_thread_id:t.sessionId},agent_provider:"claude-code"});return Od(o,"full")}function Wa(e,n,t,r={}){let o=Y(e.rootSeq),i=Y(e.sourceSeq)??o;if(i===void 0)return;let s=up(e,"workspace"),a=up(e,"channel"),d=up(e,"threadId"),u=ap(e),c=u.type==="ok"&&u.provider!=="codex"?u.provider:void 0;return{workspace:s,channel:a,thread_id:d,...r.instanceId===void 0?{}:{instance_id:r.instanceId},seq:i,status:n,reason:t,...r.codexThreadId===void 0?{}:{codex_thread_id:r.codexThreadId},...r.retryable===!0?{retryable:!0}:{},...r.fate!==void 0&&Bo(r.fate)?{fate:r.fate}:{},...r.modelAccountRejection===void 0?{}:{model_account_compatibility_identity:{agent_provider:r.modelAccountRejection.identity[0],model_provider:r.modelAccountRejection.identity[1]??null,model:r.modelAccountRejection.identity[2]},model_account_compatibility_rejection_reason:r.modelAccountRejection.reason},...c===void 0?{}:{agent_provider:c}}}function up(e,n){return Y6e(e,n)}function Y6e(e,n){let t=fn(e,n);if(t===void 0)throw new Error(`${e.type} control missing ${n}`);return t}function fn(e,n){let t=y(e[n])?.trim();if(!(t===void 0||t===""))return t}function mp(e,n){let t=gp(e),r=n.sandbox??t.sandbox,o=y(n.modelProvider)?.trim(),i=n.sandboxedApprovalNeverDefault===!0?!0:void 0;return{model:n.model??t.model,modelProvider:o===void 0||o===""?void 0:o,modelTransportCatalogStatus:n.modelTransportCatalogStatus,reasoningEffort:n.reasoningEffort??t.reasoningEffort,collaborationMode:n.collaborationMode??t.collaborationMode,approvalPolicy:jf(n.approvalPolicy??t.approvalPolicy,r,{sandboxedNeverDefault:i}),sandbox:r,sandboxedApprovalNeverDefault:i,fast:n.fast??e.fast,allowPortForwardingByDefault:n.allowPortForwardingByDefault??t.allowPortForwardingByDefault??!0}}function eje(e){return{...e.model===void 0?{}:{model:e.model},...e.reasoningEffort===void 0?{}:{reasoningEffort:e.reasoningEffort},...e.approvalPolicy===void 0?{}:{approvalPolicy:Lf(e.approvalPolicy,e.sandbox,{sandboxedNeverDefault:e.sandboxedApprovalNeverDefault})},...e.sandbox===void 0?{}:{sandbox:e.sandbox},...e.fast===!0?{serviceTier:"fast"}:{}}}function wQ(e){let{runtimeSettings:n}=e;return{type:"reconnect_thread",workspace:e.workspaceSlug,channel:e.channelSlug,threadId:e.kandanThreadId,codexThreadId:e.codexThreadId,cwd:e.cwd,agentProvider:"codex",...n.collaborationMode===void 0?{}:{collaborationMode:n.collaborationMode},...e.rootSeq===void 0?{}:{rootSeq:e.rootSeq},...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{reasoningEffort:n.reasoningEffort},...n.sandbox===void 0?{}:{sandbox:n.sandbox},...n.approvalPolicy===void 0?{}:{approvalPolicy:n.approvalPolicy},...n.fast===void 0?{}:{fast:n.fast}}}function nje(e){switch(e){case"exhausted":return"couldn't resume this job after several attempts; please resend your last message to continue.";case"withheld":return"this message may have already run before an unexpected shutdown; it was not re-run to avoid duplicating work. Please resend if it did not complete.";case"permanent":return"couldn't resume this job's coding session."}}function tje(e){switch(e){case"exhausted":return"dead_letter_exhausted";case"withheld":return"dead_letter_withheld";case"permanent":return"dead_letter_permanent"}}function ip(e){let n=e.control,t=Y(n.rootSeq),r=y(n.model),o=y(n.reasoningEffort),i=y(n.sandbox),s=y(n.approvalPolicy),a=n.collaborationMode==="plan"||n.collaborationMode==="default"?n.collaborationMode:void 0,d=typeof n.fast=="boolean"?n.fast:void 0;return{type:"reconnect_thread",workspace:e.workspace,channel:e.channel,threadId:e.kandanThreadId,codexThreadId:e.codexThreadId,cwd:e.cwd,agentProvider:"codex",...a===void 0?{}:{collaborationMode:a},...t===void 0?{}:{rootSeq:t},...r===void 0?{}:{model:r},...o===void 0?{}:{reasoningEffort:o},...i===void 0?{}:{sandbox:i},...s===void 0?{}:{approvalPolicy:s},...d===void 0?{}:{fast:d}}}function rje(e){let{control:n}=e;if(n.type!=="reconnect_thread")return;let t=fn(n,"channel"),r=fn(n,"threadId"),o=fn(n,"workspace"),i=Y(n.rootSeq),s=Y(n.sourceSeq)??i,a=Ro(n.workDescription),d=y(n.codexThreadId),u=y(n.cwd);if(!pG({controlType:n.type,channel:t,threadId:r,sourceSeq:s,workDescription:a,workspace:o,codexThreadId:d,cwd:u,agentProvider:n.agentProvider,hasRegistryRecord:e.hasRegistryRecord}).hold||t===void 0||r===void 0||s===void 0||a===void 0)return;let l={seq:s,type:"thread.message",actorKind:void 0,actorSlug:e.identity.actorUsername,actorUserId:e.identity.actorUserId,threadId:r,threadTitle:void 0,replyToSeq:i,localRunnerEventType:void 0,body:a,attachments:vi($e(n.attachments)??[]),traceparent:y(n.traceparent)},p=e.hasRegistryRecord||o===void 0||d===void 0||u===void 0?void 0:{workspace:o,channel:t,kandanThreadId:r,codexThreadId:d,cwd:u,agentProvider:"codex",control:wQ({workspaceSlug:o,channelSlug:t,kandanThreadId:r,codexThreadId:d,cwd:u,rootSeq:i,runtimeSettings:e.runtimeSettings}),updatedAtMs:e.nowMs};return{channel:t,threadId:r,sourceSeq:s,codexThreadId:d,queuePayload:jc(l),registryRecord:p}}async function oje(e){let{plan:n}=e,t=e.queue.enqueue(n.sourceSeq,"replay",n.queuePayload,e.nowMs);try{if(n.registryRecord!==void 0&&e.upsertRegistryRecord(n.registryRecord),e.queuedStatePayload!==void 0)try{await e.pushQueuedState(e.queuedStatePayload)}catch(r){e.log("runner.update_restart_drain_held_state_push_failed",{thread_id:n.threadId,source_seq:n.sourceSeq,message:r instanceof Error?r.message:String(r)})}e.trackHeld({channel:n.channel,threadId:n.threadId,sourceSeq:n.sourceSeq,heldAtMs:e.nowMs})}catch(r){return e.log("runner.update_restart_drain_hold_compensated",{thread_id:n.threadId,source_seq:n.sourceSeq,residual_duplicate_entry:!t.accepted,message:r instanceof Error?r.message:String(r)}),t.accepted&&e.queue.deadLetter(n.sourceSeq),{held:!1}}return{held:!0,enqueuedFresh:t.accepted}}function KZ(e){if(e.rootPid===void 0&&e.start===void 0)return;let n=[process.pid,...e.rootPid===void 0?[]:[e.rootPid],...e.commanderBoundPids??[]],t=e.commanderBoundPorts??[];return{...e.rootPid===void 0?{}:{rootPid:e.rootPid},...n.length===0?{}:{commanderBoundPids:n},...t.length===0?{}:{commanderBoundPorts:t},...e.start===void 0?{}:{start:e.start}}}function VZ(e){return e.threadProcess?.role!=="thread"&&e.codexUrl===void 0}async function ije(e){let n=process.env.LINZUMI_E2E_COMMANDER_BOUND_HTTP_PORT;if(n===void 0||n.trim()==="")return;let t=sje(n,"LINZUMI_E2E_COMMANDER_BOUND_HTTP_PORT"),r=E$e((o,i)=>{i.writeHead(200,{"content-type":"text/plain; charset=utf-8"}),i.end(`linzumi commander-bound probe
1628
+ ${r}`,payload:{metadata:{local_codex_runner:{event_type:"codex_start_instructions",codex_thread_id:o,instructions_body:r,...d===void 0||d===""?{}:{model_provider:d},...u===void 0||u===""?{}:{model:u}}}},client_message_id:`codex-start-instructions-${a}`})}function Pu(e){let n=e.replace(/\s+/g," ").trim();return n.length<=50?n:`${n.slice(0,47)}...`}function Z6e(e){return[e.status??"na",e.rateLimitType??"na",e.utilizationPercent??"na",e.resetsAtMs??"na"].join(":")}async function Q6e(e){await e.kandan.push(e.topic,"claude_rate_limit_state",{workspace:e.workspace,channel:e.channel,thread_id:e.threadId,agent_provider:"claude-code",...e.claudeSessionId===void 0?{}:{claude_session_id:e.claudeSessionId},rate_limit_type:e.rateLimit.rateLimitType??"account",status:e.rateLimit.status??"allowed",...e.rateLimit.utilizationPercent===void 0?{}:{utilization_percent:Math.min(100,Math.max(0,Math.round(e.rateLimit.utilizationPercent)))},...e.rateLimit.resetsAtMs===void 0?{}:{resets_at_ms:e.rateLimit.resetsAtMs}})}async function oo(e,n,t,r,o,i={}){let{failureClass:s,fateOverride:a,modelAccountRejection:d,...u}=i,c=Wa(t,r,o,{...u,...r==="failed"?Hc(s):{},...r==="failed"&&a!==void 0?{fate:a,retryable:ZC(a)}:{},...r==="failed"&&d!==void 0?{modelAccountRejection:d}:{}});c!==void 0&&await e.push(n,"message_state",c)}async function BZ(e,n={}){let t,r;try{r=U_(e.rawFailureText??e.failureReason),t=B_({stalled:!1,provenance:r})}catch(o){e.log("claude_code.start_path_fate_classification_failed",{message:o instanceof Error?o.message:String(o)})}t==="route_outage"&&r!==void 0&&X6e(e,r,n)||await oo(e.kandan,e.topic,e.control,"failed",e.failureReason,{codexThreadId:e.codexThreadId,instanceId:e.instanceId,failureClass:e.failureClass,...t===void 0?{}:{fateOverride:t}})}function X6e(e,n,t={}){let r=t.executeHold??uI,o=t.snapshotHoldCeilingMs??il,i=Y(e.control.rootSeq),s=Y(e.control.sourceSeq)??i,a=fn(e.control,"workspace"),d=fn(e.control,"channel"),u=fn(e.control,"threadId"),c=n.holdCeilingMinutes===void 0?void 0:n.holdCeilingMinutes*6e4,l=o();if(s===void 0||a===void 0||d===void 0||u===void 0||c===void 0&&(l===void 0||l<=0))return!1;let p=n.providerOutageRoute?.model,f=n.providerOutageRoute?.provider;return r({sourceSeq:s,reason:e.failureReason,provider:f,model:p,holdCeilingMs:c},{snapshotHoldCeilingMs:o,publishMessageState:g=>Io(e.kandan,e.topic,{workspace:a,channel:d,threadId:u,sourceSeq:g.sourceSeq,status:g.status,reason:g.reason,sessionId:e.codexThreadId,fate:g.fate,retryable:g.retryable,holdDeadlineAt:g.holdDeadlineAt,model:g.model,provider:g.provider}),adoptMessageStateConsensus:(g,m,_)=>(e.log("claude_code.start_path_route_outage_consensus_without_pipeline",{thread_id:u,source_seq:g,incoming_status:m,disposition:_.kind}),"stop"),redispatch:()=>!1,isSuperseded:()=>!1,attribution:()=>({...p===void 0?{}:{model:p},...f===void 0?{}:{provider:f}}),log:(g,m)=>e.log(g,{thread_id:u,start_path_never_started_turn:!0,...m})}).then(g=>{e.log("claude_code.start_path_route_outage_hold_settled",{thread_id:u,queued_seq:s,outcome:g})}).catch(async g=>{e.log("claude_code.start_path_route_outage_hold_crashed",{thread_id:u,queued_seq:s,message:g instanceof Error?g.message:String(g)});try{await oo(e.kandan,e.topic,e.control,"failed",e.failureReason,{codexThreadId:e.codexThreadId,instanceId:e.instanceId,failureClass:e.failureClass,fateOverride:"route_outage"})}catch{}}),!0}async function JZ(e,n,t,r,o,i={}){let s=Y(t.rootSeq),a=Y(t.sourceSeq)??s;if(a===void 0)return;let d=fn(t,"workspace"),u=fn(t,"channel"),c=fn(t,"threadId");d===void 0||u===void 0||c===void 0||await e.push(n,"message_state",{workspace:d,channel:u,thread_id:c,...i.instanceId===void 0?{}:{instance_id:i.instanceId},seq:a,status:"failed",reason:r,allowed_cwds:o})}async function Io(e,n,t){if(t.sourceSeq===void 0)return{kind:"unconfirmed"};let o=await(t.publishMode==="connected_only"?e.pushIfConnected:e.push)(n,"message_state",{workspace:t.workspace,channel:t.channel,thread_id:t.threadId,seq:t.sourceSeq,status:t.status,reason:t.reason,...t.status==="failed"?Hc(t.failureClass):{},...t.fate===void 0?{}:{fate:t.fate},...t.retryable===!0?{retryable:!0}:{},...t.holdDeadlineAt===void 0?{}:{hold_deadline_at:t.holdDeadlineAt},...t.model===void 0?{}:{model:t.model},...t.provider===void 0?{}:{provider:t.provider},...t.sessionId===void 0?{}:{codex_thread_id:t.sessionId},agent_provider:"claude-code"});return Od(o,"full")}function Wa(e,n,t,r={}){let o=Y(e.rootSeq),i=Y(e.sourceSeq)??o;if(i===void 0)return;let s=up(e,"workspace"),a=up(e,"channel"),d=up(e,"threadId"),u=ap(e),c=u.type==="ok"&&u.provider!=="codex"?u.provider:void 0;return{workspace:s,channel:a,thread_id:d,...r.instanceId===void 0?{}:{instance_id:r.instanceId},seq:i,status:n,reason:t,...r.codexThreadId===void 0?{}:{codex_thread_id:r.codexThreadId},...r.retryable===!0?{retryable:!0}:{},...r.fate!==void 0&&Bo(r.fate)?{fate:r.fate}:{},...r.modelAccountRejection===void 0?{}:{model_account_compatibility_identity:{agent_provider:r.modelAccountRejection.identity[0],model_provider:r.modelAccountRejection.identity[1]??null,model:r.modelAccountRejection.identity[2]},model_account_compatibility_rejection_reason:r.modelAccountRejection.reason},...c===void 0?{}:{agent_provider:c}}}function up(e,n){return Y6e(e,n)}function Y6e(e,n){let t=fn(e,n);if(t===void 0)throw new Error(`${e.type} control missing ${n}`);return t}function fn(e,n){let t=y(e[n])?.trim();if(!(t===void 0||t===""))return t}function mp(e,n){let t=gp(e),r=n.sandbox??t.sandbox,o=y(n.modelProvider)?.trim(),i=n.sandboxedApprovalNeverDefault===!0?!0:void 0;return{model:n.model??t.model,modelProvider:o===void 0||o===""?void 0:o,modelTransportCatalogStatus:n.modelTransportCatalogStatus,reasoningEffort:n.reasoningEffort??t.reasoningEffort,collaborationMode:n.collaborationMode??t.collaborationMode,approvalPolicy:jf(n.approvalPolicy??t.approvalPolicy,r,{sandboxedNeverDefault:i}),sandbox:r,sandboxedApprovalNeverDefault:i,fast:n.fast??e.fast,allowPortForwardingByDefault:n.allowPortForwardingByDefault??t.allowPortForwardingByDefault??!0}}function eje(e,n={}){return{...e.model===void 0?{}:{model:e.model},...e.fast===!0?{serviceTier:"fast"}:{},...n.cwd===void 0?{}:{cwd:n.cwd},...e.approvalPolicy===void 0?{}:{approvalPolicy:Lf(e.approvalPolicy,e.sandbox,{sandboxedNeverDefault:e.sandboxedApprovalNeverDefault})},...e.sandbox===void 0?{}:{sandbox:e.sandbox},...e.reasoningEffort===void 0?{}:{config:{model_reasoning_effort:e.reasoningEffort}},...n.serviceName===void 0?{}:{serviceName:n.serviceName},...n.developerInstructions===void 0?{}:{developerInstructions:n.developerInstructions},...n.personality===void 0?{}:{personality:n.personality}}}function wQ(e){let{runtimeSettings:n}=e;return{type:"reconnect_thread",workspace:e.workspaceSlug,channel:e.channelSlug,threadId:e.kandanThreadId,codexThreadId:e.codexThreadId,cwd:e.cwd,agentProvider:"codex",...n.collaborationMode===void 0?{}:{collaborationMode:n.collaborationMode},...e.rootSeq===void 0?{}:{rootSeq:e.rootSeq},...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{reasoningEffort:n.reasoningEffort},...n.sandbox===void 0?{}:{sandbox:n.sandbox},...n.approvalPolicy===void 0?{}:{approvalPolicy:n.approvalPolicy},...n.fast===void 0?{}:{fast:n.fast}}}function nje(e){switch(e){case"exhausted":return"couldn't resume this job after several attempts; please resend your last message to continue.";case"withheld":return"this message may have already run before an unexpected shutdown; it was not re-run to avoid duplicating work. Please resend if it did not complete.";case"permanent":return"couldn't resume this job's coding session."}}function tje(e){switch(e){case"exhausted":return"dead_letter_exhausted";case"withheld":return"dead_letter_withheld";case"permanent":return"dead_letter_permanent"}}function ip(e){let n=e.control,t=Y(n.rootSeq),r=y(n.model),o=y(n.reasoningEffort),i=y(n.sandbox),s=y(n.approvalPolicy),a=n.collaborationMode==="plan"||n.collaborationMode==="default"?n.collaborationMode:void 0,d=typeof n.fast=="boolean"?n.fast:void 0;return{type:"reconnect_thread",workspace:e.workspace,channel:e.channel,threadId:e.kandanThreadId,codexThreadId:e.codexThreadId,cwd:e.cwd,agentProvider:"codex",...a===void 0?{}:{collaborationMode:a},...t===void 0?{}:{rootSeq:t},...r===void 0?{}:{model:r},...o===void 0?{}:{reasoningEffort:o},...i===void 0?{}:{sandbox:i},...s===void 0?{}:{approvalPolicy:s},...d===void 0?{}:{fast:d}}}function rje(e){let{control:n}=e;if(n.type!=="reconnect_thread")return;let t=fn(n,"channel"),r=fn(n,"threadId"),o=fn(n,"workspace"),i=Y(n.rootSeq),s=Y(n.sourceSeq)??i,a=Ro(n.workDescription),d=y(n.codexThreadId),u=y(n.cwd);if(!pG({controlType:n.type,channel:t,threadId:r,sourceSeq:s,workDescription:a,workspace:o,codexThreadId:d,cwd:u,agentProvider:n.agentProvider,hasRegistryRecord:e.hasRegistryRecord}).hold||t===void 0||r===void 0||s===void 0||a===void 0)return;let l={seq:s,type:"thread.message",actorKind:void 0,actorSlug:e.identity.actorUsername,actorUserId:e.identity.actorUserId,threadId:r,threadTitle:void 0,replyToSeq:i,localRunnerEventType:void 0,body:a,attachments:vi($e(n.attachments)??[]),traceparent:y(n.traceparent)},p=e.hasRegistryRecord||o===void 0||d===void 0||u===void 0?void 0:{workspace:o,channel:t,kandanThreadId:r,codexThreadId:d,cwd:u,agentProvider:"codex",control:wQ({workspaceSlug:o,channelSlug:t,kandanThreadId:r,codexThreadId:d,cwd:u,rootSeq:i,runtimeSettings:e.runtimeSettings}),updatedAtMs:e.nowMs};return{channel:t,threadId:r,sourceSeq:s,codexThreadId:d,queuePayload:jc(l),registryRecord:p}}async function oje(e){let{plan:n}=e,t=e.queue.enqueue(n.sourceSeq,"replay",n.queuePayload,e.nowMs);try{if(n.registryRecord!==void 0&&e.upsertRegistryRecord(n.registryRecord),e.queuedStatePayload!==void 0)try{await e.pushQueuedState(e.queuedStatePayload)}catch(r){e.log("runner.update_restart_drain_held_state_push_failed",{thread_id:n.threadId,source_seq:n.sourceSeq,message:r instanceof Error?r.message:String(r)})}e.trackHeld({channel:n.channel,threadId:n.threadId,sourceSeq:n.sourceSeq,heldAtMs:e.nowMs})}catch(r){return e.log("runner.update_restart_drain_hold_compensated",{thread_id:n.threadId,source_seq:n.sourceSeq,residual_duplicate_entry:!t.accepted,message:r instanceof Error?r.message:String(r)}),t.accepted&&e.queue.deadLetter(n.sourceSeq),{held:!1}}return{held:!0,enqueuedFresh:t.accepted}}function KZ(e){if(e.rootPid===void 0&&e.start===void 0)return;let n=[process.pid,...e.rootPid===void 0?[]:[e.rootPid],...e.commanderBoundPids??[]],t=e.commanderBoundPorts??[];return{...e.rootPid===void 0?{}:{rootPid:e.rootPid},...n.length===0?{}:{commanderBoundPids:n},...t.length===0?{}:{commanderBoundPorts:t},...e.start===void 0?{}:{start:e.start}}}function VZ(e){return e.threadProcess?.role!=="thread"&&e.codexUrl===void 0}async function ije(e){let n=process.env.LINZUMI_E2E_COMMANDER_BOUND_HTTP_PORT;if(n===void 0||n.trim()==="")return;let t=sje(n,"LINZUMI_E2E_COMMANDER_BOUND_HTTP_PORT"),r=E$e((o,i)=>{i.writeHead(200,{"content-type":"text/plain; charset=utf-8"}),i.end(`linzumi commander-bound probe
1629
1629
  `)});return await aje(r,t),e("runner.e2e_commander_bound_http_probe_started",{port:t}),{port:t,close:()=>dje(r)}}function sje(e,n){let t=e.trim(),r=Number.parseInt(t,10);if(!/^\d+$/u.test(t)||!Number.isInteger(r))throw new Error(`${n} must be an integer TCP port`);if(r<=0||r>65535)throw new Error(`${n} must be between 1 and 65535`);return r}function aje(e,n){return new Promise((t,r)=>{let o=s=>{e.off("listening",i),r(s)},i=()=>{e.off("error",o),t()};e.once("error",o),e.once("listening",i),e.listen(n,"127.0.0.1")})}function dje(e){return e.listening?new Promise((n,t)=>{e.close(r=>{if(r!==void 0){t(r);return}n()})}):Promise.resolve()}function uje(e){return ul({rootPid:process.pid,commanderBoundPids:[process.pid],onCandidate:n=>{if(n.portKind!=="commander_bound"||e.managedForwardPorts.has(n.port))return;let t=es(n.command);e.markCommanderManagedForwardPort(n.port,{processName:t?.appName??qm(n),processIconKey:t?.iconKey??"terminal"}),e.pushForwardPortEvent("forward_port_resolved",{instanceId:e.instanceId,requestId:`commander-bound-${n.pid}-${n.port}`,port:n.port,decision:"approve",capabilities:e.capabilitiesPayload()})},onCandidateLost:n=>{n.portKind==="commander_bound"&&e.managedForwardPorts.has(n.port)&&(e.clearCommanderManagedForwardPort(n.port),e.pushForwardPortEvent("forward_port_revoked",{instanceId:e.instanceId,requestId:`commander-bound-${n.pid}-${n.port}`,port:n.port,decision:"revoked",reason:"listener_exited",capabilities:Ia(e.capabilitiesPayload(),n.port)}))},onError:n=>e.log("port_forward.commander_bound_watch_failed",{message:n.message})})}function cje(e){if(e.codingJobToolScope==="coding"&&e.linzumiAgent?.mcpToken===void 0&&!IM(e).projectBound)return"coding"}function EM(e){if(e.multiAgentJobsEnabled!==!0)return;let n=e.codingJob?.mcpToken?.trim();if(n===void 0||n==="")throw new Error(`${e.type} control enabled multi-agent jobs without codingJob.mcpToken`);return n}function lje(e,n){return EM(e)}function pje(e){let n=mp(e.options,e.control),t=v0(e.control);return{...e.options,clientId:void 0,machineId:void 0,runnerLockConfigPath:void 0,workspaceSlug:e.workspaceSlug,cwd:e.cwd,codexUrl:void 0,launchTui:!1,allowedCwds:Array.from(new Set([e.cwd,...e.options.allowedCwds])),codeServerBin:e.options.editorRuntime?.mode==="server_managed"?void 0:e.options.codeServerBin,editorRuntime:void 0,threadProcess:{role:"thread",kandanThreadId:e.kandanThreadId},codexModelProvider:t.type==="provider"?t.runtime:void 0,linzumiAgentMcpToken:e.control.linzumiAgent?.mcpToken??e.options.linzumiAgentMcpToken,codingJobMcpToken:EM(e.control),codingJobToolScope:cje(e.control),multiAgentJobs:e.control.multiAgentJobsEnabled===!0,multiAgentJobsEligible:e.control.multiAgentJobsEligible===!0,vmExecution:e.options.vmExecution,executionMode:e.control.type==="start_instance"?MM(e.control.executionMode):e.options.executionMode,egressMode:e.control.type==="start_instance"?DM(e.control.egressMode):e.options.egressMode,projectId:e.control.type==="start_instance"?dLe(e.control.projectId):e.options.projectId,projectPublicId:e.control.type==="start_instance"?rg(e.control.projectPublicId):e.options.projectPublicId,goldenImagePublicId:e.control.type==="start_instance"?rg(e.control.goldenImagePublicId):e.options.goldenImagePublicId,spawnThreadRunner:void 0,localVmReadinessProbe:void 0,threadRunnerReadyTimeoutMs:e.options.threadRunnerReadyTimeoutMs,runtimeDefaults:{model:n.model,reasoningEffort:n.reasoningEffort,collaborationMode:n.collaborationMode,sandbox:n.sandbox,approvalPolicy:n.approvalPolicy,allowPortForwardingByDefault:n.allowPortForwardingByDefault},channelSession:void 0}}function fje(e){if(e===void 0||!Number.isInteger(e)||e<=0)return!0;try{return process.kill(e,0),!0}catch(n){return n?.code==="EPERM"}}function m0(e){if(e.kind==="starting")return"starting";let n=e.handle;return n.codex.isClosed?.()===!0||n.sessionClosed?.()===!0?"dead":fje(n.processPid)?"live":"dead"}async function Gh(e){switch(e.kind){case"running":if(e.handle.closeWithOutcome!==void 0)return e.handle.closeWithOutcome();await e.handle.close();return;case"starting":try{let n=await e.promise;if(n.closeWithOutcome!==void 0)return n.closeWithOutcome();await n.close();return}catch{return}}}function hje(e){return e.length>WZ?e.slice(e.length-WZ):e}function HZ(e){let n=e instanceof Error?e.message:String(e??"");return gje.test(n)}function yje(e){let n=no(e.cwd,e.allowedCwds);if(n.ok)return;let t=e.allowedCwds.length===0?"none":e.allowedCwds.join(", ");return{reason:n.reason,message:`${kQ} (${n.reason}): working directory ${e.cwd} cannot start a coding session on this runner (allowed roots: ${t})`}}function _je(e){return e.split(`
1630
1630
  `).map(n=>n.trim()).find(n=>n.startsWith(kQ))}function xje(e){let t=(e instanceof Error?e.message:String(e??"")).trim();return`stillborn_worker: ${t===""?"the engine worker never started":fp(t,TM)}`}function bje(e){if(vI(e)){let n=e instanceof Error?e.message:String(e);return{reason:`cwd_stillbirth_circuit_open: ${fp(n.trim(),TM)}`,failureClass:"cwd_stillbirth_circuit_open"}}if(UA(e)){let n=e instanceof Error?e.message:String(e);return{reason:`runner_updating: ${fp(n.trim(),TM)}`,failureClass:"runner_updating"}}return{reason:xje(e),failureClass:"stillborn_worker"}}function vje(e){let n=`thread Codex worker exited before ready: code=${e.code??"null"} signal=${e.signal??"null"}`,t=e.capturedOutput.trim();return t===""?n:`${n}
1631
1631
  worker output: ${t}`}async function wje(e,n={}){let t=Math.max(1,n.maxAttempts??SQ),r=n.backoffMs??mje,o=n.sleep??(s=>new Promise(a=>setTimeout(a,s))),i;for(let s=1;s<=t;s++){let a=await e(s);if(a.kind==="ready")return a.handle;i=a;let d=_je(a.capturedOutput),u=s<t&&d===void 0;if(ye("runner.thread_runner_exited_before_ready",{purpose:"linzumi.thread_runner",attempt:s,maxAttempts:t,code:a.code,signal:a.signal,capturedOutput:a.capturedOutput,willRespawn:u,...d===void 0?{}:{deterministicPreflightFailure:d}}),d!==void 0)throw new Error(d);if(!u)break;n.onRespawn?.({attemptNumber:s+1,previous:a}),r>0&&await o(r)}throw new Error(vje(i??{kind:"exited-before-ready",code:null,signal:null,capturedOutput:""}))}function Sje(e){return Zm({stop:()=>{try{e.exitCode===null&&e.signalCode===null&&e.kill("SIGINT")}catch{}},pid:e.pid,ownProcessGroup:!1,kind:"linzumi.thread_runner"})}function kje(){AM.value=zh({argv1:process.argv[1],cwd:process.cwd(),onEvent:TQ})}function Cje(e,n){return{LINZUMI_THREAD_RUNNER_ROLE:"thread",LINZUMI_THREAD_RUNNER_KANDAN_THREAD_ID:e.threadProcess?.kandanThreadId??"",LINZUMI_THREAD_RUNNER_TOKEN:e.token,LINZUMI_DEV_SERVICES_PARENT_PID:String(n.devServicesParentPid),...e.codexModelProvider===void 0?{}:{LINZUMI_LLM_PROXY_TOKEN:e.codexModelProvider.llmProxyToken},LINZUMI_THREAD_RUNNER_AGENT_MCP_TOKEN:e.linzumiAgentMcpToken??"",LINZUMI_THREAD_RUNNER_CODING_JOB_MCP_TOKEN:e.codingJobMcpToken??"",...n.forwardableOpenAiApiKey===void 0?{}:{OPENAI_API_KEY:n.forwardableOpenAiApiKey}}}async function Tje(e){let n=gH({pinnedRef:AM,argv1:process.argv[1],cwd:process.cwd(),onEvent:TQ}),t=e.threadProcess?.kandanThreadId??"",r=nV({codexBin:e.codexBin,source:e.dependencyStatus?.codex.source}),o=["run",...Oje(r.codexBin===e.codexBin?e:{...e,codexBin:r.codexBin})],i=GZ(n,o),s=GZ(n,$je(o)),a=e.codexModelProvider?.provider==="openai-proxy"?Bs():void 0,d={...process.env,...Cje(e,{devServicesParentPid:$M(e),forwardableOpenAiApiKey:a})};return wje(async c=>{ye("process.spawn",{command:process.execPath,args:s,cwd:e.cwd,attempt:c,purpose:"linzumi.thread_runner",codex_bin_path:r.codexBin,codex_bin_source:r.source??null,codex_version:e.dependencyStatus?.codex.version??null});let l=C0(process.execPath,i,{cwd:e.cwd,env:d,stdio:["inherit","pipe","pipe","ipc"]}),p="",f={active:!0},g=(C,T)=>{let P=l[C];P!==null&&P.on("data",LW({tuiActive:dA,terminal:T,writeAuditEvent:ye,pid:l.pid,streamName:C,capture:f,appendCapturedOutput:O=>{p=hje(`${p}${O}`)}}))};g("stdout",process.stdout),g("stderr",process.stderr),ye("process.spawned",{command:process.execPath,args:s,cwd:e.cwd,pid:l.pid,attempt:c,purpose:"linzumi.thread_runner"});let m=Sje(l),_=new Set,b={exited:!1},w={closed:!1};l.on("message",C=>{bH(C)&&(w.closed=!0,ye("runner.thread_runner_session_detached",{purpose:"linzumi.thread_runner",kandanThreadId:C.kandanThreadId,reason:C.reason,pid:l.pid})),vH(C)&&SH(T=>{if(l.send===void 0||l.connected===!1)throw new Error("thread worker IPC channel closed");l.send(T)},C,CQ.value)}),l.once("exit",(C,T)=>{ye("process.exit",{command:process.execPath,args:s,cwd:e.cwd,pid:l.pid,code:C,signal:T,purpose:"linzumi.thread_runner"}),m.unregister(),b.exited=!0;for(let P of _)P();_.clear()});let v=await new Promise((C,T)=>{let P=!1,O,R=()=>{O!==void 0&&clearTimeout(O),l.off("message",B),l.off("close",K)},j=W=>{P||(P=!0,R(),W())},B=W=>{let H=(()=>{try{return Rje(W,t)}catch(X){j(()=>T(X instanceof Error?X:new Error(String(X))));return}})();H!==void 0&&j(()=>C({kind:"ready",kandanThreadId:H.kandanThreadId,commanderManagedPorts:H.commanderManagedPorts}))},K=(W,H)=>{j(()=>C({kind:"exited-before-ready",code:W,signal:H,capturedOutput:p}))},D=()=>{j(()=>{l.kill("SIGINT"),T(PQ(t,J))})};l.on("message",B),l.once("close",K);let J=IQ(e);O=setTimeout(D,J)});if(v.kind==="exited-before-ready")return v;f.active=!1;let S=async()=>{let C=await dB(l);return(C==="exited_after_sigkill"||C==="abandoned")&&ye("runner.thread_runner_close_escalated",{purpose:"linzumi.thread_runner",kandanThreadId:t,pid:l.pid,outcome:C}),C};return{kind:"ready",handle:{kandanThreadId:v.kandanThreadId,codex:CH(l),processPid:l.pid,commanderManagedPorts:v.commanderManagedPorts,sessionClosed:()=>w.closed,onExit:C=>{if(b.exited){queueMicrotask(C);return}_.add(C)},closeWithOutcome:S,close:async()=>{await S()}}}},{onRespawn:({attemptNumber:c})=>{ye("runner.thread_runner_respawn",{purpose:"linzumi.thread_runner",kandanThreadId:t,cwd:e.cwd,attempt:c,maxAttempts:SQ})}})}function GZ(e,n){return[...Xh(process.execArgv),e,...n]}function Xh(e,n=0){let t=e[n];if(t===void 0)return[];if(Pje(t)){let r=e[n+1];return r===void 0?Xh(e,n+1):[t,r,...Xh(e,n+2)]}return Ije(t)?[t,...Xh(e,n+1)]:Xh(e,n+1)}function Pje(e){return["--require","-r","--import","--loader","--experimental-loader"].includes(e)}function Ije(e){return["--require=","-r=","--import=","--loader=","--experimental-loader="].some(n=>e.startsWith(n))}function Rje(e,n){if(!ne(e)||e.type!=="linzumi_thread_codex_worker_ready")return;let t=y(e.kandanThreadId);if(t!==n)throw new Error("thread Codex worker reported invalid ready payload");return{kandanThreadId:t,commanderManagedPorts:Eje(e.commanderManagedPorts)}}function Eje(e){return Array.isArray(e)?e.flatMap(n=>{if(!ne(n))return[];let t=Y(n.port);if(t===void 0||t<1||t>65535)return[];let r=Y(n.pid),o=y(n.processName),i=y(n.processIconKey),s=Aje(n.agentProvider);return[{port:t,...r===void 0?{}:{pid:r},...o===void 0?{}:{processName:o},...i===void 0?{}:{processIconKey:i},...s===void 0?{}:{agentProvider:s}}]}):[]}function Aje(e){switch(y(e)){case"codex":return"codex";case"claude-code":return"claude-code";default:return}}function Mje(e,n){let t=n?.proc??process;return new Promise(r=>{let o=R0(()=>{t.off("disconnect",o),t.off("SIGINT",o),t.off("SIGTERM",i),e.off("exit",o),r()}),i=()=>{if(_G({signal:"SIGTERM",parentIpcConnected:t.connected===!0,platform:t.platform})){n?.log?.(yG,{signal:"SIGTERM",parentIpcConnected:!0});return}o()};t.once("disconnect",o),t.once("SIGINT",o),t.on("SIGTERM",i),e.once("exit",o)})}function Dje(e,n){return new Promise((t,r)=>{let o=!1,i=setTimeout(()=>{o||(o=!0,r(PQ(n.kandanThreadId,n.timeoutMs)))},n.timeoutMs);e.then(s=>{o||(o=!0,clearTimeout(i),t(s))},s=>{o||(o=!0,clearTimeout(i),r(s))})})}function PQ(e,n){return new Error(`thread Codex worker did not report ready within ${n}ms for Kandan thread ${e}`)}function IQ(e){let n=e.threadRunnerReadyTimeoutMs??L$e;if(Number.isFinite(n)&&n>=0)return n;throw new Error("thread runner ready timeout must be a non-negative number")}function Oje(e){return["--api-url",e.kandanUrl,"--cwd",e.cwd,"--codex-bin",e.codexBin,...sr("--workspace",e.workspaceSlug),...sr("--log-file",e.logFile),...sr("--debug-trace-dir",e.debugTrace?.dir),...sr("--debug-trace-content",e.debugTrace?.contentMode),...e.fast===!0?["--fast"]:[],...sr("--allowed-cwd",e.allowedCwds.join(",")),...sr("--forward-port",(e.allowedForwardPorts??[]).join(",")),...sr("--code-server-bin",e.codeServerBin),...sr("--model",e.runtimeDefaults?.model),...sr("--reasoning-effort",e.runtimeDefaults?.reasoningEffort),...sr("--collaboration-mode",e.runtimeDefaults?.collaborationMode),...sr("--sandbox",e.runtimeDefaults?.sandbox),...sr("--approval-policy",e.runtimeDefaults?.approvalPolicy),...e.codexModelProvider===void 0?[]:["--model-provider",e.codexModelProvider.provider,"--llm-proxy-base-url",e.codexModelProvider.llmProxyBaseUrl],...e.vmExecution===!0?["--vm-execution"]:[],...sr("--execution-mode",e.executionMode),...sr("--egress-mode",e.egressMode),...sr("--project-public-id",e.projectPublicId),...sr("--golden-image-id",e.goldenImagePublicId),...sr("--multi-agent-jobs-eligible",String(e.multiAgentJobsEligible===!0)),...sr("--multi-agent-jobs-enabled",String(e.multiAgentJobs===!0)),...e.runtimeDefaults===void 0?[]:e.runtimeDefaults.allowPortForwardingByDefault?["--allow-port-forwarding-by-default"]:["--no-allow-port-forwarding-by-default"]]}function $je(e){let n=[];for(let t=0;t<e.length;t+=1){let r=e[t];if(r==="--token"){n.push(r,"<redacted>"),t+=1;continue}r!==void 0&&n.push(r)}return n}function sr(e,n){return n===void 0||n===""?[]:[e,n]}function qje(e,n,t){let r=jn(e),o=a=>d=>{n("onboarding.discovery_chain_failed",{phase:a,runnerId:e.runnerId,workspace:r??null,message:d instanceof Error?d.message:String(d)})};if(!sLe(e,r)){Promise.resolve().then(()=>t?.()).catch(o("no_scan_reprobe"));return}let i=aLe(e,r);if(tM.has(i)){n("onboarding.discovery_agents_already_started",{runnerId:e.runnerId,workspace:r});return}tM.add(i),n("onboarding.discovery_agents_started",{runnerId:e.runnerId,workspace:r,kandanUrl:e.kandanUrl});let s=Date.now();Promise.allSettled([EQ(e,n),nLe(e,n)]).then(async a=>{let d=Date.now()-s,u=0;for(let c of a){if(c.status!=="fulfilled"||c.value===void 0)continue;u+=c.value.successfulPostStartWriteCount??0,await ei(e,n,{...c.value,metadata:{...c.value.metadata,initial_search_duration_ms:d}})&&(u+=1)}u===0&&(tM.delete(i),n("onboarding.discovery_agents_start_key_cleared",{runnerId:e.runnerId,workspace:r})),n("onboarding.discovery_initial_search_completed",{runnerId:e.runnerId,workspace:r,duration_ms:d,workers_completed:2,successful_write_count:u}),await t?.()}).catch(o("initial_search"))}function w0(e,n){return{...e,successfulPostStartWriteCount:n}}async function bM(e,n){return await n?e+1:e}function RQ(e){return e.filter(n=>n.status==="fulfilled").length}async function Fje(e,n,t){let r=y(t.workspace)??jn(e);if(r===void 0)throw new Error("workspace_required");let o=Uje(t.sources),i=zje(e.runnerId,r,o);if(rM.has(i)){n("onboarding.conversation_import_skipped",{runnerId:e.runnerId,workspace:r,sources:o,reason:"already_running"});return}rM.add(i);try{await Nje(e,n,t,r,o)}finally{rM.delete(i)}}async function Nje(e,n,t,r,o){if(o.length===0){await ei(e,n,{phase:"conversations",status:"completed",placesSearched:0,message:"No local conversation imports selected",currentPlace:"Codex and Claude Code stores",metadata:{worker_id:"conversations-local-import",worker_label:"Local conversation import",imported_count:0,reported_count:0}});return}await ei(e,n,{phase:"conversations",status:"running",placesSearched:0,message:"Importing local conversations",currentPlace:"Codex and Claude Code stores",metadata:{worker_id:"conversations-local-import",worker_label:"Local conversation import",imported_count:0,reported_count:0}});let i=e.localConversationDiscovery?.()??nC({candidateLimit:h0}),s=new Set(o),a=i.candidates.filter(f=>s.has(f.source)).slice(0,h0),d=a.length,u=Zs({kandanUrl:e.kandanUrl,accessToken:e.token,fetchImpl:e.fetch,operatingMode:"text"}),c=0,l=0,p=0;for(let[f,g]of a.entries()){try{let _=tC(g),b=await u.noteAgentConversation({workspace:r,runner_id:e.runnerId,source:g.source,import_key:g.importKey,import_to_office_channel:!0,path:g.path,display_name:g.displayName,...g.activityAt===void 0?{}:{activity_at:g.activityAt},metadata:g.metadata,title_messages:Wje(_)}),w=Gje(b),v=y(w?.thread_id);if(y(w?.status)==="failed"){p+=1,n("onboarding.conversation_import_candidate_skipped",{runnerId:e.runnerId,workspace:r,source:g.source,import_key:g.importKey,message:y(w?.error)??"conversation_import_failed"});continue}if(v!==void 0){let C=await Jje({client:u,options:e,workspaceSlug:r,threadId:v,candidate:g,messages:_});await Hje({client:u,workspaceSlug:r,runnerId:e.runnerId,candidate:g,threadId:v,officeImport:w,replayedMessageCount:_.length,replayedChunkCount:C}).catch(T=>{n("onboarding.conversation_import_replay_completion_failed",{runnerId:e.runnerId,workspace:r,source:g.source,import_key:g.importKey,message:T instanceof Error?T.message:String(T)})})}c+=1}catch(_){l+=1,n("onboarding.conversation_import_candidate_failed",{runnerId:e.runnerId,workspace:r,source:g.source,import_key:g.importKey,message:_ instanceof Error?_.message:String(_)})}let m=f+1;(m===a.length||m%Lje===0)&&await ei(e,n,{phase:"conversations",status:"running",placesSearched:i.placesSearched,message:"Importing local conversations",currentPlace:"Codex and Claude Code stores",metadata:{worker_id:"conversations-local-import",worker_label:"Local conversation import",duration_ms:i.durationMs,codex_count:o.includes("codex")?i.codexCount:0,claude_code_count:o.includes("claude_code")?i.claudeCodeCount:0,candidate_limit:h0,imported_count:c,failed_import_count:l,skipped_import_count:p,reported_count:c,total_count:d}})}await ei(e,n,{phase:"conversations",status:"completed",placesSearched:i.placesSearched,message:"Local conversation import finished",currentPlace:"Codex and Claude Code stores",metadata:{worker_id:"conversations-local-import",worker_label:"Local conversation import",duration_ms:i.durationMs,codex_count:o.includes("codex")?i.codexCount:0,claude_code_count:o.includes("claude_code")?i.claudeCodeCount:0,candidate_limit:h0,imported_count:c,failed_import_count:l,skipped_import_count:p,reported_count:c,total_count:d}})}function zje(e,n,t){return`${e}:${n}:${[...t].sort().join(",")}`}function Uje(e){return Array.from(new Set(($e(e)??[]).flatMap(n=>{switch(y(n)){case"codex":return["codex"];case"claude_code":return["claude_code"];default:return[]}}))).sort()}function Bje(e){return ar(($e(e)??[]).flatMap(n=>{let t=y(n)?.trim();return t===void 0||t===""?[]:[t]}))}async function Jje(e){let n=0;for(let t of e.messages){let r=Kje(t);for(let o of r){let i=Zje(e.candidate.importKey,o.itemKey),s={import_role:t.role,import_source:e.candidate.source,...o.activityAt===void 0?{}:{source_activity_at:o.activityAt}};if(!(o.attachments.length>0&&o.index===r.length-1)){await e.client.sendThreadReply({workspace:e.workspaceSlug,thread_id:e.threadId,body:o.body,client_message_id:i,...s}),n+=1;continue}let d=await Qje({client:e.client,options:e.options,workspaceSlug:e.workspaceSlug,threadId:e.threadId,candidatePath:e.candidate.path,body:o.body,attachments:o.attachments});if(d.uploadedFileIds.length>0){await e.client.attachMessageFiles({workspace:e.workspaceSlug,target:{kind:"new_message",thread_id:e.threadId},body:d.body,uploaded_file_ids:d.uploadedFileIds,client_message_id:i,...s}),n+=1;continue}await e.client.sendThreadReply({workspace:e.workspaceSlug,thread_id:e.threadId,body:d.body,client_message_id:i,...s}),n+=1}}return n}function Kje(e){let n=Vje(e.body);return n.map((t,r)=>({itemKey:n.length===1?e.itemKey:`${e.itemKey}:part-${r+1}`,body:t,attachments:r===n.length-1?e.attachments:[],activityAt:e.activityAt,index:r}))}function Vje(e){let n=e.trim();if(n.length<=sp)return[n];let t=[],r=n;for(;r.length>sp;){let o=r.slice(0,sp),i=o.lastIndexOf(`