@agentuity/cli 0.0.51 → 0.0.53

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 (299) hide show
  1. package/dist/api.js +68 -0
  2. package/dist/api.js.map +1 -0
  3. package/dist/auth.js +225 -0
  4. package/dist/auth.js.map +1 -0
  5. package/dist/banner.js +35 -0
  6. package/dist/banner.js.map +1 -0
  7. package/dist/cli-logger.js +72 -0
  8. package/dist/cli-logger.js.map +1 -0
  9. package/dist/cli.js +822 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/cmd/ai/capabilities/index.js +10 -0
  12. package/dist/cmd/ai/capabilities/index.js.map +1 -0
  13. package/dist/cmd/ai/capabilities/show.js +221 -0
  14. package/dist/cmd/ai/capabilities/show.js.map +1 -0
  15. package/dist/cmd/ai/index.js +11 -0
  16. package/dist/cmd/ai/index.js.map +1 -0
  17. package/dist/cmd/ai/prompt/index.js +10 -0
  18. package/dist/cmd/ai/prompt/index.js.map +1 -0
  19. package/dist/cmd/ai/prompt/llm.js +365 -0
  20. package/dist/cmd/ai/prompt/llm.js.map +1 -0
  21. package/dist/cmd/ai/schema/index.js +10 -0
  22. package/dist/cmd/ai/schema/index.js.map +1 -0
  23. package/dist/cmd/ai/schema/show.js +23 -0
  24. package/dist/cmd/ai/schema/show.js.map +1 -0
  25. package/dist/cmd/auth/api.js +85 -0
  26. package/dist/cmd/auth/api.js.map +1 -0
  27. package/dist/cmd/auth/index.js +13 -0
  28. package/dist/cmd/auth/index.js.map +1 -0
  29. package/dist/cmd/auth/login.js +84 -0
  30. package/dist/cmd/auth/login.js.map +1 -0
  31. package/dist/cmd/auth/logout.js +17 -0
  32. package/dist/cmd/auth/logout.js.map +1 -0
  33. package/dist/cmd/auth/signup.js +55 -0
  34. package/dist/cmd/auth/signup.js.map +1 -0
  35. package/dist/cmd/auth/ssh/add.js +239 -0
  36. package/dist/cmd/auth/ssh/add.js.map +1 -0
  37. package/dist/cmd/auth/ssh/api.js +53 -0
  38. package/dist/cmd/auth/ssh/api.js.map +1 -0
  39. package/dist/cmd/auth/ssh/delete.js +126 -0
  40. package/dist/cmd/auth/ssh/delete.js.map +1 -0
  41. package/dist/cmd/auth/ssh/index.js +11 -0
  42. package/dist/cmd/auth/ssh/index.js.map +1 -0
  43. package/dist/cmd/auth/ssh/list.js +70 -0
  44. package/dist/cmd/auth/ssh/list.js.map +1 -0
  45. package/dist/cmd/auth/whoami.js +68 -0
  46. package/dist/cmd/auth/whoami.js.map +1 -0
  47. package/dist/cmd/build/ast.js +608 -0
  48. package/dist/cmd/build/ast.js.map +1 -0
  49. package/dist/cmd/build/ast.test.js +389 -0
  50. package/dist/cmd/build/ast.test.js.map +1 -0
  51. package/dist/cmd/build/bundler.js +304 -0
  52. package/dist/cmd/build/bundler.js.map +1 -0
  53. package/dist/cmd/build/file.js +10 -0
  54. package/dist/cmd/build/file.js.map +1 -0
  55. package/dist/cmd/build/fix-duplicate-exports.js +167 -0
  56. package/dist/cmd/build/fix-duplicate-exports.js.map +1 -0
  57. package/dist/cmd/build/fix-duplicate-exports.test.js +300 -0
  58. package/dist/cmd/build/fix-duplicate-exports.test.js.map +1 -0
  59. package/dist/cmd/build/index.d.ts.map +1 -1
  60. package/dist/cmd/build/index.js +81 -0
  61. package/dist/cmd/build/index.js.map +1 -0
  62. package/dist/cmd/build/patch/_util.js +42 -0
  63. package/dist/cmd/build/patch/_util.js.map +1 -0
  64. package/dist/cmd/build/patch/aisdk.js +65 -0
  65. package/dist/cmd/build/patch/aisdk.js.map +1 -0
  66. package/dist/cmd/build/patch/index.js +97 -0
  67. package/dist/cmd/build/patch/index.js.map +1 -0
  68. package/dist/cmd/build/patch/llm.js +18 -0
  69. package/dist/cmd/build/patch/llm.js.map +1 -0
  70. package/dist/cmd/build/plugin.d.ts.map +1 -1
  71. package/dist/cmd/build/plugin.js +581 -0
  72. package/dist/cmd/build/plugin.js.map +1 -0
  73. package/dist/cmd/cloud/agents/index.js +133 -0
  74. package/dist/cmd/cloud/agents/index.js.map +1 -0
  75. package/dist/cmd/cloud/deploy.js +341 -0
  76. package/dist/cmd/cloud/deploy.js.map +1 -0
  77. package/dist/cmd/cloud/deployment/index.js +20 -0
  78. package/dist/cmd/cloud/deployment/index.js.map +1 -0
  79. package/dist/cmd/cloud/deployment/list.js +89 -0
  80. package/dist/cmd/cloud/deployment/list.js.map +1 -0
  81. package/dist/cmd/cloud/deployment/remove.js +60 -0
  82. package/dist/cmd/cloud/deployment/remove.js.map +1 -0
  83. package/dist/cmd/cloud/deployment/rollback.js +80 -0
  84. package/dist/cmd/cloud/deployment/rollback.js.map +1 -0
  85. package/dist/cmd/cloud/deployment/show.js +106 -0
  86. package/dist/cmd/cloud/deployment/show.js.map +1 -0
  87. package/dist/cmd/cloud/deployment/undeploy.js +45 -0
  88. package/dist/cmd/cloud/deployment/undeploy.js.map +1 -0
  89. package/dist/cmd/cloud/deployment/utils.js +10 -0
  90. package/dist/cmd/cloud/deployment/utils.js.map +1 -0
  91. package/dist/cmd/cloud/domain.js +77 -0
  92. package/dist/cmd/cloud/domain.js.map +1 -0
  93. package/dist/cmd/cloud/env/delete.js +50 -0
  94. package/dist/cmd/cloud/env/delete.js.map +1 -0
  95. package/dist/cmd/cloud/env/get.js +65 -0
  96. package/dist/cmd/cloud/env/get.js.map +1 -0
  97. package/dist/cmd/cloud/env/import.js +113 -0
  98. package/dist/cmd/cloud/env/import.js.map +1 -0
  99. package/dist/cmd/cloud/env/index.js +24 -0
  100. package/dist/cmd/cloud/env/index.js.map +1 -0
  101. package/dist/cmd/cloud/env/list.js +58 -0
  102. package/dist/cmd/cloud/env/list.js.map +1 -0
  103. package/dist/cmd/cloud/env/pull.js +81 -0
  104. package/dist/cmd/cloud/env/pull.js.map +1 -0
  105. package/dist/cmd/cloud/env/push.js +61 -0
  106. package/dist/cmd/cloud/env/push.js.map +1 -0
  107. package/dist/cmd/cloud/env/set.js +73 -0
  108. package/dist/cmd/cloud/env/set.js.map +1 -0
  109. package/dist/cmd/cloud/index.js +31 -0
  110. package/dist/cmd/cloud/index.js.map +1 -0
  111. package/dist/cmd/cloud/keyvalue/create-namespace.js +41 -0
  112. package/dist/cmd/cloud/keyvalue/create-namespace.js.map +1 -0
  113. package/dist/cmd/cloud/keyvalue/delete-namespace.js +64 -0
  114. package/dist/cmd/cloud/keyvalue/delete-namespace.js.map +1 -0
  115. package/dist/cmd/cloud/keyvalue/delete.js +47 -0
  116. package/dist/cmd/cloud/keyvalue/delete.js.map +1 -0
  117. package/dist/cmd/cloud/keyvalue/get.js +65 -0
  118. package/dist/cmd/cloud/keyvalue/get.js.map +1 -0
  119. package/dist/cmd/cloud/keyvalue/index.js +32 -0
  120. package/dist/cmd/cloud/keyvalue/index.js.map +1 -0
  121. package/dist/cmd/cloud/keyvalue/keys.js +50 -0
  122. package/dist/cmd/cloud/keyvalue/keys.js.map +1 -0
  123. package/dist/cmd/cloud/keyvalue/list-namespaces.js +37 -0
  124. package/dist/cmd/cloud/keyvalue/list-namespaces.js.map +1 -0
  125. package/dist/cmd/cloud/keyvalue/repl.js +277 -0
  126. package/dist/cmd/cloud/keyvalue/repl.js.map +1 -0
  127. package/dist/cmd/cloud/keyvalue/search.js +72 -0
  128. package/dist/cmd/cloud/keyvalue/search.js.map +1 -0
  129. package/dist/cmd/cloud/keyvalue/set.js +59 -0
  130. package/dist/cmd/cloud/keyvalue/set.js.map +1 -0
  131. package/dist/cmd/cloud/keyvalue/stats.js +82 -0
  132. package/dist/cmd/cloud/keyvalue/stats.js.map +1 -0
  133. package/dist/cmd/cloud/keyvalue/util.js +19 -0
  134. package/dist/cmd/cloud/keyvalue/util.js.map +1 -0
  135. package/dist/cmd/cloud/objectstore/delete-bucket.js +66 -0
  136. package/dist/cmd/cloud/objectstore/delete-bucket.js.map +1 -0
  137. package/dist/cmd/cloud/objectstore/delete.js +56 -0
  138. package/dist/cmd/cloud/objectstore/delete.js.map +1 -0
  139. package/dist/cmd/cloud/objectstore/get.js +64 -0
  140. package/dist/cmd/cloud/objectstore/get.js.map +1 -0
  141. package/dist/cmd/cloud/objectstore/index.js +28 -0
  142. package/dist/cmd/cloud/objectstore/index.js.map +1 -0
  143. package/dist/cmd/cloud/objectstore/list-buckets.js +37 -0
  144. package/dist/cmd/cloud/objectstore/list-buckets.js.map +1 -0
  145. package/dist/cmd/cloud/objectstore/list-keys.js +52 -0
  146. package/dist/cmd/cloud/objectstore/list-keys.js.map +1 -0
  147. package/dist/cmd/cloud/objectstore/put.js +57 -0
  148. package/dist/cmd/cloud/objectstore/put.js.map +1 -0
  149. package/dist/cmd/cloud/objectstore/repl.js +219 -0
  150. package/dist/cmd/cloud/objectstore/repl.js.map +1 -0
  151. package/dist/cmd/cloud/objectstore/url.js +55 -0
  152. package/dist/cmd/cloud/objectstore/url.js.map +1 -0
  153. package/dist/cmd/cloud/objectstore/util.js +18 -0
  154. package/dist/cmd/cloud/objectstore/util.js.map +1 -0
  155. package/dist/cmd/cloud/resource/add.js +70 -0
  156. package/dist/cmd/cloud/resource/add.js.map +1 -0
  157. package/dist/cmd/cloud/resource/delete.js +126 -0
  158. package/dist/cmd/cloud/resource/delete.js.map +1 -0
  159. package/dist/cmd/cloud/resource/index.js +12 -0
  160. package/dist/cmd/cloud/resource/index.js.map +1 -0
  161. package/dist/cmd/cloud/resource/list.js +89 -0
  162. package/dist/cmd/cloud/resource/list.js.map +1 -0
  163. package/dist/cmd/cloud/scp/download.js +72 -0
  164. package/dist/cmd/cloud/scp/download.js.map +1 -0
  165. package/dist/cmd/cloud/scp/index.js +10 -0
  166. package/dist/cmd/cloud/scp/index.js.map +1 -0
  167. package/dist/cmd/cloud/scp/upload.js +75 -0
  168. package/dist/cmd/cloud/scp/upload.js.map +1 -0
  169. package/dist/cmd/cloud/secret/delete.js +50 -0
  170. package/dist/cmd/cloud/secret/delete.js.map +1 -0
  171. package/dist/cmd/cloud/secret/get.js +69 -0
  172. package/dist/cmd/cloud/secret/get.js.map +1 -0
  173. package/dist/cmd/cloud/secret/import.js +88 -0
  174. package/dist/cmd/cloud/secret/import.js.map +1 -0
  175. package/dist/cmd/cloud/secret/index.js +24 -0
  176. package/dist/cmd/cloud/secret/index.js.map +1 -0
  177. package/dist/cmd/cloud/secret/list.js +58 -0
  178. package/dist/cmd/cloud/secret/list.js.map +1 -0
  179. package/dist/cmd/cloud/secret/pull.js +81 -0
  180. package/dist/cmd/cloud/secret/pull.js.map +1 -0
  181. package/dist/cmd/cloud/secret/push.js +61 -0
  182. package/dist/cmd/cloud/secret/push.js.map +1 -0
  183. package/dist/cmd/cloud/secret/set.js +57 -0
  184. package/dist/cmd/cloud/secret/set.js.map +1 -0
  185. package/dist/cmd/cloud/session/get.d.ts.map +1 -1
  186. package/dist/cmd/cloud/session/get.js +155 -0
  187. package/dist/cmd/cloud/session/get.js.map +1 -0
  188. package/dist/cmd/cloud/session/index.js +11 -0
  189. package/dist/cmd/cloud/session/index.js.map +1 -0
  190. package/dist/cmd/cloud/session/list.js +132 -0
  191. package/dist/cmd/cloud/session/list.js.map +1 -0
  192. package/dist/cmd/cloud/session/logs.js +56 -0
  193. package/dist/cmd/cloud/session/logs.js.map +1 -0
  194. package/dist/cmd/cloud/ssh.js +67 -0
  195. package/dist/cmd/cloud/ssh.js.map +1 -0
  196. package/dist/cmd/dev/agents.js +103 -0
  197. package/dist/cmd/dev/agents.js.map +1 -0
  198. package/dist/cmd/dev/api.js +26 -0
  199. package/dist/cmd/dev/api.js.map +1 -0
  200. package/dist/cmd/dev/download.js +77 -0
  201. package/dist/cmd/dev/download.js.map +1 -0
  202. package/dist/cmd/dev/index.js +745 -0
  203. package/dist/cmd/dev/index.js.map +1 -0
  204. package/dist/cmd/dev/sync.js +229 -0
  205. package/dist/cmd/dev/sync.js.map +1 -0
  206. package/dist/cmd/dev/templates.js +75 -0
  207. package/dist/cmd/dev/templates.js.map +1 -0
  208. package/dist/cmd/index.js +49 -0
  209. package/dist/cmd/index.js.map +1 -0
  210. package/dist/cmd/profile/create.js +89 -0
  211. package/dist/cmd/profile/create.js.map +1 -0
  212. package/dist/cmd/profile/delete.js +63 -0
  213. package/dist/cmd/profile/delete.js.map +1 -0
  214. package/dist/cmd/profile/index.js +14 -0
  215. package/dist/cmd/profile/index.js.map +1 -0
  216. package/dist/cmd/profile/list.js +28 -0
  217. package/dist/cmd/profile/list.js.map +1 -0
  218. package/dist/cmd/profile/show.js +68 -0
  219. package/dist/cmd/profile/show.js.map +1 -0
  220. package/dist/cmd/profile/use.js +37 -0
  221. package/dist/cmd/profile/use.js.map +1 -0
  222. package/dist/cmd/project/create.js +92 -0
  223. package/dist/cmd/project/create.js.map +1 -0
  224. package/dist/cmd/project/delete.js +117 -0
  225. package/dist/cmd/project/delete.js.map +1 -0
  226. package/dist/cmd/project/download.js +217 -0
  227. package/dist/cmd/project/download.js.map +1 -0
  228. package/dist/cmd/project/index.js +12 -0
  229. package/dist/cmd/project/index.js.map +1 -0
  230. package/dist/cmd/project/list.js +51 -0
  231. package/dist/cmd/project/list.js.map +1 -0
  232. package/dist/cmd/project/show.js +54 -0
  233. package/dist/cmd/project/show.js.map +1 -0
  234. package/dist/cmd/project/template-flow.js +315 -0
  235. package/dist/cmd/project/template-flow.js.map +1 -0
  236. package/dist/cmd/project/templates.js +31 -0
  237. package/dist/cmd/project/templates.js.map +1 -0
  238. package/dist/cmd/repl/index.js +444 -0
  239. package/dist/cmd/repl/index.js.map +1 -0
  240. package/dist/cmd/version/index.js +29 -0
  241. package/dist/cmd/version/index.js.map +1 -0
  242. package/dist/command-prefix.js +37 -0
  243. package/dist/command-prefix.js.map +1 -0
  244. package/dist/config.js +536 -0
  245. package/dist/config.js.map +1 -0
  246. package/dist/crypto/box.js +382 -0
  247. package/dist/crypto/box.js.map +1 -0
  248. package/dist/crypto/box.test.js +317 -0
  249. package/dist/crypto/box.test.js.map +1 -0
  250. package/dist/download.js +64 -0
  251. package/dist/download.js.map +1 -0
  252. package/dist/env-util.js +219 -0
  253. package/dist/env-util.js.map +1 -0
  254. package/dist/env-util.test.js +146 -0
  255. package/dist/env-util.test.js.map +1 -0
  256. package/dist/errors.js +177 -0
  257. package/dist/errors.js.map +1 -0
  258. package/dist/explain.js +90 -0
  259. package/dist/explain.js.map +1 -0
  260. package/dist/index.js +23 -0
  261. package/dist/index.js.map +1 -0
  262. package/dist/json.js +29 -0
  263. package/dist/json.js.map +1 -0
  264. package/dist/legacy-check.js +104 -0
  265. package/dist/legacy-check.js.map +1 -0
  266. package/dist/output.js +207 -0
  267. package/dist/output.js.map +1 -0
  268. package/dist/repl.js +1176 -0
  269. package/dist/repl.js.map +1 -0
  270. package/dist/runtime.js +19 -0
  271. package/dist/runtime.js.map +1 -0
  272. package/dist/schema-generator.js +289 -0
  273. package/dist/schema-generator.js.map +1 -0
  274. package/dist/schema-parser.js +145 -0
  275. package/dist/schema-parser.js.map +1 -0
  276. package/dist/sound.js +44 -0
  277. package/dist/sound.js.map +1 -0
  278. package/dist/steps.js +293 -0
  279. package/dist/steps.js.map +1 -0
  280. package/dist/terminal.js +130 -0
  281. package/dist/terminal.js.map +1 -0
  282. package/dist/tui.js +1124 -0
  283. package/dist/tui.js.map +1 -0
  284. package/dist/types.js +163 -0
  285. package/dist/types.js.map +1 -0
  286. package/dist/utils/detectSubagent.js +25 -0
  287. package/dist/utils/detectSubagent.js.map +1 -0
  288. package/dist/utils/format.js +21 -0
  289. package/dist/utils/format.js.map +1 -0
  290. package/dist/utils/zip.js +33 -0
  291. package/dist/utils/zip.js.map +1 -0
  292. package/dist/version.js +24 -0
  293. package/dist/version.js.map +1 -0
  294. package/package.json +6 -6
  295. package/src/banner.ts +1 -1
  296. package/src/cmd/build/index.ts +18 -22
  297. package/src/cmd/build/plugin.ts +95 -64
  298. package/src/cmd/cloud/session/get.ts +20 -14
  299. package/src/cmd/cloud/session/list.ts +1 -1
@@ -0,0 +1,18 @@
1
+ import { generateEnvGuard, generateGatewayEnvGuard } from './_util';
2
+ function registerLLMPatch(patches, module, filename, key, baseurl, name) {
3
+ patches.set(module, {
4
+ module,
5
+ filename,
6
+ body: {
7
+ before: generateEnvGuard(key, generateGatewayEnvGuard(key, 'process.env.AGENTUITY_SDK_KEY', baseurl, name)),
8
+ },
9
+ });
10
+ }
11
+ export function generatePatches() {
12
+ const patches = new Map();
13
+ registerLLMPatch(patches, '@anthropic-ai', 'index', 'ANTHROPIC_API_KEY', 'ANTHROPIC_BASE_URL', 'anthropic');
14
+ registerLLMPatch(patches, 'groq-sdk', 'index', 'GROQ_API_KEY', 'GROQ_BASE_URL', 'groq');
15
+ registerLLMPatch(patches, 'openai', 'index', 'OPENAI_API_KEY', 'OPENAI_BASE_URL', 'openai');
16
+ return patches;
17
+ }
18
+ //# sourceMappingURL=llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../../../src/cmd/build/patch/llm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAEtF,SAAS,gBAAgB,CACxB,OAAiC,EACjC,MAAc,EACd,QAAgB,EAChB,GAAW,EACX,OAAe,EACf,IAAY;IAEZ,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;QACnB,MAAM;QACN,QAAQ;QACR,IAAI,EAAE;YACL,MAAM,EAAE,gBAAgB,CACvB,GAAG,EACH,uBAAuB,CAAC,GAAG,EAAE,+BAA+B,EAAE,OAAO,EAAE,IAAI,CAAC,CAC5E;SACD;KACD,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/C,gBAAgB,CACf,OAAO,EACP,eAAe,EACf,OAAO,EACP,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,CACX,CAAC;IACF,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;IACxF,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC5F,OAAO,OAAO,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/cmd/build/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAGrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAoPvD,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAEzD;AAED,QAAA,MAAM,gBAAgB,EAAE,SA6avB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/cmd/build/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAGrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAmRvD,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAEzD;AAED,QAAA,MAAM,gBAAgB,EAAE,SA6avB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,581 @@
1
+ import { dirname, basename, join, resolve } from 'node:path';
2
+ import { existsSync, writeFileSync, mkdirSync, unlinkSync } from 'node:fs';
3
+ import { parseAgentMetadata, parseRoute, parseEvalMetadata } from './ast';
4
+ import { applyPatch, generatePatches } from './patch';
5
+ import { detectSubagent } from '../../utils/detectSubagent';
6
+ import { createLogger } from '@agentuity/server';
7
+ function toCamelCase(str) {
8
+ return str
9
+ .replace(/[-_\s]+(.)?/g, (_, char) => (char ? char.toUpperCase() : ''))
10
+ .replace(/^(.)/, (char) => char.toLowerCase());
11
+ }
12
+ function toPascalCase(str) {
13
+ const camel = toCamelCase(str);
14
+ return camel.charAt(0).toUpperCase() + camel.slice(1);
15
+ }
16
+ function generateAgentRegistry(srcDir, agentInfo) {
17
+ // Separate parent agents and subagents
18
+ const parentAgents = agentInfo.filter((a) => !a.parent);
19
+ const subagents = agentInfo.filter((a) => a.parent);
20
+ // Group subagents by parent
21
+ const subagentsByParent = new Map();
22
+ for (const subagent of subagents) {
23
+ const parentName = subagent.parent;
24
+ if (!subagentsByParent.has(parentName)) {
25
+ subagentsByParent.set(parentName, []);
26
+ }
27
+ subagentsByParent.get(parentName).push(subagent);
28
+ }
29
+ // Detect naming collisions in generated identifiers
30
+ // Naming strategy: parent + child names are combined as `${parent}_${name}` then converted to camelCase
31
+ // Example: parent="user", child="profile" → "user_profile" → "userProfile"
32
+ // Potential collision: parent="user_profile", child="info" and parent="user", child="profile_info" both → "userProfileInfo"
33
+ const generatedNames = new Set();
34
+ const collisions = [];
35
+ for (const agent of agentInfo) {
36
+ const fullName = agent.parent ? `${agent.parent}_${agent.name}` : agent.name;
37
+ const camelName = toCamelCase(fullName);
38
+ if (generatedNames.has(camelName)) {
39
+ collisions.push(`Identifier collision detected: "${camelName}" (from "${fullName}")`);
40
+ }
41
+ generatedNames.add(camelName);
42
+ }
43
+ if (collisions.length > 0) {
44
+ throw new Error(`Agent identifier naming collisions detected:\n${collisions.join('\n')}\n\n` +
45
+ `This occurs when different agent names produce the same camelCase identifier.\n` +
46
+ `Please rename your agents to avoid this collision.`);
47
+ }
48
+ // Generate imports for all agents
49
+ const imports = agentInfo
50
+ .map(({ name, path, parent }) => {
51
+ const fullName = parent ? `${parent}.${name}` : name;
52
+ const camelName = toCamelCase(fullName.replace('.', '_'));
53
+ const relativePath = path.replace(/^\.\/agents\//, './');
54
+ return `import ${camelName}Agent from '${relativePath}';`;
55
+ })
56
+ .join('\n');
57
+ // Evals are now imported in plugin.ts when agents are registered
58
+ // No need to import them in registry.generated.ts
59
+ const evalsImportsStr = '';
60
+ // Validate that child property names don't collide with parent agent properties
61
+ const reservedAgentProperties = ['metadata', 'run', 'inputSchema', 'outputSchema', 'stream'];
62
+ for (const parentAgent of parentAgents) {
63
+ const children = subagentsByParent.get(parentAgent.name) || [];
64
+ for (const child of children) {
65
+ const childPropertyName = toCamelCase(child.name);
66
+ // Check for collision with reserved agent properties
67
+ if (reservedAgentProperties.includes(childPropertyName)) {
68
+ throw new Error(`Subagent property name collision detected: "${childPropertyName}" in parent "${parentAgent.name}"\n` +
69
+ `The child name "${child.name}" conflicts with a reserved agent property (${reservedAgentProperties.join(', ')}).\n` +
70
+ `Please rename the subagent to avoid this collision.`);
71
+ }
72
+ }
73
+ }
74
+ // Generate nested registry structure
75
+ const registryLines = [];
76
+ for (const parentAgent of parentAgents) {
77
+ const parentCamelName = toCamelCase(parentAgent.name);
78
+ const children = subagentsByParent.get(parentAgent.name) || [];
79
+ if (children.length === 0) {
80
+ // No subagents, simple assignment
81
+ registryLines.push(` ${parentCamelName}: ${parentCamelName}Agent,`);
82
+ }
83
+ else {
84
+ // Has subagents, create nested structure using object spread (no mutation)
85
+ registryLines.push(` ${parentCamelName}: {`);
86
+ registryLines.push(` ...${parentCamelName}Agent,`);
87
+ for (const child of children) {
88
+ const childCamelName = toCamelCase(`${parentAgent.name}_${child.name}`);
89
+ registryLines.push(` ${toCamelCase(child.name)}: ${childCamelName}Agent,`);
90
+ }
91
+ registryLines.push(` },`);
92
+ }
93
+ }
94
+ const registry = registryLines.join('\n');
95
+ // Generate type exports for all agents
96
+ const typeExports = agentInfo
97
+ .map(({ name, parent }) => {
98
+ const fullName = parent ? `${parent}_${name}` : name;
99
+ const camelName = toCamelCase(fullName);
100
+ const pascalName = toPascalCase(fullName);
101
+ return `export type ${pascalName}AgentRunner = AgentRunner<typeof ${camelName}Agent['inputSchema'], typeof ${camelName}Agent['outputSchema'], typeof ${camelName}Agent['stream'] extends true ? true : false>;`;
102
+ })
103
+ .join('\n');
104
+ // Generate nested agent type definitions for Hono Context augmentation
105
+ const honoAgentTypeLines = [];
106
+ for (const parentAgent of parentAgents) {
107
+ const parentCamelName = toCamelCase(parentAgent.name);
108
+ const children = subagentsByParent.get(parentAgent.name) || [];
109
+ if (children.length === 0) {
110
+ // No subagents
111
+ honoAgentTypeLines.push(` ${parentCamelName}: AgentRunner<LocalAgentRegistry['${parentCamelName}']['inputSchema'], LocalAgentRegistry['${parentCamelName}']['outputSchema'], LocalAgentRegistry['${parentCamelName}']['stream'] extends true ? true : false>;`);
112
+ }
113
+ else {
114
+ // Has subagents - create intersection type
115
+ honoAgentTypeLines.push(` ${parentCamelName}: AgentRunner<LocalAgentRegistry['${parentCamelName}']['inputSchema'], LocalAgentRegistry['${parentCamelName}']['outputSchema'], LocalAgentRegistry['${parentCamelName}']['stream'] extends true ? true : false> & {`);
116
+ for (const child of children) {
117
+ const childCamelName = toCamelCase(child.name);
118
+ const fullChildName = toCamelCase(`${parentAgent.name}_${child.name}`);
119
+ honoAgentTypeLines.push(` ${childCamelName}: AgentRunner<typeof ${fullChildName}Agent['inputSchema'], typeof ${fullChildName}Agent['outputSchema'], typeof ${fullChildName}Agent['stream'] extends true ? true : false>;`);
120
+ }
121
+ honoAgentTypeLines.push(` };`);
122
+ }
123
+ }
124
+ const honoAgentTypes = honoAgentTypeLines.join('\n');
125
+ // Generate agent type definitions for AgentRegistry interface augmentation
126
+ const runtimeAgentTypeLines = [];
127
+ for (const parentAgent of parentAgents) {
128
+ const parentCamelName = toCamelCase(parentAgent.name);
129
+ const children = subagentsByParent.get(parentAgent.name) || [];
130
+ if (children.length === 0) {
131
+ // No subagents - use typeof the imported agent
132
+ runtimeAgentTypeLines.push(` ${parentCamelName}: AgentRunner<typeof ${parentCamelName}Agent['inputSchema'], typeof ${parentCamelName}Agent['outputSchema'], typeof ${parentCamelName}Agent['stream'] extends true ? true : false>;`);
133
+ }
134
+ else {
135
+ // Has subagents - create intersection type using typeof
136
+ runtimeAgentTypeLines.push(` ${parentCamelName}: AgentRunner<typeof ${parentCamelName}Agent['inputSchema'], typeof ${parentCamelName}Agent['outputSchema'], typeof ${parentCamelName}Agent['stream'] extends true ? true : false> & {`);
137
+ for (const child of children) {
138
+ const childCamelName = toCamelCase(child.name);
139
+ const fullChildName = toCamelCase(`${parentAgent.name}_${child.name}`);
140
+ runtimeAgentTypeLines.push(` ${childCamelName}: AgentRunner<typeof ${fullChildName}Agent['inputSchema'], typeof ${fullChildName}Agent['outputSchema'], typeof ${fullChildName}Agent['stream'] extends true ? true : false>;`);
141
+ }
142
+ runtimeAgentTypeLines.push(` };`);
143
+ }
144
+ }
145
+ const runtimeAgentTypes = runtimeAgentTypeLines.join('\n');
146
+ // Generate React client types with nested structure
147
+ const clientAgentTypeLines = [];
148
+ for (const parentAgent of parentAgents) {
149
+ const parentCamelName = toCamelCase(parentAgent.name);
150
+ const children = subagentsByParent.get(parentAgent.name) || [];
151
+ if (children.length === 0) {
152
+ // No subagents
153
+ clientAgentTypeLines.push(` '${parentAgent.name}': Agent<typeof ${parentCamelName}Agent['inputSchema'], typeof ${parentCamelName}Agent['outputSchema']>;`);
154
+ }
155
+ else {
156
+ // Has subagents - create nested type with subagent access via dot notation
157
+ clientAgentTypeLines.push(` '${parentAgent.name}': Agent<typeof ${parentCamelName}Agent['inputSchema'], typeof ${parentCamelName}Agent['outputSchema']>;`);
158
+ for (const child of children) {
159
+ const fullChildName = toCamelCase(`${parentAgent.name}_${child.name}`);
160
+ clientAgentTypeLines.push(` '${parentAgent.name}.${child.name}': Agent<typeof ${fullChildName}Agent['inputSchema'], typeof ${fullChildName}Agent['outputSchema']>;`);
161
+ }
162
+ }
163
+ }
164
+ const reactAgentTypes = clientAgentTypeLines.join('\n');
165
+ const generatedContent = `/// <reference types="hono" />
166
+ // Auto-generated by Agentuity - do not edit manually
167
+ ${imports}${evalsImportsStr}
168
+ import type { AgentRunner, Logger } from '@agentuity/runtime';
169
+ import type { KeyValueStorage, ObjectStorage, StreamStorage, VectorStorage } from '@agentuity/core';
170
+ import type { Agent } from '@agentuity/react';
171
+
172
+ export const agentRegistry = {
173
+ ${registry}
174
+ } as const;
175
+
176
+ // Local type aliases for Hono augmentation
177
+ type LocalAgentName = keyof typeof agentRegistry;
178
+ type LocalAgentRegistry = typeof agentRegistry;
179
+
180
+ // Typed runners for each agent
181
+ ${typeExports}
182
+
183
+ // Augment @agentuity/runtime types with strongly-typed agents from this project
184
+ declare module "@agentuity/runtime" {
185
+ // Augment the AgentRegistry interface with project-specific strongly-typed agents
186
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
187
+ export interface AgentRegistry {
188
+ ${runtimeAgentTypes}
189
+ }
190
+ }
191
+
192
+ // Augment Hono Context to provide strongly-typed agents and runtime services
193
+ // Note: Properties are added to Context via middleware in @agentuity/runtime
194
+ declare module "hono" {
195
+ interface Context {
196
+ agentName: LocalAgentName;
197
+ agent: {
198
+ ${honoAgentTypes}
199
+ };
200
+ waitUntil: (promise: Promise<void> | (() => void | Promise<void>)) => void;
201
+ logger: Logger;
202
+ kv: KeyValueStorage;
203
+ objectstore: ObjectStorage;
204
+ stream: StreamStorage;
205
+ vector: VectorStorage;
206
+ }
207
+ }
208
+
209
+ // Augment @agentuity/react types with strongly-typed agents from this project
210
+ declare module '@agentuity/react' {
211
+ interface AgentRegistry {
212
+ ${reactAgentTypes}
213
+ }
214
+ }
215
+ `;
216
+ const agentsDir = join(srcDir, 'agents');
217
+ const registryPath = join(agentsDir, 'registry.generated.ts');
218
+ const legacyTypesPath = join(agentsDir, 'types.generated.d.ts');
219
+ // Ensure agents directory exists
220
+ if (!existsSync(agentsDir)) {
221
+ mkdirSync(agentsDir, { recursive: true });
222
+ }
223
+ writeFileSync(registryPath, generatedContent, 'utf-8');
224
+ // Remove legacy types.generated.d.ts if it exists (now consolidated into registry.generated.ts)
225
+ if (existsSync(legacyTypesPath)) {
226
+ unlinkSync(legacyTypesPath);
227
+ }
228
+ }
229
+ let metadata;
230
+ export function getBuildMetadata() {
231
+ return metadata;
232
+ }
233
+ const AgentuityBundler = {
234
+ name: 'Agentuity Bundler',
235
+ setup(build) {
236
+ const rootDir = resolve(build.config.root ?? '.');
237
+ const srcDir = join(rootDir, 'src');
238
+ const projectId = build.config.define?.['process.env.AGENTUITY_CLOUD_PROJECT_ID']
239
+ ? JSON.parse(build.config.define['process.env.AGENTUITY_CLOUD_PROJECT_ID'])
240
+ : '';
241
+ const deploymentId = build.config.define?.['process.env.AGENTUITY_CLOUD_DEPLOYMENT_ID']
242
+ ? JSON.parse(build.config.define['process.env.AGENTUITY_CLOUD_DEPLOYMENT_ID'])
243
+ : '';
244
+ const routes = new Set();
245
+ const agentInfo = [];
246
+ const agentMetadata = new Map();
247
+ const transpiler = new Bun.Transpiler({ loader: 'ts', target: 'bun' });
248
+ let routeDefinitions = [];
249
+ build.onResolve({ filter: /\/route\.ts$/, namespace: 'file' }, async (args) => {
250
+ if (args.path.startsWith(srcDir)) {
251
+ const importPath = args.path
252
+ .replace(rootDir, '')
253
+ .replace('.ts', '')
254
+ .replace('/src/', './');
255
+ routes.add(importPath);
256
+ }
257
+ return args;
258
+ });
259
+ build.onLoad({ filter: /\/route\.ts$/, namespace: 'file' }, async (args) => {
260
+ if (args.path.startsWith(srcDir)) {
261
+ const importPath = args.path
262
+ .replace(rootDir, '')
263
+ .replace('.ts', '')
264
+ .replace('/src/', './');
265
+ routes.add(importPath);
266
+ }
267
+ // return undefined to let Bun handle loading normally
268
+ return;
269
+ });
270
+ build.onLoad({ filter: /\/agent\.ts$/, namespace: 'file' }, async (args) => {
271
+ let newsource = await Bun.file(args.path).text();
272
+ if (args.path.startsWith(srcDir)) {
273
+ const contents = transpiler.transformSync(newsource);
274
+ const [ns, md] = await parseAgentMetadata(rootDir, args.path, contents, projectId, deploymentId);
275
+ newsource = ns;
276
+ // Detect if this is a subagent by checking path structure
277
+ // Note: Path structure assumption - 4 segments: agents/parent/child/agent.ts
278
+ const { isSubagent, parentName } = detectSubagent(args.path, srcDir);
279
+ if (isSubagent && parentName) {
280
+ md.set('parent', parentName);
281
+ }
282
+ const newAgentName = md.get('name');
283
+ for (const [, kv] of agentMetadata) {
284
+ const found = kv.get('name');
285
+ if (newAgentName === found) {
286
+ throw new Error(`The agent in ${kv.get('filename')} and the agent in ${md.get('filename')} have the same name (${found}). Agent Names must be unique within a project.`);
287
+ }
288
+ }
289
+ agentMetadata.set(md.get('identifier'), md);
290
+ }
291
+ return {
292
+ contents: newsource,
293
+ loader: 'ts',
294
+ };
295
+ });
296
+ build.onLoad({ filter: /\/eval\.ts$/, namespace: 'file' }, async (args) => {
297
+ let newsource = await Bun.file(args.path).text();
298
+ if (args.path.startsWith(srcDir)) {
299
+ const contents = transpiler.transformSync(newsource);
300
+ const [ns] = parseEvalMetadata(rootDir, args.path, contents, projectId, deploymentId);
301
+ newsource = ns;
302
+ }
303
+ return {
304
+ contents: newsource,
305
+ loader: 'ts',
306
+ };
307
+ });
308
+ const patches = generatePatches();
309
+ for (const [, patch] of patches) {
310
+ let modulePath = join('node_modules', patch.module, '.*');
311
+ if (patch.filename) {
312
+ modulePath = join('node_modules', patch.module, patch.filename + '.*');
313
+ }
314
+ build.onLoad({
315
+ filter: new RegExp(modulePath),
316
+ namespace: 'file',
317
+ }, async (args) => {
318
+ if (build.config.target !== 'bun') {
319
+ return;
320
+ }
321
+ const [contents, loader] = await applyPatch(args.path, patch);
322
+ return {
323
+ contents,
324
+ loader,
325
+ };
326
+ });
327
+ }
328
+ build.onLoad({
329
+ filter: new RegExp(join(rootDir, 'app.ts')),
330
+ namespace: 'file',
331
+ }, async (args) => {
332
+ const logger = createLogger(process.env.AGENTUITY_LOG_LEVEL || 'info');
333
+ if (build.config.target !== 'bun') {
334
+ return;
335
+ }
336
+ await args.defer();
337
+ const inserts = [];
338
+ const routeMapping = {};
339
+ for (const route of routes) {
340
+ const name = basename(dirname(route));
341
+ const agent = route.replace(/\/route$/, '/agent');
342
+ const hasAgent = existsSync(join(srcDir, agent + '.ts'));
343
+ // Detect if this is a subagent route using shared utility
344
+ const { isSubagent, parentName } = detectSubagent(route);
345
+ const agentPath = route
346
+ .replace(/\/route$/, '/*')
347
+ .replace('/agents', '/agent')
348
+ .replace('./', '/');
349
+ const routePath = route
350
+ .replace(/\/route$/, '')
351
+ .replace('/apis/', '/api/')
352
+ .replace('/apis', '/api')
353
+ .replace('/agents', '/agent')
354
+ .replace('/agents', '/agent')
355
+ .replace('./', '/');
356
+ const definitions = await parseRoute(rootDir, join(srcDir, `${route}.ts`), projectId, deploymentId);
357
+ routeDefinitions = [...routeDefinitions, ...definitions];
358
+ let agentDetail = {};
359
+ if (hasAgent) {
360
+ const md = agentMetadata.get(name);
361
+ if (!md) {
362
+ throw new Error(`Couldn't find agent metadata for ${route}`);
363
+ }
364
+ agentDetail = {
365
+ name,
366
+ path: `.${agent}`,
367
+ filename: md.get('filename'),
368
+ identifier: md.get('identifier'),
369
+ description: md.get('description') ?? '',
370
+ agentId: md.get('agentId'),
371
+ };
372
+ if (isSubagent && parentName) {
373
+ agentDetail.parent = parentName;
374
+ }
375
+ agentInfo.push(agentDetail);
376
+ }
377
+ let buffer = `await (async() => {
378
+ const { createAgentMiddleware, getRouter, registerAgent } = await import('@agentuity/runtime');
379
+ const router = getRouter()!;
380
+ const route = require('./src/${route}').default;`;
381
+ if (hasAgent) {
382
+ const agentRegistrationName = isSubagent && parentName ? `${parentName}.${name}` : name;
383
+ // Build evals path from agent path (e.g., 'agents/eval/agent' -> 'agents/eval/eval.ts')
384
+ const agentDirPath = agent.replace(/\/agent$/, '');
385
+ const evalsPath = join(srcDir, agentDirPath, 'eval.ts');
386
+ const evalsImport = existsSync(evalsPath)
387
+ ? `\n require('./src/${agentDirPath}/eval');`
388
+ : '';
389
+ buffer += `
390
+ const agent = require('./src/${agent}').default;
391
+ router.all("${agentPath}", createAgentMiddleware('${agentRegistrationName}'));
392
+ registerAgent("${agentRegistrationName}", agent);${evalsImport}`;
393
+ }
394
+ buffer += `
395
+ router.route("${routePath}", route);
396
+ })();`;
397
+ inserts.push(buffer);
398
+ for (const def of definitions) {
399
+ routeMapping[`${def.method} ${def.path}`] = def.id;
400
+ }
401
+ }
402
+ const indexFile = join(srcDir, 'web', 'index.html');
403
+ if (existsSync(indexFile)) {
404
+ inserts.unshift(`await (async () => {
405
+ const { serveStatic } = require('hono/bun');
406
+ const { getRouter } = await import('@agentuity/runtime');
407
+ const router = getRouter()!;
408
+ const index = await Bun.file(import.meta.dir + '/web/index.html').text();
409
+ const webstatic = serveStatic({ root: import.meta.dir + '/web' });
410
+ router.get('/', (c) => c.html(index));
411
+ router.get('/web/chunk/*', webstatic);
412
+ router.get('/web/asset/*', webstatic);
413
+ router.get('/public/*', webstatic);
414
+ })();`);
415
+ }
416
+ // Only generate registry if there are agents
417
+ // Note: We don't import the registry here because:
418
+ // 1. Evals are already imported when agents are registered (see line 421-422)
419
+ // 2. The registry is for type definitions only, not runtime execution
420
+ // 3. Importing it causes bundler resolution issues since it's generated during build
421
+ if (agentInfo.length > 0) {
422
+ generateAgentRegistry(srcDir, agentInfo);
423
+ }
424
+ // create the workbench routes
425
+ inserts.push(`await (async() => {
426
+ const { createWorkbenchMetadataRoute, getRouter } = await import('@agentuity/runtime');
427
+ const router = getRouter()!;
428
+ router.get('/_agentuity/workbench/metadata.json', createWorkbenchMetadataRoute());
429
+ })();`);
430
+ const file = Bun.file(args.path);
431
+ let contents = await file.text();
432
+ let inserted = false;
433
+ let index = contents.indexOf(' createApp(');
434
+ if (index < 0) {
435
+ index = contents.indexOf(' createApp (');
436
+ }
437
+ if (index < 0) {
438
+ throw new Error(`couldn't find the required createApp function in ${args.path}`);
439
+ }
440
+ const endSemi = contents.indexOf(');', index);
441
+ if (endSemi > 0) {
442
+ contents =
443
+ contents.slice(0, endSemi + 2) +
444
+ '\n\n' +
445
+ inserts.join('\n') +
446
+ contents.slice(endSemi + 2);
447
+ inserted = true;
448
+ }
449
+ if (!inserted) {
450
+ contents += `\n${inserts.join('\n')}`;
451
+ }
452
+ // generate the build metadata
453
+ metadata = {
454
+ routes: routeDefinitions,
455
+ agents: [],
456
+ };
457
+ // Group agents by parent/child relationship
458
+ const parentAgentMetadata = new Map();
459
+ const subagentsByParent = new Map();
460
+ for (const [, v] of agentMetadata) {
461
+ if (!v.has('filename')) {
462
+ throw new Error('agent metadata is missing expected filename property');
463
+ }
464
+ if (!v.has('id')) {
465
+ throw new Error('agent metadata is missing expected id property');
466
+ }
467
+ if (!v.has('identifier')) {
468
+ throw new Error('agent metadata is missing expected identifier property');
469
+ }
470
+ if (!v.has('version')) {
471
+ throw new Error('agent metadata is missing expected version property');
472
+ }
473
+ if (!v.has('name')) {
474
+ throw new Error('agent metadata is missing expected name property');
475
+ }
476
+ const parentName = v.get('parent');
477
+ if (parentName) {
478
+ // This is a subagent
479
+ if (!subagentsByParent.has(parentName)) {
480
+ subagentsByParent.set(parentName, []);
481
+ }
482
+ subagentsByParent.get(parentName).push(v);
483
+ }
484
+ else {
485
+ // This is a parent or standalone agent
486
+ parentAgentMetadata.set(v.get('identifier'), v);
487
+ }
488
+ }
489
+ // Validate that all subagents reference existing parent agents
490
+ for (const [parentName, subagents] of subagentsByParent) {
491
+ const parentExists = Array.from(parentAgentMetadata.values()).some((meta) => meta.get('name') === parentName || meta.get('identifier') === parentName);
492
+ if (!parentExists) {
493
+ const subagentPaths = subagents.map((s) => s.get('filename')).join(', ');
494
+ throw new Error(`Subagent(s) [${subagentPaths}] reference parent "${parentName}" which does not exist. ` +
495
+ `Ensure the parent agent is defined.`);
496
+ }
497
+ }
498
+ // Build metadata with nested subagents
499
+ for (const [_identifier, v] of parentAgentMetadata) {
500
+ const agentData = {
501
+ filename: v.get('filename'),
502
+ id: v.get('id'),
503
+ identifier: v.get('identifier'),
504
+ agentId: v.get('agentId'),
505
+ version: v.get('version'),
506
+ name: v.get('name'),
507
+ description: v.get('description') ?? '<no description provided>',
508
+ projectId,
509
+ };
510
+ const evalsStr = v.get('evals');
511
+ if (evalsStr) {
512
+ logger.trace(`[plugin] Found evals string for agent ${agentData.name}, parsing...`);
513
+ try {
514
+ const parsedEvals = JSON.parse(evalsStr);
515
+ agentData.evals = parsedEvals.map((evalItem) => ({
516
+ ...evalItem,
517
+ agentIdentifier: agentData.agentId,
518
+ projectId,
519
+ }));
520
+ logger.trace(`[plugin] Successfully parsed ${agentData.evals?.length ?? 0} eval(s) for agent ${agentData.name}`);
521
+ }
522
+ catch (e) {
523
+ logger.trace(`[plugin] Failed to parse evals for agent ${agentData.name}: ${e}`);
524
+ console.warn(`Failed to parse evals for agent ${agentData.name}: ${e}`);
525
+ }
526
+ }
527
+ else {
528
+ logger.trace(`[plugin] No evals found for agent ${agentData.name}`);
529
+ }
530
+ // Add subagents if any (check both name and identifier)
531
+ const subagents = subagentsByParent.get(agentData.name) ||
532
+ subagentsByParent.get(agentData.identifier);
533
+ if (subagents && subagents.length > 0) {
534
+ agentData.subagents = subagents.map((sub) => {
535
+ const subagentData = {
536
+ filename: sub.get('filename'),
537
+ id: sub.get('id'),
538
+ identifier: sub.get('identifier'),
539
+ agentId: sub.get('agentId'),
540
+ version: sub.get('version'),
541
+ name: sub.get('name'),
542
+ description: sub.get('description') ?? '<no description provided>',
543
+ projectId,
544
+ };
545
+ // Add evals for subagents if any
546
+ const subEvalsStr = sub.get('evals');
547
+ if (subEvalsStr) {
548
+ logger.trace(`[plugin] Found evals string for subagent ${subagentData.name}, parsing...`);
549
+ try {
550
+ const parsedSubEvals = JSON.parse(subEvalsStr);
551
+ subagentData.evals = parsedSubEvals.map((evalItem) => ({
552
+ ...evalItem,
553
+ agentIdentifier: subagentData.agentId,
554
+ projectId,
555
+ }));
556
+ logger.trace(`[plugin] Successfully parsed ${subagentData.evals?.length ?? 0} eval(s) for subagent ${subagentData.name}`);
557
+ }
558
+ catch (e) {
559
+ logger.trace(`[plugin] Failed to parse evals for subagent ${subagentData.name}: ${e}`);
560
+ console.warn(`Failed to parse evals for subagent ${subagentData.name}: ${e}`);
561
+ }
562
+ }
563
+ else {
564
+ logger.trace(`[plugin] No evals found for subagent ${subagentData.name}`);
565
+ }
566
+ return subagentData;
567
+ });
568
+ }
569
+ metadata.agents.push(agentData);
570
+ }
571
+ const routeMappingJSFile = Bun.file(join(build.config.outdir, '.routemapping.json'));
572
+ await routeMappingJSFile.write(JSON.stringify(routeMapping));
573
+ return {
574
+ contents,
575
+ loader: 'ts',
576
+ };
577
+ });
578
+ },
579
+ };
580
+ export default AgentuityBundler;
581
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/cmd/build/plugin.ts"],"names":[],"mappings":"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"}