@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,191 @@
1
+ /**
2
+ * Guided Mode System Prompt Injector
3
+ *
4
+ * Injects guided workflow context into the agent's system prompt.
5
+ * Two types of injection:
6
+ * - Static: General rules about guided mode behavior (added to base system prompt)
7
+ * - Dynamic: Current project/item/step state (injected per-session)
8
+ */
9
+ import { STEP_ORDER, getStepCriteria, formatStepDisplay, getStepDescription } from './step-criteria.js';
10
+ /**
11
+ * Static system prompt addition for guided mode.
12
+ * Added to base system prompt when a project uses guided mode.
13
+ */
14
+ export const GUIDED_MODE_SYSTEM_PROMPT = `
15
+ ## Guided Workflow Mode
16
+
17
+ When a project uses **guided mode**, follow these rules:
18
+
19
+ 1. **Work Item Focus**: Always work on the current work item unless the user explicitly requests otherwise
20
+ 2. **Step Cycle**: Progress through steps in order: ${STEP_ORDER.join(' → ')}
21
+ 3. **Step Transitions**: Use \`workitem_advance_step\` tool when the criteria for the current step are met
22
+ 4. **Visibility**: Announce step transitions clearly in conversation so the user sees progress
23
+ 5. **Flexibility**: The user can always interrupt - acknowledge and respect their requests
24
+ 6. **Test Failures**: After 2 failed test attempts, ask the user how to proceed (skip, retry, switch item)
25
+
26
+ ### Step Criteria
27
+
28
+ - **PLAN**: Requirements understood, approach designed, target files identified
29
+ - **IMPLEMENT**: Code written, no placeholder TODOs left, lint passes
30
+ - **TEST**: All tests pass (or user overrides after 2 failures)
31
+ - **COMMIT**: Changes committed with proper message, commit hash captured
32
+ - **REVIEW**: User confirms ready for next item
33
+
34
+ ### Detour Handling
35
+
36
+ If the user wants to work on something else mid-cycle:
37
+ 1. Acknowledge their request
38
+ 2. Optionally suggest finishing the current item (gentle challenge)
39
+ 3. If they insist, accommodate gracefully
40
+ 4. Options: pause current item, switch to different item, or switch to flexible mode
41
+ `.trim();
42
+ /**
43
+ * Generate dynamic context injection for current workflow state.
44
+ * Injected on startup and when project/step changes.
45
+ */
46
+ export function generateDynamicContext(options) {
47
+ const { project, currentItem, backlogCount, inProgressCount, completedCount } = options;
48
+ // Base project context
49
+ let context = `
50
+ ## Current Workflow State
51
+
52
+ **Project:** ${project.displayName} (Mode: ${project.workflowMode})
53
+ **Lifecycle:** ${project.lifecycleState}
54
+ **Progress:** ${String(completedCount)} completed, ${String(inProgressCount)} in progress, ${String(backlogCount)} in backlog
55
+ `.trim();
56
+ // Add current item context if in guided mode with active item
57
+ if (project.workflowMode === 'guided' && currentItem) {
58
+ context += `
59
+
60
+ ### Current Work Item
61
+
62
+ **Item:** ${currentItem.itemId} "${currentItem.title}"
63
+ **Type:** ${currentItem.type}
64
+ **Priority:** ${currentItem.priority}
65
+ **Status:** ${currentItem.status}
66
+ **Step:** ${currentItem.guidedStep ? formatStepDisplay(currentItem.guidedStep) : 'Not started'}
67
+ ${currentItem.description ? `\n**Description:**\n${currentItem.description}` : ''}
68
+
69
+ ### Instructions
70
+
71
+ ${getStepInstructions(currentItem.guidedStep)}`;
72
+ }
73
+ else if (project.workflowMode === 'guided') {
74
+ context += `
75
+
76
+ ### No Active Work Item
77
+
78
+ Use \`workitem_next\` to get the highest priority item from the backlog, or ask the user which item to work on.
79
+ Once an item is selected, set its status to 'in_progress' and begin the guided cycle.`;
80
+ }
81
+ else {
82
+ // Flexible mode
83
+ context += `
84
+
85
+ ### Flexible Mode
86
+
87
+ Work on tasks as requested by the user. Work items are tracked but the step cycle is not enforced.
88
+ You can still use \`workitem_advance_step\` if you want to track progress through steps.`;
89
+ }
90
+ return context;
91
+ }
92
+ /**
93
+ * Get step-specific instructions for the agent
94
+ */
95
+ function getStepInstructions(step) {
96
+ if (!step) {
97
+ return `No step active. Use \`workitem_advance_step\` to start at PLAN step.`;
98
+ }
99
+ const criteria = getStepCriteria(step);
100
+ const stepDesc = getStepDescription(step);
101
+ let instructions = `You are in **${step.toUpperCase()}** step: ${stepDesc}
102
+
103
+ **Exit Criteria:**
104
+ ${criteria.exitCriteria.map((c) => `- ${c}`).join('\n')}
105
+
106
+ **When complete:** Use \`workitem_advance_step\` with a reason explaining why criteria are met.`;
107
+ // Add step-specific hints
108
+ switch (step) {
109
+ case 'plan':
110
+ instructions += `
111
+
112
+ **Actions:**
113
+ 1. Read and understand the requirements
114
+ 2. Design the approach (what files to create/modify)
115
+ 3. Consider edge cases and potential issues
116
+ 4. Document the plan in conversation`;
117
+ break;
118
+ case 'implement':
119
+ instructions += `
120
+
121
+ **Actions:**
122
+ 1. Create/modify files according to the plan
123
+ 2. Ensure code is complete (no TODOs unless intentional)
124
+ 3. Run lint if available and fix any issues
125
+ 4. Review your changes before advancing`;
126
+ break;
127
+ case 'test':
128
+ instructions += `
129
+
130
+ **Actions:**
131
+ 1. Run the test suite
132
+ 2. If tests fail, analyze and fix the issues
133
+ 3. Re-run tests after fixes
134
+ 4. After 2 failed attempts, ask user how to proceed
135
+
136
+ **Note:** Track failed attempts. After 2 failures, offer options:
137
+ - Try again (you'll fix the issue)
138
+ - Skip tests and continue to commit
139
+ - Switch to flexible mode for this item
140
+ - Work on a different item`;
141
+ break;
142
+ case 'commit':
143
+ instructions += `
144
+
145
+ **Actions:**
146
+ 1. Stage the relevant changes
147
+ 2. Create a descriptive commit message
148
+ 3. Run git commit
149
+ 4. Capture the commit hash
150
+ 5. Use \`workitem_update\` to store the commit_hash on the item`;
151
+ break;
152
+ case 'review':
153
+ instructions += `
154
+
155
+ **Actions:**
156
+ 1. Summarize what was accomplished
157
+ 2. Ask user if they're ready for the next item
158
+ 3. Wait for user confirmation before proceeding
159
+
160
+ **On user confirmation:**
161
+ - Use \`workitem_advance_step\` to complete this item
162
+ - Then use \`workitem_next\` to get the next item`;
163
+ break;
164
+ }
165
+ return instructions;
166
+ }
167
+ /**
168
+ * Generate a compact status line for footer display
169
+ */
170
+ export function generateStatusLine(options) {
171
+ const { project, currentItem } = options;
172
+ if (!currentItem) {
173
+ return `${project.displayName} | ${project.workflowMode} mode | No active item`;
174
+ }
175
+ const stepDisplay = currentItem.guidedStep
176
+ ? currentItem.guidedStep.toUpperCase()
177
+ : 'READY';
178
+ return `${project.displayName} | ${currentItem.itemId} | ${stepDisplay}`;
179
+ }
180
+ /**
181
+ * Check if we should inject guided mode context
182
+ */
183
+ export function shouldInjectGuidedContext(project) {
184
+ return project !== null && project.workflowMode === 'guided';
185
+ }
186
+ /**
187
+ * Combine static and dynamic prompts for full guided mode injection
188
+ */
189
+ export function getFullGuidedPrompt(options) {
190
+ return `${GUIDED_MODE_SYSTEM_PROMPT}\n\n${generateDynamicContext(options)}`;
191
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Guided Workflow Module
3
+ *
4
+ * Provides step-by-step workflow tracking for guided mode.
5
+ */
6
+ export { type StepCriteria, STEP_ORDER, GUIDED_STEP_CRITERIA, getNextStep, getPreviousStep, getStepNumber, isValidTransition, getStepCriteria, getStepDescription, formatStepDisplay, } from './step-criteria.js';
7
+ export { type StepAttempt, GuidedStepTracker, stepTracker, } from './step-tracker.js';
8
+ export { type DynamicContextOptions, GUIDED_MODE_SYSTEM_PROMPT, generateDynamicContext, generateStatusLine, shouldInjectGuidedContext, getFullGuidedPrompt, } from './guided-mode-injector.js';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Guided Workflow Module
3
+ *
4
+ * Provides step-by-step workflow tracking for guided mode.
5
+ */
6
+ export { STEP_ORDER, GUIDED_STEP_CRITERIA, getNextStep, getPreviousStep, getStepNumber, isValidTransition, getStepCriteria, getStepDescription, formatStepDisplay, } from './step-criteria.js';
7
+ export { GuidedStepTracker, stepTracker, } from './step-tracker.js';
8
+ export { GUIDED_MODE_SYSTEM_PROMPT, generateDynamicContext, generateStatusLine, shouldInjectGuidedContext, getFullGuidedPrompt, } from './guided-mode-injector.js';
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Step Criteria - Defines exit criteria for each guided workflow step
3
+ *
4
+ * Each step has:
5
+ * - Human-readable exit criteria (for system prompt)
6
+ * - Success indicators (what agent looks for)
7
+ * - Configuration (max attempts, auto-advance)
8
+ */
9
+ import type { GuidedStep } from '../db/schema.js';
10
+ /**
11
+ * Step criteria definition
12
+ */
13
+ export interface StepCriteria {
14
+ /** The guided step */
15
+ step: GuidedStep;
16
+ /** Human-readable exit criteria for system prompt */
17
+ exitCriteria: string[];
18
+ /** What agent looks for to determine success */
19
+ successIndicators: string[];
20
+ /** Maximum attempts for retryable steps (like test) */
21
+ maxAttempts?: number;
22
+ /** Can agent advance automatically when criteria met? */
23
+ autoAdvance: boolean;
24
+ /** Hint for next action after advancing */
25
+ nextActionHint: string;
26
+ }
27
+ /**
28
+ * Step order - defines valid step progression
29
+ */
30
+ export declare const STEP_ORDER: readonly GuidedStep[];
31
+ /**
32
+ * Get the next step in the workflow
33
+ */
34
+ export declare function getNextStep(current: GuidedStep | null): GuidedStep | 'complete';
35
+ /**
36
+ * Get the previous step in the workflow
37
+ */
38
+ export declare function getPreviousStep(current: GuidedStep): GuidedStep | null;
39
+ /**
40
+ * Get step number (1-indexed for display)
41
+ */
42
+ export declare function getStepNumber(step: GuidedStep): number;
43
+ /**
44
+ * Check if step transition is valid (can only advance to next step)
45
+ */
46
+ export declare function isValidTransition(from: GuidedStep | null, to: GuidedStep | 'complete'): boolean;
47
+ /**
48
+ * Guided step criteria definitions
49
+ */
50
+ export declare const GUIDED_STEP_CRITERIA: readonly StepCriteria[];
51
+ /**
52
+ * Get criteria for a specific step
53
+ */
54
+ export declare function getStepCriteria(step: GuidedStep): StepCriteria;
55
+ /**
56
+ * Get human-readable step description for messages
57
+ */
58
+ export declare function getStepDescription(step: GuidedStep): string;
59
+ /**
60
+ * Format step for display (e.g., "IMPLEMENT (2 of 5)")
61
+ */
62
+ export declare function formatStepDisplay(step: GuidedStep): string;
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Step Criteria - Defines exit criteria for each guided workflow step
3
+ *
4
+ * Each step has:
5
+ * - Human-readable exit criteria (for system prompt)
6
+ * - Success indicators (what agent looks for)
7
+ * - Configuration (max attempts, auto-advance)
8
+ */
9
+ /**
10
+ * Step order - defines valid step progression
11
+ */
12
+ export const STEP_ORDER = ['plan', 'implement', 'test', 'commit', 'review'];
13
+ /**
14
+ * Get the next step in the workflow
15
+ */
16
+ export function getNextStep(current) {
17
+ if (current === null)
18
+ return 'plan';
19
+ const idx = STEP_ORDER.indexOf(current);
20
+ if (idx === -1 || idx >= STEP_ORDER.length - 1)
21
+ return 'complete';
22
+ return STEP_ORDER[idx + 1];
23
+ }
24
+ /**
25
+ * Get the previous step in the workflow
26
+ */
27
+ export function getPreviousStep(current) {
28
+ const idx = STEP_ORDER.indexOf(current);
29
+ if (idx <= 0)
30
+ return null;
31
+ return STEP_ORDER[idx - 1];
32
+ }
33
+ /**
34
+ * Get step number (1-indexed for display)
35
+ */
36
+ export function getStepNumber(step) {
37
+ return STEP_ORDER.indexOf(step) + 1;
38
+ }
39
+ /**
40
+ * Check if step transition is valid (can only advance to next step)
41
+ */
42
+ export function isValidTransition(from, to) {
43
+ const nextStep = getNextStep(from);
44
+ return nextStep === to;
45
+ }
46
+ /**
47
+ * Guided step criteria definitions
48
+ */
49
+ export const GUIDED_STEP_CRITERIA = [
50
+ {
51
+ step: 'plan',
52
+ exitCriteria: [
53
+ 'Requirements understood and documented',
54
+ 'Approach designed (files to create/modify identified)',
55
+ 'Edge cases considered',
56
+ ],
57
+ successIndicators: [
58
+ 'Agent has written a plan in conversation or document',
59
+ 'Agent has identified target files',
60
+ 'No blocking questions remain',
61
+ ],
62
+ autoAdvance: true,
63
+ nextActionHint: 'Start implementing the planned changes',
64
+ },
65
+ {
66
+ step: 'implement',
67
+ exitCriteria: [
68
+ 'All planned code changes completed',
69
+ 'No placeholder TODOs left',
70
+ 'Code compiles/lints cleanly',
71
+ ],
72
+ successIndicators: [
73
+ 'writeFile/edit tools have been called',
74
+ 'Lint command passes (if available)',
75
+ 'No obvious errors in code',
76
+ ],
77
+ autoAdvance: true,
78
+ nextActionHint: 'Run tests to verify the implementation',
79
+ },
80
+ {
81
+ step: 'test',
82
+ exitCriteria: [
83
+ 'All tests pass',
84
+ 'OR: User overrides after 2 failed attempts',
85
+ ],
86
+ successIndicators: [
87
+ 'Test command exits with 0',
88
+ 'All test assertions pass',
89
+ ],
90
+ maxAttempts: 2,
91
+ autoAdvance: true, // Only if tests pass
92
+ nextActionHint: 'Commit the changes with a proper message',
93
+ },
94
+ {
95
+ step: 'commit',
96
+ exitCriteria: [
97
+ 'Changes committed with proper message',
98
+ 'Commit hash captured',
99
+ ],
100
+ successIndicators: [
101
+ 'git commit command succeeded',
102
+ 'Commit hash in output',
103
+ ],
104
+ autoAdvance: true,
105
+ nextActionHint: 'Review and confirm ready for next item',
106
+ },
107
+ {
108
+ step: 'review',
109
+ exitCriteria: [
110
+ 'User confirms ready for next item',
111
+ 'OR: User wants to do something else',
112
+ ],
113
+ successIndicators: [
114
+ 'User says "yes", "next", "continue"',
115
+ 'User explicitly approves',
116
+ ],
117
+ autoAdvance: false, // Always wait for user
118
+ nextActionHint: 'Pick the next work item from backlog',
119
+ },
120
+ ];
121
+ /**
122
+ * Get criteria for a specific step
123
+ */
124
+ export function getStepCriteria(step) {
125
+ const criteria = GUIDED_STEP_CRITERIA.find((c) => c.step === step);
126
+ if (!criteria) {
127
+ throw new Error(`No criteria found for step: ${step}`);
128
+ }
129
+ return criteria;
130
+ }
131
+ /**
132
+ * Get human-readable step description for messages
133
+ */
134
+ export function getStepDescription(step) {
135
+ const descriptions = {
136
+ plan: 'Planning - understanding requirements and designing approach',
137
+ implement: 'Implementing - writing code and making changes',
138
+ test: 'Testing - running tests and fixing failures',
139
+ commit: 'Committing - creating git commit with changes',
140
+ review: 'Reviewing - confirming completion and next steps',
141
+ };
142
+ return descriptions[step];
143
+ }
144
+ /**
145
+ * Format step for display (e.g., "IMPLEMENT (2 of 5)")
146
+ */
147
+ export function formatStepDisplay(step) {
148
+ const num = getStepNumber(step);
149
+ return `${step.toUpperCase()} (${String(num)} of ${String(STEP_ORDER.length)})`;
150
+ }
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Step Tracker - In-memory tracking of step attempts
3
+ *
4
+ * Tracks attempts for retryable steps (like test) during a session.
5
+ * This is in-memory only - resets on CLI restart.
6
+ * Can be persisted to history table later if needed.
7
+ */
8
+ import type { GuidedStep } from '../db/schema.js';
9
+ /**
10
+ * Record of a single step attempt
11
+ */
12
+ export interface StepAttempt {
13
+ /** When the attempt was made */
14
+ timestamp: Date;
15
+ /** Whether the attempt succeeded */
16
+ success: boolean;
17
+ /** Error message if failed */
18
+ error?: string;
19
+ /** Additional context */
20
+ context?: string;
21
+ }
22
+ /**
23
+ * In-memory tracker for guided workflow step attempts
24
+ *
25
+ * Tracks attempts per item per step, enabling retry logic
26
+ * (e.g., "tests failed after 2 attempts, ask user").
27
+ */
28
+ export declare class GuidedStepTracker {
29
+ /**
30
+ * Map: itemId -> step -> attempts[]
31
+ */
32
+ private readonly attempts;
33
+ /**
34
+ * Record an attempt for a step
35
+ */
36
+ recordAttempt(itemId: string, step: GuidedStep, success: boolean, error?: string, context?: string): void;
37
+ /**
38
+ * Get all attempts for a step
39
+ */
40
+ getAttempts(itemId: string, step: GuidedStep): StepAttempt[];
41
+ /**
42
+ * Get total attempt count for a step
43
+ */
44
+ getAttemptCount(itemId: string, step: GuidedStep): number;
45
+ /**
46
+ * Get failed attempt count for a step
47
+ */
48
+ getFailedAttemptCount(itemId: string, step: GuidedStep): number;
49
+ /**
50
+ * Get successful attempt count for a step
51
+ */
52
+ getSuccessfulAttemptCount(itemId: string, step: GuidedStep): number;
53
+ /**
54
+ * Check if we should escalate to user (max attempts exceeded)
55
+ */
56
+ shouldAskUser(itemId: string, step: GuidedStep, maxAttempts?: number): boolean;
57
+ /**
58
+ * Get remaining attempts before user escalation
59
+ */
60
+ getRemainingAttempts(itemId: string, step: GuidedStep): number | null;
61
+ /**
62
+ * Check if step has had any successful attempt
63
+ */
64
+ hasSucceeded(itemId: string, step: GuidedStep): boolean;
65
+ /**
66
+ * Get the last attempt for a step
67
+ */
68
+ getLastAttempt(itemId: string, step: GuidedStep): StepAttempt | null;
69
+ /**
70
+ * Reset attempts for a specific item (when starting fresh)
71
+ */
72
+ resetItem(itemId: string): void;
73
+ /**
74
+ * Reset attempts for a specific step (when user wants to retry)
75
+ */
76
+ resetStep(itemId: string, step: GuidedStep): void;
77
+ /**
78
+ * Clear all tracking data (e.g., on session end)
79
+ */
80
+ clear(): void;
81
+ /**
82
+ * Get a summary of attempts for an item (for display)
83
+ */
84
+ getItemSummary(itemId: string): Record<GuidedStep, {
85
+ total: number;
86
+ failed: number;
87
+ }> | null;
88
+ }
89
+ /**
90
+ * Singleton instance for the current session
91
+ */
92
+ export declare const stepTracker: GuidedStepTracker;
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Step Tracker - In-memory tracking of step attempts
3
+ *
4
+ * Tracks attempts for retryable steps (like test) during a session.
5
+ * This is in-memory only - resets on CLI restart.
6
+ * Can be persisted to history table later if needed.
7
+ */
8
+ import { getStepCriteria } from './step-criteria.js';
9
+ /**
10
+ * In-memory tracker for guided workflow step attempts
11
+ *
12
+ * Tracks attempts per item per step, enabling retry logic
13
+ * (e.g., "tests failed after 2 attempts, ask user").
14
+ */
15
+ export class GuidedStepTracker {
16
+ /**
17
+ * Map: itemId -> step -> attempts[]
18
+ */
19
+ attempts = new Map();
20
+ /**
21
+ * Record an attempt for a step
22
+ */
23
+ recordAttempt(itemId, step, success, error, context) {
24
+ if (!this.attempts.has(itemId)) {
25
+ this.attempts.set(itemId, new Map());
26
+ }
27
+ const itemAttempts = this.attempts.get(itemId);
28
+ if (!itemAttempts)
29
+ return; // Should never happen, just added above
30
+ if (!itemAttempts.has(step)) {
31
+ itemAttempts.set(step, []);
32
+ }
33
+ const stepAttempts = itemAttempts.get(step);
34
+ if (!stepAttempts)
35
+ return; // Should never happen, just added above
36
+ stepAttempts.push({
37
+ timestamp: new Date(),
38
+ success,
39
+ error,
40
+ context,
41
+ });
42
+ }
43
+ /**
44
+ * Get all attempts for a step
45
+ */
46
+ getAttempts(itemId, step) {
47
+ return this.attempts.get(itemId)?.get(step) ?? [];
48
+ }
49
+ /**
50
+ * Get total attempt count for a step
51
+ */
52
+ getAttemptCount(itemId, step) {
53
+ return this.getAttempts(itemId, step).length;
54
+ }
55
+ /**
56
+ * Get failed attempt count for a step
57
+ */
58
+ getFailedAttemptCount(itemId, step) {
59
+ return this.getAttempts(itemId, step).filter((a) => !a.success).length;
60
+ }
61
+ /**
62
+ * Get successful attempt count for a step
63
+ */
64
+ getSuccessfulAttemptCount(itemId, step) {
65
+ return this.getAttempts(itemId, step).filter((a) => a.success).length;
66
+ }
67
+ /**
68
+ * Check if we should escalate to user (max attempts exceeded)
69
+ */
70
+ shouldAskUser(itemId, step, maxAttempts) {
71
+ const criteria = getStepCriteria(step);
72
+ const max = maxAttempts ?? criteria.maxAttempts;
73
+ if (max === undefined) {
74
+ // No retry limit defined for this step
75
+ return false;
76
+ }
77
+ return this.getFailedAttemptCount(itemId, step) >= max;
78
+ }
79
+ /**
80
+ * Get remaining attempts before user escalation
81
+ */
82
+ getRemainingAttempts(itemId, step) {
83
+ const criteria = getStepCriteria(step);
84
+ if (criteria.maxAttempts === undefined) {
85
+ return null; // No limit
86
+ }
87
+ return Math.max(0, criteria.maxAttempts - this.getFailedAttemptCount(itemId, step));
88
+ }
89
+ /**
90
+ * Check if step has had any successful attempt
91
+ */
92
+ hasSucceeded(itemId, step) {
93
+ return this.getSuccessfulAttemptCount(itemId, step) > 0;
94
+ }
95
+ /**
96
+ * Get the last attempt for a step
97
+ */
98
+ getLastAttempt(itemId, step) {
99
+ const attempts = this.getAttempts(itemId, step);
100
+ return attempts.length > 0 ? attempts[attempts.length - 1] : null;
101
+ }
102
+ /**
103
+ * Reset attempts for a specific item (when starting fresh)
104
+ */
105
+ resetItem(itemId) {
106
+ this.attempts.delete(itemId);
107
+ }
108
+ /**
109
+ * Reset attempts for a specific step (when user wants to retry)
110
+ */
111
+ resetStep(itemId, step) {
112
+ this.attempts.get(itemId)?.delete(step);
113
+ }
114
+ /**
115
+ * Clear all tracking data (e.g., on session end)
116
+ */
117
+ clear() {
118
+ this.attempts.clear();
119
+ }
120
+ /**
121
+ * Get a summary of attempts for an item (for display)
122
+ */
123
+ getItemSummary(itemId) {
124
+ const itemAttempts = this.attempts.get(itemId);
125
+ if (!itemAttempts) {
126
+ return null;
127
+ }
128
+ const summary = {};
129
+ for (const [step, attempts] of itemAttempts) {
130
+ summary[step] = {
131
+ total: attempts.length,
132
+ failed: attempts.filter((a) => !a.success).length,
133
+ };
134
+ }
135
+ return summary;
136
+ }
137
+ }
138
+ /**
139
+ * Singleton instance for the current session
140
+ */
141
+ export const stepTracker = new GuidedStepTracker();