@duckmind/dm-darwin-x64 0.49.0 → 0.49.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dm +0 -0
- package/extensions/.dm-extensions.json +14 -4
- package/extensions/dm-subagents/src/extension/doctor.js +10 -10
- package/extensions/dm-subagents/src/extension/fanout-child.js +97 -97
- package/extensions/dm-subagents/src/extension/index.js +121 -121
- package/extensions/dm-subagents/src/extension/rpc.js +5 -5
- package/extensions/dm-subagents/src/extension/schemas.js +1 -1
- package/extensions/dm-subagents/src/extension/tool-description.js +2 -2
- package/extensions/dm-subagents/src/intercom/native-supervisor-channel.js +5 -5
- package/extensions/dm-subagents/src/runs/background/async-execution.js +19 -19
- package/extensions/dm-subagents/src/runs/background/async-job-tracker.js +9 -9
- package/extensions/dm-subagents/src/runs/background/async-resume.js +5 -5
- package/extensions/dm-subagents/src/runs/background/async-status.js +8 -8
- package/extensions/dm-subagents/src/runs/background/fleet-view.js +13 -13
- package/extensions/dm-subagents/src/runs/background/result-watcher.js +5 -5
- package/extensions/dm-subagents/src/runs/background/run-id-resolver.js +3 -3
- package/extensions/dm-subagents/src/runs/background/run-status.js +19 -19
- package/extensions/dm-subagents/src/runs/background/stale-run-reconciler.js +7 -7
- package/extensions/dm-subagents/src/runs/background/subagent-runner.js +35 -35
- package/extensions/dm-subagents/src/runs/background/wait.js +7 -7
- package/extensions/dm-subagents/src/runs/foreground/chain-execution.js +32 -32
- package/extensions/dm-subagents/src/runs/foreground/execution.js +26 -26
- package/extensions/dm-subagents/src/runs/foreground/subagent-executor.js +96 -96
- package/extensions/dm-subagents/src/runs/shared/dm-args.js +1 -1
- package/extensions/dm-subagents/src/runs/shared/nested-events.js +6 -6
- package/extensions/dm-subagents/src/runs/shared/subagent-prompt-runtime.js +13 -13
- package/extensions/dm-subagents/src/shared/fork-context.js +4 -4
- package/package.json +1 -1
- package/extensions/dm-caveman/LICENSE +0 -21
- package/extensions/dm-cli-anything/LICENSE +0 -201
- package/extensions/dm-goal/LICENSE +0 -21
- package/extensions/dm-grill-me/LICENSE +0 -21
- package/extensions/dm-subagents/banner.png +0 -0
- package/extensions/dm-tasks/LICENSE +0 -21
- package/extensions/dm-usage/LICENSE +0 -21
- package/extensions/dm-usage/insights-screenshot.png +0 -0
- package/extensions/dm-usage/screenshot.png +0 -0
- package/extensions/greedysearch-dm/LICENSE +0 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as Y from"node:fs";import*as P from"node:os";import*as Q from"node:path";import{fileURLToPath as Af}from"node:url";import*as g from"node:path";var qf=128,Mf=4;function Kf(f){return typeof f==="string"&&f.length>0&&f.length<=qf&&!g.isAbsolute(f)&&!f.includes("/")&&!f.includes("\\")&&!f.includes("..")}function h(f){return typeof f==="number"&&Number.isFinite(f)?f:void 0}function u(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)}:{},...u($.agent,128)?{agent:u($.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 Lf}from"node:crypto";import*as L from"node:fs";import*as K from"node:os";import*as Z from"node:path";import*as E from"node:fs";import*as C from"node:os";import*as M from"node:path";import*as y from"node:os";import*as H 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 W of["USERNAME","USER","LOGNAME"]){let G=j[W];if(G)return`user-${N(G)}`}let T=f&&Object.hasOwn(f,"userInfo")?f.userInfo:y.userInfo;try{let W=T?.().username;if(W)return`user-${N(W)}`}catch{}let B=j.USERPROFILE??j.HOME;if(B)return`home-${N(B)}`;let U=f&&Object.hasOwn(f,"homedir")?f.homedir:y.homedir;try{let W=U?.();if(W)return`home-${N(W)}`}catch{}return"shared"}var c=H.join(y.tmpdir(),`dm-subagents-${Gf()}`),_j=H.join(c,"async-subagent-results"),Qj=H.join(c,"async-subagent-runs"),Sf=H.join(c,"chain-runs"),Yj=H.join(c,"artifacts");var Rf=".dm",Vf="@duckmind/dm-coding-agent",yf="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!==Vf)return;return p(j.piConfig?.configDir)}catch{return}}function Hf(f=process.argv[1],j=process.env[yf]){let $=d(j);if($)return $;if(!f)return;try{let T=M.dirname(E.realpathSync(f));while(T!==M.dirname(T)){let B=d(T);if(B)return B;T=M.dirname(T)}}catch{}return}function cf(f,j,$){return(f&&typeof f==="object"?p(f.CONFIG_DIR_NAME):void 0)??Hf(j,$)??Rf}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 Cf=1,bf=604800000,s=new Set(["read","bash","edit","write","grep","find","ls","mcp"]),e=Z.join(K.homedir(),".config","mcp","mcp.json"),a={cursor:[Z.join(K.homedir(),".cursor","mcp.json")],"claude-code":[Z.join(K.homedir(),".claude","mcp.json"),Z.join(K.homedir(),".claude.json"),Z.join(K.homedir(),".claude","claude_desktop_config.json")],"claude-desktop":[Z.join(K.homedir(),"Library","Application Support","Claude","claude_desktop_config.json")],codex:[Z.join(K.homedir(),".codex","config.json")],windsurf:[Z.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,uf($.settings?.toolPrefix),f)}catch{return[]}}function Ff(){let f=Z.join(z(),"mcp-cache.json"),j;try{j=JSON.parse(L.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=Z.join(z(),"mcp.json"),$=Z.resolve(f,".mcp.json"),T=Z.resolve(I(f),"mcp.json"),B=[];if(e!==j)B.push(e);if(B.push(j),$!==j)B.push($);if(T!==j&&T!==$)B.push(T);return B}function wf(f){let j;try{j=JSON.parse(L.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)=>gf(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 B=of(T,j);if(!B)continue;let U;try{U=JSON.parse(L.readFileSync(B,"utf-8"))}catch{continue}for(let[W,G]of Object.entries(Df(U,T)))if(!$[W])$[W]=G}return{imports:f.imports,settings:f.settings,mcpServers:{...$,...f.mcpServers}}}function of(f,j){for(let $ of a[f]){let T=$.startsWith(".")?Z.resolve(j,$):$;if(L.existsSync(T))return T}return null}function Df(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 B=[],U=new Set,{servers:W,tools:G}=Pf(T);for(let[_,J]of Object.entries(f.mcpServers)){let R=j.servers[_];if(!mf(R,J))continue;let S=W.has(_)?!0:G.get(_);if(!S)continue;for(let X of Array.isArray(R.tools)?R.tools:[]){if(typeof X?.name!=="string"||!X.name)continue;if(S!==!0&&!S.has(X.name))continue;if(l(X.name,_,$,J.excludeTools))continue;let q=F(X.name,_,$);if(s.has(q)||U.has(q))continue;U.add(q),B.push(q)}if(J.exposeResources===!1)continue;for(let X of Array.isArray(R.resources)?R.resources:[]){if(typeof X?.name!=="string"||!X.name||typeof X.uri!=="string"||!X.uri)continue;let q=`get_${rf(X.name)}`;if(S!==!0&&!S.has(q))continue;if(l(q,_,$,J.excludeTools))continue;let V=F(q,_,$);if(s.has(V)||U.has(V))continue;U.add(V),B.push(V)}}return B}function Pf(f){let j=new Set,$=new Map;for(let T of f)if(T=T.replace(/\/+$/,""),T.includes("/")){let[B,U]=T.split("/",2);if(B&&U){if(!$.has(B))$.set(B,new Set);$.get(B).add(U)}else if(B)j.add(B)}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 Lf("sha256").update(n(j)).digest("hex")}function uf(f){return f==="none"||f==="short"||f==="server"?f:"server"}function gf(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 B=new Set([b(f),b(F(f,j,$)),b(F(f,j,"server")),b(F(f,j,"short"))]);return T.some((U)=>typeof U==="string"&&B.has(b(U)))}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 Z.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 Pj}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 tf=["off","minimal","low","medium","high","xhigh"],sf=8000,Bf=Q.join(Q.dirname(Af(import.meta.url)),"subagent-prompt-runtime.ts"),ef=Q.join(Q.dirname(Af(import.meta.url)),"..","..","extension","fanout-child.ts"),lf="DM_SUBAGENT_CHILD",af="DM_SUBAGENT_ORCHESTRATOR_TARGET",fj="DM_SUBAGENT_ORCHESTRATOR_SESSION_ID",jj="DM_SUBAGENT_SUPERVISOR_CHANNEL_DIR",Uf="DM_SUBAGENT_RUN_ID",$j="DM_SUBAGENT_CHILD_AGENT",Tj="DM_SUBAGENT_CHILD_INDEX",Jj="DM_SUBAGENT_FANOUT_CHILD",o="DM_SUBAGENT_PARENT_EVENT_SINK",Of="DM_SUBAGENT_PARENT_CONTROL_INBOX",D="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",Bj="DM_SUBAGENT_STEER_INBOX";function Yf(f){return f.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function Uj(f,j,$){return Q.join(c,"supervisor-channels",`${Yf(f)}-${Yf(j)}-${$}`)}function Oj(f,j,$=!1){if(!f||!j)return f;let T=f.lastIndexOf(":");if(T!==-1&&tf.includes(f.substring(T+1)))return $?`${f.slice(0,T)}:${j}`:f;return`${f}:${j}`}function tj(f){let j=[...f.baseArgs];if(f.sessionFile)Y.mkdirSync(Q.dirname(f.sessionFile),{recursive:!0}),j.push("--session",f.sessionFile);else{if(!f.sessionEnabled)j.push("--no-session");if(f.sessionDir)Y.mkdirSync(f.sessionDir,{recursive:!0}),j.push("--session-dir",f.sessionDir)}let $=Oj(f.model,f.thinking);if($)j.push("--model",$);let T=f.tools?.filter((O)=>!(O.includes("/")||O.endsWith(".ts")||O.endsWith(".js")))??[],B=f.requireReadTool&&f.tools?.length&&!T.includes("read")?["read",...T]:T,U=B.includes("subagent"),W=[];if(f.tools?.length){let O=[...B];for(let A of f.tools)if(!B.includes(A)&&(A.includes("/")||A.endsWith(".ts")||A.endsWith(".js")))W.push(A);if(O.length>0){if(f.mcpDirectTools?.length)O.push(...ff(f.mcpDirectTools,f.cwd));j.push("--tools",O.join(","))}}let G=U?[Bf,ef]:[Bf];if(f.extensions!==void 0){j.push("--no-extensions");for(let O of[...new Set([...G,...W,...f.extensions,...f.subagentOnlyExtensions??[]])])j.push("--extension",O)}else for(let O of[...new Set([...G,...W,...f.subagentOnlyExtensions??[]])])j.push("--extension",O);if(!f.inheritSkills)j.push("--no-skills");let _;if(f.systemPrompt!==void 0&&f.systemPrompt!==null){_=Y.mkdtempSync(Q.join(P.tmpdir(),"dm-subagent-"));let O=(f.promptFileStem??"prompt").replace(/[^\w.-]/g,"_"),A=Q.join(_,`${O}.md`);Y.writeFileSync(A,f.systemPrompt,{mode:384}),j.push(f.systemPromptMode==="replace"?"--system-prompt":"--append-system-prompt",A)}if(f.task.length>sf){if(!_)_=Y.mkdtempSync(Q.join(P.tmpdir(),"dm-subagent-"));let O=Q.join(_,"task.md");Y.writeFileSync(O,`Task: ${f.task}`,{mode:384}),j.push(`@${O}`)}else j.push(`Task: ${f.task}`);let J={};J[lf]="1",J[Jj]=U?"1":"0";let R=Boolean(process.env[o]&&process.env[D]&&process.env[v]),S=f.parentRunId??f.runId??(R?process.env[Uf]:void 0)??process.env[Wf]??"",X=f.parentChildIndex!==void 0?String(f.parentChildIndex):f.childIndex!==void 0?String(f.childIndex):process.env[Xf]??"",q=Number(process.env[Zf]),V=f.parentDepth??(R&&Number.isFinite(q)?q+1:1),Ef=f.parentPath??[...w(process.env[_f]),...S?[{runId:S,...X&&/^\d+$/.test(X)?{stepIndex:Number(X)}:{},...f.childAgentName?{agent:f.childAgentName}:{}}]:[]];if(J[o]=U?f.parentEventSink??process.env[o]??"":"",J[Of]=U?f.parentControlInbox??process.env[Of]??"":"",J[D]=U?f.parentRootRunId??process.env[D]??f.runId??"":"",J[Wf]=U?S:"",J[Xf]=U?X:"",J[Zf]=U?String(V):"",J[_f]=U?r(Ef):"",J[v]=U?f.parentCapabilityToken??process.env[v]??"":"",J.DM_SUBAGENT_INHERIT_PROJECT_CONTEXT=f.inheritProjectContext?"1":"0",J.DM_SUBAGENT_INHERIT_SKILLS=f.inheritSkills?"1":"0",f.intercomSessionName)J.DM_SUBAGENT_INTERCOM_SESSION_NAME=f.intercomSessionName;if(f.orchestratorIntercomTarget)J[af]=f.orchestratorIntercomTarget;if(f.parentSessionId)J[fj]=f.parentSessionId;if(f.orchestratorIntercomTarget&&f.parentSessionId&&f.runId&&f.childAgentName){let O=f.childIndex??0,A=Uj(f.runId,f.childAgentName,O);Y.mkdirSync(Q.join(A,"requests"),{recursive:!0}),Y.mkdirSync(Q.join(A,"replies"),{recursive:!0}),J[jj]=A}if(f.runId)J[Uf]=f.runId;if(f.childAgentName)J[$j]=f.childAgentName;if(f.childIndex!==void 0)J[Tj]=String(f.childIndex);if(f.mcpDirectTools?.length)J.MCP_DIRECT_TOOLS=f.mcpDirectTools.join(",");else J.MCP_DIRECT_TOOLS="__none__";if(f.structuredOutput)J[$f]=f.structuredOutput.outputPath,J[jf]=f.structuredOutput.schemaPath;if(f.steerInboxDir)J[Bj]=f.steerInboxDir;let m=Jf(f.toolBudget);if(m)J[Tf]=m;return J[Qf]=f.parentSessionId??process.env[Qf]??"",{args:j,env:J,tempDir:_}}var sj=w;function ej(f){if(!f)return;try{Y.rmSync(f,{recursive:!0,force:!0})}catch{}}export{sj as parseParentPathEnv,ej as cleanupTempDir,tj as buildPiArgs,Oj as applyThinkingSuffix,jj as SUBAGENT_SUPERVISOR_CHANNEL_DIR_ENV,Bj as SUBAGENT_STEER_INBOX_ENV,Uf as SUBAGENT_RUN_ID_ENV,Qf as SUBAGENT_PARENT_SESSION_ENV,Wf as SUBAGENT_PARENT_RUN_ID_ENV,D as SUBAGENT_PARENT_ROOT_RUN_ID_ENV,_f as SUBAGENT_PARENT_PATH_ENV,o 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,af as SUBAGENT_ORCHESTRATOR_TARGET_ENV,fj as SUBAGENT_ORCHESTRATOR_SESSION_ID_ENV,Jj as SUBAGENT_FANOUT_CHILD_ENV,Tj as SUBAGENT_CHILD_INDEX_ENV,lf as SUBAGENT_CHILD_ENV,$j as SUBAGENT_CHILD_AGENT_ENV};
|
|
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,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
|
|
2
|
-
`,{mode:384}),{rootRunId:$,eventSink:Z,controlInbox:
|
|
3
|
-
`)){let j=
|
|
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(`
|
|
4
4
|
`).slice(0,$.endsWith(`
|
|
5
|
-
`)?void 0:-1).map((j)=>j.trim()?
|
|
6
|
-
`;if(Buffer.byteLength(Z,"utf-8")>
|
|
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(`
|
|
7
7
|
`)?X.split(`
|
|
8
|
-
`).filter((q)=>q.trim()):[X];for(let q of K){let
|
|
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};
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import*as
|
|
2
|
-
`).trimEnd()}function
|
|
3
|
-
${
|
|
4
|
-
`),
|
|
5
|
-
`),
|
|
6
|
-
`),
|
|
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$=`
|
|
7
7
|
|
|
8
8
|
# Project Context
|
|
9
9
|
|
|
10
10
|
Project-specific instructions and guidelines:
|
|
11
11
|
|
|
12
|
-
`,
|
|
12
|
+
`,h=`
|
|
13
13
|
|
|
14
|
-
The following skills provide specialized instructions for specific tasks.`,
|
|
15
|
-
Current date:`;function
|
|
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,`
|
|
16
16
|
|
|
17
|
-
`).replace(/[ \t]*<skill>\s*[\s\S]*?<\/skill>\s*/g,(j)
|
|
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]?`
|
|
18
18
|
|
|
19
|
-
${
|
|
19
|
+
${a$}`:"";return`${B}${Z}
|
|
20
20
|
|
|
21
|
-
${J}`}function
|
|
22
|
-
`)}function
|
|
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};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{randomUUID as k}from"node:crypto";import*as o from"node:fs";import*as F from"node:path";import{SessionManager as
|
|
2
|
-
`).filter((n)=>n.trim().length>0).map((n,r)=>{try{return JSON.parse(n)}catch(
|
|
1
|
+
import{randomUUID as k}from"node:crypto";import*as o from"node:fs";import*as F from"node:path";import{SessionManager as w}from"@duckmind/dm-coding-agent";function v(e){return e==="fork"?"fork":"fresh"}function B(e,t){if(!e||!t||typeof t!=="object"||!("type"in t))return!1;let n=typeof e.provider==="string"?e.provider.toLowerCase():"",r=typeof e.api==="string"?e.api.toLowerCase():"",i=typeof e.model==="string"?e.model.toLowerCase():"",c=n==="anthropic"||r==="anthropic-messages"||i.startsWith("anthropic/");if(t.type==="redacted_thinking")return!0;if(t.type!=="thinking"||!c)return!1;let u="thinkingSignature"in t?t.thinkingSignature:("signature"in t)?t.signature:void 0;return t.redacted===!0||typeof u==="string"&&u.length>0}function I(e){let t=new Set(e.map((n)=>n.id).filter((n)=>typeof n==="string"));for(let n=0;n<100;n++){let r=k().slice(0,8);if(!t.has(r))return r}return k()}function O(e){let t=e[e.length-1];if(t?.type==="thinking_level_change"&&t.thinkingLevel==="off")return;let n=[...e].reverse().find((r)=>typeof r.id==="string");e.push({type:"thinking_level_change",id:I(e),parentId:n?.id??null,timestamp:new Date().toISOString(),thinkingLevel:"off"})}function m(e){let t=!1;for(let n of e){if(n.type!=="message"||n.message?.role!=="assistant"||!Array.isArray(n.message.content))continue;let r=n.message.content.filter((i)=>!B(n.message,i));if(r.length===n.message.content.length)continue;n.message.content=r,t=!0}if(t)O(e);return t}function C(e){return o.readFileSync(e,"utf-8").split(`
|
|
2
|
+
`).filter((n)=>n.trim().length>0).map((n,r)=>{try{return JSON.parse(n)}catch(i){let c=i instanceof Error?i:Error(String(i));throw Error(`Unable to inspect forked session ${e}: invalid JSONL on line ${r+1}: ${c.message}`,{cause:c})}})}function L(e,t,n={}){if(v(t)!=="fork")return{sessionFileForIndex:()=>{return},thinkingOverrideForIndex:()=>{return}};let r=e.getSessionFile();if(!r)throw Error("Forked subagent context requires a persisted parent session.");let i=e.getLeafId();if(!i)throw Error("Forked subagent context requires a current leaf to fork from.");let u=n.openSession??e.openSession??((a,l)=>w.open(a,l)),x=e.getSessionDir?.(),p=new Map,S=(a=0)=>{let l=p.get(a);if(l)return l;try{if(!o.existsSync(r))throw Error(`Parent session file does not exist: ${r}. DM has not persisted enough history to fork yet.`);let f;try{let s=typeof e.createDetachedBranchedSession==="function"?e.createDetachedBranchedSession(i):(f=u(r,x)).createBranchedSession(i);if(!s)throw Error("Session manager did not return a forked session file.");let h;if(!o.existsSync(s)){let d=f?.getHeader?.(),g=f?.getEntries?.();if(!d||!g)throw Error(`Session manager returned a forked session file that does not exist and cannot be persisted by fallback: ${s}`);if(m(g))h="off";o.mkdirSync(F.dirname(s),{recursive:!0}),o.writeFileSync(s,`${[d,...g].map((E)=>JSON.stringify(E)).join(`
|
|
3
3
|
`)}
|
|
4
|
-
`,"utf-8")}else{let d=
|
|
4
|
+
`,"utf-8")}else{let d=C(s);if(m(d))h="off",o.writeFileSync(s,`${d.map((g)=>JSON.stringify(g)).join(`
|
|
5
5
|
`)}
|
|
6
|
-
`,"utf-8")}let y={sessionFile:
|
|
6
|
+
`,"utf-8")}let y={sessionFile:s,...h?{thinkingOverride:h}:{}};return p.set(a,y),y}finally{f?.dispose?.()}}catch(f){let s=f instanceof Error?f:Error(String(f));throw Error(`Failed to create forked subagent session: ${s.message}`,{cause:s})}};return{sessionFileForIndex(a=0){return S(a).sessionFile},thinkingOverrideForIndex(a=0){return S(a).thinkingOverride}}}export{v as resolveSubagentContext,L as createForkContextResolver};
|
package/package.json
CHANGED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|