@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,197 @@
1
+ /**
2
+ * ArtifactStore - Storage for team artifacts
3
+ *
4
+ * Artifacts are named pieces of work that agents can publish and reference:
5
+ * - design: Architecture, API specs, data models
6
+ * - plan: Sprint plans, task breakdowns, timelines
7
+ * - review: Code reviews, security audits, feedback
8
+ * - decision: Architectural decisions, trade-off analysis
9
+ * - note: General notes, meeting summaries
10
+ */
11
+ /**
12
+ * Artifact types
13
+ */
14
+ export type ArtifactType = 'design' | 'plan' | 'review' | 'decision' | 'note';
15
+ /**
16
+ * Full artifact structure
17
+ */
18
+ export interface Artifact {
19
+ id: string;
20
+ name: string;
21
+ agent: string;
22
+ type: ArtifactType;
23
+ content: string;
24
+ summary: string;
25
+ version: number;
26
+ createdAt: Date;
27
+ updatedAt: Date;
28
+ mentions: string[];
29
+ referencedBy: string[];
30
+ }
31
+ /**
32
+ * Artifact summary for the shared context index
33
+ */
34
+ export interface ArtifactSummary {
35
+ id: string;
36
+ name: string;
37
+ agent: string;
38
+ type: ArtifactType;
39
+ summary: string;
40
+ updatedAt: Date;
41
+ }
42
+ /**
43
+ * Options for creating an artifact
44
+ */
45
+ export interface CreateArtifactOptions {
46
+ name: string;
47
+ agent: string;
48
+ type: ArtifactType;
49
+ content: string;
50
+ summary?: string;
51
+ }
52
+ /**
53
+ * Options for updating an artifact
54
+ */
55
+ export interface UpdateArtifactOptions {
56
+ content?: string;
57
+ summary?: string;
58
+ type?: ArtifactType;
59
+ }
60
+ /**
61
+ * Serialized artifact for persistence
62
+ */
63
+ export interface SerializedArtifact {
64
+ id: string;
65
+ name: string;
66
+ agent: string;
67
+ type: ArtifactType;
68
+ content: string;
69
+ summary: string;
70
+ version: number;
71
+ createdAt: string;
72
+ updatedAt: string;
73
+ mentions?: string[];
74
+ referencedBy?: string[];
75
+ }
76
+ /**
77
+ * Artifact index for persistence
78
+ */
79
+ export interface ArtifactIndex {
80
+ version: number;
81
+ artifacts: Array<{
82
+ id: string;
83
+ name: string;
84
+ agent: string;
85
+ type: ArtifactType;
86
+ summary: string;
87
+ updatedAt: string;
88
+ }>;
89
+ updatedAt: string;
90
+ }
91
+ /**
92
+ * Manages artifact storage and retrieval
93
+ */
94
+ export declare class ArtifactStore {
95
+ private readonly basePath;
96
+ private readonly artifacts;
97
+ private readonly nameToId;
98
+ private updatedAt;
99
+ constructor(basePath: string);
100
+ /**
101
+ * Get the artifacts directory path
102
+ */
103
+ private getArtifactsDir;
104
+ /**
105
+ * Get the index file path
106
+ */
107
+ private getIndexPath;
108
+ /**
109
+ * Get the path for an artifact file
110
+ */
111
+ private getArtifactPath;
112
+ /**
113
+ * Ensure artifacts directory exists
114
+ */
115
+ private ensureDir;
116
+ /**
117
+ * Create a new artifact
118
+ */
119
+ create(options: CreateArtifactOptions): Artifact;
120
+ /**
121
+ * Get an artifact by ID
122
+ */
123
+ get(id: string): Artifact | undefined;
124
+ /**
125
+ * Get an artifact by name (case-insensitive)
126
+ */
127
+ getByName(name: string): Artifact | undefined;
128
+ /**
129
+ * Update an artifact
130
+ */
131
+ update(id: string, options: UpdateArtifactOptions): Artifact | undefined;
132
+ /**
133
+ * Delete an artifact
134
+ */
135
+ delete(id: string): boolean;
136
+ /**
137
+ * Rename an artifact
138
+ */
139
+ rename(id: string, newName: string): Artifact | undefined;
140
+ /**
141
+ * List all artifacts
142
+ */
143
+ list(): Artifact[];
144
+ /**
145
+ * List artifacts by agent
146
+ */
147
+ listByAgent(agent: string): Artifact[];
148
+ /**
149
+ * List artifacts by type
150
+ */
151
+ listByType(type: ArtifactType): Artifact[];
152
+ /**
153
+ * Search artifacts by name or content
154
+ */
155
+ search(query: string): Artifact[];
156
+ /**
157
+ * Get artifact count
158
+ */
159
+ get size(): number;
160
+ /**
161
+ * Check if an artifact exists by name
162
+ */
163
+ has(name: string): boolean;
164
+ /**
165
+ * Check if an artifact exists by ID
166
+ */
167
+ hasId(id: string): boolean;
168
+ /**
169
+ * Generate a summary from content
170
+ * Simple extraction of first meaningful lines
171
+ */
172
+ private generateSummary;
173
+ /**
174
+ * Get summaries for shared context injection
175
+ */
176
+ getSummaries(): ArtifactSummary[];
177
+ /**
178
+ * Save all artifacts to disk
179
+ */
180
+ save(): void;
181
+ /**
182
+ * Save just the index file
183
+ */
184
+ private saveIndex;
185
+ /**
186
+ * Load artifacts from disk
187
+ */
188
+ load(): void;
189
+ /**
190
+ * Clear all artifacts (including from disk)
191
+ */
192
+ clear(): void;
193
+ /**
194
+ * Get the last update timestamp
195
+ */
196
+ getLastUpdated(): Date;
197
+ }
@@ -0,0 +1,379 @@
1
+ /**
2
+ * ArtifactStore - Storage for team artifacts
3
+ *
4
+ * Artifacts are named pieces of work that agents can publish and reference:
5
+ * - design: Architecture, API specs, data models
6
+ * - plan: Sprint plans, task breakdowns, timelines
7
+ * - review: Code reviews, security audits, feedback
8
+ * - decision: Architectural decisions, trade-off analysis
9
+ * - note: General notes, meeting summaries
10
+ */
11
+ import * as fs from 'node:fs';
12
+ import * as path from 'node:path';
13
+ import { truncatePlain as truncate } from '@compilr-dev/ui-core/utils';
14
+ // =============================================================================
15
+ // Constants
16
+ // =============================================================================
17
+ const MAX_SUMMARY_LENGTH = 200;
18
+ const ARTIFACTS_DIR = 'artifacts';
19
+ const INDEX_FILE = 'index.json';
20
+ // =============================================================================
21
+ // ArtifactStore
22
+ // =============================================================================
23
+ /**
24
+ * Manages artifact storage and retrieval
25
+ */
26
+ export class ArtifactStore {
27
+ basePath;
28
+ artifacts = new Map();
29
+ nameToId = new Map(); // name -> id lookup
30
+ updatedAt = new Date();
31
+ constructor(basePath) {
32
+ this.basePath = basePath;
33
+ }
34
+ // ---------------------------------------------------------------------------
35
+ // Path Helpers
36
+ // ---------------------------------------------------------------------------
37
+ /**
38
+ * Get the artifacts directory path
39
+ */
40
+ getArtifactsDir() {
41
+ return path.join(this.basePath, ARTIFACTS_DIR);
42
+ }
43
+ /**
44
+ * Get the index file path
45
+ */
46
+ getIndexPath() {
47
+ return path.join(this.getArtifactsDir(), INDEX_FILE);
48
+ }
49
+ /**
50
+ * Get the path for an artifact file
51
+ */
52
+ getArtifactPath(id) {
53
+ return path.join(this.getArtifactsDir(), `${id}.json`);
54
+ }
55
+ /**
56
+ * Ensure artifacts directory exists
57
+ */
58
+ ensureDir() {
59
+ const dir = this.getArtifactsDir();
60
+ if (!fs.existsSync(dir)) {
61
+ fs.mkdirSync(dir, { recursive: true });
62
+ }
63
+ }
64
+ // ---------------------------------------------------------------------------
65
+ // CRUD Operations
66
+ // ---------------------------------------------------------------------------
67
+ /**
68
+ * Create a new artifact
69
+ */
70
+ create(options) {
71
+ const id = `art-${String(Date.now())}-${Math.random().toString(36).slice(2, 8)}`;
72
+ // Generate summary if not provided
73
+ const summary = options.summary ?? this.generateSummary(options.content);
74
+ const artifact = {
75
+ id,
76
+ name: options.name,
77
+ agent: options.agent,
78
+ type: options.type,
79
+ content: options.content,
80
+ summary,
81
+ version: 1,
82
+ createdAt: new Date(),
83
+ updatedAt: new Date(),
84
+ mentions: [],
85
+ referencedBy: [],
86
+ };
87
+ this.artifacts.set(id, artifact);
88
+ this.nameToId.set(options.name.toLowerCase(), id);
89
+ this.updatedAt = new Date();
90
+ return artifact;
91
+ }
92
+ /**
93
+ * Get an artifact by ID
94
+ */
95
+ get(id) {
96
+ return this.artifacts.get(id);
97
+ }
98
+ /**
99
+ * Get an artifact by name (case-insensitive)
100
+ */
101
+ getByName(name) {
102
+ const id = this.nameToId.get(name.toLowerCase());
103
+ if (id) {
104
+ return this.artifacts.get(id);
105
+ }
106
+ return undefined;
107
+ }
108
+ /**
109
+ * Update an artifact
110
+ */
111
+ update(id, options) {
112
+ const artifact = this.artifacts.get(id);
113
+ if (!artifact) {
114
+ return undefined;
115
+ }
116
+ if (options.content !== undefined) {
117
+ artifact.content = options.content;
118
+ // Regenerate summary if content changed and no new summary provided
119
+ if (options.summary === undefined) {
120
+ artifact.summary = this.generateSummary(options.content);
121
+ }
122
+ }
123
+ if (options.summary !== undefined) {
124
+ artifact.summary = options.summary;
125
+ }
126
+ if (options.type !== undefined) {
127
+ artifact.type = options.type;
128
+ }
129
+ artifact.version++;
130
+ artifact.updatedAt = new Date();
131
+ this.updatedAt = new Date();
132
+ return artifact;
133
+ }
134
+ /**
135
+ * Delete an artifact
136
+ */
137
+ delete(id) {
138
+ const artifact = this.artifacts.get(id);
139
+ if (!artifact) {
140
+ return false;
141
+ }
142
+ this.nameToId.delete(artifact.name.toLowerCase());
143
+ this.artifacts.delete(id);
144
+ this.updatedAt = new Date();
145
+ // Remove file if persisted
146
+ const filePath = this.getArtifactPath(id);
147
+ if (fs.existsSync(filePath)) {
148
+ fs.unlinkSync(filePath);
149
+ }
150
+ return true;
151
+ }
152
+ /**
153
+ * Rename an artifact
154
+ */
155
+ rename(id, newName) {
156
+ const artifact = this.artifacts.get(id);
157
+ if (!artifact) {
158
+ return undefined;
159
+ }
160
+ // Update name lookup
161
+ this.nameToId.delete(artifact.name.toLowerCase());
162
+ artifact.name = newName;
163
+ this.nameToId.set(newName.toLowerCase(), id);
164
+ artifact.updatedAt = new Date();
165
+ this.updatedAt = new Date();
166
+ return artifact;
167
+ }
168
+ // ---------------------------------------------------------------------------
169
+ // Query Operations
170
+ // ---------------------------------------------------------------------------
171
+ /**
172
+ * List all artifacts
173
+ */
174
+ list() {
175
+ return Array.from(this.artifacts.values());
176
+ }
177
+ /**
178
+ * List artifacts by agent
179
+ */
180
+ listByAgent(agent) {
181
+ return this.list().filter(a => a.agent === agent);
182
+ }
183
+ /**
184
+ * List artifacts by type
185
+ */
186
+ listByType(type) {
187
+ return this.list().filter(a => a.type === type);
188
+ }
189
+ /**
190
+ * Search artifacts by name or content
191
+ */
192
+ search(query) {
193
+ const lowerQuery = query.toLowerCase();
194
+ return this.list().filter(a => a.name.toLowerCase().includes(lowerQuery) ||
195
+ a.content.toLowerCase().includes(lowerQuery) ||
196
+ a.summary.toLowerCase().includes(lowerQuery));
197
+ }
198
+ /**
199
+ * Get artifact count
200
+ */
201
+ get size() {
202
+ return this.artifacts.size;
203
+ }
204
+ /**
205
+ * Check if an artifact exists by name
206
+ */
207
+ has(name) {
208
+ return this.nameToId.has(name.toLowerCase());
209
+ }
210
+ /**
211
+ * Check if an artifact exists by ID
212
+ */
213
+ hasId(id) {
214
+ return this.artifacts.has(id);
215
+ }
216
+ // ---------------------------------------------------------------------------
217
+ // Summary Generation
218
+ // ---------------------------------------------------------------------------
219
+ /**
220
+ * Generate a summary from content
221
+ * Simple extraction of first meaningful lines
222
+ */
223
+ generateSummary(content) {
224
+ // Remove markdown headers and get first meaningful content
225
+ const lines = content
226
+ .split('\n')
227
+ .map(line => line.trim())
228
+ .filter(line => line.length > 0 && !line.startsWith('#'));
229
+ const summary = lines.slice(0, 3).join(' ');
230
+ if (summary.length > MAX_SUMMARY_LENGTH) {
231
+ return truncate(summary, MAX_SUMMARY_LENGTH);
232
+ }
233
+ return summary || 'No summary available';
234
+ }
235
+ // ---------------------------------------------------------------------------
236
+ // Index for Shared Context
237
+ // ---------------------------------------------------------------------------
238
+ /**
239
+ * Get summaries for shared context injection
240
+ */
241
+ getSummaries() {
242
+ return this.list()
243
+ .sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime())
244
+ .map(a => ({
245
+ id: a.id,
246
+ name: a.name,
247
+ agent: a.agent,
248
+ type: a.type,
249
+ summary: a.summary,
250
+ updatedAt: a.updatedAt,
251
+ }));
252
+ }
253
+ // ---------------------------------------------------------------------------
254
+ // Persistence
255
+ // ---------------------------------------------------------------------------
256
+ /**
257
+ * Save all artifacts to disk
258
+ */
259
+ save() {
260
+ this.ensureDir();
261
+ // Save each artifact
262
+ for (const artifact of this.artifacts.values()) {
263
+ const filePath = this.getArtifactPath(artifact.id);
264
+ const serialized = {
265
+ id: artifact.id,
266
+ name: artifact.name,
267
+ agent: artifact.agent,
268
+ type: artifact.type,
269
+ content: artifact.content,
270
+ summary: artifact.summary,
271
+ version: artifact.version,
272
+ createdAt: artifact.createdAt.toISOString(),
273
+ updatedAt: artifact.updatedAt.toISOString(),
274
+ mentions: artifact.mentions,
275
+ referencedBy: artifact.referencedBy,
276
+ };
277
+ fs.writeFileSync(filePath, JSON.stringify(serialized, null, 2), 'utf-8');
278
+ }
279
+ // Save index
280
+ this.saveIndex();
281
+ }
282
+ /**
283
+ * Save just the index file
284
+ */
285
+ saveIndex() {
286
+ this.ensureDir();
287
+ const index = {
288
+ version: 1,
289
+ artifacts: this.getSummaries().map(a => ({
290
+ id: a.id,
291
+ name: a.name,
292
+ agent: a.agent,
293
+ type: a.type,
294
+ summary: a.summary,
295
+ updatedAt: a.updatedAt.toISOString(),
296
+ })),
297
+ updatedAt: this.updatedAt.toISOString(),
298
+ };
299
+ fs.writeFileSync(this.getIndexPath(), JSON.stringify(index, null, 2), 'utf-8');
300
+ }
301
+ /**
302
+ * Load artifacts from disk
303
+ */
304
+ load() {
305
+ const dir = this.getArtifactsDir();
306
+ if (!fs.existsSync(dir)) {
307
+ return;
308
+ }
309
+ // Load index first to get list of artifacts
310
+ const indexPath = this.getIndexPath();
311
+ if (!fs.existsSync(indexPath)) {
312
+ return;
313
+ }
314
+ try {
315
+ const indexContent = fs.readFileSync(indexPath, 'utf-8');
316
+ const index = JSON.parse(indexContent);
317
+ // Load each artifact file
318
+ for (const entry of index.artifacts) {
319
+ const filePath = this.getArtifactPath(entry.id);
320
+ if (fs.existsSync(filePath)) {
321
+ try {
322
+ const content = fs.readFileSync(filePath, 'utf-8');
323
+ const serialized = JSON.parse(content);
324
+ const artifact = {
325
+ id: serialized.id,
326
+ name: serialized.name,
327
+ agent: serialized.agent,
328
+ type: serialized.type,
329
+ content: serialized.content,
330
+ summary: serialized.summary,
331
+ version: serialized.version,
332
+ createdAt: new Date(serialized.createdAt),
333
+ updatedAt: new Date(serialized.updatedAt),
334
+ mentions: serialized.mentions ?? [],
335
+ referencedBy: serialized.referencedBy ?? [],
336
+ };
337
+ this.artifacts.set(artifact.id, artifact);
338
+ this.nameToId.set(artifact.name.toLowerCase(), artifact.id);
339
+ }
340
+ catch {
341
+ // Skip invalid artifact files
342
+ }
343
+ }
344
+ }
345
+ this.updatedAt = new Date(index.updatedAt);
346
+ }
347
+ catch {
348
+ // Index corrupted, start fresh
349
+ this.artifacts.clear();
350
+ this.nameToId.clear();
351
+ }
352
+ }
353
+ /**
354
+ * Clear all artifacts (including from disk)
355
+ */
356
+ clear() {
357
+ // Delete all artifact files
358
+ for (const id of this.artifacts.keys()) {
359
+ const filePath = this.getArtifactPath(id);
360
+ if (fs.existsSync(filePath)) {
361
+ fs.unlinkSync(filePath);
362
+ }
363
+ }
364
+ // Delete index
365
+ const indexPath = this.getIndexPath();
366
+ if (fs.existsSync(indexPath)) {
367
+ fs.unlinkSync(indexPath);
368
+ }
369
+ this.artifacts.clear();
370
+ this.nameToId.clear();
371
+ this.updatedAt = new Date();
372
+ }
373
+ /**
374
+ * Get the last update timestamp
375
+ */
376
+ getLastUpdated() {
377
+ return this.updatedAt;
378
+ }
379
+ }
@@ -0,0 +1,138 @@
1
+ /**
2
+ * TeamCheckpointer - Persistence for multi-agent teams
3
+ *
4
+ * Stores team state alongside project sessions:
5
+ * ~/.compilr-dev/sessions/{project-id}/
6
+ * ├── current.json # Single-agent session (existing)
7
+ * ├── team.json # Team metadata
8
+ * ├── agent-default.json # Per-agent state
9
+ * ├── agent-pm.json
10
+ * ├── agent-arch.json
11
+ * ├── shared-context.json # Shared context (Phase 2)
12
+ * └── artifacts/ # Team artifacts (Phase 2)
13
+ * ├── index.json
14
+ * └── {id}.json
15
+ */
16
+ import type { SerializedTeamAgent, TeamMetadata } from './types.js';
17
+ import { AgentTeam, type AgentTeamConfig } from './team.js';
18
+ import { SharedContextManager } from './shared-context.js';
19
+ import { ArtifactStore } from './artifacts.js';
20
+ /**
21
+ * TeamCheckpointer handles persistence for multi-agent teams
22
+ */
23
+ export declare class TeamCheckpointer {
24
+ private readonly sessionsPath;
25
+ constructor(sessionsPath: string);
26
+ /**
27
+ * Get the session directory for a project
28
+ */
29
+ private getProjectDir;
30
+ /**
31
+ * Get the team metadata file path (terminal-scoped when multi-terminal active)
32
+ */
33
+ private getTeamFilePath;
34
+ /**
35
+ * Get the agent state file path (terminal-scoped when multi-terminal active)
36
+ */
37
+ private getAgentFilePath;
38
+ /**
39
+ * Get the shared context file path (terminal-scoped when multi-terminal active)
40
+ */
41
+ private getSharedContextPath;
42
+ /**
43
+ * Get the artifacts directory path
44
+ */
45
+ private getArtifactsPath;
46
+ /**
47
+ * Check if a team exists for THIS terminal's project.
48
+ * Only checks this terminal's scoped file — never cross-terminal.
49
+ */
50
+ hasTeam(projectId: number | null): boolean;
51
+ /**
52
+ * Save team state
53
+ */
54
+ saveTeam(projectId: number | null, team: AgentTeam): void;
55
+ /**
56
+ * Load team state for THIS terminal.
57
+ * Only loads this terminal's scoped files. Never cross-terminal.
58
+ * For cross-terminal loading, use loadTeamByPrefix().
59
+ */
60
+ loadTeam(projectId: number | null, agentFactory: AgentTeamConfig['agentFactory'], onEvent?: AgentTeamConfig['onEvent']): AgentTeam | null;
61
+ /**
62
+ * Load team state for a SPECIFIC terminal prefix (cross-terminal resume).
63
+ * Used when the user explicitly picks another terminal's session to resume.
64
+ */
65
+ loadTeamByPrefix(projectId: number | null, terminalPrefix: string, agentFactory: AgentTeamConfig['agentFactory'], onEvent?: AgentTeamConfig['onEvent']): AgentTeam | null;
66
+ /**
67
+ * Get the agent count from a team file for a specific terminal prefix.
68
+ * Lightweight — reads only metadata, doesn't load agents.
69
+ * Returns 0 if no team file exists (default agent only).
70
+ */
71
+ getTeamAgentCountByPrefix(projectId: number | null, terminalPrefix: string): number;
72
+ /**
73
+ * Internal: load team from a specific file path with optional terminal prefix for agent files.
74
+ */
75
+ private loadTeamFromPath;
76
+ /**
77
+ * Save a single agent's state (for incremental updates)
78
+ */
79
+ saveAgent(projectId: number | null, agentId: string, agent: SerializedTeamAgent): void;
80
+ /**
81
+ * Delete team data for a project
82
+ */
83
+ deleteTeam(projectId: number | null): boolean;
84
+ /**
85
+ * Claim team files from another terminal by renaming them to this terminal's prefix.
86
+ * Renames: team-{from}.json, agent-{from}-*.json, shared-context-{from}.json
87
+ */
88
+ claimTeamFiles(projectId: number | null, fromPrefix: string, toPrefix: string): boolean;
89
+ /**
90
+ * Check if shared context exists for this project
91
+ */
92
+ hasSharedContext(projectId: number | null): boolean;
93
+ /**
94
+ * Save shared context
95
+ */
96
+ saveSharedContext(projectId: number | null, context: SharedContextManager): void;
97
+ /**
98
+ * Load shared context
99
+ */
100
+ loadSharedContext(projectId: number | null): SharedContextManager | null;
101
+ /**
102
+ * Delete shared context
103
+ */
104
+ deleteSharedContext(projectId: number | null): boolean;
105
+ /**
106
+ * Get artifact store for a project
107
+ * The ArtifactStore handles its own persistence
108
+ */
109
+ getArtifactStore(projectId: number | null): ArtifactStore;
110
+ /**
111
+ * Check if artifacts exist for this project
112
+ */
113
+ hasArtifacts(projectId: number | null): boolean;
114
+ /**
115
+ * Delete all artifacts for a project
116
+ */
117
+ deleteArtifacts(projectId: number | null): boolean;
118
+ /**
119
+ * Clean up agent files that are no longer in the team
120
+ */
121
+ private cleanupOldAgentFiles;
122
+ /**
123
+ * List all projects that have team data.
124
+ */
125
+ listProjectsWithTeams(): number[];
126
+ /**
127
+ * Get team metadata without loading the full team.
128
+ */
129
+ getTeamMetadata(projectId: number | null): TeamMetadata | null;
130
+ }
131
+ /**
132
+ * Get the default sessions path
133
+ */
134
+ export declare function getSessionsPath(): string;
135
+ /**
136
+ * Get the shared TeamCheckpointer instance
137
+ */
138
+ export declare function getTeamCheckpointer(): TeamCheckpointer;