@ashx-j/lunr-dev 0.2.13-dev.5.1 → 0.2.13-dev.8.1

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 (246) hide show
  1. package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
  2. package/dist/builtin-extensions/ashxj-tui.js +4 -4
  3. package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
  4. package/dist/builtin-extensions/index.d.ts.map +1 -1
  5. package/dist/builtin-extensions/index.js +2 -0
  6. package/dist/builtin-extensions/index.js.map +1 -1
  7. package/dist/builtin-extensions/lunr-settings-tools.d.ts +4 -0
  8. package/dist/builtin-extensions/lunr-settings-tools.d.ts.map +1 -0
  9. package/dist/builtin-extensions/lunr-settings-tools.js +120 -0
  10. package/dist/builtin-extensions/lunr-settings-tools.js.map +1 -0
  11. package/dist/builtin-extensions/pi-prompt-template-model/subagent-runtime.d.ts +2 -2
  12. package/dist/builtin-extensions/pi-prompt-template-model/subagent-runtime.d.ts.map +1 -1
  13. package/dist/builtin-extensions/pi-prompt-template-model/subagent-runtime.js.map +1 -1
  14. package/dist/builtin-extensions/pi-prompt-template-model/subagent-step.d.ts.map +1 -1
  15. package/dist/builtin-extensions/pi-prompt-template-model/subagent-step.js +3 -3
  16. package/dist/builtin-extensions/pi-prompt-template-model/subagent-step.js.map +1 -1
  17. package/dist/builtin-extensions/pi-subagents/src/api/delegation.d.ts +2 -2
  18. package/dist/builtin-extensions/pi-subagents/src/api/delegation.d.ts.map +1 -1
  19. package/dist/builtin-extensions/pi-subagents/src/api/delegation.js +1 -1
  20. package/dist/builtin-extensions/pi-subagents/src/api/delegation.js.map +1 -1
  21. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  22. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +2 -1
  23. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  24. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts +5 -11
  25. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
  26. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +12 -15
  27. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
  28. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +3 -3
  29. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
  30. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +14 -27
  31. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
  32. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts.map +1 -1
  33. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js +6 -4
  34. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js.map +1 -1
  35. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.d.ts.map +1 -1
  36. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js +2 -1
  37. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js.map +1 -1
  38. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts.map +1 -1
  39. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js +6 -4
  40. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js.map +1 -1
  41. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-status.d.ts.map +1 -1
  42. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-status.js +4 -2
  43. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-status.js.map +1 -1
  44. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.d.ts.map +1 -1
  45. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.js +3 -35
  46. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.js.map +1 -1
  47. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts.map +1 -1
  48. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js +5 -12
  49. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js.map +1 -1
  50. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  51. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +14 -31
  52. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  53. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts +2 -0
  54. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts.map +1 -1
  55. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js +28 -22
  56. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js.map +1 -1
  57. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts +1 -0
  58. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts.map +1 -1
  59. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js.map +1 -1
  60. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts.map +1 -1
  61. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js +9 -4
  62. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js.map +1 -1
  63. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.d.ts +1 -1
  64. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.d.ts.map +1 -1
  65. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.js +2 -2
  66. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.js.map +1 -1
  67. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +4 -7
  68. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
  69. package/dist/builtin-extensions/pi-subagents/src/shared/types.js +1 -1
  70. package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
  71. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.d.ts +3 -3
  72. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.d.ts.map +1 -1
  73. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.js +7 -6
  74. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.js.map +1 -1
  75. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-request.d.ts.map +1 -1
  76. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-request.js +3 -3
  77. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-request.js.map +1 -1
  78. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts +1 -1
  79. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts.map +1 -1
  80. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js +6 -4
  81. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js.map +1 -1
  82. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +1 -1
  83. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
  84. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +15 -10
  85. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
  86. package/dist/builtin-extensions/pi-subagents/src/tui/fleet.d.ts.map +1 -1
  87. package/dist/builtin-extensions/pi-subagents/src/tui/fleet.js +3 -2
  88. package/dist/builtin-extensions/pi-subagents/src/tui/fleet.js.map +1 -1
  89. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -2
  90. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  91. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +75 -43
  92. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  93. package/dist/catalog/models.json +1 -1
  94. package/dist/catalog/providers/amazon-bedrock.json +1 -1
  95. package/dist/catalog/providers/anthropic.json +1 -1
  96. package/dist/catalog/providers/azure-openai-responses.json +1 -1
  97. package/dist/catalog/providers/cloudflare-ai-gateway.json +1 -1
  98. package/dist/catalog/providers/fireworks.json +1 -1
  99. package/dist/catalog/providers/github-copilot.json +1 -1
  100. package/dist/catalog/providers/google-vertex.json +1 -1
  101. package/dist/catalog/providers/google.json +1 -1
  102. package/dist/catalog/providers/huggingface.json +1 -1
  103. package/dist/catalog/providers/nvidia.json +1 -1
  104. package/dist/catalog/providers/openai-codex.json +1 -1
  105. package/dist/catalog/providers/openai.json +1 -1
  106. package/dist/catalog/providers/opencode-go.json +1 -1
  107. package/dist/catalog/providers/opencode.json +1 -1
  108. package/dist/catalog/providers/openrouter.json +1 -1
  109. package/dist/catalog/providers/vercel-ai-gateway.json +1 -1
  110. package/dist/catalog/publication.json +131 -3
  111. package/dist/cli/list-models.d.ts.map +1 -1
  112. package/dist/cli/list-models.js +1 -0
  113. package/dist/cli/list-models.js.map +1 -1
  114. package/dist/core/agent-session-runtime.d.ts +5 -1
  115. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  116. package/dist/core/agent-session-runtime.js +7 -2
  117. package/dist/core/agent-session-runtime.js.map +1 -1
  118. package/dist/core/agent-session.d.ts +2 -0
  119. package/dist/core/agent-session.d.ts.map +1 -1
  120. package/dist/core/agent-session.js +20 -5
  121. package/dist/core/agent-session.js.map +1 -1
  122. package/dist/core/catalog-cache-scope.d.ts +3 -0
  123. package/dist/core/catalog-cache-scope.d.ts.map +1 -0
  124. package/dist/core/catalog-cache-scope.js +12 -0
  125. package/dist/core/catalog-cache-scope.js.map +1 -0
  126. package/dist/core/catalog-merge.d.ts +2 -0
  127. package/dist/core/catalog-merge.d.ts.map +1 -1
  128. package/dist/core/catalog-merge.js +29 -2
  129. package/dist/core/catalog-merge.js.map +1 -1
  130. package/dist/core/catalog-refresh-polling.d.ts +8 -0
  131. package/dist/core/catalog-refresh-polling.d.ts.map +1 -0
  132. package/dist/core/catalog-refresh-polling.js +30 -0
  133. package/dist/core/catalog-refresh-polling.js.map +1 -0
  134. package/dist/core/codex-catalog.d.ts +3 -0
  135. package/dist/core/codex-catalog.d.ts.map +1 -0
  136. package/dist/core/codex-catalog.js +15 -0
  137. package/dist/core/codex-catalog.js.map +1 -0
  138. package/dist/core/context-breakdown.d.ts +2 -0
  139. package/dist/core/context-breakdown.d.ts.map +1 -1
  140. package/dist/core/context-breakdown.js +6 -2
  141. package/dist/core/context-breakdown.js.map +1 -1
  142. package/dist/core/injected-prompt.d.ts +3 -3
  143. package/dist/core/injected-prompt.d.ts.map +1 -1
  144. package/dist/core/injected-prompt.js +2 -7
  145. package/dist/core/injected-prompt.js.map +1 -1
  146. package/dist/core/large-subagent-launch.d.ts +13 -0
  147. package/dist/core/large-subagent-launch.d.ts.map +1 -0
  148. package/dist/core/large-subagent-launch.js +54 -0
  149. package/dist/core/large-subagent-launch.js.map +1 -0
  150. package/dist/core/live-catalog.d.ts +5 -2
  151. package/dist/core/live-catalog.d.ts.map +1 -1
  152. package/dist/core/live-catalog.js +108 -27
  153. package/dist/core/live-catalog.js.map +1 -1
  154. package/dist/core/model-instructions.d.ts +24 -0
  155. package/dist/core/model-instructions.d.ts.map +1 -0
  156. package/dist/core/model-instructions.js +123 -0
  157. package/dist/core/model-instructions.js.map +1 -0
  158. package/dist/core/model-runtime.d.ts +8 -0
  159. package/dist/core/model-runtime.d.ts.map +1 -1
  160. package/dist/core/model-runtime.js +64 -12
  161. package/dist/core/model-runtime.js.map +1 -1
  162. package/dist/core/official-catalog.d.ts +4 -0
  163. package/dist/core/official-catalog.d.ts.map +1 -1
  164. package/dist/core/official-catalog.js +86 -21
  165. package/dist/core/official-catalog.js.map +1 -1
  166. package/dist/core/permissions.d.ts +11 -10
  167. package/dist/core/permissions.d.ts.map +1 -1
  168. package/dist/core/permissions.js +61 -45
  169. package/dist/core/permissions.js.map +1 -1
  170. package/dist/core/plan-mode.d.ts.map +1 -1
  171. package/dist/core/plan-mode.js +10 -1
  172. package/dist/core/plan-mode.js.map +1 -1
  173. package/dist/core/resource-loader.d.ts +3 -0
  174. package/dist/core/resource-loader.d.ts.map +1 -1
  175. package/dist/core/resource-loader.js +13 -4
  176. package/dist/core/resource-loader.js.map +1 -1
  177. package/dist/core/runtime-bridges.d.ts +4 -0
  178. package/dist/core/runtime-bridges.d.ts.map +1 -0
  179. package/dist/core/runtime-bridges.js +16 -0
  180. package/dist/core/runtime-bridges.js.map +1 -0
  181. package/dist/core/sdk.d.ts.map +1 -1
  182. package/dist/core/sdk.js +1 -0
  183. package/dist/core/sdk.js.map +1 -1
  184. package/dist/core/session-manager.d.ts.map +1 -1
  185. package/dist/core/session-manager.js +17 -16
  186. package/dist/core/session-manager.js.map +1 -1
  187. package/dist/core/settings-manager.d.ts +13 -0
  188. package/dist/core/settings-manager.d.ts.map +1 -1
  189. package/dist/core/settings-manager.js +32 -0
  190. package/dist/core/settings-manager.js.map +1 -1
  191. package/dist/core/settings-tools-bridge.d.ts +35 -0
  192. package/dist/core/settings-tools-bridge.d.ts.map +1 -0
  193. package/dist/core/settings-tools-bridge.js +56 -0
  194. package/dist/core/settings-tools-bridge.js.map +1 -0
  195. package/dist/core/swarm.d.ts +0 -31
  196. package/dist/core/swarm.d.ts.map +1 -1
  197. package/dist/core/swarm.js +2 -76
  198. package/dist/core/swarm.js.map +1 -1
  199. package/dist/core/system-prompt.d.ts.map +1 -1
  200. package/dist/core/system-prompt.js +1 -1
  201. package/dist/core/system-prompt.js.map +1 -1
  202. package/dist/gateway/agent-bridge.d.ts.map +1 -1
  203. package/dist/gateway/agent-bridge.js +3 -2
  204. package/dist/gateway/agent-bridge.js.map +1 -1
  205. package/dist/gateway/approval.d.ts.map +1 -1
  206. package/dist/gateway/approval.js +4 -3
  207. package/dist/gateway/approval.js.map +1 -1
  208. package/dist/gateway/cron.d.ts.map +1 -1
  209. package/dist/gateway/cron.js +3 -2
  210. package/dist/gateway/cron.js.map +1 -1
  211. package/dist/gateway/router.d.ts +1 -1
  212. package/dist/gateway/router.d.ts.map +1 -1
  213. package/dist/gateway/router.js +1 -1
  214. package/dist/gateway/router.js.map +1 -1
  215. package/dist/main.d.ts.map +1 -1
  216. package/dist/main.js +12 -9
  217. package/dist/main.js.map +1 -1
  218. package/dist/migrations.d.ts.map +1 -1
  219. package/dist/migrations.js +4 -0
  220. package/dist/migrations.js.map +1 -1
  221. package/dist/modes/interactive/components/injected-prompt-message.d.ts +1 -1
  222. package/dist/modes/interactive/components/injected-prompt-message.d.ts.map +1 -1
  223. package/dist/modes/interactive/components/injected-prompt-message.js +1 -1
  224. package/dist/modes/interactive/components/injected-prompt-message.js.map +1 -1
  225. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  226. package/dist/modes/interactive/components/model-selector.js +4 -1
  227. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  228. package/dist/modes/interactive/components/settings-selector.d.ts +8 -1
  229. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  230. package/dist/modes/interactive/components/settings-selector.js +61 -1
  231. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  232. package/dist/modes/interactive/interactive-mode.d.ts +2 -2
  233. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  234. package/dist/modes/interactive/interactive-mode.js +65 -99
  235. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  236. package/dist/startup/interactive-shell.d.ts.map +1 -1
  237. package/dist/startup/interactive-shell.js +2 -1
  238. package/dist/startup/interactive-shell.js.map +1 -1
  239. package/docs/features.md +7 -6
  240. package/docs/model-catalog.md +29 -0
  241. package/docs/quickstart.md +3 -2
  242. package/docs/settings.md +3 -1
  243. package/docs/termux.md +1 -1
  244. package/docs/usage.md +2 -1
  245. package/examples/extensions/subagent/README.md +1 -1
  246. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"delegation-adapters.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/slash/delegation-adapters.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport {\n\tSUBAGENT_DELEGATION_PROTOCOL_VERSION,\n\ttype SubagentDelegationAcceptanceResult,\n\ttype SubagentDelegationRequest,\n\ttype SubagentDelegationResponse,\n\ttype SubagentDelegationStatus,\n\ttype SubagentDelegationUpdate,\n} from \"../api/delegation.ts\";\nimport type { AcceptanceInput, ToolBudgetConfig, TurnBudgetConfig } from \"../shared/types.ts\";\n\nexport interface PromptTemplateDelegationTask {\n\tagent: string;\n\ttask: string;\n\tmodel?: string;\n\tcwd?: string;\n}\n\nexport interface PromptTemplateDelegationParallelResult {\n\tagent: string;\n\tmessages: unknown[];\n\tisError: boolean;\n\terrorText?: string;\n}\n\nexport interface PromptTemplateDelegationRequest {\n\trequestId: string;\n\tagent: string;\n\ttask: string;\n\ttasks?: PromptTemplateDelegationTask[];\n\tcontext: \"fresh\" | \"fork\";\n\tmodel: string;\n\tcwd: string;\n\tworktree?: boolean;\n}\n\nexport interface PromptTemplateDelegationResponse extends PromptTemplateDelegationRequest {\n\tmessages: unknown[];\n\tparallelResults?: PromptTemplateDelegationParallelResult[];\n\tcontentText?: string;\n\tisError: boolean;\n\terrorText?: string;\n}\n\ninterface PromptTemplateDelegationTaskProgress {\n\tindex?: number;\n\tagent: string;\n\tstatus?: string;\n\tcurrentTool?: string;\n\tcurrentToolArgs?: string;\n\trecentOutput?: string;\n\trecentOutputLines?: string[];\n\trecentTools?: Array<{ tool: string; args: string }>;\n\tmodel?: string;\n\ttoolCount?: number;\n\tdurationMs?: number;\n\ttokens?: number;\n}\n\nexport interface PromptTemplateDelegationUpdate {\n\trequestId: string;\n\tcurrentTool?: string;\n\tcurrentToolArgs?: string;\n\trecentOutput?: string;\n\trecentOutputLines?: string[];\n\trecentTools?: Array<{ tool: string; args: string }>;\n\tmodel?: string;\n\ttoolCount?: number;\n\tdurationMs?: number;\n\ttokens?: number;\n\ttaskProgress?: PromptTemplateDelegationTaskProgress[];\n}\n\nexport interface PromptTemplateBridgeResult {\n\tisError?: boolean;\n\tcontent?: unknown;\n\tdetails?: {\n\t\tmode?: \"single\" | \"parallel\" | \"chain\" | \"management\";\n\t\trunId?: string;\n\t\ttimedOut?: boolean;\n\t\tstopped?: boolean;\n\t\tresults?: Array<{\n\t\t\tagent?: string;\n\t\t\tmessages?: unknown[];\n\t\t\tfinalOutput?: string;\n\t\t\ttoolCalls?: Array<{ text?: string; expandedText?: string }>;\n\t\t\texitCode?: number;\n\t\t\terror?: string;\n\t\t\tmodel?: string;\n\t\t\tinterrupted?: boolean;\n\t\t\ttimedOut?: boolean;\n\t\t\tstopped?: boolean;\n\t\t\tturnBudgetExceeded?: boolean;\n\t\t\ttoolBudgetBlocked?: boolean;\n\t\t\tsavedOutputPath?: string;\n\t\t\tsessionFile?: string;\n\t\t\tacceptance?: SubagentDelegationAcceptanceResult;\n\t\t\tusage?: { turns?: number };\n\t\t\tprogressSummary?: { toolCount?: number; durationMs?: number; tokens?: number };\n\t\t\tskillsWarning?: string;\n\t\t\toutputSaveError?: string;\n\t\t\ttranscriptError?: string;\n\t\t}>;\n\t\tprogress?: Array<{\n\t\t\tindex?: number;\n\t\t\tagent?: string;\n\t\t\tstatus?: string;\n\t\t\tcurrentTool?: string;\n\t\t\tcurrentToolArgs?: string;\n\t\t\trecentOutput?: string[];\n\t\t\trecentTools?: Array<{ tool?: string; args?: string }>;\n\t\t\ttoolCount?: number;\n\t\t\tdurationMs?: number;\n\t\t\ttokens?: number;\n\t\t}>;\n\t};\n}\n\nexport interface DelegatedSubagentExecutionParams {\n\tagent?: string;\n\ttask?: string;\n\ttasks?: PromptTemplateDelegationTask[];\n\tcontext: \"fresh\" | \"fork\";\n\tmodel?: string;\n\tcwd: string;\n\tworktree?: boolean;\n\ttimeoutMs?: number;\n\tturnBudget?: TurnBudgetConfig;\n\ttoolBudget?: ToolBudgetConfig;\n\tskill?: string | string[] | boolean;\n\toutput?: string | boolean;\n\toutputMode?: \"inline\" | \"file-only\";\n\tacceptance?: AcceptanceInput;\n\tartifacts?: boolean;\n\tasync: false;\n\tforegroundOnly: true;\n\tclarify: false;\n}\n\nfunction parseDelegationTasks(tasks: unknown): PromptTemplateDelegationTask[] {\n\tif (!Array.isArray(tasks)) return [];\n\tconst parsed: PromptTemplateDelegationTask[] = [];\n\tfor (const item of tasks) {\n\t\tif (!item || typeof item !== \"object\") return [];\n\t\tconst value = item as Partial<PromptTemplateDelegationTask>;\n\t\tif (typeof value.agent !== \"string\" || !value.agent.trim()) return [];\n\t\tif (typeof value.task !== \"string\" || !value.task.trim()) return [];\n\t\tconst model = typeof value.model === \"string\" && value.model.trim().length > 0 ? value.model : undefined;\n\t\tconst cwd = typeof value.cwd === \"string\" && value.cwd.trim().length > 0 ? value.cwd : undefined;\n\t\tparsed.push({\n\t\t\tagent: value.agent,\n\t\t\ttask: value.task,\n\t\t\t...(model ? { model } : {}),\n\t\t\t...(cwd ? { cwd } : {}),\n\t\t});\n\t}\n\treturn parsed;\n}\n\nexport function parsePromptTemplateRequest(data: unknown): PromptTemplateDelegationRequest | undefined {\n\tif (!data || typeof data !== \"object\") return undefined;\n\tconst value = data as Partial<PromptTemplateDelegationRequest> & { tasks?: unknown };\n\tif (typeof value.requestId !== \"string\" || !value.requestId) return undefined;\n\tif (typeof value.model !== \"string\" || !value.model) return undefined;\n\tif (typeof value.cwd !== \"string\" || !value.cwd) return undefined;\n\tif (value.context !== \"fresh\" && value.context !== \"fork\") return undefined;\n\tconst tasks = parseDelegationTasks(value.tasks);\n\tconst worktree = value.worktree === true ? true : undefined;\n\tconst hasSingle =\n\t\ttypeof value.agent === \"string\" &&\n\t\tvalue.agent.length > 0 &&\n\t\ttypeof value.task === \"string\" &&\n\t\tvalue.task.length > 0;\n\tif (!hasSingle && tasks.length === 0) return undefined;\n\n\tconst fallbackTask = tasks[0];\n\treturn {\n\t\trequestId: value.requestId,\n\t\tagent: hasSingle ? value.agent : fallbackTask!.agent,\n\t\ttask: hasSingle ? value.task : fallbackTask!.task,\n\t\t...(tasks.length > 0 ? { tasks } : {}),\n\t\tcontext: value.context,\n\t\tmodel: value.model,\n\t\tcwd: value.cwd,\n\t\t...(worktree ? { worktree } : {}),\n\t};\n}\n\nfunction firstTextContent(content: unknown): string | undefined {\n\tif (!Array.isArray(content)) return undefined;\n\tfor (const part of content) {\n\t\tif (!part || typeof part !== \"object\") continue;\n\t\tif ((part as { type?: string }).type !== \"text\") continue;\n\t\tconst text = (part as { text?: unknown }).text;\n\t\tif (typeof text === \"string\" && text.trim()) return text.trim();\n\t}\n\treturn undefined;\n}\n\nfunction filterRecentOutput(lines: string[] | undefined): string[] | undefined {\n\tif (!lines || lines.length === 0) return undefined;\n\tconst filtered = lines.filter((line) => typeof line === \"string\" && line.trim() && line.trim() !== \"(running...)\");\n\tif (filtered.length === 0) return undefined;\n\treturn filtered;\n}\n\nfunction sanitizeRecentTools(\n\ttools: Array<{ tool?: string; args?: string }> | undefined,\n): Array<{ tool: string; args: string }> | undefined {\n\tif (!tools || tools.length === 0) return undefined;\n\tconst sanitized = tools.flatMap((entry) => {\n\t\tif (typeof entry.tool !== \"string\" || entry.tool.trim().length === 0) return [];\n\t\treturn [{\n\t\t\ttool: entry.tool,\n\t\t\targs: typeof entry.args === \"string\" ? entry.args : String(entry.args ?? \"\"),\n\t\t}];\n\t});\n\treturn sanitized.length > 0 ? sanitized : undefined;\n}\n\nfunction resolveProgressModel(\n\tupdate: PromptTemplateBridgeResult,\n\tentry: { index?: number; agent?: string },\n): string | undefined {\n\tconst results = update.details?.results;\n\tif (!results || results.length === 0) return undefined;\n\tif (typeof entry.index === \"number\" && entry.index >= 0) {\n\t\tconst byIndex = results[entry.index];\n\t\tif (typeof byIndex?.model === \"string\") return byIndex.model;\n\t}\n\tif (entry.agent) {\n\t\tconst byAgent = results.find((result) => result.agent === entry.agent && typeof result.model === \"string\");\n\t\tif (byAgent?.model) return byAgent.model;\n\t}\n\tconst firstWithModel = results.find((result) => typeof result.model === \"string\");\n\treturn firstWithModel?.model;\n}\n\nfunction toolCallNameFromSummary(summary: { text?: string; expandedText?: string }): string | undefined {\n\tconst text = typeof summary.expandedText === \"string\" && summary.expandedText.trim().length > 0\n\t\t? summary.expandedText.trim()\n\t\t: typeof summary.text === \"string\"\n\t\t\t? summary.text.trim()\n\t\t\t: \"\";\n\tif (!text) return undefined;\n\tif (text.startsWith(\"$ \")) return \"bash\";\n\treturn text.match(/^[A-Za-z_][\\w.-]*/)?.[0];\n}\n\nfunction buildDelegationMessages(\n\tresult: { messages?: unknown[]; finalOutput?: string; toolCalls?: Array<{ text?: string; expandedText?: string }> },\n\tfallbackText?: string,\n): unknown[] {\n\tif (Array.isArray(result.messages) && result.messages.length > 0) return result.messages;\n\tconst toolCallParts = (result.toolCalls ?? []).flatMap((summary) => {\n\t\tconst name = toolCallNameFromSummary(summary);\n\t\treturn name ? [{ type: \"toolCall\", name, arguments: { summary: summary.expandedText ?? summary.text ?? \"\" } }] : [];\n\t});\n\tconst text = typeof result.finalOutput === \"string\" && result.finalOutput.trim().length > 0\n\t\t? result.finalOutput.trim()\n\t\t: fallbackText;\n\tconst content = [\n\t\t...toolCallParts,\n\t\t...(text ? [{ type: \"text\", text }] : []),\n\t];\n\tif (content.length === 0) return [];\n\treturn [{ role: \"assistant\", content }];\n}\n\nexport function toDelegationUpdate(requestId: string, update: PromptTemplateBridgeResult): PromptTemplateDelegationUpdate | undefined {\n\tconst progress = update.details?.progress?.[0];\n\tconst taskProgress = update.details?.progress?.map((entry) => {\n\t\tconst lastOutput = entry.recentOutput?.[entry.recentOutput.length - 1];\n\t\tconst safeLastOutput =\n\t\t\ttypeof lastOutput === \"string\" && lastOutput.trim() && lastOutput !== \"(running...)\"\n\t\t\t\t? lastOutput\n\t\t\t\t: undefined;\n\t\treturn {\n\t\t\tindex: entry.index,\n\t\t\tagent: entry.agent ?? \"delegate\",\n\t\t\tstatus: entry.status,\n\t\t\tcurrentTool: entry.currentTool,\n\t\t\tcurrentToolArgs: entry.currentToolArgs,\n\t\t\trecentOutput: safeLastOutput,\n\t\t\trecentOutputLines: filterRecentOutput(entry.recentOutput),\n\t\t\trecentTools: sanitizeRecentTools(entry.recentTools),\n\t\t\tmodel: resolveProgressModel(update, entry),\n\t\t\ttoolCount: entry.toolCount,\n\t\t\tdurationMs: entry.durationMs,\n\t\t\ttokens: entry.tokens,\n\t\t};\n\t});\n\tif (!progress && (!taskProgress || taskProgress.length === 0)) return undefined;\n\tconst lastOutput = progress?.recentOutput?.[progress.recentOutput.length - 1];\n\tconst safeLastOutput =\n\t\ttypeof lastOutput === \"string\" && lastOutput.trim() && lastOutput !== \"(running...)\"\n\t\t\t? lastOutput\n\t\t\t: undefined;\n\treturn {\n\t\trequestId,\n\t\tcurrentTool: progress?.currentTool,\n\t\tcurrentToolArgs: progress?.currentToolArgs,\n\t\trecentOutput: safeLastOutput,\n\t\trecentOutputLines: filterRecentOutput(progress?.recentOutput),\n\t\trecentTools: sanitizeRecentTools(progress?.recentTools),\n\t\tmodel: progress ? resolveProgressModel(update, progress) : undefined,\n\t\ttoolCount: progress?.toolCount,\n\t\tdurationMs: progress?.durationMs,\n\t\ttokens: progress?.tokens,\n\t\ttaskProgress,\n\t};\n}\n\nexport function toLegacyExecutionParams(request: PromptTemplateDelegationRequest): DelegatedSubagentExecutionParams {\n\tif (request.tasks && request.tasks.length > 0) {\n\t\treturn {\n\t\t\ttasks: request.tasks,\n\t\t\tcontext: request.context,\n\t\t\tcwd: request.cwd,\n\t\t\tworktree: request.worktree,\n\t\t\tasync: false,\n\t\t\tforegroundOnly: true,\n\t\t\tclarify: false,\n\t\t};\n\t}\n\treturn {\n\t\tagent: request.agent,\n\t\ttask: request.task,\n\t\tcontext: request.context,\n\t\tmodel: request.model,\n\t\tcwd: request.cwd,\n\t\tasync: false,\n\t\tforegroundOnly: true,\n\t\tclarify: false,\n\t};\n}\n\nexport function toSubagentDelegationExecutionParams(request: SubagentDelegationRequest): DelegatedSubagentExecutionParams {\n\treturn {\n\t\tagent: request.agent,\n\t\ttask: request.task,\n\t\tcontext: request.context,\n\t\tcwd: request.cwd,\n\t\tmodel: request.model,\n\t\ttimeoutMs: request.timeoutMs,\n\t\tturnBudget: request.turnBudget,\n\t\ttoolBudget: request.toolBudget,\n\t\tskill: request.skill,\n\t\toutput: request.output,\n\t\toutputMode: request.outputMode,\n\t\tacceptance: request.acceptance,\n\t\tartifacts: request.artifacts,\n\t\tasync: false,\n\t\tforegroundOnly: true,\n\t\tclarify: false,\n\t};\n}\n\nexport function toSubagentDelegationUpdate(requestId: string, result: PromptTemplateBridgeResult): SubagentDelegationUpdate | undefined {\n\tconst legacy = toDelegationUpdate(requestId, result);\n\tif (!legacy) return undefined;\n\treturn {\n\t\tversion: SUBAGENT_DELEGATION_PROTOCOL_VERSION,\n\t\trequestId,\n\t\t...(legacy.currentTool ? { currentTool: legacy.currentTool } : {}),\n\t\t...(legacy.currentToolArgs ? { currentToolArgs: legacy.currentToolArgs } : {}),\n\t\t...(legacy.recentOutput ? { recentOutput: legacy.recentOutput } : {}),\n\t\t...(legacy.recentOutputLines ? { recentOutputLines: legacy.recentOutputLines } : {}),\n\t\t...(legacy.recentTools ? { recentTools: legacy.recentTools } : {}),\n\t\t...(legacy.model ? { model: legacy.model } : {}),\n\t\t...(typeof legacy.toolCount === \"number\" ? { toolCount: legacy.toolCount } : {}),\n\t\t...(typeof legacy.durationMs === \"number\" ? { durationMs: legacy.durationMs } : {}),\n\t\t...(typeof legacy.tokens === \"number\" ? { tokens: legacy.tokens } : {}),\n\t};\n}\n\nfunction resolveSubagentDelegationStatus(\n\tresult: PromptTemplateBridgeResult,\n\taborted: boolean,\n): SubagentDelegationStatus {\n\tif (aborted) return \"cancelled\";\n\tconst child = result.details?.results?.[0];\n\tif (!child) return \"failed\";\n\tif (result.details?.timedOut || child.timedOut) return \"timed_out\";\n\tif (child?.turnBudgetExceeded) return \"turn_budget_exhausted\";\n\tif (child?.toolBudgetBlocked) return \"tool_budget_exhausted\";\n\tif (child?.acceptance?.status === \"rejected\" && child.acceptance.explicit) return \"acceptance_failed\";\n\tif (result.details?.stopped || child?.stopped || child?.interrupted) return \"interrupted\";\n\tif (result.isError || child?.error || (typeof child?.exitCode === \"number\" && child.exitCode !== 0)) return \"failed\";\n\treturn \"completed\";\n}\n\nexport function toSubagentDelegationResponse(\n\trequestId: string,\n\tresult: PromptTemplateBridgeResult,\n\taborted: boolean,\n): SubagentDelegationResponse {\n\tconst child = result.details?.results?.[0];\n\tconst progress = child?.progressSummary ?? result.details?.progress?.[0];\n\tconst warnings = [child?.skillsWarning, child?.outputSaveError, child?.transcriptError]\n\t\t.filter((warning): warning is string => typeof warning === \"string\" && warning.length > 0);\n\tconst status = resolveSubagentDelegationStatus(result, aborted);\n\tconst fallbackError = status === \"failed\" ? firstTextContent(result.content) : undefined;\n\treturn {\n\t\tversion: SUBAGENT_DELEGATION_PROTOCOL_VERSION,\n\t\trequestId,\n\t\tstatus,\n\t\t...(child?.error || fallbackError ? { error: child?.error ?? fallbackError } : {}),\n\t\t...(result.details?.runId ? { runId: result.details.runId } : {}),\n\t\t...(child ? { childIndex: 0 } : {}),\n\t\t...(child?.agent ? { agent: child.agent } : {}),\n\t\t...(child?.model ? { model: child.model } : {}),\n\t\t...(typeof child?.exitCode === \"number\" ? { exitCode: child.exitCode } : {}),\n\t\t...(child?.finalOutput ? { output: child.finalOutput } : {}),\n\t\t...(child?.savedOutputPath ? { outputPath: child.savedOutputPath } : {}),\n\t\t...(child?.sessionFile ? { sessionFile: child.sessionFile } : {}),\n\t\t...(child?.acceptance ? { acceptance: { status: child.acceptance.status, explicit: child.acceptance.explicit } } : {}),\n\t\t...(typeof child?.usage?.turns === \"number\" ? { turns: child.usage.turns } : {}),\n\t\t...(typeof progress?.toolCount === \"number\" ? { toolCount: progress.toolCount } : {}),\n\t\t...(typeof progress?.durationMs === \"number\" ? { durationMs: progress.durationMs } : {}),\n\t\t...(typeof progress?.tokens === \"number\" ? { tokens: progress.tokens } : {}),\n\t\t...(warnings.length > 0 ? { warnings } : {}),\n\t};\n}\n\nexport function toPromptTemplateResponse(\n\trequest: PromptTemplateDelegationRequest,\n\tresult: PromptTemplateBridgeResult,\n): PromptTemplateDelegationResponse {\n\tconst contentText = firstTextContent(result.content);\n\tconst messages = buildDelegationMessages(result.details?.results?.[0] ?? {}, contentText);\n\tconst parallelResults = request.tasks?.map<PromptTemplateDelegationParallelResult>((task, index) => {\n\t\tconst step = result.details?.results?.[index];\n\t\tif (!step) {\n\t\t\treturn {\n\t\t\t\tagent: task.agent,\n\t\t\t\tmessages: [],\n\t\t\t\tisError: true,\n\t\t\t\terrorText: \"Missing result for delegated parallel task.\",\n\t\t\t};\n\t\t}\n\t\tconst exitCode = typeof step.exitCode === \"number\" ? step.exitCode : undefined;\n\t\treturn {\n\t\t\tagent: step.agent ?? task.agent,\n\t\t\tmessages: buildDelegationMessages(step),\n\t\t\tisError: (exitCode !== undefined && exitCode !== 0) || !!step.error,\n\t\t\terrorText: step.error || undefined,\n\t\t};\n\t});\n\treturn {\n\t\t...request,\n\t\tmessages,\n\t\t...(parallelResults ? { parallelResults } : {}),\n\t\t...(contentText ? { contentText } : {}),\n\t\tisError: result.isError === true,\n\t\terrorText: result.isError ? contentText : undefined,\n\t};\n}\n"]}
1
+ {"version":3,"file":"delegation-adapters.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/slash/delegation-adapters.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport {\n\tSUBAGENT_DELEGATION_PROTOCOL_VERSION,\n\ttype SubagentDelegationAcceptanceResult,\n\ttype SubagentDelegationRequest,\n\ttype SubagentDelegationResponse,\n\ttype SubagentDelegationStatus,\n\ttype SubagentDelegationUpdate,\n} from \"../api/delegation.ts\";\nimport type { AcceptanceInput, ToolBudgetConfig, TurnBudgetConfig } from \"../shared/types.ts\";\n\nexport interface PromptTemplateDelegationTask {\n\tagent: string;\n\ttask: string;\n\ttier: \"light\" | \"standard\" | \"heavy\";\n\tcwd?: string;\n}\n\nexport interface PromptTemplateDelegationParallelResult {\n\tagent: string;\n\tmessages: unknown[];\n\tisError: boolean;\n\terrorText?: string;\n}\n\nexport interface PromptTemplateDelegationRequest {\n\trequestId: string;\n\tagent: string;\n\ttask: string;\n\ttasks?: PromptTemplateDelegationTask[];\n\tcontext: \"fresh\" | \"fork\";\n\ttier: \"light\" | \"standard\" | \"heavy\";\n\tcwd: string;\n\tworktree?: boolean;\n}\n\nexport interface PromptTemplateDelegationResponse extends PromptTemplateDelegationRequest {\n\tmessages: unknown[];\n\tparallelResults?: PromptTemplateDelegationParallelResult[];\n\tcontentText?: string;\n\tisError: boolean;\n\terrorText?: string;\n}\n\ninterface PromptTemplateDelegationTaskProgress {\n\tindex?: number;\n\tagent: string;\n\tstatus?: string;\n\tcurrentTool?: string;\n\tcurrentToolArgs?: string;\n\trecentOutput?: string;\n\trecentOutputLines?: string[];\n\trecentTools?: Array<{ tool: string; args: string }>;\n\ttier: \"light\" | \"standard\" | \"heavy\";\n\ttoolCount?: number;\n\tdurationMs?: number;\n\ttokens?: number;\n}\n\nexport interface PromptTemplateDelegationUpdate {\n\trequestId: string;\n\tcurrentTool?: string;\n\tcurrentToolArgs?: string;\n\trecentOutput?: string;\n\trecentOutputLines?: string[];\n\trecentTools?: Array<{ tool: string; args: string }>;\n\tmodel?: string;\n\ttoolCount?: number;\n\tdurationMs?: number;\n\ttokens?: number;\n\ttaskProgress?: PromptTemplateDelegationTaskProgress[];\n}\n\nexport interface PromptTemplateBridgeResult {\n\tisError?: boolean;\n\tcontent?: unknown;\n\tdetails?: {\n\t\tmode?: \"single\" | \"parallel\" | \"chain\" | \"management\";\n\t\trunId?: string;\n\t\ttimedOut?: boolean;\n\t\tstopped?: boolean;\n\t\tresults?: Array<{\n\t\t\tagent?: string;\n\t\t\tmessages?: unknown[];\n\t\t\tfinalOutput?: string;\n\t\t\ttoolCalls?: Array<{ text?: string; expandedText?: string }>;\n\t\t\texitCode?: number;\n\t\t\terror?: string;\n\t\t\tmodel?: string;\n\t\t\tinterrupted?: boolean;\n\t\t\ttimedOut?: boolean;\n\t\t\tstopped?: boolean;\n\t\t\tturnBudgetExceeded?: boolean;\n\t\t\ttoolBudgetBlocked?: boolean;\n\t\t\tsavedOutputPath?: string;\n\t\t\tsessionFile?: string;\n\t\t\tacceptance?: SubagentDelegationAcceptanceResult;\n\t\t\tusage?: { turns?: number };\n\t\t\tprogressSummary?: { toolCount?: number; durationMs?: number; tokens?: number };\n\t\t\tskillsWarning?: string;\n\t\t\toutputSaveError?: string;\n\t\t\ttranscriptError?: string;\n\t\t}>;\n\t\tprogress?: Array<{\n\t\t\tindex?: number;\n\t\t\tagent?: string;\n\t\t\tstatus?: string;\n\t\t\tcurrentTool?: string;\n\t\t\tcurrentToolArgs?: string;\n\t\t\trecentOutput?: string[];\n\t\t\trecentTools?: Array<{ tool?: string; args?: string }>;\n\t\t\ttoolCount?: number;\n\t\t\tdurationMs?: number;\n\t\t\ttokens?: number;\n\t\t}>;\n\t};\n}\n\nexport interface DelegatedSubagentExecutionParams {\n\tagent?: string;\n\ttask?: string;\n\ttasks?: PromptTemplateDelegationTask[];\n\tcontext: \"fresh\" | \"fork\";\n\tmodel?: string;\n\tcwd: string;\n\tworktree?: boolean;\n\ttimeoutMs?: number;\n\tturnBudget?: TurnBudgetConfig;\n\ttoolBudget?: ToolBudgetConfig;\n\tskill?: string | string[] | boolean;\n\toutput?: string | boolean;\n\toutputMode?: \"inline\" | \"file-only\";\n\tacceptance?: AcceptanceInput;\n\tartifacts?: boolean;\n\tasync: false;\n\tforegroundOnly: true;\n\tclarify: false;\n}\n\nfunction parseDelegationTasks(tasks: unknown): PromptTemplateDelegationTask[] {\n\tif (!Array.isArray(tasks)) return [];\n\tconst parsed: PromptTemplateDelegationTask[] = [];\n\tfor (const item of tasks) {\n\t\tif (!item || typeof item !== \"object\") return [];\n\t\tconst value = item as Partial<PromptTemplateDelegationTask>;\n\t\tif (typeof value.agent !== \"string\" || !value.agent.trim()) return [];\n\t\tif (typeof value.task !== \"string\" || !value.task.trim()) return [];\n\t\tif (value.tier !== \"light\" && value.tier !== \"standard\" && value.tier !== \"heavy\") return [];\n\t\tconst cwd = typeof value.cwd === \"string\" && value.cwd.trim().length > 0 ? value.cwd : undefined;\n\t\tparsed.push({\n\t\t\tagent: value.agent,\n\t\t\ttask: value.task,\n\t\t\ttier: value.tier,\n\t\t\t...(cwd ? { cwd } : {}),\n\t\t});\n\t}\n\treturn parsed;\n}\n\nexport function parsePromptTemplateRequest(data: unknown): PromptTemplateDelegationRequest | undefined {\n\tif (!data || typeof data !== \"object\") return undefined;\n\tconst value = data as Partial<PromptTemplateDelegationRequest> & { tasks?: unknown };\n\tif (typeof value.requestId !== \"string\" || !value.requestId) return undefined;\n\tif (value.tier !== \"light\" && value.tier !== \"standard\" && value.tier !== \"heavy\") return undefined;\n\tif (typeof value.cwd !== \"string\" || !value.cwd) return undefined;\n\tif (value.context !== \"fresh\" && value.context !== \"fork\") return undefined;\n\tconst tasks = parseDelegationTasks(value.tasks);\n\tconst worktree = value.worktree === true ? true : undefined;\n\tconst hasSingle =\n\t\ttypeof value.agent === \"string\" &&\n\t\tvalue.agent.length > 0 &&\n\t\ttypeof value.task === \"string\" &&\n\t\tvalue.task.length > 0;\n\tif (!hasSingle && tasks.length === 0) return undefined;\n\n\tconst fallbackTask = tasks[0];\n\treturn {\n\t\trequestId: value.requestId,\n\t\tagent: hasSingle ? value.agent : fallbackTask!.agent,\n\t\ttask: hasSingle ? value.task : fallbackTask!.task,\n\t\t...(tasks.length > 0 ? { tasks } : {}),\n\t\tcontext: value.context,\n\t\ttier: value.tier,\n\t\tcwd: value.cwd,\n\t\t...(worktree ? { worktree } : {}),\n\t};\n}\n\nfunction firstTextContent(content: unknown): string | undefined {\n\tif (!Array.isArray(content)) return undefined;\n\tfor (const part of content) {\n\t\tif (!part || typeof part !== \"object\") continue;\n\t\tif ((part as { type?: string }).type !== \"text\") continue;\n\t\tconst text = (part as { text?: unknown }).text;\n\t\tif (typeof text === \"string\" && text.trim()) return text.trim();\n\t}\n\treturn undefined;\n}\n\nfunction filterRecentOutput(lines: string[] | undefined): string[] | undefined {\n\tif (!lines || lines.length === 0) return undefined;\n\tconst filtered = lines.filter((line) => typeof line === \"string\" && line.trim() && line.trim() !== \"(running...)\");\n\tif (filtered.length === 0) return undefined;\n\treturn filtered;\n}\n\nfunction sanitizeRecentTools(\n\ttools: Array<{ tool?: string; args?: string }> | undefined,\n): Array<{ tool: string; args: string }> | undefined {\n\tif (!tools || tools.length === 0) return undefined;\n\tconst sanitized = tools.flatMap((entry) => {\n\t\tif (typeof entry.tool !== \"string\" || entry.tool.trim().length === 0) return [];\n\t\treturn [{\n\t\t\ttool: entry.tool,\n\t\t\targs: typeof entry.args === \"string\" ? entry.args : String(entry.args ?? \"\"),\n\t\t}];\n\t});\n\treturn sanitized.length > 0 ? sanitized : undefined;\n}\n\nfunction resolveProgressModel(\n\tupdate: PromptTemplateBridgeResult,\n\tentry: { index?: number; agent?: string },\n): string | undefined {\n\tconst results = update.details?.results;\n\tif (!results || results.length === 0) return undefined;\n\tif (typeof entry.index === \"number\" && entry.index >= 0) {\n\t\tconst byIndex = results[entry.index];\n\t\tif (typeof byIndex?.model === \"string\") return byIndex.model;\n\t}\n\tif (entry.agent) {\n\t\tconst byAgent = results.find((result) => result.agent === entry.agent && typeof result.model === \"string\");\n\t\tif (byAgent?.model) return byAgent.model;\n\t}\n\tconst firstWithModel = results.find((result) => typeof result.model === \"string\");\n\treturn firstWithModel?.model;\n}\n\nfunction toolCallNameFromSummary(summary: { text?: string; expandedText?: string }): string | undefined {\n\tconst text = typeof summary.expandedText === \"string\" && summary.expandedText.trim().length > 0\n\t\t? summary.expandedText.trim()\n\t\t: typeof summary.text === \"string\"\n\t\t\t? summary.text.trim()\n\t\t\t: \"\";\n\tif (!text) return undefined;\n\tif (text.startsWith(\"$ \")) return \"bash\";\n\treturn text.match(/^[A-Za-z_][\\w.-]*/)?.[0];\n}\n\nfunction buildDelegationMessages(\n\tresult: { messages?: unknown[]; finalOutput?: string; toolCalls?: Array<{ text?: string; expandedText?: string }> },\n\tfallbackText?: string,\n): unknown[] {\n\tif (Array.isArray(result.messages) && result.messages.length > 0) return result.messages;\n\tconst toolCallParts = (result.toolCalls ?? []).flatMap((summary) => {\n\t\tconst name = toolCallNameFromSummary(summary);\n\t\treturn name ? [{ type: \"toolCall\", name, arguments: { summary: summary.expandedText ?? summary.text ?? \"\" } }] : [];\n\t});\n\tconst text = typeof result.finalOutput === \"string\" && result.finalOutput.trim().length > 0\n\t\t? result.finalOutput.trim()\n\t\t: fallbackText;\n\tconst content = [\n\t\t...toolCallParts,\n\t\t...(text ? [{ type: \"text\", text }] : []),\n\t];\n\tif (content.length === 0) return [];\n\treturn [{ role: \"assistant\", content }];\n}\n\nexport function toDelegationUpdate(requestId: string, update: PromptTemplateBridgeResult): PromptTemplateDelegationUpdate | undefined {\n\tconst progress = update.details?.progress?.[0];\n\tconst taskProgress = update.details?.progress?.map((entry) => {\n\t\tconst lastOutput = entry.recentOutput?.[entry.recentOutput.length - 1];\n\t\tconst safeLastOutput =\n\t\t\ttypeof lastOutput === \"string\" && lastOutput.trim() && lastOutput !== \"(running...)\"\n\t\t\t\t? lastOutput\n\t\t\t\t: undefined;\n\t\treturn {\n\t\t\tindex: entry.index,\n\t\t\tagent: entry.agent ?? \"delegate\",\n\t\t\tstatus: entry.status,\n\t\t\tcurrentTool: entry.currentTool,\n\t\t\tcurrentToolArgs: entry.currentToolArgs,\n\t\t\trecentOutput: safeLastOutput,\n\t\t\trecentOutputLines: filterRecentOutput(entry.recentOutput),\n\t\t\trecentTools: sanitizeRecentTools(entry.recentTools),\n\t\t\tmodel: resolveProgressModel(update, entry),\n\t\t\ttoolCount: entry.toolCount,\n\t\t\tdurationMs: entry.durationMs,\n\t\t\ttokens: entry.tokens,\n\t\t};\n\t});\n\tif (!progress && (!taskProgress || taskProgress.length === 0)) return undefined;\n\tconst lastOutput = progress?.recentOutput?.[progress.recentOutput.length - 1];\n\tconst safeLastOutput =\n\t\ttypeof lastOutput === \"string\" && lastOutput.trim() && lastOutput !== \"(running...)\"\n\t\t\t? lastOutput\n\t\t\t: undefined;\n\treturn {\n\t\trequestId,\n\t\tcurrentTool: progress?.currentTool,\n\t\tcurrentToolArgs: progress?.currentToolArgs,\n\t\trecentOutput: safeLastOutput,\n\t\trecentOutputLines: filterRecentOutput(progress?.recentOutput),\n\t\trecentTools: sanitizeRecentTools(progress?.recentTools),\n\t\tmodel: progress ? resolveProgressModel(update, progress) : undefined,\n\t\ttoolCount: progress?.toolCount,\n\t\tdurationMs: progress?.durationMs,\n\t\ttokens: progress?.tokens,\n\t\ttaskProgress,\n\t};\n}\n\nexport function toLegacyExecutionParams(request: PromptTemplateDelegationRequest): DelegatedSubagentExecutionParams {\n\tif (request.tasks && request.tasks.length > 0) {\n\t\treturn {\n\t\t\ttasks: request.tasks,\n\t\t\tcontext: request.context,\n\t\t\tcwd: request.cwd,\n\t\t\tworktree: request.worktree,\n\t\t\tasync: false,\n\t\t\tforegroundOnly: true,\n\t\t\tclarify: false,\n\t\t};\n\t}\n\treturn {\n\t\tagent: request.agent,\n\t\ttask: request.task,\n\t\tcontext: request.context,\n\t\ttier: request.tier,\n\t\tcwd: request.cwd,\n\t\tasync: false,\n\t\tforegroundOnly: true,\n\t\tclarify: false,\n\t};\n}\n\nexport function toSubagentDelegationExecutionParams(request: SubagentDelegationRequest): DelegatedSubagentExecutionParams {\n\treturn {\n\t\tagent: request.agent,\n\t\ttask: request.task,\n\t\tcontext: request.context,\n\t\tcwd: request.cwd,\n\t\ttier: request.tier,\n\t\ttimeoutMs: request.timeoutMs,\n\t\tturnBudget: request.turnBudget,\n\t\ttoolBudget: request.toolBudget,\n\t\tskill: request.skill,\n\t\toutput: request.output,\n\t\toutputMode: request.outputMode,\n\t\tacceptance: request.acceptance,\n\t\tartifacts: request.artifacts,\n\t\tasync: false,\n\t\tforegroundOnly: true,\n\t\tclarify: false,\n\t};\n}\n\nexport function toSubagentDelegationUpdate(requestId: string, result: PromptTemplateBridgeResult): SubagentDelegationUpdate | undefined {\n\tconst legacy = toDelegationUpdate(requestId, result);\n\tif (!legacy) return undefined;\n\treturn {\n\t\tversion: SUBAGENT_DELEGATION_PROTOCOL_VERSION,\n\t\trequestId,\n\t\t...(legacy.currentTool ? { currentTool: legacy.currentTool } : {}),\n\t\t...(legacy.currentToolArgs ? { currentToolArgs: legacy.currentToolArgs } : {}),\n\t\t...(legacy.recentOutput ? { recentOutput: legacy.recentOutput } : {}),\n\t\t...(legacy.recentOutputLines ? { recentOutputLines: legacy.recentOutputLines } : {}),\n\t\t...(legacy.recentTools ? { recentTools: legacy.recentTools } : {}),\n\t\t...(legacy.model ? { model: legacy.model } : {}),\n\t\t...(typeof legacy.toolCount === \"number\" ? { toolCount: legacy.toolCount } : {}),\n\t\t...(typeof legacy.durationMs === \"number\" ? { durationMs: legacy.durationMs } : {}),\n\t\t...(typeof legacy.tokens === \"number\" ? { tokens: legacy.tokens } : {}),\n\t};\n}\n\nfunction resolveSubagentDelegationStatus(\n\tresult: PromptTemplateBridgeResult,\n\taborted: boolean,\n): SubagentDelegationStatus {\n\tif (aborted) return \"cancelled\";\n\tconst child = result.details?.results?.[0];\n\tif (!child) return \"failed\";\n\tif (result.details?.timedOut || child.timedOut) return \"timed_out\";\n\tif (child?.turnBudgetExceeded) return \"turn_budget_exhausted\";\n\tif (child?.toolBudgetBlocked) return \"tool_budget_exhausted\";\n\tif (child?.acceptance?.status === \"rejected\" && child.acceptance.explicit) return \"acceptance_failed\";\n\tif (result.details?.stopped || child?.stopped || child?.interrupted) return \"interrupted\";\n\tif (result.isError || child?.error || (typeof child?.exitCode === \"number\" && child.exitCode !== 0)) return \"failed\";\n\treturn \"completed\";\n}\n\nexport function toSubagentDelegationResponse(\n\trequestId: string,\n\tresult: PromptTemplateBridgeResult,\n\taborted: boolean,\n): SubagentDelegationResponse {\n\tconst child = result.details?.results?.[0];\n\tconst progress = child?.progressSummary ?? result.details?.progress?.[0];\n\tconst warnings = [child?.skillsWarning, child?.outputSaveError, child?.transcriptError]\n\t\t.filter((warning): warning is string => typeof warning === \"string\" && warning.length > 0);\n\tconst status = resolveSubagentDelegationStatus(result, aborted);\n\tconst fallbackError = status === \"failed\" ? firstTextContent(result.content) : undefined;\n\treturn {\n\t\tversion: SUBAGENT_DELEGATION_PROTOCOL_VERSION,\n\t\trequestId,\n\t\tstatus,\n\t\t...(child?.error || fallbackError ? { error: child?.error ?? fallbackError } : {}),\n\t\t...(result.details?.runId ? { runId: result.details.runId } : {}),\n\t\t...(child ? { childIndex: 0 } : {}),\n\t\t...(child?.agent ? { agent: child.agent } : {}),\n\t\t...(child?.model ? { model: child.model } : {}),\n\t\t...(typeof child?.exitCode === \"number\" ? { exitCode: child.exitCode } : {}),\n\t\t...(child?.finalOutput ? { output: child.finalOutput } : {}),\n\t\t...(child?.savedOutputPath ? { outputPath: child.savedOutputPath } : {}),\n\t\t...(child?.sessionFile ? { sessionFile: child.sessionFile } : {}),\n\t\t...(child?.acceptance ? { acceptance: { status: child.acceptance.status, explicit: child.acceptance.explicit } } : {}),\n\t\t...(typeof child?.usage?.turns === \"number\" ? { turns: child.usage.turns } : {}),\n\t\t...(typeof progress?.toolCount === \"number\" ? { toolCount: progress.toolCount } : {}),\n\t\t...(typeof progress?.durationMs === \"number\" ? { durationMs: progress.durationMs } : {}),\n\t\t...(typeof progress?.tokens === \"number\" ? { tokens: progress.tokens } : {}),\n\t\t...(warnings.length > 0 ? { warnings } : {}),\n\t};\n}\n\nexport function toPromptTemplateResponse(\n\trequest: PromptTemplateDelegationRequest,\n\tresult: PromptTemplateBridgeResult,\n): PromptTemplateDelegationResponse {\n\tconst contentText = firstTextContent(result.content);\n\tconst messages = buildDelegationMessages(result.details?.results?.[0] ?? {}, contentText);\n\tconst parallelResults = request.tasks?.map<PromptTemplateDelegationParallelResult>((task, index) => {\n\t\tconst step = result.details?.results?.[index];\n\t\tif (!step) {\n\t\t\treturn {\n\t\t\t\tagent: task.agent,\n\t\t\t\tmessages: [],\n\t\t\t\tisError: true,\n\t\t\t\terrorText: \"Missing result for delegated parallel task.\",\n\t\t\t};\n\t\t}\n\t\tconst exitCode = typeof step.exitCode === \"number\" ? step.exitCode : undefined;\n\t\treturn {\n\t\t\tagent: step.agent ?? task.agent,\n\t\t\tmessages: buildDelegationMessages(step),\n\t\t\tisError: (exitCode !== undefined && exitCode !== 0) || !!step.error,\n\t\t\terrorText: step.error || undefined,\n\t\t};\n\t});\n\treturn {\n\t\t...request,\n\t\tmessages,\n\t\t...(parallelResults ? { parallelResults } : {}),\n\t\t...(contentText ? { contentText } : {}),\n\t\tisError: result.isError === true,\n\t\terrorText: result.isError ? contentText : undefined,\n\t};\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"delegation-request.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/slash/delegation-request.ts"],"names":[],"mappings":"AACA,OAAO,EAEN,KAAK,yBAAyB,EAC9B,MAAM,sBAAsB,CAAC;AAK9B,MAAM,MAAM,6BAA6B,GACtC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,yBAAyB,CAAA;CAAE,GAChD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AA6BpD,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,OAAO,GAAG,6BAA6B,CA+D3F","sourcesContent":["// @ts-nocheck\nimport {\n\tSUBAGENT_DELEGATION_PROTOCOL_VERSION,\n\ttype SubagentDelegationRequest,\n} from \"../api/delegation.ts\";\nimport { validateAcceptanceInput } from \"../runs/shared/acceptance.ts\";\nimport { validateToolBudgetConfig } from \"../runs/shared/tool-budget.ts\";\nimport { resolveTurnBudgetConfig } from \"../runs/shared/turn-budget.ts\";\n\nexport type SubagentDelegationParseResult =\n\t| { ok: true; request: SubagentDelegationRequest }\n\t| { ok: false; requestId?: string; error: string };\n\nconst supportedFields = new Set([\n\t\"version\",\n\t\"requestId\",\n\t\"agent\",\n\t\"task\",\n\t\"context\",\n\t\"cwd\",\n\t\"model\",\n\t\"timeoutMs\",\n\t\"turnBudget\",\n\t\"toolBudget\",\n\t\"skill\",\n\t\"output\",\n\t\"outputMode\",\n\t\"acceptance\",\n\t\"artifacts\",\n]);\n\nfunction nonEmptyString(value: unknown): value is string {\n\treturn typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction validateRequestId(value: unknown): string | undefined {\n\tif (!nonEmptyString(value) || value.length > 256 || /[\\r\\n]/.test(value)) return undefined;\n\treturn value;\n}\n\nexport function parseSubagentDelegationRequest(data: unknown): SubagentDelegationParseResult {\n\tif (!data || typeof data !== \"object\" || Array.isArray(data)) {\n\t\treturn { ok: false, error: \"Delegation request must be an object.\" };\n\t}\n\tconst value = data as Record<string, unknown>;\n\tconst requestId = validateRequestId(value.requestId);\n\tif (value.version !== SUBAGENT_DELEGATION_PROTOCOL_VERSION) {\n\t\treturn {\n\t\t\t...(requestId ? { requestId } : {}),\n\t\t\tok: false,\n\t\t\terror: `Unsupported delegation protocol version: ${String(value.version)}.`,\n\t\t};\n\t}\n\tif (!requestId) {\n\t\treturn { ok: false, error: \"Delegation requestId must be a non-empty string of at most 256 characters without newlines.\" };\n\t}\n\tconst unsupportedField = Object.keys(value).find((key) => !supportedFields.has(key));\n\tif (unsupportedField) return { ok: false, requestId, error: `Unsupported delegation field: ${unsupportedField}.` };\n\tif (!nonEmptyString(value.agent)) return { ok: false, requestId, error: \"Delegation agent must be a non-empty string.\" };\n\tif (!nonEmptyString(value.task)) return { ok: false, requestId, error: \"Delegation task must be a non-empty string.\" };\n\tif (value.context !== \"fresh\" && value.context !== \"fork\") {\n\t\treturn { ok: false, requestId, error: \"Delegation context must be fresh or fork.\" };\n\t}\n\tif (!nonEmptyString(value.cwd)) return { ok: false, requestId, error: \"Delegation cwd must be a non-empty string.\" };\n\tif (value.model !== undefined && !nonEmptyString(value.model)) {\n\t\treturn { ok: false, requestId, error: \"model must be a non-empty string when provided.\" };\n\t}\n\tif (value.timeoutMs !== undefined && (typeof value.timeoutMs !== \"number\" || !Number.isInteger(value.timeoutMs) || value.timeoutMs < 1)) {\n\t\treturn { ok: false, requestId, error: \"timeoutMs must be an integer >= 1.\" };\n\t}\n\tconst turnBudget = resolveTurnBudgetConfig(value.turnBudget);\n\tif (turnBudget.error) return { ok: false, requestId, error: turnBudget.error };\n\tif (value.toolBudget && typeof value.toolBudget === \"object\" && !Array.isArray(value.toolBudget)) {\n\t\tconst unsupportedToolBudgetField = Object.keys(value.toolBudget).find((key) => key !== \"soft\" && key !== \"hard\" && key !== \"block\");\n\t\tif (unsupportedToolBudgetField) {\n\t\t\treturn { ok: false, requestId, error: `toolBudget.${unsupportedToolBudgetField} is not supported.` };\n\t\t}\n\t}\n\tconst toolBudget = validateToolBudgetConfig(value.toolBudget);\n\tif (toolBudget.error) return { ok: false, requestId, error: toolBudget.error };\n\tif (value.skill !== undefined) {\n\t\tconst validSkill = typeof value.skill === \"boolean\"\n\t\t\t|| nonEmptyString(value.skill)\n\t\t\t|| (Array.isArray(value.skill) && value.skill.length > 0 && value.skill.every(nonEmptyString));\n\t\tif (!validSkill) {\n\t\t\treturn { ok: false, requestId, error: \"skill must be a boolean, non-empty string, or non-empty string array.\" };\n\t\t}\n\t}\n\tif (value.output !== undefined && typeof value.output !== \"boolean\" && !nonEmptyString(value.output)) {\n\t\treturn { ok: false, requestId, error: \"output must be a boolean or non-empty string.\" };\n\t}\n\tif (value.outputMode !== undefined && value.outputMode !== \"inline\" && value.outputMode !== \"file-only\") {\n\t\treturn { ok: false, requestId, error: \"outputMode must be inline or file-only.\" };\n\t}\n\tif (value.outputMode === \"file-only\" && !nonEmptyString(value.output)) {\n\t\treturn { ok: false, requestId, error: 'outputMode \"file-only\" requires output to be a non-empty path.' };\n\t}\n\tconst acceptanceErrors = validateAcceptanceInput(value.acceptance);\n\tif (acceptanceErrors.length > 0) return { ok: false, requestId, error: acceptanceErrors.join(\" \") };\n\tif (value.artifacts !== undefined && typeof value.artifacts !== \"boolean\") {\n\t\treturn { ok: false, requestId, error: \"artifacts must be a boolean.\" };\n\t}\n\treturn { ok: true, request: value as unknown as SubagentDelegationRequest };\n}\n"]}
1
+ {"version":3,"file":"delegation-request.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/slash/delegation-request.ts"],"names":[],"mappings":"AACA,OAAO,EAEN,KAAK,yBAAyB,EAC9B,MAAM,sBAAsB,CAAC;AAK9B,MAAM,MAAM,6BAA6B,GACtC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,yBAAyB,CAAA;CAAE,GAChD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AA6BpD,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,OAAO,GAAG,6BAA6B,CA+D3F","sourcesContent":["// @ts-nocheck\nimport {\n\tSUBAGENT_DELEGATION_PROTOCOL_VERSION,\n\ttype SubagentDelegationRequest,\n} from \"../api/delegation.ts\";\nimport { validateAcceptanceInput } from \"../runs/shared/acceptance.ts\";\nimport { validateToolBudgetConfig } from \"../runs/shared/tool-budget.ts\";\nimport { resolveTurnBudgetConfig } from \"../runs/shared/turn-budget.ts\";\n\nexport type SubagentDelegationParseResult =\n\t| { ok: true; request: SubagentDelegationRequest }\n\t| { ok: false; requestId?: string; error: string };\n\nconst supportedFields = new Set([\n\t\"version\",\n\t\"requestId\",\n\t\"agent\",\n\t\"task\",\n\t\"context\",\n\t\"cwd\",\n\t\"tier\",\n\t\"timeoutMs\",\n\t\"turnBudget\",\n\t\"toolBudget\",\n\t\"skill\",\n\t\"output\",\n\t\"outputMode\",\n\t\"acceptance\",\n\t\"artifacts\",\n]);\n\nfunction nonEmptyString(value: unknown): value is string {\n\treturn typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction validateRequestId(value: unknown): string | undefined {\n\tif (!nonEmptyString(value) || value.length > 256 || /[\\r\\n]/.test(value)) return undefined;\n\treturn value;\n}\n\nexport function parseSubagentDelegationRequest(data: unknown): SubagentDelegationParseResult {\n\tif (!data || typeof data !== \"object\" || Array.isArray(data)) {\n\t\treturn { ok: false, error: \"Delegation request must be an object.\" };\n\t}\n\tconst value = data as Record<string, unknown>;\n\tconst requestId = validateRequestId(value.requestId);\n\tif (value.version !== SUBAGENT_DELEGATION_PROTOCOL_VERSION) {\n\t\treturn {\n\t\t\t...(requestId ? { requestId } : {}),\n\t\t\tok: false,\n\t\t\terror: `Unsupported delegation protocol version: ${String(value.version)}.`,\n\t\t};\n\t}\n\tif (!requestId) {\n\t\treturn { ok: false, error: \"Delegation requestId must be a non-empty string of at most 256 characters without newlines.\" };\n\t}\n\tconst unsupportedField = Object.keys(value).find((key) => !supportedFields.has(key));\n\tif (unsupportedField) return { ok: false, requestId, error: `Unsupported delegation field: ${unsupportedField}.` };\n\tif (!nonEmptyString(value.agent)) return { ok: false, requestId, error: \"Delegation agent must be a non-empty string.\" };\n\tif (!nonEmptyString(value.task)) return { ok: false, requestId, error: \"Delegation task must be a non-empty string.\" };\n\tif (value.context !== \"fresh\" && value.context !== \"fork\") {\n\t\treturn { ok: false, requestId, error: \"Delegation context must be fresh or fork.\" };\n\t}\n\tif (!nonEmptyString(value.cwd)) return { ok: false, requestId, error: \"Delegation cwd must be a non-empty string.\" };\n\tif (value.tier !== \"light\" && value.tier !== \"standard\" && value.tier !== \"heavy\") {\n\t\treturn { ok: false, requestId, error: \"tier must be light, standard, or heavy.\" };\n\t}\n\tif (value.timeoutMs !== undefined && (typeof value.timeoutMs !== \"number\" || !Number.isInteger(value.timeoutMs) || value.timeoutMs < 1)) {\n\t\treturn { ok: false, requestId, error: \"timeoutMs must be an integer >= 1.\" };\n\t}\n\tconst turnBudget = resolveTurnBudgetConfig(value.turnBudget);\n\tif (turnBudget.error) return { ok: false, requestId, error: turnBudget.error };\n\tif (value.toolBudget && typeof value.toolBudget === \"object\" && !Array.isArray(value.toolBudget)) {\n\t\tconst unsupportedToolBudgetField = Object.keys(value.toolBudget).find((key) => key !== \"soft\" && key !== \"hard\" && key !== \"block\");\n\t\tif (unsupportedToolBudgetField) {\n\t\t\treturn { ok: false, requestId, error: `toolBudget.${unsupportedToolBudgetField} is not supported.` };\n\t\t}\n\t}\n\tconst toolBudget = validateToolBudgetConfig(value.toolBudget);\n\tif (toolBudget.error) return { ok: false, requestId, error: toolBudget.error };\n\tif (value.skill !== undefined) {\n\t\tconst validSkill = typeof value.skill === \"boolean\"\n\t\t\t|| nonEmptyString(value.skill)\n\t\t\t|| (Array.isArray(value.skill) && value.skill.length > 0 && value.skill.every(nonEmptyString));\n\t\tif (!validSkill) {\n\t\t\treturn { ok: false, requestId, error: \"skill must be a boolean, non-empty string, or non-empty string array.\" };\n\t\t}\n\t}\n\tif (value.output !== undefined && typeof value.output !== \"boolean\" && !nonEmptyString(value.output)) {\n\t\treturn { ok: false, requestId, error: \"output must be a boolean or non-empty string.\" };\n\t}\n\tif (value.outputMode !== undefined && value.outputMode !== \"inline\" && value.outputMode !== \"file-only\") {\n\t\treturn { ok: false, requestId, error: \"outputMode must be inline or file-only.\" };\n\t}\n\tif (value.outputMode === \"file-only\" && !nonEmptyString(value.output)) {\n\t\treturn { ok: false, requestId, error: 'outputMode \"file-only\" requires output to be a non-empty path.' };\n\t}\n\tconst acceptanceErrors = validateAcceptanceInput(value.acceptance);\n\tif (acceptanceErrors.length > 0) return { ok: false, requestId, error: acceptanceErrors.join(\" \") };\n\tif (value.artifacts !== undefined && typeof value.artifacts !== \"boolean\") {\n\t\treturn { ok: false, requestId, error: \"artifacts must be a boolean.\" };\n\t}\n\treturn { ok: true, request: value as unknown as SubagentDelegationRequest };\n}\n"]}
@@ -10,7 +10,7 @@ const supportedFields = new Set([
10
10
  "task",
11
11
  "context",
12
12
  "cwd",
13
- "model",
13
+ "tier",
14
14
  "timeoutMs",
15
15
  "turnBudget",
16
16
  "toolBudget",
@@ -56,8 +56,8 @@ export function parseSubagentDelegationRequest(data) {
56
56
  }
57
57
  if (!nonEmptyString(value.cwd))
58
58
  return { ok: false, requestId, error: "Delegation cwd must be a non-empty string." };
59
- if (value.model !== undefined && !nonEmptyString(value.model)) {
60
- return { ok: false, requestId, error: "model must be a non-empty string when provided." };
59
+ if (value.tier !== "light" && value.tier !== "standard" && value.tier !== "heavy") {
60
+ return { ok: false, requestId, error: "tier must be light, standard, or heavy." };
61
61
  }
62
62
  if (value.timeoutMs !== undefined && (typeof value.timeoutMs !== "number" || !Number.isInteger(value.timeoutMs) || value.timeoutMs < 1)) {
63
63
  return { ok: false, requestId, error: "timeoutMs must be an integer >= 1." };
@@ -1 +1 @@
1
- {"version":3,"file":"delegation-request.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/slash/delegation-request.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport {\n\tSUBAGENT_DELEGATION_PROTOCOL_VERSION,\n\ttype SubagentDelegationRequest,\n} from \"../api/delegation.ts\";\nimport { validateAcceptanceInput } from \"../runs/shared/acceptance.ts\";\nimport { validateToolBudgetConfig } from \"../runs/shared/tool-budget.ts\";\nimport { resolveTurnBudgetConfig } from \"../runs/shared/turn-budget.ts\";\n\nexport type SubagentDelegationParseResult =\n\t| { ok: true; request: SubagentDelegationRequest }\n\t| { ok: false; requestId?: string; error: string };\n\nconst supportedFields = new Set([\n\t\"version\",\n\t\"requestId\",\n\t\"agent\",\n\t\"task\",\n\t\"context\",\n\t\"cwd\",\n\t\"model\",\n\t\"timeoutMs\",\n\t\"turnBudget\",\n\t\"toolBudget\",\n\t\"skill\",\n\t\"output\",\n\t\"outputMode\",\n\t\"acceptance\",\n\t\"artifacts\",\n]);\n\nfunction nonEmptyString(value: unknown): value is string {\n\treturn typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction validateRequestId(value: unknown): string | undefined {\n\tif (!nonEmptyString(value) || value.length > 256 || /[\\r\\n]/.test(value)) return undefined;\n\treturn value;\n}\n\nexport function parseSubagentDelegationRequest(data: unknown): SubagentDelegationParseResult {\n\tif (!data || typeof data !== \"object\" || Array.isArray(data)) {\n\t\treturn { ok: false, error: \"Delegation request must be an object.\" };\n\t}\n\tconst value = data as Record<string, unknown>;\n\tconst requestId = validateRequestId(value.requestId);\n\tif (value.version !== SUBAGENT_DELEGATION_PROTOCOL_VERSION) {\n\t\treturn {\n\t\t\t...(requestId ? { requestId } : {}),\n\t\t\tok: false,\n\t\t\terror: `Unsupported delegation protocol version: ${String(value.version)}.`,\n\t\t};\n\t}\n\tif (!requestId) {\n\t\treturn { ok: false, error: \"Delegation requestId must be a non-empty string of at most 256 characters without newlines.\" };\n\t}\n\tconst unsupportedField = Object.keys(value).find((key) => !supportedFields.has(key));\n\tif (unsupportedField) return { ok: false, requestId, error: `Unsupported delegation field: ${unsupportedField}.` };\n\tif (!nonEmptyString(value.agent)) return { ok: false, requestId, error: \"Delegation agent must be a non-empty string.\" };\n\tif (!nonEmptyString(value.task)) return { ok: false, requestId, error: \"Delegation task must be a non-empty string.\" };\n\tif (value.context !== \"fresh\" && value.context !== \"fork\") {\n\t\treturn { ok: false, requestId, error: \"Delegation context must be fresh or fork.\" };\n\t}\n\tif (!nonEmptyString(value.cwd)) return { ok: false, requestId, error: \"Delegation cwd must be a non-empty string.\" };\n\tif (value.model !== undefined && !nonEmptyString(value.model)) {\n\t\treturn { ok: false, requestId, error: \"model must be a non-empty string when provided.\" };\n\t}\n\tif (value.timeoutMs !== undefined && (typeof value.timeoutMs !== \"number\" || !Number.isInteger(value.timeoutMs) || value.timeoutMs < 1)) {\n\t\treturn { ok: false, requestId, error: \"timeoutMs must be an integer >= 1.\" };\n\t}\n\tconst turnBudget = resolveTurnBudgetConfig(value.turnBudget);\n\tif (turnBudget.error) return { ok: false, requestId, error: turnBudget.error };\n\tif (value.toolBudget && typeof value.toolBudget === \"object\" && !Array.isArray(value.toolBudget)) {\n\t\tconst unsupportedToolBudgetField = Object.keys(value.toolBudget).find((key) => key !== \"soft\" && key !== \"hard\" && key !== \"block\");\n\t\tif (unsupportedToolBudgetField) {\n\t\t\treturn { ok: false, requestId, error: `toolBudget.${unsupportedToolBudgetField} is not supported.` };\n\t\t}\n\t}\n\tconst toolBudget = validateToolBudgetConfig(value.toolBudget);\n\tif (toolBudget.error) return { ok: false, requestId, error: toolBudget.error };\n\tif (value.skill !== undefined) {\n\t\tconst validSkill = typeof value.skill === \"boolean\"\n\t\t\t|| nonEmptyString(value.skill)\n\t\t\t|| (Array.isArray(value.skill) && value.skill.length > 0 && value.skill.every(nonEmptyString));\n\t\tif (!validSkill) {\n\t\t\treturn { ok: false, requestId, error: \"skill must be a boolean, non-empty string, or non-empty string array.\" };\n\t\t}\n\t}\n\tif (value.output !== undefined && typeof value.output !== \"boolean\" && !nonEmptyString(value.output)) {\n\t\treturn { ok: false, requestId, error: \"output must be a boolean or non-empty string.\" };\n\t}\n\tif (value.outputMode !== undefined && value.outputMode !== \"inline\" && value.outputMode !== \"file-only\") {\n\t\treturn { ok: false, requestId, error: \"outputMode must be inline or file-only.\" };\n\t}\n\tif (value.outputMode === \"file-only\" && !nonEmptyString(value.output)) {\n\t\treturn { ok: false, requestId, error: 'outputMode \"file-only\" requires output to be a non-empty path.' };\n\t}\n\tconst acceptanceErrors = validateAcceptanceInput(value.acceptance);\n\tif (acceptanceErrors.length > 0) return { ok: false, requestId, error: acceptanceErrors.join(\" \") };\n\tif (value.artifacts !== undefined && typeof value.artifacts !== \"boolean\") {\n\t\treturn { ok: false, requestId, error: \"artifacts must be a boolean.\" };\n\t}\n\treturn { ok: true, request: value as unknown as SubagentDelegationRequest };\n}\n"]}
1
+ {"version":3,"file":"delegation-request.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/slash/delegation-request.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport {\n\tSUBAGENT_DELEGATION_PROTOCOL_VERSION,\n\ttype SubagentDelegationRequest,\n} from \"../api/delegation.ts\";\nimport { validateAcceptanceInput } from \"../runs/shared/acceptance.ts\";\nimport { validateToolBudgetConfig } from \"../runs/shared/tool-budget.ts\";\nimport { resolveTurnBudgetConfig } from \"../runs/shared/turn-budget.ts\";\n\nexport type SubagentDelegationParseResult =\n\t| { ok: true; request: SubagentDelegationRequest }\n\t| { ok: false; requestId?: string; error: string };\n\nconst supportedFields = new Set([\n\t\"version\",\n\t\"requestId\",\n\t\"agent\",\n\t\"task\",\n\t\"context\",\n\t\"cwd\",\n\t\"tier\",\n\t\"timeoutMs\",\n\t\"turnBudget\",\n\t\"toolBudget\",\n\t\"skill\",\n\t\"output\",\n\t\"outputMode\",\n\t\"acceptance\",\n\t\"artifacts\",\n]);\n\nfunction nonEmptyString(value: unknown): value is string {\n\treturn typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction validateRequestId(value: unknown): string | undefined {\n\tif (!nonEmptyString(value) || value.length > 256 || /[\\r\\n]/.test(value)) return undefined;\n\treturn value;\n}\n\nexport function parseSubagentDelegationRequest(data: unknown): SubagentDelegationParseResult {\n\tif (!data || typeof data !== \"object\" || Array.isArray(data)) {\n\t\treturn { ok: false, error: \"Delegation request must be an object.\" };\n\t}\n\tconst value = data as Record<string, unknown>;\n\tconst requestId = validateRequestId(value.requestId);\n\tif (value.version !== SUBAGENT_DELEGATION_PROTOCOL_VERSION) {\n\t\treturn {\n\t\t\t...(requestId ? { requestId } : {}),\n\t\t\tok: false,\n\t\t\terror: `Unsupported delegation protocol version: ${String(value.version)}.`,\n\t\t};\n\t}\n\tif (!requestId) {\n\t\treturn { ok: false, error: \"Delegation requestId must be a non-empty string of at most 256 characters without newlines.\" };\n\t}\n\tconst unsupportedField = Object.keys(value).find((key) => !supportedFields.has(key));\n\tif (unsupportedField) return { ok: false, requestId, error: `Unsupported delegation field: ${unsupportedField}.` };\n\tif (!nonEmptyString(value.agent)) return { ok: false, requestId, error: \"Delegation agent must be a non-empty string.\" };\n\tif (!nonEmptyString(value.task)) return { ok: false, requestId, error: \"Delegation task must be a non-empty string.\" };\n\tif (value.context !== \"fresh\" && value.context !== \"fork\") {\n\t\treturn { ok: false, requestId, error: \"Delegation context must be fresh or fork.\" };\n\t}\n\tif (!nonEmptyString(value.cwd)) return { ok: false, requestId, error: \"Delegation cwd must be a non-empty string.\" };\n\tif (value.tier !== \"light\" && value.tier !== \"standard\" && value.tier !== \"heavy\") {\n\t\treturn { ok: false, requestId, error: \"tier must be light, standard, or heavy.\" };\n\t}\n\tif (value.timeoutMs !== undefined && (typeof value.timeoutMs !== \"number\" || !Number.isInteger(value.timeoutMs) || value.timeoutMs < 1)) {\n\t\treturn { ok: false, requestId, error: \"timeoutMs must be an integer >= 1.\" };\n\t}\n\tconst turnBudget = resolveTurnBudgetConfig(value.turnBudget);\n\tif (turnBudget.error) return { ok: false, requestId, error: turnBudget.error };\n\tif (value.toolBudget && typeof value.toolBudget === \"object\" && !Array.isArray(value.toolBudget)) {\n\t\tconst unsupportedToolBudgetField = Object.keys(value.toolBudget).find((key) => key !== \"soft\" && key !== \"hard\" && key !== \"block\");\n\t\tif (unsupportedToolBudgetField) {\n\t\t\treturn { ok: false, requestId, error: `toolBudget.${unsupportedToolBudgetField} is not supported.` };\n\t\t}\n\t}\n\tconst toolBudget = validateToolBudgetConfig(value.toolBudget);\n\tif (toolBudget.error) return { ok: false, requestId, error: toolBudget.error };\n\tif (value.skill !== undefined) {\n\t\tconst validSkill = typeof value.skill === \"boolean\"\n\t\t\t|| nonEmptyString(value.skill)\n\t\t\t|| (Array.isArray(value.skill) && value.skill.length > 0 && value.skill.every(nonEmptyString));\n\t\tif (!validSkill) {\n\t\t\treturn { ok: false, requestId, error: \"skill must be a boolean, non-empty string, or non-empty string array.\" };\n\t\t}\n\t}\n\tif (value.output !== undefined && typeof value.output !== \"boolean\" && !nonEmptyString(value.output)) {\n\t\treturn { ok: false, requestId, error: \"output must be a boolean or non-empty string.\" };\n\t}\n\tif (value.outputMode !== undefined && value.outputMode !== \"inline\" && value.outputMode !== \"file-only\") {\n\t\treturn { ok: false, requestId, error: \"outputMode must be inline or file-only.\" };\n\t}\n\tif (value.outputMode === \"file-only\" && !nonEmptyString(value.output)) {\n\t\treturn { ok: false, requestId, error: 'outputMode \"file-only\" requires output to be a non-empty path.' };\n\t}\n\tconst acceptanceErrors = validateAcceptanceInput(value.acceptance);\n\tif (acceptanceErrors.length > 0) return { ok: false, requestId, error: acceptanceErrors.join(\" \") };\n\tif (value.artifacts !== undefined && typeof value.artifacts !== \"boolean\") {\n\t\treturn { ok: false, requestId, error: \"artifacts must be a boolean.\" };\n\t}\n\treturn { ok: true, request: value as unknown as SubagentDelegationRequest };\n}\n"]}
@@ -7,7 +7,7 @@ interface PromptWorkflow {
7
7
  filePath: string;
8
8
  childDescription: string;
9
9
  permissions: "full" | "read-only";
10
- model?: string;
10
+ tier: "light" | "standard" | "heavy";
11
11
  skill?: string | string[] | false;
12
12
  cwd?: string;
13
13
  worktree?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-workflows.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/slash/prompt-workflows.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAIlF,UAAU,cAAc;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,KAAK,oBAAoB,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAsFjG,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE,CAOrE;AAuID,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACrD,EAAE,EAAE,YAAY,CAAC;IACjB,GAAG,EAAE,oBAAoB,CAAC;CAC1B,GAAG,IAAI,CAgEP","sourcesContent":["// @ts-nocheck\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport type { ExtensionAPI, ExtensionContext } from \"@ashx-j/lunr-dev\";\nimport { parseFrontmatter } from \"../agents/frontmatter.ts\";\nimport type { SubagentParamsLike } from \"../runs/foreground/subagent-executor.ts\";\nimport type { ChainStep } from \"../shared/settings.ts\";\nimport { getAgentDir, getProjectConfigDir } from \"../shared/utils.ts\";\n\ninterface PromptWorkflow {\n\tname: string;\n\tdescription: string;\n\tbody: string;\n\tfilePath: string;\n\tchildDescription: string;\n\tpermissions: \"full\" | \"read-only\";\n\tmodel?: string;\n\tskill?: string | string[] | false;\n\tcwd?: string;\n\tworktree?: boolean;\n\tchain?: string;\n}\n\ntype PromptWorkflowRunner = (params: SubagentParamsLike, ctx: ExtensionContext) => Promise<void>;\n\nconst RESERVED_COMMAND_NAMES = new Set([\n\t\"chain-prompts\",\n\t\"prompt-workflow\",\n\t\"run\",\n\t\"chain\",\n\t\"parallel\",\n\t\"subagents-doctor\",\n]);\n\nfunction packagePromptsDir(): string {\n\treturn path.resolve(path.dirname(fileURLToPath(import.meta.url)), \"..\", \"..\", \"prompts\");\n}\n\nfunction promptDirs(cwd: string): string[] {\n\treturn [\n\t\tpackagePromptsDir(),\n\t\tpath.join(getAgentDir(), \"prompts\"),\n\t\tpath.join(getProjectConfigDir(cwd), \"prompts\"),\n\t];\n}\n\nfunction readPromptFiles(cwd: string): string[] {\n\tconst files: string[] = [];\n\tfor (const dir of promptDirs(cwd)) {\n\t\tlet entries: fs.Dirent[];\n\t\ttry {\n\t\t\tentries = fs.readdirSync(dir, { withFileTypes: true });\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const entry of entries) {\n\t\t\tif (entry.isFile() && entry.name.endsWith(\".md\")) files.push(path.join(dir, entry.name));\n\t\t}\n\t}\n\treturn files;\n}\n\nfunction firstNonEmptyLine(value: string): string {\n\treturn value.split(/\\r?\\n/).map((line) => line.trim()).find(Boolean) ?? \"Prompt workflow\";\n}\n\nfunction stringField(frontmatter: Record<string, string>, key: string): string | undefined {\n\tconst value = frontmatter[key]?.trim();\n\treturn value ? value : undefined;\n}\n\nfunction booleanField(frontmatter: Record<string, string>, key: string): boolean | undefined {\n\tconst value = frontmatter[key]?.trim().toLowerCase();\n\tif (value === \"true\" || value === \"yes\" || value === \"1\") return true;\n\tif (value === \"false\" || value === \"no\" || value === \"0\") return false;\n\treturn undefined;\n}\n\nfunction parseSkill(value: string | undefined): string | string[] | false | undefined {\n\tif (!value) return undefined;\n\tif (value === \"false\") return false;\n\tconst parts = value.split(\",\").map((part) => part.trim()).filter(Boolean);\n\treturn parts.length > 1 ? parts : parts[0];\n}\n\nfunction loadPromptWorkflow(filePath: string): PromptWorkflow | undefined {\n\tconst content = fs.readFileSync(filePath, \"utf-8\");\n\tconst { frontmatter, body } = parseFrontmatter(content);\n\tconst name = path.basename(filePath, \".md\");\n\tif (!name || RESERVED_COMMAND_NAMES.has(name)) return undefined;\n\tconst model = stringField(frontmatter, \"model\");\n\tconst skill = parseSkill(stringField(frontmatter, \"skill\"));\n\tconst cwd = stringField(frontmatter, \"cwd\");\n\tconst chain = stringField(frontmatter, \"chain\");\n\treturn {\n\t\tname,\n\t\tdescription: stringField(frontmatter, \"description\") ?? firstNonEmptyLine(body),\n\t\tbody,\n\t\tfilePath,\n\t\tchildDescription: stringField(frontmatter, \"child-description\") ?? name,\n\t\tpermissions: stringField(frontmatter, \"permissions\") === \"read-only\" ? \"read-only\" : \"full\",\n\t\t...(model ? { model } : {}),\n\t\t...(skill !== undefined ? { skill } : {}),\n\t\t...(cwd ? { cwd } : {}),\n\t\t...(booleanField(frontmatter, \"worktree\") === true ? { worktree: true } : {}),\n\t\t...(chain ? { chain } : {}),\n\t};\n}\n\nexport function discoverPromptWorkflows(cwd: string): PromptWorkflow[] {\n\tconst workflows = new Map<string, PromptWorkflow>();\n\tfor (const file of readPromptFiles(cwd)) {\n\t\tconst workflow = loadPromptWorkflow(file);\n\t\tif (workflow) workflows.set(workflow.name, workflow);\n\t}\n\treturn [...workflows.values()].sort((a, b) => a.name.localeCompare(b.name));\n}\n\nfunction shellWords(input: string): string[] {\n\tconst words: string[] = [];\n\tlet current = \"\";\n\tlet quote: \"'\" | '\"' | undefined;\n\tlet escaped = false;\n\tfor (const ch of input) {\n\t\tif (escaped) {\n\t\t\tcurrent += ch;\n\t\t\tescaped = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === \"\\\\\") {\n\t\t\tescaped = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (quote) {\n\t\t\tif (ch === quote) quote = undefined;\n\t\t\telse current += ch;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === \"'\" || ch === '\"') {\n\t\t\tquote = ch;\n\t\t\tcontinue;\n\t\t}\n\t\tif (/\\s/.test(ch)) {\n\t\t\tif (current) {\n\t\t\t\twords.push(current);\n\t\t\t\tcurrent = \"\";\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tcurrent += ch;\n\t}\n\tif (current) words.push(current);\n\treturn words;\n}\n\nfunction substituteArgs(template: string, args: string[]): string {\n\tconst all = args.join(\" \");\n\treturn template\n\t\t.replace(/\\$ARGUMENTS/g, all)\n\t\t.replace(/\\$@/g, all)\n\t\t.replace(/\\$\\{(\\d+):-([^}]*)\\}/g, (_match, index: string, fallback: string) => args[Number(index) - 1] || fallback)\n\t\t.replace(/\\$(\\d+)/g, (_match, index: string) => args[Number(index) - 1] ?? \"\");\n}\n\nfunction parseRuntimeOptions(words: string[]): { args: string[]; descriptionOverride?: string; permissions?: \"full\" | \"read-only\"; worktree?: boolean; bg?: boolean } {\n\tconst args: string[] = [];\n\tlet descriptionOverride: string | undefined;\n\tlet permissions: \"full\" | \"read-only\" | undefined;\n\tlet worktree = false;\n\tlet bg = false;\n\tfor (let i = 0; i < words.length; i++) {\n\t\tconst word = words[i]!;\n\t\tif (word === \"--read-only\") {\n\t\t\tpermissions = \"read-only\";\n\t\t\tcontinue;\n\t\t}\n\t\tif (word === \"--full\") {\n\t\t\tpermissions = \"full\";\n\t\t\tcontinue;\n\t\t}\n\t\tif (word === \"--worktree\") {\n\t\t\tworktree = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (word === \"--bg\" || word === \"--async\") {\n\t\t\tbg = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (word === \"--description\") {\n\t\t\tdescriptionOverride = words[++i];\n\t\t\tcontinue;\n\t\t}\n\t\tconst eq = word.match(/^--description(?:=|:)(.+)$/);\n\t\tif (eq) {\n\t\t\tdescriptionOverride = eq[1];\n\t\t\tcontinue;\n\t\t}\n\t\targs.push(word);\n\t}\n\treturn { args, descriptionOverride, permissions, worktree, bg };\n}\n\nfunction splitChainDeclaration(input: string): { declaration: string; argsText: string } {\n\tconst delimiter = input.indexOf(\" -- \");\n\tif (delimiter === -1) return { declaration: input.trim(), argsText: \"\" };\n\treturn { declaration: input.slice(0, delimiter).trim(), argsText: input.slice(delimiter + 4).trim() };\n}\n\nfunction splitPromptChain(input: string): string[] {\n\treturn input.split(\" -> \").map((part) => part.trim()).filter(Boolean);\n}\n\nfunction workflowParams(workflow: PromptWorkflow, args: string[], runtime: ReturnType<typeof parseRuntimeOptions>): SubagentParamsLike {\n\tconst task = substituteArgs(workflow.body, args).trim();\n\treturn {\n\t\ttask,\n\t\tdescription: runtime.descriptionOverride ?? workflow.childDescription,\n\t\tpermissions: runtime.permissions ?? workflow.permissions,\n\t\tclarify: false,\n\t\t...(workflow.model ? { model: workflow.model } : {}),\n\t\t...(workflow.skill !== undefined ? { skill: workflow.skill } : {}),\n\t\t...(workflow.cwd ? { cwd: workflow.cwd } : {}),\n\t\t...(runtime.worktree || workflow.worktree ? { worktree: true } : {}),\n\t\t...(runtime.bg ? { async: true } : {}),\n\t};\n}\n\nfunction workflowChainStep(workflow: PromptWorkflow, args: string[], runtime: ReturnType<typeof parseRuntimeOptions>): ChainStep {\n\tconst params = workflowParams(workflow, args, runtime);\n\treturn {\n\t\tdescription: params.description ?? workflow.childDescription,\n\t\tpermissions: params.permissions ?? workflow.permissions,\n\t\ttask: params.task,\n\t\t...(params.model ? { model: params.model } : {}),\n\t\t...(params.skill !== undefined ? { skill: params.skill } : {}),\n\t\t...(params.cwd ? { cwd: params.cwd } : {}),\n\t};\n}\n\nfunction findWorkflow(workflows: PromptWorkflow[], name: string): PromptWorkflow | undefined {\n\treturn workflows.find((workflow) => workflow.name === name);\n}\n\nfunction formatWorkflowList(workflows: PromptWorkflow[]): string {\n\tif (workflows.length === 0) return \"No prompt workflows found in package, user, or project prompts.\";\n\treturn [\n\t\t\"Prompt workflows:\",\n\t\t...workflows.map((workflow) => `- ${workflow.name}: ${workflow.description} (${workflow.filePath})`),\n\t].join(\"\\n\");\n}\n\nexport function registerPromptWorkflowCommands(input: {\n\tpi: ExtensionAPI;\n\trun: PromptWorkflowRunner;\n}): void {\n\tconst { pi, run } = input;\n\n\tpi.registerCommand(\"prompt-workflow\", {\n\t\tdescription: \"Run a prompt template through lunR subagents: /prompt-workflow <name> [args]\",\n\t\thandler: async (rawArgs, ctx) => {\n\t\t\tconst words = shellWords(rawArgs);\n\t\t\tconst name = words.shift();\n\t\t\tconst workflows = discoverPromptWorkflows(ctx.cwd);\n\t\t\tif (!name || name === \"list\") {\n\t\t\t\tpi.sendMessage({ content: formatWorkflowList(workflows), display: true });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst workflow = findWorkflow(workflows, name);\n\t\t\tif (!workflow) {\n\t\t\t\tctx.ui.notify(`Unknown prompt workflow: ${name}`, \"error\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst runtime = parseRuntimeOptions(words);\n\t\t\ttry {\n\t\t\t\tif (workflow.chain) {\n\t\t\t\t\tconst chainNames = splitPromptChain(workflow.chain);\n\t\t\t\t\tconst chain = chainNames.map((stepName) => {\n\t\t\t\t\t\tconst step = findWorkflow(workflows, stepName);\n\t\t\t\t\t\tif (!step) throw new Error(`Unknown prompt workflow in chain '${workflow.name}': ${stepName}`);\n\t\t\t\t\t\treturn workflowChainStep(step, runtime.args, runtime);\n\t\t\t\t\t});\n\t\t\t\t\tawait run({ chain, task: runtime.args.join(\" \"), clarify: false, ...(runtime.bg ? { async: true } : {}) }, ctx);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tawait run(workflowParams(workflow, runtime.args, runtime), ctx);\n\t\t\t} catch (error) {\n\t\t\t\tctx.ui.notify(error instanceof Error ? error.message : String(error), \"error\");\n\t\t\t}\n\t\t},\n\t});\n\n\tpi.registerCommand(\"chain-prompts\", {\n\t\tdescription: \"Run prompt templates as a native subagent chain: /chain-prompts analyze -> fix -- args\",\n\t\thandler: async (rawArgs, ctx) => {\n\t\t\tconst { declaration, argsText } = splitChainDeclaration(rawArgs);\n\t\t\tconst workflows = discoverPromptWorkflows(ctx.cwd);\n\t\t\tif (!declaration || declaration === \"list\") {\n\t\t\t\tpi.sendMessage({ content: formatWorkflowList(workflows), display: true });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst runtime = parseRuntimeOptions(shellWords(argsText));\n\t\t\tconst names = splitPromptChain(declaration);\n\t\t\tif (names.length === 0) {\n\t\t\t\tctx.ui.notify(\"Usage: /chain-prompts prompt-a -> prompt-b -- args\", \"error\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst chain = names.map((name) => {\n\t\t\t\t\tconst workflow = findWorkflow(workflows, name);\n\t\t\t\t\tif (!workflow) throw new Error(`Unknown prompt workflow: ${name}`);\n\t\t\t\t\treturn workflowChainStep(workflow, runtime.args, runtime);\n\t\t\t\t});\n\t\t\t\tawait run({ chain, task: runtime.args.join(\" \"), clarify: false, ...(runtime.bg ? { async: true } : {}) }, ctx);\n\t\t\t} catch (error) {\n\t\t\t\tctx.ui.notify(error instanceof Error ? error.message : String(error), \"error\");\n\t\t\t}\n\t\t},\n\t});\n}\n"]}
1
+ {"version":3,"file":"prompt-workflows.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/slash/prompt-workflows.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAIlF,UAAU,cAAc;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC;IAClC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,KAAK,oBAAoB,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAuFjG,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE,CAOrE;AAuID,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACrD,EAAE,EAAE,YAAY,CAAC;IACjB,GAAG,EAAE,oBAAoB,CAAC;CAC1B,GAAG,IAAI,CAgEP","sourcesContent":["// @ts-nocheck\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport type { ExtensionAPI, ExtensionContext } from \"@ashx-j/lunr-dev\";\nimport { parseFrontmatter } from \"../agents/frontmatter.ts\";\nimport type { SubagentParamsLike } from \"../runs/foreground/subagent-executor.ts\";\nimport type { ChainStep } from \"../shared/settings.ts\";\nimport { getAgentDir, getProjectConfigDir } from \"../shared/utils.ts\";\n\ninterface PromptWorkflow {\n\tname: string;\n\tdescription: string;\n\tbody: string;\n\tfilePath: string;\n\tchildDescription: string;\n\tpermissions: \"full\" | \"read-only\";\n\ttier: \"light\" | \"standard\" | \"heavy\";\n\tskill?: string | string[] | false;\n\tcwd?: string;\n\tworktree?: boolean;\n\tchain?: string;\n}\n\ntype PromptWorkflowRunner = (params: SubagentParamsLike, ctx: ExtensionContext) => Promise<void>;\n\nconst RESERVED_COMMAND_NAMES = new Set([\n\t\"chain-prompts\",\n\t\"prompt-workflow\",\n\t\"run\",\n\t\"chain\",\n\t\"parallel\",\n\t\"subagents-doctor\",\n]);\n\nfunction packagePromptsDir(): string {\n\treturn path.resolve(path.dirname(fileURLToPath(import.meta.url)), \"..\", \"..\", \"prompts\");\n}\n\nfunction promptDirs(cwd: string): string[] {\n\treturn [\n\t\tpackagePromptsDir(),\n\t\tpath.join(getAgentDir(), \"prompts\"),\n\t\tpath.join(getProjectConfigDir(cwd), \"prompts\"),\n\t];\n}\n\nfunction readPromptFiles(cwd: string): string[] {\n\tconst files: string[] = [];\n\tfor (const dir of promptDirs(cwd)) {\n\t\tlet entries: fs.Dirent[];\n\t\ttry {\n\t\t\tentries = fs.readdirSync(dir, { withFileTypes: true });\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const entry of entries) {\n\t\t\tif (entry.isFile() && entry.name.endsWith(\".md\")) files.push(path.join(dir, entry.name));\n\t\t}\n\t}\n\treturn files;\n}\n\nfunction firstNonEmptyLine(value: string): string {\n\treturn value.split(/\\r?\\n/).map((line) => line.trim()).find(Boolean) ?? \"Prompt workflow\";\n}\n\nfunction stringField(frontmatter: Record<string, string>, key: string): string | undefined {\n\tconst value = frontmatter[key]?.trim();\n\treturn value ? value : undefined;\n}\n\nfunction booleanField(frontmatter: Record<string, string>, key: string): boolean | undefined {\n\tconst value = frontmatter[key]?.trim().toLowerCase();\n\tif (value === \"true\" || value === \"yes\" || value === \"1\") return true;\n\tif (value === \"false\" || value === \"no\" || value === \"0\") return false;\n\treturn undefined;\n}\n\nfunction parseSkill(value: string | undefined): string | string[] | false | undefined {\n\tif (!value) return undefined;\n\tif (value === \"false\") return false;\n\tconst parts = value.split(\",\").map((part) => part.trim()).filter(Boolean);\n\treturn parts.length > 1 ? parts : parts[0];\n}\n\nfunction loadPromptWorkflow(filePath: string): PromptWorkflow | undefined {\n\tconst content = fs.readFileSync(filePath, \"utf-8\");\n\tconst { frontmatter, body } = parseFrontmatter(content);\n\tconst name = path.basename(filePath, \".md\");\n\tif (!name || RESERVED_COMMAND_NAMES.has(name)) return undefined;\n\tconst tierValue = stringField(frontmatter, \"tier\");\n\tif (tierValue !== \"light\" && tierValue !== \"standard\" && tierValue !== \"heavy\") return undefined;\n\tconst skill = parseSkill(stringField(frontmatter, \"skill\"));\n\tconst cwd = stringField(frontmatter, \"cwd\");\n\tconst chain = stringField(frontmatter, \"chain\");\n\treturn {\n\t\tname,\n\t\tdescription: stringField(frontmatter, \"description\") ?? firstNonEmptyLine(body),\n\t\tbody,\n\t\tfilePath,\n\t\tchildDescription: stringField(frontmatter, \"child-description\") ?? name,\n\t\tpermissions: stringField(frontmatter, \"permissions\") === \"read-only\" ? \"read-only\" : \"full\",\n\t\ttier: tierValue,\n\t\t...(skill !== undefined ? { skill } : {}),\n\t\t...(cwd ? { cwd } : {}),\n\t\t...(booleanField(frontmatter, \"worktree\") === true ? { worktree: true } : {}),\n\t\t...(chain ? { chain } : {}),\n\t};\n}\n\nexport function discoverPromptWorkflows(cwd: string): PromptWorkflow[] {\n\tconst workflows = new Map<string, PromptWorkflow>();\n\tfor (const file of readPromptFiles(cwd)) {\n\t\tconst workflow = loadPromptWorkflow(file);\n\t\tif (workflow) workflows.set(workflow.name, workflow);\n\t}\n\treturn [...workflows.values()].sort((a, b) => a.name.localeCompare(b.name));\n}\n\nfunction shellWords(input: string): string[] {\n\tconst words: string[] = [];\n\tlet current = \"\";\n\tlet quote: \"'\" | '\"' | undefined;\n\tlet escaped = false;\n\tfor (const ch of input) {\n\t\tif (escaped) {\n\t\t\tcurrent += ch;\n\t\t\tescaped = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === \"\\\\\") {\n\t\t\tescaped = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (quote) {\n\t\t\tif (ch === quote) quote = undefined;\n\t\t\telse current += ch;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === \"'\" || ch === '\"') {\n\t\t\tquote = ch;\n\t\t\tcontinue;\n\t\t}\n\t\tif (/\\s/.test(ch)) {\n\t\t\tif (current) {\n\t\t\t\twords.push(current);\n\t\t\t\tcurrent = \"\";\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tcurrent += ch;\n\t}\n\tif (current) words.push(current);\n\treturn words;\n}\n\nfunction substituteArgs(template: string, args: string[]): string {\n\tconst all = args.join(\" \");\n\treturn template\n\t\t.replace(/\\$ARGUMENTS/g, all)\n\t\t.replace(/\\$@/g, all)\n\t\t.replace(/\\$\\{(\\d+):-([^}]*)\\}/g, (_match, index: string, fallback: string) => args[Number(index) - 1] || fallback)\n\t\t.replace(/\\$(\\d+)/g, (_match, index: string) => args[Number(index) - 1] ?? \"\");\n}\n\nfunction parseRuntimeOptions(words: string[]): { args: string[]; descriptionOverride?: string; permissions?: \"full\" | \"read-only\"; worktree?: boolean; bg?: boolean } {\n\tconst args: string[] = [];\n\tlet descriptionOverride: string | undefined;\n\tlet permissions: \"full\" | \"read-only\" | undefined;\n\tlet worktree = false;\n\tlet bg = false;\n\tfor (let i = 0; i < words.length; i++) {\n\t\tconst word = words[i]!;\n\t\tif (word === \"--read-only\") {\n\t\t\tpermissions = \"read-only\";\n\t\t\tcontinue;\n\t\t}\n\t\tif (word === \"--full\") {\n\t\t\tpermissions = \"full\";\n\t\t\tcontinue;\n\t\t}\n\t\tif (word === \"--worktree\") {\n\t\t\tworktree = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (word === \"--bg\" || word === \"--async\") {\n\t\t\tbg = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (word === \"--description\") {\n\t\t\tdescriptionOverride = words[++i];\n\t\t\tcontinue;\n\t\t}\n\t\tconst eq = word.match(/^--description(?:=|:)(.+)$/);\n\t\tif (eq) {\n\t\t\tdescriptionOverride = eq[1];\n\t\t\tcontinue;\n\t\t}\n\t\targs.push(word);\n\t}\n\treturn { args, descriptionOverride, permissions, worktree, bg };\n}\n\nfunction splitChainDeclaration(input: string): { declaration: string; argsText: string } {\n\tconst delimiter = input.indexOf(\" -- \");\n\tif (delimiter === -1) return { declaration: input.trim(), argsText: \"\" };\n\treturn { declaration: input.slice(0, delimiter).trim(), argsText: input.slice(delimiter + 4).trim() };\n}\n\nfunction splitPromptChain(input: string): string[] {\n\treturn input.split(\" -> \").map((part) => part.trim()).filter(Boolean);\n}\n\nfunction workflowParams(workflow: PromptWorkflow, args: string[], runtime: ReturnType<typeof parseRuntimeOptions>): SubagentParamsLike {\n\tconst task = substituteArgs(workflow.body, args).trim();\n\treturn {\n\t\ttask,\n\t\tdescription: runtime.descriptionOverride ?? workflow.childDescription,\n\t\tpermissions: runtime.permissions ?? workflow.permissions,\n\t\ttier: workflow.tier,\n\t\tclarify: false,\n\t\t...(workflow.skill !== undefined ? { skill: workflow.skill } : {}),\n\t\t...(workflow.cwd ? { cwd: workflow.cwd } : {}),\n\t\t...(runtime.worktree || workflow.worktree ? { worktree: true } : {}),\n\t\t...(runtime.bg ? { async: true } : {}),\n\t};\n}\n\nfunction workflowChainStep(workflow: PromptWorkflow, args: string[], runtime: ReturnType<typeof parseRuntimeOptions>): ChainStep {\n\tconst params = workflowParams(workflow, args, runtime);\n\treturn {\n\t\tdescription: params.description ?? workflow.childDescription,\n\t\tpermissions: params.permissions ?? workflow.permissions,\n\t\ttier: params.tier,\n\t\ttask: params.task,\n\t\t...(params.skill !== undefined ? { skill: params.skill } : {}),\n\t\t...(params.cwd ? { cwd: params.cwd } : {}),\n\t};\n}\n\nfunction findWorkflow(workflows: PromptWorkflow[], name: string): PromptWorkflow | undefined {\n\treturn workflows.find((workflow) => workflow.name === name);\n}\n\nfunction formatWorkflowList(workflows: PromptWorkflow[]): string {\n\tif (workflows.length === 0) return \"No prompt workflows found in package, user, or project prompts.\";\n\treturn [\n\t\t\"Prompt workflows:\",\n\t\t...workflows.map((workflow) => `- ${workflow.name}: ${workflow.description} (${workflow.filePath})`),\n\t].join(\"\\n\");\n}\n\nexport function registerPromptWorkflowCommands(input: {\n\tpi: ExtensionAPI;\n\trun: PromptWorkflowRunner;\n}): void {\n\tconst { pi, run } = input;\n\n\tpi.registerCommand(\"prompt-workflow\", {\n\t\tdescription: \"Run a prompt template through lunR subagents: /prompt-workflow <name> [args]\",\n\t\thandler: async (rawArgs, ctx) => {\n\t\t\tconst words = shellWords(rawArgs);\n\t\t\tconst name = words.shift();\n\t\t\tconst workflows = discoverPromptWorkflows(ctx.cwd);\n\t\t\tif (!name || name === \"list\") {\n\t\t\t\tpi.sendMessage({ content: formatWorkflowList(workflows), display: true });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst workflow = findWorkflow(workflows, name);\n\t\t\tif (!workflow) {\n\t\t\t\tctx.ui.notify(`Unknown prompt workflow: ${name}`, \"error\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst runtime = parseRuntimeOptions(words);\n\t\t\ttry {\n\t\t\t\tif (workflow.chain) {\n\t\t\t\t\tconst chainNames = splitPromptChain(workflow.chain);\n\t\t\t\t\tconst chain = chainNames.map((stepName) => {\n\t\t\t\t\t\tconst step = findWorkflow(workflows, stepName);\n\t\t\t\t\t\tif (!step) throw new Error(`Unknown prompt workflow in chain '${workflow.name}': ${stepName}`);\n\t\t\t\t\t\treturn workflowChainStep(step, runtime.args, runtime);\n\t\t\t\t\t});\n\t\t\t\t\tawait run({ chain, task: runtime.args.join(\" \"), clarify: false, ...(runtime.bg ? { async: true } : {}) }, ctx);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tawait run(workflowParams(workflow, runtime.args, runtime), ctx);\n\t\t\t} catch (error) {\n\t\t\t\tctx.ui.notify(error instanceof Error ? error.message : String(error), \"error\");\n\t\t\t}\n\t\t},\n\t});\n\n\tpi.registerCommand(\"chain-prompts\", {\n\t\tdescription: \"Run prompt templates as a native subagent chain: /chain-prompts analyze -> fix -- args\",\n\t\thandler: async (rawArgs, ctx) => {\n\t\t\tconst { declaration, argsText } = splitChainDeclaration(rawArgs);\n\t\t\tconst workflows = discoverPromptWorkflows(ctx.cwd);\n\t\t\tif (!declaration || declaration === \"list\") {\n\t\t\t\tpi.sendMessage({ content: formatWorkflowList(workflows), display: true });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst runtime = parseRuntimeOptions(shellWords(argsText));\n\t\t\tconst names = splitPromptChain(declaration);\n\t\t\tif (names.length === 0) {\n\t\t\t\tctx.ui.notify(\"Usage: /chain-prompts prompt-a -> prompt-b -- args\", \"error\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst chain = names.map((name) => {\n\t\t\t\t\tconst workflow = findWorkflow(workflows, name);\n\t\t\t\t\tif (!workflow) throw new Error(`Unknown prompt workflow: ${name}`);\n\t\t\t\t\treturn workflowChainStep(workflow, runtime.args, runtime);\n\t\t\t\t});\n\t\t\t\tawait run({ chain, task: runtime.args.join(\" \"), clarify: false, ...(runtime.bg ? { async: true } : {}) }, ctx);\n\t\t\t} catch (error) {\n\t\t\t\tctx.ui.notify(error instanceof Error ? error.message : String(error), \"error\");\n\t\t\t}\n\t\t},\n\t});\n}\n"]}
@@ -68,7 +68,9 @@ function loadPromptWorkflow(filePath) {
68
68
  const name = path.basename(filePath, ".md");
69
69
  if (!name || RESERVED_COMMAND_NAMES.has(name))
70
70
  return undefined;
71
- const model = stringField(frontmatter, "model");
71
+ const tierValue = stringField(frontmatter, "tier");
72
+ if (tierValue !== "light" && tierValue !== "standard" && tierValue !== "heavy")
73
+ return undefined;
72
74
  const skill = parseSkill(stringField(frontmatter, "skill"));
73
75
  const cwd = stringField(frontmatter, "cwd");
74
76
  const chain = stringField(frontmatter, "chain");
@@ -79,7 +81,7 @@ function loadPromptWorkflow(filePath) {
79
81
  filePath,
80
82
  childDescription: stringField(frontmatter, "child-description") ?? name,
81
83
  permissions: stringField(frontmatter, "permissions") === "read-only" ? "read-only" : "full",
82
- ...(model ? { model } : {}),
84
+ tier: tierValue,
83
85
  ...(skill !== undefined ? { skill } : {}),
84
86
  ...(cwd ? { cwd } : {}),
85
87
  ...(booleanField(frontmatter, "worktree") === true ? { worktree: true } : {}),
@@ -194,8 +196,8 @@ function workflowParams(workflow, args, runtime) {
194
196
  task,
195
197
  description: runtime.descriptionOverride ?? workflow.childDescription,
196
198
  permissions: runtime.permissions ?? workflow.permissions,
199
+ tier: workflow.tier,
197
200
  clarify: false,
198
- ...(workflow.model ? { model: workflow.model } : {}),
199
201
  ...(workflow.skill !== undefined ? { skill: workflow.skill } : {}),
200
202
  ...(workflow.cwd ? { cwd: workflow.cwd } : {}),
201
203
  ...(runtime.worktree || workflow.worktree ? { worktree: true } : {}),
@@ -207,8 +209,8 @@ function workflowChainStep(workflow, args, runtime) {
207
209
  return {
208
210
  description: params.description ?? workflow.childDescription,
209
211
  permissions: params.permissions ?? workflow.permissions,
212
+ tier: params.tier,
210
213
  task: params.task,
211
- ...(params.model ? { model: params.model } : {}),
212
214
  ...(params.skill !== undefined ? { skill: params.skill } : {}),
213
215
  ...(params.cwd ? { cwd: params.cwd } : {}),
214
216
  };
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-workflows.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/slash/prompt-workflows.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport type { ExtensionAPI, ExtensionContext } from \"@ashx-j/lunr-dev\";\nimport { parseFrontmatter } from \"../agents/frontmatter.ts\";\nimport type { SubagentParamsLike } from \"../runs/foreground/subagent-executor.ts\";\nimport type { ChainStep } from \"../shared/settings.ts\";\nimport { getAgentDir, getProjectConfigDir } from \"../shared/utils.ts\";\n\ninterface PromptWorkflow {\n\tname: string;\n\tdescription: string;\n\tbody: string;\n\tfilePath: string;\n\tchildDescription: string;\n\tpermissions: \"full\" | \"read-only\";\n\tmodel?: string;\n\tskill?: string | string[] | false;\n\tcwd?: string;\n\tworktree?: boolean;\n\tchain?: string;\n}\n\ntype PromptWorkflowRunner = (params: SubagentParamsLike, ctx: ExtensionContext) => Promise<void>;\n\nconst RESERVED_COMMAND_NAMES = new Set([\n\t\"chain-prompts\",\n\t\"prompt-workflow\",\n\t\"run\",\n\t\"chain\",\n\t\"parallel\",\n\t\"subagents-doctor\",\n]);\n\nfunction packagePromptsDir(): string {\n\treturn path.resolve(path.dirname(fileURLToPath(import.meta.url)), \"..\", \"..\", \"prompts\");\n}\n\nfunction promptDirs(cwd: string): string[] {\n\treturn [\n\t\tpackagePromptsDir(),\n\t\tpath.join(getAgentDir(), \"prompts\"),\n\t\tpath.join(getProjectConfigDir(cwd), \"prompts\"),\n\t];\n}\n\nfunction readPromptFiles(cwd: string): string[] {\n\tconst files: string[] = [];\n\tfor (const dir of promptDirs(cwd)) {\n\t\tlet entries: fs.Dirent[];\n\t\ttry {\n\t\t\tentries = fs.readdirSync(dir, { withFileTypes: true });\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const entry of entries) {\n\t\t\tif (entry.isFile() && entry.name.endsWith(\".md\")) files.push(path.join(dir, entry.name));\n\t\t}\n\t}\n\treturn files;\n}\n\nfunction firstNonEmptyLine(value: string): string {\n\treturn value.split(/\\r?\\n/).map((line) => line.trim()).find(Boolean) ?? \"Prompt workflow\";\n}\n\nfunction stringField(frontmatter: Record<string, string>, key: string): string | undefined {\n\tconst value = frontmatter[key]?.trim();\n\treturn value ? value : undefined;\n}\n\nfunction booleanField(frontmatter: Record<string, string>, key: string): boolean | undefined {\n\tconst value = frontmatter[key]?.trim().toLowerCase();\n\tif (value === \"true\" || value === \"yes\" || value === \"1\") return true;\n\tif (value === \"false\" || value === \"no\" || value === \"0\") return false;\n\treturn undefined;\n}\n\nfunction parseSkill(value: string | undefined): string | string[] | false | undefined {\n\tif (!value) return undefined;\n\tif (value === \"false\") return false;\n\tconst parts = value.split(\",\").map((part) => part.trim()).filter(Boolean);\n\treturn parts.length > 1 ? parts : parts[0];\n}\n\nfunction loadPromptWorkflow(filePath: string): PromptWorkflow | undefined {\n\tconst content = fs.readFileSync(filePath, \"utf-8\");\n\tconst { frontmatter, body } = parseFrontmatter(content);\n\tconst name = path.basename(filePath, \".md\");\n\tif (!name || RESERVED_COMMAND_NAMES.has(name)) return undefined;\n\tconst model = stringField(frontmatter, \"model\");\n\tconst skill = parseSkill(stringField(frontmatter, \"skill\"));\n\tconst cwd = stringField(frontmatter, \"cwd\");\n\tconst chain = stringField(frontmatter, \"chain\");\n\treturn {\n\t\tname,\n\t\tdescription: stringField(frontmatter, \"description\") ?? firstNonEmptyLine(body),\n\t\tbody,\n\t\tfilePath,\n\t\tchildDescription: stringField(frontmatter, \"child-description\") ?? name,\n\t\tpermissions: stringField(frontmatter, \"permissions\") === \"read-only\" ? \"read-only\" : \"full\",\n\t\t...(model ? { model } : {}),\n\t\t...(skill !== undefined ? { skill } : {}),\n\t\t...(cwd ? { cwd } : {}),\n\t\t...(booleanField(frontmatter, \"worktree\") === true ? { worktree: true } : {}),\n\t\t...(chain ? { chain } : {}),\n\t};\n}\n\nexport function discoverPromptWorkflows(cwd: string): PromptWorkflow[] {\n\tconst workflows = new Map<string, PromptWorkflow>();\n\tfor (const file of readPromptFiles(cwd)) {\n\t\tconst workflow = loadPromptWorkflow(file);\n\t\tif (workflow) workflows.set(workflow.name, workflow);\n\t}\n\treturn [...workflows.values()].sort((a, b) => a.name.localeCompare(b.name));\n}\n\nfunction shellWords(input: string): string[] {\n\tconst words: string[] = [];\n\tlet current = \"\";\n\tlet quote: \"'\" | '\"' | undefined;\n\tlet escaped = false;\n\tfor (const ch of input) {\n\t\tif (escaped) {\n\t\t\tcurrent += ch;\n\t\t\tescaped = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === \"\\\\\") {\n\t\t\tescaped = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (quote) {\n\t\t\tif (ch === quote) quote = undefined;\n\t\t\telse current += ch;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === \"'\" || ch === '\"') {\n\t\t\tquote = ch;\n\t\t\tcontinue;\n\t\t}\n\t\tif (/\\s/.test(ch)) {\n\t\t\tif (current) {\n\t\t\t\twords.push(current);\n\t\t\t\tcurrent = \"\";\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tcurrent += ch;\n\t}\n\tif (current) words.push(current);\n\treturn words;\n}\n\nfunction substituteArgs(template: string, args: string[]): string {\n\tconst all = args.join(\" \");\n\treturn template\n\t\t.replace(/\\$ARGUMENTS/g, all)\n\t\t.replace(/\\$@/g, all)\n\t\t.replace(/\\$\\{(\\d+):-([^}]*)\\}/g, (_match, index: string, fallback: string) => args[Number(index) - 1] || fallback)\n\t\t.replace(/\\$(\\d+)/g, (_match, index: string) => args[Number(index) - 1] ?? \"\");\n}\n\nfunction parseRuntimeOptions(words: string[]): { args: string[]; descriptionOverride?: string; permissions?: \"full\" | \"read-only\"; worktree?: boolean; bg?: boolean } {\n\tconst args: string[] = [];\n\tlet descriptionOverride: string | undefined;\n\tlet permissions: \"full\" | \"read-only\" | undefined;\n\tlet worktree = false;\n\tlet bg = false;\n\tfor (let i = 0; i < words.length; i++) {\n\t\tconst word = words[i]!;\n\t\tif (word === \"--read-only\") {\n\t\t\tpermissions = \"read-only\";\n\t\t\tcontinue;\n\t\t}\n\t\tif (word === \"--full\") {\n\t\t\tpermissions = \"full\";\n\t\t\tcontinue;\n\t\t}\n\t\tif (word === \"--worktree\") {\n\t\t\tworktree = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (word === \"--bg\" || word === \"--async\") {\n\t\t\tbg = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (word === \"--description\") {\n\t\t\tdescriptionOverride = words[++i];\n\t\t\tcontinue;\n\t\t}\n\t\tconst eq = word.match(/^--description(?:=|:)(.+)$/);\n\t\tif (eq) {\n\t\t\tdescriptionOverride = eq[1];\n\t\t\tcontinue;\n\t\t}\n\t\targs.push(word);\n\t}\n\treturn { args, descriptionOverride, permissions, worktree, bg };\n}\n\nfunction splitChainDeclaration(input: string): { declaration: string; argsText: string } {\n\tconst delimiter = input.indexOf(\" -- \");\n\tif (delimiter === -1) return { declaration: input.trim(), argsText: \"\" };\n\treturn { declaration: input.slice(0, delimiter).trim(), argsText: input.slice(delimiter + 4).trim() };\n}\n\nfunction splitPromptChain(input: string): string[] {\n\treturn input.split(\" -> \").map((part) => part.trim()).filter(Boolean);\n}\n\nfunction workflowParams(workflow: PromptWorkflow, args: string[], runtime: ReturnType<typeof parseRuntimeOptions>): SubagentParamsLike {\n\tconst task = substituteArgs(workflow.body, args).trim();\n\treturn {\n\t\ttask,\n\t\tdescription: runtime.descriptionOverride ?? workflow.childDescription,\n\t\tpermissions: runtime.permissions ?? workflow.permissions,\n\t\tclarify: false,\n\t\t...(workflow.model ? { model: workflow.model } : {}),\n\t\t...(workflow.skill !== undefined ? { skill: workflow.skill } : {}),\n\t\t...(workflow.cwd ? { cwd: workflow.cwd } : {}),\n\t\t...(runtime.worktree || workflow.worktree ? { worktree: true } : {}),\n\t\t...(runtime.bg ? { async: true } : {}),\n\t};\n}\n\nfunction workflowChainStep(workflow: PromptWorkflow, args: string[], runtime: ReturnType<typeof parseRuntimeOptions>): ChainStep {\n\tconst params = workflowParams(workflow, args, runtime);\n\treturn {\n\t\tdescription: params.description ?? workflow.childDescription,\n\t\tpermissions: params.permissions ?? workflow.permissions,\n\t\ttask: params.task,\n\t\t...(params.model ? { model: params.model } : {}),\n\t\t...(params.skill !== undefined ? { skill: params.skill } : {}),\n\t\t...(params.cwd ? { cwd: params.cwd } : {}),\n\t};\n}\n\nfunction findWorkflow(workflows: PromptWorkflow[], name: string): PromptWorkflow | undefined {\n\treturn workflows.find((workflow) => workflow.name === name);\n}\n\nfunction formatWorkflowList(workflows: PromptWorkflow[]): string {\n\tif (workflows.length === 0) return \"No prompt workflows found in package, user, or project prompts.\";\n\treturn [\n\t\t\"Prompt workflows:\",\n\t\t...workflows.map((workflow) => `- ${workflow.name}: ${workflow.description} (${workflow.filePath})`),\n\t].join(\"\\n\");\n}\n\nexport function registerPromptWorkflowCommands(input: {\n\tpi: ExtensionAPI;\n\trun: PromptWorkflowRunner;\n}): void {\n\tconst { pi, run } = input;\n\n\tpi.registerCommand(\"prompt-workflow\", {\n\t\tdescription: \"Run a prompt template through lunR subagents: /prompt-workflow <name> [args]\",\n\t\thandler: async (rawArgs, ctx) => {\n\t\t\tconst words = shellWords(rawArgs);\n\t\t\tconst name = words.shift();\n\t\t\tconst workflows = discoverPromptWorkflows(ctx.cwd);\n\t\t\tif (!name || name === \"list\") {\n\t\t\t\tpi.sendMessage({ content: formatWorkflowList(workflows), display: true });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst workflow = findWorkflow(workflows, name);\n\t\t\tif (!workflow) {\n\t\t\t\tctx.ui.notify(`Unknown prompt workflow: ${name}`, \"error\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst runtime = parseRuntimeOptions(words);\n\t\t\ttry {\n\t\t\t\tif (workflow.chain) {\n\t\t\t\t\tconst chainNames = splitPromptChain(workflow.chain);\n\t\t\t\t\tconst chain = chainNames.map((stepName) => {\n\t\t\t\t\t\tconst step = findWorkflow(workflows, stepName);\n\t\t\t\t\t\tif (!step) throw new Error(`Unknown prompt workflow in chain '${workflow.name}': ${stepName}`);\n\t\t\t\t\t\treturn workflowChainStep(step, runtime.args, runtime);\n\t\t\t\t\t});\n\t\t\t\t\tawait run({ chain, task: runtime.args.join(\" \"), clarify: false, ...(runtime.bg ? { async: true } : {}) }, ctx);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tawait run(workflowParams(workflow, runtime.args, runtime), ctx);\n\t\t\t} catch (error) {\n\t\t\t\tctx.ui.notify(error instanceof Error ? error.message : String(error), \"error\");\n\t\t\t}\n\t\t},\n\t});\n\n\tpi.registerCommand(\"chain-prompts\", {\n\t\tdescription: \"Run prompt templates as a native subagent chain: /chain-prompts analyze -> fix -- args\",\n\t\thandler: async (rawArgs, ctx) => {\n\t\t\tconst { declaration, argsText } = splitChainDeclaration(rawArgs);\n\t\t\tconst workflows = discoverPromptWorkflows(ctx.cwd);\n\t\t\tif (!declaration || declaration === \"list\") {\n\t\t\t\tpi.sendMessage({ content: formatWorkflowList(workflows), display: true });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst runtime = parseRuntimeOptions(shellWords(argsText));\n\t\t\tconst names = splitPromptChain(declaration);\n\t\t\tif (names.length === 0) {\n\t\t\t\tctx.ui.notify(\"Usage: /chain-prompts prompt-a -> prompt-b -- args\", \"error\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst chain = names.map((name) => {\n\t\t\t\t\tconst workflow = findWorkflow(workflows, name);\n\t\t\t\t\tif (!workflow) throw new Error(`Unknown prompt workflow: ${name}`);\n\t\t\t\t\treturn workflowChainStep(workflow, runtime.args, runtime);\n\t\t\t\t});\n\t\t\t\tawait run({ chain, task: runtime.args.join(\" \"), clarify: false, ...(runtime.bg ? { async: true } : {}) }, ctx);\n\t\t\t} catch (error) {\n\t\t\t\tctx.ui.notify(error instanceof Error ? error.message : String(error), \"error\");\n\t\t\t}\n\t\t},\n\t});\n}\n"]}
1
+ {"version":3,"file":"prompt-workflows.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/slash/prompt-workflows.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport type { ExtensionAPI, ExtensionContext } from \"@ashx-j/lunr-dev\";\nimport { parseFrontmatter } from \"../agents/frontmatter.ts\";\nimport type { SubagentParamsLike } from \"../runs/foreground/subagent-executor.ts\";\nimport type { ChainStep } from \"../shared/settings.ts\";\nimport { getAgentDir, getProjectConfigDir } from \"../shared/utils.ts\";\n\ninterface PromptWorkflow {\n\tname: string;\n\tdescription: string;\n\tbody: string;\n\tfilePath: string;\n\tchildDescription: string;\n\tpermissions: \"full\" | \"read-only\";\n\ttier: \"light\" | \"standard\" | \"heavy\";\n\tskill?: string | string[] | false;\n\tcwd?: string;\n\tworktree?: boolean;\n\tchain?: string;\n}\n\ntype PromptWorkflowRunner = (params: SubagentParamsLike, ctx: ExtensionContext) => Promise<void>;\n\nconst RESERVED_COMMAND_NAMES = new Set([\n\t\"chain-prompts\",\n\t\"prompt-workflow\",\n\t\"run\",\n\t\"chain\",\n\t\"parallel\",\n\t\"subagents-doctor\",\n]);\n\nfunction packagePromptsDir(): string {\n\treturn path.resolve(path.dirname(fileURLToPath(import.meta.url)), \"..\", \"..\", \"prompts\");\n}\n\nfunction promptDirs(cwd: string): string[] {\n\treturn [\n\t\tpackagePromptsDir(),\n\t\tpath.join(getAgentDir(), \"prompts\"),\n\t\tpath.join(getProjectConfigDir(cwd), \"prompts\"),\n\t];\n}\n\nfunction readPromptFiles(cwd: string): string[] {\n\tconst files: string[] = [];\n\tfor (const dir of promptDirs(cwd)) {\n\t\tlet entries: fs.Dirent[];\n\t\ttry {\n\t\t\tentries = fs.readdirSync(dir, { withFileTypes: true });\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const entry of entries) {\n\t\t\tif (entry.isFile() && entry.name.endsWith(\".md\")) files.push(path.join(dir, entry.name));\n\t\t}\n\t}\n\treturn files;\n}\n\nfunction firstNonEmptyLine(value: string): string {\n\treturn value.split(/\\r?\\n/).map((line) => line.trim()).find(Boolean) ?? \"Prompt workflow\";\n}\n\nfunction stringField(frontmatter: Record<string, string>, key: string): string | undefined {\n\tconst value = frontmatter[key]?.trim();\n\treturn value ? value : undefined;\n}\n\nfunction booleanField(frontmatter: Record<string, string>, key: string): boolean | undefined {\n\tconst value = frontmatter[key]?.trim().toLowerCase();\n\tif (value === \"true\" || value === \"yes\" || value === \"1\") return true;\n\tif (value === \"false\" || value === \"no\" || value === \"0\") return false;\n\treturn undefined;\n}\n\nfunction parseSkill(value: string | undefined): string | string[] | false | undefined {\n\tif (!value) return undefined;\n\tif (value === \"false\") return false;\n\tconst parts = value.split(\",\").map((part) => part.trim()).filter(Boolean);\n\treturn parts.length > 1 ? parts : parts[0];\n}\n\nfunction loadPromptWorkflow(filePath: string): PromptWorkflow | undefined {\n\tconst content = fs.readFileSync(filePath, \"utf-8\");\n\tconst { frontmatter, body } = parseFrontmatter(content);\n\tconst name = path.basename(filePath, \".md\");\n\tif (!name || RESERVED_COMMAND_NAMES.has(name)) return undefined;\n\tconst tierValue = stringField(frontmatter, \"tier\");\n\tif (tierValue !== \"light\" && tierValue !== \"standard\" && tierValue !== \"heavy\") return undefined;\n\tconst skill = parseSkill(stringField(frontmatter, \"skill\"));\n\tconst cwd = stringField(frontmatter, \"cwd\");\n\tconst chain = stringField(frontmatter, \"chain\");\n\treturn {\n\t\tname,\n\t\tdescription: stringField(frontmatter, \"description\") ?? firstNonEmptyLine(body),\n\t\tbody,\n\t\tfilePath,\n\t\tchildDescription: stringField(frontmatter, \"child-description\") ?? name,\n\t\tpermissions: stringField(frontmatter, \"permissions\") === \"read-only\" ? \"read-only\" : \"full\",\n\t\ttier: tierValue,\n\t\t...(skill !== undefined ? { skill } : {}),\n\t\t...(cwd ? { cwd } : {}),\n\t\t...(booleanField(frontmatter, \"worktree\") === true ? { worktree: true } : {}),\n\t\t...(chain ? { chain } : {}),\n\t};\n}\n\nexport function discoverPromptWorkflows(cwd: string): PromptWorkflow[] {\n\tconst workflows = new Map<string, PromptWorkflow>();\n\tfor (const file of readPromptFiles(cwd)) {\n\t\tconst workflow = loadPromptWorkflow(file);\n\t\tif (workflow) workflows.set(workflow.name, workflow);\n\t}\n\treturn [...workflows.values()].sort((a, b) => a.name.localeCompare(b.name));\n}\n\nfunction shellWords(input: string): string[] {\n\tconst words: string[] = [];\n\tlet current = \"\";\n\tlet quote: \"'\" | '\"' | undefined;\n\tlet escaped = false;\n\tfor (const ch of input) {\n\t\tif (escaped) {\n\t\t\tcurrent += ch;\n\t\t\tescaped = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === \"\\\\\") {\n\t\t\tescaped = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (quote) {\n\t\t\tif (ch === quote) quote = undefined;\n\t\t\telse current += ch;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === \"'\" || ch === '\"') {\n\t\t\tquote = ch;\n\t\t\tcontinue;\n\t\t}\n\t\tif (/\\s/.test(ch)) {\n\t\t\tif (current) {\n\t\t\t\twords.push(current);\n\t\t\t\tcurrent = \"\";\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tcurrent += ch;\n\t}\n\tif (current) words.push(current);\n\treturn words;\n}\n\nfunction substituteArgs(template: string, args: string[]): string {\n\tconst all = args.join(\" \");\n\treturn template\n\t\t.replace(/\\$ARGUMENTS/g, all)\n\t\t.replace(/\\$@/g, all)\n\t\t.replace(/\\$\\{(\\d+):-([^}]*)\\}/g, (_match, index: string, fallback: string) => args[Number(index) - 1] || fallback)\n\t\t.replace(/\\$(\\d+)/g, (_match, index: string) => args[Number(index) - 1] ?? \"\");\n}\n\nfunction parseRuntimeOptions(words: string[]): { args: string[]; descriptionOverride?: string; permissions?: \"full\" | \"read-only\"; worktree?: boolean; bg?: boolean } {\n\tconst args: string[] = [];\n\tlet descriptionOverride: string | undefined;\n\tlet permissions: \"full\" | \"read-only\" | undefined;\n\tlet worktree = false;\n\tlet bg = false;\n\tfor (let i = 0; i < words.length; i++) {\n\t\tconst word = words[i]!;\n\t\tif (word === \"--read-only\") {\n\t\t\tpermissions = \"read-only\";\n\t\t\tcontinue;\n\t\t}\n\t\tif (word === \"--full\") {\n\t\t\tpermissions = \"full\";\n\t\t\tcontinue;\n\t\t}\n\t\tif (word === \"--worktree\") {\n\t\t\tworktree = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (word === \"--bg\" || word === \"--async\") {\n\t\t\tbg = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (word === \"--description\") {\n\t\t\tdescriptionOverride = words[++i];\n\t\t\tcontinue;\n\t\t}\n\t\tconst eq = word.match(/^--description(?:=|:)(.+)$/);\n\t\tif (eq) {\n\t\t\tdescriptionOverride = eq[1];\n\t\t\tcontinue;\n\t\t}\n\t\targs.push(word);\n\t}\n\treturn { args, descriptionOverride, permissions, worktree, bg };\n}\n\nfunction splitChainDeclaration(input: string): { declaration: string; argsText: string } {\n\tconst delimiter = input.indexOf(\" -- \");\n\tif (delimiter === -1) return { declaration: input.trim(), argsText: \"\" };\n\treturn { declaration: input.slice(0, delimiter).trim(), argsText: input.slice(delimiter + 4).trim() };\n}\n\nfunction splitPromptChain(input: string): string[] {\n\treturn input.split(\" -> \").map((part) => part.trim()).filter(Boolean);\n}\n\nfunction workflowParams(workflow: PromptWorkflow, args: string[], runtime: ReturnType<typeof parseRuntimeOptions>): SubagentParamsLike {\n\tconst task = substituteArgs(workflow.body, args).trim();\n\treturn {\n\t\ttask,\n\t\tdescription: runtime.descriptionOverride ?? workflow.childDescription,\n\t\tpermissions: runtime.permissions ?? workflow.permissions,\n\t\ttier: workflow.tier,\n\t\tclarify: false,\n\t\t...(workflow.skill !== undefined ? { skill: workflow.skill } : {}),\n\t\t...(workflow.cwd ? { cwd: workflow.cwd } : {}),\n\t\t...(runtime.worktree || workflow.worktree ? { worktree: true } : {}),\n\t\t...(runtime.bg ? { async: true } : {}),\n\t};\n}\n\nfunction workflowChainStep(workflow: PromptWorkflow, args: string[], runtime: ReturnType<typeof parseRuntimeOptions>): ChainStep {\n\tconst params = workflowParams(workflow, args, runtime);\n\treturn {\n\t\tdescription: params.description ?? workflow.childDescription,\n\t\tpermissions: params.permissions ?? workflow.permissions,\n\t\ttier: params.tier,\n\t\ttask: params.task,\n\t\t...(params.skill !== undefined ? { skill: params.skill } : {}),\n\t\t...(params.cwd ? { cwd: params.cwd } : {}),\n\t};\n}\n\nfunction findWorkflow(workflows: PromptWorkflow[], name: string): PromptWorkflow | undefined {\n\treturn workflows.find((workflow) => workflow.name === name);\n}\n\nfunction formatWorkflowList(workflows: PromptWorkflow[]): string {\n\tif (workflows.length === 0) return \"No prompt workflows found in package, user, or project prompts.\";\n\treturn [\n\t\t\"Prompt workflows:\",\n\t\t...workflows.map((workflow) => `- ${workflow.name}: ${workflow.description} (${workflow.filePath})`),\n\t].join(\"\\n\");\n}\n\nexport function registerPromptWorkflowCommands(input: {\n\tpi: ExtensionAPI;\n\trun: PromptWorkflowRunner;\n}): void {\n\tconst { pi, run } = input;\n\n\tpi.registerCommand(\"prompt-workflow\", {\n\t\tdescription: \"Run a prompt template through lunR subagents: /prompt-workflow <name> [args]\",\n\t\thandler: async (rawArgs, ctx) => {\n\t\t\tconst words = shellWords(rawArgs);\n\t\t\tconst name = words.shift();\n\t\t\tconst workflows = discoverPromptWorkflows(ctx.cwd);\n\t\t\tif (!name || name === \"list\") {\n\t\t\t\tpi.sendMessage({ content: formatWorkflowList(workflows), display: true });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst workflow = findWorkflow(workflows, name);\n\t\t\tif (!workflow) {\n\t\t\t\tctx.ui.notify(`Unknown prompt workflow: ${name}`, \"error\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst runtime = parseRuntimeOptions(words);\n\t\t\ttry {\n\t\t\t\tif (workflow.chain) {\n\t\t\t\t\tconst chainNames = splitPromptChain(workflow.chain);\n\t\t\t\t\tconst chain = chainNames.map((stepName) => {\n\t\t\t\t\t\tconst step = findWorkflow(workflows, stepName);\n\t\t\t\t\t\tif (!step) throw new Error(`Unknown prompt workflow in chain '${workflow.name}': ${stepName}`);\n\t\t\t\t\t\treturn workflowChainStep(step, runtime.args, runtime);\n\t\t\t\t\t});\n\t\t\t\t\tawait run({ chain, task: runtime.args.join(\" \"), clarify: false, ...(runtime.bg ? { async: true } : {}) }, ctx);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tawait run(workflowParams(workflow, runtime.args, runtime), ctx);\n\t\t\t} catch (error) {\n\t\t\t\tctx.ui.notify(error instanceof Error ? error.message : String(error), \"error\");\n\t\t\t}\n\t\t},\n\t});\n\n\tpi.registerCommand(\"chain-prompts\", {\n\t\tdescription: \"Run prompt templates as a native subagent chain: /chain-prompts analyze -> fix -- args\",\n\t\thandler: async (rawArgs, ctx) => {\n\t\t\tconst { declaration, argsText } = splitChainDeclaration(rawArgs);\n\t\t\tconst workflows = discoverPromptWorkflows(ctx.cwd);\n\t\t\tif (!declaration || declaration === \"list\") {\n\t\t\t\tpi.sendMessage({ content: formatWorkflowList(workflows), display: true });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst runtime = parseRuntimeOptions(shellWords(argsText));\n\t\t\tconst names = splitPromptChain(declaration);\n\t\t\tif (names.length === 0) {\n\t\t\t\tctx.ui.notify(\"Usage: /chain-prompts prompt-a -> prompt-b -- args\", \"error\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst chain = names.map((name) => {\n\t\t\t\t\tconst workflow = findWorkflow(workflows, name);\n\t\t\t\t\tif (!workflow) throw new Error(`Unknown prompt workflow: ${name}`);\n\t\t\t\t\treturn workflowChainStep(workflow, runtime.args, runtime);\n\t\t\t\t});\n\t\t\t\tawait run({ chain, task: runtime.args.join(\" \"), clarify: false, ...(runtime.bg ? { async: true } : {}) }, ctx);\n\t\t\t} catch (error) {\n\t\t\t\tctx.ui.notify(error instanceof Error ? error.message : String(error), \"error\");\n\t\t\t}\n\t\t},\n\t});\n}\n"]}
@@ -5,7 +5,7 @@ interface InlineConfig {
5
5
  output?: string | false;
6
6
  outputMode?: "inline" | "file-only";
7
7
  reads?: string[] | false;
8
- model?: string;
8
+ tier?: "light" | "standard" | "heavy";
9
9
  permissions?: "full" | "read-only";
10
10
  skill?: string[] | false;
11
11
  progress?: boolean;