@compilr-dev/cli 0.5.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 (591) hide show
  1. package/README.md +236 -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 +61 -4
  7. package/dist/agent.js +241 -245
  8. package/dist/anchors/index.d.ts +1 -1
  9. package/dist/anchors/index.js +1 -1
  10. package/dist/anchors/project-anchors.d.ts +2 -2
  11. package/dist/anchors/project-anchors.js +1 -1
  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-v2/handlers/auth.d.ts +10 -0
  23. package/dist/commands-v2/handlers/auth.js +118 -0
  24. package/dist/commands-v2/handlers/background.d.ts +14 -0
  25. package/dist/commands-v2/handlers/background.js +276 -0
  26. package/dist/commands-v2/handlers/context.js +266 -81
  27. package/dist/commands-v2/handlers/core.d.ts +1 -0
  28. package/dist/commands-v2/handlers/core.js +133 -8
  29. package/dist/commands-v2/handlers/debug.js +18 -0
  30. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  31. package/dist/commands-v2/handlers/delegations.js +29 -0
  32. package/dist/commands-v2/handlers/files.d.ts +8 -0
  33. package/dist/commands-v2/handlers/files.js +162 -0
  34. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  35. package/dist/commands-v2/handlers/filter.js +130 -0
  36. package/dist/commands-v2/handlers/games.d.ts +7 -0
  37. package/dist/commands-v2/handlers/games.js +57 -0
  38. package/dist/commands-v2/handlers/index.d.ts +13 -0
  39. package/dist/commands-v2/handlers/index.js +39 -0
  40. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  41. package/dist/commands-v2/handlers/mcp.js +39 -0
  42. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  43. package/dist/commands-v2/handlers/notifications.js +34 -0
  44. package/dist/commands-v2/handlers/project.js +244 -23
  45. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  46. package/dist/commands-v2/handlers/reset.js +118 -0
  47. package/dist/commands-v2/handlers/session.d.ts +161 -0
  48. package/dist/commands-v2/handlers/session.js +805 -0
  49. package/dist/commands-v2/handlers/settings.d.ts +2 -0
  50. package/dist/commands-v2/handlers/settings.js +217 -35
  51. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  52. package/dist/commands-v2/handlers/tasks.js +36 -0
  53. package/dist/commands-v2/handlers/team.d.ts +9 -0
  54. package/dist/commands-v2/handlers/team.js +549 -0
  55. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  56. package/dist/commands-v2/handlers/terminals.js +34 -0
  57. package/dist/commands-v2/index.d.ts +3 -2
  58. package/dist/commands-v2/index.js +4 -1
  59. package/dist/commands-v2/registry.d.ts +15 -0
  60. package/dist/commands-v2/registry.js +34 -0
  61. package/dist/commands-v2/types.d.ts +81 -3
  62. package/dist/commands.js +13 -0
  63. package/dist/compilr-diff-companion.vsix +0 -0
  64. package/dist/db/index.js +98 -4
  65. package/dist/db/repositories/document-repository.d.ts +2 -0
  66. package/dist/db/repositories/document-repository.js +5 -1
  67. package/dist/db/repositories/index.d.ts +2 -0
  68. package/dist/db/repositories/index.js +1 -0
  69. package/dist/db/repositories/plan-repository.d.ts +101 -0
  70. package/dist/db/repositories/plan-repository.js +275 -0
  71. package/dist/db/repositories/project-repository.d.ts +6 -0
  72. package/dist/db/repositories/project-repository.js +41 -0
  73. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  74. package/dist/db/repositories/work-item-repository.js +69 -4
  75. package/dist/db/schema.d.ts +40 -3
  76. package/dist/db/schema.js +66 -3
  77. package/dist/episodes/index.d.ts +20 -0
  78. package/dist/episodes/index.js +27 -0
  79. package/dist/episodes/recorder.d.ts +51 -0
  80. package/dist/episodes/recorder.js +195 -0
  81. package/dist/episodes/significant-work.d.ts +21 -0
  82. package/dist/episodes/significant-work.js +56 -0
  83. package/dist/episodes/store.d.ts +38 -0
  84. package/dist/episodes/store.js +199 -0
  85. package/dist/episodes/types.d.ts +35 -0
  86. package/dist/episodes/types.js +6 -0
  87. package/dist/episodes/work-at-risk.d.ts +12 -0
  88. package/dist/episodes/work-at-risk.js +38 -0
  89. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  90. package/dist/episodes/work-summary-anchor.js +73 -0
  91. package/dist/games/coins.d.ts +66 -0
  92. package/dist/games/coins.js +165 -0
  93. package/dist/games/game-base.d.ts +84 -0
  94. package/dist/games/game-base.js +204 -0
  95. package/dist/games/index.d.ts +16 -0
  96. package/dist/games/index.js +49 -0
  97. package/dist/games/scores.d.ts +69 -0
  98. package/dist/games/scores.js +191 -0
  99. package/dist/games/tetris/board.d.ts +59 -0
  100. package/dist/games/tetris/board.js +170 -0
  101. package/dist/games/tetris/index.d.ts +109 -0
  102. package/dist/games/tetris/index.js +610 -0
  103. package/dist/games/tetris/pieces.d.ts +44 -0
  104. package/dist/games/tetris/pieces.js +271 -0
  105. package/dist/games/tetris/renderer.d.ts +26 -0
  106. package/dist/games/tetris/renderer.js +77 -0
  107. package/dist/guide/guide-content.d.ts +23 -0
  108. package/dist/guide/guide-content.js +196 -0
  109. package/dist/guide/index.d.ts +8 -0
  110. package/dist/guide/index.js +7 -0
  111. package/dist/guide/shared-content.d.ts +37 -0
  112. package/dist/guide/shared-content.js +1272 -0
  113. package/dist/guide/tutorial-helpers.d.ts +57 -0
  114. package/dist/guide/tutorial-helpers.js +147 -0
  115. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  116. package/dist/handlers/ask-user-handlers.js +104 -0
  117. package/dist/handlers/delegation-handlers.d.ts +34 -0
  118. package/dist/handlers/delegation-handlers.js +291 -0
  119. package/dist/handlers/permission-handler.d.ts +30 -0
  120. package/dist/handlers/permission-handler.js +205 -0
  121. package/dist/index.d.ts +11 -1
  122. package/dist/index.js +448 -271
  123. package/dist/input-handlers/memory-handler.d.ts +1 -1
  124. package/dist/input-handlers/memory-handler.js +2 -1
  125. package/dist/models/index.d.ts +10 -0
  126. package/dist/models/index.js +12 -0
  127. package/dist/models/model-registry.d.ts +38 -0
  128. package/dist/models/model-registry.js +69 -0
  129. package/dist/models/model-tiers.d.ts +28 -0
  130. package/dist/models/model-tiers.js +71 -0
  131. package/dist/models/model-validation.d.ts +25 -0
  132. package/dist/models/model-validation.js +291 -0
  133. package/dist/models/ollama-models.d.ts +73 -0
  134. package/dist/models/ollama-models.js +178 -0
  135. package/dist/models/provider-types.d.ts +6 -0
  136. package/dist/models/provider-types.js +1 -0
  137. package/dist/models/providers.d.ts +35 -0
  138. package/dist/models/providers.js +58 -0
  139. package/dist/models/types.d.ts +4 -0
  140. package/dist/models/types.js +4 -0
  141. package/dist/multi-agent/activity.d.ts +21 -0
  142. package/dist/multi-agent/activity.js +34 -0
  143. package/dist/multi-agent/agent-selection.d.ts +55 -0
  144. package/dist/multi-agent/agent-selection.js +90 -0
  145. package/dist/multi-agent/artifacts.d.ts +197 -0
  146. package/dist/multi-agent/artifacts.js +379 -0
  147. package/dist/multi-agent/checkpointer.d.ts +138 -0
  148. package/dist/multi-agent/checkpointer.js +471 -0
  149. package/dist/multi-agent/collision-utils.d.ts +16 -0
  150. package/dist/multi-agent/collision-utils.js +28 -0
  151. package/dist/multi-agent/context-resolver.d.ts +97 -0
  152. package/dist/multi-agent/context-resolver.js +316 -0
  153. package/dist/multi-agent/custom-agents.d.ts +83 -0
  154. package/dist/multi-agent/custom-agents.js +227 -0
  155. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  156. package/dist/multi-agent/delegation-tracker.js +243 -0
  157. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  158. package/dist/multi-agent/file-lock-hook.js +97 -0
  159. package/dist/multi-agent/file-locks.d.ts +58 -0
  160. package/dist/multi-agent/file-locks.js +194 -0
  161. package/dist/multi-agent/index.d.ts +24 -0
  162. package/dist/multi-agent/index.js +30 -0
  163. package/dist/multi-agent/mention-parser.d.ts +64 -0
  164. package/dist/multi-agent/mention-parser.js +146 -0
  165. package/dist/multi-agent/notification-manager.d.ts +84 -0
  166. package/dist/multi-agent/notification-manager.js +224 -0
  167. package/dist/multi-agent/pending-requests.d.ts +122 -0
  168. package/dist/multi-agent/pending-requests.js +155 -0
  169. package/dist/multi-agent/session-registry.d.ts +139 -0
  170. package/dist/multi-agent/session-registry.js +514 -0
  171. package/dist/multi-agent/shared-context.d.ts +293 -0
  172. package/dist/multi-agent/shared-context.js +671 -0
  173. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  174. package/dist/multi-agent/skill-requirements.js +178 -0
  175. package/dist/multi-agent/task-assignment.d.ts +69 -0
  176. package/dist/multi-agent/task-assignment.js +123 -0
  177. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  178. package/dist/multi-agent/task-suggestion.js +72 -0
  179. package/dist/multi-agent/team-agent.d.ts +201 -0
  180. package/dist/multi-agent/team-agent.js +488 -0
  181. package/dist/multi-agent/team.d.ts +286 -0
  182. package/dist/multi-agent/team.js +610 -0
  183. package/dist/multi-agent/tool-config.d.ts +110 -0
  184. package/dist/multi-agent/tool-config.js +661 -0
  185. package/dist/multi-agent/types.d.ts +211 -0
  186. package/dist/multi-agent/types.js +617 -0
  187. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  188. package/dist/prompts/plan-mode-prompt.js +95 -0
  189. package/dist/repl-helpers.js +3 -2
  190. package/dist/repl-v2.d.ts +401 -2
  191. package/dist/repl-v2.js +2577 -65
  192. package/dist/session/index.d.ts +6 -0
  193. package/dist/session/index.js +6 -0
  194. package/dist/session/project-session-manager.d.ts +158 -0
  195. package/dist/session/project-session-manager.js +650 -0
  196. package/dist/settings/index.d.ts +133 -13
  197. package/dist/settings/index.js +329 -24
  198. package/dist/settings/mcp-config.d.ts +76 -0
  199. package/dist/settings/mcp-config.js +143 -0
  200. package/dist/settings/paths.d.ts +4 -0
  201. package/dist/settings/paths.js +6 -0
  202. package/dist/shared-handlers.d.ts +62 -0
  203. package/dist/shared-handlers.js +48 -0
  204. package/dist/system-prompt/builder.d.ts +5 -0
  205. package/dist/system-prompt/builder.js +4 -0
  206. package/dist/system-prompt/index.d.ts +18 -0
  207. package/dist/system-prompt/index.js +18 -0
  208. package/dist/system-prompt/modules.d.ts +5 -0
  209. package/dist/system-prompt/modules.js +4 -0
  210. package/dist/tabbed-menu.js +2 -1
  211. package/dist/templates/compilr-md-import.d.ts +16 -0
  212. package/dist/templates/compilr-md-import.js +241 -0
  213. package/dist/templates/compilr-md.js +10 -61
  214. package/dist/templates/config-json.d.ts +1 -25
  215. package/dist/templates/index.d.ts +2 -0
  216. package/dist/templates/index.js +34 -73
  217. package/dist/tool-names.d.ts +108 -0
  218. package/dist/tool-names.js +227 -0
  219. package/dist/tools/anchor-tools.d.ts +4 -4
  220. package/dist/tools/anchor-tools.js +1 -1
  221. package/dist/tools/artifact-tools.d.ts +42 -0
  222. package/dist/tools/artifact-tools.js +328 -0
  223. package/dist/tools/ask-user-simple.d.ts +1 -1
  224. package/dist/tools/ask-user-simple.js +2 -1
  225. package/dist/tools/ask-user.d.ts +1 -1
  226. package/dist/tools/ask-user.js +2 -1
  227. package/dist/tools/backlog-wrappers.d.ts +5 -3
  228. package/dist/tools/backlog-wrappers.js +16 -1
  229. package/dist/tools/backlog.d.ts +2 -2
  230. package/dist/tools/backlog.js +1 -1
  231. package/dist/tools/db-tools.d.ts +8 -61
  232. package/dist/tools/db-tools.js +8 -13
  233. package/dist/tools/delegate-background.d.ts +27 -0
  234. package/dist/tools/delegate-background.js +115 -0
  235. package/dist/tools/delegate.d.ts +22 -0
  236. package/dist/tools/delegate.js +97 -0
  237. package/dist/tools/delegation-status.d.ts +16 -0
  238. package/dist/tools/delegation-status.js +128 -0
  239. package/dist/tools/document-db.d.ts +5 -5
  240. package/dist/tools/document-db.js +1 -1
  241. package/dist/tools/guide-tool.d.ts +12 -0
  242. package/dist/tools/guide-tool.js +59 -0
  243. package/dist/tools/handoff.d.ts +25 -0
  244. package/dist/tools/handoff.js +99 -0
  245. package/dist/tools/meta-tools.d.ts +26 -0
  246. package/dist/tools/meta-tools.js +47 -0
  247. package/dist/tools/plan-tools.d.ts +54 -0
  248. package/dist/tools/plan-tools.js +338 -0
  249. package/dist/tools/platform-adapter.d.ts +29 -0
  250. package/dist/tools/platform-adapter.js +394 -0
  251. package/dist/tools/project-db.d.ts +5 -73
  252. package/dist/tools/project-db.js +5 -336
  253. package/dist/tools/recall-work-tool.d.ts +18 -0
  254. package/dist/tools/recall-work-tool.js +82 -0
  255. package/dist/tools/workitem-db.d.ts +43 -11
  256. package/dist/tools/workitem-db.js +186 -5
  257. package/dist/tools.d.ts +67 -2
  258. package/dist/tools.js +237 -47
  259. package/dist/ui/autocomplete-controller.d.ts +42 -0
  260. package/dist/ui/autocomplete-controller.js +384 -0
  261. package/dist/ui/base/index.d.ts +1 -1
  262. package/dist/ui/base/index.js +1 -1
  263. package/dist/ui/base/overlay-base-v2.d.ts +10 -0
  264. package/dist/ui/base/overlay-base-v2.js +14 -0
  265. package/dist/ui/base/render-utils.d.ts +19 -0
  266. package/dist/ui/base/render-utils.js +25 -0
  267. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
  268. package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
  269. package/dist/ui/constants/labels.d.ts +14 -0
  270. package/dist/ui/constants/labels.js +51 -0
  271. package/dist/ui/conversation-store.d.ts +55 -0
  272. package/dist/ui/conversation-store.js +107 -0
  273. package/dist/ui/conversation.js +11 -13
  274. package/dist/ui/diff.d.ts +7 -1
  275. package/dist/ui/diff.js +85 -48
  276. package/dist/ui/ephemeral.js +3 -9
  277. package/dist/ui/file-autocomplete.d.ts +24 -0
  278. package/dist/ui/file-autocomplete.js +56 -0
  279. package/dist/ui/footer-renderer.d.ts +69 -0
  280. package/dist/ui/footer-renderer.js +431 -0
  281. package/dist/ui/footer.d.ts +74 -7
  282. package/dist/ui/footer.js +173 -16
  283. package/dist/ui/input-controller.d.ts +51 -0
  284. package/dist/ui/input-controller.js +176 -0
  285. package/dist/ui/input-prompt.d.ts +19 -0
  286. package/dist/ui/input-prompt.js +206 -14
  287. package/dist/ui/keyboard-handler.d.ts +57 -0
  288. package/dist/ui/keyboard-handler.js +557 -0
  289. package/dist/ui/live-region-facade.d.ts +42 -0
  290. package/dist/ui/live-region-facade.js +205 -0
  291. package/dist/ui/live-region.d.ts +0 -4
  292. package/dist/ui/live-region.js +6 -14
  293. package/dist/ui/mascot/renderer.d.ts +1 -1
  294. package/dist/ui/mascot/renderer.js +37 -2
  295. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  296. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  297. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  298. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  299. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  300. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  301. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  302. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  303. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  304. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  305. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  306. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  307. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  308. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  309. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  310. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  311. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  312. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  313. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  314. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  315. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  316. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  317. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  318. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  319. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  320. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  321. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  322. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  323. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  324. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  325. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  326. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  327. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  328. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  329. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  330. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  331. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  332. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  333. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  334. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  335. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  336. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  337. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  338. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  339. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  340. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  341. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  342. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  343. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  344. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  345. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  346. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  347. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  348. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  349. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  350. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  351. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  352. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  353. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  354. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  355. package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
  356. package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
  357. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  358. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  359. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  360. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  361. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
  362. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  363. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  364. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
  365. package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
  366. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  367. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  368. package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
  369. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
  370. package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
  371. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  372. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  373. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
  374. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
  375. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  376. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  377. package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
  378. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
  379. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
  380. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  381. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  382. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  383. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  384. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
  385. package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
  386. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  387. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  388. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  389. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  390. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
  391. package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
  392. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
  393. package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
  394. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  395. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  396. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  397. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  398. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  399. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  400. package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
  401. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  402. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  403. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  404. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  405. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  406. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  407. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
  408. package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
  409. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  410. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  411. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  412. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  413. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  414. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  415. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  416. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  417. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  418. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  419. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  420. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  421. package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
  422. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
  423. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
  424. package/dist/ui/overlay/impl/workflow-overlay-v2.js +5 -1
  425. package/dist/ui/overlay/index.d.ts +20 -1
  426. package/dist/ui/overlay/index.js +19 -0
  427. package/dist/ui/overlay/types.d.ts +5 -0
  428. package/dist/ui/overlay-manager.d.ts +43 -0
  429. package/dist/ui/overlay-manager.js +238 -0
  430. package/dist/ui/overlays.js +4 -16
  431. package/dist/ui/permission-overlay.js +6 -5
  432. package/dist/ui/status-bar-controller.d.ts +33 -0
  433. package/dist/ui/status-bar-controller.js +99 -0
  434. package/dist/ui/subagent-renderer.js +3 -19
  435. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  436. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  437. package/dist/ui/terminal-line-builders.d.ts +17 -0
  438. package/dist/ui/terminal-line-builders.js +42 -0
  439. package/dist/ui/terminal-render-item.d.ts +16 -0
  440. package/dist/ui/terminal-render-item.js +267 -0
  441. package/dist/ui/terminal-renderer.d.ts +7 -8
  442. package/dist/ui/terminal-renderer.js +7 -8
  443. package/dist/ui/terminal-types.d.ts +179 -0
  444. package/dist/ui/terminal-types.js +34 -0
  445. package/dist/ui/terminal-ui.d.ts +144 -276
  446. package/dist/ui/terminal-ui.js +384 -1861
  447. package/dist/ui/todo-zone.d.ts +19 -1
  448. package/dist/ui/todo-zone.js +71 -13
  449. package/dist/ui/tool-formatters.js +512 -1
  450. package/dist/ui/turn-metrics.d.ts +56 -0
  451. package/dist/ui/turn-metrics.js +75 -0
  452. package/dist/ui/types.d.ts +28 -0
  453. package/dist/ui/types.js +1 -0
  454. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  455. package/dist/ui/vscode-diff-ipc.js +385 -0
  456. package/dist/utils/credentials.d.ts +24 -5
  457. package/dist/utils/credentials.js +123 -9
  458. package/dist/utils/format-tokens.d.ts +13 -0
  459. package/dist/utils/format-tokens.js +18 -0
  460. package/dist/utils/git-config.d.ts +26 -0
  461. package/dist/utils/git-config.js +54 -0
  462. package/dist/utils/message-utils.d.ts +61 -0
  463. package/dist/utils/message-utils.js +72 -0
  464. package/dist/utils/model-tiers.d.ts +8 -1
  465. package/dist/utils/model-tiers.js +38 -16
  466. package/dist/utils/open-browser.d.ts +5 -0
  467. package/dist/utils/open-browser.js +32 -0
  468. package/dist/utils/path-safety.js +3 -2
  469. package/dist/utils/project-detection.d.ts +58 -0
  470. package/dist/utils/project-detection.js +424 -0
  471. package/dist/utils/project-memory.js +2 -1
  472. package/dist/utils/project-status.d.ts +2 -2
  473. package/dist/utils/startup-perf.d.ts +18 -0
  474. package/dist/utils/startup-perf.js +60 -0
  475. package/dist/utils/token-tracker.d.ts +62 -0
  476. package/dist/utils/token-tracker.js +150 -0
  477. package/dist/utils/token-types.d.ts +23 -0
  478. package/dist/utils/token-types.js +18 -0
  479. package/dist/utils/types/config-types.d.ts +32 -0
  480. package/dist/utils/types/config-types.js +8 -0
  481. package/dist/utils/update-checker.d.ts +28 -0
  482. package/dist/utils/update-checker.js +106 -0
  483. package/dist/utils/version.d.ts +7 -0
  484. package/dist/utils/version.js +10 -0
  485. package/dist/utils/vscode-detect.d.ts +39 -0
  486. package/dist/utils/vscode-detect.js +137 -0
  487. package/package.json +25 -12
  488. package/dist/commands/handler-types.d.ts +0 -68
  489. package/dist/commands/handler-types.js +0 -8
  490. package/dist/commands/handlers/agent-commands.d.ts +0 -13
  491. package/dist/commands/handlers/agent-commands.js +0 -305
  492. package/dist/commands/handlers/design-commands.d.ts +0 -15
  493. package/dist/commands/handlers/design-commands.js +0 -334
  494. package/dist/commands/handlers/index.d.ts +0 -20
  495. package/dist/commands/handlers/index.js +0 -43
  496. package/dist/commands/handlers/overlay-commands.d.ts +0 -21
  497. package/dist/commands/handlers/overlay-commands.js +0 -287
  498. package/dist/commands/handlers/project-commands.d.ts +0 -11
  499. package/dist/commands/handlers/project-commands.js +0 -167
  500. package/dist/commands/handlers/simple-commands.d.ts +0 -19
  501. package/dist/commands/handlers/simple-commands.js +0 -144
  502. package/dist/commands/registry.d.ts +0 -50
  503. package/dist/commands/registry.js +0 -75
  504. package/dist/index.old.d.ts +0 -7
  505. package/dist/index.old.js +0 -1014
  506. package/dist/repl.d.ts +0 -149
  507. package/dist/repl.js +0 -1151
  508. package/dist/templates/claude-md.d.ts +0 -7
  509. package/dist/templates/claude-md.js +0 -189
  510. package/dist/test-autocomplete.d.ts +0 -7
  511. package/dist/test-autocomplete.js +0 -85
  512. package/dist/test-tabbed-menu.d.ts +0 -7
  513. package/dist/test-tabbed-menu.js +0 -25
  514. package/dist/tool-selector.d.ts +0 -71
  515. package/dist/tool-selector.js +0 -184
  516. package/dist/ui/agents-overlay-v2.d.ts +0 -43
  517. package/dist/ui/agents-overlay-v2.js +0 -809
  518. package/dist/ui/agents-overlay.d.ts +0 -12
  519. package/dist/ui/agents-overlay.js +0 -863
  520. package/dist/ui/anchors-overlay.d.ts +0 -12
  521. package/dist/ui/anchors-overlay.js +0 -775
  522. package/dist/ui/arch-type-overlay.d.ts +0 -15
  523. package/dist/ui/arch-type-overlay.js +0 -201
  524. package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
  525. package/dist/ui/ask-user-overlay-v2.js +0 -555
  526. package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
  527. package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
  528. package/dist/ui/backlog-overlay.d.ts +0 -32
  529. package/dist/ui/backlog-overlay.js +0 -652
  530. package/dist/ui/commands-overlay-v2.d.ts +0 -33
  531. package/dist/ui/commands-overlay-v2.js +0 -441
  532. package/dist/ui/commands-overlay.d.ts +0 -16
  533. package/dist/ui/commands-overlay.js +0 -439
  534. package/dist/ui/config-overlay.d.ts +0 -35
  535. package/dist/ui/config-overlay.js +0 -707
  536. package/dist/ui/docs-overlay.d.ts +0 -17
  537. package/dist/ui/docs-overlay.js +0 -303
  538. package/dist/ui/footer-v2.d.ts +0 -222
  539. package/dist/ui/footer-v2.js +0 -1349
  540. package/dist/ui/help-overlay-v2.d.ts +0 -34
  541. package/dist/ui/help-overlay-v2.js +0 -309
  542. package/dist/ui/help-overlay.d.ts +0 -16
  543. package/dist/ui/help-overlay.js +0 -316
  544. package/dist/ui/init-overlay-v2.d.ts +0 -34
  545. package/dist/ui/init-overlay-v2.js +0 -600
  546. package/dist/ui/init-overlay.d.ts +0 -34
  547. package/dist/ui/init-overlay.js +0 -604
  548. package/dist/ui/input-prompt-v2.d.ts +0 -180
  549. package/dist/ui/input-prompt-v2.js +0 -999
  550. package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
  551. package/dist/ui/iteration-limit-overlay-v2.js +0 -114
  552. package/dist/ui/keys-overlay-v2.d.ts +0 -41
  553. package/dist/ui/keys-overlay-v2.js +0 -248
  554. package/dist/ui/mascot-overlay-v2.d.ts +0 -41
  555. package/dist/ui/mascot-overlay-v2.js +0 -138
  556. package/dist/ui/mascot-overlay.d.ts +0 -21
  557. package/dist/ui/mascot-overlay.js +0 -146
  558. package/dist/ui/model-overlay-v2.d.ts +0 -49
  559. package/dist/ui/model-overlay-v2.js +0 -118
  560. package/dist/ui/model-overlay.d.ts +0 -27
  561. package/dist/ui/model-overlay.js +0 -221
  562. package/dist/ui/model-warning-overlay.d.ts +0 -30
  563. package/dist/ui/model-warning-overlay.js +0 -169
  564. package/dist/ui/new-overlay.d.ts +0 -34
  565. package/dist/ui/new-overlay.js +0 -604
  566. package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
  567. package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
  568. package/dist/ui/overlay/overlay-types.d.ts +0 -128
  569. package/dist/ui/overlay/overlay-types.js +0 -22
  570. package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
  571. package/dist/ui/overlays/help-overlay-v2.js +0 -198
  572. package/dist/ui/overlays/index.d.ts +0 -11
  573. package/dist/ui/overlays/index.js +0 -11
  574. package/dist/ui/permission-overlay-v2.d.ts +0 -36
  575. package/dist/ui/permission-overlay-v2.js +0 -380
  576. package/dist/ui/projects-overlay.d.ts +0 -19
  577. package/dist/ui/projects-overlay.js +0 -484
  578. package/dist/ui/theme-overlay-v2.d.ts +0 -42
  579. package/dist/ui/theme-overlay-v2.js +0 -135
  580. package/dist/ui/theme-overlay.d.ts +0 -24
  581. package/dist/ui/theme-overlay.js +0 -127
  582. package/dist/ui/tools-overlay-v2.d.ts +0 -47
  583. package/dist/ui/tools-overlay-v2.js +0 -218
  584. package/dist/ui/tools-overlay.d.ts +0 -34
  585. package/dist/ui/tools-overlay.js +0 -230
  586. package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
  587. package/dist/ui/tutorial-overlay-v2.js +0 -1035
  588. package/dist/ui/tutorial-overlay.d.ts +0 -11
  589. package/dist/ui/tutorial-overlay.js +0 -1034
  590. package/dist/ui/workflow-overlay.d.ts +0 -22
  591. 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
+ }