@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
package/dist/agent.js CHANGED
@@ -5,96 +5,17 @@
5
5
  * ClaudeProvider, OllamaProvider, OpenAIProvider, or GeminiProvider
6
6
  * and available tools.
7
7
  */
8
- import { Agent, ClaudeProvider, OllamaProvider, OpenAIProvider, GeminiProvider, ContextManager, DEFAULT_CONTEXT_CONFIG, createTaskTool, createSuggestTool, defaultAgentTypes, TOOL_SETS, } from '@compilr-dev/agents';
9
- import { isAutoCompactEnabled } from './settings/index.js';
8
+ import { Agent, ContextManager, DEFAULT_CONTEXT_CONFIG, createTaskTool, createSuggestTool, defaultAgentTypes, TOOL_SETS, BUILTIN_GUARDRAILS, createProviderFromType, } from '@compilr-dev/sdk';
9
+ import { isAutoCompactEnabled, isDelegationEnabled, getSetting } from './settings/index.js';
10
10
  import { getApiKey } from './utils/credentials.js';
11
- import { createToolRegistry, createMinimalToolRegistry } from './tools.js';
11
+ import { createToolRegistry, createMinimalToolRegistry, getDirectTools, getMetaTools, initializeMetaTools, getToolIndexForSystemPrompt, getToolStats, setMetaToolFilter, createToolFallback, } from './tools.js';
12
12
  import { getAgentRegistry } from './agents/registry.js';
13
- const SYSTEM_PROMPT = `You are a helpful coding assistant running in a terminal.
14
-
15
- AVAILABLE TOOLS (use these exact names - lowercase with underscores):
16
-
17
- File Operations:
18
- - read_file: Read contents of a file (parameter: path)
19
- - write_file: Create or overwrite a file (parameters: path, content)
20
- - edit: Replace text in a file (parameters: path, old_text, new_text)
21
- - glob: Find files matching a pattern (parameters: pattern, path)
22
- - grep: Search file contents with regex (parameters: pattern, path)
23
-
24
- Shell:
25
- - bash: Run shell commands (parameter: command)
26
- For long-running commands (dev servers, watch modes), use run_in_background=true
27
- - bash_output: Get output from a background shell (parameter: shell_id)
28
- - kill_shell: Terminate a background shell (parameter: shell_id)
29
-
30
- BACKGROUND PROCESSES:
31
- When running commands that don't exit (like npm run dev, npm start, watch commands):
32
- 1. Use bash with run_in_background=true to start the process
33
- 2. The tool returns a shell_id you can use to monitor or kill the process
34
- 3. Use bash_output with the shell_id to check output/status
35
- 4. Use kill_shell with the shell_id to stop the process when done
36
-
37
- Example: Starting a dev server
38
- bash(command="npm run dev", run_in_background=true) → returns shell_id
39
- bash_output(shell_id="...") → check if server started
40
- kill_shell(shell_id="...") → stop when done
41
-
42
- Git:
43
- - git_status: Show working tree status
44
- - git_diff: Show file differences
45
- - git_log: Show commit history (parameter: limit)
46
- - git_commit: Create a commit (parameters: message, files)
47
- - git_branch: List or manage branches
48
-
49
- Project Analysis:
50
- - detect_project: Detect project type and framework
51
- - find_project_root: Find the root directory of the project
52
- - run_tests: Run project test suite
53
- - run_lint: Run project linter
54
-
55
- Task Management:
56
- - todo_write: Add/update todo items (parameters: todos array)
57
- - todo_read: View current todo list
58
-
59
- Next Action Suggestions:
60
- - suggest: Suggest a next action to the user (parameters: action, reason)
61
- The suggestion appears as ghost text in the input prompt (user presses Tab to accept).
62
-
63
- IMPORTANT: Always use 'suggest' after completing a task or answering a question.
64
- This is a mandatory part of your response workflow, not optional.
65
-
66
- When to suggest:
67
- - After ANY tool-based task → suggest verifying, testing, or next logical step
68
- - After answering a question → suggest a follow-up to explore
69
- - After explaining something → suggest trying it out or diving deeper
70
- - When your reply ends with a question → suggest an answer option
71
-
72
- Good suggestions are short commands or actions: "run npm test", "commit the changes",
73
- "show me the API endpoints", "explain the error in more detail"
74
-
75
- Sub-agents (via task tool):
76
- - task: Spawn a specialized sub-agent for complex, multi-step tasks
77
- Parameters: description (3-5 words), prompt (detailed task), subagent_type
78
- Built-in types:
79
- - explore: Fast codebase search and navigation
80
- - code-review: Review code for bugs and best practices
81
- - plan: Break down complex tasks into steps
82
- - debug: Investigate and fix issues
83
- - test-runner: Run and analyze tests
84
- - refactor: Safe code refactoring
85
- - security-audit: Scan for vulnerabilities
86
- - doc-lookup: Search documentation
87
- - general: General-purpose multi-step tasks
88
- Custom agents may also be available (check /agents command).
89
-
90
- IMPORTANT RULES:
91
- 1. Tool names are lowercase with underscores - use them exactly as shown
92
- 2. If unsure which tool to use, pick the closest match from the list
93
- 3. For simple questions (math, facts), answer directly without tools
94
- 4. After calling a tool, you MUST respond with the result to the user - never end silently
95
- 5. Use the task tool to delegate complex tasks to specialized sub-agents
96
-
97
- Current working directory: ${process.cwd()}`;
13
+ import { SystemPromptBuilder } from './system-prompt/index.js';
14
+ import { getDefaultModelForTier, getModelContextWindow } from './models/index.js';
15
+ import { PROVIDER_METADATA } from './models/providers.js';
16
+ import { setStaticEstimates, estimateTokens, estimateJsonTokens, } from './utils/token-tracker.js';
17
+ import { createFileLockCheckHook, createFileLockAcquireHook } from './multi-agent/file-lock-hook.js';
18
+ import { getActiveProject } from './tools/project-db.js';
98
19
  /**
99
20
  * Default permission rules for potentially dangerous operations
100
21
  * Note: Tool names are lowercase (bash, write_file, edit, git_commit)
@@ -111,8 +32,7 @@ const DEFAULT_PERMISSION_RULES = [
111
32
  // Project runners (can have side effects)
112
33
  { toolName: 'run_tests', level: 'once', description: 'Run test suite' },
113
34
  { toolName: 'run_lint', level: 'once', description: 'Run linter (may auto-fix)' },
114
- // Local file modifications
115
- { toolName: 'backlog_write', level: 'once', description: 'Modify backlog file' },
35
+ // Note: backlog_write removed - use workitem_* tools which modify database
116
36
  ];
117
37
  /**
118
38
  * Get permission info for a tool by name.
@@ -128,6 +48,19 @@ export function getToolPermissionInfo(toolName) {
128
48
  }
129
49
  return undefined;
130
50
  }
51
+ /**
52
+ * Get information about built-in guardrails.
53
+ * Used for displaying guardrail info in /help or status overlays.
54
+ */
55
+ export function getBuiltinGuardrailInfo() {
56
+ return BUILTIN_GUARDRAILS.map((g) => ({
57
+ id: g.id,
58
+ name: g.name,
59
+ description: g.description,
60
+ action: g.action,
61
+ category: g.tags?.[0] ?? 'general',
62
+ }));
63
+ }
131
64
  /**
132
65
  * Merges built-in agent types with custom agents from registry.
133
66
  * Custom agents get safe read-only tools by default.
@@ -154,85 +87,57 @@ function getMergedAgentTypes() {
154
87
  }
155
88
  /**
156
89
  * Creates the appropriate LLM provider based on configuration.
90
+ * Resolves CLI-specific concerns (credentials, settings) then delegates
91
+ * provider instantiation to the SDK's createProviderFromType().
157
92
  */
158
93
  function createProvider(options) {
159
94
  const providerType = options.provider ?? 'claude';
160
- switch (providerType) {
161
- case 'ollama': {
162
- const model = options.model ?? 'llama3.1';
163
- console.log(`Using Ollama provider with model: ${model}`);
164
- const provider = new OllamaProvider({
165
- model,
166
- baseUrl: process.env.OLLAMA_BASE_URL ?? 'http://localhost:11434',
167
- });
168
- return provider;
169
- }
170
- case 'openai': {
171
- const apiKey = getApiKey('openai');
172
- if (!apiKey) {
173
- throw new Error('OpenAI API key not found.\n' +
174
- 'Run /keys to set it, or: export OPENAI_API_KEY=sk-...');
175
- }
176
- const model = options.model ?? 'gpt-4o';
177
- console.log(`Using OpenAI provider with model: ${model}`);
178
- const provider = new OpenAIProvider({ apiKey, model });
179
- return provider;
180
- }
181
- case 'gemini': {
182
- const apiKey = getApiKey('google');
183
- if (!apiKey) {
184
- throw new Error('Google AI API key not found.\n' +
185
- 'Run /keys to set it, or: export GOOGLE_API_KEY=AI...');
186
- }
187
- const model = options.model ?? 'gemini-2.0-flash';
188
- console.log(`Using Gemini provider with model: ${model}`);
189
- const provider = new GeminiProvider({ apiKey, model });
190
- return provider;
191
- }
192
- case 'claude':
193
- default: {
194
- const apiKey = getApiKey('anthropic');
195
- if (!apiKey) {
196
- throw new Error('Anthropic API key not found.\n' +
197
- 'Run /keys to set it, or: export ANTHROPIC_API_KEY=sk-ant-...\n' +
198
- 'Or use --provider ollama for local models.');
199
- }
200
- const model = options.model ?? 'claude-sonnet-4-20250514';
201
- console.log(`Using Claude provider with model: ${model}`);
202
- return new ClaudeProvider({ apiKey, model });
203
- }
95
+ const quiet = options.quiet ?? false;
96
+ const meta = PROVIDER_METADATA[providerType];
97
+ // 1. Resolve API key from CLI credential store
98
+ const apiKey = meta.requiresKey ? getApiKey(meta.credentialKey) : undefined;
99
+ if (!apiKey && meta.requiresKey) {
100
+ throw new Error(`${meta.displayName} API key not found.\n` +
101
+ `Run /keys to set it, or: export ${meta.envVar}=...` +
102
+ (providerType === 'claude' ? '\nOr use --provider ollama for local models.' : ''));
204
103
  }
205
- }
206
- /**
207
- * Returns the context window limit for each provider.
208
- */
209
- function getProviderContextLimit(provider) {
210
- switch (provider) {
211
- case 'gemini':
212
- return 1000000; // 1M tokens
213
- case 'claude':
214
- return 200000; // 200K tokens
215
- case 'openai':
216
- return 128000; // 128K tokens
217
- case 'ollama':
218
- return 32000; // Conservative default for local models
219
- default:
220
- return 200000;
104
+ // 2. Resolve model (from options or registry default for balanced tier)
105
+ const model = options.model ?? getDefaultModelForTier(providerType, 'balanced')?.id;
106
+ // 3. Resolve Ollama base URL from settings
107
+ const baseUrl = providerType === 'ollama'
108
+ ? ((typeof getSetting('ollamaBaseUrl') === 'string'
109
+ ? getSetting('ollamaBaseUrl')
110
+ : undefined) ??
111
+ process.env.OLLAMA_BASE_URL ??
112
+ 'http://localhost:11434')
113
+ : undefined;
114
+ // 4. Log (unless quiet)
115
+ if (!quiet)
116
+ console.log(`Using ${meta.displayName} with model: ${model ?? 'default'}`);
117
+ if (!quiet && providerType === 'ollama' && baseUrl !== 'http://localhost:11434') {
118
+ console.log(` Ollama server: ${baseUrl ?? ''}`);
221
119
  }
120
+ // 5. Delegate to SDK
121
+ return createProviderFromType(providerType, {
122
+ model,
123
+ apiKey: apiKey ?? undefined,
124
+ baseUrl,
125
+ siteName: providerType === 'openrouter' ? 'compilr-cli' : undefined,
126
+ });
222
127
  }
223
128
  /**
224
129
  * Creates an Agent instance configured with all tools.
225
130
  */
226
131
  export function createAgent(options = {}) {
227
132
  const provider = createProvider(options);
228
- // Create context manager with provider-appropriate limits
133
+ // Create context manager with model-specific limits
229
134
  // Uses library defaults: compact at 50%, summarize at 90%, emergency at 95%
230
135
  // Auto-compact can be disabled via settings (requires restart)
231
136
  const autoCompact = isAutoCompactEnabled();
232
137
  const contextManager = new ContextManager({
233
138
  provider,
234
139
  config: {
235
- maxContextTokens: getProviderContextLimit(options.provider),
140
+ maxContextTokens: getModelContextWindow(options.model ?? '', options.provider),
236
141
  // If auto-compact disabled, set threshold to 100% (never triggers)
237
142
  compaction: autoCompact
238
143
  ? DEFAULT_CONTEXT_CONFIG.compaction
@@ -254,10 +159,64 @@ export function createAgent(options = {}) {
254
159
  }
255
160
  }
256
161
  : undefined;
257
- // Build system prompt with optional project context
258
- const systemPrompt = options.projectContext
259
- ? `${SYSTEM_PROMPT}\n\n---\n\n## Project Context\n\nThe following is project-specific context loaded from COMPILR.md:\n\n${options.projectContext}`
260
- : SYSTEM_PROMPT;
162
+ // Build modular system prompt based on current context
163
+ // Note: Anchors are NOT added here - they're handled by library's AnchorManager
164
+ // which re-injects them on every LLM call (survives compaction)
165
+ // Initialize meta-tools if enabled (needed for tool index)
166
+ let metaToolsIndex;
167
+ if (options.enableMetaTools && !options.minimal) {
168
+ initializeMetaTools();
169
+ metaToolsIndex = getToolIndexForSystemPrompt();
170
+ // Log tool stats (unless quiet mode)
171
+ if (!options.quiet) {
172
+ const stats = getToolStats();
173
+ console.log(`[Meta-tools] Direct: ${String(stats.directTools)}, ` +
174
+ `Meta: ${String(stats.metaRegistryTools)}, ` +
175
+ `Est. savings: ~${String(stats.tokenSavings)} tokens`);
176
+ }
177
+ }
178
+ let systemPrompt;
179
+ // Check if we should use minimal system prompt (for testing role identity)
180
+ if (options.useMinimalSystemPrompt && options.systemPromptAddition) {
181
+ // Skip all modules - just use the role prompt directly
182
+ systemPrompt = options.systemPromptAddition;
183
+ }
184
+ else {
185
+ // Use modular system prompt builder
186
+ // When a role-specific identity is provided (systemPromptAddition), skip the default identity module
187
+ const promptBuilder = new SystemPromptBuilder({
188
+ enableMetaTools: options.enableMetaTools && !options.minimal,
189
+ projectName: options.projectName,
190
+ projectContext: options.projectContext,
191
+ guidedModeContext: options.guidedModeContext,
192
+ planModeContext: options.planModeContext,
193
+ metaToolsIndex,
194
+ hasRoleIdentity: !!options.systemPromptAddition, // Skip default identity when role is specified
195
+ // hasGit is auto-detected by builder
196
+ });
197
+ const buildResult = promptBuilder.build();
198
+ systemPrompt = buildResult.prompt;
199
+ // Prepend role-specific system prompt (for team agents)
200
+ // The default identity module is already excluded via hasRoleIdentity flag
201
+ if (options.systemPromptAddition) {
202
+ // Extract role name from the role prompt (format: "# ROLE: ROLE_NAME")
203
+ const roleMatch = options.systemPromptAddition.match(/^#\s*ROLE:\s*(.+)$/m);
204
+ const roleName = roleMatch ? roleMatch[1].trim() : 'specialized team member';
205
+ // Put FULL role prompt at the END (recency effect is stronger than primacy)
206
+ // LLMs weight the end of context more heavily
207
+ const roleEnding = `
208
+
209
+ ---
210
+
211
+ ## YOUR ASSIGNED ROLE: ${roleName}
212
+
213
+ ${options.systemPromptAddition}
214
+
215
+ **CRITICAL**: When asked "what is your role?", "what are you?", or similar identity questions, your response should acknowledge your assigned role. For example: "In this team, I'm the ${roleName}" or "I'm operating as the ${roleName} in this session."`;
216
+ // Put role at BOTH beginning AND end, with full role prompt at the end
217
+ systemPrompt = options.systemPromptAddition + '\n\n' + systemPrompt + roleEnding;
218
+ }
219
+ }
261
220
  const agent = new Agent({
262
221
  provider,
263
222
  systemPrompt,
@@ -280,29 +239,202 @@ export function createAgent(options = {}) {
280
239
  : undefined,
281
240
  // Iteration limit handler - asks user if they want to continue
282
241
  onIterationLimitReached: options.onIterationLimitReached,
242
+ // Anchors - critical info that survives context compaction
243
+ // Library re-injects anchors on every LLM call
244
+ anchors: options.enableAnchors
245
+ ? {
246
+ maxAnchors: 50,
247
+ maxTokens: 4000,
248
+ includeDefaults: true,
249
+ // Note: We manage persistence ourselves via project-anchors.ts
250
+ // Don't set persistPath - we load anchors manually below
251
+ }
252
+ : undefined,
253
+ // Guardrails - pattern-based safety checks for risky operations
254
+ // 15 built-in patterns: git destructive ops, rm -rf, DROP TABLE, secrets, etc.
255
+ guardrails: options.enableGuardrails
256
+ ? {
257
+ enabled: true,
258
+ includeDefaults: true,
259
+ onTriggered: options.onGuardrailTriggered,
260
+ }
261
+ : undefined,
262
+ // Tool result delegation — auto-summarize large results to conserve context
263
+ delegation: isDelegationEnabled()
264
+ ? {
265
+ enabled: true,
266
+ delegationThreshold: 8000,
267
+ summaryMaxTokens: 800,
268
+ resultTTL: 600_000,
269
+ maxStoredResults: 50,
270
+ strategy: 'auto',
271
+ toolOverrides: {
272
+ // Custom thresholds
273
+ bash: { threshold: 12000 },
274
+ grep: { threshold: 4000 },
275
+ git_diff: { threshold: 6000 },
276
+ // Never summarize — agent needs verbatim results
277
+ get_tool_info: { enabled: false },
278
+ list_tools: { enabled: false },
279
+ ask_user: { enabled: false },
280
+ ask_user_simple: { enabled: false },
281
+ todo_read: { enabled: false },
282
+ },
283
+ }
284
+ : undefined,
285
+ // Hooks: context pressure, file lock check/acquire
286
+ hooks: {
287
+ beforeLLM: [
288
+ (ctx) => {
289
+ const utilization = contextManager.getUtilization();
290
+ if (utilization < 0.3)
291
+ return undefined;
292
+ const pct = Math.round(utilization * 100);
293
+ let hint;
294
+ if (utilization < 0.6) {
295
+ hint = `[Context: ${String(pct)}%] Consider task() for multi-file operations.`;
296
+ }
297
+ else if (utilization < 0.8) {
298
+ hint = `[Context: ${String(pct)}% - HIGH] Prefer task() sub-agents for file reads and code search.`;
299
+ }
300
+ else {
301
+ hint = `[Context: ${String(pct)}% - CRITICAL] Use task() for ALL exploration. Do not read files directly.`;
302
+ }
303
+ const messages = [...ctx.messages];
304
+ messages.splice(1, 0, { role: 'user', content: hint });
305
+ return { messages };
306
+ },
307
+ ],
308
+ beforeTool: [createFileLockCheckHook(getActiveProject)],
309
+ afterTool: [
310
+ createFileLockAcquireHook(getActiveProject),
311
+ ...(options.episodeRecorder ? [options.episodeRecorder.createHook()] : []),
312
+ ],
313
+ },
283
314
  });
284
- // Register tools using registerTools method
285
- const tools = options.minimal
286
- ? createMinimalToolRegistry()
287
- : createToolRegistry();
288
- // Type assertion needed for tool registry compatibility
289
- agent.registerTools(tools);
315
+ // Load persisted anchors into the agent's AnchorManager
316
+ if (options.enableAnchors && options.persistedAnchors) {
317
+ for (const anchor of options.persistedAnchors) {
318
+ agent.addAnchor({
319
+ id: anchor.id,
320
+ content: anchor.content,
321
+ priority: anchor.priority,
322
+ scope: anchor.scope,
323
+ tags: anchor.tags,
324
+ // Note: projectId is for our tracking, not needed by library
325
+ });
326
+ }
327
+ }
328
+ // Register tools using registerTools method (skip if noTools is set)
329
+ if (!options.noTools) {
330
+ // When meta-tools is enabled, use direct tools + meta-tools instead of all tools
331
+ let tools;
332
+ if (options.minimal) {
333
+ tools = createMinimalToolRegistry();
334
+ }
335
+ else if (options.enableMetaTools) {
336
+ // Meta-tools mode: direct tools + get_tool_info (for schema introspection)
337
+ // Meta-registry tools are accessed transparently via fallback handler
338
+ tools = [...getDirectTools(), ...getMetaTools()];
339
+ }
340
+ else {
341
+ // Legacy mode: all tools declared directly
342
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- Intentional for backward compatibility
343
+ tools = createToolRegistry();
344
+ }
345
+ // Apply tool filter if specified (filter direct tools)
346
+ if (options.toolFilter && options.toolFilter.length > 0) {
347
+ const allowedTools = new Set(options.toolFilter);
348
+ // get_tool_info is always allowed for schema introspection
349
+ const alwaysAllowed = new Set(['get_tool_info']);
350
+ tools = tools.filter((tool) => allowedTools.has(tool.definition.name) || alwaysAllowed.has(tool.definition.name));
351
+ // Also set the meta-tool filter for use_tool/list_tools filtering
352
+ setMetaToolFilter(options.toolFilter);
353
+ }
354
+ else {
355
+ // No filter - clear any previous filter
356
+ setMetaToolFilter(null);
357
+ }
358
+ // Type assertion needed for tool registry compatibility
359
+ agent.registerTools(tools);
360
+ // Register MCP tools (from external MCP servers)
361
+ // These are registered as direct tools since their schemas are unknown at build time
362
+ if (options.mcpTools && options.mcpTools.length > 0) {
363
+ agent.registerTools(options.mcpTools);
364
+ }
365
+ // Set up transparent fallback to meta-registry
366
+ // When the agent calls a tool not in direct tools (e.g., workitem_add),
367
+ // the fallback handler checks the meta-registry and executes it.
368
+ if (options.enableMetaTools && !options.minimal) {
369
+ agent.getToolRegistry().setFallbackHandler(createToolFallback());
370
+ }
371
+ }
290
372
  // Register Task tool for sub-agent spawning (only in full mode)
291
- if (!options.minimal) {
373
+ if (!options.minimal && !options.noTools) {
374
+ // Track active subagents to correlate spawn/complete/events
375
+ // Track active subagents by toolUseId for token counting
376
+ const activeSubagents = new Map();
377
+ // Provide a way for caller to clear tracking state between runs
378
+ if (options.onSubagentTrackingReady) {
379
+ options.onSubagentTrackingReady(() => {
380
+ activeSubagents.clear();
381
+ });
382
+ }
292
383
  const taskTool = createTaskTool({
293
384
  parentAgent: agent,
294
385
  agentTypes: getMergedAgentTypes(),
295
386
  enableEventStreaming: true,
296
387
  defaultTimeout: 120000, // 2 minutes for subagent operations
297
- onSpawn: (agentType, description) => {
388
+ // Now uses toolUseId for direct correlation (no more FIFO matching!)
389
+ onSpawn: (agentType, description, toolUseId) => {
298
390
  if (options.verbose) {
299
- console.log(`\n[Sub-agent] Spawning ${agentType}: ${description}`);
391
+ console.log(`\n[Sub-agent] Spawning ${agentType}: ${description} (${toolUseId ?? 'no-id'})`);
392
+ }
393
+ // Immediately notify with toolUseId - no more queuing/matching!
394
+ if (toolUseId) {
395
+ activeSubagents.set(toolUseId, { agentType, tokenCount: 0 });
396
+ if (options.onSubagentStart) {
397
+ options.onSubagentStart(toolUseId, agentType, description);
398
+ }
300
399
  }
301
400
  },
302
- onComplete: (agentType, result) => {
401
+ onComplete: (agentType, result, toolUseId) => {
303
402
  if (options.verbose) {
304
403
  console.log(`[Sub-agent] ${agentType} completed (${String(result.iterations)} iterations)`);
305
404
  }
405
+ // Direct notification with toolUseId - no more searching!
406
+ if (toolUseId && options.onSubagentEnd) {
407
+ options.onSubagentEnd(toolUseId, true, result.toolCalls);
408
+ activeSubagents.delete(toolUseId);
409
+ }
410
+ },
411
+ // Stream subagent events for live updates
412
+ onSubAgentEvent: (eventInfo) => {
413
+ const { toolUseId, event } = eventInfo;
414
+ // Handle tool events for live updates
415
+ if (event.type === 'tool_start' && toolUseId && event.name && options.onSubagentToolUse) {
416
+ // Extract tool name and input summary
417
+ const toolName = event.name;
418
+ let summary;
419
+ // Try to get a meaningful summary from input
420
+ const input = event.input;
421
+ if (input) {
422
+ // Common patterns for tool input summaries
423
+ const path = input.path;
424
+ const pattern = input.pattern;
425
+ const command = input.command;
426
+ const filePath = input.file_path;
427
+ if (typeof path === 'string')
428
+ summary = path;
429
+ else if (typeof pattern === 'string')
430
+ summary = pattern;
431
+ else if (typeof command === 'string')
432
+ summary = command.slice(0, 40);
433
+ else if (typeof filePath === 'string')
434
+ summary = filePath;
435
+ }
436
+ options.onSubagentToolUse(toolUseId, toolName, summary);
437
+ }
306
438
  },
307
439
  });
308
440
  // Type assertion needed for task tool compatibility
@@ -313,5 +445,52 @@ export function createAgent(options = {}) {
313
445
  });
314
446
  agent.registerTool(suggestTool);
315
447
  }
448
+ // ==========================================================================
449
+ // Calculate and store token estimates for debugging
450
+ // ==========================================================================
451
+ if (!options.quiet) {
452
+ // Calculate tool tokens from the tools we registered
453
+ let toolTokens = 0;
454
+ // Get the tools array based on options
455
+ let toolsForEstimate = [];
456
+ if (!options.noTools) {
457
+ if (options.minimal) {
458
+ toolsForEstimate = createMinimalToolRegistry();
459
+ }
460
+ else if (options.enableMetaTools) {
461
+ toolsForEstimate = [...getDirectTools(), ...getMetaTools()];
462
+ }
463
+ else {
464
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
465
+ toolsForEstimate = createToolRegistry();
466
+ }
467
+ }
468
+ for (const tool of toolsForEstimate) {
469
+ const def = tool.definition;
470
+ toolTokens += estimateJsonTokens({
471
+ name: def.name,
472
+ description: def.description,
473
+ input_schema: def.inputSchema,
474
+ });
475
+ }
476
+ // Add task tool and suggest tool estimates (if registered)
477
+ if (!options.minimal && !options.noTools) {
478
+ // Task tool has a large description with all agent types
479
+ toolTokens += 700; // Approximate for task tool
480
+ toolTokens += 200; // Approximate for suggest tool
481
+ }
482
+ // Calculate estimates
483
+ const systemTokens = estimateTokens(systemPrompt);
484
+ const roleTokens = options.systemPromptAddition
485
+ ? estimateTokens(options.systemPromptAddition) * 2 // Role appears at start and end
486
+ : 0;
487
+ const contextTokens = estimateTokens(options.projectContext);
488
+ setStaticEstimates({
489
+ system: systemTokens - roleTokens, // Subtract role since it's counted separately
490
+ role: roleTokens,
491
+ tools: toolTokens,
492
+ context: contextTokens,
493
+ });
494
+ }
316
495
  return agent;
317
496
  }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Anchors Module
3
+ *
4
+ * Re-exports the project-anchors API for managing persistent
5
+ * critical information that survives context compaction.
6
+ */
7
+ export { getAnchorManager, getGlobalAnchorManager, clearProjectAnchors, getFormattedAnchors, addAnchor, getAllAnchors, getProjectsWithAnchors, getAnchorStats, clearManagerCache, } from './project-anchors.js';
8
+ export type { Anchor, AnchorInput, AnchorQueryOptions } from './project-anchors.js';
9
+ export { AnchorManager } from '@compilr-dev/sdk';
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Anchors Module
3
+ *
4
+ * Re-exports the project-anchors API for managing persistent
5
+ * critical information that survives context compaction.
6
+ */
7
+ export { getAnchorManager, getGlobalAnchorManager, clearProjectAnchors, getFormattedAnchors, addAnchor, getAllAnchors, getProjectsWithAnchors, getAnchorStats, clearManagerCache, } from './project-anchors.js';
8
+ // Re-export the AnchorManager type from agents for consumers
9
+ export { AnchorManager } from '@compilr-dev/sdk';