@agentuity/cli 0.0.95 → 0.0.96

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 (267) hide show
  1. package/AGENTS.md +54 -0
  2. package/dist/auth.d.ts +1 -1
  3. package/dist/auth.d.ts.map +1 -1
  4. package/dist/auth.js +8 -5
  5. package/dist/auth.js.map +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +190 -27
  8. package/dist/cli.js.map +1 -1
  9. package/dist/cmd/build/entry-generator.d.ts +20 -0
  10. package/dist/cmd/build/entry-generator.d.ts.map +1 -0
  11. package/dist/cmd/build/entry-generator.js +366 -0
  12. package/dist/cmd/build/entry-generator.js.map +1 -0
  13. package/dist/cmd/build/index.d.ts.map +1 -1
  14. package/dist/cmd/build/index.js +5 -23
  15. package/dist/cmd/build/index.js.map +1 -1
  16. package/dist/cmd/build/vite/agent-discovery.d.ts +33 -0
  17. package/dist/cmd/build/vite/agent-discovery.d.ts.map +1 -0
  18. package/dist/cmd/build/vite/agent-discovery.js +297 -0
  19. package/dist/cmd/build/vite/agent-discovery.js.map +1 -0
  20. package/dist/cmd/build/vite/browser-env-plugin.d.ts +9 -0
  21. package/dist/cmd/build/vite/browser-env-plugin.d.ts.map +1 -0
  22. package/dist/cmd/build/vite/browser-env-plugin.js +28 -0
  23. package/dist/cmd/build/vite/browser-env-plugin.js.map +1 -0
  24. package/dist/cmd/build/vite/bun-dev-server.d.ts +29 -0
  25. package/dist/cmd/build/vite/bun-dev-server.d.ts.map +1 -0
  26. package/dist/cmd/build/vite/bun-dev-server.js +54 -0
  27. package/dist/cmd/build/vite/bun-dev-server.js.map +1 -0
  28. package/dist/cmd/build/vite/config-loader.d.ts +23 -0
  29. package/dist/cmd/build/vite/config-loader.d.ts.map +1 -0
  30. package/dist/cmd/build/vite/config-loader.js +50 -0
  31. package/dist/cmd/build/vite/config-loader.js.map +1 -0
  32. package/dist/cmd/build/vite/index.d.ts +26 -0
  33. package/dist/cmd/build/vite/index.d.ts.map +1 -0
  34. package/dist/cmd/build/vite/index.js +127 -0
  35. package/dist/cmd/build/vite/index.js.map +1 -0
  36. package/dist/cmd/build/vite/lifecycle-generator.d.ts +11 -0
  37. package/dist/cmd/build/vite/lifecycle-generator.d.ts.map +1 -0
  38. package/dist/cmd/build/vite/lifecycle-generator.js +35 -0
  39. package/dist/cmd/build/vite/lifecycle-generator.js.map +1 -0
  40. package/dist/cmd/build/vite/metadata-generator.d.ts +32 -0
  41. package/dist/cmd/build/vite/metadata-generator.d.ts.map +1 -0
  42. package/dist/cmd/build/vite/metadata-generator.js +489 -0
  43. package/dist/cmd/build/vite/metadata-generator.js.map +1 -0
  44. package/dist/cmd/build/vite/patch-plugin.d.ts +21 -0
  45. package/dist/cmd/build/vite/patch-plugin.d.ts.map +1 -0
  46. package/dist/cmd/build/vite/patch-plugin.js +70 -0
  47. package/dist/cmd/build/vite/patch-plugin.js.map +1 -0
  48. package/dist/cmd/build/vite/registry-generator.d.ts +19 -0
  49. package/dist/cmd/build/vite/registry-generator.d.ts.map +1 -0
  50. package/dist/cmd/build/{route-registry.js → vite/registry-generator.js} +126 -48
  51. package/dist/cmd/build/vite/registry-generator.js.map +1 -0
  52. package/dist/cmd/build/vite/route-discovery.d.ts +58 -0
  53. package/dist/cmd/build/vite/route-discovery.d.ts.map +1 -0
  54. package/dist/cmd/build/vite/route-discovery.js +125 -0
  55. package/dist/cmd/build/vite/route-discovery.js.map +1 -0
  56. package/dist/cmd/build/vite/server-bundler.d.ts +16 -0
  57. package/dist/cmd/build/vite/server-bundler.d.ts.map +1 -0
  58. package/dist/cmd/build/vite/server-bundler.js +194 -0
  59. package/dist/cmd/build/vite/server-bundler.js.map +1 -0
  60. package/dist/cmd/build/vite/vite-asset-server-config.d.ts +19 -0
  61. package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +1 -0
  62. package/dist/cmd/build/vite/vite-asset-server-config.js +105 -0
  63. package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -0
  64. package/dist/cmd/build/vite/vite-asset-server.d.ts +23 -0
  65. package/dist/cmd/build/vite/vite-asset-server.d.ts.map +1 -0
  66. package/dist/cmd/build/vite/vite-asset-server.js +40 -0
  67. package/dist/cmd/build/vite/vite-asset-server.js.map +1 -0
  68. package/dist/cmd/build/vite/vite-builder.d.ts +44 -0
  69. package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -0
  70. package/dist/cmd/build/vite/vite-builder.js +232 -0
  71. package/dist/cmd/build/vite/vite-builder.js.map +1 -0
  72. package/dist/cmd/build/vite/workbench-generator.d.ts +10 -0
  73. package/dist/cmd/build/vite/workbench-generator.d.ts.map +1 -0
  74. package/dist/cmd/build/vite/workbench-generator.js +135 -0
  75. package/dist/cmd/build/vite/workbench-generator.js.map +1 -0
  76. package/dist/cmd/build/vite-bundler.d.ts +23 -0
  77. package/dist/cmd/build/vite-bundler.d.ts.map +1 -0
  78. package/dist/cmd/build/vite-bundler.js +79 -0
  79. package/dist/cmd/build/vite-bundler.js.map +1 -0
  80. package/dist/cmd/cloud/agent/get.d.ts.map +1 -1
  81. package/dist/cmd/cloud/agent/get.js +1 -0
  82. package/dist/cmd/cloud/agent/get.js.map +1 -1
  83. package/dist/cmd/cloud/agent/list.d.ts.map +1 -1
  84. package/dist/cmd/cloud/agent/list.js +1 -0
  85. package/dist/cmd/cloud/agent/list.js.map +1 -1
  86. package/dist/cmd/cloud/db/get.d.ts.map +1 -1
  87. package/dist/cmd/cloud/db/get.js +1 -0
  88. package/dist/cmd/cloud/db/get.js.map +1 -1
  89. package/dist/cmd/cloud/db/list.d.ts.map +1 -1
  90. package/dist/cmd/cloud/db/list.js +1 -0
  91. package/dist/cmd/cloud/db/list.js.map +1 -1
  92. package/dist/cmd/cloud/deploy.d.ts.map +1 -1
  93. package/dist/cmd/cloud/deploy.js +152 -128
  94. package/dist/cmd/cloud/deploy.js.map +1 -1
  95. package/dist/cmd/cloud/deployment/list.d.ts.map +1 -1
  96. package/dist/cmd/cloud/deployment/list.js +4 -0
  97. package/dist/cmd/cloud/deployment/list.js.map +1 -1
  98. package/dist/cmd/cloud/env/list.d.ts.map +1 -1
  99. package/dist/cmd/cloud/env/list.js +1 -0
  100. package/dist/cmd/cloud/env/list.js.map +1 -1
  101. package/dist/cmd/cloud/keyvalue/get.d.ts.map +1 -1
  102. package/dist/cmd/cloud/keyvalue/get.js +1 -0
  103. package/dist/cmd/cloud/keyvalue/get.js.map +1 -1
  104. package/dist/cmd/cloud/keyvalue/keys.d.ts.map +1 -1
  105. package/dist/cmd/cloud/keyvalue/keys.js +1 -0
  106. package/dist/cmd/cloud/keyvalue/keys.js.map +1 -1
  107. package/dist/cmd/cloud/keyvalue/list-namespaces.d.ts.map +1 -1
  108. package/dist/cmd/cloud/keyvalue/list-namespaces.js +1 -0
  109. package/dist/cmd/cloud/keyvalue/list-namespaces.js.map +1 -1
  110. package/dist/cmd/cloud/keyvalue/stats.d.ts.map +1 -1
  111. package/dist/cmd/cloud/keyvalue/stats.js +1 -0
  112. package/dist/cmd/cloud/keyvalue/stats.js.map +1 -1
  113. package/dist/cmd/cloud/secret/list.d.ts.map +1 -1
  114. package/dist/cmd/cloud/secret/list.js +1 -0
  115. package/dist/cmd/cloud/secret/list.js.map +1 -1
  116. package/dist/cmd/cloud/session/list.d.ts.map +1 -1
  117. package/dist/cmd/cloud/session/list.js +4 -0
  118. package/dist/cmd/cloud/session/list.js.map +1 -1
  119. package/dist/cmd/cloud/storage/get.d.ts.map +1 -1
  120. package/dist/cmd/cloud/storage/get.js +1 -0
  121. package/dist/cmd/cloud/storage/get.js.map +1 -1
  122. package/dist/cmd/cloud/storage/list.d.ts.map +1 -1
  123. package/dist/cmd/cloud/storage/list.js +3 -0
  124. package/dist/cmd/cloud/storage/list.js.map +1 -1
  125. package/dist/cmd/cloud/stream/get.d.ts.map +1 -1
  126. package/dist/cmd/cloud/stream/get.js +1 -0
  127. package/dist/cmd/cloud/stream/get.js.map +1 -1
  128. package/dist/cmd/cloud/stream/list.d.ts.map +1 -1
  129. package/dist/cmd/cloud/stream/list.js +1 -0
  130. package/dist/cmd/cloud/stream/list.js.map +1 -1
  131. package/dist/cmd/cloud/vector/get.d.ts.map +1 -1
  132. package/dist/cmd/cloud/vector/get.js +1 -0
  133. package/dist/cmd/cloud/vector/get.js.map +1 -1
  134. package/dist/cmd/cloud/vector/search.d.ts.map +1 -1
  135. package/dist/cmd/cloud/vector/search.js +1 -0
  136. package/dist/cmd/cloud/vector/search.js.map +1 -1
  137. package/dist/cmd/dev/index.d.ts.map +1 -1
  138. package/dist/cmd/dev/index.js +289 -758
  139. package/dist/cmd/dev/index.js.map +1 -1
  140. package/dist/cmd/dev/sync.d.ts +1 -1
  141. package/dist/cmd/dev/sync.d.ts.map +1 -1
  142. package/dist/cmd/dev/sync.js +3 -0
  143. package/dist/cmd/dev/sync.js.map +1 -1
  144. package/dist/cmd/profile/show.d.ts.map +1 -1
  145. package/dist/cmd/profile/show.js +3 -4
  146. package/dist/cmd/profile/show.js.map +1 -1
  147. package/dist/cmd/project/create.d.ts.map +1 -1
  148. package/dist/cmd/project/create.js +3 -4
  149. package/dist/cmd/project/create.js.map +1 -1
  150. package/dist/cmd/project/list.d.ts.map +1 -1
  151. package/dist/cmd/project/list.js +1 -0
  152. package/dist/cmd/project/list.js.map +1 -1
  153. package/dist/cmd/project/show.d.ts.map +1 -1
  154. package/dist/cmd/project/show.js +1 -0
  155. package/dist/cmd/project/show.js.map +1 -1
  156. package/dist/cmd/upgrade/index.d.ts.map +1 -1
  157. package/dist/cmd/upgrade/index.js +5 -3
  158. package/dist/cmd/upgrade/index.js.map +1 -1
  159. package/dist/config.d.ts +1 -1
  160. package/dist/config.d.ts.map +1 -1
  161. package/dist/config.js +29 -11
  162. package/dist/config.js.map +1 -1
  163. package/dist/index.d.ts +1 -1
  164. package/dist/index.d.ts.map +1 -1
  165. package/dist/index.js.map +1 -1
  166. package/dist/runtime-bootstrap.d.ts +3 -2
  167. package/dist/runtime-bootstrap.d.ts.map +1 -1
  168. package/dist/runtime-bootstrap.js +7 -2
  169. package/dist/runtime-bootstrap.js.map +1 -1
  170. package/dist/schemas/deploy.d.ts +1 -1
  171. package/dist/types.d.ts +40 -1
  172. package/dist/types.d.ts.map +1 -1
  173. package/dist/types.js.map +1 -1
  174. package/dist/utils/bun-version-checker.d.ts +11 -0
  175. package/dist/utils/bun-version-checker.d.ts.map +1 -0
  176. package/dist/utils/bun-version-checker.js +56 -0
  177. package/dist/utils/bun-version-checker.js.map +1 -0
  178. package/dist/version-check.d.ts.map +1 -1
  179. package/dist/version-check.js +5 -2
  180. package/dist/version-check.js.map +1 -1
  181. package/package.json +10 -3
  182. package/src/auth.ts +9 -5
  183. package/src/cli.ts +228 -29
  184. package/src/cmd/build/entry-generator.ts +404 -0
  185. package/src/cmd/build/index.ts +7 -28
  186. package/src/cmd/build/vite/agent-discovery.ts +467 -0
  187. package/src/cmd/build/vite/browser-env-plugin.ts +34 -0
  188. package/src/cmd/build/vite/bun-dev-server.ts +78 -0
  189. package/src/cmd/build/vite/config-loader.ts +70 -0
  190. package/src/cmd/build/vite/index.ts +166 -0
  191. package/src/cmd/build/vite/lifecycle-generator.ts +43 -0
  192. package/src/cmd/build/vite/metadata-generator.ts +602 -0
  193. package/src/cmd/build/vite/patch-plugin.ts +88 -0
  194. package/src/cmd/build/vite/registry-generator.ts +288 -0
  195. package/src/cmd/build/vite/route-discovery.ts +186 -0
  196. package/src/cmd/build/vite/server-bundler.ts +258 -0
  197. package/src/cmd/build/vite/vite-asset-server-config.ts +134 -0
  198. package/src/cmd/build/vite/vite-asset-server.ts +63 -0
  199. package/src/cmd/build/vite/vite-builder.ts +284 -0
  200. package/src/cmd/build/vite/workbench-generator.ts +152 -0
  201. package/src/cmd/build/vite-bundler.ts +110 -0
  202. package/src/cmd/cloud/agent/get.ts +2 -0
  203. package/src/cmd/cloud/agent/list.ts +1 -0
  204. package/src/cmd/cloud/db/get.ts +1 -0
  205. package/src/cmd/cloud/db/list.ts +1 -0
  206. package/src/cmd/cloud/deploy.ts +175 -144
  207. package/src/cmd/cloud/deployment/list.ts +4 -0
  208. package/src/cmd/cloud/env/list.ts +1 -0
  209. package/src/cmd/cloud/keyvalue/get.ts +1 -0
  210. package/src/cmd/cloud/keyvalue/keys.ts +1 -0
  211. package/src/cmd/cloud/keyvalue/list-namespaces.ts +1 -0
  212. package/src/cmd/cloud/keyvalue/stats.ts +2 -0
  213. package/src/cmd/cloud/secret/list.ts +1 -0
  214. package/src/cmd/cloud/session/list.ts +4 -0
  215. package/src/cmd/cloud/storage/get.ts +1 -0
  216. package/src/cmd/cloud/storage/list.ts +4 -0
  217. package/src/cmd/cloud/stream/get.ts +1 -0
  218. package/src/cmd/cloud/stream/list.ts +1 -0
  219. package/src/cmd/cloud/vector/get.ts +1 -0
  220. package/src/cmd/cloud/vector/search.ts +1 -0
  221. package/src/cmd/dev/index.ts +319 -921
  222. package/src/cmd/dev/sync.ts +5 -1
  223. package/src/cmd/profile/show.ts +3 -4
  224. package/src/cmd/project/create.ts +3 -4
  225. package/src/cmd/project/list.ts +1 -0
  226. package/src/cmd/project/show.ts +1 -0
  227. package/src/cmd/upgrade/index.ts +6 -3
  228. package/src/config.ts +31 -11
  229. package/src/index.ts +2 -0
  230. package/src/runtime-bootstrap.ts +8 -2
  231. package/src/types.ts +48 -1
  232. package/src/utils/bun-version-checker.ts +70 -0
  233. package/src/version-check.ts +6 -2
  234. package/dist/cmd/build/bundler.d.ts +0 -28
  235. package/dist/cmd/build/bundler.d.ts.map +0 -1
  236. package/dist/cmd/build/bundler.js +0 -800
  237. package/dist/cmd/build/bundler.js.map +0 -1
  238. package/dist/cmd/build/config-loader.d.ts +0 -16
  239. package/dist/cmd/build/config-loader.d.ts.map +0 -1
  240. package/dist/cmd/build/config-loader.js +0 -227
  241. package/dist/cmd/build/config-loader.js.map +0 -1
  242. package/dist/cmd/build/file.d.ts +0 -2
  243. package/dist/cmd/build/file.d.ts.map +0 -1
  244. package/dist/cmd/build/file.js +0 -10
  245. package/dist/cmd/build/file.js.map +0 -1
  246. package/dist/cmd/build/fix-duplicate-exports.d.ts +0 -2
  247. package/dist/cmd/build/fix-duplicate-exports.d.ts.map +0 -1
  248. package/dist/cmd/build/fix-duplicate-exports.js +0 -170
  249. package/dist/cmd/build/fix-duplicate-exports.js.map +0 -1
  250. package/dist/cmd/build/plugin.d.ts +0 -6
  251. package/dist/cmd/build/plugin.d.ts.map +0 -1
  252. package/dist/cmd/build/plugin.js +0 -645
  253. package/dist/cmd/build/plugin.js.map +0 -1
  254. package/dist/cmd/build/route-discovery.d.ts +0 -54
  255. package/dist/cmd/build/route-discovery.d.ts.map +0 -1
  256. package/dist/cmd/build/route-discovery.js +0 -148
  257. package/dist/cmd/build/route-discovery.js.map +0 -1
  258. package/dist/cmd/build/route-registry.d.ts +0 -38
  259. package/dist/cmd/build/route-registry.d.ts.map +0 -1
  260. package/dist/cmd/build/route-registry.js.map +0 -1
  261. package/src/cmd/build/bundler.ts +0 -965
  262. package/src/cmd/build/config-loader.ts +0 -268
  263. package/src/cmd/build/file.ts +0 -10
  264. package/src/cmd/build/fix-duplicate-exports.ts +0 -207
  265. package/src/cmd/build/plugin.ts +0 -782
  266. package/src/cmd/build/route-discovery.ts +0 -202
  267. package/src/cmd/build/route-registry.ts +0 -222
@@ -0,0 +1,489 @@
1
+ /**
2
+ * Metadata Generator
3
+ *
4
+ * Generates agentuity.metadata.json and .routemapping.json from discovered agents and routes
5
+ */
6
+ import { join, dirname } from 'node:path';
7
+ import { writeFileSync, mkdirSync, existsSync, readFileSync, statSync, readdirSync } from 'node:fs';
8
+ import { getVersion } from '../../../version';
9
+ function getContentType(filename) {
10
+ const ext = filename.split('.').pop()?.toLowerCase();
11
+ switch (ext) {
12
+ case 'js':
13
+ case 'mjs':
14
+ return 'application/javascript';
15
+ case 'css':
16
+ return 'text/css';
17
+ case 'html':
18
+ return 'text/html';
19
+ case 'json':
20
+ return 'application/json';
21
+ case 'png':
22
+ return 'image/png';
23
+ case 'jpg':
24
+ case 'jpeg':
25
+ return 'image/jpeg';
26
+ case 'gif':
27
+ return 'image/gif';
28
+ case 'svg':
29
+ return 'image/svg+xml';
30
+ case 'webp':
31
+ return 'image/webp';
32
+ case 'ico':
33
+ return 'image/x-icon';
34
+ case 'woff':
35
+ return 'font/woff';
36
+ case 'woff2':
37
+ return 'font/woff2';
38
+ case 'ttf':
39
+ return 'font/ttf';
40
+ case 'eot':
41
+ return 'application/vnd.ms-fontobject';
42
+ default:
43
+ return 'application/octet-stream';
44
+ }
45
+ }
46
+ function getAssetKind(filename, isEntry = false) {
47
+ const ext = filename.split('.').pop()?.toLowerCase();
48
+ // Check for sourcemap
49
+ if (filename.endsWith('.js.map') || filename.endsWith('.css.map')) {
50
+ return 'sourcemap';
51
+ }
52
+ switch (ext) {
53
+ case 'js':
54
+ case 'mjs':
55
+ // Distinguish entry-point from regular scripts
56
+ return isEntry ? 'entry-point' : 'script';
57
+ case 'css':
58
+ return 'stylesheet';
59
+ case 'png':
60
+ case 'jpg':
61
+ case 'jpeg':
62
+ case 'gif':
63
+ case 'svg':
64
+ case 'webp':
65
+ return 'image';
66
+ case 'ico':
67
+ return 'asset';
68
+ case 'woff':
69
+ case 'woff2':
70
+ case 'ttf':
71
+ case 'eot':
72
+ return 'font';
73
+ default:
74
+ return 'other';
75
+ }
76
+ }
77
+ /**
78
+ * Normalize an agent filename/import path into a key for lookup
79
+ */
80
+ function normalizeImportKey(path) {
81
+ // Strip leading './' or 'src/' or '@'
82
+ let p = path.replace(/^src\//, '');
83
+ if (p.startsWith('./'))
84
+ p = p.slice(2);
85
+ if (p.startsWith('@'))
86
+ p = p.slice(1);
87
+ // Drop extension
88
+ p = p.replace(/\.(t|j)sx?$/, '');
89
+ // Drop common module file suffixes (agent.ts, index.ts become just the directory)
90
+ p = p.replace(/\/(agent|index)$/, '');
91
+ return p;
92
+ }
93
+ /**
94
+ * Generate agentuity.metadata.json
95
+ */
96
+ export async function generateMetadata(options) {
97
+ const { rootDir, projectId, orgId = '', agents, routes, logger } = options;
98
+ // Build agent lookup by import path for route schema enrichment
99
+ const agentsByImportKey = new Map();
100
+ for (const agent of agents) {
101
+ if (!agent.filename)
102
+ continue;
103
+ const key = normalizeImportKey(agent.filename);
104
+ agentsByImportKey.set(key, agent);
105
+ logger.trace(`Agent lookup: ${key} -> ${agent.name}`);
106
+ }
107
+ // Enrich routes with schemas from agents (if not already set)
108
+ const enrichedRoutes = routes.map((route) => {
109
+ let schema = route.schema ? { ...route.schema } : undefined;
110
+ const importPath = route.config?.agentImportPath;
111
+ if (importPath) {
112
+ const key = normalizeImportKey(importPath);
113
+ const agent = agentsByImportKey.get(key);
114
+ if (agent && (agent.inputSchemaCode || agent.outputSchemaCode)) {
115
+ // Initialize schema object if needed
116
+ if (!schema)
117
+ schema = {};
118
+ // Only fill in missing pieces; allow explicit route schema to override
119
+ if (!schema.input && agent.inputSchemaCode) {
120
+ schema.input = agent.inputSchemaCode;
121
+ logger.trace(`Route ${route.path}: added input schema from agent ${agent.name}`);
122
+ }
123
+ if (!schema.output && agent.outputSchemaCode) {
124
+ schema.output = agent.outputSchemaCode;
125
+ logger.trace(`Route ${route.path}: added output schema from agent ${agent.name}`);
126
+ }
127
+ }
128
+ else {
129
+ logger.trace(`No agent found for import path ${importPath} in route ${route.filename}`);
130
+ }
131
+ }
132
+ return {
133
+ ...route,
134
+ schema,
135
+ };
136
+ });
137
+ // Read package.json for project metadata
138
+ const pkgPath = join(rootDir, 'package.json');
139
+ let pkgContents = {};
140
+ if (existsSync(pkgPath)) {
141
+ try {
142
+ const pkgText = Bun.file(pkgPath);
143
+ pkgContents = JSON.parse(await pkgText.text());
144
+ }
145
+ catch (error) {
146
+ logger.warn(`Failed to read package.json: ${error}`);
147
+ }
148
+ }
149
+ // Read asset manifests from Vite builds
150
+ const assets = [];
151
+ const agentuityDir = join(rootDir, '.agentuity');
152
+ const seenAssets = new Set(); // Track unique assets to avoid duplicates
153
+ // Helper to add asset with metadata
154
+ const addAsset = (relativePath, prefix, isEntry = false) => {
155
+ const assetPath = `${prefix}/${relativePath}`;
156
+ // Skip if already added
157
+ if (seenAssets.has(assetPath)) {
158
+ return;
159
+ }
160
+ const fullPath = join(agentuityDir, prefix, relativePath);
161
+ if (existsSync(fullPath)) {
162
+ const stats = statSync(fullPath);
163
+ // Skip empty marker files (.gitkeep, .keep, etc.)
164
+ if (stats.size === 0) {
165
+ return;
166
+ }
167
+ seenAssets.add(assetPath);
168
+ assets.push({
169
+ filename: assetPath,
170
+ kind: getAssetKind(relativePath, isEntry),
171
+ contentType: getContentType(relativePath),
172
+ size: stats.size,
173
+ });
174
+ }
175
+ };
176
+ // Read client manifest
177
+ const clientManifestPath = join(agentuityDir, 'client', '.vite', 'manifest.json');
178
+ if (existsSync(clientManifestPath)) {
179
+ try {
180
+ const clientManifest = JSON.parse(readFileSync(clientManifestPath, 'utf-8'));
181
+ for (const entry of Object.values(clientManifest)) {
182
+ // Mark JS files as entry-point if they are entry files
183
+ const isEntry = entry.isEntry === true && entry.file.endsWith('.js');
184
+ addAsset(entry.file, 'client', isEntry);
185
+ // Add sourcemap if it exists
186
+ const sourcemapPath = entry.file + '.map';
187
+ const fullSourcemapPath = join(agentuityDir, 'client', sourcemapPath);
188
+ if (existsSync(fullSourcemapPath)) {
189
+ addAsset(sourcemapPath, 'client');
190
+ }
191
+ if (entry.css) {
192
+ entry.css.forEach((css) => {
193
+ addAsset(css, 'client');
194
+ // Add CSS sourcemap if it exists
195
+ const cssMapPath = css + '.map';
196
+ const fullCssMapPath = join(agentuityDir, 'client', cssMapPath);
197
+ if (existsSync(fullCssMapPath)) {
198
+ addAsset(cssMapPath, 'client');
199
+ }
200
+ });
201
+ }
202
+ if (entry.assets) {
203
+ entry.assets.forEach((asset) => addAsset(asset, 'client'));
204
+ }
205
+ }
206
+ logger.trace(`Found ${assets.length} client assets from manifest`);
207
+ }
208
+ catch (error) {
209
+ logger.warn(`Failed to read client manifest: ${error}`);
210
+ }
211
+ }
212
+ // Read workbench manifest (optional)
213
+ const workbenchManifestPath = join(agentuityDir, 'workbench', '.vite', 'manifest.json');
214
+ if (existsSync(workbenchManifestPath)) {
215
+ try {
216
+ const workbenchManifest = JSON.parse(readFileSync(workbenchManifestPath, 'utf-8'));
217
+ for (const entry of Object.values(workbenchManifest)) {
218
+ const isEntry = entry.isEntry === true && entry.file.endsWith('.js');
219
+ addAsset(entry.file, 'workbench', isEntry);
220
+ // Add sourcemap if it exists
221
+ const sourcemapPath = entry.file + '.map';
222
+ const fullSourcemapPath = join(agentuityDir, 'workbench', sourcemapPath);
223
+ if (existsSync(fullSourcemapPath)) {
224
+ addAsset(sourcemapPath, 'workbench');
225
+ }
226
+ if (entry.css) {
227
+ entry.css.forEach((css) => {
228
+ addAsset(css, 'workbench');
229
+ // Add CSS sourcemap if it exists
230
+ const cssMapPath = css + '.map';
231
+ const fullCssMapPath = join(agentuityDir, 'workbench', cssMapPath);
232
+ if (existsSync(fullCssMapPath)) {
233
+ addAsset(cssMapPath, 'workbench');
234
+ }
235
+ });
236
+ }
237
+ if (entry.assets) {
238
+ entry.assets.forEach((asset) => addAsset(asset, 'workbench'));
239
+ }
240
+ }
241
+ logger.trace(`Found ${assets.length} total assets (including workbench)`);
242
+ }
243
+ catch (error) {
244
+ logger.warn(`Failed to read workbench manifest: ${error}`);
245
+ }
246
+ }
247
+ // Scan public/ directory for static files
248
+ const publicDir = join(rootDir, 'public');
249
+ if (existsSync(publicDir)) {
250
+ try {
251
+ function scanDirectory(dir, prefix = '') {
252
+ const entries = readdirSync(dir, { withFileTypes: true });
253
+ for (const entry of entries) {
254
+ const relativePath = prefix ? `${prefix}/${entry.name}` : entry.name;
255
+ const fullPath = join(dir, entry.name);
256
+ if (entry.isDirectory()) {
257
+ scanDirectory(fullPath, relativePath);
258
+ }
259
+ else if (entry.isFile()) {
260
+ const stats = statSync(fullPath);
261
+ // Skip empty files
262
+ if (stats.size === 0)
263
+ continue;
264
+ const assetPath = `public/${relativePath}`;
265
+ if (!seenAssets.has(assetPath)) {
266
+ seenAssets.add(assetPath);
267
+ assets.push({
268
+ filename: assetPath,
269
+ kind: 'static',
270
+ contentType: getContentType(entry.name),
271
+ size: stats.size,
272
+ });
273
+ }
274
+ }
275
+ }
276
+ }
277
+ scanDirectory(publicDir);
278
+ logger.trace(`Found ${assets.length} total assets (including public/)`);
279
+ }
280
+ catch (error) {
281
+ logger.warn(`Failed to scan public directory: ${error}`);
282
+ }
283
+ }
284
+ // Build metadata structure
285
+ const metadata = {
286
+ routes: enrichedRoutes.map((route) => ({
287
+ id: route.id,
288
+ filename: route.filename,
289
+ path: route.path,
290
+ method: route.method,
291
+ version: route.version,
292
+ type: route.type,
293
+ agentIds: route.agentIds,
294
+ config: route.config,
295
+ schema: route.schema,
296
+ })),
297
+ agents: agents.map((agent) => ({
298
+ filename: agent.filename,
299
+ id: agent.id,
300
+ agentId: agent.agentId,
301
+ version: agent.version,
302
+ name: agent.name,
303
+ description: agent.description,
304
+ projectId,
305
+ schema: agent.inputSchemaCode || agent.outputSchemaCode
306
+ ? {
307
+ input: agent.inputSchemaCode,
308
+ output: agent.outputSchemaCode,
309
+ }
310
+ : undefined,
311
+ evals: agent.evals?.map((evalItem) => ({
312
+ filename: evalItem.filename,
313
+ id: evalItem.id,
314
+ evalId: evalItem.evalId,
315
+ name: evalItem.name,
316
+ version: evalItem.version,
317
+ description: evalItem.description,
318
+ agentIdentifier: evalItem.agentIdentifier,
319
+ projectId: evalItem.projectId,
320
+ })),
321
+ })),
322
+ assets,
323
+ project: {
324
+ id: projectId,
325
+ name: pkgContents.name || 'unknown',
326
+ version: pkgContents.version,
327
+ description: pkgContents.description,
328
+ keywords: pkgContents.keywords,
329
+ orgId,
330
+ },
331
+ deployment: {
332
+ id: options.deploymentId || '',
333
+ date: new Date().toISOString(),
334
+ build: {
335
+ bun: Bun.version,
336
+ agentuity: getVersion(), // CLI version used to build
337
+ arch: process.arch,
338
+ platform: process.platform,
339
+ },
340
+ git: await getGitInfo(rootDir, logger),
341
+ },
342
+ };
343
+ return metadata;
344
+ }
345
+ /**
346
+ * Get git information (branch, repo, provider, tags)
347
+ */
348
+ async function getGitInfo(rootDir, logger) {
349
+ if (!Bun.which('git')) {
350
+ logger.trace('git not found in PATH');
351
+ return undefined;
352
+ }
353
+ try {
354
+ // Find .git directory (may be in parent directories for monorepos)
355
+ let gitDir = join(rootDir, '.git');
356
+ let parentDir = dirname(dirname(gitDir));
357
+ while (!existsSync(gitDir) && parentDir !== dirname(parentDir) && gitDir !== '/') {
358
+ gitDir = join(parentDir, '.git');
359
+ parentDir = dirname(parentDir);
360
+ }
361
+ if (!existsSync(gitDir)) {
362
+ logger.trace('No .git directory found');
363
+ return undefined;
364
+ }
365
+ const $ = Bun.$;
366
+ const gitInfo = {
367
+ provider: 'git',
368
+ };
369
+ // Get git tags pointing to HEAD
370
+ const tagResult = $ `git tag -l --points-at HEAD`.nothrow().quiet();
371
+ if (tagResult) {
372
+ const tagText = await tagResult.text();
373
+ if (tagText) {
374
+ gitInfo.tags = tagText
375
+ .trim()
376
+ .split(/\n/)
377
+ .map((s) => s.trim())
378
+ .filter(Boolean);
379
+ }
380
+ }
381
+ // Get current branch
382
+ const branchResult = $ `git branch --show-current`.nothrow().quiet();
383
+ if (branchResult) {
384
+ const branchText = await branchResult.text();
385
+ if (branchText) {
386
+ gitInfo.branch = branchText.trim();
387
+ }
388
+ }
389
+ // Get commit SHA
390
+ const commitResult = $ `git rev-parse HEAD`.nothrow().quiet();
391
+ if (commitResult) {
392
+ const commitText = await commitResult.text();
393
+ if (commitText) {
394
+ gitInfo.commit = commitText.trim();
395
+ // Get commit message
396
+ const msgResult = $ `git log --pretty=format:%s -n1 ${gitInfo.commit}`.nothrow().quiet();
397
+ if (msgResult) {
398
+ const msgText = await msgResult.text();
399
+ if (msgText) {
400
+ gitInfo.message = msgText.trim();
401
+ }
402
+ }
403
+ }
404
+ }
405
+ // Get remote origin URL and parse
406
+ const originResult = $ `git config --get remote.origin.url`.nothrow().quiet();
407
+ if (originResult) {
408
+ const originText = await originResult.text();
409
+ if (originText) {
410
+ const remoteUrl = originText.trim();
411
+ // Parse provider and repo from URL
412
+ if (remoteUrl.includes('github.com')) {
413
+ gitInfo.provider = 'github';
414
+ const match = remoteUrl.match(/github\.com[:/](.+?)(?:\.git)?$/);
415
+ if (match) {
416
+ gitInfo.repo = `https://github.com/${match[1]}`;
417
+ }
418
+ }
419
+ else if (remoteUrl.includes('gitlab.com')) {
420
+ gitInfo.provider = 'gitlab';
421
+ const match = remoteUrl.match(/gitlab\.com[:/](.+?)(?:\.git)?$/);
422
+ if (match) {
423
+ gitInfo.repo = `https://gitlab.com/${match[1]}`;
424
+ }
425
+ }
426
+ else if (remoteUrl.includes('bitbucket.org')) {
427
+ gitInfo.provider = 'bitbucket';
428
+ const match = remoteUrl.match(/bitbucket\.org[:/](.+?)(?:\.git)?$/);
429
+ if (match) {
430
+ gitInfo.repo = `https://bitbucket.org/${match[1]}`;
431
+ }
432
+ }
433
+ else {
434
+ gitInfo.repo = remoteUrl;
435
+ }
436
+ }
437
+ }
438
+ // Build tags array with defaults
439
+ const tags = new Set(gitInfo.tags ?? []);
440
+ tags.add('latest');
441
+ if (gitInfo.branch) {
442
+ tags.add(gitInfo.branch);
443
+ }
444
+ if (gitInfo.commit) {
445
+ tags.add(gitInfo.commit.substring(0, 7));
446
+ }
447
+ gitInfo.tags = Array.from(tags);
448
+ return gitInfo;
449
+ }
450
+ catch (error) {
451
+ logger.trace(`Failed to get git info: ${error}`);
452
+ return undefined;
453
+ }
454
+ }
455
+ /**
456
+ * Write agentuity.metadata.json to .agentuity directory
457
+ */
458
+ export function writeMetadataFile(rootDir, metadata, dev, logger) {
459
+ const agentuityDir = join(rootDir, '.agentuity');
460
+ // Ensure .agentuity directory exists
461
+ if (!existsSync(agentuityDir)) {
462
+ mkdirSync(agentuityDir, { recursive: true });
463
+ }
464
+ const metadataPath = join(agentuityDir, 'agentuity.metadata.json');
465
+ const metadataContent = dev ? JSON.stringify(metadata, null, 2) : JSON.stringify(metadata);
466
+ writeFileSync(metadataPath, metadataContent, 'utf-8');
467
+ logger.trace('Wrote agentuity.metadata.json');
468
+ }
469
+ /**
470
+ * Generate .routemapping.json for runtime route tracking
471
+ */
472
+ export function generateRouteMapping(rootDir, routes, dev, logger) {
473
+ const agentuityDir = join(rootDir, '.agentuity');
474
+ // Ensure .agentuity directory exists
475
+ if (!existsSync(agentuityDir)) {
476
+ mkdirSync(agentuityDir, { recursive: true });
477
+ }
478
+ const routeMapping = {};
479
+ for (const route of routes) {
480
+ routeMapping[`${route.method} ${route.path}`] = route.id;
481
+ }
482
+ const routeMappingPath = join(agentuityDir, '.routemapping.json');
483
+ const routeMappingContent = dev
484
+ ? JSON.stringify(routeMapping, null, 2)
485
+ : JSON.stringify(routeMapping);
486
+ writeFileSync(routeMappingPath, routeMappingContent, 'utf-8');
487
+ logger.trace('Wrote .routemapping.json');
488
+ }
489
+ //# sourceMappingURL=metadata-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-generator.js","sourceRoot":"","sources":["../../../../src/cmd/build/vite/metadata-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Vite Plugin for Runtime Patching
3
+ *
4
+ * Applies runtime patches to AI SDK packages to inject:
5
+ * - Agentuity AI Gateway routing
6
+ * - Telemetry enablement
7
+ * - Environment variable guards
8
+ *
9
+ * This plugin uses Vite's transform hook to modify module code during bundling.
10
+ */
11
+ import type { Plugin } from 'vite';
12
+ import type { Logger } from '../../../types';
13
+ export interface PatchPluginOptions {
14
+ logger: Logger;
15
+ dev?: boolean;
16
+ }
17
+ /**
18
+ * Create Vite plugin that patches AI SDK modules at build time
19
+ */
20
+ export declare function patchPlugin(options: PatchPluginOptions): Plugin;
21
+ //# sourceMappingURL=patch-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-plugin.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/patch-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAgE/D"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Vite Plugin for Runtime Patching
3
+ *
4
+ * Applies runtime patches to AI SDK packages to inject:
5
+ * - Agentuity AI Gateway routing
6
+ * - Telemetry enablement
7
+ * - Environment variable guards
8
+ *
9
+ * This plugin uses Vite's transform hook to modify module code during bundling.
10
+ */
11
+ import { generatePatches, applyPatch } from '../patch';
12
+ /**
13
+ * Create Vite plugin that patches AI SDK modules at build time
14
+ */
15
+ export function patchPlugin(options) {
16
+ const { logger } = options;
17
+ const patches = generatePatches();
18
+ // Log registered patches
19
+ logger.trace('Patch plugin initialized with %d patch(es)', patches.size);
20
+ for (const [moduleName] of patches) {
21
+ logger.trace(' - %s', moduleName);
22
+ }
23
+ return {
24
+ name: 'agentuity:patch',
25
+ enforce: 'post', // Run after other transforms
26
+ /**
27
+ * Transform hook - patches modules during bundling
28
+ */
29
+ async transform(code, id) {
30
+ // Check if this module needs patching
31
+ for (const [moduleName, patch] of patches) {
32
+ // Match module by package name
33
+ const normalizedId = id.replace(/\\/g, '/');
34
+ // Check if this file matches the patch module
35
+ // Example: node_modules/@ai-sdk/openai/dist/index.js
36
+ if (!normalizedId.includes(`node_modules/${moduleName}/`)) {
37
+ continue;
38
+ }
39
+ // If patch specifies a filename, ensure it matches
40
+ if (patch.filename) {
41
+ const expectedPath = `${moduleName}/${patch.filename}`;
42
+ if (!normalizedId.includes(expectedPath) &&
43
+ !normalizedId.includes(`${expectedPath}.js`) &&
44
+ !normalizedId.includes(`${expectedPath}.mjs`) &&
45
+ !normalizedId.includes(`${expectedPath}.ts`)) {
46
+ continue;
47
+ }
48
+ }
49
+ // Apply the patch
50
+ logger.debug('Applying patch to %s', moduleName);
51
+ try {
52
+ const [patchedCode] = await applyPatch(id, patch);
53
+ // Return transformed code with source map
54
+ return {
55
+ code: patchedCode,
56
+ map: null, // Could add source map generation here
57
+ };
58
+ }
59
+ catch (error) {
60
+ logger.warn('Failed to apply patch to %s: %s', moduleName, error);
61
+ // Continue without patching on error
62
+ return null;
63
+ }
64
+ }
65
+ // No patch needed
66
+ return null;
67
+ },
68
+ };
69
+ }
70
+ //# sourceMappingURL=patch-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-plugin.js","sourceRoot":"","sources":["../../../../src/cmd/build/vite/patch-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAOvD;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAA2B;IACtD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAElC,yBAAyB;IACzB,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,KAAK,MAAM,CAAC,UAAU,CAAC,IAAI,OAAO,EAAE,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,OAAO;QACN,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,MAAM,EAAE,6BAA6B;QAE9C;;WAEG;QACH,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,EAAU;YACvC,sCAAsC;YACtC,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;gBAC3C,+BAA+B;gBAC/B,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAE5C,8CAA8C;gBAC9C,qDAAqD;gBACrD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,UAAU,GAAG,CAAC,EAAE,CAAC;oBAC3D,SAAS;gBACV,CAAC;gBAED,mDAAmD;gBACnD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACpB,MAAM,YAAY,GAAG,GAAG,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACvD,IACC,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;wBACpC,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC;wBAC5C,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,YAAY,MAAM,CAAC;wBAC7C,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,EAC3C,CAAC;wBACF,SAAS;oBACV,CAAC;gBACF,CAAC;gBAED,kBAAkB;gBAClB,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;gBAEjD,IAAI,CAAC;oBACJ,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;oBAElD,0CAA0C;oBAC1C,OAAO;wBACN,IAAI,EAAE,WAAW;wBACjB,GAAG,EAAE,IAAI,EAAE,uCAAuC;qBAClD,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;oBAClE,qCAAqC;oBACrC,OAAO,IAAI,CAAC;gBACb,CAAC;YACF,CAAC;YAED,kBAAkB;YAClB,OAAO,IAAI,CAAC;QACb,CAAC;KACD,CAAC;AACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Registry Generator
3
+ *
4
+ * Generates .agentuity/registry.generated.ts from discovered agents
5
+ */
6
+ import type { AgentMetadata } from './agent-discovery';
7
+ import type { RouteInfo } from './route-discovery';
8
+ /**
9
+ * Generate .agentuity/registry.generated.ts with agent registry and types
10
+ */
11
+ export declare function generateAgentRegistry(srcDir: string, agents: AgentMetadata[]): void;
12
+ /**
13
+ * Generate RouteRegistry type definitions from discovered routes.
14
+ *
15
+ * Creates a module augmentation for @agentuity/react that provides
16
+ * strongly-typed route keys with input/output schema information.
17
+ */
18
+ export declare function generateRouteRegistry(srcDir: string, routes: RouteInfo[]): void;
19
+ //# sourceMappingURL=registry-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-generator.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/registry-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAInD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAmHnF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAkJ/E"}