@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
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Tutorial Helpers
3
+ *
4
+ * Functions to convert shared content into styled tutorial pages.
5
+ * These helpers apply consistent styling to plain text content.
6
+ */
7
+ import type { ThemeStyleFunctions } from '../themes/index.js';
8
+ import type { TutorialPage } from '../ui/overlay/data/tutorial-types.js';
9
+ import type { ContentTopic, ContentSection } from './shared-content.js';
10
+ /**
11
+ * Style a command (e.g., /help, /design).
12
+ */
13
+ export declare function styleCommand(text: string, s: ThemeStyleFunctions): string;
14
+ /**
15
+ * Style a keyboard shortcut (e.g., [n], Esc, Tab).
16
+ */
17
+ export declare function styleShortcut(text: string, s: ThemeStyleFunctions): string;
18
+ /**
19
+ * Style an agent reference (e.g., $arch, $pm).
20
+ */
21
+ export declare function styleAgent(text: string, s: ThemeStyleFunctions): string;
22
+ /**
23
+ * Style a file reference (e.g., @src/index.ts).
24
+ */
25
+ export declare function styleFileRef(text: string, s: ThemeStyleFunctions): string;
26
+ /**
27
+ * Style a path or filename.
28
+ */
29
+ export declare function stylePath(text: string, s: ThemeStyleFunctions): string;
30
+ /**
31
+ * Apply all styling to a line of text.
32
+ */
33
+ export declare function styleLine(text: string, s: ThemeStyleFunctions): string;
34
+ /**
35
+ * Convert a content section to styled lines.
36
+ */
37
+ export declare function sectionToLines(section: ContentSection, s: ThemeStyleFunctions, indent?: string): string[];
38
+ /**
39
+ * Convert a content topic to a single tutorial page.
40
+ */
41
+ export declare function topicToPage(topic: ContentTopic, s: ThemeStyleFunctions): TutorialPage;
42
+ /**
43
+ * Convert a content topic to multiple tutorial pages (one per section).
44
+ */
45
+ export declare function topicToPages(topic: ContentTopic, s: ThemeStyleFunctions): TutorialPage[];
46
+ /**
47
+ * Convert multiple content topics to a single tutorial page each.
48
+ */
49
+ export declare function topicsToPages(topicIds: string[], topics: ContentTopic[], s: ThemeStyleFunctions): TutorialPage[];
50
+ /**
51
+ * Build a tutorial page with custom styling on top of shared content.
52
+ * Allows mixing shared content with custom tutorial-specific elements.
53
+ */
54
+ export declare function buildHybridPage(title: string, sections: ContentSection[], s: ThemeStyleFunctions, options?: {
55
+ prefix?: string[];
56
+ suffix?: string[];
57
+ }): TutorialPage;
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Tutorial Helpers
3
+ *
4
+ * Functions to convert shared content into styled tutorial pages.
5
+ * These helpers apply consistent styling to plain text content.
6
+ */
7
+ // =============================================================================
8
+ // Text Styling Helpers
9
+ // =============================================================================
10
+ /**
11
+ * Style a command (e.g., /help, /design).
12
+ */
13
+ export function styleCommand(text, s) {
14
+ return text.replace(/\/\w+/g, (match) => s.primary(match));
15
+ }
16
+ /**
17
+ * Style a keyboard shortcut (e.g., [n], Esc, Tab).
18
+ */
19
+ export function styleShortcut(text, s) {
20
+ // Style bracketed shortcuts like [n], [p]
21
+ let result = text.replace(/\[([a-z0-9])\]/gi, (_, key) => s.primary(`[${key}]`));
22
+ // Style named keys like Esc, Tab, Enter
23
+ result = result.replace(/\b(Esc|Tab|Enter|↑|↓|←|→)\b/g, (match) => s.primary(match));
24
+ return result;
25
+ }
26
+ /**
27
+ * Style an agent reference (e.g., $arch, $pm).
28
+ */
29
+ export function styleAgent(text, s) {
30
+ return text.replace(/\$\w+/g, (match) => s.primary(match));
31
+ }
32
+ /**
33
+ * Style a file reference (e.g., @src/index.ts).
34
+ */
35
+ export function styleFileRef(text, s) {
36
+ return text.replace(/@[\w/.]+/g, (match) => s.primary(match));
37
+ }
38
+ /**
39
+ * Style a path or filename.
40
+ */
41
+ export function stylePath(text, s) {
42
+ // Style paths like COMPILR.md, .compilr/, src/
43
+ return text.replace(/(?:\.?[\w-]+\/)+[\w.-]*|[\w-]+\.(md|ts|js|json)/g, (match) => s.primary(match));
44
+ }
45
+ /**
46
+ * Apply all styling to a line of text.
47
+ */
48
+ export function styleLine(text, s) {
49
+ let result = text;
50
+ result = styleCommand(result, s);
51
+ result = styleShortcut(result, s);
52
+ result = styleAgent(result, s);
53
+ result = styleFileRef(result, s);
54
+ result = stylePath(result, s);
55
+ // Style "TIP:" prefix
56
+ if (result.startsWith('TIP:')) {
57
+ result = s.warning('TIP:') + result.slice(4);
58
+ }
59
+ return result;
60
+ }
61
+ // =============================================================================
62
+ // Section to Lines Conversion
63
+ // =============================================================================
64
+ /**
65
+ * Convert a content section to styled lines.
66
+ */
67
+ export function sectionToLines(section, s, indent = ' ') {
68
+ const lines = [];
69
+ if (section.title) {
70
+ lines.push(` ${s.secondary(section.title)}`);
71
+ lines.push('');
72
+ }
73
+ for (const item of section.items) {
74
+ const styledItem = styleLine(item, s);
75
+ lines.push(`${indent}${styledItem}`);
76
+ }
77
+ return lines;
78
+ }
79
+ // =============================================================================
80
+ // Topic to Tutorial Page Conversion
81
+ // =============================================================================
82
+ /**
83
+ * Convert a content topic to a single tutorial page.
84
+ */
85
+ export function topicToPage(topic, s) {
86
+ const lines = [''];
87
+ for (const section of topic.sections) {
88
+ lines.push(...sectionToLines(section, s));
89
+ lines.push('');
90
+ }
91
+ return {
92
+ title: topic.title,
93
+ lines,
94
+ };
95
+ }
96
+ /**
97
+ * Convert a content topic to multiple tutorial pages (one per section).
98
+ */
99
+ export function topicToPages(topic, s) {
100
+ const pages = [];
101
+ for (let i = 0; i < topic.sections.length; i++) {
102
+ const section = topic.sections[i];
103
+ const lines = ['', ...sectionToLines(section, s), ''];
104
+ pages.push({
105
+ title: section.title || topic.title,
106
+ lines,
107
+ });
108
+ }
109
+ return pages;
110
+ }
111
+ /**
112
+ * Convert multiple content topics to a single tutorial page each.
113
+ */
114
+ export function topicsToPages(topicIds, topics, s) {
115
+ const pages = [];
116
+ for (const id of topicIds) {
117
+ const topic = topics.find((t) => t.id === id);
118
+ if (topic) {
119
+ pages.push(topicToPage(topic, s));
120
+ }
121
+ }
122
+ return pages;
123
+ }
124
+ // =============================================================================
125
+ // Hybrid Page Builder
126
+ // =============================================================================
127
+ /**
128
+ * Build a tutorial page with custom styling on top of shared content.
129
+ * Allows mixing shared content with custom tutorial-specific elements.
130
+ */
131
+ export function buildHybridPage(title, sections, s, options) {
132
+ const lines = [''];
133
+ // Add prefix lines
134
+ if (options?.prefix) {
135
+ lines.push(...options.prefix, '');
136
+ }
137
+ // Add sections
138
+ for (const section of sections) {
139
+ lines.push(...sectionToLines(section, s));
140
+ lines.push('');
141
+ }
142
+ // Add suffix lines
143
+ if (options?.suffix) {
144
+ lines.push(...options.suffix, '');
145
+ }
146
+ return { title, lines };
147
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Ask-user handler factories — extracted from index.ts.
3
+ *
4
+ * Registers the `ask_user` and `ask_user_simple` handlers.
5
+ * The deps object is SharedState passed by reference, so live mutations
6
+ * (e.g. overlay callbacks wired after REPL starts) work exactly as before.
7
+ */
8
+ import { type AskUserQuestion } from '../shared-handlers.js';
9
+ export interface AskUserHandlerDeps {
10
+ flushTextBuffer?: () => void;
11
+ getActiveBackgroundAgentId?: () => string | null;
12
+ isBackgroundAgent?: (agentId?: string) => boolean;
13
+ getBackgroundAgentInfo?: (agentId: string) => {
14
+ mascot: string;
15
+ } | null;
16
+ showAskUserOverlayV2?: (options: {
17
+ questions: AskUserQuestion[];
18
+ context?: string;
19
+ }) => Promise<{
20
+ answers: Record<string, string | string[]>;
21
+ skipped: string[];
22
+ }>;
23
+ showAskUserSimpleOverlayV2?: (options: {
24
+ question: string;
25
+ options?: string[];
26
+ allowCustom?: boolean;
27
+ }) => Promise<{
28
+ answer: string;
29
+ skipped: boolean;
30
+ }>;
31
+ }
32
+ export declare function registerAskUserHandlers(deps: AskUserHandlerDeps): void;
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Ask-user handler factories — extracted from index.ts.
3
+ *
4
+ * Registers the `ask_user` and `ask_user_simple` handlers.
5
+ * The deps object is SharedState passed by reference, so live mutations
6
+ * (e.g. overlay callbacks wired after REPL starts) work exactly as before.
7
+ */
8
+ import { registerAskUserHandler, registerAskUserSimpleHandler, } from '../shared-handlers.js';
9
+ import { getPendingRequestsManager } from '../multi-agent/index.js';
10
+ // ---------------------------------------------------------------------------
11
+ // Factory
12
+ // ---------------------------------------------------------------------------
13
+ export function registerAskUserHandlers(deps) {
14
+ // Register ask_user handler that coordinates with footer
15
+ registerAskUserHandler(async (input) => {
16
+ // Wait for event loop to process any pending tool_end events
17
+ await new Promise((resolve) => setImmediate(resolve));
18
+ // Flush any accumulated text BEFORE showing the overlay
19
+ deps.flushTextBuffer?.();
20
+ // Phase 3b: Background agent question handling
21
+ // If this request comes from a background agent, enqueue it instead of showing overlay
22
+ const backgroundAgentId = deps.getActiveBackgroundAgentId?.();
23
+ if (backgroundAgentId && deps.isBackgroundAgent?.(backgroundAgentId)) {
24
+ const agentInfo = deps.getBackgroundAgentInfo?.(backgroundAgentId);
25
+ const pendingManager = getPendingRequestsManager();
26
+ // Build prompt from all questions for display in /pending
27
+ const questionTexts = input.questions.map(q => q.question);
28
+ const prompt = questionTexts.length === 1
29
+ ? questionTexts[0]
30
+ : questionTexts.map((q, i) => `${String(i + 1)}. ${q}`).join(' | ');
31
+ try {
32
+ const response = await pendingManager.enqueue({
33
+ agentId: backgroundAgentId,
34
+ mascot: agentInfo?.mascot ?? '[•_•]',
35
+ type: 'question',
36
+ prompt,
37
+ context: {
38
+ toolType: 'ask_user',
39
+ originalInput: input,
40
+ },
41
+ });
42
+ // Response comes from the standard overlay shown via /pending
43
+ return response.overlayResult;
44
+ }
45
+ catch {
46
+ // Request was cancelled/rejected - skip all questions
47
+ return {
48
+ answers: {},
49
+ skipped: input.questions.map(q => q.id),
50
+ };
51
+ }
52
+ }
53
+ // Use TerminalUI overlay system
54
+ if (!deps.showAskUserOverlayV2) {
55
+ throw new Error('ask_user overlay not initialized');
56
+ }
57
+ return deps.showAskUserOverlayV2({
58
+ questions: input.questions,
59
+ context: input.context,
60
+ });
61
+ });
62
+ // Register ask_user_simple handler for smaller models (flat schema)
63
+ registerAskUserSimpleHandler(async (input) => {
64
+ // Wait for event loop to process any pending tool_end events
65
+ await new Promise((resolve) => setImmediate(resolve));
66
+ // Flush any accumulated text BEFORE showing the overlay
67
+ deps.flushTextBuffer?.();
68
+ // Phase 3b: Background agent question handling
69
+ // If this request comes from a background agent, enqueue it instead of showing overlay
70
+ const backgroundAgentId = deps.getActiveBackgroundAgentId?.();
71
+ if (backgroundAgentId && deps.isBackgroundAgent?.(backgroundAgentId)) {
72
+ const agentInfo = deps.getBackgroundAgentInfo?.(backgroundAgentId);
73
+ const pendingManager = getPendingRequestsManager();
74
+ try {
75
+ const response = await pendingManager.enqueue({
76
+ agentId: backgroundAgentId,
77
+ mascot: agentInfo?.mascot ?? '[•_•]',
78
+ type: 'question',
79
+ prompt: input.question,
80
+ options: input.options,
81
+ context: {
82
+ toolType: 'ask_user_simple',
83
+ originalInput: input,
84
+ },
85
+ });
86
+ // Response comes from the standard overlay shown via /pending
87
+ return response.overlayResult;
88
+ }
89
+ catch {
90
+ // Request was cancelled/rejected
91
+ return { answer: '', skipped: true };
92
+ }
93
+ }
94
+ // Use TerminalUI overlay system
95
+ if (!deps.showAskUserSimpleOverlayV2) {
96
+ throw new Error('ask_user_simple overlay not initialized');
97
+ }
98
+ return deps.showAskUserSimpleOverlayV2({
99
+ question: input.question,
100
+ options: input.options,
101
+ allowCustom: input.allowCustom,
102
+ });
103
+ });
104
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Delegation handler factories — extracted from index.ts.
3
+ *
4
+ * Registers the `delegate`, `delegate_background`, and `handoff` handlers.
5
+ * The deps object is SharedState passed by reference, so live mutations
6
+ * (e.g. team set after REPL starts) work exactly as before.
7
+ */
8
+ import type { AgentTeam } from '../multi-agent/index.js';
9
+ export interface DelegationHandlerDeps {
10
+ flushTextBuffer?: () => void;
11
+ team?: AgentTeam;
12
+ pendingDelegation?: {
13
+ agentId: string;
14
+ task: string;
15
+ } | null;
16
+ showDelegateOverlayV2?: (options: {
17
+ agentId: string;
18
+ agentDisplayName: string;
19
+ task: string;
20
+ reason?: string;
21
+ }) => Promise<{
22
+ approved: boolean;
23
+ }>;
24
+ showAskUserSimpleOverlayV2?: (options: {
25
+ question: string;
26
+ options?: string[];
27
+ allowCustom?: boolean;
28
+ }) => Promise<{
29
+ answer: string;
30
+ skipped: boolean;
31
+ }>;
32
+ runBackgroundDelegation?: (agentId: string, message: string) => 'running' | 'queued' | null;
33
+ }
34
+ export declare function registerDelegationHandlers(deps: DelegationHandlerDeps): void;
@@ -0,0 +1,291 @@
1
+ /**
2
+ * Delegation handler factories — extracted from index.ts.
3
+ *
4
+ * Registers the `delegate`, `delegate_background`, and `handoff` handlers.
5
+ * The deps object is SharedState passed by reference, so live mutations
6
+ * (e.g. team set after REPL starts) work exactly as before.
7
+ */
8
+ import { registerDelegateHandler, registerDelegateBackgroundHandler, registerHandoffHandler, } from '../shared-handlers.js';
9
+ import { getDelegationTracker } from '../multi-agent/delegation-tracker.js';
10
+ import chalk from 'chalk';
11
+ import { truncate } from '../ui/base/index.js';
12
+ // ---------------------------------------------------------------------------
13
+ // Factory
14
+ // ---------------------------------------------------------------------------
15
+ export function registerDelegationHandlers(deps) {
16
+ // Register delegate handler for multi-agent delegation
17
+ registerDelegateHandler(async (input) => {
18
+ // Wait for event loop to process any pending tool_end events
19
+ await new Promise((resolve) => setImmediate(resolve));
20
+ // Flush any accumulated text BEFORE showing the overlay
21
+ deps.flushTextBuffer?.();
22
+ // Validate team exists
23
+ if (!deps.team) {
24
+ return {
25
+ success: false,
26
+ declined: false,
27
+ error: 'Multi-agent team not initialized. Delegation requires an active team.',
28
+ };
29
+ }
30
+ // Validate target agent exists
31
+ const targetAgent = deps.team.get(input.agentId);
32
+ if (!targetAgent) {
33
+ return {
34
+ success: false,
35
+ declined: false,
36
+ error: `Agent '${input.agentId}' not found in team. Available agents: ${deps.team.getAgentIds().join(', ')}`,
37
+ };
38
+ }
39
+ // Validate coordinator is active (only coordinator can delegate)
40
+ if (!deps.team.isActiveCoordinator()) {
41
+ return {
42
+ success: false,
43
+ declined: false,
44
+ error: 'Only the coordinator can delegate tasks. Use $<agent> to switch agents manually.',
45
+ };
46
+ }
47
+ // V2 mode: use TerminalUI overlay for approval
48
+ if (deps.showDelegateOverlayV2) {
49
+ const result = await deps.showDelegateOverlayV2({
50
+ agentId: input.agentId,
51
+ agentDisplayName: targetAgent.displayName,
52
+ task: input.task,
53
+ reason: input.reason,
54
+ });
55
+ if (!result.approved) {
56
+ return {
57
+ success: false,
58
+ declined: true,
59
+ };
60
+ }
61
+ // Set pending delegation - REPL will handle the switch after agent finishes
62
+ deps.pendingDelegation = {
63
+ agentId: input.agentId,
64
+ task: input.task,
65
+ };
66
+ return {
67
+ success: true,
68
+ declined: false,
69
+ };
70
+ }
71
+ // Fallback: no V2 overlay available, use simple ask_user_simple handler
72
+ const askHandler = deps.showAskUserSimpleOverlayV2;
73
+ if (askHandler) {
74
+ const question = input.reason
75
+ ? `Delegate to $${input.agentId} (${targetAgent.displayName})?\n${chalk.dim(`Reason: ${input.reason}`)}\n${chalk.dim(`Task: ${truncate(input.task, 100)}`)}`
76
+ : `Delegate to $${input.agentId} (${targetAgent.displayName})?\n${chalk.dim(`Task: ${truncate(input.task, 100)}`)}`;
77
+ const result = await askHandler({
78
+ question,
79
+ options: ['Yes', 'No'],
80
+ allowCustom: false,
81
+ });
82
+ if (result.skipped || result.answer === 'No') {
83
+ return {
84
+ success: false,
85
+ declined: true,
86
+ };
87
+ }
88
+ // Set pending delegation
89
+ deps.pendingDelegation = {
90
+ agentId: input.agentId,
91
+ task: input.task,
92
+ };
93
+ return {
94
+ success: true,
95
+ declined: false,
96
+ };
97
+ }
98
+ // No handler available
99
+ return {
100
+ success: false,
101
+ declined: false,
102
+ error: 'Delegation UI not available. Ensure you are running in interactive mode.',
103
+ };
104
+ });
105
+ // Register delegate_background handler for coordinator mode
106
+ registerDelegateBackgroundHandler(async (input) => {
107
+ // Yield to event loop (consistent with delegate handler pattern)
108
+ await new Promise((resolve) => setImmediate(resolve));
109
+ // Validate team exists
110
+ if (!deps.team) {
111
+ return {
112
+ delegationId: '',
113
+ status: 'running',
114
+ error: 'Multi-agent team not initialized. Background delegation requires an active team.',
115
+ };
116
+ }
117
+ // Validate target agent exists
118
+ const targetAgent = deps.team.get(input.agentId);
119
+ if (!targetAgent) {
120
+ return {
121
+ delegationId: '',
122
+ status: 'running',
123
+ error: `Agent '${input.agentId}' not found in team. Available agents: ${deps.team.getAgentIds().join(', ')}`,
124
+ };
125
+ }
126
+ // Validate coordinator is active
127
+ if (!deps.team.isActiveCoordinator()) {
128
+ return {
129
+ delegationId: '',
130
+ status: 'running',
131
+ error: 'Only the coordinator can use delegate_background.',
132
+ };
133
+ }
134
+ // Validate background delegation callback is available
135
+ if (!deps.runBackgroundDelegation) {
136
+ return {
137
+ delegationId: '',
138
+ status: 'running',
139
+ error: 'Background delegation not available. Ensure REPL is initialized.',
140
+ };
141
+ }
142
+ // Create delegation in tracker
143
+ const tracker = getDelegationTracker();
144
+ const delegation = tracker.create({
145
+ coordinatorId: 'default',
146
+ targetAgentId: input.agentId,
147
+ task: input.task,
148
+ expectedOutput: input.expectedOutput,
149
+ todoIndex: input.todoIndex,
150
+ });
151
+ // Build delegation preamble
152
+ const preambleLines = [
153
+ '[DELEGATION from coordinator]',
154
+ `Delegation ID: ${delegation.id}`,
155
+ ];
156
+ if (input.todoIndex !== undefined) {
157
+ preambleLines.push(`Associated todo: #${String(input.todoIndex)}`);
158
+ }
159
+ if (input.expectedOutput) {
160
+ preambleLines.push(`Expected output: ${input.expectedOutput}`);
161
+ }
162
+ preambleLines.push('', 'SCOPE: Focus ONLY on the task below. Do NOT pick up, start, or ask about', 'other tasks from the todo list, even if they appear unassigned. When your', 'task is complete, report your results and stop.', '', 'Task:', input.task, '', 'When done, save your key output as an artifact so the coordinator can reference it.');
163
+ if (input.todoIndex !== undefined) {
164
+ preambleLines.push(`When complete, mark todo #${String(input.todoIndex)} as done using the todo_update tool.`);
165
+ }
166
+ const message = preambleLines.join('\n');
167
+ // Run the specialist in background (or queue if busy)
168
+ const runResult = deps.runBackgroundDelegation(input.agentId, message);
169
+ if (runResult === null) {
170
+ tracker.fail(delegation.id, 'Failed to start background agent');
171
+ return {
172
+ delegationId: delegation.id,
173
+ status: 'running',
174
+ error: 'Failed to start background agent. Agent may not be available.',
175
+ };
176
+ }
177
+ // Update delegation status
178
+ if (runResult === 'running') {
179
+ tracker.updateStatus(delegation.id, 'running');
180
+ }
181
+ // 'queued' stays as 'pending' in the tracker
182
+ return {
183
+ delegationId: delegation.id,
184
+ status: runResult,
185
+ };
186
+ });
187
+ // Register handoff handler for specialist-to-specialist handoff
188
+ registerHandoffHandler(async (input) => {
189
+ // Wait for event loop to process any pending tool_end events
190
+ await new Promise((resolve) => setImmediate(resolve));
191
+ // Flush any accumulated text BEFORE showing the overlay
192
+ deps.flushTextBuffer?.();
193
+ // Validate team exists
194
+ if (!deps.team) {
195
+ return {
196
+ success: false,
197
+ declined: false,
198
+ error: 'Multi-agent team not initialized. Handoff requires an active team.',
199
+ };
200
+ }
201
+ // Validate target agent exists
202
+ const targetAgent = deps.team.get(input.agentId);
203
+ if (!targetAgent) {
204
+ return {
205
+ success: false,
206
+ declined: false,
207
+ error: `Agent '${input.agentId}' not found in team. Available agents: ${deps.team.getAgentIds().join(', ')}`,
208
+ };
209
+ }
210
+ // Determine source agent (the one performing the handoff)
211
+ const sourceAgentId = deps.team.activeAgentId;
212
+ // Cannot hand off to yourself
213
+ if (input.agentId === sourceAgentId) {
214
+ return {
215
+ success: false,
216
+ declined: false,
217
+ error: 'Cannot hand off to yourself.',
218
+ };
219
+ }
220
+ // One-hop rule: if this agent was itself handed a task, deny re-handoff
221
+ // Exception: handing back to coordinator (default) is always allowed
222
+ const isCoordinatorTarget = deps.team.isCoordinator(input.agentId);
223
+ if (deps.team.wasHandedTo(sourceAgentId) && !isCoordinatorTarget) {
224
+ const handoffSource = deps.team.getHandoffSource(sourceAgentId);
225
+ return {
226
+ success: false,
227
+ declined: false,
228
+ error: `You were handed this task by $${handoffSource ?? 'unknown'}. ` +
229
+ 'Complete it or hand it back to the coordinator ($default). ' +
230
+ 'You cannot re-hand off to another specialist.',
231
+ };
232
+ }
233
+ // Check auto-approve: if the source agent has autoApproveHandoff, skip overlay
234
+ const sourceTeamAgent = deps.team.get(sourceAgentId);
235
+ const autoApprove = sourceTeamAgent?.autoApproveHandoff === true;
236
+ if (!autoApprove) {
237
+ // Show approval overlay (reuse delegate overlay)
238
+ if (deps.showDelegateOverlayV2) {
239
+ const result = await deps.showDelegateOverlayV2({
240
+ agentId: input.agentId,
241
+ agentDisplayName: targetAgent.displayName,
242
+ task: input.task,
243
+ reason: input.reason,
244
+ });
245
+ if (!result.approved) {
246
+ return {
247
+ success: false,
248
+ declined: true,
249
+ };
250
+ }
251
+ }
252
+ else if (deps.showAskUserSimpleOverlayV2) {
253
+ // Fallback: use simple ask_user_simple handler
254
+ const question = input.reason
255
+ ? `Hand off to $${input.agentId} (${targetAgent.displayName})?\n${chalk.dim(`Reason: ${input.reason}`)}\n${chalk.dim(`Task: ${truncate(input.task, 100)}`)}`
256
+ : `Hand off to $${input.agentId} (${targetAgent.displayName})?\n${chalk.dim(`Task: ${truncate(input.task, 100)}`)}`;
257
+ const result = await deps.showAskUserSimpleOverlayV2({
258
+ question,
259
+ options: ['Yes', 'No'],
260
+ allowCustom: false,
261
+ });
262
+ if (result.skipped || result.answer === 'No') {
263
+ return {
264
+ success: false,
265
+ declined: true,
266
+ };
267
+ }
268
+ }
269
+ else {
270
+ // No handler available
271
+ return {
272
+ success: false,
273
+ declined: false,
274
+ error: 'Handoff UI not available. Ensure you are running in interactive mode.',
275
+ };
276
+ }
277
+ }
278
+ // Record the handoff for one-hop tracking
279
+ deps.team.recordHandoff(input.agentId, sourceAgentId);
280
+ // Set pending delegation - REPL will handle the switch after agent finishes
281
+ // Reuses the same pendingDelegation mechanism as delegate
282
+ deps.pendingDelegation = {
283
+ agentId: input.agentId,
284
+ task: input.task,
285
+ };
286
+ return {
287
+ success: true,
288
+ declined: false,
289
+ };
290
+ });
291
+ }