@duckmind/dm-linux-x64 0.61.4 → 0.61.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/dm +0 -0
  2. package/extensions/.dm-extensions.json +211 -67
  3. package/extensions/dm-subagents/agents/claude-code-writer.md +15 -0
  4. package/extensions/dm-subagents/agents/claude-code.md +15 -0
  5. package/extensions/dm-subagents/agents/codex-exec-writer.md +15 -0
  6. package/extensions/dm-subagents/agents/codex-exec.md +15 -0
  7. package/extensions/dm-subagents/agents/cursor-agent-writer.md +14 -0
  8. package/extensions/dm-subagents/agents/cursor-agent.md +14 -0
  9. package/extensions/dm-subagents/agents/delegate.md +3 -2
  10. package/extensions/dm-subagents/agents/oracle.md +10 -5
  11. package/extensions/dm-subagents/agents/researcher.md +2 -2
  12. package/extensions/dm-subagents/agents/reviewer.md +17 -7
  13. package/extensions/dm-subagents/agents/scout.md +5 -5
  14. package/extensions/dm-subagents/agents/worker.md +6 -2
  15. package/extensions/dm-subagents/async-retention-discovery-worker.mjs +167 -0
  16. package/extensions/dm-subagents/index.js +4 -0
  17. package/extensions/dm-subagents/inspector-runner.mjs +10 -0
  18. package/extensions/dm-subagents/install.mjs +3 -2
  19. package/extensions/dm-subagents/package.json +2 -2
  20. package/extensions/dm-subagents/prompts/council.md +60 -0
  21. package/extensions/dm-subagents/prompts/parallel-review.md +5 -1
  22. package/extensions/dm-subagents/prompts/review-loop.md +13 -7
  23. package/extensions/dm-subagents/skills/council-mode/SKILL.md +59 -0
  24. package/extensions/dm-subagents/skills/council-mode/references/pass-contracts.md +150 -0
  25. package/extensions/dm-subagents/skills/dm-subagents/SKILL.md +96 -911
  26. package/extensions/dm-subagents/skills/dm-subagents/references/constraints-and-recipes.md +70 -0
  27. package/extensions/dm-subagents/skills/dm-subagents/references/execution-controls.md +539 -0
  28. package/extensions/dm-subagents/skills/dm-subagents/references/management-authoring-rpc.md +161 -0
  29. package/extensions/dm-subagents/skills/dm-subagents/references/multi-lane-orchestration.md +51 -0
  30. package/extensions/dm-subagents/skills/dm-subagents/references/prompting-and-roles.md +295 -0
  31. package/extensions/dm-subagents/skills/dm-subagents/references/review-and-validation.md +73 -0
  32. package/extensions/dm-subagents/src/agents/agent-management.js +716 -484
  33. package/extensions/dm-subagents/src/agents/agent-refinements.js +563 -0
  34. package/extensions/dm-subagents/src/agents/agent-serializer.js +70 -5
  35. package/extensions/dm-subagents/src/agents/agents.js +1447 -299
  36. package/extensions/dm-subagents/src/agents/builtin-names.js +15 -0
  37. package/extensions/dm-subagents/src/agents/chain-serializer.js +12 -7
  38. package/extensions/dm-subagents/src/agents/frontmatter.js +64 -14
  39. package/extensions/dm-subagents/src/agents/identity.js +1 -1
  40. package/extensions/dm-subagents/src/agents/proactive-skills.js +14 -11
  41. package/extensions/dm-subagents/src/agents/runtime-agent-events.js +49 -0
  42. package/extensions/dm-subagents/src/agents/runtime-agent-registry.js +412 -0
  43. package/extensions/dm-subagents/src/agents/skills.js +52 -35
  44. package/extensions/dm-subagents/src/api/agents.js +6 -0
  45. package/extensions/dm-subagents/src/api/background-work.js +151 -0
  46. package/extensions/dm-subagents/src/api/capability-ceiling.js +12 -0
  47. package/extensions/dm-subagents/src/api/control-channel.js +3 -0
  48. package/extensions/dm-subagents/src/api/delegation.js +5 -0
  49. package/extensions/dm-subagents/src/api/dm-args.js +3 -0
  50. package/extensions/dm-subagents/src/api/external-job-provider.js +137 -0
  51. package/extensions/dm-subagents/src/api/external-runs.js +233 -0
  52. package/extensions/dm-subagents/src/api/intercom-bridge.js +3 -0
  53. package/extensions/dm-subagents/src/api/preflight.js +322 -0
  54. package/extensions/dm-subagents/src/api/project-panes.js +11 -0
  55. package/extensions/dm-subagents/src/api/shared-types.js +4 -0
  56. package/extensions/dm-subagents/src/extension/config.js +175 -0
  57. package/extensions/dm-subagents/src/extension/control-notices.js +4 -43
  58. package/extensions/dm-subagents/src/extension/doctor.js +71 -17
  59. package/extensions/dm-subagents/src/extension/fanout-child.js +49 -32
  60. package/extensions/dm-subagents/src/extension/index.js +711 -265
  61. package/extensions/dm-subagents/src/extension/public-execution.js +114 -0
  62. package/extensions/dm-subagents/src/extension/rpc.js +427 -22
  63. package/extensions/dm-subagents/src/extension/schemas.js +158 -65
  64. package/extensions/dm-subagents/src/extension/steering-notices.js +23 -0
  65. package/extensions/dm-subagents/src/extension/subagent-guide.js +31 -0
  66. package/extensions/dm-subagents/src/extension/tool-description.js +92 -74
  67. package/extensions/dm-subagents/src/extension/tool-result.js +7 -0
  68. package/extensions/dm-subagents/src/inspectors/herdr/actions.js +218 -0
  69. package/extensions/dm-subagents/src/inspectors/herdr/client.js +123 -0
  70. package/extensions/dm-subagents/src/inspectors/herdr/focus.js +47 -0
  71. package/extensions/dm-subagents/src/inspectors/herdr/inspector-runner.js +160 -0
  72. package/extensions/dm-subagents/src/inspectors/herdr/project-panes.js +618 -0
  73. package/extensions/dm-subagents/src/inspectors/herdr/session-roots-codec.js +21 -0
  74. package/extensions/dm-subagents/src/inspectors/herdr/shell-command.js +15 -0
  75. package/extensions/dm-subagents/src/integrations/herdr-status.js +377 -0
  76. package/extensions/dm-subagents/src/intercom/intercom-bridge.js +17 -13
  77. package/extensions/dm-subagents/src/intercom/native-supervisor-channel.js +371 -79
  78. package/extensions/dm-subagents/src/intercom/result-intercom.js +47 -7
  79. package/extensions/dm-subagents/src/missions/actions.js +394 -0
  80. package/extensions/dm-subagents/src/missions/goal-driver.js +149 -0
  81. package/extensions/dm-subagents/src/missions/lifecycle.js +331 -0
  82. package/extensions/dm-subagents/src/missions/store.js +548 -0
  83. package/extensions/dm-subagents/src/missions/types.js +9 -0
  84. package/extensions/dm-subagents/src/missions/workflow-state.js +245 -0
  85. package/extensions/dm-subagents/src/policy/authority.js +37 -0
  86. package/extensions/dm-subagents/src/profiles/profiles.js +36 -18
  87. package/extensions/dm-subagents/src/runs/background/active-async-capacity.js +427 -0
  88. package/extensions/dm-subagents/src/runs/background/active-run-index.js +122 -0
  89. package/extensions/dm-subagents/src/runs/background/async-execution.js +925 -137
  90. package/extensions/dm-subagents/src/runs/background/async-job-tracker.js +515 -148
  91. package/extensions/dm-subagents/src/runs/background/async-resume.js +378 -51
  92. package/extensions/dm-subagents/src/runs/background/async-retention.js +828 -0
  93. package/extensions/dm-subagents/src/runs/background/async-status-snapshot.js +31 -0
  94. package/extensions/dm-subagents/src/runs/background/async-status.js +259 -22
  95. package/extensions/dm-subagents/src/runs/background/auto-drain.js +46 -0
  96. package/extensions/dm-subagents/src/runs/background/chain-append.js +50 -15
  97. package/extensions/dm-subagents/src/runs/background/chain-root-attachment.js +67 -12
  98. package/extensions/dm-subagents/src/runs/background/completion-batcher.js +5 -1
  99. package/extensions/dm-subagents/src/runs/background/completion-dedupe.js +3 -11
  100. package/extensions/dm-subagents/src/runs/background/completion-replay.js +245 -0
  101. package/extensions/dm-subagents/src/runs/background/control-channel.js +423 -36
  102. package/extensions/dm-subagents/src/runs/background/fleet-view.js +132 -59
  103. package/extensions/dm-subagents/src/runs/background/index-segment.js +38 -0
  104. package/extensions/dm-subagents/src/runs/background/inspect-rpc.js +373 -0
  105. package/extensions/dm-subagents/src/runs/background/notify.js +357 -57
  106. package/extensions/dm-subagents/src/runs/background/owned-process-tree.js +86 -0
  107. package/extensions/dm-subagents/src/runs/background/process-terminal.js +269 -0
  108. package/extensions/dm-subagents/src/runs/background/result-delivery-ownership.js +34 -0
  109. package/extensions/dm-subagents/src/runs/background/result-files.js +469 -0
  110. package/extensions/dm-subagents/src/runs/background/result-watcher.js +540 -75
  111. package/extensions/dm-subagents/src/runs/background/resume-guidance.js +44 -0
  112. package/extensions/dm-subagents/src/runs/background/retained-children.js +119 -0
  113. package/extensions/dm-subagents/src/runs/background/run-id-query.js +5 -0
  114. package/extensions/dm-subagents/src/runs/background/run-id-resolver.js +93 -9
  115. package/extensions/dm-subagents/src/runs/background/run-status.js +303 -32
  116. package/extensions/dm-subagents/src/runs/background/scheduled-runs.js +784 -376
  117. package/extensions/dm-subagents/src/runs/background/stale-run-reconciler.js +75 -34
  118. package/extensions/dm-subagents/src/runs/background/steering.js +221 -0
  119. package/extensions/dm-subagents/src/runs/background/subagent-runner.js +3106 -844
  120. package/extensions/dm-subagents/src/runs/background/subagent-wait.js +529 -0
  121. package/extensions/dm-subagents/src/runs/background/terminal-run-index.js +106 -0
  122. package/extensions/dm-subagents/src/runs/background/top-level-async.js +1 -1
  123. package/extensions/dm-subagents/src/runs/background/wait-completions.js +155 -0
  124. package/extensions/dm-subagents/src/runs/background/wait-config.js +46 -0
  125. package/extensions/dm-subagents/src/runs/background/wait-subscriptions.js +278 -0
  126. package/extensions/dm-subagents/src/runs/background/wait-tool.js +47 -0
  127. package/extensions/dm-subagents/src/runs/foreground/async-dismiss-action.js +81 -0
  128. package/extensions/dm-subagents/src/runs/foreground/async-steering-action.js +245 -0
  129. package/extensions/dm-subagents/src/runs/foreground/async-stop-action.js +74 -0
  130. package/extensions/dm-subagents/src/runs/foreground/execution.js +1401 -342
  131. package/extensions/dm-subagents/src/runs/foreground/foreground-control.js +133 -0
  132. package/extensions/dm-subagents/src/runs/foreground/foreground-history.js +148 -0
  133. package/extensions/dm-subagents/src/runs/foreground/prompt-audit.js +139 -0
  134. package/extensions/dm-subagents/src/runs/foreground/subagent-executor.js +4278 -1441
  135. package/extensions/dm-subagents/src/runs/foreground/workflow-detach-reconcile.js +278 -0
  136. package/extensions/dm-subagents/src/runs/foreground/workflow-foreground-steering.js +155 -0
  137. package/extensions/dm-subagents/src/runs/shared/abort-recovery.js +97 -0
  138. package/extensions/dm-subagents/src/runs/shared/acceptance.js +597 -148
  139. package/extensions/dm-subagents/src/runs/shared/agent-contract.js +35 -0
  140. package/extensions/dm-subagents/src/runs/shared/async-status-projection.js +472 -0
  141. package/extensions/dm-subagents/src/runs/shared/background-process-options.js +6 -0
  142. package/extensions/dm-subagents/src/runs/shared/capability-ceiling.js +175 -0
  143. package/extensions/dm-subagents/src/runs/shared/child-identity.js +32 -0
  144. package/extensions/dm-subagents/src/runs/shared/child-launch-plan.js +65 -0
  145. package/extensions/dm-subagents/src/runs/shared/child-protocol.js +447 -0
  146. package/extensions/dm-subagents/src/runs/shared/claude-code-adapter.js +120 -0
  147. package/extensions/dm-subagents/src/runs/shared/codex-exec-adapter.js +129 -0
  148. package/extensions/dm-subagents/src/runs/shared/completion-evidence.js +40 -0
  149. package/extensions/dm-subagents/src/runs/shared/completion-guard.js +140 -83
  150. package/extensions/dm-subagents/src/runs/shared/context-mode.js +38 -0
  151. package/extensions/dm-subagents/src/runs/shared/cursor-agent-adapter.js +101 -0
  152. package/extensions/dm-subagents/src/runs/shared/dm-args.js +445 -72
  153. package/extensions/dm-subagents/src/runs/shared/dm-spawn.js +27 -16
  154. package/extensions/dm-subagents/src/runs/shared/dynamic-fanout.js +19 -6
  155. package/extensions/dm-subagents/src/runs/shared/extension-bindings.js +81 -0
  156. package/extensions/dm-subagents/src/runs/shared/external-cli-contract.js +134 -0
  157. package/extensions/dm-subagents/src/runs/shared/external-cli-preflight.js +98 -0
  158. package/extensions/dm-subagents/src/runs/shared/external-cli-runner.js +419 -0
  159. package/extensions/dm-subagents/src/runs/shared/external-job-bridge.js +404 -0
  160. package/extensions/dm-subagents/src/runs/shared/external-job-runner.js +334 -0
  161. package/extensions/dm-subagents/src/runs/shared/fast-mode-extension.js +8 -0
  162. package/extensions/dm-subagents/src/runs/shared/host-step-status.js +228 -0
  163. package/extensions/dm-subagents/src/runs/shared/lane-metadata.js +104 -0
  164. package/extensions/dm-subagents/src/runs/shared/launch-cwd.js +17 -0
  165. package/extensions/dm-subagents/src/runs/shared/llm-intent-arbiter.js +190 -0
  166. package/extensions/dm-subagents/src/runs/shared/long-running-guard.js +48 -3
  167. package/extensions/dm-subagents/src/runs/shared/mcp-config-sources.js +387 -0
  168. package/extensions/dm-subagents/src/runs/shared/mcp-direct-tool-allowlist.js +212 -137
  169. package/extensions/dm-subagents/src/runs/shared/mcp-direct-tool-grant.js +131 -0
  170. package/extensions/dm-subagents/src/runs/shared/model-exclusions.js +207 -0
  171. package/extensions/dm-subagents/src/runs/shared/model-fallback.js +225 -55
  172. package/extensions/dm-subagents/src/runs/shared/model-scope.js +85 -28
  173. package/extensions/dm-subagents/src/runs/shared/mutation-evidence.js +182 -0
  174. package/extensions/dm-subagents/src/runs/shared/nested-events.js +264 -102
  175. package/extensions/dm-subagents/src/runs/shared/nested-render.js +15 -5
  176. package/extensions/dm-subagents/src/runs/shared/orca-progress-tabs.js +505 -0
  177. package/extensions/dm-subagents/src/runs/shared/parallel-handoff.js +653 -0
  178. package/extensions/dm-subagents/src/runs/shared/parallel-utils.js +29 -12
  179. package/extensions/dm-subagents/src/runs/shared/permissions.js +108 -0
  180. package/extensions/dm-subagents/src/runs/shared/process-signal.js +13 -0
  181. package/extensions/dm-subagents/src/runs/shared/run-fanout-budget.js +257 -0
  182. package/extensions/dm-subagents/src/runs/shared/run-history.js +133 -13
  183. package/extensions/dm-subagents/src/runs/shared/runtime-acknowledged-extensions.js +62 -0
  184. package/extensions/dm-subagents/src/runs/shared/session-lease.js +225 -0
  185. package/extensions/dm-subagents/src/runs/shared/single-output.js +129 -27
  186. package/extensions/dm-subagents/src/runs/shared/spawn-budget.js +95 -0
  187. package/extensions/dm-subagents/src/runs/shared/structured-output.js +129 -10
  188. package/extensions/dm-subagents/src/runs/shared/subagent-control.js +66 -11
  189. package/extensions/dm-subagents/src/runs/shared/subagent-prompt-runtime.js +548 -70
  190. package/extensions/dm-subagents/src/runs/shared/subagent-startup-retry.js +50 -0
  191. package/extensions/dm-subagents/src/runs/shared/task-intent.js +130 -0
  192. package/extensions/dm-subagents/src/runs/shared/tool-availability.js +59 -0
  193. package/extensions/dm-subagents/src/runs/shared/tool-budget.js +7 -5
  194. package/extensions/dm-subagents/src/runs/shared/tool-timeout.js +64 -0
  195. package/extensions/dm-subagents/src/runs/shared/usage-budget.js +74 -0
  196. package/extensions/dm-subagents/src/runs/shared/workflow-graph.js +22 -0
  197. package/extensions/dm-subagents/src/runs/shared/worktree-cleanup-plan.js +721 -0
  198. package/extensions/dm-subagents/src/runs/shared/worktree.js +168 -19
  199. package/extensions/dm-subagents/src/shared/accessible-dir.js +35 -0
  200. package/extensions/dm-subagents/src/shared/agent-stream-options.js +3 -0
  201. package/extensions/dm-subagents/src/shared/artifacts.js +170 -11
  202. package/extensions/dm-subagents/src/shared/atomic-json.js +36 -38
  203. package/extensions/dm-subagents/src/shared/capacity-resilient-json.js +77 -0
  204. package/extensions/dm-subagents/src/shared/child-session-name.js +15 -0
  205. package/extensions/dm-subagents/src/shared/child-transcript.js +57 -2
  206. package/extensions/dm-subagents/src/shared/completion-owner.js +7 -0
  207. package/extensions/dm-subagents/src/shared/display-text.js +142 -0
  208. package/extensions/dm-subagents/src/shared/extension-context.js +17 -0
  209. package/extensions/dm-subagents/src/shared/file-coalescer.js +9 -0
  210. package/extensions/dm-subagents/src/shared/file-system-retry.js +56 -0
  211. package/extensions/dm-subagents/src/shared/fork-context.js +96 -33
  212. package/extensions/dm-subagents/src/shared/formatters.js +21 -7
  213. package/extensions/dm-subagents/src/shared/launch-contract.js +94 -0
  214. package/extensions/dm-subagents/src/shared/model-info.js +10 -5
  215. package/extensions/dm-subagents/src/shared/node-executable.js +19 -0
  216. package/extensions/dm-subagents/src/shared/prompt-resources.js +10 -0
  217. package/extensions/dm-subagents/src/shared/pruned-fork.js +427 -0
  218. package/extensions/dm-subagents/src/shared/session-file-trust.js +19 -0
  219. package/extensions/dm-subagents/src/shared/session-tokens.js +14 -3
  220. package/extensions/dm-subagents/src/shared/settings.js +39 -47
  221. package/extensions/dm-subagents/src/shared/shortcuts.js +16 -0
  222. package/extensions/dm-subagents/src/shared/status-format.js +9 -2
  223. package/extensions/dm-subagents/src/shared/thinking-ceiling.js +41 -0
  224. package/extensions/dm-subagents/src/shared/types.js +47 -7
  225. package/extensions/dm-subagents/src/shared/utf8.js +12 -0
  226. package/extensions/dm-subagents/src/shared/utils.js +151 -131
  227. package/extensions/dm-subagents/src/shared/watch-strategy.js +3 -0
  228. package/extensions/dm-subagents/src/shared/workflow-child-permit.js +84 -0
  229. package/extensions/dm-subagents/src/slash/delegation-adapters.js +274 -0
  230. package/extensions/dm-subagents/src/slash/delegation-json.js +113 -0
  231. package/extensions/dm-subagents/src/slash/delegation-request.js +152 -0
  232. package/extensions/dm-subagents/src/slash/prompt-template-bridge.js +294 -243
  233. package/extensions/dm-subagents/src/slash/prompt-workflows.js +35 -73
  234. package/extensions/dm-subagents/src/slash/selector.js +101 -0
  235. package/extensions/dm-subagents/src/slash/slash-bridge.js +17 -1
  236. package/extensions/dm-subagents/src/slash/slash-commands.js +722 -732
  237. package/extensions/dm-subagents/src/slash/slash-live-state.js +37 -19
  238. package/extensions/dm-subagents/src/slash/subagents-admin.js +410 -0
  239. package/extensions/dm-subagents/src/tui/fleet-status.js +824 -0
  240. package/extensions/dm-subagents/src/tui/fleet-transcript.js +479 -0
  241. package/extensions/dm-subagents/src/tui/fleet.js +1326 -0
  242. package/extensions/dm-subagents/src/tui/render-helpers.js +22 -0
  243. package/extensions/dm-subagents/src/tui/render.js +1511 -261
  244. package/extensions/dm-subagents/src/watchdog/change-signature.js +220 -0
  245. package/extensions/dm-subagents/src/watchdog/child-status.js +151 -0
  246. package/extensions/dm-subagents/src/watchdog/emission-guard.js +90 -0
  247. package/extensions/dm-subagents/src/watchdog/lsp-diagnostics.js +484 -0
  248. package/extensions/dm-subagents/src/watchdog/model-selection.js +154 -0
  249. package/extensions/dm-subagents/src/watchdog/permission-arbiter.js +138 -0
  250. package/extensions/dm-subagents/src/watchdog/register-child.js +112 -0
  251. package/extensions/dm-subagents/src/watchdog/register-main.js +419 -0
  252. package/extensions/dm-subagents/src/watchdog/render.js +54 -0
  253. package/extensions/dm-subagents/src/watchdog/review.js +251 -0
  254. package/extensions/dm-subagents/src/watchdog/runtime.js +803 -0
  255. package/extensions/dm-subagents/src/watchdog/scope.js +56 -0
  256. package/extensions/dm-subagents/src/watchdog/settings.js +515 -0
  257. package/extensions/dm-subagents/src/watchdog/tool-actions.js +151 -0
  258. package/extensions/dm-subagents/src/watchdog/turn-delta.js +169 -0
  259. package/extensions/dm-subagents/src/watchdog/types.js +29 -0
  260. package/extensions/dm-subagents/src/watchdog/warning-format.js +58 -0
  261. package/extensions/dm-subagents/src/workflows/chat-progress.js +116 -0
  262. package/extensions/dm-subagents/src/workflows/host-command.js +227 -0
  263. package/extensions/dm-subagents/src/workflows/scripted-workflow.js +2011 -0
  264. package/extensions/dm-subagents/src/workflows/workflow-child-summary.js +116 -0
  265. package/extensions/dm-subagents/src/workflows/workflow-preflight.js +243 -0
  266. package/extensions/dm-subagents/src/workflows/workflow-receipt.js +387 -0
  267. package/extensions/dm-subagents/src/workflows/workflow-settlement.js +189 -0
  268. package/package.json +4 -3
  269. package/extensions/dm-fff/package.json +0 -21
  270. package/extensions/dm-fff/src/index.js +0 -691
  271. package/extensions/dm-fff/src/query.js +0 -60
  272. package/extensions/dm-subagents/agents/context-builder.md +0 -46
  273. package/extensions/dm-subagents/agents/planner.md +0 -55
  274. package/extensions/dm-subagents/prompts/parallel-context-build.md +0 -55
  275. package/extensions/dm-subagents/prompts/parallel-handoff-plan.md +0 -61
  276. package/extensions/dm-subagents/src/runs/background/wait.js +0 -206
  277. package/extensions/dm-subagents/src/runs/foreground/chain-clarify.js +0 -1013
  278. package/extensions/dm-subagents/src/runs/foreground/chain-execution.js +0 -981
  279. package/extensions/dm-subagents/src/runs/shared/turn-budget.js +0 -50
@@ -1,60 +0,0 @@
1
- import path from "node:path";
2
- export function normalizePathConstraint(pathConstraint, cwd = process.cwd()) {
3
- let trimmed = pathConstraint.trim();
4
- if (!trimmed)
5
- return trimmed;
6
- if (path.isAbsolute(trimmed)) {
7
- const relative = path.relative(cwd, trimmed).replaceAll(path.sep, "/");
8
- if (relative === "")
9
- return null;
10
- if (relative.startsWith("../") || relative === ".." || path.isAbsolute(relative)) {
11
- throw new Error(`Path constraint must be relative to the workspace: ${pathConstraint}`);
12
- }
13
- trimmed = relative;
14
- }
15
- if (trimmed === "." || trimmed === "./")
16
- return null;
17
- if (trimmed.startsWith("./"))
18
- trimmed = trimmed.slice(2);
19
- const recursiveDir = trimmed.match(/^(.*)\/\*\*(?:\/\*)?$/);
20
- if (recursiveDir) {
21
- const dir = recursiveDir[1];
22
- if (dir && !/[*?[{]/.test(dir))
23
- return `${dir}/`;
24
- }
25
- if (trimmed.startsWith("/") || trimmed.endsWith("/"))
26
- return trimmed;
27
- if (/[*?[{]/.test(trimmed))
28
- return trimmed;
29
- const lastSegment = trimmed.split("/").pop() ?? "";
30
- if (/\.[a-zA-Z][a-zA-Z0-9]{0,9}$/.test(lastSegment))
31
- return trimmed;
32
- return `${trimmed}/`;
33
- }
34
- export function normalizeExcludes(exclude, cwd = process.cwd()) {
35
- if (!exclude)
36
- return [];
37
- const list = Array.isArray(exclude) ? exclude : [exclude];
38
- const out = [];
39
- for (const raw of list) {
40
- const parts = raw.split(/[,\s]+/).map((s) => s.trim()).filter(Boolean);
41
- for (const p of parts) {
42
- const stripped = p.startsWith("!") ? p.slice(1) : p;
43
- const normalized = normalizePathConstraint(stripped, cwd);
44
- if (normalized)
45
- out.push(`!${normalized}`);
46
- }
47
- }
48
- return out;
49
- }
50
- export function buildQuery(path, pattern, exclude, cwd = process.cwd()) {
51
- const parts = [];
52
- if (path) {
53
- const pathConstraint = normalizePathConstraint(path, cwd);
54
- if (pathConstraint)
55
- parts.push(pathConstraint);
56
- }
57
- parts.push(...normalizeExcludes(exclude, cwd));
58
- parts.push(pattern);
59
- return parts.join(" ");
60
- }
@@ -1,46 +0,0 @@
1
- ---
2
- name: context-builder
3
- description: Analyzes requirements and codebase, generates context and meta-prompt
4
- tools: read, grep, find, ls, bash, write, web_search, intercom
5
- thinking: high
6
- systemPromptMode: replace
7
- inheritProjectContext: true
8
- inheritSkills: false
9
- output: context.md
10
- ---
11
-
12
- You are a requirements-to-context subagent.
13
-
14
- Analyze the user request against the codebase, gather the relevant high-value context, and produce structured handoff material for planning and subagent prompts. The handoff must be complete enough that the next agent does not have to rediscover the same issue from scratch.
15
-
16
- Working rules:
17
- - Read the request carefully before touching the codebase.
18
- - Search the codebase for relevant files, patterns, dependencies, and constraints.
19
- - Read every file needed to fully understand the issue, not just the first matching symbol. Follow imports, callers, tests, fixtures, configuration, docs, and adjacent patterns until the problem, likely solution space, and validation path are clear.
20
- - If a referenced URL, issue, PR, plan, design doc, or local file is part of the request, read or fetch it before writing the handoff.
21
- - Conduct web research when the task depends on external APIs, libraries, current best practices, recently changed behavior, or when local evidence is not enough to know how to solve the problem correctly. Use `web_search` if it is available; otherwise use whatever equivalent research capability is available.
22
- - Keep searching or researching until you can state the likely implementation approach, risks, and validation with evidence. If a gap remains, call it out explicitly instead of implying certainty.
23
- - Write the requested output files clearly and concretely.
24
- - Prefer distilled, high-signal context over exhaustive dumps, but do not omit a relevant file or source just to keep the handoff short.
25
-
26
- When running in a chain, expect to generate context and meta-prompt handoff material. Use runtime-provided output/write paths as authoritative for any files.
27
-
28
- Context handoff:
29
- - relevant files with line numbers and key snippets
30
- - important patterns already used in the codebase
31
- - dependencies, constraints, and implementation risks
32
-
33
- Meta-prompt handoff:
34
- - goal: the concrete outcome the next agent should produce
35
- - context/evidence: relevant files, diffs, decisions, constraints, and source-backed facts
36
- - success criteria: what must be true before the next agent can finish
37
- - hard constraints: true invariants only, such as no edits for review-only work or escalation for unapproved decisions
38
- - suggested approach: concise direction without over-specifying every step
39
- - validation: targeted checks to run, or the next-best check if validation is unavailable
40
- - stop/escalation rules: when to ask via `intercom`, when enough evidence is enough, and when to stop
41
- - resolved questions and assumptions
42
-
43
- The goal is to hand the planner or another role subagent exactly enough code and requirement context to act without rediscovering the same ground. Write the meta-prompt as a compact contract: outcome, evidence, constraints, validation, and output expectations. Avoid long procedural scripts unless each step is a real requirement.
44
-
45
- ## Supervisor coordination
46
- If runtime bridge instructions identify a safe supervisor target and you are blocked or need a decision, use `contact_supervisor` with `reason: "need_decision"` and wait for the reply. Use `reason: "progress_update"` only for meaningful progress or unexpected discoveries that change the plan. Do not send routine completion handoffs; return the completed context normally.
@@ -1,55 +0,0 @@
1
- ---
2
- name: planner
3
- description: Creates implementation plans from context and requirements
4
- tools: read, grep, find, ls, write, intercom
5
- thinking: high
6
- systemPromptMode: replace
7
- inheritProjectContext: true
8
- inheritSkills: false
9
- output: plan.md
10
- defaultReads: context.md
11
- defaultContext: fork
12
- ---
13
-
14
- You are a planning subagent.
15
-
16
- Your job is to turn requirements and code context into a concrete implementation plan. Do not make code changes. Read, analyze, and write the plan only.
17
-
18
- Working rules:
19
- - Read the provided context before planning.
20
- - Read any additional code you need in order to make the plan concrete.
21
- - Name exact files whenever you can.
22
- - Prefer small, ordered, actionable tasks over vague phases.
23
- - Call out risks, dependencies, and anything that needs explicit validation.
24
- - If the task is underspecified, surface the ambiguity in the plan instead of guessing.
25
-
26
- Output format:
27
-
28
- # Implementation Plan
29
-
30
- ## Goal
31
- One sentence summary of the outcome.
32
-
33
- ## Tasks
34
- Numbered steps, each small and actionable.
35
- 1. **Task 1**: Description
36
- - File: `path/to/file.ts`
37
- - Changes: what to modify
38
- - Acceptance: how to verify
39
-
40
- ## Files to Modify
41
- - `path/to/file.ts` - what changes there
42
-
43
- ## New Files
44
- - `path/to/new.ts` - purpose
45
-
46
- ## Dependencies
47
- Which tasks depend on others.
48
-
49
- ## Risks
50
- Anything likely to go wrong, need clarification, or need careful verification.
51
-
52
- Keep the plan concrete. Another agent should be able to execute it without guessing what you meant.
53
-
54
- ## Supervisor coordination
55
- If runtime bridge instructions identify a safe supervisor target and you are blocked or need a decision, use `contact_supervisor` with `reason: "need_decision"` and wait for the reply. Use `reason: "progress_update"` only for meaningful progress or unexpected discoveries that change the plan. Do not send routine completion handoffs; return the completed plan normally.
@@ -1,55 +0,0 @@
1
- ---
2
- description: Parallel context builders for planning handoff
3
- ---
4
-
5
- Launch fresh-context `context-builder` subagents in parallel to build grounded handoff context for planning or implementation.
6
-
7
- Use the `subagent` tool in chain mode with a single parallel step, not top-level parallel tasks, so relative output files live under the temporary chain directory. Use `context: "fresh"` unless I explicitly ask for forked context. Give every parallel task a distinct `output` path, `label`, and `as` name, for example:
8
-
9
- - `context-build/request-and-scope.md`
10
- - `context-build/codebase-and-patterns.md`
11
- - `context-build/validation-and-risks.md`
12
-
13
- Use one phase such as `phase: "Context build"` for the parallel tasks so async status is readable. A later synthesis step can reference specific outputs with `{outputs.requestScope}`, `{outputs.codebasePatterns}`, and `{outputs.validationRisks}` instead of relying only on `{previous}`.
14
-
15
- Do not write these context artifacts into the repository unless I explicitly ask for persistent files.
16
-
17
- Treat the slash command arguments as the primary request, target, or focus:
18
-
19
- $@
20
-
21
- If the invocation provides a URL, issue link, file path, plan path, or freeform request, read or fetch that target before assigning builder angles, then pass the target explicitly into every `context-builder` task.
22
-
23
- Choose two or three strong builders based on the request. Prefer three only when the scope benefits from independent context slices. These are examples, not fixed defaults:
24
-
25
- 1. Request and scope
26
- Clarify the actual goal, user intent, constraints, non-goals, open questions, and decisions that affect the handoff.
27
-
28
- 2. Codebase and patterns
29
- Inspect relevant files, call paths, existing abstractions, tests, package constraints, and local conventions that the next agent must follow.
30
-
31
- 3. Validation and risks
32
- Identify likely failure modes, edge cases, test strategy, commands to run, dependency/API concerns, and escalation rules.
33
-
34
- Adapt the angles when the request calls for it:
35
- - Issue or PR URL: include issue requirements, acceptance criteria, linked discussion, and likely affected files.
36
- - Plan file: include plan consistency, missing context, implementation sequence, and validation readiness.
37
- - External API/library work: include current docs or primary sources through `web_search` when needed.
38
- - Large refactor: include module boundaries, dependency direction, migration/cutover risks, and testability.
39
- - UI/product work: include user flow, accessibility, copy, visual constraints, and implementation touchpoints.
40
-
41
- Ask each builder to produce a compact handoff file with:
42
- - relevant files and line ranges;
43
- - key snippets or patterns, not full dumps;
44
- - constraints and invariants;
45
- - risks and unknowns;
46
- - validation commands or next-best checks;
47
- - a `meta-prompt` section for the next planner or role subagent.
48
-
49
- After the builders return, synthesize their outputs into:
50
- - the most important context the next agent needs;
51
- - the recommended meta-prompt to use next;
52
- - open questions or assumptions;
53
- - the output artifact paths.
54
-
55
- Do not start implementation from this command unless I explicitly ask for it.
@@ -1,61 +0,0 @@
1
- ---
2
- description: Parallel research/context builders into an implementation handoff plan
3
- ---
4
-
5
- Use parallel subagents to understand the request, compare any external references, inspect the local codebase, and produce a grounded implementation handoff plan with a final implementation-ready meta-prompt.
6
-
7
- Primary request, target, or focus:
8
-
9
- $@
10
-
11
- Use `context: "fresh"` unless I explicitly ask for forked context. First read or fetch any URLs, issue links, PRs, screenshots, plans, docs, or local files mentioned in the request. Treat them as primary scope, not optional context.
12
-
13
- Use the `subagent` tool in chain mode:
14
-
15
- 1. First step: a parallel group.
16
- - `researcher`, when the request includes external references, APIs, libraries, docs, current best practices, or prompt-guidance research.
17
- - `context-builder` for local codebase context.
18
- - Add a second `context-builder` only when the scope is large enough to benefit from a separate implementation-strategy pass.
19
-
20
- 2. Second step: a synthesis `context-builder` that reads the parallel findings and writes the final handoff plan and meta-prompt.
21
-
22
- Use distinct output paths, `label` values, and `as` names under the chain directory. Example outputs:
23
- - `handoff/external-reference.md`
24
- - `handoff/local-context.md`
25
- - `handoff/implementation-strategy.md`
26
- - `handoff/final-handoff-plan.md`
27
-
28
- Use phases such as `Research`, `Local context`, and `Synthesis` so async status is readable. Prefer `{outputs.externalReference}`, `{outputs.localContext}`, and `{outputs.implementationStrategy}` in the synthesis task when those specific inputs are available; keep `{previous}` only when the whole parallel fan-in summary is the desired input.
29
-
30
- Do not write these artifacts into the repository unless I explicitly ask for persistent files.
31
-
32
- Role guidance:
33
-
34
- External reference researcher:
35
- - Study linked projects, docs, issues, examples, source code, or prompt guidance.
36
- - Identify the behavior, API, implementation files, constraints, and transferable ideas.
37
- - Conduct web research if needed. Use `web_search` if it is available; otherwise use whatever equivalent research capability is available.
38
- - Return source links, repo paths, key evidence, risks, and what matters for this implementation.
39
-
40
- Local context-builder:
41
- - Read all files needed to fully understand the local issue, not just the first match.
42
- - Follow imports, callers, tests, fixtures, configuration, docs, and adjacent patterns until the local problem, solution space, and validation path are clear.
43
- - Return relevant file paths and line ranges, current architecture, constraints, tests, risks, and open questions.
44
-
45
- Implementation-strategy context-builder, when used:
46
- - Compare the external evidence against the local architecture.
47
- - Propose the safest implementation shape, files likely to change, edge cases, validation commands, and decisions that need approval.
48
- - Stay review/planning-only unless I explicitly ask for implementation.
49
-
50
- Final synthesis context-builder:
51
- - Read the parallel outputs and produce one concise handoff plan.
52
- - Include what the feature/change should do, what the external reference teaches, what the local codebase implies, the recommended approach, likely files to change, constraints, non-goals, validation, risks, and unresolved questions.
53
- - End with a compact implementation-ready meta-prompt for the next worker/planner.
54
-
55
- After the chain returns, synthesize the result for me with:
56
- - the recommended approach;
57
- - artifact paths;
58
- - the final meta-prompt;
59
- - any questions or assumptions that remain.
60
-
61
- Do not start implementation from this command unless I explicitly ask for it.
@@ -1,206 +0,0 @@
1
- import { listAsyncRuns } from "./async-status.js";
2
- import {
3
- ASYNC_DIR,
4
- RESULTS_DIR,
5
- SUBAGENT_ASYNC_COMPLETE_EVENT,
6
- SUBAGENT_CONTROL_EVENT,
7
- SUBAGENT_CONTROL_INTERCOM_EVENT,
8
- SUBAGENT_RESULT_INTERCOM_EVENT
9
- } from "../../shared/types.js";
10
- import { formatDuration } from "../../shared/formatters.js";
11
- const ACTIVE_STATES = ["queued", "running"];
12
- const DEFAULT_TIMEOUT_MS = 30 * 60 * 1000;
13
- const MIN_POLL_INTERVAL_MS = 250;
14
- const DEFAULT_POLL_INTERVAL_MS = 1000;
15
- const WAKE_CHANNELS = [
16
- SUBAGENT_ASYNC_COMPLETE_EVENT,
17
- SUBAGENT_CONTROL_EVENT,
18
- SUBAGENT_CONTROL_INTERCOM_EVENT,
19
- SUBAGENT_RESULT_INTERCOM_EVENT
20
- ];
21
- function defaultSleep(ms, signal) {
22
- return new Promise((resolve) => {
23
- if (signal?.aborted) {
24
- resolve();
25
- return;
26
- }
27
- const timer = setTimeout(() => {
28
- signal?.removeEventListener("abort", onAbort);
29
- resolve();
30
- }, ms);
31
- const onAbort = () => {
32
- clearTimeout(timer);
33
- resolve();
34
- };
35
- signal?.addEventListener("abort", onAbort, { once: true });
36
- });
37
- }
38
- function waitForWake(ms, signal, deps) {
39
- const sleep = deps.sleep ?? defaultSleep;
40
- const events = deps.events;
41
- if (!events)
42
- return sleep(ms, signal);
43
- return new Promise((resolve) => {
44
- let settled = false;
45
- const unsubs = [];
46
- const wakeController = new AbortController;
47
- const done = () => {
48
- if (settled)
49
- return;
50
- settled = true;
51
- wakeController.abort();
52
- signal?.removeEventListener("abort", done);
53
- for (const u of unsubs) {
54
- try {
55
- u();
56
- } catch {}
57
- }
58
- resolve();
59
- };
60
- if (signal?.aborted) {
61
- done();
62
- return;
63
- }
64
- signal?.addEventListener("abort", done, { once: true });
65
- for (const channel of WAKE_CHANNELS) {
66
- try {
67
- unsubs.push(events.on(channel, done));
68
- } catch {}
69
- }
70
- sleep(ms, wakeController.signal).then(done);
71
- });
72
- }
73
- function matchesId(run, id) {
74
- return run.id === id || run.id.startsWith(id);
75
- }
76
- function needsAttention(run) {
77
- return run.activityState === "needs_attention";
78
- }
79
- function activeRunsForSession(params, deps) {
80
- const asyncDirRoot = deps.asyncDirRoot ?? ASYNC_DIR;
81
- const resultsDir = deps.resultsDir ?? RESULTS_DIR;
82
- const runs = listAsyncRuns(asyncDirRoot, {
83
- states: [...ACTIVE_STATES],
84
- sessionId: deps.state.currentSessionId ?? undefined,
85
- resultsDir,
86
- kill: deps.kill,
87
- now: deps.now
88
- });
89
- return params.id ? runs.filter((run) => matchesId(run, params.id)) : runs;
90
- }
91
- function attentionRunsForSession(params, deps, initialIds) {
92
- return activeRunsForSession(params, deps).filter((run) => needsAttention(run) && initialIds.has(run.id));
93
- }
94
- function allRunsForSession(params, deps) {
95
- const asyncDirRoot = deps.asyncDirRoot ?? ASYNC_DIR;
96
- const resultsDir = deps.resultsDir ?? RESULTS_DIR;
97
- const runs = listAsyncRuns(asyncDirRoot, {
98
- sessionId: deps.state.currentSessionId ?? undefined,
99
- resultsDir,
100
- kill: deps.kill,
101
- now: deps.now
102
- });
103
- return params.id ? runs.filter((run) => matchesId(run, params.id)) : runs;
104
- }
105
- function summarizeTerminalRuns(runs) {
106
- if (runs.length === 0)
107
- return "";
108
- const counts = { complete: 0, failed: 0, paused: 0 };
109
- for (const run of runs) {
110
- if (run.state in counts)
111
- counts[run.state] += 1;
112
- }
113
- const parts = [];
114
- if (counts.complete)
115
- parts.push(`${counts.complete} complete`);
116
- if (counts.failed)
117
- parts.push(`${counts.failed} failed`);
118
- if (counts.paused)
119
- parts.push(`${counts.paused} paused`);
120
- return parts.join(", ");
121
- }
122
- function result(text, isError = false) {
123
- return {
124
- content: [{ type: "text", text }],
125
- ...isError ? { isError: true } : {},
126
- details: { mode: "management", results: [] }
127
- };
128
- }
129
- export async function waitForSubagents(params, signal, deps) {
130
- const now = deps.now ?? Date.now;
131
- const pollIntervalMs = Math.max(MIN_POLL_INTERVAL_MS, deps.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS);
132
- const timeoutMs = params.timeoutMs !== undefined && params.timeoutMs > 0 ? params.timeoutMs : DEFAULT_TIMEOUT_MS;
133
- const startedAt = now();
134
- const waitForAll = params.id ? true : params.all === true;
135
- let active;
136
- try {
137
- active = activeRunsForSession(params, deps);
138
- } catch (error) {
139
- return result(error instanceof Error ? error.message : String(error), true);
140
- }
141
- if (active.length === 0) {
142
- const finished = params.id ? `No active run matched "${params.id}". Nothing to wait for.` : "No active async runs in this session. Nothing to wait for.";
143
- return result(finished);
144
- }
145
- if (params.id) {
146
- const exact = active.filter((run) => run.id === params.id);
147
- if (exact.length === 1)
148
- active = exact;
149
- else if (active.length > 1) {
150
- return result(`Ambiguous async run id prefix "${params.id}" matched ${active.length} active runs: ${active.map((run) => run.id).join(", ")}. Pass a longer id.`, true);
151
- }
152
- }
153
- const waitParams = params.id ? { ...params, id: active[0].id } : params;
154
- const initialIds = new Set(active.map((run) => run.id));
155
- const initialCount = initialIds.size;
156
- let pending = active.filter((run) => !needsAttention(run));
157
- const done = (active, attention) => {
158
- if (attention.length > 0)
159
- return true;
160
- if (waitForAll)
161
- return active.every((run) => !initialIds.has(run.id));
162
- const stillActiveInitial = active.filter((run) => initialIds.has(run.id));
163
- return stillActiveInitial.length < initialCount;
164
- };
165
- let attention = active.filter((run) => needsAttention(run));
166
- while (!done(pending, attention)) {
167
- if (signal?.aborted) {
168
- const stillActive = pending.map((run) => `${run.id} (${run.state})`).join(", ");
169
- return result(`Wait aborted after ${formatDuration(now() - startedAt)}. Still active: ${stillActive}.`, true);
170
- }
171
- if (now() - startedAt >= timeoutMs) {
172
- const stillActive = pending.map((run) => `${run.id} (${run.state})`).join(", ");
173
- return result(`Wait timed out after ${formatDuration(timeoutMs)} with ${pending.length} run(s) still active: ${stillActive}. ` + `The runs are detached and keep going; call wait again or inspect with subagent({ action: "status" }).`, true);
174
- }
175
- await waitForWake(pollIntervalMs, signal, deps);
176
- try {
177
- active = activeRunsForSession(waitParams, deps);
178
- pending = active.filter((run) => !needsAttention(run));
179
- attention = attentionRunsForSession(waitParams, deps, initialIds);
180
- } catch (error) {
181
- return result(error instanceof Error ? error.message : String(error), true);
182
- }
183
- }
184
- let terminalSummary = "";
185
- let finishedCount = 0;
186
- try {
187
- const allNow = allRunsForSession(waitParams, deps);
188
- const terminal = allNow.filter((run) => !ACTIVE_STATES.includes(run.state) && initialIds.has(run.id));
189
- finishedCount = terminal.length;
190
- terminalSummary = summarizeTerminalRuns(terminal);
191
- } catch {}
192
- const attentionNote = attention.length > 0 ? ` ${attention.length} run(s) need attention: ${attention.map((r) => r.id).join(", ")} — inspect with subagent({ action: "status" }) then nudge/resume/interrupt.` : "";
193
- const stillRunning = pending.filter((run) => initialIds.has(run.id)).length;
194
- const elapsed = formatDuration(now() - startedAt);
195
- const outcome = terminalSummary ? ` Outcome: ${terminalSummary}.` : "";
196
- if (waitForAll) {
197
- const scope = params.id ? `run "${params.id}"` : `${initialCount} async run(s)`;
198
- const status = attention.length > 0 ? "attention required" : "done";
199
- const notificationText = attention.length > 0 ? "Relevant completion/control events have been observed; inspect status if the notification is not visible yet." : "Completion events have been observed; inspect status if the notification is not visible yet.";
200
- return result(`Waited ${elapsed} for ${scope}; ${status}.${outcome}${attentionNote} ${notificationText}`);
201
- }
202
- const remainder = stillRunning > 0 ? ` ${stillRunning} run(s) still in flight — call wait again to catch the next one.` : attention.length > 0 ? " No other runs are waitable until attention is handled." : " No runs remain in flight.";
203
- const progress = attention.length > 0 && finishedCount === 0 ? `${attention.length} of ${initialCount} run(s) need attention` : `${finishedCount} of ${initialCount} run(s) finished`;
204
- const notificationText = finishedCount > 0 ? " Completion events for the finished run(s) have been observed; inspect status if the notification is not visible yet." : " Relevant control events have been observed; inspect status if the notification is not visible yet.";
205
- return result(`Waited ${elapsed}; ${progress}.${outcome}${attentionNote}${remainder}${notificationText}`);
206
- }