@compilr-dev/cli 0.4.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 (634) hide show
  1. package/README.md +254 -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 +134 -4
  7. package/dist/agent.js +345 -166
  8. package/dist/anchors/index.d.ts +9 -0
  9. package/dist/anchors/index.js +9 -0
  10. package/dist/anchors/project-anchors.d.ts +79 -0
  11. package/dist/anchors/project-anchors.js +202 -0
  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/index.d.ts +2 -1
  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.d.ts +13 -0
  28. package/dist/commands-v2/handlers/context.js +533 -0
  29. package/dist/commands-v2/handlers/core.d.ts +14 -0
  30. package/dist/commands-v2/handlers/core.js +290 -0
  31. package/dist/commands-v2/handlers/debug.d.ts +11 -0
  32. package/dist/commands-v2/handlers/debug.js +177 -0
  33. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  34. package/dist/commands-v2/handlers/delegations.js +29 -0
  35. package/dist/commands-v2/handlers/files.d.ts +8 -0
  36. package/dist/commands-v2/handlers/files.js +162 -0
  37. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  38. package/dist/commands-v2/handlers/filter.js +130 -0
  39. package/dist/commands-v2/handlers/games.d.ts +7 -0
  40. package/dist/commands-v2/handlers/games.js +57 -0
  41. package/dist/commands-v2/handlers/index.d.ts +25 -0
  42. package/dist/commands-v2/handlers/index.js +63 -0
  43. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  44. package/dist/commands-v2/handlers/mcp.js +39 -0
  45. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  46. package/dist/commands-v2/handlers/notifications.js +34 -0
  47. package/dist/commands-v2/handlers/project.d.ts +22 -0
  48. package/dist/commands-v2/handlers/project.js +1035 -0
  49. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  50. package/dist/commands-v2/handlers/reset.js +118 -0
  51. package/dist/commands-v2/handlers/session.d.ts +161 -0
  52. package/dist/commands-v2/handlers/session.js +805 -0
  53. package/dist/commands-v2/handlers/settings.d.ts +17 -0
  54. package/dist/commands-v2/handlers/settings.js +417 -0
  55. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  56. package/dist/commands-v2/handlers/tasks.js +36 -0
  57. package/dist/commands-v2/handlers/team.d.ts +9 -0
  58. package/dist/commands-v2/handlers/team.js +549 -0
  59. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  60. package/dist/commands-v2/handlers/terminals.js +34 -0
  61. package/dist/commands-v2/index.d.ts +14 -0
  62. package/dist/commands-v2/index.js +18 -0
  63. package/dist/commands-v2/registry.d.ts +52 -0
  64. package/dist/commands-v2/registry.js +114 -0
  65. package/dist/commands-v2/types.d.ts +153 -0
  66. package/dist/commands-v2/types.js +7 -0
  67. package/dist/commands.js +123 -7
  68. package/dist/compilr-diff-companion.vsix +0 -0
  69. package/dist/db/index.js +98 -4
  70. package/dist/db/repositories/document-repository.d.ts +2 -0
  71. package/dist/db/repositories/document-repository.js +5 -1
  72. package/dist/db/repositories/index.d.ts +2 -0
  73. package/dist/db/repositories/index.js +1 -0
  74. package/dist/db/repositories/plan-repository.d.ts +101 -0
  75. package/dist/db/repositories/plan-repository.js +275 -0
  76. package/dist/db/repositories/project-repository.d.ts +6 -0
  77. package/dist/db/repositories/project-repository.js +41 -0
  78. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  79. package/dist/db/repositories/work-item-repository.js +69 -4
  80. package/dist/db/schema.d.ts +40 -3
  81. package/dist/db/schema.js +66 -3
  82. package/dist/episodes/index.d.ts +20 -0
  83. package/dist/episodes/index.js +27 -0
  84. package/dist/episodes/recorder.d.ts +51 -0
  85. package/dist/episodes/recorder.js +195 -0
  86. package/dist/episodes/significant-work.d.ts +21 -0
  87. package/dist/episodes/significant-work.js +56 -0
  88. package/dist/episodes/store.d.ts +38 -0
  89. package/dist/episodes/store.js +199 -0
  90. package/dist/episodes/types.d.ts +35 -0
  91. package/dist/episodes/types.js +6 -0
  92. package/dist/episodes/work-at-risk.d.ts +12 -0
  93. package/dist/episodes/work-at-risk.js +38 -0
  94. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  95. package/dist/episodes/work-summary-anchor.js +73 -0
  96. package/dist/games/coins.d.ts +66 -0
  97. package/dist/games/coins.js +165 -0
  98. package/dist/games/game-base.d.ts +84 -0
  99. package/dist/games/game-base.js +204 -0
  100. package/dist/games/index.d.ts +16 -0
  101. package/dist/games/index.js +49 -0
  102. package/dist/games/scores.d.ts +69 -0
  103. package/dist/games/scores.js +191 -0
  104. package/dist/games/tetris/board.d.ts +59 -0
  105. package/dist/games/tetris/board.js +170 -0
  106. package/dist/games/tetris/index.d.ts +109 -0
  107. package/dist/games/tetris/index.js +610 -0
  108. package/dist/games/tetris/pieces.d.ts +44 -0
  109. package/dist/games/tetris/pieces.js +271 -0
  110. package/dist/games/tetris/renderer.d.ts +26 -0
  111. package/dist/games/tetris/renderer.js +77 -0
  112. package/dist/guide/guide-content.d.ts +23 -0
  113. package/dist/guide/guide-content.js +196 -0
  114. package/dist/guide/index.d.ts +8 -0
  115. package/dist/guide/index.js +7 -0
  116. package/dist/guide/shared-content.d.ts +37 -0
  117. package/dist/guide/shared-content.js +1272 -0
  118. package/dist/guide/tutorial-helpers.d.ts +57 -0
  119. package/dist/guide/tutorial-helpers.js +147 -0
  120. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  121. package/dist/handlers/ask-user-handlers.js +104 -0
  122. package/dist/handlers/delegation-handlers.d.ts +34 -0
  123. package/dist/handlers/delegation-handlers.js +291 -0
  124. package/dist/handlers/permission-handler.d.ts +30 -0
  125. package/dist/handlers/permission-handler.js +205 -0
  126. package/dist/index.d.ts +11 -1
  127. package/dist/index.js +615 -179
  128. package/dist/input-handlers/index.d.ts +7 -0
  129. package/dist/input-handlers/index.js +7 -0
  130. package/dist/input-handlers/memory-handler.d.ts +26 -0
  131. package/dist/input-handlers/memory-handler.js +69 -0
  132. package/dist/models/index.d.ts +10 -0
  133. package/dist/models/index.js +12 -0
  134. package/dist/models/model-registry.d.ts +38 -0
  135. package/dist/models/model-registry.js +69 -0
  136. package/dist/models/model-tiers.d.ts +28 -0
  137. package/dist/models/model-tiers.js +71 -0
  138. package/dist/models/model-validation.d.ts +25 -0
  139. package/dist/models/model-validation.js +291 -0
  140. package/dist/models/ollama-models.d.ts +73 -0
  141. package/dist/models/ollama-models.js +178 -0
  142. package/dist/models/provider-types.d.ts +6 -0
  143. package/dist/models/provider-types.js +1 -0
  144. package/dist/models/providers.d.ts +35 -0
  145. package/dist/models/providers.js +58 -0
  146. package/dist/models/types.d.ts +4 -0
  147. package/dist/models/types.js +4 -0
  148. package/dist/multi-agent/activity.d.ts +21 -0
  149. package/dist/multi-agent/activity.js +34 -0
  150. package/dist/multi-agent/agent-selection.d.ts +55 -0
  151. package/dist/multi-agent/agent-selection.js +90 -0
  152. package/dist/multi-agent/artifacts.d.ts +197 -0
  153. package/dist/multi-agent/artifacts.js +379 -0
  154. package/dist/multi-agent/checkpointer.d.ts +138 -0
  155. package/dist/multi-agent/checkpointer.js +471 -0
  156. package/dist/multi-agent/collision-utils.d.ts +16 -0
  157. package/dist/multi-agent/collision-utils.js +28 -0
  158. package/dist/multi-agent/context-resolver.d.ts +97 -0
  159. package/dist/multi-agent/context-resolver.js +316 -0
  160. package/dist/multi-agent/custom-agents.d.ts +83 -0
  161. package/dist/multi-agent/custom-agents.js +227 -0
  162. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  163. package/dist/multi-agent/delegation-tracker.js +243 -0
  164. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  165. package/dist/multi-agent/file-lock-hook.js +97 -0
  166. package/dist/multi-agent/file-locks.d.ts +58 -0
  167. package/dist/multi-agent/file-locks.js +194 -0
  168. package/dist/multi-agent/index.d.ts +24 -0
  169. package/dist/multi-agent/index.js +30 -0
  170. package/dist/multi-agent/mention-parser.d.ts +64 -0
  171. package/dist/multi-agent/mention-parser.js +146 -0
  172. package/dist/multi-agent/notification-manager.d.ts +84 -0
  173. package/dist/multi-agent/notification-manager.js +224 -0
  174. package/dist/multi-agent/pending-requests.d.ts +122 -0
  175. package/dist/multi-agent/pending-requests.js +155 -0
  176. package/dist/multi-agent/session-registry.d.ts +139 -0
  177. package/dist/multi-agent/session-registry.js +514 -0
  178. package/dist/multi-agent/shared-context.d.ts +293 -0
  179. package/dist/multi-agent/shared-context.js +671 -0
  180. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  181. package/dist/multi-agent/skill-requirements.js +178 -0
  182. package/dist/multi-agent/task-assignment.d.ts +69 -0
  183. package/dist/multi-agent/task-assignment.js +123 -0
  184. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  185. package/dist/multi-agent/task-suggestion.js +72 -0
  186. package/dist/multi-agent/team-agent.d.ts +201 -0
  187. package/dist/multi-agent/team-agent.js +488 -0
  188. package/dist/multi-agent/team.d.ts +286 -0
  189. package/dist/multi-agent/team.js +610 -0
  190. package/dist/multi-agent/tool-config.d.ts +110 -0
  191. package/dist/multi-agent/tool-config.js +661 -0
  192. package/dist/multi-agent/types.d.ts +211 -0
  193. package/dist/multi-agent/types.js +617 -0
  194. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  195. package/dist/prompts/plan-mode-prompt.js +95 -0
  196. package/dist/repl-helpers.d.ts +63 -0
  197. package/dist/repl-helpers.js +319 -0
  198. package/dist/repl-v2.d.ts +554 -0
  199. package/dist/repl-v2.js +3286 -0
  200. package/dist/session/index.d.ts +6 -0
  201. package/dist/session/index.js +6 -0
  202. package/dist/session/project-session-manager.d.ts +158 -0
  203. package/dist/session/project-session-manager.js +650 -0
  204. package/dist/settings/index.d.ts +156 -13
  205. package/dist/settings/index.js +377 -24
  206. package/dist/settings/mcp-config.d.ts +76 -0
  207. package/dist/settings/mcp-config.js +143 -0
  208. package/dist/settings/paths.d.ts +114 -0
  209. package/dist/settings/paths.js +270 -0
  210. package/dist/shared-handlers.d.ts +62 -0
  211. package/dist/shared-handlers.js +48 -0
  212. package/dist/system-prompt/builder.d.ts +5 -0
  213. package/dist/system-prompt/builder.js +4 -0
  214. package/dist/system-prompt/index.d.ts +18 -0
  215. package/dist/system-prompt/index.js +18 -0
  216. package/dist/system-prompt/modules.d.ts +5 -0
  217. package/dist/system-prompt/modules.js +4 -0
  218. package/dist/tabbed-menu.js +2 -1
  219. package/dist/templates/compilr-md-import.d.ts +16 -0
  220. package/dist/templates/compilr-md-import.js +241 -0
  221. package/dist/templates/compilr-md.js +10 -58
  222. package/dist/templates/config-json.d.ts +1 -25
  223. package/dist/templates/index.d.ts +2 -0
  224. package/dist/templates/index.js +35 -75
  225. package/dist/themes/colors.js +3 -1
  226. package/dist/themes/registry.d.ts +5 -36
  227. package/dist/themes/registry.js +11 -95
  228. package/dist/themes/types.d.ts +3 -38
  229. package/dist/themes/types.js +2 -2
  230. package/dist/tool-names.d.ts +108 -0
  231. package/dist/tool-names.js +227 -0
  232. package/dist/tools/anchor-tools.d.ts +31 -0
  233. package/dist/tools/anchor-tools.js +255 -0
  234. package/dist/tools/artifact-tools.d.ts +42 -0
  235. package/dist/tools/artifact-tools.js +328 -0
  236. package/dist/tools/ask-user-simple.d.ts +1 -1
  237. package/dist/tools/ask-user-simple.js +2 -1
  238. package/dist/tools/ask-user.d.ts +1 -1
  239. package/dist/tools/ask-user.js +2 -1
  240. package/dist/tools/backlog-wrappers.d.ts +56 -0
  241. package/dist/tools/backlog-wrappers.js +353 -0
  242. package/dist/tools/backlog.d.ts +2 -2
  243. package/dist/tools/backlog.js +2 -2
  244. package/dist/tools/db-tools.d.ts +12 -0
  245. package/dist/tools/db-tools.js +14 -0
  246. package/dist/tools/delegate-background.d.ts +27 -0
  247. package/dist/tools/delegate-background.js +115 -0
  248. package/dist/tools/delegate.d.ts +22 -0
  249. package/dist/tools/delegate.js +97 -0
  250. package/dist/tools/delegation-status.d.ts +16 -0
  251. package/dist/tools/delegation-status.js +128 -0
  252. package/dist/tools/document-db.d.ts +43 -0
  253. package/dist/tools/document-db.js +220 -0
  254. package/dist/tools/guide-tool.d.ts +12 -0
  255. package/dist/tools/guide-tool.js +59 -0
  256. package/dist/tools/handoff.d.ts +25 -0
  257. package/dist/tools/handoff.js +99 -0
  258. package/dist/tools/meta-tools.d.ts +26 -0
  259. package/dist/tools/meta-tools.js +47 -0
  260. package/dist/tools/plan-tools.d.ts +54 -0
  261. package/dist/tools/plan-tools.js +338 -0
  262. package/dist/tools/platform-adapter.d.ts +29 -0
  263. package/dist/tools/platform-adapter.js +394 -0
  264. package/dist/tools/project-db.d.ts +34 -0
  265. package/dist/tools/project-db.js +39 -0
  266. package/dist/tools/recall-work-tool.d.ts +18 -0
  267. package/dist/tools/recall-work-tool.js +82 -0
  268. package/dist/tools/workitem-db.d.ts +135 -0
  269. package/dist/tools/workitem-db.js +730 -0
  270. package/dist/tools.d.ts +67 -2
  271. package/dist/tools.js +238 -38
  272. package/dist/ui/ask-user-overlay.d.ts +2 -2
  273. package/dist/ui/ask-user-overlay.js +443 -535
  274. package/dist/ui/ask-user-simple-overlay.d.ts +2 -2
  275. package/dist/ui/ask-user-simple-overlay.js +182 -209
  276. package/dist/ui/autocomplete-controller.d.ts +42 -0
  277. package/dist/ui/autocomplete-controller.js +384 -0
  278. package/dist/ui/base/index.d.ts +26 -0
  279. package/dist/ui/base/index.js +33 -0
  280. package/dist/ui/base/inline-overlay-utils.d.ts +217 -0
  281. package/dist/ui/base/inline-overlay-utils.js +320 -0
  282. package/dist/ui/base/inline-overlay.d.ts +159 -0
  283. package/dist/ui/base/inline-overlay.js +257 -0
  284. package/dist/ui/base/key-utils.d.ts +15 -0
  285. package/dist/ui/base/key-utils.js +30 -0
  286. package/dist/ui/base/overlay-base-v2.d.ts +203 -0
  287. package/dist/ui/base/overlay-base-v2.js +260 -0
  288. package/dist/ui/base/overlay-base.d.ts +156 -0
  289. package/dist/ui/base/overlay-base.js +238 -0
  290. package/dist/ui/base/overlay-lifecycle.d.ts +65 -0
  291. package/dist/ui/base/overlay-lifecycle.js +159 -0
  292. package/dist/ui/base/overlay-types.d.ts +185 -0
  293. package/dist/ui/base/overlay-types.js +7 -0
  294. package/dist/ui/base/render-utils.d.ts +27 -0
  295. package/dist/ui/base/render-utils.js +36 -0
  296. package/dist/ui/base/screen-stack.d.ts +148 -0
  297. package/dist/ui/base/screen-stack.js +184 -0
  298. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +118 -0
  299. package/dist/ui/base/tabbed-list-overlay-v2.js +335 -0
  300. package/dist/ui/base/tabbed-list-overlay.d.ts +153 -0
  301. package/dist/ui/base/tabbed-list-overlay.js +369 -0
  302. package/dist/ui/constants/labels.d.ts +14 -0
  303. package/dist/ui/constants/labels.js +51 -0
  304. package/dist/ui/conversation-store.d.ts +55 -0
  305. package/dist/ui/conversation-store.js +107 -0
  306. package/dist/ui/conversation.d.ts +75 -4
  307. package/dist/ui/conversation.js +376 -165
  308. package/dist/ui/diff.d.ts +7 -1
  309. package/dist/ui/diff.js +85 -48
  310. package/dist/ui/ephemeral.d.ts +1 -1
  311. package/dist/ui/ephemeral.js +4 -10
  312. package/dist/ui/features/index.d.ts +34 -0
  313. package/dist/ui/features/index.js +34 -0
  314. package/dist/ui/features/input-feature.d.ts +85 -0
  315. package/dist/ui/features/input-feature.js +238 -0
  316. package/dist/ui/features/list-feature.d.ts +155 -0
  317. package/dist/ui/features/list-feature.js +244 -0
  318. package/dist/ui/features/pagination-feature.d.ts +154 -0
  319. package/dist/ui/features/pagination-feature.js +238 -0
  320. package/dist/ui/features/search-feature.d.ts +148 -0
  321. package/dist/ui/features/search-feature.js +185 -0
  322. package/dist/ui/features/tab-feature.d.ts +194 -0
  323. package/dist/ui/features/tab-feature.js +307 -0
  324. package/dist/ui/file-autocomplete.d.ts +24 -0
  325. package/dist/ui/file-autocomplete.js +56 -0
  326. package/dist/ui/footer-renderer.d.ts +69 -0
  327. package/dist/ui/footer-renderer.js +431 -0
  328. package/dist/ui/footer.d.ts +181 -7
  329. package/dist/ui/footer.js +523 -74
  330. package/dist/ui/guardrail-overlay.d.ts +29 -0
  331. package/dist/ui/guardrail-overlay.js +145 -0
  332. package/dist/ui/index.d.ts +1 -1
  333. package/dist/ui/index.js +1 -3
  334. package/dist/ui/input-controller.d.ts +51 -0
  335. package/dist/ui/input-controller.js +176 -0
  336. package/dist/ui/input-prompt.d.ts +135 -33
  337. package/dist/ui/input-prompt.js +728 -337
  338. package/dist/ui/iteration-limit-overlay.d.ts +2 -2
  339. package/dist/ui/iteration-limit-overlay.js +92 -128
  340. package/dist/ui/keyboard-handler.d.ts +57 -0
  341. package/dist/ui/keyboard-handler.js +557 -0
  342. package/dist/ui/keys-overlay.d.ts +1 -0
  343. package/dist/ui/keys-overlay.js +203 -141
  344. package/dist/ui/line-utils.d.ts +88 -0
  345. package/dist/ui/line-utils.js +150 -0
  346. package/dist/ui/live-region-facade.d.ts +42 -0
  347. package/dist/ui/live-region-facade.js +205 -0
  348. package/dist/ui/live-region.d.ts +157 -0
  349. package/dist/ui/live-region.js +379 -0
  350. package/dist/ui/mascot/expressions.d.ts +32 -0
  351. package/dist/ui/mascot/expressions.js +213 -0
  352. package/dist/ui/mascot/index.d.ts +8 -0
  353. package/dist/ui/mascot/index.js +8 -0
  354. package/dist/ui/mascot/renderer.d.ts +19 -0
  355. package/dist/ui/mascot/renderer.js +132 -0
  356. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  357. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  358. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  359. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  360. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  361. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  362. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  363. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  364. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  365. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  366. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  367. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  368. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  369. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  370. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  371. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  372. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  373. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  374. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  375. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  376. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  377. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  378. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  379. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  380. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  381. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  382. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  383. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  384. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  385. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  386. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  387. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  388. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  389. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  390. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  391. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  392. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  393. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  394. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  395. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  396. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  397. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  398. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  399. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  400. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  401. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  402. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  403. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  404. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  405. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  406. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  407. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  408. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  409. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  410. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  411. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  412. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  413. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  414. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  415. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  416. package/dist/ui/overlay/impl/agents-overlay-v2.d.ts +45 -0
  417. package/dist/ui/overlay/impl/agents-overlay-v2.js +814 -0
  418. package/dist/ui/overlay/impl/anchors-overlay-v2.d.ts +47 -0
  419. package/dist/ui/overlay/impl/anchors-overlay-v2.js +749 -0
  420. package/dist/ui/overlay/impl/arch-type-overlay-v2.d.ts +37 -0
  421. package/dist/ui/overlay/impl/arch-type-overlay-v2.js +240 -0
  422. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  423. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  424. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  425. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  426. package/dist/ui/overlay/impl/ask-user-overlay-v2.d.ts +72 -0
  427. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +581 -0
  428. package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.d.ts +46 -0
  429. package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.js +204 -0
  430. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  431. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  432. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +52 -0
  433. package/dist/ui/overlay/impl/backlog-overlay-v2.js +681 -0
  434. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  435. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  436. package/dist/ui/overlay/impl/commands-overlay-v2.d.ts +33 -0
  437. package/dist/ui/overlay/impl/commands-overlay-v2.js +439 -0
  438. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +111 -0
  439. package/dist/ui/overlay/impl/config-overlay-v2.js +718 -0
  440. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  441. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  442. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +57 -0
  443. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +382 -0
  444. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  445. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  446. package/dist/ui/overlay/impl/docs-overlay-v2.d.ts +45 -0
  447. package/dist/ui/overlay/impl/docs-overlay-v2.js +117 -0
  448. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +84 -0
  449. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +1112 -0
  450. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  451. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  452. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  453. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  454. package/dist/ui/overlay/impl/guardrail-overlay-v2.d.ts +43 -0
  455. package/dist/ui/overlay/impl/guardrail-overlay-v2.js +114 -0
  456. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +57 -0
  457. package/dist/ui/overlay/impl/help-overlay-v2.js +287 -0
  458. package/dist/ui/overlay/impl/init-setup-overlay-v2.d.ts +25 -0
  459. package/dist/ui/overlay/impl/init-setup-overlay-v2.js +97 -0
  460. package/dist/ui/overlay/impl/iteration-limit-overlay-v2.d.ts +35 -0
  461. package/dist/ui/overlay/impl/iteration-limit-overlay-v2.js +105 -0
  462. package/dist/ui/overlay/impl/keys-overlay-v2.d.ts +41 -0
  463. package/dist/ui/overlay/impl/keys-overlay-v2.js +248 -0
  464. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  465. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  466. package/dist/ui/overlay/impl/mascot-overlay-v2.d.ts +41 -0
  467. package/dist/ui/overlay/impl/mascot-overlay-v2.js +138 -0
  468. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  469. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  470. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +93 -0
  471. package/dist/ui/overlay/impl/model-overlay-v2.js +1143 -0
  472. package/dist/ui/overlay/impl/model-warning-overlay-v2.d.ts +46 -0
  473. package/dist/ui/overlay/impl/model-warning-overlay-v2.js +132 -0
  474. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +108 -0
  475. package/dist/ui/overlay/impl/new-overlay-v2.js +1243 -0
  476. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  477. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  478. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  479. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  480. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  481. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  482. package/dist/ui/overlay/impl/permission-overlay-v2.d.ts +36 -0
  483. package/dist/ui/overlay/impl/permission-overlay-v2.js +380 -0
  484. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  485. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  486. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  487. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  488. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  489. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  490. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +37 -0
  491. package/dist/ui/overlay/impl/projects-overlay-v2.js +733 -0
  492. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  493. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  494. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  495. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  496. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  497. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  498. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  499. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  500. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  501. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  502. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  503. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  504. package/dist/ui/overlay/impl/theme-overlay-v2.d.ts +42 -0
  505. package/dist/ui/overlay/impl/theme-overlay-v2.js +135 -0
  506. package/dist/ui/overlay/impl/tools-overlay-v2.d.ts +47 -0
  507. package/dist/ui/overlay/impl/tools-overlay-v2.js +214 -0
  508. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +45 -0
  509. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +212 -0
  510. package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +80 -0
  511. package/dist/ui/overlay/impl/workflow-overlay-v2.js +641 -0
  512. package/dist/ui/overlay/index.d.ts +52 -0
  513. package/dist/ui/overlay/index.js +54 -0
  514. package/dist/ui/overlay/key-utils.d.ts +6 -0
  515. package/dist/ui/overlay/key-utils.js +6 -0
  516. package/dist/ui/overlay/types.d.ts +140 -0
  517. package/dist/ui/overlay/types.js +22 -0
  518. package/dist/ui/overlay-manager.d.ts +43 -0
  519. package/dist/ui/overlay-manager.js +238 -0
  520. package/dist/ui/overlays.d.ts +0 -4
  521. package/dist/ui/overlays.js +4 -460
  522. package/dist/ui/permission-overlay.d.ts +1 -1
  523. package/dist/ui/permission-overlay.js +189 -300
  524. package/dist/ui/providers/types.d.ts +178 -0
  525. package/dist/ui/providers/types.js +9 -0
  526. package/dist/ui/render-modes.d.ts +36 -0
  527. package/dist/ui/render-modes.js +44 -0
  528. package/dist/ui/startup-menu.d.ts +36 -0
  529. package/dist/ui/startup-menu.js +236 -0
  530. package/dist/ui/status-bar-controller.d.ts +33 -0
  531. package/dist/ui/status-bar-controller.js +99 -0
  532. package/dist/ui/subagent-renderer.d.ts +117 -0
  533. package/dist/ui/subagent-renderer.js +318 -0
  534. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  535. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  536. package/dist/ui/terminal-codes.d.ts +94 -0
  537. package/dist/ui/terminal-codes.js +124 -0
  538. package/dist/ui/terminal-line-builders.d.ts +17 -0
  539. package/dist/ui/terminal-line-builders.js +42 -0
  540. package/dist/ui/terminal-render-item.d.ts +16 -0
  541. package/dist/ui/terminal-render-item.js +267 -0
  542. package/dist/ui/terminal-renderer.d.ts +220 -0
  543. package/dist/ui/terminal-renderer.js +750 -0
  544. package/dist/ui/terminal-types.d.ts +179 -0
  545. package/dist/ui/terminal-types.js +34 -0
  546. package/dist/ui/terminal-ui.d.ts +331 -0
  547. package/dist/ui/terminal-ui.js +819 -0
  548. package/dist/ui/terminal.d.ts +20 -0
  549. package/dist/ui/terminal.js +72 -0
  550. package/dist/ui/todo-zone.d.ts +19 -1
  551. package/dist/ui/todo-zone.js +124 -38
  552. package/dist/ui/tool-formatters.d.ts +16 -0
  553. package/dist/ui/tool-formatters.js +1027 -0
  554. package/dist/ui/turn-metrics.d.ts +56 -0
  555. package/dist/ui/turn-metrics.js +75 -0
  556. package/dist/ui/types.d.ts +28 -0
  557. package/dist/ui/types.js +1 -0
  558. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  559. package/dist/ui/vscode-diff-ipc.js +385 -0
  560. package/dist/utils/credentials.d.ts +24 -5
  561. package/dist/utils/credentials.js +123 -9
  562. package/dist/utils/debug-log.d.ts +28 -0
  563. package/dist/utils/debug-log.js +57 -0
  564. package/dist/utils/format-tokens.d.ts +13 -0
  565. package/dist/utils/format-tokens.js +18 -0
  566. package/dist/utils/git-config.d.ts +26 -0
  567. package/dist/utils/git-config.js +54 -0
  568. package/dist/utils/message-utils.d.ts +61 -0
  569. package/dist/utils/message-utils.js +72 -0
  570. package/dist/utils/model-tiers.d.ts +8 -1
  571. package/dist/utils/model-tiers.js +39 -17
  572. package/dist/utils/open-browser.d.ts +5 -0
  573. package/dist/utils/open-browser.js +32 -0
  574. package/dist/utils/path-safety.d.ts +56 -0
  575. package/dist/utils/path-safety.js +240 -0
  576. package/dist/utils/project-detection.d.ts +58 -0
  577. package/dist/utils/project-detection.js +424 -0
  578. package/dist/utils/project-memory.js +2 -1
  579. package/dist/utils/project-status.d.ts +2 -2
  580. package/dist/utils/startup-perf.d.ts +18 -0
  581. package/dist/utils/startup-perf.js +60 -0
  582. package/dist/utils/token-tracker.d.ts +62 -0
  583. package/dist/utils/token-tracker.js +150 -0
  584. package/dist/utils/token-types.d.ts +23 -0
  585. package/dist/utils/token-types.js +18 -0
  586. package/dist/utils/types/config-types.d.ts +32 -0
  587. package/dist/utils/types/config-types.js +8 -0
  588. package/dist/utils/update-checker.d.ts +28 -0
  589. package/dist/utils/update-checker.js +106 -0
  590. package/dist/utils/version.d.ts +7 -0
  591. package/dist/utils/version.js +10 -0
  592. package/dist/utils/vscode-detect.d.ts +39 -0
  593. package/dist/utils/vscode-detect.js +137 -0
  594. package/dist/workflow/guided-mode-injector.d.ts +42 -0
  595. package/dist/workflow/guided-mode-injector.js +191 -0
  596. package/dist/workflow/index.d.ts +8 -0
  597. package/dist/workflow/index.js +8 -0
  598. package/dist/workflow/step-criteria.d.ts +62 -0
  599. package/dist/workflow/step-criteria.js +150 -0
  600. package/dist/workflow/step-tracker.d.ts +92 -0
  601. package/dist/workflow/step-tracker.js +141 -0
  602. package/package.json +32 -12
  603. package/dist/index.old.d.ts +0 -7
  604. package/dist/index.old.js +0 -1014
  605. package/dist/repl.d.ts +0 -121
  606. package/dist/repl.js +0 -1878
  607. package/dist/templates/claude-md.d.ts +0 -7
  608. package/dist/templates/claude-md.js +0 -189
  609. package/dist/test-autocomplete.d.ts +0 -7
  610. package/dist/test-autocomplete.js +0 -85
  611. package/dist/test-tabbed-menu.d.ts +0 -7
  612. package/dist/test-tabbed-menu.js +0 -25
  613. package/dist/tool-selector.d.ts +0 -71
  614. package/dist/tool-selector.js +0 -184
  615. package/dist/ui/agents-overlay.d.ts +0 -12
  616. package/dist/ui/agents-overlay.js +0 -501
  617. package/dist/ui/arch-type-overlay.d.ts +0 -20
  618. package/dist/ui/arch-type-overlay.js +0 -229
  619. package/dist/ui/backlog-overlay.d.ts +0 -17
  620. package/dist/ui/backlog-overlay.js +0 -786
  621. package/dist/ui/commands-overlay.d.ts +0 -11
  622. package/dist/ui/commands-overlay.js +0 -410
  623. package/dist/ui/config-overlay.d.ts +0 -34
  624. package/dist/ui/config-overlay.js +0 -977
  625. package/dist/ui/init-overlay.d.ts +0 -24
  626. package/dist/ui/init-overlay.js +0 -525
  627. package/dist/ui/input-prompt-v2.d.ts +0 -179
  628. package/dist/ui/input-prompt-v2.js +0 -991
  629. package/dist/ui/model-warning-overlay.d.ts +0 -30
  630. package/dist/ui/model-warning-overlay.js +0 -171
  631. package/dist/ui/tools-overlay.d.ts +0 -26
  632. package/dist/ui/tools-overlay.js +0 -278
  633. package/dist/ui/tutorial-overlay.d.ts +0 -10
  634. package/dist/ui/tutorial-overlay.js +0 -936
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Guardrail Confirmation Overlay
3
+ *
4
+ * Shows when a guardrail with action='confirm' is triggered.
5
+ * User must approve or deny the risky operation.
6
+ */
7
+ export interface GuardrailConfirmOptions {
8
+ /** Guardrail name */
9
+ name: string;
10
+ /** Guardrail description/message */
11
+ message: string;
12
+ /** Action type (for display) */
13
+ action: 'warn' | 'confirm' | 'block';
14
+ /** Tool that triggered the guardrail */
15
+ toolName: string;
16
+ /** The input that matched the pattern */
17
+ matchedInput: string;
18
+ /** Category (e.g., 'git', 'filesystem', 'database') */
19
+ category?: string;
20
+ }
21
+ export interface GuardrailConfirmResult {
22
+ /** Whether to proceed with the operation */
23
+ approved: boolean;
24
+ }
25
+ /**
26
+ * Show the guardrail confirmation overlay.
27
+ * Returns { approved: true } if user allows, { approved: false } if denied.
28
+ */
29
+ export declare function showGuardrailOverlay(options: GuardrailConfirmOptions): Promise<GuardrailConfirmResult>;
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Guardrail Confirmation Overlay
3
+ *
4
+ * Shows when a guardrail with action='confirm' is triggered.
5
+ * User must approve or deny the risky operation.
6
+ */
7
+ import chalk from 'chalk';
8
+ import { getStyles } from '../themes/index.js';
9
+ import { InlineOverlay } from './base/inline-overlay.js';
10
+ // =============================================================================
11
+ // Overlay Implementation
12
+ // =============================================================================
13
+ class GuardrailOverlayImpl extends InlineOverlay {
14
+ options;
15
+ constructor(options) {
16
+ super();
17
+ this.options = options;
18
+ }
19
+ getInitialState() {
20
+ return {
21
+ selectedIndex: 0, // Default to Deny (safer)
22
+ };
23
+ }
24
+ render() {
25
+ const s = getStyles();
26
+ const lines = [];
27
+ const cols = this.getTerminalWidth();
28
+ const border = s.muted('─'.repeat(Math.max(1, cols - 1)));
29
+ // Header with warning icon
30
+ lines.push(border);
31
+ lines.push(' ' + s.warning('⚠ Risky Operation Detected'));
32
+ lines.push('');
33
+ // Guardrail info
34
+ const category = this.options.category ? `[${this.options.category}]` : '';
35
+ lines.push(s.muted(` ${category} `) + chalk.bold(this.options.name));
36
+ lines.push('');
37
+ // Message
38
+ const msgLines = this.wrapText(this.options.message, cols - 4);
39
+ for (const line of msgLines) {
40
+ lines.push(' ' + s.muted(line));
41
+ }
42
+ lines.push('');
43
+ // Tool and matched input
44
+ lines.push(s.muted(' Tool: ') + s.primary(this.options.toolName));
45
+ // Show truncated matched input
46
+ const maxInputLen = cols - 12;
47
+ let displayInput = this.options.matchedInput;
48
+ if (displayInput.length > maxInputLen) {
49
+ displayInput = displayInput.substring(0, maxInputLen - 3) + '...';
50
+ }
51
+ // Replace newlines with visible markers
52
+ displayInput = displayInput.replace(/\n/g, '↵');
53
+ lines.push(s.muted(' Match: ') + s.warning(displayInput));
54
+ lines.push('');
55
+ // Action buttons
56
+ const denyLabel = this.state.selectedIndex === 0
57
+ ? s.error(' ❯ Deny ')
58
+ : s.muted(' Deny ');
59
+ const allowLabel = this.state.selectedIndex === 1
60
+ ? s.warning(' ❯ Allow ')
61
+ : s.muted(' Allow ');
62
+ lines.push(' ' + denyLabel + ' ' + allowLabel);
63
+ lines.push('');
64
+ // Footer
65
+ lines.push(s.muted(' ←/→ Select · Enter Confirm · Esc Deny'));
66
+ lines.push(border);
67
+ return lines;
68
+ }
69
+ handleKey(data) {
70
+ // Ctrl+C or Escape = Deny
71
+ if (this.isCtrlCKey(data) || this.isEscapeKey(data)) {
72
+ return { type: 'close', result: { approved: false } };
73
+ }
74
+ // Left/Right arrows or h/l for navigation
75
+ if (this.isLeftArrowKey(data) || data.toString() === 'h') {
76
+ this.state.selectedIndex = 0;
77
+ return { type: 'continue' };
78
+ }
79
+ if (this.isRightArrowKey(data) || data.toString() === 'l') {
80
+ this.state.selectedIndex = 1;
81
+ return { type: 'continue' };
82
+ }
83
+ // Tab to toggle
84
+ if (this.isTabKey(data)) {
85
+ this.state.selectedIndex = this.state.selectedIndex === 0 ? 1 : 0;
86
+ return { type: 'continue' };
87
+ }
88
+ // Enter to confirm selection
89
+ if (this.isEnterKey(data)) {
90
+ return {
91
+ type: 'close',
92
+ result: { approved: this.state.selectedIndex === 1 },
93
+ };
94
+ }
95
+ // 'd' or 'n' for Deny
96
+ const keyStr = data.toString().toLowerCase();
97
+ if (keyStr === 'd' || keyStr === 'n') {
98
+ return { type: 'close', result: { approved: false } };
99
+ }
100
+ // 'a' or 'y' for Allow
101
+ if (keyStr === 'a' || keyStr === 'y') {
102
+ return { type: 'close', result: { approved: true } };
103
+ }
104
+ return { type: 'continue' };
105
+ }
106
+ getCleanupSummary(result) {
107
+ const s = getStyles();
108
+ if (result.approved) {
109
+ return s.muted('Guardrail: ') + s.warning('Allowed ') + s.muted(this.options.name);
110
+ }
111
+ return s.muted('Guardrail: ') + s.error('Denied ') + s.muted(this.options.name);
112
+ }
113
+ /**
114
+ * Wrap text to fit within maxWidth
115
+ */
116
+ wrapText(text, maxWidth) {
117
+ const words = text.split(' ');
118
+ const lines = [];
119
+ let currentLine = '';
120
+ for (const word of words) {
121
+ if (currentLine.length + word.length + 1 <= maxWidth) {
122
+ currentLine += (currentLine ? ' ' : '') + word;
123
+ }
124
+ else {
125
+ if (currentLine)
126
+ lines.push(currentLine);
127
+ currentLine = word;
128
+ }
129
+ }
130
+ if (currentLine)
131
+ lines.push(currentLine);
132
+ return lines;
133
+ }
134
+ }
135
+ // =============================================================================
136
+ // Main Export
137
+ // =============================================================================
138
+ /**
139
+ * Show the guardrail confirmation overlay.
140
+ * Returns { approved: true } if user allows, { approved: false } if denied.
141
+ */
142
+ export async function showGuardrailOverlay(options) {
143
+ const overlay = new GuardrailOverlayImpl(options);
144
+ return overlay.show();
145
+ }
@@ -8,5 +8,5 @@ export * from './terminal.js';
8
8
  export * from './conversation.js';
9
9
  export * from './overlays.js';
10
10
  export * from './todo-zone.js';
11
- export * from './input-prompt-v2.js';
11
+ export * from './input-prompt.js';
12
12
  export * from './footer.js';
package/dist/ui/index.js CHANGED
@@ -9,7 +9,5 @@ export * from './conversation.js';
9
9
  export * from './overlays.js';
10
10
  // Refactored components (event-driven, persistent footer)
11
11
  export * from './todo-zone.js';
12
- export * from './input-prompt-v2.js';
12
+ export * from './input-prompt.js';
13
13
  export * from './footer.js';
14
- // Note: ephemeral.js and input-prompt.js are legacy and not re-exported
15
- // to avoid naming conflicts. Import directly if needed.
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Input state controller.
3
+ *
4
+ * Extracted from TerminalUI — owns all input state (lines, cursor,
5
+ * history, suggestion, queued inputs) and their manipulation methods.
6
+ * TerminalUI delegates to this controller via getter/setter wrappers.
7
+ */
8
+ export declare class InputController {
9
+ lines: string[];
10
+ currentLine: number;
11
+ cursorPos: number;
12
+ readonly history: string[];
13
+ historyIndex: number;
14
+ savedInput: string;
15
+ suggestion: string | null;
16
+ queuedInputs: string[];
17
+ /** Get the full input value (all lines joined with newlines). */
18
+ getInputValue(): string;
19
+ /** Get the current line content. */
20
+ getCurrentLineContent(): string;
21
+ /** Clear input and reset to single empty line. */
22
+ clearInput(): void;
23
+ addToHistory(input: string): void;
24
+ /**
25
+ * Navigate to older history entry.
26
+ * @param isAutocompleteActive - when true, navigation is blocked
27
+ * @returns true if input changed
28
+ */
29
+ navigateHistoryUp(isAutocompleteActive: boolean): boolean;
30
+ /**
31
+ * Navigate to newer history entry.
32
+ * @param isAutocompleteActive - when true, navigation is blocked
33
+ * @returns true if input changed
34
+ */
35
+ navigateHistoryDown(isAutocompleteActive: boolean): boolean;
36
+ resetHistoryNavigation(): void;
37
+ /**
38
+ * Move cursor to previous word boundary (Option+Left).
39
+ * @returns true if cursor moved (caller should trigger render)
40
+ */
41
+ moveWordLeft(): boolean;
42
+ /**
43
+ * Move cursor to next word boundary (Option+Right).
44
+ * @returns true if cursor moved (caller should trigger render)
45
+ */
46
+ moveWordRight(): boolean;
47
+ getQueuedInputs(): string[];
48
+ popQueuedInput(): string | null;
49
+ hasQueuedInput(): boolean;
50
+ clearQueue(): void;
51
+ }
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Input state controller.
3
+ *
4
+ * Extracted from TerminalUI — owns all input state (lines, cursor,
5
+ * history, suggestion, queued inputs) and their manipulation methods.
6
+ * TerminalUI delegates to this controller via getter/setter wrappers.
7
+ */
8
+ export class InputController {
9
+ // Core multiline input state
10
+ lines = [''];
11
+ currentLine = 0;
12
+ cursorPos = 0;
13
+ // Command history
14
+ history = [];
15
+ historyIndex = -1;
16
+ savedInput = '';
17
+ // Ghost text suggestion
18
+ suggestion = null;
19
+ // Queued user inputs (when agent is busy)
20
+ queuedInputs = [];
21
+ // ===========================================================================
22
+ // Input value helpers
23
+ // ===========================================================================
24
+ /** Get the full input value (all lines joined with newlines). */
25
+ getInputValue() {
26
+ return this.lines.join('\n');
27
+ }
28
+ /** Get the current line content. */
29
+ getCurrentLineContent() {
30
+ return this.lines[this.currentLine];
31
+ }
32
+ /** Clear input and reset to single empty line. */
33
+ clearInput() {
34
+ this.lines = [''];
35
+ this.currentLine = 0;
36
+ this.cursorPos = 0;
37
+ }
38
+ // ===========================================================================
39
+ // History
40
+ // ===========================================================================
41
+ addToHistory(input) {
42
+ const trimmed = input.trim();
43
+ // Don't add empty or duplicate consecutive entries
44
+ if (trimmed && (this.history.length === 0 || this.history[this.history.length - 1] !== trimmed)) {
45
+ this.history.push(trimmed);
46
+ }
47
+ }
48
+ /**
49
+ * Navigate to older history entry.
50
+ * @param isAutocompleteActive - when true, navigation is blocked
51
+ * @returns true if input changed
52
+ */
53
+ navigateHistoryUp(isAutocompleteActive) {
54
+ if (isAutocompleteActive)
55
+ return false;
56
+ if (this.history.length === 0)
57
+ return false;
58
+ // Save current input when starting to navigate
59
+ if (this.historyIndex === -1) {
60
+ this.savedInput = this.getInputValue();
61
+ }
62
+ // Navigate to older entry
63
+ if (this.historyIndex < this.history.length - 1) {
64
+ this.historyIndex++;
65
+ const historyEntry = this.history[this.history.length - 1 - this.historyIndex];
66
+ // History entries are single-line (newlines stripped on save)
67
+ this.lines = [historyEntry];
68
+ this.currentLine = 0;
69
+ this.cursorPos = historyEntry.length;
70
+ return true;
71
+ }
72
+ return false;
73
+ }
74
+ /**
75
+ * Navigate to newer history entry.
76
+ * @param isAutocompleteActive - when true, navigation is blocked
77
+ * @returns true if input changed
78
+ */
79
+ navigateHistoryDown(isAutocompleteActive) {
80
+ if (isAutocompleteActive)
81
+ return false;
82
+ if (this.historyIndex < 0)
83
+ return false;
84
+ this.historyIndex--;
85
+ if (this.historyIndex === -1) {
86
+ // Restore saved input (may be multiline)
87
+ this.lines = this.savedInput.split('\n');
88
+ if (this.lines.length === 0)
89
+ this.lines = [''];
90
+ this.currentLine = this.lines.length - 1;
91
+ this.cursorPos = this.lines[this.currentLine].length;
92
+ }
93
+ else {
94
+ // Navigate to newer entry
95
+ const historyEntry = this.history[this.history.length - 1 - this.historyIndex];
96
+ this.lines = [historyEntry];
97
+ this.currentLine = 0;
98
+ this.cursorPos = historyEntry.length;
99
+ }
100
+ return true;
101
+ }
102
+ resetHistoryNavigation() {
103
+ this.historyIndex = -1;
104
+ this.savedInput = '';
105
+ }
106
+ // ===========================================================================
107
+ // Word movement
108
+ // ===========================================================================
109
+ /**
110
+ * Move cursor to previous word boundary (Option+Left).
111
+ * @returns true if cursor moved (caller should trigger render)
112
+ */
113
+ moveWordLeft() {
114
+ const line = this.lines[this.currentLine];
115
+ if (this.cursorPos > 0) {
116
+ let pos = this.cursorPos;
117
+ // Skip spaces
118
+ while (pos > 0 && line[pos - 1] === ' ')
119
+ pos--;
120
+ // Skip word
121
+ while (pos > 0 && line[pos - 1] !== ' ')
122
+ pos--;
123
+ this.cursorPos = pos;
124
+ return true;
125
+ }
126
+ else if (this.currentLine > 0) {
127
+ // Move to end of previous line
128
+ this.currentLine--;
129
+ this.cursorPos = this.lines[this.currentLine].length;
130
+ return true;
131
+ }
132
+ return false;
133
+ }
134
+ /**
135
+ * Move cursor to next word boundary (Option+Right).
136
+ * @returns true if cursor moved (caller should trigger render)
137
+ */
138
+ moveWordRight() {
139
+ const line = this.lines[this.currentLine];
140
+ if (this.cursorPos < line.length) {
141
+ let pos = this.cursorPos;
142
+ // Skip word
143
+ while (pos < line.length && line[pos] !== ' ')
144
+ pos++;
145
+ // Skip spaces
146
+ while (pos < line.length && line[pos] === ' ')
147
+ pos++;
148
+ this.cursorPos = pos;
149
+ return true;
150
+ }
151
+ else if (this.currentLine < this.lines.length - 1) {
152
+ // Move to start of next line
153
+ this.currentLine++;
154
+ this.cursorPos = 0;
155
+ return true;
156
+ }
157
+ return false;
158
+ }
159
+ // ===========================================================================
160
+ // Input queue
161
+ // ===========================================================================
162
+ getQueuedInputs() {
163
+ return [...this.queuedInputs];
164
+ }
165
+ popQueuedInput() {
166
+ if (this.queuedInputs.length === 0)
167
+ return null;
168
+ return this.queuedInputs.shift() ?? null;
169
+ }
170
+ hasQueuedInput() {
171
+ return this.queuedInputs.length > 0;
172
+ }
173
+ clearQueue() {
174
+ this.queuedInputs = [];
175
+ }
176
+ }
@@ -1,56 +1,137 @@
1
1
  /**
2
- * Input Prompt
2
+ * Input Prompt v2 (Event-Driven)
3
3
  *
4
- * @deprecated This module is superseded by input-prompt-v2.ts which uses
5
- * event-driven architecture for non-blocking input with queue mode support.
6
- * This file is kept for reference and may be removed in a future cleanup.
4
+ * Refactored input handling with event-driven architecture.
5
+ * - Emits events instead of blocking with getInput()
6
+ * - Supports queue mode for capturing input during agent execution
7
+ * - Always captures keystrokes (no blocking)
7
8
  *
8
- * Self-contained input handling with multiline support, autocomplete,
9
- * history navigation, and proper visual line navigation.
9
+ * Events:
10
+ * - 'submit' - User pressed Enter with input
11
+ * - 'command' - User submitted a slash command
12
+ * - 'cancel' - User pressed Ctrl+C
13
+ * - 'escape' - User pressed Esc (for aborting agent)
14
+ * - 'change' - Input text changed
10
15
  */
11
- import type { CommandOption, InputResult, TodoItem } from './types.js';
16
+ import { EventEmitter } from 'events';
17
+ import type { CommandOption } from './types.js';
12
18
  export declare const DEFAULT_COMMANDS: CommandOption[];
13
19
  /**
14
20
  * Strip ANSI codes from string
21
+ * Uses unified line-utils for consistent behavior across components.
15
22
  */
16
23
  export declare function stripAnsi(str: string): string;
24
+ /**
25
+ * Agent suggestion for $ autocomplete
26
+ */
27
+ export interface AgentSuggestion {
28
+ id: string;
29
+ displayName: string;
30
+ mascot: string;
31
+ }
32
+ export interface InputPromptEvents {
33
+ submit: (input: string) => void;
34
+ command: (command: string, args: string) => void;
35
+ cancel: () => void;
36
+ escape: () => void;
37
+ change: (input: string) => void;
38
+ modeChange: () => void;
39
+ }
17
40
  export interface InputPromptOptions {
18
41
  prompt?: string;
19
42
  showSeparators?: boolean;
20
43
  commands?: CommandOption[];
21
- getTodos?: () => TodoItem[];
44
+ /** Callback to get available team agents for $ autocomplete */
45
+ getAgentSuggestions?: () => AgentSuggestion[];
46
+ /** Callback to get available commands for / autocomplete */
47
+ getCommands?: () => CommandOption[];
22
48
  }
23
- export declare class InputPrompt {
24
- private readonly prompt;
25
- private readonly promptLen;
49
+ export declare class InputPrompt extends EventEmitter {
50
+ private prompt;
51
+ private promptLen;
26
52
  private readonly showSeparators;
27
53
  private readonly commands;
28
- private readonly getTodos?;
54
+ private getAgentSuggestions?;
55
+ private readonly getCommands?;
29
56
  private state;
30
57
  private autocomplete;
58
+ private fileAutocomplete;
59
+ private agentAutocomplete;
31
60
  private readonly history;
32
61
  private historyIndex;
33
62
  private savedInput;
63
+ private queueMode;
64
+ private queuedInputs;
34
65
  private renderedLines;
35
66
  private dropdownLines;
36
67
  private linesAboveCursor;
37
68
  private hasSeparators;
38
69
  private isRunning;
39
- private resolveInput;
70
+ private lastEscTime;
71
+ private readonly DOUBLE_ESC_THRESHOLD_MS;
72
+ private suggestion;
40
73
  constructor(options?: InputPromptOptions);
41
74
  /**
42
- * Get input from user (async)
43
- * Returns when user submits or cancels
75
+ * Update the prompt string (for dynamic theme changes)
76
+ */
77
+ setPrompt(prompt: string): void;
78
+ /**
79
+ * Set a suggestion for the next action (ghost text)
80
+ */
81
+ setSuggestion(action: string | null): void;
82
+ /**
83
+ * Get the current suggestion
84
+ */
85
+ getSuggestion(): string | null;
86
+ /**
87
+ * Clear the current suggestion
88
+ */
89
+ clearSuggestion(): void;
90
+ /**
91
+ * Set the callback to get available team agents for $ autocomplete
44
92
  */
45
- getInput(): Promise<InputResult>;
93
+ setAgentSuggestionsCallback(callback: (() => AgentSuggestion[]) | undefined): void;
46
94
  /**
47
- * Start input mode
95
+ * Start input capture (non-blocking, event-driven)
48
96
  */
49
97
  start(): void;
50
98
  /**
51
- * Stop input mode
99
+ * Stop input capture
52
100
  */
53
101
  stop(): void;
102
+ /**
103
+ * Check if running
104
+ */
105
+ isActive(): boolean;
106
+ /**
107
+ * Enable/disable queue mode
108
+ * In queue mode, Enter adds to queue instead of emitting 'submit'
109
+ */
110
+ setQueueMode(enabled: boolean): void;
111
+ /**
112
+ * Check if in queue mode
113
+ */
114
+ isQueueMode(): boolean;
115
+ /**
116
+ * Get all queued inputs (FIFO order)
117
+ */
118
+ getQueuedInputs(): string[];
119
+ /**
120
+ * Pop the first queued input
121
+ */
122
+ popQueuedInput(): string | null;
123
+ /**
124
+ * Check if there are queued inputs
125
+ */
126
+ hasQueuedInput(): boolean;
127
+ /**
128
+ * Get number of queued inputs
129
+ */
130
+ getQueueLength(): number;
131
+ /**
132
+ * Clear the queue
133
+ */
134
+ clearQueue(): void;
54
135
  /**
55
136
  * Get current buffer value
56
137
  */
@@ -60,28 +141,50 @@ export declare class InputPrompt {
60
141
  */
61
142
  setValue(value: string): void;
62
143
  /**
63
- * Clear the rendered area
144
+ * Clear input buffer
64
145
  */
65
- clear(): void;
66
- /**
67
- * Get number of rendered lines
68
- */
69
- getRenderedLines(): number;
146
+ clearInput(): void;
70
147
  /**
71
148
  * Add command to history
72
149
  */
73
150
  addToHistory(input: string): void;
74
- private resetState;
75
- private updateAutocomplete;
76
151
  /**
77
- * Get physical layout of current buffer
152
+ * Render the input prompt - returns array of lines
153
+ * Does NOT write to terminal (Footer handles that)
154
+ */
155
+ render(): string[];
156
+ /**
157
+ * Get the cursor position info for rendering
158
+ */
159
+ getCursorInfo(): {
160
+ row: number;
161
+ col: number;
162
+ };
163
+ /**
164
+ * Get autocomplete dropdown lines (if active)
78
165
  */
79
- private getPhysicalLayout;
166
+ getAutocompleteLines(): string[];
167
+ /**
168
+ * Check if autocomplete is showing
169
+ */
170
+ isAutocompleteActive(): boolean;
171
+ /**
172
+ * Get height of rendered content
173
+ */
174
+ getHeight(): number;
175
+ /**
176
+ * @deprecated Use event-driven start() instead
177
+ * Kept for backwards compatibility during migration
178
+ */
179
+ getInput(): Promise<{
180
+ action: string;
181
+ value?: string;
182
+ command?: string;
183
+ args?: string;
184
+ }>;
185
+ private resetState;
186
+ private updateAutocomplete;
80
187
  private getSeparatorLine;
81
- private renderTodos;
82
- private render;
83
- private renderDropdown;
84
- private clearDropdown;
85
188
  private readonly handleData;
86
189
  private handleKey;
87
190
  private handleEnter;
@@ -93,5 +196,4 @@ export declare class InputPrompt {
93
196
  private handleWordLeft;
94
197
  private handleWordRight;
95
198
  private handleBackspace;
96
- private finishInput;
97
199
  }