@linzumi/cli 1.0.147 → 1.0.148
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/impl-res/index.js +1 -1
- package/dist/impl-ts/index.js +1 -1
- package/package.json +1 -1
- package/scripts/bump-cli-version.mjs +2 -2
package/README.md
CHANGED
package/dist/impl-res/index.js
CHANGED
|
@@ -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),XV(r)}clear(){this._buffer=void 0}};function XV(e){return aA.parse(JSON.parse(e))}function BE(e){return JSON.stringify(e)+`
|
|
322
322
|
`}var Pm=class{constructor(t=KE.stdin,r=KE.stdout){this._stdin=t,this._stdout=r,this._readBuffer=new Em,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=BE(t);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};function e4(e){let t={};t.listChanged=!1;let r={};r.resources=t,e.server.registerCapabilities(r),e.server.setRequestHandler(Xs,()=>{let n={};return n.resources=[],n}),e.server.setRequestHandler(Qs,()=>{let n={};return n.resourceTemplates=[],n})}function t4(e){return{registerTool:(t,r,n,i)=>{e.tool(t,r,n,i)}}}async function vv(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=V0(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 gk(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 Sv(e,t){let r=wr(e,"token");return{serviceUrl:t,explicitToken:r!==void 0?r:process.env.LINZUMI_MCP_ACCESS_TOKEN,authFilePath:wr(e,"auth-file"),delegationAuthFilePath:wr(e,"delegation-auth-file"),workspaceSlug:wr(e,"workspace"),channelSlug:wr(e,"channel")}}async function r4(e){let t=ac(e);if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=t._0;if(sc(r,"help"))return aa(uc()),{TAG:"Ok",_0:void 0};let n=lc(r,"api-url");if(n.TAG!=="Ok")return{TAG:"Error",_0:n._0};let i=n._0,o=await vv(Sv(r,i));if(o.TAG!=="Ok")return{TAG:"Error",_0:o._0};let a=o._0,s=dc(wr(r,"mode")),l=Up(wr(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=wr(r,"owner-username"),c=u!==void 0?u:process.env.LINZUMI_MCP_OWNER_USERNAME,f=wr(r,"cwd"),p=f!==void 0?f:process.cwd(),m=wr(r,"thread-id"),h=m!==void 0?m:process.env[$k],_=Bh({serviceUrl:i,accessToken:a.accessToken,authMode:a.mode,operatingMode:d});if(_.TAG!=="Ok")return{TAG:"Error",_0:_._0};let g=new Cm({name:"linzumi",version:"0.1.0"});return e4(g),lx(t4(g),{client:_._0,toolScope:l._0,operatingMode:d,cwd:p,serviceUrl:i,defaultThreadId:h,ownerUsername:c,agentSession:sc(r,"agent-session"),devServices:tx(process.env)}),await g.connect(new Pm),{TAG:"Ok",_0:void 0}}async function n4(e){let t=ac(e);if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=t._0,n=lc(r,"api-url");if(n.TAG!=="Ok")return{TAG:"Error",_0:n._0};let i=n._0,o=wr(r,"format"),a=o!==void 0?o:"codex",s=dc(wr(r,"mode"));if(s.TAG!=="Ok")return{TAG:"Error",_0:s._0};let l;if(sc(r,"include-token")){let f=await vv(Sv(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=Up(wr(r,"tool-scope"));if(d.TAG!=="Ok")return{TAG:"Error",_0:d._0};let u=wr(r,"owner-username"),c=Zs({command:wr(r,"command"),serviceUrl:i,accessToken:l._0,delegationAuthFilePath:wr(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 aa(fx(c)),{TAG:"Ok",_0:void 0};case"codex":return aa(mx(c)),{TAG:"Ok",_0:void 0};default:return{TAG:"Error",_0:"--format must be codex or claude-code"}}}async function i4(e){let t=ac(e);if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=t._0,n=lc(r,"api-url");if(n.TAG!=="Ok")return{TAG:"Error",_0:n._0};let i=n._0,o=await vv(Sv(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 Ms(i,a.accessToken,wr(r,"workspace"),wr(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=dc(wr(r,"mode"));if(d.TAG==="Ok"){let u=Bh({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=ee(c);l={TAG:"Error",_0:gs(f)}}else l={TAG:"Error",_0:u._0}}else l={TAG:"Error",_0:d._0}}return l.TAG!=="Ok"?{TAG:"Error",_0:l._0}:(aa(`Linzumi MCP auth OK
|
|
323
323
|
`),{TAG:"Ok",_0:void 0})}async function JE(e){let t=e.slice(1),r=e[0];if(r!==void 0)switch(r){case"--help":case"-h":return aa(uc()),{TAG:"Ok",_0:void 0};case"config":return await n4(t);case"doctor":return await i4(t);case"server":return await r4(t);default:return{TAG:"Error",_0:"unknown linzumi mcp command: "+r}}else return aa(uc()),{TAG:"Ok",_0:void 0}}import*as QE from"node:fs";import*as eP from"node:url";import*as un from"node:path";import*as tP from"node:module";var a4=[["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 rP(e,t){return G(a4.find(r=>r[0]===e?r[1]===t:!1),r=>r[2])}function s4(e){try{return tP.createRequire(import.meta.url).resolve(e)}catch{return}}function l4(e){let t=hs(e);return t.TAG==="Ok"?t._0:[]}function Rm(){return{platform:process.platform,arch:process.arch,fileExists:e=>QE.existsSync(e),listDirectory:l4,resolveModulePath:s4,moduleDir:un.dirname(eP.fileURLToPath(import.meta.url))}}function nP(e,t,r){let n=t;for(;;){let i=n,o=un.join(...[i,"node_modules"].concat(e.split("/")));if(r(un.join(o,"package.json")))return o;let a=un.dirname(i);if(a===i)return;n=a}}function wv(e,t){let r=t.resolveModulePath(e+"/package.json");return r!==void 0?un.dirname(r):nP(e,t.moduleDir,t.fileExists)}function d4(e,t,r){let i=r.platform==="win32"?"codex.exe":"codex",o=un.join(e,t),s=[un.join(o,"codex",i),un.join(o,"bin",i),un.join(o,i)].find(l=>r.fileExists(l));return s!==void 0?s:r.listDirectory(o).map(l=>un.join(o,l,i)).find(l=>r.fileExists(l))}function u4(e){let t=rP(e.platform,e.arch);if(t===void 0)return;let r=[],n=wv(t.packageName,e);n!==void 0&&r.push(un.join(n,"vendor"));let i=wv("@openai/codex",e);return i!==void 0&&r.push(un.join(i,"vendor")),Ve(r,void 0,(o,a)=>o!==void 0?o:d4(a,t.triple,e))}function c4(e){let t=wv("@openai/codex",e);if(t===void 0)return;let r=Qt(un.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 f4=new RegExp("(\\d+\\.\\d+\\.\\d+)");function Im(e){let t=_s(e,["--version"],1e4,1048576);if(t.TAG!=="Ok")return;let r=f4.exec(t._0);if(r!=null)return k(r.slice(1)[0],n=>n)}function m4(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 p4(e){switch(e.TAG){case"Match":return"match";case"Mismatch":return"mismatch";case"Unverified":return"unverified"}}var kv="LINZUMI_ALLOW_HARNESS_MISMATCH",YE={contents:!1};var h4="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 _4(e){if(!YE.contents)return YE.contents=!0,e(h4)}function XE(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 "+kv+"=1 to accept the skew.")}function g4(e,t){return"Warning: proceeding with the PATH codex "+e+" despite the CLI pinning engine "+t+" ("+kv+`=1). Engine/CLI version skew can break the wire protocol.
|
|
324
|
-
`}function y4(e,t){}function $m(e,t,r,n,i,o){let a=o!==void 0?o:y4;if(e!==void 0)return{TAG:"Ok",_0:{codexBin:e,source:"ExplicitFlag"}};let s=u4(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"}}}_4(r);let l=c4(t),d=l!==void 0?n("codex"):void 0,u=m4(d,l),c={};switch(c.codex_bin_path="codex",c.codex_bin_source="path-fallback",c.harness_version_check=p4(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=rn(u.pathVersion,null,f=>f),c.pinned_harness_version=rn(u.pinnedVersion,null,f=>f);break}switch(a("codex.binary.resolved",c),u.TAG){case"Mismatch":let f=u.pinnedVersion,p=u.pathVersion,m=i[kv];return m===void 0?{TAG:"Error",_0:XE(p,f)}:m!=="1"?{TAG:"Error",_0:XE(p,f)}:(r(g4(p,f)),{TAG:"Ok",_0:{codexBin:"codex",source:"PathFallback"}});case"Match":case"Unverified":return{TAG:"Ok",_0:{codexBin:"codex",source:"PathFallback"}}}}function iP(e){if(typeof e=="number"&&e%1===0)return e}function b4(e){if(typeof e=="string")return e}function v4(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(v4(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 wu(e){let t=oP(e);if(t===void 0)return{actorUserId:void 0,actorUsername:void 0};let r=iP(t.actor_id);return{actorUserId:r!==void 0?r:iP(t.sub),actorUsername:b4(t.actor_username)}}function aP(e){let t=k(oP(e),n=>n.workspace_scope),r=t!==void 0?Array.isArray(t)?$e(t,n=>{if(typeof n=="string"&&n.trim()!=="")return n}):[]:[];if(r.length===1)return r[0]}var Av=[["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_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_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"]],sP=[["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"]],Mm=[["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"]],Ov=[["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 ku(){return x("1.0.147","0.0.0-unbundled")}function Ev(){return"linzumi "+x("1.0.147","0.0.0-unbundled")}function bl(e,t){let r=e.indexOf(t);if(r!==-1)return r}function Pv(){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 Rv(e){let t={};return e.forEach(r=>{t[r[0]]=r[1]}),t}function S4(e){let t={};return e.forEach(r=>{t[r[1]]=r[0]}),t}var uP=Rv(sP),cP=Rv(Mm),w4=Rv(Ov),k4=S4(Ov);function x4(e){return e.endsWith("_canonical")?!0:e.endsWith("_legacy")}function fP(e,t){return t>=32?e:Array.isArray(e)?e.map(r=>fP(r,t+1|0)):e===null?e:typeof e==="object"?mP(e,t):e}function mP(e,t){let r=Object.keys(e),n={};return r.forEach(i=>{let o=e[i];if(o!==void 0){n[i]=fP(o,t+1|0);return}}),r.forEach(i=>{if(x4(i))return;let o=n[i];if(o===void 0)return;let a=uP[i];if(a!==void 0)n[a]=o;else{let c=cP[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=w4[s];if(l!==void 0){if(n[i+"_canonical"]!==void 0)return;n[i+"_canonical"]=l;return}let d=k4[s];if(!(d===void 0||n[i+"_legacy"]!==void 0)){n[i+"_legacy"]=d;return}}),n}function jm(e){return Pv()?mP(e,0):e}function pP(e){let t=e.slice();return e.forEach(r=>{let n=uP[r];n!==void 0&&!t.includes(n)&&t.push(n);let i=cP[r];if(i!==void 0&&!t.includes(i)){t.push(i);return}}),t}var vl="<SENSITIVE_DATA>",T4=pP(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"]),A4=["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"],O4=new RegExp("^(authorization|cookie|set-cookie|password)$","i"),C4=new RegExp("(^|[_-])(access[_-]?token|api[_-]?key|auth[_-]?token|oauth[_-]?code|refresh[_-]?token|secret|token)$","i"),E4=new RegExp("\\beyJ[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b","g");function P4(e){return e!==void 0?O4.test(e)?!0:C4.test(e):!1}function hP(e){let t={contents:!1};return Gw(e).forEach(r=>{if(T4.includes(r.toLowerCase())){e.set(r,vl),t.contents=!0;return}}),t.contents}function R4(e){let t=bl(e,"?"),r=bl(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 hP(a)?n+"?"+a.toString()+o:e}function I4(e){let t=Ln(e);if(t===void 0)return R4(e);let r=ue(t);return hP(r.searchParams),r.toString()}function _P(e){return I4(e).replace(E4,vl)}function $4(e){let t=bl(e,"=");return t!==void 0?[e.slice(0,t),e.slice(t+1|0)]:[e,void 0]}function $v(e,t){if(P4(t))return vl;if(Array.isArray(e))return t==="args"?M4(e):e.map(r=>$v(r,void 0));if(e===null)return e;switch(typeof e){case"string":return _P(e);case"object":return gP(e);default:return e}}function M4(e){let t={contents:!1};return e.map(r=>{if(typeof r=="string"){if(t.contents)return t.contents=!1,vl;let n=$4(r),i=n[0];return A4.includes(i)?n[1]!==void 0?i+"="+vl:(t.contents=!0,r):_P(r)}return t.contents=!1,$v(r,void 0)})}function gP(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"?vl:$v(o[1],a);return}}),i}var zm=gP;import*as ta from"node:os";import*as jp from"node:path";import*as gw from"node:crypto";function jn(e){let t=parseFloat(e);if(!Number.isNaN(t))return t}function bP(e){return"local_runner:"+e}var j4="kandan-local-codex-runner",z4="rescript";function vP(e){let t={};t.clientName=j4,t.clientId=e.clientId;let r=e.machineFingerprint;t.machineFingerprint=r!==void 0?r:null,Object.entries(ck(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=z4,t}function SP(e,t,r){let n={};return n.last_seq=r,t!==void 0&&(n.runner_id=e,n.thread_id=t),n}function zn(e,t){return e.catch(r=>t(ee(r)))}function kP(){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 xP(e){return import(e)}var G4="@anthropic-ai/claude-agent-sdk";function TP(e){return kP()}function F4(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 AP(){let e=await xP(G4);return{query:t=>F4(e.query(t)),getSessionInfo:(t,r)=>e.getSessionInfo(t,r),listSessions:t=>e.listSessions(t),getSessionMessages:(t,r)=>e.getSessionMessages(t,r)}}var Mv=["codex","claude-code","pi","opencode"];function Ya(e){return e}function Nm(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 D4(e){switch(e){case"SocketOpen":return"open";case"SocketMessage":return"message";case"SocketClose":return"close";case"SocketError":return"error"}}function q4(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 L4(e){return{readyState:()=>e.readyState,send:t=>{e.send(t)},close:()=>{e.close()},on:(t,r)=>{e.addEventListener(D4(t),n=>r(q4(n)),{})}}}function Gm(e,t){return L4(new WebSocket(e,t))}var CP=0,Xa=1;var jv="file",zv=["mcp_oauth_credentials_store","cli_auth_credentials_store"],U4=zv.flatMap(e=>["-c",e+'="'+jv+'"']),W4=["-c","features.apps=false"];function po(e){return JSON.stringify(e)}function Z4(e){let t=(r,n)=>r!==void 0?Object.entries(r).flatMap(i=>["-c","model_providers."+e.id+"."+n+"."+i[0]+"="+po(i[1])]):[];return[["-c","model_providers."+e.id+".name="+po(e.name),"-c","model_providers."+e.id+".base_url="+po(e.baseUrl),"-c","model_providers."+e.id+".env_key="+po(e.envKey),"-c","model_providers."+e.id+".wire_api="+po(e.wireApi)],t(e.httpHeaders,"http_headers"),t(e.envHttpHeaders,"env_http_headers"),["-c","model_provider="+po(e.id)]].flat()}function V4(e){let t=e.model,r=e.reasoningEffort,n=e.modelProvider;return[W4,U4,t!==void 0?["-c","model="+po(t)]:[],r!==void 0?["-c","model_reasoning_effort="+po(r)]:[],e.fast?["-c","service_tier="+po("fast")]:[],e.mcpConfigArgs.flat(),n!==void 0?Z4(n):[]].flat()}function PP(e,t){return[["app-server"],V4(t),["--listen",e]].flat()}var H4=["LINZUMI_MCP_ACCESS_TOKEN","LINZUMI_MCP_OWNER_USERNAME"];function RP(e,t,r){let n=r?Object.fromEntries(Object.entries(e)):{};return H4.forEach(i=>fr(n,i)),t.forEach(i=>{let o=i[1],a=i[0];if(o!==void 0){n[a]=o;return}else return fr(n,a)}),n}var IP=["ignore","pipe","pipe"];function $P(e){let t=e.length;return t>12e3?e.slice(t-12e3|0,t):e}function MP(e,t,r){return r<3&&e.includes("codex app-server exited before readyz")&&t.includes("EADDRINUSE")?t.includes("listen"):!1}function jP(e){let t=Ln(e);if(t===void 0)return;let r=ue(t),i=r.protocol==="wss:"?"https:":"http:";return r.protocol=i,r.pathname="/readyz",r.search="",r.hash="",r.toString()}var B4="kandan-local-codex-runner",K4="0.0.1";function zP(){return Object.fromEntries([["clientInfo",Object.fromEntries([["name",B4],["version",K4]])],["capabilities",Object.fromEntries([["experimentalApi",!0]])]])}var J4=new RegExp("\\bsession\\b.+\\bis archived\\b","i");function NP(e){return J4.test(e)}var Y4=new RegExp("^thread not found(?:\\s*:|\\b)","i");function GP(e){return Y4.test(e.trim())}var FP=2e3;function X4(e){try{e.unref();return}catch{return}}var DP="codex app-server websocket closed",Q4="codex app-server websocket is not open";function eH(e){let t=e.method;if(typeof t=="string")return t}function Nv(e){let t=e.error;if(t===void 0)return{TAG:"ResultReply",_0:x(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 Dm(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=ee(o);return{TAG:"Error",_0:Ne(a).message}}}function WP(e,t,r){try{return t(r)}catch(n){let i=ee(n);return e("codex.notification_callback_failed",Object.fromEntries([["purpose","codex.app_server"],["method",r.method],["message",Ne(i).message]]))}}function qP(e,t,r){try{return t(r)}catch(n){let i=ee(n);return e("codex.close_callback_failed",Object.fromEntries([["purpose","codex.app_server"],["message",Ne(i).message]]))}}function tH(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 rH(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(;mn(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 p=ee(f);a={TAG:"Error",_0:[-32e3,Ne(p).message]}}u===1&&c!==void 0&&(a={TAG:"Ok",_0:c})}s=s+1|0}let l=x(a,i);Dm(t,r,"outgoing",tH(n.id,l))}function nH(e,t,r,n,i){let o;try{o=JSON.parse(i)}catch(p){let m=ee(p);r("codex.app_server_frame_malformed",Object.fromEntries([["purpose","codex.app_server"],["message",Ne(m).message],["payload",i.slice(0,512)],["payloadChars",i.length]])),o=void 0}let a;if(o!==void 0){let p=0;typeof o=="object"&&o!==null&&!Array.isArray(o)?a=o:p=1,p===1&&(r("codex.app_server_frame_malformed",Object.fromEntries([["purpose","codex.app_server"],["message","codex app-server sent non-object JSON-RPC message"],["payload",i.slice(0,512)],["payloadChars",i.length]])),a=void 0)}else a=void 0;if(a===void 0)return;let s=Dt(a.id),l=s&&(Dt(a.result)||Dt(a.error)),d=eH(a);if(l){let p=x(a.id,null),m=JSON.stringify(p),h=e.pending[m];return h!==void 0?(fr(e.pending,m),h.resolvePending({TAG:"Ok",_0:Nv(a)})):void 0}if(s)if(d!==void 0){zn(rH(e,t,n,{id:x(a.id,null),method:d,params:a.params}),p=>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(p=>WP(r,p,c)):e.pendingNotifications.push(c)}function iH(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 LP(e,t){return Object.fromEntries(t!==void 0?[["jsonrpc","2.0"],["method",e],["params",t]]:[["jsonrpc","2.0"],["method",e]])}function UP(e,t,r,n,i,o){return t.socket.readyState()===Xa?new Promise((a,s)=>{e.pending[JSON.stringify(n)]={resolvePending:a};let l=Dm(t,r,"request",iH(n,i,o));l.TAG!=="Ok"&&(fr(e.pending,JSON.stringify(n)),a({TAG:"Error",_0:l._0}))}):Promise.resolve({TAG:"Error",_0:Q4})}async function qm(e,t,r,n){let i=t!==void 0?t:u=>({socket:Gm(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(;mn(l);){let u;try{u={TAG:"Ok",_0:i(e)}}catch(c){let f=ee(c);u={TAG:"Error",_0:Ne(f).message}}if(u.TAG==="Ok"){let c=u._0;if(await new Promise((f,p)=>{c.socket.on("SocketOpen",m=>f(!0)),c.socket.on("SocketError",m=>f(!1))}))l={TAG:"Ok",_0:c};else{try{c.socket.close()}catch{}a()>s&&(l={TAG:"Error",_0:d})}}else d=u._0,a()>s&&(l={TAG:"Error",_0:d})}return x(l,{TAG:"Error",_0:d})}async function Lm(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()===Xa)try{return d()}catch{return}},t.keepaliveIntervalMs);X4(o);let a=d=>{clearInterval(o);let u=Object.entries(r.pending);if(Object.entries(r.pending).forEach(p=>fr(r.pending,p[0])),u.forEach(p=>p[1].resolvePending({TAG:"Error",_0:d})),r.closeError!==void 0)return;r.closeError=d;let f=r.closeCallbacks.slice();r.closeCallbacks.splice(0,r.closeCallbacks.length),f.forEach(p=>qP(n,p,d))};e.socket.on("SocketClose",d=>a(DP)),e.socket.on("SocketError",d=>a(DP)),e.socket.on("SocketMessage",d=>{let u=d.data;if(u!==void 0)return i("incoming",u),nH(r,e,n,i,u)});let s=await UP(r,e,i,"initialize","initialize",zP());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}:(Dm(e,i,"outgoing",LP("initialized",void 0)),{TAG:"Ok",_0:{request:(d,u)=>{let c=r.nextId;return r.nextId=r.nextId+1|0,UP(r,e,i,c,d,u)},notify:(d,u)=>{Dm(e,i,"outgoing",LP(d,u))},onNotification:d=>{r.notificationCallbacks.push(d);let u=r.pendingNotifications.slice();r.pendingNotifications.splice(0,r.pendingNotifications.length),u.forEach(c=>WP(n,d,c))},onRequest:d=>{r.requestCallbacks.push(d)},onClose:d=>{let u=r.closeError;if(u!==void 0)return qP(n,d,u);r.closeCallbacks.push(d)},isClosed:()=>Dt(r.closeError),close:()=>{clearInterval(o);try{return e.socket.close()}catch{return}}}})}function xl(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 kl(e){if(e!==void 0&&typeof e=="number"&&Ot(e))return e}function ZP(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}var VP="linzumi_thread_codex_worker_ready",HP="linzumi_thread_codex_worker_session_closed",BP="linzumi_thread_codex_worker_request",KP="linzumi_thread_codex_worker_notify",qv="linzumi_thread_codex_worker_response",JP="linzumi_thread_codex_worker_notification",YP="linzumi_thread_codex_worker_server_request",XP="linzumi_thread_codex_worker_server_request_response";function QP(e,t){let r={};return r.type=VP,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 eR(e,t){let r={};return r.type=HP,r.kandanThreadId=e,r.reason=t,r}function oH(e,t,r){let n={};return n.type=BP,n.id=e,n.method=t,r!==void 0&&(n.params=r),n}function aH(e,t){let r={};return r.type=KP,r.method=e,t!==void 0&&(r.params=t),r}function sH(e,t){let r={};return r.type=qv,r.id=e,r.response=t,r}function lH(e,t){let r={};return r.type=qv,r.id=e,r.error=t,r}function dH(e){let t={};return t.type=JP,t.notification=e,t}function uH(e,t){let r={};return r.type=YP,r.id=e,r.request=t,r}function Fv(e,t,r){let n={};return n.type=XP,n.id=e,t!==void 0&&(n.result=t),r!==void 0&&(n.error=r),n}function cH(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 fH(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 mH(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 pH(e){let t=xl(e);if(t===void 0)return;let r=t.type;if(r===void 0||typeof r!="string")return;if(r===BP){let i=kl(t.id),o=Li(t.method);return i!==void 0&&o!==void 0?{TAG:"ParentRequest",id:i,method_:o,params:ZP(t.params)}:void 0}if(r===KP){let i=Li(t.method);return i!==void 0?{TAG:"ParentNotify",method_:i,params:ZP(t.params)}:void 0}if(r!==XP)return;let n=kl(t.id);if(n!==void 0)return{TAG:"ParentServerRequestResponse",id:n,result:t.result,error:Li(t.error)}}function hH(e){let t=xl(e);if(t===void 0)return;let r=t.type;if(r===void 0||typeof r!="string")return;if(r===qv){let o=kl(t.id);return o!==void 0?{TAG:"ChildResponse",id:o,response:cH(t.response),error:Li(t.error)}:void 0}if(r===JP){let o=fH(t.notification);return o!==void 0?{TAG:"ChildNotification",notification:o}:void 0}if(r!==YP)return;let n=kl(t.id),i=mH(t.request);if(n!==void 0&&i!==void 0)return{TAG:"ChildServerRequest",id:n,request:i}}function tR(e){let t=xl(e);if(t===void 0)return;let r=t.type;if(typeof r=="string"&&r===HP)return[x(Li(t.kandanThreadId),""),x(Li(t.reason),"")]}var _H="thread Codex worker reported invalid ready payload";function gH(e){let t=Li(e);if(t!==void 0)switch(t){case"claude-code":return"claude-code";case"codex":return"codex";default:return}}function yH(e){return e!==void 0?Array.isArray(e)?$e(e,t=>{let r=xl(t);if(r===void 0)return;let n=kl(r.port);if(n!==void 0&&n>=1&&n<=65535)return{port:n,pid:kl(r.pid),processName:Li(r.processName),processIconKey:Li(r.processIconKey),agentProvider:gH(r.agentProvider)}}):[]:[]}function rR(e,t){let r=xl(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!==VP)return{TAG:"Ok",_0:void 0};let i=Li(r.kandanThreadId);return i!==void 0&&i===t?{TAG:"Ok",_0:{kandanThreadId:i,commanderManagedPorts:yH(r.commanderManagedPorts)}}:{TAG:"Error",_0:_H}}function nR(e,t){}var iR="linzumi.thread_runner",bH="thread Codex worker requires a codex client with onRequest",Dv="thread Codex worker IPC channel closed";function oR(e,t,r){let n=r!==void 0?r:nR,i=e.onRequest;if(i===void 0)return{TAG:"Error",_0:bH};let o=new Map,a={contents:1},s={contents:!1},l=u=>{if(s.contents)return;s.contents=!0;let c={};c.purpose=iR,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 p=c(u);if(p.TAG!=="Ok")return l(p._0)};return t.onMessage(u=>{let c=pH(u);if(c!==void 0)switch(c.TAG){case"ParentRequest":let f=c.id;e.request(c.method_,c.params).then(_=>_.TAG==="Ok"?d(sH(f,_._0)):d(lH(f,_._0)));return;case"ParentNotify":return e.notify(c.method_,c.params);case"ParentServerRequestResponse":let p=c.error,m=c.id,h=o.get(m);return h!==void 0?(o.delete(m),h(p!==void 0?{TAG:"Error",_0:p}:{TAG:"Ok",_0:c.result})):void 0}}),e.onNotification(u=>d(dH(u))),i(u=>new Promise((c,f)=>{let p=a.contents;a.contents=p+1,o.set(p,c),d(uH(p,u))})),t.onceDisconnect(()=>{o.forEach(u=>u({TAG:"Error",_0:Dv})),o.clear()}),{TAG:"Ok",_0:void 0}}var vH="thread Codex worker IPC client is closed",SH="thread Codex worker response missing body",wH="thread Codex worker IPC client closed";async function kH(e,t,r,n,i,o){let a=d=>{let u=e(d);if(u.TAG==="Ok")return;let c={};c.purpose=iR,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(Fv(t,c,void 0)))}else s=!0,a(Fv(t,void 0,u._0))}l=l+1|0}if(!s)return a(Fv(t,void 0,"unhandled Codex app-server request: "+n))}function xH(e){let t=xl(e);if(t===void 0)return"";let r=t.method;return typeof r=="string"?r:""}function aR(e,t){let r=t!==void 0?t:nR,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:vH};let g=e.send,b=e.isConnected();return g!==void 0&&b?g(_):{TAG:"Error",_0:Dv}},c=_=>{let g=hH(_);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:SH})):void 0;case"ChildNotification":let A=g.notification;i.length!==0?i.forEach(L=>L(A)):a.push(A);return;case"ChildServerRequest":let W=g.request;kH(u,g.id,W,xH(W),o,r);return}},f=e.onMessage(c),p=()=>{l.contents=!0,d(Dv)},m=e.onceExit(p),h=e.onceDisconnect(p);return{request:(_,g)=>new Promise((b,y)=>{let v=s.contents;s.contents=v+1,n.set(v,b);let S=u(oH(v,_,g));S.TAG!=="Ok"&&(n.delete(v),b({TAG:"Error",_0:S._0}))}),notify:(_,g)=>u(aH(_,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(),h(),d(wH)}}}import*as Bv from"node:child_process";import*as lR from"node:os";import*as dR from"node:path";function uR(){return dR.join(lR.homedir(),".linzumi","protected-dev-listeners")}var TH=new RegExp("^(\\d+)\\s+(\\d+)$");function AH(e){return $e(e.split(`
|
|
324
|
+
`}function y4(e,t){}function $m(e,t,r,n,i,o){let a=o!==void 0?o:y4;if(e!==void 0)return{TAG:"Ok",_0:{codexBin:e,source:"ExplicitFlag"}};let s=u4(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"}}}_4(r);let l=c4(t),d=l!==void 0?n("codex"):void 0,u=m4(d,l),c={};switch(c.codex_bin_path="codex",c.codex_bin_source="path-fallback",c.harness_version_check=p4(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=rn(u.pathVersion,null,f=>f),c.pinned_harness_version=rn(u.pinnedVersion,null,f=>f);break}switch(a("codex.binary.resolved",c),u.TAG){case"Mismatch":let f=u.pinnedVersion,p=u.pathVersion,m=i[kv];return m===void 0?{TAG:"Error",_0:XE(p,f)}:m!=="1"?{TAG:"Error",_0:XE(p,f)}:(r(g4(p,f)),{TAG:"Ok",_0:{codexBin:"codex",source:"PathFallback"}});case"Match":case"Unverified":return{TAG:"Ok",_0:{codexBin:"codex",source:"PathFallback"}}}}function iP(e){if(typeof e=="number"&&e%1===0)return e}function b4(e){if(typeof e=="string")return e}function v4(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(v4(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 wu(e){let t=oP(e);if(t===void 0)return{actorUserId:void 0,actorUsername:void 0};let r=iP(t.actor_id);return{actorUserId:r!==void 0?r:iP(t.sub),actorUsername:b4(t.actor_username)}}function aP(e){let t=k(oP(e),n=>n.workspace_scope),r=t!==void 0?Array.isArray(t)?$e(t,n=>{if(typeof n=="string"&&n.trim()!=="")return n}):[]:[];if(r.length===1)return r[0]}var Av=[["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_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_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"]],sP=[["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"]],Mm=[["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"]],Ov=[["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 ku(){return x("1.0.148","0.0.0-unbundled")}function Ev(){return"linzumi "+x("1.0.148","0.0.0-unbundled")}function bl(e,t){let r=e.indexOf(t);if(r!==-1)return r}function Pv(){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 Rv(e){let t={};return e.forEach(r=>{t[r[0]]=r[1]}),t}function S4(e){let t={};return e.forEach(r=>{t[r[1]]=r[0]}),t}var uP=Rv(sP),cP=Rv(Mm),w4=Rv(Ov),k4=S4(Ov);function x4(e){return e.endsWith("_canonical")?!0:e.endsWith("_legacy")}function fP(e,t){return t>=32?e:Array.isArray(e)?e.map(r=>fP(r,t+1|0)):e===null?e:typeof e==="object"?mP(e,t):e}function mP(e,t){let r=Object.keys(e),n={};return r.forEach(i=>{let o=e[i];if(o!==void 0){n[i]=fP(o,t+1|0);return}}),r.forEach(i=>{if(x4(i))return;let o=n[i];if(o===void 0)return;let a=uP[i];if(a!==void 0)n[a]=o;else{let c=cP[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=w4[s];if(l!==void 0){if(n[i+"_canonical"]!==void 0)return;n[i+"_canonical"]=l;return}let d=k4[s];if(!(d===void 0||n[i+"_legacy"]!==void 0)){n[i+"_legacy"]=d;return}}),n}function jm(e){return Pv()?mP(e,0):e}function pP(e){let t=e.slice();return e.forEach(r=>{let n=uP[r];n!==void 0&&!t.includes(n)&&t.push(n);let i=cP[r];if(i!==void 0&&!t.includes(i)){t.push(i);return}}),t}var vl="<SENSITIVE_DATA>",T4=pP(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"]),A4=["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"],O4=new RegExp("^(authorization|cookie|set-cookie|password)$","i"),C4=new RegExp("(^|[_-])(access[_-]?token|api[_-]?key|auth[_-]?token|oauth[_-]?code|refresh[_-]?token|secret|token)$","i"),E4=new RegExp("\\beyJ[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b","g");function P4(e){return e!==void 0?O4.test(e)?!0:C4.test(e):!1}function hP(e){let t={contents:!1};return Gw(e).forEach(r=>{if(T4.includes(r.toLowerCase())){e.set(r,vl),t.contents=!0;return}}),t.contents}function R4(e){let t=bl(e,"?"),r=bl(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 hP(a)?n+"?"+a.toString()+o:e}function I4(e){let t=Ln(e);if(t===void 0)return R4(e);let r=ue(t);return hP(r.searchParams),r.toString()}function _P(e){return I4(e).replace(E4,vl)}function $4(e){let t=bl(e,"=");return t!==void 0?[e.slice(0,t),e.slice(t+1|0)]:[e,void 0]}function $v(e,t){if(P4(t))return vl;if(Array.isArray(e))return t==="args"?M4(e):e.map(r=>$v(r,void 0));if(e===null)return e;switch(typeof e){case"string":return _P(e);case"object":return gP(e);default:return e}}function M4(e){let t={contents:!1};return e.map(r=>{if(typeof r=="string"){if(t.contents)return t.contents=!1,vl;let n=$4(r),i=n[0];return A4.includes(i)?n[1]!==void 0?i+"="+vl:(t.contents=!0,r):_P(r)}return t.contents=!1,$v(r,void 0)})}function gP(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"?vl:$v(o[1],a);return}}),i}var zm=gP;import*as ta from"node:os";import*as jp from"node:path";import*as gw from"node:crypto";function jn(e){let t=parseFloat(e);if(!Number.isNaN(t))return t}function bP(e){return"local_runner:"+e}var j4="kandan-local-codex-runner",z4="rescript";function vP(e){let t={};t.clientName=j4,t.clientId=e.clientId;let r=e.machineFingerprint;t.machineFingerprint=r!==void 0?r:null,Object.entries(ck(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=z4,t}function SP(e,t,r){let n={};return n.last_seq=r,t!==void 0&&(n.runner_id=e,n.thread_id=t),n}function zn(e,t){return e.catch(r=>t(ee(r)))}function kP(){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 xP(e){return import(e)}var G4="@anthropic-ai/claude-agent-sdk";function TP(e){return kP()}function F4(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 AP(){let e=await xP(G4);return{query:t=>F4(e.query(t)),getSessionInfo:(t,r)=>e.getSessionInfo(t,r),listSessions:t=>e.listSessions(t),getSessionMessages:(t,r)=>e.getSessionMessages(t,r)}}var Mv=["codex","claude-code","pi","opencode"];function Ya(e){return e}function Nm(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 D4(e){switch(e){case"SocketOpen":return"open";case"SocketMessage":return"message";case"SocketClose":return"close";case"SocketError":return"error"}}function q4(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 L4(e){return{readyState:()=>e.readyState,send:t=>{e.send(t)},close:()=>{e.close()},on:(t,r)=>{e.addEventListener(D4(t),n=>r(q4(n)),{})}}}function Gm(e,t){return L4(new WebSocket(e,t))}var CP=0,Xa=1;var jv="file",zv=["mcp_oauth_credentials_store","cli_auth_credentials_store"],U4=zv.flatMap(e=>["-c",e+'="'+jv+'"']),W4=["-c","features.apps=false"];function po(e){return JSON.stringify(e)}function Z4(e){let t=(r,n)=>r!==void 0?Object.entries(r).flatMap(i=>["-c","model_providers."+e.id+"."+n+"."+i[0]+"="+po(i[1])]):[];return[["-c","model_providers."+e.id+".name="+po(e.name),"-c","model_providers."+e.id+".base_url="+po(e.baseUrl),"-c","model_providers."+e.id+".env_key="+po(e.envKey),"-c","model_providers."+e.id+".wire_api="+po(e.wireApi)],t(e.httpHeaders,"http_headers"),t(e.envHttpHeaders,"env_http_headers"),["-c","model_provider="+po(e.id)]].flat()}function V4(e){let t=e.model,r=e.reasoningEffort,n=e.modelProvider;return[W4,U4,t!==void 0?["-c","model="+po(t)]:[],r!==void 0?["-c","model_reasoning_effort="+po(r)]:[],e.fast?["-c","service_tier="+po("fast")]:[],e.mcpConfigArgs.flat(),n!==void 0?Z4(n):[]].flat()}function PP(e,t){return[["app-server"],V4(t),["--listen",e]].flat()}var H4=["LINZUMI_MCP_ACCESS_TOKEN","LINZUMI_MCP_OWNER_USERNAME"];function RP(e,t,r){let n=r?Object.fromEntries(Object.entries(e)):{};return H4.forEach(i=>fr(n,i)),t.forEach(i=>{let o=i[1],a=i[0];if(o!==void 0){n[a]=o;return}else return fr(n,a)}),n}var IP=["ignore","pipe","pipe"];function $P(e){let t=e.length;return t>12e3?e.slice(t-12e3|0,t):e}function MP(e,t,r){return r<3&&e.includes("codex app-server exited before readyz")&&t.includes("EADDRINUSE")?t.includes("listen"):!1}function jP(e){let t=Ln(e);if(t===void 0)return;let r=ue(t),i=r.protocol==="wss:"?"https:":"http:";return r.protocol=i,r.pathname="/readyz",r.search="",r.hash="",r.toString()}var B4="kandan-local-codex-runner",K4="0.0.1";function zP(){return Object.fromEntries([["clientInfo",Object.fromEntries([["name",B4],["version",K4]])],["capabilities",Object.fromEntries([["experimentalApi",!0]])]])}var J4=new RegExp("\\bsession\\b.+\\bis archived\\b","i");function NP(e){return J4.test(e)}var Y4=new RegExp("^thread not found(?:\\s*:|\\b)","i");function GP(e){return Y4.test(e.trim())}var FP=2e3;function X4(e){try{e.unref();return}catch{return}}var DP="codex app-server websocket closed",Q4="codex app-server websocket is not open";function eH(e){let t=e.method;if(typeof t=="string")return t}function Nv(e){let t=e.error;if(t===void 0)return{TAG:"ResultReply",_0:x(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 Dm(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=ee(o);return{TAG:"Error",_0:Ne(a).message}}}function WP(e,t,r){try{return t(r)}catch(n){let i=ee(n);return e("codex.notification_callback_failed",Object.fromEntries([["purpose","codex.app_server"],["method",r.method],["message",Ne(i).message]]))}}function qP(e,t,r){try{return t(r)}catch(n){let i=ee(n);return e("codex.close_callback_failed",Object.fromEntries([["purpose","codex.app_server"],["message",Ne(i).message]]))}}function tH(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 rH(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(;mn(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 p=ee(f);a={TAG:"Error",_0:[-32e3,Ne(p).message]}}u===1&&c!==void 0&&(a={TAG:"Ok",_0:c})}s=s+1|0}let l=x(a,i);Dm(t,r,"outgoing",tH(n.id,l))}function nH(e,t,r,n,i){let o;try{o=JSON.parse(i)}catch(p){let m=ee(p);r("codex.app_server_frame_malformed",Object.fromEntries([["purpose","codex.app_server"],["message",Ne(m).message],["payload",i.slice(0,512)],["payloadChars",i.length]])),o=void 0}let a;if(o!==void 0){let p=0;typeof o=="object"&&o!==null&&!Array.isArray(o)?a=o:p=1,p===1&&(r("codex.app_server_frame_malformed",Object.fromEntries([["purpose","codex.app_server"],["message","codex app-server sent non-object JSON-RPC message"],["payload",i.slice(0,512)],["payloadChars",i.length]])),a=void 0)}else a=void 0;if(a===void 0)return;let s=Dt(a.id),l=s&&(Dt(a.result)||Dt(a.error)),d=eH(a);if(l){let p=x(a.id,null),m=JSON.stringify(p),h=e.pending[m];return h!==void 0?(fr(e.pending,m),h.resolvePending({TAG:"Ok",_0:Nv(a)})):void 0}if(s)if(d!==void 0){zn(rH(e,t,n,{id:x(a.id,null),method:d,params:a.params}),p=>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(p=>WP(r,p,c)):e.pendingNotifications.push(c)}function iH(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 LP(e,t){return Object.fromEntries(t!==void 0?[["jsonrpc","2.0"],["method",e],["params",t]]:[["jsonrpc","2.0"],["method",e]])}function UP(e,t,r,n,i,o){return t.socket.readyState()===Xa?new Promise((a,s)=>{e.pending[JSON.stringify(n)]={resolvePending:a};let l=Dm(t,r,"request",iH(n,i,o));l.TAG!=="Ok"&&(fr(e.pending,JSON.stringify(n)),a({TAG:"Error",_0:l._0}))}):Promise.resolve({TAG:"Error",_0:Q4})}async function qm(e,t,r,n){let i=t!==void 0?t:u=>({socket:Gm(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(;mn(l);){let u;try{u={TAG:"Ok",_0:i(e)}}catch(c){let f=ee(c);u={TAG:"Error",_0:Ne(f).message}}if(u.TAG==="Ok"){let c=u._0;if(await new Promise((f,p)=>{c.socket.on("SocketOpen",m=>f(!0)),c.socket.on("SocketError",m=>f(!1))}))l={TAG:"Ok",_0:c};else{try{c.socket.close()}catch{}a()>s&&(l={TAG:"Error",_0:d})}}else d=u._0,a()>s&&(l={TAG:"Error",_0:d})}return x(l,{TAG:"Error",_0:d})}async function Lm(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()===Xa)try{return d()}catch{return}},t.keepaliveIntervalMs);X4(o);let a=d=>{clearInterval(o);let u=Object.entries(r.pending);if(Object.entries(r.pending).forEach(p=>fr(r.pending,p[0])),u.forEach(p=>p[1].resolvePending({TAG:"Error",_0:d})),r.closeError!==void 0)return;r.closeError=d;let f=r.closeCallbacks.slice();r.closeCallbacks.splice(0,r.closeCallbacks.length),f.forEach(p=>qP(n,p,d))};e.socket.on("SocketClose",d=>a(DP)),e.socket.on("SocketError",d=>a(DP)),e.socket.on("SocketMessage",d=>{let u=d.data;if(u!==void 0)return i("incoming",u),nH(r,e,n,i,u)});let s=await UP(r,e,i,"initialize","initialize",zP());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}:(Dm(e,i,"outgoing",LP("initialized",void 0)),{TAG:"Ok",_0:{request:(d,u)=>{let c=r.nextId;return r.nextId=r.nextId+1|0,UP(r,e,i,c,d,u)},notify:(d,u)=>{Dm(e,i,"outgoing",LP(d,u))},onNotification:d=>{r.notificationCallbacks.push(d);let u=r.pendingNotifications.slice();r.pendingNotifications.splice(0,r.pendingNotifications.length),u.forEach(c=>WP(n,d,c))},onRequest:d=>{r.requestCallbacks.push(d)},onClose:d=>{let u=r.closeError;if(u!==void 0)return qP(n,d,u);r.closeCallbacks.push(d)},isClosed:()=>Dt(r.closeError),close:()=>{clearInterval(o);try{return e.socket.close()}catch{return}}}})}function xl(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 kl(e){if(e!==void 0&&typeof e=="number"&&Ot(e))return e}function ZP(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}var VP="linzumi_thread_codex_worker_ready",HP="linzumi_thread_codex_worker_session_closed",BP="linzumi_thread_codex_worker_request",KP="linzumi_thread_codex_worker_notify",qv="linzumi_thread_codex_worker_response",JP="linzumi_thread_codex_worker_notification",YP="linzumi_thread_codex_worker_server_request",XP="linzumi_thread_codex_worker_server_request_response";function QP(e,t){let r={};return r.type=VP,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 eR(e,t){let r={};return r.type=HP,r.kandanThreadId=e,r.reason=t,r}function oH(e,t,r){let n={};return n.type=BP,n.id=e,n.method=t,r!==void 0&&(n.params=r),n}function aH(e,t){let r={};return r.type=KP,r.method=e,t!==void 0&&(r.params=t),r}function sH(e,t){let r={};return r.type=qv,r.id=e,r.response=t,r}function lH(e,t){let r={};return r.type=qv,r.id=e,r.error=t,r}function dH(e){let t={};return t.type=JP,t.notification=e,t}function uH(e,t){let r={};return r.type=YP,r.id=e,r.request=t,r}function Fv(e,t,r){let n={};return n.type=XP,n.id=e,t!==void 0&&(n.result=t),r!==void 0&&(n.error=r),n}function cH(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 fH(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 mH(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 pH(e){let t=xl(e);if(t===void 0)return;let r=t.type;if(r===void 0||typeof r!="string")return;if(r===BP){let i=kl(t.id),o=Li(t.method);return i!==void 0&&o!==void 0?{TAG:"ParentRequest",id:i,method_:o,params:ZP(t.params)}:void 0}if(r===KP){let i=Li(t.method);return i!==void 0?{TAG:"ParentNotify",method_:i,params:ZP(t.params)}:void 0}if(r!==XP)return;let n=kl(t.id);if(n!==void 0)return{TAG:"ParentServerRequestResponse",id:n,result:t.result,error:Li(t.error)}}function hH(e){let t=xl(e);if(t===void 0)return;let r=t.type;if(r===void 0||typeof r!="string")return;if(r===qv){let o=kl(t.id);return o!==void 0?{TAG:"ChildResponse",id:o,response:cH(t.response),error:Li(t.error)}:void 0}if(r===JP){let o=fH(t.notification);return o!==void 0?{TAG:"ChildNotification",notification:o}:void 0}if(r!==YP)return;let n=kl(t.id),i=mH(t.request);if(n!==void 0&&i!==void 0)return{TAG:"ChildServerRequest",id:n,request:i}}function tR(e){let t=xl(e);if(t===void 0)return;let r=t.type;if(typeof r=="string"&&r===HP)return[x(Li(t.kandanThreadId),""),x(Li(t.reason),"")]}var _H="thread Codex worker reported invalid ready payload";function gH(e){let t=Li(e);if(t!==void 0)switch(t){case"claude-code":return"claude-code";case"codex":return"codex";default:return}}function yH(e){return e!==void 0?Array.isArray(e)?$e(e,t=>{let r=xl(t);if(r===void 0)return;let n=kl(r.port);if(n!==void 0&&n>=1&&n<=65535)return{port:n,pid:kl(r.pid),processName:Li(r.processName),processIconKey:Li(r.processIconKey),agentProvider:gH(r.agentProvider)}}):[]:[]}function rR(e,t){let r=xl(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!==VP)return{TAG:"Ok",_0:void 0};let i=Li(r.kandanThreadId);return i!==void 0&&i===t?{TAG:"Ok",_0:{kandanThreadId:i,commanderManagedPorts:yH(r.commanderManagedPorts)}}:{TAG:"Error",_0:_H}}function nR(e,t){}var iR="linzumi.thread_runner",bH="thread Codex worker requires a codex client with onRequest",Dv="thread Codex worker IPC channel closed";function oR(e,t,r){let n=r!==void 0?r:nR,i=e.onRequest;if(i===void 0)return{TAG:"Error",_0:bH};let o=new Map,a={contents:1},s={contents:!1},l=u=>{if(s.contents)return;s.contents=!0;let c={};c.purpose=iR,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 p=c(u);if(p.TAG!=="Ok")return l(p._0)};return t.onMessage(u=>{let c=pH(u);if(c!==void 0)switch(c.TAG){case"ParentRequest":let f=c.id;e.request(c.method_,c.params).then(_=>_.TAG==="Ok"?d(sH(f,_._0)):d(lH(f,_._0)));return;case"ParentNotify":return e.notify(c.method_,c.params);case"ParentServerRequestResponse":let p=c.error,m=c.id,h=o.get(m);return h!==void 0?(o.delete(m),h(p!==void 0?{TAG:"Error",_0:p}:{TAG:"Ok",_0:c.result})):void 0}}),e.onNotification(u=>d(dH(u))),i(u=>new Promise((c,f)=>{let p=a.contents;a.contents=p+1,o.set(p,c),d(uH(p,u))})),t.onceDisconnect(()=>{o.forEach(u=>u({TAG:"Error",_0:Dv})),o.clear()}),{TAG:"Ok",_0:void 0}}var vH="thread Codex worker IPC client is closed",SH="thread Codex worker response missing body",wH="thread Codex worker IPC client closed";async function kH(e,t,r,n,i,o){let a=d=>{let u=e(d);if(u.TAG==="Ok")return;let c={};c.purpose=iR,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(Fv(t,c,void 0)))}else s=!0,a(Fv(t,void 0,u._0))}l=l+1|0}if(!s)return a(Fv(t,void 0,"unhandled Codex app-server request: "+n))}function xH(e){let t=xl(e);if(t===void 0)return"";let r=t.method;return typeof r=="string"?r:""}function aR(e,t){let r=t!==void 0?t:nR,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:vH};let g=e.send,b=e.isConnected();return g!==void 0&&b?g(_):{TAG:"Error",_0:Dv}},c=_=>{let g=hH(_);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:SH})):void 0;case"ChildNotification":let A=g.notification;i.length!==0?i.forEach(L=>L(A)):a.push(A);return;case"ChildServerRequest":let W=g.request;kH(u,g.id,W,xH(W),o,r);return}},f=e.onMessage(c),p=()=>{l.contents=!0,d(Dv)},m=e.onceExit(p),h=e.onceDisconnect(p);return{request:(_,g)=>new Promise((b,y)=>{let v=s.contents;s.contents=v+1,n.set(v,b);let S=u(oH(v,_,g));S.TAG!=="Ok"&&(n.delete(v),b({TAG:"Error",_0:S._0}))}),notify:(_,g)=>u(aH(_,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(),h(),d(wH)}}}import*as Bv from"node:child_process";import*as lR from"node:os";import*as dR from"node:path";function uR(){return dR.join(lR.homedir(),".linzumi","protected-dev-listeners")}var TH=new RegExp("^(\\d+)\\s+(\\d+)$");function AH(e){return $e(e.split(`
|
|
325
325
|
`),t=>{let r=TH.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=jn(i),s=jn(o);if(a!==void 0&&s!==void 0)return{pid:a,pgid:s}})}function OH(e){let t=_s("ps",["-axo","pid=,pgid="],5e3,16e6);if(t.TAG==="Ok")return AH(t._0).filter(r=>r.pgid===e).map(r=>r.pid)}function Um(e,t,r,n,i){let o=n!==void 0?n:OH,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 p=r(f|0,t);if(p.TAG==="Ok")return;let m=p._0;if(!de(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 mR={contents:(e,t)=>{}};var Lv="SIGKILL",Qa={children:new Set,handlersInstalled:!1,removeHandlers:void 0};function xu(e,t,r,n,i){let o=e.pid;mR.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 CH(e,t,r,n){let i;try{e.stop(),i={TAG:"Ok",_0:void 0}}catch(l){i={TAG:"Error",_0:ee(l)}}if(i.TAG!=="Ok"){let l=Ne(i._0);xu(e,n,"stop",l.code,l.message)}let o=e.pid;if(o===void 0)return;if(e.ownProcessGroup){let l=Um(o,Lv,t,void 0,r);l.sparedPids.length!==0&&mR.contents("process.reap_spared_listeners",Object.fromEntries([["purpose",e.kind],["pid",o],["reason",n],["sparedPids",l.sparedPids.map(f=>f)]])),l.failures.forEach(f=>xu(e,n,"member_kill:"+f.pid.toString(),f.code,f.message));let d=l.groupSignalError;if(d===void 0||de(d.code,"ESRCH"))return;xu(e,n,"group_kill",d.code,d.message);let u=t(o,Lv);if(u.TAG==="Ok")return;let c=u._0;return de(c.code,"ESRCH")?void 0:xu(e,n,"pid_kill",c.code,c.message)}let a=t(o,Lv);if(a.TAG==="Ok")return;let s=a._0;if(!de(s.code,"ESRCH"))return xu(e,n,"pid_kill",s.code,s.message)}function Uv(e,t,r){let n=e!==void 0?e:Vi,i=t!==void 0?t:new Set,o=r!==void 0?r:"exit",a=Array.from(Qa.children);return Qa.children.clear(),a.forEach(s=>CH(s,n,i,o)),a.length}function fR(e,t){let r;return r=typeof t=="string"?t:JSON.stringify(t),"linzumi commander "+e+": "+r+`
|
|
326
326
|
`}function EH(){if(Qa.handlersInstalled)return;Qa.handlersInstalled=!0;let e=o=>{Uv(void 0,void 0,"process_exit")};process.on("exit",e);let t=process.listenerCount("uncaughtException")===0,r=process.listenerCount("unhandledRejection")===0,n=o=>{Uv(void 0,void 0,"uncaught_exception"),mr(fR("uncaughtException",o)),process.exit(1)},i=o=>{Uv(void 0,void 0,"unhandled_rejection"),mr(fR("unhandledRejection",o)),process.exit(1)};t&&process.on("uncaughtException",n),r&&process.on("unhandledRejection",i),Qa.removeHandlers=()=>{if(process.off("exit",e),t&&process.off("uncaughtException",n),r){process.off("unhandledRejection",i);return}}}function Wm(e){return Qa.children.add(e),EH(),{unregister:()=>{Qa.children.delete(e)}}}import*as Zo from"node:path";import*as hR from"node:net";function Tl(e,t){try{return e.kill(t)}catch{return!1}}function _R(){return new Promise((e,t)=>{let r=hR.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 xre=new RegExp("[^0-9A-Za-z._-]","g");var Mre=new RegExp("[\\\\/]");var gR="cannot fork thread runner without current CLI script path";var jre=15*6e4,zre=120*6e4,Nre=1440*6e4,Gre=2*6e4;var IH="this computer is updating its Linzumi runner",Fre=IH+" to a new version - nothing was started. Retry in a few minutes once the update finishes.";var Dre=15*6e4;var yR="this computer restarted its Linzumi runner for an update",qre=yR+" after waiting for this job past the drain timeout - the job was interrupted. Send your message again to continue.",Lre=yR+" 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 MH(e,t){}var Zv="linzumi.thread_runner";function bR(e,t){return e!==void 0&&e.trim()!==""?{TAG:"Ok",_0:Zo.isAbsolute(e)?e:Zo.resolve(t,e)}:{TAG:"Error",_0:gR}}function jH(e){return["--require","-r","--import","--loader","--experimental-loader"].includes(e)}function zH(e){return["--require=","-r=","--import=","--loader=","--experimental-loader="].some(t=>e.startsWith(t))}function NH(e){let t=[],r=0;for(;r<e.length;){let n=e[r];if(n!==void 0){let i=jH(n),o=zH(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 Vv(e,t,r){return NH(r).concat([e].concat(t))}function cn(e,t){return t!==void 0?t!==""?[e,t]:[]:[]}function vR(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],cn("--workspace",e.workspaceSlug),cn("--log-file",e.logFile),cn("--debug-trace-dir",G(e.debugTrace,i=>i.dir)),cn("--debug-trace-content",k(e.debugTrace,i=>i.contentMode)),e.fast?["--fast"]:[],cn("--allowed-cwd",t(e.allowedCwds)),cn("--forward-port",t(e.allowedForwardPorts.map(i=>i.toString()))),cn("--code-server-bin",e.codeServerBin),cn("--model",k(e.runtimeDefaults,i=>i.model)),cn("--reasoning-effort",k(e.runtimeDefaults,i=>i.reasoningEffort)),cn("--sandbox",k(e.runtimeDefaults,i=>i.sandbox)),cn("--approval-policy",k(e.runtimeDefaults,i=>i.approvalPolicy)),r!==void 0?["--model-provider",r.provider,"--llm-proxy-base-url",r.llmProxyBaseUrl]:[],e.vmExecution?["--vm-execution"]:[],cn("--execution-mode",e.executionMode),cn("--egress-mode",e.egressMode),cn("--project-public-id",e.projectPublicId),cn("--golden-image-id",e.goldenImagePublicId),n!==void 0?n.allowPortForwardingByDefault?["--allow-port-forwarding-by-default"]:["--no-allow-port-forwarding-by-default"]:[]].flat()}function SR(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 wR(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",x(e.linzumiAgentMcpToken,"")]),r!==void 0&&n.push(["OPENAI_API_KEY",r]),n}function kR(e){let t=e.length;return t>12e3?e.slice(t-12e3|0,t):e}function Zm(e){let t=rn(e.code,"null",o=>o.toString()),r=x(e.signal,"null"),n="thread Codex worker exited before ready: code="+t+" signal="+r,i=e.capturedOutput.trim();return i===""?n:n+`
|
|
327
327
|
worker output: `+i}function xR(e,t){return"thread Codex worker did not report ready within "+t.toString()+"ms for Kandan thread "+e}var GH="thread runner ready timeout must be a non-negative number";function TR(e){let t=x(e,3e4);return isFinite(t)&&t>=0?{TAG:"Ok",_0:t}:{TAG:"Error",_0:GH}}var AR="thread worker start preflight failed";function FH(e){return Zo.isAbsolute(e)||new RegExp("^[A-Za-z]:[\\\\/]").test(e)?!0:e.startsWith("\\\\")}function DH(e){return e===""?!0:!FH(e)&&e!==".."&&!e.startsWith("../")&&!e.startsWith("..\\")&&!e.includes("/../")?!e.includes("\\..\\"):!1}function OR(e,t,r){if(e===void 0)return{TAG:"CwdRefused",reason:"missing_cwd"};if(e.trim()==="")return{TAG:"CwdRefused",reason:"missing_cwd"};if(t.length===0)return{TAG:"CwdRefused",reason:"no_allowed_cwd"};let i=Dn(Zo.resolve(e));if(i.TAG!=="Ok")return{TAG:"CwdRefused",reason:"cwd_not_found"};let o=i._0,a=t.find(s=>DH(Zo.relative(s,o)));return a!==void 0?r(o)?{TAG:"CwdRefused",reason:"cwd_dangerous"}:{TAG:"CwdAllowed",cwd:o,matchedRoot:a}:{TAG:"CwdRefused",reason:"cwd_not_allowed"}}function CR(e,t,r){if(r.TAG==="CwdAllowed")return;let n=r.reason,o=t.length!==0?t.join(", "):"none";return{reason:n,message:AR+" ("+n+"): working directory "+e+" cannot start a coding session on this runner (allowed roots: "+o+")"}}function qH(e){return e.split(`
|
package/dist/impl-ts/index.js
CHANGED
|
@@ -670,7 +670,7 @@ ${n}
|
|
|
670
670
|
`)}catch(o){n?.(o instanceof Error?o.message:String(o))}}}}function Kge(e,n){let t=e.trim();if(t.length<=n)return t;let r="... ";return`${r}${t.slice(t.length-(n-r.length))}`}function Vge(e){let n=Object.entries(e);return n.length<=JN?e:(n.sort(([,t],[,r])=>Date.parse(t.lastAt)-Date.parse(r.lastAt)),Object.fromEntries(n.slice(-JN)))}function GN(e,n,t,r,o=VN){let i=e.load(),s=(i[n]?.count??0)+1,a=t instanceof Error?t.message:String(t??"");return e.save(Vge({...i,[n]:{count:s,lastError:Kge(a===""?"the engine worker never started":a,Jge),lastAt:new Date(r).toISOString()}})),{count:s,tripped:s>=o}}function ZN(e,n){let t=e.load();if(t[n]===void 0)return!1;let{[n]:r,...o}=t;return e.save(o),!0}function QN(e,n,t=VN){let r=e.load()[n];return r!==void 0&&r.count>=t?r:void 0}function IC(e,n=PC){let t=XN.find(r=>e!==r&&e.startsWith(`${r}/`));if(t===void 0)return!1;try{return n(e).dev===n(t).dev}catch{return!1}}function YN(e,n=PC){let t=XN.find(i=>e!==i&&e.startsWith(`${i}/`));if(t===void 0)return!1;let r;try{r=n(t).dev}catch{return!1}let o=e;for(;o!==t;)try{return n(o).dev===r}catch(i){let s=typeof i=="object"&&i!==null&&"code"in i?i.code:void 0;if(s!=="ENOENT"&&s!=="ENOTDIR")return!1;let a=KN(o);if(a===o)break;o=a}return!0}function RC(e,n={}){let t=n.realpathFn??Fge,r;try{r=t(Bge($t(e)))}catch{return!1}return!IC(r,n.statFn??PC)}function e4(e,n=RC){let t=e.load(),r=[],o={};for(let[i,s]of Object.entries(t)){let a=!1;try{a=n(i)}catch{a=!1}a?r.push(i):o[i]=s}return r.length>0&&e.save(o),r}function EC(e){return(e instanceof Error?e.message:String(e??"")).startsWith(n4)}function t4(e,n){return`${n4}${e} on this computer: the last ${n.count} attempts there died during startup (most recent error: ${n.lastError}). Check that the folder exists and its disk/volume is mounted. The pause clears after one successful session, or on runner restart (\`linzumi connect\`) once the folder is present again.`}var VN,Jge,JN,XN,n4,r4=q(()=>{"use strict";_C();gs();VN=3,Jge=480,JN=50;XN=["/Volumes"];n4="coding sessions are paused for "});import{mkdirSync as Wge,rmSync as o4,writeFileSync as Hge,promises as i4}from"node:fs";import{join as Gge}from"node:path";import{StringDecoder as Zge}from"node:string_decoder";function Qge(e){return`'${e.replaceAll("'","'\\''")}'`}function Xge(e,n){return`__lz_live_out=${Qge(n)}; if ! : >> "$__lz_live_out" 2>/dev/null; then __lz_live_out=/dev/null; fi; { ${e}${wx}`}function Yge(e){return s4.test(e)&&e.endsWith(wx)}function a4(e){let n=e.match(s4)?.[0];return n===void 0||!e.endsWith(wx)?e:e.slice(n.length,e.length-wx.length)}function d4(e){let n=e.LINZUMI_CLAUDE_LIVE_BASH?.trim().toLowerCase();return!(n==="0"||n==="false"||n==="off"||n==="no")}function u4(e){let n=e.pollIntervalMs??eye,t=e.maxEmittedBytesPerTool??nye,r=new Map,o=!1,i=c=>{let l=r.get(c);if(l!==void 0){r.delete(c),l.timer!==void 0&&(clearInterval(l.timer),l.timer=void 0);try{o4(l.file,{force:!0})}catch{}}},s=async(c,l)=>{if(!l.reading){l.reading=!0;try{let p=await i4.stat(l.file);if(p.size<=l.offset)return;let m=Math.min(p.size-l.offset,tye,t-l.emittedBytes);if(m<=0){i(c);return}let f=await i4.open(l.file,"r");try{let y=Buffer.alloc(m),{bytesRead:x}=await f.read(y,0,m,l.offset);if(x<=0)return;l.offset+=x,l.emittedBytes+=x;let b=l.decoder.write(y.subarray(0,x));b!==""&&r.get(c)===l&&e.onOutputDelta(c,b),l.emittedBytes>=t&&(e.log?.("claude_live_bash.output_budget_exhausted",{tool_use_id:c,emitted_bytes:l.emittedBytes}),i(c))}finally{await f.close()}}catch(p){r.get(c)===l&&(e.log?.("claude_live_bash.tail_read_failed",{tool_use_id:c,message:p instanceof Error?p.message:String(p)}),i(c))}finally{l.reading=!1}}},a=(c,l)=>{i(c);let p={file:l,decoder:new Zge("utf8"),offset:0,emittedBytes:0,reading:!1,timer:void 0};r.set(c,p);let m=setInterval(()=>{s(c,p)},n);m.unref?.(),p.timer=m},d=(c,l)=>{if(o)return;let p=l.command;if(typeof p!="string"||p.trim()===""||l.run_in_background===!0||Yge(p))return;let m=Gge(e.captureDir,`${c.replaceAll(/[^\w-]/g,"_")}.out`);try{Wge(e.captureDir,{recursive:!0}),Hge(m,"")}catch(f){e.log?.("claude_live_bash.capture_file_failed",{tool_use_id:c,message:f instanceof Error?f.message:String(f)});return}return a(c,m),{...l,command:Xge(p,m)}};return{hookMatchers:[{matcher:"Bash",hooks:[async c=>{let l={continue:!0};if(typeof c!="object"||c===null)return l;let p=c;if(p.hook_event_name!=="PreToolUse"||p.tool_name!=="Bash"||typeof p.tool_use_id!="string"||p.tool_use_id===""||typeof p.tool_input!="object"||p.tool_input===null||p.permission_mode!=="bypassPermissions")return l;let m=d(p.tool_use_id,p.tool_input);return m===void 0?l:{continue:!0,hookSpecificOutput:{hookEventName:"PreToolUse",updatedInput:m}}}]}],wrapApprovedTool:d,settleTool:i,settleAll:()=>{for(let c of[...r.keys()])i(c)},close:()=>{o=!0;for(let c of[...r.keys()])i(c);try{o4(e.captureDir,{recursive:!0,force:!0})}catch{}}}}var s4,wx,eye,nye,tye,DC=q(()=>{"use strict";s4=/^__lz_live_out='(?:[^']|'\\'')*'; if ! : >> "\$__lz_live_out" 2>\/dev\/null; then __lz_live_out=\/dev\/null; fi; \{ /,wx=`
|
|
671
671
|
} > >(tee -a -- "$__lz_live_out") 2> >(tee -a -- "$__lz_live_out" >&2)`;eye=200,nye=262144,tye=65536});import{spawnSync as rye}from"node:child_process";import{existsSync as oye}from"node:fs";import{homedir as iye}from"node:os";import{basename as sye,posix as f4,win32 as aye}from"node:path";function OC(e){return e==="win32"?aye:f4}function dye(e,n){let t=sye(e).includes("fish")?`printf '%s%s%s' '${vx}' (string join ':' $PATH) '${AC}'`:`printf '%s%s%s' '${vx}' "$PATH" '${AC}'`;switch(n){case"interactive_login":return["-l","-i","-c",t];case"interactive":return["-i","-c",t];case"login":return["-l","-c",t]}}function uye(e,n){let t=rye(e,[...n],{encoding:"utf8",timeout:5e3,killSignal:"SIGKILL",stdio:["ignore","pipe","ignore"]});return{stdout:typeof t.stdout=="string"?t.stdout:void 0,error:t.error}}function jf(e){return{env:e?.env??process.env,platform:e?.platform??process.platform,homeDir:e?.homeDir??iye(),fileExists:e?.fileExists??oye,runLoginShell:e?.runLoginShell}}function cye(e){if(e===void 0)return;let n=e.lastIndexOf(vx),t=e.lastIndexOf(AC);if(n===-1||t===-1||t<=n)return;let r=e.slice(n+vx.length,t).trim();return r===""?void 0:r}function lye(e){let n=jf(e);if(n.platform==="win32")return;let t=e===void 0;if(e!==void 0&&e.runLoginShell===void 0||t&&process.env.VITEST!==void 0)return;if(t&&l4)return c4;let r=n.env.SHELL?.trim(),o=n.runLoginShell??uye,i=[];if(r!==void 0&&r!=="")for(let a of["interactive_login","interactive","login"]){let d=o(r,dye(r,a)),u=cye(d.stdout);if(u!==void 0)for(let c of u.split(":"))c!==""&&i.push(c)}let s=i.length===0?void 0:$C(i).join(":");return t&&(c4=s,l4=!0),s}function pye(e){let n=jf(e);if(n.platform==="win32")return[];let t=n.homeDir,r=f4.join,o=n.env.VOLTA_HOME?.trim(),i=n.env.BUN_INSTALL?.trim(),s=n.env.npm_config_prefix?.trim(),a=n.env.N_PREFIX?.trim();return $C([r(t,".local","bin"),r(t,".volta","bin"),o===void 0||o===""?void 0:r(o,"bin"),r(t,".bun","bin"),i===void 0||i===""?void 0:r(i,"bin"),r(t,".npm-global","bin"),s===void 0||s===""?void 0:r(s,"bin"),a===void 0||a===""?void 0:r(a,"bin"),r(t,".claude","local"),"/opt/homebrew/bin","/usr/local/bin"].filter(d=>d!==void 0))}function p4(e,n){return e===void 0?[]:e.split(OC(n).delimiter).filter(t=>t!=="")}function $C(e){return Array.from(new Set(e))}function m4(e){let n=jf(e);return $C([...p4(n.env.PATH,n.platform),...p4(lye(e),n.platform),...pye(e)])}function Sx(e){let n=e===void 0;if(n&&process.env.VITEST!==void 0)return process.env.PATH??"";if(n&&MC!==void 0)return MC;let t=jf(e),r=m4(e).join(OC(t.platform).delimiter);return r!==""&&(t.env.PATH=r),n&&(MC=r),r}function kx(e,n){let t=jf(n);if(e.includes("/")||e.includes("\\"))return t.fileExists(e)?e:void 0;let r=t.platform==="win32"?[`${e}.exe`,`${e}.cmd`,e]:[e],o=OC(t.platform).join;for(let i of m4(n))for(let s of r){let a=o(i,s);if(t.fileExists(a))return a}}function h4(e,n){return[`\`${e}\` was not found on this runner's PATH, the login-shell PATH, or the common install locations (~/.local/bin, ~/.volta/bin, ~/.bun/bin, npm-global, Homebrew).`,`If \`${e}\` works in your terminal, the runner process does not see your shell's PATH (common when the runner is launched from an app or service instead of a terminal).`,`Fix: pass ${n} "$(command -v ${e})" when starting the runner, or make sure ${e}'s directory is on your login-shell PATH.`].join(`
|
|
672
672
|
`)}var vx,AC,c4,l4,MC,LC=q(()=>{"use strict";vx="__LINZUMI_LOGIN_PATH_BEGIN__",AC="__LINZUMI_LOGIN_PATH_END__";l4=!1});import{closeSync as fye,openSync as mye,readSync as hye,statSync as gye}from"node:fs";function Sd(e){return typeof e!="string"||e===""?e:yye.reduce((n,t)=>t.source.startsWith("\\beyJ")?n.replace(t,"<redacted>"):n.replace(t,"$1<redacted>"),e)}function g4(e,n){if(typeof e!="string"||e==="")return;if(Buffer.byteLength(e,"utf8")<=n)return e;let t=Buffer.from(e,"utf8"),r=t.length-n;for(;r<t.length&&((t[r]??0)&192)===128;)r+=1;return t.subarray(r).toString("utf8")}function Sye(e,n){let t;try{let{size:r}=gye(e),o=r>n?r-n:0,i=r-o;if(i<=0)return"";let s=Buffer.allocUnsafe(i);t=mye(e,"r");let a=hye(t,s,0,i,o);return s.subarray(0,a).toString("utf8")}catch{return""}finally{if(t!==void 0)try{fye(t)}catch{}}}function y4(e){let n=e.now??Date.now,t=e.setIntervalImpl??setInterval,r=e.clearIntervalImpl??clearInterval,o=e.readTail??Sye,i=Math.max(_ye,e.intervalMs??xye),s=Math.max(1,e.maxTailBytes??bye),a=Math.max(1,e.maxLifecycleEvents??wye),d=[],u=!1,c,l=v=>{try{for(d.push(v);d.length>a;)d.shift()}catch{}},p=()=>{try{let v=e.backendStderrSnapshot?.();if(typeof v!="string"||v==="")return;let w=v.length>s?v.slice(v.length-s):v;return Sd(w)}catch{return}},m=()=>{let v=Sd(o(e.runnerLogFile,s)),w=p(),k={kind:"runner_diagnostic_log",captured_at:new Date(n()).toISOString(),lifecycle:d.map(I=>({event:I.event,at:I.atIso,...I.closeCode===void 0?{}:{close_code:I.closeCode},...I.closeReason===void 0?{}:{close_reason:Sd(I.closeReason)},...I.previousSessionDurationMs===void 0?{}:{previous_session_duration_ms:I.previousSessionDurationMs},...I.reconnectCount===void 0?{}:{reconnect_count:I.reconnectCount}})),runner_log_tail:v,...w===void 0?{}:{backend_stderr:w}};return{bundle_name:"runner-diagnostics",exported_at:new Date(n()).toISOString(),diagnostics:k,telemetry_ndjson:d.map(I=>JSON.stringify(I)).join(`
|
|
673
|
-
`)}},f=Math.max(256,e.spoolTailBytes??vye),y=(v,w)=>{let k=v.diagnostics!==null&&typeof v.diagnostics=="object"&&!Array.isArray(v.diagnostics)?{...v.diagnostics}:{},I=g4(k.runner_log_tail,f),T=g4(k.backend_stderr,f);return I!==void 0&&(k.runner_log_tail=I),T!==void 0&&(k.backend_stderr=T),k.spool_reason=w instanceof Error?w.message:String(w),{...v,diagnostics:k}},x=async()=>{let v=d.length,w=m();try{await Promise.resolve(e.upload(w)),d.splice(0,v)}catch(k){let I=!1;if(e.spool!==void 0&&v>0)try{I=e.spool.append(y(w,k))}catch{I=!1}I&&d.splice(0,v);try{e.log?.("runner_diagnostics.upload_failed",{buffered_events:d.length,spooled:I,error:k instanceof Error?k.message:String(k)})}catch{}}},b=()=>{u||c!==void 0||(c=t(()=>{x()},i),c.unref?.())},S=()=>{u=!0,c!==void 0&&(r(c),c=void 0)};try{e.log?.("runner_diagnostics.enabled",{destination:"linzumi",runner_log_file:e.runnerLogFile,interval_ms:i,note:"runner lifecycle + runner-log tail + backend stderr are uploaded to Linzumi for support diagnostics (auto-deleted after 4 days)"})}catch{}return b(),{recordLifecycle:l,flushNow:x,stop:S}}var yye,xye,_ye,bye,wye,vye,Cx=q(()=>{"use strict";yye=[/(--token[=\s]+)\S+/gi,/(bearer\s+)[^\s,;"'\]\}]+/gi,/((?:access[_-]?token|api[_-]?key|auth[_-]?token|authorization|secret|password|refresh[_-]?token|session[_-]?token|jwt|token)["']?\s*[:=]\s*["']?)[^\s,;"'\]\}]+/gi,/\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g];xye=45e3,_ye=5e3,bye=64*1024,wye=200,vye=16*1024});import kye from"blessed";function Cye(e){if(e.indexOf("%;")===-1)return e;let n=0,t="",r=0;for(;r<e.length;){let o=e[r],i=e[r+1];if(o==="%"&&i==="%"){t+="%%",r+=2;continue}if(o==="%"&&i==="?"){n+=1,t+="%?",r+=2;continue}if(o==="%"&&i===";"){n>0&&(n-=1,t+="%;"),r+=2;continue}t+=o,r+=1}return t}function _4(e=kye){let t=e.Tput?.prototype,r=t?._compile;if(t===void 0||typeof r!="function"||t[x4]===!0)return;let o=function(s,a,d){let u=typeof d=="string"?Cye(d):d;return r.call(this,s,a,u)};t._compile=o,Object.defineProperty(t,x4,{value:!0,enumerable:!1,configurable:!0,writable:!0})}var x4,b4=q(()=>{"use strict";x4="__linzumiSetulcShimInstalled"});function w4(e){return e===void 0?!1:(e.unicode=!0,e.features!==void 0&&(e.features.unicode=!0),e.brokenACS=!0,!0)}function v4(e){if(e===void 0)return;let n=e.tput,t=e.program?.tput;if(n===void 0&&t===void 0){console.warn("[blessedAcsCharsetShim] screen has no tput; ACS charset fix was NOT applied - dynamic cells may render garbled");return}w4(n),t!==void 0&&t!==n&&w4(t)}var S4=q(()=>{"use strict"});var k4,Tye,qf,Pye,C4,T4=q(()=>{"use strict";k4=Symbol.for("linzumi.blessedPartialScreenCrashGuard"),Tye=e=>{console.warn(e)},qf=(e,n)=>{n===void 0||process.removeListener(e,n)},Pye=(e,n)=>{let t=e.instances.indexOf(n);t===-1||(e.instances.splice(t,1),e.total-=1),e.global=e.instances[0]??null,e.total===0&&(qf("uncaughtException",e._exceptionHandler),qf("SIGTERM",e._sigtermHandler),qf("SIGINT",e._sigintHandler),qf("SIGQUIT",e._sigquitHandler),qf("exit",e._exitHandler),delete e._exceptionHandler,delete e._sigtermHandler,delete e._sigintHandler,delete e._sigquitHandler,delete e._exitHandler,delete e._bound),n.destroyed=!0},C4=(e,n={})=>{let t=e.prototype;switch(t[k4]){case!0:return;case void 0:break}let r=t.destroy;t[k4]=!0,t.destroy=function(){switch(this.program){case null:case void 0:(n.warn??Tye)({event:"runner.tui_partial_screen_teardown",branch:"screen_destroy_missing_program",program_present:!1,action:"cleanup_partial_screen_registration"}),Pye(e,this);break;default:r.call(this);break}}}});function P4(e){if(typeof e!="function")return;let n=e;if(!(!Array.isArray(n.instances)||typeof n.total!="number"))return n}function Ff(e,n){if(typeof n=="function")try{process.removeListener(e,n)}catch{}}function Iye(e,n){try{let t=e.instances.indexOf(n);return t===-1?!1:(e.instances.splice(t,1),e.total-=1,e.global=e.instances[0],e.total===0&&(e.global=null,Ff("uncaughtException",e._exceptionHandler),Ff("SIGTERM",e._sigtermHandler),Ff("SIGINT",e._sigintHandler),Ff("SIGQUIT",e._sigquitHandler),Ff("exit",e._exitHandler),delete e._exceptionHandler,delete e._sigtermHandler,delete e._sigintHandler,delete e._sigquitHandler,delete e._exitHandler,delete e._bound),!0)}catch{return!1}}function Rye(e,n,t,r){let o=0;for(let i of e.instances.slice()){if(n.has(i))continue;let s=i.program===void 0,a;if(!s&&typeof i.destroy=="function")try{i.destroy()}catch(d){a=d}Iye(e,i),o+=1,Po(t,"runner.tui_stranded_screen_swept",{partial_construction:s,destroy_error:a===void 0?null:a instanceof Error?a.message:String(a),...r})}return o}function I4(e,n,t={}){let r=t.sinks??{},o=t.context??{},i=new Set(e?.instances??[]);try{return n()}catch(s){let a=e===void 0?0:Rye(e,i,r,o);throw Po(r,"runner.tui_screen_construction_failed",{message:s instanceof Error?s.message:String(s),stack:s instanceof Error?s.stack??null:null,swept_screens:a,...o}),s}}var R4=q(()=>{"use strict";Pc()});var qt,jC,oa=q(()=>{"use strict";qt="1.0.
|
|
673
|
+
`)}},f=Math.max(256,e.spoolTailBytes??vye),y=(v,w)=>{let k=v.diagnostics!==null&&typeof v.diagnostics=="object"&&!Array.isArray(v.diagnostics)?{...v.diagnostics}:{},I=g4(k.runner_log_tail,f),T=g4(k.backend_stderr,f);return I!==void 0&&(k.runner_log_tail=I),T!==void 0&&(k.backend_stderr=T),k.spool_reason=w instanceof Error?w.message:String(w),{...v,diagnostics:k}},x=async()=>{let v=d.length,w=m();try{await Promise.resolve(e.upload(w)),d.splice(0,v)}catch(k){let I=!1;if(e.spool!==void 0&&v>0)try{I=e.spool.append(y(w,k))}catch{I=!1}I&&d.splice(0,v);try{e.log?.("runner_diagnostics.upload_failed",{buffered_events:d.length,spooled:I,error:k instanceof Error?k.message:String(k)})}catch{}}},b=()=>{u||c!==void 0||(c=t(()=>{x()},i),c.unref?.())},S=()=>{u=!0,c!==void 0&&(r(c),c=void 0)};try{e.log?.("runner_diagnostics.enabled",{destination:"linzumi",runner_log_file:e.runnerLogFile,interval_ms:i,note:"runner lifecycle + runner-log tail + backend stderr are uploaded to Linzumi for support diagnostics (auto-deleted after 4 days)"})}catch{}return b(),{recordLifecycle:l,flushNow:x,stop:S}}var yye,xye,_ye,bye,wye,vye,Cx=q(()=>{"use strict";yye=[/(--token[=\s]+)\S+/gi,/(bearer\s+)[^\s,;"'\]\}]+/gi,/((?:access[_-]?token|api[_-]?key|auth[_-]?token|authorization|secret|password|refresh[_-]?token|session[_-]?token|jwt|token)["']?\s*[:=]\s*["']?)[^\s,;"'\]\}]+/gi,/\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g];xye=45e3,_ye=5e3,bye=64*1024,wye=200,vye=16*1024});import kye from"blessed";function Cye(e){if(e.indexOf("%;")===-1)return e;let n=0,t="",r=0;for(;r<e.length;){let o=e[r],i=e[r+1];if(o==="%"&&i==="%"){t+="%%",r+=2;continue}if(o==="%"&&i==="?"){n+=1,t+="%?",r+=2;continue}if(o==="%"&&i===";"){n>0&&(n-=1,t+="%;"),r+=2;continue}t+=o,r+=1}return t}function _4(e=kye){let t=e.Tput?.prototype,r=t?._compile;if(t===void 0||typeof r!="function"||t[x4]===!0)return;let o=function(s,a,d){let u=typeof d=="string"?Cye(d):d;return r.call(this,s,a,u)};t._compile=o,Object.defineProperty(t,x4,{value:!0,enumerable:!1,configurable:!0,writable:!0})}var x4,b4=q(()=>{"use strict";x4="__linzumiSetulcShimInstalled"});function w4(e){return e===void 0?!1:(e.unicode=!0,e.features!==void 0&&(e.features.unicode=!0),e.brokenACS=!0,!0)}function v4(e){if(e===void 0)return;let n=e.tput,t=e.program?.tput;if(n===void 0&&t===void 0){console.warn("[blessedAcsCharsetShim] screen has no tput; ACS charset fix was NOT applied - dynamic cells may render garbled");return}w4(n),t!==void 0&&t!==n&&w4(t)}var S4=q(()=>{"use strict"});var k4,Tye,qf,Pye,C4,T4=q(()=>{"use strict";k4=Symbol.for("linzumi.blessedPartialScreenCrashGuard"),Tye=e=>{console.warn(e)},qf=(e,n)=>{n===void 0||process.removeListener(e,n)},Pye=(e,n)=>{let t=e.instances.indexOf(n);t===-1||(e.instances.splice(t,1),e.total-=1),e.global=e.instances[0]??null,e.total===0&&(qf("uncaughtException",e._exceptionHandler),qf("SIGTERM",e._sigtermHandler),qf("SIGINT",e._sigintHandler),qf("SIGQUIT",e._sigquitHandler),qf("exit",e._exitHandler),delete e._exceptionHandler,delete e._sigtermHandler,delete e._sigintHandler,delete e._sigquitHandler,delete e._exitHandler,delete e._bound),n.destroyed=!0},C4=(e,n={})=>{let t=e.prototype;switch(t[k4]){case!0:return;case void 0:break}let r=t.destroy;t[k4]=!0,t.destroy=function(){switch(this.program){case null:case void 0:(n.warn??Tye)({event:"runner.tui_partial_screen_teardown",branch:"screen_destroy_missing_program",program_present:!1,action:"cleanup_partial_screen_registration"}),Pye(e,this);break;default:r.call(this);break}}}});function P4(e){if(typeof e!="function")return;let n=e;if(!(!Array.isArray(n.instances)||typeof n.total!="number"))return n}function Ff(e,n){if(typeof n=="function")try{process.removeListener(e,n)}catch{}}function Iye(e,n){try{let t=e.instances.indexOf(n);return t===-1?!1:(e.instances.splice(t,1),e.total-=1,e.global=e.instances[0],e.total===0&&(e.global=null,Ff("uncaughtException",e._exceptionHandler),Ff("SIGTERM",e._sigtermHandler),Ff("SIGINT",e._sigintHandler),Ff("SIGQUIT",e._sigquitHandler),Ff("exit",e._exitHandler),delete e._exceptionHandler,delete e._sigtermHandler,delete e._sigintHandler,delete e._sigquitHandler,delete e._exitHandler,delete e._bound),!0)}catch{return!1}}function Rye(e,n,t,r){let o=0;for(let i of e.instances.slice()){if(n.has(i))continue;let s=i.program===void 0,a;if(!s&&typeof i.destroy=="function")try{i.destroy()}catch(d){a=d}Iye(e,i),o+=1,Po(t,"runner.tui_stranded_screen_swept",{partial_construction:s,destroy_error:a===void 0?null:a instanceof Error?a.message:String(a),...r})}return o}function I4(e,n,t={}){let r=t.sinks??{},o=t.context??{},i=new Set(e?.instances??[]);try{return n()}catch(s){let a=e===void 0?0:Rye(e,i,r,o);throw Po(r,"runner.tui_screen_construction_failed",{message:s instanceof Error?s.message:String(s),stack:s instanceof Error?s.stack??null:null,swept_screens:a,...o}),s}}var R4=q(()=>{"use strict";Pc()});var qt,jC,oa=q(()=>{"use strict";qt="1.0.148",jC=`linzumi ${qt}`});import sa from"blessed";function q4(e){return e.includes(Px)?e.replace(jye,"").replace(qye,"").includes(Px):!1}function Fye(e){return typeof e=="object"&&e!==null&&e.name==="escape"}function qC(e){return e.mode.type==="table"?!1:(e.mode={type:"table"},!0)}function Uye(e){return zye.test(e)}function F4(e){if(!e.includes(Px))return[];let n=[];for(let t of e.matchAll(Nye))n.push(t[1]==="A"?"up":"down");return n}function Bye(e){return Uye(e)?F4(e):[]}function Ex(e,n={}){let t=St.dashboard,r={trigger:e.trigger,had_tui:t!==void 0,stdin_was_tty_at_start:St.stdinWasTtyAtStart,stdout_was_tty_at_start:St.stdoutWasTtyAtStart};if(t===void 0)return Po(n,"runner.tui_teardown_ok",r),{hadTui:!1,ok:!0,swallowedErrorCode:void 0};St.dashboard=void 0,St.stop?.(),St.stop=void 0;try{return t.destroy(),Po(n,"runner.tui_teardown_ok",r),{hadTui:!0,ok:!0,swallowedErrorCode:void 0}}catch(o){let i=Rf(o);return Po(n,"runner.tui_teardown_tty_error",{...r,stage:"screen_destroy",code:i??null,message:o instanceof Error?o.message:String(o),swallowed:!0}),{hadTui:!0,ok:!1,swallowedErrorCode:i}}}function Hye(){Ex({trigger:"crash"},{log:dx})}function z4(e,n={log:dx}){if(St.degradedToHeadless)return;St.degradedToHeadless=!0;let t=Ex({trigger:"tty_write_error"},n);Po(n,"runner.tui_degraded_headless",{code:e.code??null,stage:e.stage,had_tui:t.hadTui,teardown_ok:t.ok,note:"terminal detached mid-run; console disabled, runner continues headless"});try{process.stderr.write(`linzumi runner: terminal lost (write ${e.code??"error"}); Commander TUI disabled, runner continues headless
|
|
674
674
|
`)}catch(r){xd(r)===void 0&&Po(n,"runner.tui_degrade_farewell_write_failed",{message:r instanceof Error?r.message:String(r),stage:e.stage,swallowed:!0})}}function Dx(e,n){if(N4()){let r=Txe(zf);if(Gye(zf,e,n,Date.now()),r!==void 0){r.render(Date.now());return}Sxe(zf),kxe(zf);let o=GC(zf,Date.now());if(o!==void 0){HC(o);return}}let t=G4(e,n);if(t!==void 0)try{process.stdout.write(`${t}
|
|
675
675
|
`)}catch(r){if(xd(r)===void 0)throw r}}function N4(){if(St.degradedToHeadless)return!1;switch(process.env.LINZUMI_RUNNER_CONSOLE){case"dashboard":return!0;case"lines":return!1;default:return process.stdout.isTTY===!0}}function Mx(){return N4()}function Gye(e,n,t,r){let o=ES(n);e.lastUpdateAtMs=r;let i=j4(e)?.key;switch(o){case"onboarding.discovery_agents_started":e.browserUrl=_e(t.kandanUrl),e.workspace=_e(t.workspace),e.runnerId=_e(At(t,"runnerId"));break;case"kandan.connection_stale":e.connectionStale=!0;break;case"kandan.connection_recovered":e.connectionStale=!1;break;case"runner.notice":{let s=_e(t.message);if(s===void 0)break;let a=_e(t.key)??s,d=e.notices.get(a),u=_e(t.severity)??"warning",c=Bn(t.count)??(d?.count??0)+1;if(d===void 0){e.notices.set(a,{key:a,severity:u,message:s,count:c,updatedAtMs:r});for(let l of e.notices.keys()){if(e.notices.size<=Dye)break;e.notices.delete(l)}}else d.severity=u,d.message=s,d.count=c,d.updatedAtMs=r;break}case"onboarding.discovery_status":{let s=_e(t.phase),a=_e(t.status),d=Tx(t.metadata),u=_e(d?.worker_id);if(s!==void 0&&a!==void 0){let c=s==="conversations",l=c?s:u??s,p=e.discovery.get(l),m=c?Yye(p?.metadata,d):d;e.discovery.set(l,{key:l,phase:s,status:c?exe(p,a,d):a,placesSearched:Math.max(p?.placesSearched??0,Bn(t.places_searched)??0),message:_e(t.message)??(c?p?.message:void 0),currentPlace:_e(t.current_place)??(c?p?.currentPlace:void 0),currentSource:_e(t.current_source)??(c?p?.currentSource:void 0),lastError:_e(t.last_error),metadata:m,updatedAtMs:r})}break}case"kandan.roster_seeded":{let s=Wxe(t.threads)??[];for(let a of s){let d=Tx(a),u=_e(At(d,"kandan_thread_id"));if(u===void 0)continue;let c=`linzumi:${u}`;if((e.jobs.get(c)??Array.from(e.jobs.values()).find(m=>m.linzumiThreadId===u))!==void 0)continue;let p=Bn(d?.last_activity_at_ms);e.jobs.set(c,{key:c,createdAtMs:p??0,createdOrdinal:YC(e),agentProvider:void 0,linzumiThreadId:u,linzumiThreadTitle:_e(d?.title),codexThreadId:void 0,tokenUsage:void 0,lastIncomingPreview:void 0,lastIncomingAtMs:void 0,lastAssistantPreview:void 0,lastAssistantAtMs:void 0,latestCodexEventId:void 0,eventType:"idle (server roster)",creditExhaustion:void 0,queueDepth:void 0,turnId:void 0,updatedAtMs:p??0})}e.rosterTruncated=Hxe(t.truncated)??e.rosterTruncated;break}case"kandan.message_queued":case"codex.turn_starting":{let s=VC(e,t,r);s.linzumiThreadId=_e(At(t,"linzumi_thread_id"))??s.linzumiThreadId,s.linzumiThreadTitle=eU(t)??s.linzumiThreadTitle,s.codexThreadId=_e(At(t,"codex_thread_id"))??s.codexThreadId,s.lastIncomingPreview=_e(t.body_preview)??s.lastIncomingPreview,s.lastIncomingAtMs=Bn(t.message_received_at_ms)??s.lastIncomingAtMs,s.queueDepth=Bn(t.queue_depth)??s.queueDepth,s.eventType=zxe(o),s.updatedAtMs=r;break}case"codex.notification":{let s=_e(t.token_usage_summary),a=_e(t.rate_limit_summary),d=_e(t.credit_exhaustion_summary);s!==void 0&&(e.tokenUsage=s),a!==void 0&&(e.rateLimit=A4(e.rateLimit,a)),d!==void 0&&(e.creditExhaustion=d);let u=_e(t.method),c=Tx(t.metadata);if(!(_e(c?.threadId)!==void 0||_e(c?.turnId)!==void 0||_e(c?.itemId)!==void 0))break;let p=_e(c?.threadId),m=p===void 0?j4(e):jxe(e,`codex:${p}`,r);m!==void 0&&(m.codexThreadId=p??m.codexThreadId,m.tokenUsage=s??m.tokenUsage,m.creditExhaustion=d??m.creditExhaustion,m.latestCodexEventId=Q4(t),m.eventType=t.credit_exhaustion_detected===!0?"credit_exhausted":u??o,m.turnId=_e(c?.turnId)??m.turnId,m.updatedAtMs=r);break}case"kandan.codex_output_forwarded":case"kandan.codex_delta_forwarded":case"kandan.codex_reasoning_delta_forwarded":case"kandan.codex_command_output_forwarded":case"kandan.codex_file_change_forwarded":case"kandan.codex_web_search_progress_forwarded":{let s=VC(e,t,r);s.latestCodexEventId=_e(t.item_key)??s.latestCodexEventId,s.eventType=Fxe(o,t),s.turnId=_e(t.turn_id)??s.turnId,_e(t.structured_kind)==="codex_assistant_message"&&(s.lastAssistantPreview=_e(t.body_preview)??s.lastAssistantPreview,s.lastAssistantAtMs=r),s.updatedAtMs=r;break}case"claude_code.turn_starting":case"claude_code.message_queued":{let s=Lc(e,t,r);s.lastIncomingPreview=_e(t.body_preview)??s.lastIncomingPreview,s.lastIncomingAtMs=Bn(t.message_received_at_ms)??s.lastIncomingAtMs,s.eventType=o==="claude_code.message_queued"?"message_queued":"turn_starting",s.updatedAtMs=r;break}case"claude_code.session_started":{let s=Lc(e,t,r);s.eventType="session_started",s.updatedAtMs=r;break}case"claude_code.turn_completed":{let s=Lc(e,t,r);s.lastAssistantPreview=_e(t.body_preview)??s.lastAssistantPreview,s.lastAssistantAtMs=r,s.eventType="turn_completed",s.updatedAtMs=r;break}case"claude_code.turn_terminal":{let s=Lc(e,t,r);s.turnId=_e(t.turn_id)??s.turnId,s.eventType=`turn_${_e(t.outcome)??"terminal"}`,s.updatedAtMs=r;break}case"claude_code.rate_limit":{let s=_e(t.rate_limit_summary);s!==void 0&&(e.rateLimit=A4(e.rateLimit,s));let a=Lc(e,t,r);a.eventType="rate_limit",a.updatedAtMs=r;break}case"claude_code.token_usage":{let s=_e(t.token_usage_summary),a=Lc(e,t,r);s!==void 0&&(e.tokenUsage=s,a.tokenUsage=s),a.eventType="token_usage",a.updatedAtMs=r;break}default:break}gxe(e,o,t,i)}function GC(e,n){if(e.jobs.size===0&&e.discovery.size===0&&e.notices.size===0&&e.tokenUsage===void 0&&e.rateLimit===void 0&&e.creditExhaustion===void 0)return;let t=kd(e);switch(e.mode.type){case"table":return e.jobs.size===0&&e.discovery.size>0?Zye(e,n):txe(e,t,n);case"raw_all":return zC(e,"Raw Stream",void 0,"esc/q: table",e.rawLines,n,"No raw events yet.");case"raw_job":{let r=e.mode.jobKey,o=e.jobs.get(r),i=`Raw Stream: ${eT(o?.linzumiThreadId)} / ${nT(o?.codexThreadId,o?.agentProvider)}`;return zC(e,i,o?.tokenUsage,"esc/q: table",e.rawLines.filter(s=>s.jobKey===r),n,"No raw events yet.")}case"audit_log":return zC(e,"Commander Audit Log",void 0,"esc/q: table",K4(e).map(r=>({jobKey:void 0,line:r})),n,"No audit events yet.")}}function Zye(e,n){let t=Array.from(e.discovery.values()).sort((s,a)=>Ix(s.phase).localeCompare(Ix(a.phase))),r=t.reduce((s,a)=>s+a.placesSearched,0),o=t.some(s=>["starting","running"].includes(s.status)),i=t.length===0?["Discovery starting 0 places Waiting for discovery agents"]:t.map(s=>[Ax(s.phase).padEnd(14),Ox(s.status).padEnd(10),`${String(s.placesSearched)} places`.padEnd(10),ZC(s)].join(" "));return[XC(),"","Linzumi setup","New computer connected","",`Continue in the browser: ${e.browserUrl??"open the Linzumi setup page"}`,"",Qye(t),`Workspace: ${e.workspace??"?"}`,`Runner: ${e.runnerId??"?"}`,`Status: ${o?"searching":"finished"} Places searched: ${r}`,`Last update: ${$i(e.lastUpdateAtMs,n)}${qc(e)}`,"","Phase Status Places Detail","------------- ---------- --------- ------------------------------",...i,""].join(`
|
|
676
676
|
`)}function Ix(e){switch(e){case"projects":return"1-projects";case"conversations":return"2-conversations";default:return`3-${e}`}}function Ax(e){switch(e){case"projects":return"Projects";case"conversations":return"Conversations";default:return"Discovery"}}function Ox(e){switch(e){case"starting":return"starting";case"running":return"searching";case"completed":return"done";case"failed":return"failed";default:return e}}function Qye(e){return e.length===0?"I'm waiting for the discovery agents to start.":e.some(t=>["starting","running"].includes(t.status))?"I'm scouting existing projects and coding-agent conversations.":"Discovery is finished and idle. Select a project in the browser or move on."}function ZC(e){if(e.lastError!==void 0)return e.lastError;let n=QC(e);if(n!==void 0)return n;let t=nxe(e.currentSource);return e.currentPlace!==void 0?t===void 0?e.currentPlace:`${t}: ${e.currentPlace}`:e.message??U4(e.phase)}function QC(e){if(e.phase!=="conversations"||!UC(e.metadata))return;let n=Bn(e.metadata?.total_count)??(Bn(e.metadata?.codex_count)??0)+(Bn(e.metadata?.claude_code_count)??0),t=Bn(e.metadata?.imported_count)??Bn(e.metadata?.reported_count);return t===void 0||n<=0?void 0:`${e.status==="completed"?"Imported":"Importing"} [${Xye(t,n)}] ${t} / ${n} Codex/Claude Code conversations`}function UC(e){return _e(e?.worker_id)==="conversations-local-import"||Bn(e?.imported_count)!==void 0||Bn(e?.failed_import_count)!==void 0||Bn(e?.total_count)!==void 0}function Xye(e,n){let r=Math.min(10,Math.max(0,Math.floor(e/n*10)));return`${"#".repeat(r)}${"-".repeat(10-r)}`}function Yye(e,n){return e===void 0?n:n===void 0?e:{...e,...n,...Nf(e,n,"codex_count"),...Nf(e,n,"claude_code_count"),...Nf(e,n,"reported_count"),...Nf(e,n,"imported_count"),...Nf(e,n,"total_count")}}function Nf(e,n,t){let r=Bn(e[t]),o=Bn(n[t]);return r===void 0&&o===void 0?{}:{[t]:Math.max(r??0,o??0)}}function exe(e,n,t){return e?.status==="running"&&UC(e.metadata)&&!UC(t)?e.status:n}function nxe(e){switch(e){case"git":return"Git";case"codex":return"Codex";case"claude_code":return"Claude Code";case void 0:return;default:return e}}function U4(e){switch(e){case"projects":return"Checking common project folders and Git worktrees.";case"conversations":return"Checking Codex and Claude Code sessions.";default:return"Checking local context."}}function txe(e,n,t){let r=V4(e,n,t);return[XC(),"","Linzumi Commander","",`Jobs: ${n.length}${e.rosterTruncated?" (first 200 of this node's roster)":""} Last update: ${$i(e.lastUpdateAtMs,t)}${qc(e)}`,...B4(e.creditExhaustion),`Overall Token Usage: ${e.tokenUsage??"?"}`,`Account rate limits: ${e.rateLimit??"?"}`,"Controls: up/down select | enter raw job | r raw stream | a audit log | esc table",...BC(e),"",Nxe(r.rows),""].join(`
|
package/package.json
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
// 1. pnpm bump-version <new-version> (for example: 1.2.3-beta)
|
|
9
9
|
// 2. Run the test suite: pnpm vitest run --config vitest.config.mjs
|
|
10
10
|
// 3. Commit with a "[deploy-commander]" title and merge to main (the
|
|
11
|
-
// deprecated "[deploy-cli]" marker
|
|
12
|
-
//
|
|
11
|
+
// deprecated "[deploy-cli]" marker was retired in the N3.9 window on
|
|
12
|
+
// 2026-07-20 and is now loudly inert - naming program).
|
|
13
13
|
// 4. The main publish workflow (.github/workflows/linzumi-cli-publish.yml)
|
|
14
14
|
// publishes @linzumi/cli@<new-version> to npm.
|
|
15
15
|
//
|