@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,76 @@
1
+ /**
2
+ * MCP Configuration Loader
3
+ *
4
+ * Loads MCP server configs from:
5
+ * 1. Global: ~/.compilr-dev/mcp.json
6
+ * 2. Per-project: <projectRoot>/.compilr-dev/mcp.json
7
+ *
8
+ * Project config overrides global config (by server name).
9
+ * Format is compatible with Claude Desktop / Gemini CLI.
10
+ */
11
+ /**
12
+ * Single MCP server entry in the config file.
13
+ * If `command` is present → stdio transport.
14
+ * If `url` is present → HTTP transport.
15
+ */
16
+ export interface MCPServerEntry {
17
+ command?: string;
18
+ args?: string[];
19
+ env?: Record<string, string>;
20
+ cwd?: string;
21
+ url?: string;
22
+ headers?: Record<string, string>;
23
+ disabled?: boolean;
24
+ timeout?: number;
25
+ }
26
+ /**
27
+ * Shape of the mcp.json config file.
28
+ */
29
+ export interface MCPConfigFile {
30
+ mcpServers: Record<string, MCPServerEntry>;
31
+ }
32
+ /**
33
+ * Resolved MCP server config ready for MCPManager.
34
+ * Uses the MCPServerConfig shape from @compilr-dev/agents.
35
+ */
36
+ export interface ResolvedMCPServer {
37
+ name: string;
38
+ transport: 'stdio' | 'http';
39
+ command?: string;
40
+ args?: string[];
41
+ env?: Record<string, string>;
42
+ cwd?: string;
43
+ url?: string;
44
+ headers?: Record<string, string>;
45
+ timeout?: number;
46
+ }
47
+ /**
48
+ * Get the global MCP config file path.
49
+ */
50
+ export declare function getMCPConfigPath(): string;
51
+ /**
52
+ * Get the per-project MCP config file path.
53
+ */
54
+ export declare function getProjectMCPConfigPath(projectRoot: string): string;
55
+ /**
56
+ * Load MCP server configs from global and project-level config files.
57
+ * Project configs override global by server name.
58
+ *
59
+ * @param projectRoot - Optional project root for per-project config
60
+ * @returns Array of resolved MCP server configs
61
+ */
62
+ export declare function loadMCPConfig(projectRoot?: string): ResolvedMCPServer[];
63
+ /**
64
+ * Get existing server names from all config files.
65
+ * Useful for validating uniqueness when adding a new server.
66
+ */
67
+ export declare function getExistingServerNames(projectRoot?: string): Set<string>;
68
+ /**
69
+ * Save a new MCP server entry to the config file.
70
+ *
71
+ * @param name - Server name (unique identifier)
72
+ * @param entry - Server configuration entry
73
+ * @param scope - 'global' or 'project'
74
+ * @param projectRoot - Required when scope is 'project'
75
+ */
76
+ export declare function saveMCPServer(name: string, entry: MCPServerEntry, scope: 'global' | 'project', projectRoot?: string): void;
@@ -0,0 +1,143 @@
1
+ /**
2
+ * MCP Configuration Loader
3
+ *
4
+ * Loads MCP server configs from:
5
+ * 1. Global: ~/.compilr-dev/mcp.json
6
+ * 2. Per-project: <projectRoot>/.compilr-dev/mcp.json
7
+ *
8
+ * Project config overrides global config (by server name).
9
+ * Format is compatible with Claude Desktop / Gemini CLI.
10
+ */
11
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
12
+ import * as path from 'path';
13
+ import { getDataPath } from './paths.js';
14
+ // =============================================================================
15
+ // Config Loading
16
+ // =============================================================================
17
+ /**
18
+ * Get the global MCP config file path.
19
+ */
20
+ export function getMCPConfigPath() {
21
+ return path.join(getDataPath(), 'mcp.json');
22
+ }
23
+ /**
24
+ * Get the per-project MCP config file path.
25
+ */
26
+ export function getProjectMCPConfigPath(projectRoot) {
27
+ return path.join(projectRoot, '.compilr-dev', 'mcp.json');
28
+ }
29
+ /**
30
+ * Read and parse an mcp.json file. Returns empty servers on any error.
31
+ */
32
+ function readMCPConfigFile(filePath) {
33
+ try {
34
+ if (!existsSync(filePath)) {
35
+ return {};
36
+ }
37
+ const data = readFileSync(filePath, 'utf-8');
38
+ const parsed = JSON.parse(data);
39
+ if (parsed.mcpServers && typeof parsed.mcpServers === 'object') {
40
+ return parsed.mcpServers;
41
+ }
42
+ return {};
43
+ }
44
+ catch {
45
+ return {};
46
+ }
47
+ }
48
+ /**
49
+ * Convert an MCPServerEntry to a ResolvedMCPServer.
50
+ * Returns null if the entry is invalid (neither command nor url).
51
+ */
52
+ function resolveEntry(name, entry) {
53
+ if (entry.disabled) {
54
+ return null;
55
+ }
56
+ if (entry.command) {
57
+ return {
58
+ name,
59
+ transport: 'stdio',
60
+ command: entry.command,
61
+ args: entry.args,
62
+ env: entry.env,
63
+ cwd: entry.cwd,
64
+ timeout: entry.timeout,
65
+ };
66
+ }
67
+ if (entry.url) {
68
+ return {
69
+ name,
70
+ transport: 'http',
71
+ url: entry.url,
72
+ headers: entry.headers,
73
+ timeout: entry.timeout,
74
+ };
75
+ }
76
+ // Neither command nor url — invalid entry
77
+ return null;
78
+ }
79
+ /**
80
+ * Load MCP server configs from global and project-level config files.
81
+ * Project configs override global by server name.
82
+ *
83
+ * @param projectRoot - Optional project root for per-project config
84
+ * @returns Array of resolved MCP server configs
85
+ */
86
+ export function loadMCPConfig(projectRoot) {
87
+ // 1. Load global config
88
+ const globalServers = readMCPConfigFile(getMCPConfigPath());
89
+ // 2. Load project config (overrides global by name)
90
+ const projectServers = projectRoot
91
+ ? readMCPConfigFile(getProjectMCPConfigPath(projectRoot))
92
+ : {};
93
+ // 3. Merge: project overrides global
94
+ const merged = { ...globalServers, ...projectServers };
95
+ // 4. Resolve each entry
96
+ const resolved = [];
97
+ for (const [name, entry] of Object.entries(merged)) {
98
+ const server = resolveEntry(name, entry);
99
+ if (server) {
100
+ resolved.push(server);
101
+ }
102
+ }
103
+ return resolved;
104
+ }
105
+ /**
106
+ * Get existing server names from all config files.
107
+ * Useful for validating uniqueness when adding a new server.
108
+ */
109
+ export function getExistingServerNames(projectRoot) {
110
+ const globalServers = readMCPConfigFile(getMCPConfigPath());
111
+ const projectServers = projectRoot
112
+ ? readMCPConfigFile(getProjectMCPConfigPath(projectRoot))
113
+ : {};
114
+ return new Set([...Object.keys(globalServers), ...Object.keys(projectServers)]);
115
+ }
116
+ /**
117
+ * Save a new MCP server entry to the config file.
118
+ *
119
+ * @param name - Server name (unique identifier)
120
+ * @param entry - Server configuration entry
121
+ * @param scope - 'global' or 'project'
122
+ * @param projectRoot - Required when scope is 'project'
123
+ */
124
+ export function saveMCPServer(name, entry, scope, projectRoot) {
125
+ const configPath = scope === 'project' && projectRoot
126
+ ? getProjectMCPConfigPath(projectRoot)
127
+ : getMCPConfigPath();
128
+ // Read existing config (or empty)
129
+ let config = { mcpServers: {} };
130
+ try {
131
+ const raw = readFileSync(configPath, 'utf-8');
132
+ const parsed = JSON.parse(raw);
133
+ config = { mcpServers: parsed.mcpServers ?? {} };
134
+ }
135
+ catch {
136
+ // File doesn't exist or invalid — start fresh
137
+ }
138
+ // Add/overwrite server entry
139
+ config.mcpServers[name] = entry;
140
+ // Ensure directory exists, write file
141
+ mkdirSync(path.dirname(configPath), { recursive: true });
142
+ writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
143
+ }
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Path Configuration Module
3
+ *
4
+ * Centralized path configuration with safety guards.
5
+ * Inspired by ATLAS CLI config/index.ts
6
+ *
7
+ * Priority order:
8
+ * 1. Environment variable (COMPILR_*)
9
+ * 2. Config file (~/.compilr-dev/settings.json)
10
+ * 3. Default/derived value
11
+ */
12
+ export interface PathConfig {
13
+ workspacePath?: string;
14
+ projectsPath?: string;
15
+ dataPath?: string;
16
+ allowedPaths?: string[];
17
+ requireProjectMatch?: boolean;
18
+ deleteProtection?: boolean;
19
+ }
20
+ export interface ResolvedPathConfig {
21
+ workspacePath: string;
22
+ projectsPath: string;
23
+ dataPath: string;
24
+ allowedPaths: string[];
25
+ requireProjectMatch: boolean;
26
+ deleteProtection: boolean;
27
+ }
28
+ /**
29
+ * Get the data directory (where config, DB, credentials live)
30
+ * Priority: ENV > config > default
31
+ */
32
+ export declare function getDataPath(): string;
33
+ /**
34
+ * Get the workspace root directory
35
+ * Priority: ENV > config > default
36
+ */
37
+ export declare function getWorkspacePath(): string;
38
+ /**
39
+ * Get the projects directory
40
+ * Priority: ENV > config > derived from workspace
41
+ */
42
+ export declare function getProjectsPath(): string;
43
+ /**
44
+ * Get all allowed paths for delete operations
45
+ */
46
+ export declare function getAllowedDeletePaths(): string[];
47
+ /**
48
+ * Check if delete protection is enabled (default: true)
49
+ */
50
+ export declare function isDeleteProtectionEnabled(): boolean;
51
+ /**
52
+ * Check if project match warning is enabled (default: true)
53
+ */
54
+ export declare function isProjectMatchRequired(): boolean;
55
+ /**
56
+ * Get resolved configuration for display
57
+ */
58
+ export declare function getResolvedPathConfig(): ResolvedPathConfig;
59
+ /**
60
+ * Set workspace path
61
+ */
62
+ export declare function setWorkspacePath(p: string): void;
63
+ /**
64
+ * Set projects path
65
+ */
66
+ export declare function setProjectsPath(p: string): void;
67
+ /**
68
+ * Set data path
69
+ */
70
+ export declare function setDataPath(p: string): void;
71
+ /**
72
+ * Enable/disable delete protection
73
+ */
74
+ export declare function setDeleteProtection(enabled: boolean): void;
75
+ /**
76
+ * Enable/disable project match warning
77
+ */
78
+ export declare function setProjectMatchRequired(enabled: boolean): void;
79
+ /**
80
+ * Add an allowed path for delete operations
81
+ */
82
+ export declare function addAllowedPath(p: string): void;
83
+ /**
84
+ * Remove an allowed path
85
+ */
86
+ export declare function removeAllowedPath(p: string): void;
87
+ /**
88
+ * Clear all custom allowed paths
89
+ */
90
+ export declare function clearAllowedPaths(): void;
91
+ /**
92
+ * Get the database file path
93
+ */
94
+ export declare function getDatabasePath(): string;
95
+ /**
96
+ * Get the credentials file path
97
+ */
98
+ export declare function getCredentialsPath(): string;
99
+ /**
100
+ * Get the settings file path
101
+ */
102
+ export declare function getSettingsPath(): string;
103
+ /**
104
+ * Get the sessions directory path (for session checkpointing)
105
+ */
106
+ export declare function getSessionsPath(): string;
107
+ /**
108
+ * Ensure data directory exists
109
+ */
110
+ export declare function ensureDataDirectory(): void;
111
+ /**
112
+ * Ensure projects directory exists
113
+ */
114
+ export declare function ensureProjectsDirectory(): void;
@@ -0,0 +1,270 @@
1
+ /**
2
+ * Path Configuration Module
3
+ *
4
+ * Centralized path configuration with safety guards.
5
+ * Inspired by ATLAS CLI config/index.ts
6
+ *
7
+ * Priority order:
8
+ * 1. Environment variable (COMPILR_*)
9
+ * 2. Config file (~/.compilr-dev/settings.json)
10
+ * 3. Default/derived value
11
+ */
12
+ import * as fs from 'fs';
13
+ import * as path from 'path';
14
+ import * as os from 'os';
15
+ // =============================================================================
16
+ // Constants
17
+ // =============================================================================
18
+ const CONFIG_DIR = path.join(os.homedir(), '.compilr-dev');
19
+ const CONFIG_FILE = path.join(CONFIG_DIR, 'settings.json');
20
+ const DEFAULT_DATA_PATH = CONFIG_DIR;
21
+ const DEFAULT_WORKSPACE_PATH = os.homedir();
22
+ // =============================================================================
23
+ // Helpers
24
+ // =============================================================================
25
+ /**
26
+ * Load path config from disk
27
+ */
28
+ function loadPathConfig() {
29
+ try {
30
+ if (fs.existsSync(CONFIG_FILE)) {
31
+ const data = fs.readFileSync(CONFIG_FILE, 'utf-8');
32
+ const settings = JSON.parse(data);
33
+ return {
34
+ workspacePath: settings.workspacePath,
35
+ projectsPath: settings.projectsPath,
36
+ dataPath: settings.dataPath,
37
+ allowedPaths: settings.allowedPaths,
38
+ requireProjectMatch: settings.requireProjectMatch,
39
+ deleteProtection: settings.deleteProtection,
40
+ };
41
+ }
42
+ }
43
+ catch {
44
+ // Ignore errors, return empty config
45
+ }
46
+ return {};
47
+ }
48
+ /**
49
+ * Save path config to disk (merges with existing settings)
50
+ */
51
+ function savePathConfig(pathConfig) {
52
+ try {
53
+ let existingSettings = {};
54
+ if (fs.existsSync(CONFIG_FILE)) {
55
+ const data = fs.readFileSync(CONFIG_FILE, 'utf-8');
56
+ existingSettings = JSON.parse(data);
57
+ }
58
+ const merged = { ...existingSettings, ...pathConfig };
59
+ fs.mkdirSync(CONFIG_DIR, { recursive: true });
60
+ fs.writeFileSync(CONFIG_FILE, JSON.stringify(merged, null, 2), 'utf-8');
61
+ }
62
+ catch (error) {
63
+ console.error('Failed to save path config:', error);
64
+ }
65
+ }
66
+ /**
67
+ * Expand ~ to home directory and resolve path
68
+ */
69
+ function expandPath(p) {
70
+ if (p.startsWith('~/')) {
71
+ return path.join(os.homedir(), p.slice(2));
72
+ }
73
+ return path.resolve(p);
74
+ }
75
+ // =============================================================================
76
+ // Public API - Getters
77
+ // =============================================================================
78
+ /**
79
+ * Get the data directory (where config, DB, credentials live)
80
+ * Priority: ENV > config > default
81
+ */
82
+ export function getDataPath() {
83
+ if (process.env.COMPILR_DATA_PATH) {
84
+ return expandPath(process.env.COMPILR_DATA_PATH);
85
+ }
86
+ const config = loadPathConfig();
87
+ return config.dataPath ? expandPath(config.dataPath) : DEFAULT_DATA_PATH;
88
+ }
89
+ /**
90
+ * Get the workspace root directory
91
+ * Priority: ENV > config > default
92
+ */
93
+ export function getWorkspacePath() {
94
+ if (process.env.COMPILR_WORKSPACE_PATH) {
95
+ return expandPath(process.env.COMPILR_WORKSPACE_PATH);
96
+ }
97
+ const config = loadPathConfig();
98
+ return config.workspacePath ? expandPath(config.workspacePath) : DEFAULT_WORKSPACE_PATH;
99
+ }
100
+ /**
101
+ * Get the projects directory
102
+ * Priority: ENV > config > derived from workspace
103
+ */
104
+ export function getProjectsPath() {
105
+ if (process.env.COMPILR_PROJECTS_PATH) {
106
+ return expandPath(process.env.COMPILR_PROJECTS_PATH);
107
+ }
108
+ const config = loadPathConfig();
109
+ return config.projectsPath ? expandPath(config.projectsPath) : path.join(getWorkspacePath(), 'projects');
110
+ }
111
+ /**
112
+ * Get all allowed paths for delete operations
113
+ */
114
+ export function getAllowedDeletePaths() {
115
+ const config = loadPathConfig();
116
+ const paths = [getProjectsPath()];
117
+ if (config.allowedPaths) {
118
+ paths.push(...config.allowedPaths.map(expandPath));
119
+ }
120
+ return paths.map((p) => path.resolve(p));
121
+ }
122
+ /**
123
+ * Check if delete protection is enabled (default: true)
124
+ */
125
+ export function isDeleteProtectionEnabled() {
126
+ const config = loadPathConfig();
127
+ return config.deleteProtection ?? true;
128
+ }
129
+ /**
130
+ * Check if project match warning is enabled (default: true)
131
+ */
132
+ export function isProjectMatchRequired() {
133
+ const config = loadPathConfig();
134
+ return config.requireProjectMatch ?? true;
135
+ }
136
+ /**
137
+ * Get resolved configuration for display
138
+ */
139
+ export function getResolvedPathConfig() {
140
+ const config = loadPathConfig();
141
+ return {
142
+ workspacePath: getWorkspacePath(),
143
+ projectsPath: getProjectsPath(),
144
+ dataPath: getDataPath(),
145
+ allowedPaths: config.allowedPaths?.map(expandPath) || [],
146
+ requireProjectMatch: config.requireProjectMatch ?? true,
147
+ deleteProtection: config.deleteProtection ?? true,
148
+ };
149
+ }
150
+ // =============================================================================
151
+ // Public API - Setters
152
+ // =============================================================================
153
+ /**
154
+ * Set workspace path
155
+ */
156
+ export function setWorkspacePath(p) {
157
+ const config = loadPathConfig();
158
+ config.workspacePath = expandPath(p);
159
+ savePathConfig(config);
160
+ }
161
+ /**
162
+ * Set projects path
163
+ */
164
+ export function setProjectsPath(p) {
165
+ const config = loadPathConfig();
166
+ config.projectsPath = expandPath(p);
167
+ savePathConfig(config);
168
+ }
169
+ /**
170
+ * Set data path
171
+ */
172
+ export function setDataPath(p) {
173
+ const config = loadPathConfig();
174
+ config.dataPath = expandPath(p);
175
+ savePathConfig(config);
176
+ }
177
+ /**
178
+ * Enable/disable delete protection
179
+ */
180
+ export function setDeleteProtection(enabled) {
181
+ const config = loadPathConfig();
182
+ config.deleteProtection = enabled;
183
+ savePathConfig(config);
184
+ }
185
+ /**
186
+ * Enable/disable project match warning
187
+ */
188
+ export function setProjectMatchRequired(enabled) {
189
+ const config = loadPathConfig();
190
+ config.requireProjectMatch = enabled;
191
+ savePathConfig(config);
192
+ }
193
+ /**
194
+ * Add an allowed path for delete operations
195
+ */
196
+ export function addAllowedPath(p) {
197
+ const config = loadPathConfig();
198
+ const normalized = expandPath(p);
199
+ if (!config.allowedPaths) {
200
+ config.allowedPaths = [];
201
+ }
202
+ if (!config.allowedPaths.includes(normalized)) {
203
+ config.allowedPaths.push(normalized);
204
+ savePathConfig(config);
205
+ }
206
+ }
207
+ /**
208
+ * Remove an allowed path
209
+ */
210
+ export function removeAllowedPath(p) {
211
+ const config = loadPathConfig();
212
+ const normalized = expandPath(p);
213
+ if (config.allowedPaths) {
214
+ config.allowedPaths = config.allowedPaths.filter((existing) => expandPath(existing) !== normalized);
215
+ savePathConfig(config);
216
+ }
217
+ }
218
+ /**
219
+ * Clear all custom allowed paths
220
+ */
221
+ export function clearAllowedPaths() {
222
+ const config = loadPathConfig();
223
+ config.allowedPaths = [];
224
+ savePathConfig(config);
225
+ }
226
+ // =============================================================================
227
+ // Utility Functions
228
+ // =============================================================================
229
+ /**
230
+ * Get the database file path
231
+ */
232
+ export function getDatabasePath() {
233
+ return path.join(getDataPath(), 'projects.db');
234
+ }
235
+ /**
236
+ * Get the credentials file path
237
+ */
238
+ export function getCredentialsPath() {
239
+ return path.join(getDataPath(), 'credentials.enc');
240
+ }
241
+ /**
242
+ * Get the settings file path
243
+ */
244
+ export function getSettingsPath() {
245
+ return path.join(getDataPath(), 'settings.json');
246
+ }
247
+ /**
248
+ * Get the sessions directory path (for session checkpointing)
249
+ */
250
+ export function getSessionsPath() {
251
+ return path.join(getDataPath(), 'sessions');
252
+ }
253
+ /**
254
+ * Ensure data directory exists
255
+ */
256
+ export function ensureDataDirectory() {
257
+ const dataPath = getDataPath();
258
+ if (!fs.existsSync(dataPath)) {
259
+ fs.mkdirSync(dataPath, { recursive: true });
260
+ }
261
+ }
262
+ /**
263
+ * Ensure projects directory exists
264
+ */
265
+ export function ensureProjectsDirectory() {
266
+ const projectsPath = getProjectsPath();
267
+ if (!fs.existsSync(projectsPath)) {
268
+ fs.mkdirSync(projectsPath, { recursive: true });
269
+ }
270
+ }
@@ -61,3 +61,65 @@ export declare function setOverlayActive(active: boolean): void;
61
61
  * Check if an overlay is currently active.
62
62
  */
63
63
  export declare function isOverlayActive(): boolean;
64
+ export interface DelegateInput {
65
+ /** Target agent ID (e.g., 'arch', 'dev-1') */
66
+ agentId: string;
67
+ /** Task description for the specialist */
68
+ task: string;
69
+ /** Optional reason for delegation (shown to user) */
70
+ reason?: string;
71
+ }
72
+ export interface DelegateResult {
73
+ /** True if delegation was approved and switch occurred */
74
+ success: boolean;
75
+ /** True if user declined the delegation */
76
+ declined: boolean;
77
+ /** Error message if delegation failed */
78
+ error?: string;
79
+ }
80
+ export type DelegateHandler = (input: DelegateInput) => Promise<DelegateResult>;
81
+ /**
82
+ * Register the delegate handler. Called during app initialization.
83
+ */
84
+ export declare function registerDelegateHandler(handler: DelegateHandler): void;
85
+ /**
86
+ * Get the registered delegate handler. Called by the delegate tool.
87
+ */
88
+ export declare function getDelegateHandler(): DelegateHandler | undefined;
89
+ export interface DelegateBackgroundInput {
90
+ /** Target specialist agent ID */
91
+ agentId: string;
92
+ /** Task description for the specialist */
93
+ task: string;
94
+ /** Optional todo index to associate with this delegation */
95
+ todoIndex?: number;
96
+ /** What the specialist should produce */
97
+ expectedOutput?: string;
98
+ }
99
+ export interface DelegateBackgroundResult {
100
+ /** Unique delegation ID for tracking */
101
+ delegationId: string;
102
+ /** Current status: running or queued */
103
+ status: 'running' | 'queued';
104
+ /** Error message if delegation failed */
105
+ error?: string;
106
+ }
107
+ export type DelegateBackgroundHandler = (input: DelegateBackgroundInput) => Promise<DelegateBackgroundResult>;
108
+ /**
109
+ * Register the delegate_background handler. Called during app initialization.
110
+ */
111
+ export declare function registerDelegateBackgroundHandler(handler: DelegateBackgroundHandler): void;
112
+ /**
113
+ * Get the registered delegate_background handler.
114
+ */
115
+ export declare function getDelegateBackgroundHandler(): DelegateBackgroundHandler | undefined;
116
+ /** Handoff uses the same shape as delegation */
117
+ export type HandoffHandler = (input: DelegateInput) => Promise<DelegateResult>;
118
+ /**
119
+ * Register the handoff handler. Called during app initialization.
120
+ */
121
+ export declare function registerHandoffHandler(handler: HandoffHandler): void;
122
+ /**
123
+ * Get the registered handoff handler. Called by the handoff tool.
124
+ */
125
+ export declare function getHandoffHandler(): HandoffHandler | undefined;