@duckmind/dm-darwin-x64 0.49.7 → 0.49.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dm +0 -0
- package/extensions/.dm-extensions.json +44 -15
- package/extensions/dm-cliproxy/NOTICE.md +12 -0
- package/extensions/dm-cliproxy/index.js +2 -0
- package/extensions/dm-cliproxy/package.json +20 -0
- package/extensions/dm-cliproxy/scripts/check-config-migration.js +10 -0
- package/extensions/dm-cliproxy/src/apply.js +1 -0
- package/extensions/dm-cliproxy/src/cache.js +1 -0
- package/extensions/dm-cliproxy/src/commands.js +2 -0
- package/extensions/dm-cliproxy/src/compat.js +1 -0
- package/extensions/dm-cliproxy/src/config.js +2 -0
- package/extensions/dm-cliproxy/src/conflicts.js +1 -0
- package/extensions/dm-cliproxy/src/fetch-models.js +1 -0
- package/extensions/dm-cliproxy/src/fetch-usage.js +1 -0
- package/extensions/dm-cliproxy/src/log.js +1 -0
- package/extensions/dm-cliproxy/src/status-quota.js +1 -0
- package/extensions/dm-cliproxy/src/ui-frame.js +1 -0
- package/extensions/dm-cliproxy/src/ui-hub/hub.js +2 -0
- package/extensions/dm-cliproxy/src/ui-hub/index.js +2 -0
- package/extensions/dm-cliproxy/src/ui-hub/shell.js +1 -0
- package/extensions/dm-cliproxy/src/ui-hub/types.js +0 -0
- package/extensions/dm-cliproxy/src/ui-hub/view-diagnostics.js +1 -0
- package/extensions/dm-cliproxy/src/ui-hub/view-models.js +1 -0
- package/extensions/dm-cliproxy/src/ui-hub/view-usage.js +1 -0
- package/extensions/dm-cliproxy/src/ui-picker/catalog.js +1 -0
- package/extensions/dm-cliproxy/src/ui-picker/mutate.js +1 -0
- package/extensions/dm-cliproxy/src/ui-picker/prompt-confirm.js +1 -0
- package/extensions/dm-cliproxy/src/ui-picker/prompt-name.js +1 -0
- package/extensions/dm-cliproxy/src/ui-picker/providers.js +1 -0
- package/extensions/dm-cliproxy/src/ui-picker/render-text.js +1 -0
- package/extensions/dm-cliproxy/src/ui-picker/rows.js +1 -0
- package/extensions/dm-cliproxy/src/ui-picker/types.js +0 -0
- package/extensions/dm-cliproxy/src/ui-setup.js +2 -0
- package/extensions/dm-cliproxy/src/ui-usage.js +1 -0
- package/extensions/dm-cliproxy/src/usage-shared-cache.js +1 -0
- package/extensions/dm-subagents/src/extension/doctor.js +10 -10
- package/extensions/dm-subagents/src/extension/fanout-child.js +129 -129
- package/extensions/dm-subagents/src/extension/index.js +179 -179
- package/extensions/dm-subagents/src/extension/rpc.js +5 -5
- package/extensions/dm-subagents/src/extension/schemas.js +1 -1
- package/extensions/dm-subagents/src/extension/tool-description.js +2 -2
- package/extensions/dm-subagents/src/intercom/native-supervisor-channel.js +5 -5
- package/extensions/dm-subagents/src/runs/background/async-execution.js +19 -19
- package/extensions/dm-subagents/src/runs/background/async-job-tracker.js +10 -10
- package/extensions/dm-subagents/src/runs/background/async-resume.js +5 -5
- package/extensions/dm-subagents/src/runs/background/async-status.js +8 -8
- package/extensions/dm-subagents/src/runs/background/fleet-view.js +14 -14
- package/extensions/dm-subagents/src/runs/background/result-watcher.js +5 -5
- package/extensions/dm-subagents/src/runs/background/run-id-resolver.js +3 -3
- package/extensions/dm-subagents/src/runs/background/run-status.js +20 -20
- package/extensions/dm-subagents/src/runs/background/stale-run-reconciler.js +7 -7
- package/extensions/dm-subagents/src/runs/background/subagent-runner.js +38 -38
- package/extensions/dm-subagents/src/runs/background/wait.js +7 -7
- package/extensions/dm-subagents/src/runs/foreground/chain-execution.js +58 -58
- package/extensions/dm-subagents/src/runs/foreground/execution.js +36 -36
- package/extensions/dm-subagents/src/runs/foreground/subagent-executor.js +129 -129
- package/extensions/dm-subagents/src/runs/shared/dm-args.js +1 -1
- package/extensions/dm-subagents/src/runs/shared/nested-events.js +6 -6
- package/extensions/dm-subagents/src/runs/shared/subagent-prompt-runtime.js +13 -13
- package/package.json +1 -1
- package/extensions/dm-9router-ext/package.json +0 -23
- package/extensions/dm-9router-ext/src/index.js +0 -5
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import*as o from"node:fs";import*as C from"node:path";import*as _ from"node:fs";import*as m from"node:path";var c=new Map;function J$($){return $ instanceof Error?$.message:String($)}function A$($){return typeof $==="object"&&$!==null&&"code"in $&&$.code==="ENOENT"}function F$($){let j=m.join($,"status.json"),f;try{f=_.statSync(j)}catch(q){if(A$(q))return null;throw Error(`Failed to inspect async status file '${j}': ${J$(q)}`,{cause:q instanceof Error?q:void 0})}let J=c.get(j);if(J&&J.mtime===f.mtimeMs)return J.status;let Q;try{Q=_.readFileSync(j,"utf-8")}catch(q){if(A$(q))return null;throw Error(`Failed to read async status file '${j}': ${J$(q)}`,{cause:q instanceof Error?q:void 0})}let Z;try{Z=JSON.parse(Q)}catch(q){throw Error(`Failed to parse async status file '${j}': ${J$(q)}`,{cause:q instanceof Error?q:void 0})}if(c.set(j,{mtime:f.mtimeMs,status:Z}),c.size>50){let q=c.keys().next().value;if(q)c.delete(q)}return Z}import*as D from"node:os";import*as P from"node:path";var T$="subagent:async-complete",_$="subagent:control-event",C$="subagent:control-intercom",b$="subagent:result-intercom";function u($){return $.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function t$($){let j=$?.env??process.env,f=$&&Object.hasOwn($,"getuid")?$.getuid:process.getuid?.bind(process);if(typeof f==="function")return`uid-${f()}`;for(let q of["USERNAME","USER","LOGNAME"]){let B=j[q];if(B)return`user-${u(B)}`}let J=$&&Object.hasOwn($,"userInfo")?$.userInfo:D.userInfo;try{let q=J?.().username;if(q)return`user-${u(q)}`}catch{}let Q=j.USERPROFILE??j.HOME;if(Q)return`home-${u(Q)}`;let Z=$&&Object.hasOwn($,"homedir")?$.homedir:D.homedir;try{let q=Z?.();if(q)return`home-${u(q)}`}catch{}return"shared"}var x=P.join(D.tmpdir(),`dm-subagents-${t$()}`),N=P.join(x,"async-subagent-results"),l=P.join(x,"async-subagent-runs"),$0=P.join(x,"chain-runs"),qj=P.join(x,"artifacts");function w($){if($<1000)return`${$}ms`;if($<60000)return`${($/1000).toFixed(1)}s`;return`${Math.floor($/60000)}m${Math.floor($%60000/1000)}s`}import{randomUUID as W0}from"node:crypto";import*as F from"node:fs";import*as V from"node:path";import*as y$ from"node:path";var j0=128,f0=4;function Z$($){return typeof $==="string"&&$.length>0&&$.length<=j0&&!y$.isAbsolute($)&&!$.includes("/")&&!$.includes("\\")&&!$.includes("..")}function E$($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function S$($,j){return typeof $==="string"&&$.length>0?$.slice(0,j):void 0}function x$($){if(!Array.isArray($))return[];return $.map((j)=>{if(!j||typeof j!=="object")return;let f=j;if(!Z$(f.runId))return;return{runId:f.runId,...E$(f.stepIndex)!==void 0?{stepIndex:E$(f.stepIndex)}:{},...S$(f.agent,128)?{agent:S$(f.agent,128)}:{}}}).filter((j)=>Boolean(j)).slice(0,f0)}import*as k from"node:fs";import*as E from"node:path";import{fileURLToPath as Z0}from"node:url";import*as y from"node:os";import*as b from"node:path";var bj=b.join(y.homedir(),".config","mcp","mcp.json"),Ej={cursor:[b.join(y.homedir(),".cursor","mcp.json")],"claude-code":[b.join(y.homedir(),".claude","mcp.json"),b.join(y.homedir(),".claude.json"),b.join(y.homedir(),".claude","claude_desktop_config.json")],"claude-desktop":[b.join(y.homedir(),"Library","Application Support","Claude","claude_desktop_config.json")],codex:[b.join(y.homedir(),".codex","config.json")],windsurf:[b.join(y.homedir(),".windsurf","mcp.json")],vscode:[".vscode/mcp.json"]};import{Compile as xj}from"typebox/compile";function I$($,j){let f=Z0($),J=E.extname(f),Q=[".js",".mjs",".cjs",".ts",".mts",".cts"].includes(J)?J:".ts",Z=E.dirname(f);while(!k.existsSync(E.join(Z,"package.json"))){let q=E.dirname(Z);if(q===Z)throw Error(`Unable to resolve dm-subagents package root from ${f}`);Z=q}return E.join(Z,`${j}${Q}`)}var nj=I$(import.meta.url,E.join("src","runs","shared","subagent-prompt-runtime")),uj=I$(import.meta.url,E.join("src","extension","fanout-child"));import*as Q0 from"node:fs";import*as R from"node:path";var q0=[10,25,50,100,200,500,1000,2000,4000],X0=new Set(["EACCES","EBUSY","EPERM"]),N$=typeof SharedArrayBuffer<"u"?new SharedArrayBuffer(4):void 0,R$=N$?new Int32Array(N$):void 0;function B0($){if($<=0)return;if(R$)try{Atomics.wait(R$,0,0,$);return}catch{}let j=Date.now()+$;while(Date.now()<j);}function K0($){let j=$?.code;return typeof j==="string"&&X0.has(j)}function Y0($,j,f,J,Q){for(let Z=0;;Z++)try{$.renameSync(j,f);return}catch(q){let B=J[Z];if(B===void 0||!K0(q))throw q;Q(B)}}function H0($={}){let j=$.fs??Q0,f=$.now??Date.now,J=$.pid??process.pid,Q=$.random??Math.random,q=$.retryRenameErrors??process.platform==="win32"?$.retryDelaysMs??q0:[],B=$.wait??B0;return(K,H)=>{j.mkdirSync(R.dirname(K),{recursive:!0});let U=R.join(R.dirname(K),`.${R.basename(K)}.${J}.${f()}.${Q().toString(36).slice(2)}.tmp`);try{j.writeFileSync(U,JSON.stringify(H,null,2),"utf-8"),Y0(j,U,K,q,B)}finally{j.rmSync(U,{force:!0})}}}var g=H0();var r=V.join(x,"nested-subagent-events"),O0="route.json",G0="registry.json",K$=65536,Q$=12,h=16,q$=3;function i($){return Z$($)}function U0($,j){if(!i(j))throw Error(`${$} must be a non-empty safe id token.`)}function D$($,j){U0($,j)}function X$($,j){let f=V.resolve($),J=V.resolve(j);return J===f||J.startsWith(`${f}${V.sep}`)}function w$($){return V.dirname(V.resolve($.eventSink))}function s($){if(D$("rootRunId",$.rootRunId),D$("capabilityToken",$.capabilityToken),!X$(r,$.eventSink))throw Error("Nested event sink is outside the subagent nested event root.");if(!X$(r,$.controlInbox))throw Error("Nested control inbox is outside the subagent nested event root.");if(w$($)!==V.dirname(V.resolve($.controlInbox)))throw Error("Nested event sink and control inbox must share one route root.")}function k$($,j){if(!j.asyncDir)return;let f=V.resolve(j.asyncDir),J=V.resolve(x,"nested-subagent-runs",$,j.id),Q=V.relative(J,f);return f===J||!Q.startsWith("..")&&!V.isAbsolute(Q)?f:void 0}function Y($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function O($,j=512){return typeof $==="string"&&$.length>0?$.slice(0,j):void 0}function V0($){if(!$||typeof $!=="object")return;let j=$,f=Y(j.input),J=Y(j.output),Q=Y(j.total);return f!==void 0&&J!==void 0&&Q!==void 0?{input:f,output:J,total:Q}:void 0}function L0($){if(!$||typeof $!=="object")return;let j=$,f=Y(j.inputTokens),J=Y(j.outputTokens),Q=Y(j.costUsd);return f!==void 0&&J!==void 0&&Q!==void 0?{inputTokens:f,outputTokens:J,costUsd:Q}:void 0}function a($){if(!$||typeof $!=="object")return;let j=$,f=Y(j.maxTurns),J=Y(j.graceTurns),Q=Y(j.turnCount),Z=j.outcome==="within-budget"||j.outcome==="wrap-up-requested"||j.outcome==="exceeded"?j.outcome:void 0;if(f===void 0||J===void 0||Q===void 0||!Z)return;return{maxTurns:f,graceTurns:J,turnCount:Q,outcome:Z,...Y(j.wrapUpRequestedAtTurn)!==void 0?{wrapUpRequestedAtTurn:Y(j.wrapUpRequestedAtTurn)}:{},...Y(j.exceededAtTurn)!==void 0?{exceededAtTurn:Y(j.exceededAtTurn)}:{}}}function M0($,j){return $==="queued"||$==="running"||$==="complete"||$==="failed"||$==="paused"?$:j}function z0($,j){if(!$||typeof $!=="object")return;let f=$,J=O(f.agent,128);if(!J)return;let Q=f.status==="pending"||f.status==="running"||f.status==="complete"||f.status==="completed"||f.status==="failed"||f.status==="paused"?f.status:"pending";return{agent:J,status:Q,...O(f.sessionFile,2048)?{sessionFile:O(f.sessionFile,2048)}:{},...f.activityState==="active_long_running"||f.activityState==="needs_attention"?{activityState:f.activityState}:{},...Y(f.lastActivityAt)!==void 0?{lastActivityAt:Y(f.lastActivityAt)}:{},...O(f.currentTool,128)?{currentTool:O(f.currentTool,128)}:{},...Y(f.currentToolStartedAt)!==void 0?{currentToolStartedAt:Y(f.currentToolStartedAt)}:{},...O(f.currentPath,2048)?{currentPath:O(f.currentPath,2048)}:{},...Y(f.turnCount)!==void 0?{turnCount:Y(f.turnCount)}:{},...Y(f.toolCount)!==void 0?{toolCount:Y(f.toolCount)}:{},...Y(f.startedAt)!==void 0?{startedAt:Y(f.startedAt)}:{},...Y(f.endedAt)!==void 0?{endedAt:Y(f.endedAt)}:{},...O(f.error,1024)?{error:O(f.error,1024)}:{},...f.timedOut===!0?{timedOut:!0}:{},...a(f.turnBudget)?{turnBudget:a(f.turnBudget)}:{},...f.turnBudgetExceeded===!0?{turnBudgetExceeded:!0}:{},...f.wrapUpRequested===!0?{wrapUpRequested:!0}:{},...j<q$&&Array.isArray(f.children)?{children:f.children.map((Z)=>e(Z,j+1)).filter((Z)=>Boolean(Z)).slice(0,h)}:{}}}function e($,j=0){if(!$||typeof $!=="object")return;let f=$;if(!i(f.id)||!i(f.parentRunId))return;let J=x$(f.path),Q=Array.isArray(f.steps)?f.steps.map((B)=>z0(B,j+1)).filter((B)=>Boolean(B)).slice(0,Q$):void 0,Z=V0(f.totalTokens),q=L0(f.totalCost);return{id:f.id,parentRunId:f.parentRunId,...Y(f.parentStepIndex)!==void 0?{parentStepIndex:Y(f.parentStepIndex)}:{},...O(f.parentAgent,128)?{parentAgent:O(f.parentAgent,128)}:{},depth:Math.min(Math.max(0,Y(f.depth)??0),q$),path:J,state:M0(f.state,"running"),...O(f.asyncDir,2048)?{asyncDir:O(f.asyncDir,2048)}:{},...Y(f.pid)!==void 0&&Y(f.pid)>0&&Number.isInteger(Y(f.pid))?{pid:Y(f.pid)}:{},...O(f.sessionId,256)?{sessionId:O(f.sessionId,256)}:{},...O(f.sessionFile,2048)?{sessionFile:O(f.sessionFile,2048)}:{},...O(f.intercomTarget,256)?{intercomTarget:O(f.intercomTarget,256)}:{},...O(f.ownerIntercomTarget,256)?{ownerIntercomTarget:O(f.ownerIntercomTarget,256)}:{},...O(f.leafIntercomTarget,256)?{leafIntercomTarget:O(f.leafIntercomTarget,256)}:{},...f.ownerState==="live"||f.ownerState==="gone"||f.ownerState==="unknown"?{ownerState:f.ownerState}:{},...O(f.controlInbox,2048)?{controlInbox:O(f.controlInbox,2048)}:{},...O(f.capabilityToken,128)?{capabilityToken:O(f.capabilityToken,128)}:{},...f.mode==="single"||f.mode==="parallel"||f.mode==="chain"?{mode:f.mode}:{},...O(f.agent,128)?{agent:O(f.agent,128)}:{},...Array.isArray(f.agents)?{agents:f.agents.map((B)=>O(B,128)).filter((B)=>Boolean(B)).slice(0,Q$)}:{},...Y(f.currentStep)!==void 0?{currentStep:Y(f.currentStep)}:{},...Y(f.chainStepCount)!==void 0?{chainStepCount:Y(f.chainStepCount)}:{},...f.activityState==="active_long_running"||f.activityState==="needs_attention"?{activityState:f.activityState}:{},...Y(f.lastActivityAt)!==void 0?{lastActivityAt:Y(f.lastActivityAt)}:{},...O(f.currentTool,128)?{currentTool:O(f.currentTool,128)}:{},...Y(f.currentToolStartedAt)!==void 0?{currentToolStartedAt:Y(f.currentToolStartedAt)}:{},...O(f.currentPath,2048)?{currentPath:O(f.currentPath,2048)}:{},...Y(f.turnCount)!==void 0?{turnCount:Y(f.turnCount)}:{},...Y(f.toolCount)!==void 0?{toolCount:Y(f.toolCount)}:{},...Z?{totalTokens:Z}:{},...q?{totalCost:q}:{},...Y(f.startedAt)!==void 0?{startedAt:Y(f.startedAt)}:{},...Y(f.endedAt)!==void 0?{endedAt:Y(f.endedAt)}:{},...Y(f.lastUpdate)!==void 0?{lastUpdate:Y(f.lastUpdate)}:{},...Y(f.timeoutMs)!==void 0?{timeoutMs:Y(f.timeoutMs)}:{},...Y(f.deadlineAt)!==void 0?{deadlineAt:Y(f.deadlineAt)}:{},...f.timedOut===!0?{timedOut:!0}:{},...a(f.turnBudget)?{turnBudget:a(f.turnBudget)}:{},...f.turnBudgetExceeded===!0?{turnBudgetExceeded:!0}:{},...f.wrapUpRequested===!0?{wrapUpRequested:!0}:{},...O(f.error,1024)?{error:O(f.error,1024)}:{},...Q&&Q.length>0?{steps:Q}:{},...j<q$&&Array.isArray(f.children)?{children:f.children.map((B)=>e(B,j+1)).filter((B)=>Boolean(B)).slice(0,h)}:{}}}function B$($,j){if(Buffer.byteLength($,"utf-8")>K$)return;let f;try{f=JSON.parse($)}catch{return}if(!f||typeof f!=="object")return;let J=f;if(J.type!=="subagent.nested.started"&&J.type!=="subagent.nested.updated"&&J.type!=="subagent.nested.completed")return;if(J.rootRunId!==j.rootRunId||J.capabilityToken!==j.capabilityToken)return;if(!i(J.parentRunId))return;let Q=Y(J.ts);if(Q===void 0)return;let Z=e(J.child);if(!Z||Z.id===j.rootRunId)return;let q={...Z,controlInbox:j.controlInbox,capabilityToken:j.capabilityToken,ownerState:Z.ownerState??"unknown"};return{type:J.type,ts:Q,rootRunId:j.rootRunId,parentRunId:J.parentRunId,...Y(J.parentStepIndex)!==void 0?{parentStepIndex:Y(J.parentStepIndex)}:{},capabilityToken:j.capabilityToken,child:q}}function A0($,j){if(!$.includes(`
|
|
2
|
-
`)){let f=
|
|
1
|
+
import*as d from"node:fs";import*as C from"node:path";import*as _ from"node:fs";import*as c from"node:path";var v=new Map;function f$($){return $ instanceof Error?$.message:String($)}function z$($){return typeof $==="object"&&$!==null&&"code"in $&&$.code==="ENOENT"}function F$($){let j=c.join($,"status.json"),f;try{f=_.statSync(j)}catch(X){if(z$(X))return null;throw Error(`Failed to inspect async status file '${j}': ${f$(X)}`,{cause:X instanceof Error?X:void 0})}let J=v.get(j);if(J&&J.mtime===f.mtimeMs)return J.status;let Q;try{Q=_.readFileSync(j,"utf-8")}catch(X){if(z$(X))return null;throw Error(`Failed to read async status file '${j}': ${f$(X)}`,{cause:X instanceof Error?X:void 0})}let Z;try{Z=JSON.parse(Q)}catch(X){throw Error(`Failed to parse async status file '${j}': ${f$(X)}`,{cause:X instanceof Error?X:void 0})}if(v.set(j,{mtime:f.mtimeMs,status:Z}),v.size>50){let X=v.keys().next().value;if(X)v.delete(X)}return Z}import*as D from"node:os";import*as P from"node:path";var A$="subagent:async-complete",T$="subagent:control-event",_$="subagent:control-intercom",C$="subagent:result-intercom";function o($){return $.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function $0($){let j=$?.env??process.env,f=$&&Object.hasOwn($,"getuid")?$.getuid:process.getuid?.bind(process);if(typeof f==="function")return`uid-${f()}`;for(let X of["USERNAME","USER","LOGNAME"]){let B=j[X];if(B)return`user-${o(B)}`}let J=$&&Object.hasOwn($,"userInfo")?$.userInfo:D.userInfo;try{let X=J?.().username;if(X)return`user-${o(X)}`}catch{}let Q=j.USERPROFILE??j.HOME;if(Q)return`home-${o(Q)}`;let Z=$&&Object.hasOwn($,"homedir")?$.homedir:D.homedir;try{let X=Z?.();if(X)return`home-${o(X)}`}catch{}return"shared"}var x=P.join(D.tmpdir(),`dm-subagents-${$0()}`),N=P.join(x,"async-subagent-results"),u=P.join(x,"async-subagent-runs"),j0=P.join(x,"chain-runs"),Bj=P.join(x,"artifacts");function w($){if($<1000)return`${$}ms`;if($<60000)return`${($/1000).toFixed(1)}s`;return`${Math.floor($/60000)}m${Math.floor($%60000/1000)}s`}import{randomUUID as G0}from"node:crypto";import*as A from"node:fs";import*as L from"node:path";import*as S$ from"node:path";var f0=128,J0=4;function J$($){return typeof $==="string"&&$.length>0&&$.length<=f0&&!S$.isAbsolute($)&&!$.includes("/")&&!$.includes("\\")&&!$.includes("..")}function b$($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function E$($,j){return typeof $==="string"&&$.length>0?$.slice(0,j):void 0}function y$($){if(!Array.isArray($))return[];return $.map((j)=>{if(!j||typeof j!=="object")return;let f=j;if(!J$(f.runId))return;return{runId:f.runId,...b$(f.stepIndex)!==void 0?{stepIndex:b$(f.stepIndex)}:{},...E$(f.agent,128)?{agent:E$(f.agent,128)}:{}}}).filter((j)=>Boolean(j)).slice(0,J0)}import*as E from"node:path";import{fileURLToPath as x$}from"node:url";import*as y from"node:os";import*as b from"node:path";var Sj=b.join(y.homedir(),".config","mcp","mcp.json"),yj={cursor:[b.join(y.homedir(),".cursor","mcp.json")],"claude-code":[b.join(y.homedir(),".claude","mcp.json"),b.join(y.homedir(),".claude.json"),b.join(y.homedir(),".claude","claude_desktop_config.json")],"claude-desktop":[b.join(y.homedir(),"Library","Application Support","Claude","claude_desktop_config.json")],codex:[b.join(y.homedir(),".codex","config.json")],windsurf:[b.join(y.homedir(),".windsurf","mcp.json")],vscode:[".vscode/mcp.json"]};import{Compile as Nj}from"typebox/compile";function I$($,j){let f=x$($),J=E.extname(f),Q=[".js",".mjs",".cjs",".ts",".mts",".cts"].includes(J)?J:".ts";return E.join(E.dirname(f),`${j}${Q}`)}function N$($){return E.basename(x$($)).startsWith("dm-args.")}function Q0($=import.meta.url){let j=N$($)?"subagent-prompt-runtime":E.join("..","runs","shared","subagent-prompt-runtime");return I$($,j)}function q0($=import.meta.url){let j=N$($)?E.join("..","..","extension","fanout-child"):"fanout-child";return I$($,j)}var pj=Q0(),lj=q0();import*as X0 from"node:fs";import*as R from"node:path";var B0=[10,25,50,100,200,500,1000,2000,4000],K0=new Set(["EACCES","EBUSY","EPERM"]),R$=typeof SharedArrayBuffer<"u"?new SharedArrayBuffer(4):void 0,D$=R$?new Int32Array(R$):void 0;function Y0($){if($<=0)return;if(D$)try{Atomics.wait(D$,0,0,$);return}catch{}let j=Date.now()+$;while(Date.now()<j);}function H0($){let j=$?.code;return typeof j==="string"&&K0.has(j)}function W0($,j,f,J,Q){for(let Z=0;;Z++)try{$.renameSync(j,f);return}catch(X){let B=J[Z];if(B===void 0||!H0(X))throw X;Q(B)}}function O0($={}){let j=$.fs??X0,f=$.now??Date.now,J=$.pid??process.pid,Q=$.random??Math.random,X=$.retryRenameErrors??process.platform==="win32"?$.retryDelaysMs??B0:[],B=$.wait??Y0;return(K,H)=>{j.mkdirSync(R.dirname(K),{recursive:!0});let V=R.join(R.dirname(K),`.${R.basename(K)}.${J}.${f()}.${Q().toString(36).slice(2)}.tmp`);try{j.writeFileSync(V,JSON.stringify(H,null,2),"utf-8"),W0(j,V,K,X,B)}finally{j.rmSync(V,{force:!0})}}}var k=O0();var l=L.join(x,"nested-subagent-events"),V0="route.json",L0="registry.json",B$=65536,Z$=12,h=16,Q$=3;function r($){return J$($)}function U0($,j){if(!r(j))throw Error(`${$} must be a non-empty safe id token.`)}function P$($,j){U0($,j)}function q$($,j){let f=L.resolve($),J=L.resolve(j);return J===f||J.startsWith(`${f}${L.sep}`)}function k$($){return L.dirname(L.resolve($.eventSink))}function a($){if(P$("rootRunId",$.rootRunId),P$("capabilityToken",$.capabilityToken),!q$(l,$.eventSink))throw Error("Nested event sink is outside the subagent nested event root.");if(!q$(l,$.controlInbox))throw Error("Nested control inbox is outside the subagent nested event root.");if(k$($)!==L.dirname(L.resolve($.controlInbox)))throw Error("Nested event sink and control inbox must share one route root.")}function g$($,j){if(!j.asyncDir)return;let f=L.resolve(j.asyncDir),J=L.resolve(x,"nested-subagent-runs",$,j.id),Q=L.relative(J,f);return f===J||!Q.startsWith("..")&&!L.isAbsolute(Q)?f:void 0}function Y($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function O($,j=512){return typeof $==="string"&&$.length>0?$.slice(0,j):void 0}function M0($){if(!$||typeof $!=="object")return;let j=$,f=Y(j.input),J=Y(j.output),Q=Y(j.total);return f!==void 0&&J!==void 0&&Q!==void 0?{input:f,output:J,total:Q}:void 0}function z0($){if(!$||typeof $!=="object")return;let j=$,f=Y(j.inputTokens),J=Y(j.outputTokens),Q=Y(j.costUsd);return f!==void 0&&J!==void 0&&Q!==void 0?{inputTokens:f,outputTokens:J,costUsd:Q}:void 0}function i($){if(!$||typeof $!=="object")return;let j=$,f=Y(j.maxTurns),J=Y(j.graceTurns),Q=Y(j.turnCount),Z=j.outcome==="within-budget"||j.outcome==="wrap-up-requested"||j.outcome==="exceeded"?j.outcome:void 0;if(f===void 0||J===void 0||Q===void 0||!Z)return;return{maxTurns:f,graceTurns:J,turnCount:Q,outcome:Z,...Y(j.wrapUpRequestedAtTurn)!==void 0?{wrapUpRequestedAtTurn:Y(j.wrapUpRequestedAtTurn)}:{},...Y(j.exceededAtTurn)!==void 0?{exceededAtTurn:Y(j.exceededAtTurn)}:{}}}function F0($,j){return $==="queued"||$==="running"||$==="complete"||$==="failed"||$==="paused"?$:j}function A0($,j){if(!$||typeof $!=="object")return;let f=$,J=O(f.agent,128);if(!J)return;let Q=f.status==="pending"||f.status==="running"||f.status==="complete"||f.status==="completed"||f.status==="failed"||f.status==="paused"?f.status:"pending";return{agent:J,status:Q,...O(f.sessionFile,2048)?{sessionFile:O(f.sessionFile,2048)}:{},...f.activityState==="active_long_running"||f.activityState==="needs_attention"?{activityState:f.activityState}:{},...Y(f.lastActivityAt)!==void 0?{lastActivityAt:Y(f.lastActivityAt)}:{},...O(f.currentTool,128)?{currentTool:O(f.currentTool,128)}:{},...Y(f.currentToolStartedAt)!==void 0?{currentToolStartedAt:Y(f.currentToolStartedAt)}:{},...O(f.currentPath,2048)?{currentPath:O(f.currentPath,2048)}:{},...Y(f.turnCount)!==void 0?{turnCount:Y(f.turnCount)}:{},...Y(f.toolCount)!==void 0?{toolCount:Y(f.toolCount)}:{},...Y(f.startedAt)!==void 0?{startedAt:Y(f.startedAt)}:{},...Y(f.endedAt)!==void 0?{endedAt:Y(f.endedAt)}:{},...O(f.error,1024)?{error:O(f.error,1024)}:{},...f.timedOut===!0?{timedOut:!0}:{},...i(f.turnBudget)?{turnBudget:i(f.turnBudget)}:{},...f.turnBudgetExceeded===!0?{turnBudgetExceeded:!0}:{},...f.wrapUpRequested===!0?{wrapUpRequested:!0}:{},...j<Q$&&Array.isArray(f.children)?{children:f.children.map((Z)=>s(Z,j+1)).filter((Z)=>Boolean(Z)).slice(0,h)}:{}}}function s($,j=0){if(!$||typeof $!=="object")return;let f=$;if(!r(f.id)||!r(f.parentRunId))return;let J=y$(f.path),Q=Array.isArray(f.steps)?f.steps.map((B)=>A0(B,j+1)).filter((B)=>Boolean(B)).slice(0,Z$):void 0,Z=M0(f.totalTokens),X=z0(f.totalCost);return{id:f.id,parentRunId:f.parentRunId,...Y(f.parentStepIndex)!==void 0?{parentStepIndex:Y(f.parentStepIndex)}:{},...O(f.parentAgent,128)?{parentAgent:O(f.parentAgent,128)}:{},depth:Math.min(Math.max(0,Y(f.depth)??0),Q$),path:J,state:F0(f.state,"running"),...O(f.asyncDir,2048)?{asyncDir:O(f.asyncDir,2048)}:{},...Y(f.pid)!==void 0&&Y(f.pid)>0&&Number.isInteger(Y(f.pid))?{pid:Y(f.pid)}:{},...O(f.sessionId,256)?{sessionId:O(f.sessionId,256)}:{},...O(f.sessionFile,2048)?{sessionFile:O(f.sessionFile,2048)}:{},...O(f.intercomTarget,256)?{intercomTarget:O(f.intercomTarget,256)}:{},...O(f.ownerIntercomTarget,256)?{ownerIntercomTarget:O(f.ownerIntercomTarget,256)}:{},...O(f.leafIntercomTarget,256)?{leafIntercomTarget:O(f.leafIntercomTarget,256)}:{},...f.ownerState==="live"||f.ownerState==="gone"||f.ownerState==="unknown"?{ownerState:f.ownerState}:{},...O(f.controlInbox,2048)?{controlInbox:O(f.controlInbox,2048)}:{},...O(f.capabilityToken,128)?{capabilityToken:O(f.capabilityToken,128)}:{},...f.mode==="single"||f.mode==="parallel"||f.mode==="chain"?{mode:f.mode}:{},...O(f.agent,128)?{agent:O(f.agent,128)}:{},...Array.isArray(f.agents)?{agents:f.agents.map((B)=>O(B,128)).filter((B)=>Boolean(B)).slice(0,Z$)}:{},...Y(f.currentStep)!==void 0?{currentStep:Y(f.currentStep)}:{},...Y(f.chainStepCount)!==void 0?{chainStepCount:Y(f.chainStepCount)}:{},...f.activityState==="active_long_running"||f.activityState==="needs_attention"?{activityState:f.activityState}:{},...Y(f.lastActivityAt)!==void 0?{lastActivityAt:Y(f.lastActivityAt)}:{},...O(f.currentTool,128)?{currentTool:O(f.currentTool,128)}:{},...Y(f.currentToolStartedAt)!==void 0?{currentToolStartedAt:Y(f.currentToolStartedAt)}:{},...O(f.currentPath,2048)?{currentPath:O(f.currentPath,2048)}:{},...Y(f.turnCount)!==void 0?{turnCount:Y(f.turnCount)}:{},...Y(f.toolCount)!==void 0?{toolCount:Y(f.toolCount)}:{},...Z?{totalTokens:Z}:{},...X?{totalCost:X}:{},...Y(f.startedAt)!==void 0?{startedAt:Y(f.startedAt)}:{},...Y(f.endedAt)!==void 0?{endedAt:Y(f.endedAt)}:{},...Y(f.lastUpdate)!==void 0?{lastUpdate:Y(f.lastUpdate)}:{},...Y(f.timeoutMs)!==void 0?{timeoutMs:Y(f.timeoutMs)}:{},...Y(f.deadlineAt)!==void 0?{deadlineAt:Y(f.deadlineAt)}:{},...f.timedOut===!0?{timedOut:!0}:{},...i(f.turnBudget)?{turnBudget:i(f.turnBudget)}:{},...f.turnBudgetExceeded===!0?{turnBudgetExceeded:!0}:{},...f.wrapUpRequested===!0?{wrapUpRequested:!0}:{},...O(f.error,1024)?{error:O(f.error,1024)}:{},...Q&&Q.length>0?{steps:Q}:{},...j<Q$&&Array.isArray(f.children)?{children:f.children.map((B)=>s(B,j+1)).filter((B)=>Boolean(B)).slice(0,h)}:{}}}function X$($,j){if(Buffer.byteLength($,"utf-8")>B$)return;let f;try{f=JSON.parse($)}catch{return}if(!f||typeof f!=="object")return;let J=f;if(J.type!=="subagent.nested.started"&&J.type!=="subagent.nested.updated"&&J.type!=="subagent.nested.completed")return;if(J.rootRunId!==j.rootRunId||J.capabilityToken!==j.capabilityToken)return;if(!r(J.parentRunId))return;let Q=Y(J.ts);if(Q===void 0)return;let Z=s(J.child);if(!Z||Z.id===j.rootRunId)return;let X={...Z,controlInbox:j.controlInbox,capabilityToken:j.capabilityToken,ownerState:Z.ownerState??"unknown"};return{type:J.type,ts:Q,rootRunId:j.rootRunId,parentRunId:J.parentRunId,...Y(J.parentStepIndex)!==void 0?{parentStepIndex:Y(J.parentStepIndex)}:{},capabilityToken:j.capabilityToken,child:X}}function T0($,j){if(!$.includes(`
|
|
2
|
+
`)){let f=X$($.trim(),j);return f?[f]:[]}return $.split(`
|
|
3
3
|
`).slice(0,$.endsWith(`
|
|
4
|
-
`)?void 0:-1).map((f)=>f.trim()?
|
|
5
|
-
`;if(Buffer.byteLength(J,"utf-8")>
|
|
4
|
+
`)?void 0:-1).map((f)=>f.trim()?X$(f,j):void 0).filter((f)=>Boolean(f))}function p($){return $==="complete"||$==="failed"||$==="paused"}function w$($,j){let f=j.type==="subagent.nested.completed"&&j.child.state==="running"?"complete":j.child.state,J={...j.child,state:f,lastUpdate:j.child.lastUpdate??j.ts};if(!$)return J;let Q=$.lastUpdate??0,Z=J.lastUpdate??j.ts;if(Z<Q)return $;if(p($.state)&&!p(J.state))return $;if(p($.state)&&p(J.state)&&Z===Q)return $;return{...$,...J,state:J.state,lastUpdate:Math.max(Q,Z)}}function _0($,j){let f=!1,J=(B)=>B.map((K)=>{if(K.id===j.parentRunId){let V=K.children??[],q=V.findIndex((U)=>U.id===j.child.id),z=w$(q>=0?V[q]:void 0,j),W=q>=0?V.map((U,S)=>S===q?z:U):[...V,z];return f=!0,{...K,children:W.slice(0,h),lastUpdate:Math.max(K.lastUpdate??0,j.ts)}}if(!K.children?.length)return K;let H=J(K.children);return H===K.children?K:{...K,children:H}}),Q=J($);if(f)return Q;let Z=Q.findIndex((B)=>B.id===j.child.id),X=w$(Z>=0?Q[Z]:void 0,j);return Z>=0?Q.map((B,K)=>K===Z?X:B):[...Q,X].slice(0,h)}function C0($,j){return{...$,updatedAt:Math.max($.updatedAt,j.ts),children:_0($.children,j)}}function v$($){return L.join(k$($),L0)}function c$(){let $;try{$=A.readdirSync(l)}catch(f){if(f.code==="ENOENT")return new Map;throw f}let j=new Map;for(let f of $){let J=L.join(l,f);try{let Q=JSON.parse(A.readFileSync(L.join(J,V0),"utf-8"));if(typeof Q.rootRunId!=="string"||typeof Q.capabilityToken!=="string")continue;if(j.has(Q.rootRunId))continue;let Z={rootRunId:Q.rootRunId,eventSink:L.join(J,"events"),controlInbox:L.join(J,"controls"),capabilityToken:Q.capabilityToken};a(Z),j.set(Q.rootRunId,Z)}catch{continue}}return j}function b0($){a($);try{let j=JSON.parse(A.readFileSync(v$($),"utf-8"));return{rootRunId:$.rootRunId,updatedAt:typeof j.updatedAt==="number"?j.updatedAt:0,children:Array.isArray(j.children)?j.children.map((f)=>s(f)).filter((f)=>Boolean(f)):[],processedEvents:Array.isArray(j.processedEvents)?j.processedEvents.filter((f)=>typeof f==="string"):[]}}catch(j){if(j.code!=="ENOENT")throw j;return{rootRunId:$.rootRunId,updatedAt:0,children:[],processedEvents:[]}}}function e($){a($);let j=b0($),f=new Set(j.processedEvents),J=!1,Q=[];try{Q=A.readdirSync($.eventSink).filter((Z)=>Z.endsWith(".json")||Z.endsWith(".jsonl")).sort()}catch(Z){if(Z.code!=="ENOENT")throw Z}for(let Z of Q){if(f.has(Z))continue;let X=L.join($.eventSink,Z);if(!q$($.eventSink,X))continue;let B;try{let K=A.statSync(X);if(!K.isFile()||K.size>B$)continue;B=A.readFileSync(X,"utf-8")}catch{continue}for(let K of T0(B,$))j=C0(j,K),J=!0;f.add(Z),J=!0}if(J)j={...j,processedEvents:[...f].slice(-1000)},k(v$($),j);return j}function E0($,j,f){let J=`${JSON.stringify(f)}
|
|
5
|
+
`;if(Buffer.byteLength(J,"utf-8")>B$)throw Error("Nested route record exceeds the maximum size.");A.mkdirSync($,{recursive:!0,mode:448});let Q=`${String(j).padStart(13,"0")}-${G0()}.json`,Z=L.join($,`.${Q}.tmp`),X=L.join($,Q);return A.writeFileSync(Z,J,{mode:384}),A.renameSync(Z,X),X}function h$($,j){a($);let f={...j,rootRunId:$.rootRunId,capabilityToken:$.capabilityToken},J=X$(JSON.stringify(f),$);if(!J)throw Error("Nested event record failed validation.");E0($.eventSink,J.ts,J)}function m$($,j,f){if(!j?.length)return;for(let J of j)J.children=void 0;if(!f?.length)return;for(let J of f){if(J.parentRunId!==$||J.parentStepIndex===void 0)continue;let Q=j.find((Z,X)=>(Z.index??X)===J.parentStepIndex);if(!Q)continue;Q.children??=[],Q.children=[...Q.children.filter((Z)=>Z.id!==J.id),J].slice(0,h)}}function d$($,j,f){return{id:$.runId||f.id,parentRunId:f.parentRunId,...f.parentStepIndex!==void 0?{parentStepIndex:f.parentStepIndex}:{},depth:f.depth,path:f.path??[{runId:f.parentRunId,...f.parentStepIndex!==void 0?{stepIndex:f.parentStepIndex}:{}}],asyncDir:j,...$.pid?{pid:$.pid}:{},...$.sessionId?{sessionId:$.sessionId}:{},mode:$.mode??f.mode,state:$.state,...$.currentStep!==void 0?{currentStep:$.currentStep}:{},...$.chainStepCount!==void 0?{chainStepCount:$.chainStepCount}:{},...$.activityState?{activityState:$.activityState}:{},...$.lastActivityAt!==void 0?{lastActivityAt:$.lastActivityAt}:{},...$.currentTool?{currentTool:$.currentTool}:{},...$.currentToolStartedAt!==void 0?{currentToolStartedAt:$.currentToolStartedAt}:{},...$.currentPath?{currentPath:$.currentPath}:{},...$.turnCount!==void 0?{turnCount:$.turnCount}:{},...$.toolCount!==void 0?{toolCount:$.toolCount}:{},...$.totalTokens?{totalTokens:$.totalTokens}:{},...$.timeoutMs!==void 0?{timeoutMs:$.timeoutMs}:{},...$.deadlineAt!==void 0?{deadlineAt:$.deadlineAt}:{},...$.timedOut!==void 0?{timedOut:$.timedOut}:{},...$.turnBudget?{turnBudget:$.turnBudget}:{},...$.turnBudgetExceeded!==void 0?{turnBudgetExceeded:$.turnBudgetExceeded}:{},...$.wrapUpRequested!==void 0?{wrapUpRequested:$.wrapUpRequested}:{},...$.error?{error:$.error}:{},...$.startedAt!==void 0?{startedAt:$.startedAt}:{startedAt:f.ts},...$.endedAt!==void 0?{endedAt:$.endedAt}:{},lastUpdate:$.lastUpdate??f.ts,...$.sessionFile?{sessionFile:$.sessionFile}:{},...$.steps?.length?{steps:$.steps.map((J)=>({agent:J.agent,status:J.status,...J.sessionFile?{sessionFile:J.sessionFile}:{},...J.activityState?{activityState:J.activityState}:{},...J.lastActivityAt!==void 0?{lastActivityAt:J.lastActivityAt}:{},...J.currentTool?{currentTool:J.currentTool}:{},...J.currentToolStartedAt!==void 0?{currentToolStartedAt:J.currentToolStartedAt}:{},...J.currentPath?{currentPath:J.currentPath}:{},...J.turnCount!==void 0?{turnCount:J.turnCount}:{},...J.toolCount!==void 0?{toolCount:J.toolCount}:{},...J.startedAt!==void 0?{startedAt:J.startedAt}:{},...J.endedAt!==void 0?{endedAt:J.endedAt}:{},...J.error?{error:J.error}:{},...J.timedOut!==void 0?{timedOut:J.timedOut}:{},...J.turnBudget?{turnBudget:J.turnBudget}:{},...J.turnBudgetExceeded!==void 0?{turnBudgetExceeded:J.turnBudgetExceeded}:{},...J.wrapUpRequested!==void 0?{wrapUpRequested:J.wrapUpRequested}:{}})).slice(0,Z$)}:{}}}function I0($,j,f){if(typeof $!=="object"||$===null)return!1;let{start:J,count:Q,stepIndex:Z}=$;return typeof J==="number"&&typeof Q==="number"&&typeof Z==="number"&&Number.isInteger(J)&&Number.isInteger(Q)&&Number.isInteger(Z)&&J>=0&&Q>0&&Z>=0&&Z<f&&J+Q<=j}function t($,j,f){if(!Array.isArray($))return[];return $.filter((J)=>I0(J,j,f)).sort((J,Q)=>J.stepIndex-Q.stepIndex||J.start-Q.start)}import*as M from"node:fs";import*as T from"node:path";function K$($){return $ instanceof Error?$.message:String($)}function N0($){let j=T.join($,"runner.stderr.log"),f=65536,J;try{let Z=M.statSync(j);if(Z.size<=0)return;let X=M.openSync(j,"r");try{let B=Math.min(Z.size,65536),K=Math.max(0,Z.size-B),H=Buffer.alloc(B);M.readSync(X,H,0,B,K),J=H.toString("utf-8").trim()}finally{M.closeSync(X)}}catch{return}if(!J)return;let Q=J.split(/\r?\n/).slice(-30).join(`
|
|
6
6
|
`);return Q.length>4000?`${Q.slice(-4000)}
|
|
7
|
-
[stderr tail truncated]`:Q}function
|
|
8
|
-
`,"utf-8")}catch{}}function
|
|
7
|
+
[stderr tail truncated]`:Q}function u$($){return typeof $==="object"&&$!==null&&"code"in $&&$.code==="ENOENT"}function R0($,j){try{M.mkdirSync(T.dirname($),{recursive:!0}),M.appendFileSync($,`${JSON.stringify(j)}
|
|
8
|
+
`,"utf-8")}catch{}}function D0($){let j=T.join($,"status.json"),f;try{f=M.readFileSync(j,"utf-8")}catch(J){if(u$(J))return null;throw Error(`Failed to read async status file '${j}': ${K$(J)}`,{cause:J instanceof Error?J:void 0})}try{return JSON.parse(f)}catch(J){throw Error(`Failed to parse async status file '${j}': ${K$(J)}`,{cause:J instanceof Error?J:void 0})}}function P0($){try{let j=JSON.parse(M.readFileSync($,"utf-8"));return{state:j.success?"complete":j.state==="paused"||j.exitCode===0?"paused":"failed",...Array.isArray(j.results)?{results:j.results}:{}}}catch(j){if(u$(j))return;throw Error(`Failed to read async result file '${$}': ${K$(j)}`,{cause:j instanceof Error?j:void 0})}}function w0($,j){if(j?.success===!0)return"complete";if(j?.success===!1)return"failed";return $}function k0($,j,f){let J=P0(j);if(!J)return;let Q=($.steps??[]).map((Z,X)=>{if(Z.status!=="running"&&Z.status!=="pending")return Z;let B=J.results?.[X],K=w0(J.state,B);return{...Z,status:K==="complete"?"complete":K,endedAt:Z.endedAt??f,durationMs:Z.startedAt!==void 0&&Z.durationMs===void 0?Math.max(0,f-Z.startedAt):Z.durationMs,exitCode:Z.exitCode??(K==="complete"||K==="paused"?0:1),error:K==="failed"?Z.error??B?.error:Z.error,sessionFile:Z.sessionFile??B?.sessionFile,model:Z.model??B?.model,attemptedModels:Z.attemptedModels??B?.attemptedModels,modelAttempts:Z.modelAttempts??B?.modelAttempts}});return{...$,state:J.state,activityState:void 0,lastUpdate:f,endedAt:$.endedAt??f,steps:Q}}function g0($,j,f){let J=j.startedAt??f,Q=j.agents?.length?j.agents:["subagent"],Z=j.chainStepCount,X=Z!==void 0?t(j.parallelGroups,Q.length,Z):[];return{runId:j.runId||T.basename($),...j.sessionId?{sessionId:j.sessionId}:{},mode:j.mode??"single",state:"running",pid:j.pid,startedAt:J,lastUpdate:f,currentStep:0,...Z!==void 0?{chainStepCount:Z}:{},...X.length?{parallelGroups:X}:{},steps:Q.map((B)=>({agent:B,status:"running",startedAt:J})),...j.sessionFile?{sessionFile:j.sessionFile}:{}}}function v0($,j,f,J){let Q=$.runId||T.basename(j),Z=typeof $.pid==="number"?$.pid:"unknown",X=J??`Async runner process ${Z} exited or disappeared before writing a result. Marked run failed by stale-run reconciliation.`,B=N0(j),K=B?`${X}
|
|
9
9
|
|
|
10
10
|
Runner stderr tail:
|
|
11
|
-
${B}`:q,U=(($.steps?.length)?$.steps:[{agent:"subagent",status:"running"}]).map((W)=>W.status==="running"||W.status==="pending"?{...W,status:"failed",activityState:void 0,endedAt:W.endedAt??f,durationMs:W.startedAt!==void 0&&W.durationMs===void 0?Math.max(0,f-W.startedAt):W.durationMs,exitCode:W.exitCode??1,error:W.error??K}:W),X={...$,state:"failed",activityState:void 0,lastUpdate:f,endedAt:f,steps:U},z=U[$.currentStep??0]?.agent??U[0]?.agent??"subagent";return{status:X,message:K,result:{id:Q,agent:z,mode:$.mode,success:!1,state:"failed",summary:K,results:U.map((W)=>({agent:W.agent,output:W.status==="complete"||W.status==="completed"?"":K,error:W.status==="complete"||W.status==="completed"?void 0:W.error??K,success:W.status==="complete"||W.status==="completed",model:W.model,attemptedModels:W.attemptedModels,modelAttempts:W.modelAttempts,sessionFile:W.sessionFile})),exitCode:1,timestamp:f,durationMs:Math.max(0,f-$.startedAt),asyncDir:j,sessionId:$.sessionId,sessionFile:$.sessionFile}}}function d$($,j,f,J,Q){let Z=k0(j,$,J,Q);return g(f,Z.result),g(T.join($,"status.json"),Z.status),I0(T.join($,"events.jsonl"),{type:"subagent.run.repaired_stale",ts:J,runId:Z.status.runId,pid:j.pid,resultPath:f,message:Z.message}),{status:Z.status,repaired:!0,resultPath:f,message:Z.message}}function o$($){return $==="complete"||$==="failed"||$==="paused"}function*H$($){for(let j of $??[])yield j,yield*H$(j.children),yield*H$(j.steps?.flatMap((f)=>f.children??[]))}function u$($,j={}){let f=t($);for(let J of H$(f.children)){if(J.state!=="running"&&J.state!=="queued")continue;let Q=k$($.rootRunId,J);if(!Q)continue;let Z=W$(Q,{...j,resultsDir:T.join(j.resultsDir??N,"nested",$.rootRunId)}),q=Z.status;if(!q)continue;if(!Z.repaired&&!o$(q.state))continue;let B=j.now?.()??Date.now();c$($,{type:o$(q.state)?"subagent.nested.completed":"subagent.nested.updated",ts:B,parentRunId:J.parentRunId,parentStepIndex:J.parentStepIndex,child:h$(q,Q,{id:J.id,parentRunId:J.parentRunId,parentStepIndex:J.parentStepIndex,depth:J.depth,path:J.path,mode:J.mode,ts:B})})}}function g0($,j=process.kill){try{return j($,0),"alive"}catch(f){let J=typeof f==="object"&&f!==null&&"code"in f?f.code:void 0;if(J==="ESRCH")return"dead";if(J==="EPERM")return"unknown";return"unknown"}}function W$($,j={}){let f=j.now?.()??Date.now(),J=N0($),Q=!J&&j.startedRun?w0($,j.startedRun,f):void 0,Z=J??Q;if(!Z)return{status:null,repaired:!1};let q=Z.runId||T.basename($),B=T.join(j.resultsDir??N,`${q}.json`);if(M.existsSync(B)){let H=Z.state==="running"||Z.state==="queued"?P0(Z,B,f):void 0;if(H)return g(T.join($,"status.json"),H),{status:H,repaired:!0,resultPath:B,message:"Existing async result file was used to repair stale running status."};return{status:Z,repaired:!1,resultPath:B}}if(Z.state!=="running"||typeof Z.pid!=="number")return{status:J??null,repaired:!1,resultPath:B};if(!J){let H=j.startedRun?.startedAt??Z.startedAt;if(f-H<(j.missingStatusGraceMs??1000))return{status:null,repaired:!1,resultPath:B}}if(g0(Z.pid,j.kill)!=="dead"){let H=j.staleAlivePidMs??86400000,U=Z.lastUpdate??Z.startedAt;if(f-U<=H)return{status:J??null,repaired:!1,resultPath:B};let X=`Async runner process ${Z.pid} still has a live PID, but status has not updated for ${f-U}ms. Marked run failed by stale-run reconciliation because PID ownership cannot be verified.`;return d$($,Z,B,f,X)}return d$($,Z,B,f)}function d($){return $ instanceof Error?$.message:String($)}function O$($){return typeof $==="object"&&$!==null&&"code"in $&&$.code==="ENOENT"}function v0($,j){let f=C.join($,j);try{return o.statSync(f).isDirectory()}catch(J){if(O$(J))return!1;throw Error(`Failed to inspect async run path '${f}': ${d(J)}`,{cause:J instanceof Error?J:void 0})}}function c0($){if(!$)return;try{return o.statSync($).mtimeMs}catch(j){if(O$(j))return;throw Error(`Failed to inspect async output file '${$}': ${d(j)}`,{cause:j instanceof Error?j:void 0})}}function m0($,j){if(j.state!=="running")return{activityState:j.activityState,lastActivityAt:j.lastActivityAt};let f=j.outputFile?C.isAbsolute(j.outputFile)?j.outputFile:C.join($,j.outputFile):void 0,J=typeof j.currentStep==="number"?j.steps?.[j.currentStep]:void 0;return{activityState:j.activityState,lastActivityAt:j.lastActivityAt??c0(f)??J?.lastActivityAt??J?.startedAt??j.startedAt}}function h0($,j,f=[],J){if(j.sessionId!==void 0&&typeof j.sessionId!=="string")throw Error(`Invalid async status '${C.join($,"status.json")}': sessionId must be a string.`);let{activityState:Q,lastActivityAt:Z}=m0($,j),q=j.steps??[],B=j.chainStepCount??q.length,K=$$(j.parallelGroups,q.length,B),H=[];if(f.length===0&&J)try{H=t(J)?.children??[]}catch(X){f.push(`Nested status unavailable: ${d(X)}`)}let U=q.map((X,z)=>{let{activityState:W,lastActivityAt:L}=X;return{index:z,agent:X.agent,...X.label?{label:X.label}:{},...X.phase?{phase:X.phase}:{},...X.outputName?{outputName:X.outputName}:{},...X.structured?{structured:X.structured}:{},status:X.status,...W?{activityState:W}:{},...L?{lastActivityAt:L}:{},...X.currentTool?{currentTool:X.currentTool}:{},...X.currentToolArgs?{currentToolArgs:X.currentToolArgs}:{},...X.currentToolStartedAt?{currentToolStartedAt:X.currentToolStartedAt}:{},...X.currentPath?{currentPath:X.currentPath}:{},...X.recentTools?{recentTools:X.recentTools.map((S)=>({...S}))}:{},...X.recentOutput?{recentOutput:[...X.recentOutput]}:{},...X.turnCount!==void 0?{turnCount:X.turnCount}:{},...X.toolCount!==void 0?{toolCount:X.toolCount}:{},...X.steerCount!==void 0?{steerCount:X.steerCount}:{},...X.lastSteerAt!==void 0?{lastSteerAt:X.lastSteerAt}:{},...X.durationMs!==void 0?{durationMs:X.durationMs}:{},...X.tokens?{tokens:X.tokens}:{},...X.totalCost?{totalCost:X.totalCost}:{},...X.skills?{skills:X.skills}:{},...X.model?{model:X.model}:{},...X.thinking?{thinking:X.thinking}:{},...X.attemptedModels?{attemptedModels:X.attemptedModels}:{},...X.error?{error:X.error}:{},...X.timedOut!==void 0?{timedOut:X.timedOut}:{},...X.turnBudget?{turnBudget:X.turnBudget}:{},...X.turnBudgetExceeded!==void 0?{turnBudgetExceeded:X.turnBudgetExceeded}:{},...X.wrapUpRequested!==void 0?{wrapUpRequested:X.wrapUpRequested}:{},...X.children?.length?{children:X.children}:{}}});return m$(j.runId||C.basename($),U,H),{id:j.runId||C.basename($),asyncDir:$,...j.sessionId?{sessionId:j.sessionId}:{},state:j.state,...j.error?{error:j.error}:{},activityState:Q,lastActivityAt:Z,currentTool:j.currentTool,currentToolStartedAt:j.currentToolStartedAt,currentPath:j.currentPath,turnCount:j.turnCount,toolCount:j.toolCount,steerCount:j.steerCount,lastSteerAt:j.lastSteerAt,mode:j.mode,cwd:j.cwd,startedAt:j.startedAt,lastUpdate:j.lastUpdate,endedAt:j.endedAt,...j.timeoutMs!==void 0?{timeoutMs:j.timeoutMs}:{},...j.deadlineAt!==void 0?{deadlineAt:j.deadlineAt}:{},...j.timedOut!==void 0?{timedOut:j.timedOut}:{},...j.turnBudget?{turnBudget:j.turnBudget}:{},...j.turnBudgetExceeded!==void 0?{turnBudgetExceeded:j.turnBudgetExceeded}:{},...j.wrapUpRequested!==void 0?{wrapUpRequested:j.wrapUpRequested}:{},currentStep:j.currentStep,...j.chainStepCount!==void 0?{chainStepCount:j.chainStepCount}:{},...j.pendingAppends!==void 0?{pendingAppends:j.pendingAppends}:{},...K.length?{parallelGroups:K}:{},steps:U,...H.length?{nestedChildren:H}:{},...f.length?{nestedWarnings:f}:{},...j.sessionDir?{sessionDir:j.sessionDir}:{},...j.outputFile?{outputFile:j.outputFile}:{},...j.totalTokens?{totalTokens:j.totalTokens}:{},...j.totalCost?{totalCost:j.totalCost}:{},...j.sessionFile?{sessionFile:j.sessionFile}:{}}}function d0($){let j=(f)=>{switch(f){case"running":return 0;case"queued":return 1;case"failed":return 2;case"paused":return 2;case"complete":return 3}};return[...$].sort((f,J)=>{let Q=j(f.state)-j(J.state);if(Q!==0)return Q;let Z=f.lastUpdate??f.endedAt??f.startedAt;return(J.lastUpdate??J.endedAt??J.startedAt)-Z})}function G$($,j={}){let f;try{f=o.readdirSync($).filter((K)=>v0($,K))}catch(K){if(O$(K))return[];throw Error(`Failed to list async runs in '${$}': ${d(K)}`,{cause:K instanceof Error?K:void 0})}let J=j.states?new Set(j.states):void 0,Q=[],Z,q=(K)=>{if(!Z)Z=v$();return Z.get(K)};for(let K of f){let H=C.join($,K),X=(j.reconcile===!1?void 0:W$(H,{resultsDir:j.resultsDir,kill:j.kill,now:j.now}))?.status??F$(H);if(!X)continue;if(J&&!J.has(X.state))continue;if(j.sessionId&&X.sessionId!==j.sessionId)continue;let z=[],W;try{if(W=q(X.runId||C.basename(H)),W)u$(W,{resultsDir:j.resultsDir,kill:j.kill,now:j.now})}catch(S){z.push(`Nested status unavailable: ${d(S)}`)}let L=h0(H,X,z,W);Q.push(L)}let B=d0(Q);return j.limit!==void 0?B.slice(0,j.limit):B}var l$=["queued","running"],o0=1800000,n0=250,u0=1000,l0=[T$,_$,C$,b$];function p0($,j){return new Promise((f)=>{if(j?.aborted){f();return}let J=setTimeout(()=>{j?.removeEventListener("abort",Q),f()},$),Q=()=>{clearTimeout(J),f()};j?.addEventListener("abort",Q,{once:!0})})}function r0($,j,f){let J=f.sleep??p0,Q=f.events;if(!Q)return J($,j);return new Promise((Z)=>{let q=!1,B=[],K=new AbortController,H=()=>{if(q)return;q=!0,K.abort(),j?.removeEventListener("abort",H);for(let U of B)try{U()}catch{}Z()};if(j?.aborted){H();return}j?.addEventListener("abort",H,{once:!0});for(let U of l0)try{B.push(Q.on(U,H))}catch{}J($,K.signal).then(H)})}function p$($,j){return $.id===j||$.id.startsWith(j)}function j$($){return $.activityState==="needs_attention"}function U$($,j){let f=j.asyncDirRoot??l,J=j.resultsDir??N,Q=G$(f,{states:[...l$],sessionId:j.state.currentSessionId??void 0,resultsDir:J,kill:j.kill,now:j.now});return $.id?Q.filter((Z)=>p$(Z,$.id)):Q}function i0($,j,f){return U$($,j).filter((J)=>j$(J)&&f.has(J.id))}function a0($,j){let f=j.asyncDirRoot??l,J=j.resultsDir??N,Q=G$(f,{sessionId:j.state.currentSessionId??void 0,resultsDir:J,kill:j.kill,now:j.now});return $.id?Q.filter((Z)=>p$(Z,$.id)):Q}function s0($){if($.length===0)return"";let j={complete:0,failed:0,paused:0};for(let J of $)if(J.state in j)j[J.state]+=1;let f=[];if(j.complete)f.push(`${j.complete} complete`);if(j.failed)f.push(`${j.failed} failed`);if(j.paused)f.push(`${j.paused} paused`);return f.join(", ")}function I($,j=!1){return{content:[{type:"text",text:$}],...j?{isError:!0}:{},details:{mode:"management",results:[]}}}async function Rf($,j,f){let J=f.now??Date.now,Q=Math.max(n0,f.pollIntervalMs??u0),Z=$.timeoutMs!==void 0&&$.timeoutMs>0?$.timeoutMs:o0,q=J(),B=$.id?!0:$.all===!0,K;try{K=U$($,f)}catch(G){return I(G instanceof Error?G.message:String(G),!0)}if(K.length===0){let G=$.id?`No active run matched "${$.id}". Nothing to wait for.`:"No active async runs in this session. Nothing to wait for.";return I(G)}if($.id){let G=K.filter((A)=>A.id===$.id);if(G.length===1)K=G;else if(K.length>1)return I(`Ambiguous async run id prefix "${$.id}" matched ${K.length} active runs: ${K.map((A)=>A.id).join(", ")}. Pass a longer id.`,!0)}let H=$.id?{...$,id:K[0].id}:$,U=new Set(K.map((G)=>G.id)),X=U.size,z=K.filter((G)=>!j$(G)),W=(G,A)=>{if(A.length>0)return!0;if(B)return G.every((f$)=>!U.has(f$.id));return G.filter((f$)=>U.has(f$.id)).length<X},L=K.filter((G)=>j$(G));while(!W(z,L)){if(j?.aborted){let G=z.map((A)=>`${A.id} (${A.state})`).join(", ");return I(`Wait aborted after ${w(J()-q)}. Still active: ${G}.`,!0)}if(J()-q>=Z){let G=z.map((A)=>`${A.id} (${A.state})`).join(", ");return I(`Wait timed out after ${w(Z)} with ${z.length} run(s) still active: ${G}. The runs are detached and keep going; call wait again or inspect with subagent({ action: "status" }).`,!0)}await r0(Q,j,f);try{K=U$(H,f),z=K.filter((G)=>!j$(G)),L=i0(H,f,U)}catch(G){return I(G instanceof Error?G.message:String(G),!0)}}let S="",n=0;try{let A=a0(H,f).filter((v)=>!l$.includes(v.state)&&U.has(v.id));n=A.length,S=s0(A)}catch{}let V$=L.length>0?` ${L.length} run(s) need attention: ${L.map((G)=>G.id).join(", ")} — inspect with subagent({ action: "status" }) then nudge/resume/interrupt.`:"",L$=z.filter((G)=>U.has(G.id)).length,M$=w(J()-q),z$=S?` Outcome: ${S}.`:"";if(B){let G=$.id?`run "${$.id}"`:`${X} async run(s)`,A=L.length>0?"attention required":"done",v=L.length>0?"Relevant completion/control events have been observed; inspect status if the notification is not visible yet.":"Completion events have been observed; inspect status if the notification is not visible yet.";return I(`Waited ${M$} for ${G}; ${A}.${z$}${V$} ${v}`)}let r$=L$>0?` ${L$} run(s) still in flight — call wait again to catch the next one.`:L.length>0?" No other runs are waitable until attention is handled.":" No runs remain in flight.",i$=L.length>0&&n===0?`${L.length} of ${X} run(s) need attention`:`${n} of ${X} run(s) finished`,a$=n>0?" Completion events for the finished run(s) have been observed; inspect status if the notification is not visible yet.":" Relevant control events have been observed; inspect status if the notification is not visible yet.";return I(`Waited ${M$}; ${i$}.${z$}${V$}${r$}${a$}`)}export{Rf as waitForSubagents};
|
|
11
|
+
${B}`:X,V=(($.steps?.length)?$.steps:[{agent:"subagent",status:"running"}]).map((W)=>W.status==="running"||W.status==="pending"?{...W,status:"failed",activityState:void 0,endedAt:W.endedAt??f,durationMs:W.startedAt!==void 0&&W.durationMs===void 0?Math.max(0,f-W.startedAt):W.durationMs,exitCode:W.exitCode??1,error:W.error??K}:W),q={...$,state:"failed",activityState:void 0,lastUpdate:f,endedAt:f,steps:V},z=V[$.currentStep??0]?.agent??V[0]?.agent??"subagent";return{status:q,message:K,result:{id:Q,agent:z,mode:$.mode,success:!1,state:"failed",summary:K,results:V.map((W)=>({agent:W.agent,output:W.status==="complete"||W.status==="completed"?"":K,error:W.status==="complete"||W.status==="completed"?void 0:W.error??K,success:W.status==="complete"||W.status==="completed",model:W.model,attemptedModels:W.attemptedModels,modelAttempts:W.modelAttempts,sessionFile:W.sessionFile})),exitCode:1,timestamp:f,durationMs:Math.max(0,f-$.startedAt),asyncDir:j,sessionId:$.sessionId,sessionFile:$.sessionFile}}}function n$($,j,f,J,Q){let Z=v0(j,$,J,Q);return k(f,Z.result),k(T.join($,"status.json"),Z.status),R0(T.join($,"events.jsonl"),{type:"subagent.run.repaired_stale",ts:J,runId:Z.status.runId,pid:j.pid,resultPath:f,message:Z.message}),{status:Z.status,repaired:!0,resultPath:f,message:Z.message}}function o$($){return $==="complete"||$==="failed"||$==="paused"}function*Y$($){for(let j of $??[])yield j,yield*Y$(j.children),yield*Y$(j.steps?.flatMap((f)=>f.children??[]))}function p$($,j={}){let f=e($);for(let J of Y$(f.children)){if(J.state!=="running"&&J.state!=="queued")continue;let Q=g$($.rootRunId,J);if(!Q)continue;let Z=H$(Q,{...j,resultsDir:T.join(j.resultsDir??N,"nested",$.rootRunId)}),X=Z.status;if(!X)continue;if(!Z.repaired&&!o$(X.state))continue;let B=j.now?.()??Date.now();h$($,{type:o$(X.state)?"subagent.nested.completed":"subagent.nested.updated",ts:B,parentRunId:J.parentRunId,parentStepIndex:J.parentStepIndex,child:d$(X,Q,{id:J.id,parentRunId:J.parentRunId,parentStepIndex:J.parentStepIndex,depth:J.depth,path:J.path,mode:J.mode,ts:B})})}}function c0($,j=process.kill){try{return j($,0),"alive"}catch(f){let J=typeof f==="object"&&f!==null&&"code"in f?f.code:void 0;if(J==="ESRCH")return"dead";if(J==="EPERM")return"unknown";return"unknown"}}function H$($,j={}){let f=j.now?.()??Date.now(),J=D0($),Q=!J&&j.startedRun?g0($,j.startedRun,f):void 0,Z=J??Q;if(!Z)return{status:null,repaired:!1};let X=Z.runId||T.basename($),B=T.join(j.resultsDir??N,`${X}.json`);if(M.existsSync(B)){let H=Z.state==="running"||Z.state==="queued"?k0(Z,B,f):void 0;if(H)return k(T.join($,"status.json"),H),{status:H,repaired:!0,resultPath:B,message:"Existing async result file was used to repair stale running status."};return{status:Z,repaired:!1,resultPath:B}}if(Z.state!=="running"||typeof Z.pid!=="number")return{status:J??null,repaired:!1,resultPath:B};if(!J){let H=j.startedRun?.startedAt??Z.startedAt;if(f-H<(j.missingStatusGraceMs??1000))return{status:null,repaired:!1,resultPath:B}}if(c0(Z.pid,j.kill)!=="dead"){let H=j.staleAlivePidMs??86400000,V=Z.lastUpdate??Z.startedAt;if(f-V<=H)return{status:J??null,repaired:!1,resultPath:B};let q=`Async runner process ${Z.pid} still has a live PID, but status has not updated for ${f-V}ms. Marked run failed by stale-run reconciliation because PID ownership cannot be verified.`;return n$($,Z,B,f,q)}return n$($,Z,B,f)}function m($){return $ instanceof Error?$.message:String($)}function W$($){return typeof $==="object"&&$!==null&&"code"in $&&$.code==="ENOENT"}function h0($,j){let f=C.join($,j);try{return d.statSync(f).isDirectory()}catch(J){if(W$(J))return!1;throw Error(`Failed to inspect async run path '${f}': ${m(J)}`,{cause:J instanceof Error?J:void 0})}}function m0($){if(!$)return;try{return d.statSync($).mtimeMs}catch(j){if(W$(j))return;throw Error(`Failed to inspect async output file '${$}': ${m(j)}`,{cause:j instanceof Error?j:void 0})}}function d0($,j){if(j.state!=="running")return{activityState:j.activityState,lastActivityAt:j.lastActivityAt};let f=j.outputFile?C.isAbsolute(j.outputFile)?j.outputFile:C.join($,j.outputFile):void 0,J=typeof j.currentStep==="number"?j.steps?.[j.currentStep]:void 0;return{activityState:j.activityState,lastActivityAt:j.lastActivityAt??m0(f)??J?.lastActivityAt??J?.startedAt??j.startedAt}}function n0($,j,f=[],J){if(j.sessionId!==void 0&&typeof j.sessionId!=="string")throw Error(`Invalid async status '${C.join($,"status.json")}': sessionId must be a string.`);let{activityState:Q,lastActivityAt:Z}=d0($,j),X=j.steps??[],B=j.chainStepCount??X.length,K=t(j.parallelGroups,X.length,B),H=[];if(f.length===0&&J)try{H=e(J)?.children??[]}catch(q){f.push(`Nested status unavailable: ${m(q)}`)}let V=X.map((q,z)=>{let{activityState:W,lastActivityAt:U}=q;return{index:z,agent:q.agent,...q.label?{label:q.label}:{},...q.phase?{phase:q.phase}:{},...q.outputName?{outputName:q.outputName}:{},...q.structured?{structured:q.structured}:{},status:q.status,...W?{activityState:W}:{},...U?{lastActivityAt:U}:{},...q.currentTool?{currentTool:q.currentTool}:{},...q.currentToolArgs?{currentToolArgs:q.currentToolArgs}:{},...q.currentToolStartedAt?{currentToolStartedAt:q.currentToolStartedAt}:{},...q.currentPath?{currentPath:q.currentPath}:{},...q.recentTools?{recentTools:q.recentTools.map((S)=>({...S}))}:{},...q.recentOutput?{recentOutput:[...q.recentOutput]}:{},...q.turnCount!==void 0?{turnCount:q.turnCount}:{},...q.toolCount!==void 0?{toolCount:q.toolCount}:{},...q.steerCount!==void 0?{steerCount:q.steerCount}:{},...q.lastSteerAt!==void 0?{lastSteerAt:q.lastSteerAt}:{},...q.durationMs!==void 0?{durationMs:q.durationMs}:{},...q.tokens?{tokens:q.tokens}:{},...q.totalCost?{totalCost:q.totalCost}:{},...q.skills?{skills:q.skills}:{},...q.model?{model:q.model}:{},...q.thinking?{thinking:q.thinking}:{},...q.attemptedModels?{attemptedModels:q.attemptedModels}:{},...q.error?{error:q.error}:{},...q.timedOut!==void 0?{timedOut:q.timedOut}:{},...q.turnBudget?{turnBudget:q.turnBudget}:{},...q.turnBudgetExceeded!==void 0?{turnBudgetExceeded:q.turnBudgetExceeded}:{},...q.wrapUpRequested!==void 0?{wrapUpRequested:q.wrapUpRequested}:{},...q.children?.length?{children:q.children}:{}}});return m$(j.runId||C.basename($),V,H),{id:j.runId||C.basename($),asyncDir:$,...j.sessionId?{sessionId:j.sessionId}:{},state:j.state,...j.error?{error:j.error}:{},activityState:Q,lastActivityAt:Z,currentTool:j.currentTool,currentToolStartedAt:j.currentToolStartedAt,currentPath:j.currentPath,turnCount:j.turnCount,toolCount:j.toolCount,steerCount:j.steerCount,lastSteerAt:j.lastSteerAt,mode:j.mode,cwd:j.cwd,startedAt:j.startedAt,lastUpdate:j.lastUpdate,endedAt:j.endedAt,...j.timeoutMs!==void 0?{timeoutMs:j.timeoutMs}:{},...j.deadlineAt!==void 0?{deadlineAt:j.deadlineAt}:{},...j.timedOut!==void 0?{timedOut:j.timedOut}:{},...j.turnBudget?{turnBudget:j.turnBudget}:{},...j.turnBudgetExceeded!==void 0?{turnBudgetExceeded:j.turnBudgetExceeded}:{},...j.wrapUpRequested!==void 0?{wrapUpRequested:j.wrapUpRequested}:{},currentStep:j.currentStep,...j.chainStepCount!==void 0?{chainStepCount:j.chainStepCount}:{},...j.pendingAppends!==void 0?{pendingAppends:j.pendingAppends}:{},...K.length?{parallelGroups:K}:{},steps:V,...H.length?{nestedChildren:H}:{},...f.length?{nestedWarnings:f}:{},...j.sessionDir?{sessionDir:j.sessionDir}:{},...j.outputFile?{outputFile:j.outputFile}:{},...j.totalTokens?{totalTokens:j.totalTokens}:{},...j.totalCost?{totalCost:j.totalCost}:{},...j.sessionFile?{sessionFile:j.sessionFile}:{}}}function o0($){let j=(f)=>{switch(f){case"running":return 0;case"queued":return 1;case"failed":return 2;case"paused":return 2;case"complete":return 3}};return[...$].sort((f,J)=>{let Q=j(f.state)-j(J.state);if(Q!==0)return Q;let Z=f.lastUpdate??f.endedAt??f.startedAt;return(J.lastUpdate??J.endedAt??J.startedAt)-Z})}function O$($,j={}){let f;try{f=d.readdirSync($).filter((K)=>h0($,K))}catch(K){if(W$(K))return[];throw Error(`Failed to list async runs in '${$}': ${m(K)}`,{cause:K instanceof Error?K:void 0})}let J=j.states?new Set(j.states):void 0,Q=[],Z,X=(K)=>{if(!Z)Z=c$();return Z.get(K)};for(let K of f){let H=C.join($,K),q=(j.reconcile===!1?void 0:H$(H,{resultsDir:j.resultsDir,kill:j.kill,now:j.now}))?.status??F$(H);if(!q)continue;if(J&&!J.has(q.state))continue;if(j.sessionId&&q.sessionId!==j.sessionId)continue;let z=[],W;try{if(W=X(q.runId||C.basename(H)),W)p$(W,{resultsDir:j.resultsDir,kill:j.kill,now:j.now})}catch(S){z.push(`Nested status unavailable: ${m(S)}`)}let U=n0(H,q,z,W);Q.push(U)}let B=o0(Q);return j.limit!==void 0?B.slice(0,j.limit):B}var l$=["queued","running"],u0=1800000,p0=250,l0=1000,r0=[A$,T$,_$,C$];function i0($,j){return new Promise((f)=>{if(j?.aborted){f();return}let J=setTimeout(()=>{j?.removeEventListener("abort",Q),f()},$),Q=()=>{clearTimeout(J),f()};j?.addEventListener("abort",Q,{once:!0})})}function a0($,j,f){let J=f.sleep??i0,Q=f.events;if(!Q)return J($,j);return new Promise((Z)=>{let X=!1,B=[],K=new AbortController,H=()=>{if(X)return;X=!0,K.abort(),j?.removeEventListener("abort",H);for(let V of B)try{V()}catch{}Z()};if(j?.aborted){H();return}j?.addEventListener("abort",H,{once:!0});for(let V of r0)try{B.push(Q.on(V,H))}catch{}J($,K.signal).then(H)})}function r$($,j){return $.id===j||$.id.startsWith(j)}function $$($){return $.activityState==="needs_attention"}function G$($,j){let f=j.asyncDirRoot??u,J=j.resultsDir??N,Q=O$(f,{states:[...l$],sessionId:j.state.currentSessionId??void 0,resultsDir:J,kill:j.kill,now:j.now});return $.id?Q.filter((Z)=>r$(Z,$.id)):Q}function s0($,j,f){return G$($,j).filter((J)=>$$(J)&&f.has(J.id))}function e0($,j){let f=j.asyncDirRoot??u,J=j.resultsDir??N,Q=O$(f,{sessionId:j.state.currentSessionId??void 0,resultsDir:J,kill:j.kill,now:j.now});return $.id?Q.filter((Z)=>r$(Z,$.id)):Q}function t0($){if($.length===0)return"";let j={complete:0,failed:0,paused:0};for(let J of $)if(J.state in j)j[J.state]+=1;let f=[];if(j.complete)f.push(`${j.complete} complete`);if(j.failed)f.push(`${j.failed} failed`);if(j.paused)f.push(`${j.paused} paused`);return f.join(", ")}function I($,j=!1){return{content:[{type:"text",text:$}],...j?{isError:!0}:{},details:{mode:"management",results:[]}}}async function Pf($,j,f){let J=f.now??Date.now,Q=Math.max(p0,f.pollIntervalMs??l0),Z=$.timeoutMs!==void 0&&$.timeoutMs>0?$.timeoutMs:u0,X=J(),B=$.id?!0:$.all===!0,K;try{K=G$($,f)}catch(G){return I(G instanceof Error?G.message:String(G),!0)}if(K.length===0){let G=$.id?`No active run matched "${$.id}". Nothing to wait for.`:"No active async runs in this session. Nothing to wait for.";return I(G)}if($.id){let G=K.filter((F)=>F.id===$.id);if(G.length===1)K=G;else if(K.length>1)return I(`Ambiguous async run id prefix "${$.id}" matched ${K.length} active runs: ${K.map((F)=>F.id).join(", ")}. Pass a longer id.`,!0)}let H=$.id?{...$,id:K[0].id}:$,V=new Set(K.map((G)=>G.id)),q=V.size,z=K.filter((G)=>!$$(G)),W=(G,F)=>{if(F.length>0)return!0;if(B)return G.every((j$)=>!V.has(j$.id));return G.filter((j$)=>V.has(j$.id)).length<q},U=K.filter((G)=>$$(G));while(!W(z,U)){if(j?.aborted){let G=z.map((F)=>`${F.id} (${F.state})`).join(", ");return I(`Wait aborted after ${w(J()-X)}. Still active: ${G}.`,!0)}if(J()-X>=Z){let G=z.map((F)=>`${F.id} (${F.state})`).join(", ");return I(`Wait timed out after ${w(Z)} with ${z.length} run(s) still active: ${G}. The runs are detached and keep going; call wait again or inspect with subagent({ action: "status" }).`,!0)}await a0(Q,j,f);try{K=G$(H,f),z=K.filter((G)=>!$$(G)),U=s0(H,f,V)}catch(G){return I(G instanceof Error?G.message:String(G),!0)}}let S="",n=0;try{let F=e0(H,f).filter((g)=>!l$.includes(g.state)&&V.has(g.id));n=F.length,S=t0(F)}catch{}let V$=U.length>0?` ${U.length} run(s) need attention: ${U.map((G)=>G.id).join(", ")} — inspect with subagent({ action: "status" }) then nudge/resume/interrupt.`:"",L$=z.filter((G)=>V.has(G.id)).length,U$=w(J()-X),M$=S?` Outcome: ${S}.`:"";if(B){let G=$.id?`run "${$.id}"`:`${q} async run(s)`,F=U.length>0?"attention required":"done",g=U.length>0?"Relevant completion/control events have been observed; inspect status if the notification is not visible yet.":"Completion events have been observed; inspect status if the notification is not visible yet.";return I(`Waited ${U$} for ${G}; ${F}.${M$}${V$} ${g}`)}let i$=L$>0?` ${L$} run(s) still in flight — call wait again to catch the next one.`:U.length>0?" No other runs are waitable until attention is handled.":" No runs remain in flight.",a$=U.length>0&&n===0?`${U.length} of ${q} run(s) need attention`:`${n} of ${q} run(s) finished`,s$=n>0?" Completion events for the finished run(s) have been observed; inspect status if the notification is not visible yet.":" Relevant control events have been observed; inspect status if the notification is not visible yet.";return I(`Waited ${U$}; ${a$}.${M$}${V$}${i$}${s$}`)}export{Pf as waitForSubagents};
|