agent-nuvira 1.14.0

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 (379) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +891 -0
  3. package/dist/agent-sdk/src/agent.d.ts +118 -0
  4. package/dist/agent-sdk/src/agent.d.ts.map +1 -0
  5. package/dist/agent-sdk/src/agent.js +88 -0
  6. package/dist/agent-sdk/src/agent.js.map +1 -0
  7. package/dist/agent-sdk/src/index.d.ts +33 -0
  8. package/dist/agent-sdk/src/index.d.ts.map +1 -0
  9. package/dist/agent-sdk/src/index.js +32 -0
  10. package/dist/agent-sdk/src/index.js.map +1 -0
  11. package/dist/agent-sdk/src/register.d.ts +70 -0
  12. package/dist/agent-sdk/src/register.d.ts.map +1 -0
  13. package/dist/agent-sdk/src/register.js +181 -0
  14. package/dist/agent-sdk/src/register.js.map +1 -0
  15. package/dist/agent-sdk/src/scaffold.d.ts +50 -0
  16. package/dist/agent-sdk/src/scaffold.d.ts.map +1 -0
  17. package/dist/agent-sdk/src/scaffold.js +291 -0
  18. package/dist/agent-sdk/src/scaffold.js.map +1 -0
  19. package/dist/agent-sdk/src/testing.d.ts +187 -0
  20. package/dist/agent-sdk/src/testing.d.ts.map +1 -0
  21. package/dist/agent-sdk/src/testing.js +243 -0
  22. package/dist/agent-sdk/src/testing.js.map +1 -0
  23. package/dist/agent-sdk/src/types.d.ts +202 -0
  24. package/dist/agent-sdk/src/types.d.ts.map +1 -0
  25. package/dist/agent-sdk/src/types.js +11 -0
  26. package/dist/agent-sdk/src/types.js.map +1 -0
  27. package/dist/agents/agent.d.ts +132 -0
  28. package/dist/agents/agent.d.ts.map +1 -0
  29. package/dist/agents/agent.js +19 -0
  30. package/dist/agents/agent.js.map +1 -0
  31. package/dist/agents/agents/context-gatherer.d.ts +42 -0
  32. package/dist/agents/agents/context-gatherer.d.ts.map +1 -0
  33. package/dist/agents/agents/context-gatherer.js +366 -0
  34. package/dist/agents/agents/context-gatherer.js.map +1 -0
  35. package/dist/agents/agents/debugger.d.ts +58 -0
  36. package/dist/agents/agents/debugger.d.ts.map +1 -0
  37. package/dist/agents/agents/debugger.js +257 -0
  38. package/dist/agents/agents/debugger.js.map +1 -0
  39. package/dist/agents/agents/git-agent.d.ts +34 -0
  40. package/dist/agents/agents/git-agent.d.ts.map +1 -0
  41. package/dist/agents/agents/git-agent.js +200 -0
  42. package/dist/agents/agents/git-agent.js.map +1 -0
  43. package/dist/agents/agents/github-release-agent.d.ts +65 -0
  44. package/dist/agents/agents/github-release-agent.d.ts.map +1 -0
  45. package/dist/agents/agents/github-release-agent.js +439 -0
  46. package/dist/agents/agents/github-release-agent.js.map +1 -0
  47. package/dist/agents/agents/package-agent.d.ts +33 -0
  48. package/dist/agents/agents/package-agent.d.ts.map +1 -0
  49. package/dist/agents/agents/package-agent.js +233 -0
  50. package/dist/agents/agents/package-agent.js.map +1 -0
  51. package/dist/agents/agents/planner.d.ts +26 -0
  52. package/dist/agents/agents/planner.d.ts.map +1 -0
  53. package/dist/agents/agents/planner.js +222 -0
  54. package/dist/agents/agents/planner.js.map +1 -0
  55. package/dist/agents/agents/reviewer.d.ts +34 -0
  56. package/dist/agents/agents/reviewer.d.ts.map +1 -0
  57. package/dist/agents/agents/reviewer.js +159 -0
  58. package/dist/agents/agents/reviewer.js.map +1 -0
  59. package/dist/agents/agents/runner.d.ts +73 -0
  60. package/dist/agents/agents/runner.d.ts.map +1 -0
  61. package/dist/agents/agents/runner.js +299 -0
  62. package/dist/agents/agents/runner.js.map +1 -0
  63. package/dist/agents/agents/security-agent.d.ts +33 -0
  64. package/dist/agents/agents/security-agent.d.ts.map +1 -0
  65. package/dist/agents/agents/security-agent.js +184 -0
  66. package/dist/agents/agents/security-agent.js.map +1 -0
  67. package/dist/agents/agents/tester.d.ts +96 -0
  68. package/dist/agents/agents/tester.d.ts.map +1 -0
  69. package/dist/agents/agents/tester.js +410 -0
  70. package/dist/agents/agents/tester.js.map +1 -0
  71. package/dist/agents/agents/writer.d.ts +51 -0
  72. package/dist/agents/agents/writer.d.ts.map +1 -0
  73. package/dist/agents/agents/writer.js +384 -0
  74. package/dist/agents/agents/writer.js.map +1 -0
  75. package/dist/agents/context-vault.d.ts +49 -0
  76. package/dist/agents/context-vault.d.ts.map +1 -0
  77. package/dist/agents/context-vault.js +134 -0
  78. package/dist/agents/context-vault.js.map +1 -0
  79. package/dist/agents/orchestrator.d.ts +97 -0
  80. package/dist/agents/orchestrator.d.ts.map +1 -0
  81. package/dist/agents/orchestrator.js +696 -0
  82. package/dist/agents/orchestrator.js.map +1 -0
  83. package/dist/agents/utils/file-tree.d.ts +28 -0
  84. package/dist/agents/utils/file-tree.d.ts.map +1 -0
  85. package/dist/agents/utils/file-tree.js +93 -0
  86. package/dist/agents/utils/file-tree.js.map +1 -0
  87. package/dist/cli/agent.d.ts +25 -0
  88. package/dist/cli/agent.d.ts.map +1 -0
  89. package/dist/cli/agent.js +374 -0
  90. package/dist/cli/agent.js.map +1 -0
  91. package/dist/cli/benchmark.d.ts +24 -0
  92. package/dist/cli/benchmark.d.ts.map +1 -0
  93. package/dist/cli/benchmark.js +235 -0
  94. package/dist/cli/benchmark.js.map +1 -0
  95. package/dist/cli/cache.d.ts +12 -0
  96. package/dist/cli/cache.d.ts.map +1 -0
  97. package/dist/cli/cache.js +58 -0
  98. package/dist/cli/cache.js.map +1 -0
  99. package/dist/cli/chat.d.ts +37 -0
  100. package/dist/cli/chat.d.ts.map +1 -0
  101. package/dist/cli/chat.js +393 -0
  102. package/dist/cli/chat.js.map +1 -0
  103. package/dist/cli/commands.d.ts +24 -0
  104. package/dist/cli/commands.d.ts.map +1 -0
  105. package/dist/cli/commands.js +18 -0
  106. package/dist/cli/commands.js.map +1 -0
  107. package/dist/cli/config.d.ts +19 -0
  108. package/dist/cli/config.d.ts.map +1 -0
  109. package/dist/cli/config.js +162 -0
  110. package/dist/cli/config.js.map +1 -0
  111. package/dist/cli/dashboard.d.ts +34 -0
  112. package/dist/cli/dashboard.d.ts.map +1 -0
  113. package/dist/cli/dashboard.js +126 -0
  114. package/dist/cli/dashboard.js.map +1 -0
  115. package/dist/cli/doctor.d.ts +68 -0
  116. package/dist/cli/doctor.d.ts.map +1 -0
  117. package/dist/cli/doctor.js +585 -0
  118. package/dist/cli/doctor.js.map +1 -0
  119. package/dist/cli/edit.d.ts +11 -0
  120. package/dist/cli/edit.d.ts.map +1 -0
  121. package/dist/cli/edit.js +86 -0
  122. package/dist/cli/edit.js.map +1 -0
  123. package/dist/cli/execute.d.ts +25 -0
  124. package/dist/cli/execute.d.ts.map +1 -0
  125. package/dist/cli/execute.js +186 -0
  126. package/dist/cli/execute.js.map +1 -0
  127. package/dist/cli/federation.d.ts +31 -0
  128. package/dist/cli/federation.d.ts.map +1 -0
  129. package/dist/cli/federation.js +387 -0
  130. package/dist/cli/federation.js.map +1 -0
  131. package/dist/cli/history.d.ts +22 -0
  132. package/dist/cli/history.d.ts.map +1 -0
  133. package/dist/cli/history.js +140 -0
  134. package/dist/cli/history.js.map +1 -0
  135. package/dist/cli/init.d.ts +49 -0
  136. package/dist/cli/init.d.ts.map +1 -0
  137. package/dist/cli/init.js +423 -0
  138. package/dist/cli/init.js.map +1 -0
  139. package/dist/cli/learn.d.ts +31 -0
  140. package/dist/cli/learn.d.ts.map +1 -0
  141. package/dist/cli/learn.js +320 -0
  142. package/dist/cli/learn.js.map +1 -0
  143. package/dist/cli/memory.d.ts +38 -0
  144. package/dist/cli/memory.d.ts.map +1 -0
  145. package/dist/cli/memory.js +295 -0
  146. package/dist/cli/memory.js.map +1 -0
  147. package/dist/cli/model-picker.d.ts +18 -0
  148. package/dist/cli/model-picker.d.ts.map +1 -0
  149. package/dist/cli/model-picker.js +225 -0
  150. package/dist/cli/model-picker.js.map +1 -0
  151. package/dist/cli/models.d.ts +11 -0
  152. package/dist/cli/models.d.ts.map +1 -0
  153. package/dist/cli/models.js +132 -0
  154. package/dist/cli/models.js.map +1 -0
  155. package/dist/cli/plan.d.ts +11 -0
  156. package/dist/cli/plan.d.ts.map +1 -0
  157. package/dist/cli/plan.js +94 -0
  158. package/dist/cli/plan.js.map +1 -0
  159. package/dist/cli/plugins.d.ts +15 -0
  160. package/dist/cli/plugins.d.ts.map +1 -0
  161. package/dist/cli/plugins.js +123 -0
  162. package/dist/cli/plugins.js.map +1 -0
  163. package/dist/cli/router.d.ts +20 -0
  164. package/dist/cli/router.d.ts.map +1 -0
  165. package/dist/cli/router.js +142 -0
  166. package/dist/cli/router.js.map +1 -0
  167. package/dist/cli/run.d.ts +22 -0
  168. package/dist/cli/run.d.ts.map +1 -0
  169. package/dist/cli/run.js +110 -0
  170. package/dist/cli/run.js.map +1 -0
  171. package/dist/cli/sandbox.d.ts +27 -0
  172. package/dist/cli/sandbox.d.ts.map +1 -0
  173. package/dist/cli/sandbox.js +264 -0
  174. package/dist/cli/sandbox.js.map +1 -0
  175. package/dist/cli/sdk.d.ts +27 -0
  176. package/dist/cli/sdk.d.ts.map +1 -0
  177. package/dist/cli/sdk.js +204 -0
  178. package/dist/cli/sdk.js.map +1 -0
  179. package/dist/cli/stats.d.ts +18 -0
  180. package/dist/cli/stats.d.ts.map +1 -0
  181. package/dist/cli/stats.js +78 -0
  182. package/dist/cli/stats.js.map +1 -0
  183. package/dist/cli/team.d.ts +42 -0
  184. package/dist/cli/team.d.ts.map +1 -0
  185. package/dist/cli/team.js +473 -0
  186. package/dist/cli/team.js.map +1 -0
  187. package/dist/cli/workflow.d.ts +27 -0
  188. package/dist/cli/workflow.d.ts.map +1 -0
  189. package/dist/cli/workflow.js +347 -0
  190. package/dist/cli/workflow.js.map +1 -0
  191. package/dist/config/manager.d.ts +37 -0
  192. package/dist/config/manager.d.ts.map +1 -0
  193. package/dist/config/manager.js +147 -0
  194. package/dist/config/manager.js.map +1 -0
  195. package/dist/config/types.d.ts +53 -0
  196. package/dist/config/types.d.ts.map +1 -0
  197. package/dist/config/types.js +2 -0
  198. package/dist/config/types.js.map +1 -0
  199. package/dist/context/cache.d.ts +27 -0
  200. package/dist/context/cache.d.ts.map +1 -0
  201. package/dist/context/cache.js +116 -0
  202. package/dist/context/cache.js.map +1 -0
  203. package/dist/context/history.d.ts +87 -0
  204. package/dist/context/history.d.ts.map +1 -0
  205. package/dist/context/history.js +249 -0
  206. package/dist/context/history.js.map +1 -0
  207. package/dist/context/parser.d.ts +61 -0
  208. package/dist/context/parser.d.ts.map +1 -0
  209. package/dist/context/parser.js +194 -0
  210. package/dist/context/parser.js.map +1 -0
  211. package/dist/federation/client.d.ts +49 -0
  212. package/dist/federation/client.d.ts.map +1 -0
  213. package/dist/federation/client.js +239 -0
  214. package/dist/federation/client.js.map +1 -0
  215. package/dist/federation/protocol.d.ts +155 -0
  216. package/dist/federation/protocol.d.ts.map +1 -0
  217. package/dist/federation/protocol.js +57 -0
  218. package/dist/federation/protocol.js.map +1 -0
  219. package/dist/federation/server.d.ts +25 -0
  220. package/dist/federation/server.d.ts.map +1 -0
  221. package/dist/federation/server.js +401 -0
  222. package/dist/federation/server.js.map +1 -0
  223. package/dist/index.d.ts +67 -0
  224. package/dist/index.d.ts.map +1 -0
  225. package/dist/index.js +93 -0
  226. package/dist/index.js.map +1 -0
  227. package/dist/inference/factory.d.ts +20 -0
  228. package/dist/inference/factory.d.ts.map +1 -0
  229. package/dist/inference/factory.js +46 -0
  230. package/dist/inference/factory.js.map +1 -0
  231. package/dist/inference/gemini-adapter.d.ts +17 -0
  232. package/dist/inference/gemini-adapter.d.ts.map +1 -0
  233. package/dist/inference/gemini-adapter.js +176 -0
  234. package/dist/inference/gemini-adapter.js.map +1 -0
  235. package/dist/inference/groq-adapter.d.ts +17 -0
  236. package/dist/inference/groq-adapter.d.ts.map +1 -0
  237. package/dist/inference/groq-adapter.js +103 -0
  238. package/dist/inference/groq-adapter.js.map +1 -0
  239. package/dist/inference/interface.d.ts +49 -0
  240. package/dist/inference/interface.d.ts.map +1 -0
  241. package/dist/inference/interface.js +2 -0
  242. package/dist/inference/interface.js.map +1 -0
  243. package/dist/inference/local-adapter.d.ts +35 -0
  244. package/dist/inference/local-adapter.d.ts.map +1 -0
  245. package/dist/inference/local-adapter.js +311 -0
  246. package/dist/inference/local-adapter.js.map +1 -0
  247. package/dist/inference/model-catalog.d.ts +53 -0
  248. package/dist/inference/model-catalog.d.ts.map +1 -0
  249. package/dist/inference/model-catalog.js +306 -0
  250. package/dist/inference/model-catalog.js.map +1 -0
  251. package/dist/inference/nim-adapter.d.ts +17 -0
  252. package/dist/inference/nim-adapter.d.ts.map +1 -0
  253. package/dist/inference/nim-adapter.js +103 -0
  254. package/dist/inference/nim-adapter.js.map +1 -0
  255. package/dist/inference/openrouter-adapter.d.ts +17 -0
  256. package/dist/inference/openrouter-adapter.d.ts.map +1 -0
  257. package/dist/inference/openrouter-adapter.js +105 -0
  258. package/dist/inference/openrouter-adapter.js.map +1 -0
  259. package/dist/inference/sse.d.ts +20 -0
  260. package/dist/inference/sse.d.ts.map +1 -0
  261. package/dist/inference/sse.js +91 -0
  262. package/dist/inference/sse.js.map +1 -0
  263. package/dist/learning/agent-stats.d.ts +109 -0
  264. package/dist/learning/agent-stats.d.ts.map +1 -0
  265. package/dist/learning/agent-stats.js +240 -0
  266. package/dist/learning/agent-stats.js.map +1 -0
  267. package/dist/learning/benchmark.d.ts +161 -0
  268. package/dist/learning/benchmark.d.ts.map +1 -0
  269. package/dist/learning/benchmark.js +589 -0
  270. package/dist/learning/benchmark.js.map +1 -0
  271. package/dist/learning/cost-tracker.d.ts +101 -0
  272. package/dist/learning/cost-tracker.d.ts.map +1 -0
  273. package/dist/learning/cost-tracker.js +224 -0
  274. package/dist/learning/cost-tracker.js.map +1 -0
  275. package/dist/learning/feedback.d.ts +88 -0
  276. package/dist/learning/feedback.d.ts.map +1 -0
  277. package/dist/learning/feedback.js +169 -0
  278. package/dist/learning/feedback.js.map +1 -0
  279. package/dist/learning/hybrid-router.d.ts +201 -0
  280. package/dist/learning/hybrid-router.d.ts.map +1 -0
  281. package/dist/learning/hybrid-router.js +450 -0
  282. package/dist/learning/hybrid-router.js.map +1 -0
  283. package/dist/learning/model-compare.d.ts +76 -0
  284. package/dist/learning/model-compare.d.ts.map +1 -0
  285. package/dist/learning/model-compare.js +252 -0
  286. package/dist/learning/model-compare.js.map +1 -0
  287. package/dist/learning/model-router.d.ts +68 -0
  288. package/dist/learning/model-router.d.ts.map +1 -0
  289. package/dist/learning/model-router.js +140 -0
  290. package/dist/learning/model-router.js.map +1 -0
  291. package/dist/learning/pattern-extractor.d.ts +99 -0
  292. package/dist/learning/pattern-extractor.d.ts.map +1 -0
  293. package/dist/learning/pattern-extractor.js +310 -0
  294. package/dist/learning/pattern-extractor.js.map +1 -0
  295. package/dist/learning/scorer.d.ts +51 -0
  296. package/dist/learning/scorer.d.ts.map +1 -0
  297. package/dist/learning/scorer.js +64 -0
  298. package/dist/learning/scorer.js.map +1 -0
  299. package/dist/learning/self-improver.d.ts +48 -0
  300. package/dist/learning/self-improver.d.ts.map +1 -0
  301. package/dist/learning/self-improver.js +161 -0
  302. package/dist/learning/self-improver.js.map +1 -0
  303. package/dist/memory/embedder.d.ts +65 -0
  304. package/dist/memory/embedder.d.ts.map +1 -0
  305. package/dist/memory/embedder.js +424 -0
  306. package/dist/memory/embedder.js.map +1 -0
  307. package/dist/memory/memory-integration.d.ts +56 -0
  308. package/dist/memory/memory-integration.d.ts.map +1 -0
  309. package/dist/memory/memory-integration.js +95 -0
  310. package/dist/memory/memory-integration.js.map +1 -0
  311. package/dist/memory/trajectory-store.d.ts +149 -0
  312. package/dist/memory/trajectory-store.d.ts.map +1 -0
  313. package/dist/memory/trajectory-store.js +476 -0
  314. package/dist/memory/trajectory-store.js.map +1 -0
  315. package/dist/memory/vector-store.d.ts +78 -0
  316. package/dist/memory/vector-store.d.ts.map +1 -0
  317. package/dist/memory/vector-store.js +186 -0
  318. package/dist/memory/vector-store.js.map +1 -0
  319. package/dist/plugins/agent-plugin.d.ts +73 -0
  320. package/dist/plugins/agent-plugin.d.ts.map +1 -0
  321. package/dist/plugins/agent-plugin.js +199 -0
  322. package/dist/plugins/agent-plugin.js.map +1 -0
  323. package/dist/plugins/registry.d.ts +61 -0
  324. package/dist/plugins/registry.d.ts.map +1 -0
  325. package/dist/plugins/registry.js +67 -0
  326. package/dist/plugins/registry.js.map +1 -0
  327. package/dist/sandbox/images.d.ts +31 -0
  328. package/dist/sandbox/images.d.ts.map +1 -0
  329. package/dist/sandbox/images.js +129 -0
  330. package/dist/sandbox/images.js.map +1 -0
  331. package/dist/sandbox/manager.d.ts +134 -0
  332. package/dist/sandbox/manager.d.ts.map +1 -0
  333. package/dist/sandbox/manager.js +470 -0
  334. package/dist/sandbox/manager.js.map +1 -0
  335. package/dist/sandbox/types.d.ts +113 -0
  336. package/dist/sandbox/types.d.ts.map +1 -0
  337. package/dist/sandbox/types.js +107 -0
  338. package/dist/sandbox/types.js.map +1 -0
  339. package/dist/security/scanner.d.ts +53 -0
  340. package/dist/security/scanner.d.ts.map +1 -0
  341. package/dist/security/scanner.js +271 -0
  342. package/dist/security/scanner.js.map +1 -0
  343. package/dist/team/config.d.ts +50 -0
  344. package/dist/team/config.d.ts.map +1 -0
  345. package/dist/team/config.js +108 -0
  346. package/dist/team/config.js.map +1 -0
  347. package/dist/team/memory.d.ts +63 -0
  348. package/dist/team/memory.d.ts.map +1 -0
  349. package/dist/team/memory.js +282 -0
  350. package/dist/team/memory.js.map +1 -0
  351. package/dist/team/review.d.ts +123 -0
  352. package/dist/team/review.d.ts.map +1 -0
  353. package/dist/team/review.js +293 -0
  354. package/dist/team/review.js.map +1 -0
  355. package/dist/utils/env.d.ts +19 -0
  356. package/dist/utils/env.d.ts.map +1 -0
  357. package/dist/utils/env.js +250 -0
  358. package/dist/utils/env.js.map +1 -0
  359. package/dist/utils/logger.d.ts +11 -0
  360. package/dist/utils/logger.d.ts.map +1 -0
  361. package/dist/utils/logger.js +45 -0
  362. package/dist/utils/logger.js.map +1 -0
  363. package/dist/web-dashboard/server.d.ts +59 -0
  364. package/dist/web-dashboard/server.d.ts.map +1 -0
  365. package/dist/web-dashboard/server.js +418 -0
  366. package/dist/web-dashboard/server.js.map +1 -0
  367. package/dist/workflow/registry.d.ts +127 -0
  368. package/dist/workflow/registry.d.ts.map +1 -0
  369. package/dist/workflow/registry.js +482 -0
  370. package/dist/workflow/registry.js.map +1 -0
  371. package/dist/workflow/templates.d.ts +93 -0
  372. package/dist/workflow/templates.d.ts.map +1 -0
  373. package/dist/workflow/templates.js +481 -0
  374. package/dist/workflow/templates.js.map +1 -0
  375. package/package.json +78 -0
  376. package/src/web-dashboard/public/assets/index-B08nDkSB.css +1 -0
  377. package/src/web-dashboard/public/assets/index-BKL8YOFD.js +135 -0
  378. package/src/web-dashboard/public/assets/index-BKL8YOFD.js.map +1 -0
  379. package/src/web-dashboard/public/index.html +13 -0
@@ -0,0 +1,473 @@
1
+ /**
2
+ * Team command — Team collaboration with shared memory, config, and review workflow.
3
+ *
4
+ * Usage:
5
+ * buff team init [name] — Initialize team config in working directory
6
+ * buff team init --repo <url> — Init with remote team repository
7
+ * buff team join <repo-url> — Clone and join an existing team repo
8
+ * buff team sync — Sync team memory with remote (pull + push)
9
+ * buff team status — Show team configuration and memory status
10
+ * buff team share — Share local trajectories with team
11
+ * buff team review list — List all review bundles
12
+ * buff team review show <id> — Show a specific review bundle
13
+ * buff team review approve <id> — Approve a review
14
+ * buff team review reject <id> [reason] — Reject a review
15
+ * buff team review merge <id> — Merge an approved review into working dir
16
+ * buff team review create <title> <goal> — Create a review bundle from files
17
+ *
18
+ * The team system enables multiple developers to:
19
+ * - Share agent execution trajectories via git
20
+ * - Use project-level .buffconfig.json for shared provider defaults
21
+ * - Review agent-generated changes before applying them
22
+ * - Collaborate on workflow templates and coding patterns
23
+ */
24
+ import { Command } from 'commander';
25
+ import { readFileSync, existsSync, writeFileSync } from 'node:fs';
26
+ import { join, resolve } from 'node:path';
27
+ import { BaseCommand } from './commands.js';
28
+ import { logger } from '../utils/logger.js';
29
+ import { findProjectConfig, getTeamConfig, hasProjectConfig, getTeamDataDir, } from '../team/config.js';
30
+ import { initTeamMemory, syncTeamMemory, shareTrajectories, getTeamMemoryStats, } from '../team/memory.js';
31
+ import { getReview, listReviews, addReviewComment, mergeReview, rejectReview, createReview, } from '../team/review.js';
32
+ export class TeamCommand extends BaseCommand {
33
+ create() {
34
+ const command = new Command('team')
35
+ .description('Team collaboration — shared config, git-synced memory, and review workflow');
36
+ // ── init ───────────────────────────────────────────────────────────────
37
+ const initCmd = new Command('init')
38
+ .description('Initialize team configuration in the working directory')
39
+ .argument('[name]', 'Team name (saved to .buffconfig.json)')
40
+ .option('-r, --repo <url>', 'Remote repository URL for the team memory repo')
41
+ .option('-b, --branch <branch>', 'Git branch to use (default: main)')
42
+ .action(async (name, options) => {
43
+ await this.handleInit(name, options || {});
44
+ });
45
+ command.addCommand(initCmd);
46
+ // ── join ───────────────────────────────────────────────────────────────
47
+ command
48
+ .command('join <repo-url>')
49
+ .description('Clone and join an existing team repository')
50
+ .action(async (repoUrl) => {
51
+ await this.handleJoin(repoUrl);
52
+ });
53
+ // ── sync ───────────────────────────────────────────────────────────────
54
+ command
55
+ .command('sync')
56
+ .description('Sync team memory with remote (pull latest + push local changes)')
57
+ .action(async () => {
58
+ await this.handleSync();
59
+ });
60
+ // ── status ─────────────────────────────────────────────────────────────
61
+ command
62
+ .command('status')
63
+ .description('Show team configuration and memory status')
64
+ .action(async () => {
65
+ await this.handleStatus();
66
+ });
67
+ // ── share ──────────────────────────────────────────────────────────────
68
+ command
69
+ .command('share')
70
+ .description('Share local trajectories and patterns with the team')
71
+ .action(async () => {
72
+ await this.handleShare();
73
+ });
74
+ // ── review ─────────────────────────────────────────────────────────────
75
+ const reviewCmd = new Command('review')
76
+ .description('Manage review bundles — agent PR → review → merge workflow');
77
+ reviewCmd
78
+ .command('list')
79
+ .description('List all review bundles')
80
+ .option('-l, --limit <count>', 'Maximum number of reviews to show', parseInt)
81
+ .action(async (options) => {
82
+ await this.handleReviewList(options || {});
83
+ });
84
+ reviewCmd
85
+ .command('show <id>')
86
+ .description('Show a specific review bundle with full details')
87
+ .action(async (id) => {
88
+ await this.handleReviewShow(id);
89
+ });
90
+ reviewCmd
91
+ .command('approve <id>')
92
+ .description('Approve a review bundle (sets status to approved)')
93
+ .option('-m, --message <comment>', 'Optional approval comment')
94
+ .action(async (id, options) => {
95
+ await this.handleReviewApprove(id, options || {});
96
+ });
97
+ reviewCmd
98
+ .command('request-changes <id>')
99
+ .description('Request changes on a review bundle')
100
+ .argument('<reason>', 'Reason for requesting changes')
101
+ .action(async (id, reason) => {
102
+ await this.handleReviewRequestChanges(id, reason);
103
+ });
104
+ reviewCmd
105
+ .command('reject <id>')
106
+ .description('Reject a review bundle')
107
+ .argument('[reason]', 'Optional rejection reason')
108
+ .action(async (id, reason) => {
109
+ await this.handleReviewReject(id, reason);
110
+ });
111
+ reviewCmd
112
+ .command('merge <id>')
113
+ .description('Merge an approved review into the working directory')
114
+ .action(async (id) => {
115
+ await this.handleReviewMerge(id);
116
+ });
117
+ reviewCmd
118
+ .command('create <title> <goal>')
119
+ .description('Create a review bundle from specified files')
120
+ .option('-f, --files <paths>', 'Comma-separated file paths to include')
121
+ .option('--provider <provider>', 'Provider used')
122
+ .option('--model <model>', 'Model used')
123
+ .action(async (title, goal, options) => {
124
+ await this.handleReviewCreate(title, goal, options || {});
125
+ });
126
+ command.addCommand(reviewCmd);
127
+ // Default action: show status
128
+ command.action(async () => {
129
+ await this.handleStatus();
130
+ });
131
+ return command;
132
+ }
133
+ // ── init ─────────────────────────────────────────────────────────────────
134
+ async handleInit(name, options) {
135
+ const cwd = process.cwd();
136
+ const configPath = join(cwd, '.buffconfig.json');
137
+ if (existsSync(configPath) || hasProjectConfig(cwd)) {
138
+ logger.warn('.buffconfig.json already exists in the working directory.');
139
+ logger.info('Use `buff team join <url>` to clone a team repo, or edit .buffconfig.json directly.');
140
+ return;
141
+ }
142
+ // Create a new .buffconfig.json with team settings
143
+ const buffConfig = {
144
+ defaultProvider: 'openrouter',
145
+ providers: {},
146
+ team: {
147
+ repository: options?.repo,
148
+ branch: options?.branch || 'main',
149
+ autoSyncMinutes: 0,
150
+ shareTrajectories: true,
151
+ },
152
+ };
153
+ // If repo URL is provided, also initialize team memory
154
+ if (options?.repo) {
155
+ try {
156
+ await initTeamMemory(options.repo, cwd);
157
+ }
158
+ catch (err) {
159
+ const msg = err instanceof Error ? err.message : String(err);
160
+ logger.error(`Failed to initialize team memory: ${msg}`);
161
+ return;
162
+ }
163
+ }
164
+ // Write config
165
+ writeFileSync(configPath, JSON.stringify(buffConfig, null, 2), 'utf-8');
166
+ logger.success(`Created .buffconfig.json${name ? ` for team "${name}"` : ''}`);
167
+ logger.info('Edit this file to customize team settings.');
168
+ }
169
+ // ── join ─────────────────────────────────────────────────────────────────
170
+ async handleJoin(repoUrl) {
171
+ const cwd = process.cwd();
172
+ logger.info(`Joining team repository: ${repoUrl}`);
173
+ try {
174
+ await initTeamMemory(repoUrl, cwd);
175
+ }
176
+ catch (err) {
177
+ const msg = err instanceof Error ? err.message : String(err);
178
+ logger.error(`Failed to join team: ${msg}`);
179
+ return;
180
+ }
181
+ // If no project config exists yet, create one
182
+ if (!hasProjectConfig(cwd)) {
183
+ const configPath = join(cwd, '.buffconfig.json');
184
+ const config = {
185
+ defaultProvider: 'openrouter',
186
+ providers: {},
187
+ team: {
188
+ repository: repoUrl,
189
+ branch: 'main',
190
+ autoSyncMinutes: 0,
191
+ shareTrajectories: true,
192
+ },
193
+ };
194
+ writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
195
+ logger.success(`Created .buffconfig.json with team repo reference`);
196
+ }
197
+ logger.success(`Successfully joined team! Run \`buff team sync\` to pull latest.`);
198
+ }
199
+ // ── sync ─────────────────────────────────────────────────────────────────
200
+ async handleSync() {
201
+ logger.info('Syncing team memory...');
202
+ const projectConfig = findProjectConfig();
203
+ if (!projectConfig?.team?.repository) {
204
+ logger.warn('No remote repository configured for this team.');
205
+ logger.info('Set "team.repository" in .buffconfig.json or run `buff team join <url>`.');
206
+ return;
207
+ }
208
+ try {
209
+ const result = await syncTeamMemory();
210
+ if (result.conflicts.length > 0) {
211
+ logger.warn(`Sync completed with ${result.conflicts.length} conflict(s).`);
212
+ for (const conflict of result.conflicts) {
213
+ console.log(` ⚠️ ${conflict.slice(0, 200)}`);
214
+ }
215
+ return;
216
+ }
217
+ if (result.errors.length > 0) {
218
+ logger.warn(`Sync completed with ${result.errors.length} error(s).`);
219
+ for (const err of result.errors) {
220
+ console.log(` ⚠️ ${err}`);
221
+ }
222
+ return;
223
+ }
224
+ logger.success('Team memory is up to date.');
225
+ if (result.pulled > 0)
226
+ logger.info(` Pulled latest changes from remote.`);
227
+ if (result.pushed > 0)
228
+ logger.info(` Pushed local changes to remote.`);
229
+ }
230
+ catch (err) {
231
+ const msg = err instanceof Error ? err.message : String(err);
232
+ logger.error(`Sync failed: ${msg}`);
233
+ }
234
+ }
235
+ // ── status ───────────────────────────────────────────────────────────────
236
+ async handleStatus() {
237
+ const cwd = process.cwd();
238
+ logger.highlight('═'.repeat(60));
239
+ logger.highlight(' 👥 Team Status');
240
+ logger.highlight('═'.repeat(60));
241
+ // ── Config Status ────────────────────────────────────────────────────
242
+ console.log('\n ── Configuration ──');
243
+ const projectConfig = findProjectConfig(cwd);
244
+ if (projectConfig?.team) {
245
+ console.log(` 📄 Project config: ${join(cwd, '.buffconfig.json')}`);
246
+ console.log(` Repo: ${projectConfig.team.repository || '(not set)'}`);
247
+ console.log(` Branch: ${projectConfig.team.branch || 'main'}`);
248
+ console.log(` Auto-sync: ${projectConfig.team.autoSyncMinutes ? `every ${projectConfig.team.autoSyncMinutes}m` : 'disabled'}`);
249
+ console.log(` Share trajectories: ${projectConfig.team.shareTrajectories ? 'yes' : 'no'}`);
250
+ }
251
+ else {
252
+ console.log(' ℹ️ No team configuration found. Run `buff team init` or `buff team join <url>`.');
253
+ }
254
+ // ── Memory Status ────────────────────────────────────────────────────
255
+ console.log('\n ── Team Memory ──');
256
+ const teamDir = getTeamDataDir(cwd);
257
+ console.log(` 📁 Directory: ${teamDir}`);
258
+ try {
259
+ const stats = getTeamMemoryStats(cwd);
260
+ if (!stats.gitConfigured) {
261
+ console.log(' ℹ️ Team memory not initialized.');
262
+ console.log(' Run `buff team init --repo <url>` or `buff team join <url>`.');
263
+ }
264
+ else {
265
+ console.log(` Branch: ${stats.branch}`);
266
+ console.log(` Trajectories: ${stats.trajectoryCount}`);
267
+ console.log(` Patterns: ${stats.patternCount}`);
268
+ console.log(` Templates: ${stats.templateCount}`);
269
+ console.log(` Uncommitted: ${stats.uncommittedChanges} change(s)`);
270
+ if (stats.lastSync) {
271
+ console.log(` Last commit: ${stats.lastSync.slice(0, 25)}`);
272
+ }
273
+ }
274
+ }
275
+ catch (err) {
276
+ const msg = err instanceof Error ? err.message : String(err);
277
+ console.log(` ⚠️ ${msg}`);
278
+ }
279
+ // ── Recent Reviews ───────────────────────────────────────────────────
280
+ console.log('\n ── Recent Reviews ──');
281
+ try {
282
+ const reviews = listReviews(5);
283
+ if (reviews.length === 0) {
284
+ console.log(' No review bundles yet.');
285
+ }
286
+ else {
287
+ for (const review of reviews) {
288
+ const statusIcon = this.reviewStatusIcon(review.status);
289
+ const date = new Date(review.createdAt).toLocaleDateString();
290
+ console.log(` ${statusIcon} ${review.id} — ${review.title.slice(0, 60)} (${date})`);
291
+ }
292
+ }
293
+ }
294
+ catch {
295
+ console.log(' Could not load reviews.');
296
+ }
297
+ console.log('');
298
+ logger.info('Run `buff team sync` to pull/push team memory.');
299
+ console.log('');
300
+ }
301
+ // ── share ────────────────────────────────────────────────────────────────
302
+ async handleShare() {
303
+ const config = getTeamConfig();
304
+ if (!config.shareTrajectories) {
305
+ logger.warn('Sharing trajectories is disabled in team config.');
306
+ logger.info('Set "team.shareTrajectories": true in .buffconfig.json to enable.');
307
+ return;
308
+ }
309
+ try {
310
+ const shared = await shareTrajectories();
311
+ if (shared > 0) {
312
+ logger.info('Run `buff team sync` to publish shared files to the team remote.');
313
+ }
314
+ }
315
+ catch (err) {
316
+ const msg = err instanceof Error ? err.message : String(err);
317
+ logger.error(`Failed to share trajectories: ${msg}`);
318
+ }
319
+ }
320
+ // ── review ───────────────────────────────────────────────────────────────
321
+ async handleReviewList(options) {
322
+ const limit = options?.limit || 20;
323
+ const reviews = listReviews(limit);
324
+ if (reviews.length === 0) {
325
+ logger.info('No review bundles found.');
326
+ return;
327
+ }
328
+ logger.highlight('═'.repeat(60));
329
+ logger.highlight(` 📋 Review Bundles (showing ${Math.min(limit, reviews.length)} of ${reviews.length})`);
330
+ logger.highlight('═'.repeat(60));
331
+ for (const review of reviews) {
332
+ const statusIcon = this.reviewStatusIcon(review.status);
333
+ const date = new Date(review.createdAt).toLocaleDateString();
334
+ console.log(`\n ${statusIcon} ${review.id}`);
335
+ console.log(` Title: ${review.title}`);
336
+ console.log(` Author: ${review.author}`);
337
+ console.log(` Status: ${review.status}`);
338
+ console.log(` Date: ${date}`);
339
+ console.log(` Changes: ${review.changes.length} file(s)`);
340
+ }
341
+ console.log('');
342
+ }
343
+ async handleReviewShow(id) {
344
+ const bundle = getReview(id);
345
+ if (!bundle) {
346
+ logger.error(`Review not found: ${id}`);
347
+ return;
348
+ }
349
+ logger.highlight('═'.repeat(60));
350
+ logger.highlight(` 📋 Review: ${bundle.id}`);
351
+ logger.highlight('═'.repeat(60));
352
+ console.log(`\n Title: ${bundle.title}`);
353
+ console.log(` Status: ${this.reviewStatusIcon(bundle.status)} ${bundle.status}`);
354
+ console.log(` Author: ${bundle.author}`);
355
+ console.log(` Goal: ${bundle.goal.slice(0, 120)}`);
356
+ console.log(` Provider: ${bundle.provider} / ${bundle.model}`);
357
+ console.log(` Created: ${new Date(bundle.createdAt).toLocaleString()}`);
358
+ console.log(` Tags: ${bundle.tags.join(', ') || '(none)'}`);
359
+ // File changes
360
+ console.log('\n ── File Changes ──');
361
+ for (const change of bundle.changes) {
362
+ const icon = change.status === 'created' ? '🆕' : change.status === 'modified' ? '📝' : '🗑️';
363
+ console.log(` ${icon} ${change.path} (${change.status})`);
364
+ }
365
+ // Comments
366
+ if (bundle.comments.length > 0) {
367
+ console.log('\n ── Comments ──');
368
+ for (const comment of bundle.comments) {
369
+ const icon = comment.status === 'approve' ? '✅' : comment.status === 'request-changes' ? '🔧' : '💬';
370
+ const date = new Date(comment.timestamp).toLocaleString();
371
+ console.log(`\n ${icon} ${comment.reviewer} (${date}):`);
372
+ console.log(` ${comment.comment}`);
373
+ }
374
+ }
375
+ // Summary
376
+ if (bundle.summary) {
377
+ console.log('\n ── Summary ──');
378
+ console.log(` ${bundle.summary.slice(0, 500)}`);
379
+ }
380
+ console.log('');
381
+ logger.info(`Run \`buff team review <approve|reject|merge> ${id}\` to act on this review.`);
382
+ console.log('');
383
+ }
384
+ async handleReviewApprove(id, options) {
385
+ const bundle = getReview(id);
386
+ if (!bundle) {
387
+ logger.error(`Review not found: ${id}`);
388
+ return;
389
+ }
390
+ const reviewer = process.env.USER || 'unknown';
391
+ const result = addReviewComment(id, reviewer, 'approve', options?.message || 'Approved.');
392
+ if (result) {
393
+ logger.success(`Review ${id} approved.`);
394
+ logger.info(`Run \`buff team review merge ${id}\` to apply the changes.`);
395
+ }
396
+ }
397
+ async handleReviewRequestChanges(id, reason) {
398
+ const bundle = getReview(id);
399
+ if (!bundle) {
400
+ logger.error(`Review not found: ${id}`);
401
+ return;
402
+ }
403
+ const reviewer = process.env.USER || 'unknown';
404
+ const result = addReviewComment(id, reviewer, 'request-changes', reason);
405
+ if (result) {
406
+ logger.info(`Changes requested on review ${id}: "${reason}"`);
407
+ }
408
+ }
409
+ async handleReviewReject(id, reason) {
410
+ const success = rejectReview(id, reason);
411
+ if (success) {
412
+ const suffix = reason ? ` — Reason: "${reason}"` : '';
413
+ logger.info(`Review ${id} rejected.${suffix}`);
414
+ }
415
+ }
416
+ async handleReviewMerge(id) {
417
+ const count = mergeReview(id);
418
+ if (count > 0) {
419
+ logger.success(`Merged ${count} file change(s) from review ${id}.`);
420
+ logger.info('Run `buff team review list` to see updated status.');
421
+ }
422
+ }
423
+ async handleReviewCreate(title, goal, options) {
424
+ const cwd = process.cwd();
425
+ // Parse file paths from option
426
+ const filePaths = options?.files
427
+ ? options.files.split(',').map((f) => f.trim()).filter(Boolean)
428
+ : [];
429
+ if (filePaths.length === 0) {
430
+ logger.error('No files specified. Use --files "file1.ts,file2.ts" to include files.');
431
+ return;
432
+ }
433
+ const changes = [];
434
+ for (const filePath of filePaths) {
435
+ const fullPath = resolve(cwd, filePath);
436
+ if (!existsSync(fullPath)) {
437
+ logger.warn(`File not found: ${filePath} — skipping`);
438
+ continue;
439
+ }
440
+ const content = readFileSync(fullPath, 'utf-8');
441
+ changes.push({
442
+ path: filePath,
443
+ newContent: content,
444
+ status: 'modified',
445
+ });
446
+ }
447
+ if (changes.length === 0) {
448
+ logger.error('No valid files to include in the review bundle.');
449
+ return;
450
+ }
451
+ const bundle = createReview(title, goal, changes, {
452
+ provider: options?.provider || 'unknown',
453
+ model: options?.model || 'unknown',
454
+ author: process.env.USER || 'unknown',
455
+ tags: ['manual'],
456
+ });
457
+ if (bundle) {
458
+ logger.success(`Created review bundle ${bundle.id} with ${changes.length} file(s).`);
459
+ }
460
+ }
461
+ // ── Helpers ──────────────────────────────────────────────────────────────
462
+ reviewStatusIcon(status) {
463
+ switch (status) {
464
+ case 'pending': return '⏳';
465
+ case 'approved': return '✅';
466
+ case 'changes-requested': return '🔧';
467
+ case 'merged': return '📦';
468
+ case 'rejected': return '❌';
469
+ default: return '❓';
470
+ }
471
+ }
472
+ }
473
+ //# sourceMappingURL=team.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/cli/team.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Workflow command — Lists, runs, and manages workflow templates.
3
+ *
4
+ * Usage:
5
+ * buff workflow list — Show available workflow templates
6
+ * buff workflow run quick-fix "goal" — Run the quick-fix workflow
7
+ * buff workflow search <query> — Search the GitHub workflow registry
8
+ * buff workflow install <template> — Install template from the registry
9
+ * buff workflow publish <template-id> — Prepare a local template for publishing
10
+ * buff workflow info <template> — Show registry template details
11
+ */
12
+ import { Command } from 'commander';
13
+ import { BaseCommand } from './commands.js';
14
+ /**
15
+ * Workflow command for listing, running, and managing workflow templates.
16
+ */
17
+ export declare class WorkflowCommand extends BaseCommand {
18
+ create(): Command;
19
+ private listWorkflows;
20
+ private runWorkflow;
21
+ private searchRegistry;
22
+ private installTemplate;
23
+ private preparePublish;
24
+ private checkUpgrades;
25
+ private showInfo;
26
+ }
27
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/cli/workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAkB5C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,MAAM,IAAI,OAAO;IAiFjB,OAAO,CAAC,aAAa;YA+BP,WAAW;YAwEX,cAAc;YAyCd,eAAe;YAsBf,cAAc;YAsDd,aAAa;YA+Bb,QAAQ;CAsDvB"}