@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,7 @@
1
+ /**
2
+ * Input Handlers - Process special input prefixes
3
+ *
4
+ * Handles input that doesn't go to the agent, like:
5
+ * - "#" prefix for memory notes (persistent anchors)
6
+ */
7
+ export { isMemoryInput, handleMemoryInput, type MemoryHandlerContext } from './memory-handler.js';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Input Handlers - Process special input prefixes
3
+ *
4
+ * Handles input that doesn't go to the agent, like:
5
+ * - "#" prefix for memory notes (persistent anchors)
6
+ */
7
+ export { isMemoryInput, handleMemoryInput } from './memory-handler.js';
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Memory Handler - Process "# note" input prefix
3
+ *
4
+ * Creates persistent anchors from user input prefixed with "#".
5
+ * Auto-detects priority based on keywords in the note.
6
+ */
7
+ import type { Agent } from '@compilr-dev/sdk';
8
+ import type { Footer } from '../ui/footer.js';
9
+ export interface MemoryHandlerContext {
10
+ agent: Agent;
11
+ footer: Footer;
12
+ }
13
+ /**
14
+ * Check if input is a memory note (starts with #)
15
+ */
16
+ export declare function isMemoryInput(input: string): boolean;
17
+ /**
18
+ * Handle memory note input ("# note text")
19
+ *
20
+ * Creates a persistent anchor from the note, stored either globally or
21
+ * in the current project if one is active.
22
+ *
23
+ * @param input - The full input string (including # prefix)
24
+ * @param ctx - Handler context with agent and footer
25
+ */
26
+ export declare function handleMemoryInput(input: string, ctx: MemoryHandlerContext): void;
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Memory Handler - Process "# note" input prefix
3
+ *
4
+ * Creates persistent anchors from user input prefixed with "#".
5
+ * Auto-detects priority based on keywords in the note.
6
+ */
7
+ import { addAnchor } from '../anchors/index.js';
8
+ import { getActiveProject } from '../tools/project-db.js';
9
+ import * as conversation from '../ui/conversation.js';
10
+ import * as terminal from '../ui/terminal.js';
11
+ import { truncate } from '../ui/base/index.js';
12
+ // =============================================================================
13
+ // Handler
14
+ // =============================================================================
15
+ /**
16
+ * Check if input is a memory note (starts with #)
17
+ */
18
+ export function isMemoryInput(input) {
19
+ return input.startsWith('#') && input.length > 1 && input.slice(1).trim().length > 0;
20
+ }
21
+ /**
22
+ * Handle memory note input ("# note text")
23
+ *
24
+ * Creates a persistent anchor from the note, stored either globally or
25
+ * in the current project if one is active.
26
+ *
27
+ * @param input - The full input string (including # prefix)
28
+ * @param ctx - Handler context with agent and footer
29
+ */
30
+ export function handleMemoryInput(input, ctx) {
31
+ const note = input.slice(1).trim();
32
+ // Get active project to determine scope
33
+ const activeProject = getActiveProject();
34
+ const projectId = activeProject?.id;
35
+ // Determine priority based on keywords
36
+ let priority = 'info';
37
+ const lowerNote = note.toLowerCase();
38
+ if (lowerNote.includes('never') || lowerNote.includes('always') || lowerNote.includes('must')) {
39
+ priority = 'safety';
40
+ }
41
+ if (lowerNote.includes('critical') || lowerNote.includes('important')) {
42
+ priority = 'critical';
43
+ }
44
+ // Create the anchor (persisted to file)
45
+ const anchor = addAnchor({
46
+ content: note,
47
+ priority,
48
+ scope: 'persistent',
49
+ projectId: projectId?.toString(),
50
+ tags: ['user-note'],
51
+ });
52
+ // Show confirmation
53
+ ctx.footer.clearForOutput();
54
+ const scope = activeProject ? `project "${activeProject.displayName || activeProject.name}"` : 'global';
55
+ const priorityLabel = priority === 'info' ? '' : ` (${priority})`;
56
+ conversation.printSuccess(`Saved${priorityLabel}: "${truncate(note, 50)}" → ${scope}`);
57
+ terminal.writeLine('');
58
+ ctx.footer.forceRender();
59
+ // Also add to agent's anchor manager if enabled (for current session)
60
+ if (ctx.agent.getAnchorManager()) {
61
+ ctx.agent.addAnchor({
62
+ id: anchor.id,
63
+ content: note,
64
+ priority,
65
+ scope: 'persistent',
66
+ tags: ['user-note'],
67
+ });
68
+ }
69
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Models Module
3
+ *
4
+ * Model-related types and utilities.
5
+ */
6
+ export { type ModelTier, type TierInfo, type ProviderModelMap, TIER_INFO, MODEL_TIERS, getModelForTier, getTierMappings, getTierDisplayName, getShortModelName, getDefaultTierMappings, isValidTier, setTierOverride, clearTierOverride, } from './model-tiers.js';
7
+ export { type ModelValidationResult, validateModel, checkApiKeyStatus, } from './model-validation.js';
8
+ export { type ThinkingFormat, type ModelStatus, type ModelInfo, type ModelOptionForUI, MODEL_REGISTRY, getModelsForProvider, getModelsSortedForDisplay, getModelInfo, isKnownModel, isModelSupported, getThinkingFormat, getStatusIndicator, getStatusLabel, getDefaultModelForTier, areThinkingFormatsCompatible, shouldClearHistoryOnModelChange, getDefaultModelsForUI, getDefaultModelsForProvider, getAllModelsForProviderUI, getModelDisplayName, getModelDescription, getModelContextWindow, } from './model-registry.js';
9
+ export { type ProviderMetadata, type OthersProviderModel, PROVIDER_METADATA, TOGETHER_MODELS, GROQ_MODELS, FIREWORKS_MODELS, PERPLEXITY_MODELS, OPENROUTER_MODELS, getModelsForOthersProvider, getOthersProviders, getProviderMetadata, isOthersProvider, } from './providers.js';
10
+ export { type OllamaModelInfo, type OllamaModelsResult, listOllamaModels, clearOllamaModelsCache, isOllamaModelAvailable, formatModelSize, getOllamaModelDisplayName, getOllamaModelDescription, } from './ollama-models.js';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Models Module
3
+ *
4
+ * Model-related types and utilities.
5
+ */
6
+ export { TIER_INFO, MODEL_TIERS, getModelForTier, getTierMappings, getTierDisplayName, getShortModelName, getDefaultTierMappings, isValidTier, setTierOverride, clearTierOverride, } from './model-tiers.js';
7
+ export { validateModel, checkApiKeyStatus, } from './model-validation.js';
8
+ export { MODEL_REGISTRY, getModelsForProvider, getModelsSortedForDisplay, getModelInfo, isKnownModel, isModelSupported, getThinkingFormat, getStatusIndicator, getStatusLabel, getDefaultModelForTier, areThinkingFormatsCompatible, shouldClearHistoryOnModelChange,
9
+ // UI helpers
10
+ getDefaultModelsForUI, getDefaultModelsForProvider, getAllModelsForProviderUI, getModelDisplayName, getModelDescription, getModelContextWindow, } from './model-registry.js';
11
+ export { PROVIDER_METADATA, TOGETHER_MODELS, GROQ_MODELS, FIREWORKS_MODELS, PERPLEXITY_MODELS, OPENROUTER_MODELS, getModelsForOthersProvider, getOthersProviders, getProviderMetadata, isOthersProvider, } from './providers.js';
12
+ export { listOllamaModels, clearOllamaModelsCache, isOllamaModelAvailable, formatModelSize, getOllamaModelDisplayName, getOllamaModelDescription, } from './ollama-models.js';
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Model Registry — Re-exported from @compilr-dev/sdk
3
+ *
4
+ * The SDK owns the model registry data and core helpers.
5
+ * This file re-exports those and adds CLI-specific UI helpers.
6
+ */
7
+ import type { ProviderType } from './provider-types.js';
8
+ import type { ModelTier } from './types.js';
9
+ export { type ThinkingFormat, type ModelStatus, type ModelInfo, MODEL_REGISTRY, getModelsForProvider, getModelsSortedForDisplay, getModelInfo, isKnownModel, isModelSupported, getThinkingFormat, getStatusIndicator, getStatusLabel, getDefaultModelForTier, areThinkingFormatsCompatible, shouldClearHistoryOnModelChange, getModelContextWindow, getModelDisplayName, getModelDescription, } from '@compilr-dev/sdk';
10
+ /**
11
+ * Model option for UI overlays (config, model selector).
12
+ * Simplified interface for overlay display.
13
+ */
14
+ export interface ModelOptionForUI {
15
+ /** Model ID */
16
+ id: string;
17
+ /** Display name */
18
+ name: string;
19
+ /** Short description */
20
+ description: string;
21
+ /** Provider */
22
+ provider: ProviderType;
23
+ /** Tier (if this is a default model for a tier) */
24
+ tier?: ModelTier;
25
+ }
26
+ /**
27
+ * Get default models for each tier, formatted for UI overlays.
28
+ * Returns one model per tier per provider (fast, balanced, powerful).
29
+ */
30
+ export declare function getDefaultModelsForUI(): ModelOptionForUI[];
31
+ /**
32
+ * Get default models for a specific provider, formatted for UI overlays.
33
+ */
34
+ export declare function getDefaultModelsForProvider(provider: ProviderType): ModelOptionForUI[];
35
+ /**
36
+ * Get all models for a provider (including non-defaults), formatted for UI overlays.
37
+ */
38
+ export declare function getAllModelsForProviderUI(provider: ProviderType): ModelOptionForUI[];
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Model Registry — Re-exported from @compilr-dev/sdk
3
+ *
4
+ * The SDK owns the model registry data and core helpers.
5
+ * This file re-exports those and adds CLI-specific UI helpers.
6
+ */
7
+ // Re-export everything from SDK
8
+ export { MODEL_REGISTRY, getModelsForProvider, getModelsSortedForDisplay, getModelInfo, isKnownModel, isModelSupported, getThinkingFormat, getStatusIndicator, getStatusLabel, getDefaultModelForTier, areThinkingFormatsCompatible, shouldClearHistoryOnModelChange, getModelContextWindow, getModelDisplayName, getModelDescription, } from '@compilr-dev/sdk';
9
+ // Import for use in CLI-specific helpers below
10
+ import { MODEL_REGISTRY } from '@compilr-dev/sdk';
11
+ /**
12
+ * Get default models for each tier, formatted for UI overlays.
13
+ * Returns one model per tier per provider (fast, balanced, powerful).
14
+ */
15
+ export function getDefaultModelsForUI() {
16
+ const result = [];
17
+ // Get models with defaultTier set (these are the defaults)
18
+ const defaultModels = MODEL_REGISTRY.filter((m) => m.defaultTier !== undefined && m.status === 'supported');
19
+ // Sort by provider, then by tier order (fast → balanced → powerful)
20
+ const tierOrder = { fast: 0, balanced: 1, powerful: 2 };
21
+ const providerOrder = {
22
+ claude: 0,
23
+ openai: 1,
24
+ gemini: 2,
25
+ ollama: 3,
26
+ together: 4,
27
+ groq: 5,
28
+ fireworks: 6,
29
+ perplexity: 7,
30
+ openrouter: 8,
31
+ custom: 9,
32
+ };
33
+ defaultModels.sort((a, b) => {
34
+ const providerDiff = providerOrder[a.provider] - providerOrder[b.provider];
35
+ if (providerDiff !== 0)
36
+ return providerDiff;
37
+ return tierOrder[a.defaultTier ?? 'balanced'] - tierOrder[b.defaultTier ?? 'balanced'];
38
+ });
39
+ for (const model of defaultModels) {
40
+ result.push({
41
+ id: model.id,
42
+ name: model.displayName,
43
+ description: model.description,
44
+ provider: model.provider,
45
+ tier: model.defaultTier,
46
+ });
47
+ }
48
+ return result;
49
+ }
50
+ /**
51
+ * Get default models for a specific provider, formatted for UI overlays.
52
+ */
53
+ export function getDefaultModelsForProvider(provider) {
54
+ return getDefaultModelsForUI().filter(m => m.provider === provider);
55
+ }
56
+ /**
57
+ * Get all models for a provider (including non-defaults), formatted for UI overlays.
58
+ */
59
+ export function getAllModelsForProviderUI(provider) {
60
+ return MODEL_REGISTRY
61
+ .filter((m) => m.provider === provider && m.status === 'supported')
62
+ .map((m) => ({
63
+ id: m.id,
64
+ name: m.displayName,
65
+ description: m.description,
66
+ provider: m.provider,
67
+ tier: m.defaultTier,
68
+ }));
69
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Model Tiers — CLI wrapper over SDK's pure tier functions
3
+ *
4
+ * Adds settings integration: reads/writes user overrides from
5
+ * the CLI's settings store.
6
+ */
7
+ import type { ProviderType } from './provider-types.js';
8
+ import type { ModelTier, ProviderModelMap } from './types.js';
9
+ export { type ModelTier, type TierInfo, type ProviderModelMap, MODEL_TIERS, TIER_INFO, isValidTier, } from './types.js';
10
+ export { getTierDisplayName, getShortModelName, getDefaultTierMappings } from '@compilr-dev/sdk';
11
+ /**
12
+ * Get the model ID for a given tier and provider.
13
+ * Checks user overrides in settings first, then falls back to registry defaults.
14
+ */
15
+ export declare function getModelForTier(provider: ProviderType, tier: ModelTier): string;
16
+ /**
17
+ * Get all tier mappings for a provider (with user overrides applied).
18
+ */
19
+ export declare function getTierMappings(provider: ProviderType): ProviderModelMap;
20
+ /**
21
+ * Set a tier override for a provider.
22
+ * This saves the custom model to settings.
23
+ */
24
+ export declare function setTierOverride(provider: ProviderType, tier: ModelTier, model: string): void;
25
+ /**
26
+ * Clear a tier override for a provider (revert to default).
27
+ */
28
+ export declare function clearTierOverride(provider: ProviderType, tier: ModelTier): void;
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Model Tiers — CLI wrapper over SDK's pure tier functions
3
+ *
4
+ * Adds settings integration: reads/writes user overrides from
5
+ * the CLI's settings store.
6
+ */
7
+ import { getSetting, setSetting } from '../settings/index.js';
8
+ import { getModelForTier as sdkGetModelForTier, getTierMappings as sdkGetTierMappings, } from '@compilr-dev/sdk';
9
+ // Re-export types and pure functions from SDK (via types.ts)
10
+ export { MODEL_TIERS, TIER_INFO, isValidTier, } from './types.js';
11
+ // Re-export pure functions that don't need settings
12
+ export { getTierDisplayName, getShortModelName, getDefaultTierMappings } from '@compilr-dev/sdk';
13
+ // =============================================================================
14
+ // CLI Functions (with settings integration)
15
+ // =============================================================================
16
+ /**
17
+ * Get user tier overrides from settings.
18
+ */
19
+ function getUserOverrides() {
20
+ return getSetting('modelTiers');
21
+ }
22
+ /**
23
+ * Get the model ID for a given tier and provider.
24
+ * Checks user overrides in settings first, then falls back to registry defaults.
25
+ */
26
+ export function getModelForTier(provider, tier) {
27
+ return sdkGetModelForTier(provider, tier, getUserOverrides());
28
+ }
29
+ /**
30
+ * Get all tier mappings for a provider (with user overrides applied).
31
+ */
32
+ export function getTierMappings(provider) {
33
+ return sdkGetTierMappings(provider, getUserOverrides());
34
+ }
35
+ /**
36
+ * Set a tier override for a provider.
37
+ * This saves the custom model to settings.
38
+ */
39
+ export function setTierOverride(provider, tier, model) {
40
+ const current = (getSetting('modelTiers') ?? {});
41
+ // Initialize provider if not exists
42
+ let providerOverrides = current[provider];
43
+ if (providerOverrides === undefined) {
44
+ providerOverrides = {};
45
+ current[provider] = providerOverrides;
46
+ }
47
+ // Set the override
48
+ providerOverrides[tier] = model;
49
+ setSetting('modelTiers', current);
50
+ }
51
+ /**
52
+ * Clear a tier override for a provider (revert to default).
53
+ */
54
+ export function clearTierOverride(provider, tier) {
55
+ const current = (getSetting('modelTiers') ?? {});
56
+ const providerOverrides = current[provider];
57
+ if (providerOverrides === undefined || !(tier in providerOverrides)) {
58
+ return; // Nothing to clear
59
+ }
60
+ // Remove the tier override
61
+ const { [tier]: _removed, ...remaining } = providerOverrides;
62
+ // Update or remove the provider entry
63
+ if (Object.keys(remaining).length === 0) {
64
+ const { [provider]: _removedProvider, ...remainingProviders } = current;
65
+ setSetting('modelTiers', remainingProviders);
66
+ }
67
+ else {
68
+ current[provider] = remaining;
69
+ setSetting('modelTiers', current);
70
+ }
71
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Model Validation
3
+ *
4
+ * Validates model names by making lightweight API calls.
5
+ * Uses direct HTTP requests to avoid SDK dependencies.
6
+ */
7
+ import type { ProviderType } from './provider-types.js';
8
+ export interface ModelValidationResult {
9
+ valid: boolean;
10
+ error?: string;
11
+ errorType?: 'no_api_key' | 'invalid_model' | 'network_error' | 'rate_limit' | 'unknown';
12
+ }
13
+ /**
14
+ * Validate a model by making a minimal API call.
15
+ * Returns result indicating if model is valid, with error details if not.
16
+ */
17
+ export declare function validateModel(provider: ProviderType, modelId: string): Promise<ModelValidationResult>;
18
+ /**
19
+ * Check if API key is set for a provider.
20
+ * Returns user-friendly hint if not set.
21
+ */
22
+ export declare function checkApiKeyStatus(provider: ProviderType): {
23
+ hasKey: boolean;
24
+ hint?: string;
25
+ };
@@ -0,0 +1,291 @@
1
+ /**
2
+ * Model Validation
3
+ *
4
+ * Validates model names by making lightweight API calls.
5
+ * Uses direct HTTP requests to avoid SDK dependencies.
6
+ */
7
+ import { getApiKey, hasApiKey } from '../utils/credentials.js';
8
+ import { getSetting } from '../settings/index.js';
9
+ import { PROVIDER_METADATA } from './providers.js';
10
+ // =============================================================================
11
+ // Validation Functions
12
+ // =============================================================================
13
+ /**
14
+ * Validate a model by making a minimal API call.
15
+ * Returns result indicating if model is valid, with error details if not.
16
+ */
17
+ export async function validateModel(provider, modelId) {
18
+ switch (provider) {
19
+ case 'claude':
20
+ return validateAnthropicModel(modelId);
21
+ case 'openai':
22
+ return validateOpenAIModel(modelId);
23
+ case 'gemini':
24
+ return validateGeminiModel(modelId);
25
+ case 'ollama':
26
+ return validateOllamaModel(modelId);
27
+ default:
28
+ return { valid: false, error: 'Unknown provider', errorType: 'unknown' };
29
+ }
30
+ }
31
+ /**
32
+ * Validate an Anthropic/Claude model via HTTP.
33
+ */
34
+ async function validateAnthropicModel(modelId) {
35
+ const apiKey = getApiKey('anthropic');
36
+ if (!apiKey) {
37
+ return {
38
+ valid: false,
39
+ error: 'No Anthropic API key set. Run /keys to configure.',
40
+ errorType: 'no_api_key',
41
+ };
42
+ }
43
+ try {
44
+ const response = await fetch('https://api.anthropic.com/v1/messages', {
45
+ method: 'POST',
46
+ headers: {
47
+ 'Content-Type': 'application/json',
48
+ 'x-api-key': apiKey,
49
+ 'anthropic-version': '2023-06-01',
50
+ },
51
+ body: JSON.stringify({
52
+ model: modelId,
53
+ max_tokens: 1,
54
+ messages: [{ role: 'user', content: 'hi' }],
55
+ }),
56
+ signal: AbortSignal.timeout(15000),
57
+ });
58
+ if (response.ok) {
59
+ return { valid: true };
60
+ }
61
+ const data = await response.json().catch(() => ({}));
62
+ return parseHttpError(response.status, data, 'Anthropic');
63
+ }
64
+ catch (error) {
65
+ return parseNetworkError(error, 'Anthropic');
66
+ }
67
+ }
68
+ /**
69
+ * Validate an OpenAI model via HTTP.
70
+ */
71
+ async function validateOpenAIModel(modelId) {
72
+ const apiKey = getApiKey('openai');
73
+ if (!apiKey) {
74
+ return {
75
+ valid: false,
76
+ error: 'No OpenAI API key set. Run /keys to configure.',
77
+ errorType: 'no_api_key',
78
+ };
79
+ }
80
+ try {
81
+ const response = await fetch('https://api.openai.com/v1/chat/completions', {
82
+ method: 'POST',
83
+ headers: {
84
+ 'Content-Type': 'application/json',
85
+ 'Authorization': `Bearer ${apiKey}`,
86
+ },
87
+ body: JSON.stringify({
88
+ model: modelId,
89
+ max_tokens: 1,
90
+ messages: [{ role: 'user', content: 'hi' }],
91
+ }),
92
+ signal: AbortSignal.timeout(15000),
93
+ });
94
+ if (response.ok) {
95
+ return { valid: true };
96
+ }
97
+ const data = await response.json().catch(() => ({}));
98
+ return parseHttpError(response.status, data, 'OpenAI');
99
+ }
100
+ catch (error) {
101
+ return parseNetworkError(error, 'OpenAI');
102
+ }
103
+ }
104
+ /**
105
+ * Validate a Gemini model via HTTP (using OpenAI-compatible endpoint).
106
+ */
107
+ async function validateGeminiModel(modelId) {
108
+ const apiKey = getApiKey('google');
109
+ if (!apiKey) {
110
+ return {
111
+ valid: false,
112
+ error: 'No Google API key set. Run /keys to configure.',
113
+ errorType: 'no_api_key',
114
+ };
115
+ }
116
+ try {
117
+ // Use OpenAI-compatible endpoint (same as @compilr-dev/agents)
118
+ const response = await fetch('https://generativelanguage.googleapis.com/v1beta/openai/chat/completions', {
119
+ method: 'POST',
120
+ headers: {
121
+ 'Content-Type': 'application/json',
122
+ 'Authorization': `Bearer ${apiKey}`,
123
+ },
124
+ body: JSON.stringify({
125
+ model: modelId,
126
+ max_tokens: 1,
127
+ messages: [{ role: 'user', content: 'hi' }],
128
+ }),
129
+ signal: AbortSignal.timeout(15000),
130
+ });
131
+ if (response.ok) {
132
+ return { valid: true };
133
+ }
134
+ const data = await response.json().catch(() => ({}));
135
+ return parseHttpError(response.status, data, 'Google');
136
+ }
137
+ catch (error) {
138
+ return parseNetworkError(error, 'Google');
139
+ }
140
+ }
141
+ /**
142
+ * Validate an Ollama model by checking if it exists locally.
143
+ * This doesn't make an LLM call - just lists available models.
144
+ */
145
+ async function validateOllamaModel(modelId) {
146
+ // Get base URL from settings first, then env var, then default
147
+ const settingUrl = getSetting('ollamaBaseUrl');
148
+ const ollamaHost = (typeof settingUrl === 'string' ? settingUrl : null)
149
+ ?? process.env.OLLAMA_BASE_URL
150
+ ?? process.env.OLLAMA_HOST
151
+ ?? 'http://localhost:11434';
152
+ try {
153
+ // List models to check if Ollama is running and model exists
154
+ const response = await fetch(`${ollamaHost}/api/tags`, {
155
+ method: 'GET',
156
+ signal: AbortSignal.timeout(5000),
157
+ });
158
+ if (!response.ok) {
159
+ return {
160
+ valid: false,
161
+ error: 'Cannot connect to Ollama. Is it running?',
162
+ errorType: 'network_error',
163
+ };
164
+ }
165
+ const data = await response.json();
166
+ const models = data.models || [];
167
+ // Check if the model exists (handle "model:tag" format)
168
+ const normalizedModelId = modelId.toLowerCase();
169
+ const modelExists = models.some(m => {
170
+ const name = m.name.toLowerCase();
171
+ return name === normalizedModelId ||
172
+ name.startsWith(normalizedModelId + ':') ||
173
+ normalizedModelId.startsWith(name.split(':')[0]);
174
+ });
175
+ if (modelExists) {
176
+ return { valid: true };
177
+ }
178
+ return {
179
+ valid: false,
180
+ error: `Model '${modelId}' not found locally. Run: ollama pull ${modelId}`,
181
+ errorType: 'invalid_model',
182
+ };
183
+ }
184
+ catch (error) {
185
+ if (error instanceof Error) {
186
+ if (error.name === 'AbortError' || error.message.includes('timeout')) {
187
+ return {
188
+ valid: false,
189
+ error: 'Ollama connection timed out. Is Ollama running?',
190
+ errorType: 'network_error',
191
+ };
192
+ }
193
+ if (error.message.includes('ECONNREFUSED') || error.message.includes('fetch failed')) {
194
+ return {
195
+ valid: false,
196
+ error: 'Cannot connect to Ollama. Start it with: ollama serve',
197
+ errorType: 'network_error',
198
+ };
199
+ }
200
+ }
201
+ return {
202
+ valid: false,
203
+ error: `Ollama error: ${error instanceof Error ? error.message : 'Unknown'}`,
204
+ errorType: 'unknown',
205
+ };
206
+ }
207
+ }
208
+ function parseHttpError(status, data, provider) {
209
+ const errorMsg = data.error?.message || '';
210
+ const errorType = data.error?.type || data.error?.code || '';
211
+ const lowerMsg = errorMsg.toLowerCase();
212
+ const lowerType = errorType.toLowerCase();
213
+ // Model not found
214
+ if (status === 404 ||
215
+ lowerMsg.includes('model') && (lowerMsg.includes('not found') || lowerMsg.includes('does not exist')) ||
216
+ lowerType.includes('invalid_model') || lowerType.includes('model_not_found')) {
217
+ return {
218
+ valid: false,
219
+ error: `Model not found. Check the model ID is correct for ${provider}.`,
220
+ errorType: 'invalid_model',
221
+ };
222
+ }
223
+ // Authentication error
224
+ if (status === 401 || status === 403 ||
225
+ lowerMsg.includes('api key') || lowerMsg.includes('authentication') || lowerMsg.includes('unauthorized')) {
226
+ return {
227
+ valid: false,
228
+ error: `${provider} API key is invalid or expired. Run /keys to update.`,
229
+ errorType: 'no_api_key',
230
+ };
231
+ }
232
+ // Rate limit
233
+ if (status === 429 || lowerType.includes('rate_limit')) {
234
+ return {
235
+ valid: false,
236
+ error: `${provider} rate limit hit. Model may be valid - try again later.`,
237
+ errorType: 'rate_limit',
238
+ };
239
+ }
240
+ // Generic error
241
+ return {
242
+ valid: false,
243
+ error: errorMsg || `${provider} returned error ${String(status)}`,
244
+ errorType: 'unknown',
245
+ };
246
+ }
247
+ function parseNetworkError(error, provider) {
248
+ if (error instanceof Error) {
249
+ if (error.name === 'AbortError' || error.message.includes('timeout')) {
250
+ return {
251
+ valid: false,
252
+ error: `${provider} request timed out. Check your connection.`,
253
+ errorType: 'network_error',
254
+ };
255
+ }
256
+ if (error.message.includes('fetch failed') || error.message.includes('ECONNREFUSED')) {
257
+ return {
258
+ valid: false,
259
+ error: `Cannot connect to ${provider}. Check your internet connection.`,
260
+ errorType: 'network_error',
261
+ };
262
+ }
263
+ }
264
+ return {
265
+ valid: false,
266
+ error: `${provider} error: ${error instanceof Error ? error.message : 'Unknown'}`,
267
+ errorType: 'unknown',
268
+ };
269
+ }
270
+ // =============================================================================
271
+ // API Key Status Check
272
+ // =============================================================================
273
+ /**
274
+ * Check if API key is set for a provider.
275
+ * Returns user-friendly hint if not set.
276
+ */
277
+ export function checkApiKeyStatus(provider) {
278
+ // Get provider metadata for correct credential key and env var
279
+ const metadata = PROVIDER_METADATA[provider];
280
+ if (!metadata.requiresKey) {
281
+ return { hasKey: true }; // Ollama and other local providers don't need API key
282
+ }
283
+ const keySet = hasApiKey(metadata.credentialKey);
284
+ if (!keySet) {
285
+ return {
286
+ hasKey: false,
287
+ hint: `Set ${metadata.envVar} or run /keys`,
288
+ };
289
+ }
290
+ return { hasKey: true };
291
+ }