@linzumi/cli 1.0.201 → 1.0.203
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 +154 -153
- package/dist/impl-ts/cloud-supervisor.mjs +1 -1
- package/dist/impl-ts/index.js +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ var br=Object.create;var Pn=Object.defineProperty;var vr=Object.getOwnPropertyDe
|
|
|
7
7
|
`)+`\r
|
|
8
8
|
\r
|
|
9
9
|
`+t)}function Y(e,n,t,r,o,s){if(e.listenerCount("wsClientError")){let i=new Error(o);Error.captureStackTrace(i,Y),e.emit("wsClientError",i,t,n)}else be(t,r,o,s)}});import{spawn as li}from"node:child_process";import{appendFileSync as ui,rmSync as pr,writeFileSync as ke,mkdirSync as ue,chmodSync as fr,readFileSync as fi,readdirSync as pi,statSync as mi,unlinkSync as gi}from"node:fs";import{dirname as mr,join as qe}from"node:path";var Bo=fe(vt(),1),Go=fe(en(),1),Wo=fe(rn(),1),fn=fe(Je(),1),Ho=fe(At(),1);function J(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function It(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 T(e){return e!==void 0&&J(e)?e:void 0}function Le(e){return Array.isArray(e)?e:void 0}function _(e){return typeof e=="string"&&e.trim()!==""?e.trim():void 0}import{appendFileSync as es,openSync as Sa}from"node:fs";import{homedir as Jt}from"node:os";import{dirname as ns,join as $t,resolve as ts,sep as rs}from"node:path";import{mkdirSync as os}from"node:fs";var U={_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 Qo=new Map(U.events),Zo=new Map(U.events.map(([e,n])=>[n,e])),Mt=new Map(U.keys),jt=new Map(U.keyPrimaryLegacy),Xo=new Map(U.values),Yo=new Map(U.values.map(([e,n])=>[n,e])),ya={eventCanonicalByLegacy:Qo,eventLegacyByCanonical:Zo,keyCanonicalByLegacy:Mt,keyPrimaryLegacyByCanonical:jt,valueCanonicalByLegacy:Xo,valueLegacyByCanonical:Yo,originator:U.originator,topic:U.topic};function Nt(e){let n=new Set(e);for(let t of e){let r=Mt.get(t);r!==void 0&&n.add(r);let o=jt.get(t);o!==void 0&&n.add(o)}return n}var Rt=new Map;for(let[e,n]of U.keys){let t=Rt.get(n)??[];t.push(e),Rt.set(n,t)}var ee="<SENSITIVE_DATA>",Lt=Nt(new Set(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"])),ss=new Set(["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"]);function is(e){if(process.env.VITEST===void 0)return;let n=$t(Jt(),".linzumi"),t=ts(e);if(t===n||t.startsWith(`${n}${rs}`))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 ce(e,n,t={}){let r=t.logFile??as();is(r);try{os(ns(r),{recursive:!0}),es(r,`${JSON.stringify({ts:new Date().toISOString(),event:e,...t.sessionId===void 0?{}:{sessionId:t.sessionId},...ds(n)})}
|
|
10
|
-
`,"utf8")}catch{return}}function as(){let e=process.env.LINZUMI_CLI_AUDIT_LOG?.trim();return e===void 0||e===""?$t(Jt(),".linzumi","logs","command-events.jsonl"):e}function ds(e){return Dt(e)}function pn(e,n){return us(n)?ee:typeof e=="string"?Ut(e):Array.isArray(e)?n==="args"?cs(e):e.map(t=>pn(t,void 0)):e!==null&&typeof e=="object"?Dt(e):e}function Dt(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"?ee:pn(o,r)]))}function cs(e){let n=!1;return e.map(t=>{if(typeof t!="string")return n=!1,pn(t,void 0);if(n)return n=!1,ee;let[r,o]=ls(t);return ss.has(r)?o===void 0?(n=!0,t):`${r}=${ee}`:Ut(t)})}function ls(e){let n=e.indexOf("=");return n===-1?[e,void 0]:[e.slice(0,n),e.slice(n+1)]}function us(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 Ut(e){return fs(e).replace(/\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,ee)}function fs(e){let n;try{n=new URL(e)}catch{return ps(e)}for(let t of[...n.searchParams.keys()])Lt.has(t.toLowerCase())&&n.searchParams.set(t,ee);return n.toString()}function ps(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),s=t===-1?"":e.slice(t),i=new URLSearchParams(o),a=!1;for(let d of[...i.keys()])Lt.has(d.toLowerCase())&&(i.set(d,ee),a=!0);switch(a){case!0:return`${r}?${i.toString()}${s}`;case!1:return e}}function zt(e){let n=e.channelSession;return{...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{config:{model_reasoning_effort:n.reasoningEffort}},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:mn(n.approvalPolicy,n.sandbox,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...n.sandbox===void 0?{}:{sandbox:n.sandbox}}}function Ft(e){let n=e.channelSession;return{cwd:e.cwd,...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{effort:n.reasoningEffort},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:mn(n.approvalPolicy,n.sandbox,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...n.sandbox===void 0?{}:{sandboxPolicy:gs(n.sandbox,e.cwd)}}}function ms(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:
|
|
10
|
+
`,"utf8")}catch{return}}function as(){let e=process.env.LINZUMI_CLI_AUDIT_LOG?.trim();return e===void 0||e===""?$t(Jt(),".linzumi","logs","command-events.jsonl"):e}function ds(e){return Dt(e)}function pn(e,n){return us(n)?ee:typeof e=="string"?Ut(e):Array.isArray(e)?n==="args"?cs(e):e.map(t=>pn(t,void 0)):e!==null&&typeof e=="object"?Dt(e):e}function Dt(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"?ee:pn(o,r)]))}function cs(e){let n=!1;return e.map(t=>{if(typeof t!="string")return n=!1,pn(t,void 0);if(n)return n=!1,ee;let[r,o]=ls(t);return ss.has(r)?o===void 0?(n=!0,t):`${r}=${ee}`:Ut(t)})}function ls(e){let n=e.indexOf("=");return n===-1?[e,void 0]:[e.slice(0,n),e.slice(n+1)]}function us(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 Ut(e){return fs(e).replace(/\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,ee)}function fs(e){let n;try{n=new URL(e)}catch{return ps(e)}for(let t of[...n.searchParams.keys()])Lt.has(t.toLowerCase())&&n.searchParams.set(t,ee);return n.toString()}function ps(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),s=t===-1?"":e.slice(t),i=new URLSearchParams(o),a=!1;for(let d of[...i.keys()])Lt.has(d.toLowerCase())&&(i.set(d,ee),a=!0);switch(a){case!0:return`${r}?${i.toString()}${s}`;case!1:return e}}function zt(e){let n=e.channelSession;return{...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{config:{model_reasoning_effort:n.reasoningEffort}},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:mn(n.approvalPolicy,n.sandbox,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...n.sandbox===void 0?{}:{sandbox:n.sandbox}}}function Ft(e){let n=e.channelSession;return{cwd:e.cwd,...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{effort:n.reasoningEffort},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:mn(n.approvalPolicy,n.sandbox,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...n.sandbox===void 0?{}:{sandboxPolicy:gs(n.sandbox,e.cwd)}}}function ms(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 qt={granular:{sandbox_approval:!1,rules:!1,skill_approval:!1,request_permissions:!1,mcp_elicitations:!0}};function mn(e,n,t){let r=ms(e,n,t);return r==="never"&&n==="danger-full-access"?qt:r==="on-failure"?"on-request":r}function Vt(e,n,t){try{return mn(e,n,t)===qt}catch{return!1}}function gs(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 Gt(e){let n=hs(e);if(!(n===void 0||n===""))return{itemKey:_(e.itemId)??_(e.item_id)??_(T(e.item)?.id)??"assistant-message",turnId:_(e.turnId)??_(e.turn_id)??_(T(e.turn)?.id),delta:n}}function Wt(e){let n=Kt(e);if(!(n===void 0||n===""))return{itemKey:_(e.itemId)??_(e.item_id)??_(T(e.item)?.id)??"reasoning",turnId:_(e.turnId)??_(e.turn_id)??_(T(e.turn)?.id),delta:n}}function hs(e){return Kt(e)}function ys(e){return e>=55296&&e<=56319}function _s(e){return e>=56320&&e<=57343}function Ht(e,n){let t=Math.min(Math.max(0,n),e.length),r=t>0&&t<e.length&&ys(e.charCodeAt(t-1))&&_s(e.charCodeAt(t))?t-1:t;return e.slice(0,r)}function Kt(e){let n=e.delta;return typeof n=="string"?n:J(n)?_(n.text)??_(n.content)??_(n.delta)??_(n.message):_(e.text)??_(e.content)??_(e.message)}import{mkdirSync as xs,appendFileSync as bs}from"node:fs";import{dirname as vs}from"node:path";function Qt(e){return JSON.stringify(e)}var ve,Ss=/(^|[_-])(token|secret|api[_-]?key|authorization|cookie|private[_-]?key|login[_-]?url)([_-]|$)/iu;function gn(){return Zt()!==void 0}function hn(e){let n=Zt();if(n===void 0)return;let t=ws(n),r=ks(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:Se(e.captureMetadata)},...r.transforms.length===0?e.transforms===void 0?{}:{transforms:e.transforms}:{transforms:[...e.transforms??[],...r.transforms]}};t.nextOrdinal+=1,bs(n,`${Qt(o)}
|
|
11
11
|
`,"utf8")}function Zt(){let e=process.env.LINZUMI_AGENT_REPLAY_RECORD_FILE?.trim();return e===void 0||e===""?void 0:e}function ws(e){return ve!==void 0&&ve.path===e||(xs(vs(e),{recursive:!0}),ve={path:e,startedAtMs:Date.now(),nextOrdinal:0}),ve}function ks(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:Se(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(Se(t,"$.rawText",n))}catch{return e}}function Se(e,n="$",t=[]){if(Array.isArray(e))return e.map((o,s)=>Se(o,`${n}[${s}]`,t));if(!J(e))return e;let r=Object.entries(e).map(([o,s])=>{let i=`${n}.${o}`;return Ss.test(o)?(t.push({type:"credential_redaction",path:i}),[o,"[REDACTED]"]):[o,s===void 0?void 0:Se(s,i,t)]});return Object.fromEntries(r)}function Xt(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 yn(e,n){return["-c",`mcp_servers.${e.name}.command=${JSON.stringify(e.command)}`,"-c",`mcp_servers.${e.name}.args=${Ps(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=${Yt}`]:[]]}function Ps(e){return`[${e.map(n=>JSON.stringify(n)).join(", ")}]`}var Yt=2147483,Wa=Yt*1e3-5*6e4;var Ka=["# 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 er(){return["-c",'mcp_oauth_credentials_store="file"',"-c",'cli_auth_credentials_store="file"']}var Cs=5*6e4;var Ts=(()=>{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 As(e){let n=e;if(typeof n.ping=="function"&&n.readyState===WebSocket.OPEN)try{n.ping()}catch{}}function rr(e,n={}){return["app-server",...Fs(n),"--listen",e]}var Is=["-c","features.apps=false"],Rs="LINZUMI_CODEX_STREAM_IDLE_TIMEOUT_MS",Ms="LINZUMI_CODEX_STREAM_IDLE_TIMEOUT_SOURCE",js=5e3,Ns=6e5,Js=["flag","env","server_default"];function $s(e){return Js.find(n=>n===e)}function Ls(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<js||t>Ns?{state:"invalid",raw:e}:{state:"applied",timeoutMs:t}}function Ds(e=process.env){let n=Ls(e[Rs]);if(n.state==="unset")return n;let t=$s(e[Ms]?.trim())??"env";return{...n,source:t}}function Us(e=process.env){let n=Ds(e);return n.state==="applied"?n.timeoutMs:void 0}var or="openai-linzumi";function sr(){let e=or;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 zs(e){let n=or;return[...sr(),"-c",`model_providers.${n}.stream_idle_timeout_ms=${e}`,"-c",`model_provider="${n}"`]}function Fs(e,n=process.env){let t=Us(n);return[...Is,...er(),...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=>yn(r,{neverEquivalentGranularApprovalPolicy:e.neverEquivalentGranularApprovalPolicy===!0})),...e.modelProvider===void 0?t===void 0?sr():zs(t):qs(e.modelProvider,t)]}function qs(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 ir(e,n=t=>new fn.default(t)){let t=await Hs(e,n),r=new Map,o=new Set,s=new Set,i=[],a=new Set,d={nextId:1,closeError:void 0},c=u=>{let m=new Error(u);r.forEach(l=>l.reject(m)),r.clear()},f=setInterval(()=>As(t),Ts);f.unref?.();let p=u=>{if(clearInterval(f),c(u),d.closeError===void 0){d.closeError=new Error(u);for(let m of a)tr(m,d.closeError);a.clear()}};return t.addEventListener("close",()=>p("codex app-server websocket closed")),t.addEventListener("error",()=>p("codex app-server websocket closed")),t.addEventListener("message",u=>{let m=String(u.data),l=Ws(m);if(l===void 0){Vs(m);return}if(we({direction:"codex_to_commander",captureKind:Gs(l),message:l,rawText:m}),"id"in l&&("result"in l||"error"in l)){let x=r.get(l.id);x!==void 0&&(r.delete(l.id),x.resolve(l));return}if("id"in l&&typeof l.method=="string"){Qs(t,l,s);return}if(!("id"in l)&&typeof l.method=="string"){let x=l;o.size===0?i.push(x):o.forEach(P=>nr(P,x))}}),await Xs(t,r),{request:(u,m)=>{let l=d.nextId;return d.nextId+=1,ar(t,r,m===void 0?{jsonrpc:"2.0",id:l,method:u}:{jsonrpc:"2.0",id:l,method:u,params:m})},notify:(u,m)=>{let l=m===void 0?{jsonrpc:"2.0",method:u}:{jsonrpc:"2.0",method:u,params:m};we({direction:"commander_to_codex",captureKind:"outgoing",message:l,rawText:JSON.stringify(l)}),t.send(JSON.stringify(l))},onNotification:u=>{o.add(u),i.splice(0).forEach(m=>nr(u,m))},onRequest:u=>{s.add(u)},onClose:u=>{if(d.closeError!==void 0){tr(u,d.closeError);return}a.add(u)},isClosed:()=>d.closeError!==void 0,close:()=>{clearInterval(f),t.close()}}}function we(e){gn()&&hn({provider:"codex-app-server",captureKind:e.captureKind,rawText:e.rawText,rawValue:{message:e.message},captureMetadata:{direction:e.direction,capturedAtMs:Date.now(),capturePid:process.pid,...Bs(e.message),...e.extraMetadata??{}}})}function Vs(e){gn()&&hn({provider:"codex-app-server",captureKind:"incoming",rawText:e,captureMetadata:{direction:"codex_to_commander",capturedAtMs:Date.now(),capturePid:process.pid,malformed:!0}})}function Bs(e){return!("params"in e)||!J(e.params)?{}:It(e.params)}function Gs(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(!J(t))throw new Error("codex app-server sent non-object JSON-RPC message");return t}catch(t){ce("codex.app_server_frame_malformed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t),payload:Ht(n,512),payloadChars:n.length});return}}function nr(e,n){try{e(n)}catch(t){ce("codex.notification_callback_failed",{purpose:"codex.app_server",method:n.method,message:t instanceof Error?t.message:String(t)})}}function tr(e,n){try{e(n)}catch(t){ce("codex.close_callback_failed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t)})}}async function Hs(e,n,t=2e3){let r=Date.now()+t,o;for(;Date.now()<=r;){let s=n(e);try{return await Ys(s),s}catch(i){o=i instanceof Error?i:new Error(String(i)),Ks(s)}}throw o??new Error("websocket open failed")}function Ks(e){try{e.close()}catch{}}async function Qs(e,n,t){let r=o=>Zs(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 s=await o(n);if(s!==void 0){r({jsonrpc:"2.0",id:n.id,result:s});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 Zs(e,n,t){let r=JSON.stringify(n);we({direction:"commander_to_codex",captureKind:"response",message:n,rawText:r,extraMetadata:{requestMethod:t}}),e.send(r)}async function Xs(e,n){let t=await ar(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"};we({direction:"commander_to_codex",captureKind:"outgoing",message:r,rawText:JSON.stringify(r)}),e.send(JSON.stringify(r))}function ar(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}),we({direction:"commander_to_codex",captureKind:"request",message:t,rawText:JSON.stringify(t)}),e.send(JSON.stringify(t))})}function Ys(e){return new Promise((n,t)=>{e.addEventListener("open",()=>n(),{once:!0}),e.addEventListener("error",()=>t(new Error("websocket open failed")),{once:!0})})}var Sd=300*1e3;function De(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 _n(e){let n=e.fetchImpl??fetch,t=De(e.kandanUrl),r=e.authMode==="personal-agent-delegation"?"/api/v2/personal-agent-mcp":"/api/v2/local-runner-mcp",o=e.operatingMode??"text",s=async(i,a,d,c={})=>{let f=new URL(a,t),p={...d,operating_mode:o},y={method:i,headers:{authorization:`Bearer ${e.accessToken}`},...c.signal===void 0?{}:{signal:c.signal}};if(i==="GET")for(let[M,$]of Object.entries(p))$!=null&&f.searchParams.set(M,String($));else y.headers={...y.headers,"content-type":"application/json"},y.body=JSON.stringify(p);let u=await n(f,y),m=await u.json(),l=J(m)?m:void 0;if(l===void 0)throw new Error(`Linzumi MCP API returned non-object JSON from ${a}`);if(u.ok&&l.ok===!0)return l;let x=typeof l.error=="string"?l.error:`HTTP ${u.status}`,P=typeof l.detail=="string"?l.detail:void 0;throw new Error(`Linzumi MCP API ${a} failed: ${x}${P===void 0?"":` detail=${P}`}`)};return{validateAuth:()=>s("GET",`${r}/validate`,{}),issueOnboardingDiscoveryToken:i=>s("POST",`${r}/onboarding-discovery-token`,i),getMessage:i=>s("GET",`${r}/message`,i),getThread:i=>s("GET",`${r}/thread`,i),getThreadTranscript:i=>s("GET",`${r}/thread-transcript`,i),getChannel:i=>s("GET",`${r}/channel`,i),searchWorkspace:i=>s("GET",`${r}/search`,i),askWorkspace:i=>s("POST",`${r}/ask`,i),aboutMe:i=>s("GET",`${r}/about-me`,i),webSearch:i=>s("GET",`${r}/web-search`,i),fetchUrl:i=>s("GET",`${r}/fetch-url`,i),listUiTargets:i=>s("GET",`${r}/ui-targets`,i),openUi:i=>s("POST",`${r}/open-ui`,i),getCodingJobMetadata:i=>s("GET",`${r}/coding-job-metadata`,i),listProjects:i=>s("GET",`${r}/projects`,i),getProjectTasks:i=>s("GET",`${r}/project-tasks`,i),createProjectTask:i=>s("POST",`${r}/project-tasks/create`,i),updateProjectTask:i=>s("POST",`${r}/project-tasks/update`,i),deleteProjectTask:i=>s("POST",`${r}/project-tasks/delete`,i),addProjectTaskDependency:i=>s("POST",`${r}/project-tasks/add-dependency`,i),removeProjectTaskDependency:i=>s("POST",`${r}/project-tasks/remove-dependency`,i),getCallTranscript:i=>s("GET",`${r}/call-transcript`,i),renameCodingJob:i=>s("POST",`${r}/coding-job-title`,i),upsertCodingJobPlan:(i,a)=>s("POST",`${r}/coding-job-plan`,i,a),replaceCodingJobPlanSteps:i=>s("POST",`${r}/coding-job-plan/steps`,i),updateCodingJobPlanStep:i=>s("POST",`${r}/coding-job-plan/step`,i),linkCodingJobPullRequest:i=>s("POST",`${r}/coding-job-primary-pr`,i),listVaultSecrets:i=>s("GET",`${r}/vault-secrets`,i),noteProjectDirectory:i=>s("POST",`${r}/discovered-project`,i),noteAgentConversation:i=>s("POST",`${r}/discovered-conversation`,i),noteOnboardingDiscoveryStatus:i=>s("POST",`${r}/discovery-status`,i),sendChannelMessage:i=>s("POST",`${r}/channel-message`,i),editMessage:i=>s("POST",`${r}/message/edit`,i),agentReply:i=>s("POST",`${r}/agent-reply`,i),agentTurnProgress:i=>s("POST",`${r}/agent-turn-progress`,i),agentDocumentTool:i=>s("POST",`${r}/agent/document-tool`,i),agentListCodingJobs:i=>s("GET",`${r}/agent/coding-jobs`,i),agentStartCodingJob:i=>s("POST",`${r}/agent/start-coding-job`,i),agentSpawnChildJob:i=>s("POST",`${r}/agent/spawn-child-job`,i),agentInterruptCodingJob:i=>s("POST",`${r}/agent/interrupt-coding-job`,i),agentSendCodingJobMessage:i=>s("POST",`${r}/agent/send-coding-job-message`,i),agentDiscoverCodingJobs:i=>s("GET",`${r}/agent/discover-coding-jobs`,i),agentReadCodingJobThread:i=>s("GET",`${r}/agent/coding-job-thread`,i),agentResolveJobApproval:i=>s("POST",`${r}/agent/resolve-job-approval`,i),agentArchiveCodingJob:i=>s("POST",`${r}/agent/archive-coding-job`,i),agentUnarchiveCodingJob:i=>s("POST",`${r}/agent/unarchive-coding-job`,i),agentSetThreadStatus:i=>s("POST",`${r}/agent/set-thread-status`,i),agentCreateChannel:i=>s("POST",`${r}/agent/create-channel`,i),agentRenameChannel:i=>s("POST",`${r}/agent/rename-channel`,i),agentArchiveChannel:i=>s("POST",`${r}/agent/archive-channel`,i),agentUnarchiveChannel:i=>s("POST",`${r}/agent/unarchive-channel`,i),agentAddReaction:i=>s("POST",`${r}/agent/add-reaction`,i),agentRemoveReaction:i=>s("POST",`${r}/agent/remove-reaction`,i),agentPinMessage:i=>s("POST",`${r}/agent/pin-message`,i),agentUnpinMessage:i=>s("POST",`${r}/agent/unpin-message`,i),prepareMessageUploads:i=>s("POST",`${r}/message-uploads/prepare`,i),attachMessageFiles:i=>s("POST",`${r}/message-files/attach`,i),prepareCustomEmoji:i=>s("POST",`${r}/custom-emoji/prepare`,i),renameCustomEmoji:i=>s("POST",`${r}/custom-emoji/rename`,i),sendThreadReply:i=>s("POST",`${r}/thread-reply`,i),sendDm:i=>s("POST",`${r}/dm`,i),dmOwner:i=>s("POST",`${r}/dm-owner`,i),getVaultValues:i=>s("POST",`${r}/vault-values`,i)}}import{existsSync as ei,mkdirSync as Od,readFileSync as ni,renameSync as Td,rmSync as Ad,writeFileSync as Id}from"node:fs";import{homedir as ti}from"node:os";import{dirname as jd,join as ri}from"node:path";function oi(){return ri(ti(),".linzumi","auth.json")}function xn(e,n=oi()){if(!ei(n))return;let t=si(ni(n,"utf8")),r=De(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 si(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:ai(r),personal_agent_delegation:ii(o)}}function ii(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 ai(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,s=t.expires_at;return typeof r!="string"||typeof o!="string"?[]:[[n,{access_token:r,issued_at:o,expires_at:typeof s=="string"?s:void 0}]]}))}var bn={mcpAuthFileContents:"LINZUMI_CLOUD_MCP_AUTH_JSON",llmProxyToken:"LINZUMI_CLOUD_LLM_PROXY_TOKEN"};function dr(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 ne="/home/agent",di=`${ne}/.linzumi-provisioned`;var vn="/dev/shm/linzumi",Kd=`${vn}/codex`,Qd=`${vn}/mcp-auth.json`;var Zd=`${vn}/codex.env`;var tc=`${ne}/cloud-supervisor.mjs`,cr=`${ne}/mcp-server.mjs`,Sn=`${ne}/.secrets`,wn=`${Sn}/mcp-auth.json`,Ue=`${ne}/.codex`,lr=`${Ue}/linzumi-thread-map.json`;var kn=`${ne}/.turn-heartbeats`,ur=5e3,ci=/^[A-Za-z0-9-]{8,64}$/;function En(e){if(!ci.test(e))throw new Error(`invalid cloud turn nonce: ${JSON.stringify(e.slice(0,80))}`)}var hi=3e4,yi=200;function le(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 Fe;function _i(e){Fe=e;try{ue(mr(e),{recursive:!0}),ke(e,"")}catch{Fe=void 0}}function z(e){let n=`${JSON.stringify(e)}
|
|
13
13
|
`;if(process.stdout.write(n),Fe!==void 0)try{ui(Fe,n)}catch{}}function ze(e,n,t){z({phase:"exit",ok:e,reason:le(n),turnMs:t})}function xi(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 bi(e){if(e.sandbox!=="danger-full-access")throw new Error(`guest cloud turn requires sandbox "danger-full-access", got ${JSON.stringify(e.sandbox)}`);if(e.approvalPolicy!=="never")throw new Error(`guest cloud turn requires approvalPolicy "never", got ${JSON.stringify(e.approvalPolicy)}`)}function vi(e,n=Ue){let t=Xt({command:"node",argsPrefix:[cr],kandanUrl:e.kandanUrl,authFilePath:wn,ownerUsername:e.ownerUsername,operatingMode:"text",cwd:e.cwd,threadId:e.threadId,agentSession:!0});return rr(`ws://127.0.0.1:${e.appServerPort}`,{model:e.model,reasoningEffort:e.reasoningEffort,mcpServers:[t],neverEquivalentGranularApprovalPolicy:Vt(e.approvalPolicy,e.sandbox),...e.modelProvider===void 0?{}:{modelProvider:xi(e.modelProvider)},env:{CODEX_HOME:n,...gr(e)}})}function gr(e){let n=process.env[bn.llmProxyToken];return e.modelProvider===void 0||n===void 0||n===""?{}:{[e.modelProvider.envKey]:n}}function Si(e,n){let t=process.env[bn.mcpAuthFileContents];if(t===void 0||t==="")throw new Error("guest cloud turn missing MCP auth-cache (LINZUMI_CLOUD_MCP_AUTH_JSON)");ue(e,{recursive:!0,mode:448}),fr(e,448),ke(n,t,{mode:384}),fr(n,384)}function wi(e){try{pr(e,{recursive:!0,force:!0})}catch{}}var ki=64;function hr(e){try{let n=JSON.parse(fi(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 Ei(e,n,t){try{let r=hr(e);delete r[n];let o=Object.entries(r),s=o.slice(Math.max(0,o.length-(ki-1)));s.push([n,t]),ue(mr(e),{recursive:!0}),ke(e,JSON.stringify(Object.fromEntries(s)))}catch{}}var Pi=new Set(["turn/completed","turn/failed","turn/aborted"]),Ci=2e3;function yr(e){let n=T(T(e)?.item);if(n===void 0||_(n.type)!=="agentMessage")return"";let t=_(n.text);return t!==void 0&&t!==""?t:(Le(n.content)??[]).map(s=>{let i=T(s);if(i===void 0)return;let a=_(i.type);if(!(a!=="text"&&a!=="output_text"&&a!=="input_text"))return _(i.text)??_(i.content)}).filter(s=>s!==void 0&&s!=="").join(`
|