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,423 @@
1
+ /**
2
+ * Init command — Scaffold new projects from templates.
3
+ *
4
+ * Usage:
5
+ * buff init — Interactive prompt for project name and template
6
+ * buff init my-app — Create project 'my-app' with interactive template picker
7
+ * buff init my-app --template node-cli — Create from a specific template
8
+ * buff init my-app --list — List available templates
9
+ * buff init my-app --template custom --template-dir ~/my-templates
10
+ *
11
+ * Templates are stored in ~/.buff/templates/ and can be custom.
12
+ * Built-in templates ship with the CLI.
13
+ */
14
+ import { Command } from 'commander';
15
+ import { existsSync, mkdirSync, writeFileSync, readFileSync, readdirSync } from 'node:fs';
16
+ import { join } from 'node:path';
17
+ import { homedir } from 'node:os';
18
+ import inquirer from 'inquirer';
19
+ import { BaseCommand } from './commands.js';
20
+ import { logger } from '../utils/logger.js';
21
+ import { showModelPicker } from './model-picker.js';
22
+ const BUILTIN_TEMPLATES = [
23
+ {
24
+ id: 'node-cli',
25
+ name: 'Node.js CLI',
26
+ description: 'A minimal Node.js CLI application with TypeScript support',
27
+ files: {
28
+ 'package.json': (name) => JSON.stringify({
29
+ name,
30
+ version: '1.0.0',
31
+ description: '',
32
+ type: 'module',
33
+ main: 'dist/index.js',
34
+ bin: { [name]: 'dist/index.js' },
35
+ scripts: {
36
+ build: 'tsc',
37
+ start: 'node dist/index.js',
38
+ dev: 'tsx src/index.ts',
39
+ },
40
+ dependencies: {},
41
+ devDependencies: {
42
+ typescript: '^5.3.0',
43
+ 'tsx': '^4.7.0',
44
+ '@types/node': '^20.11.0',
45
+ },
46
+ }, null, 2),
47
+ 'tsconfig.json': JSON.stringify({
48
+ compilerOptions: {
49
+ target: 'ES2022',
50
+ module: 'ESNext',
51
+ moduleResolution: 'bundler',
52
+ esModuleInterop: true,
53
+ strict: true,
54
+ outDir: './dist',
55
+ rootDir: './src',
56
+ declaration: true,
57
+ skipLibCheck: true,
58
+ },
59
+ include: ['src'],
60
+ }, null, 2),
61
+ 'src/index.ts': `#!/usr/bin/env node\n\nfunction main(): void {\n const args = process.argv.slice(2);\n console.log('Hello from {{name}}!', args);\n}\n\nmain();\n`,
62
+ '.gitignore': 'node_modules/\ndist/\n.env\n',
63
+ 'README.md': (name) => `# ${name}\n\n## Usage\n\n\`\`\`bash\n${name} --help\n\`\`\`\n`,
64
+ },
65
+ dependencies: [],
66
+ devDependencies: ['typescript', 'tsx', '@types/node'],
67
+ postInstall: ['Run `npm run build` to compile', 'Run `npm link` to use globally'],
68
+ },
69
+ {
70
+ id: 'ts-library',
71
+ name: 'TypeScript Library',
72
+ description: 'A TypeScript library with testing setup',
73
+ files: {
74
+ 'package.json': (name) => JSON.stringify({
75
+ name,
76
+ version: '1.0.0',
77
+ description: '',
78
+ type: 'module',
79
+ main: 'dist/index.js',
80
+ types: 'dist/index.d.ts',
81
+ scripts: {
82
+ build: 'tsc',
83
+ test: 'vitest run',
84
+ 'test:watch': 'vitest',
85
+ },
86
+ dependencies: {},
87
+ devDependencies: {
88
+ typescript: '^5.3.0',
89
+ vitest: '^4.1.0',
90
+ },
91
+ }, null, 2),
92
+ 'tsconfig.json': JSON.stringify({
93
+ compilerOptions: {
94
+ target: 'ES2022',
95
+ module: 'ESNext',
96
+ moduleResolution: 'bundler',
97
+ esModuleInterop: true,
98
+ strict: true,
99
+ outDir: './dist',
100
+ rootDir: './src',
101
+ declaration: true,
102
+ skipLibCheck: true,
103
+ },
104
+ include: ['src'],
105
+ }, null, 2),
106
+ 'src/index.ts': `export function greet(name: string): string {\n return \`Hello, \${name}!\`;\n}\n`,
107
+ 'tests/index.test.ts': `import { describe, it, expect } from 'vitest';\nimport { greet } from '../src/index.js';\n\ndescribe('greet', () => {\n it('should return a greeting', () => {\n expect(greet('World')).toBe('Hello, World!');\n });\n});\n`,
108
+ '.gitignore': 'node_modules/\ndist/\n',
109
+ 'README.md': (name) => `# ${name}\n\n## Installation\n\n\`\`\`bash\nnpm install ${name}\n\`\`\`\n`,
110
+ },
111
+ devDependencies: ['typescript', 'vitest'],
112
+ postInstall: ['Run `npm test` to verify setup', 'Run `npm run build` to compile'],
113
+ },
114
+ {
115
+ id: 'node-api',
116
+ name: 'Node.js API Server',
117
+ description: 'An Express.js API server with TypeScript',
118
+ files: {
119
+ 'package.json': (name) => JSON.stringify({
120
+ name,
121
+ version: '1.0.0',
122
+ description: '',
123
+ type: 'module',
124
+ main: 'dist/index.js',
125
+ scripts: {
126
+ build: 'tsc',
127
+ start: 'node dist/index.js',
128
+ dev: 'tsx watch src/index.ts',
129
+ },
130
+ dependencies: {
131
+ express: '^4.18.0',
132
+ },
133
+ devDependencies: {
134
+ typescript: '^5.3.0',
135
+ 'tsx': '^4.7.0',
136
+ '@types/node': '^20.11.0',
137
+ '@types/express': '^4.17.0',
138
+ },
139
+ }, null, 2),
140
+ 'tsconfig.json': JSON.stringify({
141
+ compilerOptions: {
142
+ target: 'ES2022',
143
+ module: 'ESNext',
144
+ moduleResolution: 'bundler',
145
+ esModuleInterop: true,
146
+ strict: true,
147
+ outDir: './dist',
148
+ rootDir: './src',
149
+ skipLibCheck: true,
150
+ },
151
+ include: ['src'],
152
+ }, null, 2),
153
+ 'src/index.ts': `import express from 'express';\n\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.use(express.json());\n\napp.get('/health', (_req, res) => {\n res.json({ status: 'ok', timestamp: new Date().toISOString() });\n});\n\napp.listen(PORT, () => {\n console.log(\`Server running on http://localhost:\${PORT}\`);\n});\n`,
154
+ '.gitignore': 'node_modules/\ndist/\n.env\n',
155
+ 'README.md': (name) => `# ${name}\n\n## Quick Start\n\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n`,
156
+ },
157
+ dependencies: ['express'],
158
+ devDependencies: ['typescript', 'tsx', '@types/node', '@types/express'],
159
+ postInstall: ['Run `npm run dev` to start the development server'],
160
+ },
161
+ {
162
+ id: 'python-cli',
163
+ name: 'Python CLI',
164
+ description: 'A Python CLI application with testing setup',
165
+ files: {
166
+ 'pyproject.toml': (name) => `[build-system]\nrequires = ["hatchling"]\nbuild-backend = "hatchling.build"\n\n[project]\nname = "${name}"\nversion = "1.0.0"\ndescription = ""\nrequires-python = ">=3.10"\ndependencies = []\n\n[project.scripts]\n${name} = "${name}.cli:main"\n`,
167
+ 'src/__init__.py': '',
168
+ 'src/cli.py': `#!/usr/bin/env python3\n\ndef main():\n import sys\n print(f"Hello from {__name__}!", sys.argv[1:])\n\n\nif __name__ == "__main__":\n main()\n`,
169
+ 'tests/test_cli.py': `import pytest\n\ndef test_placeholder():\n assert True\n`,
170
+ '.gitignore': 'venv/\n__pycache__/\n*.pyc\n.env\n',
171
+ 'README.md': (name) => `# ${name}\n\n## Usage\n\n\`\`\`bash\npip install -e .\n${name} --help\n\`\`\`\n`,
172
+ },
173
+ postInstall: ['Install with `pip install -e .`', 'Or use `pip install hatchling` and `pip install -e .`'],
174
+ },
175
+ {
176
+ id: 'minimal',
177
+ name: 'Minimal Project',
178
+ description: 'A minimal project with just a README and .gitignore',
179
+ files: {
180
+ '.gitignore': 'node_modules/\n.env\n',
181
+ 'README.md': (name) => `# ${name}\n\n## Getting Started\n\nDescribe your project here.\n`,
182
+ },
183
+ postInstall: ['Start adding your project files!'],
184
+ },
185
+ ];
186
+ // ─── Paths ──────────────────────────────────────────────────────────────────
187
+ const BUFF_DIR = join(homedir(), '.buff');
188
+ const TEMPLATES_DIR = join(BUFF_DIR, 'templates');
189
+ function ensureTemplateDir() {
190
+ if (!existsSync(TEMPLATES_DIR)) {
191
+ try {
192
+ mkdirSync(TEMPLATES_DIR, { recursive: true });
193
+ }
194
+ catch { /* best-effort */ }
195
+ }
196
+ }
197
+ // ─── InitCommand ────────────────────────────────────────────────────────────
198
+ export class InitCommand extends BaseCommand {
199
+ create() {
200
+ const command = new Command('init')
201
+ .description('Scaffold a new project from a template')
202
+ .argument('[project-name]', 'Name of the project to create')
203
+ .option('-t, --template <template>', 'Template to use (node-cli, ts-library, node-api, python-cli, minimal)')
204
+ .option('--list', 'List available templates and exit', false)
205
+ .option('--template-dir <path>', 'Custom template directory', String(TEMPLATES_DIR))
206
+ .option('-p, --provider <provider>', 'Default AI provider for the project')
207
+ .option('-m, --model <model>', 'Default model for the project')
208
+ .action(async (projectName, options) => {
209
+ await this.execute(projectName, options || {});
210
+ });
211
+ return command;
212
+ }
213
+ async execute(projectName, options) {
214
+ // ── List templates ──────────────────────────────────────────────────
215
+ if (options?.list) {
216
+ this.listTemplates();
217
+ return;
218
+ }
219
+ // ── Get project name ────────────────────────────────────────────────
220
+ let name = projectName;
221
+ if (!name) {
222
+ const answer = await inquirer.prompt([
223
+ {
224
+ type: 'input',
225
+ name: 'name',
226
+ message: 'Project name:',
227
+ default: 'my-project',
228
+ validate: (input) => {
229
+ if (!input.trim())
230
+ return 'Project name is required';
231
+ if (!/^[a-z0-9-_.]+$/.test(input.trim()))
232
+ return 'Use only lowercase letters, numbers, hyphens, underscores, and dots';
233
+ return true;
234
+ },
235
+ },
236
+ ]);
237
+ name = answer.name.trim();
238
+ }
239
+ // Validate project name
240
+ const projectDir = join(process.cwd(), name);
241
+ if (existsSync(projectDir)) {
242
+ logger.error(`Directory already exists: ${name}`);
243
+ logger.info('Choose a different project name or navigate to a different directory.');
244
+ return;
245
+ }
246
+ // ── Get template ────────────────────────────────────────────────────
247
+ let templateId = options?.template;
248
+ if (!templateId) {
249
+ const templates = this.getAllTemplates(options?.templateDir);
250
+ const answer = await inquirer.prompt([
251
+ {
252
+ type: 'list',
253
+ name: 'template',
254
+ message: 'Select a template:',
255
+ choices: templates.map((t) => ({
256
+ name: `${t.name} — ${t.description}`,
257
+ value: t.id,
258
+ short: t.name,
259
+ })),
260
+ },
261
+ ]);
262
+ templateId = answer.template;
263
+ }
264
+ const template = this.findTemplate(templateId, options?.templateDir);
265
+ if (!template) {
266
+ logger.error(`Unknown template: '${templateId}'`);
267
+ console.log('Available templates:');
268
+ this.listTemplates();
269
+ return;
270
+ }
271
+ // ── Optional: Provider selection ────────────────────────────────────
272
+ let providerChoice = null;
273
+ if (!options?.provider) {
274
+ const wantsProvider = await inquirer.prompt([
275
+ {
276
+ type: 'confirm',
277
+ name: 'wantsProvider',
278
+ message: 'Configure a default AI provider for this project?',
279
+ default: true,
280
+ },
281
+ ]);
282
+ if (wantsProvider.wantsProvider) {
283
+ providerChoice = await showModelPicker(this.configManager);
284
+ }
285
+ }
286
+ else if (options?.model) {
287
+ providerChoice = { provider: options.provider, model: options.model };
288
+ }
289
+ else {
290
+ providerChoice = { provider: options.provider, model: options.model || 'default' };
291
+ }
292
+ // ── Create project ──────────────────────────────────────────────────
293
+ const spinText = `Creating project '${name}'...`;
294
+ logger.info(spinText);
295
+ try {
296
+ mkdirSync(projectDir, { recursive: true });
297
+ // Create files
298
+ for (const [filePath, content] of Object.entries(template.files)) {
299
+ const fullPath = join(projectDir, filePath);
300
+ const dir = filePath.includes('/') ? join(projectDir, filePath.split('/').slice(0, -1).join('/')) : projectDir;
301
+ if (!existsSync(dir)) {
302
+ mkdirSync(dir, { recursive: true });
303
+ }
304
+ const resolvedContent = typeof content === 'function'
305
+ ? content(name)
306
+ : content.replace(/{{name}}/g, name).replace(/\{\{NAME\}\}/g, name);
307
+ writeFileSync(fullPath, resolvedContent, 'utf-8');
308
+ }
309
+ // Generate .buffconfig.json if provider was selected
310
+ if (providerChoice) {
311
+ const buffConfig = {
312
+ defaultProvider: providerChoice.provider,
313
+ providers: {
314
+ [providerChoice.provider]: {
315
+ model: providerChoice.model || 'default',
316
+ temperature: 0.7,
317
+ maxTokens: 4096,
318
+ },
319
+ },
320
+ };
321
+ writeFileSync(join(projectDir, '.buffconfig.json'), JSON.stringify(buffConfig, null, 2), 'utf-8');
322
+ }
323
+ // ── Success output ──────────────────────────────────────────────
324
+ logger.success(`Created project '${name}' in ${projectDir}\n`);
325
+ console.log(` 📁 Project structure:`);
326
+ this.printStructure(projectDir, '');
327
+ if (template.dependencies && template.dependencies.length > 0) {
328
+ console.log(`\n 📦 Dependencies: ${template.dependencies.join(', ')}`);
329
+ }
330
+ if (template.devDependencies && template.devDependencies.length > 0) {
331
+ console.log(` 🔧 Dev dependencies: ${template.devDependencies.join(', ')}`);
332
+ }
333
+ if (template.postInstall && template.postInstall.length > 0) {
334
+ console.log(`\n 📋 Next steps:`);
335
+ console.log(` cd ${name}`);
336
+ for (const step of template.postInstall) {
337
+ console.log(` ${step}`);
338
+ }
339
+ }
340
+ if (providerChoice) {
341
+ console.log(`\n 🤖 AI provider: ${providerChoice.provider} (${providerChoice.model})`);
342
+ console.log(` Edit .buffconfig.json to change settings.`);
343
+ }
344
+ console.log('');
345
+ }
346
+ catch (err) {
347
+ logger.error(`Failed to create project: ${err instanceof Error ? err.message : String(err)}`);
348
+ }
349
+ }
350
+ listTemplates(templateDir) {
351
+ const templates = this.getAllTemplates(templateDir);
352
+ logger.highlight(`${'═'.repeat(60)}`);
353
+ logger.highlight(' 📋 Available Project Templates');
354
+ logger.highlight(`${'═'.repeat(60)}`);
355
+ for (const t of templates) {
356
+ console.log(`\n ${t.id}`);
357
+ console.log(` ${'─'.repeat(t.id.length)}`);
358
+ console.log(` ${t.description}`);
359
+ if (t.files) {
360
+ const fileCount = Object.keys(t.files).length;
361
+ console.log(` ${fileCount} files`);
362
+ }
363
+ }
364
+ console.log(`\n Usage:`);
365
+ console.log(' buff init <project-name> --template <template-id>');
366
+ console.log(`\n Custom templates: ~/.buff/templates/`);
367
+ console.log('');
368
+ }
369
+ /**
370
+ * Get all available templates (built-in + custom from ~/.buff/templates/).
371
+ */
372
+ getAllTemplates(templateDir) {
373
+ const templates = [...BUILTIN_TEMPLATES];
374
+ const dir = templateDir || TEMPLATES_DIR;
375
+ // Load custom templates from ~/.buff/templates/
376
+ try {
377
+ ensureTemplateDir();
378
+ const files = readdirSync(dir).filter((f) => f.endsWith('.json'));
379
+ for (const file of files) {
380
+ try {
381
+ const content = readFileSync(join(dir, file), 'utf-8');
382
+ const parsed = JSON.parse(content);
383
+ if (parsed.id && parsed.name && parsed.files) {
384
+ templates.push(parsed);
385
+ }
386
+ }
387
+ catch {
388
+ // Skip invalid template files
389
+ }
390
+ }
391
+ }
392
+ catch {
393
+ // Directory might not exist yet
394
+ }
395
+ return templates;
396
+ }
397
+ /**
398
+ * Find a template by ID (searches built-in first, then custom).
399
+ */
400
+ findTemplate(id, templateDir) {
401
+ const templates = this.getAllTemplates(templateDir);
402
+ return templates.find((t) => t.id === id);
403
+ }
404
+ /**
405
+ * Print the project structure recursively.
406
+ */
407
+ printStructure(dir, prefix) {
408
+ const entries = readdirSync(dir, { withFileTypes: true });
409
+ for (const entry of entries) {
410
+ if (entry.name.startsWith('.') || entry.name === 'node_modules')
411
+ continue;
412
+ const fullPath = join(dir, entry.name);
413
+ if (entry.isDirectory()) {
414
+ console.log(` ${prefix}📁 ${entry.name}/`);
415
+ this.printStructure(fullPath, `${prefix} `);
416
+ }
417
+ else {
418
+ console.log(` ${prefix}📄 ${entry.name}`);
419
+ }
420
+ }
421
+ }
422
+ }
423
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * LearnCommand — CLI interface for the self-improvement system.
3
+ *
4
+ * Subcommands:
5
+ * buff learn stats — Show agent performance stats
6
+ * buff learn patterns — Show/extract coding patterns
7
+ * buff learn optimize — Generate optimized model routing
8
+ * buff learn status — Show overall self-improvement status
9
+ * buff learn clear — Reset learning data
10
+ * buff learn compare — A/B model comparison via benchmarks
11
+ * buff learn feedback — Rate a trajectory or view feedback stats
12
+ * buff learn quality — Show pattern quality and decay metrics
13
+ * buff learn gc — Garbage-collect low-quality patterns
14
+ */
15
+ import { Command } from 'commander';
16
+ import { ConfigManager } from '../config/manager.js';
17
+ export declare class LearnCommand {
18
+ private configManager;
19
+ constructor(configManager?: ConfigManager);
20
+ create(): Command;
21
+ private showStats;
22
+ private showPatterns;
23
+ private showOptimizations;
24
+ private showStatus;
25
+ private clearData;
26
+ private compareModels;
27
+ private handleFeedback;
28
+ private showQuality;
29
+ private garbageCollect;
30
+ }
31
+ //# sourceMappingURL=learn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learn.d.ts","sourceRoot":"","sources":["../../src/cli/learn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKrD,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAAgB;gBAEzB,aAAa,CAAC,EAAE,aAAa;IAIzC,MAAM,IAAI,OAAO;IAoEjB,OAAO,CAAC,SAAS;YAWH,YAAY;IAuD1B,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,UAAU;IA+BlB,OAAO,CAAC,SAAS;YAiBH,aAAa;YAmCb,cAAc;YA2Dd,WAAW;YAiCX,cAAc;CA2B7B"}