@ashx-j/lunr 0.2.13 → 0.2.15

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 (335) hide show
  1. package/CHANGELOG.md +27 -1
  2. package/README.md +10 -7
  3. package/dist/builtin-extensions/ashxj-tui.d.ts +16 -1
  4. package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
  5. package/dist/builtin-extensions/ashxj-tui.js +48 -24
  6. package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
  7. package/dist/builtin-extensions/index.d.ts.map +1 -1
  8. package/dist/builtin-extensions/index.js +2 -0
  9. package/dist/builtin-extensions/index.js.map +1 -1
  10. package/dist/builtin-extensions/lunr-settings-tools.d.ts +4 -0
  11. package/dist/builtin-extensions/lunr-settings-tools.d.ts.map +1 -0
  12. package/dist/builtin-extensions/lunr-settings-tools.js +120 -0
  13. package/dist/builtin-extensions/lunr-settings-tools.js.map +1 -0
  14. package/dist/builtin-extensions/pi-prompt-template-model/subagent-runtime.d.ts +2 -2
  15. package/dist/builtin-extensions/pi-prompt-template-model/subagent-runtime.d.ts.map +1 -1
  16. package/dist/builtin-extensions/pi-prompt-template-model/subagent-runtime.js.map +1 -1
  17. package/dist/builtin-extensions/pi-prompt-template-model/subagent-step.d.ts.map +1 -1
  18. package/dist/builtin-extensions/pi-prompt-template-model/subagent-step.js +3 -3
  19. package/dist/builtin-extensions/pi-prompt-template-model/subagent-step.js.map +1 -1
  20. package/dist/builtin-extensions/pi-subagents/src/api/delegation.d.ts +2 -2
  21. package/dist/builtin-extensions/pi-subagents/src/api/delegation.d.ts.map +1 -1
  22. package/dist/builtin-extensions/pi-subagents/src/api/delegation.js +1 -1
  23. package/dist/builtin-extensions/pi-subagents/src/api/delegation.js.map +1 -1
  24. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +2 -0
  25. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  26. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +29 -23
  27. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  28. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts +5 -11
  29. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
  30. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +12 -15
  31. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
  32. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +3 -3
  33. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
  34. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +14 -27
  35. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
  36. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts.map +1 -1
  37. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js +9 -4
  38. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js.map +1 -1
  39. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.d.ts.map +1 -1
  40. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js +2 -1
  41. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js.map +1 -1
  42. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts.map +1 -1
  43. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js +16 -3
  44. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js.map +1 -1
  45. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-status.d.ts +1 -0
  46. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-status.d.ts.map +1 -1
  47. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-status.js +7 -4
  48. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-status.js.map +1 -1
  49. package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-append.d.ts.map +1 -1
  50. package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-append.js +1 -0
  51. package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-append.js.map +1 -1
  52. package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.d.ts.map +1 -1
  53. package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.js +3 -0
  54. package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.js.map +1 -1
  55. package/dist/builtin-extensions/pi-subagents/src/runs/background/fleet-view.d.ts.map +1 -1
  56. package/dist/builtin-extensions/pi-subagents/src/runs/background/fleet-view.js +3 -3
  57. package/dist/builtin-extensions/pi-subagents/src/runs/background/fleet-view.js.map +1 -1
  58. package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.d.ts.map +1 -1
  59. package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.js +2 -2
  60. package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.js.map +1 -1
  61. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
  62. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js +3 -0
  63. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
  64. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.d.ts.map +1 -1
  65. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.js +3 -35
  66. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.js.map +1 -1
  67. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts.map +1 -1
  68. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js +7 -8
  69. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js.map +1 -1
  70. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
  71. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +2 -0
  72. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
  73. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts +1 -0
  74. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  75. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +20 -21
  76. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  77. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts +12 -1
  78. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts.map +1 -1
  79. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js +42 -17
  80. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js.map +1 -1
  81. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts +2 -0
  82. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts.map +1 -1
  83. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js.map +1 -1
  84. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts +2 -1
  85. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts.map +1 -1
  86. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js +23 -1
  87. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js.map +1 -1
  88. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.d.ts +3 -1
  89. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.d.ts.map +1 -1
  90. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.js +15 -4
  91. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.js.map +1 -1
  92. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +14 -3
  93. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
  94. package/dist/builtin-extensions/pi-subagents/src/shared/types.js +1 -1
  95. package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
  96. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.d.ts +3 -3
  97. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.d.ts.map +1 -1
  98. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.js +7 -6
  99. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.js.map +1 -1
  100. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-request.d.ts.map +1 -1
  101. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-request.js +3 -3
  102. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-request.js.map +1 -1
  103. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts +1 -1
  104. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts.map +1 -1
  105. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js +6 -4
  106. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js.map +1 -1
  107. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +1 -1
  108. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
  109. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +15 -10
  110. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
  111. package/dist/builtin-extensions/pi-subagents/src/tui/fleet.d.ts.map +1 -1
  112. package/dist/builtin-extensions/pi-subagents/src/tui/fleet.js +5 -4
  113. package/dist/builtin-extensions/pi-subagents/src/tui/fleet.js.map +1 -1
  114. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -2
  115. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  116. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +86 -52
  117. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  118. package/dist/catalog/models.json +1 -1
  119. package/dist/catalog/providers/amazon-bedrock.json +1 -1
  120. package/dist/catalog/providers/anthropic.json +1 -1
  121. package/dist/catalog/providers/azure-openai-responses.json +1 -1
  122. package/dist/catalog/providers/cloudflare-ai-gateway.json +1 -1
  123. package/dist/catalog/providers/fireworks.json +1 -1
  124. package/dist/catalog/providers/github-copilot.json +1 -1
  125. package/dist/catalog/providers/google-vertex.json +1 -1
  126. package/dist/catalog/providers/google.json +1 -1
  127. package/dist/catalog/providers/groq.json +1 -1
  128. package/dist/catalog/providers/huggingface.json +1 -1
  129. package/dist/catalog/providers/nvidia.json +1 -1
  130. package/dist/catalog/providers/openai-codex.json +1 -1
  131. package/dist/catalog/providers/openai.json +1 -1
  132. package/dist/catalog/providers/opencode-go.json +1 -1
  133. package/dist/catalog/providers/opencode.json +1 -1
  134. package/dist/catalog/providers/openrouter.json +1 -1
  135. package/dist/catalog/providers/vercel-ai-gateway.json +1 -1
  136. package/dist/catalog/publication.json +131 -3
  137. package/dist/cli/list-models.d.ts.map +1 -1
  138. package/dist/cli/list-models.js +1 -0
  139. package/dist/cli/list-models.js.map +1 -1
  140. package/dist/cli.d.ts.map +1 -1
  141. package/dist/cli.js +52 -27
  142. package/dist/cli.js.map +1 -1
  143. package/dist/core/agent-session-runtime.d.ts +5 -1
  144. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  145. package/dist/core/agent-session-runtime.js +7 -2
  146. package/dist/core/agent-session-runtime.js.map +1 -1
  147. package/dist/core/agent-session.d.ts +2 -0
  148. package/dist/core/agent-session.d.ts.map +1 -1
  149. package/dist/core/agent-session.js +18 -6
  150. package/dist/core/agent-session.js.map +1 -1
  151. package/dist/core/catalog-cache-scope.d.ts +3 -0
  152. package/dist/core/catalog-cache-scope.d.ts.map +1 -0
  153. package/dist/core/catalog-cache-scope.js +12 -0
  154. package/dist/core/catalog-cache-scope.js.map +1 -0
  155. package/dist/core/catalog-merge.d.ts +2 -0
  156. package/dist/core/catalog-merge.d.ts.map +1 -1
  157. package/dist/core/catalog-merge.js +29 -2
  158. package/dist/core/catalog-merge.js.map +1 -1
  159. package/dist/core/catalog-refresh-polling.d.ts +8 -0
  160. package/dist/core/catalog-refresh-polling.d.ts.map +1 -0
  161. package/dist/core/catalog-refresh-polling.js +30 -0
  162. package/dist/core/catalog-refresh-polling.js.map +1 -0
  163. package/dist/core/codex-catalog.d.ts +3 -0
  164. package/dist/core/codex-catalog.d.ts.map +1 -0
  165. package/dist/core/codex-catalog.js +15 -0
  166. package/dist/core/codex-catalog.js.map +1 -0
  167. package/dist/core/context-breakdown.d.ts +2 -0
  168. package/dist/core/context-breakdown.d.ts.map +1 -1
  169. package/dist/core/context-breakdown.js +6 -2
  170. package/dist/core/context-breakdown.js.map +1 -1
  171. package/dist/core/customize.d.ts +2 -4
  172. package/dist/core/customize.d.ts.map +1 -1
  173. package/dist/core/customize.js +2 -8
  174. package/dist/core/customize.js.map +1 -1
  175. package/dist/core/footer-data-provider.d.ts +3 -4
  176. package/dist/core/footer-data-provider.d.ts.map +1 -1
  177. package/dist/core/footer-data-provider.js +54 -82
  178. package/dist/core/footer-data-provider.js.map +1 -1
  179. package/dist/core/injected-prompt.d.ts +3 -3
  180. package/dist/core/injected-prompt.d.ts.map +1 -1
  181. package/dist/core/injected-prompt.js +2 -7
  182. package/dist/core/injected-prompt.js.map +1 -1
  183. package/dist/core/large-subagent-launch.d.ts +13 -0
  184. package/dist/core/large-subagent-launch.d.ts.map +1 -0
  185. package/dist/core/large-subagent-launch.js +54 -0
  186. package/dist/core/large-subagent-launch.js.map +1 -0
  187. package/dist/core/live-catalog.d.ts +5 -2
  188. package/dist/core/live-catalog.d.ts.map +1 -1
  189. package/dist/core/live-catalog.js +108 -27
  190. package/dist/core/live-catalog.js.map +1 -1
  191. package/dist/core/model-instructions.d.ts +24 -0
  192. package/dist/core/model-instructions.d.ts.map +1 -0
  193. package/dist/core/model-instructions.js +123 -0
  194. package/dist/core/model-instructions.js.map +1 -0
  195. package/dist/core/model-runtime.d.ts +8 -0
  196. package/dist/core/model-runtime.d.ts.map +1 -1
  197. package/dist/core/model-runtime.js +64 -12
  198. package/dist/core/model-runtime.js.map +1 -1
  199. package/dist/core/official-catalog.d.ts +4 -0
  200. package/dist/core/official-catalog.d.ts.map +1 -1
  201. package/dist/core/official-catalog.js +86 -21
  202. package/dist/core/official-catalog.js.map +1 -1
  203. package/dist/core/permissions.d.ts +10 -11
  204. package/dist/core/permissions.d.ts.map +1 -1
  205. package/dist/core/permissions.js +107 -40
  206. package/dist/core/permissions.js.map +1 -1
  207. package/dist/core/plan-mode.d.ts.map +1 -1
  208. package/dist/core/plan-mode.js +10 -1
  209. package/dist/core/plan-mode.js.map +1 -1
  210. package/dist/core/resource-loader.d.ts +3 -0
  211. package/dist/core/resource-loader.d.ts.map +1 -1
  212. package/dist/core/resource-loader.js +13 -4
  213. package/dist/core/resource-loader.js.map +1 -1
  214. package/dist/core/runtime-bridges.d.ts +4 -0
  215. package/dist/core/runtime-bridges.d.ts.map +1 -0
  216. package/dist/core/runtime-bridges.js +16 -0
  217. package/dist/core/runtime-bridges.js.map +1 -0
  218. package/dist/core/sdk.d.ts.map +1 -1
  219. package/dist/core/sdk.js +1 -0
  220. package/dist/core/sdk.js.map +1 -1
  221. package/dist/core/settings-manager.d.ts +13 -6
  222. package/dist/core/settings-manager.d.ts.map +1 -1
  223. package/dist/core/settings-manager.js +32 -17
  224. package/dist/core/settings-manager.js.map +1 -1
  225. package/dist/core/settings-tools-bridge.d.ts +35 -0
  226. package/dist/core/settings-tools-bridge.d.ts.map +1 -0
  227. package/dist/core/settings-tools-bridge.js +56 -0
  228. package/dist/core/settings-tools-bridge.js.map +1 -0
  229. package/dist/core/slash-commands.d.ts.map +1 -1
  230. package/dist/core/slash-commands.js +1 -1
  231. package/dist/core/slash-commands.js.map +1 -1
  232. package/dist/core/system-prompt.d.ts.map +1 -1
  233. package/dist/core/system-prompt.js +1 -1
  234. package/dist/core/system-prompt.js.map +1 -1
  235. package/dist/gateway/agent-bridge.d.ts.map +1 -1
  236. package/dist/gateway/agent-bridge.js +3 -2
  237. package/dist/gateway/agent-bridge.js.map +1 -1
  238. package/dist/gateway/approval.d.ts.map +1 -1
  239. package/dist/gateway/approval.js +4 -3
  240. package/dist/gateway/approval.js.map +1 -1
  241. package/dist/gateway/commands.d.ts +1 -1
  242. package/dist/gateway/commands.d.ts.map +1 -1
  243. package/dist/gateway/commands.js +1 -18
  244. package/dist/gateway/commands.js.map +1 -1
  245. package/dist/gateway/cron.d.ts.map +1 -1
  246. package/dist/gateway/cron.js +3 -2
  247. package/dist/gateway/cron.js.map +1 -1
  248. package/dist/gateway/router.d.ts +1 -1
  249. package/dist/gateway/router.d.ts.map +1 -1
  250. package/dist/gateway/router.js +1 -1
  251. package/dist/gateway/router.js.map +1 -1
  252. package/dist/main.d.ts +2 -0
  253. package/dist/main.d.ts.map +1 -1
  254. package/dist/main.js +108 -58
  255. package/dist/main.js.map +1 -1
  256. package/dist/migrations.d.ts +2 -0
  257. package/dist/migrations.d.ts.map +1 -1
  258. package/dist/migrations.js +18 -4
  259. package/dist/migrations.js.map +1 -1
  260. package/dist/modes/interactive/components/assistant-message.d.ts +1 -3
  261. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  262. package/dist/modes/interactive/components/assistant-message.js +4 -32
  263. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  264. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  265. package/dist/modes/interactive/components/custom-editor.js +2 -1
  266. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  267. package/dist/modes/interactive/components/injected-prompt-message.d.ts +1 -1
  268. package/dist/modes/interactive/components/injected-prompt-message.d.ts.map +1 -1
  269. package/dist/modes/interactive/components/injected-prompt-message.js +1 -1
  270. package/dist/modes/interactive/components/injected-prompt-message.js.map +1 -1
  271. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  272. package/dist/modes/interactive/components/model-selector.js +4 -1
  273. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  274. package/dist/modes/interactive/components/plan-message.d.ts +1 -3
  275. package/dist/modes/interactive/components/plan-message.d.ts.map +1 -1
  276. package/dist/modes/interactive/components/plan-message.js +1 -16
  277. package/dist/modes/interactive/components/plan-message.js.map +1 -1
  278. package/dist/modes/interactive/components/settings-selector.d.ts +8 -5
  279. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  280. package/dist/modes/interactive/components/settings-selector.js +71 -31
  281. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  282. package/dist/modes/interactive/components/user-message.d.ts +1 -3
  283. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  284. package/dist/modes/interactive/components/user-message.js +2 -19
  285. package/dist/modes/interactive/components/user-message.js.map +1 -1
  286. package/dist/modes/interactive/interactive-mode.d.ts +13 -4
  287. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  288. package/dist/modes/interactive/interactive-mode.js +163 -177
  289. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  290. package/dist/modes/interactive/theme/moon.json +0 -1
  291. package/dist/modes/interactive/theme/theme-schema.json +3 -3
  292. package/dist/modes/interactive/theme/theme.d.ts +1 -1
  293. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  294. package/dist/modes/interactive/theme/theme.js +95 -90
  295. package/dist/modes/interactive/theme/theme.js.map +1 -1
  296. package/dist/startup/interactive-view.d.ts +55 -0
  297. package/dist/startup/interactive-view.d.ts.map +1 -0
  298. package/dist/startup/interactive-view.js +332 -0
  299. package/dist/startup/interactive-view.js.map +1 -0
  300. package/dist/startup/launch-routing.d.ts +8 -0
  301. package/dist/startup/launch-routing.d.ts.map +1 -0
  302. package/dist/startup/launch-routing.js +29 -0
  303. package/dist/startup/launch-routing.js.map +1 -0
  304. package/dist/startup/startup-milestones.d.ts +4 -0
  305. package/dist/startup/startup-milestones.d.ts.map +1 -0
  306. package/dist/startup/startup-milestones.js +14 -0
  307. package/dist/startup/startup-milestones.js.map +1 -0
  308. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  309. package/dist/utils/syntax-highlight.js +10 -4
  310. package/dist/utils/syntax-highlight.js.map +1 -1
  311. package/docs/features.md +9 -9
  312. package/docs/interactive-startup.md +58 -0
  313. package/docs/keybindings.md +1 -1
  314. package/docs/model-catalog.md +29 -0
  315. package/docs/quickstart.md +3 -2
  316. package/docs/settings.md +4 -4
  317. package/docs/terminal-setup.md +2 -2
  318. package/docs/termux.md +1 -1
  319. package/docs/usage.md +4 -3
  320. package/docs/windows.md +1 -1
  321. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  322. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  323. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  324. package/examples/extensions/gondolin/package-lock.json +2 -2
  325. package/examples/extensions/gondolin/package.json +1 -1
  326. package/examples/extensions/sandbox/package-lock.json +2 -2
  327. package/examples/extensions/sandbox/package.json +1 -1
  328. package/examples/extensions/subagent/README.md +1 -1
  329. package/examples/extensions/with-deps/package-lock.json +2 -2
  330. package/examples/extensions/with-deps/package.json +1 -1
  331. package/package.json +16 -16
  332. package/dist/core/swarm.d.ts +0 -54
  333. package/dist/core/swarm.d.ts.map +0 -1
  334. package/dist/core/swarm.js +0 -119
  335. package/dist/core/swarm.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"child-spec.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/child-spec.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Normalize model-authored delegated tasks into ChildSpec before validation,\n * rendering, persistence, or process spawning.\n */\n\nimport {\n\tPLAN_MODE_WRITE_SPAWN_ERROR,\n\tresolveChildPermissions,\n\ttype ChildPermission,\n} from \"../../../../core/subagent-permission-inherit.ts\";\nimport { resolveChildExcludeTools } from \"../runs/shared/child-tools.ts\";\nimport type { AcceptanceInput, ChildSpec, ChildTier, JsonSchemaObject, ToolBudgetConfig } from \"./types.ts\";\n\nexport type { ChildSpec, ChildTier } from \"./types.ts\";\n\nexport const CHILD_DESCRIPTION_MAX_LENGTH = 80;\n\nexport interface DelegatedTaskInput {\n\ttask?: unknown;\n\tdescription?: unknown;\n\tpermissions?: unknown;\n\tmodel?: unknown;\n\ttier?: unknown;\n\tskill?: unknown;\n\tcwd?: unknown;\n\toutput?: unknown;\n\toutputMode?: unknown;\n\tacceptance?: unknown;\n\ttoolBudget?: unknown;\n\tcount?: unknown;\n\treads?: unknown;\n\tprogress?: unknown;\n\tlabel?: unknown;\n\tphase?: unknown;\n\tas?: unknown;\n\toutputSchema?: unknown;\n}\n\nexport interface NormalizeChildSpecOptions {\n\tparentMode?: string;\n\trunId: string;\n\tindex: number;\n\tchildId?: string;\n\tdefaultTask?: string;\n\tfanoutAuthorized?: boolean;\n\tpathLabel?: string;\n}\n\nexport function allocateChildId(runId: string, index: number): string {\n\treturn `${runId}-${index}`;\n}\n\nexport function sanitizeChildDescription(value: string, max = CHILD_DESCRIPTION_MAX_LENGTH): string {\n\tconst collapsed = value.replace(/\\s+/g, \" \").trim();\n\tif (collapsed.length <= max) return collapsed;\n\treturn `${collapsed.slice(0, Math.max(1, max - 1))}…`;\n}\n\nexport function validateChildDescription(value: unknown, pathLabel = \"description\"): string {\n\tif (typeof value !== \"string\") {\n\t\tthrow new Error(`${pathLabel} is required and must be a concise single-line label (max ${CHILD_DESCRIPTION_MAX_LENGTH} characters).`);\n\t}\n\tif (/[\\r\\n]/.test(value)) {\n\t\tthrow new Error(`${pathLabel} must be a single line with no newlines.`);\n\t}\n\tconst trimmed = value.trim();\n\tif (!trimmed) {\n\t\tthrow new Error(`${pathLabel} is required and must be a concise single-line label (max ${CHILD_DESCRIPTION_MAX_LENGTH} characters).`);\n\t}\n\tif (trimmed.length > CHILD_DESCRIPTION_MAX_LENGTH) {\n\t\tthrow new Error(`${pathLabel} must be at most ${CHILD_DESCRIPTION_MAX_LENGTH} characters.`);\n\t}\n\treturn trimmed;\n}\n\nexport function parseChildPermissionsInput(value: unknown, pathLabel = \"permissions\"): ChildPermission | undefined {\n\tif (value === undefined) return undefined;\n\tif (value === \"full\" || value === \"read-only\") return value;\n\tthrow new Error(`${pathLabel} must be \"full\" or \"read-only\".`);\n}\n\nfunction optionalString(value: unknown): string | undefined {\n\treturn typeof value === \"string\" && value.trim() ? value : undefined;\n}\n\nfunction optionalSkill(value: unknown): string | string[] | false | undefined {\n\tif (value === false) return false;\n\tif (typeof value === \"string\") return value;\n\tif (Array.isArray(value) && value.every((entry) => typeof entry === \"string\")) return value as string[];\n\treturn undefined;\n}\n\nfunction optionalOutput(value: unknown): string | false | undefined {\n\tif (value === false) return false;\n\tif (typeof value === \"string\") return value;\n\treturn undefined;\n}\n\nfunction optionalReads(value: unknown): string[] | false | undefined {\n\tif (value === false) return false;\n\tif (Array.isArray(value) && value.every((entry) => typeof entry === \"string\")) return value as string[];\n\treturn undefined;\n}\n\nfunction optionalCount(value: unknown): number | undefined {\n\tif (typeof value === \"number\" && Number.isInteger(value) && value >= 1) return value;\n\treturn undefined;\n}\n\nexport function normalizeChildSpec(input: DelegatedTaskInput, options: NormalizeChildSpecOptions): ChildSpec {\n\tconst pathLabel = options.pathLabel ?? \"task\";\n\tconst description = validateChildDescription(input.description, `${pathLabel}.description`);\n\tconst task = typeof input.task === \"string\" && input.task.trim()\n\t\t? input.task\n\t\t: options.defaultTask;\n\tif (typeof task !== \"string\" || !task.trim()) {\n\t\tthrow new Error(`${pathLabel}.task is required.`);\n\t}\n\tconst requested = parseChildPermissionsInput(input.permissions, `${pathLabel}.permissions`);\n\tconst resolved = resolveChildPermissions(options.parentMode, requested);\n\tif (!resolved.ok) {\n\t\tthrow new Error(resolved.error || PLAN_MODE_WRITE_SPAWN_ERROR);\n\t}\n\tconst tier = input.tier === \"light\" || input.tier === \"standard\" || input.tier === \"heavy\" ? input.tier : undefined;\n\tconst outputMode = input.outputMode === \"inline\" || input.outputMode === \"file-only\" ? input.outputMode : undefined;\n\treturn {\n\t\tchildId: options.childId ?? allocateChildId(options.runId, options.index),\n\t\ttask,\n\t\tdescription,\n\t\trequestedPermissions: resolved.requested,\n\t\teffectivePermissions: resolved.effective,\n\t\tmodel: optionalString(input.model),\n\t\ttier,\n\t\tskill: optionalSkill(input.skill),\n\t\tcwd: optionalString(input.cwd),\n\t\toutput: optionalOutput(input.output),\n\t\toutputMode,\n\t\tacceptance: input.acceptance as AcceptanceInput | undefined,\n\t\ttoolBudget: input.toolBudget as ToolBudgetConfig | undefined,\n\t\tcount: optionalCount(input.count),\n\t\treads: optionalReads(input.reads),\n\t\tprogress: typeof input.progress === \"boolean\" ? input.progress : undefined,\n\t\tlabel: optionalString(input.label),\n\t\tphase: optionalString(input.phase),\n\t\tas: optionalString(input.as),\n\t\toutputSchema: input.outputSchema && typeof input.outputSchema === \"object\"\n\t\t\t? input.outputSchema as JsonSchemaObject\n\t\t\t: undefined,\n\t\tfanoutAuthorized: options.fanoutAuthorized === true,\n\t};\n}\n\nexport function childDisplayLabel(spec: Pick<ChildSpec, \"description\" | \"label\">): string {\n\treturn spec.label?.trim() || spec.description;\n}\n\nexport function tryNormalizeChildSpec(\n\tinput: DelegatedTaskInput,\n\toptions: NormalizeChildSpecOptions,\n): { ok: true; spec: ChildSpec } | { ok: false; error: string } {\n\ttry {\n\t\treturn { ok: true, spec: normalizeChildSpec(input, options) };\n\t} catch (error) {\n\t\treturn { ok: false, error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\nexport function childIdentityFields(spec: ChildSpec): {\n\tchildId: string;\n\tdescription: string;\n\tpermissions: ChildPermission;\n\tagent: string;\n} {\n\treturn {\n\t\tchildId: spec.childId,\n\t\tdescription: spec.description,\n\t\tpermissions: spec.effectivePermissions,\n\t\tagent: spec.description,\n\t};\n}\n\nexport function childOutputCapabilities(permissions: ChildPermission): { tools: string[] } {\n\treturn permissions === \"read-only\"\n\t\t? { tools: [\"read\"] }\n\t\t: { tools: [\"read\", \"edit\", \"write\", \"bash\"] };\n}\n\nexport function childSpawnPiArgDefaults(spec: ChildSpec): {\n\tinheritProjectContext: true;\n\tinheritSkills: false;\n\tsystemPromptMode: \"append\";\n\texcludeTools: string[];\n\tchildPermission: ChildPermission;\n\tchildId: string;\n\tchildDescription: string;\n\tchildAgentName: string;\n} {\n\treturn {\n\t\tinheritProjectContext: true,\n\t\tinheritSkills: false,\n\t\tsystemPromptMode: \"append\",\n\t\texcludeTools: resolveChildExcludeTools({\n\t\t\tpermissions: spec.effectivePermissions,\n\t\t\tfanoutAuthorized: spec.fanoutAuthorized,\n\t\t}),\n\t\tchildPermission: spec.effectivePermissions,\n\t\tchildId: spec.childId,\n\t\tchildDescription: spec.description,\n\t\tchildAgentName: spec.childId,\n\t};\n}\n"]}
1
+ {"version":3,"file":"child-spec.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/child-spec.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Normalize model-authored delegated tasks into ChildSpec before validation,\n * rendering, persistence, or process spawning.\n */\n\nimport {\n\tPLAN_MODE_WRITE_SPAWN_ERROR,\n\tresolveChildPermissions,\n\ttype ChildPermission,\n} from \"../../../../core/subagent-permission-inherit.ts\";\nimport { resolveChildExcludeTools } from \"../runs/shared/child-tools.ts\";\nimport { captureModelSelection } from \"../runs/shared/model-fallback.ts\";\nimport type { AcceptanceInput, ChildSpec, ChildTier, JsonSchemaObject, ModelSelection, ToolBudgetConfig } from \"./types.ts\";\n\nexport type { ChildSpec, ChildTier, ModelSelection } from \"./types.ts\";\n\nexport const CHILD_DESCRIPTION_MAX_LENGTH = 80;\n\nexport interface DelegatedTaskInput {\n\ttask?: unknown;\n\tdescription?: unknown;\n\tpermissions?: unknown;\n\tmodel?: unknown;\n\ttier?: unknown;\n\tmodelSelection?: unknown;\n\tskill?: unknown;\n\tcwd?: unknown;\n\toutput?: unknown;\n\toutputMode?: unknown;\n\tacceptance?: unknown;\n\ttoolBudget?: unknown;\n\tcount?: unknown;\n\treads?: unknown;\n\tprogress?: unknown;\n\tlabel?: unknown;\n\tphase?: unknown;\n\tas?: unknown;\n\toutputSchema?: unknown;\n}\n\nexport interface NormalizeChildSpecOptions {\n\tparentMode?: string;\n\trunId: string;\n\tindex: number;\n\tchildId?: string;\n\tdefaultTask?: string;\n\tfanoutAuthorized?: boolean;\n\tpathLabel?: string;\n}\n\nexport function allocateChildId(runId: string, index: number): string {\n\treturn `${runId}-${index}`;\n}\n\nexport function sanitizeChildDescription(value: string, max = CHILD_DESCRIPTION_MAX_LENGTH): string {\n\tconst collapsed = value.replace(/\\s+/g, \" \").trim();\n\tif (collapsed.length <= max) return collapsed;\n\treturn `${collapsed.slice(0, Math.max(1, max - 1))}…`;\n}\n\nexport function validateChildDescription(value: unknown, pathLabel = \"description\"): string {\n\tif (typeof value !== \"string\") {\n\t\tthrow new Error(`${pathLabel} is required and must be a concise single-line label (max ${CHILD_DESCRIPTION_MAX_LENGTH} characters).`);\n\t}\n\tif (/[\\r\\n]/.test(value)) {\n\t\tthrow new Error(`${pathLabel} must be a single line with no newlines.`);\n\t}\n\tconst trimmed = value.trim();\n\tif (!trimmed) {\n\t\tthrow new Error(`${pathLabel} is required and must be a concise single-line label (max ${CHILD_DESCRIPTION_MAX_LENGTH} characters).`);\n\t}\n\tif (trimmed.length > CHILD_DESCRIPTION_MAX_LENGTH) {\n\t\tthrow new Error(`${pathLabel} must be at most ${CHILD_DESCRIPTION_MAX_LENGTH} characters.`);\n\t}\n\treturn trimmed;\n}\n\nexport function parseChildPermissionsInput(value: unknown, pathLabel = \"permissions\"): ChildPermission | undefined {\n\tif (value === undefined) return undefined;\n\tif (value === \"full\" || value === \"read-only\") return value;\n\tthrow new Error(`${pathLabel} must be \"full\" or \"read-only\".`);\n}\n\nfunction optionalString(value: unknown): string | undefined {\n\treturn typeof value === \"string\" && value.trim() ? value : undefined;\n}\n\nfunction optionalSkill(value: unknown): string | string[] | false | undefined {\n\tif (value === false) return false;\n\tif (typeof value === \"string\") return value;\n\tif (Array.isArray(value) && value.every((entry) => typeof entry === \"string\")) return value as string[];\n\treturn undefined;\n}\n\nfunction optionalOutput(value: unknown): string | false | undefined {\n\tif (value === false) return false;\n\tif (typeof value === \"string\") return value;\n\treturn undefined;\n}\n\nfunction optionalReads(value: unknown): string[] | false | undefined {\n\tif (value === false) return false;\n\tif (Array.isArray(value) && value.every((entry) => typeof entry === \"string\")) return value as string[];\n\treturn undefined;\n}\n\nfunction optionalCount(value: unknown): number | undefined {\n\tif (typeof value === \"number\" && Number.isInteger(value) && value >= 1) return value;\n\treturn undefined;\n}\n\nfunction isModelSelection(value: unknown): value is ModelSelection {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst kind = (value as { kind?: unknown }).kind;\n\tif (kind === \"tier\") {\n\t\tconst tier = (value as { tier?: unknown }).tier;\n\t\treturn tier === \"light\" || tier === \"standard\" || tier === \"heavy\";\n\t}\n\treturn false;\n}\n\nexport function normalizeChildSpec(input: DelegatedTaskInput, options: NormalizeChildSpecOptions): ChildSpec {\n\tconst pathLabel = options.pathLabel ?? \"task\";\n\tconst description = validateChildDescription(input.description, `${pathLabel}.description`);\n\tconst task = typeof input.task === \"string\" && input.task.trim()\n\t\t? input.task\n\t\t: options.defaultTask;\n\tif (typeof task !== \"string\" || !task.trim()) {\n\t\tthrow new Error(`${pathLabel}.task is required.`);\n\t}\n\tconst requested = parseChildPermissionsInput(input.permissions, `${pathLabel}.permissions`);\n\tconst resolved = resolveChildPermissions(options.parentMode, requested);\n\tif (!resolved.ok) {\n\t\tthrow new Error(resolved.error || PLAN_MODE_WRITE_SPAWN_ERROR);\n\t}\n\tif (input.model !== undefined && !isModelSelection(input.modelSelection)) {\n\t\tthrow new Error(`${pathLabel}.model is not supported for executable children; choose tier: \"light\", \"standard\", or \"heavy\".`);\n\t}\n\tconst selectedTier = isModelSelection(input.modelSelection) ? input.modelSelection.tier : input.tier;\n\tif (selectedTier !== \"light\" && selectedTier !== \"standard\" && selectedTier !== \"heavy\") {\n\t\tthrow new Error(`${pathLabel}.tier is required and must be \"light\", \"standard\", or \"heavy\".`);\n\t}\n\tconst tier = selectedTier;\n\tconst outputMode = input.outputMode === \"inline\" || input.outputMode === \"file-only\" ? input.outputMode : undefined;\n\tconst modelSelection = isModelSelection(input.modelSelection)\n\t\t? input.modelSelection\n\t\t: captureModelSelection({ tier });\n\treturn {\n\t\tchildId: options.childId ?? allocateChildId(options.runId, options.index),\n\t\ttask,\n\t\tdescription,\n\t\trequestedPermissions: resolved.requested,\n\t\teffectivePermissions: resolved.effective,\n\t\tmodel: optionalString(input.model),\n\t\ttier,\n\t\tmodelSelection,\n\t\tskill: optionalSkill(input.skill),\n\t\tcwd: optionalString(input.cwd),\n\t\toutput: optionalOutput(input.output),\n\t\toutputMode,\n\t\tacceptance: input.acceptance as AcceptanceInput | undefined,\n\t\ttoolBudget: input.toolBudget as ToolBudgetConfig | undefined,\n\t\tcount: optionalCount(input.count),\n\t\treads: optionalReads(input.reads),\n\t\tprogress: typeof input.progress === \"boolean\" ? input.progress : undefined,\n\t\tlabel: optionalString(input.label),\n\t\tphase: optionalString(input.phase),\n\t\tas: optionalString(input.as),\n\t\toutputSchema: input.outputSchema && typeof input.outputSchema === \"object\"\n\t\t\t? input.outputSchema as JsonSchemaObject\n\t\t\t: undefined,\n\t\tfanoutAuthorized: options.fanoutAuthorized === true,\n\t};\n}\n\nexport function childDisplayLabel(spec: Pick<ChildSpec, \"description\" | \"label\">): string {\n\treturn spec.label?.trim() || spec.description;\n}\n\nexport function tryNormalizeChildSpec(\n\tinput: DelegatedTaskInput,\n\toptions: NormalizeChildSpecOptions,\n): { ok: true; spec: ChildSpec } | { ok: false; error: string } {\n\ttry {\n\t\treturn { ok: true, spec: normalizeChildSpec(input, options) };\n\t} catch (error) {\n\t\treturn { ok: false, error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\nexport function childIdentityFields(spec: ChildSpec): {\n\tchildId: string;\n\tdescription: string;\n\tpermissions: ChildPermission;\n\tagent: string;\n} {\n\treturn {\n\t\tchildId: spec.childId,\n\t\tdescription: spec.description,\n\t\tpermissions: spec.effectivePermissions,\n\t\tagent: spec.description,\n\t};\n}\n\nexport function childOutputCapabilities(permissions: ChildPermission): { tools: string[] } {\n\treturn permissions === \"read-only\"\n\t\t? { tools: [\"read\"] }\n\t\t: { tools: [\"read\", \"edit\", \"write\", \"bash\"] };\n}\n\nexport function childSpawnPiArgDefaults(spec: ChildSpec): {\n\tinheritProjectContext: true;\n\tinheritSkills: false;\n\tsystemPromptMode: \"append\";\n\texcludeTools: string[];\n\tchildPermission: ChildPermission;\n\tchildId: string;\n\tchildDescription: string;\n\tchildAgentName: string;\n} {\n\treturn {\n\t\tinheritProjectContext: true,\n\t\tinheritSkills: false,\n\t\tsystemPromptMode: \"append\",\n\t\texcludeTools: resolveChildExcludeTools({\n\t\t\tpermissions: spec.effectivePermissions,\n\t\t\tfanoutAuthorized: spec.fanoutAuthorized,\n\t\t}),\n\t\tchildPermission: spec.effectivePermissions,\n\t\tchildId: spec.childId,\n\t\tchildDescription: spec.description,\n\t\tchildAgentName: spec.childId,\n\t};\n}\n"]}
@@ -1,13 +1,15 @@
1
1
  /**
2
2
  * Formatting utilities for display output
3
3
  */
4
- import type { Usage, SingleResult } from "./types.ts";
4
+ import type { ModelSelection, Usage, SingleResult } from "./types.ts";
5
5
  import type { ChainStep } from "./settings.ts";
6
6
  /**
7
7
  * Format token count with k suffix for large numbers
8
8
  */
9
9
  export declare function formatTokens(n: number): string;
10
10
  export declare function formatModelThinking(model?: string, thinking?: string): string;
11
+ /** Compact/header badge: selected tier name plus its effective thinking level. */
12
+ export declare function formatModelSelection(selection?: ModelSelection, resolvedModel?: string, thinking?: string): string;
11
13
  /**
12
14
  * Format usage statistics into a compact string
13
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/formatters.ts"],"names":[],"mappings":"AACA;;GAEG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI/C;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAU7E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAU5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,EAAE,YAAY,EAAE,EACvB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,GAAG,QAAQ,EAC9B,UAAU,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3C,MAAM,CA8BR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,UAAQ,GAAG,MAAM,CAuBpG;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM7C","sourcesContent":["// @ts-nocheck\n/**\n * Formatting utilities for display output\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { Usage, SingleResult } from \"./types.ts\";\nimport type { ChainStep } from \"./settings.ts\";\nimport { isDynamicParallelStep, isParallelStep } from \"./settings.ts\";\nimport { splitKnownThinkingSuffix, THINKING_LEVELS } from \"./model-info.ts\";\n\n/**\n * Format token count with k suffix for large numbers\n */\nexport function formatTokens(n: number): string {\n\treturn n < 1000 ? String(n) : n < 10000 ? `${(n / 1000).toFixed(1)}k` : `${Math.round(n / 1000)}k`;\n}\n\nexport function formatModelThinking(model?: string, thinking?: string): string {\n\tconst parsed = model ? splitKnownThinkingSuffix(model) : undefined;\n\tlet displayModel = parsed?.baseModel ?? model;\n\tconst explicitThinking = THINKING_LEVELS.find((level) => level === thinking?.trim());\n\tconst displayThinking = parsed?.thinkingSuffix ? parsed.thinkingSuffix.slice(1) : explicitThinking;\n\tif (displayModel) {\n\t\tconst slashIdx = displayModel.lastIndexOf(\"/\");\n\t\tif (slashIdx !== -1) displayModel = displayModel.slice(slashIdx + 1);\n\t}\n\treturn [displayModel, displayThinking ? `thinking ${displayThinking}` : undefined].filter(Boolean).join(\" · \");\n}\n\n/**\n * Format usage statistics into a compact string\n */\nexport function formatUsage(u: Usage, model?: string): string {\n\tconst parts: string[] = [];\n\tif (u.turns) parts.push(`${u.turns} turn${u.turns > 1 ? \"s\" : \"\"}`);\n\tif (u.input) parts.push(`in:${formatTokens(u.input)}`);\n\tif (u.output) parts.push(`out:${formatTokens(u.output)}`);\n\tif (u.cacheRead) parts.push(`R${formatTokens(u.cacheRead)}`);\n\tif (u.cacheWrite) parts.push(`W${formatTokens(u.cacheWrite)}`);\n\tif (u.cost) parts.push(`$${u.cost.toFixed(4)}`);\n\tif (model) parts.push(model);\n\treturn parts.join(\" \");\n}\n\n/**\n * Format duration in human-readable form\n */\nexport function formatDuration(ms: number): string {\n\tif (ms < 1000) return `${ms}ms`;\n\tif (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n\treturn `${Math.floor(ms / 60000)}m${Math.floor((ms % 60000) / 1000)}s`;\n}\n\n/**\n * Build a summary string for a completed/failed chain\n */\nexport function buildChainSummary(\n\tsteps: ChainStep[],\n\tresults: SingleResult[],\n\tchainDir: string,\n\tstatus: \"completed\" | \"failed\",\n\tfailedStep?: { index: number; error: string },\n): string {\n\tconst stepNames = steps\n\t\t.map((step) => (isParallelStep(step) ? `parallel[${step.parallel.length}]` : isDynamicParallelStep(step) ? `expand:${step.parallel.agent}` : step.agent))\n\t\t.join(\" → \");\n\n\tconst totalDuration = results.reduce((sum, r) => sum + (r.progress?.durationMs || 0), 0);\n\tconst durationStr = formatDuration(totalDuration);\n\n\tconst progressPath = path.join(chainDir, \"progress.md\");\n\tconst hasProgress = fs.existsSync(progressPath);\n\tconst allSkills = new Set<string>();\n\tfor (const r of results) {\n\t\tif (r.skills) r.skills.forEach((s) => allSkills.add(s));\n\t}\n\tconst skillsLine = allSkills.size > 0 ? `🔧 Skills: ${[...allSkills].join(\", \")}` : \"\";\n\n\tif (status === \"completed\") {\n\t\tconst stepWord = results.length === 1 ? \"step\" : \"steps\";\n\t\treturn `✅ Chain completed: ${stepNames} (${results.length} ${stepWord}, ${durationStr})${skillsLine ? `\\n${skillsLine}` : \"\"}\n\n📋 Progress: ${hasProgress ? progressPath : \"(none)\"}\n📁 Artifacts: ${chainDir}`;\n\t} else {\n\t\tconst stepInfo = failedStep ? ` at step ${failedStep.index + 1}` : \"\";\n\t\tconst errorInfo = failedStep?.error ? `: ${failedStep.error}` : \"\";\n\t\treturn `❌ Chain failed${stepInfo}${errorInfo}${skillsLine ? `\\n${skillsLine}` : \"\"}\n\n📋 Progress: ${hasProgress ? progressPath : \"(none)\"}\n📁 Artifacts: ${chainDir}`;\n\t}\n}\n\n/**\n * Format a tool call for display\n */\nexport function formatToolCall(name: string, args: Record<string, unknown>, expanded = false): string {\n\tswitch (name) {\n\t\tcase \"bash\": {\n\t\t\tconst command = typeof args.command === \"string\" ? args.command : \"\";\n\t\t\tconst maxLength = expanded ? 240 : 60;\n\t\t\treturn `$ ${command.slice(0, maxLength)}${command.length > maxLength ? \"...\" : \"\"}`;\n\t\t}\n\t\tcase \"read\":\n\t\tcase \"write\":\n\t\tcase \"edit\": {\n\t\t\tconst target = typeof args.path === \"string\"\n\t\t\t\t? args.path\n\t\t\t\t: typeof args.file_path === \"string\"\n\t\t\t\t\t? args.file_path\n\t\t\t\t\t: \"\";\n\t\t\treturn `${name} ${shortenPath(target)}`;\n\t\t}\n\t\tdefault: {\n\t\t\tconst s = JSON.stringify(args);\n\t\t\tconst maxLength = expanded ? 160 : 40;\n\t\t\treturn `${name} ${s.slice(0, maxLength)}${s.length > maxLength ? \"...\" : \"\"}`;\n\t\t}\n\t}\n}\n\n/**\n * Shorten a path by replacing home directory with ~\n */\nexport function shortenPath(p: string): string {\n\tconst home = process.env.HOME;\n\tif (home && p.startsWith(home)) {\n\t\treturn `~${p.slice(home.length)}`;\n\t}\n\treturn p;\n}\n"]}
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/formatters.ts"],"names":[],"mappings":"AACA;;GAEG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI/C;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AASD,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ7E;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAKlH;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAU5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,EAAE,YAAY,EAAE,EACvB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,GAAG,QAAQ,EAC9B,UAAU,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3C,MAAM,CA8BR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,UAAQ,GAAG,MAAM,CAuBpG;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM7C","sourcesContent":["// @ts-nocheck\n/**\n * Formatting utilities for display output\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { ModelSelection, Usage, SingleResult } from \"./types.ts\";\nimport type { ChainStep } from \"./settings.ts\";\nimport { isDynamicParallelStep, isParallelStep } from \"./settings.ts\";\nimport { splitKnownThinkingSuffix, THINKING_LEVELS } from \"./model-info.ts\";\n\n/**\n * Format token count with k suffix for large numbers\n */\nexport function formatTokens(n: number): string {\n\treturn n < 1000 ? String(n) : n < 10000 ? `${(n / 1000).toFixed(1)}k` : `${Math.round(n / 1000)}k`;\n}\n\nfunction formatThinkingLabel(model?: string, thinking?: string): string | undefined {\n\tconst parsed = model ? splitKnownThinkingSuffix(model) : undefined;\n\tconst explicitThinking = THINKING_LEVELS.find((level) => level === thinking?.trim());\n\tconst displayThinking = parsed?.thinkingSuffix ? parsed.thinkingSuffix.slice(1) : explicitThinking;\n\treturn displayThinking ? `thinking ${displayThinking}` : undefined;\n}\n\nexport function formatModelThinking(model?: string, thinking?: string): string {\n\tconst parsed = model ? splitKnownThinkingSuffix(model) : undefined;\n\tlet displayModel = parsed?.baseModel ?? model;\n\tif (displayModel) {\n\t\tconst slashIdx = displayModel.lastIndexOf(\"/\");\n\t\tif (slashIdx !== -1) displayModel = displayModel.slice(slashIdx + 1);\n\t}\n\treturn [displayModel, formatThinkingLabel(model, thinking)].filter(Boolean).join(\" · \");\n}\n\n/** Compact/header badge: selected tier name plus its effective thinking level. */\nexport function formatModelSelection(selection?: ModelSelection, resolvedModel?: string, thinking?: string): string {\n\tif (selection?.kind === \"tier\" && selection.tier) {\n\t\treturn [selection.tier, formatThinkingLabel(resolvedModel, thinking)].filter(Boolean).join(\" · \");\n\t}\n\treturn formatModelThinking(resolvedModel, thinking);\n}\n\n/**\n * Format usage statistics into a compact string\n */\nexport function formatUsage(u: Usage, model?: string): string {\n\tconst parts: string[] = [];\n\tif (u.turns) parts.push(`${u.turns} turn${u.turns > 1 ? \"s\" : \"\"}`);\n\tif (u.input) parts.push(`in:${formatTokens(u.input)}`);\n\tif (u.output) parts.push(`out:${formatTokens(u.output)}`);\n\tif (u.cacheRead) parts.push(`R${formatTokens(u.cacheRead)}`);\n\tif (u.cacheWrite) parts.push(`W${formatTokens(u.cacheWrite)}`);\n\tif (u.cost) parts.push(`$${u.cost.toFixed(4)}`);\n\tif (model) parts.push(model);\n\treturn parts.join(\" \");\n}\n\n/**\n * Format duration in human-readable form\n */\nexport function formatDuration(ms: number): string {\n\tif (ms < 1000) return `${ms}ms`;\n\tif (ms < 60000) return `${Math.floor(ms / 1000)}s`;\n\treturn `${Math.floor(ms / 60000)}m${Math.floor((ms % 60000) / 1000)}s`;\n}\n\n/**\n * Build a summary string for a completed/failed chain\n */\nexport function buildChainSummary(\n\tsteps: ChainStep[],\n\tresults: SingleResult[],\n\tchainDir: string,\n\tstatus: \"completed\" | \"failed\",\n\tfailedStep?: { index: number; error: string },\n): string {\n\tconst stepNames = steps\n\t\t.map((step) => (isParallelStep(step) ? `parallel[${step.parallel.length}]` : isDynamicParallelStep(step) ? `expand:${step.parallel.agent}` : step.agent))\n\t\t.join(\" → \");\n\n\tconst totalDuration = results.reduce((sum, r) => sum + (r.progress?.durationMs || 0), 0);\n\tconst durationStr = formatDuration(totalDuration);\n\n\tconst progressPath = path.join(chainDir, \"progress.md\");\n\tconst hasProgress = fs.existsSync(progressPath);\n\tconst allSkills = new Set<string>();\n\tfor (const r of results) {\n\t\tif (r.skills) r.skills.forEach((s) => allSkills.add(s));\n\t}\n\tconst skillsLine = allSkills.size > 0 ? `🔧 Skills: ${[...allSkills].join(\", \")}` : \"\";\n\n\tif (status === \"completed\") {\n\t\tconst stepWord = results.length === 1 ? \"step\" : \"steps\";\n\t\treturn `✅ Chain completed: ${stepNames} (${results.length} ${stepWord}, ${durationStr})${skillsLine ? `\\n${skillsLine}` : \"\"}\n\n📋 Progress: ${hasProgress ? progressPath : \"(none)\"}\n📁 Artifacts: ${chainDir}`;\n\t} else {\n\t\tconst stepInfo = failedStep ? ` at step ${failedStep.index + 1}` : \"\";\n\t\tconst errorInfo = failedStep?.error ? `: ${failedStep.error}` : \"\";\n\t\treturn `❌ Chain failed${stepInfo}${errorInfo}${skillsLine ? `\\n${skillsLine}` : \"\"}\n\n📋 Progress: ${hasProgress ? progressPath : \"(none)\"}\n📁 Artifacts: ${chainDir}`;\n\t}\n}\n\n/**\n * Format a tool call for display\n */\nexport function formatToolCall(name: string, args: Record<string, unknown>, expanded = false): string {\n\tswitch (name) {\n\t\tcase \"bash\": {\n\t\t\tconst command = typeof args.command === \"string\" ? args.command : \"\";\n\t\t\tconst maxLength = expanded ? 240 : 60;\n\t\t\treturn `$ ${command.slice(0, maxLength)}${command.length > maxLength ? \"...\" : \"\"}`;\n\t\t}\n\t\tcase \"read\":\n\t\tcase \"write\":\n\t\tcase \"edit\": {\n\t\t\tconst target = typeof args.path === \"string\"\n\t\t\t\t? args.path\n\t\t\t\t: typeof args.file_path === \"string\"\n\t\t\t\t\t? args.file_path\n\t\t\t\t\t: \"\";\n\t\t\treturn `${name} ${shortenPath(target)}`;\n\t\t}\n\t\tdefault: {\n\t\t\tconst s = JSON.stringify(args);\n\t\t\tconst maxLength = expanded ? 160 : 40;\n\t\t\treturn `${name} ${s.slice(0, maxLength)}${s.length > maxLength ? \"...\" : \"\"}`;\n\t\t}\n\t}\n}\n\n/**\n * Shorten a path by replacing home directory with ~\n */\nexport function shortenPath(p: string): string {\n\tconst home = process.env.HOME;\n\tif (home && p.startsWith(home)) {\n\t\treturn `~${p.slice(home.length)}`;\n\t}\n\treturn p;\n}\n"]}
@@ -12,17 +12,28 @@ import { splitKnownThinkingSuffix, THINKING_LEVELS } from "./model-info.js";
12
12
  export function formatTokens(n) {
13
13
  return n < 1000 ? String(n) : n < 10000 ? `${(n / 1000).toFixed(1)}k` : `${Math.round(n / 1000)}k`;
14
14
  }
15
- export function formatModelThinking(model, thinking) {
15
+ function formatThinkingLabel(model, thinking) {
16
16
  const parsed = model ? splitKnownThinkingSuffix(model) : undefined;
17
- let displayModel = parsed?.baseModel ?? model;
18
17
  const explicitThinking = THINKING_LEVELS.find((level) => level === thinking?.trim());
19
18
  const displayThinking = parsed?.thinkingSuffix ? parsed.thinkingSuffix.slice(1) : explicitThinking;
19
+ return displayThinking ? `thinking ${displayThinking}` : undefined;
20
+ }
21
+ export function formatModelThinking(model, thinking) {
22
+ const parsed = model ? splitKnownThinkingSuffix(model) : undefined;
23
+ let displayModel = parsed?.baseModel ?? model;
20
24
  if (displayModel) {
21
25
  const slashIdx = displayModel.lastIndexOf("/");
22
26
  if (slashIdx !== -1)
23
27
  displayModel = displayModel.slice(slashIdx + 1);
24
28
  }
25
- return [displayModel, displayThinking ? `thinking ${displayThinking}` : undefined].filter(Boolean).join(" · ");
29
+ return [displayModel, formatThinkingLabel(model, thinking)].filter(Boolean).join(" · ");
30
+ }
31
+ /** Compact/header badge: selected tier name plus its effective thinking level. */
32
+ export function formatModelSelection(selection, resolvedModel, thinking) {
33
+ if (selection?.kind === "tier" && selection.tier) {
34
+ return [selection.tier, formatThinkingLabel(resolvedModel, thinking)].filter(Boolean).join(" · ");
35
+ }
36
+ return formatModelThinking(resolvedModel, thinking);
26
37
  }
27
38
  /**
28
39
  * Format usage statistics into a compact string
@@ -52,7 +63,7 @@ export function formatDuration(ms) {
52
63
  if (ms < 1000)
53
64
  return `${ms}ms`;
54
65
  if (ms < 60000)
55
- return `${(ms / 1000).toFixed(1)}s`;
66
+ return `${Math.floor(ms / 1000)}s`;
56
67
  return `${Math.floor(ms / 60000)}m${Math.floor((ms % 60000) / 1000)}s`;
57
68
  }
58
69
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/formatters.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Formatting utilities for display output\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { Usage, SingleResult } from \"./types.ts\";\nimport type { ChainStep } from \"./settings.ts\";\nimport { isDynamicParallelStep, isParallelStep } from \"./settings.ts\";\nimport { splitKnownThinkingSuffix, THINKING_LEVELS } from \"./model-info.ts\";\n\n/**\n * Format token count with k suffix for large numbers\n */\nexport function formatTokens(n: number): string {\n\treturn n < 1000 ? String(n) : n < 10000 ? `${(n / 1000).toFixed(1)}k` : `${Math.round(n / 1000)}k`;\n}\n\nexport function formatModelThinking(model?: string, thinking?: string): string {\n\tconst parsed = model ? splitKnownThinkingSuffix(model) : undefined;\n\tlet displayModel = parsed?.baseModel ?? model;\n\tconst explicitThinking = THINKING_LEVELS.find((level) => level === thinking?.trim());\n\tconst displayThinking = parsed?.thinkingSuffix ? parsed.thinkingSuffix.slice(1) : explicitThinking;\n\tif (displayModel) {\n\t\tconst slashIdx = displayModel.lastIndexOf(\"/\");\n\t\tif (slashIdx !== -1) displayModel = displayModel.slice(slashIdx + 1);\n\t}\n\treturn [displayModel, displayThinking ? `thinking ${displayThinking}` : undefined].filter(Boolean).join(\" · \");\n}\n\n/**\n * Format usage statistics into a compact string\n */\nexport function formatUsage(u: Usage, model?: string): string {\n\tconst parts: string[] = [];\n\tif (u.turns) parts.push(`${u.turns} turn${u.turns > 1 ? \"s\" : \"\"}`);\n\tif (u.input) parts.push(`in:${formatTokens(u.input)}`);\n\tif (u.output) parts.push(`out:${formatTokens(u.output)}`);\n\tif (u.cacheRead) parts.push(`R${formatTokens(u.cacheRead)}`);\n\tif (u.cacheWrite) parts.push(`W${formatTokens(u.cacheWrite)}`);\n\tif (u.cost) parts.push(`$${u.cost.toFixed(4)}`);\n\tif (model) parts.push(model);\n\treturn parts.join(\" \");\n}\n\n/**\n * Format duration in human-readable form\n */\nexport function formatDuration(ms: number): string {\n\tif (ms < 1000) return `${ms}ms`;\n\tif (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n\treturn `${Math.floor(ms / 60000)}m${Math.floor((ms % 60000) / 1000)}s`;\n}\n\n/**\n * Build a summary string for a completed/failed chain\n */\nexport function buildChainSummary(\n\tsteps: ChainStep[],\n\tresults: SingleResult[],\n\tchainDir: string,\n\tstatus: \"completed\" | \"failed\",\n\tfailedStep?: { index: number; error: string },\n): string {\n\tconst stepNames = steps\n\t\t.map((step) => (isParallelStep(step) ? `parallel[${step.parallel.length}]` : isDynamicParallelStep(step) ? `expand:${step.parallel.agent}` : step.agent))\n\t\t.join(\" → \");\n\n\tconst totalDuration = results.reduce((sum, r) => sum + (r.progress?.durationMs || 0), 0);\n\tconst durationStr = formatDuration(totalDuration);\n\n\tconst progressPath = path.join(chainDir, \"progress.md\");\n\tconst hasProgress = fs.existsSync(progressPath);\n\tconst allSkills = new Set<string>();\n\tfor (const r of results) {\n\t\tif (r.skills) r.skills.forEach((s) => allSkills.add(s));\n\t}\n\tconst skillsLine = allSkills.size > 0 ? `🔧 Skills: ${[...allSkills].join(\", \")}` : \"\";\n\n\tif (status === \"completed\") {\n\t\tconst stepWord = results.length === 1 ? \"step\" : \"steps\";\n\t\treturn `✅ Chain completed: ${stepNames} (${results.length} ${stepWord}, ${durationStr})${skillsLine ? `\\n${skillsLine}` : \"\"}\n\n📋 Progress: ${hasProgress ? progressPath : \"(none)\"}\n📁 Artifacts: ${chainDir}`;\n\t} else {\n\t\tconst stepInfo = failedStep ? ` at step ${failedStep.index + 1}` : \"\";\n\t\tconst errorInfo = failedStep?.error ? `: ${failedStep.error}` : \"\";\n\t\treturn `❌ Chain failed${stepInfo}${errorInfo}${skillsLine ? `\\n${skillsLine}` : \"\"}\n\n📋 Progress: ${hasProgress ? progressPath : \"(none)\"}\n📁 Artifacts: ${chainDir}`;\n\t}\n}\n\n/**\n * Format a tool call for display\n */\nexport function formatToolCall(name: string, args: Record<string, unknown>, expanded = false): string {\n\tswitch (name) {\n\t\tcase \"bash\": {\n\t\t\tconst command = typeof args.command === \"string\" ? args.command : \"\";\n\t\t\tconst maxLength = expanded ? 240 : 60;\n\t\t\treturn `$ ${command.slice(0, maxLength)}${command.length > maxLength ? \"...\" : \"\"}`;\n\t\t}\n\t\tcase \"read\":\n\t\tcase \"write\":\n\t\tcase \"edit\": {\n\t\t\tconst target = typeof args.path === \"string\"\n\t\t\t\t? args.path\n\t\t\t\t: typeof args.file_path === \"string\"\n\t\t\t\t\t? args.file_path\n\t\t\t\t\t: \"\";\n\t\t\treturn `${name} ${shortenPath(target)}`;\n\t\t}\n\t\tdefault: {\n\t\t\tconst s = JSON.stringify(args);\n\t\t\tconst maxLength = expanded ? 160 : 40;\n\t\t\treturn `${name} ${s.slice(0, maxLength)}${s.length > maxLength ? \"...\" : \"\"}`;\n\t\t}\n\t}\n}\n\n/**\n * Shorten a path by replacing home directory with ~\n */\nexport function shortenPath(p: string): string {\n\tconst home = process.env.HOME;\n\tif (home && p.startsWith(home)) {\n\t\treturn `~${p.slice(home.length)}`;\n\t}\n\treturn p;\n}\n"]}
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/formatters.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Formatting utilities for display output\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { ModelSelection, Usage, SingleResult } from \"./types.ts\";\nimport type { ChainStep } from \"./settings.ts\";\nimport { isDynamicParallelStep, isParallelStep } from \"./settings.ts\";\nimport { splitKnownThinkingSuffix, THINKING_LEVELS } from \"./model-info.ts\";\n\n/**\n * Format token count with k suffix for large numbers\n */\nexport function formatTokens(n: number): string {\n\treturn n < 1000 ? String(n) : n < 10000 ? `${(n / 1000).toFixed(1)}k` : `${Math.round(n / 1000)}k`;\n}\n\nfunction formatThinkingLabel(model?: string, thinking?: string): string | undefined {\n\tconst parsed = model ? splitKnownThinkingSuffix(model) : undefined;\n\tconst explicitThinking = THINKING_LEVELS.find((level) => level === thinking?.trim());\n\tconst displayThinking = parsed?.thinkingSuffix ? parsed.thinkingSuffix.slice(1) : explicitThinking;\n\treturn displayThinking ? `thinking ${displayThinking}` : undefined;\n}\n\nexport function formatModelThinking(model?: string, thinking?: string): string {\n\tconst parsed = model ? splitKnownThinkingSuffix(model) : undefined;\n\tlet displayModel = parsed?.baseModel ?? model;\n\tif (displayModel) {\n\t\tconst slashIdx = displayModel.lastIndexOf(\"/\");\n\t\tif (slashIdx !== -1) displayModel = displayModel.slice(slashIdx + 1);\n\t}\n\treturn [displayModel, formatThinkingLabel(model, thinking)].filter(Boolean).join(\" · \");\n}\n\n/** Compact/header badge: selected tier name plus its effective thinking level. */\nexport function formatModelSelection(selection?: ModelSelection, resolvedModel?: string, thinking?: string): string {\n\tif (selection?.kind === \"tier\" && selection.tier) {\n\t\treturn [selection.tier, formatThinkingLabel(resolvedModel, thinking)].filter(Boolean).join(\" · \");\n\t}\n\treturn formatModelThinking(resolvedModel, thinking);\n}\n\n/**\n * Format usage statistics into a compact string\n */\nexport function formatUsage(u: Usage, model?: string): string {\n\tconst parts: string[] = [];\n\tif (u.turns) parts.push(`${u.turns} turn${u.turns > 1 ? \"s\" : \"\"}`);\n\tif (u.input) parts.push(`in:${formatTokens(u.input)}`);\n\tif (u.output) parts.push(`out:${formatTokens(u.output)}`);\n\tif (u.cacheRead) parts.push(`R${formatTokens(u.cacheRead)}`);\n\tif (u.cacheWrite) parts.push(`W${formatTokens(u.cacheWrite)}`);\n\tif (u.cost) parts.push(`$${u.cost.toFixed(4)}`);\n\tif (model) parts.push(model);\n\treturn parts.join(\" \");\n}\n\n/**\n * Format duration in human-readable form\n */\nexport function formatDuration(ms: number): string {\n\tif (ms < 1000) return `${ms}ms`;\n\tif (ms < 60000) return `${Math.floor(ms / 1000)}s`;\n\treturn `${Math.floor(ms / 60000)}m${Math.floor((ms % 60000) / 1000)}s`;\n}\n\n/**\n * Build a summary string for a completed/failed chain\n */\nexport function buildChainSummary(\n\tsteps: ChainStep[],\n\tresults: SingleResult[],\n\tchainDir: string,\n\tstatus: \"completed\" | \"failed\",\n\tfailedStep?: { index: number; error: string },\n): string {\n\tconst stepNames = steps\n\t\t.map((step) => (isParallelStep(step) ? `parallel[${step.parallel.length}]` : isDynamicParallelStep(step) ? `expand:${step.parallel.agent}` : step.agent))\n\t\t.join(\" → \");\n\n\tconst totalDuration = results.reduce((sum, r) => sum + (r.progress?.durationMs || 0), 0);\n\tconst durationStr = formatDuration(totalDuration);\n\n\tconst progressPath = path.join(chainDir, \"progress.md\");\n\tconst hasProgress = fs.existsSync(progressPath);\n\tconst allSkills = new Set<string>();\n\tfor (const r of results) {\n\t\tif (r.skills) r.skills.forEach((s) => allSkills.add(s));\n\t}\n\tconst skillsLine = allSkills.size > 0 ? `🔧 Skills: ${[...allSkills].join(\", \")}` : \"\";\n\n\tif (status === \"completed\") {\n\t\tconst stepWord = results.length === 1 ? \"step\" : \"steps\";\n\t\treturn `✅ Chain completed: ${stepNames} (${results.length} ${stepWord}, ${durationStr})${skillsLine ? `\\n${skillsLine}` : \"\"}\n\n📋 Progress: ${hasProgress ? progressPath : \"(none)\"}\n📁 Artifacts: ${chainDir}`;\n\t} else {\n\t\tconst stepInfo = failedStep ? ` at step ${failedStep.index + 1}` : \"\";\n\t\tconst errorInfo = failedStep?.error ? `: ${failedStep.error}` : \"\";\n\t\treturn `❌ Chain failed${stepInfo}${errorInfo}${skillsLine ? `\\n${skillsLine}` : \"\"}\n\n📋 Progress: ${hasProgress ? progressPath : \"(none)\"}\n📁 Artifacts: ${chainDir}`;\n\t}\n}\n\n/**\n * Format a tool call for display\n */\nexport function formatToolCall(name: string, args: Record<string, unknown>, expanded = false): string {\n\tswitch (name) {\n\t\tcase \"bash\": {\n\t\t\tconst command = typeof args.command === \"string\" ? args.command : \"\";\n\t\t\tconst maxLength = expanded ? 240 : 60;\n\t\t\treturn `$ ${command.slice(0, maxLength)}${command.length > maxLength ? \"...\" : \"\"}`;\n\t\t}\n\t\tcase \"read\":\n\t\tcase \"write\":\n\t\tcase \"edit\": {\n\t\t\tconst target = typeof args.path === \"string\"\n\t\t\t\t? args.path\n\t\t\t\t: typeof args.file_path === \"string\"\n\t\t\t\t\t? args.file_path\n\t\t\t\t\t: \"\";\n\t\t\treturn `${name} ${shortenPath(target)}`;\n\t\t}\n\t\tdefault: {\n\t\t\tconst s = JSON.stringify(args);\n\t\t\tconst maxLength = expanded ? 160 : 40;\n\t\t\treturn `${name} ${s.slice(0, maxLength)}${s.length > maxLength ? \"...\" : \"\"}`;\n\t\t}\n\t}\n}\n\n/**\n * Shorten a path by replacing home directory with ~\n */\nexport function shortenPath(p: string): string {\n\tconst home = process.env.HOME;\n\tif (home && p.startsWith(home)) {\n\t\treturn `~${p.slice(home.length)}`;\n\t}\n\treturn p;\n}\n"]}
@@ -12,6 +12,11 @@ export interface MaxOutputConfig {
12
12
  export type OutputMode = "inline" | "file-only";
13
13
  export type ChildPermission = "full" | "read-only";
14
14
  export type ChildTier = "light" | "standard" | "heavy";
15
+ /** How the child model was chosen. Captured from requested params before resolution. */
16
+ export type ModelSelection = {
17
+ kind: "tier";
18
+ tier: ChildTier;
19
+ };
15
20
  export interface ChildSpec {
16
21
  childId: string;
17
22
  task: string;
@@ -19,7 +24,8 @@ export interface ChildSpec {
19
24
  requestedPermissions: ChildPermission;
20
25
  effectivePermissions: ChildPermission;
21
26
  model?: string;
22
- tier?: ChildTier;
27
+ tier: ChildTier;
28
+ modelSelection?: ModelSelection;
23
29
  skill?: string | string[] | false;
24
30
  cwd?: string;
25
31
  output?: string | false;
@@ -234,7 +240,7 @@ export interface ControlEvent {
234
240
  }
235
241
  export type SubagentResultStatus = "completed" | "failed" | "paused" | "stopped" | "detached";
236
242
  export type SubagentRunMode = "single" | "parallel" | "chain";
237
- export declare const SUBAGENT_LIFECYCLE_ARTIFACT_VERSION = 3;
243
+ export declare const SUBAGENT_LIFECYCLE_ARTIFACT_VERSION = 4;
238
244
  export type SubagentLifecycleArtifactVersion = typeof SUBAGENT_LIFECYCLE_ARTIFACT_VERSION;
239
245
  export declare const UNSUPPORTED_SUBAGENT_LIFECYCLE_MESSAGE = "This subagent run uses an unsupported lifecycle format. Named agent types cannot be resumed. Launch a new prompt-driven child instead.";
240
246
  export declare function isSupportedSubagentLifecycleVersion(version: unknown): boolean;
@@ -294,7 +300,7 @@ export interface SteeringNotice {
294
300
  currentSessionId?: string;
295
301
  }
296
302
  export interface SteeringRecoveryDescriptor {
297
- version: 3;
303
+ version: 4;
298
304
  lifecycleArtifactVersion?: SubagentLifecycleArtifactVersion;
299
305
  sourceRunId: string;
300
306
  childId: string;
@@ -304,7 +310,9 @@ export interface SteeringRecoveryDescriptor {
304
310
  sessionFile?: string;
305
311
  cwd: string;
306
312
  model?: string;
313
+ tier: ChildTier;
307
314
  thinking?: string;
315
+ modelSelection?: ModelSelection;
308
316
  skills?: string[];
309
317
  outputPath?: string;
310
318
  outputMode: "inline" | "file-only";
@@ -385,6 +393,7 @@ export interface AgentProgress {
385
393
  currentPath?: string;
386
394
  model?: string;
387
395
  thinking?: string;
396
+ modelSelection?: ModelSelection;
388
397
  thinkingText?: string;
389
398
  recentTools: Array<{
390
399
  tool: string;
@@ -558,6 +567,7 @@ export interface SingleResult {
558
567
  usage: Usage;
559
568
  model?: string;
560
569
  thinking?: string;
570
+ modelSelection?: ModelSelection;
561
571
  attemptedModels?: string[];
562
572
  modelAttempts?: ModelAttempt[];
563
573
  controlEvents?: ControlEvent[];
@@ -835,6 +845,7 @@ export interface AsyncStatus {
835
845
  skills?: string[];
836
846
  model?: string;
837
847
  thinking?: string;
848
+ modelSelection?: ModelSelection;
838
849
  attemptedModels?: string[];
839
850
  modelAttempts?: ModelAttempt[];
840
851
  totalCost?: CostSummary;