@linzumi/cli 1.0.164 → 1.0.165

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.
@@ -281,7 +281,7 @@ Why bad: External image hosts are intentionally not auto-rendered; attach the im
281
281
  Use media directives only after upload/attach returns a Linzumi download URL.
282
282
  Keep "src" required, all other fields optional, and never exceed 10 embeds in one message.
283
283
  </media_reminder>
284
- </linzumi_markdown_media_guidance>`;function NG(e){switch(e){case"All":return!0;case"Coding":case"OnboardingDiscovery":return!1}}function GG(e){return e==="Voice"}function FG(e){return e.trim().replace(new RegExp("^:+"),"").replace(new RegExp(":+$"),"").toLowerCase()}function Sx(){return T.string().min(1).refine(e=>FG(e).length<=64,{message:"Custom emoji shortcode name must be at most 64 characters after trimming surrounding colons."})}function Kt(){return T.string().optional().describe("Workspace slug. Omit to use the authenticated token scope.")}function Mn(){return T.string().optional().describe("Channel slug. Omit to use the authenticated token scope.")}function jn(e){if(typeof e=="string")return e}function vx(e,t,r){let n=ao(e[t]);return n!==void 0?n:Sr(r+" "+t+" must be an object")}function DG(e){return e!==void 0?Array.isArray(e)?Ge(e,t=>{if(typeof t=="string")return t}):[]:[]}function qG(e){return e!==void 0?Array.isArray(e)?Ge(e,t=>{if(typeof t=="number")return t}):[]:[]}function wx(e){if(typeof e=="number")return e}function kx(e){let t={};t.name=e.record.name,t.command=e.record.command,t.cwd=e.record.cwd,t.ports=e.record.ports.map(o=>o),t.restart_on_branch_change=e.record.restartOnBranchChange,t.desired_state=Vh(e.record.desiredState),t.liveness=dx(e.liveness),t.port_health=e.portProbes.map(o=>{let a={};return a.port=o.port,a.listening=o.listening,a});let r=e.record.startedAtMs;t.started_at_ms=r!==void 0?r:null;let n=e.lastExit,i;if(n!==void 0){let o={},a=n.code;o.code=a!==void 0?a:null;let s=n.signal;o.signal=s!==void 0?s:null,o.at_ms=n.atMs,i=o}else i=null;return t.last_exit=i,t.log_path=e.record.logPath,t}function LG(e,t,r){e.registerTool("linzumi_dev_service_start","Start a long-running local dev server (npm run dev, storybook, docker compose up, ...) as a MANAGED SERVICE owned by the Linzumi runner. Use this instead of running dev servers in your own shell: a managed service survives the end of your turn and branch switches, is auto-restarted if it crashes, and its declared ports are health-probed and surfaced in the product. Calling start for an existing name declaratively RESTARTS it (e.g. after a checkout). Declare EVERY port the app serves from (primary plus HMR/asset/bundle sibling ports).",Object.fromEntries([["name",T.string().regex(new RegExp("^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$")).describe("Stable service name (slug), e.g. 'web' or 'storybook'. Reusing a name restarts that service.")],["command",T.string().min(1).describe("Shell command that runs the server in the foreground (never daemonize/screen/nohup it yourself), e.g. 'npm run dev'. Runs via the user's login shell.")],["cwd",T.string().optional().describe("Working directory for the service. Defaults to the session cwd.")],["ports",T.array(T.number().int().min(1).max(65535)).max(16).default([]).describe("Every TCP port this service listens on (primary AND related ports such as the Vite/HMR bundle port). Used for health probes and product visibility.")],["restart_on_branch_change",T.boolean().optional().describe("Restart the service automatically when the git branch of its cwd changes (for servers that go stale across checkouts).")],["wait_for_ports_ms",T.number().int().min(0).max(6e4).optional().describe("How long to wait for the declared ports to accept connections before returning (default 15000).")]]),async n=>{let i=jn(n.name),o=i!==void 0?i:"",a=jn(n.command),s=a!==void 0?a:"",l=jn(n.cwd),d=await px({scopeDir:r.scopeDir,definition:{name:o,command:s,cwd:l!==void 0?l:t,ports:qG(n.ports),restartOnBranchChange:se(n.restart_on_branch_change,!0)},ownerPid:r.ownerPid});if(d.TAG==="Ok"){let c=d._0,f=wx(n.wait_for_ports_ms),h=Date.now()+(f!==void 0?f:15e3),m=c.ports.length===0;for(;!m&&Date.now()<h;)m=(await Promise.all(c.ports.map(S=>Yh(S|0)))).every(S=>S),m||await yc(250);let _=(await Xh(r.scopeDir)).find(y=>y.record.name===c.name),g={};g.ok=!0;let b;if(_!==void 0)b=kx(_);else{let y={};y.name=c.name,b=y}return g.service=b,_!==void 0&&_.liveness!=="Running"&&(g.hint="The service is not (fully) serving its declared ports yet. Check linzumi_dev_service_logs before assuming it works."),kn(g)}let u={};return u.ok=!1,u.error=d._0,kn(u)}),e.registerTool("linzumi_dev_service_stop","Stop a managed dev service (SIGTERM, then SIGKILL after a grace period). The registration is kept so linzumi_dev_service_start can bring it back.",Object.fromEntries([["name",T.string().min(1).describe("Service name to stop.")]]),async n=>{let i=jn(n.name),o=i!==void 0?i:"",a=await Qh(r.scopeDir,o,void 0),s={};return a.TAG==="Ok"?(s.ok=!0,s.name=a._0.name,s.desired_state="stopped"):(s.ok=!1,s.error=a._0),kn(s)}),e.registerTool("linzumi_dev_service_status","List every managed dev service with liveness (running / unhealthy / exited / stopped), per-port health probes, and last exit. Live state - always check this before concluding a dev server is up or down.",{},async n=>{let i=await Xh(r.scopeDir),o={};return o.services=i.map(a=>kx(a)),kn(o)}),e.registerTool("linzumi_dev_service_logs","Read the tail of a managed dev service's combined stdout/stderr log.",Object.fromEntries([["name",T.string().min(1).describe("Service name.")],["max_bytes",T.number().int().min(256).max(65536).optional().describe("Tail size in bytes (default 16384).")]]),async n=>{let i=jn(n.name),o=i!==void 0?i:"",a=wx(n.max_bytes),s=_x(r.scopeDir,o,a!==void 0?a:16384),l={};return s!==void 0?(l.ok=!0,l.name=o,l.log_tail=s):(l.ok=!1,l.error="no log for service: "+o),kn(l)}),e.registerTool("linzumi_dev_service_remove","Stop a managed dev service AND delete its registration (it will not be resurrected on runner restart). Use stop instead when the user may want it back.",Object.fromEntries([["name",T.string().min(1).describe("Service name to remove.")]]),async n=>{let i=jn(n.name),o=i!==void 0?i:"",a=await hx(r.scopeDir,o),s={};return a.TAG==="Ok"?(s.ok=!0,s.name=a._0.name,s.removed=!0):(s.ok=!1,s.error=a._0),kn(s)})}function xx(e,t){let r=t.devServices,n=t.agentSession,i=t.ownerUsername,o=t.defaultThreadId,a=t.serviceUrl,s=t.cwd,l=t.toolScope,d=t.client,u;switch(l){case"All":case"Coding":u=!0;break;case"OnboardingDiscovery":u=!1;break}let c=async f=>kn(await f);switch(n&&(e.registerTool("linzumi_agent_reply","Post your single @linzumi reply for the current turn into the surface where you were mentioned. Call EXACTLY ONCE per turn with your final answer; the reply links to this working session automatically. Fails with already_replied on a second call and no_active_asker_binding when no turn is active.",Object.fromEntries([["body",T.string().min(1).describe("Plain-text reply body to post.")]]),async f=>{let h={},m=f.body;return h.body=m!==void 0?m:void 0,await c(d.agentReply(h))}),e.registerTool("linzumi_list_coding_jobs","List the coding jobs the current asker can see in this workspace: runner connections (online and recent) with their bound job threads. Live state - never answered from search.",{},async f=>await c(d.agentListCodingJobs({}))),e.registerTool("linzumi_start_coding_job","Start a coding job exactly as if the asking user clicked start: same runner/channel authorization, same pipeline. Returns status 'unavailable' with a reason when the runner cannot take the job (relay that honestly).",Object.fromEntries([["channel",T.string().describe("Channel slug to host the job thread.")],["runner_key",T.string().describe("Runner (computer) to run the job on.")],["cwd",T.string().describe("Working directory on the runner.")],["work_description",T.string().min(1).describe("What the job should do - the initial instruction.")],["model",T.string().optional().describe("Model override (optional).")],["model_provider",T.string().optional().describe("Model provider override, e.g. 'wafer' (optional).")],["execution_mode",T.enum(["raw","local_vm"]).optional().describe("Execution placement override (optional).")],["project_task_id",T.string().optional().describe("Project task item to bind the job to (task_id from linzumi_get_project_tasks). The task flips todo -> active and links to the new job.")]]),async f=>await c(d.agentStartCodingJob(f))),e.registerTool("linzumi_interrupt_coding_job","Interrupt a coding job: mode 'steer' (default) discards its queued follow-ups so your next message lands first; mode 'stop' terminates the current turn.",Object.fromEntries([["channel",T.string().describe("Channel slug hosting the job thread.")],["thread_id",T.string().uuid().describe("The job thread UUID.")],["mode",T.enum(["steer","stop"]).optional().describe("Interrupt mode; defaults to 'steer'.")]]),async f=>await c(d.agentInterruptCodingJob(f))),e.registerTool("linzumi_send_coding_job_message","Send a message into a coding job thread as the asking user (the job processes it like any human follow-up).",Object.fromEntries([["channel",T.string().describe("Channel slug hosting the job thread.")],["thread_id",T.string().uuid().describe("The job thread UUID.")],["body",T.string().min(1).describe("Message body to send.")]]),async f=>await c(d.agentSendCodingJobMessage(f))),e.registerTool("linzumi_read_coding_job_thread","Read a coding job's thread (asker-visible history) plus its workflow status metadata.",Object.fromEntries([["channel",T.string().describe("Channel slug hosting the job thread.")],["thread_id",T.string().uuid().describe("The job thread UUID.")],["limit",T.number().int().min(1).max(100).optional().describe("Maximum replies to return.")],["before_seq",T.number().int().positive().optional().describe("Return replies before this channel seq.")]]),async f=>await c(d.agentReadCodingJobThread(f))),e.registerTool("linzumi_resolve_job_approval","Resolve a coding job's pending approval request with the asking user's decision ('approve' or 'deny'). Only relays the asker's authority - never approve without their explicit instruction.",Object.fromEntries([["channel",T.string().describe("Channel slug hosting the job thread.")],["thread_id",T.string().uuid().describe("The job thread UUID.")],["source_seq",T.number().int().positive().describe("Channel seq of the message the approval request rides on.")],["request_id",T.string().describe("The approval request id.")],["decision",T.enum(["approve","deny"]).describe("The asker's decision.")]]),async f=>await c(d.agentResolveJobApproval(f))),e.registerTool("linzumi_archive_coding_job","Archive a coding job's thread (or any thread the asking user owns) so it leaves the active list; history is preserved. Do this when the asker says to archive a job or thread - never just promise it.",Object.fromEntries([["channel",T.string().describe("Channel slug hosting the thread.")],["thread_id",T.string().uuid().describe("The thread UUID to archive.")]]),async f=>await c(d.agentArchiveCodingJob(f))),e.registerTool("linzumi_unarchive_coding_job","Unarchive a previously archived coding job thread the asking user owns, returning it to the active list.",Object.fromEntries([["channel",T.string().describe("Channel slug hosting the thread.")],["thread_id",T.string().uuid().describe("The thread UUID to unarchive.")]]),async f=>await c(d.agentUnarchiveCodingJob(f))),e.registerTool("linzumi_set_thread_status","Set a thread's lifecycle status as the asking user: 'closed' marks it done, 'open' reopens it. Works on threads the asker owns.",Object.fromEntries([["channel",T.string().describe("Channel slug hosting the thread.")],["thread_id",T.string().uuid().describe("The thread UUID.")],["status",T.enum(["open","closed"]).describe("Replacement lifecycle status ('closed' = done).")]]),async f=>await c(d.agentSetThreadStatus(f))),e.registerTool("linzumi_create_channel","Create a new public channel in this workspace as the asking user. The slug is derived from the name.",Object.fromEntries([["name",T.string().min(1).describe("Channel name to create.")]]),async f=>await c(d.agentCreateChannel(f))),e.registerTool("linzumi_rename_channel","Rename a channel's display name as the asking user. The channel's URL slug stays stable.",Object.fromEntries([["channel",T.string().describe("Current channel slug to rename.")],["name",T.string().min(1).describe("New display name.")]]),async f=>await c(d.agentRenameChannel(f))),e.registerTool("linzumi_archive_channel","Archive a channel in this workspace as the asking user. History is preserved; the channel leaves the active sidebar.",Object.fromEntries([["channel",T.string().describe("Channel slug to archive.")]]),async f=>await c(d.agentArchiveChannel(f))),e.registerTool("linzumi_unarchive_channel","Unarchive a previously archived channel as the asking user.",Object.fromEntries([["channel",T.string().describe("Channel slug to unarchive.")]]),async f=>await c(d.agentUnarchiveChannel(f))),e.registerTool("linzumi_add_reaction","Add an emoji reaction to a channel message as the asking user. Accepts unicode emoji or a workspace :shortcode:.",Object.fromEntries([["channel",T.string().describe("Channel slug containing the message.")],["message_seq",T.number().int().positive().describe("Channel seq of the message to react to.")],["emoji",T.string().min(1).describe("Emoji to add (unicode or :shortcode:).")]]),async f=>await c(d.agentAddReaction(f))),e.registerTool("linzumi_remove_reaction","Remove the asking user's emoji reaction from a channel message.",Object.fromEntries([["channel",T.string().describe("Channel slug containing the message.")],["message_seq",T.number().int().positive().describe("Channel seq of the reacted message.")],["emoji",T.string().min(1).describe("Emoji to remove (unicode or :shortcode:).")]]),async f=>await c(d.agentRemoveReaction(f))),e.registerTool("linzumi_pin_message","Pin a channel message as the asking user. Thread replies re-point to their root message.",Object.fromEntries([["channel",T.string().describe("Channel slug containing the message.")],["message_seq",T.number().int().positive().describe("Channel seq of the message to pin.")]]),async f=>await c(d.agentPinMessage(f))),e.registerTool("linzumi_unpin_message","Remove a pin from a channel message as the asking user.",Object.fromEntries([["channel",T.string().describe("Channel slug containing the message.")],["message_seq",T.number().int().positive().describe("Channel seq of the pinned message.")]]),async f=>await c(d.agentUnpinMessage(f)))),l){case"All":e.registerTool("linzumi_get_message","Read one Linzumi message by scoped message_seq/message_id or a Linzumi message URL, with optional bounded before/after context.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["message_id",T.union([T.string(),T.number()]).optional().describe("Message seq inside the scoped channel.")],["message_seq",T.union([T.string(),T.number()]).optional().describe("Alias for message_id.")],["message_url",T.string().optional().describe("Full Linzumi message URL with #message-<seq>.")],["before",T.number().int().min(0).max(100).optional().describe("Number of visible messages before the target.")],["after",T.number().int().min(0).max(100).optional().describe("Number of visible messages after the target.")]]),async f=>await c(d.getMessage(f))),e.registerTool("linzumi_get_thread","Read one Linzumi thread by thread_id in the scoped channel, including the parent message and bounded replies.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",T.string().uuid().describe("Linzumi thread UUID.")],["limit",T.number().int().min(1).max(100).optional().describe("Maximum replies to return.")],["before_seq",T.number().int().positive().optional().describe("Return replies before this channel seq.")]]),async f=>await c(d.getThread(f))),e.registerTool("linzumi_get_thread_transcript","Read a Linzumi thread's full transcript as canonical IR nodes (user/assistant messages, command executions, file changes, tool calls, statuses), cursor-paginated over the complete history. Use the returned cursor with has_more to walk older pages.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",T.string().uuid().describe("Linzumi thread UUID.")],["limit",T.number().int().min(1).max(500).optional().describe("Maximum transcript nodes per page (default 200).")],["cursor",T.number().int().positive().optional().describe("Return nodes below this seq (the previous page reply cursor).")]]),async f=>await c(d.getThreadTranscript(f))),e.registerTool("linzumi_get_channel","Read scoped Linzumi channel metadata and bounded recent channel messages.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["limit",T.number().int().min(1).max(100).optional().describe("Maximum messages to return.")],["before_seq",T.number().int().positive().optional().describe("Return messages before this channel seq.")]]),async f=>await c(d.getChannel(f))),e.registerTool("linzumi_search_workspace","Search the Linzumi workspace with hybrid lexical+semantic retrieval, scoped to what the authorizing user can access. Returns scored content chunks with provenance (channel, thread, authored time) and a permalink to cite.",Object.fromEntries([["workspace",Kt()],["query",T.string().min(1).describe("Natural-language or keyword query to retrieve against.")],["limit",T.number().int().min(1).max(25).optional().describe("Maximum results to return (default 10, server-capped).")],["source_types",T.array(T.enum(["message","coding_job","github_pr","github_pr_review","github_check_run","github_workflow_run","github_diff","dictation","file"])).optional().describe("Restrict results to these corpora; omit for all.")],["authored_after",T.string().optional().describe("ISO8601 instant; only content authored at or after this time.")],["authored_before",T.string().optional().describe("ISO8601 instant; only content authored at or before this time.")],["repo",T.string().optional().describe("Restrict GitHub-sourced results to one repository by full name (owner/name).")],["check_status",T.enum(["pending","success","failed"]).optional().describe("Restrict check and workflow results to one conclusion bucket.")]]),async f=>await c(d.searchWorkspace(f))),e.registerTool("linzumi_ask_workspace",'Ask the Linzumi workspace a natural-language question and get a synthesized, citation-backed answer over what the authorizing user can access. Costs an LLM call on cache misses, so prefer linzumi_search_workspace for simple lookups. A "refused" status means there was not enough accessible evidence - treat it as "the workspace does not know", never retry verbatim.',Object.fromEntries([["workspace",Kt()],["question",T.string().min(1).max(2e3).describe("Natural-language question to answer with citations.")],["channel",T.string().optional().describe("Optional channel slug providing conversational context; never widens access.")],["allow_cached",T.boolean().optional().describe("Allow serving a cached synthesis when the evidence set is unchanged (default true). Set false to force fresh synthesis.")]]),async f=>await c(d.askWorkspace(f))),e.registerTool("linzumi_about_me","Read what the authorizing user has told Linzumi about themselves: their profile facts (homes, unit preferences, and other self-maintained attributes) plus their derived current timezone. Use it to personalize answers (e.g. pick the right city for weather, use their preferred units). Predicates may have multiple active values; prefer the one consistent with the derived timezone.",{},async f=>await c(d.aboutMe(f)));break;case"Coding":case"OnboardingDiscovery":break}switch(u&&(e.registerTool("linzumi_web_search","Search the public web for live or external information: news, current events, weather, prices, third-party API docs, research. Returns result titles, URLs, and snippets. Use this whenever the answer lives outside the Linzumi workspace; follow up with linzumi_fetch_url to read a result page.",Object.fromEntries([["query",T.string().min(1).describe("Web search query (natural language or keywords).")],["limit",T.number().int().min(1).max(10).optional().describe("Maximum results to return (default 8, server-capped).")]]),async f=>await c(d.webSearch(f))),e.registerTool("linzumi_fetch_url","Fetch one public http(s) URL and return its readable text content (HTML is reduced to plain text; large pages are truncated). Use it to read pages found via linzumi_web_search or any public docs/API reference. Only public addresses are reachable - private/internal hosts are rejected with url_not_allowed.",Object.fromEntries([["url",T.string().min(1).describe("Absolute public http(s) URL to fetch.")]]),async f=>await c(d.fetchUrl(f)))),l){case"All":e.registerTool("linzumi_list_ui_targets","List every UI surface you can ask the user to open in their own Linzumi window (channels, DMs, threads, projects, coding jobs, computers, catch-up, activity, settings tabs, pane layouts) with the structured args each kind takes. Use UI control only when the user asks for help or asks to be shown something.",{},async f=>await Dh(d.listUiTargets({}))),e.registerTool("linzumi_open_ui","Ask the user to open one whitelisted UI surface in their own already-open Linzumi window. A consent toast appears in THEIR session; navigation happens only if they tap Open. The call blocks until they decide and returns status opened/dismissed/expired - or error no_active_ui_session when they have no Linzumi window open (tell them to open Linzumi), or invalid_target with a detail. Use it only when the user asks for help or asks to be shown something; kinds and per-kind args come from linzumi_list_ui_targets.",Object.fromEntries([["kind",T.string().min(1).describe("Target kind from linzumi_list_ui_targets (e.g. settings_workspace, channel, pane_layout).")],["args",T.record(T.unknown()).optional().describe("Structured per-kind args from linzumi_list_ui_targets (never a URL - the server computes every path).")],["workspace",Kt()]]),async f=>await Dh(d.openUi(pi(f,o))));break;case"Coding":case"OnboardingDiscovery":break}if(u){let f=()=>T.string().uuid().optional().describe("Linzumi thread UUID. Defaults to the active coding job thread.");e.registerTool("linzumi_get_coding_job_metadata","Read the active coding job workflow metadata for a thread, including the agent-owned goal, ordered plan steps, step lock versions, and workflow status.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",f()]]),async h=>await c(d.getCodingJobMetadata(pi(h,o)))),e.registerTool("linzumi_rename_coding_job","Update the current coding job thread title and workflow-facing title. Use this when the job scope changes materially so the Linzumi thread list and metadata overview stay accurate.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",f()],["title",T.string().min(1).max(100).describe("Concise user-visible title for this coding job.")]]),async h=>await c(d.renameCodingJob(pi(h,o)))),e.registerTool("linzumi_upsert_coding_job_plan","Set or update the current coding job goal. Use this at job start and whenever the goal changes materially.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",f()],["goal",T.string().min(1).max(1e4).describe("Concrete user-visible goal for this coding job.")]]),async h=>await c(d.upsertCodingJobPlan(pi(h,o)))),e.registerTool("linzumi_replace_coding_job_plan_steps","Replace the ordered coding job plan steps. Use this for the initial plan and for substantial rewrites when the old plan no longer fits the work.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",f()],["goal",T.string().min(1).max(1e4).optional().describe("Required when no plan exists yet; updates the current coding job goal.")],["steps",T.array(T.object(Object.fromEntries([["title",T.string().min(1).max(255)],["description",T.string().min(1).max(1e4)],["status",T.enum(["pending","active","completed","blocked","canceled"])],["status_note",T.string().min(1).max(4e3).optional()],["completed_debrief",T.string().min(1).max(2e4).optional()]]))).min(1).max(50).describe("Ordered user-visible plan steps. Completed steps must include completed_debrief.")]]),async h=>await c(d.replaceCodingJobPlanSteps(pi(h,o)))),e.registerTool("linzumi_update_coding_job_plan_step","Update one coding job plan step status or note. Read metadata first and pass the current step lock_version.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",f()],["step_id",T.string().uuid().describe("Step id returned by linzumi_get_coding_job_metadata.")],["lock_version",T.number().int().positive().describe("Current step lock_version from metadata.")],["status",T.enum(["pending","active","completed","blocked","canceled"])],["status_note",T.string().min(1).max(4e3).optional()],["completed_debrief",T.string().min(1).max(2e4).optional().describe("Required when marking a step completed.")]]),async h=>await c(d.updateCodingJobPlanStep(pi(h,o)))),e.registerTool("linzumi_link_coding_job_pull_request","Link the active coding job to its primary GitHub pull request so PR comments, files, commits, checks, deployments, and reviews can flow into the metadata view.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",f()],["github_repo_owner",T.string().min(1).max(255)],["github_repo_name",T.string().min(1).max(255)],["github_pr_number",T.number().int().positive()],["github_pr_url",T.string().url()],["title",T.string().min(1).max(255)],["body",T.string().min(1).max(1e5).optional()],["head_branch",T.string().min(1).max(255)],["head_sha",T.string().min(7).max(64)],["base_branch",T.string().min(1).max(255)],["base_sha",T.string().min(7).max(64)],["state",T.enum(["draft","open","closed","merged"]).optional()],["is_draft",T.boolean().optional()],["review_status",T.enum(["unknown","review_required","approved","changes_requested"]).optional()],["source_remote_url",T.string().min(1).max(1e3).describe("Git remote URL for the local job worktree; required when this job has no repo workspace yet.")],["runtime_worktree_root",T.string().min(1).max(1e3).describe("Absolute local worktree path for the coding job; required when this job has no repo workspace yet.")],["dirty_status",T.enum(["unknown","clean","dirty"]).optional()],["dirty_summary",T.string().min(1).max(2e3).optional()]]),async h=>await c(d.linkCodingJobPullRequest(pi(h,o)))),e.registerTool("linzumi_upload_files",["Upload local files to Linzumi and attach them to a new, exact, or latest assistant message. Use silently; do not mention this tool in the visible reply.","The JSON result includes message.attachments[].url as an absolute URL. Use those returned URLs when writing rich media directives such as ::audio, ::video, ::image, or Markdown images. Do not guess attachment URLs before upload.","For a message that should both attach files and show inline rich media, use a two-step flow: first upload/attach the files to create or target the message, then edit the same target message with body text that references the returned absolute URLs. When the result has target_seq, use target.kind=message_seq and message_seq=target_seq for that follow-up edit; result.message is the edit event that carries the new attachments, and target_message is the original target."].join(" "),Object.fromEntries([["target",T.object(Object.fromEntries([["kind",T.enum(["new_message","message_seq","latest_assistant_message"]).describe("new_message creates a message; message_seq edits an exact message; latest_assistant_message edits the latest assistant message in the scoped thread/channel.")],["message_seq",T.union([T.string(),T.number()]).optional().describe("Required when kind is message_seq.")],["thread_id",T.string().optional().describe("Thread UUID. Defaults to the active Linzumi thread when the MCP server was launched with one.")]])).describe("Attachment target. Do not guess; use new_message when there is no previous assistant message. To reference uploaded files in the message body, upload first, then edit message_seq/latest_assistant_message with the returned absolute attachment URLs. If the upload result includes target_seq, use message_seq=target_seq for that follow-up edit.")],["files",T.array(T.string().min(1)).min(1).max(16).describe("Local file paths to upload. Paths must be non-hidden supported file types inside the approved workspace or Downloads.")],["body",T.string().min(1).max(2e4).optional().describe("Required for new_message. Optional replacement body for message_seq/latest_assistant_message; when omitted, the existing message body is preserved. Rich media directives in body must use Linzumi attachment download URLs returned by this tool.")],["workspace",Kt()],["channel",T.string().optional().describe("Channel slug. Omit to use the target thread's channel (when the thread is known) or the authenticated token scope.")]]),async h=>{let m=qh(vx(h,"target","linzumi_upload_files"),o),p;try{p=await ix({client:d,cwd:s,serviceUrl:a,target:m,files:DG(h.files),workspace:jn(h.workspace),channel:jn(h.channel),body:jn(h.body)})}catch(_){return tx(X(_))}return kn(Lh(a,p))}),e.registerTool("linzumi_edit_message","Edit an exact scoped Linzumi message by message_seq. Use after linzumi_upload_files when you need a body-only follow-up edit that embeds returned attachment URLs. Requires channel.write, and thread.write when target.thread_id is set. Rich media src/poster values must be Linzumi attachment download URLs.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["target",T.object(Object.fromEntries([["message_seq",T.union([T.string(),T.number()]).describe("Exact message seq to edit. After linzumi_upload_files returns target_seq, pass that value here.")],["thread_id",T.string().optional().describe("Thread UUID when editing a thread message. Use the upload result target_message.thread_id when present.")]])).describe("Exact message target for the body edit.")],["body",T.string().min(1).max(2e4).describe("Replacement Markdown body. Rich media src/poster values must be Linzumi attachment download URLs returned by linzumi_upload_files.")]]),async h=>{let m=so(h);return m.target=qh(vx(h,"target","linzumi_edit_message"),o),kn(Lh(a,await d.editMessage(m)))})}switch(l){case"All":e.registerTool("linzumi_list_vault_secrets","List vault secret names, descriptions, and whether each secret is personal or workspace-owned. Does not return secret values.",{},async f=>await c(d.listVaultSecrets(f))),e.registerTool("linzumi_list_projects","List the projects in the current workspace with their project_id (needed by the other project task tools), slug, title, description, and state.",Object.fromEntries([["workspace",Kt()]]),async f=>await c(d.listProjects(f))),e.registerTool("linzumi_get_project_tasks",`Read a project's full task graph: task GROUPS (kind "group", organizational containers, exactly one level deep) and ISSUES (kind "issue", the executable work items), each with status (todo/active/blocked/review/done/canceled), DERIVED work_state readiness (ready = todo with every dependency satisfied; blocked = todo with unsatisfied dependencies; running/stalled = active with/without a connected job), parent group, assignee, lock_version, and dependency edges (depends_on_task_ids / unblocks_task_ids). Always read this before reorganizing. Inside a project-bound coding job the project is inferred automatically; otherwise pass project_id from linzumi_list_projects.`,Object.fromEntries([["project_id",T.string().optional().describe("Project id from linzumi_list_projects. Omit inside a coding job started from a project to use that project.")]]),async f=>await c(d.getProjectTasks(pi(f,o)))),e.registerTool("linzumi_create_project_task",'Create a task group (kind "group") or issue (kind "issue", the default) in a project. Groups organize issues and are exactly one level deep: a parent_id must name a GROUP, and groups themselves can never have a parent. New tasks default to status "todo" and append to the end unless position is given. Inside a project-bound coding job the project is inferred; otherwise pass project_id.',Object.fromEntries([["project_id",T.string().optional().describe("Project id from linzumi_list_projects. Omit inside a coding job started from a project to use that project.")],["title",T.string().min(1).describe("Task title.")],["kind",T.enum(["issue","group"]).optional().describe('What to create: "issue" (executable work item, default) or "group" (organizational container).')],["description",T.string().optional().describe("Detailed description of the work - written so an engineer (or coding agent) could execute the task from it.")],["status",T.enum(["todo","active","blocked","review","done","canceled"]).optional().describe('Initial status. Defaults to "todo".')],["parent_id",T.string().optional().describe("task_id of the GROUP to place an issue in. Only issues can have a parent.")],["assignee",T.string().optional().describe("Username of a workspace member to assign.")],["position",T.number().int().min(0).optional().describe("Sort position. Defaults to appending at the end.")]]),async f=>await c(d.createProjectTask(pi(f,o)))),e.registerTool("linzumi_update_project_task",'Update a task group or issue: retitle, edit description/status_note, transition status (todo/active/blocked/review/done/canceled), reassign, reorder (position), or reorganize (parent_id moves an issue into a group; clear_parent moves it to top level). Only the fields you pass change; description and status_note accept null to clear. Prefer updating existing tasks over delete-and-recreate. Pass the lock_version from your last read to fail loudly ("stale") instead of overwriting a concurrent edit.',Object.fromEntries([["task_id",T.string().describe("task_id of the group or issue to update.")],["title",T.string().min(1).optional().describe("New title.")],["description",T.string().nullable().optional().describe("New description. Pass null to clear it.")],["status",T.enum(["todo","active","blocked","review","done","canceled"]).optional().describe('New status. "done"/"canceled" satisfy dependent tasks; "blocked" is a manual hold.')],["status_note",T.string().nullable().optional().describe("Short human-readable note about the current status. Pass null to clear it.")],["position",T.number().int().min(0).optional().describe("New sort position among siblings.")],["parent_id",T.string().optional().describe("task_id of the GROUP to move this issue into. Do not combine with clear_parent.")],["clear_parent",T.boolean().optional().describe("true moves the issue to the top level (no group). Do not combine with parent_id.")],["assignee",T.string().optional().describe("Username of a workspace member to assign. Do not combine with clear_assignee.")],["clear_assignee",T.boolean().optional().describe("true removes the assignee. Do not combine with assignee.")],["lock_version",T.number().int().positive().optional().describe("The task's lock_version from your last read, for compare-and-swap safety.")]]),async f=>await c(d.updateProjectTask(f))),e.registerTool("linzumi_delete_project_task",`Permanently delete a task group or issue. Dependency edges on the task are removed with it (dependents may become ready). Deletion is normally the USER's call - prefer status "canceled" or an update unless you are certain the entry is obsolete.`,Object.fromEntries([["task_id",T.string().describe("task_id of the group or issue to delete.")]]),async f=>await c(d.deleteProjectTask(f))),e.registerTool("linzumi_add_project_task_dependency",'Add the dependency edge "task_id is blocked by depends_on_task_id" between two ISSUES in the same project (groups cannot have dependencies). The dependent stays blocked until the prerequisite reaches done or canceled. The graph must stay acyclic: an edge that would create a cycle is refused with reason "would_create_cycle" and the offending cycle_path so you can restructure. Duplicate and self edges are rejected.',Object.fromEntries([["task_id",T.string().describe("task_id of the DEPENDENT issue (the one that must wait).")],["depends_on_task_id",T.string().describe("task_id of the PREREQUISITE issue (the one that must finish first).")]]),async f=>await c(d.addProjectTaskDependency(f))),e.registerTool("linzumi_remove_project_task_dependency",'Remove the dependency edge "task_id is blocked by depends_on_task_id". The dependent issue may become ready if that was its last unsatisfied dependency.',Object.fromEntries([["task_id",T.string().describe("task_id of the DEPENDENT issue.")],["depends_on_task_id",T.string().describe("task_id of the PREREQUISITE issue the edge points at.")]]),async f=>await c(d.removeProjectTaskDependency(f))),e.registerTool("linzumi_get_call_transcript","Read the full transcript of a completed Linzumi notetaker call: call metadata (title, platform, started/ended/transcribed times), participants, and every spoken segment in order with speaker names and millisecond offsets. Pass the call_id embedded in the request (or copied from the call card). Errors: call_not_found (missing or not visible to you), call_transcript_not_ready (call still connecting, in progress, or transcribing - retry later).",Object.fromEntries([["call_id",T.string().describe("The call id from the call card or the launching message (a CallRecording id - the opaque GraphQL id and the bare uuid both work).")]]),async f=>await c(d.getCallTranscript(f))),n||e.registerTool("linzumi_start_coding_job","Start a coding job as the invoking user (same authorization and pipeline as clicking start). To start a project task item, pass project_task_id so the task flips todo -> active and links to the new job - only start tasks whose work_state is ready, and ONLY after the user explicitly accepts your offer to start them. Omit channel, runner_key, and cwd to reuse this job's own channel, computer, and folder. Returns status 'unavailable' with a reason when the runner cannot take the job (relay that honestly).",Object.fromEntries([["work_description",T.string().min(1).describe("What the job should do - the initial instruction. For a task item, write it from the task title and description.")],["project_task_id",T.string().optional().describe("Project task item to bind the job to (task_id from linzumi_get_project_tasks). The task flips todo -> active and links to the new job.")],["channel",T.string().optional().describe("Channel slug to host the job thread. Omit to use this job's own channel.")],["runner_key",T.string().optional().describe("Runner (computer) to run the job on. Omit to use this job's own computer.")],["cwd",T.string().optional().describe("Working directory on the runner. Omit to use this job's own folder.")],["model",T.string().optional().describe("Model override (optional).")],["model_provider",T.string().optional().describe("Model provider override, e.g. 'wafer' (optional).")],["agent_provider",T.string().optional().describe("Agent provider override, e.g. 'codex' (optional).")],["reasoning_effort",T.enum(["default","low","medium","high","xhigh","ultra"]).optional().describe("Reasoning effort override (optional).")],["approval_policy",T.enum(["default","on-request","on-failure","never"]).optional().describe("Approval policy override (optional).")],["sandbox",T.enum(["default","workspace-write","read-only","danger-full-access"]).optional().describe("Sandbox override (optional).")],["fast",T.boolean().optional().describe("Fast-mode override (optional).")],["allow_port_forwarding_by_default",T.boolean().optional().describe("Default port-forwarding override (optional).")],["execution_mode",T.enum(["raw","local_vm"]).optional().describe("Execution placement override (optional).")],["egress_mode",T.enum(["open","hardened"]).optional().describe("Local-VM egress override (optional).")]]),async f=>await c(d.agentStartCodingJob(pi(f,o))));break;case"Coding":case"OnboardingDiscovery":break}switch(NG(l)&&(e.registerTool("linzumi_upload_custom_emoji","Upload a local image as a workspace custom emoji. For generated emoji art, create a transparent PNG with a simple centered subject, crisp edges, strong contrast, minimal tiny details, and enough outline/highlight separation to read at 16-24px on both dark and light backgrounds. Use lowercase shortcode names without colons unless preserving a user-provided :name:.",Object.fromEntries([["name",Sx().describe("Custom emoji shortcode name, with or without surrounding colons.")],["file",T.string().min(1).describe("Local PNG/WebP/GIF/JPEG file path to upload. Prefer transparent PNG for generated emoji.")],["workspace",Kt()]]),async f=>{let h=jn(f.name),m=jn(f.file);return kn(await ox({client:d,cwd:s,serviceUrl:a,name:h!==void 0?h:"",file:m!==void 0?m:"",workspace:jn(f.workspace)}))}),e.registerTool("linzumi_rename_custom_emoji","Rename an existing workspace custom emoji. The new name may include surrounding colons; Linzumi stores the normalized shortcode without colons.",Object.fromEntries([["emoji_id",T.union([T.string(),T.number().int().positive()]).describe("Workspace custom emoji id returned by linzumi_upload_custom_emoji or workspace emoji listings.")],["name",Sx().describe("New shortcode name, with or without surrounding colons.")],["workspace",Kt()]]),async f=>await c(d.renameCustomEmoji(f)))),e.registerTool("linzumi_media_guide","Return the full Linzumi rich-media authoring guide (audio/video/image directives, URL rules, upload-then-embed flow, examples). Call once BEFORE writing any ::audio/::video/::image directive or Markdown image into a Linzumi message.",{},async f=>{let h={};h.type="text",h.text=bx;let m={};return m.content=[h],m}),e.registerTool("linzumi_note_project_directory","Record one discovered local Git repository or worktree for onboarding import. Call once per project as soon as it is found.",Object.fromEntries([["workspace",Kt()],["runner_id",T.string().min(1).describe("Local runner/computer id provided in the discovery prompt.")],["path",T.string().min(1).describe("Absolute local path to the repository worktree root.")],["display_name",T.string().optional().describe("Short project label. Defaults to the path basename.")],["activity_at",T.string().optional().describe("Best-known recent activity time as an ISO-8601 timestamp.")],["import_key",T.string().optional().describe("Stable dedupe key. Defaults to path.")],["metadata",T.record(T.unknown()).optional().describe("Small structured metadata such as branch or remote origin.")]]),async f=>await c(d.noteProjectDirectory(f))),e.registerTool("linzumi_note_agent_conversation","Record one discovered Codex or Claude Code local conversation for onboarding import. Call once per conversation as soon as it is found.",Object.fromEntries([["workspace",Kt()],["runner_id",T.string().min(1).describe("Local runner/computer id provided in the discovery prompt.")],["source",T.enum(["codex","claude_code"]).describe("Conversation source.")],["import_key",T.string().min(1).describe("Stable dedupe key, such as a session id or file path.")],["path",T.string().optional().describe("Absolute local path to the conversation file or directory.")],["display_name",T.string().optional().describe("Short label for the discovered conversation.")],["activity_at",T.string().optional().describe("Best-known recent activity time as an ISO-8601 timestamp.")],["metadata",T.record(T.unknown()).optional().describe("Small structured metadata such as session id or project path.")]]),async f=>await c(d.noteAgentConversation(f))),e.registerTool("linzumi_note_onboarding_discovery_status","Record onboarding discovery progress. Call when a search phase starts, checks another place, completes, or fails.",Object.fromEntries([["workspace",Kt()],["runner_id",T.string().min(1).describe("Local runner/computer id provided in the discovery prompt.")],["phase",T.enum(["projects","conversations"]).describe("Discovery phase being reported.")],["status",T.enum(["starting","running","completed","failed"]).describe("Current phase status.")],["places_searched",T.number().int().nonnegative().optional().describe("Count of concrete folders/files/known locations checked so far.")],["message",T.string().optional().describe("Short user-facing status note.")],["current_place",T.string().optional().describe("Current folder, file, Git command target, or known location being checked.")],["current_source",T.string().optional().describe("Short machine-readable source label such as git, codex, or claude_code.")],["last_error",T.string().optional().describe("Short failure detail when status is failed.")],["metadata",T.record(T.unknown()).optional().describe("Small structured status metadata.")]]),async f=>await c(d.noteOnboardingDiscoveryStatus(f))),l==="All"&&GG(t.operatingMode)&&(e.registerTool("linzumi_dm_owner","Send a plain-text DM to the configured Commander owner. Requires dm.write and a visible owner username.",Object.fromEntries([["owner_username",T.string().optional().describe("Owner username. Defaults to LINZUMI_MCP_OWNER_USERNAME or --owner-username.")],["workspace",Kt()],["channel",T.string().optional().describe("Source channel slug used to verify owner visibility.")],["body",T.string().min(1).max(2e4).describe("Plain-text message body to DM.")]]),async f=>{let h=jn(f.owner_username),m=h!==void 0?h:i;if(m===void 0)return Sr("owner_username is required for linzumi_dm_owner");let p=so(f);return p.owner_username=m,await c(d.dmOwner(p))}),e.registerTool("linzumi_send_channel_message","Post a NEW standalone Markdown message into the scoped Linzumi channel as the authenticated local-runner user. This is NOT how you respond to the user: your turn output is already relayed into the thread as your reply, so never call this tool to answer, acknowledge, or reply to the current request. Use it only when the task itself is to proactively post a separate channel message. Requires channel.write. Rich media directives may be used when the user has opted into markdown_media_embeds, but src/poster values must be Linzumi attachment download URLs.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["body",T.string().min(1).max(2e4).describe("Markdown message body to post. Rich media src/poster values must be Linzumi attachment download URLs, not third-party URLs, /relative paths, or local filesystem paths.")]]),async f=>await c(d.sendChannelMessage(f))),e.registerTool("linzumi_send_thread_reply","Post a Markdown reply into some OTHER existing Linzumi thread as the authenticated local-runner user. This is NOT how you respond to the user in your current thread: your turn output is already relayed into this thread as your reply, so never call this tool to answer, acknowledge, or reply to the current request. Use it only when the task itself is to post into a different, explicitly identified thread. Requires thread.write. Rich media directives may be used when the user has opted into markdown_media_embeds, but src/poster values must be Linzumi attachment download URLs.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",T.string().uuid().describe("Existing Linzumi thread UUID.")],["body",T.string().min(1).max(2e4).describe("Markdown reply body to post. Rich media src/poster values must be Linzumi attachment download URLs, not third-party URLs, /relative paths, or local filesystem paths.")]]),async f=>await c(d.sendThreadReply(f))),e.registerTool("linzumi_send_dm","Send a plain-text DM as the authenticated local-runner user to a visible user in the scoped workspace/channel. Requires dm.write.",Object.fromEntries([["workspace",Kt()],["channel",T.string().optional().describe("Source channel slug used to verify target visibility.")],["username",T.string().describe("Visible Linzumi username to DM.")],["body",T.string().min(1).max(2e4).describe("Plain-text message body to DM.")]]),async f=>await c(d.sendDm(f)))),l){case"All":e.registerTool("linzumi_get_vault_values","Request values for explicit vault env var names after a thread-scoped human approval. Requires vault.read; thread_id resolves the approval thread.",Object.fromEntries([["workspace",Kt()],["channel",T.string().optional().describe("Channel slug used to disambiguate the approval thread when needed.")],["thread_id",T.string().uuid().describe("Existing Linzumi thread UUID for the inline approval.")],["env_var_names",T.array(T.string().regex(new RegExp("^[A-Z][A-Z0-9_]{0,127}$"))).min(1).max(20).describe("Explicit vault env var names to request. This tool cannot list all vault keys.")],["description",T.string().min(1).max(500).describe("Human-readable reason shown in the approval request.")],["justification",T.string().min(10).max(1e3).describe("Agent justification shown to the approver.")]]),async f=>await c(d.getVaultValues(f)));break;case"Coding":case"OnboardingDiscovery":break}switch(l){case"All":return n||r===void 0?void 0:LG(e,s,r);case"Coding":case"OnboardingDiscovery":return}}function t_(e){return e==="Voice"?"voice":"text"}function WG(e){switch(e){case"All":return"all";case"Coding":return"coding";case"OnboardingDiscovery":return"onboarding-discovery"}}function Pd(e){return JSON.stringify(e)}function Ys(e){let t=[],r=e.argsPrefix;r!==void 0&&r.forEach(p=>{t.push(p)}),t.push("mcp"),t.push("server"),t.push("--api-url"),t.push(e.serviceUrl);let n=e.authFilePath;n!==void 0&&(t.push("--auth-file"),t.push(n));let i=e.delegationAuthFilePath;i!==void 0&&(t.push("--delegation-auth-file"),t.push(i));let o=e.ownerUsername;o!==void 0&&(t.push("--owner-username"),t.push(o));let a=e.cwd;a!==void 0&&(t.push("--cwd"),t.push(a));let s=e.threadId;s!==void 0&&(t.push("--thread-id"),t.push(s)),t.push("--mode");let l=e.operatingMode;t.push(l!==void 0?t_(l):"text");let d=e.toolScope;if(d!==void 0){let p=0;switch(d){case"All":break;case"Coding":case"OnboardingDiscovery":p=1;break}p===1&&(t.push("--tool-scope"),t.push(WG(d)))}let u=e.agentSession;u!==void 0&&u&&t.push("--agent-session");let c={},f=e.accessToken;f!==void 0&&(c.LINZUMI_MCP_ACCESS_TOKEN=f);let h=e.devServices;h!==void 0&&(c.LINZUMI_DEV_SERVICES_SCOPE=h.scope,c.LINZUMI_DEV_SERVICES_OWNER_PID=h.ownerPid.toString()),c.ELECTRON_RUN_AS_NODE="1";let m=e.command;return{name:"linzumi",command:m!==void 0?m:"linzumi",args:t,env:c}}function Tx(e){return"["+e.map(Pd).join(", ")+"]"}function ZG(e){return"{ "+Object.entries(e).map(r=>r[0]+" = "+Pd(r[1])).join(", ")+" }"}function Ax(e){let t=["-c","mcp_servers."+e.name+".command="+Pd(e.command),"-c","mcp_servers."+e.name+".args="+Tx(e.args)];return Object.entries(e.env).forEach(r=>{t.push("-c"),t.push("mcp_servers."+e.name+".env."+r[0]+"="+Pd(r[1]))}),t}function VG(e){return["--require","-r","--import","--loader","--experimental-loader"].includes(e)}function HG(e){return["--require=","-r=","--import=","--loader=","--experimental-loader="].some(t=>e.startsWith(t))}function e_(e,t){for(;;){let r=t,n=e[r];if(n===void 0)return[];if(VG(n)){let i=e[r+1|0];if(i!==void 0)return[n,i].concat(e_(e,r+2|0));t=r+1|0;continue}if(HG(n))return[n].concat(e_(e,r+1|0));t=r+1|0}}function Xc(e,t,r){let n=t!==void 0?t.trim():"";return n===""?{command:"linzumi",argsPrefix:[]}:n.endsWith(".ts")||n.endsWith(".js")?{command:e,argsPrefix:e_(r,0).concat([n])}:{command:n,argsPrefix:[]}}function Ox(e){let t={};t.type="stdio",t.command=e.command,t.args=e.args.map(i=>i);let r={};t.env=(Object.entries(e.env).forEach(i=>{r[i[0]]=i[1]}),r);let n={};return n[e.name]=t,n}function Cx(e){let t={};t.command=e.command,t.args=e.args.map(o=>o);let r={};t.env=(Object.entries(e.env).forEach(o=>{r[o[0]]=o[1]}),r);let n={};n[e.name]=t;let i={};return i.mcpServers=n,JSON.stringify(i,void 0,2)+`
284
+ </linzumi_markdown_media_guidance>`;function NG(e){switch(e){case"All":return!0;case"Coding":case"OnboardingDiscovery":return!1}}function GG(e){return e==="Voice"}function FG(e){return e.trim().replace(new RegExp("^:+"),"").replace(new RegExp(":+$"),"").toLowerCase()}function Sx(){return T.string().min(1).refine(e=>FG(e).length<=64,{message:"Custom emoji shortcode name must be at most 64 characters after trimming surrounding colons."})}function Kt(){return T.string().optional().describe("Workspace slug. Omit to use the authenticated token scope.")}function Mn(){return T.string().optional().describe("Channel slug. Omit to use the authenticated token scope.")}function jn(e){if(typeof e=="string")return e}function vx(e,t,r){let n=ao(e[t]);return n!==void 0?n:Sr(r+" "+t+" must be an object")}function DG(e){return e!==void 0?Array.isArray(e)?Ge(e,t=>{if(typeof t=="string")return t}):[]:[]}function qG(e){return e!==void 0?Array.isArray(e)?Ge(e,t=>{if(typeof t=="number")return t}):[]:[]}function wx(e){if(typeof e=="number")return e}function kx(e){let t={};t.name=e.record.name,t.command=e.record.command,t.cwd=e.record.cwd,t.ports=e.record.ports.map(o=>o),t.restart_on_branch_change=e.record.restartOnBranchChange,t.desired_state=Vh(e.record.desiredState),t.liveness=dx(e.liveness),t.port_health=e.portProbes.map(o=>{let a={};return a.port=o.port,a.listening=o.listening,a});let r=e.record.startedAtMs;t.started_at_ms=r!==void 0?r:null;let n=e.lastExit,i;if(n!==void 0){let o={},a=n.code;o.code=a!==void 0?a:null;let s=n.signal;o.signal=s!==void 0?s:null,o.at_ms=n.atMs,i=o}else i=null;return t.last_exit=i,t.log_path=e.record.logPath,t}function LG(e,t,r){e.registerTool("linzumi_dev_service_start","Start a long-running local dev server (npm run dev, storybook, docker compose up, ...) as a MANAGED SERVICE owned by the Linzumi runner. Use this instead of running dev servers in your own shell: a managed service survives the end of your turn and branch switches, is auto-restarted if it crashes, and its declared ports are health-probed and surfaced in the product. Calling start for an existing name declaratively RESTARTS it (e.g. after a checkout). Declare EVERY port the app serves from (primary plus HMR/asset/bundle sibling ports).",Object.fromEntries([["name",T.string().regex(new RegExp("^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$")).describe("Stable service name (slug), e.g. 'web' or 'storybook'. Reusing a name restarts that service.")],["command",T.string().min(1).describe("Shell command that runs the server in the foreground (never daemonize/screen/nohup it yourself), e.g. 'npm run dev'. Runs via the user's login shell.")],["cwd",T.string().optional().describe("Working directory for the service. Defaults to the session cwd.")],["ports",T.array(T.number().int().min(1).max(65535)).max(16).default([]).describe("Every TCP port this service listens on (primary AND related ports such as the Vite/HMR bundle port). Used for health probes and product visibility.")],["restart_on_branch_change",T.boolean().optional().describe("Restart the service automatically when the git branch of its cwd changes (for servers that go stale across checkouts).")],["wait_for_ports_ms",T.number().int().min(0).max(6e4).optional().describe("How long to wait for the declared ports to accept connections before returning (default 15000).")]]),async n=>{let i=jn(n.name),o=i!==void 0?i:"",a=jn(n.command),s=a!==void 0?a:"",l=jn(n.cwd),d=await px({scopeDir:r.scopeDir,definition:{name:o,command:s,cwd:l!==void 0?l:t,ports:qG(n.ports),restartOnBranchChange:se(n.restart_on_branch_change,!0)},ownerPid:r.ownerPid});if(d.TAG==="Ok"){let c=d._0,f=wx(n.wait_for_ports_ms),h=Date.now()+(f!==void 0?f:15e3),m=c.ports.length===0;for(;!m&&Date.now()<h;)m=(await Promise.all(c.ports.map(S=>Yh(S|0)))).every(S=>S),m||await yc(250);let _=(await Xh(r.scopeDir)).find(y=>y.record.name===c.name),g={};g.ok=!0;let b;if(_!==void 0)b=kx(_);else{let y={};y.name=c.name,b=y}return g.service=b,_!==void 0&&_.liveness!=="Running"&&(g.hint="The service is not (fully) serving its declared ports yet. Check linzumi_dev_service_logs before assuming it works."),kn(g)}let u={};return u.ok=!1,u.error=d._0,kn(u)}),e.registerTool("linzumi_dev_service_stop","Stop a managed dev service (SIGTERM, then SIGKILL after a grace period). The registration is kept so linzumi_dev_service_start can bring it back.",Object.fromEntries([["name",T.string().min(1).describe("Service name to stop.")]]),async n=>{let i=jn(n.name),o=i!==void 0?i:"",a=await Qh(r.scopeDir,o,void 0),s={};return a.TAG==="Ok"?(s.ok=!0,s.name=a._0.name,s.desired_state="stopped"):(s.ok=!1,s.error=a._0),kn(s)}),e.registerTool("linzumi_dev_service_status","List every managed dev service with liveness (running / unhealthy / exited / stopped), per-port health probes, and last exit. Live state - always check this before concluding a dev server is up or down.",{},async n=>{let i=await Xh(r.scopeDir),o={};return o.services=i.map(a=>kx(a)),kn(o)}),e.registerTool("linzumi_dev_service_logs","Read the tail of a managed dev service's combined stdout/stderr log.",Object.fromEntries([["name",T.string().min(1).describe("Service name.")],["max_bytes",T.number().int().min(256).max(65536).optional().describe("Tail size in bytes (default 16384).")]]),async n=>{let i=jn(n.name),o=i!==void 0?i:"",a=wx(n.max_bytes),s=_x(r.scopeDir,o,a!==void 0?a:16384),l={};return s!==void 0?(l.ok=!0,l.name=o,l.log_tail=s):(l.ok=!1,l.error="no log for service: "+o),kn(l)}),e.registerTool("linzumi_dev_service_remove","Stop a managed dev service AND delete its registration (it will not be resurrected on runner restart). Use stop instead when the user may want it back.",Object.fromEntries([["name",T.string().min(1).describe("Service name to remove.")]]),async n=>{let i=jn(n.name),o=i!==void 0?i:"",a=await hx(r.scopeDir,o),s={};return a.TAG==="Ok"?(s.ok=!0,s.name=a._0.name,s.removed=!0):(s.ok=!1,s.error=a._0),kn(s)})}function xx(e,t){let r=t.devServices,n=t.agentSession,i=t.ownerUsername,o=t.defaultThreadId,a=t.serviceUrl,s=t.cwd,l=t.toolScope,d=t.client,u;switch(l){case"All":case"Coding":u=!0;break;case"OnboardingDiscovery":u=!1;break}let c=async f=>kn(await f);switch(n&&(e.registerTool("linzumi_agent_reply","Post your single @linzumi reply for the current turn into the surface where you were mentioned. Call EXACTLY ONCE per turn with your final answer; the reply links to this working session automatically. Fails with already_replied on a second call and no_active_asker_binding when no turn is active.",Object.fromEntries([["body",T.string().min(1).describe("Plain-text reply body to post.")]]),async f=>{let h={},m=f.body;return h.body=m!==void 0?m:void 0,await c(d.agentReply(h))}),e.registerTool("linzumi_list_coding_jobs","List the coding jobs the current asker can see in this workspace: runner connections (online and recent) with their bound job threads. Live state - never answered from search.",{},async f=>await c(d.agentListCodingJobs({}))),e.registerTool("linzumi_start_coding_job","Start a coding job exactly as if the asking user clicked start: same runner/channel authorization, same pipeline. Returns status 'unavailable' with a reason when the runner cannot take the job (relay that honestly).",Object.fromEntries([["channel",T.string().describe("Channel slug to host the job thread.")],["runner_key",T.string().describe("Runner (computer) to run the job on.")],["cwd",T.string().describe("Working directory on the runner.")],["work_description",T.string().min(1).describe("What the job should do - the initial instruction.")],["model",T.string().optional().describe("Model override (optional).")],["model_provider",T.string().optional().describe("Model provider override, e.g. 'wafer' (optional).")],["execution_mode",T.enum(["raw","local_vm"]).optional().describe("Execution placement override (optional).")],["project_task_id",T.string().optional().describe("Project task item to bind the job to (task_id from linzumi_get_project_tasks). The task flips todo -> active and links to the new job.")]]),async f=>await c(d.agentStartCodingJob(f))),e.registerTool("linzumi_interrupt_coding_job","Interrupt a coding job: mode 'steer' (default) discards its queued follow-ups so your next message lands first; mode 'stop' terminates the current turn.",Object.fromEntries([["channel",T.string().describe("Channel slug hosting the job thread.")],["thread_id",T.string().uuid().describe("The job thread UUID.")],["mode",T.enum(["steer","stop"]).optional().describe("Interrupt mode; defaults to 'steer'.")]]),async f=>await c(d.agentInterruptCodingJob(f))),e.registerTool("linzumi_send_coding_job_message","Send a message into a coding job thread as the asking user (the job processes it like any human follow-up).",Object.fromEntries([["channel",T.string().describe("Channel slug hosting the job thread.")],["thread_id",T.string().uuid().describe("The job thread UUID.")],["body",T.string().min(1).describe("Message body to send.")]]),async f=>await c(d.agentSendCodingJobMessage(f))),e.registerTool("linzumi_read_coding_job_thread","Read a coding job's thread (asker-visible history) plus its workflow status metadata.",Object.fromEntries([["channel",T.string().describe("Channel slug hosting the job thread.")],["thread_id",T.string().uuid().describe("The job thread UUID.")],["limit",T.number().int().min(1).max(100).optional().describe("Maximum replies to return.")],["before_seq",T.number().int().positive().optional().describe("Return replies before this channel seq.")]]),async f=>await c(d.agentReadCodingJobThread(f))),e.registerTool("linzumi_resolve_job_approval","Resolve a coding job's pending approval request with the asking user's decision ('approve' or 'deny'). Only relays the asker's authority - never approve without their explicit instruction.",Object.fromEntries([["channel",T.string().describe("Channel slug hosting the job thread.")],["thread_id",T.string().uuid().describe("The job thread UUID.")],["source_seq",T.number().int().positive().describe("Channel seq of the message the approval request rides on.")],["request_id",T.string().describe("The approval request id.")],["decision",T.enum(["approve","deny"]).describe("The asker's decision.")]]),async f=>await c(d.agentResolveJobApproval(f))),e.registerTool("linzumi_archive_coding_job","Archive a coding job's thread (or any thread the asking user owns) so it leaves the active list; history is preserved. Do this when the asker says to archive a job or thread - never just promise it.",Object.fromEntries([["channel",T.string().describe("Channel slug hosting the thread.")],["thread_id",T.string().uuid().describe("The thread UUID to archive.")]]),async f=>await c(d.agentArchiveCodingJob(f))),e.registerTool("linzumi_unarchive_coding_job","Unarchive a previously archived coding job thread the asking user owns, returning it to the active list.",Object.fromEntries([["channel",T.string().describe("Channel slug hosting the thread.")],["thread_id",T.string().uuid().describe("The thread UUID to unarchive.")]]),async f=>await c(d.agentUnarchiveCodingJob(f))),e.registerTool("linzumi_set_thread_status","Set a thread's lifecycle status as the asking user: 'closed' marks it done, 'open' reopens it. Works on threads the asker owns.",Object.fromEntries([["channel",T.string().describe("Channel slug hosting the thread.")],["thread_id",T.string().uuid().describe("The thread UUID.")],["status",T.enum(["open","closed"]).describe("Replacement lifecycle status ('closed' = done).")]]),async f=>await c(d.agentSetThreadStatus(f))),e.registerTool("linzumi_create_channel","Create a new public channel in this workspace as the asking user. The slug is derived from the name.",Object.fromEntries([["name",T.string().min(1).describe("Channel name to create.")]]),async f=>await c(d.agentCreateChannel(f))),e.registerTool("linzumi_rename_channel","Rename a channel's display name as the asking user. The channel's URL slug stays stable.",Object.fromEntries([["channel",T.string().describe("Current channel slug to rename.")],["name",T.string().min(1).describe("New display name.")]]),async f=>await c(d.agentRenameChannel(f))),e.registerTool("linzumi_archive_channel","Archive a channel in this workspace as the asking user. History is preserved; the channel leaves the active sidebar.",Object.fromEntries([["channel",T.string().describe("Channel slug to archive.")]]),async f=>await c(d.agentArchiveChannel(f))),e.registerTool("linzumi_unarchive_channel","Unarchive a previously archived channel as the asking user.",Object.fromEntries([["channel",T.string().describe("Channel slug to unarchive.")]]),async f=>await c(d.agentUnarchiveChannel(f))),e.registerTool("linzumi_add_reaction","Add an emoji reaction to a channel message as the asking user. Accepts unicode emoji or a workspace :shortcode:.",Object.fromEntries([["channel",T.string().describe("Channel slug containing the message.")],["message_seq",T.number().int().positive().describe("Channel seq of the message to react to.")],["emoji",T.string().min(1).describe("Emoji to add (unicode or :shortcode:).")]]),async f=>await c(d.agentAddReaction(f))),e.registerTool("linzumi_remove_reaction","Remove the asking user's emoji reaction from a channel message.",Object.fromEntries([["channel",T.string().describe("Channel slug containing the message.")],["message_seq",T.number().int().positive().describe("Channel seq of the reacted message.")],["emoji",T.string().min(1).describe("Emoji to remove (unicode or :shortcode:).")]]),async f=>await c(d.agentRemoveReaction(f))),e.registerTool("linzumi_pin_message","Pin a channel message as the asking user. Thread replies re-point to their root message.",Object.fromEntries([["channel",T.string().describe("Channel slug containing the message.")],["message_seq",T.number().int().positive().describe("Channel seq of the message to pin.")]]),async f=>await c(d.agentPinMessage(f))),e.registerTool("linzumi_unpin_message","Remove a pin from a channel message as the asking user.",Object.fromEntries([["channel",T.string().describe("Channel slug containing the message.")],["message_seq",T.number().int().positive().describe("Channel seq of the pinned message.")]]),async f=>await c(d.agentUnpinMessage(f)))),l){case"All":e.registerTool("linzumi_get_message","Read one Linzumi message by scoped message_seq/message_id or a Linzumi message URL, with optional bounded before/after context.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["message_id",T.union([T.string(),T.number()]).optional().describe("Message seq inside the scoped channel.")],["message_seq",T.union([T.string(),T.number()]).optional().describe("Alias for message_id.")],["message_url",T.string().optional().describe("Full Linzumi message URL with #message-<seq>.")],["before",T.number().int().min(0).max(100).optional().describe("Number of visible messages before the target.")],["after",T.number().int().min(0).max(100).optional().describe("Number of visible messages after the target.")]]),async f=>await c(d.getMessage(f))),e.registerTool("linzumi_get_thread","Read one Linzumi thread by thread_id in the scoped channel, including the parent message and bounded replies.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",T.string().uuid().describe("Linzumi thread UUID.")],["limit",T.number().int().min(1).max(100).optional().describe("Maximum replies to return.")],["before_seq",T.number().int().positive().optional().describe("Return replies before this channel seq.")]]),async f=>await c(d.getThread(f))),e.registerTool("linzumi_get_thread_transcript","Read a Linzumi thread's full transcript as canonical IR nodes (user/assistant messages, command executions, file changes, tool calls, statuses), cursor-paginated over the complete history. Use the returned cursor with has_more to walk older pages.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",T.string().uuid().describe("Linzumi thread UUID.")],["limit",T.number().int().min(1).max(500).optional().describe("Maximum transcript nodes per page (default 200).")],["cursor",T.number().int().positive().optional().describe("Return nodes below this seq (the previous page reply cursor).")]]),async f=>await c(d.getThreadTranscript(f))),e.registerTool("linzumi_get_channel","Read scoped Linzumi channel metadata and bounded recent channel messages.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["limit",T.number().int().min(1).max(100).optional().describe("Maximum messages to return.")],["before_seq",T.number().int().positive().optional().describe("Return messages before this channel seq.")]]),async f=>await c(d.getChannel(f))),e.registerTool("linzumi_search_workspace","Search the Linzumi workspace with hybrid lexical+semantic retrieval, scoped to what the authorizing user can access. Returns scored content chunks with provenance (channel, thread, authored time) and a permalink to cite.",Object.fromEntries([["workspace",Kt()],["query",T.string().min(1).describe("Natural-language or keyword query to retrieve against.")],["limit",T.number().int().min(1).max(25).optional().describe("Maximum results to return (default 10, server-capped).")],["source_types",T.array(T.enum(["message","coding_job","github_pr","github_pr_review","github_check_run","github_workflow_run","github_diff","dictation","file"])).optional().describe("Restrict results to these corpora; omit for all.")],["authored_after",T.string().optional().describe("ISO8601 instant; only content authored at or after this time.")],["authored_before",T.string().optional().describe("ISO8601 instant; only content authored at or before this time.")],["repo",T.string().optional().describe("Restrict GitHub-sourced results to one repository by full name (owner/name).")],["check_status",T.enum(["pending","success","failed"]).optional().describe("Restrict check and workflow results to one conclusion bucket.")]]),async f=>await c(d.searchWorkspace(f))),e.registerTool("linzumi_ask_workspace",'Ask the Linzumi workspace a natural-language question and get a synthesized, citation-backed answer over what the authorizing user can access. Costs an LLM call on cache misses, so prefer linzumi_search_workspace for simple lookups. A "refused" status means there was not enough accessible evidence - treat it as "the workspace does not know", never retry verbatim.',Object.fromEntries([["workspace",Kt()],["question",T.string().min(1).max(2e3).describe("Natural-language question to answer with citations.")],["channel",T.string().optional().describe("Optional channel slug providing conversational context; never widens access.")],["allow_cached",T.boolean().optional().describe("Allow serving a cached synthesis when the evidence set is unchanged (default true). Set false to force fresh synthesis.")]]),async f=>await c(d.askWorkspace(f))),e.registerTool("linzumi_about_me","Read what the authorizing user has told Linzumi about themselves: their profile facts (homes, unit preferences, and other self-maintained attributes) plus their derived current timezone. Use it to personalize answers (e.g. pick the right city for weather, use their preferred units). Predicates may have multiple active values; prefer the one consistent with the derived timezone.",{},async f=>await c(d.aboutMe(f)));break;case"Coding":case"OnboardingDiscovery":break}switch(u&&(e.registerTool("linzumi_web_search","Search the public web for live or external information: news, current events, weather, prices, third-party API docs, research. Returns result titles, URLs, and snippets. Use this whenever the answer lives outside the Linzumi workspace; follow up with linzumi_fetch_url to read a result page.",Object.fromEntries([["query",T.string().min(1).describe("Web search query (natural language or keywords).")],["limit",T.number().int().min(1).max(10).optional().describe("Maximum results to return (default 8, server-capped).")]]),async f=>await c(d.webSearch(f))),e.registerTool("linzumi_fetch_url","Fetch one public http(s) URL and return its readable text content (HTML is reduced to plain text; large pages are truncated). Use it to read pages found via linzumi_web_search or any public docs/API reference. Only public addresses are reachable - private/internal hosts are rejected with url_not_allowed.",Object.fromEntries([["url",T.string().min(1).describe("Absolute public http(s) URL to fetch.")]]),async f=>await c(d.fetchUrl(f)))),l){case"All":e.registerTool("linzumi_list_ui_targets","List every UI surface you can ask the user to open in their own Linzumi window (channels, DMs, threads, projects, coding jobs, computers, catch-up, activity, settings tabs, pane layouts) with the structured args each kind takes. Use UI control only when the user asks for help or asks to be shown something.",{},async f=>await Dh(d.listUiTargets({}))),e.registerTool("linzumi_open_ui","Ask the user to open one whitelisted UI surface in their own already-open Linzumi window. A consent toast appears in THEIR session; navigation happens only if they tap Open. The call blocks until they decide and returns status opened/dismissed/expired - or error no_active_ui_session when they have no Linzumi window open (tell them to open Linzumi), or invalid_target with a detail. Use it only when the user asks for help or asks to be shown something; kinds and per-kind args come from linzumi_list_ui_targets.",Object.fromEntries([["kind",T.string().min(1).describe("Target kind from linzumi_list_ui_targets (e.g. settings_workspace, channel, pane_layout).")],["args",T.record(T.unknown()).optional().describe("Structured per-kind args from linzumi_list_ui_targets (never a URL - the server computes every path).")],["workspace",Kt()]]),async f=>await Dh(d.openUi(pi(f,o))));break;case"Coding":case"OnboardingDiscovery":break}if(u){let f=()=>T.string().uuid().optional().describe("Linzumi thread UUID. Defaults to the active coding job thread.");e.registerTool("linzumi_get_coding_job_metadata","Read the active coding job workflow metadata for a thread, including the agent-owned goal, ordered plan steps, step lock versions, and workflow status.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",f()]]),async h=>await c(d.getCodingJobMetadata(pi(h,o)))),e.registerTool("linzumi_rename_coding_job","Update the current coding job thread title and workflow-facing title. Use this when the job scope changes materially so the Linzumi thread list and metadata overview stay accurate.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",f()],["title",T.string().min(1).max(100).describe("Concise user-visible title for this coding job.")]]),async h=>await c(d.renameCodingJob(pi(h,o)))),e.registerTool("linzumi_upsert_coding_job_plan","Set or update the current coding job goal. Use this at job start and whenever the goal changes materially.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",f()],["goal",T.string().min(1).max(1e4).describe("Concrete user-visible goal for this coding job.")]]),async h=>await c(d.upsertCodingJobPlan(pi(h,o)))),e.registerTool("linzumi_replace_coding_job_plan_steps","Replace the ordered coding job plan steps. Use this for the initial plan and for substantial rewrites when the old plan no longer fits the work.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",f()],["goal",T.string().min(1).max(1e4).optional().describe("Required when no plan exists yet; updates the current coding job goal.")],["steps",T.array(T.object(Object.fromEntries([["title",T.string().min(1).max(255)],["description",T.string().min(1).max(1e4)],["status",T.enum(["pending","active","completed","blocked","canceled"])],["status_note",T.string().min(1).max(4e3).optional()],["completed_debrief",T.string().min(1).max(2e4).optional()]]))).min(1).max(50).describe("Ordered user-visible plan steps. Completed steps must include completed_debrief.")]]),async h=>await c(d.replaceCodingJobPlanSteps(pi(h,o)))),e.registerTool("linzumi_update_coding_job_plan_step","Update one coding job plan step status or note. Read metadata first and pass the current step lock_version.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",f()],["step_id",T.string().uuid().describe("Step id returned by linzumi_get_coding_job_metadata.")],["lock_version",T.number().int().positive().describe("Current step lock_version from metadata.")],["status",T.enum(["pending","active","completed","blocked","canceled"])],["status_note",T.string().min(1).max(4e3).optional()],["completed_debrief",T.string().min(1).max(2e4).optional().describe("Required when marking a step completed.")]]),async h=>await c(d.updateCodingJobPlanStep(pi(h,o)))),e.registerTool("linzumi_link_coding_job_pull_request","Link the active coding job to its primary GitHub pull request so PR comments, files, commits, checks, deployments, and reviews can flow into the metadata view.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",f()],["github_repo_owner",T.string().min(1).max(255)],["github_repo_name",T.string().min(1).max(255)],["github_pr_number",T.number().int().positive()],["github_pr_url",T.string().url()],["title",T.string().min(1).max(255)],["body",T.string().min(1).max(1e5).optional()],["head_branch",T.string().min(1).max(255)],["head_sha",T.string().min(7).max(64)],["base_branch",T.string().min(1).max(255)],["base_sha",T.string().min(7).max(64)],["state",T.enum(["draft","open","closed","merged"]).optional()],["is_draft",T.boolean().optional()],["review_status",T.enum(["unknown","review_required","approved","changes_requested"]).optional()],["source_remote_url",T.string().min(1).max(1e3).describe("Git remote URL for the local job worktree; required when this job has no repo workspace yet.")],["runtime_worktree_root",T.string().min(1).max(1e3).describe("Absolute local worktree path for the coding job; required when this job has no repo workspace yet.")],["dirty_status",T.enum(["unknown","clean","dirty"]).optional()],["dirty_summary",T.string().min(1).max(2e3).optional()]]),async h=>await c(d.linkCodingJobPullRequest(pi(h,o)))),e.registerTool("linzumi_upload_files",["Upload local files to Linzumi and attach them to a new, exact, or latest assistant message. Use silently; do not mention this tool in the visible reply.","The JSON result includes message.attachments[].url as an absolute URL. Use those returned URLs when writing rich media directives such as ::audio, ::video, ::image, or Markdown images. Do not guess attachment URLs before upload.","For a message that should both attach files and show inline rich media, use a two-step flow: first upload/attach the files to create or target the message, then edit the same target message with body text that references the returned absolute URLs. When the result has target_seq, use target.kind=message_seq and message_seq=target_seq for that follow-up edit; result.message is the edit event that carries the new attachments, and target_message is the original target."].join(" "),Object.fromEntries([["target",T.object(Object.fromEntries([["kind",T.enum(["new_message","message_seq","latest_assistant_message"]).describe("new_message creates a message; message_seq edits an exact message; latest_assistant_message edits the latest assistant message in the scoped thread/channel.")],["message_seq",T.union([T.string(),T.number()]).optional().describe("Required when kind is message_seq.")],["thread_id",T.string().optional().describe("Thread UUID. Defaults to the active Linzumi thread when the MCP server was launched with one.")]])).describe("Attachment target. Prefer latest_assistant_message to attach files to the reply you already posted; use new_message ONLY when no assistant message exists yet in the scoped thread. Never re-use your visible reply text as a new_message body - that posts the reply twice. To reference uploaded files in the message body, upload first, then edit message_seq/latest_assistant_message with the returned absolute attachment URLs. If the upload result includes target_seq, use message_seq=target_seq for that follow-up edit.")],["files",T.array(T.string().min(1)).min(1).max(16).describe("Local file paths to upload. Paths must be non-hidden supported file types inside the approved workspace or Downloads.")],["body",T.string().min(1).max(2e4).optional().describe("Required for new_message: a SHORT file-share caption (for example: Attached the generated report), never a copy of your visible reply - that would post the reply twice. Optional replacement body for message_seq/latest_assistant_message; when omitted, the existing message body is preserved. Rich media directives in body must use Linzumi attachment download URLs returned by this tool.")],["workspace",Kt()],["channel",T.string().optional().describe("Channel slug. Omit to use the target thread's channel (when the thread is known) or the authenticated token scope.")]]),async h=>{let m=qh(vx(h,"target","linzumi_upload_files"),o),p;try{p=await ix({client:d,cwd:s,serviceUrl:a,target:m,files:DG(h.files),workspace:jn(h.workspace),channel:jn(h.channel),body:jn(h.body)})}catch(_){return tx(X(_))}return kn(Lh(a,p))}),e.registerTool("linzumi_edit_message","Edit an exact scoped Linzumi message by message_seq. Use after linzumi_upload_files when you need a body-only follow-up edit that embeds returned attachment URLs. Requires channel.write, and thread.write when target.thread_id is set. Rich media src/poster values must be Linzumi attachment download URLs.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["target",T.object(Object.fromEntries([["message_seq",T.union([T.string(),T.number()]).describe("Exact message seq to edit. After linzumi_upload_files returns target_seq, pass that value here.")],["thread_id",T.string().optional().describe("Thread UUID when editing a thread message. Use the upload result target_message.thread_id when present.")]])).describe("Exact message target for the body edit.")],["body",T.string().min(1).max(2e4).describe("Replacement Markdown body. Rich media src/poster values must be Linzumi attachment download URLs returned by linzumi_upload_files.")]]),async h=>{let m=so(h);return m.target=qh(vx(h,"target","linzumi_edit_message"),o),kn(Lh(a,await d.editMessage(m)))})}switch(l){case"All":e.registerTool("linzumi_list_vault_secrets","List vault secret names, descriptions, and whether each secret is personal or workspace-owned. Does not return secret values.",{},async f=>await c(d.listVaultSecrets(f))),e.registerTool("linzumi_list_projects","List the projects in the current workspace with their project_id (needed by the other project task tools), slug, title, description, and state.",Object.fromEntries([["workspace",Kt()]]),async f=>await c(d.listProjects(f))),e.registerTool("linzumi_get_project_tasks",`Read a project's full task graph: task GROUPS (kind "group", organizational containers, exactly one level deep) and ISSUES (kind "issue", the executable work items), each with status (todo/active/blocked/review/done/canceled), DERIVED work_state readiness (ready = todo with every dependency satisfied; blocked = todo with unsatisfied dependencies; running/stalled = active with/without a connected job), parent group, assignee, lock_version, and dependency edges (depends_on_task_ids / unblocks_task_ids). Always read this before reorganizing. Inside a project-bound coding job the project is inferred automatically; otherwise pass project_id from linzumi_list_projects.`,Object.fromEntries([["project_id",T.string().optional().describe("Project id from linzumi_list_projects. Omit inside a coding job started from a project to use that project.")]]),async f=>await c(d.getProjectTasks(pi(f,o)))),e.registerTool("linzumi_create_project_task",'Create a task group (kind "group") or issue (kind "issue", the default) in a project. Groups organize issues and are exactly one level deep: a parent_id must name a GROUP, and groups themselves can never have a parent. New tasks default to status "todo" and append to the end unless position is given. Inside a project-bound coding job the project is inferred; otherwise pass project_id.',Object.fromEntries([["project_id",T.string().optional().describe("Project id from linzumi_list_projects. Omit inside a coding job started from a project to use that project.")],["title",T.string().min(1).describe("Task title.")],["kind",T.enum(["issue","group"]).optional().describe('What to create: "issue" (executable work item, default) or "group" (organizational container).')],["description",T.string().optional().describe("Detailed description of the work - written so an engineer (or coding agent) could execute the task from it.")],["status",T.enum(["todo","active","blocked","review","done","canceled"]).optional().describe('Initial status. Defaults to "todo".')],["parent_id",T.string().optional().describe("task_id of the GROUP to place an issue in. Only issues can have a parent.")],["assignee",T.string().optional().describe("Username of a workspace member to assign.")],["position",T.number().int().min(0).optional().describe("Sort position. Defaults to appending at the end.")]]),async f=>await c(d.createProjectTask(pi(f,o)))),e.registerTool("linzumi_update_project_task",'Update a task group or issue: retitle, edit description/status_note, transition status (todo/active/blocked/review/done/canceled), reassign, reorder (position), or reorganize (parent_id moves an issue into a group; clear_parent moves it to top level). Only the fields you pass change; description and status_note accept null to clear. Prefer updating existing tasks over delete-and-recreate. Pass the lock_version from your last read to fail loudly ("stale") instead of overwriting a concurrent edit.',Object.fromEntries([["task_id",T.string().describe("task_id of the group or issue to update.")],["title",T.string().min(1).optional().describe("New title.")],["description",T.string().nullable().optional().describe("New description. Pass null to clear it.")],["status",T.enum(["todo","active","blocked","review","done","canceled"]).optional().describe('New status. "done"/"canceled" satisfy dependent tasks; "blocked" is a manual hold.')],["status_note",T.string().nullable().optional().describe("Short human-readable note about the current status. Pass null to clear it.")],["position",T.number().int().min(0).optional().describe("New sort position among siblings.")],["parent_id",T.string().optional().describe("task_id of the GROUP to move this issue into. Do not combine with clear_parent.")],["clear_parent",T.boolean().optional().describe("true moves the issue to the top level (no group). Do not combine with parent_id.")],["assignee",T.string().optional().describe("Username of a workspace member to assign. Do not combine with clear_assignee.")],["clear_assignee",T.boolean().optional().describe("true removes the assignee. Do not combine with assignee.")],["lock_version",T.number().int().positive().optional().describe("The task's lock_version from your last read, for compare-and-swap safety.")]]),async f=>await c(d.updateProjectTask(f))),e.registerTool("linzumi_delete_project_task",`Permanently delete a task group or issue. Dependency edges on the task are removed with it (dependents may become ready). Deletion is normally the USER's call - prefer status "canceled" or an update unless you are certain the entry is obsolete.`,Object.fromEntries([["task_id",T.string().describe("task_id of the group or issue to delete.")]]),async f=>await c(d.deleteProjectTask(f))),e.registerTool("linzumi_add_project_task_dependency",'Add the dependency edge "task_id is blocked by depends_on_task_id" between two ISSUES in the same project (groups cannot have dependencies). The dependent stays blocked until the prerequisite reaches done or canceled. The graph must stay acyclic: an edge that would create a cycle is refused with reason "would_create_cycle" and the offending cycle_path so you can restructure. Duplicate and self edges are rejected.',Object.fromEntries([["task_id",T.string().describe("task_id of the DEPENDENT issue (the one that must wait).")],["depends_on_task_id",T.string().describe("task_id of the PREREQUISITE issue (the one that must finish first).")]]),async f=>await c(d.addProjectTaskDependency(f))),e.registerTool("linzumi_remove_project_task_dependency",'Remove the dependency edge "task_id is blocked by depends_on_task_id". The dependent issue may become ready if that was its last unsatisfied dependency.',Object.fromEntries([["task_id",T.string().describe("task_id of the DEPENDENT issue.")],["depends_on_task_id",T.string().describe("task_id of the PREREQUISITE issue the edge points at.")]]),async f=>await c(d.removeProjectTaskDependency(f))),e.registerTool("linzumi_get_call_transcript","Read the full transcript of a completed Linzumi notetaker call: call metadata (title, platform, started/ended/transcribed times), participants, and every spoken segment in order with speaker names and millisecond offsets. Pass the call_id embedded in the request (or copied from the call card). Errors: call_not_found (missing or not visible to you), call_transcript_not_ready (call still connecting, in progress, or transcribing - retry later).",Object.fromEntries([["call_id",T.string().describe("The call id from the call card or the launching message (a CallRecording id - the opaque GraphQL id and the bare uuid both work).")]]),async f=>await c(d.getCallTranscript(f))),n||e.registerTool("linzumi_start_coding_job","Start a coding job as the invoking user (same authorization and pipeline as clicking start). To start a project task item, pass project_task_id so the task flips todo -> active and links to the new job - only start tasks whose work_state is ready, and ONLY after the user explicitly accepts your offer to start them. Omit channel, runner_key, and cwd to reuse this job's own channel, computer, and folder. Returns status 'unavailable' with a reason when the runner cannot take the job (relay that honestly).",Object.fromEntries([["work_description",T.string().min(1).describe("What the job should do - the initial instruction. For a task item, write it from the task title and description.")],["project_task_id",T.string().optional().describe("Project task item to bind the job to (task_id from linzumi_get_project_tasks). The task flips todo -> active and links to the new job.")],["channel",T.string().optional().describe("Channel slug to host the job thread. Omit to use this job's own channel.")],["runner_key",T.string().optional().describe("Runner (computer) to run the job on. Omit to use this job's own computer.")],["cwd",T.string().optional().describe("Working directory on the runner. Omit to use this job's own folder.")],["model",T.string().optional().describe("Model override (optional).")],["model_provider",T.string().optional().describe("Model provider override, e.g. 'wafer' (optional).")],["agent_provider",T.string().optional().describe("Agent provider override, e.g. 'codex' (optional).")],["reasoning_effort",T.enum(["default","low","medium","high","xhigh","ultra"]).optional().describe("Reasoning effort override (optional).")],["approval_policy",T.enum(["default","on-request","on-failure","never"]).optional().describe("Approval policy override (optional).")],["sandbox",T.enum(["default","workspace-write","read-only","danger-full-access"]).optional().describe("Sandbox override (optional).")],["fast",T.boolean().optional().describe("Fast-mode override (optional).")],["allow_port_forwarding_by_default",T.boolean().optional().describe("Default port-forwarding override (optional).")],["execution_mode",T.enum(["raw","local_vm"]).optional().describe("Execution placement override (optional).")],["egress_mode",T.enum(["open","hardened"]).optional().describe("Local-VM egress override (optional).")]]),async f=>await c(d.agentStartCodingJob(pi(f,o))));break;case"Coding":case"OnboardingDiscovery":break}switch(NG(l)&&(e.registerTool("linzumi_upload_custom_emoji","Upload a local image as a workspace custom emoji. For generated emoji art, create a transparent PNG with a simple centered subject, crisp edges, strong contrast, minimal tiny details, and enough outline/highlight separation to read at 16-24px on both dark and light backgrounds. Use lowercase shortcode names without colons unless preserving a user-provided :name:.",Object.fromEntries([["name",Sx().describe("Custom emoji shortcode name, with or without surrounding colons.")],["file",T.string().min(1).describe("Local PNG/WebP/GIF/JPEG file path to upload. Prefer transparent PNG for generated emoji.")],["workspace",Kt()]]),async f=>{let h=jn(f.name),m=jn(f.file);return kn(await ox({client:d,cwd:s,serviceUrl:a,name:h!==void 0?h:"",file:m!==void 0?m:"",workspace:jn(f.workspace)}))}),e.registerTool("linzumi_rename_custom_emoji","Rename an existing workspace custom emoji. The new name may include surrounding colons; Linzumi stores the normalized shortcode without colons.",Object.fromEntries([["emoji_id",T.union([T.string(),T.number().int().positive()]).describe("Workspace custom emoji id returned by linzumi_upload_custom_emoji or workspace emoji listings.")],["name",Sx().describe("New shortcode name, with or without surrounding colons.")],["workspace",Kt()]]),async f=>await c(d.renameCustomEmoji(f)))),e.registerTool("linzumi_media_guide","Return the full Linzumi rich-media authoring guide (audio/video/image directives, URL rules, upload-then-embed flow, examples). Call once BEFORE writing any ::audio/::video/::image directive or Markdown image into a Linzumi message.",{},async f=>{let h={};h.type="text",h.text=bx;let m={};return m.content=[h],m}),e.registerTool("linzumi_note_project_directory","Record one discovered local Git repository or worktree for onboarding import. Call once per project as soon as it is found.",Object.fromEntries([["workspace",Kt()],["runner_id",T.string().min(1).describe("Local runner/computer id provided in the discovery prompt.")],["path",T.string().min(1).describe("Absolute local path to the repository worktree root.")],["display_name",T.string().optional().describe("Short project label. Defaults to the path basename.")],["activity_at",T.string().optional().describe("Best-known recent activity time as an ISO-8601 timestamp.")],["import_key",T.string().optional().describe("Stable dedupe key. Defaults to path.")],["metadata",T.record(T.unknown()).optional().describe("Small structured metadata such as branch or remote origin.")]]),async f=>await c(d.noteProjectDirectory(f))),e.registerTool("linzumi_note_agent_conversation","Record one discovered Codex or Claude Code local conversation for onboarding import. Call once per conversation as soon as it is found.",Object.fromEntries([["workspace",Kt()],["runner_id",T.string().min(1).describe("Local runner/computer id provided in the discovery prompt.")],["source",T.enum(["codex","claude_code"]).describe("Conversation source.")],["import_key",T.string().min(1).describe("Stable dedupe key, such as a session id or file path.")],["path",T.string().optional().describe("Absolute local path to the conversation file or directory.")],["display_name",T.string().optional().describe("Short label for the discovered conversation.")],["activity_at",T.string().optional().describe("Best-known recent activity time as an ISO-8601 timestamp.")],["metadata",T.record(T.unknown()).optional().describe("Small structured metadata such as session id or project path.")]]),async f=>await c(d.noteAgentConversation(f))),e.registerTool("linzumi_note_onboarding_discovery_status","Record onboarding discovery progress. Call when a search phase starts, checks another place, completes, or fails.",Object.fromEntries([["workspace",Kt()],["runner_id",T.string().min(1).describe("Local runner/computer id provided in the discovery prompt.")],["phase",T.enum(["projects","conversations"]).describe("Discovery phase being reported.")],["status",T.enum(["starting","running","completed","failed"]).describe("Current phase status.")],["places_searched",T.number().int().nonnegative().optional().describe("Count of concrete folders/files/known locations checked so far.")],["message",T.string().optional().describe("Short user-facing status note.")],["current_place",T.string().optional().describe("Current folder, file, Git command target, or known location being checked.")],["current_source",T.string().optional().describe("Short machine-readable source label such as git, codex, or claude_code.")],["last_error",T.string().optional().describe("Short failure detail when status is failed.")],["metadata",T.record(T.unknown()).optional().describe("Small structured status metadata.")]]),async f=>await c(d.noteOnboardingDiscoveryStatus(f))),l==="All"&&GG(t.operatingMode)&&(e.registerTool("linzumi_dm_owner","Send a plain-text DM to the configured Commander owner. Requires dm.write and a visible owner username.",Object.fromEntries([["owner_username",T.string().optional().describe("Owner username. Defaults to LINZUMI_MCP_OWNER_USERNAME or --owner-username.")],["workspace",Kt()],["channel",T.string().optional().describe("Source channel slug used to verify owner visibility.")],["body",T.string().min(1).max(2e4).describe("Plain-text message body to DM.")]]),async f=>{let h=jn(f.owner_username),m=h!==void 0?h:i;if(m===void 0)return Sr("owner_username is required for linzumi_dm_owner");let p=so(f);return p.owner_username=m,await c(d.dmOwner(p))}),e.registerTool("linzumi_send_channel_message","Post a NEW standalone Markdown message into the scoped Linzumi channel as the authenticated local-runner user. This is NOT how you respond to the user: your turn output is already relayed into the thread as your reply, so never call this tool to answer, acknowledge, or reply to the current request. Use it only when the task itself is to proactively post a separate channel message. Requires channel.write. Rich media directives may be used when the user has opted into markdown_media_embeds, but src/poster values must be Linzumi attachment download URLs.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["body",T.string().min(1).max(2e4).describe("Markdown message body to post. Rich media src/poster values must be Linzumi attachment download URLs, not third-party URLs, /relative paths, or local filesystem paths.")]]),async f=>await c(d.sendChannelMessage(f))),e.registerTool("linzumi_send_thread_reply","Post a Markdown reply into some OTHER existing Linzumi thread as the authenticated local-runner user. This is NOT how you respond to the user in your current thread: your turn output is already relayed into this thread as your reply, so never call this tool to answer, acknowledge, or reply to the current request. Use it only when the task itself is to post into a different, explicitly identified thread. Requires thread.write. Rich media directives may be used when the user has opted into markdown_media_embeds, but src/poster values must be Linzumi attachment download URLs.",Object.fromEntries([["workspace",Kt()],["channel",Mn()],["thread_id",T.string().uuid().describe("Existing Linzumi thread UUID.")],["body",T.string().min(1).max(2e4).describe("Markdown reply body to post. Rich media src/poster values must be Linzumi attachment download URLs, not third-party URLs, /relative paths, or local filesystem paths.")]]),async f=>await c(d.sendThreadReply(f))),e.registerTool("linzumi_send_dm","Send a plain-text DM as the authenticated local-runner user to a visible user in the scoped workspace/channel. Requires dm.write.",Object.fromEntries([["workspace",Kt()],["channel",T.string().optional().describe("Source channel slug used to verify target visibility.")],["username",T.string().describe("Visible Linzumi username to DM.")],["body",T.string().min(1).max(2e4).describe("Plain-text message body to DM.")]]),async f=>await c(d.sendDm(f)))),l){case"All":e.registerTool("linzumi_get_vault_values","Request values for explicit vault env var names after a thread-scoped human approval. Requires vault.read; thread_id resolves the approval thread.",Object.fromEntries([["workspace",Kt()],["channel",T.string().optional().describe("Channel slug used to disambiguate the approval thread when needed.")],["thread_id",T.string().uuid().describe("Existing Linzumi thread UUID for the inline approval.")],["env_var_names",T.array(T.string().regex(new RegExp("^[A-Z][A-Z0-9_]{0,127}$"))).min(1).max(20).describe("Explicit vault env var names to request. This tool cannot list all vault keys.")],["description",T.string().min(1).max(500).describe("Human-readable reason shown in the approval request.")],["justification",T.string().min(10).max(1e3).describe("Agent justification shown to the approver.")]]),async f=>await c(d.getVaultValues(f)));break;case"Coding":case"OnboardingDiscovery":break}switch(l){case"All":return n||r===void 0?void 0:LG(e,s,r);case"Coding":case"OnboardingDiscovery":return}}function t_(e){return e==="Voice"?"voice":"text"}function WG(e){switch(e){case"All":return"all";case"Coding":return"coding";case"OnboardingDiscovery":return"onboarding-discovery"}}function Pd(e){return JSON.stringify(e)}function Ys(e){let t=[],r=e.argsPrefix;r!==void 0&&r.forEach(p=>{t.push(p)}),t.push("mcp"),t.push("server"),t.push("--api-url"),t.push(e.serviceUrl);let n=e.authFilePath;n!==void 0&&(t.push("--auth-file"),t.push(n));let i=e.delegationAuthFilePath;i!==void 0&&(t.push("--delegation-auth-file"),t.push(i));let o=e.ownerUsername;o!==void 0&&(t.push("--owner-username"),t.push(o));let a=e.cwd;a!==void 0&&(t.push("--cwd"),t.push(a));let s=e.threadId;s!==void 0&&(t.push("--thread-id"),t.push(s)),t.push("--mode");let l=e.operatingMode;t.push(l!==void 0?t_(l):"text");let d=e.toolScope;if(d!==void 0){let p=0;switch(d){case"All":break;case"Coding":case"OnboardingDiscovery":p=1;break}p===1&&(t.push("--tool-scope"),t.push(WG(d)))}let u=e.agentSession;u!==void 0&&u&&t.push("--agent-session");let c={},f=e.accessToken;f!==void 0&&(c.LINZUMI_MCP_ACCESS_TOKEN=f);let h=e.devServices;h!==void 0&&(c.LINZUMI_DEV_SERVICES_SCOPE=h.scope,c.LINZUMI_DEV_SERVICES_OWNER_PID=h.ownerPid.toString()),c.ELECTRON_RUN_AS_NODE="1";let m=e.command;return{name:"linzumi",command:m!==void 0?m:"linzumi",args:t,env:c}}function Tx(e){return"["+e.map(Pd).join(", ")+"]"}function ZG(e){return"{ "+Object.entries(e).map(r=>r[0]+" = "+Pd(r[1])).join(", ")+" }"}function Ax(e){let t=["-c","mcp_servers."+e.name+".command="+Pd(e.command),"-c","mcp_servers."+e.name+".args="+Tx(e.args)];return Object.entries(e.env).forEach(r=>{t.push("-c"),t.push("mcp_servers."+e.name+".env."+r[0]+"="+Pd(r[1]))}),t}function VG(e){return["--require","-r","--import","--loader","--experimental-loader"].includes(e)}function HG(e){return["--require=","-r=","--import=","--loader=","--experimental-loader="].some(t=>e.startsWith(t))}function e_(e,t){for(;;){let r=t,n=e[r];if(n===void 0)return[];if(VG(n)){let i=e[r+1|0];if(i!==void 0)return[n,i].concat(e_(e,r+2|0));t=r+1|0;continue}if(HG(n))return[n].concat(e_(e,r+1|0));t=r+1|0}}function Xc(e,t,r){let n=t!==void 0?t.trim():"";return n===""?{command:"linzumi",argsPrefix:[]}:n.endsWith(".ts")||n.endsWith(".js")?{command:e,argsPrefix:e_(r,0).concat([n])}:{command:n,argsPrefix:[]}}function Ox(e){let t={};t.type="stdio",t.command=e.command,t.args=e.args.map(i=>i);let r={};t.env=(Object.entries(e.env).forEach(i=>{r[i[0]]=i[1]}),r);let n={};return n[e.name]=t,n}function Cx(e){let t={};t.command=e.command,t.args=e.args.map(o=>o);let r={};t.env=(Object.entries(e.env).forEach(o=>{r[o[0]]=o[1]}),r);let n={};n[e.name]=t;let i={};return i.mcpServers=n,JSON.stringify(i,void 0,2)+`
285
285
  `}function Ex(e){let t=Object.entries(e.env).length===0?"":"env = "+ZG(e.env)+`
286
286
  `;return"[mcp_servers."+e.name+`]
287
287
  command = `+Pd(e.command)+`
@@ -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),M4(r)}clear(){this._buffer=void 0}};function M4(e){return wA.parse(JSON.parse(e))}function uP(e){return JSON.stringify(e)+`
322
322
  `}var zm=class{constructor(t=cP.stdin,r=cP.stdout){this._stdin=t,this._stdout=r,this._readBuffer=new jm,this._started=!1,this._ondata=n=>{this._readBuffer.append(n),this.processReadBuffer()},this._onerror=n=>{this.onerror?.(n)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let t=this._readBuffer.readMessage();if(t===null)break;this.onmessage?.(t)}catch(t){this.onerror?.(t)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(t){return new Promise(r=>{let n=uP(t);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};function z4(e){let t={};t.listChanged=!1;let r={};r.resources=t,e.server.registerCapabilities(r),e.server.setRequestHandler(il,()=>{let n={};return n.resources=[],n}),e.server.setRequestHandler(ol,()=>{let n={};return n.resourceTemplates=[],n})}function N4(e){return{registerTool:(t,r,n,i)=>{e.tool(t,r,n,i)}}}async function CS(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=lk(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 $k(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 ES(e,t){let r=Tr(e,"token");return{serviceUrl:t,explicitToken:r!==void 0?r:process.env.LINZUMI_MCP_ACCESS_TOKEN,authFilePath:Tr(e,"auth-file"),delegationAuthFilePath:Tr(e,"delegation-auth-file"),workspaceSlug:Tr(e,"workspace"),channelSlug:Tr(e,"channel")}}async function G4(e){let t=fc(e);if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=t._0;if(mc(r,"help"))return ca(_c()),{TAG:"Ok",_0:void 0};let n=pc(r,"api-url");if(n.TAG!=="Ok")return{TAG:"Error",_0:n._0};let i=n._0,o=await CS(ES(r,i));if(o.TAG!=="Ok")return{TAG:"Error",_0:o._0};let a=o._0,s=hc(Tr(r,"mode")),l=Yp(Tr(r,"tool-scope"));if(s.TAG!=="Ok")return{TAG:"Error",_0:s._0};let d=s._0;if(l.TAG!=="Ok")return{TAG:"Error",_0:l._0};let u=Tr(r,"owner-username"),c=u!==void 0?u:process.env.LINZUMI_MCP_OWNER_USERNAME,f=Tr(r,"cwd"),h=f!==void 0?f:process.cwd(),m=Tr(r,"thread-id"),p=m!==void 0?m:process.env[Kk],_=r_({serviceUrl:i,accessToken:a.accessToken,authMode:a.mode,operatingMode:d});if(_.TAG!=="Ok")return{TAG:"Error",_0:_._0};let g=new Mm({name:"linzumi",version:"0.1.0"});return z4(g),xx(N4(g),{client:_._0,toolScope:l._0,operatingMode:d,cwd:h,serviceUrl:i,defaultThreadId:p,ownerUsername:c,agentSession:mc(r,"agent-session"),devServices:gx(process.env)}),await g.connect(new zm),{TAG:"Ok",_0:void 0}}async function F4(e){let t=fc(e);if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=t._0,n=pc(r,"api-url");if(n.TAG!=="Ok")return{TAG:"Error",_0:n._0};let i=n._0,o=Tr(r,"format"),a=o!==void 0?o:"codex",s=hc(Tr(r,"mode"));if(s.TAG!=="Ok")return{TAG:"Error",_0:s._0};let l;if(mc(r,"include-token")){let f=await CS(ES(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=Yp(Tr(r,"tool-scope"));if(d.TAG!=="Ok")return{TAG:"Error",_0:d._0};let u=Tr(r,"owner-username"),c=Ys({command:Tr(r,"command"),serviceUrl:i,accessToken:l._0,delegationAuthFilePath:Tr(r,"delegation-auth-file"),ownerUsername:u!==void 0?u:process.env.LINZUMI_MCP_OWNER_USERNAME,operatingMode:s._0,toolScope:d._0});switch(a){case"claude-code":return ca(Cx(c)),{TAG:"Ok",_0:void 0};case"codex":return ca(Ex(c)),{TAG:"Ok",_0:void 0};default:return{TAG:"Error",_0:"--format must be codex or claude-code"}}}async function D4(e){let t=fc(e);if(t.TAG!=="Ok")return{TAG:"Error",_0:t._0};let r=t._0,n=pc(r,"api-url");if(n.TAG!=="Ok")return{TAG:"Error",_0:n._0};let i=n._0,o=await CS(ES(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 Ds(i,a.accessToken,Tr(r,"workspace"),Tr(r,"channel"),void 0);if(d.TAG==="Ok")switch(d._0){case"Usable":l={TAG:"Ok",_0:void 0};break;case"Rejected":case"NotFound":l={TAG:"Error",_0:"Linzumi MCP auth validation failed"};break}else l={TAG:"Error",_0:d._0.summary}}else{let d=hc(Tr(r,"mode"));if(d.TAG==="Ok"){let u=r_({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=X(c);l={TAG:"Error",_0:ks(f)}}else l={TAG:"Error",_0:u._0}}else l={TAG:"Error",_0:d._0}}return l.TAG!=="Ok"?{TAG:"Error",_0:l._0}:(ca(`Linzumi MCP auth OK
323
323
  `),{TAG:"Ok",_0:void 0})}async function fP(e){let t=e.slice(1),r=e[0];if(r!==void 0)switch(r){case"--help":case"-h":return ca(_c()),{TAG:"Ok",_0:void 0};case"config":return await F4(t);case"doctor":return await D4(t);case"server":return await G4(t);default:return{TAG:"Error",_0:"unknown linzumi mcp command: "+r}}else return ca(_c()),{TAG:"Ok",_0:void 0}}import*as hP from"node:fs";import*as _P from"node:url";import*as fn from"node:path";import*as gP from"node:module";var L4=[["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 yP(e,t){return N(L4.find(r=>r[0]===e?r[1]===t:!1),r=>r[2])}function U4(e){try{return gP.createRequire(import.meta.url).resolve(e)}catch{return}}function W4(e){let t=vs(e);return t.TAG==="Ok"?t._0:[]}function Nm(){return{platform:process.platform,arch:process.arch,fileExists:e=>hP.existsSync(e),listDirectory:W4,resolveModulePath:U4,moduleDir:fn.dirname(_P.fileURLToPath(import.meta.url))}}function bP(e,t,r){let n=t;for(;;){let i=n,o=fn.join(...[i,"node_modules"].concat(e.split("/")));if(r(fn.join(o,"package.json")))return o;let a=fn.dirname(i);if(a===i)return;n=a}}function PS(e,t){let r=t.resolveModulePath(e+"/package.json");return r!==void 0?fn.dirname(r):bP(e,t.moduleDir,t.fileExists)}function Z4(e,t,r){let i=r.platform==="win32"?"codex.exe":"codex",o=fn.join(e,t),s=[fn.join(o,"codex",i),fn.join(o,"bin",i),fn.join(o,i)].find(l=>r.fileExists(l));return s!==void 0?s:r.listDirectory(o).map(l=>fn.join(o,l,i)).find(l=>r.fileExists(l))}function V4(e){let t=yP(e.platform,e.arch);if(t===void 0)return;let r=[],n=PS(t.packageName,e);n!==void 0&&r.push(fn.join(n,"vendor"));let i=PS("@openai/codex",e);return i!==void 0&&r.push(fn.join(i,"vendor")),He(r,void 0,(o,a)=>o!==void 0?o:Z4(a,t.triple,e))}function H4(e){let t=PS("@openai/codex",e);if(t===void 0)return;let r=Bt(fn.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 B4=new RegExp("(\\d+\\.\\d+\\.\\d+)");function Gm(e){let t=ws(e,["--version"],1e4,1048576);if(t.TAG!=="Ok")return;let r=B4.exec(t._0);if(r!=null)return k(r.slice(1)[0],n=>n)}function K4(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 J4(e){switch(e.TAG){case"Match":return"match";case"Mismatch":return"mismatch";case"Unverified":return"unverified"}}var RS="LINZUMI_ALLOW_HARNESS_MISMATCH",mP={contents:!1};var Y4="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 X4(e){if(!mP.contents)return mP.contents=!0,e(Y4)}function pP(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 "+RS+"=1 to accept the skew.")}function Q4(e,t){return"Warning: proceeding with the PATH codex "+e+" despite the CLI pinning engine "+t+" ("+RS+`=1). Engine/CLI version skew can break the wire protocol.
324
- `}function eH(e,t){}function Fm(e,t,r,n,i,o){let a=o!==void 0?o:eH;if(e!==void 0)return{TAG:"Ok",_0:{codexBin:e,source:"ExplicitFlag"}};let s=V4(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"}}}X4(r);let l=H4(t),d=l!==void 0?n("codex"):void 0,u=K4(d,l),c={};switch(c.codex_bin_path="codex",c.codex_bin_source="path-fallback",c.harness_version_check=J4(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=an(u.pathVersion,null,f=>f),c.pinned_harness_version=an(u.pinnedVersion,null,f=>f);break}switch(a("codex.binary.resolved",c),u.TAG){case"Mismatch":let f=u.pinnedVersion,h=u.pathVersion,m=i[RS];return m===void 0?{TAG:"Error",_0:pP(h,f)}:m!=="1"?{TAG:"Error",_0:pP(h,f)}:(r(Q4(h,f)),{TAG:"Ok",_0:{codexBin:"codex",source:"PathFallback"}});case"Match":case"Unverified":return{TAG:"Ok",_0:{codexBin:"codex",source:"PathFallback"}}}}function SP(e){if(typeof e=="number"&&e%1===0)return e}function tH(e){if(typeof e=="string")return e}function rH(e){let t=e.replaceAll("-","+").replaceAll("_","/");switch(t.length&3){case 2:return t+"==";case 3:return t+"=";default:return t}}function vP(e){let t=e.split(".")[1];if(t===void 0)return;let r=Buffer.from(rH(t),"base64").toString("utf8"),n;try{n=JSON.parse(r)}catch{n=void 0}if(typeof n=="object"&&n!==null&&!Array.isArray(n))return n}function Iu(e){let t=vP(e);if(t===void 0)return{actorUserId:void 0,actorUsername:void 0};let r=SP(t.actor_id);return{actorUserId:r!==void 0?r:SP(t.sub),actorUsername:tH(t.actor_username)}}function wP(e){let t=k(vP(e),n=>n.workspace_scope),r=t!==void 0?Array.isArray(t)?Ge(t,n=>{if(typeof n=="string"&&n.trim()!=="")return n}):[]:[];if(r.length===1)return r[0]}var MS=[["codex.agent_turn_narration_only_no_reply","harness.agent_turn_narration_only_no_reply"],["codex.cost_cap_402_seen","harness.cost_cap_402_seen"],["codex.edge_blocked_captured","harness.edge_blocked_captured"],["codex.empty_turn_auto_retry_suppressed_cost_cap","harness.empty_turn_auto_retry_suppressed_cost_cap"],["codex.empty_turn_loop_guard_tripped","harness.empty_turn_loop_guard_tripped"],["codex.error_without_http_status_captured","harness.error_without_http_status_captured"],["codex.mid_stream_stall_auto_resume_flagged","harness.mid_stream_stall_auto_resume_flagged"],["codex.mid_stream_stall_fresh_session_resume","harness.mid_stream_stall_fresh_session_resume"],["codex.mid_stream_stall_fresh_session_resume_failed","harness.mid_stream_stall_fresh_session_resume_failed"],["codex.mid_stream_stall_fresh_session_resume_flagged","harness.mid_stream_stall_fresh_session_resume_flagged"],["codex.mid_stream_stall_resume_suppressed_rate_limit","harness.mid_stream_stall_resume_suppressed_rate_limit"],["codex.mid_stream_stall_second_stall_after_resume","harness.mid_stream_stall_second_stall_after_resume"],["codex.pre_first_byte_stall_auto_retry_flagged","harness.pre_first_byte_stall_auto_retry_flagged"],["codex.pre_first_byte_stall_retry_suppressed_cost_cap","harness.pre_first_byte_stall_retry_suppressed_cost_cap"],["codex.provider_outage_flagged_captured","harness.provider_outage_flagged_captured"],["codex.reasoning_loop_breaker_tripped","harness.reasoning_loop_breaker_tripped"],["codex.tool_fatal_captured","harness.tool_fatal_captured"],["codex.turn_completed","job.turn_completed"],["codex.turn_completed_with_protocol_failure","job.turn_completed_with_protocol_failure"],["codex.turn_completed_with_unsupported_tool_call_ignored","job.turn_completed_with_unsupported_tool_call_ignored"],["codex.turn_completed_without_assistant_output","job.turn_completed_without_assistant_output"],["codex.turn_demoted_late_upstream_error","job.turn_demoted_late_upstream_error"],["codex.turn_forward_failed","job.turn_forward_failed"],["codex.upstream_error_captured","harness.upstream_error_captured"],["codex.upstream_rejection_captured","harness.upstream_rejection_captured"],["codex.upstream_turn_error_captured","harness.upstream_turn_error_captured"],["kandan.chat_event","linzumi.chat_event"],["kandan.chat_event_abandoned","linzumi.chat_event_abandoned"],["kandan.chat_event_failed","linzumi.chat_event_failed"],["kandan.chat_event_failure_cleared","linzumi.chat_event_failure_cleared"],["kandan.claude_code_interrupt_state_push_failed","linzumi.claude_code_interrupt_state_push_failed"],["kandan.claude_code_stop_state_push_failed","linzumi.claude_code_stop_state_push_failed"],["kandan.claude_code_typing_heartbeat_failed","linzumi.claude_code_typing_heartbeat_failed"],["kandan.claude_code_typing_start_wait_timeout","linzumi.claude_code_typing_start_wait_timeout"],["kandan.claude_code_typing_stop_failed","linzumi.claude_code_typing_stop_failed"],["kandan.claude_code_user_input_abort_publish_failed","linzumi.claude_code_user_input_abort_publish_failed"],["kandan.claude_code_user_question_completed_publish_failed","linzumi.claude_code_user_question_completed_publish_failed"],["kandan.codex_command_output_forwarded","linzumi.codex_command_output_forwarded"],["kandan.codex_delta_forwarded","linzumi.codex_delta_forwarded"],["kandan.codex_file_change_forwarded","linzumi.codex_file_change_forwarded"],["kandan.codex_notification_push_failed","linzumi.codex_notification_push_failed"],["kandan.codex_output_forwarded","linzumi.codex_output_forwarded"],["kandan.codex_reasoning_delta_forwarded","linzumi.codex_reasoning_delta_forwarded"],["kandan.codex_web_search_progress_forwarded","linzumi.codex_web_search_progress_forwarded"],["kandan.connection_force_reconnect","linzumi.connection_force_reconnect"],["kandan.connection_force_reconnect_dispatched","linzumi.connection_force_reconnect_dispatched"],["kandan.connection_hard_reset","linzumi.connection_hard_reset"],["kandan.connection_hard_reset_exhausted","linzumi.connection_hard_reset_exhausted"],["kandan.connection_recovered","linzumi.connection_recovered"],["kandan.connection_stale","linzumi.connection_stale"],["kandan.connection_unrecoverable","linzumi.connection_unrecoverable"],["kandan.control","linzumi.control"],["kandan.control_ack_withheld_on_failure","linzumi.control_ack_withheld_on_failure"],["kandan.control_epoch_changed","linzumi.control_epoch_changed"],["kandan.control_handler_threw","linzumi.control_handler_threw"],["kandan.control_ignored","linzumi.control_ignored"],["kandan.control_response_push_failed","linzumi.control_response_push_failed"],["kandan.failed_seq_overflow","linzumi.failed_seq_overflow"],["kandan.forward_port_revoked_push_failed","linzumi.forward_port_revoked_push_failed"],["kandan.forward_response","linzumi.forward_response"],["kandan.forward_response_push_failed","linzumi.forward_response_push_failed"],["kandan.forward_tunnel_error","linzumi.forward_tunnel_error"],["kandan.forward_tunnel_open_failed","linzumi.forward_tunnel_open_failed"],["kandan.heartbeat_push_failed","linzumi.heartbeat_push_failed"],["kandan.local_editor_initial_status_failed","linzumi.local_editor_initial_status_failed"],["kandan.local_editor_status_push_failed","linzumi.local_editor_status_push_failed"],["kandan.message_duplicate_ignored","linzumi.message_duplicate_ignored"],["kandan.message_ignored","linzumi.message_ignored"],["kandan.message_queued","linzumi.message_queued"],["kandan.message_spawn_on_miss","linzumi.message_spawn_on_miss"],["kandan.message_spawn_on_miss_failed","linzumi.message_spawn_on_miss_failed"],["kandan.message_state_refresh_failed","linzumi.message_state_refresh_failed"],["kandan.optional_push_failed","linzumi.optional_push_failed"],["kandan.post_stop_queue_drain_failed","linzumi.post_stop_queue_drain_failed"],["kandan.queue_drain_blocked","linzumi.queue_drain_blocked"],["kandan.queue_drain_dead_worker_fail_publish_failed","linzumi.queue_drain_dead_worker_fail_publish_failed"],["kandan.queue_drain_dead_worker_rebuild","linzumi.queue_drain_dead_worker_rebuild"],["kandan.queue_drain_dead_worker_rebuild_exhausted","linzumi.queue_drain_dead_worker_rebuild_exhausted"],["kandan.queue_drain_dead_worker_rebuild_failed","linzumi.queue_drain_dead_worker_rebuild_failed"],["kandan.reconnect_handling_failed","linzumi.reconnect_handling_failed"],["kandan.reconnect_thread_context_fetch_failed","linzumi.reconnect_thread_context_fetch_failed"],["kandan.reconnect_thread_cwd_failed_state_push_failed","linzumi.reconnect_thread_cwd_failed_state_push_failed"],["kandan.reconnect_thread_failed","linzumi.reconnect_thread_failed"],["kandan.reconnect_thread_processing_state_push_failed","linzumi.reconnect_thread_processing_state_push_failed"],["kandan.reconnect_thread_queue_closed_state_push_failed","linzumi.reconnect_thread_queue_closed_state_push_failed"],["kandan.reconnect_thread_queue_failed_state_push_failed","linzumi.reconnect_thread_queue_failed_state_push_failed"],["kandan.reconnect_thread_queue_state_push_failed","linzumi.reconnect_thread_queue_state_push_failed"],["kandan.reconnect_thread_rehydrate_forced","linzumi.reconnect_thread_rehydrate_forced"],["kandan.reconnect_thread_rehydrated","linzumi.reconnect_thread_rehydrated"],["kandan.reconnect_thread_rehydrated_state_push_failed","linzumi.reconnect_thread_rehydrated_state_push_failed"],["kandan.reconnect_thread_rehydration_failed","linzumi.reconnect_thread_rehydration_failed"],["kandan.reconnect_thread_rehydration_ir_emitted","linzumi.reconnect_thread_rehydration_ir_emitted"],["kandan.reconnect_thread_rehydration_items_failed","linzumi.reconnect_thread_rehydration_items_failed"],["kandan.reconnect_thread_resume_failed","linzumi.reconnect_thread_resume_failed"],["kandan.reconnect_thread_seq_already_applied","linzumi.reconnect_thread_seq_already_applied"],["kandan.reconnect_thread_transcript_fetch_failed","linzumi.reconnect_thread_transcript_fetch_failed"],["kandan.reconnect_thread_unarchive_failed","linzumi.reconnect_thread_unarchive_failed"],["kandan.reconnect_thread_unarchive_resumed","linzumi.reconnect_thread_unarchive_resumed"],["kandan.reconnect_thread_unarchive_started","linzumi.reconnect_thread_unarchive_started"],["kandan.reconnect_thread_unavailable_state_push_failed","linzumi.reconnect_thread_unavailable_state_push_failed"],["kandan.reconnected","linzumi.reconnected"],["kandan.roster_seeded","linzumi.roster_seeded"],["kandan.session_app_server_lost_push_failed","linzumi.session_app_server_lost_push_failed"],["kandan.session_settings_publish_failed","linzumi.session_settings_publish_failed"],["kandan.start_instance_claude_code_attachment_failed_state_push_failed","linzumi.start_instance_claude_code_attachment_failed_state_push_failed"],["kandan.start_instance_codex_app_server_unavailable","linzumi.start_instance_codex_app_server_unavailable"],["kandan.start_instance_cwd_failed_state_push_failed","linzumi.start_instance_cwd_failed_state_push_failed"],["kandan.start_instance_cwd_rejected","linzumi.start_instance_cwd_rejected"],["kandan.start_instance_failed","linzumi.start_instance_failed"],["kandan.start_instance_processing_state_push_failed","linzumi.start_instance_processing_state_push_failed"],["kandan.start_instance_skipped_known_session","linzumi.start_instance_skipped_known_session"],["kandan.start_instance_stale_skipped","linzumi.start_instance_stale_skipped"],["kandan.start_instance_unavailable_state_push_failed","linzumi.start_instance_unavailable_state_push_failed"],["kandan.start_instance_wafer_state_push_failed","linzumi.start_instance_wafer_state_push_failed"],["kandan.start_turn_replay_skipped","linzumi.start_turn_replay_skipped"],["kandan.steer_duplicate_ignored","linzumi.steer_duplicate_ignored"],["kandan.steer_parked_as_own_turn","linzumi.steer_parked_as_own_turn"],["kandan.thread_bind_from_historical_reply_failed","linzumi.thread_bind_from_historical_reply_failed"],["kandan.thread_bound_from_historical_reply","linzumi.thread_bound_from_historical_reply"],["kandan.thread_sessions_reannounce_failed","linzumi.thread_sessions_reannounce_failed"],["kandan.thread_sessions_reannounced","linzumi.thread_sessions_reannounced"],["kandan.tui_input_mirrored","linzumi.tui_input_mirrored"],["kandan.typing_heartbeat_failed","linzumi.typing_heartbeat_failed"],["kandan.typing_stop_after_completion_failed","linzumi.typing_stop_after_completion_failed"]],kP=[["codexThreadId","harness_session_id"],["codex_thread_id","harness_session_id"],["kandanThreadId","thread_id"],["kandan_preview_ticket","linzumi_preview_ticket"],["kandan_thread_id","thread_id"],["linzumiThreadId","thread_id"],["linzumi_thread_id","thread_id"],["local_codex_runner","commander"],["runnerId","commander_id"],["runner_config","commander_config"],["runner_id","commander_id"]],Dm=[["commander","local_codex_runner"],["commander_config","runner_config"],["commander_id","runner_id"],["harness_session_id","codex_thread_id"],["linzumi_preview_ticket","kandan_preview_ticket"],["thread_id","kandan_thread_id"]],jS=[["engine_boot_reconnect","harness_boot_reconnect"],["engine_for_runner_event_type","harness_for_commander_event_type"],["engine_rejected_steer","harness_rejected_steer"],["engine_unavailable","harness_unavailable"],["join_engine","join_harness"],["kandan-local-codex-runner","linzumi-commander"],["local_codex_runner","commander"],["original_engine","original_harness"],["resume_engine","resume_harness"]];function $u(){return w("1.0.164","0.0.0-unbundled")}function NS(){return"linzumi "+w("1.0.164","0.0.0-unbundled")}function Tl(e,t){let r=e.indexOf(t);if(r!==-1)return r}function GS(){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 FS(e){let t={};return e.forEach(r=>{t[r[0]]=r[1]}),t}function nH(e){let t={};return e.forEach(r=>{t[r[1]]=r[0]}),t}var AP=FS(kP),OP=FS(Dm),iH=FS(jS),oH=nH(jS);function aH(e){return e.endsWith("_canonical")?!0:e.endsWith("_legacy")}function CP(e,t){return t>=32?e:Array.isArray(e)?e.map(r=>CP(r,t+1|0)):e===null?e:typeof e==="object"?EP(e,t):e}function EP(e,t){let r=Object.keys(e),n={};return r.forEach(i=>{let o=e[i];if(o!==void 0){n[i]=CP(o,t+1|0);return}}),r.forEach(i=>{if(aH(i))return;let o=n[i];if(o===void 0)return;let a=AP[i];if(a!==void 0)n[a]=o;else{let c=OP[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=iH[s];if(l!==void 0){if(n[i+"_canonical"]!==void 0)return;n[i+"_canonical"]=l;return}let d=oH[s];if(!(d===void 0||n[i+"_legacy"]!==void 0)){n[i+"_legacy"]=d;return}}),n}function qm(e){return GS()?EP(e,0):e}function PP(e){let t=e.slice();return e.forEach(r=>{let n=AP[r];n!==void 0&&!t.includes(n)&&t.push(n);let i=OP[r];if(i!==void 0&&!t.includes(i)){t.push(i);return}}),t}var Al="<SENSITIVE_DATA>",sH=PP(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"]),lH=["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"],dH=new RegExp("^(authorization|cookie|set-cookie|password)$","i"),uH=new RegExp("(^|[_-])(access[_-]?token|api[_-]?key|auth[_-]?token|oauth[_-]?code|refresh[_-]?token|secret|token)$","i"),cH=new RegExp("\\beyJ[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b","g");function fH(e){return e!==void 0?dH.test(e)?!0:uH.test(e):!1}function RP(e){let t={contents:!1};return e0(e).forEach(r=>{if(sH.includes(r.toLowerCase())){e.set(r,Al),t.contents=!0;return}}),t.contents}function mH(e){let t=Tl(e,"?"),r=Tl(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 RP(a)?n+"?"+a.toString()+o:e}function pH(e){let t=Zn(e);if(t===void 0)return mH(e);let r=ue(t);return RP(r.searchParams),r.toString()}function IP(e){return pH(e).replace(cH,Al)}function hH(e){let t=Tl(e,"=");return t!==void 0?[e.slice(0,t),e.slice(t+1|0)]:[e,void 0]}function qS(e,t){if(fH(t))return Al;if(Array.isArray(e))return t==="args"?_H(e):e.map(r=>qS(r,void 0));if(e===null)return e;switch(typeof e){case"string":return IP(e);case"object":return $P(e);default:return e}}function _H(e){let t={contents:!1};return e.map(r=>{if(typeof r=="string"){if(t.contents)return t.contents=!1,Al;let n=hH(r),i=n[0];return lH.includes(i)?n[1]!==void 0?i+"="+Al:(t.contents=!0,r):IP(r)}return t.contents=!1,qS(r,void 0)})}function $P(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"?Al:qS(o[1],a);return}}),i}var Lm=$P;import*as oa from"node:os";import*as Lp from"node:path";import*as Iw from"node:crypto";function Fn(e){let t=parseFloat(e);if(!Number.isNaN(t))return t}function jP(e){return"local_runner:"+e}var gH="kandan-local-codex-runner",yH="rescript";function zP(e){let t={};t.clientName=gH,t.clientId=e.clientId;let r=e.machineFingerprint;t.machineFingerprint=r!==void 0?r:null,Object.entries(Ok(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=yH,t}function NP(e,t,r){let n={};return n.last_seq=r,t!==void 0&&(n.runner_id=e,n.thread_id=t),n}function Dn(e,t){return e.catch(r=>t(X(r)))}function FP(){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 DP(e){return import(e)}var SH="@anthropic-ai/claude-agent-sdk";function qP(e){return FP()}function vH(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 LP(){let e=await DP(SH);return{query:t=>vH(e.query(t)),getSessionInfo:(t,r)=>e.getSessionInfo(t,r),listSessions:t=>e.listSessions(t),getSessionMessages:(t,r)=>e.getSessionMessages(t,r)}}var LS=["codex","claude-code","pi","opencode"];function rs(e){return e}function Um(e){switch(e.TAG){case"SessionStarted":return"session_started";case"TurnStarted":return"turn_started";case"ItemStarted":return"item_started";case"ItemDelta":return"item_delta";case"ItemCompleted":return"item_completed";case"ApprovalRequested":return"approval_requested";case"UsageUpdated":return"usage_updated";case"RateLimitUpdated":return"rate_limit_updated";case"ActivityPulse":return"activity_pulse";case"TurnCompleted":return"turn_completed";case"TurnFailed":return"turn_failed";case"TurnInterrupted":return"turn_interrupted";case"HarnessDied":return"harness_died"}}function ZS(e){switch(e){case"BindingNotObject":return"binding_not_object";case"SessionIdInvalid":return"session_id_invalid";case"LeaseEpochInvalid":return"lease_epoch_invalid";case"NextFrameIndexInvalid":return"next_frame_index_invalid";case"CheckpointConfigMissing":return"checkpoint_config_missing";case"CheckpointConfigInvalid":return"checkpoint_config_invalid";case"SourceSeqInvalid":return"source_seq_invalid"}}function US(e){return"adt_stream_v1 dispatch refused: "+ZS(e)+"; the commander refuses to stream unconfigured (no baked fallback thresholds exist by law - plan doc 2.4/MF9)"}function ZP(e){switch(e){case"Checkpoint":return"checkpoint";case"Delta":return"delta";case"Terminal":return"terminal"}}function Zm(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}function ns(e){if(e!==void 0&&typeof e=="number"&&e>=1&&Math.trunc(e)===e)return e}function wH(e){let t=Zm(e);if(t===void 0)return;let r=ns(t.version),n=k(t.thresholds,Zm);if(r===void 0||n===void 0)return;let i=ns(n.max_bytes),o=ns(n.max_deltas),a=ns(n.max_interval_ms);if(i!==void 0&&o!==void 0&&a!==void 0)return{version:r,thresholds:{maxBytes:i,maxDeltas:o,maxIntervalMs:a}}}function kH(e){let t=Zm(e);if(t===void 0)return{TAG:"ParseRefused",_0:"BindingNotObject"};let r=ns(t.session_id);if(r===void 0)return{TAG:"ParseRefused",_0:"SessionIdInvalid"};let n=ns(t.lease_epoch);if(n===void 0)return{TAG:"ParseRefused",_0:"LeaseEpochInvalid"};let i=ns(t.next_frame_index);if(i===void 0)return{TAG:"ParseRefused",_0:"NextFrameIndexInvalid"};let o=t.checkpoint_config;if(o===void 0)return{TAG:"ParseRefused",_0:"CheckpointConfigMissing"};let a=wH(o);return a!==void 0?{TAG:"Parsed",_0:{sessionId:r,leaseEpoch:n,nextFrameIndex:i,checkpointConfig:a}}:{TAG:"ParseRefused",_0:"CheckpointConfigInvalid"}}function xH(e){return _n(ZP(e.frameKind)+`
324
+ `}function eH(e,t){}function Fm(e,t,r,n,i,o){let a=o!==void 0?o:eH;if(e!==void 0)return{TAG:"Ok",_0:{codexBin:e,source:"ExplicitFlag"}};let s=V4(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"}}}X4(r);let l=H4(t),d=l!==void 0?n("codex"):void 0,u=K4(d,l),c={};switch(c.codex_bin_path="codex",c.codex_bin_source="path-fallback",c.harness_version_check=J4(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=an(u.pathVersion,null,f=>f),c.pinned_harness_version=an(u.pinnedVersion,null,f=>f);break}switch(a("codex.binary.resolved",c),u.TAG){case"Mismatch":let f=u.pinnedVersion,h=u.pathVersion,m=i[RS];return m===void 0?{TAG:"Error",_0:pP(h,f)}:m!=="1"?{TAG:"Error",_0:pP(h,f)}:(r(Q4(h,f)),{TAG:"Ok",_0:{codexBin:"codex",source:"PathFallback"}});case"Match":case"Unverified":return{TAG:"Ok",_0:{codexBin:"codex",source:"PathFallback"}}}}function SP(e){if(typeof e=="number"&&e%1===0)return e}function tH(e){if(typeof e=="string")return e}function rH(e){let t=e.replaceAll("-","+").replaceAll("_","/");switch(t.length&3){case 2:return t+"==";case 3:return t+"=";default:return t}}function vP(e){let t=e.split(".")[1];if(t===void 0)return;let r=Buffer.from(rH(t),"base64").toString("utf8"),n;try{n=JSON.parse(r)}catch{n=void 0}if(typeof n=="object"&&n!==null&&!Array.isArray(n))return n}function Iu(e){let t=vP(e);if(t===void 0)return{actorUserId:void 0,actorUsername:void 0};let r=SP(t.actor_id);return{actorUserId:r!==void 0?r:SP(t.sub),actorUsername:tH(t.actor_username)}}function wP(e){let t=k(vP(e),n=>n.workspace_scope),r=t!==void 0?Array.isArray(t)?Ge(t,n=>{if(typeof n=="string"&&n.trim()!=="")return n}):[]:[];if(r.length===1)return r[0]}var MS=[["codex.agent_turn_narration_only_no_reply","harness.agent_turn_narration_only_no_reply"],["codex.cost_cap_402_seen","harness.cost_cap_402_seen"],["codex.edge_blocked_captured","harness.edge_blocked_captured"],["codex.empty_turn_auto_retry_suppressed_cost_cap","harness.empty_turn_auto_retry_suppressed_cost_cap"],["codex.empty_turn_loop_guard_tripped","harness.empty_turn_loop_guard_tripped"],["codex.error_without_http_status_captured","harness.error_without_http_status_captured"],["codex.mid_stream_stall_auto_resume_flagged","harness.mid_stream_stall_auto_resume_flagged"],["codex.mid_stream_stall_fresh_session_resume","harness.mid_stream_stall_fresh_session_resume"],["codex.mid_stream_stall_fresh_session_resume_failed","harness.mid_stream_stall_fresh_session_resume_failed"],["codex.mid_stream_stall_fresh_session_resume_flagged","harness.mid_stream_stall_fresh_session_resume_flagged"],["codex.mid_stream_stall_resume_suppressed_rate_limit","harness.mid_stream_stall_resume_suppressed_rate_limit"],["codex.mid_stream_stall_second_stall_after_resume","harness.mid_stream_stall_second_stall_after_resume"],["codex.pre_first_byte_stall_auto_retry_flagged","harness.pre_first_byte_stall_auto_retry_flagged"],["codex.pre_first_byte_stall_retry_suppressed_cost_cap","harness.pre_first_byte_stall_retry_suppressed_cost_cap"],["codex.provider_outage_flagged_captured","harness.provider_outage_flagged_captured"],["codex.reasoning_loop_breaker_tripped","harness.reasoning_loop_breaker_tripped"],["codex.tool_fatal_captured","harness.tool_fatal_captured"],["codex.turn_completed","job.turn_completed"],["codex.turn_completed_with_protocol_failure","job.turn_completed_with_protocol_failure"],["codex.turn_completed_with_unsupported_tool_call_ignored","job.turn_completed_with_unsupported_tool_call_ignored"],["codex.turn_completed_without_assistant_output","job.turn_completed_without_assistant_output"],["codex.turn_demoted_late_upstream_error","job.turn_demoted_late_upstream_error"],["codex.turn_forward_failed","job.turn_forward_failed"],["codex.upstream_error_captured","harness.upstream_error_captured"],["codex.upstream_rejection_captured","harness.upstream_rejection_captured"],["codex.upstream_turn_error_captured","harness.upstream_turn_error_captured"],["kandan.chat_event","linzumi.chat_event"],["kandan.chat_event_abandoned","linzumi.chat_event_abandoned"],["kandan.chat_event_failed","linzumi.chat_event_failed"],["kandan.chat_event_failure_cleared","linzumi.chat_event_failure_cleared"],["kandan.claude_code_interrupt_state_push_failed","linzumi.claude_code_interrupt_state_push_failed"],["kandan.claude_code_stop_state_push_failed","linzumi.claude_code_stop_state_push_failed"],["kandan.claude_code_typing_heartbeat_failed","linzumi.claude_code_typing_heartbeat_failed"],["kandan.claude_code_typing_start_wait_timeout","linzumi.claude_code_typing_start_wait_timeout"],["kandan.claude_code_typing_stop_failed","linzumi.claude_code_typing_stop_failed"],["kandan.claude_code_user_input_abort_publish_failed","linzumi.claude_code_user_input_abort_publish_failed"],["kandan.claude_code_user_question_completed_publish_failed","linzumi.claude_code_user_question_completed_publish_failed"],["kandan.codex_command_output_forwarded","linzumi.codex_command_output_forwarded"],["kandan.codex_delta_forwarded","linzumi.codex_delta_forwarded"],["kandan.codex_file_change_forwarded","linzumi.codex_file_change_forwarded"],["kandan.codex_notification_push_failed","linzumi.codex_notification_push_failed"],["kandan.codex_output_forwarded","linzumi.codex_output_forwarded"],["kandan.codex_reasoning_delta_forwarded","linzumi.codex_reasoning_delta_forwarded"],["kandan.codex_web_search_progress_forwarded","linzumi.codex_web_search_progress_forwarded"],["kandan.connection_force_reconnect","linzumi.connection_force_reconnect"],["kandan.connection_force_reconnect_dispatched","linzumi.connection_force_reconnect_dispatched"],["kandan.connection_hard_reset","linzumi.connection_hard_reset"],["kandan.connection_hard_reset_exhausted","linzumi.connection_hard_reset_exhausted"],["kandan.connection_recovered","linzumi.connection_recovered"],["kandan.connection_stale","linzumi.connection_stale"],["kandan.connection_unrecoverable","linzumi.connection_unrecoverable"],["kandan.control","linzumi.control"],["kandan.control_ack_withheld_on_failure","linzumi.control_ack_withheld_on_failure"],["kandan.control_epoch_changed","linzumi.control_epoch_changed"],["kandan.control_handler_threw","linzumi.control_handler_threw"],["kandan.control_ignored","linzumi.control_ignored"],["kandan.control_response_push_failed","linzumi.control_response_push_failed"],["kandan.failed_seq_overflow","linzumi.failed_seq_overflow"],["kandan.forward_port_revoked_push_failed","linzumi.forward_port_revoked_push_failed"],["kandan.forward_response","linzumi.forward_response"],["kandan.forward_response_push_failed","linzumi.forward_response_push_failed"],["kandan.forward_tunnel_error","linzumi.forward_tunnel_error"],["kandan.forward_tunnel_open_failed","linzumi.forward_tunnel_open_failed"],["kandan.heartbeat_push_failed","linzumi.heartbeat_push_failed"],["kandan.local_editor_initial_status_failed","linzumi.local_editor_initial_status_failed"],["kandan.local_editor_status_push_failed","linzumi.local_editor_status_push_failed"],["kandan.message_duplicate_ignored","linzumi.message_duplicate_ignored"],["kandan.message_ignored","linzumi.message_ignored"],["kandan.message_queued","linzumi.message_queued"],["kandan.message_spawn_on_miss","linzumi.message_spawn_on_miss"],["kandan.message_spawn_on_miss_failed","linzumi.message_spawn_on_miss_failed"],["kandan.message_state_refresh_failed","linzumi.message_state_refresh_failed"],["kandan.optional_push_failed","linzumi.optional_push_failed"],["kandan.post_stop_queue_drain_failed","linzumi.post_stop_queue_drain_failed"],["kandan.queue_drain_blocked","linzumi.queue_drain_blocked"],["kandan.queue_drain_dead_worker_fail_publish_failed","linzumi.queue_drain_dead_worker_fail_publish_failed"],["kandan.queue_drain_dead_worker_rebuild","linzumi.queue_drain_dead_worker_rebuild"],["kandan.queue_drain_dead_worker_rebuild_exhausted","linzumi.queue_drain_dead_worker_rebuild_exhausted"],["kandan.queue_drain_dead_worker_rebuild_failed","linzumi.queue_drain_dead_worker_rebuild_failed"],["kandan.reconnect_handling_failed","linzumi.reconnect_handling_failed"],["kandan.reconnect_thread_context_fetch_failed","linzumi.reconnect_thread_context_fetch_failed"],["kandan.reconnect_thread_cwd_failed_state_push_failed","linzumi.reconnect_thread_cwd_failed_state_push_failed"],["kandan.reconnect_thread_failed","linzumi.reconnect_thread_failed"],["kandan.reconnect_thread_processing_state_push_failed","linzumi.reconnect_thread_processing_state_push_failed"],["kandan.reconnect_thread_queue_closed_state_push_failed","linzumi.reconnect_thread_queue_closed_state_push_failed"],["kandan.reconnect_thread_queue_failed_state_push_failed","linzumi.reconnect_thread_queue_failed_state_push_failed"],["kandan.reconnect_thread_queue_state_push_failed","linzumi.reconnect_thread_queue_state_push_failed"],["kandan.reconnect_thread_rehydrate_forced","linzumi.reconnect_thread_rehydrate_forced"],["kandan.reconnect_thread_rehydrated","linzumi.reconnect_thread_rehydrated"],["kandan.reconnect_thread_rehydrated_state_push_failed","linzumi.reconnect_thread_rehydrated_state_push_failed"],["kandan.reconnect_thread_rehydration_failed","linzumi.reconnect_thread_rehydration_failed"],["kandan.reconnect_thread_rehydration_ir_emitted","linzumi.reconnect_thread_rehydration_ir_emitted"],["kandan.reconnect_thread_rehydration_items_failed","linzumi.reconnect_thread_rehydration_items_failed"],["kandan.reconnect_thread_resume_failed","linzumi.reconnect_thread_resume_failed"],["kandan.reconnect_thread_seq_already_applied","linzumi.reconnect_thread_seq_already_applied"],["kandan.reconnect_thread_transcript_fetch_failed","linzumi.reconnect_thread_transcript_fetch_failed"],["kandan.reconnect_thread_unarchive_failed","linzumi.reconnect_thread_unarchive_failed"],["kandan.reconnect_thread_unarchive_resumed","linzumi.reconnect_thread_unarchive_resumed"],["kandan.reconnect_thread_unarchive_started","linzumi.reconnect_thread_unarchive_started"],["kandan.reconnect_thread_unavailable_state_push_failed","linzumi.reconnect_thread_unavailable_state_push_failed"],["kandan.reconnected","linzumi.reconnected"],["kandan.roster_seeded","linzumi.roster_seeded"],["kandan.session_app_server_lost_push_failed","linzumi.session_app_server_lost_push_failed"],["kandan.session_settings_publish_failed","linzumi.session_settings_publish_failed"],["kandan.start_instance_claude_code_attachment_failed_state_push_failed","linzumi.start_instance_claude_code_attachment_failed_state_push_failed"],["kandan.start_instance_codex_app_server_unavailable","linzumi.start_instance_codex_app_server_unavailable"],["kandan.start_instance_cwd_failed_state_push_failed","linzumi.start_instance_cwd_failed_state_push_failed"],["kandan.start_instance_cwd_rejected","linzumi.start_instance_cwd_rejected"],["kandan.start_instance_failed","linzumi.start_instance_failed"],["kandan.start_instance_processing_state_push_failed","linzumi.start_instance_processing_state_push_failed"],["kandan.start_instance_skipped_known_session","linzumi.start_instance_skipped_known_session"],["kandan.start_instance_stale_skipped","linzumi.start_instance_stale_skipped"],["kandan.start_instance_unavailable_state_push_failed","linzumi.start_instance_unavailable_state_push_failed"],["kandan.start_instance_wafer_state_push_failed","linzumi.start_instance_wafer_state_push_failed"],["kandan.start_turn_replay_skipped","linzumi.start_turn_replay_skipped"],["kandan.steer_duplicate_ignored","linzumi.steer_duplicate_ignored"],["kandan.steer_parked_as_own_turn","linzumi.steer_parked_as_own_turn"],["kandan.thread_bind_from_historical_reply_failed","linzumi.thread_bind_from_historical_reply_failed"],["kandan.thread_bound_from_historical_reply","linzumi.thread_bound_from_historical_reply"],["kandan.thread_sessions_reannounce_failed","linzumi.thread_sessions_reannounce_failed"],["kandan.thread_sessions_reannounced","linzumi.thread_sessions_reannounced"],["kandan.tui_input_mirrored","linzumi.tui_input_mirrored"],["kandan.typing_heartbeat_failed","linzumi.typing_heartbeat_failed"],["kandan.typing_stop_after_completion_failed","linzumi.typing_stop_after_completion_failed"]],kP=[["codexThreadId","harness_session_id"],["codex_thread_id","harness_session_id"],["kandanThreadId","thread_id"],["kandan_preview_ticket","linzumi_preview_ticket"],["kandan_thread_id","thread_id"],["linzumiThreadId","thread_id"],["linzumi_thread_id","thread_id"],["local_codex_runner","commander"],["runnerId","commander_id"],["runner_config","commander_config"],["runner_id","commander_id"]],Dm=[["commander","local_codex_runner"],["commander_config","runner_config"],["commander_id","runner_id"],["harness_session_id","codex_thread_id"],["linzumi_preview_ticket","kandan_preview_ticket"],["thread_id","kandan_thread_id"]],jS=[["engine_boot_reconnect","harness_boot_reconnect"],["engine_for_runner_event_type","harness_for_commander_event_type"],["engine_rejected_steer","harness_rejected_steer"],["engine_unavailable","harness_unavailable"],["join_engine","join_harness"],["kandan-local-codex-runner","linzumi-commander"],["local_codex_runner","commander"],["original_engine","original_harness"],["resume_engine","resume_harness"]];function $u(){return w("1.0.165","0.0.0-unbundled")}function NS(){return"linzumi "+w("1.0.165","0.0.0-unbundled")}function Tl(e,t){let r=e.indexOf(t);if(r!==-1)return r}function GS(){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 FS(e){let t={};return e.forEach(r=>{t[r[0]]=r[1]}),t}function nH(e){let t={};return e.forEach(r=>{t[r[1]]=r[0]}),t}var AP=FS(kP),OP=FS(Dm),iH=FS(jS),oH=nH(jS);function aH(e){return e.endsWith("_canonical")?!0:e.endsWith("_legacy")}function CP(e,t){return t>=32?e:Array.isArray(e)?e.map(r=>CP(r,t+1|0)):e===null?e:typeof e==="object"?EP(e,t):e}function EP(e,t){let r=Object.keys(e),n={};return r.forEach(i=>{let o=e[i];if(o!==void 0){n[i]=CP(o,t+1|0);return}}),r.forEach(i=>{if(aH(i))return;let o=n[i];if(o===void 0)return;let a=AP[i];if(a!==void 0)n[a]=o;else{let c=OP[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=iH[s];if(l!==void 0){if(n[i+"_canonical"]!==void 0)return;n[i+"_canonical"]=l;return}let d=oH[s];if(!(d===void 0||n[i+"_legacy"]!==void 0)){n[i+"_legacy"]=d;return}}),n}function qm(e){return GS()?EP(e,0):e}function PP(e){let t=e.slice();return e.forEach(r=>{let n=AP[r];n!==void 0&&!t.includes(n)&&t.push(n);let i=OP[r];if(i!==void 0&&!t.includes(i)){t.push(i);return}}),t}var Al="<SENSITIVE_DATA>",sH=PP(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"]),lH=["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"],dH=new RegExp("^(authorization|cookie|set-cookie|password)$","i"),uH=new RegExp("(^|[_-])(access[_-]?token|api[_-]?key|auth[_-]?token|oauth[_-]?code|refresh[_-]?token|secret|token)$","i"),cH=new RegExp("\\beyJ[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b","g");function fH(e){return e!==void 0?dH.test(e)?!0:uH.test(e):!1}function RP(e){let t={contents:!1};return e0(e).forEach(r=>{if(sH.includes(r.toLowerCase())){e.set(r,Al),t.contents=!0;return}}),t.contents}function mH(e){let t=Tl(e,"?"),r=Tl(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 RP(a)?n+"?"+a.toString()+o:e}function pH(e){let t=Zn(e);if(t===void 0)return mH(e);let r=ue(t);return RP(r.searchParams),r.toString()}function IP(e){return pH(e).replace(cH,Al)}function hH(e){let t=Tl(e,"=");return t!==void 0?[e.slice(0,t),e.slice(t+1|0)]:[e,void 0]}function qS(e,t){if(fH(t))return Al;if(Array.isArray(e))return t==="args"?_H(e):e.map(r=>qS(r,void 0));if(e===null)return e;switch(typeof e){case"string":return IP(e);case"object":return $P(e);default:return e}}function _H(e){let t={contents:!1};return e.map(r=>{if(typeof r=="string"){if(t.contents)return t.contents=!1,Al;let n=hH(r),i=n[0];return lH.includes(i)?n[1]!==void 0?i+"="+Al:(t.contents=!0,r):IP(r)}return t.contents=!1,qS(r,void 0)})}function $P(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"?Al:qS(o[1],a);return}}),i}var Lm=$P;import*as oa from"node:os";import*as Lp from"node:path";import*as Iw from"node:crypto";function Fn(e){let t=parseFloat(e);if(!Number.isNaN(t))return t}function jP(e){return"local_runner:"+e}var gH="kandan-local-codex-runner",yH="rescript";function zP(e){let t={};t.clientName=gH,t.clientId=e.clientId;let r=e.machineFingerprint;t.machineFingerprint=r!==void 0?r:null,Object.entries(Ok(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=yH,t}function NP(e,t,r){let n={};return n.last_seq=r,t!==void 0&&(n.runner_id=e,n.thread_id=t),n}function Dn(e,t){return e.catch(r=>t(X(r)))}function FP(){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 DP(e){return import(e)}var SH="@anthropic-ai/claude-agent-sdk";function qP(e){return FP()}function vH(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 LP(){let e=await DP(SH);return{query:t=>vH(e.query(t)),getSessionInfo:(t,r)=>e.getSessionInfo(t,r),listSessions:t=>e.listSessions(t),getSessionMessages:(t,r)=>e.getSessionMessages(t,r)}}var LS=["codex","claude-code","pi","opencode"];function rs(e){return e}function Um(e){switch(e.TAG){case"SessionStarted":return"session_started";case"TurnStarted":return"turn_started";case"ItemStarted":return"item_started";case"ItemDelta":return"item_delta";case"ItemCompleted":return"item_completed";case"ApprovalRequested":return"approval_requested";case"UsageUpdated":return"usage_updated";case"RateLimitUpdated":return"rate_limit_updated";case"ActivityPulse":return"activity_pulse";case"TurnCompleted":return"turn_completed";case"TurnFailed":return"turn_failed";case"TurnInterrupted":return"turn_interrupted";case"HarnessDied":return"harness_died"}}function ZS(e){switch(e){case"BindingNotObject":return"binding_not_object";case"SessionIdInvalid":return"session_id_invalid";case"LeaseEpochInvalid":return"lease_epoch_invalid";case"NextFrameIndexInvalid":return"next_frame_index_invalid";case"CheckpointConfigMissing":return"checkpoint_config_missing";case"CheckpointConfigInvalid":return"checkpoint_config_invalid";case"SourceSeqInvalid":return"source_seq_invalid"}}function US(e){return"adt_stream_v1 dispatch refused: "+ZS(e)+"; the commander refuses to stream unconfigured (no baked fallback thresholds exist by law - plan doc 2.4/MF9)"}function ZP(e){switch(e){case"Checkpoint":return"checkpoint";case"Delta":return"delta";case"Terminal":return"terminal"}}function Zm(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}function ns(e){if(e!==void 0&&typeof e=="number"&&e>=1&&Math.trunc(e)===e)return e}function wH(e){let t=Zm(e);if(t===void 0)return;let r=ns(t.version),n=k(t.thresholds,Zm);if(r===void 0||n===void 0)return;let i=ns(n.max_bytes),o=ns(n.max_deltas),a=ns(n.max_interval_ms);if(i!==void 0&&o!==void 0&&a!==void 0)return{version:r,thresholds:{maxBytes:i,maxDeltas:o,maxIntervalMs:a}}}function kH(e){let t=Zm(e);if(t===void 0)return{TAG:"ParseRefused",_0:"BindingNotObject"};let r=ns(t.session_id);if(r===void 0)return{TAG:"ParseRefused",_0:"SessionIdInvalid"};let n=ns(t.lease_epoch);if(n===void 0)return{TAG:"ParseRefused",_0:"LeaseEpochInvalid"};let i=ns(t.next_frame_index);if(i===void 0)return{TAG:"ParseRefused",_0:"NextFrameIndexInvalid"};let o=t.checkpoint_config;if(o===void 0)return{TAG:"ParseRefused",_0:"CheckpointConfigMissing"};let a=wH(o);return a!==void 0?{TAG:"Parsed",_0:{sessionId:r,leaseEpoch:n,nextFrameIndex:i,checkpointConfig:a}}:{TAG:"ParseRefused",_0:"CheckpointConfigInvalid"}}function xH(e){return _n(ZP(e.frameKind)+`
325
325
  `+e.body).slice(0,16)}function TH(e){let t={};return t.session_id=e.sessionId,t.lease_epoch=e.leaseEpoch,t.frame_index=e.frameIndex,t.frame_kind=ZP(e.frameKind),t.body=e.body,t.byte_len=e.byteLen,t}function VP(e){let t=TH(e);return t.digest=xH(e),t}function VS(e){switch(e){case"StaleEpoch":return"stale_epoch";case"PostSettle":return"post_settle";case"PostTerminal":return"post_terminal";case"FrameIndexReuse":return"frame_index_reuse";case"UnknownRejection":return"unknown"}}function HP(e){if(e===void 0||typeof e!="string")return"UnknownRejection";switch(e){case"frame_index_reuse":return"FrameIndexReuse";case"post_settle":return"PostSettle";case"post_terminal":return"PostTerminal";case"stale_epoch":return"StaleEpoch";default:return"UnknownRejection"}}function AH(e,t){return{binding:e,cumulative:"",pendingBody:"",pendingBytes:0,pendingDeltas:0,lastFrameAtMs:t,nextFrameIndex:e.nextFrameIndex,emittedFrameCount:0,checkpointPending:!1,terminalEmitted:!1,fenced:!1}}function BP(e,t,r){let n;switch(t){case"Delta":n=e.pendingBody;break;case"Checkpoint":case"Terminal":n=e.cumulative;break}let i=e.binding.sessionId,o=e.binding.leaseEpoch,a=e.nextFrameIndex,s=Buffer.byteLength(n,"utf8"),l={sessionId:i,leaseEpoch:o,frameIndex:a,frameKind:t,body:n,byteLen:s};switch(e.nextFrameIndex=e.nextFrameIndex+1,e.emittedFrameCount=e.emittedFrameCount+1|0,e.pendingBody="",e.pendingBytes=0,e.pendingDeltas=0,e.lastFrameAtMs=r,t){case"Delta":break;case"Checkpoint":case"Terminal":e.checkpointPending=!1;break}return l}function OH(e,t){let r=e.binding.checkpointConfig.thresholds;return e.pendingDeltas>0?e.pendingBytes>=r.maxBytes||e.pendingDeltas>=r.maxDeltas?!0:t-e.lastFrameAtMs>=r.maxIntervalMs:!1}function CH(e){let t=e.emittedFrameCount,r=e.checkpointPending;return t!==0&&!r?"Delta":"Checkpoint"}function EH(e,t,r){if(!(e.fenced||e.terminalEmitted||t===""))return e.cumulative=e.cumulative+t,e.pendingBody=e.pendingBody+t,e.pendingBytes=e.pendingBytes+Buffer.byteLength(t,"utf8")|0,e.pendingDeltas=e.pendingDeltas+1|0,OH(e,r)?BP(e,CH(e),r):void 0}function PH(e,t){if(!(e.fenced||e.terminalEmitted))return e.terminalEmitted=!0,BP(e,"Terminal",t)}function RH(e){if(!(e.fenced||e.terminalEmitted)){e.cumulative="",e.pendingBody="",e.pendingBytes=0,e.pendingDeltas=0,e.checkpointPending=!0;return}}function KP(e){e.fenced=!0}function IH(e){switch(e){case"failed":case"ignored":case"interrupted":case"processed":return!0;default:return!1}}function JP(e,t,r){if(e===void 0||e===null)return"Absent";let n=kH(e);if(n.TAG==="Parsed"){let o=n._0;if(t===void 0)return{TAG:"Refused",reason:"SourceSeqInvalid",message:US("SourceSeqInvalid")};if(!(t>=1&&Math.trunc(t)===t))return{TAG:"Refused",reason:"SourceSeqInvalid",message:US("SourceSeqInvalid")};let a={};return a.session_id=o.sessionId,a.lease_epoch=o.leaseEpoch,a.checkpoint_config_version=o.checkpointConfig.version,{TAG:"Accepted",session:{binding:o,sourceSeq:t,emitter:AH(o,r),trackedItemKey:void 0,trackedItemRank:0,itemFirstSeenOrdinals:{},lastBody:"",done:!1},ackPayload:a}}let i=n._0;return{TAG:"Refused",reason:i,message:US(i)}}function Mu(e,t){let r=e[t];if(typeof r=="string")return r}function WP(e,t){let r=e[t];if(r!==void 0&&typeof r=="number"&&Math.trunc(r)===r)return r}function $H(e){return k(k(e.structured,Zm),r=>Mu(r,"phase"))==="final_answer"?1:0}function YP(e,t,r,n,i){if(e.done||e.emitter.fenced)return[];if(t===i.messageState){let _=WP(r,"seq"),g=Mu(r,"status");if(_===void 0)return[];if(g===void 0)return[];if(!(_===e.sourceSeq&&IH(g)))return[];let b=PH(e.emitter,n);return e.done=!0,b!==void 0?[b]:[]}let a=(t===i.postStreamedRow||t===i.streamSnapshot||t===i.finalizeRow||t===i.postCompletedRow)&&se(Mu(r,"stream_kind"),"assistant")&&se(WP(r,"source_seq"),e.sourceSeq),s=Mu(r,"item_key");if(!a)return[];if(s===void 0)return[];let l=$H(r),d=e.itemFirstSeenOrdinals[s],u;if(d!==void 0)u=d;else{let _=Object.keys(e.itemFirstSeenOrdinals).length;e.itemFirstSeenOrdinals[s]=_,u=_}let c=e.trackedItemKey,f;if(c!==void 0)if(c===s)e.trackedItemRank=l,f=!0;else{let _=w(e.itemFirstSeenOrdinals[c],-1);l>e.trackedItemRank||l===e.trackedItemRank&&u>_?(e.trackedItemKey=s,e.trackedItemRank=l,e.lastBody="",RH(e.emitter),f=!0):f=!1}else e.trackedItemKey=s,e.trackedItemRank=l,f=!0;if(!f)return[];let h=w(Mu(r,"body"),""),m=h.startsWith(e.lastBody)?h.slice(e.lastBody.length,h.length):h;e.lastBody=h;let p=EH(e.emitter,m,n);return p!==void 0?[p]:[]}var Vm={},Wm={},WS=[];function XP(e,t){Vm[e]=t}function HS(e){return Vm[e]}function QP(e,t){let r=Vm[e];if(r!==void 0&&r.binding.sessionId===t.binding.sessionId&&r.binding.leaseEpoch===t.binding.leaseEpoch)return Ht(Vm,e)}function eR(e){let t=e.toString();if(Wm[t]===void 0)for(Wm[t]=!0,WS.push(t);WS.length>256;){let n=WS.shift();n!==void 0&&Ht(Wm,n)}}function tR(e){return w(Wm[e.toString()],!1)}var rR="adt_stream_v1";var nR="adt_frame",iR="adt_binding_ack",BS="adt.frame";function MH(e){switch(e){case"SocketOpen":return"open";case"SocketMessage":return"message";case"SocketClose":return"close";case"SocketError":return"error"}}function jH(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 zH(e){return{readyState:()=>e.readyState,send:t=>{e.send(t)},close:()=>{e.close()},on:(t,r)=>{e.addEventListener(MH(t),n=>r(jH(n)),{})}}}function Hm(e,t){return zH(new WebSocket(e,t))}var aR=0,is=1;var KS="file",JS=["mcp_oauth_credentials_store","cli_auth_credentials_store"],NH=JS.flatMap(e=>["-c",e+'="'+KS+'"']),GH=["-c","features.apps=false"];function ki(e){return JSON.stringify(e)}function FH(e){let t=(r,n)=>r!==void 0?Object.entries(r).flatMap(i=>["-c","model_providers."+e.id+"."+n+"."+i[0]+"="+ki(i[1])]):[];return[["-c","model_providers."+e.id+".name="+ki(e.name),"-c","model_providers."+e.id+".base_url="+ki(e.baseUrl),"-c","model_providers."+e.id+".env_key="+ki(e.envKey),"-c","model_providers."+e.id+".wire_api="+ki(e.wireApi)],t(e.httpHeaders,"http_headers"),t(e.envHttpHeaders,"env_http_headers"),["-c","model_provider="+ki(e.id)]].flat()}var DH=["-c","model_providers.openai-linzumi.name="+ki("OpenAI"),"-c","model_providers.openai-linzumi.wire_api="+ki("responses"),"-c","model_providers.openai-linzumi.requires_openai_auth=true","-c","model_providers.openai-linzumi.supports_websockets=true"];function qH(e){let t=e.model,r=e.reasoningEffort,n=e.modelProvider;return[GH,NH,t!==void 0?["-c","model="+ki(t)]:[],r!==void 0?["-c","model_reasoning_effort="+ki(r)]:[],e.fast?["-c","service_tier="+ki("fast")]:[],e.mcpConfigArgs.flat(),n!==void 0?FH(n):DH].flat()}function lR(e,t){return[["app-server"],qH(t),["--listen",e]].flat()}var LH=["LINZUMI_MCP_ACCESS_TOKEN","LINZUMI_MCP_OWNER_USERNAME"];function dR(e,t,r){let n=r?Object.fromEntries(Object.entries(e)):{};return LH.forEach(i=>Ht(n,i)),t.forEach(i=>{let o=i[1],a=i[0];if(o!==void 0){n[a]=o;return}else return Ht(n,a)}),n}var uR=["ignore","pipe","pipe"];function cR(e){let t=e.length;return t>12e3?e.slice(t-12e3|0,t):e}function fR(e,t,r){return r<3&&e.includes("codex app-server exited before readyz")&&t.includes("EADDRINUSE")?t.includes("listen"):!1}function mR(e){let t=Zn(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 UH="kandan-local-codex-runner",WH="0.0.1";function pR(){return Object.fromEntries([["clientInfo",Object.fromEntries([["name",UH],["version",WH]])],["capabilities",Object.fromEntries([["experimentalApi",!0]])]])}var ZH=new RegExp("\\bsession\\b.+\\bis archived\\b","i");function hR(e){return ZH.test(e)}var VH=new RegExp("^thread not found(?:\\s*:|\\b)","i");function _R(e){return VH.test(e.trim())}var gR=2e3;function HH(e){try{e.unref();return}catch{return}}var yR="codex app-server websocket closed",BH="codex app-server websocket is not open";function KH(e){let t=e.method;if(typeof t=="string")return t}function YS(e){let t=e.error;if(t===void 0)return{TAG:"ResultReply",_0:w(e.result,null)};if(typeof t!="object"||t===null||Array.isArray(t))return{TAG:"ErrorReply",code:0,message:JSON.stringify(t)};let r=t.code,n=r!==void 0&&typeof r=="number"?r:0,i=t.message;return{TAG:"ErrorReply",code:n,message:typeof i=="string"?i:""}}function Km(e,t,r,n){let i=JSON.stringify(n);t(r,i);try{return e.socket.send(i),{TAG:"Ok",_0:void 0}}catch(o){let a=X(o);return{TAG:"Error",_0:je(a).message}}}function wR(e,t,r){try{return t(r)}catch(n){let i=X(n);return e("codex.notification_callback_failed",Object.fromEntries([["purpose","codex.app_server"],["method",r.method],["message",je(i).message]]))}}function bR(e,t,r){try{return t(r)}catch(n){let i=X(n);return e("codex.close_callback_failed",Object.fromEntries([["purpose","codex.app_server"],["message",je(i).message]]))}}function JH(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 YH(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(;hn(a)&&s<o.length;){let d=o[s];if(d!==void 0){let u=0,c;try{c=await d(n),u=1}catch(f){let h=X(f);a={TAG:"Error",_0:[-32e3,je(h).message]}}u===1&&c!==void 0&&(a={TAG:"Ok",_0:c})}s=s+1|0}let l=w(a,i);Km(t,r,"outgoing",JH(n.id,l))}function XH(e,t,r,n,i){let o;try{o=JSON.parse(i)}catch(h){let m=X(h);r("codex.app_server_frame_malformed",Object.fromEntries([["purpose","codex.app_server"],["message",je(m).message],["payload",i.slice(0,512)],["payloadChars",i.length]])),o=void 0}let a;if(o!==void 0){let h=0;typeof o=="object"&&o!==null&&!Array.isArray(o)?a=o:h=1,h===1&&(r("codex.app_server_frame_malformed",Object.fromEntries([["purpose","codex.app_server"],["message","codex app-server sent non-object JSON-RPC message"],["payload",i.slice(0,512)],["payloadChars",i.length]])),a=void 0)}else a=void 0;if(a===void 0)return;let s=qt(a.id),l=s&&(qt(a.result)||qt(a.error)),d=KH(a);if(l){let h=w(a.id,null),m=JSON.stringify(h),p=e.pending[m];return p!==void 0?(Ht(e.pending,m),p.resolvePending({TAG:"Ok",_0:YS(a)})):void 0}if(s)if(d!==void 0){Dn(YH(e,t,n,{id:w(a.id,null),method:d,params:a.params}),h=>Promise.resolve());return}else return;if(d===void 0)return;let u=a.params,c={method:d,params:u};e.notificationCallbacks.length!==0?e.notificationCallbacks.forEach(h=>wR(r,h,c)):e.pendingNotifications.push(c)}function QH(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 SR(e,t){return Object.fromEntries(t!==void 0?[["jsonrpc","2.0"],["method",e],["params",t]]:[["jsonrpc","2.0"],["method",e]])}function vR(e,t,r,n,i,o){return t.socket.readyState()===is?new Promise((a,s)=>{e.pending[JSON.stringify(n)]={resolvePending:a};let l=Km(t,r,"request",QH(n,i,o));l.TAG!=="Ok"&&(Ht(e.pending,JSON.stringify(n)),a({TAG:"Error",_0:l._0}))}):Promise.resolve({TAG:"Error",_0:BH})}async function Jm(e,t,r,n){let i=t!==void 0?t:u=>({socket:Hm(u,[]),ping:void 0}),o=r!==void 0?r:2e3,a=n!==void 0?n:()=>Date.now(),s=a()+o,l,d="websocket open failed";for(;hn(l);){let u;try{u={TAG:"Ok",_0:i(e)}}catch(c){let f=X(c);u={TAG:"Error",_0:je(f).message}}if(u.TAG==="Ok"){let c=u._0;if(await new Promise((f,h)=>{c.socket.on("SocketOpen",m=>f(!0)),c.socket.on("SocketError",m=>f(!1))}))l={TAG:"Ok",_0:c};else{try{c.socket.close()}catch{}a()>s&&(l={TAG:"Error",_0:d})}}else d=u._0,a()>s&&(l={TAG:"Error",_0:d})}return w(l,{TAG:"Error",_0:d})}async function Ym(e,t){let r={pending:{},notificationCallbacks:[],requestCallbacks:[],pendingNotifications:[],closeCallbacks:[],nextId:1,closeError:void 0},n=t.audit,i=t.onWire,o=setInterval(()=>{let d=e.ping;if(d!==void 0&&e.socket.readyState()===is)try{return d()}catch{return}},t.keepaliveIntervalMs);HH(o);let a=d=>{clearInterval(o);let u=Object.entries(r.pending);if(Object.entries(r.pending).forEach(h=>Ht(r.pending,h[0])),u.forEach(h=>h[1].resolvePending({TAG:"Error",_0:d})),r.closeError!==void 0)return;r.closeError=d;let f=r.closeCallbacks.slice();r.closeCallbacks.splice(0,r.closeCallbacks.length),f.forEach(h=>bR(n,h,d))};e.socket.on("SocketClose",d=>a(yR)),e.socket.on("SocketError",d=>a(yR)),e.socket.on("SocketMessage",d=>{let u=d.data;if(u!==void 0)return i("incoming",u),XH(r,e,n,i,u)});let s=await vR(r,e,i,"initialize","initialize",pR());if(s.TAG!=="Ok")return{TAG:"Error",_0:s._0};let l=s._0;return l.TAG!=="ResultReply"?{TAG:"Error",_0:"codex initialize failed: "+l.message}:(Km(e,i,"outgoing",SR("initialized",void 0)),{TAG:"Ok",_0:{request:(d,u)=>{let c=r.nextId;return r.nextId=r.nextId+1|0,vR(r,e,i,c,d,u)},notify:(d,u)=>{Km(e,i,"outgoing",SR(d,u))},onNotification:d=>{r.notificationCallbacks.push(d);let u=r.pendingNotifications.slice();r.pendingNotifications.splice(0,r.pendingNotifications.length),u.forEach(c=>wR(n,d,c))},onRequest:d=>{r.requestCallbacks.push(d)},onClose:d=>{let u=r.closeError;if(u!==void 0)return bR(n,d,u);r.closeCallbacks.push(d)},isClosed:()=>qt(r.closeError),close:()=>{clearInterval(o);try{return e.socket.close()}catch{return}}}})}function Pl(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}function Ui(e){if(e!==void 0&&typeof e=="string"&&e.trim()!=="")return e.trim()}function El(e){if(e!==void 0&&typeof e=="number"&&Ot(e))return e}function kR(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}var xR="linzumi_thread_codex_worker_ready",TR="linzumi_thread_codex_worker_session_closed",AR="linzumi_thread_codex_worker_request",OR="linzumi_thread_codex_worker_notify",tv="linzumi_thread_codex_worker_response",CR="linzumi_thread_codex_worker_notification",ER="linzumi_thread_codex_worker_server_request",PR="linzumi_thread_codex_worker_server_request_response";function RR(e,t){let r={};return r.type=xR,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 IR(e,t){let r={};return r.type=TR,r.kandanThreadId=e,r.reason=t,r}function eB(e,t,r){let n={};return n.type=AR,n.id=e,n.method=t,r!==void 0&&(n.params=r),n}function tB(e,t){let r={};return r.type=OR,r.method=e,t!==void 0&&(r.params=t),r}function rB(e,t){let r={};return r.type=tv,r.id=e,r.response=t,r}function nB(e,t){let r={};return r.type=tv,r.id=e,r.error=t,r}function iB(e){let t={};return t.type=CR,t.notification=e,t}function oB(e,t){let r={};return r.type=ER,r.id=e,r.request=t,r}function QS(e,t,r){let n={};return n.type=PR,n.id=e,t!==void 0&&(n.result=t),r!==void 0&&(n.error=r),n}function aB(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 sB(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 lB(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 dB(e){let t=Pl(e);if(t===void 0)return;let r=t.type;if(r===void 0||typeof r!="string")return;if(r===AR){let i=El(t.id),o=Ui(t.method);return i!==void 0&&o!==void 0?{TAG:"ParentRequest",id:i,method_:o,params:kR(t.params)}:void 0}if(r===OR){let i=Ui(t.method);return i!==void 0?{TAG:"ParentNotify",method_:i,params:kR(t.params)}:void 0}if(r!==PR)return;let n=El(t.id);if(n!==void 0)return{TAG:"ParentServerRequestResponse",id:n,result:t.result,error:Ui(t.error)}}function uB(e){let t=Pl(e);if(t===void 0)return;let r=t.type;if(r===void 0||typeof r!="string")return;if(r===tv){let o=El(t.id);return o!==void 0?{TAG:"ChildResponse",id:o,response:aB(t.response),error:Ui(t.error)}:void 0}if(r===CR){let o=sB(t.notification);return o!==void 0?{TAG:"ChildNotification",notification:o}:void 0}if(r!==ER)return;let n=El(t.id),i=lB(t.request);if(n!==void 0&&i!==void 0)return{TAG:"ChildServerRequest",id:n,request:i}}function $R(e){let t=Pl(e);if(t===void 0)return;let r=t.type;if(typeof r=="string"&&r===TR)return[w(Ui(t.kandanThreadId),""),w(Ui(t.reason),"")]}var cB="thread Codex worker reported invalid ready payload";function fB(e){let t=Ui(e);if(t!==void 0)switch(t){case"claude-code":return"claude-code";case"codex":return"codex";default:return}}function mB(e){return e!==void 0?Array.isArray(e)?Ge(e,t=>{let r=Pl(t);if(r===void 0)return;let n=El(r.port);if(n!==void 0&&n>=1&&n<=65535)return{port:n,pid:El(r.pid),processName:Ui(r.processName),processIconKey:Ui(r.processIconKey),agentProvider:fB(r.agentProvider)}}):[]:[]}function MR(e,t){let r=Pl(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!==xR)return{TAG:"Ok",_0:void 0};let i=Ui(r.kandanThreadId);return i!==void 0&&i===t?{TAG:"Ok",_0:{kandanThreadId:i,commanderManagedPorts:mB(r.commanderManagedPorts)}}:{TAG:"Error",_0:cB}}function jR(e,t){}var zR="linzumi.thread_runner",pB="thread Codex worker requires a codex client with onRequest",ev="thread Codex worker IPC channel closed";function NR(e,t,r){let n=r!==void 0?r:jR,i=e.onRequest;if(i===void 0)return{TAG:"Error",_0:pB};let o=new Map,a={contents:1},s={contents:!1},l=u=>{if(s.contents)return;s.contents=!0;let c={};c.purpose=zR,c.reason=u,n("thread_codex_worker.ipc_send_dropped",c)},d=u=>{let c=t.send,f=t.isConnected();if(c===void 0||!f)return l("ipc_channel_closed");let h=c(u);if(h.TAG!=="Ok")return l(h._0)};return t.onMessage(u=>{let c=dB(u);if(c!==void 0)switch(c.TAG){case"ParentRequest":let f=c.id;e.request(c.method_,c.params).then(_=>_.TAG==="Ok"?d(rB(f,_._0)):d(nB(f,_._0)));return;case"ParentNotify":return e.notify(c.method_,c.params);case"ParentServerRequestResponse":let h=c.error,m=c.id,p=o.get(m);return p!==void 0?(o.delete(m),p(h!==void 0?{TAG:"Error",_0:h}:{TAG:"Ok",_0:c.result})):void 0}}),e.onNotification(u=>d(iB(u))),i(u=>new Promise((c,f)=>{let h=a.contents;a.contents=h+1,o.set(h,c),d(oB(h,u))})),t.onceDisconnect(()=>{o.forEach(u=>u({TAG:"Error",_0:ev})),o.clear()}),{TAG:"Ok",_0:void 0}}var hB="thread Codex worker IPC client is closed",_B="thread Codex worker response missing body",gB="thread Codex worker IPC client closed";async function yB(e,t,r,n,i,o){let a=d=>{let u=e(d);if(u.TAG==="Ok")return;let c={};c.purpose=zR,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(QS(t,c,void 0)))}else s=!0,a(QS(t,void 0,u._0))}l=l+1|0}if(!s)return a(QS(t,void 0,"unhandled Codex app-server request: "+n))}function bB(e){let t=Pl(e);if(t===void 0)return"";let r=t.method;return typeof r=="string"?r:""}function GR(e,t){let r=t!==void 0?t:jR,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:hB};let g=e.send,b=e.isConnected();return g!==void 0&&b?g(_):{TAG:"Error",_0:ev}},c=_=>{let g=uB(_);if(g!==void 0)switch(g.TAG){case"ChildResponse":let b=g.error,y=g.response,S=g.id,v=n.get(S);return v!==void 0?(n.delete(S),v(b!==void 0?{TAG:"Error",_0:b}:y!==void 0?{TAG:"Ok",_0:y}:{TAG:"Error",_0:_B})):void 0;case"ChildNotification":let A=g.notification;i.length!==0?i.forEach(j=>j(A)):a.push(A);return;case"ChildServerRequest":let F=g.request;yB(u,g.id,F,bB(F),o,r);return}},f=e.onMessage(c),h=()=>{l.contents=!0,d(ev)},m=e.onceExit(h),p=e.onceDisconnect(h);return{request:(_,g)=>new Promise((b,y)=>{let S=s.contents;s.contents=S+1,n.set(S,b);let v=u(eB(S,_,g));v.TAG!=="Ok"&&(n.delete(S),b({TAG:"Error",_0:v._0}))}),notify:(_,g)=>u(tB(_,g)),onNotification:_=>{i.push(_);let g=a.slice();a.splice(0,a.length),g.forEach(b=>_(b))},onRequest:_=>{o.push(_)},isClosed:()=>l.contents?!0:!e.isConnected(),close:()=>{l.contents=!0,f(),m(),p(),d(gB)}}}import*as lv from"node:child_process";import*as DR from"node:os";import*as qR from"node:path";function LR(){return qR.join(DR.homedir(),".linzumi","protected-dev-listeners")}var SB=new RegExp("^(\\d+)\\s+(\\d+)$");function vB(e){return Ge(e.split(`
326
326
  `),t=>{let r=SB.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=Fn(i),s=Fn(o);if(a!==void 0&&s!==void 0)return{pid:a,pgid:s}})}function wB(e){let t=ws("ps",["-axo","pid=,pgid="],5e3,16e6);if(t.TAG==="Ok")return vB(t._0).filter(r=>r.pgid===e).map(r=>r.pid)}function Xm(e,t,r,n,i){let o=n!==void 0?n:wB,a;if(i.size>0){let l=o(e);if(l!==void 0){let d=l.filter(u=>i.has(u));if(d.length!==0){let u=[],c=new Set(l.filter(f=>!i.has(f)));c.add(e),Array.from(c).forEach(f=>{let h=r(f|0,t);if(h.TAG==="Ok")return;let m=h._0;if(!se(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 ZR={contents:(e,t)=>{}};var rv="SIGKILL",os={children:new Set,handlersInstalled:!1,removeHandlers:void 0};function ju(e,t,r,n,i){let o=e.pid;ZR.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 kB(e,t,r,n){let i;try{e.stop(),i={TAG:"Ok",_0:void 0}}catch(l){i={TAG:"Error",_0:X(l)}}if(i.TAG!=="Ok"){let l=je(i._0);ju(e,n,"stop",l.code,l.message)}let o=e.pid;if(o===void 0)return;if(e.ownProcessGroup){let l=Xm(o,rv,t,void 0,r);l.sparedPids.length!==0&&ZR.contents("process.reap_spared_listeners",Object.fromEntries([["purpose",e.kind],["pid",o],["reason",n],["sparedPids",l.sparedPids.map(f=>f)]])),l.failures.forEach(f=>ju(e,n,"member_kill:"+f.pid.toString(),f.code,f.message));let d=l.groupSignalError;if(d===void 0||se(d.code,"ESRCH"))return;ju(e,n,"group_kill",d.code,d.message);let u=t(o,rv);if(u.TAG==="Ok")return;let c=u._0;return se(c.code,"ESRCH")?void 0:ju(e,n,"pid_kill",c.code,c.message)}let a=t(o,rv);if(a.TAG==="Ok")return;let s=a._0;if(!se(s.code,"ESRCH"))return ju(e,n,"pid_kill",s.code,s.message)}function nv(e,t,r){let n=e!==void 0?e:Bi,i=t!==void 0?t:new Set,o=r!==void 0?r:"exit",a=Array.from(os.children);return os.children.clear(),a.forEach(s=>kB(s,n,i,o)),a.length}function WR(e,t){let r;return r=typeof t=="string"?t:JSON.stringify(t),"linzumi commander "+e+": "+r+`
327
327
  `}function xB(){if(os.handlersInstalled)return;os.handlersInstalled=!0;let e=o=>{nv(void 0,void 0,"process_exit")};process.on("exit",e);let t=process.listenerCount("uncaughtException")===0,r=process.listenerCount("unhandledRejection")===0,n=o=>{nv(void 0,void 0,"uncaught_exception"),_r(WR("uncaughtException",o)),process.exit(1)},i=o=>{nv(void 0,void 0,"unhandled_rejection"),_r(WR("unhandledRejection",o)),process.exit(1)};t&&process.on("uncaughtException",n),r&&process.on("unhandledRejection",i),os.removeHandlers=()=>{if(process.off("exit",e),t&&process.off("uncaughtException",n),r){process.off("unhandledRejection",i);return}}}function Qm(e){return os.children.add(e),xB(),{unregister:()=>{os.children.delete(e)}}}import*as Ho from"node:path";import*as HR from"node:net";function Rl(e,t){try{return e.kill(t)}catch{return!1}}function BR(){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 Ene=new RegExp("[^0-9A-Za-z._-]","g");var Fne=new RegExp("[\\\\/]");var KR="cannot fork thread runner without current CLI script path";var Dne=15*6e4,qne=120*6e4,Lne=1440*6e4,Une=2*6e4;var OB="this computer is updating its Linzumi runner",Wne=OB+" to a new version - nothing was started. Retry in a few minutes once the update finishes.";var Zne=15*6e4;var JR="this computer restarted its Linzumi runner for an update",Vne=JR+" after waiting for this job past the drain timeout - the job was interrupted. Send your message again to continue.",Hne=JR+" 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 YR(e,t,r){return e==="SIGTERM"&&t?r!=="win32":!1}var XR="runner.thread_worker_sigterm_deferred_to_drain";function CB(e,t){}var ov="linzumi.thread_runner";function eI(e,t){return e!==void 0&&e.trim()!==""?{TAG:"Ok",_0:Ho.isAbsolute(e)?e:Ho.resolve(t,e)}:{TAG:"Error",_0:KR}}function EB(e){return["--require","-r","--import","--loader","--experimental-loader"].includes(e)}function PB(e){return["--require=","-r=","--import=","--loader=","--experimental-loader="].some(t=>e.startsWith(t))}function RB(e){let t=[],r=0;for(;r<e.length;){let n=e[r];if(n!==void 0){let i=EB(n),o=PB(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 av(e,t,r){return RB(r).concat([e].concat(t))}function mn(e,t){return t!==void 0?t!==""?[e,t]:[]:[]}function tI(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],mn("--workspace",e.workspaceSlug),mn("--log-file",e.logFile),mn("--debug-trace-dir",N(e.debugTrace,i=>i.dir)),mn("--debug-trace-content",k(e.debugTrace,i=>i.contentMode)),e.fast?["--fast"]:[],mn("--allowed-cwd",t(e.allowedCwds)),mn("--forward-port",t(e.allowedForwardPorts.map(i=>i.toString()))),mn("--code-server-bin",e.codeServerBin),mn("--model",k(e.runtimeDefaults,i=>i.model)),mn("--reasoning-effort",k(e.runtimeDefaults,i=>i.reasoningEffort)),mn("--sandbox",k(e.runtimeDefaults,i=>i.sandbox)),mn("--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"]:[],mn("--execution-mode",e.executionMode),mn("--egress-mode",e.egressMode),mn("--project-public-id",e.projectPublicId),mn("--golden-image-id",e.goldenImagePublicId),n!==void 0?n.allowPortForwardingByDefault?["--allow-port-forwarding-by-default"]:["--no-allow-port-forwarding-by-default"]:[]].flat()}function rI(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 nI(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",w(e.linzumiAgentMcpToken,"")]),r!==void 0&&n.push(["OPENAI_API_KEY",r]),n}function iI(e){let t=e.length;return t>12e3?e.slice(t-12e3|0,t):e}function ep(e){let t=an(e.code,"null",o=>o.toString()),r=w(e.signal,"null"),n="thread Codex worker exited before ready: code="+t+" signal="+r,i=e.capturedOutput.trim();return i===""?n:n+`
@@ -388,7 +388,7 @@ worker output: `+i}function oI(e,t){return"thread Codex worker did not report re
388
388
  `)}function CM(e,t){let r=dJ(e),n=pJ(e);return[{body:hJ(r,n),structured:Ku("codex_assistant_message",t,[["content",r],["phase",w(E(e,"phase"),"final_answer")]])}]}function xp(e,t){let r=w(E(e,"id"),"item-"+t.toString()),n=E(e,"type");if(n===void 0)return[];switch(n){case"agentMessage":return CM(e,r);case"agentStatus":let i=w(ht(e,"title"),"Agent status"),o=Yu(ht(e,"body")),a=tw(e.severity),s=ht(e,"provider"),l=cs(e,"occurredAtMs"),d=AM(e),u={title:i,body:o,severity:a,provider:s,occurredAtMs:l,rawProviderMetadata:d};return[{body:Ju(i,o),structured:lw(r,u,"completed")}];case"agentTaskUpdate":let c=w(ht(e,"title"),"Agent task"),f=Yu(ht(e,"body")),h=ht(e,"progressLabel"),m=rw(e.state),p=ht(e,"provider"),_=cs(e,"occurredAtMs"),g=AM(e),b={title:c,body:f,state:m,progressLabel:h,provider:p,occurredAtMs:_,rawProviderMetadata:g};return[{body:Ju(c,f!==void 0?f:h),structured:dw(r,b,"completed")}];case"commandExecution":let y=w(E(e,"command"),"command"),S=w(ht(e,"aggregatedOutput"),""),v=iw(y,S),A=E(e,"toolName"),R=cs(e,"durationMs"),F=cs(e,"exitCode");return[{body:v.body,structured:Ku("codex_command_execution",r,[["command",v.command],["tool_name",A!==void 0?A:null],["cwd",w(E(e,"cwd"),"")],["status",w(E(e,"status"),"")],["process_id",w(E(e,"processId"),"")],["duration_ms",R!==void 0?R:null],["exit_code",F!==void 0?F:null],["output",v.output]].concat(MM(v)))}];case"fileChange":let j=WM(w(wp(e,"changes"),[])),ie=ht(e,"patchText"),L=ie!==void 0?ie:w(ht(e,"patch"),"");return[{body:L.trim()!==""?L:j.map(U=>w(E(U,"path"),"")).join(`
389
389
  `),structured:Ku("codex_file_change",r,[["status",w(E(e,"status"),"")],["patch_text",L],["changes",j.map(U=>U)]])}];case"message":let oe=E(e,"role");return oe!==void 0?oe==="assistant"?CM(e,r):[]:[];case"reasoning":let W=bp(e,"content").join(`
390
390
  `),Z=bp(e,"summary");return[{body:W.trim()!==""?W:Z.join(`
391
- `),structured:Ku("codex_reasoning",r,[["content",W],["summary_parts",Z.map(X9)]])}];case"terminalInput":let fe=ht(e,"inputText"),J;if(fe!==void 0)J=fe;else{let U=ht(e,"input");J=U!==void 0?U:w(ht(e,"text"),"")}return[{body:J,structured:Ku("codex_terminal_input",r,[["process_id",w(E(e,"processId"),"")],["input_text",J]])}];default:return[]}}var VM=kM;var Hl={cwd:void 0,status:void 0,processId:void 0,durationMs:void 0,exitCode:void 0,stream:void 0};function fs(e){let t=e!==void 0?e:"";return t===""?{parts:[],cached:"",joinedCount:0}:{parts:[t],cached:t,joinedCount:1}}function cw(e,t){t!==""&&e.parts.push(t)}function fw(e){if(e.joinedCount===e.parts.length)return e.cached;let t=e.cached;for(let r=e.joinedCount,n=e.parts.length;r<n;++r)t=t+e.parts[r];return e.cached=t,e.joinedCount=e.parts.length,t}function _J(e){switch(e.TAG){case"AssistantContent":return"assistant";case"ReasoningContent":return"reasoning";case"CommandOutputContent":return"commandOutput";case"FileChangeContent":return"fileChange";case"TerminalInputContent":return"terminalInput";case"WebSearchContent":return"webSearch";case"AgentStatusContent":return"agentStatus";case"AgentTaskUpdateContent":return"agentTaskUpdate"}}function Bl(e){switch(e.TAG){case"AssistantDelta":return"assistant";case"ReasoningDelta":return"reasoning";case"CommandOutputDelta":return"commandOutput";case"FileChangeDelta":return"fileChange";case"TerminalInputDelta":return"terminalInput";case"WebSearchDelta":return"webSearch"}}function HM(e){return e.itemId}function Kl(e){let t=E(e,"itemId");if(t!==void 0)return t;let r=E(e,"item_id");return r!==void 0?r:k(Ue(e,"item"),n=>E(n,"id"))}function BM(e,t){let r=Kl(t);switch(e){case"item/agentMessage/delta":return N(kp(t),n=>({TAG:"AssistantDelta",itemId:r,text:n}));case"command/exec/outputDelta":case"item/commandExecution/outputDelta":break;case"item/commandExecution/terminalInteraction":return N(LM(t),n=>({TAG:"TerminalInputDelta",itemId:r,processId:n.terminalProcessId,inputText:n.inputText}));case"item/fileChange/outputDelta":return N(UM(t),n=>({TAG:"FileChangeDelta",itemId:r,patchText:n}));case"item/reasoning/textDelta":return N(kp(t),n=>({TAG:"ReasoningDelta",itemId:r,text:n}));case"item/started":return N(uw(t),n=>({TAG:"WebSearchDelta",itemId:r,queries:n.queries}));default:return}return N(qM(t),n=>({TAG:"CommandOutputDelta",itemId:r,processId:n.commandProcessId,command:n.command,stream:n.stream,text:n.commandDelta}))}function KM(e){switch(e){case"assistant":return{TAG:"AssistantContent",text:fs(void 0)};case"reasoning":return{TAG:"ReasoningContent",text:fs(void 0)};case"commandOutput":return{TAG:"CommandOutputContent",command:"",processId:void 0,chunks:[]};case"fileChange":return{TAG:"FileChangeContent",patchText:fs(void 0),status:"started"};case"terminalInput":return{TAG:"TerminalInputContent",processId:void 0,inputText:""};case"webSearch":return{TAG:"WebSearchContent",queries:[]};case"agentStatus":return{TAG:"AgentStatusContent",_0:{title:"Agent status",body:void 0,severity:"info",provider:void 0,occurredAtMs:void 0,rawProviderMetadata:void 0}};case"agentTaskUpdate":return{TAG:"AgentTaskUpdateContent",_0:{title:"Agent task",body:void 0,state:"unknown",progressLabel:void 0,provider:void 0,occurredAtMs:void 0,rawProviderMetadata:void 0}}}}function gJ(e,t){return He(t,e.slice(),(r,n)=>r.includes(n)?r:r.concat([n]))}function JM(e,t){if(_J(e)!==Bl(t))return e;switch(e.TAG){case"AssistantContent":return t.TAG!=="AssistantDelta"||cw(e.text,t.text),e;case"ReasoningContent":return t.TAG!=="ReasoningDelta"||cw(e.text,t.text),e;case"CommandOutputContent":if(t.TAG!=="CommandOutputDelta")return e;let r=t.command,n=t.processId,i=e.command;return{TAG:"CommandOutputContent",command:r!==void 0&&r.trim()!==""?r:i,processId:n!==void 0?n:e.processId,chunks:e.chunks.concat([{stream:t.stream,text:t.text}])};case"FileChangeContent":return t.TAG!=="FileChangeDelta"||cw(e.patchText,t.patchText),e;case"TerminalInputContent":if(t.TAG!=="TerminalInputDelta")return e;let o=t.processId;return{TAG:"TerminalInputContent",processId:o!==void 0?o:e.processId,inputText:t.inputText};case"WebSearchContent":return t.TAG==="WebSearchDelta"?{TAG:"WebSearchContent",queries:gJ(e.queries,t.queries)}:e;case"AgentStatusContent":case"AgentTaskUpdateContent":return e}}function yJ(e){return e.map(t=>t.text).join("")}function YM(e){let t=E(e,"type");if(t!==void 0)switch(t){case"agentMessage":return"assistant";case"agentStatus":return"agentStatus";case"agentTaskUpdate":return"agentTaskUpdate";case"commandExecution":return"commandOutput";case"fileChange":case"file_change":return"fileChange";case"message":return E(e,"role")==="assistant"?"assistant":void 0;case"reasoning":return"reasoning";case"terminalInput":return"terminalInput";case"webSearch":case"webSearchCall":case"web_search_call":return"webSearch";default:return}}function XM(e){let t=uw(e);if(t!==void 0)return{completedStreamKind:"webSearch",completedItemId:Kl(e),completedContent:{TAG:"WebSearchContent",queries:t.queries}};let r=w(Ue(e,"item"),e),n=ZM(e);if(n!==void 0){let s=E(r,"call_id");return{completedStreamKind:"fileChange",completedItemId:s!==void 0?s:E(r,"id"),completedContent:{TAG:"FileChangeContent",patchText:fs(n),status:"completed"}}}let i=YM(r);if(i===void 0)return;let o=xp(r,0)[0];if(o===void 0)return;let a=E(r,"id");switch(i){case"assistant":return{completedStreamKind:i,completedItemId:a,completedContent:{TAG:"AssistantContent",text:fs(w(E(o.structured,"content"),o.body))}};case"reasoning":return{completedStreamKind:i,completedItemId:a,completedContent:{TAG:"ReasoningContent",text:fs(w(E(o.structured,"content"),o.body))}};case"commandOutput":let s=Pr(o.structured,"output"),l;return l=typeof s=="string"?s:"",{completedStreamKind:i,completedItemId:a,completedContent:{TAG:"CommandOutputContent",command:w(E(o.structured,"command"),""),processId:E(o.structured,"process_id"),chunks:[{stream:"",text:l}]}};case"fileChange":return{completedStreamKind:i,completedItemId:a,completedContent:{TAG:"FileChangeContent",patchText:fs(w(E(o.structured,"patch_text"),o.body)),status:"completed"}};case"terminalInput":return{completedStreamKind:i,completedItemId:a,completedContent:{TAG:"TerminalInputContent",processId:E(o.structured,"process_id"),inputText:w(E(o.structured,"input_text"),o.body)}};case"webSearch":return;case"agentStatus":return{completedStreamKind:i,completedItemId:a,completedContent:{TAG:"AgentStatusContent",_0:{title:w(E(o.structured,"title"),o.body),body:E(o.structured,"body"),severity:tw(Pr(o.structured,"severity")),provider:E(o.structured,"agent_provider"),occurredAtMs:cs(o.structured,"occurred_at_ms"),rawProviderMetadata:Ue(o.structured,"raw_provider_metadata")}}};case"agentTaskUpdate":return{completedStreamKind:i,completedItemId:a,completedContent:{TAG:"AgentTaskUpdateContent",_0:{title:w(E(o.structured,"title"),o.body),body:E(o.structured,"body"),state:rw(Pr(o.structured,"state")),progressLabel:E(o.structured,"progress_label"),provider:E(o.structured,"agent_provider"),occurredAtMs:cs(o.structured,"occurred_at_ms"),rawProviderMetadata:Ue(o.structured,"raw_provider_metadata")}}}}}function Jl(e,t,r){switch(t.TAG){case"AssistantContent":let n=fw(t.text);return{renderedBody:n,renderedStructured:jM(e,n,r)};case"ReasoningContent":let i=fw(t.text);return{renderedBody:i,renderedStructured:zM(e,i,r)};case"CommandOutputContent":let o=t.chunks,a=o[o.length-1|0],s=ow(e,t.command,yJ(o),{cwd:Hl.cwd,status:Hl.status,processId:t.processId,durationMs:Hl.durationMs,exitCode:Hl.exitCode,stream:w(N(a,y=>y.stream),"")},r),l=w(E(s,"command"),""),d=Pr(s,"output");return{renderedBody:nw(l,typeof d=="string"?d:""),renderedStructured:s};case"FileChangeContent":let c=fw(t.patchText),f;return f=r==="completed"||t.status!=="started"?"completed":"started",{renderedBody:c,renderedStructured:aw(e,c,r,f)};case"TerminalInputContent":let h=t.inputText;return{renderedBody:h,renderedStructured:Object.fromEntries([["kind","codex_terminal_input"],["item_id",e],["transcript_unit_id","codex_terminal_input:"+e],["stream_state",VM(r)],["process_id",w(t.processId,"")],["input_text",h]])};case"WebSearchContent":let m=t.queries;return{renderedBody:sw(m),renderedStructured:FM(e,m,r)};case"AgentStatusContent":let p=t._0,_=Yu(p.body);return{renderedBody:Ju(p.title,_),renderedStructured:lw(e,{title:p.title,body:_,severity:p.severity,provider:p.provider,occurredAtMs:p.occurredAtMs,rawProviderMetadata:p.rawProviderMetadata},r)};case"AgentTaskUpdateContent":let g=t._0,b=Yu(g.body);return{renderedBody:Ju(g.title,b!==void 0?b:g.progressLabel),renderedStructured:dw(e,{title:g.title,body:b,state:g.state,progressLabel:g.progressLabel,provider:g.provider,occurredAtMs:g.occurredAtMs,rawProviderMetadata:g.rawProviderMetadata},r)}}}function QM(e){return e.flatMap((t,r)=>{let n=Oe(t);if(n===void 0)return[];let i=YM(n);return i!==void 0?i==="webSearch"?[]:xp(n,r).filter(o=>o.body.trim()!=="").map(o=>({snapshotIndex:r,projItemId:E(n,"id"),projStreamKind:i,projBody:o.body,projStructured:o.structured})):[]})}function mw(e,t){let r=w(E(e,"kind"),"codex_output"),n=Object.assign({},e);return n.item_id=t,n.transcript_unit_id=r+":"+t,n}function pw(e,t,r,n){if(r==="webSearch")return"local-codex-search-"+_n(e+":"+t+":web-search").slice(0,32);let i;switch(r){case"reasoning":i="reasoning:";break;case"commandOutput":i="command:";break;case"fileChange":i="file-change:";break;case"terminalInput":i="terminal:";break;case"assistant":case"webSearch":i="";break;case"agentStatus":i="agent-status:";break;case"agentTaskUpdate":i="agent-task:";break}return"local-codex-stream-"+_n(e+":"+t+":"+i+n).slice(0,32)}function Xu(e){let t=Ue(e,"turn"),r=Ue(e,"item"),n=k(r,d=>Ue(d,"turn")),i=k(t,d=>E(d,"id"));if(i!==void 0)return i;let o=E(e,"turnId");if(o!==void 0)return o;let a=E(e,"turn_id");if(a!==void 0)return a;let s=k(r,d=>E(d,"turnId"));if(s!==void 0)return s;let l=k(r,d=>E(d,"turn_id"));return l!==void 0?l:k(n,d=>E(d,"id"))}function xi(e){return e!==void 0?e:null}var ec="pipeline/turnMappingReady",Yl="pipeline/turnMappingFailed",tj="Codex completed without producing a response.",bJ="linzumi_agent_reply",SJ="The agent ended its turn after narrating an intent without posting a reply or taking any action.",vJ="agent narrated intent but posted no reply and took no action",wJ="Stopped after repeated empty responses in a row";function kJ(e){return"The model appears stuck in a loop - stopped after "+e.toString()+" reasoning steps with no output or tool call (retry to try again)."}var aj="Codex emitted unsupported tool call";function xJ(e){return e!==void 0?e.startsWith(aj):!1}function rj(e){switch(e){case"assistant":case"reasoning":case"webSearch":return!1;default:return!0}}function TJ(e){if(e===void 0)return;let t=E(e,"type"),r=0;if(t!==void 0){switch(t){case"collabAgentToolCall":case"dynamicToolCall":case"mcpToolCall":r=1;break;default:return}if(r===1){if(!se(E(e,"status"),"completed"))return;let n=Pr(e,"error"),i=0;if(n!==void 0){if(n!==null)return;i=2}else i=2;if(i===2){let o=Pr(e,"success"),a=0;if(typeof o=="boolean"){if(!o)return;a=3}else a=3;if(a===3){let s=w(E(e,"tool"),""),l=s.split("__");return w(l[l.length-1|0],s)===bJ?"ReplyEvidence":"ActionEvidence"}}}}}function sj(e,t){let r=TJ(t);if(r!==void 0){r==="ReplyEvidence"?e.agentReplyToolCallSeen=!0:e.agentActionToolCallSeen=!0;return}}function AJ(e){let t="unsupported call:";if(e===void 0)return;let r=e.trim();if(!r.toLowerCase().startsWith(t))return;let n=r.slice(t.length).trim();return n===""?"unknown":n}function lj(e){if(e===void 0)return;let t=E(e,"codex_protocol_failure_reason"),r=t!==void 0?t:E(e,"protocolFailureReason");if(r!==void 0)return r;let n=E(e,"type");if(n===void 0)return;switch(n){case"custom_tool_call_output":case"function_call_output":break;default:return}let i=E(e,"output"),o;if(i!==void 0)o=i;else{let a=E(e,"result");if(a!==void 0)o=a;else{let s=E(e,"text");o=s!==void 0?s:E(e,"content")}}return N(AJ(o),a=>aj+": "+a)}function OJ(e){return He(e,void 0,(t,r)=>t!==void 0?t:lj(Oe(r)))}function dj(){return{phase:"running",turns:new Map,terminalTurnIds:new Set,bufferedTurns:new Map,consecutiveEmptyTurns:0,lastUpstreamErrorSummary:void 0,consecutiveIsolatedRejections:0,costCap402Seen:!1}}function CJ(e){switch(e){case"turn/aborted":case"turn/canceled":case"turn/cancelled":return"interrupted";case"turn/failed":return"failed";default:return}}function EJ(e){switch(e){case"command/exec/outputDelta":case"error":case"item/agentMessage/delta":case"item/commandExecution/outputDelta":case"item/commandExecution/terminalInteraction":case"item/completed":case"item/fileChange/outputDelta":case"item/reasoning/textDelta":case"item/started":case"response_item":case"turn/aborted":case"turn/canceled":case"turn/cancelled":case"turn/completed":case"turn/failed":case"turn/started":return!0;default:return!1}}function PJ(e){switch(e){case"command/exec/outputDelta":case"item/agentMessage/delta":case"item/commandExecution/outputDelta":case"item/commandExecution/terminalInteraction":case"item/completed":case"item/fileChange/outputDelta":case"item/reasoning/textDelta":case"item/started":case"response_item":return!0;default:return!1}}var RJ=new RegExp("<[^>]*>","g"),IJ=new RegExp(`data:[^"' )]+`,"g"),$J=new RegExp("\\s+","g");function ra(e){if(e===void 0)return;let t=e.replace(RJ," ").replace(IJ,"").replace($J," ").trim().slice(0,180);if(t!=="")return t}function ta(e){if(e!==void 0&&typeof e=="number"&&isFinite(e))return e}function Pp(e){let t=k(Ue(e,"diagnostic_payload"),o=>Ue(o,"error")),r=k(t,o=>Ue(o,"codexErrorInfo")),n=k(r,o=>Ue(o,"responseStreamDisconnected")),i=[ta(k(n,o=>Pr(o,"httpStatusCode"))),ta(k(r,o=>Pr(o,"httpStatusCode"))),ta(k(r,o=>Pr(o,"statusCode"))),ta(k(r,o=>Pr(o,"status"))),ta(k(t,o=>Pr(o,"httpStatusCode"))),ta(k(t,o=>Pr(o,"statusCode"))),ta(k(t,o=>Pr(o,"status")))];return He(i,void 0,(o,a)=>o!==void 0?o:a)}function MJ(e){let t=E(e,"diagnostic_summary"),r=t!==void 0?t:k(k(Ue(e,"diagnostic_payload"),o=>Ue(o,"error")),o=>E(o,"message")),n=k(r,o=>ra(o));if(n===void 0)return;let i=Pp(e);return i!==void 0?"Model gateway error (HTTP "+i.toString()+"): "+n:"Model gateway error: "+n}var jJ=new RegExp("(?:<!doctype\\s+html|<html(?:\\s|>))","i"),zJ=new RegExp("cloudflare|cf-ray|\\bblocked\\b|access denied|\\bchallenge\\b|attention required","i"),uj=new RegExp("cloudflare|cf-ray","i"),NJ=new RegExp("\\bblocked\\b|access denied","i"),GJ=new RegExp("attention required","i"),FJ=new RegExp("@font-face","i"),DJ=new RegExp("unexpected status (401|403)\\b","i"),qJ=new RegExp("\\b(401|403)\\s+(?:unauthorized|forbidden)\\b","i");function LJ(e){return He(e,void 0,(t,r)=>{if(t!==void 0)return t;if(r===void 0)return;let n=DJ.exec(r),i=n??$t(qJ.exec(r));return N(k(i,o=>k(o.slice(1)[0],a=>a)),o=>o==="401"?401:403)})}function UJ(e){return jJ.test(e)?!0:FJ.test(e)?uj.test(e):!1}function WJ(e){let t=k(Ue(e,"diagnostic_payload"),a=>Ue(a,"error")),r=[E(e,"diagnostic_summary"),k(t,a=>E(a,"message")),E(e,"message")],n=Pp(e),i=n!==void 0?n:LJ(r);if(i===void 0||i!==401&&i!==403)return;let o=He(r,void 0,(a,s)=>a!==void 0?a:s!==void 0&&UJ(s)&&zJ.test(s)?s:void 0);return N(o,a=>{let s=uj.test(a),l=NJ.test(a),d=GJ.test(a);return{edgeStatus:i,edgeSignature:s?"cloudflare":l?"blocked":d?"attention_required":"challenge"}})}function ZJ(e){return e!==void 0?e===402||e===408||e===425||e===429?!0:e>=500?e<=599:!1:!1}function VJ(e){return e!==void 0&&e>=400&&e<=499&&e!==402&&e!==408&&e!==425?e!==429:!1}function HJ(e,t){let r="the model provider rejected this request as invalid (a retry sends the same request and fails the same way, so it was not retried; check the selected model / request and send again).",n=e!==void 0?"Model provider rejected this request (HTTP "+e.toString()+"): "+r:"Model provider rejected this request: "+r,i=w(N(t,o=>o.trim()),"");return i===""?n:n+" Upstream said: "+i}function BJ(e){let t="the model provider returned no usable response this turn (retrying will not help until it recovers).";return e!==void 0?"Model upstream unavailable (HTTP "+e.toString()+"): "+t:"Model upstream unavailable: "+t}function KJ(e){let t="The agent run was cut off by a tool failure and produced no response (retrying will hit the same failure until the underlying tool call is fixed).",r=w(N(e,n=>n.trim()),"");return r===""?"Tool execution failed: "+t:"Tool execution failed ("+r+"): "+t}function tc(e){let t=k(Ue(e,"diagnostic_payload"),i=>Ue(i,"error")),r=E(e,"message"),n;if(r!==void 0)n=r;else{let i=E(e,"reason");if(i!==void 0)n=i;else{let o=k(Ue(e,"error"),a=>E(a,"message"));if(o!==void 0)n=o;else{let a=E(e,"error");if(a!==void 0)n=a;else{let s=E(e,"diagnostic");if(s!==void 0)n=s;else{let l=k(t,d=>E(d,"message"));n=l!==void 0?l:k(k(t,d=>Ue(d,"error")),d=>E(d,"message"))}}}}}return ra(n)}var JJ=new RegExp("^(?:model_request_rejected|invalid_request_error|invalid_request|request_rejected|content_policy_violation|content_filter|input_validation_error)$","i"),YJ=new RegExp("\\bmodel request was rejected\\b|\\bmodel_request_rejected\\b","i");function XJ(e){let t=k(Ue(e,"diagnostic_payload"),o=>Ue(o,"error")),r=k(t,o=>Ue(o,"error")),n=Ue(e,"error"),i=[[k(t,o=>E(o,"code")),k(t,o=>E(o,"message"))],[k(t,o=>E(o,"type")),k(t,o=>E(o,"message"))],[k(r,o=>E(o,"code")),k(r,o=>E(o,"message"))],[k(r,o=>E(o,"type")),k(r,o=>E(o,"message"))],[k(n,o=>E(o,"code")),k(n,o=>E(o,"message"))],[k(n,o=>E(o,"type")),k(n,o=>E(o,"message"))],[E(e,"code"),E(e,"message")],[E(e,"type"),E(e,"message")]];return He(i,void 0,(o,a)=>{if(o!==void 0)return o;let s=N(a[0],l=>l.trim());if(s!==void 0&&s!==""&&JJ.test(s))return{colocatedMessage:a[1]}})}function QJ(e){let t=XJ(e),r=tc(e),n=r!==void 0?YJ.test(r):!1;if(t===void 0&&!n)return;let i=ra(k(t,o=>o.colocatedMessage));return i!==void 0?i:r!==void 0?r:""}function e6(e){let t="the model provider rejected this request and produced no response (retrying will hit the same rejection until the request is changed).",r=w(N(e,n=>n.trim()),"");return r===""?"The model request was rejected: "+t:"The model request was rejected ("+r+"): "+t}var t6=new RegExp("^provider_outage$","i"),r6=new RegExp("rejecting requests|experiencing an outage|provider outage","i");function n6(e){let t=k(Ue(e,"diagnostic_payload"),d=>Ue(d,"error")),r=k(t,d=>Ue(d,"error")),n=Ue(e,"error");if(![k(t,d=>E(d,"code")),k(t,d=>E(d,"type")),k(r,d=>E(d,"code")),k(r,d=>E(d,"type")),k(n,d=>E(d,"code")),k(n,d=>E(d,"type")),E(e,"code"),E(e,"type")].some(d=>{let u=N(d,c=>c.trim());return u!==void 0&&u!==""?t6.test(u):!1}))return;let a=[k(t,d=>E(d,"message")),k(r,d=>E(d,"message")),k(n,d=>E(d,"message")),E(e,"message"),E(e,"reason")],s=He(a,void 0,(d,u)=>{if(d!==void 0)return d;let c=ra(u);if(c!==void 0&&r6.test(c))return c});if(s!==void 0)return s;let l=tc(e);return l!==void 0?l:""}function i6(e){let t=w(N(e,r=>r.trim()),"");return t===""?"The model provider is currently rejecting requests / experiencing an outage. Your message was NOT processed. Please retry later, or switch to a different model.":t}function o6(e){let t="the model provider rejected this request and produced no response (a one-off retry did not help).",r=w(N(e,n=>n.trim()),"");return r===""?"The model request was rejected: "+t:"The model request was rejected ("+r+"): "+t}function a6(e,t,r,n){return e?{dispositionKind:"storm",dispositionRetryable:!1,dispositionReason:i6(r)}:t<1?{dispositionKind:"isolated_retry",dispositionRetryable:!0,dispositionReason:e6(n)}:{dispositionKind:"isolated_terminal",dispositionRetryable:!1,dispositionReason:o6(n)}}var s6=new RegExp("\\bapply_patch\\b[^]*\\bincompatible\\b|\\bin-flight tool future\\b[^]*\\bfail","i"),l6=new RegExp("\\btools::router\\b[^]*\\bfatal\\b|\\bresponse\\.failed\\b","i"),d6=new RegExp("(tool.*fatal|fatal.*tool|response[._]failed|tool_failure)","i");function u6(e){return s6.test(e)?!0:l6.test(e)}function c6(e){let t=E(e,"kind"),r;if(t!==void 0)r=t;else{let a=E(e,"type");if(a!==void 0)r=a;else{let s=k(Ue(e,"error"),l=>E(l,"kind"));r=s!==void 0?s:k(Ue(e,"error"),l=>E(l,"type"))}}let n=r!==void 0?d6.test(r):!1,i=tc(e),o=i!==void 0?u6(i):!1;if(n||o)return i!==void 0?i:""}function nj(e){if(e!==void 0&&!(e===null||Array.isArray(e)))switch(typeof e){case"string":return e.trim()!==""?e:void 0;case"object":let t=Object.keys(e);return t.length!==1?void 0:t[0];default:return}}function f6(e){if(e===void 0)return;let t=Tl(e,"{");if(t===void 0)return;let r=va(e.slice(t)),n=r!==void 0?r:va(e.slice(t,e.lastIndexOf("}")+1|0));if(n===void 0||!se(E(n,"type"),"error"))return;let i=Ue(n,"error");if(i===void 0)return;let o=E(i,"type");return{envelopeStatus:ta(Pr(n,"status")),envelopeErrorType:o!==void 0?o:E(i,"code"),envelopeMessage:E(i,"message")}}function m6(e){let t=Ue(e,"error"),r=k(Ue(e,"diagnostic_payload"),p=>Ue(p,"error")),n=k(r,p=>Ue(p,"error")),i=Pp(e),o=k(t,p=>E(p,"type")),a;if(o!==void 0)a=o;else{let p=k(t,_=>E(_,"code"));if(p!==void 0)a=p;else{let _=k(r,g=>E(g,"type"));if(_!==void 0)a=_;else{let g=k(r,b=>E(b,"code"));if(g!==void 0)a=g;else{let b=k(n,y=>E(y,"type"));if(b!==void 0)a=b;else{let y=k(n,S=>E(S,"code"));if(y!==void 0)a=y;else{let S=nj(k(t,v=>Pr(v,"codexErrorInfo")));a=S!==void 0?S:nj(k(r,v=>Pr(v,"codexErrorInfo")))}}}}}}let s=ra(k(t,p=>E(p,"message"))),l;if(s!==void 0)l=s;else{let p=ra(k(n,_=>E(_,"message")));if(p!==void 0)l=p;else{let _=ra(k(r,g=>E(g,"message")));l=_!==void 0?_:tc(e)}}if(i===void 0&&a===void 0){let p=He([k(t,_=>E(_,"message")),k(n,_=>E(_,"message")),k(r,_=>E(_,"message")),E(e,"message"),E(e,"reason"),E(e,"error"),E(e,"diagnostic"),E(e,"diagnostic_summary")],void 0,(_,g)=>_!==void 0?_:f6(g));if(p!==void 0){i=p.envelopeStatus,a=p.envelopeErrorType;let _=ra(p.envelopeMessage);l=_!==void 0?_:l}}let c=N(a,p=>p.trim()),f;f=c!==void 0&&c!==""?c:void 0;let h=Ge([N(i,p=>p.toString()),f],p=>p).join(" "),m;if(h==="")m=l;else{let p=l;m=p!==void 0?h+": "+p:h}if(m!==void 0&&m!=="")return m.slice(0,300)}function ij(e){return{swLastUpstreamErrorReason:e.lastUpstreamErrorReason,swLastErrorDiagnosticText:e.lastErrorDiagnosticText,swLastUpstreamErrorHttpStatus:e.lastUpstreamErrorHttpStatus,swUpstreamRejectedSeen:e.upstreamRejectedSeen,swProviderOutageFlaggedSeen:e.providerOutageFlaggedSeen,swToolFatalSeen:e.toolFatalSeen,swErrorNotificationCount:e.errorNotificationCount,swUnattributedErrorNotificationCount:e.unattributedErrorNotificationCount,swModelInteractionSeen:e.modelInteractionSeen}}function cj(e){return e===429||e>=500&&e<=599?"TransientRetryClass":"DeterministicRetryClass"}var p6=new RegExp("upstream model stream stalled","i"),h6=new RegExp("\\(HTTP (\\d{3})\\)");function fj(e){let t=h6.exec(e);if(t!=null)return k(k(t.slice(1)[0],r=>r),Fn)}function _6(e){let t=fj(e);return t!==void 0?cj(t):p6.test(e)?"TransientRetryClass":"DeterministicRetryClass"}function hw(e){let t={contents:!1},r={contents:e.swUpstreamRejectedSeen||e.swProviderOutageFlaggedSeen||e.swToolFatalSeen||e.swModelInteractionSeen||e.swUnattributedErrorNotificationCount>0},n={contents:0},i=e.swLastUpstreamErrorHttpStatus;i!==void 0&&(n.contents=n.contents+1|0,cj(i)==="TransientRetryClass"?t.contents=!0:r.contents=!0),[e.swLastUpstreamErrorReason,e.swLastErrorDiagnosticText].forEach(s=>{if(s===void 0)return;n.contents=n.contents+1|0,_6(s)==="TransientRetryClass"?t.contents=!0:r.contents=!0}),e.swErrorNotificationCount>(n.contents+e.swUnattributedErrorNotificationCount|0)&&!e.swUpstreamRejectedSeen&&!e.swProviderOutageFlaggedSeen&&!e.swToolFatalSeen&&(r.contents=!0);let o=r.contents,a=t.contents;return o?"deterministic":a?"transient":"none"}function oj(e){return e.swLastUpstreamErrorHttpStatus===429?!0:[e.swLastUpstreamErrorReason,e.swLastErrorDiagnosticText].some(r=>r!==void 0?se(fj(r),429):!1)}var g6=" (An automatic resume was not attempted: the upstream reported a rate limit (HTTP 429) during this turn, and an automatic resume would burn straight into it. Retry once the rate limit clears.)";function y6(e){return" (An automatic resume was attempted at "+new Date(e).toISOString()+" and the stream stalled again, so it will not be retried automatically.)"}function b6(e){return" (An automatic resume was attempted at "+new Date(e).toISOString()+" and the stream stalled again - reconnecting on a fresh model session automatically.)"}function S6(e){return" (An automatic resume was attempted at "+new Date(e).toISOString()+" after the stream stalled; it did not complete.)"}var mj=" (Automatic retries are paused: this session hit your Linzumi cost cap (HTTP 402), and an automatic retry must never spend past it. Retry manually when your budget allows.)";function pj(e){return e>0?" ("+e.toString()+" automatic "+(e===1?"retry":"retries")+" did not help.)":""}var _w={autoRetryPreFirstByteStall:!1,messageStateRetryable:!1,costCapAutoRetrySuppressed:!1,messageStateFate:void 0,autoResumeMidStreamStall:!1,midStreamResumeRateLimitSuppressed:!1,midStreamResumeAttemptBurnedAtMs:void 0};function Ap(e,t){return Pr(e,t)===!0}function v6(e){let t=Pr(e,"fate");if(typeof t=="string")return gp(t)}function w6(e,t,r,n){let i=e==="turn/failed"&&se(k(Ue(t,"error"),A=>E(A,"code")),"idle_stream_timeout"),o=e==="turn/failed"&&Ap(t,"retryable"),a=e==="turn/failed"?v6(t):void 0;if(!i)return{autoRetryPreFirstByteStall:!1,messageStateRetryable:o,costCapAutoRetrySuppressed:!1,messageStateFate:a,autoResumeMidStreamStall:!1,midStreamResumeRateLimitSuppressed:!1,midStreamResumeAttemptBurnedAtMs:void 0};let s=n.sessionMidStreamResumeAttemptAtMs,l=s!==void 0,d=hw(r)!=="deterministic",u=Ap(t,"preFirstByteStall")&&d,c=Ap(t,"midStreamResumableStall"),f=c&&oj(r),h=hw({swLastUpstreamErrorReason:r.swLastUpstreamErrorReason,swLastErrorDiagnosticText:r.swLastErrorDiagnosticText,swLastUpstreamErrorHttpStatus:r.swLastUpstreamErrorHttpStatus,swUpstreamRejectedSeen:r.swUpstreamRejectedSeen,swProviderOutageFlaggedSeen:r.swProviderOutageFlaggedSeen,swToolFatalSeen:r.swToolFatalSeen,swErrorNotificationCount:r.swErrorNotificationCount,swUnattributedErrorNotificationCount:r.swUnattributedErrorNotificationCount,swModelInteractionSeen:!1})!=="deterministic",m=c&&!l&&!f&&h,p=n.sessionFreshSessionResumeAttemptAtMs!==void 0,_=c&&l&&!p&&!f&&h,g=(u&&!l||m||_)&&n.sessionCostCap402Seen,b=u&&!l&&!g,y=m&&!g,S=_&&!g,v=c&&!l&&f;return{autoRetryPreFirstByteStall:b,messageStateRetryable:u||o,costCapAutoRetrySuppressed:g,messageStateFate:a!==void 0?a:oj(r)?"rate_limited":"transient_upstream",autoResumeMidStreamStall:y,midStreamResumeRateLimitSuppressed:v,midStreamResumeAttemptBurnedAtMs:l?s:void 0,freshSessionResumeMidStreamStall:S?!0:void 0}}function k6(e,t,r){let n=r!==void 0?" (last upstream error: "+r+")":"",i=e.lastErrorDiagnosticText;return i!==void 0?{cause:"codex error without HTTP status: "+i}:e.modelInteractionSeen?{cause:"model returned no assistant output: "+(e.items.length.toString()+" streamed items, ")+(t.toString()+" snapshot items"+n)}:{cause:"codex never called the model: 0 model interactions, "+(e.notificationCount.toString()+" notifications, ")+(e.errorNotificationCount.toString()+" errors"+n)}}function Rp(e,t){for(e.terminalTurnIds.delete(t),e.terminalTurnIds.add(t);e.terminalTurnIds.size>512;){let r=e.terminalTurnIds.values().next().value;r!==void 0&&e.terminalTurnIds.delete(r)}}function Ip(e){let t=e.turns.values().toArray().filter(n=>n.phase==="ActiveTurnPhase");return t.length!==1?void 0:t[0].turnId}function Cp(e,t,r,n){return[["thread_key",e.threadKey],["turn_id",t.turnId],["item_key",r.itemKey],["item_id",r.wireItemKey],["stream_kind",r.identity.streamKind],["item_index",r.identity.itemIndex],["source_seq",t.sourceSeq],["client_message_id",r.clientMessageId],["body",n.renderedBody],["structured",n.renderedStructured]]}function Qu(e){let t=e.nextStreamSnapshotIndex;return e.nextStreamSnapshotIndex=e.nextStreamSnapshotIndex+1|0,t}function ms(e){let t=E(e,"reason");if(t!==void 0)return t;let r=E(e,"message");if(r!==void 0)return r;let n=k(Ue(e,"error"),i=>E(i,"message"));return n!==void 0?n:w(E(e,"error"),"codex_turn_aborted")}function x6(e,t,r){let n={turnId:t,sourceSeq:r,phase:"ActiveTurnPhase",protocolFailureReason:void 0,lastUpstreamErrorReason:void 0,edgeBlockEvidence:void 0,lastErrorDiagnosticText:void 0,toolFatalSeen:!1,toolFatalDetail:void 0,upstreamRejectedSeen:!1,upstreamRejectedDetail:void 0,providerOutageFlaggedSeen:!1,providerOutageDetail:void 0,lastUpstreamErrorHttpStatus:void 0,lastUpstreamErrorSummary:void 0,errorNotificationCount:0,unattributedErrorNotificationCount:0,notificationCount:0,modelInteractionSeen:!1,reasoningStepsWithoutProgress:0,agentReplyToolCallSeen:!1,agentActionToolCallSeen:!1,items:[]};return e.turns.set(t,n),n}function T6(e,t){if(e.phase==="ActiveTurnPhase"){e.phase="CompletingTurnPhase",t.push({TAG:"RequestSnapshot",turnId:e.turnId});return}let i={TAG:"Log",event:"pipeline.loop.duplicate_turn_completed",fields:Object.fromEntries([["turn_id",e.turnId]])};t.push(i)}function Ep(e,t,r,n,i,o,a,s){let l;if(s.autoRetryPreFirstByteStall||s.costCapAutoRetrySuppressed){let g=o.autoRetryAttemptsForSeq;l=n+pj(g!==void 0?g(t.sourceSeq):0)+(s.costCapAutoRetrySuppressed?mj:"")}else l=n;if(s.midStreamResumeRateLimitSuppressed&&(l=l+g6),r==="failed"){let g=s.midStreamResumeAttemptBurnedAtMs;if(g!==void 0)l=l+(w(s.freshSessionResumeMidStreamStall,!1)?b6(g):y6(g));else{let b=k(o.midStreamResumeAttemptAtMsForSeq,y=>y(t.sourceSeq));b!==void 0&&(l=l+S6(b))}}t.items.forEach(g=>{if(!g.posted||Ll(g.emittedStreamState))return;let b=Jl(g.wireItemKey,g.content,a),y=Object.fromEntries(Cp(o,t,g,b).concat([["stream_snapshot_index",Qu(g)],["terminal_outcome",r],["reason",n]])),S={TAG:"Enqueue",kind:Qo,data:y,coalesceKey:void 0,resolution:"MustAck"};i.push(S),g.emittedStreamState=a,g.lastEmittedBody=b.renderedBody});let d=w(o.sessionExecutesRecoveryGrants,!1)&&r==="failed"&&(s.autoRetryPreFirstByteStall||s.autoResumeMidStreamStall||w(s.freshSessionResumeMidStreamStall,!1)),u=s.messageStateFate,c=s.messageStateFate,f;if(c!==void 0){let g=k(o.ladderHistoryForSeq,b=>b(t.sourceSeq,c));f=g!==void 0?[["ladder",g]]:[]}else f=[];let h=t.lastUpstreamErrorSummary,m;if(h!==void 0)m=[["upstream_error",h]];else{let g=e.lastUpstreamErrorSummary;m=g!==void 0?[["upstream_error",g]]:[]}let p=Object.fromEntries([["thread_key",o.threadKey],["turn_id",t.turnId],["seq",t.sourceSeq],["status",d?"recovering":"failed"],["reason",l]].concat((s.messageStateRetryable&&!d?[["retryable",!0]]:[]).concat(u!==void 0?[["fate",u]]:[])).concat(f.concat(m))),_={TAG:"Enqueue",kind:ea,data:p,coalesceKey:void 0,resolution:"MustAck"};i.push(_),i.push({TAG:"TurnTerminal",turnId:t.turnId,outcome:r,reason:l,retryableEmptyTurn:s.autoRetryPreFirstByteStall,autoResumeMidStreamStall:s.autoResumeMidStreamStall,freshSessionResumeMidStreamStall:s.freshSessionResumeMidStreamStall,fate:s.messageStateFate}),e.turns.delete(t.turnId),Rp(e,t.turnId)}function hj(e,t,r,n,i){let o=l=>{let d=e.turnId,u=e.items.length,c={turnId:d,itemId:l,itemIndex:u,streamKind:t},f=wM(c),h=w(l,f),m={identity:c,itemKey:f,wireItemKey:h,clientMessageId:pw(n.instanceId,e.turnId,t,h),content:KM(t),posted:!1,completed:!1,emittedStreamState:void 0,lastEmittedBody:void 0,nextDeltaIndex:0,nextStreamSnapshotIndex:1};return e.items.push(m),m};if(t==="webSearch"){let l=e.items.find(d=>d.identity.streamKind==="webSearch");return l!==void 0?l:o("web-search:"+e.turnId)}let a=r!==void 0?e.items.find(l=>l.identity.streamKind===t?se(l.identity.itemId,r):!1):void 0;if(a!==void 0)return a;let s=e.items.find(l=>l.identity.streamKind===t&&l.identity.itemId===void 0?!l.completed:!1);return r!==void 0?s!==void 0&&i?s:o(r):s!==void 0?s:o(r)}function gw(e,t,r,n,i,o){let a=Jl(t.wireItemKey,t.content,n);if(t.posted){let u=Object.fromEntries(Cp(i,e,t,a).concat([["delta_index",r],["stream_snapshot_index",Qu(t)]])),c=t.itemKey,f={TAG:"Enqueue",kind:Wl,data:u,coalesceKey:c,resolution:"MustAck"};o.push(f),t.emittedStreamState=n,t.lastEmittedBody=a.renderedBody;return}if(a.renderedBody.trim()==="")return;let l=Object.fromEntries(Cp(i,e,t,a).concat([["delta_index",r],["stream_snapshot_index",Qu(t)]])),d={TAG:"Enqueue",kind:Ul,data:l,coalesceKey:void 0,resolution:"MustAck"};if(o.push(d),t.posted=!0,t.emittedStreamState=n,t.lastEmittedBody=a.renderedBody,n==="completed"){t.completed=!0;return}}function Op(e,t,r,n){if(e.phase==="ActiveTurnPhase"){let l=hj(e,Bl(t),HM(t),r,!1);if(l.completed){let h={TAG:"Log",event:"pipeline.loop.delta_for_completed_item",fields:Object.fromEntries([["turn_id",e.turnId],["item_key",l.itemKey]])};n.push(h);return}l.content=JM(l.content,t);let d=l.nextDeltaIndex;l.nextDeltaIndex=l.nextDeltaIndex+1|0;let u=Bl(t),c;return c=u==="terminalInput"?"completed":"streaming",gw(e,l,d,c,r,n)}let o=[["turn_id",e.turnId],["stream_kind",Bl(t)]],s={TAG:"Log",event:"pipeline.loop.delta_for_completing_turn",fields:Object.fromEntries(o)};n.push(s)}function A6(e,t,r,n){let i=t.method,o=w(t.params,{});if(i===ec)return;if(i===Yl)return R6(e,o,r,n);if(!EJ(i))return;let a=Xu(o),s=a!==void 0?a:Ip(e);if(s!==void 0){if(e.terminalTurnIds.has(s)){let y={TAG:"Log",event:"pipeline.loop.notification_for_terminal_turn",fields:Object.fromEntries([["method",i],["turn_id",s]])};n.push(y);return}let u=e.turns.get(s),c;if(u!==void 0)c=u;else{let b=r.sourceSeqForTurn(s);c=b!==void 0?x6(e,s,b):void 0}if(c===void 0)return P6(e,s,{TAG:"HarnessNotification",_0:t},n);if(c.notificationCount=c.notificationCount+1|0,PJ(i)&&(c.modelInteractionSeen=!0),i==="turn/started")return;if(i==="turn/completed")return T6(c,n);let f=CJ(i);if(f!==void 0){let b=w6(i,o,ij(c),{sessionCostCap402Seen:e.costCap402Seen,sessionMidStreamResumeAttemptAtMs:k(r.midStreamResumeAttemptAtMsForSeq,S=>S(c.sourceSeq)),sessionFreshSessionResumeAttemptAtMs:k(r.freshSessionResumeAttemptAtMsForSeq,S=>S(c.sourceSeq))});if(b.autoResumeMidStreamStall){let S=[["thread_key",r.threadKey],["turn_id",c.turnId],["source_seq",c.sourceSeq],["reason",ms(o)]],A={TAG:"Log",event:"codex.mid_stream_stall_auto_resume_flagged",fields:Object.fromEntries(S)};n.push(A)}else if(b.midStreamResumeRateLimitSuppressed){let S=[["thread_key",r.threadKey],["turn_id",c.turnId],["source_seq",c.sourceSeq],["reason",ms(o)]],A={TAG:"Log",event:"codex.mid_stream_stall_resume_suppressed_rate_limit",fields:Object.fromEntries(S)};n.push(A)}else{let S=b.midStreamResumeAttemptBurnedAtMs;if(S!==void 0){let v=w(b.freshSessionResumeMidStreamStall,!1),A=[["thread_key",r.threadKey],["turn_id",c.turnId],["source_seq",c.sourceSeq],["resume_attempt_at_ms",S],["reason",ms(o)],["fresh_session_resume_granted",v]],F={TAG:"Log",event:"codex.mid_stream_stall_second_stall_after_resume",fields:Object.fromEntries(A)};if(n.push(F),v){let j=[["thread_key",r.threadKey],["turn_id",c.turnId],["source_seq",c.sourceSeq],["resume_attempt_at_ms",S],["reason",ms(o)]],L={TAG:"Log",event:"codex.mid_stream_stall_fresh_session_resume_flagged",fields:Object.fromEntries(j)};n.push(L)}}}if(b.autoRetryPreFirstByteStall){let S=[["thread_key",r.threadKey],["turn_id",c.turnId],["source_seq",c.sourceSeq],["reason",ms(o)],["evidence_class",hw(ij(c))]],A={TAG:"Log",event:"codex.pre_first_byte_stall_auto_retry_flagged",fields:Object.fromEntries(S)};n.push(A)}else if(b.costCapAutoRetrySuppressed){let S=[["thread_key",r.threadKey],["turn_id",c.turnId],["source_seq",c.sourceSeq],["reason",ms(o)],["flavor",Ap(o,"midStreamResumableStall")?"mid_stream_resume":"pre_first_byte_retry"]],A={TAG:"Log",event:"codex.pre_first_byte_stall_retry_suppressed_cost_cap",fields:Object.fromEntries(S)};n.push(A)}let y;switch(f){case"failed":y="failed";break;case"completed":case"interrupted":y="interrupted";break}return Ep(e,c,f,ms(o),n,r,y,b)}if(i==="error")return $6(e,c,o,n);if((i.startsWith("item/")||i==="command/exec/outputDelta")&&E6(c,i,o,r,n),i==="item/completed"||i==="response_item")return I6(c,o,r,n);let h=BM(i,o);if(h===void 0)return;if(c.phase!=="ActiveTurnPhase")return Op(c,h,r,n);if(Bl(h)!=="reasoning")return c.reasoningStepsWithoutProgress=0,Op(c,h,r,n);if(c.reasoningStepsWithoutProgress=c.reasoningStepsWithoutProgress+1|0,c.reasoningStepsWithoutProgress<=64)return Op(c,h,r,n);let p=kJ(c.reasoningStepsWithoutProgress),g={TAG:"Log",event:"codex.reasoning_loop_breaker_tripped",fields:Object.fromEntries([["thread_key",r.threadKey],["turn_id",c.turnId],["source_seq",c.sourceSeq],["reasoning_steps_without_progress",c.reasoningStepsWithoutProgress],["max_reasoning_steps_without_progress",64]])};return n.push(g),Ep(e,c,"failed",p,n,r,"interrupted",_w)}let d={TAG:"Log",event:"pipeline.loop.notification_without_turn",fields:Object.fromEntries([["method",i]])};n.push(d)}function O6(e,t,r,n,i){switch(t){case"codexDied":let a=e.phase,s=0;switch(a){case"running":case"closing":s=2;break;case"dead":return}if(s===2){e.turns.values().toArray().forEach(u=>Ep(e,u,"failed",r,i,n,"interrupted",_w)),e.bufferedTurns.entries().toArray().forEach(u=>{let c=u[0],h={TAG:"Log",event:"pipeline.loop.buffered_turn_dropped",fields:Object.fromEntries([["turn_id",c],["buffered_event_count",u[1].length],["reason",r]])};i.push(h),i.push({TAG:"TurnTerminal",turnId:c,outcome:"failed",reason:r,retryableEmptyTurn:!1,autoResumeMidStreamStall:!1,fate:void 0}),Rp(e,c)}),e.bufferedTurns.clear(),e.phase="dead";let d={TAG:"Log",event:"pipeline.loop.codex_died",fields:Object.fromEntries([["reason",r]])};i.push(d);return}break;case"shutdown":case"replaceRunner":break}switch(e.phase){case"running":e.phase="closing";let a=[["kind",t],["reason",r]],l={TAG:"Log",event:"pipeline.loop.closing",fields:Object.fromEntries(a)};i.push(l);return;case"closing":case"dead":return}}function C6(e,t,r,n,i){if(e.terminalTurnIds.has(t)){let d={TAG:"Log",event:"pipeline.loop.duplicate_snapshot",fields:Object.fromEntries([["turn_id",t]])};i.push(d);return}let o=e.turns.get(t);if(o!==void 0){if(o.phase!=="ActiveTurnPhase")return M6(e,o,r,n,i);let u={TAG:"Log",event:"pipeline.loop.snapshot_for_active_turn",fields:Object.fromEntries([["turn_id",t]])};i.push(u);return}let s={TAG:"Log",event:"pipeline.loop.snapshot_for_unknown_turn",fields:Object.fromEntries([["turn_id",t]])};i.push(s)}function E6(e,t,r,n,i){if(e.phase!=="ActiveTurnPhase")return;let a=Ue(r,"item"),s=a!==void 0?E(a,"type"):E(r,"type");if(!Nr(s,"agentStatus"))return;let l=Kl(r),d=t==="item/agentMessage/delta"||se(s,"agentMessage");e.items.forEach(u=>{if(!(u.identity.streamKind==="assistant"&&u.completed&&u.posted&&!Ll(u.emittedStreamState)))return;if(l!==void 0?Nr(u.identity.itemId,l):!d)return gw(e,u,Math.max(u.nextDeltaIndex-1|0,0),"completed",n,i)})}function P6(e,t,r,n){let i=e.bufferedTurns.get(t);if(i!==void 0){i.push(r);return}e.bufferedTurns.set(t,[r]);let a={TAG:"Log",event:"pipeline.loop.turn_events_buffered",fields:Object.fromEntries([["turn_id",t]])};n.push(a)}function R6(e,t,r,n){let i=E(t,"turnId"),o=w(E(t,"reason"),"turn source-seq mapping failed");if(i===void 0||e.terminalTurnIds.has(i))return;let a=e.turns.get(i);if(a!==void 0)return Ep(e,a,"failed",o,n,r,"failed",_w);let s=e.bufferedTurns.get(i);e.bufferedTurns.delete(i);let l=[["level","warn"],["turn_id",i],["buffered_event_count",w(N(s,c=>c.length),0)],["reason",o]],u={TAG:"Log",event:"pipeline.loop.buffered_turn_failed",fields:Object.fromEntries(l)};n.push(u),n.push({TAG:"TurnTerminal",turnId:i,outcome:"failed",reason:o,retryableEmptyTurn:!1,autoResumeMidStreamStall:!1,fate:void 0}),Rp(e,i)}function I6(e,t,r,n){let i=Ue(t,"item");i!==void 0&&e.protocolFailureReason===void 0&&(e.protocolFailureReason=lj(i)),sj(e,i!==void 0?i:t);let o=XM(t);if(o===void 0)return;if(o.completedStreamKind==="webSearch"){let c=o.completedContent,f;return f=c.TAG==="WebSearchContent"?c.queries:[],Op(e,{TAG:"WebSearchDelta",itemId:o.completedItemId,queries:f},r,n)}if(e.phase==="ActiveTurnPhase"){let c=hj(e,o.completedStreamKind,o.completedItemId,r,!0),f=!1;if(c.identity.streamKind===o.completedStreamKind){let _=o.completedStreamKind,g;switch(_){case"agentStatus":case"agentTaskUpdate":g=!0;break;default:g=!1}f=g}if(c.completed&&!f)return;c.content=o.completedContent,c.completed=!0;let h=o.completedStreamKind,m;m=h==="assistant"?"streaming":"completed";let p=Jl(c.wireItemKey,c.content,m);return c.posted&&se(p.renderedBody,c.lastEmittedBody)&&(m==="streaming"||Ll(c.emittedStreamState))?void 0:gw(e,c,Math.max(c.nextDeltaIndex-1|0,0),m,r,n)}let l=[["turn_id",e.turnId],["stream_kind",o.completedStreamKind]],u={TAG:"Log",event:"pipeline.loop.item_completed_for_completing_turn",fields:Object.fromEntries(l)};n.push(u)}function $6(e,t,r,n){t.errorNotificationCount=t.errorNotificationCount+1|0;let i=c6(r);if(i!==void 0){t.toolFatalSeen=!0,t.toolFatalDetail===void 0&&i!==""&&(t.toolFatalDetail=i);let p={TAG:"Log",event:"codex.tool_fatal_captured",fields:Object.fromEntries([["turn_id",t.turnId],["detail",i===""?null:i]])};n.push(p)}let o=QJ(r);if(o!==void 0){t.upstreamRejectedSeen=!0,t.upstreamRejectedDetail===void 0&&o!==""&&(t.upstreamRejectedDetail=o);let p={TAG:"Log",event:"codex.upstream_rejection_captured",fields:Object.fromEntries([["turn_id",t.turnId],["detail",o===""?null:o]])};n.push(p)}let a=n6(r);if(a!==void 0){t.providerOutageFlaggedSeen=!0,t.providerOutageDetail===void 0&&a!==""&&(t.providerOutageDetail=a);let p={TAG:"Log",event:"codex.provider_outage_flagged_captured",fields:Object.fromEntries([["turn_id",t.turnId],["detail",a===""?null:a]])};n.push(p)}let s=Pp(r),l=WJ(r);if(l!==void 0&&(t.edgeBlockEvidence=l),s!==void 0){let m=t.lastUpstreamErrorHttpStatus;m!==void 0&&s<=m||(t.lastUpstreamErrorHttpStatus=s)}if(se(s,402)&&!e.costCap402Seen){e.costCap402Seen=!0;let p={TAG:"Log",event:"codex.cost_cap_402_seen",fields:Object.fromEntries([["turn_id",t.turnId]])};n.push(p)}let d=MJ(r),u=!1;if(d!==void 0){t.lastUpstreamErrorReason=d;let p={TAG:"Log",event:"codex.upstream_error_captured",fields:Object.fromEntries([["turn_id",t.turnId],["reason",d]])};n.push(p)}else{let m=tc(r);if(m!==void 0){t.lastErrorDiagnosticText=m,u=!0;let _={TAG:"Log",event:"codex.error_without_http_status_captured",fields:Object.fromEntries([["turn_id",t.turnId],["diagnostic_text",m]])};n.push(_)}}i===void 0&&o===void 0&&a===void 0&&s===void 0&&d===void 0&&!u&&(t.unattributedErrorNotificationCount=t.unattributedErrorNotificationCount+1|0);let c=m6(r);if(c===void 0)return;t.lastUpstreamErrorSummary=c,e.lastUpstreamErrorSummary=c;let h={TAG:"Log",event:"codex.upstream_turn_error_captured",fields:Object.fromEntries([["turn_id",t.turnId],["upstream_error",c]])};n.push(h)}function M6(e,t,r,n,i){let o=Pr(r,"items"),a=o!==void 0?Array.isArray(o)?o:[]:[];t.protocolFailureReason===void 0&&(t.protocolFailureReason=OJ(a)),a.forEach(G=>sj(t,Oe(G)));let s=QM(a),l=new Set,d=new Map;s.forEach((G,Pe)=>{let de=G.projItemId;if(de===void 0)return;let ze=t.items.find(Ct=>Ct.posted&&!l.has(Ct.itemKey)&&Ct.identity.streamKind===G.projStreamKind?se(Ct.identity.itemId,de):!1);if(ze!==void 0){l.add(ze.itemKey),d.set(Pe,ze);return}});let u=new Map;t.items.forEach(G=>{if(!(G.posted&&!l.has(G.itemKey)&&G.identity.itemId===void 0))return;let Pe=G.identity.streamKind;u.set(Pe,w(u.get(Pe),0)+1|0)});let c=new Map;s.forEach((G,Pe)=>{if(d.has(Pe))return;let de=G.projStreamKind;c.set(de,w(c.get(de),0)+1|0)});let f=(G,Pe)=>{let de=Jl(G.wireItemKey,G.content,"completed").renderedBody.trim(),ze=Pe.projBody.trim();return ze.startsWith(de)?!0:de.startsWith(ze)};s.forEach((G,Pe)=>{if(d.has(Pe))return;let de=G.projStreamKind,ze=se(c.get(de),u.get(de));if(G.projItemId!==void 0&&!ze)return;let Ct=t.items.find(tr=>tr.posted&&!l.has(tr.itemKey)&&tr.identity.streamKind===G.projStreamKind?tr.identity.itemId===void 0:!1);if(Ct!==void 0&&(G.projItemId===void 0||f(Ct,G))){l.add(Ct.itemKey),d.set(Pe,Ct);return}});let h=d.entries().toArray();t.items.forEach(G=>{let Pe=h.find(tr=>tr[1].itemKey===G.itemKey);if(Pe!==void 0){let tr=s[Pe[0]];if(tr===void 0||G.identity.streamKind==="assistant"&&Ll(G.emittedStreamState)&&se(G.lastEmittedBody,tr.projBody))return;let Un=Object.fromEntries([["thread_key",n.threadKey],["turn_id",t.turnId],["item_key",G.itemKey],["item_id",G.wireItemKey],["stream_kind",G.identity.streamKind],["item_index",G.identity.itemIndex],["source_seq",t.sourceSeq],["client_message_id",G.clientMessageId],["body",tr.projBody],["structured",mw(tr.projStructured,G.wireItemKey)],["stream_snapshot_index",Qu(G)],["terminal_outcome","completed"]]),pn={TAG:"Enqueue",kind:Qo,data:Un,coalesceKey:void 0,resolution:"MustAck"};i.push(pn),G.emittedStreamState="completed",G.lastEmittedBody=tr.projBody;return}if(!G.posted||Ll(G.emittedStreamState))return;let de=Jl(G.wireItemKey,G.content,"completed"),ze=Object.fromEntries(Cp(n,t,G,de).concat([["stream_snapshot_index",Qu(G)],["terminal_outcome","completed"]])),Ct={TAG:"Enqueue",kind:Qo,data:ze,coalesceKey:void 0,resolution:"MustAck"};i.push(Ct),G.emittedStreamState="completed",G.lastEmittedBody=de.renderedBody}),s.forEach((G,Pe)=>{if(d.has(Pe))return;let de=G.projItemId,ze=de!==void 0?de:t.turnId+":"+G.projStreamKind+":snapshot:"+G.snapshotIndex.toString(),Ct=G.projItemId,tr=Object.fromEntries([["thread_key",n.threadKey],["turn_id",t.turnId],["item_key",t.turnId+":"+G.projStreamKind+":"+(Ct!==void 0?Ct:"snapshot:"+G.snapshotIndex.toString())],["item_id",ze],["stream_kind",G.projStreamKind],["snapshot_index",G.snapshotIndex],["source_seq",t.sourceSeq],["client_message_id",pw(n.instanceId,t.turnId,G.projStreamKind,ze)],["body",G.projBody],["structured",mw(G.projStructured,ze)],["stream_snapshot_index",1]]),Un={TAG:"Enqueue",kind:Zl,data:tr,coalesceKey:void 0,resolution:"MustAck"};i.push(Un)});let m=t.items.some(G=>G.identity.streamKind==="assistant"?G.posted:!1)||s.some(G=>G.projStreamKind==="assistant"),p=t.agentActionToolCallSeen||t.items.some(G=>G.posted?rj(G.identity.streamKind):!1)||s.some(G=>rj(G.projStreamKind)),_=n.linzumiAgentSession&&m&&!t.agentReplyToolCallSeen&&!p,g=m&&!_,b=t.protocolFailureReason,y=xJ(b)&&g,S=y?void 0:b,v;if(!g&&b===void 0&&t.lastUpstreamErrorReason===void 0){let G;if(_)G={cause:vJ};else{let Pe=t.lastUpstreamErrorSummary;G=k6(t,s.length,Pe!==void 0?Pe:e.lastUpstreamErrorSummary)}v=G}else v=void 0;let A=!g&&S===void 0&&t.upstreamRejectedSeen,R=!g&&S===void 0&&t.providerOutageFlaggedSeen,F=VJ(t.lastUpstreamErrorHttpStatus),j=!g&&S===void 0&&t.edgeBlockEvidence!==void 0,ie=A&&!R&&!F,L=R||ie?a6(R,e.consecutiveIsolatedRejections,t.providerOutageDetail,t.upstreamRejectedDetail):void 0,K;if(L!==void 0)switch(L.dispositionKind){case"isolated_retry":K=!0;break;case"storm":case"isolated_terminal":K=!1;break}else K=!1;ie?e.consecutiveIsolatedRejections=e.consecutiveIsolatedRejections+1|0:e.consecutiveIsolatedRejections=0;let oe=!g&&S===void 0&&t.lastUpstreamErrorReason===void 0&&t.lastErrorDiagnosticText===void 0&&!A&&ZJ(t.lastUpstreamErrorHttpStatus),W=!g&&S===void 0&&t.lastUpstreamErrorReason===void 0&&F,Z=!g&&S===void 0&&t.lastUpstreamErrorReason===void 0&&!A&&!oe&&!W&&t.toolFatalSeen,I;if(L!==void 0)I=L.dispositionReason;else if(W){let G=t.upstreamRejectedDetail;I=HJ(t.lastUpstreamErrorHttpStatus,G!==void 0?G:t.lastErrorDiagnosticText)}else if(oe)I=BJ(t.lastUpstreamErrorHttpStatus);else if(Z)I=KJ(t.toolFatalDetail);else{let G=t.lastUpstreamErrorReason;I=G!==void 0?G:_?SJ:v!==void 0?tj+" ["+v.cause+"]":tj}let fe=v!==void 0&&S===void 0&&t.modelInteractionSeen&&t.lastErrorDiagnosticText===void 0&&!A&&!oe&&!W&&!Z;fe?e.consecutiveEmptyTurns=e.consecutiveEmptyTurns+1|0:e.consecutiveEmptyTurns=0;let J=fe&&e.consecutiveEmptyTurns>3,U=fe&&!J||K,ae=n.autoRetryAttemptsForSeq,ce=ae!==void 0?ae(t.sourceSeq):0,he=U&&e.costCap402Seen&&ce<2,Ie=U&&!he;if(j){let G=t.edgeBlockEvidence,Pe=t.edgeBlockEvidence,ze={TAG:"Log",event:"codex.edge_blocked_captured",fields:Object.fromEntries([["thread_key",n.threadKey],["turn_id",t.turnId],["source_seq",t.sourceSeq],["http_status",G!==void 0?G.edgeStatus:null],["signature",Pe!==void 0?Pe.edgeSignature:null]])};i.push(ze)}let Be=J?wJ+" ("+e.consecutiveEmptyTurns.toString()+" in a row"+(v!==void 0?": "+v.cause:"")+").":void 0,we=S!==void 0?S:g?void 0:Be!==void 0?Be:I,dt=fe&&!J?ce:0,Qe=N(we,G=>G+pj(dt)+(he?mj:"")),it=v!==void 0&&!J&&!A&&!oe&&!W&&!Z||K||j,At;if(it||R)At="transient_upstream";else if(oe){let G=t.lastUpstreamErrorHttpStatus;At=G!==void 0?Gu(G):"transient_upstream"}else At="deterministic";if(he){let G=[["thread_key",n.threadKey],["turn_id",t.turnId],["source_seq",t.sourceSeq],["reason",xi(we)],["isolated_rejection_retry_suppressed",K]],de={TAG:"Log",event:"codex.empty_turn_auto_retry_suppressed_cost_cap",fields:Object.fromEntries(G)};i.push(de)}if(J){let G=t.lastUpstreamErrorSummary,Pe=[["thread_key",n.threadKey],["turn_id",t.turnId],["source_seq",t.sourceSeq],["consecutive_empty_turns",e.consecutiveEmptyTurns],["max_consecutive_empty_turns",3],["cause",xi(N(v,Ct=>Ct.cause))],["last_upstream_error",xi(G!==void 0?G:e.lastUpstreamErrorSummary)]],ze={TAG:"Log",event:"codex.empty_turn_loop_guard_tripped",fields:Object.fromEntries(Pe)};i.push(ze)}if(y){let G=[["thread_key",n.threadKey],["turn_id",t.turnId],["source_seq",t.sourceSeq],["reason",xi(b)]],de={TAG:"Log",event:"codex.turn_completed_with_unsupported_tool_call_ignored",fields:Object.fromEntries(G)};i.push(de)}else if(b!==void 0){let G=[["thread_key",n.threadKey],["turn_id",t.turnId],["source_seq",t.sourceSeq],["reason",xi(b)]],de={TAG:"Log",event:"codex.turn_completed_with_protocol_failure",fields:Object.fromEntries(G)};i.push(de)}if(_){let Pe={TAG:"Log",event:"codex.agent_turn_narration_only_no_reply",fields:Object.fromEntries([["thread_key",n.threadKey],["turn_id",t.turnId],["source_seq",t.sourceSeq],["streamed_item_count",t.items.length],["snapshot_item_count",s.length],["agent_reply_tool_call_seen",t.agentReplyToolCallSeen],["agent_action_tool_call_seen",t.agentActionToolCallSeen],["retryable_empty_turn",it],["empty_turn_loop_guard_tripped",J]])};i.push(Pe)}if(!m){let G=t.lastUpstreamErrorHttpStatus,Pe=[["thread_key",n.threadKey],["turn_id",t.turnId],["source_seq",t.sourceSeq],["streamed_item_count",t.items.length],["snapshot_item_count",s.length],["notification_count",t.notificationCount],["error_notification_count",t.errorNotificationCount],["model_interaction_seen",t.modelInteractionSeen],["last_error_diagnostic_text",xi(t.lastErrorDiagnosticText)],["last_upstream_error_reason",xi(t.lastUpstreamErrorReason)],["last_upstream_error_summary",xi(t.lastUpstreamErrorSummary)],["empty_turn_cause",xi(N(v,Ct=>Ct.cause))],["tool_fatal_seen",Z],["tool_fatal_detail",xi(t.toolFatalDetail)],["upstream_rejected_seen",A],["upstream_rejected_detail",xi(t.upstreamRejectedDetail)],["upstream_terminal_4xx",W],["last_upstream_error_http_status",G!==void 0?G:null],["provider_outage_flagged",R],["isolated_rejection_retry_granted",K],["rejection_disposition",L!==void 0?L.dispositionKind:null],["consecutive_isolated_rejections",e.consecutiveIsolatedRejections],["retryable_empty_turn",it],["empty_turn_loop_guard_tripped",J],["cost_cap_auto_retry_suppressed",he]],ze={TAG:"Log",event:"codex.turn_completed_without_assistant_output",fields:Object.fromEntries(Pe)};i.push(ze)}let Zt=w(n.sessionExecutesRecoveryGrants,!1)&&Ie,Qt;if(Qe!==void 0){let G=k(n.ladderHistoryForSeq,ze=>ze(t.sourceSeq,At)),Pe=t.lastUpstreamErrorSummary,de;if(Pe!==void 0)de=[["upstream_error",Pe]];else{let ze=e.lastUpstreamErrorSummary;de=ze!==void 0?[["upstream_error",ze]]:[]}Qt=[["status",Zt?"recovering":"failed"],["reason",Qe]].concat((it&&!Zt?[["retryable",!0]]:[]).concat([["fate",At]])).concat((G!==void 0?[["ladder",G]]:[]).concat(j?[["failure_class","edge_blocked"]]:[]).concat(de))}else Qt=[["status","processed"]];let er=Object.fromEntries([["thread_key",n.threadKey],["turn_id",t.turnId],["seq",t.sourceSeq]].concat(Qt)),ot={TAG:"Enqueue",kind:ea,data:er,coalesceKey:void 0,resolution:"MustAck"};i.push(ot),Qe===void 0&&(e.lastUpstreamErrorSummary=void 0),i.push(Qe!==void 0?{TAG:"TurnTerminal",turnId:t.turnId,outcome:"failed",reason:Qe,retryableEmptyTurn:Ie,autoResumeMidStreamStall:!1,fate:At}:{TAG:"TurnTerminal",turnId:t.turnId,outcome:"completed",reason:void 0,retryableEmptyTurn:!1,autoResumeMidStreamStall:!1,fate:void 0}),e.turns.delete(t.turnId),Rp(e,t.turnId)}function _j(e,t,r,n){switch(t.TAG){case"HarnessNotification":case"CompletionSnapshot":break;case"Lifecycle":return O6(e,t.kind,t.reason,r,n)}switch(e.phase){case"running":switch(t.TAG){case"HarnessNotification":return A6(e,t._0,r,n);case"CompletionSnapshot":let c=t.turnId,f=e.bufferedTurns.get(c);if(f!==void 0){f.push(t);return}else return C6(e,c,t.snapshot,r,n);case"Lifecycle":return}case"closing":let o=[["source",ql(t)]],s={TAG:"Log",event:"pipeline.loop.event_after_close",fields:Object.fromEntries(o)};n.push(s);return;case"dead":let l=[["source",ql(t)]],u={TAG:"Log",event:"pipeline.loop.event_after_death",fields:Object.fromEntries(l)};n.push(u);return}}function j6(e,t,r){e.bufferedTurns.keys().toArray().forEach(n=>{if(t.sourceSeqForTurn(n)===void 0)return;let o=w(e.bufferedTurns.get(n),[]);e.bufferedTurns.delete(n);let s={TAG:"Log",event:"pipeline.loop.buffered_turn_drained",fields:Object.fromEntries([["turn_id",n],["buffered_event_count",o.length]])};r.push(s),o.forEach(l=>_j(e,l,t,r))})}function gj(e,t,r){let n=[];return e.phase==="running"&&j6(e,r,n),_j(e,t,r,n),n}var yw=2;var z6=[500,1e3,2500,5e3,1e4,3e4],N6=1440*60*1e3;function $p(e,t){return e+"\0"+t}function yj(e,t){let r=Math.max(1,Math.ceil(t*e.length)|0);return w(e[r-1|0],0)}function G6(e){if(e.length===0)return;let t=e.toSorted((r,n)=>r-n);return{p50Ms:yj(t,.5),p95Ms:yj(t,.95),maxMs:w(t[t.length-1|0],0),ackedInWindow:t.length}}function F6(e){return new Promise((t,r)=>{setTimeout(()=>t(),e)})}function bj(e){let t=e.log,r=e.onPermanentFailure,n=e.builders,i={contents:e.threadKey},o=w(e.now,()=>Date.now()),a=w(e.retryDelaysMs,z6.slice()),s={contents:[]},l={contents:0},d=new Map,u={contents:new Map},c=[],f={contents:1},h={contents:0},m={contents:0},p={contents:0},_={contents:0},g={contents:0},b={contents:0},y=[],S={contents:0},v={contents:!1},A={contents:!0},R={contents:!1},F={contents:void 0},j={contents:void 0},ie=Math.max(1,w(e.maxInFlightPushes,1)),L={contents:0},K={contents:[]},oe={contents:Promise.resolve()},W=()=>s.contents[l.contents],Z=()=>({totalEnqueued:h.contents,totalAcked:m.contents,totalDroppedBestEffort:_.contents,totalPermanentFailures:g.contents,totalExpiredOnRecovery:b.contents,lastEntrySeq:f.contents-1}),I=e.persistDir;if(I!==void 0){let V=Xv(I,i.contents),te=bM(V,t),re=w(e.journalRecoveryMaxAgeMs,N6),Ke=o(),et=[];te.pendingEntries.forEach(ft=>{if(Ke-ft.enqueuedAtMs>re){et.push(ft);return}let Rt={entry:ft,state:"EntryQueued",outcome:void 0,retryTimer:void 0};s.contents.push(Rt);let bt=ft.coalesceKey;if(bt!==void 0){d.set($p(ft.kind,bt),Rt);return}}),u.contents=te.kv,h.contents=te.counters.totalEnqueued,m.contents=te.counters.totalAcked,_.contents=te.counters.totalDroppedBestEffort,g.contents=te.counters.totalPermanentFailures,b.contents=te.counters.totalExpiredOnRecovery+et.length|0,f.contents=te.counters.lastEntrySeq+1;let ut=SM(V,()=>({pendingEntries:s.contents.slice(l.contents).map(ft=>ft.entry),kv:u.contents,counters:Z()}),t,e.journalCompactionThreshold,void 0);if(j.contents=ut,et.length!==0){et.forEach(bt=>ut.appendExpired(bt.entrySeq));let ft=et.map(bt=>Math.max(0,Ke-bt.enqueuedAtMs)),Rt=new Set(et.map(bt=>bt.kind));t("outbox_recovery_expired",Object.fromEntries([["level","warn"],["threadKey",i.contents],["expiredEntries",et.length],["survivingEntries",s.contents.length-l.contents|0],["maxAgeMs",re],["oldestAgeMs",He(ft,0,(bt,Et)=>Math.max(bt,Et))],["newestAgeMs",He(ft,Number.POSITIVE_INFINITY,(bt,Et)=>Math.min(bt,Et))],["kinds",Rt.values().toArray().map(bt=>bt)]]))}(s.contents.length-l.contents|0)>0&&t("outbox_recovered",Object.fromEntries([["threadKey",i.contents],["pendingEntries",s.contents.length-l.contents|0],["nextEntrySeq",f.contents]]))}let U={remember:(V,te)=>{u.contents.set(V,te);let re=j.contents;if(re!==void 0)return re.appendKv(V,te)},recall:V=>u.contents.get(V)},ae=()=>{if(l.contents=l.contents+1|0,l.contents>=64&&l.contents<<1>=s.contents.length){s.contents=s.contents.slice(l.contents),l.contents=0;return}},ce=()=>{let V=W(),te=c.length-1|0;for(;te>=0;){let re=c[te];if(re!==void 0&&(V!==void 0?V.entry.entrySeq>re.upToSeq:!0)){c.splice(te,1);let et=re.timer;et!==void 0&&clearTimeout(ue(et)),re.resolve({TAG:"Ok",_0:void 0})}te=te-1|0}},he=V=>{let te=V.entry.coalesceKey;if(te===void 0)return;let re=$p(V.entry.kind,te),Ke=d.get(re);if(Ke!==void 0&&Ke===V){d.delete(re);return}},Ie=(V,te)=>{let re=V.entry;switch(te.TAG){case"OutcomeAck":let Ke=n[re.kind];if(Ke!==void 0){let bt=Ke.onReply;if(bt!==void 0){let Et;try{bt(re.data,te._0,U),Et={TAG:"Ok",_0:void 0}}catch(yo){let sa=X(yo);Et={TAG:"Error",_0:je(sa)}}Et.TAG!=="Ok"&&t("outbox_on_reply_failed",Object.fromEntries([["threadKey",i.contents],["entrySeq",re.entrySeq],["kind",re.kind],["error",Et._0.message]]))}}let et=j.contents;et!==void 0&&et.appendAck(re.entrySeq);break;case"OutcomeSkip":let ut=te._0;t("outbox_entry_skipped",Object.fromEntries([["threadKey",i.contents],["entrySeq",re.entrySeq],["kind",re.kind],["reason",ut]]));let ft=j.contents;ft!==void 0&&ft.appendSkip(re.entrySeq,ut);break;case"OutcomeFail":if(re.resolution==="MustAck"){let bt=j.contents;bt!==void 0&&bt.appendFail(re.entrySeq);let Et;try{r(re,te._0),Et={TAG:"Ok",_0:void 0}}catch(yo){let sa=X(yo);Et={TAG:"Error",_0:je(sa)}}Et.TAG!=="Ok"&&t("outbox_permanent_failure_callback_failed",Object.fromEntries([["threadKey",i.contents],["entrySeq",re.entrySeq],["error",Et._0.message]]))}else{let bt=j.contents;bt!==void 0&&bt.appendDrop(re.entrySeq)}break}he(V),ae(),ce()},Be=()=>{let V=!0;for(;V;){let te=W();if(te!==void 0){let re=te.outcome;re!==void 0?Ie(te,re):V=!1}else V=!1}},we=(V,te)=>{let re=V.entry;switch(te.TAG){case"OutcomeAck":case"OutcomeSkip":break;case"OutcomeFail":let Ke=te._0;re.resolution==="MustAck"?(g.contents=g.contents+1|0,t("outbox_permanent_failure",Object.fromEntries([["threadKey",i.contents],["entrySeq",re.entrySeq],["kind",re.kind],["attempts",re.attempts],["error",Ke]]))):(_.contents=_.contents+1|0,t("outbox_dropped_best_effort",Object.fromEntries([["threadKey",i.contents],["entrySeq",re.entrySeq],["kind",re.kind],["attempts",re.attempts],["error",Ke]])));break}V.outcome=te,V.state="EntryQueued"},dt=V=>{y.length<256?y.push(V):y[S.contents]=V;let te=S.contents+1|0;S.contents=te>=256?0:te},Qe=V=>{let te=V.retryTimer;if(te!==void 0){clearTimeout(ue(te)),V.retryTimer=void 0;return}},it=()=>{if(L.contents>0)return;let V=K.contents;K.contents=[],V.forEach(te=>te())},At=()=>{let V=W();return V===void 0||V.state!=="EntryQueued"||V.outcome!==void 0?!1:V.retryTimer!==void 0},Zt={contents:()=>{}},Qt=(V,te)=>{Qe(V);let re=setTimeout(()=>{if(V.retryTimer=void 0,!(R.contents||v.contents||V.outcome!==void 0))return Zt.contents()},te|0);re.unref(),V.retryTimer=qe(re)},er=async(V,te,re)=>{let Ke=V.entry,et=o(),ut;try{ut=await e.push(te[0],te[1],te[2],re)}catch(bt){let Et=X(bt);ut={TAG:"PushFailed",message:je(Et).message,budgetExempt:!1}}if(ut.TAG==="Acked")return re(),dt(Math.max(0,o()-et)),m.contents=m.contents+1|0,we(V,{TAG:"OutcomeAck",_0:ut._0});let ft=ut.message;if(re(),V.state="EntryQueued",ut.budgetExempt)return Ke.attempts=Ke.attempts-1|0,p.contents=p.contents+1|0,t("outbox_push_connection_wait",Object.fromEntries([["threadKey",i.contents],["entrySeq",Ke.entrySeq],["kind",Ke.kind],["error",ft]])),!R.contents&&!v.contents?Qt(V,1e3):void 0;let Rt=a[Ke.attempts-1|0];return Rt!==void 0?(p.contents=p.contents+1|0,t("outbox_push_retry",Object.fromEntries([["threadKey",i.contents],["entrySeq",Ke.entrySeq],["kind",Ke.kind],["attempt",Ke.attempts],["delayMs",Rt],["error",ft]])),!R.contents&&!v.contents?Qt(V,Rt):void 0):we(V,{TAG:"OutcomeFail",_0:ft})},ot=async V=>{let te=V.entry,re=oe.contents,Ke={contents:()=>{}};oe.contents=new Promise((Rt,bt)=>{Ke.contents=Rt});let et={contents:!1},ut=()=>{if(!et.contents)return et.contents=!0,Ke.contents()};if(V.state="EntryPushing",L.contents=L.contents+1|0,await re,R.contents||v.contents||V.outcome!==void 0){V.state="EntryQueued",ut(),L.contents=L.contents-1|0;return}let ft=n[te.kind];if(ft!==void 0){let Rt;try{Rt=ft.build(te.data,U)}catch(bt){let Et=X(bt);Rt={TAG:"BuildFailed",_0:je(Et).message}}switch(Rt.TAG){case"BuildPush":te.attempts=te.attempts+1|0,await er(V,[Rt.event,Rt.payload,Rt.timeoutMs],ut),L.contents=L.contents-1|0;return;case"BuildSkip":ut(),we(V,{TAG:"OutcomeSkip",_0:Rt._0}),L.contents=L.contents-1|0;return;case"BuildFailed":ut(),we(V,{TAG:"OutcomeFail",_0:Rt._0}),L.contents=L.contents-1|0;return}}else{ut(),we(V,{TAG:"OutcomeFail",_0:"no outbox builder registered for kind "+te.kind}),L.contents=L.contents-1|0;return}},G=()=>{if(Be(),R.contents||v.contents||At())return it();let V=l.contents;for(;V<s.contents.length&&L.contents<ie;){let te=s.contents[V];te!==void 0&&te.state==="EntryQueued"&&te.outcome===void 0&&(te.retryTimer!==void 0||Dn(ot(te).then(()=>G()),ut=>(t("outbox_drain_loop_error",Object.fromEntries([["threadKey",i.contents]])),G(),Promise.resolve()))),V=V+1|0}it()};Zt.contents=G;let Pe=()=>{if(v.contents||R.contents)return;if(W()!==void 0){Promise.resolve().then(()=>{if(!R.contents&&!v.contents)return G()});return}},de=V=>{let te=f.contents-1,re=W();return(re!==void 0?re.entry.entrySeq>te:!0)?Promise.resolve({TAG:"Ok",_0:void 0}):new Promise((et,ut)=>{let ft={upToSeq:te,resolve:et,timer:void 0};V!==void 0&&(ft.timer=qe(setTimeout(()=>{let Rt=c.indexOf(ft);Rt===-1||c.splice(Rt,1),et({TAG:"Error",_0:"outbox flush for "+i.contents+" timed out after "+V.toString()+"ms with "+(s.contents.length-l.contents|0).toString()+" entries pending"})},V|0))),c.push(ft)})},ze=async V=>{A.contents=!1;let te=await de(V);te.TAG!=="Ok"&&t("outbox_close_flush_timeout",Object.fromEntries([["threadKey",i.contents],["depth",s.contents.length-l.contents|0],["error",te._0]])),R.contents=!0;let re=l.contents;for(;re<s.contents.length;){let ut=s.contents[re];ut!==void 0&&Qe(ut),re=re+1|0}L.contents>0&&await Promise.race([new Promise((ut,ft)=>{K.contents.push(()=>ut())}),F6(1e3)]);let Ke=c.slice();c.splice(0,c.length),Ke.forEach(ut=>{let ft=ut.timer;ft!==void 0&&clearTimeout(ue(ft)),ut.resolve({TAG:"Error",_0:"outbox for "+i.contents+" closed"})});let et=j.contents;if(et!==void 0)return await et.close()},Ct=(V,te,re)=>{if(V===void 0)return re;let Ke=V.coalesce;if(Ke===void 0)return re;let et;try{et={TAG:"Ok",_0:Ke(te.data,re)}}catch(ut){let ft=X(ut);et={TAG:"Error",_0:je(ft)}}return et.TAG==="Ok"?et._0:(t("outbox_coalesce_failed",Object.fromEntries([["threadKey",i.contents],["entrySeq",te.entrySeq],["kind",te.kind],["error",et._0.message]])),re)},on={enqueue:V=>{if(!A.contents)return{TAG:"Error",_0:"outbox for "+i.contents+" is closed"};h.contents=h.contents+1|0;let te=V.coalesceKey,re;if(te!==void 0){let bt=$p(V.kind,te),Et=d.get(bt);if(Et!==void 0)if(Et.state==="EntryQueued")if(Et.outcome!==void 0)re=void 0;else{Et.entry.data=Ct(n[V.kind],Et.entry,V.data);let nd=j.contents;nd!==void 0&&nd.appendCoalesce(Et.entry.entrySeq,Et.entry.data),re=Et.entry.entrySeq}else re=void 0;else re=void 0}else re=void 0;if(re!==void 0)return{TAG:"Ok",_0:re};let Ke=f.contents;f.contents=f.contents+1;let et={entrySeq:Ke,kind:V.kind,data:V.data,coalesceKey:V.coalesceKey,resolution:V.resolution,attempts:0,enqueuedAtMs:o()},ut={entry:et,state:"EntryQueued",outcome:void 0,retryTimer:void 0};s.contents.push(ut);let ft=V.coalesceKey;ft!==void 0&&d.set($p(V.kind,ft),ut);let Rt=j.contents;return Rt!==void 0&&Rt.appendEnqueue(et),Pe(),{TAG:"Ok",_0:Ke}},flush:de,pause:()=>{v.contents=!0},resume:()=>{if(!v.contents)return;v.contents=!1;let V=l.contents;for(;V<s.contents.length;){let te=s.contents[V];te!==void 0&&(te.entry.attempts=0,Qe(te)),V=V+1|0}Pe()},metrics:()=>{let V=W(),te=N(j.contents,re=>re.status());return{depth:s.contents.length-l.contents|0,oldestEntryAgeMs:N(V,re=>Math.max(0,o()-re.entry.enqueuedAtMs)),totalEnqueued:h.contents,totalAcked:m.contents,totalRetried:p.contents,totalDroppedBestEffort:_.contents,totalPermanentFailures:g.contents,totalExpiredOnRecovery:b.contents,totalJournalWriteFailures:w(N(te,re=>re.totalWriteFailures),0),journalDegraded:w(N(te,re=>re.degraded),!1),paused:v.contents,pushLatency:G6(y)}},close:V=>{let te=F.contents;if(te!==void 0)return te;let re=ze(w(V,3e4));return F.contents=re,re},journalSettled:()=>{let V=j.contents;return V!==void 0?V.settled():Promise.resolve()},rekeyJournal:V=>{if(V===i.contents)return;i.contents=V;let te=e.persistDir,re=j.contents;if(te!==void 0&&re!==void 0)return re.rekey(Xv(te,V))}};return Pe(),on}var q6=10*6e4;function L6(e){switch(e){case"collabAgentToolCall":case"commandExecution":case"contextCompaction":case"dynamicToolCall":case"mcpToolCall":case"terminalInput":return!0;default:return!1}}function ps(e){let t=xr(e);return t!==void 0?w(Rr(ue(t)),"unknown error"):"unknown error"}function Sj(e){let t=dj(),r=e.threadKey,n=e.instanceId,i=e.sourceSeqForTurn,o=e.autoRetryAttemptsForSeq,a=e.midStreamResumeAttemptAtMsForSeq,s=e.freshSessionResumeAttemptAtMsForSeq,l=e.ladderHistoryForSeq,d=e.sessionExecutesRecoveryGrants,u=e.linzumiAgentSession,c={threadKey:r,instanceId:n,sourceSeqForTurn:i,autoRetryAttemptsForSeq:o,midStreamResumeAttemptAtMsForSeq:a,freshSessionResumeAttemptAtMsForSeq:s,ladderHistoryForSeq:l,sessionExecutesRecoveryGrants:d,linzumiAgentSession:u},f=[],h=w(e.now,()=>Date.now()),m=new Map,p=new Map,_=new Map,g=new Map,b=new Set,y=w(e.bufferedTurnMaxAgeMs,q6),S=w(e.bufferedTurnMaxEvents,1e4),v=w(e.bufferedTurnSweepIntervalMs,3e4),A={contents:!1},R={contents:!0},F={contents:void 0},j=(U,ae)=>{try{return e.log(U,Object.fromEntries(ae))}catch{return}},ie=U=>t.turns.has(U)?!0:t.bufferedTurns.has(U),L=()=>{t.turns.keys().toArray().forEach(U=>{if(!m.has(U)){m.set(U,h());return}}),m.keys().toArray().forEach(U=>{if(!t.turns.has(U)){m.delete(U);return}}),t.bufferedTurns.keys().toArray().forEach(U=>{if(!p.has(U)){p.set(U,h());return}}),p.keys().toArray().forEach(U=>{if(!t.bufferedTurns.has(U)){p.delete(U),b.delete(U);return}}),_.keys().toArray().forEach(U=>{if(!ie(U)){_.delete(U);return}}),g.keys().toArray().forEach(U=>{if(!ie(U)){g.delete(U);return}})},K=(U,ae)=>{if(ie(U)){_.set(U,{atMs:h(),activityKind:ae});return}},oe=U=>{switch(U.TAG){case"HarnessNotification":let ae=U._0,ce=ae.method;if(ce===ec||ce===Yl)return;let he=Xu(w(ae.params,{})),Ie=he!==void 0?he:Ip(t);return Ie!==void 0?K(Ie,ce):void 0;case"CompletionSnapshot":case"Lifecycle":return}},W=U=>{switch(U.TAG){case"HarnessNotification":let ae=U._0,ce=ae.method;if(ce!=="item/started"&&ce!=="item/completed"&&ce!=="response_item")return;let he=w(ae.params,{}),Ie=Xu(he),Be=Ie!==void 0?Ie:Ip(t);if(Be===void 0||!ie(Be))return;let we=Kl(he);if(we===void 0||we==="")return;if(ce==="item/started"){let Qe=k(Ue(he,"item"),Zt=>E(Zt,"type"));if(Qe===void 0||!L6(Qe))return;let it=g.get(Be),At;if(it!==void 0)At=it;else{let Zt=new Map;g.set(Be,Zt),At=Zt}At.set(we,{kind:Qe,startedAtMs:h()});return}let dt=g.get(Be);if(dt!==void 0){dt.delete(we);return}else return;case"CompletionSnapshot":case"Lifecycle":return}},Z=()=>{if(!R.contents||t.phase!=="running")return!1;let U=h(),ae={contents:!1};return t.bufferedTurns.entries().toArray().forEach(ce=>{let he=ce[0];if(b.has(he))return;let Ie=ce[1],Be=U-w(p.get(he),U),we=Be>y,dt=Ie.length>S;if(we||dt){b.add(he),j("pipeline.loop.buffered_turn_overdue",[["level","warn"],["thread_key",e.threadKey],["turn_id",he],["buffered_event_count",Ie.length],["age_ms",Be],["max_age_ms",y],["max_events",S]]),f.push({TAG:"HarnessNotification",_0:{method:Yl,params:Object.fromEntries([["turnId",he],["reason",dt?"turn source mapping never arrived ("+Ie.length.toString()+" buffered events exceeded the "+S.toString()+" cap)":"turn source mapping never arrived within "+y.toString()+"ms"]])}}),ae.contents=!0;return}}),ae.contents},I=()=>{if(A.contents)return;A.contents=!0;let U=!0;for(;U;){let ae=f.shift();if(ae!==void 0){let ce;try{ce=gj(t,ae,c)}catch(he){let Ie=X(he);j("pipeline.loop.event_processing_failed",[["thread_key",e.threadKey],["source",ql(ae)],["message",ps(Ie)]]),ce=void 0}ce!==void 0&&(L(),oe(ae),W(ae),ce.forEach(he=>{try{switch(he.TAG){case"Enqueue":return e.outboxEnqueue({kind:he.kind,data:he.data,coalesceKey:he.coalesceKey,resolution:he.resolution});case"RequestSnapshot":return e.requestSnapshot(he.turnId);case"TurnTerminal":return e.onTurnTerminal(he.turnId,he.outcome,he.reason,he.retryableEmptyTurn,he.autoResumeMidStreamStall,w(he.freshSessionResumeMidStreamStall,!1),he.fate);case"Log":try{return e.log(he.event,he.fields)}catch{return}}}catch(Ie){let Be=X(Ie),we;switch(he.TAG){case"Enqueue":we="enqueue";break;case"RequestSnapshot":we="requestSnapshot";break;case"TurnTerminal":we="turnTerminal";break;case"Log":we="log";break}return j("pipeline.loop.effect_failed",[["thread_key",e.threadKey],["effect",we],["message",ps(Be)]])}}),Z())}else U=!1}A.contents=!1},fe;if(v>0){let U=setInterval(()=>{if(Z())return I()},v);U.unref(),fe=qe(U)}else fe=void 0;let J=U=>{let ae=g.get(U);return ae!==void 0?ae.values().toArray().map(ce=>({kind:ce.kind,startedAtMs:ce.startedAtMs})):[]};return{submit:U=>{try{return R.contents?(f.push(U),I()):j("pipeline.loop.event_after_drain",[["thread_key",e.threadKey],["source",ql(U)]])}catch(ae){let ce=X(ae);return j("pipeline.loop.submit_failed",[["thread_key",e.threadKey],["message",ps(ce)]])}},metrics:()=>({queueDepth:f.length,phase:t.phase,activeTurns:t.turns.values().toArray().map(U=>({turnId:U.turnId,sourceSeq:U.sourceSeq,startedAtMs:w(m.get(U.turnId),h()),lastActivityAtMs:N(_.get(U.turnId),ae=>ae.atMs),lastActivityKind:N(_.get(U.turnId),ae=>ae.activityKind),openItems:J(U.turnId)})),bufferedTurns:t.bufferedTurns.entries().toArray().map(U=>{let ae=U[0];return{turnId:ae,bufferedEventCount:U[1].length,firstBufferedAtMs:w(p.get(ae),h()),lastActivityAtMs:N(_.get(ae),ce=>ce.atMs),lastActivityKind:N(_.get(ae),ce=>ce.activityKind),openItems:J(ae)}})}),noteTurnActivity:(U,ae)=>{try{return K(U,ae)}catch(ce){let he=X(ce);return j("pipeline.loop.note_activity_failed",[["thread_key",e.threadKey],["message",ps(he)]])}},drainAndClose:U=>{let ae=F.contents;if(ae!==void 0)return ae;let ce=(async()=>{R.contents=!1,fe!==void 0&&clearInterval(ue(fe)),await Promise.resolve(),I();let he;try{he=await e.outboxFlush(U)}catch(Ie){let Be=X(Ie);return j("pipeline.loop.drain_flush_failed",[["thread_key",e.threadKey],["message",ps(Be)]])}if(he.TAG!=="Ok")return j("pipeline.loop.drain_flush_failed",[["thread_key",e.threadKey],["message",he._0]])})();return F.contents=ce,ce}}}var U6=10*6e4,W6={emittedTotalEnqueued:0,emittedTotalAcked:0,emittedTotalRetried:0,emittedTotalDroppedBestEffort:0,emittedTotalPermanentFailures:0,emittedTotalExpiredOnRecovery:0,emittedTotalJournalWriteFailures:0,emittedJournalDegraded:!1};function Z6(e){return e.activeTurns.map(t=>({candidateTurnId:t.turnId,candidateSourceSeq:t.sourceSeq,sinceMs:t.startedAtMs,buffered:!1,candidateLastActivityAtMs:t.lastActivityAtMs,candidateLastActivityKind:t.lastActivityKind,candidateOpenItems:t.openItems})).concat(e.bufferedTurns.map(t=>({candidateTurnId:t.turnId,candidateSourceSeq:void 0,sinceMs:t.firstBufferedAtMs,buffered:!0,candidateLastActivityAtMs:t.lastActivityAtMs,candidateLastActivityKind:t.lastActivityKind,candidateOpenItems:t.openItems})))}function V6(e){return He(e,void 0,(t,r)=>t!==void 0&&t<=r.startedAtMs?t:r.startedAtMs)}function H6(e,t,r){return e.depth>0||e.paused||t.queueDepth>0||t.activeTurns.length!==0||t.bufferedTurns.length!==0||e.totalEnqueued!==r.emittedTotalEnqueued||e.totalAcked!==r.emittedTotalAcked||e.totalRetried!==r.emittedTotalRetried||e.totalDroppedBestEffort!==r.emittedTotalDroppedBestEffort||e.totalPermanentFailures!==r.emittedTotalPermanentFailures||e.totalExpiredOnRecovery!==r.emittedTotalExpiredOnRecovery||e.totalJournalWriteFailures!==r.emittedTotalJournalWriteFailures?!0:e.journalDegraded!==r.emittedJournalDegraded}function B6(e){return He(e,void 0,(t,r)=>t!==void 0&&t.startedAtMs<=r.startedAtMs?t:r)}function Sw(e){return e}function vw(e){return new Set(e).values().toArray().toSorted(bs)}function wj(e){let t=w(e.now,()=>Date.now()),r=w(e.intervalMs,3e4),n=w(e.turnStalledThresholdMs,U6),i={contents:W6},o=new Set,a=new Set,s={contents:!1},l=(c,f,h,m)=>{let p=new Set(c.map(_=>_.candidateTurnId));o.values().toArray().forEach(_=>{if(!p.has(_)){o.delete(_);return}}),a.values().toArray().forEach(_=>{if(!p.has(_)){a.delete(_);return}}),c.forEach(_=>{let g=Math.max(0,m-_.sinceMs),b=Math.max(_.sinceMs,w(_.candidateLastActivityAtMs,_.sinceMs)),y=Math.max(0,m-b),S=vw(h.filter(F=>F.waitTurnId===_.candidateTurnId).map(F=>F.waitKind));if(S.length===0){a.delete(_.candidateTurnId);let F=_.candidateOpenItems.length!==0?n*2:n;if(!(y>=F&&!o.has(_.candidateTurnId)))return;let j=V6(_.candidateOpenItems);o.add(_.candidateTurnId);let ie=_.candidateSourceSeq,L=_.candidateLastActivityKind,K=_.candidateLastActivityAtMs,oe=f.oldestEntryAgeMs;return e.log("pipeline.turn_stalled",Object.fromEntries([["level","warn"],["thread_key",e.threadKey],["turn_id",_.candidateTurnId],["source_seq",ie!==void 0?ie:null],["buffered",_.buffered],["turn_age_ms",g],["quiet_ms",y],["last_activity_kind",L!==void 0?L:null],["last_activity_age_ms",K!==void 0?Math.max(0,m-K):null],["threshold_ms",n],["effective_threshold_ms",F],["open_item_count",_.candidateOpenItems.length],["open_item_kinds",vw(_.candidateOpenItems.map(W=>W.kind)).map(Sw)],["open_item_oldest_age_ms",j!==void 0?Math.max(0,m-j):null],["outbox_depth",f.depth],["oldest_entry_age_ms",oe!==void 0?oe:null],["paused",f.paused]]))}if(!(y>=n&&!a.has(_.candidateTurnId)))return;a.add(_.candidateTurnId);let v=_.candidateSourceSeq,A=_.candidateLastActivityKind,R=_.candidateLastActivityAtMs;e.log("pipeline.turn_waiting_on_user",Object.fromEntries([["thread_key",e.threadKey],["turn_id",_.candidateTurnId],["source_seq",v!==void 0?v:null],["buffered",_.buffered],["turn_age_ms",g],["quiet_ms",y],["last_activity_kind",A!==void 0?A:null],["last_activity_age_ms",R!==void 0?Math.max(0,m-R):null],["threshold_ms",n],["wait_kinds",S.map(Sw)],["open_item_count",_.candidateOpenItems.length],["open_item_kinds",vw(_.candidateOpenItems.map(F=>F.kind)).map(Sw)]]))})},d=()=>{if(s.contents)return;let c;try{let S=e.turnWaitStates;c=[e.outboxMetrics(),e.loopMetrics(),S!==void 0?S():[]]}catch(S){let v=X(S);e.log("pipeline.stats_sample_failed",Object.fromEntries([["thread_key",e.threadKey],["message",ps(v)]])),c=void 0}if(c===void 0)return;let f=c[1],h=c[0],m=t();if(l(Z6(f),h,c[2],m),!H6(h,f,i.contents))return;let p=B6(f.activeTurns),_=h.oldestEntryAgeMs,g=h.pushLatency,b=h.pushLatency,y=h.pushLatency;e.log("pipeline.stats",Object.fromEntries([["thread_key",e.threadKey],["outbox_depth",h.depth],["oldest_entry_age_ms",_!==void 0?_:null],["total_enqueued",h.totalEnqueued],["total_acked",h.totalAcked],["total_retried",h.totalRetried],["total_dropped_best_effort",h.totalDroppedBestEffort],["total_permanent_failures",h.totalPermanentFailures],["total_expired_on_recovery",h.totalExpiredOnRecovery],["total_journal_write_failures",h.totalJournalWriteFailures],["journal_degraded",h.journalDegraded],["push_latency_p50_ms",g!==void 0?g.p50Ms:null],["push_latency_p95_ms",b!==void 0?b.p95Ms:null],["push_latency_max_ms",y!==void 0?y.maxMs:null],["push_latency_window_acked",w(N(h.pushLatency,S=>S.ackedInWindow),0)],["paused",h.paused],["loop_queue_depth",f.queueDepth],["loop_phase",f.phase],["active_turn_count",f.activeTurns.length],["buffered_turn_count",f.bufferedTurns.length],["active_turn_id",p!==void 0?p.turnId:null],["active_turn_source_seq",p!==void 0?p.sourceSeq:null],["active_turn_age_ms",p!==void 0?Math.max(0,m-p.startedAtMs):null]])),i.contents={emittedTotalEnqueued:h.totalEnqueued,emittedTotalAcked:h.totalAcked,emittedTotalRetried:h.totalRetried,emittedTotalDroppedBestEffort:h.totalDroppedBestEffort,emittedTotalPermanentFailures:h.totalPermanentFailures,emittedTotalExpiredOnRecovery:h.totalExpiredOnRecovery,emittedTotalJournalWriteFailures:h.totalJournalWriteFailures,emittedJournalDegraded:h.journalDegraded}},u;if(r>0){let c=setInterval(d,r);c.unref(),u=qe(c)}else u=void 0;return{sample:d,stop:()=>{if(s.contents=!0,u!==void 0){clearInterval(ue(u));return}}}}var J6=[1e3,5e3];function oi(e,t){return k(e[t],Cr)}function Zi(e,t){return k(e[t],Sa)}function Xl(e,t){return k(e[t],Oe)}function ww(e,t){Object.entries(t).forEach(r=>{e[r[0]]=r[1]})}function rc(e){let t={};return ww(t,e),t}function Y6(e){let t=e.body;return typeof t=="string"?t:""}function X6(e){return w(Xl(e,"structured"),{})}function Q6(e){return e===Ul||e===Wl||e===Qo?!0:e===Zl}function e5(e,t){let r=oi(t,"turn_id");r!==void 0&&(e.turn_id=r);let n=oi(t,"item_key");n!==void 0&&(e.item_key=n);let i=Zi(t,"delta_index");i!==void 0&&(e.delta_index=i);let o=Zi(t,"stream_snapshot_index");if(o!==void 0){e.stream_snapshot_index=o;return}}function Tj(e,t,r){let n=t.traceparentForThread(r);if(n!==void 0){e.traceparent=n;return}}function t5(e){return{build:(t,r)=>{let n=e.wire(),i=n.threadId,o=n.harnessSessionId;if(i===void 0)return{TAG:"BuildSkip",_0:"session_thread_unbound"};if(o===void 0)return{TAG:"BuildSkip",_0:"session_thread_unbound"};let a=oi(t,"client_message_id");if(a===void 0)return{TAG:"BuildSkip",_0:"missing_client_message_id"};let s=oi(t,"turn_id"),l=Zi(t,"source_seq"),d={};s!==void 0&&(d.turn_id=s),d.stream_key=a;let u=rc(d),c=Xl(t,"local_runner_runtime_metadata");c!==void 0&&ww(u,c);let f=rc(e.rowEnvelope("codex_output",o,l,u)),h=n.rootSeq;h!==void 0&&(f.reply_to_seq=h),l!==void 0&&(f.source_message_seq=l),ww(f,d);let m=rc(X6(t));m.stream_key=a,f.structured=m;let p={};p.workspace=n.workspaceSlug,p.channel=n.channelSlug,p.thread_id=i,p.stream_key=a;let _=n.leaseEpoch;return _!==void 0&&(p.lease_epoch=_),p.body=Y6(t),p.payload=f,p.client_message_id=a,e5(p,t),Tj(p,e,i),{TAG:"BuildPush",event:"session:stream_thread_message",payload:p,timeoutMs:void 0}},onReply:void 0,coalesce:void 0}}function r5(e){return{build:(t,r)=>{let n=e.wire(),i=n.threadId;if(i===void 0)return{TAG:"BuildSkip",_0:"session_thread_unbound"};let o=Zi(t,"seq"),a=oi(t,"status");if(o===void 0)return{TAG:"BuildSkip",_0:"malformed_message_state_entry"};if(a===void 0)return{TAG:"BuildSkip",_0:"malformed_message_state_entry"};let s=se(t.suppress_terminal_for_recovered_turn,!0),l=oi(t,"turn_id"),d=e.isRecoveredTurn,u=l!==void 0&&d!==void 0?d(l)===!0:!1;if(s||u)return{TAG:"BuildSkip",_0:"terminal_for_recovered_turn"};let c={};c.workspace=n.workspaceSlug,c.channel=n.channelSlug,c.thread_id=i,c.instance_id=e.instanceId;let f=n.harnessSessionId;f!==void 0&&(c.codex_thread_id=f),c.seq=o,c.status=a;let h=oi(t,"reason");h!==void 0&&(c.reason=h);let m=t.retryable;typeof m=="boolean"&&m&&(c.retryable=!0);let p=t.fate;typeof p=="string"&&qt(gp(p))&&(c.fate=p);let _=Xl(t,"ladder");_!==void 0&&(c.ladder=_),t.failure_class==="edge_blocked"&&(c.failure_class="edge_blocked");let b=oi(t,"upstream_error");b!==void 0&&(c.upstream_error=b);let y=oi(t,"turn_id");y!==void 0&&(c.turn_id=y);let S=n.leaseEpoch;return S!==void 0&&(c.lease_epoch=S),Tj(c,e,i),{TAG:"BuildPush",event:"message_state",payload:c,timeoutMs:void 0}},onReply:void 0,coalesce:void 0}}function n5(e){return{build:(t,r)=>{let n=Zi(t,"session_id");if(n!==void 0&&tR(n))return{TAG:"BuildSkip",_0:"adt_generation_fenced"};let i={},o=a=>{i[a]=w(t[a],null)};return o("session_id"),o("lease_epoch"),o("frame_index"),o("frame_kind"),o("body"),o("byte_len"),{TAG:"BuildPush",event:nR,payload:i,timeoutMs:void 0}},onReply:(t,r,n)=>{let i;if(typeof r=="object"&&r!==null&&!Array.isArray(r)){let c=r.status,f=r.response;i=typeof c=="string"&&typeof f=="object"&&f!==null&&!Array.isArray(f)?f:r}else i=void 0;let o;if(i!==void 0){let c=i.adt;o=typeof c=="object"&&c!==null&&!Array.isArray(c)?c:void 0}else o=void 0;if(o===void 0)return;let a=Zi(t,"session_id"),s=(c,f)=>{let h=e.log;if(h!==void 0)return h(c,Object.fromEntries(f))},l=c=>c!==void 0?c:null;if(o.accepted===!1){let c=HP(o.reason);if(s("adt.append_rejected",[["session_id",l(a)],["presented_epoch",l(Zi(t,"lease_epoch"))],["frame_index",l(Zi(t,"frame_index"))],["reason",VS(c)]]),a===void 0)return;eR(a);let f=k(e.wire().threadId,HS);return f!==void 0&&f.binding.sessionId===a&&KP(f.emitter),s("adt.generation_fenced",[["session_id",a],["reason",VS(c)]])}if(o.duplicate===!0)return s("adt.frame_resend_accepted",[["session_id",l(a)],["frame_index",l(Zi(t,"frame_index"))]])},coalesce:void 0}}function i5(e){let t=t5(e);return Object.fromEntries([[Ul,t],[Wl,t],[Qo,t],[Zl,t],[ea,r5(e)],[BS,n5(e)]])}function Aj(e,t){if(e.error!==void 0)return[];let n=k(Xl(e,"result"),a=>Xl(a,"thread")),i=w(k(k(n,a=>a.turns),to),[]),o=Ge(i,Oe).find(a=>{let s=a.id;return typeof s=="string"?s===t:!1});return Ge(w(k(k(o,a=>a.items),to),[]),Oe)}var gie=new RegExp("^item-\\d+$");var Oj=D$;function o5(e){return new Promise((t,r)=>{setTimeout(()=>t(),e|0)})}function kj(e){let t=xr(e);return t!==void 0?w(Rr(ue(t)),"unknown error"):"unknown error"}function xj(e){return e!==void 0?e:null}function Cj(e){let t=i5({instanceId:e.instanceId,wire:e.wire,rowEnvelope:e.rowEnvelope,isRecoveredTurn:e.isRecoveredTurn,traceparentForThread:e.traceparentForThread,log:e.log}),r=bj({threadKey:e.threadKey,push:e.push,builders:t,persistDir:e.persistDir,retryDelaysMs:N(e.outboxRetryDelaysMs,p=>p.slice()),onPermanentFailure:(p,_)=>e.log("pipeline.outbox_entry_failed",Object.fromEntries([["thread_key",e.threadKey],["entry_seq",p.entrySeq],["kind",p.kind],["attempts",p.attempts],["item_key",xj(oi(p.data,"item_key"))],["turn_id",xj(oi(p.data,"turn_id"))],["message",_]])),log:e.log,now:void 0,maxInFlightPushes:w(e.outboxMaxInFlightPushes,16),journalCompactionThreshold:void 0,journalRecoveryMaxAgeMs:e.journalRecoveryMaxAgeMs}),n=p=>{let _=!1;if(p.kind===ea){let v=oi(p.data,"turn_id"),A=e.isRecoveredTurn;_=v!==void 0&&A!==void 0?A(v)===!0:!1}if(_){let v=rc(p.data);return v.suppress_terminal_for_recovered_turn=!0,{kind:p.kind,data:v,coalesceKey:p.coalesceKey,resolution:p.resolution}}if(!Q6(p.kind))return p;let g=Zi(p.data,"source_seq"),b=Xl(p.data,"local_runner_runtime_metadata"),y=b!==void 0?b:k(e.runtimeMetadataForSourceSeq,v=>v(g));if(y===void 0)return p;let S=rc(p.data);return S.local_runner_runtime_metadata=y,{kind:p.kind,data:S,coalesceKey:p.coalesceKey,resolution:p.resolution}},i=p=>{let _=r.enqueue(n(p));if(_.TAG!=="Ok")try{return e.log("pipeline.loop.effect_failed",Object.fromEntries([["thread_key",e.threadKey],["effect","enqueue"],["message",_._0]]))}catch{return}},o={postStreamedRow:Ul,streamSnapshot:Wl,finalizeRow:Qo,postCompletedRow:Zl,messageState:ea},a=p=>{let _=r.enqueue({kind:BS,data:VP(p),coalesceKey:void 0,resolution:"MustAck"});if(_.TAG!=="Ok")try{return e.log("pipeline.loop.effect_failed",Object.fromEntries([["thread_key",e.threadKey],["effect","enqueue"],["message",_._0]]))}catch{return}},s=p=>{let _=e.wire().threadId,g=k(_,HS);if(g===void 0)return i(p);let b=YP(g,p.kind,p.data,Date.now(),o);if(p.kind===ea)return b.forEach(a),i(p),g.done&&_!==void 0?QP(_,g):void 0;i(p),b.forEach(a)},l={contents:void 0},d=p=>{let _=l.contents;if(_!==void 0)return _.submit(p)},u=w(e.sleep,o5),c=async p=>{let _=w(e.snapshotRetryDelaysMs,J6),g=0,b=!1;for(;!b;){let y;try{y=await e.resolveSnapshot(p)}catch(S){let v=X(S);y={TAG:"Error",_0:kj(v)}}if(y.TAG==="Ok")d({TAG:"CompletionSnapshot",turnId:p,snapshot:Object.fromEntries([["items",y._0.slice()]])}),b=!0;else{let S=y._0,v=_[g];e.log("pipeline.snapshot_resolution_failed",Object.fromEntries([["thread_key",e.threadKey],["turn_id",p],["attempt",g+1|0],["retry_in_ms",v!==void 0?v:null],["message",S]])),v!==void 0?(await u(v),g=g+1|0):(d({TAG:"HarnessNotification",_0:{method:"turn/failed",params:Object.fromEntries([["turnId",p],["reason","completion snapshot resolution failed: "+S]])}}),b=!0)}}},f=Sj({threadKey:e.threadKey,instanceId:e.instanceId,outboxEnqueue:s,outboxFlush:p=>r.flush(p),sourceSeqForTurn:e.sourceSeqForTurn,autoRetryAttemptsForSeq:e.autoRetryAttemptsForSeq,midStreamResumeAttemptAtMsForSeq:e.midStreamResumeAttemptAtMsForSeq,freshSessionResumeAttemptAtMsForSeq:e.freshSessionResumeAttemptAtMsForSeq,ladderHistoryForSeq:e.ladderHistoryForSeq,sessionExecutesRecoveryGrants:e.sessionExecutesRecoveryGrants,onTurnTerminal:e.onTurnTerminal,requestSnapshot:p=>{Dn(c(p),_=>(e.log("pipeline.snapshot_request_failed",Object.fromEntries([["thread_key",e.threadKey],["turn_id",p],["message",kj(_)]])),Promise.resolve()))},log:e.log,linzumiAgentSession:e.linzumiAgentSession===!0,now:void 0,bufferedTurnMaxAgeMs:void 0,bufferedTurnMaxEvents:void 0,bufferedTurnSweepIntervalMs:void 0});l.contents=f;let h=wj({threadKey:e.threadKey,outboxMetrics:()=>r.metrics(),loopMetrics:()=>f.metrics(),log:e.log,intervalMs:e.statsIntervalMs,turnStalledThresholdMs:e.turnStalledThresholdMs,turnWaitStates:e.turnWaitStates,now:void 0}),m={contents:void 0};return{submitNotification:(p,_)=>f.submit({TAG:"HarnessNotification",_0:{method:p,params:_}}),notifyTurnMappingReady:p=>f.submit({TAG:"HarnessNotification",_0:{method:ec,params:Object.fromEntries([["turnId",p]])}}),notifyTurnMappingFailed:(p,_)=>f.submit({TAG:"HarnessNotification",_0:{method:Yl,params:Object.fromEntries([["turnId",p],["reason",_]])}}),noteTurnActivity:(p,_)=>f.noteTurnActivity(p,_),submitLifecycle:(p,_)=>f.submit({TAG:"Lifecycle",kind:p,reason:_}),pause:()=>r.pause(),resume:()=>r.resume(),rebindThreadKey:p=>r.rekeyJournal(p),flushOutbox:p=>r.flush(p),metrics:()=>r.metrics(),close:p=>{let _=m.contents;if(_!==void 0)return _;let g=(async()=>(h.stop(),f.submit({TAG:"Lifecycle",kind:"shutdown",reason:"session closed"}),await f.drainAndClose(p),await r.close(p)))();return m.contents=g,g}}}function Mp(e){return e.split("_").map((t,r)=>r!==0?t.slice(0,1).toUpperCase()+t.slice(1,t.length):t).join("")}function nc(e){return w(N(Dm.find(t=>t[0]===e),t=>t[1]),e)}var qn=nc("harness_session_id"),_s=Mp(qn);function Vi(e,t){let r=e[t];if(typeof r=="string")return r}function kw(e,t){let r=e[t];if(r!==void 0)switch(typeof r){case"string":return r;case"number":return isFinite(r)?r.toString():void 0;default:return}}function s5(e,t){let r=k(t.error,Oe),n=k(t.item,Oe),i=d=>He(d,void 0,(u,c)=>u!==void 0?u:c),o=i([kw(t,"code"),k(r,d=>kw(d,"code")),kw(t,"status")]),a=i([Vi(t,"message"),Vi(t,"detail"),Vi(t,"reason"),k(r,d=>Vi(d,"message")),k(r,d=>Vi(d,"detail")),k(r,d=>Vi(d,"reason"))]),s=o!==void 0?e+" "+o:e,l=a!==void 0?a:N(k(n,d=>Vi(d,"type")),d=>"item.type="+d);return N(l,d=>s+": "+d)}function l5(e,t){switch(e){case"error":case"warning":break;default:return t}let r=s5(e,t);if(r===void 0)return t;let n={};return Object.entries(t).forEach(i=>{n[i[0]]=i[1]}),n.diagnostic_summary=r,n.diagnostic_payload=t,n.diagnostic_payload_keys=Object.keys(t).toSorted(bs).map(i=>i),n}var d5=["When you create files that should be attached back to Linzumi, use the linzumi_upload_files MCP tool silently.","Do not mention that you are using the upload tool. Do not print an upload manifest or upload footer in the message.","The MCP upload tool is the only supported path for attaching generated files to Linzumi messages."];function Ej(e){let t=aM(e);return t.trimStart().startsWith("!")?t:[t,""].concat(d5).join(`
391
+ `),structured:Ku("codex_reasoning",r,[["content",W],["summary_parts",Z.map(X9)]])}];case"terminalInput":let fe=ht(e,"inputText"),J;if(fe!==void 0)J=fe;else{let U=ht(e,"input");J=U!==void 0?U:w(ht(e,"text"),"")}return[{body:J,structured:Ku("codex_terminal_input",r,[["process_id",w(E(e,"processId"),"")],["input_text",J]])}];default:return[]}}var VM=kM;var Hl={cwd:void 0,status:void 0,processId:void 0,durationMs:void 0,exitCode:void 0,stream:void 0};function fs(e){let t=e!==void 0?e:"";return t===""?{parts:[],cached:"",joinedCount:0}:{parts:[t],cached:t,joinedCount:1}}function cw(e,t){t!==""&&e.parts.push(t)}function fw(e){if(e.joinedCount===e.parts.length)return e.cached;let t=e.cached;for(let r=e.joinedCount,n=e.parts.length;r<n;++r)t=t+e.parts[r];return e.cached=t,e.joinedCount=e.parts.length,t}function _J(e){switch(e.TAG){case"AssistantContent":return"assistant";case"ReasoningContent":return"reasoning";case"CommandOutputContent":return"commandOutput";case"FileChangeContent":return"fileChange";case"TerminalInputContent":return"terminalInput";case"WebSearchContent":return"webSearch";case"AgentStatusContent":return"agentStatus";case"AgentTaskUpdateContent":return"agentTaskUpdate"}}function Bl(e){switch(e.TAG){case"AssistantDelta":return"assistant";case"ReasoningDelta":return"reasoning";case"CommandOutputDelta":return"commandOutput";case"FileChangeDelta":return"fileChange";case"TerminalInputDelta":return"terminalInput";case"WebSearchDelta":return"webSearch"}}function HM(e){return e.itemId}function Kl(e){let t=E(e,"itemId");if(t!==void 0)return t;let r=E(e,"item_id");return r!==void 0?r:k(Ue(e,"item"),n=>E(n,"id"))}function BM(e,t){let r=Kl(t);switch(e){case"item/agentMessage/delta":return N(kp(t),n=>({TAG:"AssistantDelta",itemId:r,text:n}));case"command/exec/outputDelta":case"item/commandExecution/outputDelta":break;case"item/commandExecution/terminalInteraction":return N(LM(t),n=>({TAG:"TerminalInputDelta",itemId:r,processId:n.terminalProcessId,inputText:n.inputText}));case"item/fileChange/outputDelta":return N(UM(t),n=>({TAG:"FileChangeDelta",itemId:r,patchText:n}));case"item/reasoning/textDelta":return N(kp(t),n=>({TAG:"ReasoningDelta",itemId:r,text:n}));case"item/started":return N(uw(t),n=>({TAG:"WebSearchDelta",itemId:r,queries:n.queries}));default:return}return N(qM(t),n=>({TAG:"CommandOutputDelta",itemId:r,processId:n.commandProcessId,command:n.command,stream:n.stream,text:n.commandDelta}))}function KM(e){switch(e){case"assistant":return{TAG:"AssistantContent",text:fs(void 0)};case"reasoning":return{TAG:"ReasoningContent",text:fs(void 0)};case"commandOutput":return{TAG:"CommandOutputContent",command:"",processId:void 0,chunks:[]};case"fileChange":return{TAG:"FileChangeContent",patchText:fs(void 0),status:"started"};case"terminalInput":return{TAG:"TerminalInputContent",processId:void 0,inputText:""};case"webSearch":return{TAG:"WebSearchContent",queries:[]};case"agentStatus":return{TAG:"AgentStatusContent",_0:{title:"Agent status",body:void 0,severity:"info",provider:void 0,occurredAtMs:void 0,rawProviderMetadata:void 0}};case"agentTaskUpdate":return{TAG:"AgentTaskUpdateContent",_0:{title:"Agent task",body:void 0,state:"unknown",progressLabel:void 0,provider:void 0,occurredAtMs:void 0,rawProviderMetadata:void 0}}}}function gJ(e,t){return He(t,e.slice(),(r,n)=>r.includes(n)?r:r.concat([n]))}function JM(e,t){if(_J(e)!==Bl(t))return e;switch(e.TAG){case"AssistantContent":return t.TAG!=="AssistantDelta"||cw(e.text,t.text),e;case"ReasoningContent":return t.TAG!=="ReasoningDelta"||cw(e.text,t.text),e;case"CommandOutputContent":if(t.TAG!=="CommandOutputDelta")return e;let r=t.command,n=t.processId,i=e.command;return{TAG:"CommandOutputContent",command:r!==void 0&&r.trim()!==""?r:i,processId:n!==void 0?n:e.processId,chunks:e.chunks.concat([{stream:t.stream,text:t.text}])};case"FileChangeContent":return t.TAG!=="FileChangeDelta"||cw(e.patchText,t.patchText),e;case"TerminalInputContent":if(t.TAG!=="TerminalInputDelta")return e;let o=t.processId;return{TAG:"TerminalInputContent",processId:o!==void 0?o:e.processId,inputText:t.inputText};case"WebSearchContent":return t.TAG==="WebSearchDelta"?{TAG:"WebSearchContent",queries:gJ(e.queries,t.queries)}:e;case"AgentStatusContent":case"AgentTaskUpdateContent":return e}}function yJ(e){return e.map(t=>t.text).join("")}function YM(e){let t=E(e,"type");if(t!==void 0)switch(t){case"agentMessage":return"assistant";case"agentStatus":return"agentStatus";case"agentTaskUpdate":return"agentTaskUpdate";case"commandExecution":return"commandOutput";case"fileChange":case"file_change":return"fileChange";case"message":return E(e,"role")==="assistant"?"assistant":void 0;case"reasoning":return"reasoning";case"terminalInput":return"terminalInput";case"webSearch":case"webSearchCall":case"web_search_call":return"webSearch";default:return}}function XM(e){let t=uw(e);if(t!==void 0)return{completedStreamKind:"webSearch",completedItemId:Kl(e),completedContent:{TAG:"WebSearchContent",queries:t.queries}};let r=w(Ue(e,"item"),e),n=ZM(e);if(n!==void 0){let s=E(r,"call_id");return{completedStreamKind:"fileChange",completedItemId:s!==void 0?s:E(r,"id"),completedContent:{TAG:"FileChangeContent",patchText:fs(n),status:"completed"}}}let i=YM(r);if(i===void 0)return;let o=xp(r,0)[0];if(o===void 0)return;let a=E(r,"id");switch(i){case"assistant":return{completedStreamKind:i,completedItemId:a,completedContent:{TAG:"AssistantContent",text:fs(w(E(o.structured,"content"),o.body))}};case"reasoning":return{completedStreamKind:i,completedItemId:a,completedContent:{TAG:"ReasoningContent",text:fs(w(E(o.structured,"content"),o.body))}};case"commandOutput":let s=Pr(o.structured,"output"),l;return l=typeof s=="string"?s:"",{completedStreamKind:i,completedItemId:a,completedContent:{TAG:"CommandOutputContent",command:w(E(o.structured,"command"),""),processId:E(o.structured,"process_id"),chunks:[{stream:"",text:l}]}};case"fileChange":return{completedStreamKind:i,completedItemId:a,completedContent:{TAG:"FileChangeContent",patchText:fs(w(E(o.structured,"patch_text"),o.body)),status:"completed"}};case"terminalInput":return{completedStreamKind:i,completedItemId:a,completedContent:{TAG:"TerminalInputContent",processId:E(o.structured,"process_id"),inputText:w(E(o.structured,"input_text"),o.body)}};case"webSearch":return;case"agentStatus":return{completedStreamKind:i,completedItemId:a,completedContent:{TAG:"AgentStatusContent",_0:{title:w(E(o.structured,"title"),o.body),body:E(o.structured,"body"),severity:tw(Pr(o.structured,"severity")),provider:E(o.structured,"agent_provider"),occurredAtMs:cs(o.structured,"occurred_at_ms"),rawProviderMetadata:Ue(o.structured,"raw_provider_metadata")}}};case"agentTaskUpdate":return{completedStreamKind:i,completedItemId:a,completedContent:{TAG:"AgentTaskUpdateContent",_0:{title:w(E(o.structured,"title"),o.body),body:E(o.structured,"body"),state:rw(Pr(o.structured,"state")),progressLabel:E(o.structured,"progress_label"),provider:E(o.structured,"agent_provider"),occurredAtMs:cs(o.structured,"occurred_at_ms"),rawProviderMetadata:Ue(o.structured,"raw_provider_metadata")}}}}}function Jl(e,t,r){switch(t.TAG){case"AssistantContent":let n=fw(t.text);return{renderedBody:n,renderedStructured:jM(e,n,r)};case"ReasoningContent":let i=fw(t.text);return{renderedBody:i,renderedStructured:zM(e,i,r)};case"CommandOutputContent":let o=t.chunks,a=o[o.length-1|0],s=ow(e,t.command,yJ(o),{cwd:Hl.cwd,status:Hl.status,processId:t.processId,durationMs:Hl.durationMs,exitCode:Hl.exitCode,stream:w(N(a,y=>y.stream),"")},r),l=w(E(s,"command"),""),d=Pr(s,"output");return{renderedBody:nw(l,typeof d=="string"?d:""),renderedStructured:s};case"FileChangeContent":let c=fw(t.patchText),f;return f=r==="completed"||t.status!=="started"?"completed":"started",{renderedBody:c,renderedStructured:aw(e,c,r,f)};case"TerminalInputContent":let h=t.inputText;return{renderedBody:h,renderedStructured:Object.fromEntries([["kind","codex_terminal_input"],["item_id",e],["transcript_unit_id","codex_terminal_input:"+e],["stream_state",VM(r)],["process_id",w(t.processId,"")],["input_text",h]])};case"WebSearchContent":let m=t.queries;return{renderedBody:sw(m),renderedStructured:FM(e,m,r)};case"AgentStatusContent":let p=t._0,_=Yu(p.body);return{renderedBody:Ju(p.title,_),renderedStructured:lw(e,{title:p.title,body:_,severity:p.severity,provider:p.provider,occurredAtMs:p.occurredAtMs,rawProviderMetadata:p.rawProviderMetadata},r)};case"AgentTaskUpdateContent":let g=t._0,b=Yu(g.body);return{renderedBody:Ju(g.title,b!==void 0?b:g.progressLabel),renderedStructured:dw(e,{title:g.title,body:b,state:g.state,progressLabel:g.progressLabel,provider:g.provider,occurredAtMs:g.occurredAtMs,rawProviderMetadata:g.rawProviderMetadata},r)}}}function QM(e){return e.flatMap((t,r)=>{let n=Oe(t);if(n===void 0)return[];let i=YM(n);return i!==void 0?i==="webSearch"?[]:xp(n,r).filter(o=>o.body.trim()!=="").map(o=>({snapshotIndex:r,projItemId:E(n,"id"),projStreamKind:i,projBody:o.body,projStructured:o.structured})):[]})}function mw(e,t){let r=w(E(e,"kind"),"codex_output"),n=Object.assign({},e);return n.item_id=t,n.transcript_unit_id=r+":"+t,n}function pw(e,t,r,n){if(r==="webSearch")return"local-codex-search-"+_n(e+":"+t+":web-search").slice(0,32);let i;switch(r){case"reasoning":i="reasoning:";break;case"commandOutput":i="command:";break;case"fileChange":i="file-change:";break;case"terminalInput":i="terminal:";break;case"assistant":case"webSearch":i="";break;case"agentStatus":i="agent-status:";break;case"agentTaskUpdate":i="agent-task:";break}return"local-codex-stream-"+_n(e+":"+t+":"+i+n).slice(0,32)}function Xu(e){let t=Ue(e,"turn"),r=Ue(e,"item"),n=k(r,d=>Ue(d,"turn")),i=k(t,d=>E(d,"id"));if(i!==void 0)return i;let o=E(e,"turnId");if(o!==void 0)return o;let a=E(e,"turn_id");if(a!==void 0)return a;let s=k(r,d=>E(d,"turnId"));if(s!==void 0)return s;let l=k(r,d=>E(d,"turn_id"));return l!==void 0?l:k(n,d=>E(d,"id"))}function xi(e){return e!==void 0?e:null}var ec="pipeline/turnMappingReady",Yl="pipeline/turnMappingFailed",tj="Codex completed without producing a response.",bJ="linzumi_agent_reply",SJ="The agent ended its turn after narrating an intent without posting a reply or taking any action.",vJ="agent narrated intent but posted no reply and took no action",wJ="Stopped after repeated empty responses in a row";function kJ(e){return"The model appears stuck in a loop - stopped after "+e.toString()+" reasoning steps with no output or tool call (retry to try again)."}var aj="Codex emitted unsupported tool call";function xJ(e){return e!==void 0?e.startsWith(aj):!1}function rj(e){switch(e){case"assistant":case"reasoning":case"webSearch":return!1;default:return!0}}function TJ(e){if(e===void 0)return;let t=E(e,"type"),r=0;if(t!==void 0){switch(t){case"collabAgentToolCall":case"dynamicToolCall":case"mcpToolCall":r=1;break;default:return}if(r===1){if(!se(E(e,"status"),"completed"))return;let n=Pr(e,"error"),i=0;if(n!==void 0){if(n!==null)return;i=2}else i=2;if(i===2){let o=Pr(e,"success"),a=0;if(typeof o=="boolean"){if(!o)return;a=3}else a=3;if(a===3){let s=w(E(e,"tool"),""),l=s.split("__");return w(l[l.length-1|0],s)===bJ?"ReplyEvidence":"ActionEvidence"}}}}}function sj(e,t){let r=TJ(t);if(r!==void 0){r==="ReplyEvidence"?e.agentReplyToolCallSeen=!0:e.agentActionToolCallSeen=!0;return}}function AJ(e){let t="unsupported call:";if(e===void 0)return;let r=e.trim();if(!r.toLowerCase().startsWith(t))return;let n=r.slice(t.length).trim();return n===""?"unknown":n}function lj(e){if(e===void 0)return;let t=E(e,"codex_protocol_failure_reason"),r=t!==void 0?t:E(e,"protocolFailureReason");if(r!==void 0)return r;let n=E(e,"type");if(n===void 0)return;switch(n){case"custom_tool_call_output":case"function_call_output":break;default:return}let i=E(e,"output"),o;if(i!==void 0)o=i;else{let a=E(e,"result");if(a!==void 0)o=a;else{let s=E(e,"text");o=s!==void 0?s:E(e,"content")}}return N(AJ(o),a=>aj+": "+a)}function OJ(e){return He(e,void 0,(t,r)=>t!==void 0?t:lj(Oe(r)))}function dj(){return{phase:"running",turns:new Map,terminalTurnIds:new Set,bufferedTurns:new Map,consecutiveEmptyTurns:0,lastUpstreamErrorSummary:void 0,consecutiveIsolatedRejections:0,costCap402Seen:!1}}function CJ(e){switch(e){case"turn/aborted":case"turn/canceled":case"turn/cancelled":return"interrupted";case"turn/failed":return"failed";default:return}}function EJ(e){switch(e){case"command/exec/outputDelta":case"error":case"item/agentMessage/delta":case"item/commandExecution/outputDelta":case"item/commandExecution/terminalInteraction":case"item/completed":case"item/fileChange/outputDelta":case"item/reasoning/textDelta":case"item/started":case"response_item":case"turn/aborted":case"turn/canceled":case"turn/cancelled":case"turn/completed":case"turn/failed":case"turn/started":return!0;default:return!1}}function PJ(e){switch(e){case"command/exec/outputDelta":case"item/agentMessage/delta":case"item/commandExecution/outputDelta":case"item/commandExecution/terminalInteraction":case"item/completed":case"item/fileChange/outputDelta":case"item/reasoning/textDelta":case"item/started":case"response_item":return!0;default:return!1}}var RJ=new RegExp("<[^>]*>","g"),IJ=new RegExp(`data:[^"' )]+`,"g"),$J=new RegExp("\\s+","g");function ra(e){if(e===void 0)return;let t=e.replace(RJ," ").replace(IJ,"").replace($J," ").trim().slice(0,180);if(t!=="")return t}function ta(e){if(e!==void 0&&typeof e=="number"&&isFinite(e))return e}function Pp(e){let t=k(Ue(e,"diagnostic_payload"),o=>Ue(o,"error")),r=k(t,o=>Ue(o,"codexErrorInfo")),n=k(r,o=>Ue(o,"responseStreamDisconnected")),i=[ta(k(n,o=>Pr(o,"httpStatusCode"))),ta(k(r,o=>Pr(o,"httpStatusCode"))),ta(k(r,o=>Pr(o,"statusCode"))),ta(k(r,o=>Pr(o,"status"))),ta(k(t,o=>Pr(o,"httpStatusCode"))),ta(k(t,o=>Pr(o,"statusCode"))),ta(k(t,o=>Pr(o,"status")))];return He(i,void 0,(o,a)=>o!==void 0?o:a)}function MJ(e){let t=E(e,"diagnostic_summary"),r=t!==void 0?t:k(k(Ue(e,"diagnostic_payload"),o=>Ue(o,"error")),o=>E(o,"message")),n=k(r,o=>ra(o));if(n===void 0)return;let i=Pp(e);return i!==void 0?"Model gateway error (HTTP "+i.toString()+"): "+n:"Model gateway error: "+n}var jJ=new RegExp("(?:<!doctype\\s+html|<html(?:\\s|>))","i"),zJ=new RegExp("cloudflare|cf-ray|\\bblocked\\b|access denied|\\bchallenge\\b|attention required","i"),uj=new RegExp("cloudflare|cf-ray","i"),NJ=new RegExp("\\bblocked\\b|access denied","i"),GJ=new RegExp("attention required","i"),FJ=new RegExp("@font-face","i"),DJ=new RegExp("unexpected status (401|403)\\b","i"),qJ=new RegExp("\\b(401|403)\\s+(?:unauthorized|forbidden)\\b","i");function LJ(e){return He(e,void 0,(t,r)=>{if(t!==void 0)return t;if(r===void 0)return;let n=DJ.exec(r),i=n??$t(qJ.exec(r));return N(k(i,o=>k(o.slice(1)[0],a=>a)),o=>o==="401"?401:403)})}function UJ(e){return jJ.test(e)?!0:FJ.test(e)?uj.test(e):!1}function WJ(e){let t=k(Ue(e,"diagnostic_payload"),a=>Ue(a,"error")),r=[E(e,"diagnostic_summary"),k(t,a=>E(a,"message")),E(e,"message")],n=Pp(e),i=n!==void 0?n:LJ(r);if(i===void 0||i!==401&&i!==403)return;let o=He(r,void 0,(a,s)=>a!==void 0?a:s!==void 0&&UJ(s)&&zJ.test(s)?s:void 0);return N(o,a=>{let s=uj.test(a),l=NJ.test(a),d=GJ.test(a);return{edgeStatus:i,edgeSignature:s?"cloudflare":l?"blocked":d?"attention_required":"challenge"}})}function ZJ(e){return e!==void 0?e===402||e===408||e===425||e===429?!0:e>=500?e<=599:!1:!1}function VJ(e){return e!==void 0&&e>=400&&e<=499&&e!==402&&e!==408&&e!==425?e!==429:!1}function HJ(e,t){let r="the model provider rejected this request as invalid (a retry sends the same request and fails the same way, so it was not retried; check the selected model / request and send again).",n=e!==void 0?"Model provider rejected this request (HTTP "+e.toString()+"): "+r:"Model provider rejected this request: "+r,i=w(N(t,o=>o.trim()),"");return i===""?n:n+" Upstream said: "+i}function BJ(e){let t="the model provider returned no usable response this turn (retrying will not help until it recovers).";return e!==void 0?"Model upstream unavailable (HTTP "+e.toString()+"): "+t:"Model upstream unavailable: "+t}function KJ(e){let t="The agent run was cut off by a tool failure and produced no response (retrying will hit the same failure until the underlying tool call is fixed).",r=w(N(e,n=>n.trim()),"");return r===""?"Tool execution failed: "+t:"Tool execution failed ("+r+"): "+t}function tc(e){let t=k(Ue(e,"diagnostic_payload"),i=>Ue(i,"error")),r=E(e,"message"),n;if(r!==void 0)n=r;else{let i=E(e,"reason");if(i!==void 0)n=i;else{let o=k(Ue(e,"error"),a=>E(a,"message"));if(o!==void 0)n=o;else{let a=E(e,"error");if(a!==void 0)n=a;else{let s=E(e,"diagnostic");if(s!==void 0)n=s;else{let l=k(t,d=>E(d,"message"));n=l!==void 0?l:k(k(t,d=>Ue(d,"error")),d=>E(d,"message"))}}}}}return ra(n)}var JJ=new RegExp("^(?:model_request_rejected|invalid_request_error|invalid_request|request_rejected|content_policy_violation|content_filter|input_validation_error)$","i"),YJ=new RegExp("\\bmodel request was rejected\\b|\\bmodel_request_rejected\\b","i");function XJ(e){let t=k(Ue(e,"diagnostic_payload"),o=>Ue(o,"error")),r=k(t,o=>Ue(o,"error")),n=Ue(e,"error"),i=[[k(t,o=>E(o,"code")),k(t,o=>E(o,"message"))],[k(t,o=>E(o,"type")),k(t,o=>E(o,"message"))],[k(r,o=>E(o,"code")),k(r,o=>E(o,"message"))],[k(r,o=>E(o,"type")),k(r,o=>E(o,"message"))],[k(n,o=>E(o,"code")),k(n,o=>E(o,"message"))],[k(n,o=>E(o,"type")),k(n,o=>E(o,"message"))],[E(e,"code"),E(e,"message")],[E(e,"type"),E(e,"message")]];return He(i,void 0,(o,a)=>{if(o!==void 0)return o;let s=N(a[0],l=>l.trim());if(s!==void 0&&s!==""&&JJ.test(s))return{colocatedMessage:a[1]}})}function QJ(e){let t=XJ(e),r=tc(e),n=r!==void 0?YJ.test(r):!1;if(t===void 0&&!n)return;let i=ra(k(t,o=>o.colocatedMessage));return i!==void 0?i:r!==void 0?r:""}function e6(e){let t="the model provider rejected this request and produced no response (retrying will hit the same rejection until the request is changed).",r=w(N(e,n=>n.trim()),"");return r===""?"The model request was rejected: "+t:"The model request was rejected ("+r+"): "+t}var t6=new RegExp("^provider_outage$","i"),r6=new RegExp("rejecting requests|experiencing an outage|provider outage","i");function n6(e){let t=k(Ue(e,"diagnostic_payload"),d=>Ue(d,"error")),r=k(t,d=>Ue(d,"error")),n=Ue(e,"error");if(![k(t,d=>E(d,"code")),k(t,d=>E(d,"type")),k(r,d=>E(d,"code")),k(r,d=>E(d,"type")),k(n,d=>E(d,"code")),k(n,d=>E(d,"type")),E(e,"code"),E(e,"type")].some(d=>{let u=N(d,c=>c.trim());return u!==void 0&&u!==""?t6.test(u):!1}))return;let a=[k(t,d=>E(d,"message")),k(r,d=>E(d,"message")),k(n,d=>E(d,"message")),E(e,"message"),E(e,"reason")],s=He(a,void 0,(d,u)=>{if(d!==void 0)return d;let c=ra(u);if(c!==void 0&&r6.test(c))return c});if(s!==void 0)return s;let l=tc(e);return l!==void 0?l:""}function i6(e){let t=w(N(e,r=>r.trim()),"");return t===""?"The model provider is currently rejecting requests / experiencing an outage. Your message was NOT processed. Please retry later, or switch to a different model.":t}function o6(e){let t="the model provider rejected this request and produced no response (a one-off retry did not help).",r=w(N(e,n=>n.trim()),"");return r===""?"The model request was rejected: "+t:"The model request was rejected ("+r+"): "+t}function a6(e,t,r,n){return e?{dispositionKind:"storm",dispositionRetryable:!1,dispositionReason:i6(r)}:t<1?{dispositionKind:"isolated_retry",dispositionRetryable:!0,dispositionReason:e6(n)}:{dispositionKind:"isolated_terminal",dispositionRetryable:!1,dispositionReason:o6(n)}}var s6=new RegExp("\\bapply_patch\\b[^]*\\bincompatible\\b|\\bin-flight tool future\\b[^]*\\bfail","i"),l6=new RegExp("\\btools::router\\b[^]*\\bfatal\\b|\\bresponse\\.failed\\b","i"),d6=new RegExp("(tool.*fatal|fatal.*tool|response[._]failed|tool_failure)","i");function u6(e){return s6.test(e)?!0:l6.test(e)}function c6(e){let t=E(e,"kind"),r;if(t!==void 0)r=t;else{let a=E(e,"type");if(a!==void 0)r=a;else{let s=k(Ue(e,"error"),l=>E(l,"kind"));r=s!==void 0?s:k(Ue(e,"error"),l=>E(l,"type"))}}let n=r!==void 0?d6.test(r):!1,i=tc(e),o=i!==void 0?u6(i):!1;if(n||o)return i!==void 0?i:""}function nj(e){if(e!==void 0&&!(e===null||Array.isArray(e)))switch(typeof e){case"string":return e.trim()!==""?e:void 0;case"object":let t=Object.keys(e);return t.length!==1?void 0:t[0];default:return}}function f6(e){if(e===void 0)return;let t=Tl(e,"{");if(t===void 0)return;let r=va(e.slice(t)),n=r!==void 0?r:va(e.slice(t,e.lastIndexOf("}")+1|0));if(n===void 0||!se(E(n,"type"),"error"))return;let i=Ue(n,"error");if(i===void 0)return;let o=E(i,"type");return{envelopeStatus:ta(Pr(n,"status")),envelopeErrorType:o!==void 0?o:E(i,"code"),envelopeMessage:E(i,"message")}}function m6(e){let t=Ue(e,"error"),r=k(Ue(e,"diagnostic_payload"),p=>Ue(p,"error")),n=k(r,p=>Ue(p,"error")),i=Pp(e),o=k(t,p=>E(p,"type")),a;if(o!==void 0)a=o;else{let p=k(t,_=>E(_,"code"));if(p!==void 0)a=p;else{let _=k(r,g=>E(g,"type"));if(_!==void 0)a=_;else{let g=k(r,b=>E(b,"code"));if(g!==void 0)a=g;else{let b=k(n,y=>E(y,"type"));if(b!==void 0)a=b;else{let y=k(n,S=>E(S,"code"));if(y!==void 0)a=y;else{let S=nj(k(t,v=>Pr(v,"codexErrorInfo")));a=S!==void 0?S:nj(k(r,v=>Pr(v,"codexErrorInfo")))}}}}}}let s=ra(k(t,p=>E(p,"message"))),l;if(s!==void 0)l=s;else{let p=ra(k(n,_=>E(_,"message")));if(p!==void 0)l=p;else{let _=ra(k(r,g=>E(g,"message")));l=_!==void 0?_:tc(e)}}if(i===void 0&&a===void 0){let p=He([k(t,_=>E(_,"message")),k(n,_=>E(_,"message")),k(r,_=>E(_,"message")),E(e,"message"),E(e,"reason"),E(e,"error"),E(e,"diagnostic"),E(e,"diagnostic_summary")],void 0,(_,g)=>_!==void 0?_:f6(g));if(p!==void 0){i=p.envelopeStatus,a=p.envelopeErrorType;let _=ra(p.envelopeMessage);l=_!==void 0?_:l}}let c=N(a,p=>p.trim()),f;f=c!==void 0&&c!==""?c:void 0;let h=Ge([N(i,p=>p.toString()),f],p=>p).join(" "),m;if(h==="")m=l;else{let p=l;m=p!==void 0?h+": "+p:h}if(m!==void 0&&m!=="")return m.slice(0,300)}function ij(e){return{swLastUpstreamErrorReason:e.lastUpstreamErrorReason,swLastErrorDiagnosticText:e.lastErrorDiagnosticText,swLastUpstreamErrorHttpStatus:e.lastUpstreamErrorHttpStatus,swUpstreamRejectedSeen:e.upstreamRejectedSeen,swProviderOutageFlaggedSeen:e.providerOutageFlaggedSeen,swToolFatalSeen:e.toolFatalSeen,swErrorNotificationCount:e.errorNotificationCount,swUnattributedErrorNotificationCount:e.unattributedErrorNotificationCount,swModelInteractionSeen:e.modelInteractionSeen}}function cj(e){return e===429||e>=500&&e<=599?"TransientRetryClass":"DeterministicRetryClass"}var p6=new RegExp("upstream model stream stalled","i"),h6=new RegExp("\\(HTTP (\\d{3})\\)");function fj(e){let t=h6.exec(e);if(t!=null)return k(k(t.slice(1)[0],r=>r),Fn)}function _6(e){let t=fj(e);return t!==void 0?cj(t):p6.test(e)?"TransientRetryClass":"DeterministicRetryClass"}function hw(e){let t={contents:!1},r={contents:e.swUpstreamRejectedSeen||e.swProviderOutageFlaggedSeen||e.swToolFatalSeen||e.swModelInteractionSeen||e.swUnattributedErrorNotificationCount>0},n={contents:0},i=e.swLastUpstreamErrorHttpStatus;i!==void 0&&(n.contents=n.contents+1|0,cj(i)==="TransientRetryClass"?t.contents=!0:r.contents=!0),[e.swLastUpstreamErrorReason,e.swLastErrorDiagnosticText].forEach(s=>{if(s===void 0)return;n.contents=n.contents+1|0,_6(s)==="TransientRetryClass"?t.contents=!0:r.contents=!0}),e.swErrorNotificationCount>(n.contents+e.swUnattributedErrorNotificationCount|0)&&!e.swUpstreamRejectedSeen&&!e.swProviderOutageFlaggedSeen&&!e.swToolFatalSeen&&(r.contents=!0);let o=r.contents,a=t.contents;return o?"deterministic":a?"transient":"none"}function oj(e){return e.swLastUpstreamErrorHttpStatus===429?!0:[e.swLastUpstreamErrorReason,e.swLastErrorDiagnosticText].some(r=>r!==void 0?se(fj(r),429):!1)}var g6=" (An automatic resume was not attempted: the upstream reported a rate limit (HTTP 429) during this turn, and an automatic resume would burn straight into it. Retry once the rate limit clears.)";function y6(e){return" (An automatic resume was attempted at "+new Date(e).toISOString()+" and the stream stalled again, so it will not be retried automatically.)"}function b6(e){return" (An automatic resume was attempted at "+new Date(e).toISOString()+" and the stream stalled again - reconnecting on a fresh model session automatically.)"}function S6(e){return" (An automatic resume was attempted at "+new Date(e).toISOString()+" after the stream stalled; it did not complete.)"}var mj=" (Automatic retries are paused: this session hit your Linzumi cost cap (HTTP 402), and an automatic retry must never spend past it. Retry manually when your budget allows.)";function pj(e){return e>0?" ("+e.toString()+" automatic "+(e===1?"retry":"retries")+" did not help.)":""}var _w={autoRetryPreFirstByteStall:!1,messageStateRetryable:!1,costCapAutoRetrySuppressed:!1,messageStateFate:void 0,autoResumeMidStreamStall:!1,midStreamResumeRateLimitSuppressed:!1,midStreamResumeAttemptBurnedAtMs:void 0};function Ap(e,t){return Pr(e,t)===!0}function v6(e){let t=Pr(e,"fate");if(typeof t=="string")return gp(t)}function w6(e,t,r,n){let i=e==="turn/failed"&&se(k(Ue(t,"error"),A=>E(A,"code")),"idle_stream_timeout"),o=e==="turn/failed"&&Ap(t,"retryable"),a=e==="turn/failed"?v6(t):void 0;if(!i)return{autoRetryPreFirstByteStall:!1,messageStateRetryable:o,costCapAutoRetrySuppressed:!1,messageStateFate:a,autoResumeMidStreamStall:!1,midStreamResumeRateLimitSuppressed:!1,midStreamResumeAttemptBurnedAtMs:void 0};let s=n.sessionMidStreamResumeAttemptAtMs,l=s!==void 0,d=hw(r)!=="deterministic",u=Ap(t,"preFirstByteStall")&&d,c=Ap(t,"midStreamResumableStall"),f=c&&oj(r),h=hw({swLastUpstreamErrorReason:r.swLastUpstreamErrorReason,swLastErrorDiagnosticText:r.swLastErrorDiagnosticText,swLastUpstreamErrorHttpStatus:r.swLastUpstreamErrorHttpStatus,swUpstreamRejectedSeen:r.swUpstreamRejectedSeen,swProviderOutageFlaggedSeen:r.swProviderOutageFlaggedSeen,swToolFatalSeen:r.swToolFatalSeen,swErrorNotificationCount:r.swErrorNotificationCount,swUnattributedErrorNotificationCount:r.swUnattributedErrorNotificationCount,swModelInteractionSeen:!1})!=="deterministic",m=c&&!l&&!f&&h,p=n.sessionFreshSessionResumeAttemptAtMs!==void 0,_=c&&l&&!p&&!f&&h,g=(u&&!l||m||_)&&n.sessionCostCap402Seen,b=u&&!l&&!g,y=m&&!g,S=_&&!g,v=c&&!l&&f;return{autoRetryPreFirstByteStall:b,messageStateRetryable:u||o,costCapAutoRetrySuppressed:g,messageStateFate:a!==void 0?a:oj(r)?"rate_limited":"transient_upstream",autoResumeMidStreamStall:y,midStreamResumeRateLimitSuppressed:v,midStreamResumeAttemptBurnedAtMs:l?s:void 0,freshSessionResumeMidStreamStall:S?!0:void 0}}function k6(e,t,r){let n=r!==void 0?" (last upstream error: "+r+")":"",i=e.lastErrorDiagnosticText;return i!==void 0?{cause:"codex error without HTTP status: "+i}:e.modelInteractionSeen?{cause:"model returned no assistant output: "+(e.items.length.toString()+" streamed items, ")+(t.toString()+" snapshot items"+n)}:{cause:"codex never called the model: 0 model interactions, "+(e.notificationCount.toString()+" notifications, ")+(e.errorNotificationCount.toString()+" errors"+n)}}function Rp(e,t){for(e.terminalTurnIds.delete(t),e.terminalTurnIds.add(t);e.terminalTurnIds.size>512;){let r=e.terminalTurnIds.values().next().value;r!==void 0&&e.terminalTurnIds.delete(r)}}function Ip(e){let t=e.turns.values().toArray().filter(n=>n.phase==="ActiveTurnPhase");return t.length!==1?void 0:t[0].turnId}function Cp(e,t,r,n){return[["thread_key",e.threadKey],["turn_id",t.turnId],["item_key",r.itemKey],["item_id",r.wireItemKey],["stream_kind",r.identity.streamKind],["item_index",r.identity.itemIndex],["source_seq",t.sourceSeq],["client_message_id",r.clientMessageId],["body",n.renderedBody],["structured",n.renderedStructured]]}function Qu(e){let t=e.nextStreamSnapshotIndex;return e.nextStreamSnapshotIndex=e.nextStreamSnapshotIndex+1|0,t}function ms(e){let t=E(e,"reason");if(t!==void 0)return t;let r=E(e,"message");if(r!==void 0)return r;let n=k(Ue(e,"error"),i=>E(i,"message"));return n!==void 0?n:w(E(e,"error"),"codex_turn_aborted")}function x6(e,t,r){let n={turnId:t,sourceSeq:r,phase:"ActiveTurnPhase",protocolFailureReason:void 0,lastUpstreamErrorReason:void 0,edgeBlockEvidence:void 0,lastErrorDiagnosticText:void 0,toolFatalSeen:!1,toolFatalDetail:void 0,upstreamRejectedSeen:!1,upstreamRejectedDetail:void 0,providerOutageFlaggedSeen:!1,providerOutageDetail:void 0,lastUpstreamErrorHttpStatus:void 0,lastUpstreamErrorSummary:void 0,errorNotificationCount:0,unattributedErrorNotificationCount:0,notificationCount:0,modelInteractionSeen:!1,reasoningStepsWithoutProgress:0,agentReplyToolCallSeen:!1,agentActionToolCallSeen:!1,items:[]};return e.turns.set(t,n),n}function T6(e,t){if(e.phase==="ActiveTurnPhase"){e.phase="CompletingTurnPhase",t.push({TAG:"RequestSnapshot",turnId:e.turnId});return}let i={TAG:"Log",event:"pipeline.loop.duplicate_turn_completed",fields:Object.fromEntries([["turn_id",e.turnId]])};t.push(i)}function Ep(e,t,r,n,i,o,a,s){let l;if(s.autoRetryPreFirstByteStall||s.costCapAutoRetrySuppressed){let g=o.autoRetryAttemptsForSeq;l=n+pj(g!==void 0?g(t.sourceSeq):0)+(s.costCapAutoRetrySuppressed?mj:"")}else l=n;if(s.midStreamResumeRateLimitSuppressed&&(l=l+g6),r==="failed"){let g=s.midStreamResumeAttemptBurnedAtMs;if(g!==void 0)l=l+(w(s.freshSessionResumeMidStreamStall,!1)?b6(g):y6(g));else{let b=k(o.midStreamResumeAttemptAtMsForSeq,y=>y(t.sourceSeq));b!==void 0&&(l=l+S6(b))}}t.items.forEach(g=>{if(!g.posted||Ll(g.emittedStreamState))return;let b=Jl(g.wireItemKey,g.content,a),y=Object.fromEntries(Cp(o,t,g,b).concat([["stream_snapshot_index",Qu(g)],["terminal_outcome",r],["reason",n]])),S={TAG:"Enqueue",kind:Qo,data:y,coalesceKey:void 0,resolution:"MustAck"};i.push(S),g.emittedStreamState=a,g.lastEmittedBody=b.renderedBody});let d=w(o.sessionExecutesRecoveryGrants,!1)&&r==="failed"&&(s.autoRetryPreFirstByteStall||s.autoResumeMidStreamStall||w(s.freshSessionResumeMidStreamStall,!1)),u=s.messageStateFate,c=s.messageStateFate,f;if(c!==void 0){let g=k(o.ladderHistoryForSeq,b=>b(t.sourceSeq,c));f=g!==void 0?[["ladder",g]]:[]}else f=[];let h=t.lastUpstreamErrorSummary,m;if(h!==void 0)m=[["upstream_error",h]];else{let g=e.lastUpstreamErrorSummary;m=g!==void 0?[["upstream_error",g]]:[]}let p=Object.fromEntries([["thread_key",o.threadKey],["turn_id",t.turnId],["seq",t.sourceSeq],["status",d?"recovering":"failed"],["reason",l]].concat((s.messageStateRetryable&&!d?[["retryable",!0]]:[]).concat(u!==void 0?[["fate",u]]:[])).concat(f.concat(m))),_={TAG:"Enqueue",kind:ea,data:p,coalesceKey:void 0,resolution:"MustAck"};i.push(_),i.push({TAG:"TurnTerminal",turnId:t.turnId,outcome:r,reason:l,retryableEmptyTurn:s.autoRetryPreFirstByteStall,autoResumeMidStreamStall:s.autoResumeMidStreamStall,freshSessionResumeMidStreamStall:s.freshSessionResumeMidStreamStall,fate:s.messageStateFate}),e.turns.delete(t.turnId),Rp(e,t.turnId)}function hj(e,t,r,n,i){let o=l=>{let d=e.turnId,u=e.items.length,c={turnId:d,itemId:l,itemIndex:u,streamKind:t},f=wM(c),h=w(l,f),m={identity:c,itemKey:f,wireItemKey:h,clientMessageId:pw(n.instanceId,e.turnId,t,h),content:KM(t),posted:!1,completed:!1,emittedStreamState:void 0,lastEmittedBody:void 0,nextDeltaIndex:0,nextStreamSnapshotIndex:1};return e.items.push(m),m};if(t==="webSearch"){let l=e.items.find(d=>d.identity.streamKind==="webSearch");return l!==void 0?l:o("web-search:"+e.turnId)}let a=r!==void 0?e.items.find(l=>l.identity.streamKind===t?se(l.identity.itemId,r):!1):void 0;if(a!==void 0)return a;let s=e.items.find(l=>l.identity.streamKind===t&&l.identity.itemId===void 0?!l.completed:!1);return r!==void 0?s!==void 0&&i?s:o(r):s!==void 0?s:o(r)}function gw(e,t,r,n,i,o){let a=Jl(t.wireItemKey,t.content,n);if(t.posted){let u=Object.fromEntries(Cp(i,e,t,a).concat([["delta_index",r],["stream_snapshot_index",Qu(t)]])),c=t.itemKey,f={TAG:"Enqueue",kind:Wl,data:u,coalesceKey:c,resolution:"MustAck"};o.push(f),t.emittedStreamState=n,t.lastEmittedBody=a.renderedBody;return}if(a.renderedBody.trim()==="")return;let l=Object.fromEntries(Cp(i,e,t,a).concat([["delta_index",r],["stream_snapshot_index",Qu(t)]])),d={TAG:"Enqueue",kind:Ul,data:l,coalesceKey:void 0,resolution:"MustAck"};if(o.push(d),t.posted=!0,t.emittedStreamState=n,t.lastEmittedBody=a.renderedBody,n==="completed"){t.completed=!0;return}}function Op(e,t,r,n){if(e.phase==="ActiveTurnPhase"){let l=hj(e,Bl(t),HM(t),r,!1);if(l.completed){let h={TAG:"Log",event:"pipeline.loop.delta_for_completed_item",fields:Object.fromEntries([["turn_id",e.turnId],["item_key",l.itemKey]])};n.push(h);return}l.content=JM(l.content,t);let d=l.nextDeltaIndex;l.nextDeltaIndex=l.nextDeltaIndex+1|0;let u=Bl(t),c;return c=u==="terminalInput"?"completed":"streaming",gw(e,l,d,c,r,n)}let o=[["turn_id",e.turnId],["stream_kind",Bl(t)]],s={TAG:"Log",event:"pipeline.loop.delta_for_completing_turn",fields:Object.fromEntries(o)};n.push(s)}function A6(e,t,r,n){let i=t.method,o=w(t.params,{});if(i===ec)return;if(i===Yl)return R6(e,o,r,n);if(!EJ(i))return;let a=Xu(o),s=a!==void 0?a:Ip(e);if(s!==void 0){if(e.terminalTurnIds.has(s)){let y={TAG:"Log",event:"pipeline.loop.notification_for_terminal_turn",fields:Object.fromEntries([["method",i],["turn_id",s]])};n.push(y);return}let u=e.turns.get(s),c;if(u!==void 0)c=u;else{let b=r.sourceSeqForTurn(s);c=b!==void 0?x6(e,s,b):void 0}if(c===void 0)return P6(e,s,{TAG:"HarnessNotification",_0:t},n);if(c.notificationCount=c.notificationCount+1|0,PJ(i)&&(c.modelInteractionSeen=!0),i==="turn/started")return;if(i==="turn/completed")return T6(c,n);let f=CJ(i);if(f!==void 0){let b=w6(i,o,ij(c),{sessionCostCap402Seen:e.costCap402Seen,sessionMidStreamResumeAttemptAtMs:k(r.midStreamResumeAttemptAtMsForSeq,S=>S(c.sourceSeq)),sessionFreshSessionResumeAttemptAtMs:k(r.freshSessionResumeAttemptAtMsForSeq,S=>S(c.sourceSeq))});if(b.autoResumeMidStreamStall){let S=[["thread_key",r.threadKey],["turn_id",c.turnId],["source_seq",c.sourceSeq],["reason",ms(o)]],A={TAG:"Log",event:"codex.mid_stream_stall_auto_resume_flagged",fields:Object.fromEntries(S)};n.push(A)}else if(b.midStreamResumeRateLimitSuppressed){let S=[["thread_key",r.threadKey],["turn_id",c.turnId],["source_seq",c.sourceSeq],["reason",ms(o)]],A={TAG:"Log",event:"codex.mid_stream_stall_resume_suppressed_rate_limit",fields:Object.fromEntries(S)};n.push(A)}else{let S=b.midStreamResumeAttemptBurnedAtMs;if(S!==void 0){let v=w(b.freshSessionResumeMidStreamStall,!1),A=[["thread_key",r.threadKey],["turn_id",c.turnId],["source_seq",c.sourceSeq],["resume_attempt_at_ms",S],["reason",ms(o)],["fresh_session_resume_granted",v]],F={TAG:"Log",event:"codex.mid_stream_stall_second_stall_after_resume",fields:Object.fromEntries(A)};if(n.push(F),v){let j=[["thread_key",r.threadKey],["turn_id",c.turnId],["source_seq",c.sourceSeq],["resume_attempt_at_ms",S],["reason",ms(o)]],L={TAG:"Log",event:"codex.mid_stream_stall_fresh_session_resume_flagged",fields:Object.fromEntries(j)};n.push(L)}}}if(b.autoRetryPreFirstByteStall){let S=[["thread_key",r.threadKey],["turn_id",c.turnId],["source_seq",c.sourceSeq],["reason",ms(o)],["evidence_class",hw(ij(c))]],A={TAG:"Log",event:"codex.pre_first_byte_stall_auto_retry_flagged",fields:Object.fromEntries(S)};n.push(A)}else if(b.costCapAutoRetrySuppressed){let S=[["thread_key",r.threadKey],["turn_id",c.turnId],["source_seq",c.sourceSeq],["reason",ms(o)],["flavor",Ap(o,"midStreamResumableStall")?"mid_stream_resume":"pre_first_byte_retry"]],A={TAG:"Log",event:"codex.pre_first_byte_stall_retry_suppressed_cost_cap",fields:Object.fromEntries(S)};n.push(A)}let y;switch(f){case"failed":y="failed";break;case"completed":case"interrupted":y="interrupted";break}return Ep(e,c,f,ms(o),n,r,y,b)}if(i==="error")return $6(e,c,o,n);if((i.startsWith("item/")||i==="command/exec/outputDelta")&&E6(c,i,o,r,n),i==="item/completed"||i==="response_item")return I6(c,o,r,n);let h=BM(i,o);if(h===void 0)return;if(c.phase!=="ActiveTurnPhase")return Op(c,h,r,n);if(Bl(h)!=="reasoning")return c.reasoningStepsWithoutProgress=0,Op(c,h,r,n);if(c.reasoningStepsWithoutProgress=c.reasoningStepsWithoutProgress+1|0,c.reasoningStepsWithoutProgress<=64)return Op(c,h,r,n);let p=kJ(c.reasoningStepsWithoutProgress),g={TAG:"Log",event:"codex.reasoning_loop_breaker_tripped",fields:Object.fromEntries([["thread_key",r.threadKey],["turn_id",c.turnId],["source_seq",c.sourceSeq],["reasoning_steps_without_progress",c.reasoningStepsWithoutProgress],["max_reasoning_steps_without_progress",64]])};return n.push(g),Ep(e,c,"failed",p,n,r,"interrupted",_w)}let d={TAG:"Log",event:"pipeline.loop.notification_without_turn",fields:Object.fromEntries([["method",i]])};n.push(d)}function O6(e,t,r,n,i){switch(t){case"codexDied":let a=e.phase,s=0;switch(a){case"running":case"closing":s=2;break;case"dead":return}if(s===2){e.turns.values().toArray().forEach(u=>Ep(e,u,"failed",r,i,n,"interrupted",_w)),e.bufferedTurns.entries().toArray().forEach(u=>{let c=u[0],h={TAG:"Log",event:"pipeline.loop.buffered_turn_dropped",fields:Object.fromEntries([["turn_id",c],["buffered_event_count",u[1].length],["reason",r]])};i.push(h),i.push({TAG:"TurnTerminal",turnId:c,outcome:"failed",reason:r,retryableEmptyTurn:!1,autoResumeMidStreamStall:!1,fate:void 0}),Rp(e,c)}),e.bufferedTurns.clear(),e.phase="dead";let d={TAG:"Log",event:"pipeline.loop.codex_died",fields:Object.fromEntries([["reason",r]])};i.push(d);return}break;case"shutdown":case"replaceRunner":break}switch(e.phase){case"running":e.phase="closing";let a=[["kind",t],["reason",r]],l={TAG:"Log",event:"pipeline.loop.closing",fields:Object.fromEntries(a)};i.push(l);return;case"closing":case"dead":return}}function C6(e,t,r,n,i){if(e.terminalTurnIds.has(t)){let d={TAG:"Log",event:"pipeline.loop.duplicate_snapshot",fields:Object.fromEntries([["turn_id",t]])};i.push(d);return}let o=e.turns.get(t);if(o!==void 0){if(o.phase!=="ActiveTurnPhase")return M6(e,o,r,n,i);let u={TAG:"Log",event:"pipeline.loop.snapshot_for_active_turn",fields:Object.fromEntries([["turn_id",t]])};i.push(u);return}let s={TAG:"Log",event:"pipeline.loop.snapshot_for_unknown_turn",fields:Object.fromEntries([["turn_id",t]])};i.push(s)}function E6(e,t,r,n,i){if(e.phase!=="ActiveTurnPhase")return;let a=Ue(r,"item"),s=a!==void 0?E(a,"type"):E(r,"type");if(!Nr(s,"agentStatus"))return;let l=Kl(r),d=t==="item/agentMessage/delta"||se(s,"agentMessage");e.items.forEach(u=>{if(!(u.identity.streamKind==="assistant"&&u.completed&&u.posted&&!Ll(u.emittedStreamState)))return;if(l!==void 0?Nr(u.identity.itemId,l):!d)return gw(e,u,Math.max(u.nextDeltaIndex-1|0,0),"completed",n,i)})}function P6(e,t,r,n){let i=e.bufferedTurns.get(t);if(i!==void 0){i.push(r);return}e.bufferedTurns.set(t,[r]);let a={TAG:"Log",event:"pipeline.loop.turn_events_buffered",fields:Object.fromEntries([["turn_id",t]])};n.push(a)}function R6(e,t,r,n){let i=E(t,"turnId"),o=w(E(t,"reason"),"turn source-seq mapping failed");if(i===void 0||e.terminalTurnIds.has(i))return;let a=e.turns.get(i);if(a!==void 0)return Ep(e,a,"failed",o,n,r,"failed",_w);let s=e.bufferedTurns.get(i);e.bufferedTurns.delete(i);let l=[["level","warn"],["turn_id",i],["buffered_event_count",w(N(s,c=>c.length),0)],["reason",o]],u={TAG:"Log",event:"pipeline.loop.buffered_turn_failed",fields:Object.fromEntries(l)};n.push(u),n.push({TAG:"TurnTerminal",turnId:i,outcome:"failed",reason:o,retryableEmptyTurn:!1,autoResumeMidStreamStall:!1,fate:void 0}),Rp(e,i)}function I6(e,t,r,n){let i=Ue(t,"item");i!==void 0&&e.protocolFailureReason===void 0&&(e.protocolFailureReason=lj(i)),sj(e,i!==void 0?i:t);let o=XM(t);if(o===void 0)return;if(o.completedStreamKind==="webSearch"){let c=o.completedContent,f;return f=c.TAG==="WebSearchContent"?c.queries:[],Op(e,{TAG:"WebSearchDelta",itemId:o.completedItemId,queries:f},r,n)}if(e.phase==="ActiveTurnPhase"){let c=hj(e,o.completedStreamKind,o.completedItemId,r,!0),f=!1;if(c.identity.streamKind===o.completedStreamKind){let _=o.completedStreamKind,g;switch(_){case"agentStatus":case"agentTaskUpdate":g=!0;break;default:g=!1}f=g}if(c.completed&&!f)return;c.content=o.completedContent,c.completed=!0;let h=o.completedStreamKind,m;m=h==="assistant"?"streaming":"completed";let p=Jl(c.wireItemKey,c.content,m);return c.posted&&se(p.renderedBody,c.lastEmittedBody)&&(m==="streaming"||Ll(c.emittedStreamState))?void 0:gw(e,c,Math.max(c.nextDeltaIndex-1|0,0),m,r,n)}let l=[["turn_id",e.turnId],["stream_kind",o.completedStreamKind]],u={TAG:"Log",event:"pipeline.loop.item_completed_for_completing_turn",fields:Object.fromEntries(l)};n.push(u)}function $6(e,t,r,n){t.errorNotificationCount=t.errorNotificationCount+1|0;let i=c6(r);if(i!==void 0){t.toolFatalSeen=!0,t.toolFatalDetail===void 0&&i!==""&&(t.toolFatalDetail=i);let p={TAG:"Log",event:"codex.tool_fatal_captured",fields:Object.fromEntries([["turn_id",t.turnId],["detail",i===""?null:i]])};n.push(p)}let o=QJ(r);if(o!==void 0){t.upstreamRejectedSeen=!0,t.upstreamRejectedDetail===void 0&&o!==""&&(t.upstreamRejectedDetail=o);let p={TAG:"Log",event:"codex.upstream_rejection_captured",fields:Object.fromEntries([["turn_id",t.turnId],["detail",o===""?null:o]])};n.push(p)}let a=n6(r);if(a!==void 0){t.providerOutageFlaggedSeen=!0,t.providerOutageDetail===void 0&&a!==""&&(t.providerOutageDetail=a);let p={TAG:"Log",event:"codex.provider_outage_flagged_captured",fields:Object.fromEntries([["turn_id",t.turnId],["detail",a===""?null:a]])};n.push(p)}let s=Pp(r),l=WJ(r);if(l!==void 0&&(t.edgeBlockEvidence=l),s!==void 0){let m=t.lastUpstreamErrorHttpStatus;m!==void 0&&s<=m||(t.lastUpstreamErrorHttpStatus=s)}if(se(s,402)&&!e.costCap402Seen){e.costCap402Seen=!0;let p={TAG:"Log",event:"codex.cost_cap_402_seen",fields:Object.fromEntries([["turn_id",t.turnId]])};n.push(p)}let d=MJ(r),u=!1;if(d!==void 0){t.lastUpstreamErrorReason=d;let p={TAG:"Log",event:"codex.upstream_error_captured",fields:Object.fromEntries([["turn_id",t.turnId],["reason",d]])};n.push(p)}else{let m=tc(r);if(m!==void 0){t.lastErrorDiagnosticText=m,u=!0;let _={TAG:"Log",event:"codex.error_without_http_status_captured",fields:Object.fromEntries([["turn_id",t.turnId],["diagnostic_text",m]])};n.push(_)}}i===void 0&&o===void 0&&a===void 0&&s===void 0&&d===void 0&&!u&&(t.unattributedErrorNotificationCount=t.unattributedErrorNotificationCount+1|0);let c=m6(r);if(c===void 0)return;t.lastUpstreamErrorSummary=c,e.lastUpstreamErrorSummary=c;let h={TAG:"Log",event:"codex.upstream_turn_error_captured",fields:Object.fromEntries([["turn_id",t.turnId],["upstream_error",c]])};n.push(h)}function M6(e,t,r,n,i){let o=Pr(r,"items"),a=o!==void 0?Array.isArray(o)?o:[]:[];t.protocolFailureReason===void 0&&(t.protocolFailureReason=OJ(a)),a.forEach(G=>sj(t,Oe(G)));let s=QM(a),l=new Set,d=new Map;s.forEach((G,Pe)=>{let de=G.projItemId;if(de===void 0)return;let ze=t.items.find(Ct=>Ct.posted&&!l.has(Ct.itemKey)&&Ct.identity.streamKind===G.projStreamKind?se(Ct.identity.itemId,de):!1);if(ze!==void 0){l.add(ze.itemKey),d.set(Pe,ze);return}});let u=new Map;t.items.forEach(G=>{if(!(G.posted&&!l.has(G.itemKey)&&G.identity.itemId===void 0))return;let Pe=G.identity.streamKind;u.set(Pe,w(u.get(Pe),0)+1|0)});let c=new Map;s.forEach((G,Pe)=>{if(d.has(Pe))return;let de=G.projStreamKind;c.set(de,w(c.get(de),0)+1|0)});let f=(G,Pe)=>{let de=Jl(G.wireItemKey,G.content,"completed").renderedBody.trim(),ze=Pe.projBody.trim();return ze.startsWith(de)?!0:de.startsWith(ze)};s.forEach((G,Pe)=>{if(d.has(Pe))return;let de=G.projStreamKind,ze=se(c.get(de),u.get(de));if(G.projItemId!==void 0&&!ze)return;let Ct=t.items.find(tr=>tr.posted&&!l.has(tr.itemKey)&&tr.identity.streamKind===G.projStreamKind?tr.identity.itemId===void 0:!1);if(Ct!==void 0&&(G.projItemId===void 0||f(Ct,G))){l.add(Ct.itemKey),d.set(Pe,Ct);return}});let h=d.entries().toArray();t.items.forEach(G=>{let Pe=h.find(tr=>tr[1].itemKey===G.itemKey);if(Pe!==void 0){let tr=s[Pe[0]];if(tr===void 0||G.identity.streamKind==="assistant"&&Ll(G.emittedStreamState)&&se(G.lastEmittedBody,tr.projBody))return;let Un=Object.fromEntries([["thread_key",n.threadKey],["turn_id",t.turnId],["item_key",G.itemKey],["item_id",G.wireItemKey],["stream_kind",G.identity.streamKind],["item_index",G.identity.itemIndex],["source_seq",t.sourceSeq],["client_message_id",G.clientMessageId],["body",tr.projBody],["structured",mw(tr.projStructured,G.wireItemKey)],["stream_snapshot_index",Qu(G)],["terminal_outcome","completed"]]),pn={TAG:"Enqueue",kind:Qo,data:Un,coalesceKey:void 0,resolution:"MustAck"};i.push(pn),G.emittedStreamState="completed",G.lastEmittedBody=tr.projBody;return}if(!G.posted||Ll(G.emittedStreamState))return;let de=Jl(G.wireItemKey,G.content,"completed"),ze=Object.fromEntries(Cp(n,t,G,de).concat([["stream_snapshot_index",Qu(G)],["terminal_outcome","completed"]])),Ct={TAG:"Enqueue",kind:Qo,data:ze,coalesceKey:void 0,resolution:"MustAck"};i.push(Ct),G.emittedStreamState="completed",G.lastEmittedBody=de.renderedBody}),s.forEach((G,Pe)=>{if(d.has(Pe))return;let de=G.projItemId,ze=de!==void 0?de:t.turnId+":"+G.projStreamKind+":snapshot:"+G.snapshotIndex.toString(),Ct=G.projItemId,tr=Object.fromEntries([["thread_key",n.threadKey],["turn_id",t.turnId],["item_key",t.turnId+":"+G.projStreamKind+":"+(Ct!==void 0?Ct:"snapshot:"+G.snapshotIndex.toString())],["item_id",ze],["stream_kind",G.projStreamKind],["snapshot_index",G.snapshotIndex],["source_seq",t.sourceSeq],["client_message_id",pw(n.instanceId,t.turnId,G.projStreamKind,ze)],["body",G.projBody],["structured",mw(G.projStructured,ze)],["stream_snapshot_index",1]]),Un={TAG:"Enqueue",kind:Zl,data:tr,coalesceKey:void 0,resolution:"MustAck"};i.push(Un)});let m=t.items.some(G=>G.identity.streamKind==="assistant"?G.posted:!1)||s.some(G=>G.projStreamKind==="assistant"),p=t.agentActionToolCallSeen||t.items.some(G=>G.posted?rj(G.identity.streamKind):!1)||s.some(G=>rj(G.projStreamKind)),_=n.linzumiAgentSession&&m&&!t.agentReplyToolCallSeen&&!p,g=m&&!_,b=t.protocolFailureReason,y=xJ(b)&&g,S=y?void 0:b,v;if(!g&&b===void 0&&t.lastUpstreamErrorReason===void 0){let G;if(_)G={cause:vJ};else{let Pe=t.lastUpstreamErrorSummary;G=k6(t,s.length,Pe!==void 0?Pe:e.lastUpstreamErrorSummary)}v=G}else v=void 0;let A=!g&&S===void 0&&t.upstreamRejectedSeen,R=!g&&S===void 0&&t.providerOutageFlaggedSeen,F=VJ(t.lastUpstreamErrorHttpStatus),j=!g&&S===void 0&&t.edgeBlockEvidence!==void 0,ie=A&&!R&&!F,L=R||ie?a6(R,e.consecutiveIsolatedRejections,t.providerOutageDetail,t.upstreamRejectedDetail):void 0,K;if(L!==void 0)switch(L.dispositionKind){case"isolated_retry":K=!0;break;case"storm":case"isolated_terminal":K=!1;break}else K=!1;ie?e.consecutiveIsolatedRejections=e.consecutiveIsolatedRejections+1|0:e.consecutiveIsolatedRejections=0;let oe=!g&&S===void 0&&t.lastUpstreamErrorReason===void 0&&t.lastErrorDiagnosticText===void 0&&!A&&ZJ(t.lastUpstreamErrorHttpStatus),W=!g&&S===void 0&&t.lastUpstreamErrorReason===void 0&&F,Z=!g&&S===void 0&&t.lastUpstreamErrorReason===void 0&&!A&&!oe&&!W&&t.toolFatalSeen,I;if(L!==void 0)I=L.dispositionReason;else if(W){let G=t.upstreamRejectedDetail;I=HJ(t.lastUpstreamErrorHttpStatus,G!==void 0?G:t.lastErrorDiagnosticText)}else if(oe)I=BJ(t.lastUpstreamErrorHttpStatus);else if(Z)I=KJ(t.toolFatalDetail);else{let G=t.lastUpstreamErrorReason;I=G!==void 0?G:_?SJ:v!==void 0?tj+" ["+v.cause+"]":tj}let fe=v!==void 0&&S===void 0&&t.modelInteractionSeen&&t.lastErrorDiagnosticText===void 0&&!A&&!oe&&!W&&!Z;fe?e.consecutiveEmptyTurns=e.consecutiveEmptyTurns+1|0:e.consecutiveEmptyTurns=0;let J=fe&&e.consecutiveEmptyTurns>3,U=fe&&!J||K,ae=n.autoRetryAttemptsForSeq,ce=ae!==void 0?ae(t.sourceSeq):0,he=U&&e.costCap402Seen&&ce<2,Ie=U&&!he;if(j){let G=t.edgeBlockEvidence,Pe=t.edgeBlockEvidence,ze={TAG:"Log",event:"codex.edge_blocked_captured",fields:Object.fromEntries([["thread_key",n.threadKey],["turn_id",t.turnId],["source_seq",t.sourceSeq],["http_status",G!==void 0?G.edgeStatus:null],["signature",Pe!==void 0?Pe.edgeSignature:null]])};i.push(ze)}let Be=J?wJ+" ("+e.consecutiveEmptyTurns.toString()+" in a row"+(v!==void 0?": "+v.cause:"")+").":void 0,we=S!==void 0?S:g?void 0:Be!==void 0?Be:I,dt=fe&&!J?ce:0,Qe=N(we,G=>G+pj(dt)+(he?mj:"")),it=v!==void 0&&!J&&!A&&!oe&&!W&&!Z||K||j,At;if(it||R)At="transient_upstream";else if(oe){let G=t.lastUpstreamErrorHttpStatus;At=G!==void 0?Gu(G):"transient_upstream"}else At="deterministic";if(he){let G=[["thread_key",n.threadKey],["turn_id",t.turnId],["source_seq",t.sourceSeq],["reason",xi(we)],["isolated_rejection_retry_suppressed",K]],de={TAG:"Log",event:"codex.empty_turn_auto_retry_suppressed_cost_cap",fields:Object.fromEntries(G)};i.push(de)}if(J){let G=t.lastUpstreamErrorSummary,Pe=[["thread_key",n.threadKey],["turn_id",t.turnId],["source_seq",t.sourceSeq],["consecutive_empty_turns",e.consecutiveEmptyTurns],["max_consecutive_empty_turns",3],["cause",xi(N(v,Ct=>Ct.cause))],["last_upstream_error",xi(G!==void 0?G:e.lastUpstreamErrorSummary)]],ze={TAG:"Log",event:"codex.empty_turn_loop_guard_tripped",fields:Object.fromEntries(Pe)};i.push(ze)}if(y){let G=[["thread_key",n.threadKey],["turn_id",t.turnId],["source_seq",t.sourceSeq],["reason",xi(b)]],de={TAG:"Log",event:"codex.turn_completed_with_unsupported_tool_call_ignored",fields:Object.fromEntries(G)};i.push(de)}else if(b!==void 0){let G=[["thread_key",n.threadKey],["turn_id",t.turnId],["source_seq",t.sourceSeq],["reason",xi(b)]],de={TAG:"Log",event:"codex.turn_completed_with_protocol_failure",fields:Object.fromEntries(G)};i.push(de)}if(_){let Pe={TAG:"Log",event:"codex.agent_turn_narration_only_no_reply",fields:Object.fromEntries([["thread_key",n.threadKey],["turn_id",t.turnId],["source_seq",t.sourceSeq],["streamed_item_count",t.items.length],["snapshot_item_count",s.length],["agent_reply_tool_call_seen",t.agentReplyToolCallSeen],["agent_action_tool_call_seen",t.agentActionToolCallSeen],["retryable_empty_turn",it],["empty_turn_loop_guard_tripped",J]])};i.push(Pe)}if(!m){let G=t.lastUpstreamErrorHttpStatus,Pe=[["thread_key",n.threadKey],["turn_id",t.turnId],["source_seq",t.sourceSeq],["streamed_item_count",t.items.length],["snapshot_item_count",s.length],["notification_count",t.notificationCount],["error_notification_count",t.errorNotificationCount],["model_interaction_seen",t.modelInteractionSeen],["last_error_diagnostic_text",xi(t.lastErrorDiagnosticText)],["last_upstream_error_reason",xi(t.lastUpstreamErrorReason)],["last_upstream_error_summary",xi(t.lastUpstreamErrorSummary)],["empty_turn_cause",xi(N(v,Ct=>Ct.cause))],["tool_fatal_seen",Z],["tool_fatal_detail",xi(t.toolFatalDetail)],["upstream_rejected_seen",A],["upstream_rejected_detail",xi(t.upstreamRejectedDetail)],["upstream_terminal_4xx",W],["last_upstream_error_http_status",G!==void 0?G:null],["provider_outage_flagged",R],["isolated_rejection_retry_granted",K],["rejection_disposition",L!==void 0?L.dispositionKind:null],["consecutive_isolated_rejections",e.consecutiveIsolatedRejections],["retryable_empty_turn",it],["empty_turn_loop_guard_tripped",J],["cost_cap_auto_retry_suppressed",he]],ze={TAG:"Log",event:"codex.turn_completed_without_assistant_output",fields:Object.fromEntries(Pe)};i.push(ze)}let Zt=w(n.sessionExecutesRecoveryGrants,!1)&&Ie,Qt;if(Qe!==void 0){let G=k(n.ladderHistoryForSeq,ze=>ze(t.sourceSeq,At)),Pe=t.lastUpstreamErrorSummary,de;if(Pe!==void 0)de=[["upstream_error",Pe]];else{let ze=e.lastUpstreamErrorSummary;de=ze!==void 0?[["upstream_error",ze]]:[]}Qt=[["status",Zt?"recovering":"failed"],["reason",Qe]].concat((it&&!Zt?[["retryable",!0]]:[]).concat([["fate",At]])).concat((G!==void 0?[["ladder",G]]:[]).concat(j?[["failure_class","edge_blocked"]]:[]).concat(de))}else Qt=[["status","processed"]];let er=Object.fromEntries([["thread_key",n.threadKey],["turn_id",t.turnId],["seq",t.sourceSeq]].concat(Qt)),ot={TAG:"Enqueue",kind:ea,data:er,coalesceKey:void 0,resolution:"MustAck"};i.push(ot),Qe===void 0&&(e.lastUpstreamErrorSummary=void 0),i.push(Qe!==void 0?{TAG:"TurnTerminal",turnId:t.turnId,outcome:"failed",reason:Qe,retryableEmptyTurn:Ie,autoResumeMidStreamStall:!1,fate:At}:{TAG:"TurnTerminal",turnId:t.turnId,outcome:"completed",reason:void 0,retryableEmptyTurn:!1,autoResumeMidStreamStall:!1,fate:void 0}),e.turns.delete(t.turnId),Rp(e,t.turnId)}function _j(e,t,r,n){switch(t.TAG){case"HarnessNotification":case"CompletionSnapshot":break;case"Lifecycle":return O6(e,t.kind,t.reason,r,n)}switch(e.phase){case"running":switch(t.TAG){case"HarnessNotification":return A6(e,t._0,r,n);case"CompletionSnapshot":let c=t.turnId,f=e.bufferedTurns.get(c);if(f!==void 0){f.push(t);return}else return C6(e,c,t.snapshot,r,n);case"Lifecycle":return}case"closing":let o=[["source",ql(t)]],s={TAG:"Log",event:"pipeline.loop.event_after_close",fields:Object.fromEntries(o)};n.push(s);return;case"dead":let l=[["source",ql(t)]],u={TAG:"Log",event:"pipeline.loop.event_after_death",fields:Object.fromEntries(l)};n.push(u);return}}function j6(e,t,r){e.bufferedTurns.keys().toArray().forEach(n=>{if(t.sourceSeqForTurn(n)===void 0)return;let o=w(e.bufferedTurns.get(n),[]);e.bufferedTurns.delete(n);let s={TAG:"Log",event:"pipeline.loop.buffered_turn_drained",fields:Object.fromEntries([["turn_id",n],["buffered_event_count",o.length]])};r.push(s),o.forEach(l=>_j(e,l,t,r))})}function gj(e,t,r){let n=[];return e.phase==="running"&&j6(e,r,n),_j(e,t,r,n),n}var yw=2;var z6=[500,1e3,2500,5e3,1e4,3e4],N6=1440*60*1e3;function $p(e,t){return e+"\0"+t}function yj(e,t){let r=Math.max(1,Math.ceil(t*e.length)|0);return w(e[r-1|0],0)}function G6(e){if(e.length===0)return;let t=e.toSorted((r,n)=>r-n);return{p50Ms:yj(t,.5),p95Ms:yj(t,.95),maxMs:w(t[t.length-1|0],0),ackedInWindow:t.length}}function F6(e){return new Promise((t,r)=>{setTimeout(()=>t(),e)})}function bj(e){let t=e.log,r=e.onPermanentFailure,n=e.builders,i={contents:e.threadKey},o=w(e.now,()=>Date.now()),a=w(e.retryDelaysMs,z6.slice()),s={contents:[]},l={contents:0},d=new Map,u={contents:new Map},c=[],f={contents:1},h={contents:0},m={contents:0},p={contents:0},_={contents:0},g={contents:0},b={contents:0},y=[],S={contents:0},v={contents:!1},A={contents:!0},R={contents:!1},F={contents:void 0},j={contents:void 0},ie=Math.max(1,w(e.maxInFlightPushes,1)),L={contents:0},K={contents:[]},oe={contents:Promise.resolve()},W=()=>s.contents[l.contents],Z=()=>({totalEnqueued:h.contents,totalAcked:m.contents,totalDroppedBestEffort:_.contents,totalPermanentFailures:g.contents,totalExpiredOnRecovery:b.contents,lastEntrySeq:f.contents-1}),I=e.persistDir;if(I!==void 0){let V=Xv(I,i.contents),te=bM(V,t),re=w(e.journalRecoveryMaxAgeMs,N6),Ke=o(),et=[];te.pendingEntries.forEach(ft=>{if(Ke-ft.enqueuedAtMs>re){et.push(ft);return}let Rt={entry:ft,state:"EntryQueued",outcome:void 0,retryTimer:void 0};s.contents.push(Rt);let bt=ft.coalesceKey;if(bt!==void 0){d.set($p(ft.kind,bt),Rt);return}}),u.contents=te.kv,h.contents=te.counters.totalEnqueued,m.contents=te.counters.totalAcked,_.contents=te.counters.totalDroppedBestEffort,g.contents=te.counters.totalPermanentFailures,b.contents=te.counters.totalExpiredOnRecovery+et.length|0,f.contents=te.counters.lastEntrySeq+1;let ut=SM(V,()=>({pendingEntries:s.contents.slice(l.contents).map(ft=>ft.entry),kv:u.contents,counters:Z()}),t,e.journalCompactionThreshold,void 0);if(j.contents=ut,et.length!==0){et.forEach(bt=>ut.appendExpired(bt.entrySeq));let ft=et.map(bt=>Math.max(0,Ke-bt.enqueuedAtMs)),Rt=new Set(et.map(bt=>bt.kind));t("outbox_recovery_expired",Object.fromEntries([["level","warn"],["threadKey",i.contents],["expiredEntries",et.length],["survivingEntries",s.contents.length-l.contents|0],["maxAgeMs",re],["oldestAgeMs",He(ft,0,(bt,Et)=>Math.max(bt,Et))],["newestAgeMs",He(ft,Number.POSITIVE_INFINITY,(bt,Et)=>Math.min(bt,Et))],["kinds",Rt.values().toArray().map(bt=>bt)]]))}(s.contents.length-l.contents|0)>0&&t("outbox_recovered",Object.fromEntries([["threadKey",i.contents],["pendingEntries",s.contents.length-l.contents|0],["nextEntrySeq",f.contents]]))}let U={remember:(V,te)=>{u.contents.set(V,te);let re=j.contents;if(re!==void 0)return re.appendKv(V,te)},recall:V=>u.contents.get(V)},ae=()=>{if(l.contents=l.contents+1|0,l.contents>=64&&l.contents<<1>=s.contents.length){s.contents=s.contents.slice(l.contents),l.contents=0;return}},ce=()=>{let V=W(),te=c.length-1|0;for(;te>=0;){let re=c[te];if(re!==void 0&&(V!==void 0?V.entry.entrySeq>re.upToSeq:!0)){c.splice(te,1);let et=re.timer;et!==void 0&&clearTimeout(ue(et)),re.resolve({TAG:"Ok",_0:void 0})}te=te-1|0}},he=V=>{let te=V.entry.coalesceKey;if(te===void 0)return;let re=$p(V.entry.kind,te),Ke=d.get(re);if(Ke!==void 0&&Ke===V){d.delete(re);return}},Ie=(V,te)=>{let re=V.entry;switch(te.TAG){case"OutcomeAck":let Ke=n[re.kind];if(Ke!==void 0){let bt=Ke.onReply;if(bt!==void 0){let Et;try{bt(re.data,te._0,U),Et={TAG:"Ok",_0:void 0}}catch(yo){let sa=X(yo);Et={TAG:"Error",_0:je(sa)}}Et.TAG!=="Ok"&&t("outbox_on_reply_failed",Object.fromEntries([["threadKey",i.contents],["entrySeq",re.entrySeq],["kind",re.kind],["error",Et._0.message]]))}}let et=j.contents;et!==void 0&&et.appendAck(re.entrySeq);break;case"OutcomeSkip":let ut=te._0;t("outbox_entry_skipped",Object.fromEntries([["threadKey",i.contents],["entrySeq",re.entrySeq],["kind",re.kind],["reason",ut]]));let ft=j.contents;ft!==void 0&&ft.appendSkip(re.entrySeq,ut);break;case"OutcomeFail":if(re.resolution==="MustAck"){let bt=j.contents;bt!==void 0&&bt.appendFail(re.entrySeq);let Et;try{r(re,te._0),Et={TAG:"Ok",_0:void 0}}catch(yo){let sa=X(yo);Et={TAG:"Error",_0:je(sa)}}Et.TAG!=="Ok"&&t("outbox_permanent_failure_callback_failed",Object.fromEntries([["threadKey",i.contents],["entrySeq",re.entrySeq],["error",Et._0.message]]))}else{let bt=j.contents;bt!==void 0&&bt.appendDrop(re.entrySeq)}break}he(V),ae(),ce()},Be=()=>{let V=!0;for(;V;){let te=W();if(te!==void 0){let re=te.outcome;re!==void 0?Ie(te,re):V=!1}else V=!1}},we=(V,te)=>{let re=V.entry;switch(te.TAG){case"OutcomeAck":case"OutcomeSkip":break;case"OutcomeFail":let Ke=te._0;re.resolution==="MustAck"?(g.contents=g.contents+1|0,t("outbox_permanent_failure",Object.fromEntries([["threadKey",i.contents],["entrySeq",re.entrySeq],["kind",re.kind],["attempts",re.attempts],["error",Ke]]))):(_.contents=_.contents+1|0,t("outbox_dropped_best_effort",Object.fromEntries([["threadKey",i.contents],["entrySeq",re.entrySeq],["kind",re.kind],["attempts",re.attempts],["error",Ke]])));break}V.outcome=te,V.state="EntryQueued"},dt=V=>{y.length<256?y.push(V):y[S.contents]=V;let te=S.contents+1|0;S.contents=te>=256?0:te},Qe=V=>{let te=V.retryTimer;if(te!==void 0){clearTimeout(ue(te)),V.retryTimer=void 0;return}},it=()=>{if(L.contents>0)return;let V=K.contents;K.contents=[],V.forEach(te=>te())},At=()=>{let V=W();return V===void 0||V.state!=="EntryQueued"||V.outcome!==void 0?!1:V.retryTimer!==void 0},Zt={contents:()=>{}},Qt=(V,te)=>{Qe(V);let re=setTimeout(()=>{if(V.retryTimer=void 0,!(R.contents||v.contents||V.outcome!==void 0))return Zt.contents()},te|0);re.unref(),V.retryTimer=qe(re)},er=async(V,te,re)=>{let Ke=V.entry,et=o(),ut;try{ut=await e.push(te[0],te[1],te[2],re)}catch(bt){let Et=X(bt);ut={TAG:"PushFailed",message:je(Et).message,budgetExempt:!1}}if(ut.TAG==="Acked")return re(),dt(Math.max(0,o()-et)),m.contents=m.contents+1|0,we(V,{TAG:"OutcomeAck",_0:ut._0});let ft=ut.message;if(re(),V.state="EntryQueued",ut.budgetExempt)return Ke.attempts=Ke.attempts-1|0,p.contents=p.contents+1|0,t("outbox_push_connection_wait",Object.fromEntries([["threadKey",i.contents],["entrySeq",Ke.entrySeq],["kind",Ke.kind],["error",ft]])),!R.contents&&!v.contents?Qt(V,1e3):void 0;let Rt=a[Ke.attempts-1|0];return Rt!==void 0?(p.contents=p.contents+1|0,t("outbox_push_retry",Object.fromEntries([["threadKey",i.contents],["entrySeq",Ke.entrySeq],["kind",Ke.kind],["attempt",Ke.attempts],["delayMs",Rt],["error",ft]])),!R.contents&&!v.contents?Qt(V,Rt):void 0):we(V,{TAG:"OutcomeFail",_0:ft})},ot=async V=>{let te=V.entry,re=oe.contents,Ke={contents:()=>{}};oe.contents=new Promise((Rt,bt)=>{Ke.contents=Rt});let et={contents:!1},ut=()=>{if(!et.contents)return et.contents=!0,Ke.contents()};if(V.state="EntryPushing",L.contents=L.contents+1|0,await re,R.contents||v.contents||V.outcome!==void 0){V.state="EntryQueued",ut(),L.contents=L.contents-1|0;return}let ft=n[te.kind];if(ft!==void 0){let Rt;try{Rt=ft.build(te.data,U)}catch(bt){let Et=X(bt);Rt={TAG:"BuildFailed",_0:je(Et).message}}switch(Rt.TAG){case"BuildPush":te.attempts=te.attempts+1|0,await er(V,[Rt.event,Rt.payload,Rt.timeoutMs],ut),L.contents=L.contents-1|0;return;case"BuildSkip":ut(),we(V,{TAG:"OutcomeSkip",_0:Rt._0}),L.contents=L.contents-1|0;return;case"BuildFailed":ut(),we(V,{TAG:"OutcomeFail",_0:Rt._0}),L.contents=L.contents-1|0;return}}else{ut(),we(V,{TAG:"OutcomeFail",_0:"no outbox builder registered for kind "+te.kind}),L.contents=L.contents-1|0;return}},G=()=>{if(Be(),R.contents||v.contents||At())return it();let V=l.contents;for(;V<s.contents.length&&L.contents<ie;){let te=s.contents[V];te!==void 0&&te.state==="EntryQueued"&&te.outcome===void 0&&(te.retryTimer!==void 0||Dn(ot(te).then(()=>G()),ut=>(t("outbox_drain_loop_error",Object.fromEntries([["threadKey",i.contents]])),G(),Promise.resolve()))),V=V+1|0}it()};Zt.contents=G;let Pe=()=>{if(v.contents||R.contents)return;if(W()!==void 0){Promise.resolve().then(()=>{if(!R.contents&&!v.contents)return G()});return}},de=V=>{let te=f.contents-1,re=W();return(re!==void 0?re.entry.entrySeq>te:!0)?Promise.resolve({TAG:"Ok",_0:void 0}):new Promise((et,ut)=>{let ft={upToSeq:te,resolve:et,timer:void 0};V!==void 0&&(ft.timer=qe(setTimeout(()=>{let Rt=c.indexOf(ft);Rt===-1||c.splice(Rt,1),et({TAG:"Error",_0:"outbox flush for "+i.contents+" timed out after "+V.toString()+"ms with "+(s.contents.length-l.contents|0).toString()+" entries pending"})},V|0))),c.push(ft)})},ze=async V=>{A.contents=!1;let te=await de(V);te.TAG!=="Ok"&&t("outbox_close_flush_timeout",Object.fromEntries([["threadKey",i.contents],["depth",s.contents.length-l.contents|0],["error",te._0]])),R.contents=!0;let re=l.contents;for(;re<s.contents.length;){let ut=s.contents[re];ut!==void 0&&Qe(ut),re=re+1|0}L.contents>0&&await Promise.race([new Promise((ut,ft)=>{K.contents.push(()=>ut())}),F6(1e3)]);let Ke=c.slice();c.splice(0,c.length),Ke.forEach(ut=>{let ft=ut.timer;ft!==void 0&&clearTimeout(ue(ft)),ut.resolve({TAG:"Error",_0:"outbox for "+i.contents+" closed"})});let et=j.contents;if(et!==void 0)return await et.close()},Ct=(V,te,re)=>{if(V===void 0)return re;let Ke=V.coalesce;if(Ke===void 0)return re;let et;try{et={TAG:"Ok",_0:Ke(te.data,re)}}catch(ut){let ft=X(ut);et={TAG:"Error",_0:je(ft)}}return et.TAG==="Ok"?et._0:(t("outbox_coalesce_failed",Object.fromEntries([["threadKey",i.contents],["entrySeq",te.entrySeq],["kind",te.kind],["error",et._0.message]])),re)},on={enqueue:V=>{if(!A.contents)return{TAG:"Error",_0:"outbox for "+i.contents+" is closed"};h.contents=h.contents+1|0;let te=V.coalesceKey,re;if(te!==void 0){let bt=$p(V.kind,te),Et=d.get(bt);if(Et!==void 0)if(Et.state==="EntryQueued")if(Et.outcome!==void 0)re=void 0;else{Et.entry.data=Ct(n[V.kind],Et.entry,V.data);let nd=j.contents;nd!==void 0&&nd.appendCoalesce(Et.entry.entrySeq,Et.entry.data),re=Et.entry.entrySeq}else re=void 0;else re=void 0}else re=void 0;if(re!==void 0)return{TAG:"Ok",_0:re};let Ke=f.contents;f.contents=f.contents+1;let et={entrySeq:Ke,kind:V.kind,data:V.data,coalesceKey:V.coalesceKey,resolution:V.resolution,attempts:0,enqueuedAtMs:o()},ut={entry:et,state:"EntryQueued",outcome:void 0,retryTimer:void 0};s.contents.push(ut);let ft=V.coalesceKey;ft!==void 0&&d.set($p(V.kind,ft),ut);let Rt=j.contents;return Rt!==void 0&&Rt.appendEnqueue(et),Pe(),{TAG:"Ok",_0:Ke}},flush:de,pause:()=>{v.contents=!0},resume:()=>{if(!v.contents)return;v.contents=!1;let V=l.contents;for(;V<s.contents.length;){let te=s.contents[V];te!==void 0&&(te.entry.attempts=0,Qe(te)),V=V+1|0}Pe()},metrics:()=>{let V=W(),te=N(j.contents,re=>re.status());return{depth:s.contents.length-l.contents|0,oldestEntryAgeMs:N(V,re=>Math.max(0,o()-re.entry.enqueuedAtMs)),totalEnqueued:h.contents,totalAcked:m.contents,totalRetried:p.contents,totalDroppedBestEffort:_.contents,totalPermanentFailures:g.contents,totalExpiredOnRecovery:b.contents,totalJournalWriteFailures:w(N(te,re=>re.totalWriteFailures),0),journalDegraded:w(N(te,re=>re.degraded),!1),paused:v.contents,pushLatency:G6(y)}},close:V=>{let te=F.contents;if(te!==void 0)return te;let re=ze(w(V,3e4));return F.contents=re,re},journalSettled:()=>{let V=j.contents;return V!==void 0?V.settled():Promise.resolve()},rekeyJournal:V=>{if(V===i.contents)return;i.contents=V;let te=e.persistDir,re=j.contents;if(te!==void 0&&re!==void 0)return re.rekey(Xv(te,V))}};return Pe(),on}var q6=10*6e4;function L6(e){switch(e){case"collabAgentToolCall":case"commandExecution":case"contextCompaction":case"dynamicToolCall":case"mcpToolCall":case"terminalInput":return!0;default:return!1}}function ps(e){let t=xr(e);return t!==void 0?w(Rr(ue(t)),"unknown error"):"unknown error"}function Sj(e){let t=dj(),r=e.threadKey,n=e.instanceId,i=e.sourceSeqForTurn,o=e.autoRetryAttemptsForSeq,a=e.midStreamResumeAttemptAtMsForSeq,s=e.freshSessionResumeAttemptAtMsForSeq,l=e.ladderHistoryForSeq,d=e.sessionExecutesRecoveryGrants,u=e.linzumiAgentSession,c={threadKey:r,instanceId:n,sourceSeqForTurn:i,autoRetryAttemptsForSeq:o,midStreamResumeAttemptAtMsForSeq:a,freshSessionResumeAttemptAtMsForSeq:s,ladderHistoryForSeq:l,sessionExecutesRecoveryGrants:d,linzumiAgentSession:u},f=[],h=w(e.now,()=>Date.now()),m=new Map,p=new Map,_=new Map,g=new Map,b=new Set,y=w(e.bufferedTurnMaxAgeMs,q6),S=w(e.bufferedTurnMaxEvents,1e4),v=w(e.bufferedTurnSweepIntervalMs,3e4),A={contents:!1},R={contents:!0},F={contents:void 0},j=(U,ae)=>{try{return e.log(U,Object.fromEntries(ae))}catch{return}},ie=U=>t.turns.has(U)?!0:t.bufferedTurns.has(U),L=()=>{t.turns.keys().toArray().forEach(U=>{if(!m.has(U)){m.set(U,h());return}}),m.keys().toArray().forEach(U=>{if(!t.turns.has(U)){m.delete(U);return}}),t.bufferedTurns.keys().toArray().forEach(U=>{if(!p.has(U)){p.set(U,h());return}}),p.keys().toArray().forEach(U=>{if(!t.bufferedTurns.has(U)){p.delete(U),b.delete(U);return}}),_.keys().toArray().forEach(U=>{if(!ie(U)){_.delete(U);return}}),g.keys().toArray().forEach(U=>{if(!ie(U)){g.delete(U);return}})},K=(U,ae)=>{if(ie(U)){_.set(U,{atMs:h(),activityKind:ae});return}},oe=U=>{switch(U.TAG){case"HarnessNotification":let ae=U._0,ce=ae.method;if(ce===ec||ce===Yl)return;let he=Xu(w(ae.params,{})),Ie=he!==void 0?he:Ip(t);return Ie!==void 0?K(Ie,ce):void 0;case"CompletionSnapshot":case"Lifecycle":return}},W=U=>{switch(U.TAG){case"HarnessNotification":let ae=U._0,ce=ae.method;if(ce!=="item/started"&&ce!=="item/completed"&&ce!=="response_item")return;let he=w(ae.params,{}),Ie=Xu(he),Be=Ie!==void 0?Ie:Ip(t);if(Be===void 0||!ie(Be))return;let we=Kl(he);if(we===void 0||we==="")return;if(ce==="item/started"){let Qe=k(Ue(he,"item"),Zt=>E(Zt,"type"));if(Qe===void 0||!L6(Qe))return;let it=g.get(Be),At;if(it!==void 0)At=it;else{let Zt=new Map;g.set(Be,Zt),At=Zt}At.set(we,{kind:Qe,startedAtMs:h()});return}let dt=g.get(Be);if(dt!==void 0){dt.delete(we);return}else return;case"CompletionSnapshot":case"Lifecycle":return}},Z=()=>{if(!R.contents||t.phase!=="running")return!1;let U=h(),ae={contents:!1};return t.bufferedTurns.entries().toArray().forEach(ce=>{let he=ce[0];if(b.has(he))return;let Ie=ce[1],Be=U-w(p.get(he),U),we=Be>y,dt=Ie.length>S;if(we||dt){b.add(he),j("pipeline.loop.buffered_turn_overdue",[["level","warn"],["thread_key",e.threadKey],["turn_id",he],["buffered_event_count",Ie.length],["age_ms",Be],["max_age_ms",y],["max_events",S]]),f.push({TAG:"HarnessNotification",_0:{method:Yl,params:Object.fromEntries([["turnId",he],["reason",dt?"turn source mapping never arrived ("+Ie.length.toString()+" buffered events exceeded the "+S.toString()+" cap)":"turn source mapping never arrived within "+y.toString()+"ms"]])}}),ae.contents=!0;return}}),ae.contents},I=()=>{if(A.contents)return;A.contents=!0;let U=!0;for(;U;){let ae=f.shift();if(ae!==void 0){let ce;try{ce=gj(t,ae,c)}catch(he){let Ie=X(he);j("pipeline.loop.event_processing_failed",[["thread_key",e.threadKey],["source",ql(ae)],["message",ps(Ie)]]),ce=void 0}ce!==void 0&&(L(),oe(ae),W(ae),ce.forEach(he=>{try{switch(he.TAG){case"Enqueue":return e.outboxEnqueue({kind:he.kind,data:he.data,coalesceKey:he.coalesceKey,resolution:he.resolution});case"RequestSnapshot":return e.requestSnapshot(he.turnId);case"TurnTerminal":return e.onTurnTerminal(he.turnId,he.outcome,he.reason,he.retryableEmptyTurn,he.autoResumeMidStreamStall,w(he.freshSessionResumeMidStreamStall,!1),he.fate);case"Log":try{return e.log(he.event,he.fields)}catch{return}}}catch(Ie){let Be=X(Ie),we;switch(he.TAG){case"Enqueue":we="enqueue";break;case"RequestSnapshot":we="requestSnapshot";break;case"TurnTerminal":we="turnTerminal";break;case"Log":we="log";break}return j("pipeline.loop.effect_failed",[["thread_key",e.threadKey],["effect",we],["message",ps(Be)]])}}),Z())}else U=!1}A.contents=!1},fe;if(v>0){let U=setInterval(()=>{if(Z())return I()},v);U.unref(),fe=qe(U)}else fe=void 0;let J=U=>{let ae=g.get(U);return ae!==void 0?ae.values().toArray().map(ce=>({kind:ce.kind,startedAtMs:ce.startedAtMs})):[]};return{submit:U=>{try{return R.contents?(f.push(U),I()):j("pipeline.loop.event_after_drain",[["thread_key",e.threadKey],["source",ql(U)]])}catch(ae){let ce=X(ae);return j("pipeline.loop.submit_failed",[["thread_key",e.threadKey],["message",ps(ce)]])}},metrics:()=>({queueDepth:f.length,phase:t.phase,activeTurns:t.turns.values().toArray().map(U=>({turnId:U.turnId,sourceSeq:U.sourceSeq,startedAtMs:w(m.get(U.turnId),h()),lastActivityAtMs:N(_.get(U.turnId),ae=>ae.atMs),lastActivityKind:N(_.get(U.turnId),ae=>ae.activityKind),openItems:J(U.turnId)})),bufferedTurns:t.bufferedTurns.entries().toArray().map(U=>{let ae=U[0];return{turnId:ae,bufferedEventCount:U[1].length,firstBufferedAtMs:w(p.get(ae),h()),lastActivityAtMs:N(_.get(ae),ce=>ce.atMs),lastActivityKind:N(_.get(ae),ce=>ce.activityKind),openItems:J(ae)}})}),noteTurnActivity:(U,ae)=>{try{return K(U,ae)}catch(ce){let he=X(ce);return j("pipeline.loop.note_activity_failed",[["thread_key",e.threadKey],["message",ps(he)]])}},drainAndClose:U=>{let ae=F.contents;if(ae!==void 0)return ae;let ce=(async()=>{R.contents=!1,fe!==void 0&&clearInterval(ue(fe)),await Promise.resolve(),I();let he;try{he=await e.outboxFlush(U)}catch(Ie){let Be=X(Ie);return j("pipeline.loop.drain_flush_failed",[["thread_key",e.threadKey],["message",ps(Be)]])}if(he.TAG!=="Ok")return j("pipeline.loop.drain_flush_failed",[["thread_key",e.threadKey],["message",he._0]])})();return F.contents=ce,ce}}}var U6=10*6e4,W6={emittedTotalEnqueued:0,emittedTotalAcked:0,emittedTotalRetried:0,emittedTotalDroppedBestEffort:0,emittedTotalPermanentFailures:0,emittedTotalExpiredOnRecovery:0,emittedTotalJournalWriteFailures:0,emittedJournalDegraded:!1};function Z6(e){return e.activeTurns.map(t=>({candidateTurnId:t.turnId,candidateSourceSeq:t.sourceSeq,sinceMs:t.startedAtMs,buffered:!1,candidateLastActivityAtMs:t.lastActivityAtMs,candidateLastActivityKind:t.lastActivityKind,candidateOpenItems:t.openItems})).concat(e.bufferedTurns.map(t=>({candidateTurnId:t.turnId,candidateSourceSeq:void 0,sinceMs:t.firstBufferedAtMs,buffered:!0,candidateLastActivityAtMs:t.lastActivityAtMs,candidateLastActivityKind:t.lastActivityKind,candidateOpenItems:t.openItems})))}function V6(e){return He(e,void 0,(t,r)=>t!==void 0&&t<=r.startedAtMs?t:r.startedAtMs)}function H6(e,t,r){return e.depth>0||e.paused||t.queueDepth>0||t.activeTurns.length!==0||t.bufferedTurns.length!==0||e.totalEnqueued!==r.emittedTotalEnqueued||e.totalAcked!==r.emittedTotalAcked||e.totalRetried!==r.emittedTotalRetried||e.totalDroppedBestEffort!==r.emittedTotalDroppedBestEffort||e.totalPermanentFailures!==r.emittedTotalPermanentFailures||e.totalExpiredOnRecovery!==r.emittedTotalExpiredOnRecovery||e.totalJournalWriteFailures!==r.emittedTotalJournalWriteFailures?!0:e.journalDegraded!==r.emittedJournalDegraded}function B6(e){return He(e,void 0,(t,r)=>t!==void 0&&t.startedAtMs<=r.startedAtMs?t:r)}function Sw(e){return e}function vw(e){return new Set(e).values().toArray().toSorted(bs)}function wj(e){let t=w(e.now,()=>Date.now()),r=w(e.intervalMs,3e4),n=w(e.turnStalledThresholdMs,U6),i={contents:W6},o=new Set,a=new Set,s={contents:!1},l=(c,f,h,m)=>{let p=new Set(c.map(_=>_.candidateTurnId));o.values().toArray().forEach(_=>{if(!p.has(_)){o.delete(_);return}}),a.values().toArray().forEach(_=>{if(!p.has(_)){a.delete(_);return}}),c.forEach(_=>{let g=Math.max(0,m-_.sinceMs),b=Math.max(_.sinceMs,w(_.candidateLastActivityAtMs,_.sinceMs)),y=Math.max(0,m-b),S=vw(h.filter(F=>F.waitTurnId===_.candidateTurnId).map(F=>F.waitKind));if(S.length===0){a.delete(_.candidateTurnId);let F=_.candidateOpenItems.length!==0?n*2:n;if(!(y>=F&&!o.has(_.candidateTurnId)))return;let j=V6(_.candidateOpenItems);o.add(_.candidateTurnId);let ie=_.candidateSourceSeq,L=_.candidateLastActivityKind,K=_.candidateLastActivityAtMs,oe=f.oldestEntryAgeMs;return e.log("pipeline.turn_stalled",Object.fromEntries([["level","warn"],["thread_key",e.threadKey],["turn_id",_.candidateTurnId],["source_seq",ie!==void 0?ie:null],["buffered",_.buffered],["turn_age_ms",g],["quiet_ms",y],["last_activity_kind",L!==void 0?L:null],["last_activity_age_ms",K!==void 0?Math.max(0,m-K):null],["threshold_ms",n],["effective_threshold_ms",F],["open_item_count",_.candidateOpenItems.length],["open_item_kinds",vw(_.candidateOpenItems.map(W=>W.kind)).map(Sw)],["open_item_oldest_age_ms",j!==void 0?Math.max(0,m-j):null],["outbox_depth",f.depth],["oldest_entry_age_ms",oe!==void 0?oe:null],["paused",f.paused]]))}if(!(y>=n&&!a.has(_.candidateTurnId)))return;a.add(_.candidateTurnId);let v=_.candidateSourceSeq,A=_.candidateLastActivityKind,R=_.candidateLastActivityAtMs;e.log("pipeline.turn_waiting_on_user",Object.fromEntries([["thread_key",e.threadKey],["turn_id",_.candidateTurnId],["source_seq",v!==void 0?v:null],["buffered",_.buffered],["turn_age_ms",g],["quiet_ms",y],["last_activity_kind",A!==void 0?A:null],["last_activity_age_ms",R!==void 0?Math.max(0,m-R):null],["threshold_ms",n],["wait_kinds",S.map(Sw)],["open_item_count",_.candidateOpenItems.length],["open_item_kinds",vw(_.candidateOpenItems.map(F=>F.kind)).map(Sw)]]))})},d=()=>{if(s.contents)return;let c;try{let S=e.turnWaitStates;c=[e.outboxMetrics(),e.loopMetrics(),S!==void 0?S():[]]}catch(S){let v=X(S);e.log("pipeline.stats_sample_failed",Object.fromEntries([["thread_key",e.threadKey],["message",ps(v)]])),c=void 0}if(c===void 0)return;let f=c[1],h=c[0],m=t();if(l(Z6(f),h,c[2],m),!H6(h,f,i.contents))return;let p=B6(f.activeTurns),_=h.oldestEntryAgeMs,g=h.pushLatency,b=h.pushLatency,y=h.pushLatency;e.log("pipeline.stats",Object.fromEntries([["thread_key",e.threadKey],["outbox_depth",h.depth],["oldest_entry_age_ms",_!==void 0?_:null],["total_enqueued",h.totalEnqueued],["total_acked",h.totalAcked],["total_retried",h.totalRetried],["total_dropped_best_effort",h.totalDroppedBestEffort],["total_permanent_failures",h.totalPermanentFailures],["total_expired_on_recovery",h.totalExpiredOnRecovery],["total_journal_write_failures",h.totalJournalWriteFailures],["journal_degraded",h.journalDegraded],["push_latency_p50_ms",g!==void 0?g.p50Ms:null],["push_latency_p95_ms",b!==void 0?b.p95Ms:null],["push_latency_max_ms",y!==void 0?y.maxMs:null],["push_latency_window_acked",w(N(h.pushLatency,S=>S.ackedInWindow),0)],["paused",h.paused],["loop_queue_depth",f.queueDepth],["loop_phase",f.phase],["active_turn_count",f.activeTurns.length],["buffered_turn_count",f.bufferedTurns.length],["active_turn_id",p!==void 0?p.turnId:null],["active_turn_source_seq",p!==void 0?p.sourceSeq:null],["active_turn_age_ms",p!==void 0?Math.max(0,m-p.startedAtMs):null]])),i.contents={emittedTotalEnqueued:h.totalEnqueued,emittedTotalAcked:h.totalAcked,emittedTotalRetried:h.totalRetried,emittedTotalDroppedBestEffort:h.totalDroppedBestEffort,emittedTotalPermanentFailures:h.totalPermanentFailures,emittedTotalExpiredOnRecovery:h.totalExpiredOnRecovery,emittedTotalJournalWriteFailures:h.totalJournalWriteFailures,emittedJournalDegraded:h.journalDegraded}},u;if(r>0){let c=setInterval(d,r);c.unref(),u=qe(c)}else u=void 0;return{sample:d,stop:()=>{if(s.contents=!0,u!==void 0){clearInterval(ue(u));return}}}}var J6=[1e3,5e3];function oi(e,t){return k(e[t],Cr)}function Zi(e,t){return k(e[t],Sa)}function Xl(e,t){return k(e[t],Oe)}function ww(e,t){Object.entries(t).forEach(r=>{e[r[0]]=r[1]})}function rc(e){let t={};return ww(t,e),t}function Y6(e){let t=e.body;return typeof t=="string"?t:""}function X6(e){return w(Xl(e,"structured"),{})}function Q6(e){return e===Ul||e===Wl||e===Qo?!0:e===Zl}function e5(e,t){let r=oi(t,"turn_id");r!==void 0&&(e.turn_id=r);let n=oi(t,"item_key");n!==void 0&&(e.item_key=n);let i=Zi(t,"delta_index");i!==void 0&&(e.delta_index=i);let o=Zi(t,"stream_snapshot_index");if(o!==void 0){e.stream_snapshot_index=o;return}}function Tj(e,t,r){let n=t.traceparentForThread(r);if(n!==void 0){e.traceparent=n;return}}function t5(e){return{build:(t,r)=>{let n=e.wire(),i=n.threadId,o=n.harnessSessionId;if(i===void 0)return{TAG:"BuildSkip",_0:"session_thread_unbound"};if(o===void 0)return{TAG:"BuildSkip",_0:"session_thread_unbound"};let a=oi(t,"client_message_id");if(a===void 0)return{TAG:"BuildSkip",_0:"missing_client_message_id"};let s=oi(t,"turn_id"),l=Zi(t,"source_seq"),d={};s!==void 0&&(d.turn_id=s),d.stream_key=a;let u=rc(d),c=Xl(t,"local_runner_runtime_metadata");c!==void 0&&ww(u,c);let f=rc(e.rowEnvelope("codex_output",o,l,u)),h=n.rootSeq;h!==void 0&&(f.reply_to_seq=h),l!==void 0&&(f.source_message_seq=l),ww(f,d);let m=rc(X6(t));m.stream_key=a,f.structured=m;let p={};p.workspace=n.workspaceSlug,p.channel=n.channelSlug,p.thread_id=i,p.stream_key=a;let _=n.leaseEpoch;return _!==void 0&&(p.lease_epoch=_),p.body=Y6(t),p.payload=f,p.client_message_id=a,e5(p,t),Tj(p,e,i),{TAG:"BuildPush",event:"session:stream_thread_message",payload:p,timeoutMs:void 0}},onReply:void 0,coalesce:void 0}}function r5(e){return{build:(t,r)=>{let n=e.wire(),i=n.threadId;if(i===void 0)return{TAG:"BuildSkip",_0:"session_thread_unbound"};let o=Zi(t,"seq"),a=oi(t,"status");if(o===void 0)return{TAG:"BuildSkip",_0:"malformed_message_state_entry"};if(a===void 0)return{TAG:"BuildSkip",_0:"malformed_message_state_entry"};let s=se(t.suppress_terminal_for_recovered_turn,!0),l=oi(t,"turn_id"),d=e.isRecoveredTurn,u=l!==void 0&&d!==void 0?d(l)===!0:!1;if(s||u)return{TAG:"BuildSkip",_0:"terminal_for_recovered_turn"};let c={};c.workspace=n.workspaceSlug,c.channel=n.channelSlug,c.thread_id=i,c.instance_id=e.instanceId;let f=n.harnessSessionId;f!==void 0&&(c.codex_thread_id=f),c.seq=o,c.status=a;let h=oi(t,"reason");h!==void 0&&(c.reason=h);let m=t.retryable;typeof m=="boolean"&&m&&(c.retryable=!0);let p=t.fate;typeof p=="string"&&qt(gp(p))&&(c.fate=p);let _=Xl(t,"ladder");_!==void 0&&(c.ladder=_),t.failure_class==="edge_blocked"&&(c.failure_class="edge_blocked");let b=oi(t,"upstream_error");b!==void 0&&(c.upstream_error=b);let y=oi(t,"turn_id");y!==void 0&&(c.turn_id=y);let S=n.leaseEpoch;return S!==void 0&&(c.lease_epoch=S),Tj(c,e,i),{TAG:"BuildPush",event:"message_state",payload:c,timeoutMs:void 0}},onReply:void 0,coalesce:void 0}}function n5(e){return{build:(t,r)=>{let n=Zi(t,"session_id");if(n!==void 0&&tR(n))return{TAG:"BuildSkip",_0:"adt_generation_fenced"};let i={},o=a=>{i[a]=w(t[a],null)};return o("session_id"),o("lease_epoch"),o("frame_index"),o("frame_kind"),o("body"),o("byte_len"),{TAG:"BuildPush",event:nR,payload:i,timeoutMs:void 0}},onReply:(t,r,n)=>{let i;if(typeof r=="object"&&r!==null&&!Array.isArray(r)){let c=r.status,f=r.response;i=typeof c=="string"&&typeof f=="object"&&f!==null&&!Array.isArray(f)?f:r}else i=void 0;let o;if(i!==void 0){let c=i.adt;o=typeof c=="object"&&c!==null&&!Array.isArray(c)?c:void 0}else o=void 0;if(o===void 0)return;let a=Zi(t,"session_id"),s=(c,f)=>{let h=e.log;if(h!==void 0)return h(c,Object.fromEntries(f))},l=c=>c!==void 0?c:null;if(o.accepted===!1){let c=HP(o.reason);if(s("adt.append_rejected",[["session_id",l(a)],["presented_epoch",l(Zi(t,"lease_epoch"))],["frame_index",l(Zi(t,"frame_index"))],["reason",VS(c)]]),a===void 0)return;eR(a);let f=k(e.wire().threadId,HS);return f!==void 0&&f.binding.sessionId===a&&KP(f.emitter),s("adt.generation_fenced",[["session_id",a],["reason",VS(c)]])}if(o.duplicate===!0)return s("adt.frame_resend_accepted",[["session_id",l(a)],["frame_index",l(Zi(t,"frame_index"))]])},coalesce:void 0}}function i5(e){let t=t5(e);return Object.fromEntries([[Ul,t],[Wl,t],[Qo,t],[Zl,t],[ea,r5(e)],[BS,n5(e)]])}function Aj(e,t){if(e.error!==void 0)return[];let n=k(Xl(e,"result"),a=>Xl(a,"thread")),i=w(k(k(n,a=>a.turns),to),[]),o=Ge(i,Oe).find(a=>{let s=a.id;return typeof s=="string"?s===t:!1});return Ge(w(k(k(o,a=>a.items),to),[]),Oe)}var gie=new RegExp("^item-\\d+$");var Oj=D$;function o5(e){return new Promise((t,r)=>{setTimeout(()=>t(),e|0)})}function kj(e){let t=xr(e);return t!==void 0?w(Rr(ue(t)),"unknown error"):"unknown error"}function xj(e){return e!==void 0?e:null}function Cj(e){let t=i5({instanceId:e.instanceId,wire:e.wire,rowEnvelope:e.rowEnvelope,isRecoveredTurn:e.isRecoveredTurn,traceparentForThread:e.traceparentForThread,log:e.log}),r=bj({threadKey:e.threadKey,push:e.push,builders:t,persistDir:e.persistDir,retryDelaysMs:N(e.outboxRetryDelaysMs,p=>p.slice()),onPermanentFailure:(p,_)=>e.log("pipeline.outbox_entry_failed",Object.fromEntries([["thread_key",e.threadKey],["entry_seq",p.entrySeq],["kind",p.kind],["attempts",p.attempts],["item_key",xj(oi(p.data,"item_key"))],["turn_id",xj(oi(p.data,"turn_id"))],["message",_]])),log:e.log,now:void 0,maxInFlightPushes:w(e.outboxMaxInFlightPushes,16),journalCompactionThreshold:void 0,journalRecoveryMaxAgeMs:e.journalRecoveryMaxAgeMs}),n=p=>{let _=!1;if(p.kind===ea){let v=oi(p.data,"turn_id"),A=e.isRecoveredTurn;_=v!==void 0&&A!==void 0?A(v)===!0:!1}if(_){let v=rc(p.data);return v.suppress_terminal_for_recovered_turn=!0,{kind:p.kind,data:v,coalesceKey:p.coalesceKey,resolution:p.resolution}}if(!Q6(p.kind))return p;let g=Zi(p.data,"source_seq"),b=Xl(p.data,"local_runner_runtime_metadata"),y=b!==void 0?b:k(e.runtimeMetadataForSourceSeq,v=>v(g));if(y===void 0)return p;let S=rc(p.data);return S.local_runner_runtime_metadata=y,{kind:p.kind,data:S,coalesceKey:p.coalesceKey,resolution:p.resolution}},i=p=>{let _=r.enqueue(n(p));if(_.TAG!=="Ok")try{return e.log("pipeline.loop.effect_failed",Object.fromEntries([["thread_key",e.threadKey],["effect","enqueue"],["message",_._0]]))}catch{return}},o={postStreamedRow:Ul,streamSnapshot:Wl,finalizeRow:Qo,postCompletedRow:Zl,messageState:ea},a=p=>{let _=r.enqueue({kind:BS,data:VP(p),coalesceKey:void 0,resolution:"MustAck"});if(_.TAG!=="Ok")try{return e.log("pipeline.loop.effect_failed",Object.fromEntries([["thread_key",e.threadKey],["effect","enqueue"],["message",_._0]]))}catch{return}},s=p=>{let _=e.wire().threadId,g=k(_,HS);if(g===void 0)return i(p);let b=YP(g,p.kind,p.data,Date.now(),o);if(p.kind===ea)return b.forEach(a),i(p),g.done&&_!==void 0?QP(_,g):void 0;i(p),b.forEach(a)},l={contents:void 0},d=p=>{let _=l.contents;if(_!==void 0)return _.submit(p)},u=w(e.sleep,o5),c=async p=>{let _=w(e.snapshotRetryDelaysMs,J6),g=0,b=!1;for(;!b;){let y;try{y=await e.resolveSnapshot(p)}catch(S){let v=X(S);y={TAG:"Error",_0:kj(v)}}if(y.TAG==="Ok")d({TAG:"CompletionSnapshot",turnId:p,snapshot:Object.fromEntries([["items",y._0.slice()]])}),b=!0;else{let S=y._0,v=_[g];e.log("pipeline.snapshot_resolution_failed",Object.fromEntries([["thread_key",e.threadKey],["turn_id",p],["attempt",g+1|0],["retry_in_ms",v!==void 0?v:null],["message",S]])),v!==void 0?(await u(v),g=g+1|0):(d({TAG:"HarnessNotification",_0:{method:"turn/failed",params:Object.fromEntries([["turnId",p],["reason","completion snapshot resolution failed: "+S]])}}),b=!0)}}},f=Sj({threadKey:e.threadKey,instanceId:e.instanceId,outboxEnqueue:s,outboxFlush:p=>r.flush(p),sourceSeqForTurn:e.sourceSeqForTurn,autoRetryAttemptsForSeq:e.autoRetryAttemptsForSeq,midStreamResumeAttemptAtMsForSeq:e.midStreamResumeAttemptAtMsForSeq,freshSessionResumeAttemptAtMsForSeq:e.freshSessionResumeAttemptAtMsForSeq,ladderHistoryForSeq:e.ladderHistoryForSeq,sessionExecutesRecoveryGrants:e.sessionExecutesRecoveryGrants,onTurnTerminal:e.onTurnTerminal,requestSnapshot:p=>{Dn(c(p),_=>(e.log("pipeline.snapshot_request_failed",Object.fromEntries([["thread_key",e.threadKey],["turn_id",p],["message",kj(_)]])),Promise.resolve()))},log:e.log,linzumiAgentSession:e.linzumiAgentSession===!0,now:void 0,bufferedTurnMaxAgeMs:void 0,bufferedTurnMaxEvents:void 0,bufferedTurnSweepIntervalMs:void 0});l.contents=f;let h=wj({threadKey:e.threadKey,outboxMetrics:()=>r.metrics(),loopMetrics:()=>f.metrics(),log:e.log,intervalMs:e.statsIntervalMs,turnStalledThresholdMs:e.turnStalledThresholdMs,turnWaitStates:e.turnWaitStates,now:void 0}),m={contents:void 0};return{submitNotification:(p,_)=>f.submit({TAG:"HarnessNotification",_0:{method:p,params:_}}),notifyTurnMappingReady:p=>f.submit({TAG:"HarnessNotification",_0:{method:ec,params:Object.fromEntries([["turnId",p]])}}),notifyTurnMappingFailed:(p,_)=>f.submit({TAG:"HarnessNotification",_0:{method:Yl,params:Object.fromEntries([["turnId",p],["reason",_]])}}),noteTurnActivity:(p,_)=>f.noteTurnActivity(p,_),submitLifecycle:(p,_)=>f.submit({TAG:"Lifecycle",kind:p,reason:_}),pause:()=>r.pause(),resume:()=>r.resume(),rebindThreadKey:p=>r.rekeyJournal(p),flushOutbox:p=>r.flush(p),metrics:()=>r.metrics(),close:p=>{let _=m.contents;if(_!==void 0)return _;let g=(async()=>(h.stop(),f.submit({TAG:"Lifecycle",kind:"shutdown",reason:"session closed"}),await f.drainAndClose(p),await r.close(p)))();return m.contents=g,g}}}function Mp(e){return e.split("_").map((t,r)=>r!==0?t.slice(0,1).toUpperCase()+t.slice(1,t.length):t).join("")}function nc(e){return w(N(Dm.find(t=>t[0]===e),t=>t[1]),e)}var qn=nc("harness_session_id"),_s=Mp(qn);function Vi(e,t){let r=e[t];if(typeof r=="string")return r}function kw(e,t){let r=e[t];if(r!==void 0)switch(typeof r){case"string":return r;case"number":return isFinite(r)?r.toString():void 0;default:return}}function s5(e,t){let r=k(t.error,Oe),n=k(t.item,Oe),i=d=>He(d,void 0,(u,c)=>u!==void 0?u:c),o=i([kw(t,"code"),k(r,d=>kw(d,"code")),kw(t,"status")]),a=i([Vi(t,"message"),Vi(t,"detail"),Vi(t,"reason"),k(r,d=>Vi(d,"message")),k(r,d=>Vi(d,"detail")),k(r,d=>Vi(d,"reason"))]),s=o!==void 0?e+" "+o:e,l=a!==void 0?a:N(k(n,d=>Vi(d,"type")),d=>"item.type="+d);return N(l,d=>s+": "+d)}function l5(e,t){switch(e){case"error":case"warning":break;default:return t}let r=s5(e,t);if(r===void 0)return t;let n={};return Object.entries(t).forEach(i=>{n[i[0]]=i[1]}),n.diagnostic_summary=r,n.diagnostic_payload=t,n.diagnostic_payload_keys=Object.keys(t).toSorted(bs).map(i=>i),n}var d5=["When you create files that should be attached back to Linzumi, use the linzumi_upload_files MCP tool silently.","Do not mention that you are using the upload tool. Do not print an upload manifest or upload footer in the message.","The MCP upload tool is the only supported path for attaching generated files to Linzumi messages.","Attach files to the reply you already posted with target.kind=latest_assistant_message; only use new_message when you have not posted a reply yet, and never repeat your reply text as the new message body."];function Ej(e){let t=aM(e);return t.trimStart().startsWith("!")?t:[t,""].concat(d5).join(`
392
392
  `)}var u5={sandboxedNeverDefault:!1};function Pj(e){let t=tp(e.approvalPolicy,e.sandbox,u5);return t.TAG==="Ok"?t._0:"on-request"}function Rj(e){let t={};t.approvalPolicy=Pj(e);let r=e.sandbox;return r!==void 0&&(t.sandbox=r),t}function c5(e,t,r,n){let i={};i.threadId=e,i.input=[Object.fromEntries([["type","text"],["text",t]])],i.cwd=r;let o=n.model;o!==void 0&&(i.model=o);let a=n.reasoningEffort;a!==void 0&&(i.effort=a),i.approvalPolicy=Pj(n);let s=n.sandbox;if(s!==void 0){let l=yI(s,r);l.TAG==="Ok"&&(i.sandboxPolicy=l._0)}return i}async function na(e,t,r,n,i,o,a){let s=i!==void 0?i:!1,l=o!==void 0?ue(o):void 0,d=a!==void 0?ue(a):void 0,u=e.deps,c={};c.workspace=u.workspaceSlug,c.channel=u.channelSlug,c.thread_id=u.threadId,c.instance_id=u.instanceId,c[qn]=u.harnessSessionId,c.seq=t,c.status=r,n!==void 0&&(c.reason=n),s&&(c.retryable=!0),l!==void 0&&(c.fate=l),d!==void 0&&(c.ladder=d);let f=u.actorSlug;f!==void 0&&(c.actor_slug=f);let h=u.actorUserId;h!==void 0&&(c.actor_user_id=h);let m=await u.transport.push(u.commanderTopic,"message_state",c,void 0);if(m.TAG!=="Ok")return u.log("kandan.message_state_push_failed",Object.fromEntries([["seq",t],["status",r],["message",Rn(m._0)]]))}async function hs(e,t,r){return e.processingReason=r,e.processingSeq=t,await na(e,t,"processing",r,void 0,void 0,void 0)}function f5(e){let t=N(e.LINZUMI_TYPING_HEARTBEAT_MS,n=>n.trim());if(t===void 0||t==="")return 5e3;let r=Fn(t);return r!==void 0&&isFinite(r)&&r>0?Math.trunc(r):5e3}function Ij(e){let t={};return t.workspace=e.workspaceSlug,t.channel=e.channelSlug,t.thread_id=e.threadId,t.instance_id=e.instanceId,t[qn]=e.harnessSessionId,t}async function m5(e){let t=e.processingSeq,r=e.processingReason;if(t!==void 0&&r!==void 0)return await na(e,t,"processing",r,void 0,void 0,void 0)}function $j(e,t){if(e.typingHeartbeatInFlight)return;e.typingHeartbeatInFlight=!0;let r=e.deps;(async()=>{try{let i=await r.transport.push(r.commanderTopic,"session:typing_start",Ij(r),void 0);i.TAG!=="Ok"&&r.log("kandan.optional_push_failed",Object.fromEntries([["event","session:typing_start"],["message",Rn(i._0)]])),t&&await m5(e)}catch(i){let o=X(i);r.log("kandan.typing_heartbeat_failed",Object.fromEntries([["message",je(o).message]]))}e.typingHeartbeatInFlight=!1})()}function Mj(e,t){e.typingHeartbeatTimer=qe(e.deps.timers.setTimer(()=>{if(e.typingActive)return $j(e,!0),Mj(e,t)},t))}function p5(e){if(e.typingActive=!0,$j(e,!1),e.typingHeartbeatTimer===void 0)return Mj(e,f5(e.deps.env))}function jj(e){let t=e.typingHeartbeatTimer;if(t!==void 0){e.deps.timers.clearTimer(ue(t)),e.typingHeartbeatTimer=void 0;return}}function h5(e,t){if(jj(e),!e.typingActive)return;e.typingActive=!1;let r=e.deps;(async()=>{let i=await r.transport.push(r.commanderTopic,"session:typing_stop",Ij(r),void 0);if(i.TAG!=="Ok")return r.log("kandan.typing_stop_after_completion_failed",Object.fromEntries([["turn_id",t],["message",Rn(i._0)]]))})()}function _5(e,t,r){switch(t){case"item/completed":let n=k(r.item,Oe);if(n===void 0||!qt(Vi(n,"id")))return;let i=e.activityJournalTurns[e.activityJournalTurns.length-1|0];if(i===void 0)return;let o=r.completedAtMs,a=typeof o=="number"?o:void 0;for(i.items.push({item:n,completedAtMs:a}),e.activityJournalItemCount=e.activityJournalItemCount+1|0;e.activityJournalItemCount>2e3&&e.activityJournalTurns.length>1;){let l=e.activityJournalTurns.shift();l!==void 0&&(e.activityJournalItemCount=e.activityJournalItemCount-l.items.length|0)}return;case"turn/started":let s=k(k(r.turn,Oe),l=>Vi(l,"id"));if(s!==void 0){e.activityJournalTurns.push({turnId:s,items:[]});return}else return;default:return}}function g5(e){if(e.TAG==="ResultReply")return k(k(k(Oe(e._0),t=>t.turn),Oe),t=>Vi(t,"id"))}async function zj(e,t){let r=e.deps;r.log("codex.turn_starting",Object.fromEntries([["queued_seq",t.seq],["thread_id",r.threadId],[qn,r.harnessSessionId]])),await hs(e,t.seq,"starting turn"),await hs(e,t.seq,"starting turn"),p5(e),e.dispatchingTurnStart=!0,e.pendingStartingPaints=[];let n,i=0,o;try{o=await r.harness.request("turn/start",c5(r.harnessSessionId,Ej(t),r.cwd,r.defaults)),i=1}catch(a){let s=X(a);e.pendingStartingPaints=[],n={TAG:"Error",_0:"turn/start failed: "+je(s).message}}if(i===1)if(o.TAG==="Ok"){let a=o._0;if(a.TAG==="ResultReply"){let s=g5(a);if(s!==void 0){e.turnSeqs.set(s,t.seq),e.active={turnId:s,sourceSeq:t.seq};let l=e.pendingStartingPaints;e.pendingStartingPaints=[],l.forEach(u=>{if(u.paintTurnId===s&&Nr(e.processingReason,u.reason)){hs(e,t.seq,u.reason);return}}),r.log("codex.turn_started",Object.fromEntries([["turn_id",s]]));let d=e.pipeline;d!==void 0&&d.notifyTurnMappingReady(s),n={TAG:"Ok",_0:void 0}}else n={TAG:"Error",_0:"turn/start reply carried no turn id"}}else n={TAG:"Error",_0:"turn/start failed: "+a.message}}else n={TAG:"Error",_0:"turn/start failed: "+o._0};return e.dispatchingTurnStart=!1,n}function y5(e,t,r){let n=e.deps,i=e.retryCandidates.get(t);if(i===void 0)return;let o=w(e.autoRetryAttempts.get(t),0)+1|0;e.autoRetryAttempts.set(t,o),n.log("codex.empty_turn_auto_retry",Object.fromEntries([["queued_seq",t],["attempt",o],["max_attempts",yw]])),n.timers.setTimer(()=>{(async()=>{await na(e,t,"recovering","retrying empty turn",void 0,qe(r),qe(Fl(e.fateLadderRuns.get(t),r,ds(n.env),qe(e.failoverOffers.get(t)))));let a=await zj(e,i);if(a.TAG!=="Ok")return n.log("codex.empty_turn_auto_retry_failed",Object.fromEntries([["queued_seq",t],["message",a._0]]))})()},1500)}function b5(e,t,r,n,i,o,a,s){let l=e.deps,d=e.turnSeqs.get(t),u=e.active;switch(u!==void 0&&u.turnId===t&&(e.active=void 0),e.processingReason=void 0,e.processingSeq=void 0,h5(e,t),r){case"completed":if(d!==void 0){l.commitAppliedSourceSeq(d),e.autoRetryAttempts.delete(d),e.retryCandidates.delete(d),e.fateLadderRuns.delete(d);return}else return;case"failed":if(d===void 0)return;let c=!1;if(s!==void 0){let m=w(e.autoRetryAttempts.get(d),0)<yw,p=i&&m,_=m&&!l.harness.isClosed(),g={inPlaceResume:p,redispatch:_,workerRebuild:!1},b=nM({fate:s,run:e.fateLadderRuns.get(d),nowMs:Date.now(),budgets:ds(l.env),breaker:(y,S)=>"Proceed",grants:g,rateLimitResetAtMs:void 0});if(b.TAG!=="Stand"){let y;switch(b.TAG){case"Stand":y=["stand",void 0];break;case"ExecuteRung":y=["execute_rung",b.rung];break;case"HoldUntilReset":y=["hold_until_reset",void 0];break;case"BreakerHold":y=["breaker_hold",void 0];break;case"Red":y=["red",void 0];break}let S=y[1],v;if(v=b.TAG==="Stand"?void 0:b.run,v!==void 0){e.fateLadderRuns.set(d,v);let R={};R.turn_id=t,R.queued_seq=d,R.fate=s,R.decision=y[0],S!==void 0&&(R.rung=S),R.recovery_rungs_attempted=v.recoveryRungsAttempted,l.log("codex.fate_ladder_step",R)}b.TAG==="ExecuteRung"&&b.rung==="in_place_resume"&&(e.retryCandidates.has(d)&&(c=!0),y5(e,d,s));let A=l.switchProbe;if(b.TAG==="Red"&&A!==void 0){let R=rM(s,b.cause,{sourceHarness:"codex",targetHarness:A.targetHarness,model:A.model,backendDead:l.harness.isClosed(),exportable:e.activityJournalItemCount>0,targetAdapterAvailable:A.targetAdapterAvailable()});if(R!==void 0){e.failoverOffers.set(d,R),l.log("codex.fate_ladder_failover_offer",Object.fromEntries([["queued_seq",d],["offer",Vv(R)]]));let F={};F.workspace=l.workspaceSlug,F.channel=l.channelSlug,F.thread_id=l.threadId,F.instance_id=l.instanceId,F[qn]=l.harnessSessionId,F.seq=d,F.status="failed",n!==void 0&&(F.reason=n),F.fate=s,F.ladder=Fl(e.fateLadderRuns.get(d),s,ds(l.env),qe(R));let j=l.actorSlug;j!==void 0&&(F.actor_slug=j);let ie=l.actorUserId;ie!==void 0&&(F.actor_user_id=ie),l.transport.push(l.commanderTopic,"message_state",F,void 0).then(L=>{})}}}}if(!(!c&&(i||o||a)))return;let f=w(s,"transient_upstream");na(e,d,"failed",w(n,"codex_turn_failed"),!0,qe(f),qe(Fl(e.fateLadderRuns.get(d),f,ds(l.env),qe(e.failoverOffers.get(d)))));return;case"interrupted":return}}async function xw(e){let t="chat:"+e.workspaceSlug+":"+e.channelSlug,r=await e.transport.join(t,NP(e.commanderId,e.threadId,0),{rejoinPayload:void 0,registrationId:void 0});if(r.TAG!=="Ok")return{TAG:"Error",_0:"chat join failed: "+Rn(r._0)};let n={};n.workspace=e.workspaceSlug,n.channel=e.channelSlug,n.thread_id=e.threadId,await e.transport.push(e.commanderTopic,"session:thread_context",n,void 0);let i={};i.workspace=e.workspaceSlug,i.channel=e.channelSlug,i.thread_id=e.threadId,i[qn]=e.harnessSessionId;let o=await e.transport.push(e.commanderTopic,"session:bind",i,void 0);o.TAG!=="Ok"&&e.log("kandan.session_bind_push_failed",Object.fromEntries([["thread_id",e.threadId],["message",Rn(o._0)]]));let a={contents:!0};e.transport.onReconnect(async h=>{if(!a.contents)return;e.log("kandan.reconnected",Object.fromEntries([["kandan_thread_id",e.threadId],["codex_thread_id",e.harnessSessionId]]));let m=await e.transport.push(e.commanderTopic,"session:bind",i,void 0);m.TAG!=="Ok"&&e.log("kandan.session_bind_push_failed",Object.fromEntries([["thread_id",e.threadId],["message",Rn(m._0)]]));let p={};p.workspace=e.workspaceSlug,p.channel=e.channelSlug,p.thread_id=e.threadId,p.codex_thread_id=e.harnessSessionId,p.provider_session_key=e.harnessSessionId,p.agent_provider="codex",p.cwd=e.cwd;let _={};_.threads=[p];let g=await e.transport.push(e.commanderTopic,"session:reannounce_threads",_,void 0);return g.TAG==="Ok"?e.log("kandan.thread_sessions_reannounced",Object.fromEntries([["count",1]])):e.log("kandan.thread_sessions_reannounce_failed",Object.fromEntries([["count",1],["message",Rn(g._0)]]))});let s={deps:e,turnSeqs:new Map,pipeline:void 0,active:void 0,processingReason:void 0,processingSeq:void 0,typingActive:!1,typingHeartbeatInFlight:!1,typingHeartbeatTimer:void 0,dispatchingTurnStart:!1,pendingStartingPaints:[],autoRetryAttempts:new Map,retryCandidates:new Map,fateLadderRuns:new Map,activityJournalTurns:[],activityJournalItemCount:0,failoverOffers:new Map,switchedTargetSession:void 0},l=e.workspaceSlug+":"+e.channelSlug+":"+e.threadId,d=Cj({instanceId:e.instanceId,threadKey:l,persistDir:void 0,push:async(h,m,p,_)=>{let g=await e.transport.push(e.commanderTopic,h,m,_);if(g.TAG==="Ok")return{TAG:"Acked",_0:g._0};let b=g._0;return{TAG:"PushFailed",message:Rn(b),budgetExempt:Oj(b)}},wire:()=>({workspaceSlug:e.workspaceSlug,channelSlug:e.channelSlug,threadId:e.threadId,harnessSessionId:e.harnessSessionId,rootSeq:e.rootSeq,leaseEpoch:e.leaseEpochFor(e.threadId)}),rowEnvelope:(h,m,p,_)=>{let g={};return g.event_type=h,g[qn]=m,p!==void 0&&(g.source_message_seq=p),_!==void 0&&(g.metadata=_),g},runtimeMetadataForSourceSeq:void 0,sourceSeqForTurn:h=>s.turnSeqs.get(h),autoRetryAttemptsForSeq:h=>w(s.autoRetryAttempts.get(h),0),midStreamResumeAttemptAtMsForSeq:void 0,ladderHistoryForSeq:(h,m)=>Oe(Fl(s.fateLadderRuns.get(h),m,ds(e.env),qe(s.failoverOffers.get(h)))),sessionExecutesRecoveryGrants:!0,isRecoveredTurn:void 0,resolveSnapshot:async h=>{let m=await e.harness.request("thread/read",Object.fromEntries([["threadId",e.harnessSessionId],["includeTurns",!0]]));if(m.TAG!=="Ok")return{TAG:"Error",_0:m._0};let p=m._0;if(p.TAG!=="ResultReply")return{TAG:"Error",_0:p.message};let _={};return _.result=p._0,{TAG:"Ok",_0:Aj(_,h).map(g=>g)}},onTurnTerminal:(h,m,p,_,g,b,y)=>b5(s,h,m,p,_,g,b,y),log:e.log,linzumiAgentSession:!1,outboxRetryDelaysMs:void 0,outboxMaxInFlightPushes:void 0,snapshotRetryDelaysMs:void 0,journalRecoveryMaxAgeMs:void 0,statsIntervalMs:0,turnStalledThresholdMs:void 0,turnWaitStates:void 0,traceparentForThread:h=>{},sleep:void 0});return s.pipeline=d,{TAG:"Ok",_0:{routeNotification:(h,m)=>{_5(s,h,m);let p=s.active;if(p!==void 0){let _=k(m.turnId,Cr);if(_!==void 0?_===p.turnId:!0){let b=Kv(h,m);if(b!==void 0){let y=b;Nr(s.processingReason,y)&&hs(s,p.sourceSeq,y)}}}else{let _=s.dispatchingTurnStart,g=k(m.turnId,Cr),b=Kv(h,m);if(_&&g!==void 0&&b!==void 0){let y=b,S=s.pendingStartingPaints.at(-1);S!==void 0&&S.paintTurnId===g&&S.reason===y||s.pendingStartingPaints.push({paintTurnId:g,reason:y})}}d.submitNotification(h,l5(h,m))},runClaimedTurn:async(h,m)=>{let p=e.actorSlug,_=e.actorUserId,g=[],b=Date.now(),y={seq:h,actorSlug:p,actorUserId:_,body:m,attachments:g,receivedAtMs:b,fusedSeqs:void 0,parkReason:void 0};return s.retryCandidates.set(h,y),e.log("kandan.message_queued",Object.fromEntries([["seq",h],["thread_id",e.threadId],[qn,e.harnessSessionId]])),await na(s,h,"queued",void 0,void 0,void 0,void 0),await zj(s,y)},publishRebuilt:async h=>await hs(s,h,"rebuilt the coding session from durable thread history after an unresumable engine session"),failOnHarnessDeath:h=>{let m=s.active;if(m!==void 0){let p={};p.turnId=m.turnId,p.retryable=!0,p.fate="transient_local",p.error=Object.fromEntries([["message",h]]),d.submitNotification("turn/failed",p)}d.submitLifecycle("codexDied",h)},invokeCrossHarnessSwitch:async(h,m,p,_,g)=>{let b=h!==void 0?s.failoverOffers.has(h)?h:void 0:He(s.failoverOffers.keys().toArray(),void 0,(ot,G)=>G),y=k(b,ot=>N(s.failoverOffers.get(ot),G=>[ot,G]));if(y===void 0)return{TAG:"Error",_0:"no standing failover offer for this thread - the switch is the user's decision on an offered terminal"};let S=y[1],v=y[0],A=s.fateLadderRuns.get(v),R=A!==void 0?A:Hv("transient_local",Date.now()),F=S.sourceHarness,j=S.targetHarness,L={sourceHarness:F,targetHarness:j,model:m},K=iM(R,Date.now(),L);if(K.TAG!=="Ok")return{TAG:"Error",_0:K._0};let oe=K._0;s.fateLadderRuns.set(v,oe),e.log("codex.user_cross_harness_switch_invoked",Object.fromEntries([["queued_seq",v],["source_harness",F],["target_harness",j],["model",m]])),await hs(s,v,oM);let W=e.harnessSessionId,Z=s.activityJournalTurns,I={harnessSessionId:W,turns:Z},fe=e.cwd,J=e.defaults.approvalPolicy,ae={cwd:fe,model:m,reasoningEffort:void 0,developerInstructions:void 0,approvalPolicy:J,sandboxPolicy:void 0,environment:{}},ce=s.retryCandidates.get(v),Ie={text:ce!==void 0?Ej(ce):"Continue where the previous harness session left off.",attachments:[]},Be={model:m,reasoningEffort:void 0,input:Ie},we=await _M(I,e.threadId,p,e.cwd,g,Date.now(),_,ae,Be,ot=>{switch(e.log("kandan.switch_target_event",Object.fromEntries([["queued_seq",v],["kind",Um(ot)]])),ot.TAG){case"TurnCompleted":na(s,v,"processed",void 0,void 0,void 0,void 0);return;case"TurnFailed":na(s,v,"failed",ot.failure.reason,void 0,void 0,void 0);return;default:return}}),dt=ds(e.env),Qe=ot=>Fl(ot,"transient_local",dt,qe(S));if(we.TAG==="Ok"){let ot=we._0;s.switchedTargetSession=ot.session;let G={...L},Pe=Bv(oe,"switch_dispatched",Date.now(),(G.redactedReasoningCount=ot.redactedReasoningCount,G.transpiledItemCount=ot.transpiledItemCount,G),void 0);s.fateLadderRuns.set(v,Pe),e.log("codex.user_cross_harness_switch_dispatched",Object.fromEntries([["queued_seq",v],["source_harness",F],["target_harness",j],["model",m],["target_session_id",ot.targetSessionId],["transpiled_item_count",ot.transpiledItemCount],["redacted_reasoning_count",ot.redactedReasoningCount]])),await hs(s,v,"continuing this job on the "+S.targetHarness+" harness after a user-invoked switch");let de={};de.ok=!0,de.target_session_id=ot.targetSessionId,de.turn_id=ot.turnId;let ze=ot.sessionFile;return ze!==void 0&&(de.session_file=ze),de.transpiled_item_count=ot.transpiledItemCount,de.redacted_reasoning_count=ot.redactedReasoningCount,de.ladder=Qe(Pe),{TAG:"Ok",_0:de}}let it=we._0,At=mM(it),Zt=pM(it),Qt=Bv(oe,hM(it)?"switch_refused":"switch_failed",Date.now(),L,At+": "+Zt);s.fateLadderRuns.set(v,Qt),e.log("codex.user_cross_harness_switch_not_dispatched",Object.fromEntries([["queued_seq",v],["refusal",At],["reason",Zt]])),await na(s,v,"failed","cross-harness switch "+At+": "+Zt,void 0,void 0,void 0);let er={};return er.ok=!1,er.refusal=At,er.reason=Zt,er.ladder=Qe(Qt),{TAG:"Ok",_0:er}},close:async()=>{a.contents=!1,jj(s),s.typingActive=!1;let h=s.switchedTargetSession;h!==void 0&&(s.switchedTargetSession=void 0,await h.stopSession());let m=s.pipeline;if(m!==void 0)return await m.close(5e3)}}}}import*as ez from"node:os";import*as tz from"node:path";import*as Tw from"node:os";import*as ed from"node:path";var v5="LINZUMI_CODEX_HOME";function w5(e){let t=N(e[v5],r=>r.trim());return t!==void 0&&t!==""?t:ed.join(Tw.homedir(),".linzumi","codex-home")}function k5(e){let t=N(e.CODEX_HOME,r=>r.trim());return t!==void 0&&t!==""?t:ed.join(Tw.homedir(),".codex")}var x5=["# 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."].concat(JS.map(e=>e+' = "'+KS+'"')).concat([""]).join(`
393
393
  `);function Gj(e){let t=w5(e),r=Ut(t);if(r.TAG!=="Ok")return{TAG:"Error",_0:r._0};let n=bo(ed.join(t,"config.toml"),x5,{encoding:"utf8",flag:"wx"});if(n.TAG==="Ok")return{TAG:"Ok",_0:t};let i=n._0;return di(i,"EEXIST")?{TAG:"Ok",_0:t}:{TAG:"Error",_0:i}}function Fj(e,t){let r=e[t];if(typeof r=="string")return r}var Ql={contents:0};function Nj(e){let t;try{t=JSON.parse(e)}catch{t=void 0}if(t===void 0||typeof t!="object"||t===null||Array.isArray(t))return;let r=Fj(t,"last_refresh");if(r===void 0)return;let n=new Date(r).getTime();if(!Number.isNaN(n))return n}function T5(e){let t;try{t=JSON.parse(e)}catch{t=void 0}if(t===void 0||typeof t!="object"||t===null||Array.isArray(t))return!1;let r=t.tokens;if(r===void 0||typeof r!="object"||r===null||Array.isArray(r))return!1;let n=Fj(r,"refresh_token");return n!==void 0?n.trim()!=="":!1}function A5(e,t){let r=Bt(t),n=Bt(e);if(r.TAG!=="Ok")return!1;let i=r._0;if(n.TAG!=="Ok")return!1;let o=Nj(i),a=Nj(n._0),s=T5(i);if(o===void 0||a===void 0||!s||o<=a)return!1;if(In(t,e).TAG==="Ok")return So(e,384),!0;Ql.contents=Ql.contents+1|0;let d=e+".tmp-"+process.pid.toString()+"-"+Ql.contents.toString();return Jr(d).TAG!=="Ok"||bo(d,i,{encoding:"utf8",mode:384,flag:"wx"}).TAG!=="Ok"?!1:In(d,e).TAG==="Ok"?!0:(Jr(d),!1)}async function Dj(e,t){let r=k5(t);if(r===e)return"SkippedSelfCopy";let n=ed.join(r,"auth.json"),i=ed.join(e,"auth.json"),o=Ut(e);if(o.TAG!=="Ok")return{TAG:"InstallFailed",stage:"mkdir",code:o._0.code};let a=Hp(i);if(a.TAG!=="Ok")return{TAG:"InstallFailed",stage:"inspect",code:a._0.code};let s=a._0,l;if(s==="LstatSymlink"){let p=Bw(i);l=p.TAG==="Ok"?p._0===n:!1}else l=!1;if(l)return{TAG:"SharedAuthLinked",rescuedRotatedCopy:!1};let d;d=s==="LstatFile"?A5(n,i):!1,Ql.contents=Ql.contents+1|0;let u=i+".tmp-"+process.pid.toString()+"-"+Ql.contents.toString(),c=Jr(u);if(c.TAG!=="Ok")return{TAG:"InstallFailed",stage:"clear_tmp",code:c._0.code};let f=Hw(n,u);if(f.TAG!=="Ok")return{TAG:"InstallFailed",stage:"link",code:f._0.code};let h=In(u,i);if(h.TAG==="Ok")return{TAG:"SharedAuthLinked",rescuedRotatedCopy:d};Jr(u);let m=Hp(i);return m.TAG==="Ok"&&m._0==="LstatFile"&&Jr(i),{TAG:"InstallFailed",stage:"link",code:h._0.code}}import*as Uj from"node:child_process";function C5(e){let t=Object.fromEntries([["command",e.command],["args",e.args.map(n=>n)],["pollIntervalMs",e.pollIntervalMs]]),r=e.protectedPidsDir;return r!==void 0&&r!==""&&(t.protectedPidsDir=r),JSON.stringify(t)}var E5=["const { spawn, spawnSync } = require('node:child_process');","const fs = require('node:fs');","const config = JSON.parse(process.argv[process.argv.length - 1]);","const originalParentPid = process.ppid;","const child = spawn(config.command, config.args, { stdio: 'inherit' });","let done = false;","// Dev-server exemption (keep in sync with devServerReapExemption.ts","// readProtectedPidsFromDir - the freshness bound is textually substituted","// from protectedListenerFreshnessMs at program build): union of every FRESH","// mirror file's pids. Any failure returns an empty set, restoring the","// classic whole-group kill.","function protectedPids() {"," const out = new Set();"," const dir = config.protectedPidsDir;"," if (typeof dir !== 'string' || dir === '') return out;"," let names;"," try { names = fs.readdirSync(dir); } catch (_e) { return out; }"," const now = Date.now();"," for (const name of names) {"," if (!name.endsWith('.json')) continue;"," try {"," const parsed = JSON.parse(fs.readFileSync(dir + '/' + name, 'utf8'));"," if (!parsed || typeof parsed.updatedAtMs !== 'number' || !Array.isArray(parsed.pids)) continue;"," if (now - parsed.updatedAtMs > 300000) continue;"," for (const pid of parsed.pids) {"," if (Number.isInteger(pid) && pid > 1) out.add(pid);"," }"," } catch (_e) {}"," }"," return out;","}","// Group kill that spares protected listener pids: enumerate this group's","// members (the wrapper leads its own group) and signal each one except the","// spared listeners and the wrapper itself (the wrapper exits via its own","// child-exit/parent-death paths). Any enumeration failure, or no protected","// member in the group, falls back to the atomic kill(-pgid).","function groupKillExcept(signal) {"," const spare = protectedPids();"," if (spare.size > 0) {"," try {"," const result = spawnSync('ps', ['-axo', 'pid=,pgid='], { encoding: 'utf8', timeout: 5000, killSignal: 'SIGKILL' });"," if (result.error === undefined && result.status === 0) {"," const members = [];"," let sparedAny = false;"," for (const line of result.stdout.split('\\n')) {"," const match = line.trim().match(/^(\\d+)\\s+(\\d+)$/);"," if (!match || Number(match[2]) !== process.pid) continue;"," const pid = Number(match[1]);"," if (pid === process.pid) continue;"," if (spare.has(pid)) { sparedAny = true; continue; }"," members.push(pid);"," }"," if (sparedAny) {"," for (const pid of members) { try { process.kill(pid, signal); } catch (_e) {} }"," return;"," }"," }"," } catch (_e) {}"," }"," process.kill(-process.pid, signal);","}","function shutdown(signal) {"," if (done) return;"," done = true;"," try { groupKillExcept(signal); }"," catch (_e) { try { child.kill(signal); } catch (_e2) {} }","}","process.on('SIGINT', () => shutdown('SIGINT'));","process.on('SIGTERM', () => shutdown('SIGTERM'));","process.on('SIGHUP', () => shutdown('SIGTERM'));","child.on('exit', (code, signal) => {"," clearInterval(watchdog);"," // The child is gone; the wrapper must follow it down rather than linger as an"," // orphan. On the forwarded-signal path (shutdown() above caught SIGINT/SIGTERM"," // /SIGHUP and propagated it to the child), the wrapper still has its own"," // handler installed for that signal, so a bare process.kill(self, signal)"," // would just re-enter shutdown() - a no-op once done is set - and the wrapper"," // would never exit. Remove the handlers first so the signal's DEFAULT"," // disposition (terminate) applies, re-raise to mirror the child's death"," // signal, then exit() as a belt-and-suspenders fallback in case re-raising"," // does not terminate (e.g. a signal with no default-terminate disposition)."," process.removeAllListeners('SIGINT');"," process.removeAllListeners('SIGTERM');"," process.removeAllListeners('SIGHUP');"," if (signal) { try { process.kill(process.pid, signal); } catch (_e) {} }"," process.exit(signal ? 1 : code == null ? 0 : code);","});","child.on('error', (err) => {"," process.stderr.write('engine watchdog spawn failed: ' + (err && err.message) + '\\n');"," process.exit(1);","});","const watchdog = setInterval(() => {"," // Inlined parentDeathWatchdogShouldReap (keep in sync): reap PURELY on a ppid"," // change from boot - covers reparent-to-subreaper AND reparent-to-init. NO"," // `=== 1` arm: a runner that is PID 1 captures originalParentPid === 1, so"," // such an arm would false-fire on the first poll and kill a healthy codex."," if (process.ppid !== originalParentPid) {"," try { child.kill('SIGKILL'); } catch (_e) {}"," try { groupKillExcept('SIGKILL'); } catch (_e) {}"," process.exit(0);"," }","}, config.pollIntervalMs);"];function qj(e,t){return{command:e,args:["-e",E5.join(`
394
394
  `),C5(t)]}}async function R5(e){let t=await ba(e,{});if(t.TAG!=="Ok")return!1;let r=t._0.status;return r>=200?r<=299:!1}function Wj(e,t){return{audit:e,env:t,protectedPids:()=>new Set,fetchOk:R5,now:()=>Date.now(),readyzTimeoutMs:1e4,readyzPollMs:50}}function I5(e){return e}function Aw(e,t,r,n,i,o){e.audit(t,Object.fromEntries([["command",r],["args",n.map(I5)],["cwd",i]].concat(o.concat([["purpose","codex.app_server"]]))))}function Lj(e,t){let r=t.pid;if(r==null){Rl(t,"SIGINT");return}let n=Xm(r,"SIGINT",Bi,void 0,e.protectedPids());n.sparedPids.length!==0&&e.audit("process.group_signal_spared_listeners",Object.fromEntries([["pid",r],["signal","SIGINT"],["sparedPids",n.sparedPids.map(d=>d)],["purpose","codex.app_server"]]));let i=n.groupSignalError;if(i===void 0)return;let o=i.code,a;if(o!==void 0)switch(o){case"EPERM":a="process.group_signal_denied";break;case"ESRCH":a="process.group_signal_missing";break;default:a="process.group_signal_failed"}else a="process.group_signal_failed";let s=i.code;e.audit(a,Object.fromEntries([["pid",r],["signal","SIGINT"],["code",s!==void 0?s:null],["message",i.message],["fallback","child_signal"],["purpose","codex.app_server"]])),i.code==="EPERM"&&_r("codex app-server process-group SIGINT denied for pid "+r.toString()+`; falling back to direct child SIGINT