@duckmind/dm-darwin-x64 0.49.8 → 0.50.0

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.
Files changed (62) hide show
  1. package/dm +0 -0
  2. package/extensions/.dm-extensions.json +44 -15
  3. package/extensions/dm-cliproxy/NOTICE.md +12 -0
  4. package/extensions/dm-cliproxy/index.js +2 -0
  5. package/extensions/dm-cliproxy/package.json +20 -0
  6. package/extensions/dm-cliproxy/scripts/check-config-migration.js +8 -0
  7. package/extensions/dm-cliproxy/src/apply.js +1 -0
  8. package/extensions/dm-cliproxy/src/cache.js +1 -0
  9. package/extensions/dm-cliproxy/src/commands.js +2 -0
  10. package/extensions/dm-cliproxy/src/compat.js +1 -0
  11. package/extensions/dm-cliproxy/src/config.js +2 -0
  12. package/extensions/dm-cliproxy/src/conflicts.js +1 -0
  13. package/extensions/dm-cliproxy/src/fetch-models.js +1 -0
  14. package/extensions/dm-cliproxy/src/fetch-usage.js +1 -0
  15. package/extensions/dm-cliproxy/src/log.js +1 -0
  16. package/extensions/dm-cliproxy/src/status-quota.js +1 -0
  17. package/extensions/dm-cliproxy/src/ui-frame.js +1 -0
  18. package/extensions/dm-cliproxy/src/ui-hub/hub.js +2 -0
  19. package/extensions/dm-cliproxy/src/ui-hub/index.js +2 -0
  20. package/extensions/dm-cliproxy/src/ui-hub/shell.js +1 -0
  21. package/extensions/dm-cliproxy/src/ui-hub/types.js +0 -0
  22. package/extensions/dm-cliproxy/src/ui-hub/view-diagnostics.js +1 -0
  23. package/extensions/dm-cliproxy/src/ui-hub/view-models.js +1 -0
  24. package/extensions/dm-cliproxy/src/ui-hub/view-usage.js +1 -0
  25. package/extensions/dm-cliproxy/src/ui-picker/catalog.js +1 -0
  26. package/extensions/dm-cliproxy/src/ui-picker/mutate.js +1 -0
  27. package/extensions/dm-cliproxy/src/ui-picker/prompt-confirm.js +1 -0
  28. package/extensions/dm-cliproxy/src/ui-picker/prompt-name.js +1 -0
  29. package/extensions/dm-cliproxy/src/ui-picker/providers.js +1 -0
  30. package/extensions/dm-cliproxy/src/ui-picker/render-text.js +1 -0
  31. package/extensions/dm-cliproxy/src/ui-picker/rows.js +1 -0
  32. package/extensions/dm-cliproxy/src/ui-picker/types.js +0 -0
  33. package/extensions/dm-cliproxy/src/ui-setup.js +2 -0
  34. package/extensions/dm-cliproxy/src/ui-usage.js +1 -0
  35. package/extensions/dm-cliproxy/src/usage-shared-cache.js +1 -0
  36. package/extensions/dm-subagents/src/extension/doctor.js +10 -10
  37. package/extensions/dm-subagents/src/extension/fanout-child.js +129 -129
  38. package/extensions/dm-subagents/src/extension/index.js +179 -179
  39. package/extensions/dm-subagents/src/extension/rpc.js +5 -5
  40. package/extensions/dm-subagents/src/extension/schemas.js +1 -1
  41. package/extensions/dm-subagents/src/extension/tool-description.js +2 -2
  42. package/extensions/dm-subagents/src/intercom/native-supervisor-channel.js +5 -5
  43. package/extensions/dm-subagents/src/runs/background/async-execution.js +19 -19
  44. package/extensions/dm-subagents/src/runs/background/async-job-tracker.js +10 -10
  45. package/extensions/dm-subagents/src/runs/background/async-resume.js +5 -5
  46. package/extensions/dm-subagents/src/runs/background/async-status.js +8 -8
  47. package/extensions/dm-subagents/src/runs/background/fleet-view.js +14 -14
  48. package/extensions/dm-subagents/src/runs/background/result-watcher.js +5 -5
  49. package/extensions/dm-subagents/src/runs/background/run-id-resolver.js +3 -3
  50. package/extensions/dm-subagents/src/runs/background/run-status.js +20 -20
  51. package/extensions/dm-subagents/src/runs/background/stale-run-reconciler.js +7 -7
  52. package/extensions/dm-subagents/src/runs/background/subagent-runner.js +38 -38
  53. package/extensions/dm-subagents/src/runs/background/wait.js +7 -7
  54. package/extensions/dm-subagents/src/runs/foreground/chain-execution.js +58 -58
  55. package/extensions/dm-subagents/src/runs/foreground/execution.js +36 -36
  56. package/extensions/dm-subagents/src/runs/foreground/subagent-executor.js +129 -129
  57. package/extensions/dm-subagents/src/runs/shared/dm-args.js +1 -1
  58. package/extensions/dm-subagents/src/runs/shared/nested-events.js +6 -6
  59. package/extensions/dm-subagents/src/runs/shared/subagent-prompt-runtime.js +13 -13
  60. package/package.json +1 -1
  61. package/extensions/dm-9router-ext/package.json +0 -23
  62. package/extensions/dm-9router-ext/src/index.js +0 -5
@@ -1 +1 @@
1
- import*as Q from"node:fs";import*as P from"node:os";import*as X from"node:path";import{fileURLToPath as tf}from"node:url";import*as u from"node:path";var qf=128,Mf=4;function Kf(f){return typeof f==="string"&&f.length>0&&f.length<=qf&&!u.isAbsolute(f)&&!f.includes("/")&&!f.includes("\\")&&!f.includes("..")}function h(f){return typeof f==="number"&&Number.isFinite(f)?f:void 0}function g(f,j){return typeof f==="string"&&f.length>0?f.slice(0,j):void 0}function k(f){if(!Array.isArray(f))return[];return f.map((j)=>{if(!j||typeof j!=="object")return;let $=j;if(!Kf($.runId))return;return{runId:$.runId,...h($.stepIndex)!==void 0?{stepIndex:h($.stepIndex)}:{},...g($.agent,128)?{agent:g($.agent,128)}:{}}}).filter((j)=>Boolean(j)).slice(0,Mf)}function w(f){if(!f)return[];try{return k(JSON.parse(f))}catch{return[]}}function r(f){let j=k(f);return j.length?JSON.stringify(j):""}import{createHash as Rf}from"node:crypto";import*as R from"node:fs";import*as K from"node:os";import*as _ from"node:path";import*as E from"node:fs";import*as C from"node:os";import*as M from"node:path";import*as c from"node:os";import*as S from"node:path";function N(f){return f.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function Gf(f){let j=f?.env??process.env,$=f&&Object.hasOwn(f,"getuid")?f.getuid:process.getuid?.bind(process);if(typeof $==="function")return`uid-${$()}`;for(let O of["USERNAME","USER","LOGNAME"]){let G=j[O];if(G)return`user-${N(G)}`}let T=f&&Object.hasOwn(f,"userInfo")?f.userInfo:c.userInfo;try{let O=T?.().username;if(O)return`user-${N(O)}`}catch{}let J=j.USERPROFILE??j.HOME;if(J)return`home-${N(J)}`;let B=f&&Object.hasOwn(f,"homedir")?f.homedir:c.homedir;try{let O=B?.();if(O)return`home-${N(O)}`}catch{}return"shared"}var L=S.join(c.tmpdir(),`dm-subagents-${Gf()}`),Qj=S.join(L,"async-subagent-results"),Yj=S.join(L,"async-subagent-runs"),Vf=S.join(L,"chain-runs"),Aj=S.join(L,"artifacts");var yf=".dm",Hf="@duckmind/dm-coding-agent",cf="DM_SUBAGENTS_PI_CODING_AGENT_PACKAGE_ROOT";function p(f){return typeof f==="string"&&f.trim()?f:void 0}function d(f){if(!f)return;try{let j=JSON.parse(E.readFileSync(M.join(f,"package.json"),"utf-8"));if(j.name!==Hf)return;return p(j.piConfig?.configDir)}catch{return}}function Sf(f=process.argv[1],j=process.env[cf]){let $=d(j);if($)return $;if(!f)return;try{let T=M.dirname(E.realpathSync(f));while(T!==M.dirname(T)){let J=d(T);if(J)return J;T=M.dirname(T)}}catch{}return}function Lf(f,j,$){return(f&&typeof f==="object"?p(f.CONFIG_DIR_NAME):void 0)??Sf(j,$)??yf}function t(){return Lf()}function I(f){return M.join(f,t())}function z(){let f=process.env.DM_CODING_AGENT_DIR;if(f==="~")return C.homedir();if(f?.startsWith("~/"))return M.join(C.homedir(),f.slice(2));return f||M.join(C.homedir(),t(),"agent")}var Cf=1,bf=604800000,s=new Set(["read","bash","edit","write","grep","find","ls","mcp"]),e=_.join(K.homedir(),".config","mcp","mcp.json"),a={cursor:[_.join(K.homedir(),".cursor","mcp.json")],"claude-code":[_.join(K.homedir(),".claude","mcp.json"),_.join(K.homedir(),".claude.json"),_.join(K.homedir(),".claude","claude_desktop_config.json")],"claude-desktop":[_.join(K.homedir(),"Library","Application Support","Claude","claude_desktop_config.json")],codex:[_.join(K.homedir(),".codex","config.json")],windsurf:[_.join(K.homedir(),".windsurf","mcp.json")],vscode:[".vscode/mcp.json"]};function ff(f,j=process.cwd()){if(!f?.length)return[];try{let $=zf(j),T=Ff();if(!T)return[];return vf($,T,gf($.settings?.toolPrefix),f)}catch{return[]}}function Ff(){let f=_.join(z(),"mcp-cache.json"),j;try{j=JSON.parse(R.readFileSync(f,"utf-8"))}catch{return null}if(!j||typeof j!=="object")return null;let $=j;if($.version!==Cf||!$.servers||typeof $.servers!=="object"||Array.isArray($.servers))return null;return $}function zf(f){let j={mcpServers:{}};for(let $ of Nf(f)){let T=wf($);if(!T)continue;j=nf(j,xf(T,f))}return j}function Nf(f){let j=_.join(z(),"mcp.json"),$=_.resolve(f,".mcp.json"),T=_.resolve(I(f),"mcp.json"),J=[];if(e!==j)J.push(e);if(J.push(j),$!==j)J.push($);if(T!==j&&T!==$)J.push(T);return J}function wf(f){let j;try{j=JSON.parse(R.readFileSync(f,"utf-8"))}catch{return null}return If(j)}function If(f){if(!f||typeof f!=="object"||Array.isArray(f))return{mcpServers:{}};let j=f,$=j.mcpServers??j["mcp-servers"]??{};return{mcpServers:$&&typeof $==="object"&&!Array.isArray($)?$:{},imports:Array.isArray(j.imports)?j.imports.filter((T)=>uf(T)):void 0,settings:j.settings&&typeof j.settings==="object"&&!Array.isArray(j.settings)?j.settings:void 0}}function nf(f,j){let $=[...f.imports??[],...j.imports??[]];return{mcpServers:{...f.mcpServers,...j.mcpServers},imports:$.length?[...new Set($)]:void 0,settings:j.settings?{...f.settings,...j.settings}:f.settings}}function xf(f,j){if(!f.imports?.length)return f;let $={};for(let T of f.imports){let J=Df(T,j);if(!J)continue;let B;try{B=JSON.parse(R.readFileSync(J,"utf-8"))}catch{continue}for(let[O,G]of Object.entries(of(B,T)))if(!$[O])$[O]=G}return{imports:f.imports,settings:f.settings,mcpServers:{...$,...f.mcpServers}}}function Df(f,j){for(let $ of a[f]){let T=$.startsWith(".")?_.resolve(j,$):$;if(R.existsSync(T))return T}return null}function of(f,j){if(!f||typeof f!=="object"||Array.isArray(f))return{};let $=f,T=j==="cursor"||j==="windsurf"||j==="vscode"?$.mcpServers??$["mcp-servers"]:$.mcpServers;return T&&typeof T==="object"&&!Array.isArray(T)?T:{}}function vf(f,j,$,T){let J=[],B=new Set,{servers:O,tools:G}=Pf(T);for(let[Y,U]of Object.entries(f.mcpServers)){let y=j.servers[Y];if(!mf(y,U))continue;let V=O.has(Y)?!0:G.get(Y);if(!V)continue;for(let Z of Array.isArray(y.tools)?y.tools:[]){if(typeof Z?.name!=="string"||!Z.name)continue;if(V!==!0&&!V.has(Z.name))continue;if(l(Z.name,Y,$,U.excludeTools))continue;let q=F(Z.name,Y,$);if(s.has(q)||B.has(q))continue;B.add(q),J.push(q)}if(U.exposeResources===!1)continue;for(let Z of Array.isArray(y.resources)?y.resources:[]){if(typeof Z?.name!=="string"||!Z.name||typeof Z.uri!=="string"||!Z.uri)continue;let q=`get_${rf(Z.name)}`;if(V!==!0&&!V.has(q))continue;if(l(q,Y,$,U.excludeTools))continue;let H=F(q,Y,$);if(s.has(H)||B.has(H))continue;B.add(H),J.push(H)}}return J}function Pf(f){let j=new Set,$=new Map;for(let T of f)if(T=T.replace(/\/+$/,""),T.includes("/")){let[J,B]=T.split("/",2);if(J&&B){if(!$.has(J))$.set(J,new Set);$.get(J).add(B)}else if(J)j.add(J)}else if(T)j.add(T);return{servers:j,tools:$}}function mf(f,j){if(!f||f.configHash!==hf(j))return!1;if(!f.cachedAt||typeof f.cachedAt!=="number")return!1;return Date.now()-f.cachedAt<=bf}function hf(f){let j={command:f.command,args:f.args,env:i(f.env),cwd:df(f.cwd),url:f.url,headers:i(f.headers),auth:f.auth,bearerToken:pf(f),bearerTokenEnv:f.bearerTokenEnv,exposeResources:f.exposeResources,excludeTools:f.excludeTools};return Rf("sha256").update(n(j)).digest("hex")}function gf(f){return f==="none"||f==="short"||f==="server"?f:"server"}function uf(f){return typeof f==="string"&&Object.hasOwn(a,f)}function kf(f,j){if(j==="none")return"";if(j==="short")return f.replace(/-?mcp$/i,"").replace(/-/g,"_")||"mcp";return f.replace(/-/g,"_")}function F(f,j,$){let T=kf(j,$);return T?`${T}_${f}`:f}function l(f,j,$,T){if(!Array.isArray(T)||T.length===0)return!1;let J=new Set([b(f),b(F(f,j,$)),b(F(f,j,"server")),b(F(f,j,"short"))]);return T.some((B)=>typeof B==="string"&&J.has(b(B)))}function b(f){return f.replace(/-/g,"_")}function rf(f){let j=f.replace(/[^a-zA-Z0-9]/g,"_").replace(/_+/g,"_").replace(/^_+/,"").replace(/_+$/,"").toLowerCase();if(!j||/^\d/.test(j))j=`resource${j?`_${j}`:""}`;return j}function i(f){if(!f||typeof f!=="object"||Array.isArray(f))return;let j={};for(let[$,T]of Object.entries(f))if(typeof T==="string")j[$]=x(T);return j}function x(f){return f.replace(/\$\{(\w+)\}/g,(j,$)=>process.env[$]??"").replace(/\$env:(\w+)/g,(j,$)=>process.env[$]??"")}function df(f){if(typeof f!=="string")return;let j=x(f);if(j==="~")return K.homedir();if(j.startsWith("~/")||j.startsWith("~\\"))return _.join(K.homedir(),j.slice(2));return j}function pf(f){if(typeof f.bearerToken==="string")return x(f.bearerToken);return typeof f.bearerTokenEnv==="string"?process.env[f.bearerTokenEnv]:void 0}function n(f){if(f===null||f===void 0||typeof f!=="object"){let $=JSON.stringify(f);return $===void 0?"undefined":$}if(Array.isArray(f))return`[${f.map(($)=>n($)).join(",")}]`;let j=f;return`{${Object.keys(j).sort().map(($)=>`${JSON.stringify($)}:${n(j[$])}`).join(",")}}`}import{Compile as mj}from"typebox/compile";var jf="DM_SUBAGENT_STRUCTURED_OUTPUT_SCHEMA",$f="DM_SUBAGENT_STRUCTURED_OUTPUT_CAPTURE";var Tf="DM_SUBAGENT_TOOL_BUDGET";function Jf(f){return f?JSON.stringify(f):void 0}var sf=["off","minimal","low","medium","high","xhigh"],ef=8000;function Af(f,j){let $=tf(f),T=X.extname($),J=[".js",".mjs",".cjs",".ts",".mts",".cts"].includes(T)?T:".ts",B=X.dirname($);while(!Q.existsSync(X.join(B,"package.json"))){let O=X.dirname(B);if(O===B)throw Error(`Unable to resolve dm-subagents package root from ${$}`);B=O}return X.join(B,`${j}${J}`)}var Bf=Af(import.meta.url,X.join("src","runs","shared","subagent-prompt-runtime")),lf=Af(import.meta.url,X.join("src","extension","fanout-child")),af="DM_SUBAGENT_CHILD",fj="DM_SUBAGENT_ORCHESTRATOR_TARGET",jj="DM_SUBAGENT_ORCHESTRATOR_SESSION_ID",$j="DM_SUBAGENT_SUPERVISOR_CHANNEL_DIR",Uf="DM_SUBAGENT_RUN_ID",Tj="DM_SUBAGENT_CHILD_AGENT",Jj="DM_SUBAGENT_CHILD_INDEX",Bj="DM_SUBAGENT_FANOUT_CHILD",D="DM_SUBAGENT_PARENT_EVENT_SINK",Of="DM_SUBAGENT_PARENT_CONTROL_INBOX",o="DM_SUBAGENT_PARENT_ROOT_RUN_ID",Wf="DM_SUBAGENT_PARENT_RUN_ID",Xf="DM_SUBAGENT_PARENT_CHILD_INDEX",Zf="DM_SUBAGENT_PARENT_DEPTH",_f="DM_SUBAGENT_PARENT_PATH",v="DM_SUBAGENT_PARENT_CAPABILITY_TOKEN",Qf="DM_SUBAGENT_PARENT_SESSION",Uj="DM_SUBAGENT_STEER_INBOX";function Yf(f){return f.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function Oj(f,j,$){return X.join(L,"supervisor-channels",`${Yf(f)}-${Yf(j)}-${$}`)}function Wj(f,j,$=!1){if(!f||!j)return f;let T=f.lastIndexOf(":");if(T!==-1&&sf.includes(f.substring(T+1)))return $?`${f.slice(0,T)}:${j}`:f;return`${f}:${j}`}function sj(f){let j=[...f.baseArgs];if(f.sessionFile)Q.mkdirSync(X.dirname(f.sessionFile),{recursive:!0}),j.push("--session",f.sessionFile);else{if(!f.sessionEnabled)j.push("--no-session");if(f.sessionDir)Q.mkdirSync(f.sessionDir,{recursive:!0}),j.push("--session-dir",f.sessionDir)}let $=Wj(f.model,f.thinking);if($)j.push("--model",$);let T=f.tools?.filter((W)=>!(W.includes("/")||W.endsWith(".ts")||W.endsWith(".js")))??[],J=f.requireReadTool&&f.tools?.length&&!T.includes("read")?["read",...T]:T,B=J.includes("subagent"),O=[];if(f.tools?.length){let W=[...J];for(let A of f.tools)if(!J.includes(A)&&(A.includes("/")||A.endsWith(".ts")||A.endsWith(".js")))O.push(A);if(W.length>0){if(f.mcpDirectTools?.length)W.push(...ff(f.mcpDirectTools,f.cwd));j.push("--tools",W.join(","))}}let G=B?[Bf,lf]:[Bf];if(f.extensions!==void 0){j.push("--no-extensions");for(let W of[...new Set([...G,...O,...f.extensions,...f.subagentOnlyExtensions??[]])])j.push("--extension",W)}else for(let W of[...new Set([...G,...O,...f.subagentOnlyExtensions??[]])])j.push("--extension",W);if(!f.inheritSkills)j.push("--no-skills");let Y;if(f.systemPrompt!==void 0&&f.systemPrompt!==null){Y=Q.mkdtempSync(X.join(P.tmpdir(),"dm-subagent-"));let W=(f.promptFileStem??"prompt").replace(/[^\w.-]/g,"_"),A=X.join(Y,`${W}.md`);Q.writeFileSync(A,f.systemPrompt,{mode:384}),j.push(f.systemPromptMode==="replace"?"--system-prompt":"--append-system-prompt",A)}if(f.task.length>ef){if(!Y)Y=Q.mkdtempSync(X.join(P.tmpdir(),"dm-subagent-"));let W=X.join(Y,"task.md");Q.writeFileSync(W,`Task: ${f.task}`,{mode:384}),j.push(`@${W}`)}else j.push(`Task: ${f.task}`);let U={};U[af]="1",U[Bj]=B?"1":"0";let y=Boolean(process.env[D]&&process.env[o]&&process.env[v]),V=f.parentRunId??f.runId??(y?process.env[Uf]:void 0)??process.env[Wf]??"",Z=f.parentChildIndex!==void 0?String(f.parentChildIndex):f.childIndex!==void 0?String(f.childIndex):process.env[Xf]??"",q=Number(process.env[Zf]),H=f.parentDepth??(y&&Number.isFinite(q)?q+1:1),Ef=f.parentPath??[...w(process.env[_f]),...V?[{runId:V,...Z&&/^\d+$/.test(Z)?{stepIndex:Number(Z)}:{},...f.childAgentName?{agent:f.childAgentName}:{}}]:[]];if(U[D]=B?f.parentEventSink??process.env[D]??"":"",U[Of]=B?f.parentControlInbox??process.env[Of]??"":"",U[o]=B?f.parentRootRunId??process.env[o]??f.runId??"":"",U[Wf]=B?V:"",U[Xf]=B?Z:"",U[Zf]=B?String(H):"",U[_f]=B?r(Ef):"",U[v]=B?f.parentCapabilityToken??process.env[v]??"":"",U.DM_SUBAGENT_INHERIT_PROJECT_CONTEXT=f.inheritProjectContext?"1":"0",U.DM_SUBAGENT_INHERIT_SKILLS=f.inheritSkills?"1":"0",f.intercomSessionName)U.DM_SUBAGENT_INTERCOM_SESSION_NAME=f.intercomSessionName;if(f.orchestratorIntercomTarget)U[fj]=f.orchestratorIntercomTarget;if(f.parentSessionId)U[jj]=f.parentSessionId;if(f.orchestratorIntercomTarget&&f.parentSessionId&&f.runId&&f.childAgentName){let W=f.childIndex??0,A=Oj(f.runId,f.childAgentName,W);Q.mkdirSync(X.join(A,"requests"),{recursive:!0}),Q.mkdirSync(X.join(A,"replies"),{recursive:!0}),U[$j]=A}if(f.runId)U[Uf]=f.runId;if(f.childAgentName)U[Tj]=f.childAgentName;if(f.childIndex!==void 0)U[Jj]=String(f.childIndex);if(f.mcpDirectTools?.length)U.MCP_DIRECT_TOOLS=f.mcpDirectTools.join(",");else U.MCP_DIRECT_TOOLS="__none__";if(f.structuredOutput)U[$f]=f.structuredOutput.outputPath,U[jf]=f.structuredOutput.schemaPath;if(f.steerInboxDir)U[Uj]=f.steerInboxDir;let m=Jf(f.toolBudget);if(m)U[Tf]=m;return U[Qf]=f.parentSessionId??process.env[Qf]??"",{args:j,env:U,tempDir:Y}}var ej=w;function lj(f){if(!f)return;try{Q.rmSync(f,{recursive:!0,force:!0})}catch{}}export{Af as resolveRuntimeExtensionPath,ej as parseParentPathEnv,lj as cleanupTempDir,sj as buildPiArgs,Wj as applyThinkingSuffix,$j as SUBAGENT_SUPERVISOR_CHANNEL_DIR_ENV,Uj as SUBAGENT_STEER_INBOX_ENV,Uf as SUBAGENT_RUN_ID_ENV,Qf as SUBAGENT_PARENT_SESSION_ENV,Wf as SUBAGENT_PARENT_RUN_ID_ENV,o as SUBAGENT_PARENT_ROOT_RUN_ID_ENV,_f as SUBAGENT_PARENT_PATH_ENV,D as SUBAGENT_PARENT_EVENT_SINK_ENV,Zf as SUBAGENT_PARENT_DEPTH_ENV,Of as SUBAGENT_PARENT_CONTROL_INBOX_ENV,Xf as SUBAGENT_PARENT_CHILD_INDEX_ENV,v as SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV,fj as SUBAGENT_ORCHESTRATOR_TARGET_ENV,jj as SUBAGENT_ORCHESTRATOR_SESSION_ID_ENV,Bj as SUBAGENT_FANOUT_CHILD_ENV,Jj as SUBAGENT_CHILD_INDEX_ENV,af as SUBAGENT_CHILD_ENV,Tj as SUBAGENT_CHILD_AGENT_ENV};
1
+ import*as A from"node:fs";import*as P from"node:os";import*as X from"node:path";import{fileURLToPath as Ef}from"node:url";import*as k from"node:path";var Kf=128,Gf=4;function Vf(f){return typeof f==="string"&&f.length>0&&f.length<=Kf&&!k.isAbsolute(f)&&!f.includes("/")&&!f.includes("\\")&&!f.includes("..")}function h(f){return typeof f==="number"&&Number.isFinite(f)?f:void 0}function g(f,j){return typeof f==="string"&&f.length>0?f.slice(0,j):void 0}function u(f){if(!Array.isArray(f))return[];return f.map((j)=>{if(!j||typeof j!=="object")return;let $=j;if(!Vf($.runId))return;return{runId:$.runId,...h($.stepIndex)!==void 0?{stepIndex:h($.stepIndex)}:{},...g($.agent,128)?{agent:g($.agent,128)}:{}}}).filter((j)=>Boolean(j)).slice(0,Gf)}function w(f){if(!f)return[];try{return u(JSON.parse(f))}catch{return[]}}function r(f){let j=u(f);return j.length?JSON.stringify(j):""}import{createHash as bf}from"node:crypto";import*as S from"node:fs";import*as K from"node:os";import*as Q from"node:path";import*as q from"node:fs";import*as C from"node:os";import*as M from"node:path";import*as c from"node:os";import*as R from"node:path";function N(f){return f.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function yf(f){let j=f?.env??process.env,$=f&&Object.hasOwn(f,"getuid")?f.getuid:process.getuid?.bind(process);if(typeof $==="function")return`uid-${$()}`;for(let Z of["USERNAME","USER","LOGNAME"]){let G=j[Z];if(G)return`user-${N(G)}`}let T=f&&Object.hasOwn(f,"userInfo")?f.userInfo:c.userInfo;try{let Z=T?.().username;if(Z)return`user-${N(Z)}`}catch{}let J=j.USERPROFILE??j.HOME;if(J)return`home-${N(J)}`;let O=f&&Object.hasOwn(f,"homedir")?f.homedir:c.homedir;try{let Z=O?.();if(Z)return`home-${N(Z)}`}catch{}return"shared"}var L=R.join(c.tmpdir(),`dm-subagents-${yf()}`),qj=R.join(L,"async-subagent-results"),Uj=R.join(L,"async-subagent-runs"),Hf=R.join(L,"chain-runs"),Mj=R.join(L,"artifacts");var cf=".dm",Rf="@duckmind/dm-coding-agent",Lf="DM_SUBAGENTS_PI_CODING_AGENT_PACKAGE_ROOT";function p(f){return typeof f==="string"&&f.trim()?f:void 0}function d(f){if(!f)return;try{let j=JSON.parse(q.readFileSync(M.join(f,"package.json"),"utf-8"));if(j.name!==Rf)return;return p(j.piConfig?.configDir)}catch{return}}function Sf(f=process.argv[1],j=process.env[Lf]){let $=d(j);if($)return $;if(!f)return;try{let T=M.dirname(q.realpathSync(f));while(T!==M.dirname(T)){let J=d(T);if(J)return J;T=M.dirname(T)}}catch{}return}function Cf(f,j,$){return(f&&typeof f==="object"?p(f.CONFIG_DIR_NAME):void 0)??Sf(j,$)??cf}function t(){return Cf()}function I(f){return M.join(f,t())}function z(){let f=process.env.DM_CODING_AGENT_DIR;if(f==="~")return C.homedir();if(f?.startsWith("~/"))return M.join(C.homedir(),f.slice(2));return f||M.join(C.homedir(),t(),"agent")}var Ff=1,zf=604800000,s=new Set(["read","bash","edit","write","grep","find","ls","mcp"]),e=Q.join(K.homedir(),".config","mcp","mcp.json"),a={cursor:[Q.join(K.homedir(),".cursor","mcp.json")],"claude-code":[Q.join(K.homedir(),".claude","mcp.json"),Q.join(K.homedir(),".claude.json"),Q.join(K.homedir(),".claude","claude_desktop_config.json")],"claude-desktop":[Q.join(K.homedir(),"Library","Application Support","Claude","claude_desktop_config.json")],codex:[Q.join(K.homedir(),".codex","config.json")],windsurf:[Q.join(K.homedir(),".windsurf","mcp.json")],vscode:[".vscode/mcp.json"]};function ff(f,j=process.cwd()){if(!f?.length)return[];try{let $=wf(j),T=Nf();if(!T)return[];return mf($,T,uf($.settings?.toolPrefix),f)}catch{return[]}}function Nf(){let f=Q.join(z(),"mcp-cache.json"),j;try{j=JSON.parse(S.readFileSync(f,"utf-8"))}catch{return null}if(!j||typeof j!=="object")return null;let $=j;if($.version!==Ff||!$.servers||typeof $.servers!=="object"||Array.isArray($.servers))return null;return $}function wf(f){let j={mcpServers:{}};for(let $ of If(f)){let T=nf($);if(!T)continue;j=Df(j,of(T,f))}return j}function If(f){let j=Q.join(z(),"mcp.json"),$=Q.resolve(f,".mcp.json"),T=Q.resolve(I(f),"mcp.json"),J=[];if(e!==j)J.push(e);if(J.push(j),$!==j)J.push($);if(T!==j&&T!==$)J.push(T);return J}function nf(f){let j;try{j=JSON.parse(S.readFileSync(f,"utf-8"))}catch{return null}return xf(j)}function xf(f){if(!f||typeof f!=="object"||Array.isArray(f))return{mcpServers:{}};let j=f,$=j.mcpServers??j["mcp-servers"]??{};return{mcpServers:$&&typeof $==="object"&&!Array.isArray($)?$:{},imports:Array.isArray(j.imports)?j.imports.filter((T)=>rf(T)):void 0,settings:j.settings&&typeof j.settings==="object"&&!Array.isArray(j.settings)?j.settings:void 0}}function Df(f,j){let $=[...f.imports??[],...j.imports??[]];return{mcpServers:{...f.mcpServers,...j.mcpServers},imports:$.length?[...new Set($)]:void 0,settings:j.settings?{...f.settings,...j.settings}:f.settings}}function of(f,j){if(!f.imports?.length)return f;let $={};for(let T of f.imports){let J=vf(T,j);if(!J)continue;let O;try{O=JSON.parse(S.readFileSync(J,"utf-8"))}catch{continue}for(let[Z,G]of Object.entries(Pf(O,T)))if(!$[Z])$[Z]=G}return{imports:f.imports,settings:f.settings,mcpServers:{...$,...f.mcpServers}}}function vf(f,j){for(let $ of a[f]){let T=$.startsWith(".")?Q.resolve(j,$):$;if(S.existsSync(T))return T}return null}function Pf(f,j){if(!f||typeof f!=="object"||Array.isArray(f))return{};let $=f,T=j==="cursor"||j==="windsurf"||j==="vscode"?$.mcpServers??$["mcp-servers"]:$.mcpServers;return T&&typeof T==="object"&&!Array.isArray(T)?T:{}}function mf(f,j,$,T){let J=[],O=new Set,{servers:Z,tools:G}=hf(T);for(let[Y,B]of Object.entries(f.mcpServers)){let y=j.servers[Y];if(!gf(y,B))continue;let V=Z.has(Y)?!0:G.get(Y);if(!V)continue;for(let _ of Array.isArray(y.tools)?y.tools:[]){if(typeof _?.name!=="string"||!_.name)continue;if(V!==!0&&!V.has(_.name))continue;if(i(_.name,Y,$,B.excludeTools))continue;let U=F(_.name,Y,$);if(s.has(U)||O.has(U))continue;O.add(U),J.push(U)}if(B.exposeResources===!1)continue;for(let _ of Array.isArray(y.resources)?y.resources:[]){if(typeof _?.name!=="string"||!_.name||typeof _.uri!=="string"||!_.uri)continue;let U=`get_${pf(_.name)}`;if(V!==!0&&!V.has(U))continue;if(i(U,Y,$,B.excludeTools))continue;let H=F(U,Y,$);if(s.has(H)||O.has(H))continue;O.add(H),J.push(H)}}return J}function hf(f){let j=new Set,$=new Map;for(let T of f)if(T=T.replace(/\/+$/,""),T.includes("/")){let[J,O]=T.split("/",2);if(J&&O){if(!$.has(J))$.set(J,new Set);$.get(J).add(O)}else if(J)j.add(J)}else if(T)j.add(T);return{servers:j,tools:$}}function gf(f,j){if(!f||f.configHash!==kf(j))return!1;if(!f.cachedAt||typeof f.cachedAt!=="number")return!1;return Date.now()-f.cachedAt<=zf}function kf(f){let j={command:f.command,args:f.args,env:l(f.env),cwd:tf(f.cwd),url:f.url,headers:l(f.headers),auth:f.auth,bearerToken:sf(f),bearerTokenEnv:f.bearerTokenEnv,exposeResources:f.exposeResources,excludeTools:f.excludeTools};return bf("sha256").update(n(j)).digest("hex")}function uf(f){return f==="none"||f==="short"||f==="server"?f:"server"}function rf(f){return typeof f==="string"&&Object.hasOwn(a,f)}function df(f,j){if(j==="none")return"";if(j==="short")return f.replace(/-?mcp$/i,"").replace(/-/g,"_")||"mcp";return f.replace(/-/g,"_")}function F(f,j,$){let T=df(j,$);return T?`${T}_${f}`:f}function i(f,j,$,T){if(!Array.isArray(T)||T.length===0)return!1;let J=new Set([b(f),b(F(f,j,$)),b(F(f,j,"server")),b(F(f,j,"short"))]);return T.some((O)=>typeof O==="string"&&J.has(b(O)))}function b(f){return f.replace(/-/g,"_")}function pf(f){let j=f.replace(/[^a-zA-Z0-9]/g,"_").replace(/_+/g,"_").replace(/^_+/,"").replace(/_+$/,"").toLowerCase();if(!j||/^\d/.test(j))j=`resource${j?`_${j}`:""}`;return j}function l(f){if(!f||typeof f!=="object"||Array.isArray(f))return;let j={};for(let[$,T]of Object.entries(f))if(typeof T==="string")j[$]=x(T);return j}function x(f){return f.replace(/\$\{(\w+)\}/g,(j,$)=>process.env[$]??"").replace(/\$env:(\w+)/g,(j,$)=>process.env[$]??"")}function tf(f){if(typeof f!=="string")return;let j=x(f);if(j==="~")return K.homedir();if(j.startsWith("~/")||j.startsWith("~\\"))return Q.join(K.homedir(),j.slice(2));return j}function sf(f){if(typeof f.bearerToken==="string")return x(f.bearerToken);return typeof f.bearerTokenEnv==="string"?process.env[f.bearerTokenEnv]:void 0}function n(f){if(f===null||f===void 0||typeof f!=="object"){let $=JSON.stringify(f);return $===void 0?"undefined":$}if(Array.isArray(f))return`[${f.map(($)=>n($)).join(",")}]`;let j=f;return`{${Object.keys(j).sort().map(($)=>`${JSON.stringify($)}:${n(j[$])}`).join(",")}}`}import{Compile as kj}from"typebox/compile";var jf="DM_SUBAGENT_STRUCTURED_OUTPUT_SCHEMA",$f="DM_SUBAGENT_STRUCTURED_OUTPUT_CAPTURE";var Tf="DM_SUBAGENT_TOOL_BUDGET";function Jf(f){return f?JSON.stringify(f):void 0}var ef=["off","minimal","low","medium","high","xhigh"],lf=8000;function qf(f,j){let $=Ef(f),T=X.extname($),J=[".js",".mjs",".cjs",".ts",".mts",".cts"].includes(T)?T:".ts";return X.join(X.dirname($),`${j}${J}`)}function Uf(f){return X.basename(Ef(f)).startsWith("dm-args.")}function af(f=import.meta.url){let j=Uf(f)?"subagent-prompt-runtime":X.join("..","runs","shared","subagent-prompt-runtime");return qf(f,j)}function fj(f=import.meta.url){let j=Uf(f)?X.join("..","..","extension","fanout-child"):"fanout-child";return qf(f,j)}var Bf=af(),jj=fj(),$j="DM_SUBAGENT_CHILD",Tj="DM_SUBAGENT_ORCHESTRATOR_TARGET",Jj="DM_SUBAGENT_ORCHESTRATOR_SESSION_ID",Bj="DM_SUBAGENT_SUPERVISOR_CHANNEL_DIR",Of="DM_SUBAGENT_RUN_ID",Oj="DM_SUBAGENT_CHILD_AGENT",Wj="DM_SUBAGENT_CHILD_INDEX",Xj="DM_SUBAGENT_FANOUT_CHILD",D="DM_SUBAGENT_PARENT_EVENT_SINK",Wf="DM_SUBAGENT_PARENT_CONTROL_INBOX",o="DM_SUBAGENT_PARENT_ROOT_RUN_ID",Xf="DM_SUBAGENT_PARENT_RUN_ID",Zf="DM_SUBAGENT_PARENT_CHILD_INDEX",_f="DM_SUBAGENT_PARENT_DEPTH",Qf="DM_SUBAGENT_PARENT_PATH",v="DM_SUBAGENT_PARENT_CAPABILITY_TOKEN",Yf="DM_SUBAGENT_PARENT_SESSION",Zj="DM_SUBAGENT_STEER_INBOX";function Af(f){return f.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function _j(f,j,$){return X.join(L,"supervisor-channels",`${Af(f)}-${Af(j)}-${$}`)}function Qj(f,j,$=!1){if(!f||!j)return f;let T=f.lastIndexOf(":");if(T!==-1&&ef.includes(f.substring(T+1)))return $?`${f.slice(0,T)}:${j}`:f;return`${f}:${j}`}function lj(f){let j=[...f.baseArgs];if(f.sessionFile)A.mkdirSync(X.dirname(f.sessionFile),{recursive:!0}),j.push("--session",f.sessionFile);else{if(!f.sessionEnabled)j.push("--no-session");if(f.sessionDir)A.mkdirSync(f.sessionDir,{recursive:!0}),j.push("--session-dir",f.sessionDir)}let $=Qj(f.model,f.thinking);if($)j.push("--model",$);let T=f.tools?.filter((W)=>!(W.includes("/")||W.endsWith(".ts")||W.endsWith(".js")))??[],J=f.requireReadTool&&f.tools?.length&&!T.includes("read")?["read",...T]:T,O=J.includes("subagent"),Z=[];if(f.tools?.length){let W=[...J];for(let E of f.tools)if(!J.includes(E)&&(E.includes("/")||E.endsWith(".ts")||E.endsWith(".js")))Z.push(E);if(W.length>0){if(f.mcpDirectTools?.length)W.push(...ff(f.mcpDirectTools,f.cwd));j.push("--tools",W.join(","))}}let G=O?[Bf,jj]:[Bf];if(f.extensions!==void 0){j.push("--no-extensions");for(let W of[...new Set([...G,...Z,...f.extensions,...f.subagentOnlyExtensions??[]])])j.push("--extension",W)}else for(let W of[...new Set([...G,...Z,...f.subagentOnlyExtensions??[]])])j.push("--extension",W);if(!f.inheritSkills)j.push("--no-skills");let Y;if(f.systemPrompt!==void 0&&f.systemPrompt!==null){Y=A.mkdtempSync(X.join(P.tmpdir(),"dm-subagent-"));let W=(f.promptFileStem??"prompt").replace(/[^\w.-]/g,"_"),E=X.join(Y,`${W}.md`);A.writeFileSync(E,f.systemPrompt,{mode:384}),j.push(f.systemPromptMode==="replace"?"--system-prompt":"--append-system-prompt",E)}if(f.task.length>lf){if(!Y)Y=A.mkdtempSync(X.join(P.tmpdir(),"dm-subagent-"));let W=X.join(Y,"task.md");A.writeFileSync(W,`Task: ${f.task}`,{mode:384}),j.push(`@${W}`)}else j.push(`Task: ${f.task}`);let B={};B[$j]="1",B[Xj]=O?"1":"0";let y=Boolean(process.env[D]&&process.env[o]&&process.env[v]),V=f.parentRunId??f.runId??(y?process.env[Of]:void 0)??process.env[Xf]??"",_=f.parentChildIndex!==void 0?String(f.parentChildIndex):f.childIndex!==void 0?String(f.childIndex):process.env[Zf]??"",U=Number(process.env[_f]),H=f.parentDepth??(y&&Number.isFinite(U)?U+1:1),Mf=f.parentPath??[...w(process.env[Qf]),...V?[{runId:V,..._&&/^\d+$/.test(_)?{stepIndex:Number(_)}:{},...f.childAgentName?{agent:f.childAgentName}:{}}]:[]];if(B[D]=O?f.parentEventSink??process.env[D]??"":"",B[Wf]=O?f.parentControlInbox??process.env[Wf]??"":"",B[o]=O?f.parentRootRunId??process.env[o]??f.runId??"":"",B[Xf]=O?V:"",B[Zf]=O?_:"",B[_f]=O?String(H):"",B[Qf]=O?r(Mf):"",B[v]=O?f.parentCapabilityToken??process.env[v]??"":"",B.DM_SUBAGENT_INHERIT_PROJECT_CONTEXT=f.inheritProjectContext?"1":"0",B.DM_SUBAGENT_INHERIT_SKILLS=f.inheritSkills?"1":"0",f.intercomSessionName)B.DM_SUBAGENT_INTERCOM_SESSION_NAME=f.intercomSessionName;if(f.orchestratorIntercomTarget)B[Tj]=f.orchestratorIntercomTarget;if(f.parentSessionId)B[Jj]=f.parentSessionId;if(f.orchestratorIntercomTarget&&f.parentSessionId&&f.runId&&f.childAgentName){let W=f.childIndex??0,E=_j(f.runId,f.childAgentName,W);A.mkdirSync(X.join(E,"requests"),{recursive:!0}),A.mkdirSync(X.join(E,"replies"),{recursive:!0}),B[Bj]=E}if(f.runId)B[Of]=f.runId;if(f.childAgentName)B[Oj]=f.childAgentName;if(f.childIndex!==void 0)B[Wj]=String(f.childIndex);if(f.mcpDirectTools?.length)B.MCP_DIRECT_TOOLS=f.mcpDirectTools.join(",");else B.MCP_DIRECT_TOOLS="__none__";if(f.structuredOutput)B[$f]=f.structuredOutput.outputPath,B[jf]=f.structuredOutput.schemaPath;if(f.steerInboxDir)B[Zj]=f.steerInboxDir;let m=Jf(f.toolBudget);if(m)B[Tf]=m;return B[Yf]=f.parentSessionId??process.env[Yf]??"",{args:j,env:B,tempDir:Y}}var aj=w;function f$(f){if(!f)return;try{A.rmSync(f,{recursive:!0,force:!0})}catch{}}export{qf as resolveRuntimeExtensionPath,af as resolvePromptRuntimePath,fj as resolveFanoutChildPath,aj as parseParentPathEnv,f$ as cleanupTempDir,lj as buildPiArgs,Qj as applyThinkingSuffix,Bj as SUBAGENT_SUPERVISOR_CHANNEL_DIR_ENV,Zj as SUBAGENT_STEER_INBOX_ENV,Of as SUBAGENT_RUN_ID_ENV,Yf as SUBAGENT_PARENT_SESSION_ENV,Xf as SUBAGENT_PARENT_RUN_ID_ENV,o as SUBAGENT_PARENT_ROOT_RUN_ID_ENV,Qf as SUBAGENT_PARENT_PATH_ENV,D as SUBAGENT_PARENT_EVENT_SINK_ENV,_f as SUBAGENT_PARENT_DEPTH_ENV,Wf as SUBAGENT_PARENT_CONTROL_INBOX_ENV,Zf as SUBAGENT_PARENT_CHILD_INDEX_ENV,v as SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV,Tj as SUBAGENT_ORCHESTRATOR_TARGET_ENV,Jj as SUBAGENT_ORCHESTRATOR_SESSION_ID_ENV,Xj as SUBAGENT_FANOUT_CHILD_ENV,Wj as SUBAGENT_CHILD_INDEX_ENV,$j as SUBAGENT_CHILD_ENV,Oj as SUBAGENT_CHILD_AGENT_ENV};
@@ -1,8 +1,8 @@
1
- import{randomUUID as U$}from"node:crypto";import*as Y from"node:fs";import*as O from"node:path";import*as E from"node:os";import*as y from"node:path";function x($){return $.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function T$($){let J=$?.env??process.env,j=$&&Object.hasOwn($,"getuid")?$.getuid:process.getuid?.bind(process);if(typeof j==="function")return`uid-${j()}`;for(let X of["USERNAME","USER","LOGNAME"]){let K=J[X];if(K)return`user-${x(K)}`}let Z=$&&Object.hasOwn($,"userInfo")?$.userInfo:E.userInfo;try{let X=Z?.().username;if(X)return`user-${x(X)}`}catch{}let Q=J.USERPROFILE??J.HOME;if(Q)return`home-${x(Q)}`;let f=$&&Object.hasOwn($,"homedir")?$.homedir:E.homedir;try{let X=f?.();if(X)return`home-${x(X)}`}catch{}return"shared"}var L=y.join(E.tmpdir(),`dm-subagents-${T$()}`),e=y.join(L,"async-subagent-results"),$$=y.join(L,"async-subagent-runs"),z$=y.join(L,"chain-runs"),s$=y.join(L,"artifacts");import*as Z$ from"node:path";var C$=128,_$=4;function h($){return typeof $==="string"&&$.length>0&&$.length<=C$&&!Z$.isAbsolute($)&&!$.includes("/")&&!$.includes("\\")&&!$.includes("..")}function j$($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function J$($,J){return typeof $==="string"&&$.length>0?$.slice(0,J):void 0}function m($){if(!Array.isArray($))return[];return $.map((J)=>{if(!J||typeof J!=="object")return;let j=J;if(!h(j.runId))return;return{runId:j.runId,...j$(j.stepIndex)!==void 0?{stepIndex:j$(j.stepIndex)}:{},...J$(j.agent,128)?{agent:J$(j.agent,128)}:{}}}).filter((J)=>Boolean(J)).slice(0,_$)}function n($){if(!$)return[];try{return m(JSON.parse($))}catch{return[]}}import*as R from"node:fs";import*as M from"node:path";import{fileURLToPath as y$}from"node:url";import*as V from"node:os";import*as U from"node:path";var zj=U.join(V.homedir(),".config","mcp","mcp.json"),Cj={cursor:[U.join(V.homedir(),".cursor","mcp.json")],"claude-code":[U.join(V.homedir(),".claude","mcp.json"),U.join(V.homedir(),".claude.json"),U.join(V.homedir(),".claude","claude_desktop_config.json")],"claude-desktop":[U.join(V.homedir(),"Library","Application Support","Claude","claude_desktop_config.json")],codex:[U.join(V.homedir(),".codex","config.json")],windsurf:[U.join(V.homedir(),".windsurf","mcp.json")],vscode:[".vscode/mcp.json"]};import{Compile as Ej}from"typebox/compile";function Q$($,J){let j=y$($),Z=M.extname(j),Q=[".js",".mjs",".cjs",".ts",".mts",".cts"].includes(Z)?Z:".ts",f=M.dirname(j);while(!R.existsSync(M.join(f,"package.json"))){let X=M.dirname(f);if(X===f)throw Error(`Unable to resolve dm-subagents package root from ${j}`);f=X}return M.join(f,`${J}${Q}`)}var mj=Q$(import.meta.url,M.join("src","runs","shared","subagent-prompt-runtime")),nj=Q$(import.meta.url,M.join("src","extension","fanout-child"));var d="DM_SUBAGENT_PARENT_EVENT_SINK",o="DM_SUBAGENT_PARENT_CONTROL_INBOX",p="DM_SUBAGENT_PARENT_ROOT_RUN_ID",f$="DM_SUBAGENT_PARENT_RUN_ID",W$="DM_SUBAGENT_PARENT_CHILD_INDEX",O$="DM_SUBAGENT_PARENT_DEPTH",X$="DM_SUBAGENT_PARENT_PATH",u="DM_SUBAGENT_PARENT_CAPABILITY_TOKEN";import*as R$ from"node:fs";import*as C from"node:path";var D$=[10,25,50,100,200,500,1000,2000,4000],b$=new Set(["EACCES","EBUSY","EPERM"]),B$=typeof SharedArrayBuffer<"u"?new SharedArrayBuffer(4):void 0,K$=B$?new Int32Array(B$):void 0;function I$($){if($<=0)return;if(K$)try{Atomics.wait(K$,0,0,$);return}catch{}let J=Date.now()+$;while(Date.now()<J);}function N$($){let J=$?.code;return typeof J==="string"&&b$.has(J)}function x$($,J,j,Z,Q){for(let f=0;;f++)try{$.renameSync(J,j);return}catch(X){let K=Z[f];if(K===void 0||!N$(X))throw X;Q(K)}}function P$($={}){let J=$.fs??R$,j=$.now??Date.now,Z=$.pid??process.pid,Q=$.random??Math.random,X=$.retryRenameErrors??process.platform==="win32"?$.retryDelaysMs??D$:[],K=$.wait??I$;return(q,z)=>{J.mkdirSync(C.dirname(q),{recursive:!0});let T=C.join(C.dirname(q),`.${C.basename(q)}.${Z}.${j()}.${Q().toString(36).slice(2)}.tmp`);try{J.writeFileSync(T,JSON.stringify(z,null,2),"utf-8"),x$(J,T,q,X,K)}finally{J.rmSync(T,{force:!0})}}}var Y$=P$();var A=O.join(L,"nested-subagent-events"),I="route.json",w$="registry.json",S=65536,r=12,b=16,P=3;function F($){return h($)}function v$($,J){if(!F(J))throw Error(`${$} must be a non-empty safe id token.`)}function G($,J){v$($,J)}function _($,J){let j=O.resolve($),Z=O.resolve(J);return Z===j||Z.startsWith(`${j}${O.sep}`)}function s($){return O.dirname(O.resolve($.eventSink))}function H($){if(G("rootRunId",$.rootRunId),G("capabilityToken",$.capabilityToken),!_(A,$.eventSink))throw Error("Nested event sink is outside the subagent nested event root.");if(!_(A,$.controlInbox))throw Error("Nested control inbox is outside the subagent nested event root.");if(s($)!==O.dirname(O.resolve($.controlInbox)))throw Error("Nested event sink and control inbox must share one route root.")}function sj($){G("rootRunId",$);let J=U$(),j=O.join(A,`${$}-${J}`),Z=O.join(j,"events"),Q=O.join(j,"controls");return Y.mkdirSync(Z,{recursive:!0,mode:448}),Y.mkdirSync(Q,{recursive:!0,mode:448}),Y.writeFileSync(O.join(j,I),`${JSON.stringify({rootRunId:$,capabilityToken:J,createdAt:Date.now()})}
2
- `,{mode:384}),{rootRunId:$,eventSink:Z,controlInbox:Q,capabilityToken:J}}function k$($=process.env){let J=$[p],j=$[d],Z=$[o],Q=$[u];if(!J||!j||!Z||!Q)return;let f={rootRunId:J,eventSink:j,controlInbox:Z,capabilityToken:Q};H(f);let X=O.join(s(f),I),K=JSON.parse(Y.readFileSync(X,"utf-8"));if(K.rootRunId!==J||K.capabilityToken!==Q)throw Error("Nested event route metadata does not match the provided root id and capability token.");return f}function aj($=process.env){try{return k$($)}catch(J){console.error("Ignoring invalid nested subagent event route:",J);return}}function tj($=process.env){let J=$[f$];if(!F(J))return;let j=$[W$],Z=j&&/^\d+$/.test(j)?Number(j):void 0,Q=Math.min(Math.max(1,W(Number($[O$]))??1),P),f=n($[X$]),X=f.length?f:[{runId:J,...Z!==void 0?{stepIndex:Z}:{}}];return{parentRunId:J,...Z!==void 0?{parentStepIndex:Z}:{},depth:Q,path:X}}function ej($,J){if(!J.asyncDir)return;let j=O.resolve(J.asyncDir),Z=O.resolve(L,"nested-subagent-runs",$,J.id),Q=O.relative(Z,j);return j===Z||!Q.startsWith("..")&&!O.isAbsolute(Q)?j:void 0}function W($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function B($,J=512){return typeof $==="string"&&$.length>0?$.slice(0,J):void 0}function c$($){if(!$||typeof $!=="object")return;let J=$,j=W(J.input),Z=W(J.output),Q=W(J.total);return j!==void 0&&Z!==void 0&&Q!==void 0?{input:j,output:Z,total:Q}:void 0}function g$($){if(!$||typeof $!=="object")return;let J=$,j=W(J.inputTokens),Z=W(J.outputTokens),Q=W(J.costUsd);return j!==void 0&&Z!==void 0&&Q!==void 0?{inputTokens:j,outputTokens:Z,costUsd:Q}:void 0}function w($){if(!$||typeof $!=="object")return;let J=$,j=W(J.maxTurns),Z=W(J.graceTurns),Q=W(J.turnCount),f=J.outcome==="within-budget"||J.outcome==="wrap-up-requested"||J.outcome==="exceeded"?J.outcome:void 0;if(j===void 0||Z===void 0||Q===void 0||!f)return;return{maxTurns:j,graceTurns:Z,turnCount:Q,outcome:f,...W(J.wrapUpRequestedAtTurn)!==void 0?{wrapUpRequestedAtTurn:W(J.wrapUpRequestedAtTurn)}:{},...W(J.exceededAtTurn)!==void 0?{exceededAtTurn:W(J.exceededAtTurn)}:{}}}function h$($,J){return $==="queued"||$==="running"||$==="complete"||$==="failed"||$==="paused"?$:J}function m$($,J){if(!$||typeof $!=="object")return;let j=$,Z=B(j.agent,128);if(!Z)return;let Q=j.status==="pending"||j.status==="running"||j.status==="complete"||j.status==="completed"||j.status==="failed"||j.status==="paused"?j.status:"pending";return{agent:Z,status:Q,...B(j.sessionFile,2048)?{sessionFile:B(j.sessionFile,2048)}:{},...j.activityState==="active_long_running"||j.activityState==="needs_attention"?{activityState:j.activityState}:{},...W(j.lastActivityAt)!==void 0?{lastActivityAt:W(j.lastActivityAt)}:{},...B(j.currentTool,128)?{currentTool:B(j.currentTool,128)}:{},...W(j.currentToolStartedAt)!==void 0?{currentToolStartedAt:W(j.currentToolStartedAt)}:{},...B(j.currentPath,2048)?{currentPath:B(j.currentPath,2048)}:{},...W(j.turnCount)!==void 0?{turnCount:W(j.turnCount)}:{},...W(j.toolCount)!==void 0?{toolCount:W(j.toolCount)}:{},...W(j.startedAt)!==void 0?{startedAt:W(j.startedAt)}:{},...W(j.endedAt)!==void 0?{endedAt:W(j.endedAt)}:{},...B(j.error,1024)?{error:B(j.error,1024)}:{},...j.timedOut===!0?{timedOut:!0}:{},...w(j.turnBudget)?{turnBudget:w(j.turnBudget)}:{},...j.turnBudgetExceeded===!0?{turnBudgetExceeded:!0}:{},...j.wrapUpRequested===!0?{wrapUpRequested:!0}:{},...J<P&&Array.isArray(j.children)?{children:j.children.map((f)=>k(f,J+1)).filter((f)=>Boolean(f)).slice(0,b)}:{}}}function k($,J=0){if(!$||typeof $!=="object")return;let j=$;if(!F(j.id)||!F(j.parentRunId))return;let Z=m(j.path),Q=Array.isArray(j.steps)?j.steps.map((K)=>m$(K,J+1)).filter((K)=>Boolean(K)).slice(0,r):void 0,f=c$(j.totalTokens),X=g$(j.totalCost);return{id:j.id,parentRunId:j.parentRunId,...W(j.parentStepIndex)!==void 0?{parentStepIndex:W(j.parentStepIndex)}:{},...B(j.parentAgent,128)?{parentAgent:B(j.parentAgent,128)}:{},depth:Math.min(Math.max(0,W(j.depth)??0),P),path:Z,state:h$(j.state,"running"),...B(j.asyncDir,2048)?{asyncDir:B(j.asyncDir,2048)}:{},...W(j.pid)!==void 0&&W(j.pid)>0&&Number.isInteger(W(j.pid))?{pid:W(j.pid)}:{},...B(j.sessionId,256)?{sessionId:B(j.sessionId,256)}:{},...B(j.sessionFile,2048)?{sessionFile:B(j.sessionFile,2048)}:{},...B(j.intercomTarget,256)?{intercomTarget:B(j.intercomTarget,256)}:{},...B(j.ownerIntercomTarget,256)?{ownerIntercomTarget:B(j.ownerIntercomTarget,256)}:{},...B(j.leafIntercomTarget,256)?{leafIntercomTarget:B(j.leafIntercomTarget,256)}:{},...j.ownerState==="live"||j.ownerState==="gone"||j.ownerState==="unknown"?{ownerState:j.ownerState}:{},...B(j.controlInbox,2048)?{controlInbox:B(j.controlInbox,2048)}:{},...B(j.capabilityToken,128)?{capabilityToken:B(j.capabilityToken,128)}:{},...j.mode==="single"||j.mode==="parallel"||j.mode==="chain"?{mode:j.mode}:{},...B(j.agent,128)?{agent:B(j.agent,128)}:{},...Array.isArray(j.agents)?{agents:j.agents.map((K)=>B(K,128)).filter((K)=>Boolean(K)).slice(0,r)}:{},...W(j.currentStep)!==void 0?{currentStep:W(j.currentStep)}:{},...W(j.chainStepCount)!==void 0?{chainStepCount:W(j.chainStepCount)}:{},...j.activityState==="active_long_running"||j.activityState==="needs_attention"?{activityState:j.activityState}:{},...W(j.lastActivityAt)!==void 0?{lastActivityAt:W(j.lastActivityAt)}:{},...B(j.currentTool,128)?{currentTool:B(j.currentTool,128)}:{},...W(j.currentToolStartedAt)!==void 0?{currentToolStartedAt:W(j.currentToolStartedAt)}:{},...B(j.currentPath,2048)?{currentPath:B(j.currentPath,2048)}:{},...W(j.turnCount)!==void 0?{turnCount:W(j.turnCount)}:{},...W(j.toolCount)!==void 0?{toolCount:W(j.toolCount)}:{},...f?{totalTokens:f}:{},...X?{totalCost:X}:{},...W(j.startedAt)!==void 0?{startedAt:W(j.startedAt)}:{},...W(j.endedAt)!==void 0?{endedAt:W(j.endedAt)}:{},...W(j.lastUpdate)!==void 0?{lastUpdate:W(j.lastUpdate)}:{},...W(j.timeoutMs)!==void 0?{timeoutMs:W(j.timeoutMs)}:{},...W(j.deadlineAt)!==void 0?{deadlineAt:W(j.deadlineAt)}:{},...j.timedOut===!0?{timedOut:!0}:{},...w(j.turnBudget)?{turnBudget:w(j.turnBudget)}:{},...j.turnBudgetExceeded===!0?{turnBudgetExceeded:!0}:{},...j.wrapUpRequested===!0?{wrapUpRequested:!0}:{},...B(j.error,1024)?{error:B(j.error,1024)}:{},...Q&&Q.length>0?{steps:Q}:{},...J<P&&Array.isArray(j.children)?{children:j.children.map((K)=>k(K,J+1)).filter((K)=>Boolean(K)).slice(0,b)}:{}}}function l($,J){if(Buffer.byteLength($,"utf-8")>S)return;let j;try{j=JSON.parse($)}catch{return}if(!j||typeof j!=="object")return;let Z=j;if(Z.type!=="subagent.nested.started"&&Z.type!=="subagent.nested.updated"&&Z.type!=="subagent.nested.completed")return;if(Z.rootRunId!==J.rootRunId||Z.capabilityToken!==J.capabilityToken)return;if(!F(Z.parentRunId))return;let Q=W(Z.ts);if(Q===void 0)return;let f=k(Z.child);if(!f||f.id===J.rootRunId)return;let X={...f,controlInbox:J.controlInbox,capabilityToken:J.capabilityToken,ownerState:f.ownerState??"unknown"};return{type:Z.type,ts:Q,rootRunId:J.rootRunId,parentRunId:Z.parentRunId,...W(Z.parentStepIndex)!==void 0?{parentStepIndex:W(Z.parentStepIndex)}:{},capabilityToken:J.capabilityToken,child:X}}function n$($,J){if(!$.includes(`
3
- `)){let j=l($.trim(),J);return j?[j]:[]}return $.split(`
1
+ import{randomUUID as M$}from"node:crypto";import*as Y from"node:fs";import*as O from"node:path";import*as S from"node:os";import*as y from"node:path";function N($){return $.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function z$($){let J=$?.env??process.env,j=$&&Object.hasOwn($,"getuid")?$.getuid:process.getuid?.bind(process);if(typeof j==="function")return`uid-${j()}`;for(let X of["USERNAME","USER","LOGNAME"]){let K=J[X];if(K)return`user-${N(K)}`}let Z=$&&Object.hasOwn($,"userInfo")?$.userInfo:S.userInfo;try{let X=Z?.().username;if(X)return`user-${N(X)}`}catch{}let Q=J.USERPROFILE??J.HOME;if(Q)return`home-${N(Q)}`;let f=$&&Object.hasOwn($,"homedir")?$.homedir:S.homedir;try{let X=f?.();if(X)return`home-${N(X)}`}catch{}return"shared"}var L=y.join(S.tmpdir(),`dm-subagents-${z$()}`),t=y.join(L,"async-subagent-results"),e=y.join(L,"async-subagent-runs"),C$=y.join(L,"chain-runs"),t$=y.join(L,"artifacts");import*as J$ from"node:path";var _$=128,E$=4;function g($){return typeof $==="string"&&$.length>0&&$.length<=_$&&!J$.isAbsolute($)&&!$.includes("/")&&!$.includes("\\")&&!$.includes("..")}function $$($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function j$($,J){return typeof $==="string"&&$.length>0?$.slice(0,J):void 0}function h($){if(!Array.isArray($))return[];return $.map((J)=>{if(!J||typeof J!=="object")return;let j=J;if(!g(j.runId))return;return{runId:j.runId,...$$(j.stepIndex)!==void 0?{stepIndex:$$(j.stepIndex)}:{},...j$(j.agent,128)?{agent:j$(j.agent,128)}:{}}}).filter((J)=>Boolean(J)).slice(0,E$)}function m($){if(!$)return[];try{return h(JSON.parse($))}catch{return[]}}import*as M from"node:path";import{fileURLToPath as Z$}from"node:url";import*as V from"node:os";import*as U from"node:path";var _j=U.join(V.homedir(),".config","mcp","mcp.json"),Ej={cursor:[U.join(V.homedir(),".cursor","mcp.json")],"claude-code":[U.join(V.homedir(),".claude","mcp.json"),U.join(V.homedir(),".claude.json"),U.join(V.homedir(),".claude","claude_desktop_config.json")],"claude-desktop":[U.join(V.homedir(),"Library","Application Support","Claude","claude_desktop_config.json")],codex:[U.join(V.homedir(),".codex","config.json")],windsurf:[U.join(V.homedir(),".windsurf","mcp.json")],vscode:[".vscode/mcp.json"]};import{Compile as Rj}from"typebox/compile";function Q$($,J){let j=Z$($),Z=M.extname(j),Q=[".js",".mjs",".cjs",".ts",".mts",".cts"].includes(Z)?Z:".ts";return M.join(M.dirname(j),`${J}${Q}`)}function f$($){return M.basename(Z$($)).startsWith("dm-args.")}function R$($=import.meta.url){let J=f$($)?"subagent-prompt-runtime":M.join("..","runs","shared","subagent-prompt-runtime");return Q$($,J)}function b$($=import.meta.url){let J=f$($)?M.join("..","..","extension","fanout-child"):"fanout-child";return Q$($,J)}var dj=R$(),oj=b$();var n="DM_SUBAGENT_PARENT_EVENT_SINK",d="DM_SUBAGENT_PARENT_CONTROL_INBOX",o="DM_SUBAGENT_PARENT_ROOT_RUN_ID",W$="DM_SUBAGENT_PARENT_RUN_ID",O$="DM_SUBAGENT_PARENT_CHILD_INDEX",X$="DM_SUBAGENT_PARENT_DEPTH",B$="DM_SUBAGENT_PARENT_PATH",p="DM_SUBAGENT_PARENT_CAPABILITY_TOKEN";import*as D$ from"node:fs";import*as C from"node:path";var I$=[10,25,50,100,200,500,1000,2000,4000],N$=new Set(["EACCES","EBUSY","EPERM"]),K$=typeof SharedArrayBuffer<"u"?new SharedArrayBuffer(4):void 0,Y$=K$?new Int32Array(K$):void 0;function x$($){if($<=0)return;if(Y$)try{Atomics.wait(Y$,0,0,$);return}catch{}let J=Date.now()+$;while(Date.now()<J);}function P$($){let J=$?.code;return typeof J==="string"&&N$.has(J)}function w$($,J,j,Z,Q){for(let f=0;;f++)try{$.renameSync(J,j);return}catch(X){let K=Z[f];if(K===void 0||!P$(X))throw X;Q(K)}}function v$($={}){let J=$.fs??D$,j=$.now??Date.now,Z=$.pid??process.pid,Q=$.random??Math.random,X=$.retryRenameErrors??process.platform==="win32"?$.retryDelaysMs??I$:[],K=$.wait??x$;return(q,z)=>{J.mkdirSync(C.dirname(q),{recursive:!0});let T=C.join(C.dirname(q),`.${C.basename(q)}.${Z}.${j()}.${Q().toString(36).slice(2)}.tmp`);try{J.writeFileSync(T,JSON.stringify(z,null,2),"utf-8"),w$(J,T,q,X,K)}finally{J.rmSync(T,{force:!0})}}}var q$=v$();var F=O.join(L,"nested-subagent-events"),D="route.json",k$="registry.json",E=65536,u=12,b=16,x=3;function A($){return g($)}function c$($,J){if(!A(J))throw Error(`${$} must be a non-empty safe id token.`)}function G($,J){c$($,J)}function _($,J){let j=O.resolve($),Z=O.resolve(J);return Z===j||Z.startsWith(`${j}${O.sep}`)}function i($){return O.dirname(O.resolve($.eventSink))}function H($){if(G("rootRunId",$.rootRunId),G("capabilityToken",$.capabilityToken),!_(F,$.eventSink))throw Error("Nested event sink is outside the subagent nested event root.");if(!_(F,$.controlInbox))throw Error("Nested control inbox is outside the subagent nested event root.");if(i($)!==O.dirname(O.resolve($.controlInbox)))throw Error("Nested event sink and control inbox must share one route root.")}function tj($){G("rootRunId",$);let J=M$(),j=O.join(F,`${$}-${J}`),Z=O.join(j,"events"),Q=O.join(j,"controls");return Y.mkdirSync(Z,{recursive:!0,mode:448}),Y.mkdirSync(Q,{recursive:!0,mode:448}),Y.writeFileSync(O.join(j,D),`${JSON.stringify({rootRunId:$,capabilityToken:J,createdAt:Date.now()})}
2
+ `,{mode:384}),{rootRunId:$,eventSink:Z,controlInbox:Q,capabilityToken:J}}function g$($=process.env){let J=$[o],j=$[n],Z=$[d],Q=$[p];if(!J||!j||!Z||!Q)return;let f={rootRunId:J,eventSink:j,controlInbox:Z,capabilityToken:Q};H(f);let X=O.join(i(f),D),K=JSON.parse(Y.readFileSync(X,"utf-8"));if(K.rootRunId!==J||K.capabilityToken!==Q)throw Error("Nested event route metadata does not match the provided root id and capability token.");return f}function ej($=process.env){try{return g$($)}catch(J){console.error("Ignoring invalid nested subagent event route:",J);return}}function $J($=process.env){let J=$[W$];if(!A(J))return;let j=$[O$],Z=j&&/^\d+$/.test(j)?Number(j):void 0,Q=Math.min(Math.max(1,W(Number($[X$]))??1),x),f=m($[B$]),X=f.length?f:[{runId:J,...Z!==void 0?{stepIndex:Z}:{}}];return{parentRunId:J,...Z!==void 0?{parentStepIndex:Z}:{},depth:Q,path:X}}function jJ($,J){if(!J.asyncDir)return;let j=O.resolve(J.asyncDir),Z=O.resolve(L,"nested-subagent-runs",$,J.id),Q=O.relative(Z,j);return j===Z||!Q.startsWith("..")&&!O.isAbsolute(Q)?j:void 0}function W($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function B($,J=512){return typeof $==="string"&&$.length>0?$.slice(0,J):void 0}function h$($){if(!$||typeof $!=="object")return;let J=$,j=W(J.input),Z=W(J.output),Q=W(J.total);return j!==void 0&&Z!==void 0&&Q!==void 0?{input:j,output:Z,total:Q}:void 0}function m$($){if(!$||typeof $!=="object")return;let J=$,j=W(J.inputTokens),Z=W(J.outputTokens),Q=W(J.costUsd);return j!==void 0&&Z!==void 0&&Q!==void 0?{inputTokens:j,outputTokens:Z,costUsd:Q}:void 0}function P($){if(!$||typeof $!=="object")return;let J=$,j=W(J.maxTurns),Z=W(J.graceTurns),Q=W(J.turnCount),f=J.outcome==="within-budget"||J.outcome==="wrap-up-requested"||J.outcome==="exceeded"?J.outcome:void 0;if(j===void 0||Z===void 0||Q===void 0||!f)return;return{maxTurns:j,graceTurns:Z,turnCount:Q,outcome:f,...W(J.wrapUpRequestedAtTurn)!==void 0?{wrapUpRequestedAtTurn:W(J.wrapUpRequestedAtTurn)}:{},...W(J.exceededAtTurn)!==void 0?{exceededAtTurn:W(J.exceededAtTurn)}:{}}}function n$($,J){return $==="queued"||$==="running"||$==="complete"||$==="failed"||$==="paused"?$:J}function d$($,J){if(!$||typeof $!=="object")return;let j=$,Z=B(j.agent,128);if(!Z)return;let Q=j.status==="pending"||j.status==="running"||j.status==="complete"||j.status==="completed"||j.status==="failed"||j.status==="paused"?j.status:"pending";return{agent:Z,status:Q,...B(j.sessionFile,2048)?{sessionFile:B(j.sessionFile,2048)}:{},...j.activityState==="active_long_running"||j.activityState==="needs_attention"?{activityState:j.activityState}:{},...W(j.lastActivityAt)!==void 0?{lastActivityAt:W(j.lastActivityAt)}:{},...B(j.currentTool,128)?{currentTool:B(j.currentTool,128)}:{},...W(j.currentToolStartedAt)!==void 0?{currentToolStartedAt:W(j.currentToolStartedAt)}:{},...B(j.currentPath,2048)?{currentPath:B(j.currentPath,2048)}:{},...W(j.turnCount)!==void 0?{turnCount:W(j.turnCount)}:{},...W(j.toolCount)!==void 0?{toolCount:W(j.toolCount)}:{},...W(j.startedAt)!==void 0?{startedAt:W(j.startedAt)}:{},...W(j.endedAt)!==void 0?{endedAt:W(j.endedAt)}:{},...B(j.error,1024)?{error:B(j.error,1024)}:{},...j.timedOut===!0?{timedOut:!0}:{},...P(j.turnBudget)?{turnBudget:P(j.turnBudget)}:{},...j.turnBudgetExceeded===!0?{turnBudgetExceeded:!0}:{},...j.wrapUpRequested===!0?{wrapUpRequested:!0}:{},...J<x&&Array.isArray(j.children)?{children:j.children.map((f)=>v(f,J+1)).filter((f)=>Boolean(f)).slice(0,b)}:{}}}function v($,J=0){if(!$||typeof $!=="object")return;let j=$;if(!A(j.id)||!A(j.parentRunId))return;let Z=h(j.path),Q=Array.isArray(j.steps)?j.steps.map((K)=>d$(K,J+1)).filter((K)=>Boolean(K)).slice(0,u):void 0,f=h$(j.totalTokens),X=m$(j.totalCost);return{id:j.id,parentRunId:j.parentRunId,...W(j.parentStepIndex)!==void 0?{parentStepIndex:W(j.parentStepIndex)}:{},...B(j.parentAgent,128)?{parentAgent:B(j.parentAgent,128)}:{},depth:Math.min(Math.max(0,W(j.depth)??0),x),path:Z,state:n$(j.state,"running"),...B(j.asyncDir,2048)?{asyncDir:B(j.asyncDir,2048)}:{},...W(j.pid)!==void 0&&W(j.pid)>0&&Number.isInteger(W(j.pid))?{pid:W(j.pid)}:{},...B(j.sessionId,256)?{sessionId:B(j.sessionId,256)}:{},...B(j.sessionFile,2048)?{sessionFile:B(j.sessionFile,2048)}:{},...B(j.intercomTarget,256)?{intercomTarget:B(j.intercomTarget,256)}:{},...B(j.ownerIntercomTarget,256)?{ownerIntercomTarget:B(j.ownerIntercomTarget,256)}:{},...B(j.leafIntercomTarget,256)?{leafIntercomTarget:B(j.leafIntercomTarget,256)}:{},...j.ownerState==="live"||j.ownerState==="gone"||j.ownerState==="unknown"?{ownerState:j.ownerState}:{},...B(j.controlInbox,2048)?{controlInbox:B(j.controlInbox,2048)}:{},...B(j.capabilityToken,128)?{capabilityToken:B(j.capabilityToken,128)}:{},...j.mode==="single"||j.mode==="parallel"||j.mode==="chain"?{mode:j.mode}:{},...B(j.agent,128)?{agent:B(j.agent,128)}:{},...Array.isArray(j.agents)?{agents:j.agents.map((K)=>B(K,128)).filter((K)=>Boolean(K)).slice(0,u)}:{},...W(j.currentStep)!==void 0?{currentStep:W(j.currentStep)}:{},...W(j.chainStepCount)!==void 0?{chainStepCount:W(j.chainStepCount)}:{},...j.activityState==="active_long_running"||j.activityState==="needs_attention"?{activityState:j.activityState}:{},...W(j.lastActivityAt)!==void 0?{lastActivityAt:W(j.lastActivityAt)}:{},...B(j.currentTool,128)?{currentTool:B(j.currentTool,128)}:{},...W(j.currentToolStartedAt)!==void 0?{currentToolStartedAt:W(j.currentToolStartedAt)}:{},...B(j.currentPath,2048)?{currentPath:B(j.currentPath,2048)}:{},...W(j.turnCount)!==void 0?{turnCount:W(j.turnCount)}:{},...W(j.toolCount)!==void 0?{toolCount:W(j.toolCount)}:{},...f?{totalTokens:f}:{},...X?{totalCost:X}:{},...W(j.startedAt)!==void 0?{startedAt:W(j.startedAt)}:{},...W(j.endedAt)!==void 0?{endedAt:W(j.endedAt)}:{},...W(j.lastUpdate)!==void 0?{lastUpdate:W(j.lastUpdate)}:{},...W(j.timeoutMs)!==void 0?{timeoutMs:W(j.timeoutMs)}:{},...W(j.deadlineAt)!==void 0?{deadlineAt:W(j.deadlineAt)}:{},...j.timedOut===!0?{timedOut:!0}:{},...P(j.turnBudget)?{turnBudget:P(j.turnBudget)}:{},...j.turnBudgetExceeded===!0?{turnBudgetExceeded:!0}:{},...j.wrapUpRequested===!0?{wrapUpRequested:!0}:{},...B(j.error,1024)?{error:B(j.error,1024)}:{},...Q&&Q.length>0?{steps:Q}:{},...J<x&&Array.isArray(j.children)?{children:j.children.map((K)=>v(K,J+1)).filter((K)=>Boolean(K)).slice(0,b)}:{}}}function r($,J){if(Buffer.byteLength($,"utf-8")>E)return;let j;try{j=JSON.parse($)}catch{return}if(!j||typeof j!=="object")return;let Z=j;if(Z.type!=="subagent.nested.started"&&Z.type!=="subagent.nested.updated"&&Z.type!=="subagent.nested.completed")return;if(Z.rootRunId!==J.rootRunId||Z.capabilityToken!==J.capabilityToken)return;if(!A(Z.parentRunId))return;let Q=W(Z.ts);if(Q===void 0)return;let f=v(Z.child);if(!f||f.id===J.rootRunId)return;let X={...f,controlInbox:J.controlInbox,capabilityToken:J.capabilityToken,ownerState:f.ownerState??"unknown"};return{type:Z.type,ts:Q,rootRunId:J.rootRunId,parentRunId:Z.parentRunId,...W(Z.parentStepIndex)!==void 0?{parentStepIndex:W(Z.parentStepIndex)}:{},capabilityToken:J.capabilityToken,child:X}}function o$($,J){if(!$.includes(`
3
+ `)){let j=r($.trim(),J);return j?[j]:[]}return $.split(`
4
4
  `).slice(0,$.endsWith(`
5
- `)?void 0:-1).map((j)=>j.trim()?l(j,J):void 0).filter((j)=>Boolean(j))}function D($){return $==="complete"||$==="failed"||$==="paused"}function q$($,J){let j=J.type==="subagent.nested.completed"&&J.child.state==="running"?"complete":J.child.state,Z={...J.child,state:j,lastUpdate:J.child.lastUpdate??J.ts};if(!$)return Z;let Q=$.lastUpdate??0,f=Z.lastUpdate??J.ts;if(f<Q)return $;if(D($.state)&&!D(Z.state))return $;if(D($.state)&&D(Z.state)&&f===Q)return $;return{...$,...Z,state:Z.state,lastUpdate:Math.max(Q,f)}}function d$($,J){let j=!1,Z=(K)=>K.map((q)=>{if(q.id===J.parentRunId){let T=q.children??[],N=T.findIndex((g)=>g.id===J.child.id),t=q$(N>=0?T[N]:void 0,J),A$=N>=0?T.map((g,F$)=>F$===N?t:g):[...T,t];return j=!0,{...q,children:A$.slice(0,b),lastUpdate:Math.max(q.lastUpdate??0,J.ts)}}if(!q.children?.length)return q;let z=Z(q.children);return z===q.children?q:{...q,children:z}}),Q=Z($);if(j)return Q;let f=Q.findIndex((K)=>K.id===J.child.id),X=q$(f>=0?Q[f]:void 0,J);return f>=0?Q.map((K,q)=>q===f?X:K):[...Q,X].slice(0,b)}function o$($,J){return{...$,updatedAt:Math.max($.updatedAt,J.ts),children:d$($.children,J)}}function M$($){return O.join(s($),w$)}function p$($){G("rootRunId",$);let J;try{J=Y.readdirSync(A)}catch(j){if(j.code==="ENOENT")return;throw j}for(let j of J){if(!j.startsWith(`${$}-`))continue;let Z=O.join(A,j);try{let Q=JSON.parse(Y.readFileSync(O.join(Z,I),"utf-8"));if(Q.rootRunId!==$||typeof Q.capabilityToken!=="string")continue;let f={rootRunId:$,eventSink:O.join(Z,"events"),controlInbox:O.join(Z,"controls"),capabilityToken:Q.capabilityToken};return H(f),f}catch{continue}}return}function $J(){let $;try{$=Y.readdirSync(A)}catch(j){if(j.code==="ENOENT")return new Map;throw j}let J=new Map;for(let j of $){let Z=O.join(A,j);try{let Q=JSON.parse(Y.readFileSync(O.join(Z,I),"utf-8"));if(typeof Q.rootRunId!=="string"||typeof Q.capabilityToken!=="string")continue;if(J.has(Q.rootRunId))continue;let f={rootRunId:Q.rootRunId,eventSink:O.join(Z,"events"),controlInbox:O.join(Z,"controls"),capabilityToken:Q.capabilityToken};H(f),J.set(Q.rootRunId,f)}catch{continue}}return J}function jJ($){let J=p$($);return J?c(J):void 0}function G$($,J){if(!$?.length)return;for(let j of $){if(j.id===J)return j;let Z=G$(j.children,J)??G$(j.steps?.flatMap((Q)=>Q.children??[]),J);if(Z)return Z}return}function v($,J=[]){for(let j of $??[])J.push(j),v(j.children,J),v(j.steps?.flatMap((Z)=>Z.children??[]),J);return J}function i($,J,j=[]){if(!J)return v($,j);for(let Z of $??[]){if(Z.parentRunId===J.parentRunId&&(J.parentStepIndex===void 0||Z.parentStepIndex===J.parentStepIndex)){v([Z],j);continue}i(Z.children,J,j),i(Z.steps?.flatMap((Q)=>Q.children??[]),J,j)}return j}function u$(){let $;try{$=Y.readdirSync(A)}catch(j){if(j.code==="ENOENT")return[];throw j}let J=[];for(let j of $){let Z=O.join(A,j);try{let Q=JSON.parse(Y.readFileSync(O.join(Z,I),"utf-8"));if(typeof Q.rootRunId!=="string"||typeof Q.capabilityToken!=="string")continue;let f={rootRunId:Q.rootRunId,eventSink:O.join(Z,"events"),controlInbox:O.join(Z,"controls"),capabilityToken:Q.capabilityToken};H(f),J.push(f)}catch{continue}}return J}function r$($,J={}){G("id",$);let j=[];for(let Z of J.scope?.routes??u$())try{let Q=c(Z);for(let f of i(Q.children,J.scope?.descendantOf))if(J.prefix?f.id.startsWith($):f.id===$)j.push({rootRunId:Z.rootRunId,route:Z,run:f})}catch{continue}return j}function JJ($){let J=r$($)[0];return J?{rootRunId:J.rootRunId,run:J.run}:void 0}function l$($){H($);try{let J=JSON.parse(Y.readFileSync(M$($),"utf-8"));return{rootRunId:$.rootRunId,updatedAt:typeof J.updatedAt==="number"?J.updatedAt:0,children:Array.isArray(J.children)?J.children.map((j)=>k(j)).filter((j)=>Boolean(j)):[],processedEvents:Array.isArray(J.processedEvents)?J.processedEvents.filter((j)=>typeof j==="string"):[]}}catch(J){if(J.code!=="ENOENT")throw J;return{rootRunId:$.rootRunId,updatedAt:0,children:[],processedEvents:[]}}}function c($){H($);let J=l$($),j=new Set(J.processedEvents),Z=!1,Q=[];try{Q=Y.readdirSync($.eventSink).filter((f)=>f.endsWith(".json")||f.endsWith(".jsonl")).sort()}catch(f){if(f.code!=="ENOENT")throw f}for(let f of Q){if(j.has(f))continue;let X=O.join($.eventSink,f);if(!_($.eventSink,X))continue;let K;try{let q=Y.statSync(X);if(!q.isFile()||q.size>S)continue;K=Y.readFileSync(X,"utf-8")}catch{continue}for(let q of n$(K,$))J=o$(J,q),Z=!0;j.add(f),Z=!0}if(Z)J={...J,processedEvents:[...j].slice(-1000)},Y$(M$($),J);return J}function a($,J,j){let Z=`${JSON.stringify(j)}
6
- `;if(Buffer.byteLength(Z,"utf-8")>S)throw Error("Nested route record exceeds the maximum size.");Y.mkdirSync($,{recursive:!0,mode:448});let Q=`${String(J).padStart(13,"0")}-${U$()}.json`,f=O.join($,`.${Q}.tmp`),X=O.join($,Q);return Y.writeFileSync(f,Z,{mode:384}),Y.renameSync(f,X),X}function ZJ($,J){H($);let j={...J,rootRunId:$.rootRunId,capabilityToken:$.capabilityToken},Z=l(JSON.stringify(j),$);if(!Z)throw Error("Nested event record failed validation.");a($.eventSink,Z.ts,Z)}function L$($,J){if(Buffer.byteLength($,"utf-8")>S)return;let j;try{j=JSON.parse($)}catch{return}if(!j||typeof j!=="object")return;let Z=j;if(Z.type!=="subagent.nested.control-request")return;if(Z.rootRunId!==J.rootRunId||Z.capabilityToken!==J.capabilityToken)return;if(!F(Z.requestId)||!F(Z.targetRunId))return;if(Z.action!=="interrupt"&&Z.action!=="resume")return;let Q=W(Z.ts);if(Q===void 0)return;return{type:"subagent.nested.control-request",ts:Q,rootRunId:J.rootRunId,capabilityToken:J.capabilityToken,requestId:Z.requestId,targetRunId:Z.targetRunId,action:Z.action,...B(Z.message,16000)?{message:B(Z.message,16000)}:{}}}function V$($,J){if(Buffer.byteLength($,"utf-8")>S)return;let j;try{j=JSON.parse($)}catch{return}if(!j||typeof j!=="object")return;let Z=j;if(Z.type!=="subagent.nested.control-result")return;if(Z.rootRunId!==J.rootRunId||Z.capabilityToken!==J.capabilityToken)return;if(!F(Z.requestId)||!F(Z.targetRunId))return;let Q=W(Z.ts);if(Q===void 0||typeof Z.ok!=="boolean")return;return{type:"subagent.nested.control-result",ts:Q,rootRunId:J.rootRunId,capabilityToken:J.capabilityToken,requestId:Z.requestId,targetRunId:Z.targetRunId,ok:Z.ok,message:B(Z.message,16000)??(Z.ok?"Control request completed.":"Control request failed.")}}function QJ($,J){H($),G("requestId",J.requestId),G("targetRunId",J.targetRunId);let j={type:"subagent.nested.control-request",...J,rootRunId:$.rootRunId,capabilityToken:$.capabilityToken},Z=L$(JSON.stringify(j),$);if(!Z)throw Error("Nested control request failed validation.");return a($.controlInbox,Z.ts,Z)}function fJ($){H($);let J=[];try{J=Y.readdirSync($.controlInbox).filter((Z)=>Z.endsWith(".json")).sort()}catch(Z){if(Z.code!=="ENOENT")throw Z}let j=[];for(let Z of J){let Q=O.join($.controlInbox,Z);if(!_($.controlInbox,Q))continue;try{let f=Y.statSync(Q);if(!f.isFile()||f.size>S)continue;let X=L$(Y.readFileSync(Q,"utf-8"),$);if(X)j.push({...X,filePath:Q})}catch{continue}}return j}function WJ($,J){H($),G("requestId",J.requestId),G("targetRunId",J.targetRunId);let j={type:"subagent.nested.control-result",...J,rootRunId:$.rootRunId,capabilityToken:$.capabilityToken},Z=V$(JSON.stringify(j),$);if(!Z)throw Error("Nested control result failed validation.");a($.eventSink,Z.ts,Z)}function OJ($){H($);let J=[];try{J=Y.readdirSync($.eventSink).filter((Z)=>Z.endsWith(".json")||Z.endsWith(".jsonl")).sort()}catch(Z){if(Z.code!=="ENOENT")throw Z}let j=[];for(let Z of J){let Q=O.join($.eventSink,Z);if(!_($.eventSink,Q))continue;try{let f=Y.statSync(Q);if(!f.isFile()||f.size>S)continue;let X=Y.readFileSync(Q,"utf-8"),K=X.includes(`
5
+ `)?void 0:-1).map((j)=>j.trim()?r(j,J):void 0).filter((j)=>Boolean(j))}function R($){return $==="complete"||$==="failed"||$==="paused"}function G$($,J){let j=J.type==="subagent.nested.completed"&&J.child.state==="running"?"complete":J.child.state,Z={...J.child,state:j,lastUpdate:J.child.lastUpdate??J.ts};if(!$)return Z;let Q=$.lastUpdate??0,f=Z.lastUpdate??J.ts;if(f<Q)return $;if(R($.state)&&!R(Z.state))return $;if(R($.state)&&R(Z.state)&&f===Q)return $;return{...$,...Z,state:Z.state,lastUpdate:Math.max(Q,f)}}function p$($,J){let j=!1,Z=(K)=>K.map((q)=>{if(q.id===J.parentRunId){let T=q.children??[],I=T.findIndex((c)=>c.id===J.child.id),a=G$(I>=0?T[I]:void 0,J),A$=I>=0?T.map((c,T$)=>T$===I?a:c):[...T,a];return j=!0,{...q,children:A$.slice(0,b),lastUpdate:Math.max(q.lastUpdate??0,J.ts)}}if(!q.children?.length)return q;let z=Z(q.children);return z===q.children?q:{...q,children:z}}),Q=Z($);if(j)return Q;let f=Q.findIndex((K)=>K.id===J.child.id),X=G$(f>=0?Q[f]:void 0,J);return f>=0?Q.map((K,q)=>q===f?X:K):[...Q,X].slice(0,b)}function u$($,J){return{...$,updatedAt:Math.max($.updatedAt,J.ts),children:p$($.children,J)}}function L$($){return O.join(i($),k$)}function r$($){G("rootRunId",$);let J;try{J=Y.readdirSync(F)}catch(j){if(j.code==="ENOENT")return;throw j}for(let j of J){if(!j.startsWith(`${$}-`))continue;let Z=O.join(F,j);try{let Q=JSON.parse(Y.readFileSync(O.join(Z,D),"utf-8"));if(Q.rootRunId!==$||typeof Q.capabilityToken!=="string")continue;let f={rootRunId:$,eventSink:O.join(Z,"events"),controlInbox:O.join(Z,"controls"),capabilityToken:Q.capabilityToken};return H(f),f}catch{continue}}return}function JJ(){let $;try{$=Y.readdirSync(F)}catch(j){if(j.code==="ENOENT")return new Map;throw j}let J=new Map;for(let j of $){let Z=O.join(F,j);try{let Q=JSON.parse(Y.readFileSync(O.join(Z,D),"utf-8"));if(typeof Q.rootRunId!=="string"||typeof Q.capabilityToken!=="string")continue;if(J.has(Q.rootRunId))continue;let f={rootRunId:Q.rootRunId,eventSink:O.join(Z,"events"),controlInbox:O.join(Z,"controls"),capabilityToken:Q.capabilityToken};H(f),J.set(Q.rootRunId,f)}catch{continue}}return J}function ZJ($){let J=r$($);return J?k(J):void 0}function H$($,J){if(!$?.length)return;for(let j of $){if(j.id===J)return j;let Z=H$(j.children,J)??H$(j.steps?.flatMap((Q)=>Q.children??[]),J);if(Z)return Z}return}function w($,J=[]){for(let j of $??[])J.push(j),w(j.children,J),w(j.steps?.flatMap((Z)=>Z.children??[]),J);return J}function l($,J,j=[]){if(!J)return w($,j);for(let Z of $??[]){if(Z.parentRunId===J.parentRunId&&(J.parentStepIndex===void 0||Z.parentStepIndex===J.parentStepIndex)){w([Z],j);continue}l(Z.children,J,j),l(Z.steps?.flatMap((Q)=>Q.children??[]),J,j)}return j}function l$(){let $;try{$=Y.readdirSync(F)}catch(j){if(j.code==="ENOENT")return[];throw j}let J=[];for(let j of $){let Z=O.join(F,j);try{let Q=JSON.parse(Y.readFileSync(O.join(Z,D),"utf-8"));if(typeof Q.rootRunId!=="string"||typeof Q.capabilityToken!=="string")continue;let f={rootRunId:Q.rootRunId,eventSink:O.join(Z,"events"),controlInbox:O.join(Z,"controls"),capabilityToken:Q.capabilityToken};H(f),J.push(f)}catch{continue}}return J}function i$($,J={}){G("id",$);let j=[];for(let Z of J.scope?.routes??l$())try{let Q=k(Z);for(let f of l(Q.children,J.scope?.descendantOf))if(J.prefix?f.id.startsWith($):f.id===$)j.push({rootRunId:Z.rootRunId,route:Z,run:f})}catch{continue}return j}function QJ($){let J=i$($)[0];return J?{rootRunId:J.rootRunId,run:J.run}:void 0}function s$($){H($);try{let J=JSON.parse(Y.readFileSync(L$($),"utf-8"));return{rootRunId:$.rootRunId,updatedAt:typeof J.updatedAt==="number"?J.updatedAt:0,children:Array.isArray(J.children)?J.children.map((j)=>v(j)).filter((j)=>Boolean(j)):[],processedEvents:Array.isArray(J.processedEvents)?J.processedEvents.filter((j)=>typeof j==="string"):[]}}catch(J){if(J.code!=="ENOENT")throw J;return{rootRunId:$.rootRunId,updatedAt:0,children:[],processedEvents:[]}}}function k($){H($);let J=s$($),j=new Set(J.processedEvents),Z=!1,Q=[];try{Q=Y.readdirSync($.eventSink).filter((f)=>f.endsWith(".json")||f.endsWith(".jsonl")).sort()}catch(f){if(f.code!=="ENOENT")throw f}for(let f of Q){if(j.has(f))continue;let X=O.join($.eventSink,f);if(!_($.eventSink,X))continue;let K;try{let q=Y.statSync(X);if(!q.isFile()||q.size>E)continue;K=Y.readFileSync(X,"utf-8")}catch{continue}for(let q of o$(K,$))J=u$(J,q),Z=!0;j.add(f),Z=!0}if(Z)J={...J,processedEvents:[...j].slice(-1000)},q$(L$($),J);return J}function s($,J,j){let Z=`${JSON.stringify(j)}
6
+ `;if(Buffer.byteLength(Z,"utf-8")>E)throw Error("Nested route record exceeds the maximum size.");Y.mkdirSync($,{recursive:!0,mode:448});let Q=`${String(J).padStart(13,"0")}-${M$()}.json`,f=O.join($,`.${Q}.tmp`),X=O.join($,Q);return Y.writeFileSync(f,Z,{mode:384}),Y.renameSync(f,X),X}function fJ($,J){H($);let j={...J,rootRunId:$.rootRunId,capabilityToken:$.capabilityToken},Z=r(JSON.stringify(j),$);if(!Z)throw Error("Nested event record failed validation.");s($.eventSink,Z.ts,Z)}function V$($,J){if(Buffer.byteLength($,"utf-8")>E)return;let j;try{j=JSON.parse($)}catch{return}if(!j||typeof j!=="object")return;let Z=j;if(Z.type!=="subagent.nested.control-request")return;if(Z.rootRunId!==J.rootRunId||Z.capabilityToken!==J.capabilityToken)return;if(!A(Z.requestId)||!A(Z.targetRunId))return;if(Z.action!=="interrupt"&&Z.action!=="resume")return;let Q=W(Z.ts);if(Q===void 0)return;return{type:"subagent.nested.control-request",ts:Q,rootRunId:J.rootRunId,capabilityToken:J.capabilityToken,requestId:Z.requestId,targetRunId:Z.targetRunId,action:Z.action,...B(Z.message,16000)?{message:B(Z.message,16000)}:{}}}function F$($,J){if(Buffer.byteLength($,"utf-8")>E)return;let j;try{j=JSON.parse($)}catch{return}if(!j||typeof j!=="object")return;let Z=j;if(Z.type!=="subagent.nested.control-result")return;if(Z.rootRunId!==J.rootRunId||Z.capabilityToken!==J.capabilityToken)return;if(!A(Z.requestId)||!A(Z.targetRunId))return;let Q=W(Z.ts);if(Q===void 0||typeof Z.ok!=="boolean")return;return{type:"subagent.nested.control-result",ts:Q,rootRunId:J.rootRunId,capabilityToken:J.capabilityToken,requestId:Z.requestId,targetRunId:Z.targetRunId,ok:Z.ok,message:B(Z.message,16000)??(Z.ok?"Control request completed.":"Control request failed.")}}function WJ($,J){H($),G("requestId",J.requestId),G("targetRunId",J.targetRunId);let j={type:"subagent.nested.control-request",...J,rootRunId:$.rootRunId,capabilityToken:$.capabilityToken},Z=V$(JSON.stringify(j),$);if(!Z)throw Error("Nested control request failed validation.");return s($.controlInbox,Z.ts,Z)}function OJ($){H($);let J=[];try{J=Y.readdirSync($.controlInbox).filter((Z)=>Z.endsWith(".json")).sort()}catch(Z){if(Z.code!=="ENOENT")throw Z}let j=[];for(let Z of J){let Q=O.join($.controlInbox,Z);if(!_($.controlInbox,Q))continue;try{let f=Y.statSync(Q);if(!f.isFile()||f.size>E)continue;let X=V$(Y.readFileSync(Q,"utf-8"),$);if(X)j.push({...X,filePath:Q})}catch{continue}}return j}function XJ($,J){H($),G("requestId",J.requestId),G("targetRunId",J.targetRunId);let j={type:"subagent.nested.control-result",...J,rootRunId:$.rootRunId,capabilityToken:$.capabilityToken},Z=F$(JSON.stringify(j),$);if(!Z)throw Error("Nested control result failed validation.");s($.eventSink,Z.ts,Z)}function BJ($){H($);let J=[];try{J=Y.readdirSync($.eventSink).filter((Z)=>Z.endsWith(".json")||Z.endsWith(".jsonl")).sort()}catch(Z){if(Z.code!=="ENOENT")throw Z}let j=[];for(let Z of J){let Q=O.join($.eventSink,Z);if(!_($.eventSink,Q))continue;try{let f=Y.statSync(Q);if(!f.isFile()||f.size>E)continue;let X=Y.readFileSync(Q,"utf-8"),K=X.includes(`
7
7
  `)?X.split(`
8
- `).filter((q)=>q.trim()):[X];for(let q of K){let z=V$(q,$);if(z)j.push(z)}}catch{continue}}return j}function XJ($){return{[d]:$.eventSink,[o]:$.controlInbox,[p]:$.rootRunId,[u]:$.capabilityToken}}function i$($,J,j){if(!J?.length)return;for(let Z of J)Z.children=void 0;if(!j?.length)return;for(let Z of j){if(Z.parentRunId!==$||Z.parentStepIndex===void 0)continue;let Q=J.find((f,X)=>(f.index??X)===Z.parentStepIndex);if(!Q)continue;Q.children??=[],Q.children=[...Q.children.filter((f)=>f.id!==Z.id),Z].slice(0,b)}}function BJ($){if(!$.nestedRoute)return;let J=c($.nestedRoute);$.nestedChildren=J.children,i$($.asyncId,$.steps,J.children)}function KJ($){if(!$.nestedRoute)return;let J=c($.nestedRoute);$.nestedChildren=J.children}function H$($){if(!$?.length)return!1;for(let J of $){if(!D(J.state))return!0;if(H$(J.children))return!0;if(H$(J.steps?.flatMap((j)=>j.children??[])))return!0}return!1}function YJ($,J,j){return{id:$.runId||j.id,parentRunId:j.parentRunId,...j.parentStepIndex!==void 0?{parentStepIndex:j.parentStepIndex}:{},depth:j.depth,path:j.path??[{runId:j.parentRunId,...j.parentStepIndex!==void 0?{stepIndex:j.parentStepIndex}:{}}],asyncDir:J,...$.pid?{pid:$.pid}:{},...$.sessionId?{sessionId:$.sessionId}:{},mode:$.mode??j.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:j.ts},...$.endedAt!==void 0?{endedAt:$.endedAt}:{},lastUpdate:$.lastUpdate??j.ts,...$.sessionFile?{sessionFile:$.sessionFile}:{},...$.steps?.length?{steps:$.steps.map((Z)=>({agent:Z.agent,status:Z.status,...Z.sessionFile?{sessionFile:Z.sessionFile}:{},...Z.activityState?{activityState:Z.activityState}:{},...Z.lastActivityAt!==void 0?{lastActivityAt:Z.lastActivityAt}:{},...Z.currentTool?{currentTool:Z.currentTool}:{},...Z.currentToolStartedAt!==void 0?{currentToolStartedAt:Z.currentToolStartedAt}:{},...Z.currentPath?{currentPath:Z.currentPath}:{},...Z.turnCount!==void 0?{turnCount:Z.turnCount}:{},...Z.toolCount!==void 0?{toolCount:Z.toolCount}:{},...Z.startedAt!==void 0?{startedAt:Z.startedAt}:{},...Z.endedAt!==void 0?{endedAt:Z.endedAt}:{},...Z.error?{error:Z.error}:{},...Z.timedOut!==void 0?{timedOut:Z.timedOut}:{},...Z.turnBudget?{turnBudget:Z.turnBudget}:{},...Z.turnBudgetExceeded!==void 0?{turnBudgetExceeded:Z.turnBudgetExceeded}:{},...Z.wrapUpRequested!==void 0?{wrapUpRequested:Z.wrapUpRequested}:{}})).slice(0,r)}:{}}}function qJ($,J){return{DM_SUBAGENT_NESTED_ROOT_RUN_ID:$,DM_SUBAGENT_NESTED_PARENT_RUN_ID:J}}function GJ($){let J=O.resolve($);return _($$,J)&&!_(O.join(L,"nested-subagent-runs"),J)}function HJ($,J){return G("rootRunId",$),G("id",J),O.join(e,"nested",$,`${J}.json`)}export{ZJ as writeNestedEvent,WJ as writeNestedControlResult,QJ as writeNestedControlRequest,KJ as updateForegroundNestedProjection,BJ as updateAsyncJobNestedProjection,k as sanitizeSummary,k$ as resolveNestedRouteFromEnv,tj as resolveNestedParentAddressFromEnv,ej as resolveNestedAsyncDir,aj as resolveInheritedNestedRouteFromEnv,l$ as readNestedRegistry,OJ as readNestedControlResults,fJ as readNestedControlRequests,jJ as projectNestedRegistryForRoot,c as projectNestedEvents,n$ as parseNestedEventRecords,YJ as nestedSummaryFromAsyncStatus,XJ as nestedRouteEnv,HJ as nestedResultsPath,qJ as nestedArtifactEnv,GJ as isTopLevelAsyncDir,F as isSafeNestedId,H$ as hasLiveNestedDescendants,r$ as findNestedRunMatchesById,JJ as findNestedRunById,G$ as findNestedRun,p$ as findNestedRouteForRootId,sj as createNestedRoute,$J as buildNestedRouteIndex,i$ as attachRootChildrenToSteps,v$ as assertSafeNestedId,o$ as applyNestedEvent,A as NESTED_EVENTS_DIR};
8
+ `).filter((q)=>q.trim()):[X];for(let q of K){let z=F$(q,$);if(z)j.push(z)}}catch{continue}}return j}function KJ($){return{[n]:$.eventSink,[d]:$.controlInbox,[o]:$.rootRunId,[p]:$.capabilityToken}}function a$($,J,j){if(!J?.length)return;for(let Z of J)Z.children=void 0;if(!j?.length)return;for(let Z of j){if(Z.parentRunId!==$||Z.parentStepIndex===void 0)continue;let Q=J.find((f,X)=>(f.index??X)===Z.parentStepIndex);if(!Q)continue;Q.children??=[],Q.children=[...Q.children.filter((f)=>f.id!==Z.id),Z].slice(0,b)}}function YJ($){if(!$.nestedRoute)return;let J=k($.nestedRoute);$.nestedChildren=J.children,a$($.asyncId,$.steps,J.children)}function qJ($){if(!$.nestedRoute)return;let J=k($.nestedRoute);$.nestedChildren=J.children}function U$($){if(!$?.length)return!1;for(let J of $){if(!R(J.state))return!0;if(U$(J.children))return!0;if(U$(J.steps?.flatMap((j)=>j.children??[])))return!0}return!1}function GJ($,J,j){return{id:$.runId||j.id,parentRunId:j.parentRunId,...j.parentStepIndex!==void 0?{parentStepIndex:j.parentStepIndex}:{},depth:j.depth,path:j.path??[{runId:j.parentRunId,...j.parentStepIndex!==void 0?{stepIndex:j.parentStepIndex}:{}}],asyncDir:J,...$.pid?{pid:$.pid}:{},...$.sessionId?{sessionId:$.sessionId}:{},mode:$.mode??j.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:j.ts},...$.endedAt!==void 0?{endedAt:$.endedAt}:{},lastUpdate:$.lastUpdate??j.ts,...$.sessionFile?{sessionFile:$.sessionFile}:{},...$.steps?.length?{steps:$.steps.map((Z)=>({agent:Z.agent,status:Z.status,...Z.sessionFile?{sessionFile:Z.sessionFile}:{},...Z.activityState?{activityState:Z.activityState}:{},...Z.lastActivityAt!==void 0?{lastActivityAt:Z.lastActivityAt}:{},...Z.currentTool?{currentTool:Z.currentTool}:{},...Z.currentToolStartedAt!==void 0?{currentToolStartedAt:Z.currentToolStartedAt}:{},...Z.currentPath?{currentPath:Z.currentPath}:{},...Z.turnCount!==void 0?{turnCount:Z.turnCount}:{},...Z.toolCount!==void 0?{toolCount:Z.toolCount}:{},...Z.startedAt!==void 0?{startedAt:Z.startedAt}:{},...Z.endedAt!==void 0?{endedAt:Z.endedAt}:{},...Z.error?{error:Z.error}:{},...Z.timedOut!==void 0?{timedOut:Z.timedOut}:{},...Z.turnBudget?{turnBudget:Z.turnBudget}:{},...Z.turnBudgetExceeded!==void 0?{turnBudgetExceeded:Z.turnBudgetExceeded}:{},...Z.wrapUpRequested!==void 0?{wrapUpRequested:Z.wrapUpRequested}:{}})).slice(0,u)}:{}}}function HJ($,J){return{DM_SUBAGENT_NESTED_ROOT_RUN_ID:$,DM_SUBAGENT_NESTED_PARENT_RUN_ID:J}}function UJ($){let J=O.resolve($);return _(e,J)&&!_(O.join(L,"nested-subagent-runs"),J)}function MJ($,J){return G("rootRunId",$),G("id",J),O.join(t,"nested",$,`${J}.json`)}export{fJ as writeNestedEvent,XJ as writeNestedControlResult,WJ as writeNestedControlRequest,qJ as updateForegroundNestedProjection,YJ as updateAsyncJobNestedProjection,v as sanitizeSummary,g$ as resolveNestedRouteFromEnv,$J as resolveNestedParentAddressFromEnv,jJ as resolveNestedAsyncDir,ej as resolveInheritedNestedRouteFromEnv,s$ as readNestedRegistry,BJ as readNestedControlResults,OJ as readNestedControlRequests,ZJ as projectNestedRegistryForRoot,k as projectNestedEvents,o$ as parseNestedEventRecords,GJ as nestedSummaryFromAsyncStatus,KJ as nestedRouteEnv,MJ as nestedResultsPath,HJ as nestedArtifactEnv,UJ as isTopLevelAsyncDir,A as isSafeNestedId,U$ as hasLiveNestedDescendants,i$ as findNestedRunMatchesById,QJ as findNestedRunById,H$ as findNestedRun,r$ as findNestedRouteForRootId,tj as createNestedRoute,JJ as buildNestedRouteIndex,a$ as attachRootChildrenToSteps,c$ as assertSafeNestedId,u$ as applyNestedEvent,F as NESTED_EVENTS_DIR};
@@ -1,22 +1,22 @@
1
- import*as A from"node:fs";import*as W$ from"node:path";import{randomUUID as c$}from"node:crypto";import*as M from"node:fs";import*as E from"node:path";import{Type as f}from"typebox";import*as b from"node:fs";import*as H from"node:path";import{fileURLToPath as E$}from"node:url";import*as T from"node:os";import*as G from"node:path";import*as z from"node:os";import*as F from"node:path";function R($){return $.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function _$($){let j=$?.env??process.env,J=$&&Object.hasOwn($,"getuid")?$.getuid:process.getuid?.bind(process);if(typeof J==="function")return`uid-${J()}`;for(let Q of["USERNAME","USER","LOGNAME"]){let O=j[Q];if(O)return`user-${R(O)}`}let B=$&&Object.hasOwn($,"userInfo")?$.userInfo:z.userInfo;try{let Q=B?.().username;if(Q)return`user-${R(Q)}`}catch{}let Z=j.USERPROFILE??j.HOME;if(Z)return`home-${R(Z)}`;let X=$&&Object.hasOwn($,"homedir")?$.homedir:z.homedir;try{let Q=X?.();if(Q)return`home-${R(Q)}`}catch{}return"shared"}var _=F.join(z.tmpdir(),`dm-subagents-${_$()}`),Aj=F.join(_,"async-subagent-results"),_j=F.join(_,"async-subagent-runs"),C$=F.join(_,"chain-runs"),Cj=F.join(_,"artifacts");var x=250;var dj=G.join(T.homedir(),".config","mcp","mcp.json"),nj={cursor:[G.join(T.homedir(),".cursor","mcp.json")],"claude-code":[G.join(T.homedir(),".claude","mcp.json"),G.join(T.homedir(),".claude.json"),G.join(T.homedir(),".claude","claude_desktop_config.json")],"claude-desktop":[G.join(T.homedir(),"Library","Application Support","Claude","claude_desktop_config.json")],codex:[G.join(T.homedir(),".codex","config.json")],windsurf:[G.join(T.homedir(),".windsurf","mcp.json")],vscode:[".vscode/mcp.json"]};import{Compile as L$}from"typebox/compile";var I="DM_SUBAGENT_STRUCTURED_OUTPUT_SCHEMA",w="DM_SUBAGENT_STRUCTURED_OUTPUT_CAPTURE";function g($,j){let J;try{J=L$($)}catch(Z){return{status:"invalid",message:`invalid outputSchema: ${Z instanceof Error?Z.message:String(Z)}`}}if(J.Check(j))return{status:"valid"};return{status:"invalid",message:[...J.Errors(j)].slice(0,8).map((Z)=>{return`${Z.instancePath?Z.instancePath.replace(/^\//,"").replace(/\//g,"."):"root"}: ${Z.message}`}).join("; ")||"schema validation failed"}}var z$=["read","grep","find","ls"],c="DM_SUBAGENT_TOOL_BUDGET";function F$($){if($==="*")return"*";if($===void 0)return[...z$];return[...new Set($.map((j)=>j.trim()).filter(Boolean))]}function b$($,j="toolBudget"){if($===void 0)return{};if(!$||typeof $!=="object"||Array.isArray($))return{error:`${j} must be an object with hard and optional soft/block.`};let J=$;if(typeof J.hard!=="number"||!Number.isInteger(J.hard)||J.hard<1)return{error:`${j}.hard must be an integer >= 1.`};if(J.soft!==void 0&&(typeof J.soft!=="number"||!Number.isInteger(J.soft)||J.soft<1))return{error:`${j}.soft must be an integer >= 1 when provided.`};if(J.soft!==void 0&&J.soft>J.hard)return{error:`${j}.soft must be <= ${j}.hard.`};if(J.block!==void 0&&J.block!=="*"){if(!Array.isArray(J.block))return{error:`${j}.block must be "*" or an array of tool names.`};if(J.block.length===0)return{error:`${j}.block must contain at least one tool name.`};for(let B of J.block)if(typeof B!=="string"||!B.trim())return{error:`${j}.block must contain non-empty tool names.`}}return{budget:{hard:J.hard,...J.soft!==void 0?{soft:J.soft}:{},block:F$(J.block)}}}function m($,j,J){if(J<=$.hard)return!1;return $.block==="*"||$.block.includes(j)}function o($,j){return`Tool budget soft limit reached after ${j} tool call${j===1?"":"s"} (soft ${$.soft}, hard ${$.hard}). Stop starting new browsing/search work and finalize from the context you already have.`}function d($,j,J){return`Tool budget hard limit reached after ${J} tool call${J===1?"":"s"} (hard ${$.hard}). The '${j}' tool is blocked so you can finalize from the context you already have.`}function n($){if(!$?.trim())return;let j=JSON.parse($),J=b$(j,"DM_SUBAGENT_TOOL_BUDGET");if(J.error)throw Error(J.error);return J.budget}function u($,j){let J=E$($),B=H.extname(J),Z=[".js",".mjs",".cjs",".ts",".mts",".cts"].includes(B)?B:".ts",X=H.dirname(J);while(!b.existsSync(H.join(X,"package.json"))){let Q=H.dirname(X);if(Q===X)throw Error(`Unable to resolve dm-subagents package root from ${J}`);X=Q}return H.join(X,`${j}${Z}`)}var X0=u(import.meta.url,H.join("src","runs","shared","subagent-prompt-runtime")),Q0=u(import.meta.url,H.join("src","extension","fanout-child"));var r="DM_SUBAGENT_ORCHESTRATOR_TARGET",p="DM_SUBAGENT_ORCHESTRATOR_SESSION_ID",l="DM_SUBAGENT_SUPERVISOR_CHANNEL_DIR",t="DM_SUBAGENT_RUN_ID",i="DM_SUBAGENT_CHILD_AGENT",s="DM_SUBAGENT_CHILD_INDEX",q="DM_SUBAGENT_FANOUT_CHILD";var a="DM_SUBAGENT_STEER_INBOX";import*as S$ from"node:fs";import*as C from"node:path";var N$=[10,25,50,100,200,500,1000,2000,4000],R$=new Set(["EACCES","EBUSY","EPERM"]),e=typeof SharedArrayBuffer<"u"?new SharedArrayBuffer(4):void 0,$$=e?new Int32Array(e):void 0;function w$($){if($<=0)return;if($$)try{Atomics.wait($$,0,0,$);return}catch{}let j=Date.now()+$;while(Date.now()<j);}function y$($){let j=$?.code;return typeof j==="string"&&R$.has(j)}function x$($,j,J,B,Z){for(let X=0;;X++)try{$.renameSync(j,J);return}catch(Q){let O=B[X];if(O===void 0||!y$(Q))throw Q;Z(O)}}function I$($={}){let j=$.fs??S$,J=$.now??Date.now,B=$.pid??process.pid,Z=$.random??Math.random,Q=$.retryRenameErrors??process.platform==="win32"?$.retryDelaysMs??N$:[],O=$.wait??w$;return(Y,U)=>{j.mkdirSync(C.dirname(Y),{recursive:!0});let W=C.join(C.dirname(Y),`.${C.basename(Y)}.${B}.${J()}.${Z().toString(36).slice(2)}.tmp`);try{j.writeFileSync(W,JSON.stringify(U,null,2),"utf-8"),x$(j,W,Y,Q,O)}finally{j.rmSync(W,{force:!0})}}}var y=I$();var H0=E.join(_,"supervisor-channels"),J$="requests",B$="replies";var q$=65536,v$=600000,V0=Math.min(x,500),D$=f.Object({reason:f.String({enum:["need_decision","interview_request","progress_update"]}),message:f.Optional(f.String()),interview:f.Optional(f.Unsafe({type:"object",additionalProperties:!0}))},{additionalProperties:!1}),P$=f.Object({action:f.String({enum:["list","send","ask","reply","pending","status"]}),to:f.Optional(f.String()),message:f.Optional(f.String()),replyTo:f.Optional(f.String())},{additionalProperties:!1});function Z$($){return $.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function k$($){M.mkdirSync(E.join($,J$),{recursive:!0,mode:448}),M.mkdirSync(E.join($,B$),{recursive:!0,mode:448})}function h$($,j){return E.join($,J$,`${Z$(j)}.json`)}function g$($,j){return E.join($,B$,`${Z$(j)}.json`)}function L($){let j=process.env[$]?.trim();return j?j:void 0}function X$(){let $=L(l),j=L(t),J=L(i),B=L(s),Z=L(p);if(!$||!j||!J||!Z||B===void 0||!/^\d+$/.test(B))return;return{channelDir:$,runId:j,agent:J,childIndex:Number(B),orchestratorTarget:L(r),orchestratorSessionId:Z,childTarget:L("DM_SUBAGENT_INTERCOM_SESSION_NAME")}}function m$($){if($==="interview_request")return"Subagent requests a structured supervisor interview.";if($==="progress_update")return"Subagent progress update.";return"Subagent needs a supervisor decision."}function o$($){let j=[m$($.reason),`Run: ${$.runId}`,`Agent: ${$.agent}`,`Child index: ${$.childIndex}`];if($.childTarget)j.push(`Child intercom target: ${$.childTarget}`);if(j.push(""),$.message?.trim())j.push($.message.trim());if($.reason==="interview_request"){if(j.push("","Structured response requested. Reply with JSON, optionally fenced in ```json, matching the requested interview shape."),$.interview!==void 0)j.push(JSON.stringify($.interview,null,"\t"))}return j.join(`
2
- `).trimEnd()}function d$($){let j=$.trim(),J=j.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/i)?.[1]?.trim();try{return{value:JSON.parse(J??j)}}catch(B){return{error:B instanceof Error?`${B.name}: ${B.message}`:String(B)}}}function n$(){let $=Number(process.env.PI_INTERCOM_ASK_TIMEOUT_MS);return Number.isFinite($)&&$>0?$:v$}function u$($,j){return new Promise((J,B)=>{if(j?.aborted){B(Error("Supervisor request cancelled."));return}let Z,X=()=>{if(Z)clearTimeout(Z);j?.removeEventListener("abort",Q)},Q=()=>{X(),B(Error("Supervisor request cancelled."))};Z=setTimeout(()=>{X(),J()},$),j?.addEventListener("abort",Q,{once:!0})})}async function r$($,j,J){let B=g$($,j),Z=Date.now()+n$();while(Date.now()<=Z){if(J?.aborted)throw Error("Supervisor request cancelled.");if(M.existsSync(B)){let X=JSON.parse(M.readFileSync(B,"utf-8"));if(X.type==="subagent.supervisor.reply"&&X.requestId===j&&typeof X.message==="string")return X}await u$(250,J)}throw Error("Timed out waiting for supervisor reply.")}async function v($,j){let J=X$();if(!J)throw Error("Native supervisor channel is not available for this subagent.");if($.reason!=="progress_update"&&!$.message?.trim()&&$.reason!=="interview_request")throw Error("message is required for supervisor decisions.");k$(J.channelDir);let B=c$(),Z=$.reason!=="progress_update",X=o$({...J,reason:$.reason,message:$.message,interview:$.interview}),Q={type:"subagent.supervisor.request",id:B,createdAt:Date.now(),reason:$.reason,message:X,expectsReply:Z,...J.orchestratorTarget?{orchestratorTarget:J.orchestratorTarget}:{},...J.orchestratorSessionId?{orchestratorSessionId:J.orchestratorSessionId}:{},runId:J.runId,agent:J.agent,childIndex:J.childIndex,...J.childTarget?{childTarget:J.childTarget}:{},...$.interview!==void 0?{interview:$.interview}:{}},O=JSON.stringify(Q,null,"\t");if(Buffer.byteLength(O,"utf-8")>q$)throw Error("Supervisor request is too large.");if(y(h$(J.channelDir,B),Q),!Z)return{content:[{type:"text",text:"Supervisor progress update queued."}],details:{delivered:!0,requestId:B,reason:$.reason}};let Y=await r$(J.channelDir,B,j),U={requestId:B,reason:$.reason};if($.reason==="interview_request"){let W=d$(Y.message);if(W.error)U.structuredReplyParseError=W.error;else U.structuredReply=W.value}return{content:[{type:"text",text:`**Reply from supervisor:**
3
- ${Y.message}`}],details:U}}function j$($,j){try{return $.getAllTools?.().some((J)=>J.name===j)===!0}catch{return!1}}function D($,j={}){if(!X$())return;let J=j.includeIntercomFallback!==!1;if(!j$($,"contact_supervisor")){let B={name:"contact_supervisor",label:"Contact Supervisor",description:"Contact the parent/supervisor session for a blocking decision, structured interview, or progress update.",parameters:D$,execute(Z,X,Q){return v(X,Q)}};$.registerTool(B)}if(J&&!j$($,"intercom")){let B={name:"intercom",label:"Intercom",description:"Native supervisor-channel intercom fallback for subagents. Prefer contact_supervisor when available.",parameters:P$,async execute(Z,X,Q){let O=X.action;if(O==="status")return{content:[{type:"text",text:"Native supervisor channel is active."}],details:{active:!0}};if(O==="list")return{content:[{type:"text",text:"Supervisor session available through contact_supervisor."}],details:{sessions:[]}};if(O==="send")return v({reason:"progress_update",message:X.message??""},Q);if(O==="ask")return v({reason:"need_decision",message:X.message??""},Q);throw Error("Native child intercom supports status, list, send, and ask. Use parent intercom reply from the supervisor session.")}};$.registerTool(B)}}import*as Q$ from"node:fs";import*as P from"node:path";var _0=process.platform==="win32"?"SIGBREAK":"SIGUSR2";function p$($){return`${String($.ts).padStart(13,"0")}-${Buffer.from($.id).toString("base64url")}.json`}function O$($,j){let J=P.join($,p$(j));return y(J,j),J}function l$($){if(!$||typeof $!=="object"||Array.isArray($))return;let j=$;if(j.type!=="steer")return;if(typeof j.id!=="string"||!j.id.trim())return;if(typeof j.ts!=="number"||!Number.isFinite(j.ts))return;if(typeof j.message!=="string"||!j.message.trim())return;if(j.targetIndex!==void 0&&(!Number.isInteger(j.targetIndex)||j.targetIndex<0))return;return{type:"steer",id:j.id.trim(),ts:j.ts,message:j.message.trim(),...j.targetIndex!==void 0?{targetIndex:j.targetIndex}:{},...typeof j.source==="string"&&j.source.trim()?{source:j.source}:{}}}function Y$($,j=Q$){if(!j.existsSync($))return[];let J=[];for(let B of j.readdirSync($).filter((Z)=>Z.endsWith(".json")).sort()){let Z=P.join($,B),X;try{X=l$(JSON.parse(j.readFileSync(Z,"utf-8")))}catch{X=void 0}try{j.rmSync(Z,{recursive:!0})}catch{continue}if(X)J.push(X)}return J.sort((B,Z)=>B.ts-Z.ts||B.id.localeCompare(Z.id))}var t$="DM_SUBAGENT_INHERIT_PROJECT_CONTEXT",i$="DM_SUBAGENT_INHERIT_SKILLS",s$="DM_SUBAGENT_INTERCOM_SESSION_NAME",a$=["This subagent step has a strict structured output contract.","Your final action must be to call the `structured_output` tool with JSON matching the provided schema.","Do not rely on prose-only completion; if you do not call `structured_output`, the parent will fail this step."].join(`
4
- `),f$=["You are a child subagent, not the parent orchestrator.","The parent session owns delegation, orchestration, review fanout, and follow-up worker launches.","Ignore prior parent-only orchestration instructions in inherited conversation history.","Do not propose or run subagents. Complete only your assigned role-specific task with the tools available to you.","If you need to edit files, use the available editing tools. Do not print tool-call syntax, patches, or pseudo-tool calls as text."].join(`
5
- `),K$=["You are a child subagent with explicit fanout responsibility for this assigned task.","The parent session owns final orchestration, acceptance, and follow-up implementation launches.","You may use the `subagent` tool only for the fanout work explicitly requested in this task.","Do not broaden yourself into general parent orchestration. Do not launch follow-up workers unless the task explicitly asks for that.","The maxSubagentDepth cap still applies and may block further fanout.","If you need to edit files, use the available editing tools. Do not print tool-call syntax, patches, or pseudo-tool calls as text."].join(`
6
- `),e$=new Set(["subagent-orchestration-instructions","subagent-slash-result","subagent-slash-text-result","subagent-notify","subagent_control_notice","subagent-control","subagent-control-notice"]),$j=/<name>\s*dm-subagents\s*<\/name>/,U$=`
1
+ import*as A from"node:fs";import*as K$ from"node:path";import{randomUUID as v$}from"node:crypto";import*as M from"node:fs";import*as F from"node:path";import{Type as K}from"typebox";import*as H from"node:path";import{fileURLToPath as d}from"node:url";import*as T from"node:os";import*as G from"node:path";import*as z from"node:os";import*as b from"node:path";function S($){return $.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function L$($){let j=$?.env??process.env,J=$&&Object.hasOwn($,"getuid")?$.getuid:process.getuid?.bind(process);if(typeof J==="function")return`uid-${J()}`;for(let Q of["USERNAME","USER","LOGNAME"]){let O=j[Q];if(O)return`user-${S(O)}`}let B=$&&Object.hasOwn($,"userInfo")?$.userInfo:z.userInfo;try{let Q=B?.().username;if(Q)return`user-${S(Q)}`}catch{}let Z=j.USERPROFILE??j.HOME;if(Z)return`home-${S(Z)}`;let X=$&&Object.hasOwn($,"homedir")?$.homedir:z.homedir;try{let Q=X?.();if(Q)return`home-${S(Q)}`}catch{}return"shared"}var _=b.join(z.tmpdir(),`dm-subagents-${L$()}`),Lj=b.join(_,"async-subagent-results"),Cj=b.join(_,"async-subagent-runs"),C$=b.join(_,"chain-runs"),zj=b.join(_,"artifacts");var y=250;var uj=G.join(T.homedir(),".config","mcp","mcp.json"),rj={cursor:[G.join(T.homedir(),".cursor","mcp.json")],"claude-code":[G.join(T.homedir(),".claude","mcp.json"),G.join(T.homedir(),".claude.json"),G.join(T.homedir(),".claude","claude_desktop_config.json")],"claude-desktop":[G.join(T.homedir(),"Library","Application Support","Claude","claude_desktop_config.json")],codex:[G.join(T.homedir(),".codex","config.json")],windsurf:[G.join(T.homedir(),".windsurf","mcp.json")],vscode:[".vscode/mcp.json"]};import{Compile as z$}from"typebox/compile";var x="DM_SUBAGENT_STRUCTURED_OUTPUT_SCHEMA",R="DM_SUBAGENT_STRUCTURED_OUTPUT_CAPTURE";function h($,j){let J;try{J=z$($)}catch(Z){return{status:"invalid",message:`invalid outputSchema: ${Z instanceof Error?Z.message:String(Z)}`}}if(J.Check(j))return{status:"valid"};return{status:"invalid",message:[...J.Errors(j)].slice(0,8).map((Z)=>{return`${Z.instancePath?Z.instancePath.replace(/^\//,"").replace(/\//g,"."):"root"}: ${Z.message}`}).join("; ")||"schema validation failed"}}var b$=["read","grep","find","ls"],I="DM_SUBAGENT_TOOL_BUDGET";function F$($){if($==="*")return"*";if($===void 0)return[...b$];return[...new Set($.map((j)=>j.trim()).filter(Boolean))]}function E$($,j="toolBudget"){if($===void 0)return{};if(!$||typeof $!=="object"||Array.isArray($))return{error:`${j} must be an object with hard and optional soft/block.`};let J=$;if(typeof J.hard!=="number"||!Number.isInteger(J.hard)||J.hard<1)return{error:`${j}.hard must be an integer >= 1.`};if(J.soft!==void 0&&(typeof J.soft!=="number"||!Number.isInteger(J.soft)||J.soft<1))return{error:`${j}.soft must be an integer >= 1 when provided.`};if(J.soft!==void 0&&J.soft>J.hard)return{error:`${j}.soft must be <= ${j}.hard.`};if(J.block!==void 0&&J.block!=="*"){if(!Array.isArray(J.block))return{error:`${j}.block must be "*" or an array of tool names.`};if(J.block.length===0)return{error:`${j}.block must contain at least one tool name.`};for(let B of J.block)if(typeof B!=="string"||!B.trim())return{error:`${j}.block must contain non-empty tool names.`}}return{budget:{hard:J.hard,...J.soft!==void 0?{soft:J.soft}:{},block:F$(J.block)}}}function g($,j,J){if(J<=$.hard)return!1;return $.block==="*"||$.block.includes(j)}function o($,j){return`Tool budget soft limit reached after ${j} tool call${j===1?"":"s"} (soft ${$.soft}, hard ${$.hard}). Stop starting new browsing/search work and finalize from the context you already have.`}function m($,j,J){return`Tool budget hard limit reached after ${J} tool call${J===1?"":"s"} (hard ${$.hard}). The '${j}' tool is blocked so you can finalize from the context you already have.`}function n($){if(!$?.trim())return;let j=JSON.parse($),J=E$(j,"DM_SUBAGENT_TOOL_BUDGET");if(J.error)throw Error(J.error);return J.budget}function u($,j){let J=d($),B=H.extname(J),Z=[".js",".mjs",".cjs",".ts",".mts",".cts"].includes(B)?B:".ts";return H.join(H.dirname(J),`${j}${Z}`)}function r($){return H.basename(d($)).startsWith("dm-args.")}function N$($=import.meta.url){let j=r($)?"subagent-prompt-runtime":H.join("..","runs","shared","subagent-prompt-runtime");return u($,j)}function S$($=import.meta.url){let j=r($)?H.join("..","..","extension","fanout-child"):"fanout-child";return u($,j)}var O0=N$(),Y0=S$();var p="DM_SUBAGENT_ORCHESTRATOR_TARGET",l="DM_SUBAGENT_ORCHESTRATOR_SESSION_ID",t="DM_SUBAGENT_SUPERVISOR_CHANNEL_DIR",i="DM_SUBAGENT_RUN_ID",s="DM_SUBAGENT_CHILD_AGENT",a="DM_SUBAGENT_CHILD_INDEX",c="DM_SUBAGENT_FANOUT_CHILD";var e="DM_SUBAGENT_STEER_INBOX";import*as R$ from"node:fs";import*as L from"node:path";var w$=[10,25,50,100,200,500,1000,2000,4000],y$=new Set(["EACCES","EBUSY","EPERM"]),$$=typeof SharedArrayBuffer<"u"?new SharedArrayBuffer(4):void 0,j$=$$?new Int32Array($$):void 0;function x$($){if($<=0)return;if(j$)try{Atomics.wait(j$,0,0,$);return}catch{}let j=Date.now()+$;while(Date.now()<j);}function I$($){let j=$?.code;return typeof j==="string"&&y$.has(j)}function c$($,j,J,B,Z){for(let X=0;;X++)try{$.renameSync(j,J);return}catch(Q){let O=B[X];if(O===void 0||!I$(Q))throw Q;Z(O)}}function q$($={}){let j=$.fs??R$,J=$.now??Date.now,B=$.pid??process.pid,Z=$.random??Math.random,Q=$.retryRenameErrors??process.platform==="win32"?$.retryDelaysMs??w$:[],O=$.wait??x$;return(Y,W)=>{j.mkdirSync(L.dirname(Y),{recursive:!0});let f=L.join(L.dirname(Y),`.${L.basename(Y)}.${B}.${J()}.${Z().toString(36).slice(2)}.tmp`);try{j.writeFileSync(f,JSON.stringify(W,null,2),"utf-8"),c$(j,f,Y,Q,O)}finally{j.rmSync(f,{force:!0})}}}var w=q$();var T0=F.join(_,"supervisor-channels"),B$="requests",Z$="replies";var D$=65536,P$=600000,M0=Math.min(y,500),k$=K.Object({reason:K.String({enum:["need_decision","interview_request","progress_update"]}),message:K.Optional(K.String()),interview:K.Optional(K.Unsafe({type:"object",additionalProperties:!0}))},{additionalProperties:!1}),h$=K.Object({action:K.String({enum:["list","send","ask","reply","pending","status"]}),to:K.Optional(K.String()),message:K.Optional(K.String()),replyTo:K.Optional(K.String())},{additionalProperties:!1});function X$($){return $.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function g$($){M.mkdirSync(F.join($,B$),{recursive:!0,mode:448}),M.mkdirSync(F.join($,Z$),{recursive:!0,mode:448})}function o$($,j){return F.join($,B$,`${X$(j)}.json`)}function m$($,j){return F.join($,Z$,`${X$(j)}.json`)}function C($){let j=process.env[$]?.trim();return j?j:void 0}function Q$(){let $=C(t),j=C(i),J=C(s),B=C(a),Z=C(l);if(!$||!j||!J||!Z||B===void 0||!/^\d+$/.test(B))return;return{channelDir:$,runId:j,agent:J,childIndex:Number(B),orchestratorTarget:C(p),orchestratorSessionId:Z,childTarget:C("DM_SUBAGENT_INTERCOM_SESSION_NAME")}}function n$($){if($==="interview_request")return"Subagent requests a structured supervisor interview.";if($==="progress_update")return"Subagent progress update.";return"Subagent needs a supervisor decision."}function d$($){let j=[n$($.reason),`Run: ${$.runId}`,`Agent: ${$.agent}`,`Child index: ${$.childIndex}`];if($.childTarget)j.push(`Child intercom target: ${$.childTarget}`);if(j.push(""),$.message?.trim())j.push($.message.trim());if($.reason==="interview_request"){if(j.push("","Structured response requested. Reply with JSON, optionally fenced in ```json, matching the requested interview shape."),$.interview!==void 0)j.push(JSON.stringify($.interview,null,"\t"))}return j.join(`
2
+ `).trimEnd()}function u$($){let j=$.trim(),J=j.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/i)?.[1]?.trim();try{return{value:JSON.parse(J??j)}}catch(B){return{error:B instanceof Error?`${B.name}: ${B.message}`:String(B)}}}function r$(){let $=Number(process.env.PI_INTERCOM_ASK_TIMEOUT_MS);return Number.isFinite($)&&$>0?$:P$}function p$($,j){return new Promise((J,B)=>{if(j?.aborted){B(Error("Supervisor request cancelled."));return}let Z,X=()=>{if(Z)clearTimeout(Z);j?.removeEventListener("abort",Q)},Q=()=>{X(),B(Error("Supervisor request cancelled."))};Z=setTimeout(()=>{X(),J()},$),j?.addEventListener("abort",Q,{once:!0})})}async function l$($,j,J){let B=m$($,j),Z=Date.now()+r$();while(Date.now()<=Z){if(J?.aborted)throw Error("Supervisor request cancelled.");if(M.existsSync(B)){let X=JSON.parse(M.readFileSync(B,"utf-8"));if(X.type==="subagent.supervisor.reply"&&X.requestId===j&&typeof X.message==="string")return X}await p$(250,J)}throw Error("Timed out waiting for supervisor reply.")}async function q($,j){let J=Q$();if(!J)throw Error("Native supervisor channel is not available for this subagent.");if($.reason!=="progress_update"&&!$.message?.trim()&&$.reason!=="interview_request")throw Error("message is required for supervisor decisions.");g$(J.channelDir);let B=v$(),Z=$.reason!=="progress_update",X=d$({...J,reason:$.reason,message:$.message,interview:$.interview}),Q={type:"subagent.supervisor.request",id:B,createdAt:Date.now(),reason:$.reason,message:X,expectsReply:Z,...J.orchestratorTarget?{orchestratorTarget:J.orchestratorTarget}:{},...J.orchestratorSessionId?{orchestratorSessionId:J.orchestratorSessionId}:{},runId:J.runId,agent:J.agent,childIndex:J.childIndex,...J.childTarget?{childTarget:J.childTarget}:{},...$.interview!==void 0?{interview:$.interview}:{}},O=JSON.stringify(Q,null,"\t");if(Buffer.byteLength(O,"utf-8")>D$)throw Error("Supervisor request is too large.");if(w(o$(J.channelDir,B),Q),!Z)return{content:[{type:"text",text:"Supervisor progress update queued."}],details:{delivered:!0,requestId:B,reason:$.reason}};let Y=await l$(J.channelDir,B,j),W={requestId:B,reason:$.reason};if($.reason==="interview_request"){let f=u$(Y.message);if(f.error)W.structuredReplyParseError=f.error;else W.structuredReply=f.value}return{content:[{type:"text",text:`**Reply from supervisor:**
3
+ ${Y.message}`}],details:W}}function J$($,j){try{return $.getAllTools?.().some((J)=>J.name===j)===!0}catch{return!1}}function v($,j={}){if(!Q$())return;let J=j.includeIntercomFallback!==!1;if(!J$($,"contact_supervisor")){let B={name:"contact_supervisor",label:"Contact Supervisor",description:"Contact the parent/supervisor session for a blocking decision, structured interview, or progress update.",parameters:k$,execute(Z,X,Q){return q(X,Q)}};$.registerTool(B)}if(J&&!J$($,"intercom")){let B={name:"intercom",label:"Intercom",description:"Native supervisor-channel intercom fallback for subagents. Prefer contact_supervisor when available.",parameters:h$,async execute(Z,X,Q){let O=X.action;if(O==="status")return{content:[{type:"text",text:"Native supervisor channel is active."}],details:{active:!0}};if(O==="list")return{content:[{type:"text",text:"Supervisor session available through contact_supervisor."}],details:{sessions:[]}};if(O==="send")return q({reason:"progress_update",message:X.message??""},Q);if(O==="ask")return q({reason:"need_decision",message:X.message??""},Q);throw Error("Native child intercom supports status, list, send, and ask. Use parent intercom reply from the supervisor session.")}};$.registerTool(B)}}import*as O$ from"node:fs";import*as D from"node:path";var C0=process.platform==="win32"?"SIGBREAK":"SIGUSR2";function t$($){return`${String($.ts).padStart(13,"0")}-${Buffer.from($.id).toString("base64url")}.json`}function Y$($,j){let J=D.join($,t$(j));return w(J,j),J}function i$($){if(!$||typeof $!=="object"||Array.isArray($))return;let j=$;if(j.type!=="steer")return;if(typeof j.id!=="string"||!j.id.trim())return;if(typeof j.ts!=="number"||!Number.isFinite(j.ts))return;if(typeof j.message!=="string"||!j.message.trim())return;if(j.targetIndex!==void 0&&(!Number.isInteger(j.targetIndex)||j.targetIndex<0))return;return{type:"steer",id:j.id.trim(),ts:j.ts,message:j.message.trim(),...j.targetIndex!==void 0?{targetIndex:j.targetIndex}:{},...typeof j.source==="string"&&j.source.trim()?{source:j.source}:{}}}function W$($,j=O$){if(!j.existsSync($))return[];let J=[];for(let B of j.readdirSync($).filter((Z)=>Z.endsWith(".json")).sort()){let Z=D.join($,B),X;try{X=i$(JSON.parse(j.readFileSync(Z,"utf-8")))}catch{X=void 0}try{j.rmSync(Z,{recursive:!0})}catch{continue}if(X)J.push(X)}return J.sort((B,Z)=>B.ts-Z.ts||B.id.localeCompare(Z.id))}var s$="DM_SUBAGENT_INHERIT_PROJECT_CONTEXT",a$="DM_SUBAGENT_INHERIT_SKILLS",e$="DM_SUBAGENT_INTERCOM_SESSION_NAME",$j=["This subagent step has a strict structured output contract.","Your final action must be to call the `structured_output` tool with JSON matching the provided schema.","Do not rely on prose-only completion; if you do not call `structured_output`, the parent will fail this step."].join(`
4
+ `),U$=["You are a child subagent, not the parent orchestrator.","The parent session owns delegation, orchestration, review fanout, and follow-up worker launches.","Ignore prior parent-only orchestration instructions in inherited conversation history.","Do not propose or run subagents. Complete only your assigned role-specific task with the tools available to you.","If you need to edit files, use the available editing tools. Do not print tool-call syntax, patches, or pseudo-tool calls as text."].join(`
5
+ `),G$=["You are a child subagent with explicit fanout responsibility for this assigned task.","The parent session owns final orchestration, acceptance, and follow-up implementation launches.","You may use the `subagent` tool only for the fanout work explicitly requested in this task.","Do not broaden yourself into general parent orchestration. Do not launch follow-up workers unless the task explicitly asks for that.","The maxSubagentDepth cap still applies and may block further fanout.","If you need to edit files, use the available editing tools. Do not print tool-call syntax, patches, or pseudo-tool calls as text."].join(`
6
+ `),jj=new Set(["subagent-orchestration-instructions","subagent-slash-result","subagent-slash-text-result","subagent-notify","subagent_control_notice","subagent-control","subagent-control-notice"]),Jj=/<name>\s*dm-subagents\s*<\/name>/,f$=`
7
7
 
8
8
  # Project Context
9
9
 
10
10
  Project-specific instructions and guidelines:
11
11
 
12
- `,h=`
12
+ `,k=`
13
13
 
14
- The following skills provide specialized instructions for specific tasks.`,G$=`
15
- Current date:`;function k($){let j=process.env[$];if(j===void 0)return;return j!=="0"}function H$($,j,J){let B=$.length;for(let Z of J){let X=$.indexOf(Z,j);if(X!==-1&&X<B)B=X}return B}function jj($){let j=$.indexOf(U$);if(j===-1)return $;let J=H$($,j+U$.length,[h,G$]);return`${$.slice(0,j)}${$.slice(J)}`}function Jj($){let j=$.indexOf(h);if(j===-1)return $;let J=H$($,j+h.length,[G$]);return`${$.slice(0,j)}${$.slice(J)}`}function Bj($){return $.replace(/\n{0,2}<skill\s+name=["']dm-subagents["'][^>]*>[\s\S]*?<\/skill>\n{0,2}/g,`
14
+ The following skills provide specialized instructions for specific tasks.`,H$=`
15
+ Current date:`;function P($){let j=process.env[$];if(j===void 0)return;return j!=="0"}function V$($,j,J){let B=$.length;for(let Z of J){let X=$.indexOf(Z,j);if(X!==-1&&X<B)B=X}return B}function Bj($){let j=$.indexOf(f$);if(j===-1)return $;let J=V$($,j+f$.length,[k,H$]);return`${$.slice(0,j)}${$.slice(J)}`}function Zj($){let j=$.indexOf(k);if(j===-1)return $;let J=V$($,j+k.length,[H$]);return`${$.slice(0,j)}${$.slice(J)}`}function Xj($){return $.replace(/\n{0,2}<skill\s+name=["']dm-subagents["'][^>]*>[\s\S]*?<\/skill>\n{0,2}/g,`
16
16
 
17
- `).replace(/[ \t]*<skill>\s*[\s\S]*?<\/skill>\s*/g,(j)=>$j.test(j)?"":j)}function Zj($){let j=$;for(let J of[f$,K$])j=j.split(J).join("");return j.replace(/^(?:[ \t]*\r?\n)+/,"")}function Xj($,j){let J=$;if(!j.inheritProjectContext)J=jj(J);if(!j.inheritSkills)J=Jj(J);J=Bj(J),J=Zj(J);let B=j.fanoutChild?K$:f$,Z=process.env[w]?`
17
+ `).replace(/[ \t]*<skill>\s*[\s\S]*?<\/skill>\s*/g,(j)=>Jj.test(j)?"":j)}function Qj($){let j=$;for(let J of[U$,G$])j=j.split(J).join("");return j.replace(/^(?:[ \t]*\r?\n)+/,"")}function Oj($,j){let J=$;if(!j.inheritProjectContext)J=Bj(J);if(!j.inheritSkills)J=Zj(J);J=Xj(J),J=Qj(J);let B=j.fanoutChild?G$:U$,Z=process.env[R]?`
18
18
 
19
- ${a$}`:"";return`${B}${Z}
19
+ ${$j}`:"";return`${B}${Z}
20
20
 
21
- ${J}`}function Qj($){let j=$;return j?.role==="custom"&&typeof j.customType==="string"&&e$.has(j.customType)}function Oj($){let j=$;return j?.role==="toolResult"&&j.toolName==="subagent"}function Yj($){let j=$;return j?.type==="toolCall"&&j.name==="subagent"}function Uj($){let j=$;if(j?.role!=="assistant"||!Array.isArray(j.content))return $;let J=j.content.filter((B)=>!Yj(B));if(J.length===j.content.length)return $;if(J.length===0)return;return{...j,content:J}}function Wj($){let j=process.env[q]==="1",J=!1,B=[];for(let Z of $){if(Qj(Z)||!j&&Oj(Z)){J=!0;continue}let X=j?Z:Uj(Z);if(X===void 0){J=!0;continue}if(X!==Z)J=!0;B.push(X)}return J?B:$}function fj($){return["Mid-run steering from the parent orchestrator:","",$.message,"","Incorporate this guidance at the next safe point. Do not restart the task unless the guidance explicitly asks you to."].join(`
22
- `)}function Kj($,j){if(!j)return;let J=0,B=!1,Z=$.sendUserMessage,X=$.on;X("tool_call",(Q)=>{let O=typeof Q.toolName==="string"?Q.toolName:"tool";if(J++,j.soft!==void 0&&J>=j.soft&&!B){B=!0;try{Z?.(o(j,J),{deliverAs:"steer"})}catch{}}if(!m(j,O,J))return;return{block:!0,reason:d(j,O,J)}})}function Gj($){let j=process.env[a]?.trim();if(!j)return;let J=$.sendUserMessage;if(typeof J!=="function")return;let B=!1,Z=!1,X=!1,Q=!1,O,Y,U=()=>{if(Z||X||!B)return;X=!0;try{let K=Y$(j);for(let N=0;N<K.length;N++){let V$=K[N];try{J(fj(V$),{deliverAs:"steer"})}catch{for(let T$ of K.slice(N))O$(j,T$);break}}}finally{X=!1}},W=()=>{if(Q||Z)return;try{A.mkdirSync(j,{recursive:!0})}catch{return}Q=!0;try{O=A.watch(j,()=>U()),O.on("error",()=>{})}catch{O=void 0}Y=setInterval(U,250),Y.unref?.()},S=()=>{W(),B=!0,U();return},V=$.on;V("session_start",()=>W());for(let K of["message_start","message_update","message_end","tool_execution_start","tool_execution_end","turn_end"])V(K,S);V("session_shutdown",()=>{Z=!0;try{O?.close()}catch{}if(Y)clearInterval(Y)})}function Hj($){Gj($),Kj($,n(process.env[c]));let j=!1,J=!1,B=()=>{if(j)return;j=!0,D($,{includeIntercomFallback:!1})},Z=()=>{if(B(),J)return;J=!0,D($)},X=$.on;X("session_start",B);let Q=process.env[w],O=process.env[I];if(Q&&O){let Y=JSON.parse(A.readFileSync(O,"utf-8")),U={type:"object",properties:{value:Y},required:["value"],additionalProperties:!1},W=$.registerTool;W({name:"structured_output",label:"Structured Output",description:"Submit the required final structured output for this subagent step. This terminates the step.",parameters:U,async execute(S,V){let K=g(Y,V.value);if(K.status==="invalid")throw Error(`Structured output validation failed: ${K.message}`);return A.mkdirSync(W$.dirname(Q),{recursive:!0}),A.writeFileSync(Q,JSON.stringify(V.value),{mode:384}),{content:[{type:"text",text:"Structured output captured."}],details:{path:Q},terminate:!0}}})}X("context",(Y)=>{let U=Wj(Y.messages);if(U===Y.messages)return;return{messages:U}}),X("before_agent_start",async(Y)=>{Z();let U=process.env[s$]?.trim();if(U&&typeof $.setSessionName==="function")$.setSessionName(U);let W=k(t$),S=k(i$),V=k(q);if(W===void 0&&S===void 0&&V===void 0)return;let K=Xj(Y.systemPrompt,{inheritProjectContext:W??!0,inheritSkills:S??!0,fanoutChild:V===!0});if(K===Y.systemPrompt)return;return{systemPrompt:K}})}export{Bj as stripSubagentOrchestrationSkill,jj as stripProjectContext,Wj as stripParentOnlySubagentMessages,Jj as stripInheritedSkills,Xj as rewriteSubagentPrompt,fj as formatSteerMessage,Hj as default,s$ as SUBAGENT_INTERCOM_SESSION_NAME_ENV,f$ as CHILD_SUBAGENT_BOUNDARY_INSTRUCTIONS,K$ as CHILD_FANOUT_BOUNDARY_INSTRUCTIONS};
21
+ ${J}`}function Yj($){let j=$;return j?.role==="custom"&&typeof j.customType==="string"&&jj.has(j.customType)}function Wj($){let j=$;return j?.role==="toolResult"&&j.toolName==="subagent"}function fj($){let j=$;return j?.type==="toolCall"&&j.name==="subagent"}function Kj($){let j=$;if(j?.role!=="assistant"||!Array.isArray(j.content))return $;let J=j.content.filter((B)=>!fj(B));if(J.length===j.content.length)return $;if(J.length===0)return;return{...j,content:J}}function Uj($){let j=process.env[c]==="1",J=!1,B=[];for(let Z of $){if(Yj(Z)||!j&&Wj(Z)){J=!0;continue}let X=j?Z:Kj(Z);if(X===void 0){J=!0;continue}if(X!==Z)J=!0;B.push(X)}return J?B:$}function Gj($){return["Mid-run steering from the parent orchestrator:","",$.message,"","Incorporate this guidance at the next safe point. Do not restart the task unless the guidance explicitly asks you to."].join(`
22
+ `)}function Hj($,j){if(!j)return;let J=0,B=!1,Z=$.sendUserMessage,X=$.on;X("tool_call",(Q)=>{let O=typeof Q.toolName==="string"?Q.toolName:"tool";if(J++,j.soft!==void 0&&J>=j.soft&&!B){B=!0;try{Z?.(o(j,J),{deliverAs:"steer"})}catch{}}if(!g(j,O,J))return;return{block:!0,reason:m(j,O,J)}})}function Vj($){let j=process.env[e]?.trim();if(!j)return;let J=$.sendUserMessage;if(typeof J!=="function")return;let B=!1,Z=!1,X=!1,Q=!1,O,Y,W=()=>{if(Z||X||!B)return;X=!0;try{let U=W$(j);for(let N=0;N<U.length;N++){let T$=U[N];try{J(Gj(T$),{deliverAs:"steer"})}catch{for(let M$ of U.slice(N))Y$(j,M$);break}}}finally{X=!1}},f=()=>{if(Q||Z)return;try{A.mkdirSync(j,{recursive:!0})}catch{return}Q=!0;try{O=A.watch(j,()=>W()),O.on("error",()=>{})}catch{O=void 0}Y=setInterval(W,250),Y.unref?.()},E=()=>{f(),B=!0,W();return},V=$.on;V("session_start",()=>f());for(let U of["message_start","message_update","message_end","tool_execution_start","tool_execution_end","turn_end"])V(U,E);V("session_shutdown",()=>{Z=!0;try{O?.close()}catch{}if(Y)clearInterval(Y)})}function Tj($){Vj($),Hj($,n(process.env[I]));let j=!1,J=!1,B=()=>{if(j)return;j=!0,v($,{includeIntercomFallback:!1})},Z=()=>{if(B(),J)return;J=!0,v($)},X=$.on;X("session_start",B);let Q=process.env[R],O=process.env[x];if(Q&&O){let Y=JSON.parse(A.readFileSync(O,"utf-8")),W={type:"object",properties:{value:Y},required:["value"],additionalProperties:!1},f=$.registerTool;f({name:"structured_output",label:"Structured Output",description:"Submit the required final structured output for this subagent step. This terminates the step.",parameters:W,async execute(E,V){let U=h(Y,V.value);if(U.status==="invalid")throw Error(`Structured output validation failed: ${U.message}`);return A.mkdirSync(K$.dirname(Q),{recursive:!0}),A.writeFileSync(Q,JSON.stringify(V.value),{mode:384}),{content:[{type:"text",text:"Structured output captured."}],details:{path:Q},terminate:!0}}})}X("context",(Y)=>{let W=Uj(Y.messages);if(W===Y.messages)return;return{messages:W}}),X("before_agent_start",async(Y)=>{Z();let W=process.env[e$]?.trim();if(W&&typeof $.setSessionName==="function")$.setSessionName(W);let f=P(s$),E=P(a$),V=P(c);if(f===void 0&&E===void 0&&V===void 0)return;let U=Oj(Y.systemPrompt,{inheritProjectContext:f??!0,inheritSkills:E??!0,fanoutChild:V===!0});if(U===Y.systemPrompt)return;return{systemPrompt:U}})}export{Xj as stripSubagentOrchestrationSkill,Bj as stripProjectContext,Uj as stripParentOnlySubagentMessages,Zj as stripInheritedSkills,Oj as rewriteSubagentPrompt,Gj as formatSteerMessage,Tj as default,e$ as SUBAGENT_INTERCOM_SESSION_NAME_ENV,U$ as CHILD_SUBAGENT_BOUNDARY_INSTRUCTIONS,G$ as CHILD_FANOUT_BOUNDARY_INSTRUCTIONS};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duckmind/dm-darwin-x64",
3
- "version": "0.49.8",
3
+ "version": "0.50.0",
4
4
  "description": "DuckMind (dm) binary payload for darwin x64",
5
5
  "license": "MIT",
6
6
  "os": [
@@ -1,23 +0,0 @@
1
- {
2
- "name": "dm-9router-ext",
3
- "version": "0.1.1",
4
- "description": "DM extension for 9router AI routing proxy instances",
5
- "keywords": [
6
- "duckmind",
7
- "dm",
8
- "dm-package",
9
- "dm-extension",
10
- "9router",
11
- "ai-router",
12
- "openai-proxy"
13
- ],
14
- "license": "MIT",
15
- "author": "Irfan Sofyana <mail@irfansp.dev>",
16
- "type": "module",
17
- "main": "./src/index.js",
18
- "dm": {
19
- "extensions": [
20
- "./src/index.js"
21
- ]
22
- }
23
- }
@@ -1,5 +0,0 @@
1
- import{existsSync as k,mkdirSync as T,readFileSync as N,writeFileSync as P}from"node:fs";import{homedir as _}from"node:os";import{dirname as R,join as p}from"node:path";import{Type as y}from"typebox";var C="http://localhost:20128",u=process.env.NINE_ROUTER_BASE_URL,M=process.env.NINE_ROUTER_API_KEY,b=p(_(),".dm","agent","9router-config.json"),S="9router-config",x="9router-last-route",v=["x-9router-model","x-routed-model","x-actual-model","x-upstream-model","x-provider-model"];function G(q){return q.replace(/\/$/,"")}function I(q){if(q.length<=8)return"●".repeat(q.length);return q.slice(0,4)+"●".repeat(Math.max(0,q.length-8))+q.slice(-4)}function A(q){return{baseUrl:G(u||q.baseUrl),apiKey:M||q.apiKey}}function E(){try{if(!k(b))return null;let q=JSON.parse(N(b,"utf8"));if(!q.baseUrl||typeof q.baseUrl!=="string")return null;return{baseUrl:G(q.baseUrl),apiKey:typeof q.apiKey==="string"&&q.apiKey.trim()?q.apiKey.trim():void 0}}catch(q){return console.error("[dm-9router-ext] Failed to load persisted config:",q),null}}function a(q){try{T(R(b),{recursive:!0}),P(b,`${JSON.stringify({baseUrl:q.baseUrl,apiKey:q.apiKey},null,2)}
2
- `,{mode:384})}catch(J){console.error("[dm-9router-ext] Failed to persist config:",J)}}function f(){return A(E()||{baseUrl:C,apiKey:void 0})}function g(q){for(let J of q.sessionManager.getEntries())if(J.type==="custom"&&J.customType===S){let Q=J.data;if(Q?.baseUrl)return A({baseUrl:G(Q.baseUrl),apiKey:void 0})}return null}function O(q,J){a(J),q.appendEntry(S,{baseUrl:J.baseUrl})}async function K(q,J){let Q={Accept:"application/json"};if(q.apiKey)Q.Authorization=`Bearer ${q.apiKey}`;let $=await fetch(`${q.baseUrl}/v1/models`,{method:"GET",headers:Q,signal:J});if(!$.ok){let w=await $.text().catch(()=>"");throw Error(`9router returned ${$.status}: ${w||$.statusText}`)}return(await $.json()).data||[]}async function h(q,J){try{let Q={};if(q.apiKey)Q.Authorization=`Bearer ${q.apiKey}`;let $=await fetch(`${q.baseUrl}/v1/models`,{method:"GET",headers:Q,signal:J});if($.ok)return{ok:!0};return{ok:!1,error:`HTTP ${$.status}: ${$.statusText}`}}catch(Q){return{ok:!1,error:Q instanceof Error?Q.message:String(Q)}}}function l(q){let J=q.owned_by==="combo";return{id:q.id,name:J?`\uD83D\uDD00 ${q.id}`:q.id,reasoning:!1,input:["text"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128000,maxTokens:4096,compat:{supportsDeveloperRole:!1,supportsReasoningEffort:!1}}}function L(q,J,Q){q.registerProvider("9router",{name:"9router",baseUrl:`${J.baseUrl}/v1`,apiKey:J.apiKey||"9router-no-api-key",api:"openai-completions",models:Q.map(l)})}function F(q){q.unregisterProvider("9router")}async function m(q){let J=f(),Q=[],$,B,w=!1;try{let V=await K(J);Q=V,w=!0,L(q,J,V)}catch(V){F(q)}q.on("session_start",async(V,W)=>{let X=g(W);if(!E()&&X){J=X,O(q,J);try{let j=await K(J,W.signal);Q=j,w=!0,L(q,J,j)}catch(j){w=!1,console.error("[dm-9router-ext] Failed to refresh migrated config:",j)}}if(w&&Q.length>0)W.ui.notify(`9router connected — ${Q.length} models available`,"info")}),q.on("after_provider_response",(V)=>{if(V.status>=400||B!=="9router")return;for(let W of v){let X=V.headers[W];if(X&&typeof X==="string"){$=X,q.appendEntry(x,{model:X,timestamp:Date.now()});break}}}),q.on("model_select",async(V)=>{if(B=V.model.provider,V.model.provider!=="9router")$=void 0}),q.registerCommand("9router-status",{description:"Show 9router connection status and configuration",handler:async(V,W)=>{let X=await h(J,W.signal),j=["\uD83D\uDD17 9router Status","",`Base URL: ${J.baseUrl}`,`API Key: ${J.apiKey?I(J.apiKey):"not set"}`,`Connection: ${X.ok?"\uD83D\uDFE2 connected":`\uD83D\uDD34 ${X.error||"disconnected"}`}`,`Models: ${Q.length} available`];if($)j.push(`Last routed: ${$}`);let D=Q.filter((Z)=>Z.owned_by==="combo"),Y=Q.filter((Z)=>Z.owned_by!=="combo");if(Y.length>0)j.push("",`Regular models: ${Y.length}`);if(D.length>0)j.push(`Combos: ${D.length}`);W.ui.notify(j.join(`
3
- `),X.ok?"info":"warning")}}),q.registerCommand("9router-models",{description:"Browse 9router available models and combos",handler:async(V,W)=>{if(Q.length===0){W.ui.notify("No 9router models discovered. Check connection with /9router-status","warning");return}let X=Q.map((Z)=>{let H=Z.owned_by==="combo";return{value:Z.id,label:H?`\uD83D\uDD00 ${Z.id}`:Z.id}}),j=await W.ui.select("Select a 9router model to use:",X.map((Z)=>Z.label));if(!j)return;let D=X.find((Z)=>Z.label===j)?.value;if(!D)return;let Y=`9router/${D}`;W.ui.notify(`Switching to ${Y}...`,"info"),q.sendUserMessage(`/model ${Y}`,{deliverAs:"followUp"})}}),q.registerCommand("9router-config",{description:"Configure 9router base URL and API key",handler:async(V,W)=>{let j=(await h(J,W.signal)).ok?"\uD83D\uDFE2 connected":"\uD83D\uDD34 disconnected",D=J.apiKey?"●●●●●●●● (set)":"not set",Y=["Current config:",` Base URL: ${J.baseUrl}`,` API Key: ${J.apiKey?I(J.apiKey):"not set"}`,` Status: ${j}`,"","Enter new values (press Enter to keep current):"].join(`
4
- `);W.ui.notify(Y,"info");let Z=await W.ui.input("Base URL",J.baseUrl);if(Z===void 0)return;let H=await W.ui.input("API key (press Enter to keep current, leave blank to remove):",J.apiKey||"");if(H===void 0)return;J={baseUrl:G(Z),apiKey:H.trim()||void 0},O(q,J);try{let z=await K(J,W.signal);Q=z,w=!0,L(q,J,z),W.ui.notify(`9router updated — ${z.length} models at ${J.baseUrl}`,"info")}catch(z){w=!1,F(q);let U=z instanceof Error?z.message:String(z);W.ui.notify(`Failed to connect: ${U}`,"error")}}}),q.registerCommand("9router-reload",{description:"Reload models from 9router",handler:async(V,W)=>{try{let X=await K(J,W.signal);Q=X,w=!0,L(q,J,X),W.ui.notify(`9router reloaded — ${X.length} models`,"info")}catch(X){w=!1,F(q);let j=X instanceof Error?X.message:String(X);W.ui.notify(`Reload failed: ${j}`,"error")}}}),q.registerTool({name:"ninerouter_status",label:"9router Status",description:"Check 9router connection status and list available models",parameters:y.Object({}),async execute(V,W,X,j,D){let Y=await h(J,D.signal),Z=Q.filter((z)=>z.owned_by==="combo"),H=Q.filter((z)=>z.owned_by!=="combo");return{content:[{type:"text",text:[`9router: ${Y.ok?"connected":`disconnected (${Y.error})`}`,`Base URL: ${J.baseUrl}`,`Total models: ${Q.length}`,` Regular: ${H.length}`,` Combos: ${Z.length}`,$?`Last routed model: ${$}`:""].filter(Boolean).join(`
5
- `)}],details:{connected:Y.ok,baseUrl:J.baseUrl,modelCount:Q.length,regularCount:H.length,comboCount:Z.length,lastRoutedModel:$,models:Q.map((z)=>z.id)}}}})}export{m as default};