@linzumi/cli 1.0.174 → 1.0.175

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -58,7 +58,7 @@ Install the CLI or run it with `npx`:
58
58
  ```bash
59
59
  npm install -g @linzumi/cli@latest
60
60
  npx -y @linzumi/cli@latest signup
61
- npx -y @linzumi/cli@1.0.174 --version
61
+ npx -y @linzumi/cli@1.0.175 --version
62
62
  linzumi --version
63
63
  ```
64
64
 
@@ -122,7 +122,7 @@ Commander, and starts the first visible Coding agent threads.
122
122
 
123
123
  Linzumi keeps the browser/chat surface separate from the local work
124
124
  surface. The CLI authenticates your local Commander, publishes runner
125
- capabilities, and lets Kandan ask that Commander to start Codex inside
125
+ capabilities, and lets Linzumi ask that Commander to start Codex inside
126
126
  trusted folders only.
127
127
 
128
128
  ## MCP for coding agents
@@ -321,7 +321,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
321
321
  `);if(t===-1)return null;let r=this._buffer.toString("utf8",0,t).replace(/\r$/,"");return this._buffer=this._buffer.subarray(t+1),ZH(r)}clear(){this._buffer=void 0}};function ZH(e){return CA.parse(JSON.parse(e))}function _P(e){return JSON.stringify(e)+`
322
322
  `}var zm=class{constructor(t=gP.stdin,r=gP.stdout){this._stdin=t,this._stdout=r,this._readBuffer=new jm,this._started=!1,this._ondata=n=>{this._readBuffer.append(n),this.processReadBuffer()},this._onerror=n=>{this.onerror?.(n)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let t=this._readBuffer.readMessage();if(t===null)break;this.onmessage?.(t)}catch(t){this.onerror?.(t)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(t){return new Promise(r=>{let n=_P(t);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};function HH(e){let t={};t.listChanged=!1;let r={};r.resources=t,e.server.registerCapabilities(r),e.server.setRequestHandler(al,()=>{let n={};return n.resources=[],n}),e.server.setRequestHandler(sl,()=>{let n={};return n.resourceTemplates=[],n})}function BH(e){return{registerTool:(t,r,n,i)=>{e.tool(t,r,n,i)}}}async function $v(e){let t=e.delegationAuthFilePath;if(t!==void 0){let n=e.explicitToken,i=e.authFilePath;if(n!==void 0)return{TAG:"Error",_0:"--delegation-auth-file cannot be combined with --token or --auth-file"};if(i!==void 0)return{TAG:"Error",_0:"--delegation-auth-file cannot be combined with --token or --auth-file"};let o=hk(t,Date.now());return o.TAG==="Ok"?{TAG:"Ok",_0:{accessToken:o._0.accessToken,mode:"PersonalAgentDelegation"}}:{TAG:"Error",_0:o._0.summary}}let r=await Dk(e.serviceUrl,e.explicitToken,e.authFilePath,e.workspaceSlug,e.channelSlug,void 0);return r.TAG==="Ok"?{TAG:"Ok",_0:{accessToken:r._0,mode:"LocalRunner"}}:{TAG:"Error",_0:r._0.summary}}function Mv(e,t){let r=Tr(e,"token");return{serviceUrl:t,explicitToken:r!==void 0?r:process.env.LINZUMI_MCP_ACCESS_TOKEN,authFilePath:Tr(e,"auth-file"),delegationAuthFilePath:Tr(e,"delegation-auth-file"),workspaceSlug:Tr(e,"workspace"),channelSlug:Tr(e,"channel")}}async function KH(e){let t=fc(e);if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=t._0;if(mc(r,"help"))return ma(_c()),{TAG:"Ok",_0:void 0};let n=pc(r,"api-url");if(n.TAG!=="Ok")return{TAG:"Error",_0:n._0};let i=n._0,o=await $v(Mv(r,i));if(o.TAG!=="Ok")return{TAG:"Error",_0:o._0};let a=o._0,s=hc(Tr(r,"mode")),l=Qp(Tr(r,"tool-scope"));if(s.TAG!=="Ok")return{TAG:"Error",_0:s._0};let d=s._0;if(l.TAG!=="Ok")return{TAG:"Error",_0:l._0};let u=Tr(r,"owner-username"),c=u!==void 0?u:process.env.LINZUMI_MCP_OWNER_USERNAME,f=Tr(r,"cwd"),h=f!==void 0?f:process.cwd(),m=Tr(r,"thread-id"),p=m!==void 0?m:process.env[tx],_=s_({serviceUrl:i,accessToken:a.accessToken,authMode:a.mode,operatingMode:d});if(_.TAG!=="Ok")return{TAG:"Error",_0:_._0};let g=new Mm({name:"linzumi",version:"0.1.0"});return HH(g),Px(BH(g),{client:_._0,toolScope:l._0,operatingMode:d,cwd:h,serviceUrl:i,defaultThreadId:p,ownerUsername:c,agentSession:mc(r,"agent-session"),devServices:kx(process.env)}),await g.connect(new zm),{TAG:"Ok",_0:void 0}}async function JH(e){let t=fc(e);if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=t._0,n=pc(r,"api-url");if(n.TAG!=="Ok")return{TAG:"Error",_0:n._0};let i=n._0,o=Tr(r,"format"),a=o!==void 0?o:"codex",s=hc(Tr(r,"mode"));if(s.TAG!=="Ok")return{TAG:"Error",_0:s._0};let l;if(mc(r,"include-token")){let f=await $v(Mv(r,i));l=f.TAG==="Ok"?{TAG:"Ok",_0:f._0.accessToken}:{TAG:"Error",_0:f._0}}else l={TAG:"Ok",_0:void 0};if(l.TAG!=="Ok")return{TAG:"Error",_0:l._0};let d=Qp(Tr(r,"tool-scope"));if(d.TAG!=="Ok")return{TAG:"Error",_0:d._0};let u=Tr(r,"owner-username"),c=Qs({command:Tr(r,"command"),serviceUrl:i,accessToken:l._0,delegationAuthFilePath:Tr(r,"delegation-auth-file"),ownerUsername:u!==void 0?u:process.env.LINZUMI_MCP_OWNER_USERNAME,operatingMode:s._0,toolScope:d._0});switch(a){case"claude-code":return ma(Mx(c)),{TAG:"Ok",_0:void 0};case"codex":return ma(jx(c)),{TAG:"Ok",_0:void 0};default:return{TAG:"Error",_0:"--format must be codex or claude-code"}}}async function YH(e){let t=fc(e);if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=t._0,n=pc(r,"api-url");if(n.TAG!=="Ok")return{TAG:"Error",_0:n._0};let i=n._0,o=await $v(Mv(r,i));if(o.TAG!=="Ok")return{TAG:"Error",_0:o._0};let a=o._0,s=a.mode,l;if(s==="LocalRunner"){let d=await qs(i,a.accessToken,Tr(r,"workspace"),Tr(r,"channel"),void 0);if(d.TAG==="Ok")switch(d._0){case"Usable":l={TAG:"Ok",_0:void 0};break;case"Rejected":case"NotFound":l={TAG:"Error",_0:"Linzumi MCP auth validation failed"};break}else l={TAG:"Error",_0:d._0.summary}}else{let d=hc(Tr(r,"mode"));if(d.TAG==="Ok"){let u=s_({serviceUrl:i,accessToken:a.accessToken,authMode:a.mode,operatingMode:d._0});if(u.TAG==="Ok")try{await u._0.validateAuth(),l={TAG:"Ok",_0:void 0}}catch(c){let f=Y(c);l={TAG:"Error",_0:xs(f)}}else l={TAG:"Error",_0:u._0}}else l={TAG:"Error",_0:d._0}}return l.TAG!=="Ok"?{TAG:"Error",_0:l._0}:(ma(`Linzumi MCP auth OK
323
323
  `),{TAG:"Ok",_0:void 0})}async function yP(e){let t=e.slice(1),r=e[0];if(r!==void 0)switch(r){case"--help":case"-h":return ma(_c()),{TAG:"Ok",_0:void 0};case"config":return await JH(t);case"doctor":return await YH(t);case"server":return await KH(t);default:return{TAG:"Error",_0:"unknown linzumi mcp command: "+r}}else return ma(_c()),{TAG:"Ok",_0:void 0}}import*as SP from"node:fs";import*as wP from"node:url";import*as hn from"node:path";import*as kP from"node:module";var QH=[["linux","x64",{triple:"x86_64-unknown-linux-musl",packageName:"@openai/codex-linux-x64"}],["linux","arm64",{triple:"aarch64-unknown-linux-musl",packageName:"@openai/codex-linux-arm64"}],["android","x64",{triple:"x86_64-unknown-linux-musl",packageName:"@openai/codex-linux-x64"}],["android","arm64",{triple:"aarch64-unknown-linux-musl",packageName:"@openai/codex-linux-arm64"}],["darwin","x64",{triple:"x86_64-apple-darwin",packageName:"@openai/codex-darwin-x64"}],["darwin","arm64",{triple:"aarch64-apple-darwin",packageName:"@openai/codex-darwin-arm64"}],["win32","x64",{triple:"x86_64-pc-windows-msvc",packageName:"@openai/codex-win32-x64"}],["win32","arm64",{triple:"aarch64-pc-windows-msvc",packageName:"@openai/codex-win32-arm64"}]];function xP(e,t){return G(QH.find(r=>r[0]===e?r[1]===t:!1),r=>r[2])}function e4(e){try{return kP.createRequire(import.meta.url).resolve(e)}catch{return}}function t4(e){let t=ws(e);return t.TAG==="Ok"?t._0:[]}function Nm(){return{platform:process.platform,arch:process.arch,fileExists:e=>SP.existsSync(e),listDirectory:t4,resolveModulePath:e4,moduleDir:hn.dirname(wP.fileURLToPath(import.meta.url))}}function TP(e,t,r){let n=t;for(;;){let i=n,o=hn.join(...[i,"node_modules"].concat(e.split("/")));if(r(hn.join(o,"package.json")))return o;let a=hn.dirname(i);if(a===i)return;n=a}}function jv(e,t){let r=t.resolveModulePath(e+"/package.json");return r!==void 0?hn.dirname(r):TP(e,t.moduleDir,t.fileExists)}function r4(e,t,r){let i=r.platform==="win32"?"codex.exe":"codex",o=hn.join(e,t),s=[hn.join(o,"codex",i),hn.join(o,"bin",i),hn.join(o,i)].find(l=>r.fileExists(l));return s!==void 0?s:r.listDirectory(o).map(l=>hn.join(o,l,i)).find(l=>r.fileExists(l))}function n4(e){let t=xP(e.platform,e.arch);if(t===void 0)return;let r=[],n=jv(t.packageName,e);n!==void 0&&r.push(hn.join(n,"vendor"));let i=jv("@openai/codex",e);return i!==void 0&&r.push(hn.join(i,"vendor")),Ze(r,void 0,(o,a)=>o!==void 0?o:r4(a,t.triple,e))}function i4(e){let t=jv("@openai/codex",e);if(t===void 0)return;let r=Xt(hn.join(t,"package.json"));if(r.TAG!=="Ok")return;let n;try{n=JSON.parse(r._0)}catch{n=void 0}if(n===void 0||typeof n!="object"||n===null||Array.isArray(n))return;let i=n.version;if(i!==void 0&&typeof i=="string"&&i.trim()!=="")return i.trim()}var o4=new RegExp("(\\d+\\.\\d+\\.\\d+)");function Gm(e){let t=ks(e,["--version"],1e4,1048576);if(t.TAG!=="Ok")return;let r=o4.exec(t._0);if(r!=null)return w(r.slice(1)[0],n=>n)}function a4(e,t){return e!==void 0&&t!==void 0?e===t?{TAG:"Match",version:e}:{TAG:"Mismatch",pathVersion:e,pinnedVersion:t}:{TAG:"Unverified",pathVersion:e,pinnedVersion:t}}function s4(e){switch(e.TAG){case"Match":return"match";case"Mismatch":return"mismatch";case"Unverified":return"unverified"}}var zv="LINZUMI_ALLOW_HARNESS_MISMATCH",bP={contents:!1};var l4="Warning: the Codex engine bundled with @linzumi/cli could not be located in its install (@openai/codex platform binary missing). Falling back to `codex` from PATH - the engine version may not match this CLI release. Pass --codex-bin <path> to pin an engine explicitly.\n";function d4(e){if(!bP.contents)return bP.contents=!0,e(l4)}function vP(e,t){return"the codex engine bundled with @linzumi/cli is missing from this install and the `codex` on PATH is version "+e+", but this CLI release pins engine "+t+". "+("Running a mismatched engine breaks the wire protocol (codex "+t+" vocabulary), so refusing to start. ")+("Fix: reinstall the CLI (a fresh `npx -y @linzumi/cli@latest` restores the bundled engine), pass --codex-bin <path> to pin an engine deliberately, or set "+zv+"=1 to accept the skew.")}function u4(e,t){return"Warning: proceeding with the PATH codex "+e+" despite the CLI pinning engine "+t+" ("+zv+`=1). Engine/CLI version skew can break the wire protocol.
324
- `}function c4(e,t){}function Fm(e,t,r,n,i,o){let a=o!==void 0?o:c4;if(e!==void 0)return{TAG:"Ok",_0:{codexBin:e,source:"ExplicitFlag"}};let s=n4(t);if(s!==void 0){let f={};return f.codex_bin_path=s,f.codex_bin_source="bundled",a("codex.binary.resolved",f),{TAG:"Ok",_0:{codexBin:s,source:"Bundled"}}}d4(r);let l=i4(t),d=l!==void 0?n("codex"):void 0,u=a4(d,l),c={};switch(c.codex_bin_path="codex",c.codex_bin_source="path-fallback",c.harness_version_check=s4(u),u.TAG){case"Match":c.harness_version=u.version;break;case"Mismatch":c.path_harness_version=u.pathVersion,c.pinned_harness_version=u.pinnedVersion;break;case"Unverified":c.path_harness_version=dn(u.pathVersion,null,f=>f),c.pinned_harness_version=dn(u.pinnedVersion,null,f=>f);break}switch(a("codex.binary.resolved",c),u.TAG){case"Mismatch":let f=u.pinnedVersion,h=u.pathVersion,m=i[zv];return m===void 0?{TAG:"Error",_0:vP(h,f)}:m!=="1"?{TAG:"Error",_0:vP(h,f)}:(r(u4(h,f)),{TAG:"Ok",_0:{codexBin:"codex",source:"PathFallback"}});case"Match":case"Unverified":return{TAG:"Ok",_0:{codexBin:"codex",source:"PathFallback"}}}}function AP(e){if(typeof e=="number"&&e%1===0)return e}function f4(e){if(typeof e=="string")return e}function m4(e){let t=e.replaceAll("-","+").replaceAll("_","/");switch(t.length&3){case 2:return t+"==";case 3:return t+"=";default:return t}}function OP(e){let t=e.split(".")[1];if(t===void 0)return;let r=Buffer.from(m4(t),"base64").toString("utf8"),n;try{n=JSON.parse(r)}catch{n=void 0}if(typeof n=="object"&&n!==null&&!Array.isArray(n))return n}function Iu(e){let t=OP(e);if(t===void 0)return{actorUserId:void 0,actorUsername:void 0};let r=AP(t.actor_id);return{actorUserId:r!==void 0?r:AP(t.sub),actorUsername:f4(t.actor_username)}}function CP(e){let t=w(OP(e),n=>n.workspace_scope),r=t!==void 0?Array.isArray(t)?Ne(t,n=>{if(typeof n=="string"&&n.trim()!=="")return n}):[]:[];if(r.length===1)return r[0]}var Fv=[["codex.agent_turn_narration_only_no_reply","harness.agent_turn_narration_only_no_reply"],["codex.cost_cap_402_seen","harness.cost_cap_402_seen"],["codex.edge_blocked_captured","harness.edge_blocked_captured"],["codex.empty_turn_auto_retry_suppressed_cost_cap","harness.empty_turn_auto_retry_suppressed_cost_cap"],["codex.empty_turn_loop_guard_tripped","harness.empty_turn_loop_guard_tripped"],["codex.error_without_http_status_captured","harness.error_without_http_status_captured"],["codex.mid_stream_stall_auto_resume_flagged","harness.mid_stream_stall_auto_resume_flagged"],["codex.mid_stream_stall_fresh_session_resume","harness.mid_stream_stall_fresh_session_resume"],["codex.mid_stream_stall_fresh_session_resume_failed","harness.mid_stream_stall_fresh_session_resume_failed"],["codex.mid_stream_stall_fresh_session_resume_flagged","harness.mid_stream_stall_fresh_session_resume_flagged"],["codex.mid_stream_stall_resume_suppressed_rate_limit","harness.mid_stream_stall_resume_suppressed_rate_limit"],["codex.mid_stream_stall_second_stall_after_resume","harness.mid_stream_stall_second_stall_after_resume"],["codex.pre_first_byte_stall_auto_retry_flagged","harness.pre_first_byte_stall_auto_retry_flagged"],["codex.pre_first_byte_stall_retry_suppressed_cost_cap","harness.pre_first_byte_stall_retry_suppressed_cost_cap"],["codex.provider_outage_flagged_captured","harness.provider_outage_flagged_captured"],["codex.reasoning_loop_breaker_tripped","harness.reasoning_loop_breaker_tripped"],["codex.tool_fatal_captured","harness.tool_fatal_captured"],["codex.turn_completed","job.turn_completed"],["codex.turn_completed_with_protocol_failure","job.turn_completed_with_protocol_failure"],["codex.turn_completed_with_unsupported_tool_call_ignored","job.turn_completed_with_unsupported_tool_call_ignored"],["codex.turn_completed_without_assistant_output","job.turn_completed_without_assistant_output"],["codex.turn_demoted_late_upstream_error","job.turn_demoted_late_upstream_error"],["codex.turn_forward_failed","job.turn_forward_failed"],["codex.upstream_error_captured","harness.upstream_error_captured"],["codex.upstream_rejection_captured","harness.upstream_rejection_captured"],["codex.upstream_turn_error_captured","harness.upstream_turn_error_captured"],["kandan.chat_event","linzumi.chat_event"],["kandan.chat_event_abandoned","linzumi.chat_event_abandoned"],["kandan.chat_event_failed","linzumi.chat_event_failed"],["kandan.chat_event_failure_cleared","linzumi.chat_event_failure_cleared"],["kandan.claude_code_interrupt_state_push_failed","linzumi.claude_code_interrupt_state_push_failed"],["kandan.claude_code_stop_state_push_failed","linzumi.claude_code_stop_state_push_failed"],["kandan.claude_code_typing_heartbeat_failed","linzumi.claude_code_typing_heartbeat_failed"],["kandan.claude_code_typing_start_wait_timeout","linzumi.claude_code_typing_start_wait_timeout"],["kandan.claude_code_typing_stop_failed","linzumi.claude_code_typing_stop_failed"],["kandan.claude_code_user_input_abort_publish_failed","linzumi.claude_code_user_input_abort_publish_failed"],["kandan.claude_code_user_question_completed_publish_failed","linzumi.claude_code_user_question_completed_publish_failed"],["kandan.codex_command_output_forwarded","linzumi.codex_command_output_forwarded"],["kandan.codex_delta_forwarded","linzumi.codex_delta_forwarded"],["kandan.codex_file_change_forwarded","linzumi.codex_file_change_forwarded"],["kandan.codex_notification_push_failed","linzumi.codex_notification_push_failed"],["kandan.codex_output_forwarded","linzumi.codex_output_forwarded"],["kandan.codex_reasoning_delta_forwarded","linzumi.codex_reasoning_delta_forwarded"],["kandan.codex_web_search_progress_forwarded","linzumi.codex_web_search_progress_forwarded"],["kandan.connection_force_reconnect","linzumi.connection_force_reconnect"],["kandan.connection_force_reconnect_dispatched","linzumi.connection_force_reconnect_dispatched"],["kandan.connection_hard_reset","linzumi.connection_hard_reset"],["kandan.connection_hard_reset_exhausted","linzumi.connection_hard_reset_exhausted"],["kandan.connection_recovered","linzumi.connection_recovered"],["kandan.connection_stale","linzumi.connection_stale"],["kandan.connection_unrecoverable","linzumi.connection_unrecoverable"],["kandan.control","linzumi.control"],["kandan.control_ack_withheld_on_failure","linzumi.control_ack_withheld_on_failure"],["kandan.control_epoch_changed","linzumi.control_epoch_changed"],["kandan.control_handler_threw","linzumi.control_handler_threw"],["kandan.control_ignored","linzumi.control_ignored"],["kandan.control_response_push_failed","linzumi.control_response_push_failed"],["kandan.failed_seq_overflow","linzumi.failed_seq_overflow"],["kandan.forward_port_revoked_push_failed","linzumi.forward_port_revoked_push_failed"],["kandan.forward_response","linzumi.forward_response"],["kandan.forward_response_push_failed","linzumi.forward_response_push_failed"],["kandan.forward_tunnel_error","linzumi.forward_tunnel_error"],["kandan.forward_tunnel_open_failed","linzumi.forward_tunnel_open_failed"],["kandan.heartbeat_push_failed","linzumi.heartbeat_push_failed"],["kandan.local_editor_initial_status_failed","linzumi.local_editor_initial_status_failed"],["kandan.local_editor_status_push_failed","linzumi.local_editor_status_push_failed"],["kandan.message_duplicate_ignored","linzumi.message_duplicate_ignored"],["kandan.message_ignored","linzumi.message_ignored"],["kandan.message_queued","linzumi.message_queued"],["kandan.message_spawn_on_miss","linzumi.message_spawn_on_miss"],["kandan.message_spawn_on_miss_failed","linzumi.message_spawn_on_miss_failed"],["kandan.message_state_refresh_failed","linzumi.message_state_refresh_failed"],["kandan.optional_push_failed","linzumi.optional_push_failed"],["kandan.post_stop_queue_drain_failed","linzumi.post_stop_queue_drain_failed"],["kandan.queue_drain_blocked","linzumi.queue_drain_blocked"],["kandan.queue_drain_dead_worker_fail_publish_failed","linzumi.queue_drain_dead_worker_fail_publish_failed"],["kandan.queue_drain_dead_worker_rebuild","linzumi.queue_drain_dead_worker_rebuild"],["kandan.queue_drain_dead_worker_rebuild_exhausted","linzumi.queue_drain_dead_worker_rebuild_exhausted"],["kandan.queue_drain_dead_worker_rebuild_failed","linzumi.queue_drain_dead_worker_rebuild_failed"],["kandan.reconnect_handling_failed","linzumi.reconnect_handling_failed"],["kandan.reconnect_thread_context_fetch_failed","linzumi.reconnect_thread_context_fetch_failed"],["kandan.reconnect_thread_cwd_failed_state_push_failed","linzumi.reconnect_thread_cwd_failed_state_push_failed"],["kandan.reconnect_thread_failed","linzumi.reconnect_thread_failed"],["kandan.reconnect_thread_processing_state_push_failed","linzumi.reconnect_thread_processing_state_push_failed"],["kandan.reconnect_thread_queue_closed_state_push_failed","linzumi.reconnect_thread_queue_closed_state_push_failed"],["kandan.reconnect_thread_queue_failed_state_push_failed","linzumi.reconnect_thread_queue_failed_state_push_failed"],["kandan.reconnect_thread_queue_state_push_failed","linzumi.reconnect_thread_queue_state_push_failed"],["kandan.reconnect_thread_rehydrate_forced","linzumi.reconnect_thread_rehydrate_forced"],["kandan.reconnect_thread_rehydrated","linzumi.reconnect_thread_rehydrated"],["kandan.reconnect_thread_rehydrated_state_push_failed","linzumi.reconnect_thread_rehydrated_state_push_failed"],["kandan.reconnect_thread_rehydration_failed","linzumi.reconnect_thread_rehydration_failed"],["kandan.reconnect_thread_rehydration_ir_emitted","linzumi.reconnect_thread_rehydration_ir_emitted"],["kandan.reconnect_thread_rehydration_items_failed","linzumi.reconnect_thread_rehydration_items_failed"],["kandan.reconnect_thread_resume_failed","linzumi.reconnect_thread_resume_failed"],["kandan.reconnect_thread_seq_already_applied","linzumi.reconnect_thread_seq_already_applied"],["kandan.reconnect_thread_transcript_fetch_failed","linzumi.reconnect_thread_transcript_fetch_failed"],["kandan.reconnect_thread_unarchive_failed","linzumi.reconnect_thread_unarchive_failed"],["kandan.reconnect_thread_unarchive_resumed","linzumi.reconnect_thread_unarchive_resumed"],["kandan.reconnect_thread_unarchive_started","linzumi.reconnect_thread_unarchive_started"],["kandan.reconnect_thread_unavailable_state_push_failed","linzumi.reconnect_thread_unavailable_state_push_failed"],["kandan.reconnected","linzumi.reconnected"],["kandan.roster_seeded","linzumi.roster_seeded"],["kandan.session_app_server_lost_push_failed","linzumi.session_app_server_lost_push_failed"],["kandan.session_settings_publish_failed","linzumi.session_settings_publish_failed"],["kandan.start_instance_claude_code_attachment_failed_state_push_failed","linzumi.start_instance_claude_code_attachment_failed_state_push_failed"],["kandan.start_instance_codex_app_server_unavailable","linzumi.start_instance_codex_app_server_unavailable"],["kandan.start_instance_cwd_failed_state_push_failed","linzumi.start_instance_cwd_failed_state_push_failed"],["kandan.start_instance_cwd_rejected","linzumi.start_instance_cwd_rejected"],["kandan.start_instance_failed","linzumi.start_instance_failed"],["kandan.start_instance_processing_state_push_failed","linzumi.start_instance_processing_state_push_failed"],["kandan.start_instance_skipped_known_session","linzumi.start_instance_skipped_known_session"],["kandan.start_instance_stale_skipped","linzumi.start_instance_stale_skipped"],["kandan.start_instance_unavailable_state_push_failed","linzumi.start_instance_unavailable_state_push_failed"],["kandan.start_instance_wafer_state_push_failed","linzumi.start_instance_wafer_state_push_failed"],["kandan.start_turn_replay_skipped","linzumi.start_turn_replay_skipped"],["kandan.steer_duplicate_ignored","linzumi.steer_duplicate_ignored"],["kandan.steer_parked_as_own_turn","linzumi.steer_parked_as_own_turn"],["kandan.thread_bind_from_historical_reply_failed","linzumi.thread_bind_from_historical_reply_failed"],["kandan.thread_bound_from_historical_reply","linzumi.thread_bound_from_historical_reply"],["kandan.thread_sessions_reannounce_failed","linzumi.thread_sessions_reannounce_failed"],["kandan.thread_sessions_reannounced","linzumi.thread_sessions_reannounced"],["kandan.tui_input_mirrored","linzumi.tui_input_mirrored"],["kandan.typing_heartbeat_failed","linzumi.typing_heartbeat_failed"],["kandan.typing_stop_after_completion_failed","linzumi.typing_stop_after_completion_failed"]],EP=[["codexThreadId","harness_session_id"],["codex_thread_id","harness_session_id"],["kandanThreadId","thread_id"],["kandan_preview_ticket","linzumi_preview_ticket"],["kandan_thread_id","thread_id"],["linzumiThreadId","thread_id"],["linzumi_thread_id","thread_id"],["local_codex_runner","commander"],["runnerId","commander_id"],["runner_config","commander_config"],["runner_id","commander_id"]],Dm=[["commander","local_codex_runner"],["commander_config","runner_config"],["commander_id","runner_id"],["harness_session_id","codex_thread_id"],["linzumi_preview_ticket","kandan_preview_ticket"],["thread_id","kandan_thread_id"]],Dv=[["engine_boot_reconnect","harness_boot_reconnect"],["engine_for_runner_event_type","harness_for_commander_event_type"],["engine_rejected_steer","harness_rejected_steer"],["engine_unavailable","harness_unavailable"],["join_engine","join_harness"],["kandan-local-codex-runner","linzumi-commander"],["local_codex_runner","commander"],["original_engine","original_harness"],["resume_engine","resume_harness"]];function $u(){return k("1.0.174","0.0.0-unbundled")}function Lv(){return"linzumi "+k("1.0.174","0.0.0-unbundled")}function Ol(e,t){let r=e.indexOf(t);if(r!==-1)return r}function Uv(){let e=process.env.LINZUMI_NAMING_DUAL_EMIT;if(e===void 0)return!0;let t=e.trim().toLowerCase();return t!=="0"?t!=="false":!1}function Wv(e){let t={};return e.forEach(r=>{t[r[0]]=r[1]}),t}function p4(e){let t={};return e.forEach(r=>{t[r[1]]=r[0]}),t}var IP=Wv(EP),$P=Wv(Dm),h4=Wv(Dv),_4=p4(Dv);function g4(e){return e.endsWith("_canonical")?!0:e.endsWith("_legacy")}function MP(e,t){return t>=32?e:Array.isArray(e)?e.map(r=>MP(r,t+1|0)):e===null?e:typeof e==="object"?jP(e,t):e}function jP(e,t){let r=Object.keys(e),n={};return r.forEach(i=>{let o=e[i];if(o!==void 0){n[i]=MP(o,t+1|0);return}}),r.forEach(i=>{if(g4(i))return;let o=n[i];if(o===void 0)return;let a=IP[i];if(a!==void 0)n[a]=o;else{let c=$P[i];c!==void 0&&(n[c]!==void 0||(n[c]=o))}let s=n[i];if(s===void 0||typeof s!="string")return;let l=h4[s];if(l!==void 0){if(n[i+"_canonical"]!==void 0)return;n[i+"_canonical"]=l;return}let d=_4[s];if(!(d===void 0||n[i+"_legacy"]!==void 0)){n[i+"_legacy"]=d;return}}),n}function qm(e){return Uv()?jP(e,0):e}function zP(e){let t=e.slice();return e.forEach(r=>{let n=IP[r];n!==void 0&&!t.includes(n)&&t.push(n);let i=$P[r];if(i!==void 0&&!t.includes(i)){t.push(i);return}}),t}var Cl="<SENSITIVE_DATA>",y4=zP(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"]),b4=["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"],v4=new RegExp("^(authorization|cookie|set-cookie|password)$","i"),S4=new RegExp("(^|[_-])(access[_-]?token|api[_-]?key|auth[_-]?token|oauth[_-]?code|refresh[_-]?token|secret|token)$","i"),w4=new RegExp("\\beyJ[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b","g");function k4(e){return e!==void 0?v4.test(e)?!0:S4.test(e):!1}function NP(e){let t={contents:!1};return l0(e).forEach(r=>{if(y4.includes(r.toLowerCase())){e.set(r,Cl),t.contents=!0;return}}),t.contents}function x4(e){let t=Ol(e,"?"),r=Ol(e,"#");if(t===void 0||r!==void 0&&r<t)return e;let n=e.slice(0,t),i=r!==void 0?e.slice(t+1|0,r):e.slice(t+1|0),o=r!==void 0?e.slice(r):"",a=new URLSearchParams(i);return NP(a)?n+"?"+a.toString()+o:e}function T4(e){let t=Hn(e);if(t===void 0)return x4(e);let r=de(t);return NP(r.searchParams),r.toString()}function GP(e){return T4(e).replace(w4,Cl)}function A4(e){let t=Ol(e,"=");return t!==void 0?[e.slice(0,t),e.slice(t+1|0)]:[e,void 0]}function Vv(e,t){if(k4(t))return Cl;if(Array.isArray(e))return t==="args"?O4(e):e.map(r=>Vv(r,void 0));if(e===null)return e;switch(typeof e){case"string":return GP(e);case"object":return FP(e);default:return e}}function O4(e){let t={contents:!1};return e.map(r=>{if(typeof r=="string"){if(t.contents)return t.contents=!1,Cl;let n=A4(r),i=n[0];return b4.includes(i)?n[1]!==void 0?i+"="+Cl:(t.contents=!0,r):GP(r)}return t.contents=!1,Vv(r,void 0)})}function FP(e){let t=e.name,r=typeof t=="string"?t.toLowerCase():void 0,n;if(r!==void 0)switch(r){case"authorization":case"cookie":case"set-cookie":n=!0;break;default:n=!1}else n=!1;let i={};return Object.entries(e).forEach(o=>{let a=o[0];if(a!=="runner_console"){i[a]=n&&a==="value"?Cl:Vv(o[1],a);return}}),i}var Lm=FP;import*as sa from"node:os";import*as Wp from"node:path";import*as Gw from"node:crypto";function qn(e){let t=parseFloat(e);if(!Number.isNaN(t))return t}function qP(e){return"local_runner:"+e}var C4="kandan-local-codex-runner",E4="rescript";function LP(e){let t={};t.clientName=C4,t.clientId=e.clientId;let r=e.machineFingerprint;t.machineFingerprint=r!==void 0?r:null,Object.entries(Mk(e.machineFingerprintV2)).forEach(a=>{t[a[0]]=a[1]}),t.runnerPid=e.runnerPid,t.version=e.version,t.hostname=e.hostname,t.cwd=e.cwd;let n=e.workspace;t.workspace=n!==void 0?n:null;let i=e.channel;t.channel=i!==void 0?i:null,t.capabilities=e.capabilities;let o=e.generationOverlapEpoch;if(o!==void 0){let a={};a.epoch=o,a.overlap=!0,t.generation=a}return t.commander_impl=E4,t}function UP(e,t,r){let n={};return n.last_seq=r,t!==void 0&&(n.runner_id=e,n.thread_id=t),n}function Ln(e,t){return e.catch(r=>t(Y(r)))}function ZP(){let e=[],t=[],r={contents:!1},n=()=>{let a=e.shift();return a!==void 0?Promise.resolve({done:!1,value:a}):r.contents?Promise.resolve({done:!0}):new Promise((s,l)=>{t.push(s)})},i=()=>(r.contents=!0,Promise.resolve({done:!0})),o={};return o[Symbol.asyncIterator]=()=>({next:n,return:i}),{iterable:o,push:a=>{if(r.contents)return!1;let s=t.shift();return s!==void 0?(s({done:!1,value:a}),!0):(e.push(a),!0)},close:()=>{r.contents=!0,(()=>{for(;;){let s=t.shift();if(s===void 0)return;s({done:!0})}})()}}}function VP(e){return import(e)}var R4="@anthropic-ai/claude-agent-sdk";function HP(e){return ZP()}function I4(e){return{next:()=>e.next(),close:()=>{e.close()},interrupt:()=>e.interrupt(),setModel:t=>e.setModel(t),setPermissionMode:t=>e.setPermissionMode(t),applyFlagSettings:t=>e.applyFlagSettings(t),supportedCommands:()=>e.supportedCommands()}}async function BP(){let e=await VP(R4);return{query:t=>I4(e.query(t)),getSessionInfo:(t,r)=>e.getSessionInfo(t,r),listSessions:t=>e.listSessions(t),getSessionMessages:(t,r)=>e.getSessionMessages(t,r)}}var Hv=["codex","claude-code","pi","opencode"];function is(e){return e}function Um(e){switch(e.TAG){case"SessionStarted":return"session_started";case"TurnStarted":return"turn_started";case"ItemStarted":return"item_started";case"ItemDelta":return"item_delta";case"ItemCompleted":return"item_completed";case"ApprovalRequested":return"approval_requested";case"UsageUpdated":return"usage_updated";case"RateLimitUpdated":return"rate_limit_updated";case"ActivityPulse":return"activity_pulse";case"TurnCompleted":return"turn_completed";case"TurnFailed":return"turn_failed";case"TurnInterrupted":return"turn_interrupted";case"HarnessDied":return"harness_died"}}function Jv(e){switch(e){case"BindingNotObject":return"binding_not_object";case"SessionIdInvalid":return"session_id_invalid";case"LeaseEpochInvalid":return"lease_epoch_invalid";case"NextFrameIndexInvalid":return"next_frame_index_invalid";case"CheckpointConfigMissing":return"checkpoint_config_missing";case"CheckpointConfigInvalid":return"checkpoint_config_invalid";case"SourceSeqInvalid":return"source_seq_invalid"}}function Bv(e){return"adt_stream_v1 dispatch refused: "+Jv(e)+"; the commander refuses to stream unconfigured (no baked fallback thresholds exist by law - plan doc 2.4/MF9)"}function YP(e){switch(e){case"Checkpoint":return"checkpoint";case"Delta":return"delta";case"Terminal":return"terminal"}}function Zm(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}function os(e){if(e!==void 0&&typeof e=="number"&&e>=1&&Math.trunc(e)===e)return e}function $4(e){let t=Zm(e);if(t===void 0)return;let r=os(t.version),n=w(t.thresholds,Zm);if(r===void 0||n===void 0)return;let i=os(n.max_bytes),o=os(n.max_deltas),a=os(n.max_interval_ms);if(i!==void 0&&o!==void 0&&a!==void 0)return{version:r,thresholds:{maxBytes:i,maxDeltas:o,maxIntervalMs:a}}}function M4(e){let t=Zm(e);if(t===void 0)return{TAG:"ParseRefused",_0:"BindingNotObject"};let r=os(t.session_id);if(r===void 0)return{TAG:"ParseRefused",_0:"SessionIdInvalid"};let n=os(t.lease_epoch);if(n===void 0)return{TAG:"ParseRefused",_0:"LeaseEpochInvalid"};let i=os(t.next_frame_index);if(i===void 0)return{TAG:"ParseRefused",_0:"NextFrameIndexInvalid"};let o=t.checkpoint_config;if(o===void 0)return{TAG:"ParseRefused",_0:"CheckpointConfigMissing"};let a=$4(o);return a!==void 0?{TAG:"Parsed",_0:{sessionId:r,leaseEpoch:n,nextFrameIndex:i,checkpointConfig:a}}:{TAG:"ParseRefused",_0:"CheckpointConfigInvalid"}}function j4(e){return yn(YP(e.frameKind)+`
324
+ `}function c4(e,t){}function Fm(e,t,r,n,i,o){let a=o!==void 0?o:c4;if(e!==void 0)return{TAG:"Ok",_0:{codexBin:e,source:"ExplicitFlag"}};let s=n4(t);if(s!==void 0){let f={};return f.codex_bin_path=s,f.codex_bin_source="bundled",a("codex.binary.resolved",f),{TAG:"Ok",_0:{codexBin:s,source:"Bundled"}}}d4(r);let l=i4(t),d=l!==void 0?n("codex"):void 0,u=a4(d,l),c={};switch(c.codex_bin_path="codex",c.codex_bin_source="path-fallback",c.harness_version_check=s4(u),u.TAG){case"Match":c.harness_version=u.version;break;case"Mismatch":c.path_harness_version=u.pathVersion,c.pinned_harness_version=u.pinnedVersion;break;case"Unverified":c.path_harness_version=dn(u.pathVersion,null,f=>f),c.pinned_harness_version=dn(u.pinnedVersion,null,f=>f);break}switch(a("codex.binary.resolved",c),u.TAG){case"Mismatch":let f=u.pinnedVersion,h=u.pathVersion,m=i[zv];return m===void 0?{TAG:"Error",_0:vP(h,f)}:m!=="1"?{TAG:"Error",_0:vP(h,f)}:(r(u4(h,f)),{TAG:"Ok",_0:{codexBin:"codex",source:"PathFallback"}});case"Match":case"Unverified":return{TAG:"Ok",_0:{codexBin:"codex",source:"PathFallback"}}}}function AP(e){if(typeof e=="number"&&e%1===0)return e}function f4(e){if(typeof e=="string")return e}function m4(e){let t=e.replaceAll("-","+").replaceAll("_","/");switch(t.length&3){case 2:return t+"==";case 3:return t+"=";default:return t}}function OP(e){let t=e.split(".")[1];if(t===void 0)return;let r=Buffer.from(m4(t),"base64").toString("utf8"),n;try{n=JSON.parse(r)}catch{n=void 0}if(typeof n=="object"&&n!==null&&!Array.isArray(n))return n}function Iu(e){let t=OP(e);if(t===void 0)return{actorUserId:void 0,actorUsername:void 0};let r=AP(t.actor_id);return{actorUserId:r!==void 0?r:AP(t.sub),actorUsername:f4(t.actor_username)}}function CP(e){let t=w(OP(e),n=>n.workspace_scope),r=t!==void 0?Array.isArray(t)?Ne(t,n=>{if(typeof n=="string"&&n.trim()!=="")return n}):[]:[];if(r.length===1)return r[0]}var Fv=[["codex.agent_turn_narration_only_no_reply","harness.agent_turn_narration_only_no_reply"],["codex.cost_cap_402_seen","harness.cost_cap_402_seen"],["codex.edge_blocked_captured","harness.edge_blocked_captured"],["codex.empty_turn_auto_retry_suppressed_cost_cap","harness.empty_turn_auto_retry_suppressed_cost_cap"],["codex.empty_turn_loop_guard_tripped","harness.empty_turn_loop_guard_tripped"],["codex.error_without_http_status_captured","harness.error_without_http_status_captured"],["codex.mid_stream_stall_auto_resume_flagged","harness.mid_stream_stall_auto_resume_flagged"],["codex.mid_stream_stall_fresh_session_resume","harness.mid_stream_stall_fresh_session_resume"],["codex.mid_stream_stall_fresh_session_resume_failed","harness.mid_stream_stall_fresh_session_resume_failed"],["codex.mid_stream_stall_fresh_session_resume_flagged","harness.mid_stream_stall_fresh_session_resume_flagged"],["codex.mid_stream_stall_resume_suppressed_rate_limit","harness.mid_stream_stall_resume_suppressed_rate_limit"],["codex.mid_stream_stall_second_stall_after_resume","harness.mid_stream_stall_second_stall_after_resume"],["codex.pre_first_byte_stall_auto_retry_flagged","harness.pre_first_byte_stall_auto_retry_flagged"],["codex.pre_first_byte_stall_retry_suppressed_cost_cap","harness.pre_first_byte_stall_retry_suppressed_cost_cap"],["codex.provider_outage_flagged_captured","harness.provider_outage_flagged_captured"],["codex.reasoning_loop_breaker_tripped","harness.reasoning_loop_breaker_tripped"],["codex.tool_fatal_captured","harness.tool_fatal_captured"],["codex.turn_completed","job.turn_completed"],["codex.turn_completed_with_protocol_failure","job.turn_completed_with_protocol_failure"],["codex.turn_completed_with_unsupported_tool_call_ignored","job.turn_completed_with_unsupported_tool_call_ignored"],["codex.turn_completed_without_assistant_output","job.turn_completed_without_assistant_output"],["codex.turn_demoted_late_upstream_error","job.turn_demoted_late_upstream_error"],["codex.turn_forward_failed","job.turn_forward_failed"],["codex.upstream_error_captured","harness.upstream_error_captured"],["codex.upstream_rejection_captured","harness.upstream_rejection_captured"],["codex.upstream_turn_error_captured","harness.upstream_turn_error_captured"],["kandan.chat_event","linzumi.chat_event"],["kandan.chat_event_abandoned","linzumi.chat_event_abandoned"],["kandan.chat_event_failed","linzumi.chat_event_failed"],["kandan.chat_event_failure_cleared","linzumi.chat_event_failure_cleared"],["kandan.claude_code_interrupt_state_push_failed","linzumi.claude_code_interrupt_state_push_failed"],["kandan.claude_code_stop_state_push_failed","linzumi.claude_code_stop_state_push_failed"],["kandan.claude_code_typing_heartbeat_failed","linzumi.claude_code_typing_heartbeat_failed"],["kandan.claude_code_typing_start_wait_timeout","linzumi.claude_code_typing_start_wait_timeout"],["kandan.claude_code_typing_stop_failed","linzumi.claude_code_typing_stop_failed"],["kandan.claude_code_user_input_abort_publish_failed","linzumi.claude_code_user_input_abort_publish_failed"],["kandan.claude_code_user_question_completed_publish_failed","linzumi.claude_code_user_question_completed_publish_failed"],["kandan.codex_command_output_forwarded","linzumi.codex_command_output_forwarded"],["kandan.codex_delta_forwarded","linzumi.codex_delta_forwarded"],["kandan.codex_file_change_forwarded","linzumi.codex_file_change_forwarded"],["kandan.codex_notification_push_failed","linzumi.codex_notification_push_failed"],["kandan.codex_output_forwarded","linzumi.codex_output_forwarded"],["kandan.codex_reasoning_delta_forwarded","linzumi.codex_reasoning_delta_forwarded"],["kandan.codex_web_search_progress_forwarded","linzumi.codex_web_search_progress_forwarded"],["kandan.connection_force_reconnect","linzumi.connection_force_reconnect"],["kandan.connection_force_reconnect_dispatched","linzumi.connection_force_reconnect_dispatched"],["kandan.connection_hard_reset","linzumi.connection_hard_reset"],["kandan.connection_hard_reset_exhausted","linzumi.connection_hard_reset_exhausted"],["kandan.connection_recovered","linzumi.connection_recovered"],["kandan.connection_stale","linzumi.connection_stale"],["kandan.connection_unrecoverable","linzumi.connection_unrecoverable"],["kandan.control","linzumi.control"],["kandan.control_ack_withheld_on_failure","linzumi.control_ack_withheld_on_failure"],["kandan.control_epoch_changed","linzumi.control_epoch_changed"],["kandan.control_handler_threw","linzumi.control_handler_threw"],["kandan.control_ignored","linzumi.control_ignored"],["kandan.control_response_push_failed","linzumi.control_response_push_failed"],["kandan.failed_seq_overflow","linzumi.failed_seq_overflow"],["kandan.forward_port_revoked_push_failed","linzumi.forward_port_revoked_push_failed"],["kandan.forward_response","linzumi.forward_response"],["kandan.forward_response_push_failed","linzumi.forward_response_push_failed"],["kandan.forward_tunnel_error","linzumi.forward_tunnel_error"],["kandan.forward_tunnel_open_failed","linzumi.forward_tunnel_open_failed"],["kandan.heartbeat_push_failed","linzumi.heartbeat_push_failed"],["kandan.local_editor_initial_status_failed","linzumi.local_editor_initial_status_failed"],["kandan.local_editor_status_push_failed","linzumi.local_editor_status_push_failed"],["kandan.message_duplicate_ignored","linzumi.message_duplicate_ignored"],["kandan.message_ignored","linzumi.message_ignored"],["kandan.message_queued","linzumi.message_queued"],["kandan.message_spawn_on_miss","linzumi.message_spawn_on_miss"],["kandan.message_spawn_on_miss_failed","linzumi.message_spawn_on_miss_failed"],["kandan.message_state_refresh_failed","linzumi.message_state_refresh_failed"],["kandan.optional_push_failed","linzumi.optional_push_failed"],["kandan.post_stop_queue_drain_failed","linzumi.post_stop_queue_drain_failed"],["kandan.queue_drain_blocked","linzumi.queue_drain_blocked"],["kandan.queue_drain_dead_worker_fail_publish_failed","linzumi.queue_drain_dead_worker_fail_publish_failed"],["kandan.queue_drain_dead_worker_rebuild","linzumi.queue_drain_dead_worker_rebuild"],["kandan.queue_drain_dead_worker_rebuild_exhausted","linzumi.queue_drain_dead_worker_rebuild_exhausted"],["kandan.queue_drain_dead_worker_rebuild_failed","linzumi.queue_drain_dead_worker_rebuild_failed"],["kandan.reconnect_handling_failed","linzumi.reconnect_handling_failed"],["kandan.reconnect_thread_context_fetch_failed","linzumi.reconnect_thread_context_fetch_failed"],["kandan.reconnect_thread_cwd_failed_state_push_failed","linzumi.reconnect_thread_cwd_failed_state_push_failed"],["kandan.reconnect_thread_failed","linzumi.reconnect_thread_failed"],["kandan.reconnect_thread_processing_state_push_failed","linzumi.reconnect_thread_processing_state_push_failed"],["kandan.reconnect_thread_queue_closed_state_push_failed","linzumi.reconnect_thread_queue_closed_state_push_failed"],["kandan.reconnect_thread_queue_failed_state_push_failed","linzumi.reconnect_thread_queue_failed_state_push_failed"],["kandan.reconnect_thread_queue_state_push_failed","linzumi.reconnect_thread_queue_state_push_failed"],["kandan.reconnect_thread_rehydrate_forced","linzumi.reconnect_thread_rehydrate_forced"],["kandan.reconnect_thread_rehydrated","linzumi.reconnect_thread_rehydrated"],["kandan.reconnect_thread_rehydrated_state_push_failed","linzumi.reconnect_thread_rehydrated_state_push_failed"],["kandan.reconnect_thread_rehydration_failed","linzumi.reconnect_thread_rehydration_failed"],["kandan.reconnect_thread_rehydration_ir_emitted","linzumi.reconnect_thread_rehydration_ir_emitted"],["kandan.reconnect_thread_rehydration_items_failed","linzumi.reconnect_thread_rehydration_items_failed"],["kandan.reconnect_thread_resume_failed","linzumi.reconnect_thread_resume_failed"],["kandan.reconnect_thread_seq_already_applied","linzumi.reconnect_thread_seq_already_applied"],["kandan.reconnect_thread_transcript_fetch_failed","linzumi.reconnect_thread_transcript_fetch_failed"],["kandan.reconnect_thread_unarchive_failed","linzumi.reconnect_thread_unarchive_failed"],["kandan.reconnect_thread_unarchive_resumed","linzumi.reconnect_thread_unarchive_resumed"],["kandan.reconnect_thread_unarchive_started","linzumi.reconnect_thread_unarchive_started"],["kandan.reconnect_thread_unavailable_state_push_failed","linzumi.reconnect_thread_unavailable_state_push_failed"],["kandan.reconnected","linzumi.reconnected"],["kandan.roster_seeded","linzumi.roster_seeded"],["kandan.session_app_server_lost_push_failed","linzumi.session_app_server_lost_push_failed"],["kandan.session_settings_publish_failed","linzumi.session_settings_publish_failed"],["kandan.start_instance_claude_code_attachment_failed_state_push_failed","linzumi.start_instance_claude_code_attachment_failed_state_push_failed"],["kandan.start_instance_codex_app_server_unavailable","linzumi.start_instance_codex_app_server_unavailable"],["kandan.start_instance_cwd_failed_state_push_failed","linzumi.start_instance_cwd_failed_state_push_failed"],["kandan.start_instance_cwd_rejected","linzumi.start_instance_cwd_rejected"],["kandan.start_instance_failed","linzumi.start_instance_failed"],["kandan.start_instance_processing_state_push_failed","linzumi.start_instance_processing_state_push_failed"],["kandan.start_instance_skipped_known_session","linzumi.start_instance_skipped_known_session"],["kandan.start_instance_stale_skipped","linzumi.start_instance_stale_skipped"],["kandan.start_instance_unavailable_state_push_failed","linzumi.start_instance_unavailable_state_push_failed"],["kandan.start_instance_wafer_state_push_failed","linzumi.start_instance_wafer_state_push_failed"],["kandan.start_turn_replay_skipped","linzumi.start_turn_replay_skipped"],["kandan.steer_duplicate_ignored","linzumi.steer_duplicate_ignored"],["kandan.steer_parked_as_own_turn","linzumi.steer_parked_as_own_turn"],["kandan.thread_bind_from_historical_reply_failed","linzumi.thread_bind_from_historical_reply_failed"],["kandan.thread_bound_from_historical_reply","linzumi.thread_bound_from_historical_reply"],["kandan.thread_sessions_reannounce_failed","linzumi.thread_sessions_reannounce_failed"],["kandan.thread_sessions_reannounced","linzumi.thread_sessions_reannounced"],["kandan.tui_input_mirrored","linzumi.tui_input_mirrored"],["kandan.typing_heartbeat_failed","linzumi.typing_heartbeat_failed"],["kandan.typing_stop_after_completion_failed","linzumi.typing_stop_after_completion_failed"]],EP=[["codexThreadId","harness_session_id"],["codex_thread_id","harness_session_id"],["kandanThreadId","thread_id"],["kandan_preview_ticket","linzumi_preview_ticket"],["kandan_thread_id","thread_id"],["linzumiThreadId","thread_id"],["linzumi_thread_id","thread_id"],["local_codex_runner","commander"],["runnerId","commander_id"],["runner_config","commander_config"],["runner_id","commander_id"]],Dm=[["commander","local_codex_runner"],["commander_config","runner_config"],["commander_id","runner_id"],["harness_session_id","codex_thread_id"],["linzumi_preview_ticket","kandan_preview_ticket"],["thread_id","kandan_thread_id"]],Dv=[["engine_boot_reconnect","harness_boot_reconnect"],["engine_for_runner_event_type","harness_for_commander_event_type"],["engine_rejected_steer","harness_rejected_steer"],["engine_unavailable","harness_unavailable"],["join_engine","join_harness"],["kandan-local-codex-runner","linzumi-commander"],["local_codex_runner","commander"],["original_engine","original_harness"],["resume_engine","resume_harness"]];function $u(){return k("1.0.175","0.0.0-unbundled")}function Lv(){return"linzumi "+k("1.0.175","0.0.0-unbundled")}function Ol(e,t){let r=e.indexOf(t);if(r!==-1)return r}function Uv(){let e=process.env.LINZUMI_NAMING_DUAL_EMIT;if(e===void 0)return!0;let t=e.trim().toLowerCase();return t!=="0"?t!=="false":!1}function Wv(e){let t={};return e.forEach(r=>{t[r[0]]=r[1]}),t}function p4(e){let t={};return e.forEach(r=>{t[r[1]]=r[0]}),t}var IP=Wv(EP),$P=Wv(Dm),h4=Wv(Dv),_4=p4(Dv);function g4(e){return e.endsWith("_canonical")?!0:e.endsWith("_legacy")}function MP(e,t){return t>=32?e:Array.isArray(e)?e.map(r=>MP(r,t+1|0)):e===null?e:typeof e==="object"?jP(e,t):e}function jP(e,t){let r=Object.keys(e),n={};return r.forEach(i=>{let o=e[i];if(o!==void 0){n[i]=MP(o,t+1|0);return}}),r.forEach(i=>{if(g4(i))return;let o=n[i];if(o===void 0)return;let a=IP[i];if(a!==void 0)n[a]=o;else{let c=$P[i];c!==void 0&&(n[c]!==void 0||(n[c]=o))}let s=n[i];if(s===void 0||typeof s!="string")return;let l=h4[s];if(l!==void 0){if(n[i+"_canonical"]!==void 0)return;n[i+"_canonical"]=l;return}let d=_4[s];if(!(d===void 0||n[i+"_legacy"]!==void 0)){n[i+"_legacy"]=d;return}}),n}function qm(e){return Uv()?jP(e,0):e}function zP(e){let t=e.slice();return e.forEach(r=>{let n=IP[r];n!==void 0&&!t.includes(n)&&t.push(n);let i=$P[r];if(i!==void 0&&!t.includes(i)){t.push(i);return}}),t}var Cl="<SENSITIVE_DATA>",y4=zP(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"]),b4=["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"],v4=new RegExp("^(authorization|cookie|set-cookie|password)$","i"),S4=new RegExp("(^|[_-])(access[_-]?token|api[_-]?key|auth[_-]?token|oauth[_-]?code|refresh[_-]?token|secret|token)$","i"),w4=new RegExp("\\beyJ[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b","g");function k4(e){return e!==void 0?v4.test(e)?!0:S4.test(e):!1}function NP(e){let t={contents:!1};return l0(e).forEach(r=>{if(y4.includes(r.toLowerCase())){e.set(r,Cl),t.contents=!0;return}}),t.contents}function x4(e){let t=Ol(e,"?"),r=Ol(e,"#");if(t===void 0||r!==void 0&&r<t)return e;let n=e.slice(0,t),i=r!==void 0?e.slice(t+1|0,r):e.slice(t+1|0),o=r!==void 0?e.slice(r):"",a=new URLSearchParams(i);return NP(a)?n+"?"+a.toString()+o:e}function T4(e){let t=Hn(e);if(t===void 0)return x4(e);let r=de(t);return NP(r.searchParams),r.toString()}function GP(e){return T4(e).replace(w4,Cl)}function A4(e){let t=Ol(e,"=");return t!==void 0?[e.slice(0,t),e.slice(t+1|0)]:[e,void 0]}function Vv(e,t){if(k4(t))return Cl;if(Array.isArray(e))return t==="args"?O4(e):e.map(r=>Vv(r,void 0));if(e===null)return e;switch(typeof e){case"string":return GP(e);case"object":return FP(e);default:return e}}function O4(e){let t={contents:!1};return e.map(r=>{if(typeof r=="string"){if(t.contents)return t.contents=!1,Cl;let n=A4(r),i=n[0];return b4.includes(i)?n[1]!==void 0?i+"="+Cl:(t.contents=!0,r):GP(r)}return t.contents=!1,Vv(r,void 0)})}function FP(e){let t=e.name,r=typeof t=="string"?t.toLowerCase():void 0,n;if(r!==void 0)switch(r){case"authorization":case"cookie":case"set-cookie":n=!0;break;default:n=!1}else n=!1;let i={};return Object.entries(e).forEach(o=>{let a=o[0];if(a!=="runner_console"){i[a]=n&&a==="value"?Cl:Vv(o[1],a);return}}),i}var Lm=FP;import*as sa from"node:os";import*as Wp from"node:path";import*as Gw from"node:crypto";function qn(e){let t=parseFloat(e);if(!Number.isNaN(t))return t}function qP(e){return"local_runner:"+e}var C4="kandan-local-codex-runner",E4="rescript";function LP(e){let t={};t.clientName=C4,t.clientId=e.clientId;let r=e.machineFingerprint;t.machineFingerprint=r!==void 0?r:null,Object.entries(Mk(e.machineFingerprintV2)).forEach(a=>{t[a[0]]=a[1]}),t.runnerPid=e.runnerPid,t.version=e.version,t.hostname=e.hostname,t.cwd=e.cwd;let n=e.workspace;t.workspace=n!==void 0?n:null;let i=e.channel;t.channel=i!==void 0?i:null,t.capabilities=e.capabilities;let o=e.generationOverlapEpoch;if(o!==void 0){let a={};a.epoch=o,a.overlap=!0,t.generation=a}return t.commander_impl=E4,t}function UP(e,t,r){let n={};return n.last_seq=r,t!==void 0&&(n.runner_id=e,n.thread_id=t),n}function Ln(e,t){return e.catch(r=>t(Y(r)))}function ZP(){let e=[],t=[],r={contents:!1},n=()=>{let a=e.shift();return a!==void 0?Promise.resolve({done:!1,value:a}):r.contents?Promise.resolve({done:!0}):new Promise((s,l)=>{t.push(s)})},i=()=>(r.contents=!0,Promise.resolve({done:!0})),o={};return o[Symbol.asyncIterator]=()=>({next:n,return:i}),{iterable:o,push:a=>{if(r.contents)return!1;let s=t.shift();return s!==void 0?(s({done:!1,value:a}),!0):(e.push(a),!0)},close:()=>{r.contents=!0,(()=>{for(;;){let s=t.shift();if(s===void 0)return;s({done:!0})}})()}}}function VP(e){return import(e)}var R4="@anthropic-ai/claude-agent-sdk";function HP(e){return ZP()}function I4(e){return{next:()=>e.next(),close:()=>{e.close()},interrupt:()=>e.interrupt(),setModel:t=>e.setModel(t),setPermissionMode:t=>e.setPermissionMode(t),applyFlagSettings:t=>e.applyFlagSettings(t),supportedCommands:()=>e.supportedCommands()}}async function BP(){let e=await VP(R4);return{query:t=>I4(e.query(t)),getSessionInfo:(t,r)=>e.getSessionInfo(t,r),listSessions:t=>e.listSessions(t),getSessionMessages:(t,r)=>e.getSessionMessages(t,r)}}var Hv=["codex","claude-code","pi","opencode"];function is(e){return e}function Um(e){switch(e.TAG){case"SessionStarted":return"session_started";case"TurnStarted":return"turn_started";case"ItemStarted":return"item_started";case"ItemDelta":return"item_delta";case"ItemCompleted":return"item_completed";case"ApprovalRequested":return"approval_requested";case"UsageUpdated":return"usage_updated";case"RateLimitUpdated":return"rate_limit_updated";case"ActivityPulse":return"activity_pulse";case"TurnCompleted":return"turn_completed";case"TurnFailed":return"turn_failed";case"TurnInterrupted":return"turn_interrupted";case"HarnessDied":return"harness_died"}}function Jv(e){switch(e){case"BindingNotObject":return"binding_not_object";case"SessionIdInvalid":return"session_id_invalid";case"LeaseEpochInvalid":return"lease_epoch_invalid";case"NextFrameIndexInvalid":return"next_frame_index_invalid";case"CheckpointConfigMissing":return"checkpoint_config_missing";case"CheckpointConfigInvalid":return"checkpoint_config_invalid";case"SourceSeqInvalid":return"source_seq_invalid"}}function Bv(e){return"adt_stream_v1 dispatch refused: "+Jv(e)+"; the commander refuses to stream unconfigured (no baked fallback thresholds exist by law - plan doc 2.4/MF9)"}function YP(e){switch(e){case"Checkpoint":return"checkpoint";case"Delta":return"delta";case"Terminal":return"terminal"}}function Zm(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}function os(e){if(e!==void 0&&typeof e=="number"&&e>=1&&Math.trunc(e)===e)return e}function $4(e){let t=Zm(e);if(t===void 0)return;let r=os(t.version),n=w(t.thresholds,Zm);if(r===void 0||n===void 0)return;let i=os(n.max_bytes),o=os(n.max_deltas),a=os(n.max_interval_ms);if(i!==void 0&&o!==void 0&&a!==void 0)return{version:r,thresholds:{maxBytes:i,maxDeltas:o,maxIntervalMs:a}}}function M4(e){let t=Zm(e);if(t===void 0)return{TAG:"ParseRefused",_0:"BindingNotObject"};let r=os(t.session_id);if(r===void 0)return{TAG:"ParseRefused",_0:"SessionIdInvalid"};let n=os(t.lease_epoch);if(n===void 0)return{TAG:"ParseRefused",_0:"LeaseEpochInvalid"};let i=os(t.next_frame_index);if(i===void 0)return{TAG:"ParseRefused",_0:"NextFrameIndexInvalid"};let o=t.checkpoint_config;if(o===void 0)return{TAG:"ParseRefused",_0:"CheckpointConfigMissing"};let a=$4(o);return a!==void 0?{TAG:"Parsed",_0:{sessionId:r,leaseEpoch:n,nextFrameIndex:i,checkpointConfig:a}}:{TAG:"ParseRefused",_0:"CheckpointConfigInvalid"}}function j4(e){return yn(YP(e.frameKind)+`
325
325
  `+e.body).slice(0,16)}function z4(e){let t={};return t.session_id=e.sessionId,t.lease_epoch=e.leaseEpoch,t.frame_index=e.frameIndex,t.frame_kind=YP(e.frameKind),t.body=e.body,t.byte_len=e.byteLen,t}function XP(e){let t=z4(e);return t.digest=j4(e),t}function Yv(e){switch(e){case"StaleEpoch":return"stale_epoch";case"PostSettle":return"post_settle";case"PostTerminal":return"post_terminal";case"FrameIndexReuse":return"frame_index_reuse";case"UnknownRejection":return"unknown"}}function QP(e){if(e===void 0||typeof e!="string")return"UnknownRejection";switch(e){case"frame_index_reuse":return"FrameIndexReuse";case"post_settle":return"PostSettle";case"post_terminal":return"PostTerminal";case"stale_epoch":return"StaleEpoch";default:return"UnknownRejection"}}function N4(e,t){return{binding:e,cumulative:"",pendingBody:"",pendingBytes:0,pendingDeltas:0,lastFrameAtMs:t,nextFrameIndex:e.nextFrameIndex,emittedFrameCount:0,checkpointPending:!1,terminalEmitted:!1,fenced:!1}}function eR(e,t,r){let n;switch(t){case"Delta":n=e.pendingBody;break;case"Checkpoint":case"Terminal":n=e.cumulative;break}let i=e.binding.sessionId,o=e.binding.leaseEpoch,a=e.nextFrameIndex,s=Buffer.byteLength(n,"utf8"),l={sessionId:i,leaseEpoch:o,frameIndex:a,frameKind:t,body:n,byteLen:s};switch(e.nextFrameIndex=e.nextFrameIndex+1,e.emittedFrameCount=e.emittedFrameCount+1|0,e.pendingBody="",e.pendingBytes=0,e.pendingDeltas=0,e.lastFrameAtMs=r,t){case"Delta":break;case"Checkpoint":case"Terminal":e.checkpointPending=!1;break}return l}function G4(e,t){let r=e.binding.checkpointConfig.thresholds;return e.pendingDeltas>0?e.pendingBytes>=r.maxBytes||e.pendingDeltas>=r.maxDeltas?!0:t-e.lastFrameAtMs>=r.maxIntervalMs:!1}function F4(e){let t=e.emittedFrameCount,r=e.checkpointPending;return t!==0&&!r?"Delta":"Checkpoint"}function D4(e,t,r){if(!(e.fenced||e.terminalEmitted||t===""))return e.cumulative=e.cumulative+t,e.pendingBody=e.pendingBody+t,e.pendingBytes=e.pendingBytes+Buffer.byteLength(t,"utf8")|0,e.pendingDeltas=e.pendingDeltas+1|0,G4(e,r)?eR(e,F4(e),r):void 0}function q4(e,t){if(!(e.fenced||e.terminalEmitted))return e.terminalEmitted=!0,eR(e,"Terminal",t)}function L4(e){if(!(e.fenced||e.terminalEmitted)){e.cumulative="",e.pendingBody="",e.pendingBytes=0,e.pendingDeltas=0,e.checkpointPending=!0;return}}function tR(e){e.fenced=!0}function U4(e){switch(e){case"failed":case"ignored":case"interrupted":case"processed":return!0;default:return!1}}function rR(e,t,r){if(e===void 0||e===null)return"Absent";let n=M4(e);if(n.TAG==="Parsed"){let o=n._0;if(t===void 0)return{TAG:"Refused",reason:"SourceSeqInvalid",message:Bv("SourceSeqInvalid")};if(!(t>=1&&Math.trunc(t)===t))return{TAG:"Refused",reason:"SourceSeqInvalid",message:Bv("SourceSeqInvalid")};let a={};return a.session_id=o.sessionId,a.lease_epoch=o.leaseEpoch,a.checkpoint_config_version=o.checkpointConfig.version,{TAG:"Accepted",session:{binding:o,sourceSeq:t,emitter:N4(o,r),trackedItemKey:void 0,trackedItemRank:0,itemFirstSeenOrdinals:{},lastBody:"",done:!1},ackPayload:a}}let i=n._0;return{TAG:"Refused",reason:i,message:Bv(i)}}function Mu(e,t){let r=e[t];if(typeof r=="string")return r}function JP(e,t){let r=e[t];if(r!==void 0&&typeof r=="number"&&Math.trunc(r)===r)return r}function W4(e){return w(w(e.structured,Zm),r=>Mu(r,"phase"))==="final_answer"?1:0}function nR(e,t,r,n,i){if(e.done||e.emitter.fenced)return[];if(t===i.messageState){let _=JP(r,"seq"),g=Mu(r,"status");if(_===void 0)return[];if(g===void 0)return[];if(!(_===e.sourceSeq&&U4(g)))return[];let b=q4(e.emitter,n);return e.done=!0,b!==void 0?[b]:[]}let a=(t===i.postStreamedRow||t===i.streamSnapshot||t===i.finalizeRow||t===i.postCompletedRow)&&oe(Mu(r,"stream_kind"),"assistant")&&oe(JP(r,"source_seq"),e.sourceSeq),s=Mu(r,"item_key");if(!a)return[];if(s===void 0)return[];let l=W4(r),d=e.itemFirstSeenOrdinals[s],u;if(d!==void 0)u=d;else{let _=Object.keys(e.itemFirstSeenOrdinals).length;e.itemFirstSeenOrdinals[s]=_,u=_}let c=e.trackedItemKey,f;if(c!==void 0)if(c===s)e.trackedItemRank=l,f=!0;else{let _=k(e.itemFirstSeenOrdinals[c],-1);l>e.trackedItemRank||l===e.trackedItemRank&&u>_?(e.trackedItemKey=s,e.trackedItemRank=l,e.lastBody="",L4(e.emitter),f=!0):f=!1}else e.trackedItemKey=s,e.trackedItemRank=l,f=!0;if(!f)return[];let h=k(Mu(r,"body"),""),m=h.startsWith(e.lastBody)?h.slice(e.lastBody.length,h.length):h;e.lastBody=h;let p=D4(e.emitter,m,n);return p!==void 0?[p]:[]}var Vm={},Wm={},Kv=[];function iR(e,t){Vm[e]=t}function Xv(e){return Vm[e]}function oR(e,t){let r=Vm[e];if(r!==void 0&&r.binding.sessionId===t.binding.sessionId&&r.binding.leaseEpoch===t.binding.leaseEpoch)return Yt(Vm,e)}function aR(e){let t=e.toString();if(Wm[t]===void 0)for(Wm[t]=!0,Kv.push(t);Kv.length>256;){let n=Kv.shift();n!==void 0&&Yt(Wm,n)}}function sR(e){return k(Wm[e.toString()],!1)}var lR="adt_stream_v1";var dR="adt_frame",uR="adt_binding_ack",Qv="adt.frame";function Z4(e){switch(e){case"SocketOpen":return"open";case"SocketMessage":return"message";case"SocketClose":return"close";case"SocketError":return"error"}}function V4(e){let t=e.data,r;r=t==null||typeof t!="string"?void 0:t;let n=e.code,i;i=n==null||typeof n!="number"||(n|0)!==n?void 0:n|0;let o=e.reason,a;return a=o==null||typeof o!="string"?void 0:o,{data:r,code:i,reason:a}}function H4(e){return{readyState:()=>e.readyState,send:t=>{e.send(t)},close:()=>{e.close()},on:(t,r)=>{e.addEventListener(Z4(t),n=>r(V4(n)),{})}}}function Hm(e,t){return H4(new WebSocket(e,t))}var fR=0,as=1;var eS="file",tS=["mcp_oauth_credentials_store","cli_auth_credentials_store"],B4=tS.flatMap(e=>["-c",e+'="'+eS+'"']),K4=["-c","features.apps=false"];function ki(e){return JSON.stringify(e)}function J4(e){let t=(r,n)=>r!==void 0?Object.entries(r).flatMap(i=>["-c","model_providers."+e.id+"."+n+"."+i[0]+"="+ki(i[1])]):[];return[["-c","model_providers."+e.id+".name="+ki(e.name),"-c","model_providers."+e.id+".base_url="+ki(e.baseUrl),"-c","model_providers."+e.id+".env_key="+ki(e.envKey),"-c","model_providers."+e.id+".wire_api="+ki(e.wireApi)],t(e.httpHeaders,"http_headers"),t(e.envHttpHeaders,"env_http_headers"),["-c","model_provider="+ki(e.id)]].flat()}var Y4=["-c","model_providers.openai-linzumi.name="+ki("OpenAI"),"-c","model_providers.openai-linzumi.wire_api="+ki("responses"),"-c","model_providers.openai-linzumi.requires_openai_auth=true","-c","model_providers.openai-linzumi.supports_websockets=true"];function X4(e){let t=e.model,r=e.reasoningEffort,n=e.modelProvider;return[K4,B4,t!==void 0?["-c","model="+ki(t)]:[],r!==void 0?["-c","model_reasoning_effort="+ki(r)]:[],e.fast?["-c","service_tier="+ki("fast")]:[],e.mcpConfigArgs.flat(),n!==void 0?J4(n):Y4].flat()}function pR(e,t){return[["app-server"],X4(t),["--listen",e]].flat()}var Q4=["LINZUMI_MCP_ACCESS_TOKEN","LINZUMI_MCP_OWNER_USERNAME"];function hR(e,t,r){let n=r?Object.fromEntries(Object.entries(e)):{};return Q4.forEach(i=>Yt(n,i)),t.forEach(i=>{let o=i[1],a=i[0];if(o!==void 0){n[a]=o;return}else return Yt(n,a)}),n}var _R=["ignore","pipe","pipe"];function gR(e){let t=e.length;return t>12e3?e.slice(t-12e3|0,t):e}function yR(e,t,r){return r<3&&e.includes("codex app-server exited before readyz")&&t.includes("EADDRINUSE")?t.includes("listen"):!1}function bR(e){let t=Hn(e);if(t===void 0)return;let r=de(t),i=r.protocol==="wss:"?"https:":"http:";return r.protocol=i,r.pathname="/readyz",r.search="",r.hash="",r.toString()}var eB="kandan-local-codex-runner",tB="0.0.1";function vR(){return Object.fromEntries([["clientInfo",Object.fromEntries([["name",eB],["version",tB]])],["capabilities",Object.fromEntries([["experimentalApi",!0]])]])}var rB=new RegExp("\\bsession\\b.+\\bis archived\\b","i");function SR(e){return rB.test(e)}var nB=new RegExp("^thread not found(?:\\s*:|\\b)","i");function wR(e){return nB.test(e.trim())}var kR=2e3;function iB(e){try{e.unref();return}catch{return}}var xR="codex app-server websocket closed",oB="codex app-server websocket is not open";function aB(e){let t=e.method;if(typeof t=="string")return t}function rS(e){let t=e.error;if(t===void 0)return{TAG:"ResultReply",_0:k(e.result,null)};if(typeof t!="object"||t===null||Array.isArray(t))return{TAG:"ErrorReply",code:0,message:JSON.stringify(t)};let r=t.code,n=r!==void 0&&typeof r=="number"?r:0,i=t.message;return{TAG:"ErrorReply",code:n,message:typeof i=="string"?i:""}}function Km(e,t,r,n){let i=JSON.stringify(n);t(r,i);try{return e.socket.send(i),{TAG:"Ok",_0:void 0}}catch(o){let a=Y(o);return{TAG:"Error",_0:Me(a).message}}}function CR(e,t,r){try{return t(r)}catch(n){let i=Y(n);return e("codex.notification_callback_failed",Object.fromEntries([["purpose","codex.app_server"],["method",r.method],["message",Me(i).message]]))}}function TR(e,t,r){try{return t(r)}catch(n){let i=Y(n);return e("codex.close_callback_failed",Object.fromEntries([["purpose","codex.app_server"],["message",Me(i).message]]))}}function sB(e,t){let r;if(t.TAG==="Ok")r=[["jsonrpc","2.0"],["id",e],["result",t._0]];else{let n=t._0;r=[["jsonrpc","2.0"],["id",e],["error",Object.fromEntries([["code",n[0]],["message",n[1]]])]]}return Object.fromEntries(r)}async function lB(e,t,r,n){let i={TAG:"Error",_0:[-32601,"unhandled Codex app-server request: "+n.method]},o=e.requestCallbacks.slice(),a,s=0;for(;gn(a)&&s<o.length;){let d=o[s];if(d!==void 0){let u=0,c;try{c=await d(n),u=1}catch(f){let h=Y(f);a={TAG:"Error",_0:[-32e3,Me(h).message]}}u===1&&c!==void 0&&(a={TAG:"Ok",_0:c})}s=s+1|0}let l=k(a,i);Km(t,r,"outgoing",sB(n.id,l))}function dB(e,t,r,n,i){let o;try{o=JSON.parse(i)}catch(h){let m=Y(h);r("codex.app_server_frame_malformed",Object.fromEntries([["purpose","codex.app_server"],["message",Me(m).message],["payload",i.slice(0,512)],["payloadChars",i.length]])),o=void 0}let a;if(o!==void 0){let h=0;typeof o=="object"&&o!==null&&!Array.isArray(o)?a=o:h=1,h===1&&(r("codex.app_server_frame_malformed",Object.fromEntries([["purpose","codex.app_server"],["message","codex app-server sent non-object JSON-RPC message"],["payload",i.slice(0,512)],["payloadChars",i.length]])),a=void 0)}else a=void 0;if(a===void 0)return;let s=Zt(a.id),l=s&&(Zt(a.result)||Zt(a.error)),d=aB(a);if(l){let h=k(a.id,null),m=JSON.stringify(h),p=e.pending[m];return p!==void 0?(Yt(e.pending,m),p.resolvePending({TAG:"Ok",_0:rS(a)})):void 0}if(s)if(d!==void 0){Ln(lB(e,t,n,{id:k(a.id,null),method:d,params:a.params}),h=>Promise.resolve());return}else return;if(d===void 0)return;let u=a.params,c={method:d,params:u};e.notificationCallbacks.length!==0?e.notificationCallbacks.forEach(h=>CR(r,h,c)):e.pendingNotifications.push(c)}function uB(e,t,r){return Object.fromEntries(r!==void 0?[["jsonrpc","2.0"],["id",e],["method",t],["params",r]]:[["jsonrpc","2.0"],["id",e],["method",t]])}function AR(e,t){return Object.fromEntries(t!==void 0?[["jsonrpc","2.0"],["method",e],["params",t]]:[["jsonrpc","2.0"],["method",e]])}function OR(e,t,r,n,i,o){return t.socket.readyState()===as?new Promise((a,s)=>{e.pending[JSON.stringify(n)]={resolvePending:a};let l=Km(t,r,"request",uB(n,i,o));l.TAG!=="Ok"&&(Yt(e.pending,JSON.stringify(n)),a({TAG:"Error",_0:l._0}))}):Promise.resolve({TAG:"Error",_0:oB})}async function Jm(e,t,r,n){let i=t!==void 0?t:u=>({socket:Hm(u,[]),ping:void 0}),o=r!==void 0?r:2e3,a=n!==void 0?n:()=>Date.now(),s=a()+o,l,d="websocket open failed";for(;gn(l);){let u;try{u={TAG:"Ok",_0:i(e)}}catch(c){let f=Y(c);u={TAG:"Error",_0:Me(f).message}}if(u.TAG==="Ok"){let c=u._0;if(await new Promise((f,h)=>{c.socket.on("SocketOpen",m=>f(!0)),c.socket.on("SocketError",m=>f(!1))}))l={TAG:"Ok",_0:c};else{try{c.socket.close()}catch{}a()>s&&(l={TAG:"Error",_0:d})}}else d=u._0,a()>s&&(l={TAG:"Error",_0:d})}return k(l,{TAG:"Error",_0:d})}async function Ym(e,t){let r={pending:{},notificationCallbacks:[],requestCallbacks:[],pendingNotifications:[],closeCallbacks:[],nextId:1,closeError:void 0},n=t.audit,i=t.onWire,o=setInterval(()=>{let d=e.ping;if(d!==void 0&&e.socket.readyState()===as)try{return d()}catch{return}},t.keepaliveIntervalMs);iB(o);let a=d=>{clearInterval(o);let u=Object.entries(r.pending);if(Object.entries(r.pending).forEach(h=>Yt(r.pending,h[0])),u.forEach(h=>h[1].resolvePending({TAG:"Error",_0:d})),r.closeError!==void 0)return;r.closeError=d;let f=r.closeCallbacks.slice();r.closeCallbacks.splice(0,r.closeCallbacks.length),f.forEach(h=>TR(n,h,d))};e.socket.on("SocketClose",d=>a(xR)),e.socket.on("SocketError",d=>a(xR)),e.socket.on("SocketMessage",d=>{let u=d.data;if(u!==void 0)return i("incoming",u),dB(r,e,n,i,u)});let s=await OR(r,e,i,"initialize","initialize",vR());if(s.TAG!=="Ok")return{TAG:"Error",_0:s._0};let l=s._0;return l.TAG!=="ResultReply"?{TAG:"Error",_0:"codex initialize failed: "+l.message}:(Km(e,i,"outgoing",AR("initialized",void 0)),{TAG:"Ok",_0:{request:(d,u)=>{let c=r.nextId;return r.nextId=r.nextId+1|0,OR(r,e,i,c,d,u)},notify:(d,u)=>{Km(e,i,"outgoing",AR(d,u))},onNotification:d=>{r.notificationCallbacks.push(d);let u=r.pendingNotifications.slice();r.pendingNotifications.splice(0,r.pendingNotifications.length),u.forEach(c=>CR(n,d,c))},onRequest:d=>{r.requestCallbacks.push(d)},onClose:d=>{let u=r.closeError;if(u!==void 0)return TR(n,d,u);r.closeCallbacks.push(d)},isClosed:()=>Zt(r.closeError),close:()=>{clearInterval(o);try{return e.socket.close()}catch{return}}}})}function Il(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}function Li(e){if(e!==void 0&&typeof e=="string"&&e.trim()!=="")return e.trim()}function Rl(e){if(e!==void 0&&typeof e=="number"&&Ct(e))return e}function ER(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}var PR="linzumi_thread_codex_worker_ready",RR="linzumi_thread_codex_worker_session_closed",IR="linzumi_thread_codex_worker_request",$R="linzumi_thread_codex_worker_notify",aS="linzumi_thread_codex_worker_response",MR="linzumi_thread_codex_worker_notification",jR="linzumi_thread_codex_worker_server_request",zR="linzumi_thread_codex_worker_server_request_response";function NR(e,t){let r={};return r.type=PR,r.kandanThreadId=e,r.commanderManagedPorts=t.map(n=>{let i={};i.port=n.port;let o=n.pid;o!==void 0&&(i.pid=o);let a=n.processName;a!==void 0&&(i.processName=a);let s=n.processIconKey;s!==void 0&&(i.processIconKey=s);let l=n.agentProvider;return l!==void 0&&(i.agentProvider=l),i}),r}function GR(e,t){let r={};return r.type=RR,r.kandanThreadId=e,r.reason=t,r}function cB(e,t,r){let n={};return n.type=IR,n.id=e,n.method=t,r!==void 0&&(n.params=r),n}function fB(e,t){let r={};return r.type=$R,r.method=e,t!==void 0&&(r.params=t),r}function mB(e,t){let r={};return r.type=aS,r.id=e,r.response=t,r}function pB(e,t){let r={};return r.type=aS,r.id=e,r.error=t,r}function hB(e){let t={};return t.type=MR,t.notification=e,t}function _B(e,t){let r={};return r.type=jR,r.id=e,r.request=t,r}function iS(e,t,r){let n={};return n.type=zR,n.id=e,t!==void 0&&(n.result=t),r!==void 0&&(n.error=r),n}function gB(e){if(e===void 0||typeof e!="object"||e===null||Array.isArray(e)||e.id===void 0)return;let r=e.result,n=e.error;if(r!==void 0||n!==void 0)return e}function yB(e){if(e===void 0||typeof e!="object"||e===null||Array.isArray(e))return;let t=e.id,r=e.method;if(!(t!==void 0||typeof r!="string"))return e}function bB(e){if(e===void 0||typeof e!="object"||e===null||Array.isArray(e))return;let t=e.id,r=e.method;if(t!==void 0&&typeof r=="string")return e}function vB(e){let t=Il(e);if(t===void 0)return;let r=t.type;if(r===void 0||typeof r!="string")return;if(r===IR){let i=Rl(t.id),o=Li(t.method);return i!==void 0&&o!==void 0?{TAG:"ParentRequest",id:i,method_:o,params:ER(t.params)}:void 0}if(r===$R){let i=Li(t.method);return i!==void 0?{TAG:"ParentNotify",method_:i,params:ER(t.params)}:void 0}if(r!==zR)return;let n=Rl(t.id);if(n!==void 0)return{TAG:"ParentServerRequestResponse",id:n,result:t.result,error:Li(t.error)}}function SB(e){let t=Il(e);if(t===void 0)return;let r=t.type;if(r===void 0||typeof r!="string")return;if(r===aS){let o=Rl(t.id);return o!==void 0?{TAG:"ChildResponse",id:o,response:gB(t.response),error:Li(t.error)}:void 0}if(r===MR){let o=yB(t.notification);return o!==void 0?{TAG:"ChildNotification",notification:o}:void 0}if(r!==jR)return;let n=Rl(t.id),i=bB(t.request);if(n!==void 0&&i!==void 0)return{TAG:"ChildServerRequest",id:n,request:i}}function FR(e){let t=Il(e);if(t===void 0)return;let r=t.type;if(typeof r=="string"&&r===RR)return[k(Li(t.kandanThreadId),""),k(Li(t.reason),"")]}var wB="thread Codex worker reported invalid ready payload";function kB(e){let t=Li(e);if(t!==void 0)switch(t){case"claude-code":return"claude-code";case"codex":return"codex";default:return}}function xB(e){return e!==void 0?Array.isArray(e)?Ne(e,t=>{let r=Il(t);if(r===void 0)return;let n=Rl(r.port);if(n!==void 0&&n>=1&&n<=65535)return{port:n,pid:Rl(r.pid),processName:Li(r.processName),processIconKey:Li(r.processIconKey),agentProvider:kB(r.agentProvider)}}):[]:[]}function DR(e,t){let r=Il(e);if(r===void 0)return{TAG:"Ok",_0:void 0};let n=r.type;if(n===void 0)return{TAG:"Ok",_0:void 0};if(typeof n!="string")return{TAG:"Ok",_0:void 0};if(n!==PR)return{TAG:"Ok",_0:void 0};let i=Li(r.kandanThreadId);return i!==void 0&&i===t?{TAG:"Ok",_0:{kandanThreadId:i,commanderManagedPorts:xB(r.commanderManagedPorts)}}:{TAG:"Error",_0:wB}}function qR(e,t){}var LR="linzumi.thread_runner",TB="thread Codex worker requires a codex client with onRequest",oS="thread Codex worker IPC channel closed";function UR(e,t,r){let n=r!==void 0?r:qR,i=e.onRequest;if(i===void 0)return{TAG:"Error",_0:TB};let o=new Map,a={contents:1},s={contents:!1},l=u=>{if(s.contents)return;s.contents=!0;let c={};c.purpose=LR,c.reason=u,n("thread_codex_worker.ipc_send_dropped",c)},d=u=>{let c=t.send,f=t.isConnected();if(c===void 0||!f)return l("ipc_channel_closed");let h=c(u);if(h.TAG!=="Ok")return l(h._0)};return t.onMessage(u=>{let c=vB(u);if(c!==void 0)switch(c.TAG){case"ParentRequest":let f=c.id;e.request(c.method_,c.params).then(_=>_.TAG==="Ok"?d(mB(f,_._0)):d(pB(f,_._0)));return;case"ParentNotify":return e.notify(c.method_,c.params);case"ParentServerRequestResponse":let h=c.error,m=c.id,p=o.get(m);return p!==void 0?(o.delete(m),p(h!==void 0?{TAG:"Error",_0:h}:{TAG:"Ok",_0:c.result})):void 0}}),e.onNotification(u=>d(hB(u))),i(u=>new Promise((c,f)=>{let h=a.contents;a.contents=h+1,o.set(h,c),d(_B(h,u))})),t.onceDisconnect(()=>{o.forEach(u=>u({TAG:"Error",_0:oS})),o.clear()}),{TAG:"Ok",_0:void 0}}var AB="thread Codex worker IPC client is closed",OB="thread Codex worker response missing body",CB="thread Codex worker IPC client closed";async function EB(e,t,r,n,i,o){let a=d=>{let u=e(d);if(u.TAG==="Ok")return;let c={};c.purpose=LR,c.requestMethod=n,c.message=u._0,o("thread_codex_worker.ipc_response_dropped",c)},s=!1,l=0;for(;!s&&l<i.length;){let d=i[l];if(d!==void 0){let u=await d(r);if(u.TAG==="Ok"){let c=u._0;c!==void 0&&(s=!0,a(iS(t,c,void 0)))}else s=!0,a(iS(t,void 0,u._0))}l=l+1|0}if(!s)return a(iS(t,void 0,"unhandled Codex app-server request: "+n))}function PB(e){let t=Il(e);if(t===void 0)return"";let r=t.method;return typeof r=="string"?r:""}function WR(e,t){let r=t!==void 0?t:qR,n=new Map,i=[],o=[],a=[],s={contents:1},l={contents:!1},d=_=>{n.forEach(g=>g({TAG:"Error",_0:_})),n.clear()},u=_=>{if(l.contents)return{TAG:"Error",_0:AB};let g=e.send,b=e.isConnected();return g!==void 0&&b?g(_):{TAG:"Error",_0:oS}},c=_=>{let g=SB(_);if(g!==void 0)switch(g.TAG){case"ChildResponse":let b=g.error,y=g.response,v=g.id,S=n.get(v);return S!==void 0?(n.delete(v),S(b!==void 0?{TAG:"Error",_0:b}:y!==void 0?{TAG:"Ok",_0:y}:{TAG:"Error",_0:OB})):void 0;case"ChildNotification":let A=g.notification;i.length!==0?i.forEach(z=>z(A)):a.push(A);return;case"ChildServerRequest":let $=g.request;EB(u,g.id,$,PB($),o,r);return}},f=e.onMessage(c),h=()=>{l.contents=!0,d(oS)},m=e.onceExit(h),p=e.onceDisconnect(h);return{request:(_,g)=>new Promise((b,y)=>{let v=s.contents;s.contents=v+1,n.set(v,b);let S=u(cB(v,_,g));S.TAG!=="Ok"&&(n.delete(v),b({TAG:"Error",_0:S._0}))}),notify:(_,g)=>u(fB(_,g)),onNotification:_=>{i.push(_);let g=a.slice();a.splice(0,a.length),g.forEach(b=>_(b))},onRequest:_=>{o.push(_)},isClosed:()=>l.contents?!0:!e.isConnected(),close:()=>{l.contents=!0,f(),m(),p(),d(CB)}}}import*as mS from"node:child_process";import*as VR from"node:os";import*as HR from"node:path";function BR(){return HR.join(VR.homedir(),".linzumi","protected-dev-listeners")}var RB=new RegExp("^(\\d+)\\s+(\\d+)$");function IB(e){return Ne(e.split(`
326
326
  `),t=>{let r=RB.exec(t.trim());if(r==null)return;let n=r.slice(1);if(n.length!==2)return;let i=n[0];if(i===void 0)return;let o=n[1];if(o===void 0)return;let a=qn(i),s=qn(o);if(a!==void 0&&s!==void 0)return{pid:a,pgid:s}})}function $B(e){let t=ks("ps",["-axo","pid=,pgid="],5e3,16e6);if(t.TAG==="Ok")return IB(t._0).filter(r=>r.pgid===e).map(r=>r.pid)}function Xm(e,t,r,n,i){let o=n!==void 0?n:$B,a;if(i.size>0){let l=o(e);if(l!==void 0){let d=l.filter(u=>i.has(u));if(d.length!==0){let u=[],c=new Set(l.filter(f=>!i.has(f)));c.add(e),Array.from(c).forEach(f=>{let h=r(f|0,t);if(h.TAG==="Ok")return;let m=h._0;if(!oe(m.code,"ESRCH")){u.push({pid:f,code:m.code,message:m.message});return}}),a={mode:"IndividualSignals",sparedPids:d,failures:u,groupSignalError:void 0}}else a=void 0}else a=void 0}else a=void 0;if(a!==void 0)return a;let s=r(-e|0,t);return s.TAG==="Ok"?{mode:"GroupSignal",sparedPids:[],failures:[],groupSignalError:void 0}:{mode:"GroupSignal",sparedPids:[],failures:[],groupSignalError:s._0}}var YR={contents:(e,t)=>{}};var sS="SIGKILL",ss={children:new Set,handlersInstalled:!1,removeHandlers:void 0};function ju(e,t,r,n,i){let o=e.pid;YR.contents("process.reap_failed",Object.fromEntries([["purpose",e.kind],["pid",o!==void 0?o:null],["ownProcessGroup",e.ownProcessGroup],["reason",t],["stage",r],["code",n!==void 0?n:null],["message",i]]))}function MB(e,t,r,n){let i;try{e.stop(),i={TAG:"Ok",_0:void 0}}catch(l){i={TAG:"Error",_0:Y(l)}}if(i.TAG!=="Ok"){let l=Me(i._0);ju(e,n,"stop",l.code,l.message)}let o=e.pid;if(o===void 0)return;if(e.ownProcessGroup){let l=Xm(o,sS,t,void 0,r);l.sparedPids.length!==0&&YR.contents("process.reap_spared_listeners",Object.fromEntries([["purpose",e.kind],["pid",o],["reason",n],["sparedPids",l.sparedPids.map(f=>f)]])),l.failures.forEach(f=>ju(e,n,"member_kill:"+f.pid.toString(),f.code,f.message));let d=l.groupSignalError;if(d===void 0||oe(d.code,"ESRCH"))return;ju(e,n,"group_kill",d.code,d.message);let u=t(o,sS);if(u.TAG==="Ok")return;let c=u._0;return oe(c.code,"ESRCH")?void 0:ju(e,n,"pid_kill",c.code,c.message)}let a=t(o,sS);if(a.TAG==="Ok")return;let s=a._0;if(!oe(s.code,"ESRCH"))return ju(e,n,"pid_kill",s.code,s.message)}function lS(e,t,r){let n=e!==void 0?e:Bi,i=t!==void 0?t:new Set,o=r!==void 0?r:"exit",a=Array.from(ss.children);return ss.children.clear(),a.forEach(s=>MB(s,n,i,o)),a.length}function JR(e,t){let r;return r=typeof t=="string"?t:JSON.stringify(t),"linzumi commander "+e+": "+r+`
327
327
  `}function jB(){if(ss.handlersInstalled)return;ss.handlersInstalled=!0;let e=o=>{lS(void 0,void 0,"process_exit")};process.on("exit",e);let t=process.listenerCount("uncaughtException")===0,r=process.listenerCount("unhandledRejection")===0,n=o=>{lS(void 0,void 0,"uncaught_exception"),gr(JR("uncaughtException",o)),process.exit(1)},i=o=>{lS(void 0,void 0,"unhandled_rejection"),gr(JR("unhandledRejection",o)),process.exit(1)};t&&process.on("uncaughtException",n),r&&process.on("unhandledRejection",i),ss.removeHandlers=()=>{if(process.off("exit",e),t&&process.off("uncaughtException",n),r){process.off("unhandledRejection",i);return}}}function Qm(e){return ss.children.add(e),jB(),{unregister:()=>{ss.children.delete(e)}}}import*as Bo from"node:path";import*as QR from"node:net";function $l(e,t){try{return e.kill(t)}catch{return!1}}function eI(){return new Promise((e,t)=>{let r=QR.createServer();r.on("error",n=>e({TAG:"Error",_0:n.message})),r.listen(0,"127.0.0.1",()=>{let n=r.address();if(n==null)return r.close(o=>{}),e({TAG:"Error",_0:"failed to allocate loopback port"});let i=n.port;r.close(o=>o==null?e({TAG:"Ok",_0:i}):e({TAG:"Error",_0:o.message}))})})}var Wne=new RegExp("[^0-9A-Za-z._-]","g");var eie=new RegExp("[\\\\/]");var tI="cannot fork thread runner without current CLI script path";var tie=15*6e4,rie=120*6e4,nie=1440*6e4,iie=2*6e4;var GB="this computer is updating its Linzumi runner",oie=GB+" to a new version - nothing was started. Retry in a few minutes once the update finishes.";var aie=15*6e4;var rI="this computer restarted its Linzumi runner for an update",sie=rI+" after waiting for this job past the drain timeout - the job was interrupted. Send your message again to continue.",lie=rI+" while this job was waiting on your approval - the approval prompt was interrupted. Send your message again and answer the approval prompt to continue.";function nI(e,t,r){return e==="SIGTERM"&&t?r!=="win32":!1}var iI="runner.thread_worker_sigterm_deferred_to_drain";function FB(e,t){}var uS="linzumi.thread_runner";function aI(e,t){return e!==void 0&&e.trim()!==""?{TAG:"Ok",_0:Bo.isAbsolute(e)?e:Bo.resolve(t,e)}:{TAG:"Error",_0:tI}}function DB(e){return["--require","-r","--import","--loader","--experimental-loader"].includes(e)}function qB(e){return["--require=","-r=","--import=","--loader=","--experimental-loader="].some(t=>e.startsWith(t))}function LB(e){let t=[],r=0;for(;r<e.length;){let n=e[r];if(n!==void 0){let i=DB(n),o=qB(n);if(i){let a=e[r+1|0];a!==void 0&&(t.push(n),t.push(a)),r=r+2|0}else o&&t.push(n),r=r+1|0}else r=r+1|0}return t}function cS(e,t,r){return LB(r).concat([e].concat(t))}function _n(e,t){return t!==void 0?t!==""?[e,t]:[]:[]}function sI(e){let t=i=>{let o=i.join(",");if(o!=="")return o},r=e.codexModelProvider,n=e.runtimeDefaults;return[["--api-url",e.kandanUrl],["--cwd",e.cwd],["--codex-bin",e.codexBin],_n("--workspace",e.workspaceSlug),_n("--log-file",e.logFile),_n("--debug-trace-dir",G(e.debugTrace,i=>i.dir)),_n("--debug-trace-content",w(e.debugTrace,i=>i.contentMode)),e.fast?["--fast"]:[],_n("--allowed-cwd",t(e.allowedCwds)),_n("--forward-port",t(e.allowedForwardPorts.map(i=>i.toString()))),_n("--code-server-bin",e.codeServerBin),_n("--model",w(e.runtimeDefaults,i=>i.model)),_n("--reasoning-effort",w(e.runtimeDefaults,i=>i.reasoningEffort)),_n("--sandbox",w(e.runtimeDefaults,i=>i.sandbox)),_n("--approval-policy",w(e.runtimeDefaults,i=>i.approvalPolicy)),r!==void 0?["--model-provider",r.provider,"--llm-proxy-base-url",r.llmProxyBaseUrl]:[],e.vmExecution?["--vm-execution"]:[],_n("--execution-mode",e.executionMode),_n("--egress-mode",e.egressMode),_n("--project-public-id",e.projectPublicId),_n("--golden-image-id",e.goldenImagePublicId),n!==void 0?n.allowPortForwardingByDefault?["--allow-port-forwarding-by-default"]:["--no-allow-port-forwarding-by-default"]:[]].flat()}function lI(e){let t=[],r=0;for(;r<e.length;){let n=e[r];n!==void 0?n==="--token"?(t.push("--token"),t.push("<redacted>"),r=r+2|0):(t.push(n),r=r+1|0):r=r+1|0}return t}function dI(e,t,r){let n=[["LINZUMI_THREAD_RUNNER_ROLE","thread"],["LINZUMI_THREAD_RUNNER_KANDAN_THREAD_ID",e.kandanThreadId],["LINZUMI_THREAD_RUNNER_TOKEN",e.token],["LINZUMI_DEV_SERVICES_PARENT_PID",t.toString()]],i=e.codexModelProvider;return i!==void 0&&n.push(["LINZUMI_LLM_PROXY_TOKEN",i.llmProxyToken]),n.push(["LINZUMI_THREAD_RUNNER_AGENT_MCP_TOKEN",k(e.linzumiAgentMcpToken,"")]),r!==void 0&&n.push(["OPENAI_API_KEY",r]),n}function uI(e){let t=e.length;return t>12e3?e.slice(t-12e3|0,t):e}function ep(e){let t=dn(e.code,"null",o=>o.toString()),r=k(e.signal,"null"),n="thread Codex worker exited before ready: code="+t+" signal="+r,i=e.capturedOutput.trim();return i===""?n:n+`
@@ -1510,7 +1510,7 @@ To kick the agent off:
1510
1510
  `,M=Buffer.byteLength(T,"utf8");if(M>s)return l("runner_diagnostics.spool_entry_dropped",{reason:"entry_too_large",entry_bytes:M,max_entry_bytes:s}),!1;hEe(n,{recursive:!0}),m(u)+M>i&&f(),_(M);let P=b()?`
1511
1511
  `:"";return pEe(u,`${P}${T}`,"utf8"),!0}catch(R){return l("runner_diagnostics.spool_failed",{error:R instanceof Error?R.message:String(R)}),!1}},w=S=>{let R=[],T=yEe(S,"utf8");for(let M of T.split(`
1512
1512
  `))if(M.trim()!=="")try{let P=JSON.parse(M);P!==null&&typeof P=="object"&&R.push({parsed:P,raw:M})}catch{}return R};return{append:v,drain:async S=>{if(c)return{uploadedBatches:0,uploadedEntries:0,remainingBatches:p().length,skipped:!0};c=!0;let R=0,T=0;try{f(),_(0);let M=a()-o;for(let P of p()){let D;try{D=w(P)}catch(Z){l("runner_diagnostics.spool_batch_unreadable",{file:P,error:Z instanceof Error?Z.message:String(Z)}),y(P,"unreadable");continue}let F=D.filter(Z=>{let H=OEe(Z.parsed);return H===void 0||H>=M});if(F.length===0){y(P,"empty_or_expired");continue}let E=hR(P,".jsonl"),N=F.map(Z=>Z.raw).join(`
1513
- `),V=F.map(Z=>Z.parsed.spooled_at).filter(Z=>typeof Z=="string"),G={bundle_name:"runner-diagnostics-spool",exported_at:new Date(a()).toISOString(),idempotency_key:E,diagnostics:{kind:"runner_diagnostic_log",spool_batch:!0,idempotency_key:E,entry_count:F.length,...V.length===0?{}:{first_spooled_at:V[0],last_spooled_at:V[V.length-1]}},telemetry_ndjson:N};try{await S(G)}catch(Z){l("runner_diagnostics.spool_upload_failed",{file:P,remaining_batches:p().length,error:Z instanceof Error?Z.message:String(Z)});break}R+=1,T+=F.length;try{wJ(P)}catch(Z){l("runner_diagnostics.spool_delete_failed",{file:P,error:Z instanceof Error?Z.message:String(Z)})}}}catch(M){l("runner_diagnostics.spool_drain_failed",{error:M instanceof Error?M.message:String(M)})}finally{c=!1}return{uploadedBatches:R,uploadedEntries:T,remainingBatches:p().length,skipped:!1}},pendingBatchFiles:p}}var SEe,kEe,CEe,TEe,PEe,vJ,REe,EEe,kJ=q(()=>{"use strict";Cx();SEe=32*1024*1024,kEe=10080*60*1e3,CEe=4*1024*1024,TEe=1024*1024,PEe="spool.jsonl",vJ=/^batch-(\d{1,16})-[0-9a-f-]+\.jsonl$/;REe=/\b([A-Z][A-Z0-9_]{1,})=("[^"\n]*"|'[^'\n]*'|[^\s"'`;,)\]}]+)/g,EEe=/(?:\/(?:[A-Za-z0-9._@~+-]|%[0-9A-Fa-f]{2})+){2,}/g});var Vt,yR,wa=q(()=>{"use strict";Vt="1.0.174",yR=`linzumi ${Vt}`});import{closeSync as TJ,existsSync as xR,mkdirSync as $Ee,openSync as PJ,readFileSync as IJ,renameSync as LEe,unlinkSync as Xd,writeFileSync as FEe,writeSync as RJ}from"node:fs";import{dirname as EJ,join as jEe}from"node:path";function bR(e){return e instanceof Ds||e instanceof Error&&e.name===MJ&&"lockPath"in e&&"heldBy"in e}function wR(e,n=et(),t){let r=t===void 0?encodeURIComponent(e):Jd(t);return jEe(EJ(n),"runners",`${r}.lock`)}function Nb(e){let n=wR(e.machineId,e.configPath,e.linzumiUrl),t=e.isPidAlive??qJ,r=e.now??(()=>new Date),o=e.killPid??QEe,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:zn(e.linzumiUrl)},...e.launchSource===void 0?{}:{launchSource:e.launchSource},startedAt:i,heartbeatAt:i,cliVersion:e.cliVersion??Vt,...e.gracefulUpdateDrain===!0?{gracefulUpdateDrain:!0}:{}};UEe(e.machineId,e.configPath,e.linzumiUrl,t,r,o,e.onTakeover),BEe(n,s,t,r,o,e.onTakeover,e.beforeReadExistingLock,e.beforeReplaceStaleLock);let a=()=>AJ(n,s,r),d=setInterval(a,DJ);return d.unref(),{path:n,record:s,heartbeat:a,release:()=>{clearInterval(d),FJ(n,s)}}}function AJ(e,n,t){try{let r=Ub(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`;FEe(i,`${JSON.stringify(o,null,2)}
1513
+ `),V=F.map(Z=>Z.parsed.spooled_at).filter(Z=>typeof Z=="string"),G={bundle_name:"runner-diagnostics-spool",exported_at:new Date(a()).toISOString(),idempotency_key:E,diagnostics:{kind:"runner_diagnostic_log",spool_batch:!0,idempotency_key:E,entry_count:F.length,...V.length===0?{}:{first_spooled_at:V[0],last_spooled_at:V[V.length-1]}},telemetry_ndjson:N};try{await S(G)}catch(Z){l("runner_diagnostics.spool_upload_failed",{file:P,remaining_batches:p().length,error:Z instanceof Error?Z.message:String(Z)});break}R+=1,T+=F.length;try{wJ(P)}catch(Z){l("runner_diagnostics.spool_delete_failed",{file:P,error:Z instanceof Error?Z.message:String(Z)})}}}catch(M){l("runner_diagnostics.spool_drain_failed",{error:M instanceof Error?M.message:String(M)})}finally{c=!1}return{uploadedBatches:R,uploadedEntries:T,remainingBatches:p().length,skipped:!1}},pendingBatchFiles:p}}var SEe,kEe,CEe,TEe,PEe,vJ,REe,EEe,kJ=q(()=>{"use strict";Cx();SEe=32*1024*1024,kEe=10080*60*1e3,CEe=4*1024*1024,TEe=1024*1024,PEe="spool.jsonl",vJ=/^batch-(\d{1,16})-[0-9a-f-]+\.jsonl$/;REe=/\b([A-Z][A-Z0-9_]{1,})=("[^"\n]*"|'[^'\n]*'|[^\s"'`;,)\]}]+)/g,EEe=/(?:\/(?:[A-Za-z0-9._@~+-]|%[0-9A-Fa-f]{2})+){2,}/g});var Vt,yR,wa=q(()=>{"use strict";Vt="1.0.175",yR=`linzumi ${Vt}`});import{closeSync as TJ,existsSync as xR,mkdirSync as $Ee,openSync as PJ,readFileSync as IJ,renameSync as LEe,unlinkSync as Xd,writeFileSync as FEe,writeSync as RJ}from"node:fs";import{dirname as EJ,join as jEe}from"node:path";function bR(e){return e instanceof Ds||e instanceof Error&&e.name===MJ&&"lockPath"in e&&"heldBy"in e}function wR(e,n=et(),t){let r=t===void 0?encodeURIComponent(e):Jd(t);return jEe(EJ(n),"runners",`${r}.lock`)}function Nb(e){let n=wR(e.machineId,e.configPath,e.linzumiUrl),t=e.isPidAlive??qJ,r=e.now??(()=>new Date),o=e.killPid??QEe,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:zn(e.linzumiUrl)},...e.launchSource===void 0?{}:{launchSource:e.launchSource},startedAt:i,heartbeatAt:i,cliVersion:e.cliVersion??Vt,...e.gracefulUpdateDrain===!0?{gracefulUpdateDrain:!0}:{}};UEe(e.machineId,e.configPath,e.linzumiUrl,t,r,o,e.onTakeover),BEe(n,s,t,r,o,e.onTakeover,e.beforeReadExistingLock,e.beforeReplaceStaleLock);let a=()=>AJ(n,s,r),d=setInterval(a,DJ);return d.unref(),{path:n,record:s,heartbeat:a,release:()=>{clearInterval(d),FJ(n,s)}}}function AJ(e,n,t){try{let r=Ub(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`;FEe(i,`${JSON.stringify(o,null,2)}
1514
1514
  `,"utf8"),LEe(i,e)}catch{}}function Yd(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>qEe?{state:"wedged",reason:e.heartbeatAt===void 0?"missing_heartbeat":"stale_heartbeat"}:{state:"live"}}function OJ(e,n,t,r){return t!==zb||e.launchSource!==zb?!1:r.state!=="live"?!0:NEe(n,e.cliVersion)>0}function NEe(e,n){let t=CJ(e),r=CJ(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:zEe(t.prerelease,r.prerelease)}function CJ(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=[_R(i[0]),_R(i[1]),_R(i[2])],a=o===""?[]:o.split(".").filter(d=>d!=="");return{core:s,prerelease:a}}function _R(e){let n=Number.parseInt(e??"",10);return Number.isInteger(n)&&n>=0?n:0}function zEe(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 $J(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 UEe(e,n,t,r,o,i,s){if(t===void 0||kr(t)!==kr(Xt))return;let a=wR(e,n),d=Ub(a);if(d!==void 0){if(Yd(d,r,o).state==="live")throw new Ds(a,d);LJ(a,r,()=>{let u=xR(a)?vR(a):void 0;if(u===void 0)return;let c=Yd(u,r,o);if(c.state==="live")throw new Ds(a,u);c.state==="wedged"&&$J(a,u,c.reason,i,s),Xd(a)})}}function BEe(e,n,t,r,o,i,s,a){if(qb(e,n))return;s?.();let d=Ub(e);if(d===void 0){if(qb(e,n))return;throw new Error(`another Linzumi runner lock appeared while starting: ${e}`)}if(Yd(d,t,r).state==="live")throw new Ds(e,d);a?.(),LJ(e,t,()=>{let u=xR(e)?vR(e):void 0;if(u!==void 0){let c=Yd(u,t,r);if(c.state==="live")throw new Ds(e,u);c.state==="wedged"&&$J(e,u,c.reason,o,i),Xd(e)}if(!qb(e,n))throw new Error(`another Linzumi runner lock appeared while starting: ${e}`)})}function qb(e,n){$Ee(EJ(e),{recursive:!0});try{let t=PJ(e,"wx");try{RJ(t,`${JSON.stringify(n,null,2)}
1515
1515
  `)}finally{TJ(t)}return!0}catch(t){if(Il(t,"EEXIST"))return!1;throw t}}function LJ(e,n,t){let r=`${e}.replace`;for(;;)try{let o=PJ(r,"wx");try{RJ(o,`${process.pid}
1516
1516
  `),t()}finally{TJ(o),Xd(r)}return}catch(o){if(Il(o,"EEXIST")){let i=JEe(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(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@linzumi/cli",
3
- "version": "1.0.174",
3
+ "version": "1.0.175",
4
4
  "description": "Linzumi CLI \u2014 point a Codex agent at the real code on your laptop, with your team watching and steering from shared threads.",
5
5
  "type": "module",
6
6
  "bin": {