@compilr-dev/cli 0.5.0 → 0.5.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 (591) hide show
  1. package/README.md +236 -68
  2. package/dist/.tsbuildinfo.app +1 -0
  3. package/dist/.tsbuildinfo.data +1 -0
  4. package/dist/.tsbuildinfo.domain +1 -0
  5. package/dist/.tsbuildinfo.foundation +1 -0
  6. package/dist/agent.d.ts +61 -4
  7. package/dist/agent.js +241 -245
  8. package/dist/anchors/index.d.ts +1 -1
  9. package/dist/anchors/index.js +1 -1
  10. package/dist/anchors/project-anchors.d.ts +2 -2
  11. package/dist/anchors/project-anchors.js +1 -1
  12. package/dist/auth/api-client.d.ts +124 -0
  13. package/dist/auth/api-client.js +261 -0
  14. package/dist/auth/index.d.ts +172 -0
  15. package/dist/auth/index.js +545 -0
  16. package/dist/auth/storage.d.ts +52 -0
  17. package/dist/auth/storage.js +118 -0
  18. package/dist/changelog/index.d.ts +16 -0
  19. package/dist/changelog/index.js +24 -0
  20. package/dist/changelog/releases.d.ts +17 -0
  21. package/dist/changelog/releases.js +63 -0
  22. package/dist/commands-v2/handlers/auth.d.ts +10 -0
  23. package/dist/commands-v2/handlers/auth.js +118 -0
  24. package/dist/commands-v2/handlers/background.d.ts +14 -0
  25. package/dist/commands-v2/handlers/background.js +276 -0
  26. package/dist/commands-v2/handlers/context.js +266 -81
  27. package/dist/commands-v2/handlers/core.d.ts +1 -0
  28. package/dist/commands-v2/handlers/core.js +133 -8
  29. package/dist/commands-v2/handlers/debug.js +18 -0
  30. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  31. package/dist/commands-v2/handlers/delegations.js +29 -0
  32. package/dist/commands-v2/handlers/files.d.ts +8 -0
  33. package/dist/commands-v2/handlers/files.js +162 -0
  34. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  35. package/dist/commands-v2/handlers/filter.js +130 -0
  36. package/dist/commands-v2/handlers/games.d.ts +7 -0
  37. package/dist/commands-v2/handlers/games.js +57 -0
  38. package/dist/commands-v2/handlers/index.d.ts +13 -0
  39. package/dist/commands-v2/handlers/index.js +39 -0
  40. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  41. package/dist/commands-v2/handlers/mcp.js +39 -0
  42. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  43. package/dist/commands-v2/handlers/notifications.js +34 -0
  44. package/dist/commands-v2/handlers/project.js +244 -23
  45. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  46. package/dist/commands-v2/handlers/reset.js +118 -0
  47. package/dist/commands-v2/handlers/session.d.ts +161 -0
  48. package/dist/commands-v2/handlers/session.js +805 -0
  49. package/dist/commands-v2/handlers/settings.d.ts +2 -0
  50. package/dist/commands-v2/handlers/settings.js +217 -35
  51. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  52. package/dist/commands-v2/handlers/tasks.js +36 -0
  53. package/dist/commands-v2/handlers/team.d.ts +9 -0
  54. package/dist/commands-v2/handlers/team.js +549 -0
  55. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  56. package/dist/commands-v2/handlers/terminals.js +34 -0
  57. package/dist/commands-v2/index.d.ts +3 -2
  58. package/dist/commands-v2/index.js +4 -1
  59. package/dist/commands-v2/registry.d.ts +15 -0
  60. package/dist/commands-v2/registry.js +34 -0
  61. package/dist/commands-v2/types.d.ts +81 -3
  62. package/dist/commands.js +13 -0
  63. package/dist/compilr-diff-companion.vsix +0 -0
  64. package/dist/db/index.js +98 -4
  65. package/dist/db/repositories/document-repository.d.ts +2 -0
  66. package/dist/db/repositories/document-repository.js +5 -1
  67. package/dist/db/repositories/index.d.ts +2 -0
  68. package/dist/db/repositories/index.js +1 -0
  69. package/dist/db/repositories/plan-repository.d.ts +101 -0
  70. package/dist/db/repositories/plan-repository.js +275 -0
  71. package/dist/db/repositories/project-repository.d.ts +6 -0
  72. package/dist/db/repositories/project-repository.js +41 -0
  73. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  74. package/dist/db/repositories/work-item-repository.js +69 -4
  75. package/dist/db/schema.d.ts +40 -3
  76. package/dist/db/schema.js +66 -3
  77. package/dist/episodes/index.d.ts +20 -0
  78. package/dist/episodes/index.js +27 -0
  79. package/dist/episodes/recorder.d.ts +51 -0
  80. package/dist/episodes/recorder.js +195 -0
  81. package/dist/episodes/significant-work.d.ts +21 -0
  82. package/dist/episodes/significant-work.js +56 -0
  83. package/dist/episodes/store.d.ts +38 -0
  84. package/dist/episodes/store.js +199 -0
  85. package/dist/episodes/types.d.ts +35 -0
  86. package/dist/episodes/types.js +6 -0
  87. package/dist/episodes/work-at-risk.d.ts +12 -0
  88. package/dist/episodes/work-at-risk.js +38 -0
  89. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  90. package/dist/episodes/work-summary-anchor.js +73 -0
  91. package/dist/games/coins.d.ts +66 -0
  92. package/dist/games/coins.js +165 -0
  93. package/dist/games/game-base.d.ts +84 -0
  94. package/dist/games/game-base.js +204 -0
  95. package/dist/games/index.d.ts +16 -0
  96. package/dist/games/index.js +49 -0
  97. package/dist/games/scores.d.ts +69 -0
  98. package/dist/games/scores.js +191 -0
  99. package/dist/games/tetris/board.d.ts +59 -0
  100. package/dist/games/tetris/board.js +170 -0
  101. package/dist/games/tetris/index.d.ts +109 -0
  102. package/dist/games/tetris/index.js +610 -0
  103. package/dist/games/tetris/pieces.d.ts +44 -0
  104. package/dist/games/tetris/pieces.js +271 -0
  105. package/dist/games/tetris/renderer.d.ts +26 -0
  106. package/dist/games/tetris/renderer.js +77 -0
  107. package/dist/guide/guide-content.d.ts +23 -0
  108. package/dist/guide/guide-content.js +196 -0
  109. package/dist/guide/index.d.ts +8 -0
  110. package/dist/guide/index.js +7 -0
  111. package/dist/guide/shared-content.d.ts +37 -0
  112. package/dist/guide/shared-content.js +1272 -0
  113. package/dist/guide/tutorial-helpers.d.ts +57 -0
  114. package/dist/guide/tutorial-helpers.js +147 -0
  115. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  116. package/dist/handlers/ask-user-handlers.js +104 -0
  117. package/dist/handlers/delegation-handlers.d.ts +34 -0
  118. package/dist/handlers/delegation-handlers.js +291 -0
  119. package/dist/handlers/permission-handler.d.ts +30 -0
  120. package/dist/handlers/permission-handler.js +205 -0
  121. package/dist/index.d.ts +11 -1
  122. package/dist/index.js +448 -271
  123. package/dist/input-handlers/memory-handler.d.ts +1 -1
  124. package/dist/input-handlers/memory-handler.js +2 -1
  125. package/dist/models/index.d.ts +10 -0
  126. package/dist/models/index.js +12 -0
  127. package/dist/models/model-registry.d.ts +38 -0
  128. package/dist/models/model-registry.js +69 -0
  129. package/dist/models/model-tiers.d.ts +28 -0
  130. package/dist/models/model-tiers.js +71 -0
  131. package/dist/models/model-validation.d.ts +25 -0
  132. package/dist/models/model-validation.js +291 -0
  133. package/dist/models/ollama-models.d.ts +73 -0
  134. package/dist/models/ollama-models.js +178 -0
  135. package/dist/models/provider-types.d.ts +6 -0
  136. package/dist/models/provider-types.js +1 -0
  137. package/dist/models/providers.d.ts +35 -0
  138. package/dist/models/providers.js +58 -0
  139. package/dist/models/types.d.ts +4 -0
  140. package/dist/models/types.js +4 -0
  141. package/dist/multi-agent/activity.d.ts +21 -0
  142. package/dist/multi-agent/activity.js +34 -0
  143. package/dist/multi-agent/agent-selection.d.ts +55 -0
  144. package/dist/multi-agent/agent-selection.js +90 -0
  145. package/dist/multi-agent/artifacts.d.ts +197 -0
  146. package/dist/multi-agent/artifacts.js +379 -0
  147. package/dist/multi-agent/checkpointer.d.ts +138 -0
  148. package/dist/multi-agent/checkpointer.js +471 -0
  149. package/dist/multi-agent/collision-utils.d.ts +16 -0
  150. package/dist/multi-agent/collision-utils.js +28 -0
  151. package/dist/multi-agent/context-resolver.d.ts +97 -0
  152. package/dist/multi-agent/context-resolver.js +316 -0
  153. package/dist/multi-agent/custom-agents.d.ts +83 -0
  154. package/dist/multi-agent/custom-agents.js +227 -0
  155. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  156. package/dist/multi-agent/delegation-tracker.js +243 -0
  157. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  158. package/dist/multi-agent/file-lock-hook.js +97 -0
  159. package/dist/multi-agent/file-locks.d.ts +58 -0
  160. package/dist/multi-agent/file-locks.js +194 -0
  161. package/dist/multi-agent/index.d.ts +24 -0
  162. package/dist/multi-agent/index.js +30 -0
  163. package/dist/multi-agent/mention-parser.d.ts +64 -0
  164. package/dist/multi-agent/mention-parser.js +146 -0
  165. package/dist/multi-agent/notification-manager.d.ts +84 -0
  166. package/dist/multi-agent/notification-manager.js +224 -0
  167. package/dist/multi-agent/pending-requests.d.ts +122 -0
  168. package/dist/multi-agent/pending-requests.js +155 -0
  169. package/dist/multi-agent/session-registry.d.ts +139 -0
  170. package/dist/multi-agent/session-registry.js +514 -0
  171. package/dist/multi-agent/shared-context.d.ts +293 -0
  172. package/dist/multi-agent/shared-context.js +671 -0
  173. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  174. package/dist/multi-agent/skill-requirements.js +178 -0
  175. package/dist/multi-agent/task-assignment.d.ts +69 -0
  176. package/dist/multi-agent/task-assignment.js +123 -0
  177. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  178. package/dist/multi-agent/task-suggestion.js +72 -0
  179. package/dist/multi-agent/team-agent.d.ts +201 -0
  180. package/dist/multi-agent/team-agent.js +488 -0
  181. package/dist/multi-agent/team.d.ts +286 -0
  182. package/dist/multi-agent/team.js +610 -0
  183. package/dist/multi-agent/tool-config.d.ts +110 -0
  184. package/dist/multi-agent/tool-config.js +661 -0
  185. package/dist/multi-agent/types.d.ts +211 -0
  186. package/dist/multi-agent/types.js +617 -0
  187. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  188. package/dist/prompts/plan-mode-prompt.js +95 -0
  189. package/dist/repl-helpers.js +3 -2
  190. package/dist/repl-v2.d.ts +401 -2
  191. package/dist/repl-v2.js +2577 -65
  192. package/dist/session/index.d.ts +6 -0
  193. package/dist/session/index.js +6 -0
  194. package/dist/session/project-session-manager.d.ts +158 -0
  195. package/dist/session/project-session-manager.js +650 -0
  196. package/dist/settings/index.d.ts +133 -13
  197. package/dist/settings/index.js +329 -24
  198. package/dist/settings/mcp-config.d.ts +76 -0
  199. package/dist/settings/mcp-config.js +143 -0
  200. package/dist/settings/paths.d.ts +4 -0
  201. package/dist/settings/paths.js +6 -0
  202. package/dist/shared-handlers.d.ts +62 -0
  203. package/dist/shared-handlers.js +48 -0
  204. package/dist/system-prompt/builder.d.ts +5 -0
  205. package/dist/system-prompt/builder.js +4 -0
  206. package/dist/system-prompt/index.d.ts +18 -0
  207. package/dist/system-prompt/index.js +18 -0
  208. package/dist/system-prompt/modules.d.ts +5 -0
  209. package/dist/system-prompt/modules.js +4 -0
  210. package/dist/tabbed-menu.js +2 -1
  211. package/dist/templates/compilr-md-import.d.ts +16 -0
  212. package/dist/templates/compilr-md-import.js +241 -0
  213. package/dist/templates/compilr-md.js +10 -61
  214. package/dist/templates/config-json.d.ts +1 -25
  215. package/dist/templates/index.d.ts +2 -0
  216. package/dist/templates/index.js +34 -73
  217. package/dist/tool-names.d.ts +108 -0
  218. package/dist/tool-names.js +227 -0
  219. package/dist/tools/anchor-tools.d.ts +4 -4
  220. package/dist/tools/anchor-tools.js +1 -1
  221. package/dist/tools/artifact-tools.d.ts +42 -0
  222. package/dist/tools/artifact-tools.js +328 -0
  223. package/dist/tools/ask-user-simple.d.ts +1 -1
  224. package/dist/tools/ask-user-simple.js +2 -1
  225. package/dist/tools/ask-user.d.ts +1 -1
  226. package/dist/tools/ask-user.js +2 -1
  227. package/dist/tools/backlog-wrappers.d.ts +5 -3
  228. package/dist/tools/backlog-wrappers.js +16 -1
  229. package/dist/tools/backlog.d.ts +2 -2
  230. package/dist/tools/backlog.js +1 -1
  231. package/dist/tools/db-tools.d.ts +8 -61
  232. package/dist/tools/db-tools.js +8 -13
  233. package/dist/tools/delegate-background.d.ts +27 -0
  234. package/dist/tools/delegate-background.js +115 -0
  235. package/dist/tools/delegate.d.ts +22 -0
  236. package/dist/tools/delegate.js +97 -0
  237. package/dist/tools/delegation-status.d.ts +16 -0
  238. package/dist/tools/delegation-status.js +128 -0
  239. package/dist/tools/document-db.d.ts +5 -5
  240. package/dist/tools/document-db.js +1 -1
  241. package/dist/tools/guide-tool.d.ts +12 -0
  242. package/dist/tools/guide-tool.js +59 -0
  243. package/dist/tools/handoff.d.ts +25 -0
  244. package/dist/tools/handoff.js +99 -0
  245. package/dist/tools/meta-tools.d.ts +26 -0
  246. package/dist/tools/meta-tools.js +47 -0
  247. package/dist/tools/plan-tools.d.ts +54 -0
  248. package/dist/tools/plan-tools.js +338 -0
  249. package/dist/tools/platform-adapter.d.ts +29 -0
  250. package/dist/tools/platform-adapter.js +394 -0
  251. package/dist/tools/project-db.d.ts +5 -73
  252. package/dist/tools/project-db.js +5 -336
  253. package/dist/tools/recall-work-tool.d.ts +18 -0
  254. package/dist/tools/recall-work-tool.js +82 -0
  255. package/dist/tools/workitem-db.d.ts +43 -11
  256. package/dist/tools/workitem-db.js +186 -5
  257. package/dist/tools.d.ts +67 -2
  258. package/dist/tools.js +237 -47
  259. package/dist/ui/autocomplete-controller.d.ts +42 -0
  260. package/dist/ui/autocomplete-controller.js +384 -0
  261. package/dist/ui/base/index.d.ts +1 -1
  262. package/dist/ui/base/index.js +1 -1
  263. package/dist/ui/base/overlay-base-v2.d.ts +10 -0
  264. package/dist/ui/base/overlay-base-v2.js +14 -0
  265. package/dist/ui/base/render-utils.d.ts +19 -0
  266. package/dist/ui/base/render-utils.js +25 -0
  267. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
  268. package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
  269. package/dist/ui/constants/labels.d.ts +14 -0
  270. package/dist/ui/constants/labels.js +51 -0
  271. package/dist/ui/conversation-store.d.ts +55 -0
  272. package/dist/ui/conversation-store.js +107 -0
  273. package/dist/ui/conversation.js +11 -13
  274. package/dist/ui/diff.d.ts +7 -1
  275. package/dist/ui/diff.js +85 -48
  276. package/dist/ui/ephemeral.js +3 -9
  277. package/dist/ui/file-autocomplete.d.ts +24 -0
  278. package/dist/ui/file-autocomplete.js +56 -0
  279. package/dist/ui/footer-renderer.d.ts +69 -0
  280. package/dist/ui/footer-renderer.js +431 -0
  281. package/dist/ui/footer.d.ts +74 -7
  282. package/dist/ui/footer.js +173 -16
  283. package/dist/ui/input-controller.d.ts +51 -0
  284. package/dist/ui/input-controller.js +176 -0
  285. package/dist/ui/input-prompt.d.ts +19 -0
  286. package/dist/ui/input-prompt.js +206 -14
  287. package/dist/ui/keyboard-handler.d.ts +57 -0
  288. package/dist/ui/keyboard-handler.js +557 -0
  289. package/dist/ui/live-region-facade.d.ts +42 -0
  290. package/dist/ui/live-region-facade.js +205 -0
  291. package/dist/ui/live-region.d.ts +0 -4
  292. package/dist/ui/live-region.js +6 -14
  293. package/dist/ui/mascot/renderer.d.ts +1 -1
  294. package/dist/ui/mascot/renderer.js +37 -2
  295. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  296. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  297. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  298. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  299. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  300. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  301. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  302. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  303. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  304. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  305. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  306. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  307. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  308. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  309. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  310. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  311. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  312. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  313. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  314. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  315. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  316. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  317. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  318. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  319. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  320. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  321. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  322. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  323. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  324. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  325. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  326. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  327. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  328. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  329. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  330. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  331. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  332. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  333. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  334. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  335. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  336. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  337. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  338. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  339. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  340. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  341. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  342. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  343. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  344. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  345. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  346. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  347. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  348. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  349. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  350. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  351. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  352. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  353. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  354. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  355. package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
  356. package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
  357. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  358. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  359. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  360. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  361. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
  362. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  363. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  364. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
  365. package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
  366. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  367. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  368. package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
  369. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
  370. package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
  371. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  372. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  373. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
  374. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
  375. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  376. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  377. package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
  378. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
  379. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
  380. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  381. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  382. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  383. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  384. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
  385. package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
  386. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  387. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  388. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  389. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  390. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
  391. package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
  392. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
  393. package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
  394. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  395. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  396. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  397. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  398. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  399. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  400. package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
  401. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  402. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  403. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  404. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  405. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  406. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  407. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
  408. package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
  409. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  410. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  411. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  412. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  413. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  414. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  415. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  416. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  417. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  418. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  419. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  420. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  421. package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
  422. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
  423. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
  424. package/dist/ui/overlay/impl/workflow-overlay-v2.js +5 -1
  425. package/dist/ui/overlay/index.d.ts +20 -1
  426. package/dist/ui/overlay/index.js +19 -0
  427. package/dist/ui/overlay/types.d.ts +5 -0
  428. package/dist/ui/overlay-manager.d.ts +43 -0
  429. package/dist/ui/overlay-manager.js +238 -0
  430. package/dist/ui/overlays.js +4 -16
  431. package/dist/ui/permission-overlay.js +6 -5
  432. package/dist/ui/status-bar-controller.d.ts +33 -0
  433. package/dist/ui/status-bar-controller.js +99 -0
  434. package/dist/ui/subagent-renderer.js +3 -19
  435. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  436. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  437. package/dist/ui/terminal-line-builders.d.ts +17 -0
  438. package/dist/ui/terminal-line-builders.js +42 -0
  439. package/dist/ui/terminal-render-item.d.ts +16 -0
  440. package/dist/ui/terminal-render-item.js +267 -0
  441. package/dist/ui/terminal-renderer.d.ts +7 -8
  442. package/dist/ui/terminal-renderer.js +7 -8
  443. package/dist/ui/terminal-types.d.ts +179 -0
  444. package/dist/ui/terminal-types.js +34 -0
  445. package/dist/ui/terminal-ui.d.ts +144 -276
  446. package/dist/ui/terminal-ui.js +384 -1861
  447. package/dist/ui/todo-zone.d.ts +19 -1
  448. package/dist/ui/todo-zone.js +71 -13
  449. package/dist/ui/tool-formatters.js +512 -1
  450. package/dist/ui/turn-metrics.d.ts +56 -0
  451. package/dist/ui/turn-metrics.js +75 -0
  452. package/dist/ui/types.d.ts +28 -0
  453. package/dist/ui/types.js +1 -0
  454. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  455. package/dist/ui/vscode-diff-ipc.js +385 -0
  456. package/dist/utils/credentials.d.ts +24 -5
  457. package/dist/utils/credentials.js +123 -9
  458. package/dist/utils/format-tokens.d.ts +13 -0
  459. package/dist/utils/format-tokens.js +18 -0
  460. package/dist/utils/git-config.d.ts +26 -0
  461. package/dist/utils/git-config.js +54 -0
  462. package/dist/utils/message-utils.d.ts +61 -0
  463. package/dist/utils/message-utils.js +72 -0
  464. package/dist/utils/model-tiers.d.ts +8 -1
  465. package/dist/utils/model-tiers.js +38 -16
  466. package/dist/utils/open-browser.d.ts +5 -0
  467. package/dist/utils/open-browser.js +32 -0
  468. package/dist/utils/path-safety.js +3 -2
  469. package/dist/utils/project-detection.d.ts +58 -0
  470. package/dist/utils/project-detection.js +424 -0
  471. package/dist/utils/project-memory.js +2 -1
  472. package/dist/utils/project-status.d.ts +2 -2
  473. package/dist/utils/startup-perf.d.ts +18 -0
  474. package/dist/utils/startup-perf.js +60 -0
  475. package/dist/utils/token-tracker.d.ts +62 -0
  476. package/dist/utils/token-tracker.js +150 -0
  477. package/dist/utils/token-types.d.ts +23 -0
  478. package/dist/utils/token-types.js +18 -0
  479. package/dist/utils/types/config-types.d.ts +32 -0
  480. package/dist/utils/types/config-types.js +8 -0
  481. package/dist/utils/update-checker.d.ts +28 -0
  482. package/dist/utils/update-checker.js +106 -0
  483. package/dist/utils/version.d.ts +7 -0
  484. package/dist/utils/version.js +10 -0
  485. package/dist/utils/vscode-detect.d.ts +39 -0
  486. package/dist/utils/vscode-detect.js +137 -0
  487. package/package.json +25 -12
  488. package/dist/commands/handler-types.d.ts +0 -68
  489. package/dist/commands/handler-types.js +0 -8
  490. package/dist/commands/handlers/agent-commands.d.ts +0 -13
  491. package/dist/commands/handlers/agent-commands.js +0 -305
  492. package/dist/commands/handlers/design-commands.d.ts +0 -15
  493. package/dist/commands/handlers/design-commands.js +0 -334
  494. package/dist/commands/handlers/index.d.ts +0 -20
  495. package/dist/commands/handlers/index.js +0 -43
  496. package/dist/commands/handlers/overlay-commands.d.ts +0 -21
  497. package/dist/commands/handlers/overlay-commands.js +0 -287
  498. package/dist/commands/handlers/project-commands.d.ts +0 -11
  499. package/dist/commands/handlers/project-commands.js +0 -167
  500. package/dist/commands/handlers/simple-commands.d.ts +0 -19
  501. package/dist/commands/handlers/simple-commands.js +0 -144
  502. package/dist/commands/registry.d.ts +0 -50
  503. package/dist/commands/registry.js +0 -75
  504. package/dist/index.old.d.ts +0 -7
  505. package/dist/index.old.js +0 -1014
  506. package/dist/repl.d.ts +0 -149
  507. package/dist/repl.js +0 -1151
  508. package/dist/templates/claude-md.d.ts +0 -7
  509. package/dist/templates/claude-md.js +0 -189
  510. package/dist/test-autocomplete.d.ts +0 -7
  511. package/dist/test-autocomplete.js +0 -85
  512. package/dist/test-tabbed-menu.d.ts +0 -7
  513. package/dist/test-tabbed-menu.js +0 -25
  514. package/dist/tool-selector.d.ts +0 -71
  515. package/dist/tool-selector.js +0 -184
  516. package/dist/ui/agents-overlay-v2.d.ts +0 -43
  517. package/dist/ui/agents-overlay-v2.js +0 -809
  518. package/dist/ui/agents-overlay.d.ts +0 -12
  519. package/dist/ui/agents-overlay.js +0 -863
  520. package/dist/ui/anchors-overlay.d.ts +0 -12
  521. package/dist/ui/anchors-overlay.js +0 -775
  522. package/dist/ui/arch-type-overlay.d.ts +0 -15
  523. package/dist/ui/arch-type-overlay.js +0 -201
  524. package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
  525. package/dist/ui/ask-user-overlay-v2.js +0 -555
  526. package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
  527. package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
  528. package/dist/ui/backlog-overlay.d.ts +0 -32
  529. package/dist/ui/backlog-overlay.js +0 -652
  530. package/dist/ui/commands-overlay-v2.d.ts +0 -33
  531. package/dist/ui/commands-overlay-v2.js +0 -441
  532. package/dist/ui/commands-overlay.d.ts +0 -16
  533. package/dist/ui/commands-overlay.js +0 -439
  534. package/dist/ui/config-overlay.d.ts +0 -35
  535. package/dist/ui/config-overlay.js +0 -707
  536. package/dist/ui/docs-overlay.d.ts +0 -17
  537. package/dist/ui/docs-overlay.js +0 -303
  538. package/dist/ui/footer-v2.d.ts +0 -222
  539. package/dist/ui/footer-v2.js +0 -1349
  540. package/dist/ui/help-overlay-v2.d.ts +0 -34
  541. package/dist/ui/help-overlay-v2.js +0 -309
  542. package/dist/ui/help-overlay.d.ts +0 -16
  543. package/dist/ui/help-overlay.js +0 -316
  544. package/dist/ui/init-overlay-v2.d.ts +0 -34
  545. package/dist/ui/init-overlay-v2.js +0 -600
  546. package/dist/ui/init-overlay.d.ts +0 -34
  547. package/dist/ui/init-overlay.js +0 -604
  548. package/dist/ui/input-prompt-v2.d.ts +0 -180
  549. package/dist/ui/input-prompt-v2.js +0 -999
  550. package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
  551. package/dist/ui/iteration-limit-overlay-v2.js +0 -114
  552. package/dist/ui/keys-overlay-v2.d.ts +0 -41
  553. package/dist/ui/keys-overlay-v2.js +0 -248
  554. package/dist/ui/mascot-overlay-v2.d.ts +0 -41
  555. package/dist/ui/mascot-overlay-v2.js +0 -138
  556. package/dist/ui/mascot-overlay.d.ts +0 -21
  557. package/dist/ui/mascot-overlay.js +0 -146
  558. package/dist/ui/model-overlay-v2.d.ts +0 -49
  559. package/dist/ui/model-overlay-v2.js +0 -118
  560. package/dist/ui/model-overlay.d.ts +0 -27
  561. package/dist/ui/model-overlay.js +0 -221
  562. package/dist/ui/model-warning-overlay.d.ts +0 -30
  563. package/dist/ui/model-warning-overlay.js +0 -169
  564. package/dist/ui/new-overlay.d.ts +0 -34
  565. package/dist/ui/new-overlay.js +0 -604
  566. package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
  567. package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
  568. package/dist/ui/overlay/overlay-types.d.ts +0 -128
  569. package/dist/ui/overlay/overlay-types.js +0 -22
  570. package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
  571. package/dist/ui/overlays/help-overlay-v2.js +0 -198
  572. package/dist/ui/overlays/index.d.ts +0 -11
  573. package/dist/ui/overlays/index.js +0 -11
  574. package/dist/ui/permission-overlay-v2.d.ts +0 -36
  575. package/dist/ui/permission-overlay-v2.js +0 -380
  576. package/dist/ui/projects-overlay.d.ts +0 -19
  577. package/dist/ui/projects-overlay.js +0 -484
  578. package/dist/ui/theme-overlay-v2.d.ts +0 -42
  579. package/dist/ui/theme-overlay-v2.js +0 -135
  580. package/dist/ui/theme-overlay.d.ts +0 -24
  581. package/dist/ui/theme-overlay.js +0 -127
  582. package/dist/ui/tools-overlay-v2.d.ts +0 -47
  583. package/dist/ui/tools-overlay-v2.js +0 -218
  584. package/dist/ui/tools-overlay.d.ts +0 -34
  585. package/dist/ui/tools-overlay.js +0 -230
  586. package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
  587. package/dist/ui/tutorial-overlay-v2.js +0 -1035
  588. package/dist/ui/tutorial-overlay.d.ts +0 -11
  589. package/dist/ui/tutorial-overlay.js +0 -1034
  590. package/dist/ui/workflow-overlay.d.ts +0 -22
  591. package/dist/ui/workflow-overlay.js +0 -636
@@ -4,6 +4,7 @@
4
4
  * Extracts content, summary, and success from tool results.
5
5
  * Each tool type has its own formatter to produce human-readable output.
6
6
  */
7
+ import { truncate } from './base/index.js';
7
8
  /**
8
9
  * Format tool result for display.
9
10
  * Handles the agent's structured result format.
@@ -16,6 +17,10 @@ export function formatToolResult(toolName, result) {
16
17
  // Check for success/result wrapper
17
18
  const success = obj.success !== false;
18
19
  const innerResult = (obj.result ?? obj);
20
+ // Handle delegated results — large tool outputs that were auto-summarized
21
+ if (innerResult._delegated === true) {
22
+ return formatDelegated(toolName, innerResult);
23
+ }
19
24
  // Extract content based on tool type
20
25
  let content = '';
21
26
  let summary = '';
@@ -95,6 +100,84 @@ export function formatToolResult(toolName, result) {
95
100
  else if (toolLower === 'task') {
96
101
  ({ content, summary } = formatTask(innerResult));
97
102
  }
103
+ else if (toolLower === 'plan_get') {
104
+ ({ content, summary } = formatPlanGet(innerResult));
105
+ }
106
+ else if (toolLower === 'plan_list') {
107
+ ({ content, summary } = formatPlanList(innerResult));
108
+ }
109
+ else if (toolLower === 'plan_create') {
110
+ ({ content, summary } = formatPlanCreate(innerResult));
111
+ }
112
+ else if (toolLower === 'plan_update') {
113
+ ({ content, summary } = formatPlanUpdate(innerResult));
114
+ }
115
+ else if (toolLower === 'plan_delete') {
116
+ ({ content, summary } = formatPlanDelete(innerResult));
117
+ }
118
+ else if (toolLower === 'delegate_background') {
119
+ ({ content, summary } = formatDelegateBackground(innerResult));
120
+ }
121
+ else if (toolLower === 'delegate' || toolLower === 'handoff') {
122
+ ({ content, summary } = formatDelegate(innerResult));
123
+ }
124
+ else if (toolLower === 'todo_claim' || toolLower === 'todo_handoff') {
125
+ ({ content, summary } = formatTodoClaim(innerResult));
126
+ }
127
+ else if (toolLower === 'recall_work') {
128
+ ({ content, summary } = formatRecallWork(innerResult));
129
+ }
130
+ else if (toolLower.startsWith('artifact_')) {
131
+ ({ content, summary } = formatArtifact(toolLower, innerResult));
132
+ }
133
+ else if (toolLower === 'list_tools') {
134
+ ({ content, summary } = formatListTools(innerResult));
135
+ }
136
+ else if (toolLower === 'get_tool_info') {
137
+ ({ content, summary } = formatGetToolInfo(innerResult));
138
+ }
139
+ else if (toolLower === 'git_stash') {
140
+ ({ content, summary } = formatGitStash(innerResult));
141
+ }
142
+ else if (toolLower === 'git_blame') {
143
+ ({ content, summary } = formatGitBlame(innerResult));
144
+ }
145
+ else if (toolLower === 'git_file_history') {
146
+ ({ content, summary } = formatGitFileHistory(innerResult));
147
+ }
148
+ else if (toolLower === 'run_build') {
149
+ ({ content, summary } = formatRunBuild(innerResult));
150
+ }
151
+ else if (toolLower === 'run_format') {
152
+ ({ content, summary } = formatRunFormat(innerResult));
153
+ }
154
+ else if (toolLower === 'find_definition') {
155
+ ({ content, summary } = formatFindDefinition(innerResult));
156
+ }
157
+ else if (toolLower === 'find_references') {
158
+ ({ content, summary } = formatFindReferences(innerResult));
159
+ }
160
+ else if (toolLower === 'find_todos') {
161
+ ({ content, summary } = formatFindTodos(innerResult));
162
+ }
163
+ else if (toolLower === 'check_outdated') {
164
+ ({ content, summary } = formatCheckOutdated(innerResult));
165
+ }
166
+ else if (toolLower === 'find_vulnerabilities') {
167
+ ({ content, summary } = formatFindVulnerabilities(innerResult));
168
+ }
169
+ else if (toolLower === 'analyze_test_coverage') {
170
+ ({ content, summary } = formatAnalyzeTestCoverage(innerResult));
171
+ }
172
+ else if (toolLower === 'get_file_structure') {
173
+ ({ content, summary } = formatGetFileStructure(innerResult));
174
+ }
175
+ else if (toolLower === 'get_complexity') {
176
+ ({ content, summary } = formatGetComplexity(innerResult));
177
+ }
178
+ else if (toolLower === 'read_function' || toolLower === 'read_class' || toolLower === 'read_type') {
179
+ ({ content, summary } = formatReadSymbol(innerResult));
180
+ }
98
181
  else {
99
182
  // Generic handling
100
183
  ({ content, summary } = formatGeneric(innerResult));
@@ -458,7 +541,7 @@ function formatProjectDocument(toolName, result) {
458
541
  }
459
542
  const docType = document.docType || 'unknown';
460
543
  const content = document.content || '';
461
- const preview = content.length > 200 ? content.slice(0, 200) + '...' : content;
544
+ const preview = truncate(content, 200);
462
545
  return { content: preview, summary: `Document: ${docType}` };
463
546
  }
464
547
  // Handle document_list - return list of documents
@@ -504,6 +587,421 @@ function formatTask(result) {
504
587
  const content = response || '';
505
588
  return { content, summary };
506
589
  }
590
+ // =============================================================================
591
+ // Plan Formatters
592
+ // =============================================================================
593
+ function formatPlanGet(result) {
594
+ const plan = result.plan;
595
+ if (!plan) {
596
+ const message = result.message;
597
+ return { content: '', summary: message || 'Plan not found' };
598
+ }
599
+ const name = plan.name || 'Unknown';
600
+ const status = plan.status || 'draft';
601
+ const planContent = plan.content || '';
602
+ const workItem = plan.workItem;
603
+ // Build summary
604
+ let summary = `${name} [${status}]`;
605
+ if (workItem) {
606
+ const itemId = workItem.itemId || '';
607
+ summary += ` → ${itemId}`;
608
+ }
609
+ // For content, show a preview of the plan (first 500 chars with section headers visible)
610
+ const lines = planContent.split('\n');
611
+ const previewLines = [];
612
+ let charCount = 0;
613
+ const maxChars = 500;
614
+ for (const line of lines) {
615
+ if (charCount >= maxChars) {
616
+ previewLines.push('...');
617
+ break;
618
+ }
619
+ previewLines.push(line);
620
+ charCount += line.length + 1;
621
+ }
622
+ const content = previewLines.join('\n');
623
+ return { content, summary };
624
+ }
625
+ function formatPlanList(result) {
626
+ const plans = result.plans;
627
+ const count = result.count;
628
+ const statusCounts = result.statusCounts;
629
+ if (!plans?.length) {
630
+ return { content: '', summary: 'No plans found' };
631
+ }
632
+ // Build summary with status counts
633
+ let summary = `${String(count ?? plans.length)} plan(s)`;
634
+ if (statusCounts) {
635
+ const statuses = [];
636
+ if (statusCounts.draft)
637
+ statuses.push(`${String(statusCounts.draft)} draft`);
638
+ if (statusCounts.approved)
639
+ statuses.push(`${String(statusCounts.approved)} approved`);
640
+ if (statusCounts.in_progress)
641
+ statuses.push(`${String(statusCounts.in_progress)} in progress`);
642
+ if (statusCounts.completed)
643
+ statuses.push(`${String(statusCounts.completed)} completed`);
644
+ if (statuses.length)
645
+ summary += ` (${statuses.join(', ')})`;
646
+ }
647
+ // Build content with plan list
648
+ const lines = plans.slice(0, 10).map((p) => {
649
+ const status = p.status ? `[${p.status}]` : '';
650
+ const workItem = p.workItemItemId ? ` → ${p.workItemItemId}` : '';
651
+ return `${p.name || '?'} ${status}${workItem}`;
652
+ });
653
+ if (plans.length > 10) {
654
+ lines.push(`... and ${String(plans.length - 10)} more`);
655
+ }
656
+ return { content: lines.join('\n'), summary };
657
+ }
658
+ function formatPlanCreate(result) {
659
+ const message = result.message;
660
+ const plan = result.plan;
661
+ if (message) {
662
+ return { content: '', summary: message };
663
+ }
664
+ if (plan) {
665
+ const name = plan.name || 'Unknown';
666
+ const id = plan.id;
667
+ return { content: '', summary: `Created plan: ${name}${id ? ` (ID: ${String(id)})` : ''}` };
668
+ }
669
+ return { content: '', summary: 'Plan created' };
670
+ }
671
+ function formatPlanUpdate(result) {
672
+ const message = result.message;
673
+ const plan = result.plan;
674
+ if (message) {
675
+ return { content: '', summary: message };
676
+ }
677
+ if (plan) {
678
+ const name = plan.name || 'Unknown';
679
+ const status = plan.status || '';
680
+ return { content: '', summary: `Updated plan: ${name}${status ? ` [${status}]` : ''}` };
681
+ }
682
+ return { content: '', summary: 'Plan updated' };
683
+ }
684
+ function formatPlanDelete(result) {
685
+ const message = result.message;
686
+ return { content: '', summary: message || 'Plan deleted' };
687
+ }
688
+ // =============================================================================
689
+ // agents-coding Tool Formatters
690
+ // =============================================================================
691
+ function formatGitStash(result) {
692
+ const message = result.message;
693
+ const stashes = result.stashes;
694
+ if (message) {
695
+ return { content: '', summary: message };
696
+ }
697
+ if (stashes?.length) {
698
+ const lines = stashes.slice(0, 5).map((s) => `stash@{${String(s.index ?? 0)}}: ${(s.message || '').slice(0, 50)}`);
699
+ if (stashes.length > 5)
700
+ lines.push(`... and ${String(stashes.length - 5)} more`);
701
+ return { content: lines.join('\n'), summary: `${String(stashes.length)} stash(es)` };
702
+ }
703
+ return { content: '', summary: 'No stashes' };
704
+ }
705
+ function formatGitBlame(result) {
706
+ const lines = result.lines;
707
+ const authors = result.authorSummary;
708
+ if (authors?.length) {
709
+ const topAuthors = authors.slice(0, 3).map((a) => `${a.author || '?'}: ${String(a.lines ?? 0)} lines`).join(', ');
710
+ const summary = `${String(lines?.length ?? 0)} lines, ${topAuthors}`;
711
+ return { content: '', summary };
712
+ }
713
+ return { content: '', summary: `${String(lines?.length ?? 0)} lines analyzed` };
714
+ }
715
+ function formatGitFileHistory(result) {
716
+ const commits = result.commits;
717
+ const file = result.file;
718
+ if (!commits?.length) {
719
+ return { content: '', summary: 'No history found' };
720
+ }
721
+ const summary = `${String(commits.length)} commit(s) for ${file || 'file'}`;
722
+ const lines = commits.slice(0, 5).map((c) => `${c.shortHash || '?'} ${(c.subject || '').slice(0, 50)}`);
723
+ if (commits.length > 5)
724
+ lines.push(`... and ${String(commits.length - 5)} more`);
725
+ return { content: lines.join('\n'), summary };
726
+ }
727
+ function formatRunBuild(result) {
728
+ const success = result.success;
729
+ const command = result.command;
730
+ const stdout = result.stdout;
731
+ const status = success === false ? 'Build failed' : 'Build succeeded';
732
+ const summary = command ? `${status} (${command})` : status;
733
+ return { content: stdout || '', summary };
734
+ }
735
+ function formatRunFormat(result) {
736
+ const filesFormatted = result.filesFormatted;
737
+ const command = result.command;
738
+ if (filesFormatted !== undefined) {
739
+ return { content: '', summary: `Formatted ${String(filesFormatted)} file(s)` };
740
+ }
741
+ return { content: '', summary: command ? `Ran ${command}` : 'Format complete' };
742
+ }
743
+ function formatFindDefinition(result) {
744
+ const definitions = result.definitions;
745
+ if (!definitions?.length) {
746
+ return { content: '', summary: 'No definitions found' };
747
+ }
748
+ const summary = `Found ${String(definitions.length)} definition(s)`;
749
+ const lines = definitions.slice(0, 5).map((d) => `${d.path || '?'}:${String(d.line ?? 0)} [${d.type || '?'}] ${d.name || ''}`);
750
+ if (definitions.length > 5)
751
+ lines.push(`... and ${String(definitions.length - 5)} more`);
752
+ return { content: lines.join('\n'), summary };
753
+ }
754
+ function formatFindReferences(result) {
755
+ const references = result.references;
756
+ const totalCount = result.totalCount;
757
+ const count = totalCount ?? references?.length ?? 0;
758
+ if (count === 0) {
759
+ return { content: '', summary: 'No references found' };
760
+ }
761
+ const summary = `Found ${String(count)} reference(s)`;
762
+ if (references?.length) {
763
+ const lines = references.slice(0, 5).map((r) => `${r.path || '?'}:${String(r.line ?? 0)}`);
764
+ if (references.length > 5)
765
+ lines.push(`... and ${String(references.length - 5)} more`);
766
+ return { content: lines.join('\n'), summary };
767
+ }
768
+ return { content: '', summary };
769
+ }
770
+ function formatFindTodos(result) {
771
+ const todos = result.todos;
772
+ if (!todos?.length) {
773
+ return { content: '', summary: 'No TODOs found' };
774
+ }
775
+ const summary = `Found ${String(todos.length)} TODO(s)`;
776
+ const lines = todos.slice(0, 5).map((t) => `${t.path || '?'}:${String(t.line ?? 0)} [${t.type || 'TODO'}] ${(t.text || '').slice(0, 40)}`);
777
+ if (todos.length > 5)
778
+ lines.push(`... and ${String(todos.length - 5)} more`);
779
+ return { content: lines.join('\n'), summary };
780
+ }
781
+ function formatCheckOutdated(result) {
782
+ const packages = result.packages;
783
+ if (!packages?.length) {
784
+ return { content: '', summary: 'All packages up to date' };
785
+ }
786
+ const summary = `${String(packages.length)} outdated package(s)`;
787
+ const lines = packages.slice(0, 5).map((p) => `${p.name || '?'}: ${p.current || '?'} → ${p.latest || '?'} (${p.type || 'update'})`);
788
+ if (packages.length > 5)
789
+ lines.push(`... and ${String(packages.length - 5)} more`);
790
+ return { content: lines.join('\n'), summary };
791
+ }
792
+ function formatFindVulnerabilities(result) {
793
+ const vulnerabilities = result.vulnerabilities;
794
+ if (!vulnerabilities?.length) {
795
+ return { content: '', summary: 'No vulnerabilities found' };
796
+ }
797
+ // Count by severity
798
+ const bySeverity = {};
799
+ vulnerabilities.forEach((v) => {
800
+ const sev = v.severity || 'unknown';
801
+ bySeverity[sev] = (bySeverity[sev] || 0) + 1;
802
+ });
803
+ const sevParts = Object.entries(bySeverity).map(([k, v]) => `${String(v)} ${k}`).join(', ');
804
+ const summary = `${String(vulnerabilities.length)} vulnerabilities (${sevParts})`;
805
+ const lines = vulnerabilities.slice(0, 5).map((v) => `[${v.severity || '?'}] ${v.name || '?'}: ${(v.title || '').slice(0, 40)}`);
806
+ if (vulnerabilities.length > 5)
807
+ lines.push(`... and ${String(vulnerabilities.length - 5)} more`);
808
+ return { content: lines.join('\n'), summary };
809
+ }
810
+ function formatAnalyzeTestCoverage(result) {
811
+ const summary_data = result.summary;
812
+ const meetsThreshold = result.meetsThreshold;
813
+ if (summary_data) {
814
+ const lineCov = summary_data.lines?.pct ?? summary_data.statements?.pct ?? 0;
815
+ const funcCov = summary_data.functions?.pct ?? 0;
816
+ const branchCov = summary_data.branches?.pct ?? 0;
817
+ const status = meetsThreshold === false ? ' (below threshold)' : '';
818
+ const summary = `Coverage: ${lineCov.toFixed(1)}% lines, ${funcCov.toFixed(1)}% functions, ${branchCov.toFixed(1)}% branches${status}`;
819
+ return { content: '', summary };
820
+ }
821
+ return { content: '', summary: 'Coverage analysis complete' };
822
+ }
823
+ function formatGetFileStructure(result) {
824
+ const classes = result.classes;
825
+ const functions = result.functions;
826
+ const imports = result.imports;
827
+ const exports = result.exports;
828
+ const parts = [];
829
+ if (classes?.length)
830
+ parts.push(`${String(classes.length)} class(es)`);
831
+ if (functions?.length)
832
+ parts.push(`${String(functions.length)} function(s)`);
833
+ if (imports?.length)
834
+ parts.push(`${String(imports.length)} import(s)`);
835
+ if (exports?.length)
836
+ parts.push(`${String(exports.length)} export(s)`);
837
+ const summary = parts.length > 0 ? parts.join(', ') : 'Empty file';
838
+ // Build detailed content
839
+ const lines = [];
840
+ if (classes?.length) {
841
+ lines.push('Classes:');
842
+ classes.slice(0, 5).forEach((c) => lines.push(` - ${c.name || '?'}`));
843
+ if (classes.length > 5)
844
+ lines.push(` ... and ${String(classes.length - 5)} more`);
845
+ }
846
+ if (functions?.length) {
847
+ lines.push('Functions:');
848
+ functions.slice(0, 5).forEach((f) => lines.push(` - ${f.name || '?'}`));
849
+ if (functions.length > 5)
850
+ lines.push(` ... and ${String(functions.length - 5)} more`);
851
+ }
852
+ return { content: lines.join('\n'), summary };
853
+ }
854
+ function formatGetComplexity(result) {
855
+ const files = result.files;
856
+ const functions_data = result.functions;
857
+ if (functions_data?.length) {
858
+ const highComplexity = functions_data.filter((f) => (f.complexity ?? 0) > 10);
859
+ if (highComplexity.length > 0) {
860
+ const summary = `${String(highComplexity.length)} high-complexity function(s)`;
861
+ const lines = highComplexity.slice(0, 5).map((f) => `${f.name || '?'}: complexity ${String(f.complexity ?? 0)}`);
862
+ if (highComplexity.length > 5)
863
+ lines.push(`... and ${String(highComplexity.length - 5)} more`);
864
+ return { content: lines.join('\n'), summary };
865
+ }
866
+ return { content: '', summary: 'All functions within complexity threshold' };
867
+ }
868
+ if (files?.length) {
869
+ const summary = `Analyzed ${String(files.length)} file(s)`;
870
+ return { content: '', summary };
871
+ }
872
+ return { content: '', summary: 'Complexity analysis complete' };
873
+ }
874
+ function formatReadSymbol(result) {
875
+ const name = result.name;
876
+ const kind = result.kind;
877
+ const startLine = result.startLine;
878
+ const endLine = result.endLine;
879
+ const codeContent = result.content;
880
+ const signature = result.signature;
881
+ const container = result.container;
882
+ // Build summary: [kind] name (lines X-Y)
883
+ const kindLabel = kind || 'symbol';
884
+ const lineRange = startLine && endLine ? ` (lines ${String(startLine)}-${String(endLine)})` : '';
885
+ const containerInfo = container ? ` in ${container}` : '';
886
+ const summary = `[${kindLabel}] ${name || '?'}${containerInfo}${lineRange}`;
887
+ // Content is the actual source code
888
+ // Format it nicely with line numbers
889
+ if (codeContent) {
890
+ const lines = codeContent.split('\n');
891
+ const start = startLine ?? 1;
892
+ const numberedLines = lines.map((line, i) => {
893
+ const lineNum = String(start + i).padStart(4, ' ');
894
+ return `${lineNum} │ ${line}`;
895
+ });
896
+ return { content: numberedLines.join('\n'), summary };
897
+ }
898
+ // Fallback to signature if no content
899
+ if (signature) {
900
+ return { content: signature, summary };
901
+ }
902
+ return { content: '', summary };
903
+ }
904
+ function formatTodoClaim(result) {
905
+ const message = result.message;
906
+ return { content: '', summary: message || 'Done' };
907
+ }
908
+ function formatRecallWork(result) {
909
+ const episodes = result.episodes;
910
+ const totalEpisodes = result.totalEpisodes;
911
+ const totalEffort = result.totalEffort;
912
+ const uncommittedCount = result.uncommittedCount;
913
+ if (!episodes?.length) {
914
+ return { content: '', summary: 'No work history' };
915
+ }
916
+ // Summary line
917
+ const uncommittedInfo = uncommittedCount ? `, ${String(uncommittedCount)} uncommitted` : '';
918
+ const summary = `${String(totalEpisodes ?? episodes.length)} episode(s), effort: ${totalEffort || '?'}${uncommittedInfo}`;
919
+ // Build detailed content
920
+ const lines = [];
921
+ for (const ep of episodes.slice(0, 10)) {
922
+ const time = ep.timestamp ? new Date(ep.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }) : '?';
923
+ const agent = ep.agentId || '?';
924
+ const action = ep.summary || ep.action || '?';
925
+ const effort = ep.effort ? `[${ep.effort}]` : '';
926
+ lines.push(`${time} ${agent} ${effort} ${action}`);
927
+ }
928
+ if (episodes.length > 10) {
929
+ lines.push(`... and ${String(episodes.length - 10)} more`);
930
+ }
931
+ return { content: lines.join('\n'), summary };
932
+ }
933
+ function formatArtifact(toolName, result) {
934
+ const action = toolName.replace('artifact_', '');
935
+ // artifact_list
936
+ if (action === 'list') {
937
+ const content = typeof result.content === 'string' ? result.content : '';
938
+ const lines = content.split('\n').filter((l) => l.length > 0);
939
+ // First line is typically "Found N artifacts:"
940
+ const summary = lines.length > 0 ? lines[0].slice(0, 60) : 'No artifacts';
941
+ return { content: '', summary };
942
+ }
943
+ // artifact_save
944
+ if (action === 'save') {
945
+ const content = typeof result.content === 'string' ? result.content : '';
946
+ const match = /Created artifact "([^"]+)"/.exec(content);
947
+ return { content: '', summary: match ? `Saved: ${match[1]}` : 'Artifact saved' };
948
+ }
949
+ // artifact_get
950
+ if (action === 'get') {
951
+ const content = typeof result.content === 'string' ? result.content : '';
952
+ const match = /Artifact: (.+)/.exec(content);
953
+ return { content, summary: match ? match[1].slice(0, 60) : 'Artifact retrieved' };
954
+ }
955
+ // artifact_delete
956
+ if (action === 'delete') {
957
+ const content = typeof result.content === 'string' ? result.content : '';
958
+ const match = /Deleted artifact "([^"]+)"/.exec(content);
959
+ return { content: '', summary: match ? `Deleted: ${match[1]}` : 'Artifact deleted' };
960
+ }
961
+ // Fallback
962
+ const message = typeof result.content === 'string' ? result.content.split('\n')[0] : '';
963
+ return { content: '', summary: message.slice(0, 60) || 'Done' };
964
+ }
965
+ function formatListTools(result) {
966
+ const count = result.count;
967
+ const tools = result.tools;
968
+ if (tools?.length) {
969
+ const names = tools.slice(0, 8).map((t) => t.name || '?').join(', ');
970
+ const more = tools.length > 8 ? `, +${String(tools.length - 8)} more` : '';
971
+ return { content: '', summary: `${String(count ?? tools.length)} tools: ${names}${more}` };
972
+ }
973
+ return { content: '', summary: count ? `${String(count)} tools available` : 'No tools' };
974
+ }
975
+ function formatGetToolInfo(result) {
976
+ const name = result.name;
977
+ const description = result.description;
978
+ if (name && description) {
979
+ // First sentence of description
980
+ const firstSentence = description.split('.')[0].slice(0, 60);
981
+ return { content: '', summary: `${name}: ${firstSentence}` };
982
+ }
983
+ return { content: '', summary: name || 'Tool info' };
984
+ }
985
+ function formatDelegateBackground(result) {
986
+ const delegated = result.delegated;
987
+ const delegationId = result.delegationId;
988
+ const status = result.status;
989
+ const message = result.message;
990
+ const error = result.error;
991
+ if (error) {
992
+ return { content: '', summary: error };
993
+ }
994
+ if (delegated && delegationId) {
995
+ const shortId = delegationId.replace('del_', '');
996
+ const statusLabel = status === 'queued' ? 'queued' : 'running';
997
+ return { content: '', summary: `${shortId} ${statusLabel}` };
998
+ }
999
+ return { content: '', summary: message || 'Delegated' };
1000
+ }
1001
+ function formatDelegate(result) {
1002
+ const message = result.message;
1003
+ return { content: '', summary: message || 'Delegated' };
1004
+ }
507
1005
  function formatGeneric(result) {
508
1006
  const content = typeof result.content === 'string'
509
1007
  ? result.content
@@ -514,3 +1012,16 @@ function formatGeneric(result) {
514
1012
  const summary = lines.length > 0 ? lines[0].slice(0, 60) : 'Completed';
515
1013
  return { content, summary };
516
1014
  }
1015
+ function formatDelegated(toolName, result) {
1016
+ const originalTokens = result._originalTokens;
1017
+ const summaryTokens = result._summaryTokens;
1018
+ const summaryText = result.summary;
1019
+ // Summary line: "Delegated (24,921 → 800 tokens)"
1020
+ const tokenInfo = originalTokens && summaryTokens
1021
+ ? ` (${originalTokens.toLocaleString()} → ${summaryTokens.toLocaleString()} tokens)`
1022
+ : '';
1023
+ const summary = `Delegated${tokenInfo}`;
1024
+ // Content: the summary text (truncated for display, full in Ctrl+O)
1025
+ const content = summaryText || `[${toolName} result was auto-summarized to conserve context]`;
1026
+ return { content, summary, success: true };
1027
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Per-turn token and tool call tracking.
3
+ *
4
+ * Extracted from TerminalUI — a standalone data container with zero
5
+ * coupling to other subsystems.
6
+ */
7
+ export interface TurnMetricsSnapshot {
8
+ inputTokens: number;
9
+ outputTokens: number;
10
+ thinkingTokens: number;
11
+ cacheReadTokens: number;
12
+ durationMs: number;
13
+ toolCalls: number;
14
+ apiCalls: number;
15
+ debugPayload?: {
16
+ systemChars: number;
17
+ contentsChars: number;
18
+ toolsChars: number;
19
+ };
20
+ }
21
+ export declare class TurnMetrics {
22
+ inputTokens: number;
23
+ outputTokens: number;
24
+ thinkingTokens: number;
25
+ cacheReadTokens: number;
26
+ debugPayload?: {
27
+ systemChars: number;
28
+ contentsChars: number;
29
+ toolsChars: number;
30
+ };
31
+ startTime: number;
32
+ toolCalls: number;
33
+ apiCalls: number;
34
+ isThinking: boolean;
35
+ /**
36
+ * Add input/output tokens for live display.
37
+ * @param thinkingTokens - Optional thinking tokens (Gemini 2.5+ models)
38
+ * @param cacheReadTokens - Optional cache read tokens (Anthropic/Gemini)
39
+ * @param debugPayload - Optional debug payload sizes (char counts)
40
+ */
41
+ addTokens(inputTokens: number, outputTokens: number, thinkingTokens?: number, cacheReadTokens?: number, debugPayload?: {
42
+ systemChars: number;
43
+ contentsChars: number;
44
+ toolsChars: number;
45
+ }): void;
46
+ incrementToolCalls(): void;
47
+ incrementApiCalls(): void;
48
+ /**
49
+ * Reset all metrics (call when agent starts a new turn).
50
+ */
51
+ reset(): void;
52
+ /**
53
+ * Get a snapshot of current metrics.
54
+ */
55
+ getSnapshot(): TurnMetricsSnapshot;
56
+ }
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Per-turn token and tool call tracking.
3
+ *
4
+ * Extracted from TerminalUI — a standalone data container with zero
5
+ * coupling to other subsystems.
6
+ */
7
+ export class TurnMetrics {
8
+ inputTokens = 0;
9
+ outputTokens = 0;
10
+ thinkingTokens = 0;
11
+ cacheReadTokens = 0;
12
+ debugPayload;
13
+ startTime = 0;
14
+ toolCalls = 0;
15
+ apiCalls = 0;
16
+ isThinking = false;
17
+ /**
18
+ * Add input/output tokens for live display.
19
+ * @param thinkingTokens - Optional thinking tokens (Gemini 2.5+ models)
20
+ * @param cacheReadTokens - Optional cache read tokens (Anthropic/Gemini)
21
+ * @param debugPayload - Optional debug payload sizes (char counts)
22
+ */
23
+ addTokens(inputTokens, outputTokens, thinkingTokens, cacheReadTokens, debugPayload) {
24
+ this.inputTokens += inputTokens;
25
+ this.outputTokens += outputTokens;
26
+ if (thinkingTokens) {
27
+ this.thinkingTokens += thinkingTokens;
28
+ }
29
+ if (cacheReadTokens) {
30
+ this.cacheReadTokens += cacheReadTokens;
31
+ }
32
+ if (debugPayload) {
33
+ if (!this.debugPayload) {
34
+ this.debugPayload = { systemChars: 0, contentsChars: 0, toolsChars: 0 };
35
+ }
36
+ this.debugPayload.systemChars += debugPayload.systemChars;
37
+ this.debugPayload.contentsChars += debugPayload.contentsChars;
38
+ this.debugPayload.toolsChars += debugPayload.toolsChars;
39
+ }
40
+ }
41
+ incrementToolCalls() {
42
+ this.toolCalls++;
43
+ }
44
+ incrementApiCalls() {
45
+ this.apiCalls++;
46
+ }
47
+ /**
48
+ * Reset all metrics (call when agent starts a new turn).
49
+ */
50
+ reset() {
51
+ this.inputTokens = 0;
52
+ this.outputTokens = 0;
53
+ this.thinkingTokens = 0;
54
+ this.cacheReadTokens = 0;
55
+ this.debugPayload = undefined;
56
+ this.startTime = Date.now();
57
+ this.toolCalls = 0;
58
+ this.apiCalls = 0;
59
+ }
60
+ /**
61
+ * Get a snapshot of current metrics.
62
+ */
63
+ getSnapshot() {
64
+ return {
65
+ inputTokens: this.inputTokens,
66
+ outputTokens: this.outputTokens,
67
+ thinkingTokens: this.thinkingTokens,
68
+ cacheReadTokens: this.cacheReadTokens,
69
+ durationMs: this.startTime > 0 ? Date.now() - this.startTime : 0,
70
+ toolCalls: this.toolCalls,
71
+ apiCalls: this.apiCalls,
72
+ debugPayload: this.debugPayload,
73
+ };
74
+ }
75
+ }