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,233 @@
1
+ /**
2
+ * PackageAgent — Manages npm package operations for the publishing pipeline.
3
+ *
4
+ * Capabilities:
5
+ * - Bump version (patch, minor, major)
6
+ * - Build project
7
+ * - Generate changelog from git log
8
+ * - Publish to npm
9
+ *
10
+ * Usage in task plans:
11
+ * ```json
12
+ * { "id": "step-publish", "description": "Bump version and publish to npm", "agentType": "package", "dependsOn": ["step-test"] }
13
+ * ```
14
+ */
15
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
16
+ import { join } from 'node:path';
17
+ import { execSync } from 'node:child_process';
18
+ import { Agent } from '../agent.js';
19
+ const CHANGELOG_PROMPT = `You are generating a changelog entry.
20
+
21
+ Given the following git log between two tags/revisions, write a concise changelog entry.
22
+
23
+ Format:
24
+ ## [version] - YYYY-MM-DD
25
+
26
+ ### Added
27
+ - new features
28
+
29
+ ### Changed
30
+ - changes in existing functionality
31
+
32
+ ### Fixed
33
+ - bug fixes
34
+
35
+ ### Removed
36
+ - removed features
37
+
38
+ Group commits by type. Use present tense, be specific. Return ONLY the changelog entry.`;
39
+ /**
40
+ * PackageAgent — Manages npm package versioning, building, and publishing.
41
+ */
42
+ export class PackageAgent extends Agent {
43
+ name = 'Package';
44
+ description = 'Manages package version, build, and npm publish';
45
+ async execute(context, callLLM) {
46
+ try {
47
+ const taskDesc = context.taskPlan.find((s) => s.agentType === 'package' && s.status === 'running')?.description || context.goal;
48
+ const operation = this.detectOperation(taskDesc);
49
+ switch (operation) {
50
+ case 'version':
51
+ return this.bumpVersion(context, taskDesc);
52
+ case 'build':
53
+ return this.build();
54
+ case 'publish':
55
+ return this.publish();
56
+ case 'changelog':
57
+ return this.generateChangelog(callLLM);
58
+ default:
59
+ return this.bumpVersion(context, taskDesc);
60
+ }
61
+ }
62
+ catch (err) {
63
+ const msg = err instanceof Error ? err.message : String(err);
64
+ return { success: false, summary: 'Package operation failed', error: msg };
65
+ }
66
+ }
67
+ detectOperation(description) {
68
+ const lower = description.toLowerCase();
69
+ if (lower.includes('version') || lower.includes('bump') || lower.includes('patch') || lower.includes('minor') || lower.includes('major'))
70
+ return 'version';
71
+ if (lower.includes('build') || lower.includes('compile') || lower.includes('dist'))
72
+ return 'build';
73
+ if (lower.includes('publish') || lower.includes('release') || lower.includes('deploy'))
74
+ return 'publish';
75
+ if (lower.includes('changelog') || lower.includes('change log') || lower.includes('log'))
76
+ return 'changelog';
77
+ return 'version';
78
+ }
79
+ detectBumpType(description) {
80
+ const lower = description.toLowerCase();
81
+ if (lower.includes('major'))
82
+ return 'major';
83
+ if (lower.includes('minor'))
84
+ return 'minor';
85
+ return 'patch';
86
+ }
87
+ async bumpVersion(context, description) {
88
+ const pkgPath = join(context.workingDirectory, 'package.json');
89
+ if (!existsSync(pkgPath)) {
90
+ return { success: false, summary: 'No package.json found', error: 'Cannot bump version without package.json' };
91
+ }
92
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
93
+ const currentVersion = pkg.version || '0.0.0';
94
+ const parts = currentVersion.split('.').map(Number);
95
+ const bumpType = this.detectBumpType(description);
96
+ // Bump version
97
+ switch (bumpType) {
98
+ case 'major':
99
+ parts[0] = (parts[0] || 0) + 1;
100
+ parts[1] = 0;
101
+ parts[2] = 0;
102
+ break;
103
+ case 'minor':
104
+ parts[1] = (parts[1] || 0) + 1;
105
+ parts[2] = 0;
106
+ break;
107
+ case 'patch':
108
+ parts[2] = (parts[2] || 0) + 1;
109
+ break;
110
+ }
111
+ const newVersion = parts.join('.');
112
+ pkg.version = newVersion;
113
+ // Write updated package.json
114
+ writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n', 'utf-8');
115
+ return {
116
+ success: true,
117
+ summary: `Bumped version: ${currentVersion} → ${newVersion} (${bumpType})`,
118
+ };
119
+ }
120
+ async build() {
121
+ try {
122
+ const output = execSync('npm run build 2>&1', {
123
+ cwd: process.cwd(),
124
+ timeout: 120_000,
125
+ encoding: 'utf-8',
126
+ stdio: 'pipe',
127
+ });
128
+ return {
129
+ success: true,
130
+ summary: 'Build completed successfully',
131
+ details: output.slice(0, 1000),
132
+ };
133
+ }
134
+ catch (err) {
135
+ const error = err;
136
+ return {
137
+ success: false,
138
+ summary: 'Build failed',
139
+ error: error.stderr || error.message || 'Unknown build error',
140
+ };
141
+ }
142
+ }
143
+ async publish() {
144
+ try {
145
+ const output = execSync('npm publish 2>&1', {
146
+ cwd: process.cwd(),
147
+ timeout: 120_000,
148
+ encoding: 'utf-8',
149
+ stdio: 'pipe',
150
+ });
151
+ return {
152
+ success: true,
153
+ summary: 'Published to npm successfully',
154
+ details: output,
155
+ };
156
+ }
157
+ catch (err) {
158
+ const error = err;
159
+ return {
160
+ success: false,
161
+ summary: 'npm publish failed',
162
+ error: this.parseNpmError(error),
163
+ };
164
+ }
165
+ }
166
+ async generateChangelog(callLLM) {
167
+ try {
168
+ // Get git log since last tag
169
+ const log = this.exec('git log --oneline --no-decorate $(git describe --tags --abbrev=0 2>/dev/null || git rev-list --max-parents=0 HEAD)..HEAD 2>&1');
170
+ const logLines = log.trim().split('\n').filter(Boolean);
171
+ if (logLines.length === 0) {
172
+ return { success: true, summary: 'No new commits since last tag', details: 'Changelog is empty' };
173
+ }
174
+ const prompt = `${CHANGELOG_PROMPT}\n\n## Git Log\n${log}`;
175
+ let changelogEntry;
176
+ try {
177
+ changelogEntry = await callLLM(prompt, { temperature: 0.3, maxTokens: 1000 });
178
+ changelogEntry = changelogEntry.trim().replace(/^```[\s\S]*?\n|```$/g, '').trim();
179
+ }
180
+ catch {
181
+ changelogEntry = `## [Unreleased]\n${logLines.map((l) => `- ${l}`).join('\n')}`;
182
+ }
183
+ // Try to prepend to CHANGELOG.md
184
+ const changelogPath = join(process.cwd(), 'CHANGELOG.md');
185
+ let existingContent = '';
186
+ if (existsSync(changelogPath)) {
187
+ existingContent = readFileSync(changelogPath, 'utf-8');
188
+ }
189
+ const newContent = changelogEntry + '\n\n' + existingContent;
190
+ writeFileSync(changelogPath, newContent, 'utf-8');
191
+ return {
192
+ success: true,
193
+ summary: `Generated changelog with ${logLines.length} commit(s)`,
194
+ details: changelogEntry,
195
+ };
196
+ }
197
+ catch (err) {
198
+ const msg = err instanceof Error ? err.message : String(err);
199
+ return { success: false, summary: 'Changelog generation failed', error: msg };
200
+ }
201
+ }
202
+ parseNpmError(error) {
203
+ const msg = error.stderr || error.message || '';
204
+ if (msg.includes('E403'))
205
+ return 'Not authorized — check npm login and token';
206
+ if (msg.includes('E404'))
207
+ return 'Package not found — check package name';
208
+ if (msg.includes('E402'))
209
+ return 'Payment required — check npm account';
210
+ if (msg.includes('unpaid'))
211
+ return 'Unpaid account — complete npm payment setup';
212
+ return msg.slice(0, 300);
213
+ }
214
+ exec(command, cwd) {
215
+ try {
216
+ return execSync(command, {
217
+ cwd: cwd || process.cwd(),
218
+ timeout: 30_000,
219
+ encoding: 'utf-8',
220
+ stdio: 'pipe',
221
+ });
222
+ }
223
+ catch (err) {
224
+ const error = err;
225
+ const msg = error.stderr || error.message || '';
226
+ if (msg.includes('Command failed') || msg.includes('not found')) {
227
+ throw new Error(msg.slice(0, 200));
228
+ }
229
+ return error.stdout || msg;
230
+ }
231
+ }
232
+ }
233
+ //# sourceMappingURL=package-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-agent.js","sourceRoot":"","sources":["../../../src/agents/agents/package-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * PlannerAgent — Analyzes a user goal and produces an ordered, dependency-aware
3
+ * execution plan consisting of TaskSteps for other agents to execute.
4
+ *
5
+ * The planner is the first agent to run in every orchestration session.
6
+ * It now receives the project file tree (injected by the Orchestrator via
7
+ * context.metadata.projectFileTree) so it can make informed decisions about
8
+ * which files to create, modify, or reference in its plan.
9
+ */
10
+ import { Agent, type AgentContext, type AgentResult } from '../agent.js';
11
+ import type { LLMCallFn } from '../agent.js';
12
+ /**
13
+ * PlannerAgent — Decomposes user goals into ordered task plans.
14
+ * Now accepts `projectFileTree` from context.metadata to make informed plans.
15
+ */
16
+ export declare class PlannerAgent extends Agent {
17
+ readonly name = "Planner";
18
+ readonly description = "Analyzes user goals and creates detailed execution plans";
19
+ execute(context: AgentContext, callLLM: LLMCallFn): Promise<AgentResult>;
20
+ /**
21
+ * Extract the task plan from the LLM response.
22
+ * Tries JSON.parse first, then falls back to extracting from code blocks.
23
+ */
24
+ private parsePlan;
25
+ }
26
+ //# sourceMappingURL=planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../../src/agents/agents/planner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAiB,MAAM,aAAa,CAAC;AACxF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA4E7C;;;GAGG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,WAAW,8DAA8D;IAE5E,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IA4G9E;;;OAGG;IACH,OAAO,CAAC,SAAS;CAkClB"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * PlannerAgent — Analyzes a user goal and produces an ordered, dependency-aware
3
+ * execution plan consisting of TaskSteps for other agents to execute.
4
+ *
5
+ * The planner is the first agent to run in every orchestration session.
6
+ * It now receives the project file tree (injected by the Orchestrator via
7
+ * context.metadata.projectFileTree) so it can make informed decisions about
8
+ * which files to create, modify, or reference in its plan.
9
+ */
10
+ import { Agent } from '../agent.js';
11
+ const PLANNER_SYSTEM_PROMPT = [
12
+ 'You are a senior software architect. Your job is to decompose a user\'s goal into a detailed, ordered execution plan.',
13
+ '',
14
+ 'For each step, specify:',
15
+ '- id: A short unique identifier (e.g., "step-01-gather-context")',
16
+ '- description: What needs to be done in clear language',
17
+ '- agentType: One of "context-gatherer", "writer", "reviewer", "tester", "debugger", "runner", "security"',
18
+ '- dependsOn: Array of step IDs that must complete before this one (empty array for first steps)',
19
+ '',
20
+ 'Rules:',
21
+ '1. Start with a "context-gatherer" step to understand the codebase (if files exist)',
22
+ '2. Add one or more "writer" steps to implement changes (max 2-3 files per step)',
23
+ '3. If the project is EMPTY or the goal is to CREATE something from scratch,',
24
+ ' skip the context-gatherer step and go straight to writer steps.',
25
+ '4. For goals that require running something (like "create a Python script and run it"),',
26
+ ' add a "runner" step AFTER the writer step(s).',
27
+ ' Use the description to specify the command: "Run: python hello.py" or "Run `npm test`"',
28
+ '5. End with a "reviewer" step to validate the work',
29
+ '6. Set dependsOn correctly so steps run in the right order',
30
+ '7. Keep steps granular — each step should change at most 2-3 files',
31
+ '8. Maximum 12 steps total',
32
+ '',
33
+ 'Return ONLY a valid JSON array. No markdown, no explanations.',
34
+ '',
35
+ 'Example (modifying existing project):',
36
+ '[',
37
+ ' {',
38
+ ' "id": "step-01-understand",',
39
+ ' "description": "Scan the codebase to understand the current project structure and identify files related to authentication",',
40
+ ' "agentType": "context-gatherer",',
41
+ ' "dependsOn": []',
42
+ ' },',
43
+ ' {',
44
+ ' "id": "step-02-add-routes",',
45
+ ' "description": "Create JWT authentication routes in src/routes/auth.ts with login, register, and refresh endpoints",',
46
+ ' "agentType": "writer",',
47
+ ' "dependsOn": ["step-01-understand"]',
48
+ ' },',
49
+ ' {',
50
+ ' "id": "step-03-add-middleware",',
51
+ ' "description": "Add JWT verification middleware in src/middleware/auth.ts",',
52
+ ' "agentType": "writer",',
53
+ ' "dependsOn": ["step-01-understand"]',
54
+ ' },',
55
+ ' {',
56
+ ' "id": "step-04-review",',
57
+ ' "description": "Review all changes for security vulnerabilities, correctness, and code quality",',
58
+ ' "agentType": "reviewer",',
59
+ ' "dependsOn": ["step-02-add-routes", "step-03-add-middleware"]',
60
+ ' }',
61
+ ']',
62
+ '',
63
+ 'Example (creating from scratch + running):',
64
+ '[',
65
+ ' {',
66
+ ' "id": "step-01-create-script",',
67
+ ' "description": "Create a Python script hello.py that prints Hello, World!",',
68
+ ' "agentType": "writer",',
69
+ ' "dependsOn": []',
70
+ ' },',
71
+ ' {',
72
+ ' "id": "step-02-run-script",',
73
+ ' "description": "Run: python hello.py', ' "agentType": "runner",',
74
+ ' "dependsOn": ["step-01-create-script"]',
75
+ ' },',
76
+ ' {',
77
+ ' "id": "step-03-review",',
78
+ ' "description": "Verify the output is correct",',
79
+ ' "agentType": "reviewer",',
80
+ ' "dependsOn": ["step-02-run-script"]',
81
+ ' }',
82
+ ']',
83
+ ].join('\n');
84
+ /**
85
+ * PlannerAgent — Decomposes user goals into ordered task plans.
86
+ * Now accepts `projectFileTree` from context.metadata to make informed plans.
87
+ */
88
+ export class PlannerAgent extends Agent {
89
+ name = 'Planner';
90
+ description = 'Analyzes user goals and creates detailed execution plans';
91
+ async execute(context, callLLM) {
92
+ try {
93
+ // Check for file tree (injected by Orchestrator) and memory context
94
+ const fileTree = context.metadata.projectFileTree;
95
+ const memoryContext = context.metadata.memoryContext;
96
+ const promptParts = [
97
+ PLANNER_SYSTEM_PROMPT,
98
+ '',
99
+ '## User Goal',
100
+ context.goal,
101
+ '',
102
+ '## Working Directory',
103
+ context.workingDirectory,
104
+ ];
105
+ // Inject the project file tree so the planner knows what exists
106
+ if (fileTree) {
107
+ const treeLines = fileTree.split('\n').length;
108
+ promptParts.push('', '## Current Project Structure', fileTree || '(empty directory — no source files found)', treeLines > 1 ? `\n(${treeLines} files/directories visible)` : ' (empty)');
109
+ }
110
+ else {
111
+ promptParts.push('', '## Current Project Structure', '(unknown — file tree not available)');
112
+ }
113
+ // Append memory/few-shot examples if available
114
+ if (memoryContext) {
115
+ promptParts.push('', memoryContext);
116
+ }
117
+ promptParts.push('', 'Create an execution plan for this goal. Return ONLY a valid JSON array of task steps.');
118
+ const prompt = promptParts.join('\n');
119
+ const response = await callLLM(prompt, {
120
+ temperature: 0.3, // Low temperature for structured output
121
+ maxTokens: 4096,
122
+ });
123
+ const rawPlan = this.parsePlan(response);
124
+ // Normalize and validate each step
125
+ // LLMs often return numbers for id, null for dependsOn, or different formats
126
+ const plan = [];
127
+ for (const step of rawPlan) {
128
+ if (!step || typeof step !== 'object')
129
+ continue;
130
+ if (!step.description || !step.agentType)
131
+ continue;
132
+ // Normalize: convert id to string if it's a number
133
+ const id = String(step.id ?? `step-${plan.length + 1}`);
134
+ // Normalize: dependsOn can be null, undefined, a single string, or an array
135
+ let dependsOn = [];
136
+ if (Array.isArray(step.dependsOn)) {
137
+ dependsOn = step.dependsOn.map((d) => String(d));
138
+ }
139
+ else if (typeof step.dependsOn === 'string' || typeof step.dependsOn === 'number') {
140
+ dependsOn = [String(step.dependsOn)];
141
+ }
142
+ plan.push({
143
+ id,
144
+ description: String(step.description),
145
+ agentType: String(step.agentType),
146
+ dependsOn,
147
+ status: 'pending',
148
+ });
149
+ }
150
+ if (plan.length === 0) {
151
+ return {
152
+ success: false,
153
+ summary: 'Planner produced an empty or invalid plan',
154
+ details: response,
155
+ error: 'The LLM returned a plan with no valid task steps',
156
+ };
157
+ }
158
+ // Store the parsed plan directly in the shared context for the orchestrator
159
+ context.taskPlan.push(...plan);
160
+ return {
161
+ success: true,
162
+ summary: `Created ${plan.length} task steps`,
163
+ details: plan.map((s) => ` [${s.agentType}] ${s.description}`).join('\n'),
164
+ };
165
+ }
166
+ catch (err) {
167
+ const msg = err instanceof Error ? err.message : String(err);
168
+ // Detect non-chat-model errors and provide helpful suggestions
169
+ let summary = 'Planner failed';
170
+ if (msg.includes('does not support chat completions')) {
171
+ summary = 'Planner failed — selected model does not support text chat. Use a text model like llama-3.3-70b-versatile or llama-3.1-8b-instant';
172
+ }
173
+ return {
174
+ success: false,
175
+ summary,
176
+ error: msg,
177
+ };
178
+ }
179
+ }
180
+ /**
181
+ * Extract the task plan from the LLM response.
182
+ * Tries JSON.parse first, then falls back to extracting from code blocks.
183
+ */
184
+ parsePlan(response) {
185
+ // Try direct JSON parse
186
+ const trimmed = response.trim();
187
+ try {
188
+ const parsed = JSON.parse(trimmed);
189
+ if (Array.isArray(parsed))
190
+ return parsed;
191
+ }
192
+ catch {
193
+ // Not direct JSON — try extracting from code block
194
+ }
195
+ // Try extracting from ```json ... ``` block
196
+ const jsonMatch = trimmed.match(/```(?:json)?\s*([\s\S]*?)```/);
197
+ if (jsonMatch) {
198
+ try {
199
+ const parsed = JSON.parse(jsonMatch[1].trim());
200
+ if (Array.isArray(parsed))
201
+ return parsed;
202
+ }
203
+ catch {
204
+ // Fall through
205
+ }
206
+ }
207
+ // Try finding a JSON array anywhere in the response
208
+ const arrayMatch = trimmed.match(/\[[\s\S]*\]/);
209
+ if (arrayMatch) {
210
+ try {
211
+ const parsed = JSON.parse(arrayMatch[0]);
212
+ if (Array.isArray(parsed))
213
+ return parsed;
214
+ }
215
+ catch {
216
+ // Fall through
217
+ }
218
+ }
219
+ return [];
220
+ }
221
+ }
222
+ //# sourceMappingURL=planner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner.js","sourceRoot":"","sources":["../../../src/agents/agents/planner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * ReviewerAgent — Validates code changes produced by the WriterAgent.
3
+ *
4
+ * The reviewer checks for:
5
+ * - Syntax errors and type mismatches
6
+ * - Security vulnerabilities (SQL injection, XSS, etc.)
7
+ * - Code style and conventions
8
+ * - Correctness of the implementation against the task description
9
+ * - Missing edge cases and error handling
10
+ *
11
+ * Output is stored in the shared context bus as conversation messages.
12
+ */
13
+ import { Agent, type AgentContext, type AgentResult } from '../agent.js';
14
+ import type { LLMCallFn } from '../agent.js';
15
+ /**
16
+ * ReviewerAgent — Validates code changes produced by WriterAgent.
17
+ */
18
+ export declare class ReviewerAgent extends Agent {
19
+ readonly name = "Reviewer";
20
+ readonly description = "Validates code changes for correctness, security, and quality";
21
+ execute(context: AgentContext, callLLM: LLMCallFn): Promise<AgentResult>;
22
+ /**
23
+ * Build the review prompt from the task plan, relevant context, and changes.
24
+ */
25
+ private buildPrompt;
26
+ /**
27
+ * Check if the review response contains any critical issues.
28
+ * Looks for "CRITICAL:" (with colon) at the start of a bullet or line.
29
+ * This avoids false positives from LLMs that say things like
30
+ * "No critical issues found" (which lacks the colon prefix).
31
+ */
32
+ private hasCriticalIssues;
33
+ }
34
+ //# sourceMappingURL=reviewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewer.d.ts","sourceRoot":"","sources":["../../../src/agents/agents/reviewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAwC7C;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,WAAW,mEAAmE;IAEjF,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAqE9E;;OAEG;IACH,OAAO,CAAC,WAAW;IAyBnB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;CAe1B"}