@compilr-dev/cli 0.5.0 → 0.5.2

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 (587) hide show
  1. package/LICENSE +108 -0
  2. package/README.md +237 -69
  3. package/dist/.tsbuildinfo.app +1 -0
  4. package/dist/.tsbuildinfo.data +1 -0
  5. package/dist/.tsbuildinfo.domain +1 -0
  6. package/dist/.tsbuildinfo.foundation +1 -0
  7. package/dist/agent.d.ts +61 -4
  8. package/dist/agent.js +241 -245
  9. package/dist/anchors/index.d.ts +1 -1
  10. package/dist/anchors/index.js +1 -1
  11. package/dist/anchors/project-anchors.d.ts +2 -2
  12. package/dist/anchors/project-anchors.js +1 -1
  13. package/dist/auth/api-client.d.ts +124 -0
  14. package/dist/auth/api-client.js +261 -0
  15. package/dist/auth/index.d.ts +172 -0
  16. package/dist/auth/index.js +545 -0
  17. package/dist/auth/storage.d.ts +52 -0
  18. package/dist/auth/storage.js +118 -0
  19. package/dist/changelog/index.d.ts +16 -0
  20. package/dist/changelog/index.js +24 -0
  21. package/dist/changelog/releases.d.ts +17 -0
  22. package/dist/changelog/releases.js +63 -0
  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.js +286 -81
  28. package/dist/commands-v2/handlers/core.d.ts +1 -0
  29. package/dist/commands-v2/handlers/core.js +133 -8
  30. package/dist/commands-v2/handlers/debug.js +18 -0
  31. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  32. package/dist/commands-v2/handlers/delegations.js +29 -0
  33. package/dist/commands-v2/handlers/files.d.ts +8 -0
  34. package/dist/commands-v2/handlers/files.js +162 -0
  35. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  36. package/dist/commands-v2/handlers/filter.js +130 -0
  37. package/dist/commands-v2/handlers/games.d.ts +7 -0
  38. package/dist/commands-v2/handlers/games.js +57 -0
  39. package/dist/commands-v2/handlers/index.d.ts +13 -0
  40. package/dist/commands-v2/handlers/index.js +39 -0
  41. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  42. package/dist/commands-v2/handlers/mcp.js +39 -0
  43. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  44. package/dist/commands-v2/handlers/notifications.js +34 -0
  45. package/dist/commands-v2/handlers/project.js +295 -31
  46. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  47. package/dist/commands-v2/handlers/reset.js +118 -0
  48. package/dist/commands-v2/handlers/session.d.ts +161 -0
  49. package/dist/commands-v2/handlers/session.js +805 -0
  50. package/dist/commands-v2/handlers/settings.d.ts +2 -0
  51. package/dist/commands-v2/handlers/settings.js +217 -35
  52. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  53. package/dist/commands-v2/handlers/tasks.js +36 -0
  54. package/dist/commands-v2/handlers/team.d.ts +9 -0
  55. package/dist/commands-v2/handlers/team.js +549 -0
  56. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  57. package/dist/commands-v2/handlers/terminals.js +34 -0
  58. package/dist/commands-v2/index.d.ts +3 -2
  59. package/dist/commands-v2/index.js +4 -1
  60. package/dist/commands-v2/registry.d.ts +15 -0
  61. package/dist/commands-v2/registry.js +34 -0
  62. package/dist/commands-v2/types.d.ts +81 -3
  63. package/dist/commands.js +13 -0
  64. package/dist/compilr-diff-companion.vsix +0 -0
  65. package/dist/db/index.js +98 -4
  66. package/dist/db/repositories/document-repository.d.ts +2 -0
  67. package/dist/db/repositories/document-repository.js +6 -1
  68. package/dist/db/repositories/index.d.ts +2 -0
  69. package/dist/db/repositories/index.js +1 -0
  70. package/dist/db/repositories/plan-repository.d.ts +101 -0
  71. package/dist/db/repositories/plan-repository.js +275 -0
  72. package/dist/db/repositories/project-repository.d.ts +6 -0
  73. package/dist/db/repositories/project-repository.js +41 -0
  74. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  75. package/dist/db/repositories/work-item-repository.js +69 -4
  76. package/dist/db/schema.d.ts +40 -3
  77. package/dist/db/schema.js +66 -3
  78. package/dist/episodes/index.d.ts +20 -0
  79. package/dist/episodes/index.js +27 -0
  80. package/dist/episodes/recorder.d.ts +51 -0
  81. package/dist/episodes/recorder.js +195 -0
  82. package/dist/episodes/significant-work.d.ts +21 -0
  83. package/dist/episodes/significant-work.js +56 -0
  84. package/dist/episodes/store.d.ts +38 -0
  85. package/dist/episodes/store.js +199 -0
  86. package/dist/episodes/types.d.ts +35 -0
  87. package/dist/episodes/types.js +6 -0
  88. package/dist/episodes/work-at-risk.d.ts +12 -0
  89. package/dist/episodes/work-at-risk.js +38 -0
  90. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  91. package/dist/episodes/work-summary-anchor.js +73 -0
  92. package/dist/games/coins.d.ts +66 -0
  93. package/dist/games/coins.js +165 -0
  94. package/dist/games/game-base.d.ts +84 -0
  95. package/dist/games/game-base.js +204 -0
  96. package/dist/games/index.d.ts +16 -0
  97. package/dist/games/index.js +49 -0
  98. package/dist/games/scores.d.ts +69 -0
  99. package/dist/games/scores.js +191 -0
  100. package/dist/games/tetris/board.d.ts +59 -0
  101. package/dist/games/tetris/board.js +170 -0
  102. package/dist/games/tetris/index.d.ts +109 -0
  103. package/dist/games/tetris/index.js +610 -0
  104. package/dist/games/tetris/pieces.d.ts +44 -0
  105. package/dist/games/tetris/pieces.js +271 -0
  106. package/dist/games/tetris/renderer.d.ts +26 -0
  107. package/dist/games/tetris/renderer.js +77 -0
  108. package/dist/guide/guide-content.d.ts +23 -0
  109. package/dist/guide/guide-content.js +196 -0
  110. package/dist/guide/index.d.ts +8 -0
  111. package/dist/guide/index.js +7 -0
  112. package/dist/guide/shared-content.d.ts +37 -0
  113. package/dist/guide/shared-content.js +1272 -0
  114. package/dist/guide/tutorial-helpers.d.ts +57 -0
  115. package/dist/guide/tutorial-helpers.js +147 -0
  116. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  117. package/dist/handlers/ask-user-handlers.js +104 -0
  118. package/dist/handlers/delegation-handlers.d.ts +34 -0
  119. package/dist/handlers/delegation-handlers.js +291 -0
  120. package/dist/handlers/permission-handler.d.ts +30 -0
  121. package/dist/handlers/permission-handler.js +205 -0
  122. package/dist/index.d.ts +11 -1
  123. package/dist/index.js +448 -271
  124. package/dist/input-handlers/memory-handler.d.ts +1 -1
  125. package/dist/input-handlers/memory-handler.js +2 -1
  126. package/dist/models/index.d.ts +10 -0
  127. package/dist/models/index.js +12 -0
  128. package/dist/models/model-registry.d.ts +38 -0
  129. package/dist/models/model-registry.js +69 -0
  130. package/dist/models/model-tiers.d.ts +28 -0
  131. package/dist/models/model-tiers.js +71 -0
  132. package/dist/models/model-validation.d.ts +25 -0
  133. package/dist/models/model-validation.js +291 -0
  134. package/dist/models/ollama-models.d.ts +73 -0
  135. package/dist/models/ollama-models.js +178 -0
  136. package/dist/models/provider-types.d.ts +6 -0
  137. package/dist/models/provider-types.js +1 -0
  138. package/dist/models/providers.d.ts +35 -0
  139. package/dist/models/providers.js +58 -0
  140. package/dist/models/types.d.ts +4 -0
  141. package/dist/models/types.js +4 -0
  142. package/dist/multi-agent/activity.d.ts +21 -0
  143. package/dist/multi-agent/activity.js +34 -0
  144. package/dist/multi-agent/agent-selection.d.ts +55 -0
  145. package/dist/multi-agent/agent-selection.js +90 -0
  146. package/dist/multi-agent/artifacts.d.ts +197 -0
  147. package/dist/multi-agent/artifacts.js +379 -0
  148. package/dist/multi-agent/checkpointer.d.ts +138 -0
  149. package/dist/multi-agent/checkpointer.js +471 -0
  150. package/dist/multi-agent/collision-utils.d.ts +16 -0
  151. package/dist/multi-agent/collision-utils.js +28 -0
  152. package/dist/multi-agent/context-resolver.d.ts +97 -0
  153. package/dist/multi-agent/context-resolver.js +316 -0
  154. package/dist/multi-agent/custom-agents.d.ts +83 -0
  155. package/dist/multi-agent/custom-agents.js +227 -0
  156. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  157. package/dist/multi-agent/delegation-tracker.js +243 -0
  158. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  159. package/dist/multi-agent/file-lock-hook.js +97 -0
  160. package/dist/multi-agent/file-locks.d.ts +58 -0
  161. package/dist/multi-agent/file-locks.js +194 -0
  162. package/dist/multi-agent/index.d.ts +24 -0
  163. package/dist/multi-agent/index.js +30 -0
  164. package/dist/multi-agent/mention-parser.d.ts +64 -0
  165. package/dist/multi-agent/mention-parser.js +146 -0
  166. package/dist/multi-agent/notification-manager.d.ts +84 -0
  167. package/dist/multi-agent/notification-manager.js +224 -0
  168. package/dist/multi-agent/pending-requests.d.ts +122 -0
  169. package/dist/multi-agent/pending-requests.js +155 -0
  170. package/dist/multi-agent/session-registry.d.ts +139 -0
  171. package/dist/multi-agent/session-registry.js +514 -0
  172. package/dist/multi-agent/shared-context.d.ts +293 -0
  173. package/dist/multi-agent/shared-context.js +671 -0
  174. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  175. package/dist/multi-agent/skill-requirements.js +178 -0
  176. package/dist/multi-agent/task-assignment.d.ts +69 -0
  177. package/dist/multi-agent/task-assignment.js +123 -0
  178. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  179. package/dist/multi-agent/task-suggestion.js +72 -0
  180. package/dist/multi-agent/team-agent.d.ts +201 -0
  181. package/dist/multi-agent/team-agent.js +488 -0
  182. package/dist/multi-agent/team.d.ts +286 -0
  183. package/dist/multi-agent/team.js +610 -0
  184. package/dist/multi-agent/tool-config.d.ts +110 -0
  185. package/dist/multi-agent/tool-config.js +661 -0
  186. package/dist/multi-agent/types.d.ts +211 -0
  187. package/dist/multi-agent/types.js +617 -0
  188. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  189. package/dist/prompts/plan-mode-prompt.js +95 -0
  190. package/dist/repl-helpers.js +5 -2
  191. package/dist/repl-v2.d.ts +401 -2
  192. package/dist/repl-v2.js +2588 -65
  193. package/dist/session/index.d.ts +6 -0
  194. package/dist/session/index.js +6 -0
  195. package/dist/session/project-session-manager.d.ts +158 -0
  196. package/dist/session/project-session-manager.js +650 -0
  197. package/dist/settings/index.d.ts +133 -13
  198. package/dist/settings/index.js +329 -24
  199. package/dist/settings/mcp-config.d.ts +76 -0
  200. package/dist/settings/mcp-config.js +143 -0
  201. package/dist/settings/paths.d.ts +4 -0
  202. package/dist/settings/paths.js +6 -0
  203. package/dist/shared-handlers.d.ts +62 -0
  204. package/dist/shared-handlers.js +48 -0
  205. package/dist/system-prompt/builder.d.ts +5 -0
  206. package/dist/system-prompt/builder.js +4 -0
  207. package/dist/system-prompt/index.d.ts +18 -0
  208. package/dist/system-prompt/index.js +18 -0
  209. package/dist/system-prompt/modules.d.ts +5 -0
  210. package/dist/system-prompt/modules.js +4 -0
  211. package/dist/tabbed-menu.js +2 -1
  212. package/dist/templates/compilr-md-import.d.ts +16 -0
  213. package/dist/templates/compilr-md-import.js +241 -0
  214. package/dist/templates/compilr-md.js +10 -61
  215. package/dist/templates/config-json.d.ts +1 -25
  216. package/dist/templates/index.d.ts +2 -0
  217. package/dist/templates/index.js +34 -73
  218. package/dist/tool-names.d.ts +113 -0
  219. package/dist/tool-names.js +239 -0
  220. package/dist/tools/ask-user-simple.d.ts +1 -1
  221. package/dist/tools/ask-user-simple.js +2 -1
  222. package/dist/tools/ask-user.d.ts +1 -1
  223. package/dist/tools/ask-user.js +2 -1
  224. package/dist/tools/backlog.d.ts +2 -2
  225. package/dist/tools/backlog.js +1 -1
  226. package/dist/tools/db-tools.d.ts +13 -61
  227. package/dist/tools/db-tools.js +12 -13
  228. package/dist/tools/delegate-background.d.ts +27 -0
  229. package/dist/tools/delegate-background.js +115 -0
  230. package/dist/tools/delegate.d.ts +22 -0
  231. package/dist/tools/delegate.js +97 -0
  232. package/dist/tools/delegation-status.d.ts +16 -0
  233. package/dist/tools/delegation-status.js +128 -0
  234. package/dist/tools/guide-tool.d.ts +12 -0
  235. package/dist/tools/guide-tool.js +59 -0
  236. package/dist/tools/handoff.d.ts +25 -0
  237. package/dist/tools/handoff.js +99 -0
  238. package/dist/tools/meta-tools.d.ts +26 -0
  239. package/dist/tools/meta-tools.js +47 -0
  240. package/dist/tools/platform-adapter.d.ts +35 -0
  241. package/dist/tools/platform-adapter.js +404 -0
  242. package/dist/tools/project-db.d.ts +5 -73
  243. package/dist/tools/project-db.js +5 -336
  244. package/dist/tools.d.ts +67 -2
  245. package/dist/tools.js +240 -48
  246. package/dist/ui/autocomplete-controller.d.ts +42 -0
  247. package/dist/ui/autocomplete-controller.js +384 -0
  248. package/dist/ui/base/index.d.ts +1 -1
  249. package/dist/ui/base/index.js +1 -1
  250. package/dist/ui/base/overlay-base-v2.d.ts +10 -0
  251. package/dist/ui/base/overlay-base-v2.js +14 -0
  252. package/dist/ui/base/render-utils.d.ts +19 -0
  253. package/dist/ui/base/render-utils.js +25 -0
  254. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
  255. package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
  256. package/dist/ui/constants/labels.d.ts +14 -0
  257. package/dist/ui/constants/labels.js +52 -0
  258. package/dist/ui/conversation-store.d.ts +55 -0
  259. package/dist/ui/conversation-store.js +107 -0
  260. package/dist/ui/conversation.js +11 -13
  261. package/dist/ui/diff.d.ts +7 -1
  262. package/dist/ui/diff.js +85 -48
  263. package/dist/ui/ephemeral.js +3 -9
  264. package/dist/ui/file-autocomplete.d.ts +24 -0
  265. package/dist/ui/file-autocomplete.js +56 -0
  266. package/dist/ui/footer-renderer.d.ts +69 -0
  267. package/dist/ui/footer-renderer.js +431 -0
  268. package/dist/ui/footer.d.ts +74 -7
  269. package/dist/ui/footer.js +173 -16
  270. package/dist/ui/input-controller.d.ts +51 -0
  271. package/dist/ui/input-controller.js +176 -0
  272. package/dist/ui/input-prompt.d.ts +19 -0
  273. package/dist/ui/input-prompt.js +206 -14
  274. package/dist/ui/keyboard-handler.d.ts +57 -0
  275. package/dist/ui/keyboard-handler.js +557 -0
  276. package/dist/ui/live-region-facade.d.ts +42 -0
  277. package/dist/ui/live-region-facade.js +205 -0
  278. package/dist/ui/live-region.d.ts +0 -4
  279. package/dist/ui/live-region.js +6 -14
  280. package/dist/ui/mascot/renderer.d.ts +1 -1
  281. package/dist/ui/mascot/renderer.js +37 -2
  282. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  283. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  284. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  285. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  286. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  287. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  288. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  289. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  290. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  291. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  292. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  293. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  294. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  295. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  296. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  297. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  298. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  299. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  300. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  301. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  302. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  303. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  304. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  305. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  306. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  307. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  308. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  309. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  310. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  311. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  312. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  313. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  314. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  315. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  316. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  317. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  318. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  319. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  320. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  321. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  322. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  323. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  324. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  325. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  326. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  327. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  328. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  329. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  330. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  331. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  332. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  333. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  334. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  335. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  336. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  337. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  338. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  339. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  340. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  341. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  342. package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
  343. package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
  344. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  345. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  346. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  347. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  348. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
  349. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  350. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  351. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
  352. package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
  353. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  354. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  355. package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
  356. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
  357. package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
  358. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  359. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  360. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
  361. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
  362. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  363. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  364. package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
  365. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
  366. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
  367. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  368. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  369. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  370. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  371. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
  372. package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
  373. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  374. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  375. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  376. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  377. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
  378. package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
  379. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
  380. package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
  381. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  382. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  383. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  384. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  385. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  386. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  387. package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
  388. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  389. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  390. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  391. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  392. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  393. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  394. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
  395. package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
  396. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  397. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  398. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  399. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  400. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  401. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  402. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  403. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  404. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  405. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  406. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  407. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  408. package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
  409. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
  410. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
  411. package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +1 -0
  412. package/dist/ui/overlay/impl/workflow-overlay-v2.js +10 -4
  413. package/dist/ui/overlay/index.d.ts +20 -1
  414. package/dist/ui/overlay/index.js +19 -0
  415. package/dist/ui/overlay/types.d.ts +5 -0
  416. package/dist/ui/overlay-manager.d.ts +43 -0
  417. package/dist/ui/overlay-manager.js +238 -0
  418. package/dist/ui/overlays.js +4 -16
  419. package/dist/ui/permission-overlay.js +6 -5
  420. package/dist/ui/status-bar-controller.d.ts +33 -0
  421. package/dist/ui/status-bar-controller.js +99 -0
  422. package/dist/ui/subagent-renderer.js +3 -19
  423. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  424. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  425. package/dist/ui/terminal-line-builders.d.ts +17 -0
  426. package/dist/ui/terminal-line-builders.js +42 -0
  427. package/dist/ui/terminal-render-item.d.ts +16 -0
  428. package/dist/ui/terminal-render-item.js +267 -0
  429. package/dist/ui/terminal-renderer.d.ts +7 -8
  430. package/dist/ui/terminal-renderer.js +7 -8
  431. package/dist/ui/terminal-types.d.ts +179 -0
  432. package/dist/ui/terminal-types.js +34 -0
  433. package/dist/ui/terminal-ui.d.ts +144 -276
  434. package/dist/ui/terminal-ui.js +384 -1861
  435. package/dist/ui/todo-zone.d.ts +19 -1
  436. package/dist/ui/todo-zone.js +71 -13
  437. package/dist/ui/tool-formatters.js +696 -1
  438. package/dist/ui/turn-metrics.d.ts +56 -0
  439. package/dist/ui/turn-metrics.js +75 -0
  440. package/dist/ui/types.d.ts +28 -0
  441. package/dist/ui/types.js +1 -0
  442. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  443. package/dist/ui/vscode-diff-ipc.js +385 -0
  444. package/dist/utils/credentials.d.ts +24 -5
  445. package/dist/utils/credentials.js +123 -9
  446. package/dist/utils/format-tokens.d.ts +13 -0
  447. package/dist/utils/format-tokens.js +18 -0
  448. package/dist/utils/git-config.d.ts +26 -0
  449. package/dist/utils/git-config.js +54 -0
  450. package/dist/utils/message-utils.d.ts +61 -0
  451. package/dist/utils/message-utils.js +72 -0
  452. package/dist/utils/model-tiers.d.ts +8 -1
  453. package/dist/utils/model-tiers.js +38 -16
  454. package/dist/utils/open-browser.d.ts +5 -0
  455. package/dist/utils/open-browser.js +32 -0
  456. package/dist/utils/path-safety.js +3 -2
  457. package/dist/utils/project-detection.d.ts +58 -0
  458. package/dist/utils/project-detection.js +424 -0
  459. package/dist/utils/project-memory.js +2 -1
  460. package/dist/utils/project-status.d.ts +2 -2
  461. package/dist/utils/startup-perf.d.ts +18 -0
  462. package/dist/utils/startup-perf.js +60 -0
  463. package/dist/utils/token-tracker.d.ts +62 -0
  464. package/dist/utils/token-tracker.js +150 -0
  465. package/dist/utils/token-types.d.ts +23 -0
  466. package/dist/utils/token-types.js +18 -0
  467. package/dist/utils/types/config-types.d.ts +32 -0
  468. package/dist/utils/types/config-types.js +8 -0
  469. package/dist/utils/update-checker.d.ts +28 -0
  470. package/dist/utils/update-checker.js +106 -0
  471. package/dist/utils/version.d.ts +7 -0
  472. package/dist/utils/version.js +10 -0
  473. package/dist/utils/vscode-detect.d.ts +39 -0
  474. package/dist/utils/vscode-detect.js +137 -0
  475. package/package.json +27 -13
  476. package/dist/commands/handler-types.d.ts +0 -68
  477. package/dist/commands/handler-types.js +0 -8
  478. package/dist/commands/handlers/agent-commands.d.ts +0 -13
  479. package/dist/commands/handlers/agent-commands.js +0 -305
  480. package/dist/commands/handlers/design-commands.d.ts +0 -15
  481. package/dist/commands/handlers/design-commands.js +0 -334
  482. package/dist/commands/handlers/index.d.ts +0 -20
  483. package/dist/commands/handlers/index.js +0 -43
  484. package/dist/commands/handlers/overlay-commands.d.ts +0 -21
  485. package/dist/commands/handlers/overlay-commands.js +0 -287
  486. package/dist/commands/handlers/project-commands.d.ts +0 -11
  487. package/dist/commands/handlers/project-commands.js +0 -167
  488. package/dist/commands/handlers/simple-commands.d.ts +0 -19
  489. package/dist/commands/handlers/simple-commands.js +0 -144
  490. package/dist/commands/registry.d.ts +0 -50
  491. package/dist/commands/registry.js +0 -75
  492. package/dist/index.old.d.ts +0 -7
  493. package/dist/index.old.js +0 -1014
  494. package/dist/repl.d.ts +0 -149
  495. package/dist/repl.js +0 -1151
  496. package/dist/templates/claude-md.d.ts +0 -7
  497. package/dist/templates/claude-md.js +0 -189
  498. package/dist/test-autocomplete.d.ts +0 -7
  499. package/dist/test-autocomplete.js +0 -85
  500. package/dist/test-tabbed-menu.d.ts +0 -7
  501. package/dist/test-tabbed-menu.js +0 -25
  502. package/dist/tool-selector.d.ts +0 -71
  503. package/dist/tool-selector.js +0 -184
  504. package/dist/tools/anchor-tools.d.ts +0 -31
  505. package/dist/tools/anchor-tools.js +0 -255
  506. package/dist/tools/backlog-wrappers.d.ts +0 -54
  507. package/dist/tools/backlog-wrappers.js +0 -338
  508. package/dist/tools/document-db.d.ts +0 -43
  509. package/dist/tools/document-db.js +0 -220
  510. package/dist/tools/workitem-db.d.ts +0 -103
  511. package/dist/tools/workitem-db.js +0 -549
  512. package/dist/ui/agents-overlay-v2.d.ts +0 -43
  513. package/dist/ui/agents-overlay-v2.js +0 -809
  514. package/dist/ui/agents-overlay.d.ts +0 -12
  515. package/dist/ui/agents-overlay.js +0 -863
  516. package/dist/ui/anchors-overlay.d.ts +0 -12
  517. package/dist/ui/anchors-overlay.js +0 -775
  518. package/dist/ui/arch-type-overlay.d.ts +0 -15
  519. package/dist/ui/arch-type-overlay.js +0 -201
  520. package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
  521. package/dist/ui/ask-user-overlay-v2.js +0 -555
  522. package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
  523. package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
  524. package/dist/ui/backlog-overlay.d.ts +0 -32
  525. package/dist/ui/backlog-overlay.js +0 -652
  526. package/dist/ui/commands-overlay-v2.d.ts +0 -33
  527. package/dist/ui/commands-overlay-v2.js +0 -441
  528. package/dist/ui/commands-overlay.d.ts +0 -16
  529. package/dist/ui/commands-overlay.js +0 -439
  530. package/dist/ui/config-overlay.d.ts +0 -35
  531. package/dist/ui/config-overlay.js +0 -707
  532. package/dist/ui/docs-overlay.d.ts +0 -17
  533. package/dist/ui/docs-overlay.js +0 -303
  534. package/dist/ui/footer-v2.d.ts +0 -222
  535. package/dist/ui/footer-v2.js +0 -1349
  536. package/dist/ui/help-overlay-v2.d.ts +0 -34
  537. package/dist/ui/help-overlay-v2.js +0 -309
  538. package/dist/ui/help-overlay.d.ts +0 -16
  539. package/dist/ui/help-overlay.js +0 -316
  540. package/dist/ui/init-overlay-v2.d.ts +0 -34
  541. package/dist/ui/init-overlay-v2.js +0 -600
  542. package/dist/ui/init-overlay.d.ts +0 -34
  543. package/dist/ui/init-overlay.js +0 -604
  544. package/dist/ui/input-prompt-v2.d.ts +0 -180
  545. package/dist/ui/input-prompt-v2.js +0 -999
  546. package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
  547. package/dist/ui/iteration-limit-overlay-v2.js +0 -114
  548. package/dist/ui/keys-overlay-v2.d.ts +0 -41
  549. package/dist/ui/keys-overlay-v2.js +0 -248
  550. package/dist/ui/mascot-overlay-v2.d.ts +0 -41
  551. package/dist/ui/mascot-overlay-v2.js +0 -138
  552. package/dist/ui/mascot-overlay.d.ts +0 -21
  553. package/dist/ui/mascot-overlay.js +0 -146
  554. package/dist/ui/model-overlay-v2.d.ts +0 -49
  555. package/dist/ui/model-overlay-v2.js +0 -118
  556. package/dist/ui/model-overlay.d.ts +0 -27
  557. package/dist/ui/model-overlay.js +0 -221
  558. package/dist/ui/model-warning-overlay.d.ts +0 -30
  559. package/dist/ui/model-warning-overlay.js +0 -169
  560. package/dist/ui/new-overlay.d.ts +0 -34
  561. package/dist/ui/new-overlay.js +0 -604
  562. package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
  563. package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
  564. package/dist/ui/overlay/overlay-types.d.ts +0 -128
  565. package/dist/ui/overlay/overlay-types.js +0 -22
  566. package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
  567. package/dist/ui/overlays/help-overlay-v2.js +0 -198
  568. package/dist/ui/overlays/index.d.ts +0 -11
  569. package/dist/ui/overlays/index.js +0 -11
  570. package/dist/ui/permission-overlay-v2.d.ts +0 -36
  571. package/dist/ui/permission-overlay-v2.js +0 -380
  572. package/dist/ui/projects-overlay.d.ts +0 -19
  573. package/dist/ui/projects-overlay.js +0 -484
  574. package/dist/ui/theme-overlay-v2.d.ts +0 -42
  575. package/dist/ui/theme-overlay-v2.js +0 -135
  576. package/dist/ui/theme-overlay.d.ts +0 -24
  577. package/dist/ui/theme-overlay.js +0 -127
  578. package/dist/ui/tools-overlay-v2.d.ts +0 -47
  579. package/dist/ui/tools-overlay-v2.js +0 -218
  580. package/dist/ui/tools-overlay.d.ts +0 -34
  581. package/dist/ui/tools-overlay.js +0 -230
  582. package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
  583. package/dist/ui/tutorial-overlay-v2.js +0 -1035
  584. package/dist/ui/tutorial-overlay.d.ts +0 -11
  585. package/dist/ui/tutorial-overlay.js +0 -1034
  586. package/dist/ui/workflow-overlay.d.ts +0 -22
  587. package/dist/ui/workflow-overlay.js +0 -636
@@ -0,0 +1,201 @@
1
+ /**
2
+ * TeamAgent - Wrapper for persistent team agents
3
+ *
4
+ * Each team agent has:
5
+ * - Unique identity (id, name, mascot)
6
+ * - Isolated conversation history
7
+ * - Role-specific system prompt additions
8
+ * - Optional tool filtering
9
+ */
10
+ import type { Agent, AgentConfig, ContextManager } from '@compilr-dev/sdk';
11
+ import type { TeamAgentConfig, SerializedTeamAgent, MascotExpression, AgentRole } from './types.js';
12
+ import type { ModelTier } from '../models/index.js';
13
+ import type { ProviderType } from '../models/provider-types.js';
14
+ import type { SharedContextManager } from './shared-context.js';
15
+ import type { CustomAgentDefinition } from './custom-agents.js';
16
+ /**
17
+ * TeamAgent wraps an Agent instance with team-specific metadata
18
+ */
19
+ export declare class TeamAgent {
20
+ /**
21
+ * Unique identifier (e.g., 'pm', 'arch', 'qa')
22
+ */
23
+ readonly id: string;
24
+ /**
25
+ * Display name shown in UI
26
+ */
27
+ readonly displayName: string;
28
+ /**
29
+ * Mascot expression for visual differentiation
30
+ */
31
+ readonly mascot: MascotExpression;
32
+ /**
33
+ * Role type
34
+ */
35
+ readonly role: AgentRole;
36
+ /**
37
+ * Optional description
38
+ */
39
+ readonly description?: string;
40
+ /**
41
+ * System prompt addition specific to this agent
42
+ */
43
+ readonly systemPromptAddition?: string;
44
+ /**
45
+ * Use minimal system prompt - skip all modules
46
+ */
47
+ readonly useMinimalSystemPrompt?: boolean;
48
+ /**
49
+ * Skip all tool registration - agent has no tools
50
+ */
51
+ readonly noTools?: boolean;
52
+ /**
53
+ * Tool filter (tool names this agent can use)
54
+ */
55
+ readonly toolFilter?: string[];
56
+ /**
57
+ * Tool profile name (for display)
58
+ */
59
+ readonly toolProfile?: TeamAgentConfig['toolProfile'];
60
+ /**
61
+ * Enabled skills (empty = all skills)
62
+ */
63
+ readonly enabledSkills?: string[];
64
+ /**
65
+ * Auto-approve handoffs from this agent without user confirmation
66
+ */
67
+ readonly autoApproveHandoff?: boolean;
68
+ /**
69
+ * Model tier (fast/balanced/powerful)
70
+ * Determines which model to use based on provider
71
+ */
72
+ private _modelTier?;
73
+ /**
74
+ * The underlying agent instance
75
+ */
76
+ private _agent;
77
+ /**
78
+ * Agent configuration for lazy initialization
79
+ */
80
+ private readonly agentConfig;
81
+ /**
82
+ * Stored agent state (for persistence before agent is created)
83
+ */
84
+ private storedState?;
85
+ /**
86
+ * Token usage tracking
87
+ */
88
+ private _tokenUsage;
89
+ /**
90
+ * Last activity timestamp
91
+ */
92
+ private _lastActivity;
93
+ constructor(config: TeamAgentConfig);
94
+ /**
95
+ * Get the underlying agent instance
96
+ */
97
+ get agent(): Agent | null;
98
+ /**
99
+ * Check if agent is initialized
100
+ */
101
+ get isInitialized(): boolean;
102
+ /**
103
+ * Get token usage
104
+ */
105
+ get tokenUsage(): {
106
+ input: number;
107
+ output: number;
108
+ };
109
+ /**
110
+ * Get last activity timestamp
111
+ */
112
+ get lastActivity(): Date;
113
+ /**
114
+ * Get model tier
115
+ */
116
+ get modelTier(): ModelTier | undefined;
117
+ /**
118
+ * Change the model tier
119
+ * This preserves conversation history but strips thinking blocks
120
+ * (which contain provider-specific signatures that don't transfer).
121
+ *
122
+ * @param newTier - The new model tier to use
123
+ */
124
+ setModelTier(newTier: ModelTier): void;
125
+ /**
126
+ * Initialize the agent with the given factory
127
+ * This allows the team to control agent creation
128
+ *
129
+ * @param agentFactory Factory function to create the agent
130
+ * @param sharedContext Optional shared context to inject into system prompt
131
+ */
132
+ initialize(agentFactory: (config: Partial<AgentConfig>, systemPromptAddition?: string, useMinimalSystemPrompt?: boolean, noTools?: boolean, toolFilter?: string[], modelTier?: ModelTier) => Promise<Agent>, sharedContext?: SharedContextManager): Promise<void>;
133
+ /**
134
+ * Set the agent instance directly
135
+ * Used for the default agent when an agent is created before the team
136
+ */
137
+ setAgent(agent: Agent): void;
138
+ /**
139
+ * Update token usage after a turn
140
+ */
141
+ updateTokenUsage(input: number, output: number): void;
142
+ /**
143
+ * Reset token usage (e.g., after compaction)
144
+ */
145
+ resetTokenUsage(): void;
146
+ /**
147
+ * Clear conversation history (for /reset command)
148
+ * Clears both the underlying agent and stored state
149
+ */
150
+ clearHistory(): void;
151
+ /**
152
+ * Get context manager from the agent (if available)
153
+ */
154
+ getContextManager(): ContextManager | undefined;
155
+ /**
156
+ * Get context utilization percentage
157
+ */
158
+ getContextUtilization(): number;
159
+ /**
160
+ * Get the max context window for this agent's model.
161
+ * Resolves: modelTier → modelId → contextWindow from MODEL_REGISTRY.
162
+ */
163
+ getMaxContextTokens(provider: ProviderType): number;
164
+ /**
165
+ * Get context stats (works even when agent is not initialized)
166
+ * Returns data from either the live agent or stored state.
167
+ * Includes maxTokens for per-agent context window display.
168
+ */
169
+ getContextStats(provider?: ProviderType): {
170
+ messageCount: number;
171
+ estimatedTokens: number;
172
+ maxTokens: number;
173
+ };
174
+ /**
175
+ * Serialize the team agent for persistence
176
+ */
177
+ serialize(): SerializedTeamAgent;
178
+ /**
179
+ * Create a TeamAgent from serialized state
180
+ */
181
+ static fromSerialized(data: SerializedTeamAgent): TeamAgent;
182
+ /**
183
+ * Create a TeamAgent from a predefined role
184
+ * @param role - The predefined role
185
+ * @param id - Optional custom ID (defaults to role name)
186
+ * @param modelTier - Optional model tier override (defaults to role's default tier)
187
+ */
188
+ static fromRole(role: AgentRole, id?: string, modelTier?: ModelTier): TeamAgent;
189
+ /**
190
+ * Create a TeamAgent from a custom agent definition
191
+ */
192
+ static fromCustomDefinition(def: CustomAgentDefinition): TeamAgent;
193
+ /**
194
+ * Get a formatted label for display (e.g., "[◈_◈] $arch")
195
+ */
196
+ getLabel(): string;
197
+ /**
198
+ * Get a full label with display name (e.g., "[◈_◈] $arch (Solution Architect)")
199
+ */
200
+ getFullLabel(): string;
201
+ }
@@ -0,0 +1,488 @@
1
+ /**
2
+ * TeamAgent - Wrapper for persistent team agents
3
+ *
4
+ * Each team agent has:
5
+ * - Unique identity (id, name, mascot)
6
+ * - Isolated conversation history
7
+ * - Role-specific system prompt additions
8
+ * - Optional tool filtering
9
+ */
10
+ import { ROLE_METADATA } from './types.js';
11
+ import { getModelForTier, getModelContextWindow } from '../models/index.js';
12
+ import { generateCustomAgentSystemPrompt, getCustomAgentToolFilter } from './custom-agents.js';
13
+ import { estimateTokens } from '../utils/token-tracker.js';
14
+ import { getToolsForProfile, generateToolAwarenessPrompt, generateCoordinatorGuidance, generateSpecialistGuidance, } from './tool-config.js';
15
+ /**
16
+ * TeamAgent wraps an Agent instance with team-specific metadata
17
+ */
18
+ export class TeamAgent {
19
+ /**
20
+ * Unique identifier (e.g., 'pm', 'arch', 'qa')
21
+ */
22
+ id;
23
+ /**
24
+ * Display name shown in UI
25
+ */
26
+ displayName;
27
+ /**
28
+ * Mascot expression for visual differentiation
29
+ */
30
+ mascot;
31
+ /**
32
+ * Role type
33
+ */
34
+ role;
35
+ /**
36
+ * Optional description
37
+ */
38
+ description;
39
+ /**
40
+ * System prompt addition specific to this agent
41
+ */
42
+ systemPromptAddition;
43
+ /**
44
+ * Use minimal system prompt - skip all modules
45
+ */
46
+ useMinimalSystemPrompt;
47
+ /**
48
+ * Skip all tool registration - agent has no tools
49
+ */
50
+ noTools;
51
+ /**
52
+ * Tool filter (tool names this agent can use)
53
+ */
54
+ toolFilter;
55
+ /**
56
+ * Tool profile name (for display)
57
+ */
58
+ toolProfile;
59
+ /**
60
+ * Enabled skills (empty = all skills)
61
+ */
62
+ enabledSkills;
63
+ /**
64
+ * Auto-approve handoffs from this agent without user confirmation
65
+ */
66
+ autoApproveHandoff;
67
+ /**
68
+ * Model tier (fast/balanced/powerful)
69
+ * Determines which model to use based on provider
70
+ */
71
+ _modelTier;
72
+ /**
73
+ * The underlying agent instance
74
+ */
75
+ _agent = null;
76
+ /**
77
+ * Agent configuration for lazy initialization
78
+ */
79
+ agentConfig;
80
+ /**
81
+ * Stored agent state (for persistence before agent is created)
82
+ */
83
+ storedState;
84
+ /**
85
+ * Token usage tracking
86
+ */
87
+ _tokenUsage = {
88
+ input: 0,
89
+ output: 0,
90
+ };
91
+ /**
92
+ * Last activity timestamp
93
+ */
94
+ _lastActivity = new Date();
95
+ constructor(config) {
96
+ this.id = config.id;
97
+ this.displayName = config.displayName;
98
+ this.mascot = config.mascot;
99
+ this.role = config.role;
100
+ this.description = config.description;
101
+ this.systemPromptAddition = config.systemPromptAddition;
102
+ this.useMinimalSystemPrompt = config.useMinimalSystemPrompt;
103
+ this.noTools = config.noTools;
104
+ this.toolFilter = config.toolFilter;
105
+ this.toolProfile = config.toolProfile;
106
+ this.enabledSkills = config.enabledSkills;
107
+ this.autoApproveHandoff = config.autoApproveHandoff;
108
+ this._modelTier = config.modelTier;
109
+ this.agentConfig = config.agentConfig ?? {};
110
+ }
111
+ /**
112
+ * Get the underlying agent instance
113
+ */
114
+ get agent() {
115
+ return this._agent;
116
+ }
117
+ /**
118
+ * Check if agent is initialized
119
+ */
120
+ get isInitialized() {
121
+ return this._agent !== null;
122
+ }
123
+ /**
124
+ * Get token usage
125
+ */
126
+ get tokenUsage() {
127
+ return { ...this._tokenUsage };
128
+ }
129
+ /**
130
+ * Get last activity timestamp
131
+ */
132
+ get lastActivity() {
133
+ return this._lastActivity;
134
+ }
135
+ /**
136
+ * Get model tier
137
+ */
138
+ get modelTier() {
139
+ return this._modelTier;
140
+ }
141
+ /**
142
+ * Change the model tier
143
+ * This preserves conversation history but strips thinking blocks
144
+ * (which contain provider-specific signatures that don't transfer).
145
+ *
146
+ * @param newTier - The new model tier to use
147
+ */
148
+ setModelTier(newTier) {
149
+ if (newTier === this._modelTier) {
150
+ return; // No change needed
151
+ }
152
+ // Store current state if agent is initialized
153
+ if (this._agent) {
154
+ const state = this._agent.serialize();
155
+ // Strip thinking blocks from messages - they contain provider-specific
156
+ // signatures (e.g., Gemini's thought_signature) that don't transfer
157
+ // between sessions or model changes
158
+ state.messages = state.messages.map((msg) => {
159
+ // Content can be string or ContentBlock[]
160
+ if (typeof msg.content === 'string') {
161
+ return msg;
162
+ }
163
+ return {
164
+ ...msg,
165
+ content: msg.content.filter((block) => block.type !== 'thinking'),
166
+ };
167
+ });
168
+ this.storedState = state;
169
+ this._agent = null; // Clear agent so it will be reinitialized
170
+ }
171
+ this._modelTier = newTier;
172
+ }
173
+ /**
174
+ * Initialize the agent with the given factory
175
+ * This allows the team to control agent creation
176
+ *
177
+ * @param agentFactory Factory function to create the agent
178
+ * @param sharedContext Optional shared context to inject into system prompt
179
+ */
180
+ async initialize(agentFactory, sharedContext) {
181
+ if (this._agent) {
182
+ return; // Already initialized
183
+ }
184
+ // Build system prompt addition with shared context
185
+ let finalSystemPromptAddition = this.systemPromptAddition ?? '';
186
+ // Inject shared context if provided (excluding roster — that goes via anchor for live updates)
187
+ if (sharedContext) {
188
+ const sharedContextBlock = sharedContext.format({ excludeRoster: true });
189
+ if (sharedContextBlock) {
190
+ // Prepend shared context to role-specific prompt
191
+ finalSystemPromptAddition = finalSystemPromptAddition
192
+ ? `${sharedContextBlock}\n\n${finalSystemPromptAddition}`
193
+ : sharedContextBlock;
194
+ }
195
+ }
196
+ this._agent = await agentFactory(this.agentConfig, finalSystemPromptAddition || undefined, this.useMinimalSystemPrompt, this.noTools, this.toolFilter, // Pass tool filter to factory
197
+ this._modelTier // Pass model tier to factory
198
+ );
199
+ // Set the team roster as an anchor (dynamically re-injected on every LLM call).
200
+ // This ensures roster updates (agent added/removed) are always visible.
201
+ if (sharedContext && sharedContext.hasTeamRoster() && this._agent.hasAnchors()) {
202
+ this._agent.addAnchor({
203
+ id: 'team-roster',
204
+ content: sharedContext.formatTeamRoster(),
205
+ priority: 'info',
206
+ scope: 'session',
207
+ });
208
+ }
209
+ // Restore state if we have stored state
210
+ if (this.storedState && this.storedState.messages.length > 0) {
211
+ // Strip thinking blocks - they contain provider-specific signatures
212
+ // (e.g., Gemini's thought_signature) that don't transfer between sessions
213
+ const messagesWithoutThinking = this.storedState.messages.map((msg) => {
214
+ if (typeof msg.content === 'string') {
215
+ return msg;
216
+ }
217
+ return {
218
+ ...msg,
219
+ content: msg.content.filter((block) => block.type !== 'thinking'),
220
+ };
221
+ });
222
+ await this._agent.setHistory(messagesWithoutThinking, {
223
+ turnCount: this.storedState.turnCount,
224
+ });
225
+ }
226
+ }
227
+ /**
228
+ * Set the agent instance directly
229
+ * Used for the default agent when an agent is created before the team
230
+ */
231
+ setAgent(agent) {
232
+ this._agent = agent;
233
+ }
234
+ /**
235
+ * Update token usage after a turn
236
+ */
237
+ updateTokenUsage(input, output) {
238
+ this._tokenUsage.input += input;
239
+ this._tokenUsage.output += output;
240
+ this._lastActivity = new Date();
241
+ }
242
+ /**
243
+ * Reset token usage (e.g., after compaction)
244
+ */
245
+ resetTokenUsage() {
246
+ this._tokenUsage = { input: 0, output: 0 };
247
+ }
248
+ /**
249
+ * Clear conversation history (for /reset command)
250
+ * Clears both the underlying agent and stored state
251
+ */
252
+ clearHistory() {
253
+ // Clear underlying agent if initialized
254
+ if (this._agent) {
255
+ this._agent.clearHistory();
256
+ }
257
+ // Clear stored state messages
258
+ if (this.storedState) {
259
+ this.storedState.messages = [];
260
+ this.storedState.todos = [];
261
+ this.storedState.turnCount = 0;
262
+ }
263
+ // Reset token usage
264
+ this._tokenUsage = { input: 0, output: 0 };
265
+ this._lastActivity = new Date();
266
+ }
267
+ /**
268
+ * Get context manager from the agent (if available)
269
+ */
270
+ getContextManager() {
271
+ return this._agent?.getContextManager();
272
+ }
273
+ /**
274
+ * Get context utilization percentage
275
+ */
276
+ getContextUtilization() {
277
+ const cm = this.getContextManager();
278
+ if (!cm)
279
+ return 0;
280
+ const messageCount = this._agent?.serialize().messages.length ?? 0;
281
+ const stats = cm.getStats(messageCount);
282
+ return Math.round((stats.currentTokens / stats.maxTokens) * 100);
283
+ }
284
+ /**
285
+ * Get the max context window for this agent's model.
286
+ * Resolves: modelTier → modelId → contextWindow from MODEL_REGISTRY.
287
+ */
288
+ getMaxContextTokens(provider) {
289
+ // If agent is initialized, get from ContextManager
290
+ if (this._agent) {
291
+ const cm = this.getContextManager();
292
+ if (cm) {
293
+ const state = this._agent.serialize();
294
+ const stats = cm.getStats(state.messages.length);
295
+ return stats.maxTokens;
296
+ }
297
+ }
298
+ // Fall back to model-based lookup
299
+ if (this._modelTier) {
300
+ const modelId = getModelForTier(provider, this._modelTier);
301
+ return getModelContextWindow(modelId, provider);
302
+ }
303
+ return getModelContextWindow('', provider); // provider fallback
304
+ }
305
+ /**
306
+ * Get context stats (works even when agent is not initialized)
307
+ * Returns data from either the live agent or stored state.
308
+ * Includes maxTokens for per-agent context window display.
309
+ */
310
+ getContextStats(provider) {
311
+ // Try live agent first — use ContextManager stats (includes overhead)
312
+ if (this._agent) {
313
+ const cm = this.getContextManager();
314
+ if (cm) {
315
+ const state = this._agent.serialize();
316
+ const stats = cm.getStats(state.messages.length);
317
+ return {
318
+ messageCount: state.messages.length,
319
+ estimatedTokens: stats.currentTokens,
320
+ maxTokens: stats.maxTokens,
321
+ };
322
+ }
323
+ // Agent exists but no context manager — estimate
324
+ const state = this._agent.serialize();
325
+ const messagesStr = JSON.stringify(state.messages);
326
+ return {
327
+ messageCount: state.messages.length,
328
+ estimatedTokens: estimateTokens(messagesStr),
329
+ maxTokens: provider ? this.getMaxContextTokens(provider) : 200000,
330
+ };
331
+ }
332
+ // Fall back to stored state
333
+ if (this.storedState && this.storedState.messages.length > 0) {
334
+ const messagesStr = JSON.stringify(this.storedState.messages);
335
+ return {
336
+ messageCount: this.storedState.messages.length,
337
+ estimatedTokens: estimateTokens(messagesStr),
338
+ maxTokens: provider ? this.getMaxContextTokens(provider) : 200000,
339
+ };
340
+ }
341
+ return {
342
+ messageCount: 0,
343
+ estimatedTokens: 0,
344
+ maxTokens: provider ? this.getMaxContextTokens(provider) : 200000,
345
+ };
346
+ }
347
+ /**
348
+ * Serialize the team agent for persistence
349
+ */
350
+ serialize() {
351
+ const now = new Date().toISOString();
352
+ const agentState = this._agent?.serialize() ?? this.storedState ?? {
353
+ sessionId: '',
354
+ messages: [],
355
+ systemPrompt: '',
356
+ todos: [],
357
+ currentIteration: 0,
358
+ turnCount: 0,
359
+ totalTokensUsed: 0,
360
+ createdAt: now,
361
+ updatedAt: now,
362
+ version: 1,
363
+ };
364
+ return {
365
+ id: this.id,
366
+ displayName: this.displayName,
367
+ mascot: this.mascot,
368
+ role: this.role,
369
+ description: this.description,
370
+ systemPromptAddition: this.systemPromptAddition,
371
+ useMinimalSystemPrompt: this.useMinimalSystemPrompt,
372
+ noTools: this.noTools,
373
+ toolFilter: this.toolFilter,
374
+ toolProfile: this.toolProfile,
375
+ enabledSkills: this.enabledSkills,
376
+ modelTier: this.modelTier,
377
+ autoApproveHandoff: this.autoApproveHandoff,
378
+ agentState,
379
+ };
380
+ }
381
+ /**
382
+ * Create a TeamAgent from serialized state
383
+ */
384
+ static fromSerialized(data) {
385
+ // Refresh tool filter from profile if available (ensures new tools are picked up)
386
+ // This handles the case where tools were added after the agent was created
387
+ const toolFilter = data.toolProfile
388
+ ? getToolsForProfile(data.toolProfile)
389
+ : data.toolFilter;
390
+ const agent = new TeamAgent({
391
+ id: data.id,
392
+ displayName: data.displayName,
393
+ mascot: data.mascot,
394
+ role: data.role,
395
+ description: data.description,
396
+ systemPromptAddition: data.systemPromptAddition,
397
+ useMinimalSystemPrompt: data.useMinimalSystemPrompt,
398
+ noTools: data.noTools,
399
+ toolFilter,
400
+ toolProfile: data.toolProfile,
401
+ enabledSkills: data.enabledSkills,
402
+ modelTier: data.modelTier,
403
+ autoApproveHandoff: data.autoApproveHandoff,
404
+ });
405
+ // Store the state for restoration when agent is initialized
406
+ agent.storedState = data.agentState;
407
+ return agent;
408
+ }
409
+ /**
410
+ * Create a TeamAgent from a predefined role
411
+ * @param role - The predefined role
412
+ * @param id - Optional custom ID (defaults to role name)
413
+ * @param modelTier - Optional model tier override (defaults to role's default tier)
414
+ */
415
+ static fromRole(role, id, modelTier) {
416
+ const metadata = ROLE_METADATA[role];
417
+ // Get tool filter from default profile (if specified)
418
+ const profile = metadata.defaultToolProfile;
419
+ const toolFilter = profile ? getToolsForProfile(profile) : undefined;
420
+ // Build system prompt with tool awareness (for non-full profiles)
421
+ let systemPromptAddition = metadata.defaultSystemPromptAddition ?? '';
422
+ if (profile && profile !== 'full') {
423
+ const toolAwareness = generateToolAwarenessPrompt({ profile });
424
+ systemPromptAddition = systemPromptAddition
425
+ ? `${systemPromptAddition}\n\n${toolAwareness}`
426
+ : toolAwareness;
427
+ }
428
+ // Add delegation guidance based on role
429
+ if (role === 'default') {
430
+ // Coordinator gets delegation tool guidance
431
+ const coordinatorGuidance = generateCoordinatorGuidance();
432
+ systemPromptAddition = systemPromptAddition
433
+ ? `${systemPromptAddition}\n\n${coordinatorGuidance}`
434
+ : coordinatorGuidance;
435
+ }
436
+ else {
437
+ // Specialists get collaboration guidance
438
+ const specialistGuidance = generateSpecialistGuidance(role);
439
+ systemPromptAddition = systemPromptAddition
440
+ ? `${systemPromptAddition}\n\n${specialistGuidance}`
441
+ : specialistGuidance;
442
+ }
443
+ return new TeamAgent({
444
+ id: id ?? role,
445
+ displayName: metadata.displayName,
446
+ mascot: metadata.mascot,
447
+ role,
448
+ description: metadata.description,
449
+ systemPromptAddition: systemPromptAddition || undefined,
450
+ useMinimalSystemPrompt: metadata.useMinimalSystemPrompt,
451
+ noTools: metadata.noTools,
452
+ toolFilter,
453
+ toolProfile: profile,
454
+ modelTier: modelTier ?? metadata.defaultModelTier,
455
+ });
456
+ }
457
+ /**
458
+ * Create a TeamAgent from a custom agent definition
459
+ */
460
+ static fromCustomDefinition(def) {
461
+ // Get tool filter from custom agent config
462
+ const toolFilter = getCustomAgentToolFilter(def);
463
+ return new TeamAgent({
464
+ id: def.id,
465
+ displayName: def.displayName,
466
+ mascot: def.mascot,
467
+ role: 'custom',
468
+ description: def.specialty,
469
+ systemPromptAddition: generateCustomAgentSystemPrompt(def),
470
+ toolFilter, // Pass tool filter from custom agent config
471
+ toolProfile: def.toolConfig?.profile, // Store profile for display
472
+ enabledSkills: def.enabledSkills, // Store skills for display
473
+ modelTier: def.modelTier, // Store model tier
474
+ });
475
+ }
476
+ /**
477
+ * Get a formatted label for display (e.g., "[◈_◈] $arch")
478
+ */
479
+ getLabel() {
480
+ return `${this.mascot} $${this.id}`;
481
+ }
482
+ /**
483
+ * Get a full label with display name (e.g., "[◈_◈] $arch (Solution Architect)")
484
+ */
485
+ getFullLabel() {
486
+ return `${this.mascot} $${this.id} (${this.displayName})`;
487
+ }
488
+ }