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,243 @@
1
+ /**
2
+ * @agent-nuvira/sdk/testing — Testing utilities for building and testing custom agents.
3
+ *
4
+ * Provides:
5
+ * - {@link createMockContext} — Build a fully typed {@link AgentContext} for tests
6
+ * - {@link createMockLLM} — Create a mock LLM function that returns controlled responses
7
+ * - {@link runAgentTest} — Convenience wrapper for executing an agent in a test
8
+ * - {@link assertAgentSuccess} / {@link assertAgentFailure} — Result assertions
9
+ *
10
+ * ## Example
11
+ *
12
+ * ```ts
13
+ * import { describe, it, expect } from 'vitest';
14
+ * import { MyAgent } from './my-agent.js';
15
+ * import {
16
+ * createMockContext,
17
+ * createMockLLM,
18
+ * runAgentTest,
19
+ * assertAgentSuccess,
20
+ * } from '@agent-nuvira/sdk/testing';
21
+ *
22
+ * describe('MyAgent', () => {
23
+ * it('should process files correctly', async () => {
24
+ * const context = createMockContext({
25
+ * goal: 'Format all TypeScript files',
26
+ * artifacts: [{ path: 'src/index.ts', content: 'const x=1', description: 'Source file' }],
27
+ * });
28
+ * const callLLM = createMockLLM('Formatted code content');
29
+ *
30
+ * const result = await runAgentTest(new MyAgent(), context, callLLM);
31
+ *
32
+ * assertAgentSuccess(result);
33
+ * expect(result.summary).toContain('Formatted');
34
+ * expect(context.fileChanges).toHaveLength(1);
35
+ * });
36
+ * });
37
+ * ```
38
+ *
39
+ * @module @agent-nuvira/sdk/testing
40
+ */
41
+ /**
42
+ * Create a fully typed mock {@link AgentContext} for testing agents.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * const ctx = createMockContext({
47
+ * goal: 'Add error handling to server.ts',
48
+ * artifacts: [{ path: 'server.ts', content: '...', description: 'Main server' }],
49
+ * });
50
+ * ```
51
+ */
52
+ export function createMockContext(options = {}) {
53
+ return {
54
+ goal: options.goal || 'Test goal',
55
+ workingDirectory: options.workingDirectory || process.cwd(),
56
+ taskPlan: options.taskPlan || [],
57
+ artifacts: options.artifacts || [],
58
+ fileChanges: options.fileChanges || [],
59
+ conversations: options.conversations || [],
60
+ metadata: options.metadata || {},
61
+ onRateLimit: options.onRateLimit
62
+ ? async () => ({ action: 'retry' })
63
+ : undefined,
64
+ };
65
+ }
66
+ /**
67
+ * Create a mock LLM function that returns a fixed response.
68
+ * Useful for testing agent logic without making real API calls.
69
+ *
70
+ * Also provides a `prompts` array on the returned function that records all
71
+ * prompts sent to it (when `trackPrompts` is enabled).
72
+ *
73
+ * @example
74
+ * ```ts
75
+ * const callLLM = createMockLLM('Some LLM response');
76
+ * const result = await callLLM('Some prompt');
77
+ * // result === 'Some LLM response'
78
+ * // callLLM.prompts[0] === { prompt: 'Some prompt', options: undefined }
79
+ * ```
80
+ */
81
+ export function createMockLLM(response = '', options = {}) {
82
+ const trackPrompts = options.trackPrompts !== false;
83
+ const prompts = [];
84
+ const fn = async (prompt, opts) => {
85
+ if (trackPrompts) {
86
+ prompts.push({ prompt, options: opts });
87
+ }
88
+ return response;
89
+ };
90
+ fn.prompts = prompts;
91
+ return fn;
92
+ }
93
+ /**
94
+ * Create a mock LLM function that throws an error.
95
+ * Useful for testing error handling in agents.
96
+ *
97
+ * @example
98
+ * ```ts
99
+ * const callLLM = createFailingMockLLM(new Error('API rate limit'));
100
+ * await expect(agent.execute(ctx, callLLM)).resolves.toMatchObject({ success: false });
101
+ * ```
102
+ */
103
+ export function createFailingMockLLM(error = new Error('Mock LLM error')) {
104
+ return async () => {
105
+ throw error;
106
+ };
107
+ }
108
+ /**
109
+ * Create a mock LLM function that returns different responses in sequence.
110
+ * Useful for testing agents that need multiple LLM calls.
111
+ *
112
+ * @example
113
+ * ```ts
114
+ * const callLLM = createSequentialMockLLM(['First response', 'Second response']);
115
+ * const r1 = await callLLM('prompt 1'); // 'First response'
116
+ * const r2 = await callLLM('prompt 2'); // 'Second response'
117
+ * ```
118
+ */
119
+ export function createSequentialMockLLM(responses) {
120
+ let index = 0;
121
+ return async () => {
122
+ if (index >= responses.length) {
123
+ throw new Error(`Sequential mock exhausted: no more responses (called ${index + 1} times)`);
124
+ }
125
+ return responses[index++];
126
+ };
127
+ }
128
+ // ─── Test Runner ────────────────────────────────────────────────────────────
129
+ /**
130
+ * Execute an agent in a test context and return the result.
131
+ * Automatically calls `validate()` before execution and `cleanup()` after.
132
+ *
133
+ * @example
134
+ * ```ts
135
+ * const result = await runAgentTest(new MyAgent(), context, callLLM);
136
+ * ```
137
+ */
138
+ export async function runAgentTest(agent, context, callLLM = createMockLLM()) {
139
+ // Validate
140
+ const validationResult = agent.validate(context);
141
+ if (validationResult !== true) {
142
+ return {
143
+ success: false,
144
+ summary: 'Validation failed',
145
+ error: validationResult,
146
+ };
147
+ }
148
+ // Execute
149
+ let result;
150
+ try {
151
+ result = await agent.execute(context, callLLM);
152
+ }
153
+ catch (err) {
154
+ const msg = err instanceof Error ? err.message : String(err);
155
+ result = { success: false, summary: 'Agent threw an error', error: msg };
156
+ }
157
+ finally {
158
+ // Cleanup (runs even if execute throws)
159
+ try {
160
+ agent.cleanup();
161
+ }
162
+ catch {
163
+ // Best-effort cleanup
164
+ }
165
+ }
166
+ return result;
167
+ }
168
+ // ─── Assertion Helpers ───────────────────────────────────────────────────────
169
+ /**
170
+ * Assert that an agent result indicates success.
171
+ * Throws a descriptive error if the result is falsy or has `success: false`.
172
+ *
173
+ * @example
174
+ * ```ts
175
+ * assertAgentSuccess(result);
176
+ * ```
177
+ */
178
+ export function assertAgentSuccess(result) {
179
+ if (!result) {
180
+ throw new Error('Expected agent result, but got ' + String(result));
181
+ }
182
+ if (!result.success) {
183
+ const summary = result.summary || '(no summary)';
184
+ const error = result.error ? `\n Error: ${result.error}` : '';
185
+ throw new Error(`Agent failed unexpectedly: ${summary}${error}`);
186
+ }
187
+ }
188
+ /**
189
+ * Assert that an agent result indicates failure with an optional error match.
190
+ *
191
+ * @example
192
+ * ```ts
193
+ * assertAgentFailure(result, 'rate limit');
194
+ * ```
195
+ */
196
+ export function assertAgentFailure(result, expectedErrorSubstring) {
197
+ if (!result) {
198
+ throw new Error('Expected agent result, but got ' + String(result));
199
+ }
200
+ if (result.success) {
201
+ throw new Error(`Agent succeeded unexpectedly: ${result.summary}`);
202
+ }
203
+ if (expectedErrorSubstring && result.error) {
204
+ if (!result.error.toLowerCase().includes(expectedErrorSubstring.toLowerCase())) {
205
+ throw new Error(`Expected error to contain "${expectedErrorSubstring}", but got: ${result.error}`);
206
+ }
207
+ }
208
+ }
209
+ // ─── Context Helpers ────────────────────────────────────────────────────────
210
+ /**
211
+ * Add a file artifact to a context for testing.
212
+ *
213
+ * @example
214
+ * ```ts
215
+ * addArtifact(ctx, 'src/index.ts', 'console.log("hello")', 'Entry point');
216
+ * ```
217
+ */
218
+ export function addArtifact(context, path, content, description) {
219
+ context.artifacts.push({ path, content, description });
220
+ }
221
+ /**
222
+ * Add a task step to a context's task plan.
223
+ *
224
+ * @example
225
+ * ```ts
226
+ * addTaskStep(ctx, 'step-1', 'writer', 'Write the main file', []);
227
+ * ```
228
+ */
229
+ export function addTaskStep(context, id, agentType, description, dependsOn = [], status = 'pending') {
230
+ context.taskPlan.push({ id, description, agentType, dependsOn, status });
231
+ }
232
+ /**
233
+ * Add a file change to a context.
234
+ *
235
+ * @example
236
+ * ```ts
237
+ * addFileChange(ctx, 'src/index.ts', 'console.log("hello")', undefined, 'created');
238
+ * ```
239
+ */
240
+ export function addFileChange(context, path, newContent, originalContent, status = 'modified') {
241
+ context.fileChanges.push({ path, originalContent, newContent, status });
242
+ }
243
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../src/agent-sdk/src/testing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * @agent-nuvira/sdk/types — Core type definitions for building custom agents.
3
+ *
4
+ * These types mirror the types used in the Agent-Nuvira orchestration system.
5
+ * Agents communicate through a shared {@link AgentContext} bus managed by the
6
+ * {@link Orchestrator}.
7
+ *
8
+ * @module @agent-nuvira/sdk/types
9
+ */
10
+ /** Status of a single task step within the execution plan */
11
+ export type TaskStatus = 'pending' | 'running' | 'completed' | 'failed';
12
+ /** A single step in the ordered execution plan produced by the PlannerAgent */
13
+ export interface TaskStep {
14
+ /** Unique identifier for this step (e.g. 'step-1', 'step-2') */
15
+ id: string;
16
+ /** Human-readable description of what this step does */
17
+ description: string;
18
+ /** The type of agent that should execute this step (e.g. 'writer', 'runner') */
19
+ agentType: string;
20
+ /** IDs of steps that must complete before this one can start */
21
+ dependsOn: string[];
22
+ /** Current execution status */
23
+ status: TaskStatus;
24
+ /** Optional result/summary text after execution */
25
+ result?: string;
26
+ }
27
+ /** A file artifact discovered or produced during agent execution */
28
+ export interface Artifact {
29
+ /** Relative or absolute path to the file */
30
+ path: string;
31
+ /** Full file content */
32
+ content: string;
33
+ /** Human-readable description of why this file is relevant */
34
+ description: string;
35
+ }
36
+ /** A file change proposed or applied by an agent */
37
+ export interface FileChange {
38
+ /** Relative or absolute path to the file */
39
+ path: string;
40
+ /** The original file content (undefined if file doesn't exist yet) */
41
+ originalContent?: string;
42
+ /** The new file content (undefined if file is being deleted) */
43
+ newContent?: string;
44
+ /** Whether the file is being created, modified, or deleted */
45
+ status: 'created' | 'modified' | 'deleted';
46
+ }
47
+ /** A message exchanged between agents via the shared context bus */
48
+ export interface AgentMessage {
49
+ /** Name of the sending agent */
50
+ from: string;
51
+ /** Name of the receiving agent */
52
+ to: string;
53
+ /** Message content */
54
+ content: string;
55
+ /** Unix timestamp when the message was sent */
56
+ timestamp: number;
57
+ }
58
+ /**
59
+ * Options passed to the LLM generation call.
60
+ * Mirrors {@link InferenceOptions} from the main package.
61
+ */
62
+ export interface InferenceOptions {
63
+ /** Temperature for response randomness (0.0–2.0) */
64
+ temperature?: number;
65
+ /** Maximum tokens in the generated response */
66
+ maxTokens?: number;
67
+ /** Model identifier override */
68
+ model?: string;
69
+ /** Stop sequences */
70
+ stop?: string[];
71
+ /** Top-p nucleus sampling */
72
+ topP?: number;
73
+ }
74
+ /**
75
+ * Function signature that agents use to invoke the LLM.
76
+ * The orchestrator injects this so it can control which provider/model
77
+ * each agent uses.
78
+ */
79
+ export type LLMCallFn = (prompt: string, options?: InferenceOptions) => Promise<string>;
80
+ /** Information about a rate-limit error, passed to the onRateLimit callback */
81
+ export interface RateLimitInfo {
82
+ /** How long to wait before retrying, in milliseconds */
83
+ retryAfterMs: number;
84
+ /** Name of the model that was being used */
85
+ modelName?: string;
86
+ /** Provider identifier */
87
+ provider?: string;
88
+ /** Name of the agent that hit the limit */
89
+ agentName: string;
90
+ /** The original error message */
91
+ errorMessage: string;
92
+ }
93
+ /** Actions the orchestrator/user can take when a rate limit is hit */
94
+ export type RateLimitAction =
95
+ /** Wait the suggested time and retry with the current model */
96
+ {
97
+ action: 'retry';
98
+ }
99
+ /** Gracefully skip this step (return soft success) */
100
+ | {
101
+ action: 'skip';
102
+ }
103
+ /** Fail immediately and stop the pipeline */
104
+ | {
105
+ action: 'abort';
106
+ }
107
+ /** Retry with a different model */
108
+ | {
109
+ action: 'switch-model';
110
+ callLLM: LLMCallFn;
111
+ };
112
+ /** Callback used by agents to ask the orchestrator/user what to do on rate limit */
113
+ export type OnRateLimit = (info: RateLimitInfo) => Promise<RateLimitAction>;
114
+ /**
115
+ * The shared context bus that all agents read from and write to.
116
+ * This is the single source of truth for inter-agent communication.
117
+ * Each agent receives this context and can read inputs, write outputs,
118
+ * and exchange messages with other agents.
119
+ */
120
+ export interface AgentContext {
121
+ /** The original user goal / task description */
122
+ goal: string;
123
+ /** Absolute path to the working directory (project root) */
124
+ workingDirectory: string;
125
+ /** Ordered task plan produced by the PlannerAgent */
126
+ taskPlan: TaskStep[];
127
+ /** File artifacts discovered (context) or produced (output) */
128
+ artifacts: Artifact[];
129
+ /** Agent-to-agent conversation log */
130
+ conversations: AgentMessage[];
131
+ /** File changes proposed by the WriterAgent */
132
+ fileChanges: FileChange[];
133
+ /** Arbitrary metadata for extensibility (key-value store) */
134
+ metadata: Record<string, unknown>;
135
+ /**
136
+ * Optional callback invoked when a rate-limit (429) error is detected.
137
+ * If provided, the agent should call this instead of auto-retrying.
138
+ * The orchestrator sets this to prompt the user for their preferred action.
139
+ */
140
+ onRateLimit?: OnRateLimit;
141
+ }
142
+ /** The result returned by an agent after execution */
143
+ export interface AgentResult {
144
+ /** Whether the agent completed its task successfully */
145
+ success: boolean;
146
+ /** One-line summary of what happened */
147
+ summary: string;
148
+ /** Optional detailed output (runner stdout, file lists, etc.) */
149
+ details?: string;
150
+ /** Error message if the agent failed */
151
+ error?: string;
152
+ }
153
+ /** Configuration options for an orchestration session */
154
+ export interface OrchestratorOptions {
155
+ /** Inference provider type (e.g. 'groq', 'gemini', 'local') */
156
+ provider?: string;
157
+ /** Model override */
158
+ model?: string;
159
+ /** Whether to write files to disk (false = dry-run) */
160
+ dryRun?: boolean;
161
+ /** Enable verbose logging */
162
+ verbose?: boolean;
163
+ /** Agent-specific model overrides */
164
+ agentModels?: Partial<Record<string, string>>;
165
+ /** Enable persistent memory (trajectory storage and retrieval) */
166
+ useMemory?: boolean;
167
+ /** Auto-create a review bundle instead of applying changes directly */
168
+ reviewMode?: boolean;
169
+ /** Auto-route each agent to its recommended model */
170
+ autoRouteModels?: boolean;
171
+ /** Pre-built task plan to use instead of calling the PlannerAgent */
172
+ prefillPlan?: TaskStep[];
173
+ }
174
+ /** The final result of an orchestration session */
175
+ export interface OrchestrationResult {
176
+ /** Overall success */
177
+ success: boolean;
178
+ /** The original user goal */
179
+ goal: string;
180
+ /** Summary of what was accomplished */
181
+ summary: string;
182
+ /** Number of tasks completed vs total */
183
+ tasksCompleted: number;
184
+ tasksTotal: number;
185
+ /** Detailed results from each agent */
186
+ agentResults: Array<{
187
+ agent: string;
188
+ success: boolean;
189
+ summary: string;
190
+ }>;
191
+ /** File change summary */
192
+ fileChanges: string;
193
+ /** Runner output (from executed commands) */
194
+ runOutput?: string;
195
+ /** Error message if failed */
196
+ error?: string;
197
+ /** Memory trajectory ID if stored */
198
+ trajectoryId?: string;
199
+ /** Review bundle ID if review mode was enabled */
200
+ reviewId?: string;
201
+ }
202
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent-sdk/src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,6DAA6D;AAC7D,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExE,+EAA+E;AAC/E,MAAM,WAAW,QAAQ;IACvB,gEAAgE;IAChE,EAAE,EAAE,MAAM,CAAC;IACX,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,+BAA+B;IAC/B,MAAM,EAAE,UAAU,CAAC;IACnB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,oEAAoE;AACpE,MAAM,WAAW,QAAQ;IACvB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,oDAAoD;AACpD,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;CAC5C;AAID,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;CACnB;AAID;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAIxF,+EAA+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,sEAAsE;AACtE,MAAM,MAAM,eAAe;AACzB,+DAA+D;AAC7D;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE;AACrB,sDAAsD;GACpD;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE;AACpB,6CAA6C;GAC3C;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE;AACrB,mCAAmC;GACjC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,SAAS,CAAA;CAAE,CAAC;AAEnD,oFAAoF;AACpF,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AAI5E;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IAEb,4DAA4D;IAC5D,gBAAgB,EAAE,MAAM,CAAC;IAEzB,qDAAqD;IACrD,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAErB,+DAA+D;IAC/D,SAAS,EAAE,QAAQ,EAAE,CAAC;IAEtB,sCAAsC;IACtC,aAAa,EAAE,YAAY,EAAE,CAAC;IAE9B,+CAA+C;IAC/C,WAAW,EAAE,UAAU,EAAE,CAAC;IAE1B,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,yDAAyD;AACzD,MAAM,WAAW,mBAAmB;IAClC,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qCAAqC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,kEAAkE;IAClE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uEAAuE;IACvE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qDAAqD;IACrD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qEAAqE;IACrE,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC1B;AAED,mDAAmD;AACnD,MAAM,WAAW,mBAAmB;IAClC,sBAAsB;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,YAAY,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1E,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @agent-nuvira/sdk/types — Core type definitions for building custom agents.
3
+ *
4
+ * These types mirror the types used in the Agent-Nuvira orchestration system.
5
+ * Agents communicate through a shared {@link AgentContext} bus managed by the
6
+ * {@link Orchestrator}.
7
+ *
8
+ * @module @agent-nuvira/sdk/types
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agent-sdk/src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Agent interfaces and abstract base class for the multi-agent orchestration system.
3
+ *
4
+ * Each agent is a specialized unit that performs a specific role in the pipeline
5
+ * (planning, context gathering, writing, reviewing, etc.). Agents communicate
6
+ * through a shared {@link AgentContext} bus managed by the Orchestrator.
7
+ */
8
+ import type { InferenceOptions } from '../config/types.js';
9
+ /** Status of a single task step within the execution plan */
10
+ export type TaskStatus = 'pending' | 'running' | 'completed' | 'failed';
11
+ /** A single step in the ordered execution plan produced by the PlannerAgent */
12
+ export interface TaskStep {
13
+ id: string;
14
+ description: string;
15
+ agentType: string;
16
+ dependsOn: string[];
17
+ status: TaskStatus;
18
+ result?: string;
19
+ }
20
+ /** A file artifact discovered or produced during agent execution */
21
+ export interface Artifact {
22
+ path: string;
23
+ content: string;
24
+ description: string;
25
+ }
26
+ /** A message exchanged between agents via the context bus */
27
+ export interface AgentMessage {
28
+ from: string;
29
+ to: string;
30
+ content: string;
31
+ timestamp: number;
32
+ }
33
+ /** A file change proposed or applied by an agent */
34
+ export interface FileChange {
35
+ path: string;
36
+ originalContent?: string;
37
+ newContent?: string;
38
+ status: 'created' | 'modified' | 'deleted';
39
+ }
40
+ /**
41
+ * The shared context bus that all agents read from and write to.
42
+ * This is the single source of truth for inter-agent communication.
43
+ */
44
+ export interface AgentContext {
45
+ /** The original user goal / task description */
46
+ goal: string;
47
+ /** Absolute path to the working directory (project root) */
48
+ workingDirectory: string;
49
+ /** Ordered task plan produced by PlannerAgent */
50
+ taskPlan: TaskStep[];
51
+ /** File artifacts discovered (context) or produced (output) */
52
+ artifacts: Artifact[];
53
+ /** Agent-to-agent conversation log */
54
+ conversations: AgentMessage[];
55
+ /** File changes proposed by WriterAgent */
56
+ fileChanges: FileChange[];
57
+ /** Arbitrary metadata for extensibility */
58
+ metadata: Record<string, unknown>;
59
+ /**
60
+ * Optional callback invoked when a rate-limit (429) error is detected.
61
+ * If provided, the agent will call this instead of auto-retrying.
62
+ * The orchestrator sets this to prompt the user for their preferred action.
63
+ */
64
+ onRateLimit?: OnRateLimit;
65
+ }
66
+ /** The result returned by an agent after execution */
67
+ export interface AgentResult {
68
+ success: boolean;
69
+ summary: string;
70
+ details?: string;
71
+ error?: string;
72
+ }
73
+ /**
74
+ * Information about a rate-limit error, passed to onRateLimit callback.
75
+ */
76
+ export interface RateLimitInfo {
77
+ retryAfterMs: number;
78
+ modelName?: string;
79
+ provider?: string;
80
+ agentName: string;
81
+ errorMessage: string;
82
+ }
83
+ /**
84
+ * Actions the orchestrator/user can take when a rate limit is hit.
85
+ * - 'retry': wait the suggested time and retry with the current model
86
+ * - 'skip': gracefully skip this step (return soft success)
87
+ * - 'abort': fail immediately and stop the pipeline
88
+ * - 'switch-model': retry with a different model (callback provides new callLLM)
89
+ */
90
+ export type RateLimitAction = {
91
+ action: 'retry';
92
+ } | {
93
+ action: 'skip';
94
+ } | {
95
+ action: 'abort';
96
+ } | {
97
+ action: 'switch-model';
98
+ callLLM: LLMCallFn;
99
+ };
100
+ /**
101
+ * Callback used by agents to ask the orchestrator/user what to do on rate limit.
102
+ * If not set, the agent uses its built-in retry logic (auto-wait + retry).
103
+ */
104
+ export type OnRateLimit = (info: RateLimitInfo) => Promise<RateLimitAction>;
105
+ /**
106
+ * Callback type that agents use to invoke the LLM.
107
+ * The orchestrator injects this so it can control provider/model per agent.
108
+ */
109
+ export type LLMCallFn = (prompt: string, options?: InferenceOptions) => Promise<string>;
110
+ /**
111
+ * Base class for all specialized agents.
112
+ *
113
+ * To create a new agent:
114
+ * 1. Extend this class
115
+ * 2. Set `name` and `description`
116
+ * 3. Implement `execute(context, callLLM)`
117
+ */
118
+ export declare abstract class Agent {
119
+ /** Human-readable agent name (e.g. "Planner", "Writer") */
120
+ abstract readonly name: string;
121
+ /** Short description of what this agent does */
122
+ abstract readonly description: string;
123
+ /**
124
+ * Execute the agent's specialized task.
125
+ *
126
+ * @param context Shared context bus — read inputs, write outputs
127
+ * @param callLLM Function to call the LLM with a prompt
128
+ * @returns Result indicating success/failure + summary
129
+ */
130
+ abstract execute(context: AgentContext, callLLM: LLMCallFn): Promise<AgentResult>;
131
+ }
132
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agents/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Agent interfaces and abstract base class for the multi-agent orchestration system.
3
+ *
4
+ * Each agent is a specialized unit that performs a specific role in the pipeline
5
+ * (planning, context gathering, writing, reviewing, etc.). Agents communicate
6
+ * through a shared {@link AgentContext} bus managed by the Orchestrator.
7
+ */
8
+ // ─── Abstract Agent ─────────────────────────────────────────────────────────
9
+ /**
10
+ * Base class for all specialized agents.
11
+ *
12
+ * To create a new agent:
13
+ * 1. Extend this class
14
+ * 2. Set `name` and `description`
15
+ * 3. Implement `execute(context, callLLM)`
16
+ */
17
+ export class Agent {
18
+ }
19
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agents/agent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2HH,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,OAAgB,KAAK;CAe1B"}