@compilr-dev/cli 0.5.0 → 0.5.2

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 (587) hide show
  1. package/LICENSE +108 -0
  2. package/README.md +237 -69
  3. package/dist/.tsbuildinfo.app +1 -0
  4. package/dist/.tsbuildinfo.data +1 -0
  5. package/dist/.tsbuildinfo.domain +1 -0
  6. package/dist/.tsbuildinfo.foundation +1 -0
  7. package/dist/agent.d.ts +61 -4
  8. package/dist/agent.js +241 -245
  9. package/dist/anchors/index.d.ts +1 -1
  10. package/dist/anchors/index.js +1 -1
  11. package/dist/anchors/project-anchors.d.ts +2 -2
  12. package/dist/anchors/project-anchors.js +1 -1
  13. package/dist/auth/api-client.d.ts +124 -0
  14. package/dist/auth/api-client.js +261 -0
  15. package/dist/auth/index.d.ts +172 -0
  16. package/dist/auth/index.js +545 -0
  17. package/dist/auth/storage.d.ts +52 -0
  18. package/dist/auth/storage.js +118 -0
  19. package/dist/changelog/index.d.ts +16 -0
  20. package/dist/changelog/index.js +24 -0
  21. package/dist/changelog/releases.d.ts +17 -0
  22. package/dist/changelog/releases.js +63 -0
  23. package/dist/commands-v2/handlers/auth.d.ts +10 -0
  24. package/dist/commands-v2/handlers/auth.js +118 -0
  25. package/dist/commands-v2/handlers/background.d.ts +14 -0
  26. package/dist/commands-v2/handlers/background.js +276 -0
  27. package/dist/commands-v2/handlers/context.js +286 -81
  28. package/dist/commands-v2/handlers/core.d.ts +1 -0
  29. package/dist/commands-v2/handlers/core.js +133 -8
  30. package/dist/commands-v2/handlers/debug.js +18 -0
  31. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  32. package/dist/commands-v2/handlers/delegations.js +29 -0
  33. package/dist/commands-v2/handlers/files.d.ts +8 -0
  34. package/dist/commands-v2/handlers/files.js +162 -0
  35. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  36. package/dist/commands-v2/handlers/filter.js +130 -0
  37. package/dist/commands-v2/handlers/games.d.ts +7 -0
  38. package/dist/commands-v2/handlers/games.js +57 -0
  39. package/dist/commands-v2/handlers/index.d.ts +13 -0
  40. package/dist/commands-v2/handlers/index.js +39 -0
  41. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  42. package/dist/commands-v2/handlers/mcp.js +39 -0
  43. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  44. package/dist/commands-v2/handlers/notifications.js +34 -0
  45. package/dist/commands-v2/handlers/project.js +295 -31
  46. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  47. package/dist/commands-v2/handlers/reset.js +118 -0
  48. package/dist/commands-v2/handlers/session.d.ts +161 -0
  49. package/dist/commands-v2/handlers/session.js +805 -0
  50. package/dist/commands-v2/handlers/settings.d.ts +2 -0
  51. package/dist/commands-v2/handlers/settings.js +217 -35
  52. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  53. package/dist/commands-v2/handlers/tasks.js +36 -0
  54. package/dist/commands-v2/handlers/team.d.ts +9 -0
  55. package/dist/commands-v2/handlers/team.js +549 -0
  56. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  57. package/dist/commands-v2/handlers/terminals.js +34 -0
  58. package/dist/commands-v2/index.d.ts +3 -2
  59. package/dist/commands-v2/index.js +4 -1
  60. package/dist/commands-v2/registry.d.ts +15 -0
  61. package/dist/commands-v2/registry.js +34 -0
  62. package/dist/commands-v2/types.d.ts +81 -3
  63. package/dist/commands.js +13 -0
  64. package/dist/compilr-diff-companion.vsix +0 -0
  65. package/dist/db/index.js +98 -4
  66. package/dist/db/repositories/document-repository.d.ts +2 -0
  67. package/dist/db/repositories/document-repository.js +6 -1
  68. package/dist/db/repositories/index.d.ts +2 -0
  69. package/dist/db/repositories/index.js +1 -0
  70. package/dist/db/repositories/plan-repository.d.ts +101 -0
  71. package/dist/db/repositories/plan-repository.js +275 -0
  72. package/dist/db/repositories/project-repository.d.ts +6 -0
  73. package/dist/db/repositories/project-repository.js +41 -0
  74. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  75. package/dist/db/repositories/work-item-repository.js +69 -4
  76. package/dist/db/schema.d.ts +40 -3
  77. package/dist/db/schema.js +66 -3
  78. package/dist/episodes/index.d.ts +20 -0
  79. package/dist/episodes/index.js +27 -0
  80. package/dist/episodes/recorder.d.ts +51 -0
  81. package/dist/episodes/recorder.js +195 -0
  82. package/dist/episodes/significant-work.d.ts +21 -0
  83. package/dist/episodes/significant-work.js +56 -0
  84. package/dist/episodes/store.d.ts +38 -0
  85. package/dist/episodes/store.js +199 -0
  86. package/dist/episodes/types.d.ts +35 -0
  87. package/dist/episodes/types.js +6 -0
  88. package/dist/episodes/work-at-risk.d.ts +12 -0
  89. package/dist/episodes/work-at-risk.js +38 -0
  90. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  91. package/dist/episodes/work-summary-anchor.js +73 -0
  92. package/dist/games/coins.d.ts +66 -0
  93. package/dist/games/coins.js +165 -0
  94. package/dist/games/game-base.d.ts +84 -0
  95. package/dist/games/game-base.js +204 -0
  96. package/dist/games/index.d.ts +16 -0
  97. package/dist/games/index.js +49 -0
  98. package/dist/games/scores.d.ts +69 -0
  99. package/dist/games/scores.js +191 -0
  100. package/dist/games/tetris/board.d.ts +59 -0
  101. package/dist/games/tetris/board.js +170 -0
  102. package/dist/games/tetris/index.d.ts +109 -0
  103. package/dist/games/tetris/index.js +610 -0
  104. package/dist/games/tetris/pieces.d.ts +44 -0
  105. package/dist/games/tetris/pieces.js +271 -0
  106. package/dist/games/tetris/renderer.d.ts +26 -0
  107. package/dist/games/tetris/renderer.js +77 -0
  108. package/dist/guide/guide-content.d.ts +23 -0
  109. package/dist/guide/guide-content.js +196 -0
  110. package/dist/guide/index.d.ts +8 -0
  111. package/dist/guide/index.js +7 -0
  112. package/dist/guide/shared-content.d.ts +37 -0
  113. package/dist/guide/shared-content.js +1272 -0
  114. package/dist/guide/tutorial-helpers.d.ts +57 -0
  115. package/dist/guide/tutorial-helpers.js +147 -0
  116. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  117. package/dist/handlers/ask-user-handlers.js +104 -0
  118. package/dist/handlers/delegation-handlers.d.ts +34 -0
  119. package/dist/handlers/delegation-handlers.js +291 -0
  120. package/dist/handlers/permission-handler.d.ts +30 -0
  121. package/dist/handlers/permission-handler.js +205 -0
  122. package/dist/index.d.ts +11 -1
  123. package/dist/index.js +448 -271
  124. package/dist/input-handlers/memory-handler.d.ts +1 -1
  125. package/dist/input-handlers/memory-handler.js +2 -1
  126. package/dist/models/index.d.ts +10 -0
  127. package/dist/models/index.js +12 -0
  128. package/dist/models/model-registry.d.ts +38 -0
  129. package/dist/models/model-registry.js +69 -0
  130. package/dist/models/model-tiers.d.ts +28 -0
  131. package/dist/models/model-tiers.js +71 -0
  132. package/dist/models/model-validation.d.ts +25 -0
  133. package/dist/models/model-validation.js +291 -0
  134. package/dist/models/ollama-models.d.ts +73 -0
  135. package/dist/models/ollama-models.js +178 -0
  136. package/dist/models/provider-types.d.ts +6 -0
  137. package/dist/models/provider-types.js +1 -0
  138. package/dist/models/providers.d.ts +35 -0
  139. package/dist/models/providers.js +58 -0
  140. package/dist/models/types.d.ts +4 -0
  141. package/dist/models/types.js +4 -0
  142. package/dist/multi-agent/activity.d.ts +21 -0
  143. package/dist/multi-agent/activity.js +34 -0
  144. package/dist/multi-agent/agent-selection.d.ts +55 -0
  145. package/dist/multi-agent/agent-selection.js +90 -0
  146. package/dist/multi-agent/artifacts.d.ts +197 -0
  147. package/dist/multi-agent/artifacts.js +379 -0
  148. package/dist/multi-agent/checkpointer.d.ts +138 -0
  149. package/dist/multi-agent/checkpointer.js +471 -0
  150. package/dist/multi-agent/collision-utils.d.ts +16 -0
  151. package/dist/multi-agent/collision-utils.js +28 -0
  152. package/dist/multi-agent/context-resolver.d.ts +97 -0
  153. package/dist/multi-agent/context-resolver.js +316 -0
  154. package/dist/multi-agent/custom-agents.d.ts +83 -0
  155. package/dist/multi-agent/custom-agents.js +227 -0
  156. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  157. package/dist/multi-agent/delegation-tracker.js +243 -0
  158. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  159. package/dist/multi-agent/file-lock-hook.js +97 -0
  160. package/dist/multi-agent/file-locks.d.ts +58 -0
  161. package/dist/multi-agent/file-locks.js +194 -0
  162. package/dist/multi-agent/index.d.ts +24 -0
  163. package/dist/multi-agent/index.js +30 -0
  164. package/dist/multi-agent/mention-parser.d.ts +64 -0
  165. package/dist/multi-agent/mention-parser.js +146 -0
  166. package/dist/multi-agent/notification-manager.d.ts +84 -0
  167. package/dist/multi-agent/notification-manager.js +224 -0
  168. package/dist/multi-agent/pending-requests.d.ts +122 -0
  169. package/dist/multi-agent/pending-requests.js +155 -0
  170. package/dist/multi-agent/session-registry.d.ts +139 -0
  171. package/dist/multi-agent/session-registry.js +514 -0
  172. package/dist/multi-agent/shared-context.d.ts +293 -0
  173. package/dist/multi-agent/shared-context.js +671 -0
  174. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  175. package/dist/multi-agent/skill-requirements.js +178 -0
  176. package/dist/multi-agent/task-assignment.d.ts +69 -0
  177. package/dist/multi-agent/task-assignment.js +123 -0
  178. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  179. package/dist/multi-agent/task-suggestion.js +72 -0
  180. package/dist/multi-agent/team-agent.d.ts +201 -0
  181. package/dist/multi-agent/team-agent.js +488 -0
  182. package/dist/multi-agent/team.d.ts +286 -0
  183. package/dist/multi-agent/team.js +610 -0
  184. package/dist/multi-agent/tool-config.d.ts +110 -0
  185. package/dist/multi-agent/tool-config.js +661 -0
  186. package/dist/multi-agent/types.d.ts +211 -0
  187. package/dist/multi-agent/types.js +617 -0
  188. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  189. package/dist/prompts/plan-mode-prompt.js +95 -0
  190. package/dist/repl-helpers.js +5 -2
  191. package/dist/repl-v2.d.ts +401 -2
  192. package/dist/repl-v2.js +2588 -65
  193. package/dist/session/index.d.ts +6 -0
  194. package/dist/session/index.js +6 -0
  195. package/dist/session/project-session-manager.d.ts +158 -0
  196. package/dist/session/project-session-manager.js +650 -0
  197. package/dist/settings/index.d.ts +133 -13
  198. package/dist/settings/index.js +329 -24
  199. package/dist/settings/mcp-config.d.ts +76 -0
  200. package/dist/settings/mcp-config.js +143 -0
  201. package/dist/settings/paths.d.ts +4 -0
  202. package/dist/settings/paths.js +6 -0
  203. package/dist/shared-handlers.d.ts +62 -0
  204. package/dist/shared-handlers.js +48 -0
  205. package/dist/system-prompt/builder.d.ts +5 -0
  206. package/dist/system-prompt/builder.js +4 -0
  207. package/dist/system-prompt/index.d.ts +18 -0
  208. package/dist/system-prompt/index.js +18 -0
  209. package/dist/system-prompt/modules.d.ts +5 -0
  210. package/dist/system-prompt/modules.js +4 -0
  211. package/dist/tabbed-menu.js +2 -1
  212. package/dist/templates/compilr-md-import.d.ts +16 -0
  213. package/dist/templates/compilr-md-import.js +241 -0
  214. package/dist/templates/compilr-md.js +10 -61
  215. package/dist/templates/config-json.d.ts +1 -25
  216. package/dist/templates/index.d.ts +2 -0
  217. package/dist/templates/index.js +34 -73
  218. package/dist/tool-names.d.ts +113 -0
  219. package/dist/tool-names.js +239 -0
  220. package/dist/tools/ask-user-simple.d.ts +1 -1
  221. package/dist/tools/ask-user-simple.js +2 -1
  222. package/dist/tools/ask-user.d.ts +1 -1
  223. package/dist/tools/ask-user.js +2 -1
  224. package/dist/tools/backlog.d.ts +2 -2
  225. package/dist/tools/backlog.js +1 -1
  226. package/dist/tools/db-tools.d.ts +13 -61
  227. package/dist/tools/db-tools.js +12 -13
  228. package/dist/tools/delegate-background.d.ts +27 -0
  229. package/dist/tools/delegate-background.js +115 -0
  230. package/dist/tools/delegate.d.ts +22 -0
  231. package/dist/tools/delegate.js +97 -0
  232. package/dist/tools/delegation-status.d.ts +16 -0
  233. package/dist/tools/delegation-status.js +128 -0
  234. package/dist/tools/guide-tool.d.ts +12 -0
  235. package/dist/tools/guide-tool.js +59 -0
  236. package/dist/tools/handoff.d.ts +25 -0
  237. package/dist/tools/handoff.js +99 -0
  238. package/dist/tools/meta-tools.d.ts +26 -0
  239. package/dist/tools/meta-tools.js +47 -0
  240. package/dist/tools/platform-adapter.d.ts +35 -0
  241. package/dist/tools/platform-adapter.js +404 -0
  242. package/dist/tools/project-db.d.ts +5 -73
  243. package/dist/tools/project-db.js +5 -336
  244. package/dist/tools.d.ts +67 -2
  245. package/dist/tools.js +240 -48
  246. package/dist/ui/autocomplete-controller.d.ts +42 -0
  247. package/dist/ui/autocomplete-controller.js +384 -0
  248. package/dist/ui/base/index.d.ts +1 -1
  249. package/dist/ui/base/index.js +1 -1
  250. package/dist/ui/base/overlay-base-v2.d.ts +10 -0
  251. package/dist/ui/base/overlay-base-v2.js +14 -0
  252. package/dist/ui/base/render-utils.d.ts +19 -0
  253. package/dist/ui/base/render-utils.js +25 -0
  254. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
  255. package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
  256. package/dist/ui/constants/labels.d.ts +14 -0
  257. package/dist/ui/constants/labels.js +52 -0
  258. package/dist/ui/conversation-store.d.ts +55 -0
  259. package/dist/ui/conversation-store.js +107 -0
  260. package/dist/ui/conversation.js +11 -13
  261. package/dist/ui/diff.d.ts +7 -1
  262. package/dist/ui/diff.js +85 -48
  263. package/dist/ui/ephemeral.js +3 -9
  264. package/dist/ui/file-autocomplete.d.ts +24 -0
  265. package/dist/ui/file-autocomplete.js +56 -0
  266. package/dist/ui/footer-renderer.d.ts +69 -0
  267. package/dist/ui/footer-renderer.js +431 -0
  268. package/dist/ui/footer.d.ts +74 -7
  269. package/dist/ui/footer.js +173 -16
  270. package/dist/ui/input-controller.d.ts +51 -0
  271. package/dist/ui/input-controller.js +176 -0
  272. package/dist/ui/input-prompt.d.ts +19 -0
  273. package/dist/ui/input-prompt.js +206 -14
  274. package/dist/ui/keyboard-handler.d.ts +57 -0
  275. package/dist/ui/keyboard-handler.js +557 -0
  276. package/dist/ui/live-region-facade.d.ts +42 -0
  277. package/dist/ui/live-region-facade.js +205 -0
  278. package/dist/ui/live-region.d.ts +0 -4
  279. package/dist/ui/live-region.js +6 -14
  280. package/dist/ui/mascot/renderer.d.ts +1 -1
  281. package/dist/ui/mascot/renderer.js +37 -2
  282. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  283. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  284. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  285. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  286. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  287. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  288. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  289. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  290. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  291. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  292. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  293. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  294. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  295. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  296. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  297. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  298. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  299. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  300. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  301. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  302. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  303. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  304. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  305. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  306. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  307. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  308. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  309. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  310. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  311. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  312. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  313. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  314. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  315. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  316. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  317. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  318. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  319. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  320. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  321. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  322. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  323. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  324. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  325. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  326. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  327. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  328. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  329. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  330. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  331. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  332. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  333. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  334. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  335. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  336. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  337. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  338. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  339. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  340. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  341. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  342. package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
  343. package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
  344. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  345. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  346. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  347. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  348. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
  349. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  350. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  351. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
  352. package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
  353. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  354. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  355. package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
  356. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
  357. package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
  358. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  359. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  360. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
  361. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
  362. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  363. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  364. package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
  365. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
  366. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
  367. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  368. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  369. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  370. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  371. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
  372. package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
  373. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  374. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  375. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  376. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  377. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
  378. package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
  379. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
  380. package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
  381. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  382. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  383. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  384. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  385. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  386. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  387. package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
  388. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  389. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  390. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  391. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  392. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  393. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  394. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
  395. package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
  396. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  397. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  398. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  399. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  400. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  401. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  402. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  403. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  404. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  405. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  406. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  407. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  408. package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
  409. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
  410. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
  411. package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +1 -0
  412. package/dist/ui/overlay/impl/workflow-overlay-v2.js +10 -4
  413. package/dist/ui/overlay/index.d.ts +20 -1
  414. package/dist/ui/overlay/index.js +19 -0
  415. package/dist/ui/overlay/types.d.ts +5 -0
  416. package/dist/ui/overlay-manager.d.ts +43 -0
  417. package/dist/ui/overlay-manager.js +238 -0
  418. package/dist/ui/overlays.js +4 -16
  419. package/dist/ui/permission-overlay.js +6 -5
  420. package/dist/ui/status-bar-controller.d.ts +33 -0
  421. package/dist/ui/status-bar-controller.js +99 -0
  422. package/dist/ui/subagent-renderer.js +3 -19
  423. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  424. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  425. package/dist/ui/terminal-line-builders.d.ts +17 -0
  426. package/dist/ui/terminal-line-builders.js +42 -0
  427. package/dist/ui/terminal-render-item.d.ts +16 -0
  428. package/dist/ui/terminal-render-item.js +267 -0
  429. package/dist/ui/terminal-renderer.d.ts +7 -8
  430. package/dist/ui/terminal-renderer.js +7 -8
  431. package/dist/ui/terminal-types.d.ts +179 -0
  432. package/dist/ui/terminal-types.js +34 -0
  433. package/dist/ui/terminal-ui.d.ts +144 -276
  434. package/dist/ui/terminal-ui.js +384 -1861
  435. package/dist/ui/todo-zone.d.ts +19 -1
  436. package/dist/ui/todo-zone.js +71 -13
  437. package/dist/ui/tool-formatters.js +696 -1
  438. package/dist/ui/turn-metrics.d.ts +56 -0
  439. package/dist/ui/turn-metrics.js +75 -0
  440. package/dist/ui/types.d.ts +28 -0
  441. package/dist/ui/types.js +1 -0
  442. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  443. package/dist/ui/vscode-diff-ipc.js +385 -0
  444. package/dist/utils/credentials.d.ts +24 -5
  445. package/dist/utils/credentials.js +123 -9
  446. package/dist/utils/format-tokens.d.ts +13 -0
  447. package/dist/utils/format-tokens.js +18 -0
  448. package/dist/utils/git-config.d.ts +26 -0
  449. package/dist/utils/git-config.js +54 -0
  450. package/dist/utils/message-utils.d.ts +61 -0
  451. package/dist/utils/message-utils.js +72 -0
  452. package/dist/utils/model-tiers.d.ts +8 -1
  453. package/dist/utils/model-tiers.js +38 -16
  454. package/dist/utils/open-browser.d.ts +5 -0
  455. package/dist/utils/open-browser.js +32 -0
  456. package/dist/utils/path-safety.js +3 -2
  457. package/dist/utils/project-detection.d.ts +58 -0
  458. package/dist/utils/project-detection.js +424 -0
  459. package/dist/utils/project-memory.js +2 -1
  460. package/dist/utils/project-status.d.ts +2 -2
  461. package/dist/utils/startup-perf.d.ts +18 -0
  462. package/dist/utils/startup-perf.js +60 -0
  463. package/dist/utils/token-tracker.d.ts +62 -0
  464. package/dist/utils/token-tracker.js +150 -0
  465. package/dist/utils/token-types.d.ts +23 -0
  466. package/dist/utils/token-types.js +18 -0
  467. package/dist/utils/types/config-types.d.ts +32 -0
  468. package/dist/utils/types/config-types.js +8 -0
  469. package/dist/utils/update-checker.d.ts +28 -0
  470. package/dist/utils/update-checker.js +106 -0
  471. package/dist/utils/version.d.ts +7 -0
  472. package/dist/utils/version.js +10 -0
  473. package/dist/utils/vscode-detect.d.ts +39 -0
  474. package/dist/utils/vscode-detect.js +137 -0
  475. package/package.json +27 -13
  476. package/dist/commands/handler-types.d.ts +0 -68
  477. package/dist/commands/handler-types.js +0 -8
  478. package/dist/commands/handlers/agent-commands.d.ts +0 -13
  479. package/dist/commands/handlers/agent-commands.js +0 -305
  480. package/dist/commands/handlers/design-commands.d.ts +0 -15
  481. package/dist/commands/handlers/design-commands.js +0 -334
  482. package/dist/commands/handlers/index.d.ts +0 -20
  483. package/dist/commands/handlers/index.js +0 -43
  484. package/dist/commands/handlers/overlay-commands.d.ts +0 -21
  485. package/dist/commands/handlers/overlay-commands.js +0 -287
  486. package/dist/commands/handlers/project-commands.d.ts +0 -11
  487. package/dist/commands/handlers/project-commands.js +0 -167
  488. package/dist/commands/handlers/simple-commands.d.ts +0 -19
  489. package/dist/commands/handlers/simple-commands.js +0 -144
  490. package/dist/commands/registry.d.ts +0 -50
  491. package/dist/commands/registry.js +0 -75
  492. package/dist/index.old.d.ts +0 -7
  493. package/dist/index.old.js +0 -1014
  494. package/dist/repl.d.ts +0 -149
  495. package/dist/repl.js +0 -1151
  496. package/dist/templates/claude-md.d.ts +0 -7
  497. package/dist/templates/claude-md.js +0 -189
  498. package/dist/test-autocomplete.d.ts +0 -7
  499. package/dist/test-autocomplete.js +0 -85
  500. package/dist/test-tabbed-menu.d.ts +0 -7
  501. package/dist/test-tabbed-menu.js +0 -25
  502. package/dist/tool-selector.d.ts +0 -71
  503. package/dist/tool-selector.js +0 -184
  504. package/dist/tools/anchor-tools.d.ts +0 -31
  505. package/dist/tools/anchor-tools.js +0 -255
  506. package/dist/tools/backlog-wrappers.d.ts +0 -54
  507. package/dist/tools/backlog-wrappers.js +0 -338
  508. package/dist/tools/document-db.d.ts +0 -43
  509. package/dist/tools/document-db.js +0 -220
  510. package/dist/tools/workitem-db.d.ts +0 -103
  511. package/dist/tools/workitem-db.js +0 -549
  512. package/dist/ui/agents-overlay-v2.d.ts +0 -43
  513. package/dist/ui/agents-overlay-v2.js +0 -809
  514. package/dist/ui/agents-overlay.d.ts +0 -12
  515. package/dist/ui/agents-overlay.js +0 -863
  516. package/dist/ui/anchors-overlay.d.ts +0 -12
  517. package/dist/ui/anchors-overlay.js +0 -775
  518. package/dist/ui/arch-type-overlay.d.ts +0 -15
  519. package/dist/ui/arch-type-overlay.js +0 -201
  520. package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
  521. package/dist/ui/ask-user-overlay-v2.js +0 -555
  522. package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
  523. package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
  524. package/dist/ui/backlog-overlay.d.ts +0 -32
  525. package/dist/ui/backlog-overlay.js +0 -652
  526. package/dist/ui/commands-overlay-v2.d.ts +0 -33
  527. package/dist/ui/commands-overlay-v2.js +0 -441
  528. package/dist/ui/commands-overlay.d.ts +0 -16
  529. package/dist/ui/commands-overlay.js +0 -439
  530. package/dist/ui/config-overlay.d.ts +0 -35
  531. package/dist/ui/config-overlay.js +0 -707
  532. package/dist/ui/docs-overlay.d.ts +0 -17
  533. package/dist/ui/docs-overlay.js +0 -303
  534. package/dist/ui/footer-v2.d.ts +0 -222
  535. package/dist/ui/footer-v2.js +0 -1349
  536. package/dist/ui/help-overlay-v2.d.ts +0 -34
  537. package/dist/ui/help-overlay-v2.js +0 -309
  538. package/dist/ui/help-overlay.d.ts +0 -16
  539. package/dist/ui/help-overlay.js +0 -316
  540. package/dist/ui/init-overlay-v2.d.ts +0 -34
  541. package/dist/ui/init-overlay-v2.js +0 -600
  542. package/dist/ui/init-overlay.d.ts +0 -34
  543. package/dist/ui/init-overlay.js +0 -604
  544. package/dist/ui/input-prompt-v2.d.ts +0 -180
  545. package/dist/ui/input-prompt-v2.js +0 -999
  546. package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
  547. package/dist/ui/iteration-limit-overlay-v2.js +0 -114
  548. package/dist/ui/keys-overlay-v2.d.ts +0 -41
  549. package/dist/ui/keys-overlay-v2.js +0 -248
  550. package/dist/ui/mascot-overlay-v2.d.ts +0 -41
  551. package/dist/ui/mascot-overlay-v2.js +0 -138
  552. package/dist/ui/mascot-overlay.d.ts +0 -21
  553. package/dist/ui/mascot-overlay.js +0 -146
  554. package/dist/ui/model-overlay-v2.d.ts +0 -49
  555. package/dist/ui/model-overlay-v2.js +0 -118
  556. package/dist/ui/model-overlay.d.ts +0 -27
  557. package/dist/ui/model-overlay.js +0 -221
  558. package/dist/ui/model-warning-overlay.d.ts +0 -30
  559. package/dist/ui/model-warning-overlay.js +0 -169
  560. package/dist/ui/new-overlay.d.ts +0 -34
  561. package/dist/ui/new-overlay.js +0 -604
  562. package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
  563. package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
  564. package/dist/ui/overlay/overlay-types.d.ts +0 -128
  565. package/dist/ui/overlay/overlay-types.js +0 -22
  566. package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
  567. package/dist/ui/overlays/help-overlay-v2.js +0 -198
  568. package/dist/ui/overlays/index.d.ts +0 -11
  569. package/dist/ui/overlays/index.js +0 -11
  570. package/dist/ui/permission-overlay-v2.d.ts +0 -36
  571. package/dist/ui/permission-overlay-v2.js +0 -380
  572. package/dist/ui/projects-overlay.d.ts +0 -19
  573. package/dist/ui/projects-overlay.js +0 -484
  574. package/dist/ui/theme-overlay-v2.d.ts +0 -42
  575. package/dist/ui/theme-overlay-v2.js +0 -135
  576. package/dist/ui/theme-overlay.d.ts +0 -24
  577. package/dist/ui/theme-overlay.js +0 -127
  578. package/dist/ui/tools-overlay-v2.d.ts +0 -47
  579. package/dist/ui/tools-overlay-v2.js +0 -218
  580. package/dist/ui/tools-overlay.d.ts +0 -34
  581. package/dist/ui/tools-overlay.js +0 -230
  582. package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
  583. package/dist/ui/tutorial-overlay-v2.js +0 -1035
  584. package/dist/ui/tutorial-overlay.d.ts +0 -11
  585. package/dist/ui/tutorial-overlay.js +0 -1034
  586. package/dist/ui/workflow-overlay.d.ts +0 -22
  587. 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
+ }