@linzumi/cli 1.0.225 → 1.0.226
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/cloud-supervisor.mjs +1 -1
- package/dist/impl-res/index.js +192 -192
- package/dist/impl-ts/cloud-supervisor.mjs +1 -1
- package/dist/impl-ts/index.js +456 -455
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ var Wr=Object.create;var Qn=Object.defineProperty;var Hr=Object.getOwnPropertyDe
|
|
|
7
7
|
`)+`\r
|
|
8
8
|
\r
|
|
9
9
|
`+t)}function ee(e,n,t,r,o,i){if(e.listenerCount("wsClientError")){let s=new Error(o);Error.captureStackTrace(s,ee),e.emit("wsClientError",s,t,n)}else Te(t,r,o,i)}});import{spawn as Ds}from"node:child_process";import{appendFileSync as Fs,rmSync as Jr,writeFileSync as Re,mkdirSync as ye,chmodSync as Mr,readFileSync as zs,readdirSync as qs,statSync as Gs,unlinkSync as Vs}from"node:fs";import{dirname as Lr,join as nn}from"node:path";var _i=be(Vt(),1),xi=be(xn(),1),bi=be(Sn(),1),An=be(We(),1),vi=be(er(),1);function U(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nr(e){let n=[["threadId",e.threadId],["turnId",e.turnId],["itemId",e.itemId],["processId",e.processId],["requestId",e.requestId]].filter(t=>t[1]!==void 0);return Object.fromEntries(n)}function w(e){return e!==void 0&&U(e)?e:void 0}function Ke(e){return Array.isArray(e)?e:void 0}function h(e){return typeof e=="string"&&e.trim()!==""?e.trim():void 0}function me(e){return typeof e=="number"&&Number.isInteger(e)?e:void 0}import{appendFileSync as Pi,openSync as id}from"node:fs";import{homedir as sr}from"node:os";import{dirname as Ti,join as ar,resolve as Oi,sep as Ai}from"node:path";import{mkdirSync as Ii}from"node:fs";var q={_generated:"GENERATED by scripts/naming_dual_emit_codegen.mjs from scripts/naming_canonical_key_map.json (N2.2 dual-emit, D46) - DO NOT EDIT; run: node scripts/naming_dual_emit_codegen.mjs --write",events:[["codex.agent_turn_narration_only_no_reply","harness.agent_turn_narration_only_no_reply"],["codex.cost_cap_402_seen","harness.cost_cap_402_seen"],["codex.edge_blocked_captured","harness.edge_blocked_captured"],["codex.empty_turn_auto_retry_suppressed_cost_cap","harness.empty_turn_auto_retry_suppressed_cost_cap"],["codex.empty_turn_loop_guard_tripped","harness.empty_turn_loop_guard_tripped"],["codex.error_without_http_status_captured","harness.error_without_http_status_captured"],["codex.mid_stream_stall_auto_resume_flagged","harness.mid_stream_stall_auto_resume_flagged"],["codex.mid_stream_stall_fresh_session_resume","harness.mid_stream_stall_fresh_session_resume"],["codex.mid_stream_stall_fresh_session_resume_failed","harness.mid_stream_stall_fresh_session_resume_failed"],["codex.mid_stream_stall_fresh_session_resume_flagged","harness.mid_stream_stall_fresh_session_resume_flagged"],["codex.mid_stream_stall_resume_suppressed_rate_limit","harness.mid_stream_stall_resume_suppressed_rate_limit"],["codex.mid_stream_stall_second_stall_after_resume","harness.mid_stream_stall_second_stall_after_resume"],["codex.pre_first_byte_stall_auto_retry_flagged","harness.pre_first_byte_stall_auto_retry_flagged"],["codex.pre_first_byte_stall_retry_suppressed_cost_cap","harness.pre_first_byte_stall_retry_suppressed_cost_cap"],["codex.provider_outage_flagged_captured","harness.provider_outage_flagged_captured"],["codex.reasoning_loop_breaker_tripped","harness.reasoning_loop_breaker_tripped"],["codex.tool_fatal_captured","harness.tool_fatal_captured"],["codex.turn_completed","job.turn_completed"],["codex.turn_completed_with_protocol_failure","job.turn_completed_with_protocol_failure"],["codex.turn_completed_with_unsupported_tool_call_ignored","job.turn_completed_with_unsupported_tool_call_ignored"],["codex.turn_completed_without_assistant_output","job.turn_completed_without_assistant_output"],["codex.turn_demoted_late_upstream_error","job.turn_demoted_late_upstream_error"],["codex.turn_forward_failed","job.turn_forward_failed"],["codex.upstream_error_captured","harness.upstream_error_captured"],["codex.upstream_rejection_captured","harness.upstream_rejection_captured"],["codex.upstream_turn_error_captured","harness.upstream_turn_error_captured"],["kandan.chat_event","linzumi.chat_event"],["kandan.chat_event_abandoned","linzumi.chat_event_abandoned"],["kandan.chat_event_failed","linzumi.chat_event_failed"],["kandan.chat_event_failure_cleared","linzumi.chat_event_failure_cleared"],["kandan.child_thread_event_failed","linzumi.child_thread_event_failed"],["kandan.child_thread_event_skipped_missing_thread_binding","linzumi.child_thread_event_skipped_missing_thread_binding"],["kandan.child_thread_upsert_failed","linzumi.child_thread_upsert_failed"],["kandan.child_thread_upsert_skipped_missing_thread_binding","linzumi.child_thread_upsert_skipped_missing_thread_binding"],["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"]],keys:[["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"]],keyPrimaryLegacy:[["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"]],values:[["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"]],topic:{legacyPrefix:"local_codex_runner:",canonicalPrefix:"commander:"},originator:{legacy:"kandan-local-codex-runner",canonical:"linzumi-commander"}};var wi=new Map(q.events),ki=new Map(q.events.map(([e,n])=>[n,e])),rr=new Map(q.keys),or=new Map(q.keyPrimaryLegacy),Ci=new Map(q.values),Ei=new Map(q.values.map(([e,n])=>[n,e])),ed={eventCanonicalByLegacy:wi,eventLegacyByCanonical:ki,keyCanonicalByLegacy:rr,keyPrimaryLegacyByCanonical:or,valueCanonicalByLegacy:Ci,valueLegacyByCanonical:Ei,originator:q.originator,topic:q.topic};function ir(e){let n=new Set(e);for(let t of e){let r=rr.get(t);r!==void 0&&n.add(r);let o=or.get(t);o!==void 0&&n.add(o)}return n}var tr=new Map;for(let[e,n]of q.keys){let t=tr.get(n)??[];t.push(e),tr.set(n,t)}var ne="<SENSITIVE_DATA>",dr=ir(new Set(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"])),Ri=new Set(["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"]);function Mi(e){if(process.env.VITEST===void 0)return;let n=ar(sr(),".linzumi"),t=Oi(e);if(t===n||t.startsWith(`${n}${Ai}`))throw new Error(`test-mode log isolation violated: refusing to open ${e} inside the real ~/.linzumi (point the logger at a temp path; the harness defaults LINZUMI_RUNNER_LOG_FILE / LINZUMI_CLI_AUDIT_LOG for exactly this - see plans/2026-07-10-cli-test-hygiene-spec.md item 2)`)}function ge(e,n,t={}){let r=t.logFile??ji();Mi(r);try{Ii(Ti(r),{recursive:!0}),Pi(r,`${JSON.stringify({ts:new Date().toISOString(),event:e,...t.sessionId===void 0?{}:{sessionId:t.sessionId},...Ni(n)})}
|
|
10
|
-
`,"utf8")}catch{return}}function ji(){let e=process.env.LINZUMI_CLI_AUDIT_LOG?.trim();return e===void 0||e===""?ar(sr(),".linzumi","logs","command-events.jsonl"):e}function Ni(e){return ur(e)}function In(e,n){return $i(n)?ne:typeof e=="string"?cr(e):Array.isArray(e)?n==="args"?Ji(e):e.map(t=>In(t,void 0)):e!==null&&typeof e=="object"?ur(e):e}function ur(e){let n=typeof e.name=="string"?e.name.toLowerCase():void 0,t=n==="authorization"||n==="cookie"||n==="set-cookie";return Object.fromEntries(Object.entries(e).filter(([r])=>r!=="runner_console").map(([r,o])=>[r,t&&r==="value"?ne:In(o,r)]))}function Ji(e){let n=!1;return e.map(t=>{if(typeof t!="string")return n=!1,In(t,void 0);if(n)return n=!1,ne;let[r,o]=Li(t);return Ri.has(r)?o===void 0?(n=!0,t):`${r}=${ne}`:cr(t)})}function Li(e){let n=e.indexOf("=");return n===-1?[e,void 0]:[e.slice(0,n),e.slice(n+1)]}function $i(e){return e===void 0?!1:/^(authorization|cookie|set-cookie|password)$/i.test(e)||/(^|[_-])(access[_-]?token|api[_-]?key|auth[_-]?token|oauth[_-]?code|refresh[_-]?token|secret|token)$/i.test(e)}function cr(e){return Ui(e).replace(/\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,ne)}function Ui(e){let n;try{n=new URL(e)}catch{return Di(e)}for(let t of[...n.searchParams.keys()])dr.has(t.toLowerCase())&&n.searchParams.set(t,ne);return n.toString()}function Di(e){let n=e.indexOf("?"),t=e.indexOf("#");if(n===-1||t!==-1&&t<n)return e;let r=e.slice(0,n),o=t===-1?e.slice(n+1):e.slice(n+1,t),i=t===-1?"":e.slice(t),s=new URLSearchParams(o),a=!1;for(let d of[...s.keys()])dr.has(d.toLowerCase())&&(s.set(d,ne),a=!0);switch(a){case!0:return`${r}?${s.toString()}${i}`;case!1:return e}}function Rn(e){let n=e.channelSession,t=n.linzumiAgentSession===!0,r=t?"read-only":n.sandbox,o=Fi(n);return{
|
|
10
|
+
`,"utf8")}catch{return}}function ji(){let e=process.env.LINZUMI_CLI_AUDIT_LOG?.trim();return e===void 0||e===""?ar(sr(),".linzumi","logs","command-events.jsonl"):e}function Ni(e){return ur(e)}function In(e,n){return $i(n)?ne:typeof e=="string"?cr(e):Array.isArray(e)?n==="args"?Ji(e):e.map(t=>In(t,void 0)):e!==null&&typeof e=="object"?ur(e):e}function ur(e){let n=typeof e.name=="string"?e.name.toLowerCase():void 0,t=n==="authorization"||n==="cookie"||n==="set-cookie";return Object.fromEntries(Object.entries(e).filter(([r])=>r!=="runner_console").map(([r,o])=>[r,t&&r==="value"?ne:In(o,r)]))}function Ji(e){let n=!1;return e.map(t=>{if(typeof t!="string")return n=!1,In(t,void 0);if(n)return n=!1,ne;let[r,o]=Li(t);return Ri.has(r)?o===void 0?(n=!0,t):`${r}=${ne}`:cr(t)})}function Li(e){let n=e.indexOf("=");return n===-1?[e,void 0]:[e.slice(0,n),e.slice(n+1)]}function $i(e){return e===void 0?!1:/^(authorization|cookie|set-cookie|password)$/i.test(e)||/(^|[_-])(access[_-]?token|api[_-]?key|auth[_-]?token|oauth[_-]?code|refresh[_-]?token|secret|token)$/i.test(e)}function cr(e){return Ui(e).replace(/\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,ne)}function Ui(e){let n;try{n=new URL(e)}catch{return Di(e)}for(let t of[...n.searchParams.keys()])dr.has(t.toLowerCase())&&n.searchParams.set(t,ne);return n.toString()}function Di(e){let n=e.indexOf("?"),t=e.indexOf("#");if(n===-1||t!==-1&&t<n)return e;let r=e.slice(0,n),o=t===-1?e.slice(n+1):e.slice(n+1,t),i=t===-1?"":e.slice(t),s=new URLSearchParams(o),a=!1;for(let d of[...s.keys()])dr.has(d.toLowerCase())&&(s.set(d,ne),a=!0);switch(a){case!0:return`${r}?${s.toString()}${i}`;case!1:return e}}function Rn(e){let n=e.channelSession,t=n.linzumiAgentSession===!0,r=t?"read-only":n.sandbox,o=Fi(n);return{cwd:e.cwd,...n.model===void 0?{}:{model:n.model},...o===void 0?{}:{config:o},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:t?"never":fr(n.approvalPolicy,r,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...r===void 0?{}:{sandbox:r}}}function lr(e){let n=e.channelSession,t=n.linzumiAgentSession===!0,r=t?"read-only":n.sandbox;return{cwd:e.cwd,...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{effort:n.reasoningEffort},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:t?"never":fr(n.approvalPolicy,r,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...r===void 0?{}:{sandboxPolicy:Gi(r,e.cwd)}}}function Fi(e){let n=e.reasoningEffort===void 0?{}:{model_reasoning_effort:e.reasoningEffort};return e.linzumiAgentSession!==!0?e.reasoningEffort===void 0?void 0:n:{...n,web_search:"disabled",tools:{view_image:!1},features:{apps:!1,shell_tool:!1,unified_exec:!1,multi_agent:!1,code_mode:!1,image_generation:!1,browser_use:!1,browser_use_external:!1,computer_use:!1,remote_plugin:!1,tool_suggest:!1,workspace_dependencies:!1}}}function zi(e,n,t){let r=t?.sandboxedNeverDefault===!0&&n==="workspace-write";switch(e){case void 0:case"default":return r?"never":"on-request";case"never":return n==="danger-full-access"||r?"never":"on-request";case"on-request":case"on-failure":return e;default:return console.warn(`linzumi approval-policy clamp: unknown Codex approval policy ${e}; clamping to most-restrictive approval (on-request)`),"on-request"}}var qi={granular:{sandbox_approval:!1,rules:!1,skill_approval:!1,request_permissions:!1,mcp_elicitations:!0}};function fr(e,n,t){let r=zi(e,n,t);return r==="never"&&n==="danger-full-access"?qi:r==="on-failure"?"on-request":r}function Gi(e,n){switch(e){case"danger-full-access":return{type:"dangerFullAccess"};case"read-only":return{type:"readOnly",networkAccess:!1};case"workspace-write":return{type:"workspaceWrite",writableRoots:[n],networkAccess:!1,excludeTmpdirEnvVar:!1,excludeSlashTmp:!1};default:throw new Error(`unsupported Codex sandbox mode: ${e}`)}}function Mn(e){return e==="final_answer"?"final_answer":"commentary"}function pr(e){let n=Vi(e),t=w(e.item);if(!(n===void 0||n===""))return{itemKey:h(e.itemId)??h(e.item_id)??h(w(e.item)?.id)??"assistant-message",turnId:h(e.turnId)??h(e.turn_id)??h(w(e.turn)?.id),delta:n,phase:Mn(e.phase??t?.phase)}}function mr(e){let n=yr(e);if(!(n===void 0||n===""))return{itemKey:h(e.itemId)??h(e.item_id)??h(w(e.item)?.id)??"reasoning",turnId:h(e.turnId)??h(e.turn_id)??h(w(e.turn)?.id),delta:n}}function Vi(e){return yr(e)}function Bi(e){return e>=55296&&e<=56319}function Wi(e){return e>=56320&&e<=57343}function gr(e,n){let t=Math.min(Math.max(0,n),e.length),r=t>0&&t<e.length&&Bi(e.charCodeAt(t-1))&&Wi(e.charCodeAt(t))?t-1:t;return e.slice(0,r)}function yr(e){let n=e.delta;return typeof n=="string"?n:U(n)?h(n.text)??h(n.content)??h(n.delta)??h(n.message):h(e.text)??h(e.content)??h(e.message)}import{mkdirSync as Hi,appendFileSync as Ki}from"node:fs";import{dirname as Qi}from"node:path";function hr(e){return JSON.stringify(e)}var Oe,Zi=/(^|[_-])(token|secret|api[_-]?key|authorization|cookie|private[_-]?key|login[_-]?url)([_-]|$)/iu;function jn(){return _r()!==void 0}function Nn(e){let n=_r();if(n===void 0)return;let t=Xi(n),r=Yi(e),o={schemaVersion:1,provider:e.provider,captureKind:e.captureKind,ordinal:t.nextOrdinal,offsetMs:Math.max(0,Date.now()-t.startedAtMs),...r.rawText===void 0?{}:{rawText:r.rawText},...r.rawValue===void 0?{}:{rawValue:r.rawValue},...e.captureMetadata===void 0?{}:{captureMetadata:Ae(e.captureMetadata)},...r.transforms.length===0?e.transforms===void 0?{}:{transforms:e.transforms}:{transforms:[...e.transforms??[],...r.transforms]}};t.nextOrdinal+=1,Ki(n,`${hr(o)}
|
|
11
11
|
`,"utf8")}function _r(){let e=process.env.LINZUMI_AGENT_REPLAY_RECORD_FILE?.trim();return e===void 0||e===""?void 0:e}function Xi(e){return Oe!==void 0&&Oe.path===e||(Hi(Qi(e),{recursive:!0}),Oe={path:e,startedAtMs:Date.now(),nextOrdinal:0}),Oe}function Yi(e){if(process.env.LINZUMI_AGENT_REPLAY_EXACT_RAW==="1")return{rawText:e.rawText,rawValue:e.rawValue,transforms:[]};let n=[],t=e.rawValue===void 0?void 0:Ae(e.rawValue,"$.rawValue",n);return{rawText:es(e.rawText,n),rawValue:t,transforms:n}}function es(e,n){if(e!==void 0)try{let t=JSON.parse(e);return JSON.stringify(Ae(t,"$.rawText",n))}catch{return e}}function Ae(e,n="$",t=[]){if(Array.isArray(e))return e.map((o,i)=>Ae(o,`${n}[${i}]`,t));if(!U(e))return e;let r=Object.entries(e).map(([o,i])=>{let s=`${n}.${o}`;return Zi.test(o)?(t.push({type:"credential_redaction",path:s}),[o,"[REDACTED]"]):[o,i===void 0?void 0:Ae(i,s,t)]});return Object.fromEntries(r)}function xr(e){return{name:"linzumi",command:e.command??"linzumi",args:[...e.argsPrefix??[],"mcp","server","--api-url",e.kandanUrl,...e.authFilePath===void 0?[]:["--auth-file",e.authFilePath],...e.delegationAuthFilePath===void 0?[]:["--delegation-auth-file",e.delegationAuthFilePath],...e.ownerUsername===void 0?[]:["--owner-username",e.ownerUsername],...e.cwd===void 0?[]:["--cwd",e.cwd],...e.threadId===void 0?[]:["--thread-id",e.threadId],"--mode",e.operatingMode??"text",...e.toolScope===void 0||e.toolScope==="all"?[]:["--tool-scope",e.toolScope],...e.agentSession===!0?["--agent-session"]:[],...e.askUserQuestionTool===!0?["--ask-user-question-tool"]:[],...e.multiAgentJobs===!0?["--multi-agent-jobs"]:[]],env:{...e.accessToken===void 0?{}:{LINZUMI_MCP_ACCESS_TOKEN:e.accessToken},...e.devServices===void 0?{}:{LINZUMI_DEV_SERVICES_SCOPE:e.devServices.scope,LINZUMI_DEV_SERVICES_OWNER_PID:String(e.devServices.ownerPid)},ELECTRON_RUN_AS_NODE:"1"}}}function Jn(e,n){return["-c",`mcp_servers.${e.name}.command=${JSON.stringify(e.command)}`,"-c",`mcp_servers.${e.name}.args=${ns(e.args)}`,...Object.entries(e.env).flatMap(([t,r])=>["-c",`mcp_servers.${e.name}.env.${t}=${JSON.stringify(r)}`]),...n.neverEquivalentGranularApprovalPolicy?["-c",`mcp_servers.${e.name}.default_tools_approval_mode="approve"`]:[],...e.args.includes("--ask-user-question-tool")?["-c",`mcp_servers.${e.name}.tool_timeout_sec=${br}`]:[]]}function ns(e){return`[${e.map(n=>JSON.stringify(n)).join(", ")}]`}var br=2147483,Ad=br*1e3-5*6e4;var Rd=["# Managed by Linzumi - do not edit by hand.","# This isolated CODEX_HOME keeps Linzumi-spawned codex processes off the","# user's ~/.codex config and the macOS Keychain. See codexHome.ts.",'mcp_oauth_credentials_store = "file"','cli_auth_credentials_store = "file"',""].join(`
|
|
12
12
|
`);function vr(){return["-c",'mcp_oauth_credentials_store="file"',"-c",'cli_auth_credentials_store="file"']}var ts=5*6e4;var os=(()=>{let e=process.env.LINZUMI_CODEX_WS_KEEPALIVE_MS;if(e===void 0)return 2e4;let n=Number.parseInt(e,10);return Number.isInteger(n)&&n>0?n:2e4})();function is(e){let n=e;if(typeof n.ping=="function"&&n.readyState===WebSocket.OPEN)try{n.ping()}catch{}}function kr(e,n={}){return["app-server",..._s(n),"--listen",e]}var ss=["-c","features.apps=false"],as=["-c","features.default_mode_request_user_input=true"],ds="LINZUMI_CODEX_STREAM_IDLE_TIMEOUT_MS",us="LINZUMI_CODEX_STREAM_IDLE_TIMEOUT_SOURCE",cs=5e3,ls=6e5,fs=["flag","env","server_default"];function ps(e){return fs.find(n=>n===e)}function ms(e){let n=e?.trim();if(e===void 0||n===void 0||n==="")return{state:"unset"};if(!/^[0-9]+$/.test(n))return{state:"invalid",raw:e};let t=Number(n);return!Number.isSafeInteger(t)||t<cs||t>ls?{state:"invalid",raw:e}:{state:"applied",timeoutMs:t}}function gs(e=process.env){let n=ms(e[ds]);if(n.state==="unset")return n;let t=ps(e[us]?.trim())??"env";return{...n,source:t}}function ys(e=process.env){let n=gs(e);return n.state==="applied"?n.timeoutMs:void 0}var Cr="openai-linzumi";function Er(){let e=Cr;return["-c",`model_providers.${e}.name="OpenAI"`,"-c",`model_providers.${e}.wire_api="responses"`,"-c",`model_providers.${e}.requires_openai_auth=true`,"-c",`model_providers.${e}.supports_websockets=true`]}function hs(e){let n=Cr;return[...Er(),"-c",`model_providers.${n}.stream_idle_timeout_ms=${e}`,"-c",`model_provider="${n}"`]}function _s(e,n=process.env){let t=ys(n);return[...ss,...e.nativeQuestionBridge==="durable"?as:[],...vr(),...e.model===void 0?[]:["-c",`model=${JSON.stringify(e.model)}`],...e.reasoningEffort===void 0?[]:["-c",`model_reasoning_effort=${JSON.stringify(e.reasoningEffort)}`],...e.fast===!0?["-c",`service_tier=${JSON.stringify("fast")}`]:[],...(e.mcpServers??[]).flatMap(r=>Jn(r,{neverEquivalentGranularApprovalPolicy:e.neverEquivalentGranularApprovalPolicy===!0})),...e.modelProvider===void 0?t===void 0?Er():hs(t):xs(e.modelProvider,t)]}function xs(e,n){return["-c",`model_providers.${e.id}.name=${JSON.stringify(e.name)}`,"-c",`model_providers.${e.id}.base_url=${JSON.stringify(e.baseUrl)}`,"-c",`model_providers.${e.id}.env_key=${JSON.stringify(e.envKey)}`,"-c",`model_providers.${e.id}.wire_api=${JSON.stringify(e.wireApi)}`,...Object.entries(e.httpHeaders??{}).flatMap(([t,r])=>["-c",`model_providers.${e.id}.http_headers.${t}=${JSON.stringify(r)}`]),...Object.entries(e.envHttpHeaders??{}).flatMap(([t,r])=>["-c",`model_providers.${e.id}.env_http_headers.${t}=${JSON.stringify(r)}`]),...n===void 0?[]:["-c",`model_providers.${e.id}.stream_idle_timeout_ms=${n}`],"-c",`model_provider=${JSON.stringify(e.id)}`]}async function Pr(e,n=t=>new An.default(t)){let t=await ks(e,n),r=new Map,o=new Set,i=new Set,s=[],a=new Set,d={nextId:1,closeError:void 0},u=p=>{let g=new Error(p);r.forEach(c=>c.reject(g)),r.clear()},l=setInterval(()=>is(t),os);l.unref?.();let f=p=>{if(clearInterval(l),u(p),d.closeError===void 0){d.closeError=new Error(p);for(let g of a)wr(g,d.closeError);a.clear()}};return t.addEventListener("close",()=>f("codex app-server websocket closed")),t.addEventListener("error",()=>f("codex app-server websocket closed")),t.addEventListener("message",p=>{let g=String(p.data),c=ws(g);if(c===void 0){bs(g);return}if(Ie({direction:"codex_to_commander",captureKind:Ss(c),message:c,rawText:g}),"id"in c&&("result"in c||"error"in c)){let v=r.get(c.id);v!==void 0&&(r.delete(c.id),v.resolve(c));return}if("id"in c&&typeof c.method=="string"){Es(t,c,i);return}if(!("id"in c)&&typeof c.method=="string"){let v=c;o.size===0?s.push(v):o.forEach(T=>Sr(T,v))}}),await Ts(t,r),{request:(p,g)=>{let c=d.nextId;return d.nextId+=1,Tr(t,r,g===void 0?{jsonrpc:"2.0",id:c,method:p}:{jsonrpc:"2.0",id:c,method:p,params:g})},notify:(p,g)=>{let c=g===void 0?{jsonrpc:"2.0",method:p}:{jsonrpc:"2.0",method:p,params:g};Ie({direction:"commander_to_codex",captureKind:"outgoing",message:c,rawText:JSON.stringify(c)}),t.send(JSON.stringify(c))},onNotification:p=>{o.add(p),s.splice(0).forEach(g=>Sr(p,g))},onRequest:p=>{i.add(p)},onClose:p=>{if(d.closeError!==void 0){wr(p,d.closeError);return}a.add(p)},isClosed:()=>d.closeError!==void 0,close:()=>{clearInterval(l),t.close()}}}function Ie(e){jn()&&Nn({provider:"codex-app-server",captureKind:e.captureKind,rawText:e.rawText,rawValue:{message:e.message},captureMetadata:{direction:e.direction,capturedAtMs:Date.now(),capturePid:process.pid,...vs(e.message),...e.extraMetadata??{}}})}function bs(e){jn()&&Nn({provider:"codex-app-server",captureKind:"incoming",rawText:e,captureMetadata:{direction:"codex_to_commander",capturedAtMs:Date.now(),capturePid:process.pid,malformed:!0}})}function vs(e){return!("params"in e)||!U(e.params)?{}:nr(e.params)}function Ss(e){return"id"in e&&("result"in e||"error"in e)?"response":"id"in e&&typeof e.method=="string"?"request":"notification"}function ws(e){let n=String(e);try{let t=JSON.parse(n);if(!U(t))throw new Error("codex app-server sent non-object JSON-RPC message");return t}catch(t){ge("codex.app_server_frame_malformed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t),payload:gr(n,512),payloadChars:n.length});return}}function Sr(e,n){try{e(n)}catch(t){ge("codex.notification_callback_failed",{purpose:"codex.app_server",method:n.method,message:t instanceof Error?t.message:String(t)})}}function wr(e,n){try{e(n)}catch(t){ge("codex.close_callback_failed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t)})}}async function ks(e,n,t=2e3){let r=Date.now()+t,o;for(;Date.now()<=r;){let i=n(e);try{return await Os(i),i}catch(s){o=s instanceof Error?s:new Error(String(s)),Cs(i)}}throw o??new Error("websocket open failed")}function Cs(e){try{e.close()}catch{}}async function Es(e,n,t){let r=o=>Ps(e,o,n.method);try{if(t.size===0){r({jsonrpc:"2.0",id:n.id,error:{code:-32601,message:`unhandled Codex app-server request: ${n.method}`}});return}for(let o of t){let i=await o(n);if(i!==void 0){r({jsonrpc:"2.0",id:n.id,result:i});return}}r({jsonrpc:"2.0",id:n.id,error:{code:-32601,message:`unhandled Codex app-server request: ${n.method}`}})}catch(o){r({jsonrpc:"2.0",id:n.id,error:{code:-32e3,message:o instanceof Error?o.message:String(o)}})}}function Ps(e,n,t){let r=JSON.stringify(n);Ie({direction:"commander_to_codex",captureKind:"response",message:n,rawText:r,extraMetadata:{requestMethod:t}}),e.send(r)}async function Ts(e,n){let t=await Tr(e,n,{jsonrpc:"2.0",id:"initialize",method:"initialize",params:{clientInfo:{name:"kandan-local-codex-runner",version:"0.0.1"},capabilities:{experimentalApi:!0}}});if("error"in t)throw new Error(`codex initialize failed: ${t.error.message}`);let r={jsonrpc:"2.0",method:"initialized"};Ie({direction:"commander_to_codex",captureKind:"outgoing",message:r,rawText:JSON.stringify(r)}),e.send(JSON.stringify(r))}function Tr(e,n,t){return e.readyState!==WebSocket.OPEN?Promise.reject(new Error("codex app-server websocket is not open")):new Promise((r,o)=>{n.set(t.id,{resolve:r,reject:o}),Ie({direction:"commander_to_codex",captureKind:"request",message:t,rawText:JSON.stringify(t)}),e.send(JSON.stringify(t))})}function Os(e){return new Promise((n,t)=>{e.addEventListener("open",()=>n(),{once:!0}),e.addEventListener("error",()=>t(new Error("websocket open failed")),{once:!0})})}var lu=300*1e3;function Qe(e){let n=new URL(e);switch(n.protocol){case"ws:":n.protocol="http:";break;case"wss:":n.protocol="https:";break;case"http:":case"https:":break;default:throw new Error("--api-url must be ws://, wss://, http://, or https://")}return n.pathname="",n.search="",n.hash="",n.toString().replace(/\/$/,"")}function Ln(e){let n=e.fetchImpl??fetch,t=Qe(e.kandanUrl),r=e.authMode==="personal-agent-delegation"?"/api/v2/personal-agent-mcp":"/api/v2/local-runner-mcp",o=e.operatingMode??"text",i=async(s,a,d,u={})=>{let l=new URL(a,t),f={...d,operating_mode:o},y={method:s,headers:{authorization:`Bearer ${e.accessToken}`},...u.signal===void 0?{}:{signal:u.signal}};if(s==="GET")for(let[I,J]of Object.entries(f))J!=null&&l.searchParams.set(I,String(J));else y.headers={...y.headers,"content-type":"application/json"},y.body=JSON.stringify(f);let p=await n(l,y),g=await p.json(),c=U(g)?g:void 0;if(c===void 0)throw new Error(`Linzumi MCP API returned non-object JSON from ${a}`);if(p.ok&&c.ok===!0)return c;let v=typeof c.error=="string"?c.error:`HTTP ${p.status}`,T=typeof c.detail=="string"?c.detail:void 0;throw new Error(`Linzumi MCP API ${a} failed: ${v}${T===void 0?"":` detail=${T}`}`)};return{validateAuth:()=>i("GET",`${r}/validate`,{}),issueOnboardingDiscoveryToken:s=>i("POST",`${r}/onboarding-discovery-token`,s),getMessage:s=>i("GET",`${r}/message`,s),getThread:s=>i("GET",`${r}/thread`,s),getThreadTranscript:s=>i("GET",`${r}/thread-transcript`,s),getChannel:s=>i("GET",`${r}/channel`,s),searchWorkspace:s=>i("GET",`${r}/search`,s),askWorkspace:s=>i("POST",`${r}/ask`,s),aboutMe:s=>i("GET",`${r}/about-me`,s),webSearch:s=>i("GET",`${r}/web-search`,s),fetchUrl:s=>i("GET",`${r}/fetch-url`,s),listUiTargets:s=>i("GET",`${r}/ui-targets`,s),openUi:s=>i("POST",`${r}/open-ui`,s),getCodingJobMetadata:s=>i("GET",`${r}/coding-job-metadata`,s),listProjects:s=>i("GET",`${r}/projects`,s),getProjectTasks:s=>i("GET",`${r}/project-tasks`,s),createProjectTask:s=>i("POST",`${r}/project-tasks/create`,s),updateProjectTask:s=>i("POST",`${r}/project-tasks/update`,s),deleteProjectTask:s=>i("POST",`${r}/project-tasks/delete`,s),addProjectTaskDependency:s=>i("POST",`${r}/project-tasks/add-dependency`,s),removeProjectTaskDependency:s=>i("POST",`${r}/project-tasks/remove-dependency`,s),getCallTranscript:s=>i("GET",`${r}/call-transcript`,s),renameCodingJob:s=>i("POST",`${r}/coding-job-title`,s),upsertCodingJobPlan:(s,a)=>i("POST",`${r}/coding-job-plan`,s,a),replaceCodingJobPlanSteps:s=>i("POST",`${r}/coding-job-plan/steps`,s),updateCodingJobPlanStep:s=>i("POST",`${r}/coding-job-plan/step`,s),linkCodingJobPullRequest:s=>i("POST",`${r}/coding-job-primary-pr`,s),listVaultSecrets:s=>i("GET",`${r}/vault-secrets`,s),noteProjectDirectory:s=>i("POST",`${r}/discovered-project`,s),noteAgentConversation:s=>i("POST",`${r}/discovered-conversation`,s),noteOnboardingDiscoveryStatus:s=>i("POST",`${r}/discovery-status`,s),sendChannelMessage:s=>i("POST",`${r}/channel-message`,s),editMessage:s=>i("POST",`${r}/message/edit`,s),agentReply:s=>i("POST",`${r}/agent-reply`,s),scheduleWake:s=>i("POST",`${r}/scheduled-wakes`,s),cancelWake:s=>i("POST",`${r}/scheduled-wakes/cancel`,s),declineDocumentAction:s=>i("POST",`${r}/agent/decline-document-action`,s),agentTurnProgress:s=>i("POST",`${r}/agent-turn-progress`,s),agentDocumentTool:s=>i("POST",`${r}/agent/document-tool`,s),agentTopicTool:s=>i("POST",`${r}/agent/topic-tool`,s),agentListCodingJobs:s=>i("GET",`${r}/agent/coding-jobs`,s),agentStartCodingJob:s=>i("POST",`${r}/agent/start-coding-job`,s),agentSpawnChildJob:s=>i("POST",`${r}/agent/spawn-child-job`,s),agentArchiveChildJob:s=>i("POST",`${r}/agent/archive-child-job`,s),agentUnarchiveChildJob:s=>i("POST",`${r}/agent/unarchive-child-job`,s),agentInterruptCodingJob:s=>i("POST",`${r}/agent/interrupt-coding-job`,s),agentSendCodingJobMessage:s=>i("POST",`${r}/agent/send-coding-job-message`,s),agentDiscoverCodingJobs:s=>i("GET",`${r}/agent/discover-coding-jobs`,s),agentReadCodingJobThread:s=>i("GET",`${r}/agent/coding-job-thread`,s),agentResolveJobApproval:s=>i("POST",`${r}/agent/resolve-job-approval`,s),agentArchiveCodingJob:s=>i("POST",`${r}/agent/archive-coding-job`,s),agentUnarchiveCodingJob:s=>i("POST",`${r}/agent/unarchive-coding-job`,s),agentSetThreadStatus:s=>i("POST",`${r}/agent/set-thread-status`,s),agentCreateChannel:s=>i("POST",`${r}/agent/create-channel`,s),agentRenameChannel:s=>i("POST",`${r}/agent/rename-channel`,s),agentArchiveChannel:s=>i("POST",`${r}/agent/archive-channel`,s),agentUnarchiveChannel:s=>i("POST",`${r}/agent/unarchive-channel`,s),agentAddReaction:s=>i("POST",`${r}/agent/add-reaction`,s),agentRemoveReaction:s=>i("POST",`${r}/agent/remove-reaction`,s),agentPinMessage:s=>i("POST",`${r}/agent/pin-message`,s),agentUnpinMessage:s=>i("POST",`${r}/agent/unpin-message`,s),prepareMessageUploads:s=>i("POST",`${r}/message-uploads/prepare`,s),attachMessageFiles:s=>i("POST",`${r}/message-files/attach`,s),prepareCustomEmoji:s=>i("POST",`${r}/custom-emoji/prepare`,s),renameCustomEmoji:s=>i("POST",`${r}/custom-emoji/rename`,s),sendThreadReply:s=>i("POST",`${r}/thread-reply`,s),sendDm:s=>i("POST",`${r}/dm`,s),dmOwner:s=>i("POST",`${r}/dm-owner`,s),getVaultValues:s=>i("POST",`${r}/vault-values`,s)}}import{existsSync as As,mkdirSync as hu,readFileSync as Is,renameSync as _u,rmSync as xu,writeFileSync as bu}from"node:fs";import{homedir as Rs}from"node:os";import{dirname as wu,join as Ms}from"node:path";function js(){return Ms(Rs(),".linzumi","auth.json")}function $n(e,n=js()){if(!As(n))return;let t=Ns(Is(n,"utf8")),r=Qe(e),o=t.local_codex_runner?.[r];if(!(o===void 0||o.access_token.trim()==="")&&!(o.expires_at!==void 0&&Date.parse(o.expires_at)<=Date.now()))return{accessToken:o.access_token,kandanBaseUrl:r,issuedAt:o.issued_at,expiresAt:o.expires_at}}function Ns(e){let n=JSON.parse(e);if(typeof n!="object"||n===null||Array.isArray(n))throw new Error("Kandan auth cache must contain a JSON object");let t=n,r=t.local_codex_runner,o=t.personal_agent_delegation;if(r!==void 0&&(typeof r!="object"||r===null||Array.isArray(r)))throw new Error("Kandan auth cache local_codex_runner must be an object");if(o!==void 0&&(typeof o!="object"||o===null||Array.isArray(o)))throw new Error("Kandan auth cache personal_agent_delegation must be an object");return{version:1,local_codex_runner:Ls(r),personal_agent_delegation:Js(o)}}function Js(e){if(typeof e!="object"||e===null||Array.isArray(e))return;let n=e.access_token,t=e.issued_at,r=e.expires_at;if(!(typeof n!="string"||typeof t!="string"))return{access_token:n,issued_at:t,expires_at:typeof r=="string"?r:void 0}}function Ls(e){if(!(typeof e!="object"||e===null||Array.isArray(e)))return Object.fromEntries(Object.entries(e).flatMap(([n,t])=>{if(typeof t!="object"||t===null||Array.isArray(t))return[];let r=t.access_token,o=t.issued_at,i=t.expires_at;return typeof r!="string"||typeof o!="string"?[]:[[n,{access_token:r,issued_at:o,expires_at:typeof i=="string"?i:void 0}]]}))}var Un={mcpAuthFileContents:"LINZUMI_CLOUD_MCP_AUTH_JSON",llmProxyToken:"LINZUMI_CLOUD_LLM_PROXY_TOKEN"};function Or(e){let n;try{n=JSON.parse(Buffer.from(e,"base64").toString("utf8"))}catch{throw new Error("invalid guest cloud turn config payload (not base64 JSON)")}if(typeof n!="object"||n===null||Array.isArray(n))throw new Error("invalid guest cloud turn config payload");let t=n;for(let[r,o]of[["codexVersion",t.codexVersion],["sandbox",t.sandbox],["approvalPolicy",t.approvalPolicy],["kandanUrl",t.kandanUrl],["cwd",t.cwd]])if(typeof o!="string"||o==="")throw new Error(`invalid guest cloud turn config payload (${r} missing)`);if(!Array.isArray(t.input))throw new Error("invalid guest cloud turn config payload (input)");if(typeof t.appServerPort!="number"||!Number.isInteger(t.appServerPort))throw new Error("invalid guest cloud turn config payload (appServerPort)");return t}var te="/home/agent",$s=`${te}/.linzumi-provisioned`;var Dn="/dev/shm/linzumi",$u=`${Dn}/codex`,Uu=`${Dn}/mcp-auth.json`;var Du=`${Dn}/codex.env`;var Vu=`${te}/cloud-supervisor.mjs`,Ar=`${te}/mcp-server.mjs`,Fn=`${te}/.secrets`,zn=`${Fn}/mcp-auth.json`,Ze=`${te}/.codex`,Ir=`${Ze}/linzumi-thread-map.json`;var qn=`${te}/.turn-heartbeats`,Rr=5e3,Us=/^[A-Za-z0-9-]{8,64}$/;function Gn(e){if(!Us.test(e))throw new Error(`invalid cloud turn nonce: ${JSON.stringify(e.slice(0,80))}`)}var Bs=3e4,Ws=200,Hs=18e4,jr="LINZUMI_GUEST_MODEL_CALL_LIVENESS_MS",Ks=15*6e4,Nr="LINZUMI_GUEST_ACTIVE_LOOP_BUDGET_MS",Ye=2147483647;function Qs(e){let n=e[Nr];if(n===void 0)return Ks;let t=Number(n);if(n.trim()===""||!Number.isSafeInteger(t)||t<=0||t>Ye)throw new Error(`${Nr} must be an integer number of milliseconds between 1 and ${Ye}, got ${JSON.stringify(n)}`);return t}var Bn=class extends Error{code="active_loop_budget_exceeded";budgetMs;constructor(n){super(`active_loop_budget_exceeded: guest turn exceeded the ${n}ms wall-clock budget; killed the guest turn`),this.name="GuestActiveLoopBudgetExceeded",this.budgetMs=n}};function Zs(e){let n=e[jr];if(n===void 0)return Hs;let t=Number(n);if(n.trim()===""||!Number.isSafeInteger(t)||t<=0)throw new Error(`${jr} must be a positive integer number of milliseconds, got ${JSON.stringify(n)}`);return t}var Wn=class extends Error{code="guest_turn_liveness_failure";windowMs;constructor(n){super(`guest_turn_liveness_failure: zero upstream model calls for ${n}ms; killed the guest turn`),this.name="GuestTurnLivenessFailure",this.windowMs=n}};function Xs(e,n,t){if(e.method!=="thread/tokenUsage/updated")return;let r=w(e.params)??{};if(h(r.threadId)!==n||h(r.turnId)!==t)return;let o=me(w(w(r.tokenUsage)?.total)?.totalTokens),i=me(w(w(r.tokenUsage)?.last)?.totalTokens);if(!(o===void 0||o<0))return{totalTokens:o,priorCallTotalTokens:i!==void 0&&i>=0&&i<=o?o-i:void 0}}function re(e){return e.replace(/\bsmk_[A-Za-z0-9._-]+/g,"smk_[REDACTED]").replace(/\b(sk|lz|tok|bearer)[-_][A-Za-z0-9._-]{8,}/gi,"$1_[REDACTED]")}var Vn=64*1024;function Ys(e,n){let t=n.now??Date.now,r=Buffer.alloc(0),o=null,i=null,s=a=>{let d=Buffer.isBuffer(a)?a:Buffer.from(a,"utf8");r=Buffer.concat([r,d]);let u=Vn*2;r.byteLength>u&&(r=r.subarray(r.byteLength-u))};return e.stdout?.on("data",s),e.stderr?.on("data",s),e.once("exit",(a,d)=>{o=a,i=d??null}),{evidence:a=>{let d=Buffer.from(re(r.toString("utf8")),"utf8"),u=d.byteLength<=Vn?d:d.subarray(d.byteLength-Vn);return{marker:"guest_turn_failure_evidence",empty_output:r.byteLength===0,output_tail:u.toString("utf8"),exit_code:o,signal:i,duration_ms:Math.max(0,t()-n.startedAtMs),model_call_count:a}}}}var en;function ea(e){en=e;try{ye(Lr(e),{recursive:!0}),Re(e,"")}catch{en=void 0}}function D(e){let n=`${JSON.stringify(e)}
|
|
13
13
|
`;if(process.stdout.write(n),en!==void 0)try{Fs(en,n)}catch{}}function Xe(e,n,t,r){D({phase:"exit",ok:e,reason:re(n),turnMs:t,...r===void 0?{}:{evidence:r}})}function na(e){return{id:e.id,name:e.name,baseUrl:e.baseUrl,envKey:e.envKey,wireApi:e.wireApi,...e.httpHeaders===void 0?{}:{httpHeaders:{...e.httpHeaders}},...e.envHttpHeaders===void 0?{}:{envHttpHeaders:{...e.envHttpHeaders}}}}function ta(e){if(e.sandbox!=="read-only")throw new Error(`guest cloud turn requires sandbox "read-only", got ${JSON.stringify(e.sandbox)}`);if(e.approvalPolicy!=="never")throw new Error(`guest cloud turn requires approvalPolicy "never", got ${JSON.stringify(e.approvalPolicy)}`)}function ra(e,n=Ze){let t=xr({command:"node",argsPrefix:[Ar],kandanUrl:e.kandanUrl,authFilePath:zn,ownerUsername:e.ownerUsername,operatingMode:"text",cwd:e.cwd,threadId:e.threadId,agentSession:!0});return kr(`ws://127.0.0.1:${e.appServerPort}`,{model:e.model,reasoningEffort:e.reasoningEffort,mcpServers:[t],neverEquivalentGranularApprovalPolicy:!0,...e.modelProvider===void 0?{}:{modelProvider:na(e.modelProvider)},env:{CODEX_HOME:n,...$r(e)}})}function $r(e){let n=process.env[Un.llmProxyToken];return e.modelProvider===void 0||n===void 0||n===""?{}:{[e.modelProvider.envKey]:n}}function oa(e,n){let t=process.env[Un.mcpAuthFileContents];if(t===void 0||t==="")throw new Error("guest cloud turn missing MCP auth-cache (LINZUMI_CLOUD_MCP_AUTH_JSON)");ye(e,{recursive:!0,mode:448}),Mr(e,448),Re(n,t,{mode:384}),Mr(n,384)}function ia(e){try{Jr(e,{recursive:!0,force:!0})}catch{}}var sa=64;function Ur(e){try{let n=JSON.parse(zs(e,"utf8"));if(typeof n!="object"||n===null||Array.isArray(n))return{};let t={};for(let[r,o]of Object.entries(n))typeof o=="string"&&o!==""&&(t[r]=o);return t}catch{return{}}}function aa(e,n,t){try{let r=Ur(e);delete r[n];let o=Object.entries(r),i=o.slice(Math.max(0,o.length-(sa-1)));i.push([n,t]),ye(Lr(e),{recursive:!0}),Re(e,JSON.stringify(Object.fromEntries(i)))}catch{}}var da=new Set(["turn/completed","turn/failed","turn/aborted"]),ua=2e3;function Dr(e){let n=w(w(e)?.item);if(n===void 0||h(n.type)!=="agentMessage")return"";let t=h(n.text);return t!==void 0&&t!==""?t:(Ke(n.content)??[]).map(i=>{let s=w(i);if(s===void 0)return;let a=h(s.type);if(!(a!=="text"&&a!=="output_text"&&a!=="input_text"))return h(s.text)??h(s.content)}).filter(i=>i!==void 0&&i!=="").join(`
|