@duckmind/dm-darwin-x64 0.43.2 → 0.43.8

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 (256) hide show
  1. package/dm +0 -0
  2. package/extensions/.dm-extensions.json +242 -49
  3. package/extensions/dm-9router-ext/package.json +2 -19
  4. package/extensions/dm-9router-ext/src/index.js +5 -0
  5. package/extensions/dm-ask-user/index.js +10 -0
  6. package/extensions/dm-ask-user/package.json +1 -21
  7. package/extensions/dm-cli-anything/package.json +0 -6
  8. package/extensions/dm-context/package.json +2 -12
  9. package/extensions/dm-context/src/context.js +1 -0
  10. package/extensions/dm-context/src/index.js +7 -0
  11. package/extensions/dm-context/src/utils.js +1 -0
  12. package/extensions/dm-cua/package.json +0 -7
  13. package/extensions/dm-fff/package.json +1 -28
  14. package/extensions/dm-fff/src/index.js +15 -0
  15. package/extensions/dm-fff/src/query.js +1 -0
  16. package/extensions/dm-goal/package.json +2 -31
  17. package/extensions/dm-goal/src/goal.js +43 -0
  18. package/extensions/dm-grill-me/index.js +174 -0
  19. package/extensions/dm-grill-me/package.json +1 -26
  20. package/extensions/dm-image2/package.json +0 -7
  21. package/extensions/dm-subagents/package.json +1 -32
  22. package/extensions/dm-subagents/src/agents/agent-management.js +37 -0
  23. package/extensions/dm-subagents/src/agents/agent-memory.js +6 -0
  24. package/extensions/dm-subagents/src/agents/agent-scope.js +1 -0
  25. package/extensions/dm-subagents/src/agents/agent-selection.js +1 -0
  26. package/extensions/dm-subagents/src/agents/agent-serializer.js +7 -0
  27. package/extensions/dm-subagents/src/agents/agents.js +11 -0
  28. package/extensions/dm-subagents/src/agents/chain-serializer.js +12 -0
  29. package/extensions/dm-subagents/src/agents/frontmatter.js +6 -0
  30. package/extensions/dm-subagents/src/agents/identity.js +1 -0
  31. package/extensions/dm-subagents/src/agents/proactive-skills.js +1 -0
  32. package/extensions/dm-subagents/src/agents/skills.js +6 -0
  33. package/extensions/dm-subagents/src/extension/config.js +2 -0
  34. package/extensions/dm-subagents/src/extension/control-notices.js +4 -0
  35. package/extensions/dm-subagents/src/extension/doctor.js +16 -0
  36. package/extensions/dm-subagents/src/extension/fanout-child.js +231 -0
  37. package/extensions/dm-subagents/src/extension/index.js +367 -0
  38. package/extensions/dm-subagents/src/extension/rpc.js +8 -0
  39. package/extensions/dm-subagents/src/extension/schemas.js +1 -0
  40. package/extensions/dm-subagents/src/extension/{tool-description.ts → tool-description.js} +6 -126
  41. package/extensions/dm-subagents/src/intercom/intercom-bridge.js +13 -0
  42. package/extensions/dm-subagents/src/intercom/native-supervisor-channel.js +5 -0
  43. package/extensions/dm-subagents/src/intercom/result-intercom.js +3 -0
  44. package/extensions/dm-subagents/src/profiles/profiles.js +3 -0
  45. package/extensions/dm-subagents/src/runs/background/async-execution.js +46 -0
  46. package/extensions/dm-subagents/src/runs/background/async-job-tracker.js +14 -0
  47. package/extensions/dm-subagents/src/runs/background/async-resume.js +8 -0
  48. package/extensions/dm-subagents/src/runs/background/async-status.js +12 -0
  49. package/extensions/dm-subagents/src/runs/background/chain-append.js +2 -0
  50. package/extensions/dm-subagents/src/runs/background/chain-root-attachment.js +1 -0
  51. package/extensions/dm-subagents/src/runs/background/completion-batcher.js +1 -0
  52. package/extensions/dm-subagents/src/runs/background/completion-dedupe.js +1 -0
  53. package/extensions/dm-subagents/src/runs/background/control-channel.js +1 -0
  54. package/extensions/dm-subagents/src/runs/background/fleet-view.js +17 -0
  55. package/extensions/dm-subagents/src/runs/background/notify.js +3 -0
  56. package/extensions/dm-subagents/src/runs/background/parallel-groups.js +1 -0
  57. package/extensions/dm-subagents/src/runs/background/result-watcher.js +8 -0
  58. package/extensions/dm-subagents/src/runs/background/run-id-resolver.js +4 -0
  59. package/extensions/dm-subagents/src/runs/background/run-status.js +23 -0
  60. package/extensions/dm-subagents/src/runs/background/scheduled-runs.js +4 -0
  61. package/extensions/dm-subagents/src/runs/background/stale-run-reconciler.js +11 -0
  62. package/extensions/dm-subagents/src/runs/background/subagent-runner.js +78 -0
  63. package/extensions/dm-subagents/src/runs/background/top-level-async.js +1 -0
  64. package/extensions/dm-subagents/src/runs/background/wait.js +11 -0
  65. package/extensions/dm-subagents/src/runs/foreground/chain-clarify.js +12 -0
  66. package/extensions/dm-subagents/src/runs/foreground/chain-execution.js +102 -0
  67. package/extensions/dm-subagents/src/runs/foreground/execution.js +51 -0
  68. package/extensions/dm-subagents/src/runs/foreground/subagent-executor.js +228 -0
  69. package/extensions/dm-subagents/src/runs/shared/acceptance.js +3 -0
  70. package/extensions/dm-subagents/src/runs/shared/chain-outputs.js +1 -0
  71. package/extensions/dm-subagents/src/runs/shared/completion-guard.js +3 -0
  72. package/extensions/dm-subagents/src/runs/shared/dm-args.js +1 -0
  73. package/extensions/dm-subagents/src/runs/shared/dm-spawn.js +1 -0
  74. package/extensions/dm-subagents/src/runs/shared/dynamic-fanout.js +1 -0
  75. package/extensions/dm-subagents/src/runs/shared/long-running-guard.js +1 -0
  76. package/extensions/dm-subagents/src/runs/shared/mcp-direct-tool-allowlist.js +1 -0
  77. package/extensions/dm-subagents/src/runs/shared/model-fallback.js +1 -0
  78. package/extensions/dm-subagents/src/runs/shared/model-scope.js +1 -0
  79. package/extensions/dm-subagents/src/runs/shared/nested-events.js +8 -0
  80. package/extensions/dm-subagents/src/runs/shared/nested-path.js +1 -0
  81. package/extensions/dm-subagents/src/runs/shared/nested-render.js +1 -0
  82. package/extensions/dm-subagents/src/runs/shared/parallel-utils.js +5 -0
  83. package/extensions/dm-subagents/src/runs/shared/run-history.js +5 -0
  84. package/extensions/dm-subagents/src/runs/shared/single-output.js +14 -0
  85. package/extensions/dm-subagents/src/runs/shared/structured-output.js +1 -0
  86. package/extensions/dm-subagents/src/runs/shared/subagent-control.js +5 -0
  87. package/extensions/dm-subagents/src/runs/shared/subagent-prompt-runtime.js +22 -0
  88. package/extensions/dm-subagents/src/runs/shared/tool-budget.js +1 -0
  89. package/extensions/dm-subagents/src/runs/shared/turn-budget.js +7 -0
  90. package/extensions/dm-subagents/src/runs/shared/workflow-graph.js +1 -0
  91. package/extensions/dm-subagents/src/runs/shared/worktree.js +3 -0
  92. package/extensions/dm-subagents/src/shared/artifacts.js +2 -0
  93. package/extensions/dm-subagents/src/shared/atomic-json.js +1 -0
  94. package/extensions/dm-subagents/src/shared/child-transcript.js +5 -0
  95. package/extensions/dm-subagents/src/shared/file-coalescer.js +1 -0
  96. package/extensions/dm-subagents/src/shared/fork-context.js +6 -0
  97. package/extensions/dm-subagents/src/shared/formatters.js +9 -0
  98. package/extensions/dm-subagents/src/shared/jsonl-writer.js +2 -0
  99. package/extensions/dm-subagents/src/shared/model-info.js +1 -0
  100. package/extensions/dm-subagents/src/shared/post-exit-stdio-guard.js +1 -0
  101. package/extensions/dm-subagents/src/shared/session-identity.js +1 -0
  102. package/extensions/dm-subagents/src/shared/session-tokens.js +2 -0
  103. package/extensions/dm-subagents/src/shared/settings.js +23 -0
  104. package/extensions/dm-subagents/src/shared/status-format.js +1 -0
  105. package/extensions/dm-subagents/src/shared/types.js +8 -0
  106. package/extensions/dm-subagents/src/shared/utils.js +2 -0
  107. package/extensions/dm-subagents/src/slash/prompt-template-bridge.js +1 -0
  108. package/extensions/dm-subagents/src/slash/prompt-workflows.js +7 -0
  109. package/extensions/dm-subagents/src/slash/slash-bridge.js +1 -0
  110. package/extensions/dm-subagents/src/slash/slash-commands.js +38 -0
  111. package/extensions/dm-subagents/src/slash/slash-live-state.js +6 -0
  112. package/extensions/dm-subagents/src/tui/render-helpers.js +1 -0
  113. package/extensions/dm-subagents/src/tui/render.js +4 -0
  114. package/extensions/dm-tasks/package.json +1 -30
  115. package/extensions/dm-tasks/src/auto-clear.js +1 -0
  116. package/extensions/dm-tasks/src/index.js +212 -0
  117. package/extensions/dm-tasks/src/process-tracker.js +1 -0
  118. package/extensions/dm-tasks/src/task-store.js +1 -0
  119. package/extensions/dm-tasks/src/tasks-config.js +1 -0
  120. package/extensions/dm-tasks/src/types.js +0 -0
  121. package/extensions/dm-tasks/src/ui/settings-menu.js +1 -0
  122. package/extensions/dm-tasks/src/ui/task-widget.js +1 -0
  123. package/extensions/dm-usage/index.js +9 -0
  124. package/extensions/dm-usage/package.json +1 -18
  125. package/extensions/greedysearch-dm/bin/search.mjs +135 -135
  126. package/extensions/greedysearch-dm/index.js +20 -0
  127. package/extensions/greedysearch-dm/package.json +1 -22
  128. package/extensions/greedysearch-dm/src/formatters/results.js +8 -0
  129. package/extensions/greedysearch-dm/src/formatters/sources.js +1 -0
  130. package/extensions/greedysearch-dm/src/formatters/synthesis.js +1 -0
  131. package/extensions/greedysearch-dm/src/search/engines.mjs +9 -9
  132. package/extensions/greedysearch-dm/src/search/paths.mjs +1 -0
  133. package/extensions/greedysearch-dm/src/search/research.mjs +100 -100
  134. package/extensions/greedysearch-dm/src/search/synthesis-runner.mjs +10 -10
  135. package/extensions/greedysearch-dm/src/tools/greedy-search-handler.js +20 -0
  136. package/extensions/greedysearch-dm/src/tools/shared.js +9 -0
  137. package/extensions/greedysearch-dm/src/types.js +0 -0
  138. package/extensions/greedysearch-dm/src/utils/helpers.js +1 -0
  139. package/package.json +1 -1
  140. package/extensions/dm-9router-ext/src/index.ts +0 -541
  141. package/extensions/dm-ask-user/index.ts +0 -857
  142. package/extensions/dm-context/src/context.ts +0 -158
  143. package/extensions/dm-context/src/index.ts +0 -439
  144. package/extensions/dm-context/src/utils.ts +0 -6
  145. package/extensions/dm-fff/src/index.ts +0 -1023
  146. package/extensions/dm-fff/src/query.ts +0 -87
  147. package/extensions/dm-goal/src/goal.ts +0 -1073
  148. package/extensions/dm-grill-me/index.ts +0 -1085
  149. package/extensions/dm-subagents/src/agents/agent-management.ts +0 -1052
  150. package/extensions/dm-subagents/src/agents/agent-memory.ts +0 -254
  151. package/extensions/dm-subagents/src/agents/agent-scope.ts +0 -6
  152. package/extensions/dm-subagents/src/agents/agent-selection.ts +0 -25
  153. package/extensions/dm-subagents/src/agents/agent-serializer.ts +0 -121
  154. package/extensions/dm-subagents/src/agents/agents.ts +0 -1553
  155. package/extensions/dm-subagents/src/agents/chain-serializer.ts +0 -277
  156. package/extensions/dm-subagents/src/agents/frontmatter.ts +0 -93
  157. package/extensions/dm-subagents/src/agents/identity.ts +0 -30
  158. package/extensions/dm-subagents/src/agents/proactive-skills.ts +0 -191
  159. package/extensions/dm-subagents/src/agents/skills.ts +0 -729
  160. package/extensions/dm-subagents/src/extension/config.ts +0 -39
  161. package/extensions/dm-subagents/src/extension/control-notices.ts +0 -92
  162. package/extensions/dm-subagents/src/extension/doctor.ts +0 -214
  163. package/extensions/dm-subagents/src/extension/fanout-child.ts +0 -172
  164. package/extensions/dm-subagents/src/extension/index.ts +0 -656
  165. package/extensions/dm-subagents/src/extension/rpc.ts +0 -369
  166. package/extensions/dm-subagents/src/extension/schemas.ts +0 -309
  167. package/extensions/dm-subagents/src/intercom/intercom-bridge.ts +0 -180
  168. package/extensions/dm-subagents/src/intercom/native-supervisor-channel.ts +0 -519
  169. package/extensions/dm-subagents/src/intercom/result-intercom.ts +0 -377
  170. package/extensions/dm-subagents/src/profiles/profiles.ts +0 -637
  171. package/extensions/dm-subagents/src/runs/background/async-execution.ts +0 -1065
  172. package/extensions/dm-subagents/src/runs/background/async-job-tracker.ts +0 -441
  173. package/extensions/dm-subagents/src/runs/background/async-resume.ts +0 -391
  174. package/extensions/dm-subagents/src/runs/background/async-status.ts +0 -395
  175. package/extensions/dm-subagents/src/runs/background/chain-append.ts +0 -282
  176. package/extensions/dm-subagents/src/runs/background/chain-root-attachment.ts +0 -191
  177. package/extensions/dm-subagents/src/runs/background/completion-batcher.ts +0 -166
  178. package/extensions/dm-subagents/src/runs/background/completion-dedupe.ts +0 -63
  179. package/extensions/dm-subagents/src/runs/background/control-channel.ts +0 -332
  180. package/extensions/dm-subagents/src/runs/background/fleet-view.ts +0 -515
  181. package/extensions/dm-subagents/src/runs/background/notify.ts +0 -225
  182. package/extensions/dm-subagents/src/runs/background/parallel-groups.ts +0 -45
  183. package/extensions/dm-subagents/src/runs/background/result-watcher.ts +0 -315
  184. package/extensions/dm-subagents/src/runs/background/run-id-resolver.ts +0 -84
  185. package/extensions/dm-subagents/src/runs/background/run-status.ts +0 -434
  186. package/extensions/dm-subagents/src/runs/background/scheduled-runs.ts +0 -514
  187. package/extensions/dm-subagents/src/runs/background/stale-run-reconciler.ts +0 -368
  188. package/extensions/dm-subagents/src/runs/background/subagent-runner.ts +0 -3171
  189. package/extensions/dm-subagents/src/runs/background/top-level-async.ts +0 -13
  190. package/extensions/dm-subagents/src/runs/background/wait.ts +0 -353
  191. package/extensions/dm-subagents/src/runs/foreground/chain-clarify.ts +0 -1333
  192. package/extensions/dm-subagents/src/runs/foreground/chain-execution.ts +0 -1313
  193. package/extensions/dm-subagents/src/runs/foreground/execution.ts +0 -1239
  194. package/extensions/dm-subagents/src/runs/foreground/subagent-executor.ts +0 -3613
  195. package/extensions/dm-subagents/src/runs/shared/acceptance.ts +0 -879
  196. package/extensions/dm-subagents/src/runs/shared/chain-outputs.ts +0 -116
  197. package/extensions/dm-subagents/src/runs/shared/completion-guard.ts +0 -147
  198. package/extensions/dm-subagents/src/runs/shared/dm-args.ts +0 -271
  199. package/extensions/dm-subagents/src/runs/shared/dm-spawn.ts +0 -147
  200. package/extensions/dm-subagents/src/runs/shared/dynamic-fanout.ts +0 -295
  201. package/extensions/dm-subagents/src/runs/shared/long-running-guard.ts +0 -175
  202. package/extensions/dm-subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +0 -365
  203. package/extensions/dm-subagents/src/runs/shared/model-fallback.ts +0 -292
  204. package/extensions/dm-subagents/src/runs/shared/model-scope.ts +0 -128
  205. package/extensions/dm-subagents/src/runs/shared/nested-events.ts +0 -908
  206. package/extensions/dm-subagents/src/runs/shared/nested-path.ts +0 -52
  207. package/extensions/dm-subagents/src/runs/shared/nested-render.ts +0 -115
  208. package/extensions/dm-subagents/src/runs/shared/parallel-utils.ts +0 -198
  209. package/extensions/dm-subagents/src/runs/shared/run-history.ts +0 -60
  210. package/extensions/dm-subagents/src/runs/shared/single-output.ts +0 -180
  211. package/extensions/dm-subagents/src/runs/shared/structured-output.ts +0 -77
  212. package/extensions/dm-subagents/src/runs/shared/subagent-control.ts +0 -223
  213. package/extensions/dm-subagents/src/runs/shared/subagent-prompt-runtime.ts +0 -342
  214. package/extensions/dm-subagents/src/runs/shared/tool-budget.ts +0 -74
  215. package/extensions/dm-subagents/src/runs/shared/turn-budget.ts +0 -52
  216. package/extensions/dm-subagents/src/runs/shared/workflow-graph.ts +0 -206
  217. package/extensions/dm-subagents/src/runs/shared/worktree.ts +0 -600
  218. package/extensions/dm-subagents/src/shared/artifacts.ts +0 -113
  219. package/extensions/dm-subagents/src/shared/atomic-json.ts +0 -86
  220. package/extensions/dm-subagents/src/shared/child-transcript.ts +0 -212
  221. package/extensions/dm-subagents/src/shared/file-coalescer.ts +0 -40
  222. package/extensions/dm-subagents/src/shared/fork-context.ts +0 -194
  223. package/extensions/dm-subagents/src/shared/formatters.ts +0 -133
  224. package/extensions/dm-subagents/src/shared/jsonl-writer.ts +0 -81
  225. package/extensions/dm-subagents/src/shared/model-info.ts +0 -78
  226. package/extensions/dm-subagents/src/shared/post-exit-stdio-guard.ts +0 -85
  227. package/extensions/dm-subagents/src/shared/session-identity.ts +0 -10
  228. package/extensions/dm-subagents/src/shared/session-tokens.ts +0 -44
  229. package/extensions/dm-subagents/src/shared/settings.ts +0 -450
  230. package/extensions/dm-subagents/src/shared/status-format.ts +0 -49
  231. package/extensions/dm-subagents/src/shared/types.ts +0 -1257
  232. package/extensions/dm-subagents/src/shared/utils.ts +0 -554
  233. package/extensions/dm-subagents/src/slash/prompt-template-bridge.ts +0 -420
  234. package/extensions/dm-subagents/src/slash/prompt-workflows.ts +0 -330
  235. package/extensions/dm-subagents/src/slash/slash-bridge.ts +0 -176
  236. package/extensions/dm-subagents/src/slash/slash-commands.ts +0 -1296
  237. package/extensions/dm-subagents/src/slash/slash-live-state.ts +0 -292
  238. package/extensions/dm-subagents/src/tui/render-helpers.ts +0 -80
  239. package/extensions/dm-subagents/src/tui/render.ts +0 -1748
  240. package/extensions/dm-tasks/src/auto-clear.ts +0 -91
  241. package/extensions/dm-tasks/src/index.ts +0 -1145
  242. package/extensions/dm-tasks/src/process-tracker.ts +0 -140
  243. package/extensions/dm-tasks/src/task-store.ts +0 -305
  244. package/extensions/dm-tasks/src/tasks-config.ts +0 -23
  245. package/extensions/dm-tasks/src/types.ts +0 -40
  246. package/extensions/dm-tasks/src/ui/settings-menu.ts +0 -100
  247. package/extensions/dm-tasks/src/ui/task-widget.ts +0 -265
  248. package/extensions/dm-usage/index.ts +0 -1718
  249. package/extensions/greedysearch-dm/index.ts +0 -177
  250. package/extensions/greedysearch-dm/src/formatters/results.ts +0 -163
  251. package/extensions/greedysearch-dm/src/formatters/sources.ts +0 -116
  252. package/extensions/greedysearch-dm/src/formatters/synthesis.ts +0 -87
  253. package/extensions/greedysearch-dm/src/tools/greedy-search-handler.ts +0 -370
  254. package/extensions/greedysearch-dm/src/tools/shared.ts +0 -187
  255. package/extensions/greedysearch-dm/src/types.ts +0 -110
  256. package/extensions/greedysearch-dm/src/utils/helpers.ts +0 -40
@@ -0,0 +1,2 @@
1
+ import*as X from"node:fs";import*as E from"node:path";import*as Q from"node:fs";import*as G from"node:os";import*as Z from"node:path";import*as B from"node:os";import*as U from"node:path";function K($){return $.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function O($){let J=$?.env??process.env,Y=$&&Object.hasOwn($,"getuid")?$.getuid:process.getuid?.bind(process);if(typeof Y==="function")return`uid-${Y()}`;for(let q of["USERNAME","USER","LOGNAME"]){let z=J[q];if(z)return`user-${K(z)}`}let W=$&&Object.hasOwn($,"userInfo")?$.userInfo:B.userInfo;try{let q=W?.().username;if(q)return`user-${K(q)}`}catch{}let V=J.USERPROFILE??J.HOME;if(V)return`home-${K(V)}`;let M=$&&Object.hasOwn($,"homedir")?$.homedir:B.homedir;try{let q=M?.();if(q)return`home-${K(q)}`}catch{}return"shared"}var j=U.join(B.tmpdir(),`dm-subagents-${O()}`),f=U.join(j,"async-subagent-results"),v=U.join(j,"async-subagent-runs"),T=U.join(j,"chain-runs"),P=U.join(j,"artifacts");var N=".dm",R="@duckmind/dm-coding-agent",C="DM_SUBAGENTS_PI_CODING_AGENT_PACKAGE_ROOT";function L($){return typeof $==="string"&&$.trim()?$:void 0}function A($){if(!$)return;try{let J=JSON.parse(Q.readFileSync(Z.join($,"package.json"),"utf-8"));if(J.name!==R)return;return L(J.piConfig?.configDir)}catch{return}}function I($=process.argv[1],J=process.env[C]){let Y=A(J);if(Y)return Y;if(!$)return;try{let W=Z.dirname(Q.realpathSync($));while(W!==Z.dirname(W)){let V=A(W);if(V)return V;W=Z.dirname(W)}}catch{}return}function b($,J,Y){return($&&typeof $==="object"?L($.CONFIG_DIR_NAME):void 0)??I(J,Y)??N}function w(){return b()}function H(){let $=process.env.DM_CODING_AGENT_DIR;if($==="~")return G.homedir();if($?.startsWith("~/"))return Z.join(G.homedir(),$.slice(2));return $||Z.join(G.homedir(),w(),"agent")}function _(){return E.join(H(),"extensions","subagent","config.json")}function F($=_()){if(!X.existsSync($))return{};let J=JSON.parse(X.readFileSync($,"utf-8"));if(!J||typeof J!=="object"||Array.isArray(J))throw Error(`Subagent config at '${$}' must be a JSON object`);return J}function S($,J=_()){X.mkdirSync(E.dirname(J),{recursive:!0}),X.writeFileSync(J,`${JSON.stringify($,null,"\t")}
2
+ `,"utf-8")}function W$($){let J=_(),Y=$(F(J));return S(Y,J),Y}function X$(){let $=_();try{return F($)}catch(J){console.error(`Failed to load subagent config from '${$}':`,J)}return{}}export{W$ as updateConfig,S as saveConfig,X$ as loadConfig,_ as getConfigPath};
@@ -0,0 +1,4 @@
1
+ function Q(j,q){return`${q??(j.index!==void 0?`${j.runId}:${j.index}`:j.runId)}:${j.type}:${j.reason??"idle"}`}function $(j){let q=[];if(j.elapsedMs!==void 0)q.push(`elapsed ${Math.floor(Math.max(0,j.elapsedMs)/1000)}s`);if(j.turns!==void 0)q.push(`${j.turns} turns`);if(j.tokens!==void 0)q.push(`${j.tokens} tokens`);if(j.toolCount!==void 0)q.push(`${j.toolCount} tools`);if(j.currentTool)q.push(`tool ${j.currentTool}${j.currentToolDurationMs!==void 0?` ${Math.floor(Math.max(0,j.currentToolDurationMs)/1000)}s`:""}`);if(j.currentPath)q.push(`path ${j.currentPath}`);return q.length>0?q.join(" | "):void 0}function V(j,q){let z=j.runId;if(j.reason==="completion_guard")return[`Subagent failed: ${j.agent}`,`Run: ${z}${j.index!==void 0?` step ${j.index+1}`:""}`,`Signal: ${j.message}`,"Next: read the output artifact or session from the subagent result, then retry with a more explicit implementation prompt or handle the fix directly.",q?`Run intercom target (may be inactive): ${q}`:void 0].filter((J)=>Boolean(J)).join(`
2
+ `);let D="What are you blocked on? Reply with the smallest next step or ask for a decision.",H=`subagent({ action: "resume", id: "${z}", ${j.index!==void 0?`index: ${j.index}, `:""}message: "${D}" })`;if(j.type==="active_long_running"){let J=$(j);return[`Subagent active but long-running: ${j.agent}`,`Run: ${z}${j.index!==void 0?` step ${j.index+1}`:""}`,`Signal: ${j.message}`,J?`Facts: ${J}`:void 0,"Hint: Inspect status, then nudge if the work seems stuck. Live async nudges interrupt the child before sending the follow-up.",`Nudge: ${H}`,q?`Direct intercom target: ${q}`:void 0,`Status: subagent({ action: "status", id: "${z}" })`,`Interrupt: subagent({ action: "interrupt", id: "${z}" })`].filter((Z)=>Boolean(Z)).join(`
3
+ `)}return[`Subagent needs attention: ${j.agent}`,`Run: ${z}${j.index!==void 0?` step ${j.index+1}`:""}`,`Signal: ${j.message}`,j.recentFailureSummary?`Recent failures: ${j.recentFailureSummary}`:void 0,"Hint: Inspect status first unless the run is clearly blocked. Live async nudges interrupt the child before sending the follow-up.",`Nudge: ${H}`,q?`Direct intercom target: ${q}`:void 0,`Status: subagent({ action: "status", id: "${z}" })`,`Interrupt: subagent({ action: "interrupt", id: "${z}" })`].filter((J)=>Boolean(J)).join(`
4
+ `)}var b="subagent_control_notice";function W(j){return j.childIntercomTarget}function R(j,q){return j.noticeText??q??V(j.event,W(j))}function w(j){let q=W(j);return`${j.event.runId}:${Q(j.event,q)}`}function U(j,q){let z=j.pendingForegroundControlNotices;if(!z)return;for(let[D,H]of z){if(q!==void 0&&!D.startsWith(`${q}:`))continue;clearTimeout(H),z.delete(D)}}function X(j){let q=W(j.details),z=Q(j.details.event,q);if(j.visibleControlNotices.has(z))return;j.visibleControlNotices.add(z);let D=j.details.noticeText??V(j.details.event,q);j.pi.sendMessage({customType:b,content:D,display:!0,details:{...j.details,childIntercomTarget:q,noticeText:D}},{triggerTurn:j.details.source!=="foreground"})}function F(j,q){let z=j.foregroundControls.get(q.event.runId);if(!z)return!1;if(z.currentAgent&&z.currentAgent!==q.event.agent)return!1;if(q.event.index!==void 0&&z.currentIndex!==q.event.index)return!1;return z.currentActivityState==="needs_attention"}function Y(j){if(!j.details?.event||j.details.event.type==="active_long_running")return;if(j.details.source!=="foreground"){X(j);return}let q=j.state.pendingForegroundControlNotices??new Map;j.state.pendingForegroundControlNotices=q;let z=w(j.details),D=q.get(z);if(D)clearTimeout(D);let H=setTimeout(()=>{if(q.delete(z),!F(j.state,j.details))return;X(j)},j.foregroundDelayMs??1000);H.unref?.(),q.set(z,H)}export{Y as handleSubagentControlNotice,R as formatSubagentControlNotice,W as controlNoticeTarget,U as clearPendingForegroundControlNotices,b as SUBAGENT_CONTROL_MESSAGE_TYPE};
@@ -0,0 +1,16 @@
1
+ import*as k from"node:fs";import*as q$ from"node:path";import{execSync as N1}from"node:child_process";import*as N from"node:fs";import*as S$ from"node:os";import*as A from"node:path";import{fileURLToPath as T1}from"node:url";import*as R from"node:fs";import*as Q$ from"node:os";import*as I from"node:path";import{execSync as w0}from"node:child_process";import*as F from"node:fs";import*as l from"node:os";import*as V from"node:path";var n=null,x0=5000,f0="dm-subagents",v={project:700,"project-settings":650,"project-package":600,user:300,"user-settings":250,"user-package":200,extension:150,builtin:100,unknown:0};function f($,J){let W=V.relative(J,$);return W===""||!W.startsWith("..")&&!V.isAbsolute(W)}function f$($,J){try{return JSON.parse(F.readFileSync($,"utf-8"))}catch(W){if((typeof W==="object"&&W!==null&&"code"in W?W.code:void 0)==="ENOENT")return null;let Q=W instanceof Error?W.message:String(W);throw Error(`Failed to read ${J} '${$}': ${Q}`,{cause:W instanceof Error?W:void 0})}}function b0($){try{return JSON.parse(F.readFileSync($,"utf-8"))}catch{return null}}function j$($,J,W=!1){let Z=V.join($,"package.json"),Q=W?b0(Z):f$(Z,"package manifest");if(!Q||typeof Q!=="object"||Array.isArray(Q))return[];let X=Q.pi;if(!X||typeof X!=="object"||Array.isArray(X))return[];let H=X.skills;if(!Array.isArray(H))return[];return H.filter((K)=>typeof K==="string").map((K)=>({path:V.resolve($,K),source:J}))}var Z$=null;function n$(){if(Z$!==null)return Z$;try{return Z$=w0("npm root -g",{encoding:"utf-8",timeout:5000}).trim(),Z$}catch{return Z$="",null}}function k0($,J){let W=E($),Z=[{path:V.join(W,"npm","node_modules"),source:"project-package"},{path:V.join(J,"npm","node_modules"),source:"user-package"}],Q=n$();if(Q)Z.push({path:Q,source:"user-package"});let X=[];for(let H of Z){if(!F.existsSync(H.path))continue;let K;try{K=F.readdirSync(H.path,{withFileTypes:!0})}catch{continue}for(let U of K){if(U.name.startsWith("."))continue;if(!U.isDirectory()&&!U.isSymbolicLink())continue;if(U.name.startsWith("@")){let Y=V.join(H.path,U.name),q;try{q=F.readdirSync(Y,{withFileTypes:!0})}catch{continue}for(let B of q){if(B.name.startsWith("."))continue;if(!B.isDirectory()&&!B.isSymbolicLink())continue;let z=V.join(Y,B.name);X.push(...j$(z,H.source,!0))}continue}let G=V.join(H.path,U.name);X.push(...j$(G,H.source,!0))}}return X}function P0($,J){let W=[],Z=E($),Q=[{file:V.join(Z,"settings.json"),base:Z,source:"project-settings"},{file:V.join(J,"settings.json"),base:J,source:"user-settings"}];for(let{file:X,base:H,source:K}of Q){let U=f$(X,"skills settings file");if(!U||typeof U!=="object"||Array.isArray(U))continue;let G=U.skills;if(!Array.isArray(G))continue;for(let Y of G){if(typeof Y!=="string")continue;let q=Y;if(q.startsWith("~/"))q=V.join(l.homedir(),q.slice(2));else if(!V.isAbsolute(q))q=V.resolve(H,q);W.push({path:q,source:K})}}return W}function x$($){return $.length>0&&!V.isAbsolute($)&&$.split(/[\\/]/).every((J)=>J.length>0&&J!=="."&&J!=="..")}function v0($){let J=$.slice(4).trim();if(!J)return;let Z=J.match(/^(@?[^@]+(?:\/[^@]+)?)(?:@(.+))?$/)?.[1]??J;return x$(Z)?Z:void 0}function h0($){let J=$.indexOf("@"),W=$.indexOf("#"),Z=[J,W].filter((Q)=>Q>=0).sort((Q,X)=>Q-X)[0];return Z===void 0?$:$.slice(0,Z)}function g0($){let J=$.slice(4).trim();if(!J)return;let W="",Z="",Q=J.match(/^git@([^:]+):(.+)$/);if(Q)W=Q[1]??"",Z=Q[2]??"";else if(/^[a-z][a-z0-9+.-]*:\/\//i.test(J))try{let H=new URL(J);W=H.hostname,Z=H.pathname.replace(/^\/+/,"")}catch{return}else{let H=J.indexOf("/");if(H<0)return;W=J.slice(0,H),Z=J.slice(H+1)}let X=h0(Z).replace(/\.git$/,"").replace(/^\/+/,"");if(!W||!x$(W)||!x$(X)||X.split(/[\\/]/).length<2)return;return{host:W,repoPath:X}}function m0($,J){let W=$.trim();if(!W)return;if(W.startsWith("git:")){let Q=g0(W);return Q?V.join(J,"git",Q.host,Q.repoPath):void 0}if(W.startsWith("npm:")){let Q=v0(W);return Q?V.join(J,"npm","node_modules",Q):void 0}let Z=W.startsWith("file:")?W.slice(5):W;if(Z==="~")return l.homedir();if(Z.startsWith("~/"))return V.join(l.homedir(),Z.slice(2));if(V.isAbsolute(Z))return Z;if(Z==="."||Z===".."||Z.startsWith("./")||Z.startsWith("../"))return V.resolve(J,Z);return}function c0($,J){let W=E($),Z=[{file:V.join(W,"settings.json"),base:W,source:"project-package"},{file:V.join(J,"settings.json"),base:J,source:"user-package"}],Q=[];for(let{file:X,base:H,source:K}of Z){let U=f$(X,"skills settings file");if(!U||typeof U!=="object"||Array.isArray(U))continue;let G=U.packages;if(!Array.isArray(G))continue;for(let Y of G){let q=typeof Y==="string"?Y:typeof Y==="object"&&Y!==null&&typeof Y.source==="string"?Y.source:void 0;if(!q)continue;let B=m0(q,H);if(!B)continue;Q.push(...j$(B,K))}}return Q}function u0($,J){let W=E($),Z=[{path:V.join(W,"skills"),source:"project"},{path:V.join($,".agents","skills"),source:"project"},{path:V.join(J,"skills"),source:"user"},{path:V.join(l.homedir(),".agents","skills"),source:"user"},...k0($,J),...c0($,J),...j$($,"project-package"),...P0($,J)],Q=new Map;for(let X of Z){let H=V.resolve(X.path),K=Q.get(H);if(!K||(v[X.source]??0)>(v[K.source]??0))Q.set(H,{path:H,source:X.source})}return[...Q.values()]}function d0($,J,W,Z){if(Z)return Z;let Q=V.resolve(E(J)),X=V.resolve(Q,"skills"),H=V.resolve(Q,"npm","node_modules"),K=V.resolve(J,".agents"),U=V.resolve(W,"skills"),G=V.resolve(W,"npm","node_modules"),Y=V.resolve(W),q=V.resolve(l.homedir(),".agents");if(f($,H))return"project-package";if(f($,X)||f($,K))return"project";if(f($,Q))return"project-settings";if(f($,G))return"user-package";if(f($,U)||f($,q))return"user";if(f($,Y))return"user-settings";let B=n$();if(B&&f($,B))return"user-package";return"unknown"}function p0($,J){if(!$)return J;let W=v[$.source]??0,Z=v[J.source]??0;if(Z>W)return J;if(Z<W)return $;return J.order<$.order?J:$}function p$($){try{let W=F.readFileSync($,"utf-8").replace(/\r\n/g,`
2
+ `);if(!W.startsWith("---"))return;let Z=W.indexOf(`
3
+ ---`,3);if(Z===-1)return;let X=W.slice(3,Z).trim().match(/^description:\s*(.+)$/m);if(!X)return;return X[1]?.trim().replace(/^['\"]|['\"]$/g,"")}catch{return}}function n0($,J,W){let Z=[],Q=new Map,X=new Map,H=0,K=(q,B,z)=>{let j=V.resolve(B);if(!F.existsSync(j))return;let _=d0(j,$,J,z),O=Q.get(j);if(O!==void 0){let T=Z[O];if(T&&(v[_]??0)>(v[T.source]??0))Z[O]={...T,name:q,source:_,description:p$(j)};return}Q.set(j,Z.length),Z.push({name:q,filePath:j,source:_,description:p$(j),order:H++})},U=(q)=>q.startsWith(".")||q==="node_modules",G=(q,B)=>{let z;try{z=F.realpathSync(q)}catch{z=V.resolve(q)}let j=B?v[B]??0:v.unknown,_=X.get(z);if(_!==void 0&&_>=j)return!1;return X.set(z,j),!0},Y=(q,B)=>{if(!G(q,B))return;let z=V.join(q,"SKILL.md");if(F.existsSync(z)){K(V.basename(q),z,B);return}let j;try{j=F.readdirSync(q,{withFileTypes:!0})}catch{return}for(let _ of j){if(U(_.name))continue;if(!_.isDirectory()&&!_.isSymbolicLink())continue;let O=V.join(q,_.name),T;try{T=F.statSync(O)}catch{continue}if(T.isDirectory())Y(O,B)}};for(let q of W){if(!F.existsSync(q.path))continue;let B;try{B=F.statSync(q.path)}catch{continue}if(B.isFile()){let _=V.basename(q.path);if(!_.toLowerCase().endsWith(".md"))continue;let O=_.toLowerCase()==="skill.md"?V.basename(V.dirname(q.path)):V.basename(_,V.extname(_));K(O,q.path,q.source);continue}if(!B.isDirectory())continue;let z=V.join(q.path,"SKILL.md");if(F.existsSync(z)){K(V.basename(q.path),z,q.source);continue}G(q.path,q.source);let j;try{j=F.readdirSync(q.path,{withFileTypes:!0})}catch{continue}for(let _ of j){if(_.name.startsWith("."))continue;let O=V.join(q.path,_.name);if(_.isDirectory()||_.isSymbolicLink()){if(U(_.name))continue;let T;try{T=F.statSync(O)}catch{continue}if(T.isDirectory())Y(O,q.source);continue}if(_.isFile()&&_.name.toLowerCase().endsWith(".md"))K(V.basename(_.name,V.extname(_.name)),O,q.source)}}return Z}function l0($){let J=Date.now(),W=D();if(n&&n.cwd===$&&n.agentDir===W&&J-n.timestamp<x0)return n.skills;let Z=u0($,W),Q=n0($,W,Z),X=new Map;for(let K of Q){let U=X.get(K.name);X.set(K.name,p0(U,K))}let H=[...X.values()].sort((K,U)=>K.order-U.order);return n={cwd:$,agentDir:W,skills:H,timestamp:J},H}function l$($){return l0($).filter((W)=>W.name!==f0).map((W)=>({name:W.name,source:W.source,description:W.description})).sort((W,Z)=>W.name.localeCompare(Z.name))}import*as o from"node:os";import*as s from"node:path";function A$($){return $.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function o0($){let J=$?.env??process.env,W=$&&Object.hasOwn($,"getuid")?$.getuid:process.getuid?.bind(process);if(typeof W==="function")return`uid-${W()}`;for(let H of["USERNAME","USER","LOGNAME"]){let K=J[H];if(K)return`user-${A$(K)}`}let Z=$&&Object.hasOwn($,"userInfo")?$.userInfo:o.userInfo;try{let H=Z?.().username;if(H)return`user-${A$(H)}`}catch{}let Q=J.USERPROFILE??J.HOME;if(Q)return`home-${A$(Q)}`;let X=$&&Object.hasOwn($,"homedir")?$.homedir:o.homedir;try{let H=X?.();if(H)return`home-${A$(H)}`}catch{}return"shared"}var w=s.join(o.tmpdir(),`dm-subagents-${o0()}`),L$=s.join(w,"async-subagent-results"),_$=s.join(w,"async-subagent-runs"),b$=s.join(w,"chain-runs"),SJ=s.join(w,"artifacts");function i($){return"parallel"in $&&Array.isArray($.parallel)}function m($){return"expand"in $&&"collect"in $&&"parallel"in $&&!Array.isArray($.parallel)}var r0=".dm",a0="@duckmind/dm-coding-agent",s$="DM_SUBAGENTS_PI_CODING_AGENT_PACKAGE_ROOT";function i$($){return typeof $==="string"&&$.trim()?$:void 0}function o$($){if(!$)return;try{let J=JSON.parse(R.readFileSync(I.join($,"package.json"),"utf-8"));if(J.name!==a0)return;return i$(J.piConfig?.configDir)}catch{return}}function t0($=process.argv[1],J=process.env[s$]){let W=o$(J);if(W)return W;if(!$)return;try{let Z=I.dirname(R.realpathSync($));while(Z!==I.dirname(Z)){let Q=o$(Z);if(Q)return Q;Z=I.dirname(Z)}}catch{}return}function e0($,J,W){return($&&typeof $==="object"?i$($.CONFIG_DIR_NAME):void 0)??t0(J,W)??r0}function r$(){return e0()}function E($){return I.join($,r$())}function D(){let $=process.env.DM_CODING_AGENT_DIR;if($==="~")return Q$.homedir();if($?.startsWith("~/"))return I.join(Q$.homedir(),$.slice(2));return $||I.join(Q$.homedir(),r$(),"agent")}var $1=/^[a-z0-9][a-z0-9-]*(?:\.[a-z0-9][a-z0-9-]*)*$/;function J1($){let J=$?.trim();if(!J)return;return J.toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9.-]/g,"").replace(/-+/g,"-").replace(/\.+/g,".").replace(/(?:^[-.]+|[-.]+$)/g,"")}function r($,J="package"){if($===void 0||$===!1||$==="")return{packageName:void 0};if(typeof $!=="string")return{error:`${J} must be a string or false when provided.`};let W=J1($);if(!W||!$1.test(W))return{error:`${J} is invalid after sanitization.`};return{packageName:W}}function a($,J){let W=J?.trim();return W?`${W}.${$}`:$}var t$=new Set(["name","package","description","tools","model","fallbackModels","thinking","systemPromptMode","inheritProjectContext","inheritSkills","defaultContext","skill","skills","extensions","subagentOnlyExtensions","output","defaultReads","defaultProgress","interactive","maxSubagentDepth","completionGuard","toolBudget","memory"]);function e$($){return $.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function O$($){let J={},W=$.replace(/\r\n/g,`
4
+ `);if(!W.startsWith("---"))return{frontmatter:J,body:W};let Z=W.indexOf(`
5
+ ---`,3);if(Z===-1)return{frontmatter:J,body:W};let Q=W.slice(4,Z),X=W.slice(Z+4).trim(),H=Q.split(`
6
+ `),K=null,U=null,G=null;for(let Y of H){let q=Y.search(/\S|$/),B=Y.trim();if(K!==null&&U!==null&&q>(G??0)){U.push(Y);continue}if(K!==null&&U!==null){let j=U.join(`
7
+ `),O=j.match(/^([ \t]+)/m)?.[1]??"",T=O?j.replace(new RegExp(`^${e$(O)}`,"gm"),"").replace(/^\n/,""):j;J[K]=T,K=null,U=null,G=null}let z=Y.match(/^([\w-]+):\s*(.*)$/);if(z){let j=z[2].trim();if(j.startsWith('"')&&j.endsWith('"')||j.startsWith("'")&&j.endsWith("'"))j=j.slice(1,-1);if(j==="")K=z[1],U=[],G=q;else J[z[1]]=j}}if(K!==null&&U!==null){let Y=U.join(`
8
+ `),B=Y.match(/^([ \t]+)/m)?.[1]??"",z=B?Y.replace(new RegExp(`^${e$(B)}`,"gm"),"").replace(/^\n/,""):Y;J[K]=z}return{frontmatter:J,body:X}}import{Compile as iJ}from"typebox/compile";class C extends Error{}var Z1=/^[A-Za-z_][A-Za-z0-9_]*$/,Q1=/^[A-Za-z_][A-Za-z0-9_]*$/,F$=/\{([A-Za-z_][A-Za-z0-9_]*)(?:\.([^{}]+))?\}/g,X1=new Set(["task","previous","chain_dir","outputs"]),W0=new Set(["expand","parallel","collect","concurrency","failFast","phase","label","acceptance"]),H1=new Set([...W0,"effectiveAcceptance","sessionFiles","thinkingOverrides"]),K1=new Set(["from","item","key","maxItems","onEmpty"]),U1=new Set(["output","path"]),Z0=new Set(["agent","task","phase","label","outputSchema","cwd","output","outputMode","reads","progress","skill","model","toolBudget","acceptance"]),q1=new Set([...Z0,"outputName","structured","inheritProjectContext","inheritSkills","skills","outputPath","maxSubagentDepth","structuredOutput","structuredOutputSchema","tools","extensions","subagentOnlyExtensions","mcpDirectTools","completionGuard","systemPrompt","systemPromptMode","thinking","modelCandidates","sessionFile","effectiveAcceptance","parentSessionId"]),Y1=new Set(["as","outputSchema"]);function $0($){return Z1.test($)}function J0($,J){if($==="")return;if(!$.startsWith("/"))throw new C(`${J} must be a JSON Pointer starting with '/'.`);for(let W of $.slice(1).split("/"))if(/~(?![01])/.test(W))throw new C(`${J} contains invalid JSON Pointer escape.`)}function X$($,J,W){if(!$||typeof $!=="object"||Array.isArray($))throw new C(`${W} must be an object.`);for(let Z of Object.keys($))if(!J.has(Z))throw new C(`${W} does not support field '${Z}'.`)}function G1($,J,W){for(let Z of $.matchAll(/\{([^{}]*)\}/g)){let Q=Z[0],X=Z[1];if(X===J||X.startsWith(`${J}.`)){if(!F$.test(Q)||X===`${J}.`||X.includes(".."))throw new C(`Invalid item reference '${Q}' in ${W}.`);F$.lastIndex=0;continue}F$.lastIndex=0;let H=X.match(/^[A-Za-z_][A-Za-z0-9_]*/)?.[0];if(H===J)throw new C(`Invalid item reference '${Q}' in ${W}.`);if(H&&X1.has(H))continue;if(H)throw new C(`Unsupported template reference '${Q}' in ${W}.`)}if(F$.lastIndex=0,$.includes(`{${J}.}`)||new RegExp(`\\{${J}(?:\\.|$)[^}]*$`).test($))throw new C(`Invalid item reference in ${W}.`)}function Q0($){return!!$&&typeof $==="object"&&!Array.isArray($)&&(Object.prototype.hasOwnProperty.call($,"expand")||Object.prototype.hasOwnProperty.call($,"collect"))}function X0($,J,W={}){let Z=`Dynamic chain step ${J+1}`;if(X$($,W.allowRunnerFields?H1:W0,Z),!$.expand||!$.expand.from)throw new C(`${Z} requires expand.from.`);if(X$($.expand,K1,`${Z} expand`),X$($.expand.from,U1,`${Z} expand.from`),!$0($.expand.from.output))throw new C(`${Z} has invalid expand.from.output '${$.expand.from.output}'.`);if(J0($.expand.from.path,`${Z} expand.from.path`),$.expand.key!==void 0)J0($.expand.key,`${Z} expand.key`);let Q=$.expand.item??"item";if(!Q1.test(Q))throw new C(`${Z} has invalid expand.item '${Q}'.`);if($.expand.maxItems===void 0&&W.maxItems===void 0)throw new C(`${Z} requires expand.maxItems or config.chain.dynamicFanout.maxItems.`);if($.expand.maxItems!==void 0&&(!Number.isInteger($.expand.maxItems)||$.expand.maxItems<0))throw new C(`${Z} expand.maxItems must be an integer >= 0.`);if(W.maxItems!==void 0&&(!Number.isInteger(W.maxItems)||W.maxItems<0))throw new C("config.chain.dynamicFanout.maxItems must be an integer >= 0.");if(!$.parallel||Array.isArray($.parallel))throw new C(`${Z} requires a single parallel template object and cannot mix dynamic expand/collect with static parallel arrays.`);if(X$($.parallel,W.allowRunnerFields?q1:Z0,`${Z} parallel`),"expand"in $.parallel)throw new C(`${Z} does not support nested dynamic fanout.`);if(!$.parallel.agent)throw new C(`${Z} parallel.agent is required.`);if(!$.collect?.as||!$0($.collect.as))throw new C(`${Z} requires collect.as with a safe output name.`);X$($.collect,Y1,`${Z} collect`);for(let[X,H]of[["parallel.task",$.parallel.task],["parallel.label",$.parallel.label]])if(H)G1(H,Q,`${Z} ${X}`)}var B1=/\{outputs\.([^}]*)\}/g,H0=/^[A-Za-z_][A-Za-z0-9_]*$/;class y extends Error{}function K0($){if(i($))return $.parallel.map((W)=>W.as).filter((W)=>Boolean(W));if(m($))return[$.collect.as];let J=$.as;return J?[J]:[]}function V1($){if(i($))return $.parallel.map((J)=>J.task??"{previous}");if(m($))return[$.parallel.task??"{previous}",$.parallel.label??""].filter(Boolean);return[$.task??"{previous}"]}function k$($,J={}){z1($,J)}function z1($,J={},W={}){let Z=[...W.priorOutputNames??[]],Q=new Set(Z),X=new Set(Z);for(let H=0;H<$.length;H++){let K=(W.startStepIndex??0)+H+1,U=$[H];if(Q0(U)){if(!m(U))throw new y(`Dynamic chain step ${K} requires expand, a single parallel template object, and collect; dynamic expand/collect cannot be mixed with static parallel arrays.`);try{X0(U,K-1,J)}catch(G){if(G instanceof C)throw new y(G.message);throw G}if(!Q.has(U.expand.from.output))throw new y(`Dynamic chain step ${K} references unknown output '${U.expand.from.output}'. Named outputs are only available after producing step/group completes.`)}for(let G of K0(U)){if(!H0.test(G))throw new y(`Invalid chain output name '${G}' at step ${K}. Use /^[A-Za-z_][A-Za-z0-9_]*$/.`);if(X.has(G))throw new y(`Duplicate chain output name '${G}'. Each as name must be unique.`);X.add(G)}for(let G of V1(U))for(let Y of G.matchAll(B1)){let q=Y[0],B=Y[1];if(!H0.test(B))throw new y(`Invalid chain output reference '${q}' at step ${K}. Use {outputs.name} with /^[A-Za-z_][A-Za-z0-9_]*$/ names.`);if(!Q.has(B))throw new y(`Unknown chain output reference '${q}' at step ${K}. Named outputs are only available after producing step/group completes.`)}for(let G of K0(U))Q.add(G)}}var U0=new Set(["auto","none","attested","checked","verified","reviewed"]),q0=new Set(["changed-files","tests-added","commands-run","validation-output","residual-risks","no-staged-files","diff-summary","review-findings","manual-notes"]),j1=new Set(["level","criteria","evidence","verify","review","stopRules","reason"]),A1=new Set(["id","must","evidence","severity"]),L1=new Set(["id","command","timeoutMs","cwd","env","allowFailure"]),_1=new Set(["agent","focus","required"]);function C$($,J="acceptance"){let W=[];if($===void 0)return W;if($===!1)return W;if(typeof $==="string"){if(!U0.has($))W.push(`${J} has invalid level '${$}'.`);return W}if(!$||typeof $!=="object"||Array.isArray($))return W.push(`${J} must be a string level, false, or an object.`),W;let Z=$;for(let Q of Object.keys(Z))if(!j1.has(Q))W.push(`${J}.${Q} is not supported.`);if(Z.level!==void 0&&(typeof Z.level!=="string"||!U0.has(Z.level)))W.push(`${J}.level must be one of auto, none, attested, checked, verified, reviewed.`);if(Z.level==="none"&&(typeof Z.reason!=="string"||!Z.reason.trim()))W.push(`${J}.reason is required when level is none.`);if(Z.reason!==void 0&&typeof Z.reason!=="string")W.push(`${J}.reason must be a string.`);if(Z.criteria!==void 0&&!Array.isArray(Z.criteria))W.push(`${J}.criteria must be an array.`);if(Array.isArray(Z.criteria))for(let[Q,X]of Z.criteria.entries()){if(typeof X==="string")continue;let H=`${J}.criteria[${Q}]`;if(!X||typeof X!=="object"||Array.isArray(X)){W.push(`${H} must be a string or an object.`);continue}let K=X;for(let U of Object.keys(K))if(!A1.has(U))W.push(`${H}.${U} is not supported.`);if(typeof K.id!=="string"||!K.id.trim())W.push(`${H}.id is required.`);if(typeof K.must!=="string"||!K.must.trim())W.push(`${H}.must is required.`);if(K.evidence!==void 0&&!Array.isArray(K.evidence))W.push(`${H}.evidence must be an array.`);if(Array.isArray(K.evidence)){for(let[U,G]of K.evidence.entries())if(typeof G!=="string"||!q0.has(G))W.push(`${H}.evidence[${U}] is not a supported evidence kind.`)}if(K.severity!==void 0&&K.severity!=="required"&&K.severity!=="recommended")W.push(`${H}.severity must be required or recommended.`)}if(Array.isArray(Z.evidence)){for(let[Q,X]of Z.evidence.entries())if(typeof X!=="string"||!q0.has(X))W.push(`${J}.evidence[${Q}] is not a supported evidence kind.`)}else if(Z.evidence!==void 0)W.push(`${J}.evidence must be an array.`);if(Z.verify!==void 0&&!Array.isArray(Z.verify))W.push(`${J}.verify must be an array.`);if(Array.isArray(Z.verify))for(let[Q,X]of Z.verify.entries()){if(!X||typeof X!=="object"||Array.isArray(X)){W.push(`${J}.verify[${Q}] must be an object.`);continue}let H=X;for(let K of Object.keys(H))if(!L1.has(K))W.push(`${J}.verify[${Q}].${K} is not supported.`);if(typeof H.id!=="string"||!H.id.trim())W.push(`${J}.verify[${Q}].id is required.`);if(typeof H.command!=="string"||!H.command.trim())W.push(`${J}.verify[${Q}].command is required.`);if(H.timeoutMs!==void 0&&(typeof H.timeoutMs!=="number"||!Number.isInteger(H.timeoutMs)||H.timeoutMs<1))W.push(`${J}.verify[${Q}].timeoutMs must be an integer >= 1.`);if(H.cwd!==void 0&&typeof H.cwd!=="string")W.push(`${J}.verify[${Q}].cwd must be a string.`);if(H.env!==void 0){if(!H.env||typeof H.env!=="object"||Array.isArray(H.env))W.push(`${J}.verify[${Q}].env must be an object.`);else for(let[K,U]of Object.entries(H.env))if(typeof U!=="string")W.push(`${J}.verify[${Q}].env.${K} must be a string.`)}if(H.allowFailure!==void 0&&typeof H.allowFailure!=="boolean")W.push(`${J}.verify[${Q}].allowFailure must be a boolean.`)}if(Z.review!==void 0&&Z.review!==!1)if(!Z.review||typeof Z.review!=="object"||Array.isArray(Z.review))W.push(`${J}.review must be false or an object.`);else{let Q=Z.review;for(let X of Object.keys(Q))if(!_1.has(X))W.push(`${J}.review.${X} is not supported.`);if(Q.agent!==void 0&&typeof Q.agent!=="string")W.push(`${J}.review.agent must be a string.`);if(Q.focus!==void 0&&typeof Q.focus!=="string")W.push(`${J}.review.focus must be a string.`);if(Q.required!==void 0&&typeof Q.required!=="boolean")W.push(`${J}.review.required must be a boolean.`)}if(Z.stopRules!==void 0&&!Array.isArray(Z.stopRules))W.push(`${J}.stopRules must be an array.`);if(Array.isArray(Z.stopRules)){for(let[Q,X]of Z.stopRules.entries())if(typeof X!=="string")W.push(`${J}.stopRules[${Q}] must be a string.`)}return W}var O1=["read","grep","find","ls"];function F1($){if($==="*")return"*";if($===void 0)return[...O1];return[...new Set($.map((J)=>J.trim()).filter(Boolean))]}function N$($,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 W=$;if(typeof W.hard!=="number"||!Number.isInteger(W.hard)||W.hard<1)return{error:`${J}.hard must be an integer >= 1.`};if(W.soft!==void 0&&(typeof W.soft!=="number"||!Number.isInteger(W.soft)||W.soft<1))return{error:`${J}.soft must be an integer >= 1 when provided.`};if(W.soft!==void 0&&W.soft>W.hard)return{error:`${J}.soft must be <= ${J}.hard.`};if(W.block!==void 0&&W.block!=="*"){if(!Array.isArray(W.block))return{error:`${J}.block must be "*" or an array of tool names.`};if(W.block.length===0)return{error:`${J}.block must contain at least one tool name.`};for(let Z of W.block)if(typeof Z!=="string"||!Z.trim())return{error:`${J}.block must contain non-empty tool names.`}}return{budget:{hard:W.hard,...W.soft!==void 0?{soft:W.soft}:{},block:F1(W.block)}}}function C1($,J){let W=J.split(`
9
+ `),Z=W.findIndex((K)=>K.trim()===""),Q=Z===-1?W:W.slice(0,Z),X=(Z===-1?"":W.slice(Z+1).join(`
10
+ `)).trim(),H={agent:$,task:X};for(let K of Q){let U=K.match(/^([\w-]+):\s*(.*)$/);if(!U)continue;let G=U[1].trim().toLowerCase(),Y=U[2].trim();if(G==="output"){if(Y==="false")H.output=!1;else if(Y)H.output=Y;continue}if(G==="phase"){if(Y)H.phase=Y;continue}if(G==="label"){if(Y)H.label=Y;continue}if(G==="as"){if(Y)H.as=Y;continue}if(G==="outputschema"){if(Y.startsWith("{")||Y.startsWith("["))throw Error("Inline outputSchema values are not supported in .chain.md files; use a schema file path.");if(Y)H.outputSchema=Y;continue}if(G==="outputmode"){if(Y==="inline"||Y==="file-only")H.outputMode=Y;continue}if(G==="reads"){if(Y==="false")H.reads=!1;else{let q=Y.split(",").map((B)=>B.trim()).filter(Boolean);H.reads=q.length>0?q:!1}continue}if(G==="model"){if(Y)H.model=Y;continue}if(G==="skills"){if(Y==="false")H.skills=!1;else{let q=Y.split(",").map((B)=>B.trim()).filter(Boolean);H.skills=q.length>0?q:!1}continue}if(G==="progress"){if(Y==="true")H.progress=!0;else if(Y==="false")H.progress=!1;continue}if(G==="toolbudget"){let q;try{q=JSON.parse(Y)}catch(z){let j=z instanceof Error?z.message:String(z);throw Error(`Invalid toolBudget in .chain.md step '${$}': ${j}`)}let B=N$(q,`toolBudget for step '${$}'`);if(B.error)throw Error(B.error);H.toolBudget=q}}return H}function Y0($,J,W){let{frontmatter:Z,body:Q}=O$($);if(!Z.name||!Z.description)throw Error("Chain frontmatter must include name and description");let X=[...Q.matchAll(/^##\s+(.+)[^\S\n]*$/gm)],H=[];for(let q=0;q<X.length;q++){let B=X[q],z=B[1].trim(),j=Q[B.index+B[0].length]===`
11
+ `?1:0,_=B.index+B[0].length+j,O=q+1<X.length?X[q+1].index:Q.length,T=Q.slice(_,O).trimEnd();H.push(C1(z,T))}let K=Z.name,U=r(Z.package,`Chain '${K}' package`);if(U.error)throw Error(U.error);let G=U.packageName,Y={};for(let[q,B]of Object.entries(Z)){if(q==="name"||q==="package"||q==="description")continue;Y[q]=B}return{name:a(K,G),localName:K,packageName:G,description:Z.description,source:J,filePath:W,steps:H,extraFields:Object.keys(Y).length>0?Y:void 0}}function P$($,J){let W=N$($,J);if(W.error)throw Error(W.error)}function G0($,J,W){let Z;try{Z=JSON.parse($)}catch(K){let U=K instanceof Error?K.message:String(K);throw Error(`Invalid JSON chain '${W}': ${U}`)}if(!Z||typeof Z!=="object"||Array.isArray(Z))throw Error(`JSON chain '${W}' must contain an object root.`);let Q=Z;if(typeof Q.name!=="string"||!Q.name.trim())throw Error(`JSON chain '${W}' must include string name.`);if(typeof Q.description!=="string"||!Q.description.trim())throw Error(`JSON chain '${W}' must include string description.`);if(!Array.isArray(Q.chain))throw Error(`JSON chain '${W}' must include array chain.`);for(let K=0;K<Q.chain.length;K++){let U=Q.chain[K];if(!U||typeof U!=="object"||Array.isArray(U))throw Error(`JSON chain '${W}' step ${K+1} must be an object.`);let G=U;if(G.toolBudget!==void 0)P$(G.toolBudget,`step ${K+1} toolBudget`);let Y=C$(G.acceptance,`step ${K+1} acceptance`);if(Y.length>0)throw Error(`Invalid JSON chain '${W}': ${Y.join(" ")}`);let q=G.parallel;if(Array.isArray(q))for(let B=0;B<q.length;B++){let z=q[B];if(!z||typeof z!=="object"||Array.isArray(z))continue;let j=z;if(j.toolBudget!==void 0)P$(j.toolBudget,`step ${K+1} parallel task ${B+1} toolBudget`);let _=C$(j.acceptance,`step ${K+1} parallel task ${B+1} acceptance`);if(_.length>0)throw Error(`Invalid JSON chain '${W}': ${_.join(" ")}`)}else if(q&&typeof q==="object"){let B=q;if(B.toolBudget!==void 0)P$(B.toolBudget,`step ${K+1} dynamic template toolBudget`);let z=C$(B.acceptance,`step ${K+1} dynamic template acceptance`);if(z.length>0)throw Error(`Invalid JSON chain '${W}': ${z.join(" ")}`)}}try{k$(Q.chain,{maxItems:Number.MAX_SAFE_INTEGER})}catch(K){if(K instanceof y)throw Error(`Invalid JSON chain '${W}': ${K.message}`);throw K}let X=r(typeof Q.package==="string"?Q.package:void 0,`Chain '${Q.name}' package`);if(X.error)throw Error(X.error);let H={};for(let[K,U]of Object.entries(Q)){if(K==="name"||K==="package"||K==="description"||K==="chain")continue;if(typeof U==="string")H[K]=U}return{name:a(Q.name.trim(),X.packageName),localName:Q.name.trim(),packageName:X.packageName,description:Q.description.trim(),source:J,filePath:W,steps:Q.chain,extraFields:Object.keys(H).length>0?H:void 0}}function B0($,J){if($===void 0)return;if(!$||typeof $!=="object"||Array.isArray($))throw Error(`Subagent settings in '${J.filePath}' have invalid 'modelScope'; expected an object.`);let W=$,Z={};if("enforce"in W){if(typeof W.enforce!=="boolean")throw Error(`Subagent settings in '${J.filePath}' have invalid 'modelScope.enforce'; expected a boolean.`);Z.enforce=W.enforce}if("allow"in W){if(!Array.isArray(W.allow))throw Error(`Subagent settings in '${J.filePath}' have invalid 'modelScope.allow'; expected an array of strings.`);let Q=[];for(let X of W.allow){if(typeof X!=="string")throw Error(`Subagent settings in '${J.filePath}' have invalid 'modelScope.allow'; expected an array of strings.`);let H=X.trim();if(H)Q.push(H)}if(Q.length===0)throw Error(`Subagent settings in '${J.filePath}' have invalid 'modelScope.allow'; expected a non-empty array of patterns.`);Z.allow=Q}if(Z.enforce===!0&&(!Z.allow||Z.allow.length===0))throw Error(`Subagent settings in '${J.filePath}' set modelScope.enforce without a non-empty 'allow' list; supply allowed model patterns or disable enforcement.`);return Object.keys(Z).length>0?Z:void 0}function V0($){let J=$.trim();if(J.startsWith('"')&&J.endsWith('"')||J.startsWith("'")&&J.endsWith("'"))return J.slice(1,-1);return J}function z0($){if(!$)return;let J=new Map,Z=$.trim().match(/^\{(.*)\}$/s);if(Z)for(let H of Z[1].split(",")){let K=H.trim().match(/^([\w-]+)\s*:\s*(.*)$/);if(!K)continue;J.set(K[1],V0(K[2]))}else for(let H of $.split(`
12
+ `)){let K=H.match(/^\s*([\w-]+):\s*(.*)$/);if(!K)continue;J.set(K[1],V0(K[2]))}let Q=J.get("scope"),X=J.get("path");if(Q!=="project"&&Q!=="user")return;if(!X)return;return{scope:Q,path:X}}function M1($){return $==="delegate"?"append":"replace"}function E1($){return $==="delegate"}function S1(){return!1}var j0={overrides:{}},R$=new WeakMap;function R1(){return A.join(D(),"chains")}var K$=null;function I1($){try{return JSON.parse(N.readFileSync($,"utf-8"))}catch{return null}}function y1($){try{return JSON.parse(N.readFileSync($,"utf-8"))}catch(J){if((typeof J==="object"&&J!==null&&"code"in J?J.code:void 0)==="ENOENT")return null;throw J}}function m$($){return $.length>0&&!A.isAbsolute($)&&$.split(/[\\/]/).every((J)=>J.length>0&&J!=="."&&J!=="..")}function D1($){let J=$.slice(4).trim();if(!J)return;let Z=J.match(/^(@?[^@]+(?:\/[^@]+)?)(?:@(.+))?$/)?.[1]??J;return m$(Z)?Z:void 0}function w1($){let J=$.indexOf("@"),W=$.indexOf("#"),Z=[J,W].filter((Q)=>Q>=0).sort((Q,X)=>Q-X)[0];return Z===void 0?$:$.slice(0,Z)}function x1($){let J=$.slice(4).trim();if(!J)return;let W="",Z="",Q=J.match(/^git@([^:]+):(.+)$/);if(Q)W=Q[1]??"",Z=Q[2]??"";else if(/^[a-z][a-z0-9+.-]*:\/\//i.test(J))try{let H=new URL(J);W=H.hostname,Z=H.pathname.replace(/^\/+/,"")}catch{return}else{let H=J.indexOf("/");if(H<0)return;W=J.slice(0,H),Z=J.slice(H+1)}let X=w1(Z).replace(/\.git$/,"").replace(/^\/+/,"");if(!W||!m$(W)||!m$(X)||X.split(/[\\/]/).length<2)return;return{host:W,repoPath:X}}function f1($,J){let W=$.trim();if(!W)return;if(W.startsWith("git:")){let Q=x1(W);return Q?A.join(J,"git",Q.host,Q.repoPath):void 0}if(W.startsWith("npm:")){let Q=D1(W);return Q?A.join(J,"npm","node_modules",Q):void 0}let Z=W.startsWith("file:")?W.slice(5):W;if(Z==="~")return S$.homedir();if(Z.startsWith("~/"))return A.join(S$.homedir(),Z.slice(2));if(A.isAbsolute(Z))return Z;if(Z==="."||Z===".."||Z.startsWith("./")||Z.startsWith("../"))return A.resolve(J,Z);return}function b1(){if(K$!==null)return K$;try{return K$=N.realpathSync(N1("npm root -g",{encoding:"utf-8",timeout:5000}).trim()),K$}catch{return K$="",null}}function A0($){if(!Array.isArray($))return[];return $.filter((J)=>typeof J==="string"&&J.trim().length>0)}function k1($){let J=A.join($,"package.json"),W=I1(J);if(!W||typeof W!=="object"||Array.isArray(W))return{agents:[],chains:[]};let Z=[],Q=W["dm-subagents"];if(Q&&typeof Q==="object"&&!Array.isArray(Q))Z.push(Q);let X=W.pi;if(X&&typeof X==="object"&&!Array.isArray(X)){let U=X.subagents;if(U&&typeof U==="object"&&!Array.isArray(U))Z.push(U)}let H=[],K=[];for(let U of Z){for(let G of A0(U.agents))H.push(A.resolve($,G));for(let G of A0(U.chains))K.push(A.resolve($,G))}return{agents:H,chains:K}}function v$($){let J=[];if(!N.existsSync($))return J;let W;try{W=N.readdirSync($,{withFileTypes:!0})}catch{return J}for(let Z of W){if(Z.name.startsWith("."))continue;if(!Z.isDirectory()&&!Z.isSymbolicLink())continue;if(Z.name.startsWith("@")){let Q=A.join($,Z.name),X;try{X=N.readdirSync(Q,{withFileTypes:!0})}catch{continue}for(let H of X){if(H.name.startsWith("."))continue;if(!H.isDirectory()&&!H.isSymbolicLink())continue;J.push(A.join(Q,H.name))}continue}J.push(A.join($,Z.name))}return J}function L0($,J){let W=y1($);if(!W||typeof W!=="object"||Array.isArray(W))return[];let Z=W.packages;if(!Array.isArray(Z))return[];let Q=[];for(let X of Z){let H=typeof X==="string"?X:typeof X==="object"&&X!==null&&typeof X.source==="string"?X.source:void 0;if(!H)continue;let K=f1(H,J);if(K)Q.push(K)}return Q}function P1($,J={includeUser:!0,includeProject:!0}){let W=D(),Z=H$($)??$,Q=[Z];if(J.includeProject){let Y=E(Z);Q.push(...v$(A.join(Y,"npm","node_modules")),...L0(A.join(Y,"settings.json"),Y))}if(J.includeUser)Q.push(...v$(A.join(W,"npm","node_modules")),...L0(A.join(W,"settings.json"),W));if(J.includeUser){let Y=b1();if(Y)Q.push(...v$(Y))}let X=new Set,H=new Set,K=new Set,U=[],G=[];for(let Y of Q){let q=A.resolve(Y);if(X.has(q))continue;X.add(q);let B=k1(q);for(let z of B.agents){if(H.has(z))continue;H.add(z),U.push(z)}for(let z of B.chains){if(K.has(z))continue;K.add(z),G.push(z)}}return{agents:U,chains:G}}function C0($){let J=[],W=[];for(let Z of $??[])if(Z.startsWith("mcp:"))J.push(Z.slice(4));else W.push(Z);return{...W.length>0?{tools:W}:{},...J.length>0?{mcpDirectTools:J}:{}}}function c$($){return{model:$.model,fallbackModels:$.fallbackModels?[...$.fallbackModels]:void 0,thinking:$.thinking,systemPromptMode:$.systemPromptMode,inheritProjectContext:$.inheritProjectContext,inheritSkills:$.inheritSkills,defaultContext:$.defaultContext,disabled:$.disabled,systemPrompt:$.systemPrompt,skills:$.skills?[...$.skills]:void 0,tools:$.tools?[...$.tools]:void 0,mcpDirectTools:$.mcpDirectTools?[...$.mcpDirectTools]:void 0,subagentOnlyExtensions:$.subagentOnlyExtensions?[...$.subagentOnlyExtensions]:void 0,completionGuard:$.completionGuard,toolBudget:$.toolBudget}}function H$($){let J=$;while(!0){if(U$(E(J))||U$(A.join(J,".agents")))return J;let W=A.dirname(J);if(W===J)return null;J=W}}function v1(){return A.join(D(),"settings.json")}function h1($){let J=H$($);return J?A.join(E(J),"settings.json"):null}function g1($){if(!N.existsSync($))return{};let J;try{J=N.readFileSync($,"utf-8")}catch(Z){let Q=Z instanceof Error?Z.message:String(Z);throw Error(`Failed to read settings file '${$}': ${Q}`,{cause:Z})}let W;try{W=JSON.parse(J)}catch(Z){let Q=Z instanceof Error?Z.message:String(Z);throw Error(`Failed to parse settings file '${$}': ${Q}`,{cause:Z})}if(!W||typeof W!=="object"||Array.isArray(W))throw Error(`Settings file '${$}' must contain a JSON object.`);return W}function T$($,J){if($===void 0)return;if($===!1)return!1;if(!Array.isArray($))throw Error(`Builtin override '${J.name}' in '${J.filePath}' has invalid '${J.field}'; expected an array of strings or false.`);let W=[];for(let Z of $){if(typeof Z!=="string")throw Error(`Builtin override '${J.name}' in '${J.filePath}' has invalid '${J.field}'; expected an array of strings or false.`);let Q=Z.trim();if(Q)W.push(Q)}return W}function m1($,J,W){if(!J||typeof J!=="object"||Array.isArray(J))throw Error(`Builtin override '${$}' in '${W}' must be an object.`);let Z=J,Q={};if("model"in Z)if(typeof Z.model==="string"||Z.model===!1)Q.model=Z.model;else throw Error(`Builtin override '${$}' in '${W}' has invalid 'model'; expected a string or false.`);if("thinking"in Z)if(typeof Z.thinking==="string"||Z.thinking===!1)Q.thinking=Z.thinking;else throw Error(`Builtin override '${$}' in '${W}' has invalid 'thinking'; expected a string or false.`);if("systemPromptMode"in Z)if(Z.systemPromptMode==="append"||Z.systemPromptMode==="replace")Q.systemPromptMode=Z.systemPromptMode;else throw Error(`Builtin override '${$}' in '${W}' has invalid 'systemPromptMode'; expected 'append' or 'replace'.`);if("inheritProjectContext"in Z)if(typeof Z.inheritProjectContext==="boolean")Q.inheritProjectContext=Z.inheritProjectContext;else throw Error(`Builtin override '${$}' in '${W}' has invalid 'inheritProjectContext'; expected a boolean.`);if("inheritSkills"in Z)if(typeof Z.inheritSkills==="boolean")Q.inheritSkills=Z.inheritSkills;else throw Error(`Builtin override '${$}' in '${W}' has invalid 'inheritSkills'; expected a boolean.`);if("defaultContext"in Z)if(Z.defaultContext==="fresh"||Z.defaultContext==="fork"||Z.defaultContext===!1)Q.defaultContext=Z.defaultContext;else throw Error(`Builtin override '${$}' in '${W}' has invalid 'defaultContext'; expected 'fresh', 'fork', or false.`);if("disabled"in Z)if(typeof Z.disabled==="boolean")Q.disabled=Z.disabled;else throw Error(`Builtin override '${$}' in '${W}' has invalid 'disabled'; expected a boolean.`);if("completionGuard"in Z)if(typeof Z.completionGuard==="boolean")Q.completionGuard=Z.completionGuard;else throw Error(`Builtin override '${$}' in '${W}' has invalid 'completionGuard'; expected a boolean.`);if("toolBudget"in Z)if(Z.toolBudget===!1)Q.toolBudget=!1;else if(Z.toolBudget&&typeof Z.toolBudget==="object"&&!Array.isArray(Z.toolBudget))Q.toolBudget=Z.toolBudget;else throw Error(`Builtin override '${$}' in '${W}' has invalid 'toolBudget'; expected an object or false.`);if("systemPrompt"in Z)if(typeof Z.systemPrompt==="string")Q.systemPrompt=Z.systemPrompt;else throw Error(`Builtin override '${$}' in '${W}' has invalid 'systemPrompt'; expected a string.`);let X=T$(Z.fallbackModels,{filePath:W,name:$,field:"fallbackModels"});if(X!==void 0)Q.fallbackModels=X;let H=T$(Z.skills,{filePath:W,name:$,field:"skills"});if(H!==void 0)Q.skills=H;let K=T$(Z.tools,{filePath:W,name:$,field:"tools"});if(K!==void 0)Q.tools=K;let U=T$(Z.subagentOnlyExtensions,{filePath:W,name:$,field:"subagentOnlyExtensions"});if(U!==void 0)Q.subagentOnlyExtensions=U;return Object.keys(Q).length>0?Q:void 0}function _0($){if(!$)return j0;let W=g1($).subagents;if(!W||typeof W!=="object"||Array.isArray(W))return j0;let Z=W,Q;if("disableBuiltins"in Z)if(typeof Z.disableBuiltins==="boolean")Q=Z.disableBuiltins;else throw Error(`Subagent settings in '${$}' have invalid 'disableBuiltins'; expected a boolean.`);let X;if("disableThinking"in Z)if(typeof Z.disableThinking==="boolean")X=Z.disableThinking;else throw Error(`Subagent settings in '${$}' have invalid 'disableThinking'; expected a boolean.`);let H;if("defaultModel"in Z)if(typeof Z.defaultModel==="string"&&Z.defaultModel.trim())H=Z.defaultModel.trim();else throw Error(`Subagent settings in '${$}' have invalid 'defaultModel'; expected a non-empty string.`);let K=B0(Z.modelScope,{filePath:$}),U={},G=Z.agentOverrides;if(!G||typeof G!=="object"||Array.isArray(G))return{overrides:U,defaultModel:H,disableBuiltins:Q,disableThinking:X,modelScope:K};for(let[Y,q]of Object.entries(G)){let B=m1(Y,q,$);if(B)U[Y]=B}return{overrides:U,defaultModel:H,disableBuiltins:Q,disableThinking:X,modelScope:K}}function c1($,J,W,Z){if(Z&&J.defaultModel!==void 0)return{type:"subagents.defaultModel",scope:"project",path:Z,model:J.defaultModel};return $.defaultModel!==void 0?{type:"subagents.defaultModel",scope:"user",path:W,model:$.defaultModel}:void 0}function M$($,J){if(!J)return $;return $.map((W)=>{if(W.model!==void 0)return W;let Z={...W,model:J.model,modelSource:J},Q=R$.get(W);if(Q)R$.set(Z,Q);return Z})}function E$($,J,W){let Z={...$,override:{...W,base:c$($)}};if(J.model!==void 0)Z.model=J.model===!1?void 0:J.model;if(J.fallbackModels!==void 0)Z.fallbackModels=J.fallbackModels===!1?void 0:[...J.fallbackModels];if(J.thinking!==void 0)Z.thinking=J.thinking===!1?void 0:J.thinking;if(J.systemPromptMode!==void 0)Z.systemPromptMode=J.systemPromptMode;if(J.inheritProjectContext!==void 0)Z.inheritProjectContext=J.inheritProjectContext;if(J.inheritSkills!==void 0)Z.inheritSkills=J.inheritSkills;if(J.defaultContext!==void 0)Z.defaultContext=J.defaultContext===!1?void 0:J.defaultContext;if(J.disabled!==void 0)Z.disabled=J.disabled;if(J.systemPrompt!==void 0)Z.systemPrompt=J.systemPrompt;if(J.skills!==void 0)Z.skills=J.skills===!1?void 0:[...J.skills];if(J.tools!==void 0){let{tools:Q,mcpDirectTools:X}=C0(J.tools===!1?[]:J.tools);Z.tools=Q,Z.mcpDirectTools=X}if(J.subagentOnlyExtensions!==void 0)Z.subagentOnlyExtensions=J.subagentOnlyExtensions===!1?void 0:[...J.subagentOnlyExtensions];if(J.completionGuard!==void 0)Z.completionGuard=J.completionGuard;if(J.toolBudget!==void 0)Z.toolBudget=J.toolBudget===!1?void 0:J.toolBudget;return Z}function u1($,J){if($.thinking===void 0)return $;return{...$,thinking:void 0,override:$.override??{...J,base:c$($)}}}function d1($,J,W,Z,Q){let X=W.disableBuiltins===!0&&Q!==null,H=W.disableBuiltins===void 0&&J.disableBuiltins===!0,K=W.disableThinking!==void 0&&Q!==null,U=K?W.disableThinking===!0:J.disableThinking===!0,G=K?{scope:"project",path:Q}:{scope:"user",path:Z},Y=(q,B)=>{if(!U||B)return q;return u1(q,G)};return $.map((q)=>{let B=W.overrides[q.name];if(B&&Q)return Y(E$(q,B,{scope:"project",path:Q}),B.thinking!==void 0);if(X&&Q)return Y(E$(q,{disabled:!0},{scope:"project",path:Q}),!1);let z=J.overrides[q.name];if(z)return Y(E$(q,z,{scope:"user",path:Z}),!K&&z.thinking!==void 0);if(H)return Y(E$(q,{disabled:!0},{scope:"user",path:Z}),!1);return Y(q,!1)})}function O0($,...J){let W=R$.get($);return W?J.some((Z)=>W.has(Z)):!1}function F0($,J,W){let Z,Q=!1,X=()=>{return Z??={...$},Z},H=(K,U,G)=>{if(O0($,...U))return;X()[K]=G,Q=!0};if(J.model!==void 0)H("model",["model"],J.model===!1?void 0:J.model);if(J.fallbackModels!==void 0)H("fallbackModels",["fallbackModels"],J.fallbackModels===!1?void 0:[...J.fallbackModels]);if(J.thinking!==void 0)H("thinking",["thinking"],J.thinking===!1?void 0:J.thinking);if(J.systemPromptMode!==void 0)H("systemPromptMode",["systemPromptMode"],J.systemPromptMode);if(J.inheritProjectContext!==void 0)H("inheritProjectContext",["inheritProjectContext"],J.inheritProjectContext);if(J.inheritSkills!==void 0)H("inheritSkills",["inheritSkills"],J.inheritSkills);if(J.defaultContext!==void 0)H("defaultContext",["defaultContext"],J.defaultContext===!1?void 0:J.defaultContext);if(J.disabled!==void 0&&$.disabled===void 0)X().disabled=J.disabled,Q=!0;if(J.skills!==void 0)H("skills",["skill","skills"],J.skills===!1?void 0:[...J.skills]);if(J.tools!==void 0&&!O0($,"tools")){let{tools:K,mcpDirectTools:U}=C0(J.tools===!1?[]:J.tools),G=X();G.tools=K,G.mcpDirectTools=U,Q=!0}if(J.subagentOnlyExtensions!==void 0)H("subagentOnlyExtensions",["subagentOnlyExtensions"],J.subagentOnlyExtensions===!1?void 0:[...J.subagentOnlyExtensions]);if(J.completionGuard!==void 0)H("completionGuard",["completionGuard"],J.completionGuard);if(J.toolBudget!==void 0)H("toolBudget",["toolBudget"],J.toolBudget===!1?void 0:J.toolBudget);if(!Q||!Z)return $;return Z.override={...W,base:c$($)},Z}function h$($,J,W,Z,Q){return $.map((X)=>{let H=W.overrides[X.name];if(H&&Q)return F0(X,H,{scope:"project",path:Q});let K=J.overrides[X.name];if(K)return F0(X,K,{scope:"user",path:Z});return X})}function u$($,J){let W=[];if(!N.existsSync($))return W;let Z;try{Z=N.readdirSync($,{withFileTypes:!0}).sort((Q,X)=>Q.name.localeCompare(X.name))}catch{return W}for(let Q of Z){let X=A.join($,Q.name);if(Q.isDirectory()){W.push(...u$(X,J));continue}if(!Q.isFile()&&!Q.isSymbolicLink())continue;if(!J(Q.name))continue;W.push(X)}return W}function p1($,J){let Z=A.relative($,J).split(A.sep).map((Q)=>Q.toLowerCase());if(A.basename($).toLowerCase()===".agents")Z.unshift(".agents");return Z.some((Q,X)=>Q===".agents"&&Z[X+1]==="skills")}function t($,J){let W=[];for(let Z of u$($,(Q)=>Q.endsWith(".md")&&!Q.endsWith(".chain.md"))){if(p1($,Z))continue;let Q;try{Q=N.readFileSync(Z,"utf-8")}catch{continue}let{frontmatter:X,body:H}=O$(Q);if(!X.name||!X.description)continue;let K=X.name,U=r(X.package,`Agent '${K}' package`);if(U.error)continue;let G=U.packageName,Y=a(K,G),q=X.tools?.split(",").map((L)=>L.trim()).filter(Boolean),B=[],z=[];if(q)for(let L of q)if(L.startsWith("mcp:"))B.push(L.slice(4));else z.push(L);let j=X.defaultReads?.split(",").map((L)=>L.trim()).filter(Boolean),O=(X.skill||X.skills)?.split(",").map((L)=>L.trim()).filter(Boolean),T=X.fallbackModels?.split(",").map((L)=>L.trim()).filter(Boolean),G$=X.systemPromptMode==="replace"?"replace":X.systemPromptMode==="append"?"append":M1(K),D$=X.inheritProjectContext==="true"?!0:X.inheritProjectContext==="false"?!1:E1(K),B$=X.inheritSkills==="true"?!0:X.inheritSkills==="false"?!1:S1(),V$=X.defaultContext==="fork"?"fork":X.defaultContext==="fresh"?"fresh":void 0,d;if(X.extensions!==void 0)d=X.extensions.split(",").map((L)=>L.trim()).filter(Boolean);let J$;if(X.subagentOnlyExtensions!==void 0)J$=X.subagentOnlyExtensions.split(",").map((L)=>L.trim()).filter(Boolean);let p={};for(let[L,P]of Object.entries(X))if(!t$.has(L))p[L]=P;let W$=Number(X.maxSubagentDepth),z$;if(X.toolBudget!==void 0&&X.toolBudget.trim()){let L=JSON.parse(X.toolBudget);if(!L||typeof L!=="object"||Array.isArray(L))throw Error(`Agent '${K}' has invalid toolBudget frontmatter; expected a JSON object.`);z$=L}let w$=X.completionGuard==="false"?!1:X.completionGuard==="true"?!0:void 0,S={name:Y,localName:K,packageName:G,description:X.description,tools:z.length>0?z:void 0,mcpDirectTools:B.length>0?B:void 0,model:X.model,fallbackModels:T&&T.length>0?T:void 0,thinking:X.thinking,systemPromptMode:G$,inheritProjectContext:D$,inheritSkills:B$,defaultContext:V$,systemPrompt:H,source:J,filePath:Z,skills:O&&O.length>0?O:void 0,extensions:d,subagentOnlyExtensions:J$,output:X.output,defaultReads:j&&j.length>0?j:void 0,defaultProgress:X.defaultProgress==="true",interactive:X.interactive==="true",maxSubagentDepth:Number.isInteger(W$)&&W$>=0?W$:void 0,completionGuard:w$,toolBudget:z$,memory:z0(X.memory),extraFields:Object.keys(p).length>0?p:void 0};R$.set(S,new Set(Object.keys(X))),W.push(S)}return W}function g$($,J){let W=new Map,Z=[];for(let Q of u$($,(X)=>X.endsWith(".chain.md")||X.endsWith(".chain.json"))){let X;try{X=N.readFileSync(Q,"utf-8")}catch{continue}try{let H=Q.endsWith(".chain.json")?G0(X,J,Q):Y0(X,J,Q),K=W.get(H.name);if(K&&K.filePath.endsWith(".chain.json")&&Q.endsWith(".chain.md"))continue;W.set(H.name,H)}catch(H){Z.push({source:J,filePath:Q,error:H instanceof Error?H.message:String(H)});continue}}return{chains:Array.from(W.values()),diagnostics:Z}}function U$($){try{return N.statSync($).isDirectory()}catch{return!1}}function n1($){let J=H$($);if(!J)return{readDirs:[],preferredDir:null};let W=A.join(J,".agents"),Z=A.join(E(J),"agents"),Q=[];if(U$(W))Q.push(W);if(U$(Z))Q.push(Z);return{readDirs:Q,preferredDir:Z}}function l1($){let J=H$($);if(!J)return{readDirs:[],preferredDir:null};let W=A.join(E(J),"chains");return{readDirs:U$(W)?[W]:[],preferredDir:W}}var o1=A.resolve(A.dirname(T1(import.meta.url)),"..","..","agents"),s1="DM_SUBAGENT_EXTRA_AGENT_DIRS";function i1(){let $=process.env[s1];if(!$)return[];return $.split(A.delimiter).map((J)=>J.trim()).filter((J)=>J.length>0)}function N0($){let J=A.join(D(),"agents"),W=A.join(S$.homedir(),".agents"),Z=R1(),{readDirs:Q,preferredDir:X}=n1($),{readDirs:H,preferredDir:K}=l1($),U=v1(),G=h1($),Y=_0(U),q=_0(G),B=c1(Y,q,U,G),z=P1($),j=d1(M$(t(o1,"builtin"),B),Y,q,U,G),_=h$(M$([...i1().flatMap((S)=>t(S,"user")),...t(J,"user"),...t(W,"user")],B),Y,q,U,G),O=new Map;for(let S of z.agents)for(let L of t(S,"package"))if(!O.has(L.name))O.set(L.name,L);let T=h$(M$(Array.from(O.values()),B),Y,q,U,G),G$=new Map;for(let S of Q)for(let L of t(S,"project"))G$.set(L.name,L);let D$=h$(M$(Array.from(G$.values()),B),Y,q,U,G),B$=new Map,V$=[],d=new Map;for(let S of z.chains){let L=g$(S,"package");V$.push(...L.diagnostics);for(let P of L.chains)if(!d.has(P.name))d.set(P.name,P)}let J$=[];for(let S of H){let L=g$(S,"project");J$.push(...L.diagnostics);for(let P of L.chains)B$.set(P.name,P)}let p=g$(Z,"user"),W$=[...Array.from(d.values()),...p.chains,...Array.from(B$.values())],z$=[...V$,...p.diagnostics,...J$],w$=process.env.DM_CODING_AGENT_DIR?J:N.existsSync(W)?W:J;return{builtin:j,package:T,user:_,project:D$,chains:W$,chainDiagnostics:z$,userDir:w$,projectDir:X,userChainDir:Z,projectChainDir:K,userSettingsPath:U,projectSettingsPath:G}}import*as M from"node:fs";import*as g from"node:path";import{createRequire as d$}from"node:module";import*as e from"node:path";import{fileURLToPath as T0}from"node:url";import*as b from"node:os";import*as x from"node:path";var b8=x.join(b.homedir(),".config","mcp","mcp.json"),k8={cursor:[x.join(b.homedir(),".cursor","mcp.json")],"claude-code":[x.join(b.homedir(),".claude","mcp.json"),x.join(b.homedir(),".claude.json"),x.join(b.homedir(),".claude","claude_desktop_config.json")],"claude-desktop":[x.join(b.homedir(),"Library","Application Support","Claude","claude_desktop_config.json")],codex:[x.join(b.homedir(),".codex","config.json")],windsurf:[x.join(b.homedir(),".windsurf","mcp.json")],vscode:[".vscode/mcp.json"]};var i8=e.join(e.dirname(T0(import.meta.url)),"subagent-prompt-runtime.ts"),r8=e.join(e.dirname(T0(import.meta.url)),"..","..","extension","fanout-child.ts");import*as $$ from"node:fs";import*as h from"node:path";var a1="@duckmind/dm-coding-agent";function t1($){let J=h.dirname($);while(J!==h.dirname(J)){let W=h.join(J,"package.json");if($$.existsSync(W)){if(JSON.parse($$.readFileSync(W,"utf-8")).name===a1)return J}J=h.dirname(J)}return}function M0(){try{let $=process.argv[1];return $?t1($$.realpathSync($)):void 0}catch{return}}import*as u from"node:path";import*as e1 from"node:fs";import*as c from"node:path";var $J=[10,25,50,100,200,500,1000,2000,4000],JJ=new Set(["EACCES","EBUSY","EPERM"]),E0=typeof SharedArrayBuffer<"u"?new SharedArrayBuffer(4):void 0,S0=E0?new Int32Array(E0):void 0;function WJ($){if($<=0)return;if(S0)try{Atomics.wait(S0,0,0,$);return}catch{}let J=Date.now()+$;while(Date.now()<J);}function ZJ($){let J=$?.code;return typeof J==="string"&&JJ.has(J)}function QJ($,J,W,Z,Q){for(let X=0;;X++)try{$.renameSync(J,W);return}catch(H){let K=Z[X];if(K===void 0||!ZJ(H))throw H;Q(K)}}function XJ($={}){let J=$.fs??e1,W=$.now??Date.now,Z=$.pid??process.pid,Q=$.random??Math.random,H=$.retryRenameErrors??process.platform==="win32"?$.retryDelaysMs??$J:[],K=$.wait??WJ;return(U,G)=>{J.mkdirSync(c.dirname(U),{recursive:!0});let Y=c.join(c.dirname(U),`.${c.basename(U)}.${Z}.${W()}.${Q().toString(36).slice(2)}.tmp`);try{J.writeFileSync(Y,JSON.stringify(G,null,2),"utf-8"),QJ(J,Y,U,H,K)}finally{J.rmSync(Y,{force:!0})}}}var HJ=XJ();var C2=u.join(w,"nested-subagent-events");var KJ=d$(import.meta.url),I$=M0();function UJ($){if(!M.existsSync($))return;let J=g.dirname($),Z=JSON.parse(M.readFileSync($,"utf-8")).bin,X=[typeof Z==="string"?Z:Z?.jiti??Object.values(Z??{})[0],"lib/jiti-cli.mjs"].filter((H)=>Boolean(H));for(let H of X){let K=g.resolve(J,H);if(M.existsSync(K))return K}return}function qJ(){let $=[()=>KJ.resolve("jiti/package.json"),()=>I$?d$(g.join(I$,"package.json")).resolve("jiti/package.json"):void 0,()=>{if(!process.argv[1])return;let J=M.realpathSync(process.argv[1]);return d$(J).resolve("jiti/package.json")},()=>I$?g.join(I$,"node_modules","jiti","package.json"):void 0];for(let J of $)try{let W=J();if(!W)continue;let Z=UJ(W);if(Z)return Z}catch{}return}var YJ=qJ();function R0(){return YJ!==void 0}var GJ="native:dm-subagents-supervisor-channel";function BJ($){if($==="off"||$==="always"||$==="fork-only")return $;return"always"}function VJ($){if(!$||typeof $!=="object"||Array.isArray($))return{mode:"always",instructionFile:""};return{mode:BJ($.mode),instructionFile:typeof $.instructionFile==="string"?$.instructionFile:""}}function zJ($,J,W){if($==="off")return"bridge mode is off";if($==="fork-only"&&J!=="fork")return"bridge mode is fork-only and context is not fork";if(!W)return"orchestrator target is not available";return}function I0($){let W=VJ($.config).mode,Z=$.orchestratorTarget?.trim(),Q=W!=="off"&&!(W==="fork-only"&&$.context!=="fork"),X=zJ(W,$.context,Z);return{active:X===void 0,mode:W,wantsIntercom:Q,supervisorChannelAvailable:!0,extensionDir:GJ,...Z?{orchestratorTarget:Z}:{},...X?{reason:X}:{}}}var jJ={tempRootDir:w,asyncDir:_$,resultsDir:L$,chainRunsDir:b$},AJ={isAsyncAvailable:R0,discoverAgentsAll:N0,discoverAvailableSkills:l$,diagnoseIntercomBridge:I0};function D0($){return $ instanceof Error?`${$.name}: ${$.message}`:String($)}function Y$($,J){try{return J()}catch(W){return`- ${$}: failed — ${D0(W)}`}}function y$($,J){try{if(!k.existsSync(J))return`- ${$}: missing (${J})`;if(!k.statSync(J).isDirectory())throw Error(`not a directory: ${J}`);return k.accessSync(J,k.constants.R_OK|k.constants.W_OK),`- ${$}: ok (${J})`}catch(W){return`- ${$}: failed (${J}) — ${D0(W)}`}}function y0($){return`builtin ${$.builtin}, package ${$.package}, user ${$.user}, project ${$.project}`}function LJ($){let J=new Map;for(let Q of $)J.set(Q.source,(J.get(Q.source)??0)+1);let Z=["project","project-settings","project-package","user","user-settings","user-package","extension","builtin","unknown"].map((Q)=>`${Q} ${J.get(Q)??0}`).filter((Q)=>!Q.endsWith(" 0"));return Z.length>0?Z.join(", "):"none"}function _J($){if($.requestedSessionDir)return q$.resolve($.expandTilde?.($.requestedSessionDir)??$.requestedSessionDir);if($.config.defaultSessionDir)return q$.resolve($.expandTilde?.($.config.defaultSessionDir)??$.config.defaultSessionDir);return"not configured"}function OJ($){let J=$.currentSessionFile??null,W=[Y$("configured session dir",()=>`- configured session dir: ${_J($)}`),`- current session file: ${J??"not available"}`,`- current session dir: ${J?q$.dirname(J):"not available"}`,`- current session id: ${$.currentSessionId??$.state.currentSessionId??"not available"}`];if($.sessionError)W.push(`- session manager: failed — ${$.sessionError}`);return W}function FJ($,J){return[Y$("agents/chains",()=>{let W=J.discoverAgentsAll($.cwd),Z={builtin:W.builtin.length,package:W.package?.length??0,user:W.user.length,project:W.project.length},Q=W.chains.reduce((X,H)=>{return X[H.source]+=1,X},{builtin:0,package:0,user:0,project:0});return[`- agents: total ${Z.builtin+Z.package+Z.user+Z.project} (${y0(Z)})`,`- chains: total ${W.chains.length} (${y0(Q)})`].join(`
13
+ `)}),Y$("skills",()=>{let W=J.discoverAvailableSkills($.cwd);return`- skills: total ${W.length} (${LJ(W)})`})]}function CJ($,J){return[`- bridge: ${$.active?"active":"inactive"}${$.reason?` (${$.reason})`:""}`,`- mode: ${$.mode}; context: ${J??"unspecified"}`,`- orchestrator target: ${$.orchestratorTarget??"not available"}`,`- supervisor channel: ${$.supervisorChannelAvailable?"available":"unavailable"} (${$.extensionDir})`]}function NJ(){let $=[],W=(process.env.DM_SUBAGENT_PARENT_SESSION??"").trim();if(W)$.push(`- parent session: set (${W})`);else $.push("- parent session: not set — ask forwarding from subprocess children will not reach a parent UI");let Z=process.env.DM_SUBAGENT_CHILD==="1";return $.push(`- subagent process: ${Z?"yes (DM_SUBAGENT_CHILD=1)":"no"}`),$}function I9($){let J=$.paths??jJ,W={...AJ,...$.deps};return["Subagents doctor report","","Runtime",`- cwd: ${$.cwd}`,Y$("async support",()=>`- async support: ${W.isAsyncAvailable()?"available":"unavailable"}`),...OJ($),"","Filesystem",y$("temp root",J.tempRootDir),y$("async runs",J.asyncDir),y$("results",J.resultsDir),y$("chain runs",J.chainRunsDir),"","Discovery",...FJ($,W),"","Permission system",...NJ(),"","Intercom bridge",...Y$("intercom bridge",()=>CJ(W.diagnoseIntercomBridge({config:$.config.intercomBridge,context:$.context,orchestratorTarget:$.orchestratorTarget,cwd:$.cwd}),$.context).join(`
14
+ `)).split(`
15
+ `)].join(`
16
+ `)}export{I9 as buildDoctorReport};