@agentuity/cli 0.0.100 → 0.0.102

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 (264) hide show
  1. package/AGENTS.md +19 -188
  2. package/bin/cli.ts +13 -6
  3. package/dist/api.d.ts +1 -0
  4. package/dist/api.d.ts.map +1 -1
  5. package/dist/api.js +1 -1
  6. package/dist/api.js.map +1 -1
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +41 -12
  9. package/dist/cli.js.map +1 -1
  10. package/dist/cmd/ai/index.d.ts.map +1 -1
  11. package/dist/cmd/ai/index.js +6 -1
  12. package/dist/cmd/ai/index.js.map +1 -1
  13. package/dist/cmd/ai/prompt/agent.d.ts +7 -0
  14. package/dist/cmd/ai/prompt/agent.d.ts.map +1 -1
  15. package/dist/cmd/ai/prompt/agent.js +12 -323
  16. package/dist/cmd/ai/prompt/agent.js.map +1 -1
  17. package/dist/cmd/ai/prompt/api.d.ts +7 -0
  18. package/dist/cmd/ai/prompt/api.d.ts.map +1 -1
  19. package/dist/cmd/ai/prompt/api.js +12 -260
  20. package/dist/cmd/ai/prompt/api.js.map +1 -1
  21. package/dist/cmd/ai/prompt/version.d.ts +35 -0
  22. package/dist/cmd/ai/prompt/version.d.ts.map +1 -0
  23. package/dist/cmd/ai/prompt/version.js +55 -0
  24. package/dist/cmd/ai/prompt/version.js.map +1 -0
  25. package/dist/cmd/ai/prompt/web.d.ts +7 -0
  26. package/dist/cmd/ai/prompt/web.d.ts.map +1 -1
  27. package/dist/cmd/ai/prompt/web.js +12 -283
  28. package/dist/cmd/ai/prompt/web.js.map +1 -1
  29. package/dist/cmd/ai/skills/generate.d.ts +3 -0
  30. package/dist/cmd/ai/skills/generate.d.ts.map +1 -0
  31. package/dist/cmd/ai/skills/generate.js +65 -0
  32. package/dist/cmd/ai/skills/generate.js.map +1 -0
  33. package/dist/cmd/ai/skills/generator.d.ts +4 -0
  34. package/dist/cmd/ai/skills/generator.d.ts.map +1 -0
  35. package/dist/cmd/ai/skills/generator.js +402 -0
  36. package/dist/cmd/ai/skills/generator.js.map +1 -0
  37. package/dist/cmd/ai/skills/index.d.ts +4 -0
  38. package/dist/cmd/ai/skills/index.d.ts.map +1 -0
  39. package/dist/cmd/ai/skills/index.js +21 -0
  40. package/dist/cmd/ai/skills/index.js.map +1 -0
  41. package/dist/cmd/auth/signup.d.ts.map +1 -1
  42. package/dist/cmd/auth/signup.js +1 -0
  43. package/dist/cmd/auth/signup.js.map +1 -1
  44. package/dist/cmd/build/ast.d.ts +2 -1
  45. package/dist/cmd/build/ast.d.ts.map +1 -1
  46. package/dist/cmd/build/ast.js +135 -47
  47. package/dist/cmd/build/ast.js.map +1 -1
  48. package/dist/cmd/build/entry-generator.d.ts.map +1 -1
  49. package/dist/cmd/build/entry-generator.js +255 -188
  50. package/dist/cmd/build/entry-generator.js.map +1 -1
  51. package/dist/cmd/build/vite/agent-discovery.d.ts.map +1 -1
  52. package/dist/cmd/build/vite/agent-discovery.js +103 -45
  53. package/dist/cmd/build/vite/agent-discovery.js.map +1 -1
  54. package/dist/cmd/build/vite/bun-dev-server.d.ts +7 -1
  55. package/dist/cmd/build/vite/bun-dev-server.d.ts.map +1 -1
  56. package/dist/cmd/build/vite/bun-dev-server.js +52 -26
  57. package/dist/cmd/build/vite/bun-dev-server.js.map +1 -1
  58. package/dist/cmd/build/vite/docs-generator.d.ts +13 -0
  59. package/dist/cmd/build/vite/docs-generator.d.ts.map +1 -0
  60. package/dist/cmd/build/vite/docs-generator.js +81 -0
  61. package/dist/cmd/build/vite/docs-generator.js.map +1 -0
  62. package/dist/cmd/build/vite/index.d.ts +3 -3
  63. package/dist/cmd/build/vite/index.d.ts.map +1 -1
  64. package/dist/cmd/build/vite/index.js +9 -7
  65. package/dist/cmd/build/vite/index.js.map +1 -1
  66. package/dist/cmd/build/vite/lifecycle-generator.d.ts +1 -1
  67. package/dist/cmd/build/vite/lifecycle-generator.d.ts.map +1 -1
  68. package/dist/cmd/build/vite/lifecycle-generator.js +19 -5
  69. package/dist/cmd/build/vite/lifecycle-generator.js.map +1 -1
  70. package/dist/cmd/build/vite/metadata-generator.d.ts.map +1 -1
  71. package/dist/cmd/build/vite/metadata-generator.js +203 -7
  72. package/dist/cmd/build/vite/metadata-generator.js.map +1 -1
  73. package/dist/cmd/build/vite/prompt-generator.d.ts +23 -0
  74. package/dist/cmd/build/vite/prompt-generator.d.ts.map +1 -0
  75. package/dist/cmd/build/vite/prompt-generator.js +123 -0
  76. package/dist/cmd/build/vite/prompt-generator.js.map +1 -0
  77. package/dist/cmd/build/vite/registry-generator.d.ts +3 -3
  78. package/dist/cmd/build/vite/registry-generator.d.ts.map +1 -1
  79. package/dist/cmd/build/vite/registry-generator.js +644 -103
  80. package/dist/cmd/build/vite/registry-generator.js.map +1 -1
  81. package/dist/cmd/build/vite/route-discovery.d.ts +4 -0
  82. package/dist/cmd/build/vite/route-discovery.d.ts.map +1 -1
  83. package/dist/cmd/build/vite/route-discovery.js.map +1 -1
  84. package/dist/cmd/build/vite/server-bundler.d.ts +4 -0
  85. package/dist/cmd/build/vite/server-bundler.d.ts.map +1 -1
  86. package/dist/cmd/build/vite/server-bundler.js +63 -17
  87. package/dist/cmd/build/vite/server-bundler.js.map +1 -1
  88. package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +1 -1
  89. package/dist/cmd/build/vite/vite-asset-server-config.js +4 -0
  90. package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -1
  91. package/dist/cmd/build/vite/vite-builder.d.ts +1 -1
  92. package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -1
  93. package/dist/cmd/build/vite/vite-builder.js +118 -96
  94. package/dist/cmd/build/vite/vite-builder.js.map +1 -1
  95. package/dist/cmd/build/vite-bundler.js +6 -6
  96. package/dist/cmd/build/vite-bundler.js.map +1 -1
  97. package/dist/cmd/cloud/deploy.d.ts.map +1 -1
  98. package/dist/cmd/cloud/deploy.js +89 -32
  99. package/dist/cmd/cloud/deploy.js.map +1 -1
  100. package/dist/cmd/cloud/keyvalue/create-namespace.d.ts.map +1 -1
  101. package/dist/cmd/cloud/keyvalue/create-namespace.js +3 -1
  102. package/dist/cmd/cloud/keyvalue/create-namespace.js.map +1 -1
  103. package/dist/cmd/cloud/keyvalue/delete-namespace.d.ts.map +1 -1
  104. package/dist/cmd/cloud/keyvalue/delete-namespace.js +3 -1
  105. package/dist/cmd/cloud/keyvalue/delete-namespace.js.map +1 -1
  106. package/dist/cmd/cloud/keyvalue/delete.d.ts.map +1 -1
  107. package/dist/cmd/cloud/keyvalue/delete.js +3 -1
  108. package/dist/cmd/cloud/keyvalue/delete.js.map +1 -1
  109. package/dist/cmd/cloud/keyvalue/set.d.ts.map +1 -1
  110. package/dist/cmd/cloud/keyvalue/set.js +4 -2
  111. package/dist/cmd/cloud/keyvalue/set.js.map +1 -1
  112. package/dist/cmd/cloud/stream/get.d.ts.map +1 -1
  113. package/dist/cmd/cloud/stream/get.js +2 -13
  114. package/dist/cmd/cloud/stream/get.js.map +1 -1
  115. package/dist/cmd/cloud/vector/delete-namespace.d.ts +3 -0
  116. package/dist/cmd/cloud/vector/delete-namespace.d.ts.map +1 -0
  117. package/dist/cmd/cloud/vector/delete-namespace.js +77 -0
  118. package/dist/cmd/cloud/vector/delete-namespace.js.map +1 -0
  119. package/dist/cmd/cloud/vector/index.d.ts.map +1 -1
  120. package/dist/cmd/cloud/vector/index.js +21 -4
  121. package/dist/cmd/cloud/vector/index.js.map +1 -1
  122. package/dist/cmd/cloud/vector/list-namespaces.d.ts +3 -0
  123. package/dist/cmd/cloud/vector/list-namespaces.d.ts.map +1 -0
  124. package/dist/cmd/cloud/vector/list-namespaces.js +42 -0
  125. package/dist/cmd/cloud/vector/list-namespaces.js.map +1 -0
  126. package/dist/cmd/cloud/vector/stats.d.ts +3 -0
  127. package/dist/cmd/cloud/vector/stats.d.ts.map +1 -0
  128. package/dist/cmd/cloud/vector/stats.js +142 -0
  129. package/dist/cmd/cloud/vector/stats.js.map +1 -0
  130. package/dist/cmd/cloud/vector/upsert.d.ts +3 -0
  131. package/dist/cmd/cloud/vector/upsert.d.ts.map +1 -0
  132. package/dist/cmd/cloud/vector/upsert.js +192 -0
  133. package/dist/cmd/cloud/vector/upsert.js.map +1 -0
  134. package/dist/cmd/dev/file-watcher.d.ts.map +1 -1
  135. package/dist/cmd/dev/file-watcher.js +94 -33
  136. package/dist/cmd/dev/file-watcher.js.map +1 -1
  137. package/dist/cmd/dev/index.d.ts.map +1 -1
  138. package/dist/cmd/dev/index.js +298 -61
  139. package/dist/cmd/dev/index.js.map +1 -1
  140. package/dist/cmd/dev/skills.d.ts +10 -0
  141. package/dist/cmd/dev/skills.d.ts.map +1 -0
  142. package/dist/cmd/dev/skills.js +57 -0
  143. package/dist/cmd/dev/skills.js.map +1 -0
  144. package/dist/cmd/dev/sync.d.ts.map +1 -1
  145. package/dist/cmd/dev/sync.js +19 -3
  146. package/dist/cmd/dev/sync.js.map +1 -1
  147. package/dist/cmd/index.d.ts.map +1 -1
  148. package/dist/cmd/index.js +1 -0
  149. package/dist/cmd/index.js.map +1 -1
  150. package/dist/cmd/project/create.d.ts.map +1 -1
  151. package/dist/cmd/project/create.js +3 -0
  152. package/dist/cmd/project/create.js.map +1 -1
  153. package/dist/cmd/project/template-flow.d.ts +1 -0
  154. package/dist/cmd/project/template-flow.d.ts.map +1 -1
  155. package/dist/cmd/project/template-flow.js +30 -5
  156. package/dist/cmd/project/template-flow.js.map +1 -1
  157. package/dist/cmd/setup/index.d.ts.map +1 -1
  158. package/dist/cmd/setup/index.js +1 -0
  159. package/dist/cmd/setup/index.js.map +1 -1
  160. package/dist/cmd/upgrade/index.d.ts +15 -0
  161. package/dist/cmd/upgrade/index.d.ts.map +1 -1
  162. package/dist/cmd/upgrade/index.js +59 -4
  163. package/dist/cmd/upgrade/index.js.map +1 -1
  164. package/dist/config.d.ts.map +1 -1
  165. package/dist/config.js +8 -0
  166. package/dist/config.js.map +1 -1
  167. package/dist/domain.d.ts +45 -0
  168. package/dist/domain.d.ts.map +1 -0
  169. package/dist/domain.js +200 -0
  170. package/dist/domain.js.map +1 -0
  171. package/dist/index.d.ts +0 -1
  172. package/dist/index.d.ts.map +1 -1
  173. package/dist/index.js +0 -1
  174. package/dist/index.js.map +1 -1
  175. package/dist/schema-generator.d.ts +2 -0
  176. package/dist/schema-generator.d.ts.map +1 -1
  177. package/dist/schema-generator.js +18 -0
  178. package/dist/schema-generator.js.map +1 -1
  179. package/dist/steps.d.ts +1 -1
  180. package/dist/steps.d.ts.map +1 -1
  181. package/dist/steps.js +16 -5
  182. package/dist/steps.js.map +1 -1
  183. package/dist/tui/prompt.d.ts +1 -2
  184. package/dist/tui/prompt.d.ts.map +1 -1
  185. package/dist/tui/prompt.js +8 -4
  186. package/dist/tui/prompt.js.map +1 -1
  187. package/dist/tui.d.ts +16 -0
  188. package/dist/tui.d.ts.map +1 -1
  189. package/dist/tui.js +23 -2
  190. package/dist/tui.js.map +1 -1
  191. package/dist/types.d.ts +9 -2
  192. package/dist/types.d.ts.map +1 -1
  193. package/dist/types.js +3 -3
  194. package/dist/types.js.map +1 -1
  195. package/package.json +5 -8
  196. package/src/api.ts +1 -1
  197. package/src/cli.ts +47 -12
  198. package/src/cmd/ai/index.ts +6 -1
  199. package/src/cmd/ai/prompt/agent.md +306 -0
  200. package/src/cmd/ai/prompt/agent.ts +12 -322
  201. package/src/cmd/ai/prompt/api.md +360 -0
  202. package/src/cmd/ai/prompt/api.ts +13 -260
  203. package/src/cmd/ai/prompt/version.ts +61 -0
  204. package/src/cmd/ai/prompt/web.md +509 -0
  205. package/src/cmd/ai/prompt/web.ts +12 -282
  206. package/src/cmd/ai/skills/generate.ts +75 -0
  207. package/src/cmd/ai/skills/generator.ts +519 -0
  208. package/src/cmd/ai/skills/index.ts +23 -0
  209. package/src/cmd/auth/signup.ts +1 -0
  210. package/src/cmd/build/ast.ts +161 -48
  211. package/src/cmd/build/entry-generator.ts +258 -187
  212. package/src/cmd/build/vite/agent-discovery.ts +151 -58
  213. package/src/cmd/build/vite/bun-dev-server.ts +57 -27
  214. package/src/cmd/build/vite/docs-generator.ts +87 -0
  215. package/src/cmd/build/vite/index.ts +9 -7
  216. package/src/cmd/build/vite/lifecycle-generator.ts +19 -5
  217. package/src/cmd/build/vite/metadata-generator.ts +251 -7
  218. package/src/cmd/build/vite/prompt-generator.ts +169 -0
  219. package/src/cmd/build/vite/registry-generator.ts +750 -108
  220. package/src/cmd/build/vite/route-discovery.ts +4 -0
  221. package/src/cmd/build/vite/server-bundler.ts +73 -23
  222. package/src/cmd/build/vite/vite-asset-server-config.ts +5 -0
  223. package/src/cmd/build/vite/vite-builder.ts +134 -100
  224. package/src/cmd/build/vite-bundler.ts +6 -6
  225. package/src/cmd/cloud/deploy.ts +114 -36
  226. package/src/cmd/cloud/keyvalue/create-namespace.ts +3 -1
  227. package/src/cmd/cloud/keyvalue/delete-namespace.ts +3 -1
  228. package/src/cmd/cloud/keyvalue/delete.ts +3 -1
  229. package/src/cmd/cloud/keyvalue/set.ts +4 -2
  230. package/src/cmd/cloud/stream/get.ts +2 -9
  231. package/src/cmd/cloud/vector/delete-namespace.ts +89 -0
  232. package/src/cmd/cloud/vector/index.ts +21 -4
  233. package/src/cmd/cloud/vector/list-namespaces.ts +46 -0
  234. package/src/cmd/cloud/vector/stats.ts +160 -0
  235. package/src/cmd/cloud/vector/upsert.ts +216 -0
  236. package/src/cmd/dev/file-watcher.ts +109 -34
  237. package/src/cmd/dev/index.ts +364 -60
  238. package/src/cmd/dev/skills.ts +82 -0
  239. package/src/cmd/dev/sync.ts +41 -6
  240. package/src/cmd/index.ts +1 -0
  241. package/src/cmd/project/create.ts +3 -0
  242. package/src/cmd/project/template-flow.ts +37 -5
  243. package/src/cmd/setup/index.ts +1 -0
  244. package/src/cmd/upgrade/index.ts +68 -4
  245. package/src/config.ts +9 -0
  246. package/src/domain.ts +273 -0
  247. package/src/index.ts +0 -5
  248. package/src/runtime-bootstrap.md +1 -1
  249. package/src/schema-generator.ts +23 -0
  250. package/src/steps.ts +16 -5
  251. package/src/tui/prompt.ts +11 -5
  252. package/src/tui.ts +21 -2
  253. package/src/types/md.d.ts +8 -0
  254. package/src/types.ts +12 -3
  255. package/dist/cmd/cloud/domain.d.ts +0 -17
  256. package/dist/cmd/cloud/domain.d.ts.map +0 -1
  257. package/dist/cmd/cloud/domain.js +0 -79
  258. package/dist/cmd/cloud/domain.js.map +0 -1
  259. package/dist/runtime-bootstrap.d.ts +0 -56
  260. package/dist/runtime-bootstrap.d.ts.map +0 -1
  261. package/dist/runtime-bootstrap.js +0 -95
  262. package/dist/runtime-bootstrap.js.map +0 -1
  263. package/src/cmd/cloud/domain.ts +0 -100
  264. package/src/runtime-bootstrap.ts +0 -131
@@ -9,11 +9,10 @@ import { discoverRoutes } from './vite/route-discovery';
9
9
  */
10
10
  export async function generateEntryFile(options) {
11
11
  const { rootDir, projectId, deploymentId, logger, mode, workbench, vitePort } = options;
12
- const isDev = mode === 'dev';
13
12
  const srcDir = join(rootDir, 'src');
14
- const agentuityDir = join(rootDir, '.agentuity');
15
- const entryPath = join(agentuityDir, 'app.generated.ts');
16
- logger.trace(`Generating ${mode} mode entry file...`);
13
+ const generatedDir = join(srcDir, 'generated');
14
+ const entryPath = join(generatedDir, 'app.ts');
15
+ logger.trace(`Generating unified entry file (supports both dev and prod modes)...`);
17
16
  // Discover routes to determine which files need to be imported
18
17
  const { routeInfoList } = await discoverRoutes(srcDir, projectId, deploymentId, logger);
19
18
  // Check for web and workbench
@@ -34,6 +33,7 @@ export async function generateEntryFile(options) {
34
33
  ` createCorsMiddleware,`,
35
34
  ` createOtelMiddleware,`,
36
35
  ` createAgentMiddleware,`,
36
+ ` createCompressionMiddleware,`,
37
37
  ` getAppState,`,
38
38
  ` getAppConfig,`,
39
39
  ` register,`,
@@ -55,11 +55,13 @@ export async function generateEntryFile(options) {
55
55
  ...runtimeImports,
56
56
  `} from '@agentuity/runtime';`,
57
57
  `import type { Context } from 'hono';`,
58
- `import { websocket } from 'hono/bun';`, // Always use Bun WebSocket (dev and prod)
59
- !isDev && hasWebFrontend ? `import { serveStatic } from 'hono/bun';` : '',
58
+ `import { websocket } from 'hono/bun';`,
59
+ // Conditionally import serveStatic and readFileSync for web frontend or workbench support
60
+ hasWebFrontend || hasWorkbench ? `import { serveStatic } from 'hono/bun';` : '',
61
+ hasWebFrontend || hasWorkbench ? `import { readFileSync, existsSync } from 'node:fs';` : '',
60
62
  ].filter(Boolean);
61
63
  imports.push(`import { type LogLevel } from '@agentuity/core';`);
62
- imports.push(`import { bootstrapRuntimeEnv } from '@agentuity/cli/runtime-bootstrap';`);
64
+ imports.push(`import { bootstrapRuntimeEnv } from '@agentuity/runtime';`);
63
65
  // Generate route mounting code for all discovered routes
64
66
  const routeImportsAndMounts = [];
65
67
  let routeIndex = 0;
@@ -79,7 +81,7 @@ export async function generateEntryFile(options) {
79
81
  }
80
82
  }
81
83
  const importName = `router_${routeIndex++}`;
82
- routeImportsAndMounts.push(`const { default: ${importName} } = await import('../src/api/${relativePath}.js');`);
84
+ routeImportsAndMounts.push(`const { default: ${importName} } = await import('../api/${relativePath}.js');`);
83
85
  routeImportsAndMounts.push(`app.route('${mountPath}', ${importName});`);
84
86
  }
85
87
  const apiMount = routeImportsAndMounts.length > 0
@@ -96,182 +98,197 @@ const workbenchRouter = createWorkbenchRouter();
96
98
  app.route('/', workbenchRouter);
97
99
  `
98
100
  : '';
99
- // Asset proxy routes (dev mode only - proxy to Vite asset server)
100
- const assetProxyRoutes = isDev && vitePort
101
+ // Asset proxy routes - generated for dev mode, reads VITE_PORT from env at runtime
102
+ const assetProxyRoutes = mode === 'dev'
101
103
  ? `
102
- // Asset proxy routes - Forward Vite-specific requests to asset server
103
- const VITE_ASSET_PORT = ${vitePort};
104
-
105
- const proxyToVite = async (c: Context) => {
106
- const viteUrl = \`http://127.0.0.1:\${VITE_ASSET_PORT}\${c.req.path}\`;
107
- const controller = new AbortController();
108
- const timeout = setTimeout(() => controller.abort(), 10000); // 10s timeout
109
- try {
110
- otel.logger.debug(\`[Proxy] \${c.req.method} \${c.req.path} -> Vite:\${VITE_ASSET_PORT}\`);
111
- const res = await fetch(viteUrl, { signal: controller.signal });
112
- clearTimeout(timeout);
113
- otel.logger.debug(\`[Proxy] \${c.req.path} -> \${res.status} (\${res.headers.get('content-type')})\`);
114
- return new Response(res.body, {
115
- status: res.status,
116
- headers: res.headers,
117
- });
118
- } catch (err) {
119
- clearTimeout(timeout);
120
- if (err instanceof Error && err.name === 'AbortError') {
121
- otel.logger.error(\`Vite proxy timeout: \${c.req.path}\`);
122
- return c.text('Vite asset server timeout', 504);
104
+ // Asset proxy routes - Development mode only (proxies to Vite asset server)
105
+ if (isDevelopment() && process.env.VITE_PORT) {
106
+ const VITE_ASSET_PORT = parseInt(process.env.VITE_PORT, 10);
107
+
108
+ const proxyToVite = async (c: Context) => {
109
+ const viteUrl = \`http://127.0.0.1:\${VITE_ASSET_PORT}\${c.req.path}\`;
110
+ const controller = new AbortController();
111
+ const timeout = setTimeout(() => controller.abort(), 10000); // 10s timeout
112
+ try {
113
+ otel.logger.debug(\`[Proxy] \${c.req.method} \${c.req.path} -> Vite:\${VITE_ASSET_PORT}\`);
114
+ const res = await fetch(viteUrl, { signal: controller.signal });
115
+ clearTimeout(timeout);
116
+ otel.logger.debug(\`[Proxy] \${c.req.path} -> \${res.status} (\${res.headers.get('content-type')})\`);
117
+ return new Response(res.body, {
118
+ status: res.status,
119
+ headers: res.headers,
120
+ });
121
+ } catch (err) {
122
+ clearTimeout(timeout);
123
+ if (err instanceof Error && err.name === 'AbortError') {
124
+ otel.logger.error(\`Vite proxy timeout: \${c.req.path}\`);
125
+ return c.text('Vite asset server timeout', 504);
126
+ }
127
+ otel.logger.error(\`Failed to proxy to Vite: \${c.req.path} - \${err instanceof Error ? err.message : String(err)}\`);
128
+ return c.text('Vite asset server error', 500);
123
129
  }
124
- otel.logger.error(\`Failed to proxy to Vite: \${c.req.path} - \${err instanceof Error ? err.message : String(err)}\`);
125
- return c.text('Vite asset server error', 500);
126
- }
127
- };
130
+ };
128
131
 
129
- // Vite client scripts and HMR
130
- app.get('/@vite/*', proxyToVite);
131
- app.get('/@react-refresh', proxyToVite);
132
+ // Vite client scripts and HMR
133
+ app.get('/@vite/*', proxyToVite);
134
+ app.get('/@react-refresh', proxyToVite);
132
135
 
133
- // Source files for HMR
134
- app.get('/src/web/*', proxyToVite);
135
- app.get('/src/*', proxyToVite); // Catch-all for other source files
136
+ // Source files for HMR
137
+ app.get('/src/web/*', proxyToVite);
138
+ app.get('/src/*', proxyToVite); // Catch-all for other source files
136
139
 
137
- // Workbench source files (in .agentuity/workbench-src/)
138
- app.get('/.agentuity/workbench-src/*', proxyToVite);
140
+ // Workbench source files (in .agentuity/workbench-src/)
141
+ app.get('/.agentuity/workbench-src/*', proxyToVite);
139
142
 
140
- // Node modules (Vite transforms these)
141
- app.get('/node_modules/*', proxyToVite);
143
+ // Node modules (Vite transforms these)
144
+ app.get('/node_modules/*', proxyToVite);
142
145
 
143
- // Scoped packages (e.g., @agentuity/*, @types/*)
144
- app.get('/@*', proxyToVite);
146
+ // Scoped packages (e.g., @agentuity/*, @types/*)
147
+ app.get('/@*', proxyToVite);
145
148
 
146
- // File system access (for Vite's @fs protocol)
147
- app.get('/@fs/*', proxyToVite);
149
+ // File system access (for Vite's @fs protocol)
150
+ app.get('/@fs/*', proxyToVite);
148
151
 
149
- // Module resolution (for Vite's @id protocol)
150
- app.get('/@id/*', proxyToVite);
152
+ // Module resolution (for Vite's @id protocol)
153
+ app.get('/@id/*', proxyToVite);
151
154
 
152
- // Any .js, .jsx, .ts, .tsx files (catch remaining modules)
153
- app.get('/*.js', proxyToVite);
154
- app.get('/*.jsx', proxyToVite);
155
- app.get('/*.ts', proxyToVite);
156
- app.get('/*.tsx', proxyToVite);
157
- app.get('/*.css', proxyToVite);
155
+ // Any .js, .jsx, .ts, .tsx files (catch remaining modules)
156
+ app.get('/*.js', proxyToVite);
157
+ app.get('/*.jsx', proxyToVite);
158
+ app.get('/*.ts', proxyToVite);
159
+ app.get('/*.tsx', proxyToVite);
160
+ app.get('/*.css', proxyToVite);
161
+ }
158
162
  `
159
163
  : '';
160
- // Web routes (different for dev/prod)
164
+ // Runtime mode detection helper (defined at top level for reuse)
165
+ // Dynamic property access prevents Bun.build from inlining NODE_ENV at build time
166
+ const modeDetection = `
167
+ // Runtime mode detection helper
168
+ // Dynamic string concatenation prevents Bun.build from inlining NODE_ENV at build time
169
+ // See: https://github.com/oven-sh/bun/issues/20183
170
+ const getEnv = (key: string) => process.env[key];
171
+ const isDevelopment = () => getEnv('NODE' + '_' + 'ENV') !== 'production';
172
+ `;
173
+ // Web routes (runtime mode detection)
161
174
  let webRoutes = '';
162
175
  if (hasWebFrontend) {
163
- if (isDev) {
164
- webRoutes = `
165
- // Web routes (dev mode with Vite HMR via proxy)
166
- // Proxy HTML from Vite to let @vitejs/plugin-react handle React Fast Refresh preamble
167
- const devHtmlHandler = async (c: Context) => {
168
- const viteUrl = \`http://127.0.0.1:${vitePort}/src/web/index.html\`;
169
-
170
- try {
171
- otel.logger.debug('[Proxy] GET /src/web/index.html -> Vite:%d', ${vitePort});
172
- const res = await fetch(viteUrl, { signal: AbortSignal.timeout(10000) });
173
-
174
- // Get HTML text and transform relative paths to absolute
175
- const html = await res.text();
176
- const transformedHtml = html
177
- .replace(/src="\\.\\//g, 'src="/src/web/')
178
- .replace(/href="\\.\\//g, 'href="/src/web/');
179
-
180
- return new Response(transformedHtml, {
181
- status: res.status,
182
- headers: res.headers,
183
- });
184
- } catch (err) {
185
- otel.logger.error('Failed to proxy HTML to Vite: %s', err instanceof Error ? err.message : String(err));
186
- return c.text('Vite asset server error (HTML)', 500);
187
- }
188
- };
189
- app.get('/', devHtmlHandler);
190
- // 404 for unmatched API/system routes
191
- app.all('/_agentuity/*', (c: Context) => c.notFound());
192
- app.all('/api/*', (c: Context) => c.notFound());
193
- ${hasWorkbench ? '' : `app.all('/workbench/*', (c: Context) => c.notFound());`}
194
- // SPA fallback - serve index.html for client-side routing
195
- // Asset requests (/*.js, /*.tsx, /*.css, etc.) are handled by Vite proxy routes if present,
196
- // otherwise we check for file extensions to avoid returning HTML for missing assets
197
- app.get('*', (c: Context) => {
198
- const path = c.req.path;
199
- // If path has a file extension and Vite proxy isn't handling it, return 404
200
- // This prevents returning HTML for missing assets like /foo.js
201
- if (${!vitePort} && /\\.[a-zA-Z0-9]+$/.test(path)) {
202
- return c.notFound();
203
- }
204
- return devHtmlHandler(c);
205
- });
206
- `;
207
- }
208
- else {
209
- webRoutes = `
210
- // Web routes (production - static files)
211
- import { readFileSync } from 'node:fs';
212
- const indexHtml = readFileSync(import.meta.dir + '/client/index.html', 'utf-8');
213
-
214
- app.get('/', (c: Context) => c.html(indexHtml));
215
-
216
- // Serve static assets from /assets/* (Vite bundled output)
217
- app.use('/assets/*', serveStatic({ root: import.meta.dir + '/client' }));
218
-
219
- // Serve static public assets (favicon.ico, robots.txt, etc. from Vite's public folder)
220
- app.use('/*', serveStatic({ root: import.meta.dir + '/client', rewriteRequestPath: (path) => path }));
221
-
222
- // 404 for unmatched API/system routes (IMPORTANT: comes before SPA fallback)
223
- app.all('/_agentuity/*', (c: Context) => c.notFound());
224
- app.all('/api/*', (c: Context) => c.notFound());
225
- ${hasWorkbench ? '' : `app.all('/workbench/*', (c: Context) => c.notFound());`}
226
-
227
- // SPA fallback with asset protection
228
- // In production, we need to distinguish between:
229
- // - SPA routes like /dashboard, /users/123 (should return HTML)
230
- // - Missing assets like /foo.js, /bar.css (should return 404)
231
- // We check for file extensions to detect asset requests
232
- app.get('*', (c: Context) => {
233
- const path = c.req.path;
234
- // If path has a file extension, it's likely an asset request
235
- // Return 404 instead of serving HTML
236
- if (/\\.[a-zA-Z0-9]+$/.test(path)) {
237
- return c.notFound();
176
+ webRoutes = `
177
+ // Web routes - Runtime mode detection (dev proxies to Vite, prod serves static)
178
+ if (isDevelopment()) {
179
+ // Development mode: Proxy HTML from Vite to enable React Fast Refresh
180
+ const VITE_ASSET_PORT = parseInt(process.env.VITE_PORT || '${vitePort || 5173}', 10);
181
+
182
+ const devHtmlHandler = async (c: Context) => {
183
+ const viteUrl = \`http://127.0.0.1:\${VITE_ASSET_PORT}/src/web/index.html\`;
184
+
185
+ try {
186
+ otel.logger.debug('[Proxy] GET /src/web/index.html -> Vite:%d', VITE_ASSET_PORT);
187
+ const res = await fetch(viteUrl, { signal: AbortSignal.timeout(10000) });
188
+
189
+ // Get HTML text and transform relative paths to absolute
190
+ const html = await res.text();
191
+ const transformedHtml = html
192
+ .replace(/src="\\.\\//g, 'src="/src/web/')
193
+ .replace(/href="\\.\\//g, 'href="/src/web/');
194
+
195
+ return new Response(transformedHtml, {
196
+ status: res.status,
197
+ headers: res.headers,
198
+ });
199
+ } catch (err) {
200
+ otel.logger.error('Failed to proxy HTML to Vite: %s', err instanceof Error ? err.message : String(err));
201
+ return c.text('Vite asset server error (HTML)', 500);
202
+ }
203
+ };
204
+
205
+ app.get('/', devHtmlHandler);
206
+
207
+ // 404 for unmatched API/system routes
208
+ app.all('/_agentuity/*', (c: Context) => c.notFound());
209
+ app.all('/api/*', (c: Context) => c.notFound());
210
+ ${hasWorkbench ? '' : `app.all('/workbench/*', (c: Context) => c.notFound());`}
211
+
212
+ // SPA fallback - serve index.html for client-side routing
213
+ app.get('*', (c: Context) => {
214
+ const path = c.req.path;
215
+ // If path has a file extension, return 404 (prevents serving HTML for missing assets)
216
+ if (/\\.[a-zA-Z0-9]+$/.test(path)) {
217
+ return c.notFound();
218
+ }
219
+ return devHtmlHandler(c);
220
+ });
221
+ } else {
222
+ // Production mode: Serve static files from bundled output
223
+ const indexHtmlPath = import.meta.dir + '/client/index.html';
224
+ const indexHtml = existsSync(indexHtmlPath)
225
+ ? readFileSync(indexHtmlPath, 'utf-8')
226
+ : '';
227
+
228
+ if (!indexHtml) {
229
+ otel.logger.warn('Production HTML not found at %s', indexHtmlPath);
238
230
  }
239
- return c.html(indexHtml);
240
- });
231
+
232
+ app.get('/', (c: Context) => indexHtml ? c.html(indexHtml) : c.text('Production build incomplete', 500));
233
+
234
+ // Serve static assets from /assets/* (Vite bundled output)
235
+ app.use('/assets/*', serveStatic({ root: import.meta.dir + '/client' }));
236
+
237
+ // Serve static public assets (favicon.ico, robots.txt, etc.)
238
+ app.use('/*', serveStatic({ root: import.meta.dir + '/client', rewriteRequestPath: (path) => path }));
239
+
240
+ // 404 for unmatched API/system routes (IMPORTANT: comes before SPA fallback)
241
+ app.all('/_agentuity/*', (c: Context) => c.notFound());
242
+ app.all('/api/*', (c: Context) => c.notFound());
243
+ ${hasWorkbench ? '' : `app.all('/workbench/*', (c: Context) => c.notFound());`}
244
+
245
+ // SPA fallback with asset protection
246
+ app.get('*', (c: Context) => {
247
+ const path = c.req.path;
248
+ // If path has a file extension, it's likely an asset request - return 404
249
+ if (/\\.[a-zA-Z0-9]+$/.test(path)) {
250
+ return c.notFound();
251
+ }
252
+ return c.html(indexHtml);
253
+ });
254
+ }
241
255
  `;
242
- }
243
256
  }
244
- // Workbench routes (if enabled)
257
+ // Workbench routes (if enabled) - runtime mode detection
245
258
  const workbenchRoute = workbench?.route ?? '/workbench';
246
- const workbenchSrcDir = join(agentuityDir, 'workbench-src');
247
259
  const workbenchRoutes = hasWorkbench
248
- ? isDev
249
- ? `
250
- // Workbench route (dev mode - let Vite serve source files with HMR)
251
- app.get('${workbenchRoute}', async (c: Context) => {
252
- const html = await Bun.file('${workbenchSrcDir}/index.html').text();
253
- // Rewrite script/css paths to use Vite's @fs protocol
254
- const withVite = html
255
- .replace('src="./main.tsx"', 'src="/@fs${workbenchSrcDir}/main.tsx"')
256
- .replace('href="./styles.css"', 'href="/@fs${workbenchSrcDir}/styles.css"');
257
- return c.html(withVite);
258
- });
259
- `
260
- : `
261
- // Workbench routes (production - serve pre-built assets)
262
- // Use import.meta.dir for absolute paths (app.js runs from .agentuity/)
263
- import { readFileSync, existsSync } from 'node:fs';
260
+ ? `
261
+ // Workbench routes - Runtime mode detection
262
+ // Both dev and prod run from .agentuity/app.js (dev bundles before running)
263
+ // So workbench-src is always in the same directory
264
+ const workbenchSrcDir = import.meta.dir + '/workbench-src';
264
265
  const workbenchIndexPath = import.meta.dir + '/workbench/index.html';
265
- if (existsSync(workbenchIndexPath)) {
266
- const workbenchIndex = readFileSync(workbenchIndexPath, 'utf-8');
267
- app.get('${workbenchRoute}', (c: Context) => c.html(workbenchIndex));
268
- app.get('${workbenchRoute}/*', serveStatic({ root: import.meta.dir + '/workbench' }));
266
+ const workbenchIndex = existsSync(workbenchIndexPath)
267
+ ? readFileSync(workbenchIndexPath, 'utf-8')
268
+ : '';
269
+
270
+ if (isDevelopment()) {
271
+ // Development mode: Let Vite serve source files with HMR
272
+ app.get('${workbenchRoute}', async (c: Context) => {
273
+ const html = await Bun.file(workbenchSrcDir + '/index.html').text();
274
+ // Rewrite script/css paths to use Vite's @fs protocol
275
+ const withVite = html
276
+ .replace('src="./main.tsx"', \`src="/@fs\${workbenchSrcDir}/main.tsx"\`)
277
+ .replace('href="./styles.css"', \`href="/@fs\${workbenchSrcDir}/styles.css"\`);
278
+ return c.html(withVite);
279
+ });
280
+ } else {
281
+ // Production mode: Serve pre-built assets
282
+ if (workbenchIndex) {
283
+ app.get('${workbenchRoute}', (c: Context) => c.html(workbenchIndex));
284
+ app.get('${workbenchRoute}/*', serveStatic({ root: import.meta.dir + '/workbench' }));
285
+ }
269
286
  }
270
287
  `
271
288
  : '';
272
289
  // Server startup (same for dev and prod - Bun.serve with native WebSocket)
273
290
  const serverStartup = `
274
- // Start Bun server${isDev ? ' (dev mode with Vite asset proxy)' : ''}
291
+ // Start Bun server
275
292
  if (typeof Bun !== 'undefined') {
276
293
  // Enable process exit protection now that we're starting the server
277
294
  enableProcessExitProtection();
@@ -287,19 +304,84 @@ if (typeof Bun !== 'undefined') {
287
304
  // Make server available globally for health checks
288
305
  (globalThis as any).__AGENTUITY_SERVER__ = server;
289
306
 
290
- otel.logger.info(\`Server listening on http://127.0.0.1:\${port}\`);${isDev && vitePort ? `\n\totel.logger.debug(\`Proxying Vite assets from port ${vitePort}\`);` : ''}
307
+ otel.logger.info(\`Server listening on http://127.0.0.1:\${port}\`);
308
+ if (isDevelopment() && process.env.VITE_PORT) {
309
+ otel.logger.debug(\`Proxying Vite assets from port \${process.env.VITE_PORT}\`);
310
+ }
311
+ }
312
+
313
+ // FOUND AN ERROR IN THIS FILE?
314
+ // Please file an issue at https://github.com/agentuity/sdk/issues
315
+ // or if you know the fix please submit a PR!
316
+ `;
317
+ const healthRoutes = `
318
+ // Health check routes (production only)
319
+ if (!isDevelopment()) {
320
+ const healthHandler = (c: Context) => {
321
+ return c.text('OK', 200, { 'Content-Type': 'text/plain; charset=utf-8' });
322
+ };
323
+ const idleHandler = (c: Context) => {
324
+ // Check if server is idle (no pending requests/connections)
325
+ const server = (globalThis as any).__AGENTUITY_SERVER__;
326
+ if (!server) return c.text('NO', 200, { 'Content-Type': 'text/plain; charset=utf-8' });
327
+
328
+ // Check for pending background tasks
329
+ if (hasWaitUntilPending()) return c.text('NO', 200, { 'Content-Type': 'text/plain; charset=utf-8' });
330
+
331
+ if (server.pendingRequests > 1) return c.text('NO', 200, { 'Content-Type': 'text/plain; charset=utf-8' });
332
+ if (server.pendingWebSockets > 0) return c.text('NO', 200, { 'Content-Type': 'text/plain; charset=utf-8' });
333
+
334
+ return c.text('OK', 200, { 'Content-Type': 'text/plain; charset=utf-8' });
335
+ };
336
+ app.get('/_agentuity/health', healthHandler);
337
+ app.get('/_health', healthHandler);
338
+ app.get('/_agentuity/idle', idleHandler);
339
+ app.get('/_idle', idleHandler);
340
+ }
341
+
342
+ // Dev readiness check - verifies Vite asset server is ready to serve frontend
343
+ if (isDevelopment()) {
344
+ app.get('/_agentuity/ready', async (c: Context) => {
345
+ const vitePort = process.env.VITE_PORT;
346
+ if (!vitePort) {
347
+ // No Vite port means we're not using Vite proxy
348
+ return c.text('OK', 200, { 'Content-Type': 'text/plain; charset=utf-8' });
349
+ }
350
+
351
+ try {
352
+ // Probe Vite to check if it can serve the main entry point
353
+ // Use @vite/client as a lightweight check - it's always available
354
+ const viteUrl = \`http://127.0.0.1:\${vitePort}/@vite/client\`;
355
+ const res = await fetch(viteUrl, {
356
+ signal: AbortSignal.timeout(5000),
357
+ method: 'HEAD'
358
+ });
359
+
360
+ if (res.ok) {
361
+ return c.text('OK', 200, { 'Content-Type': 'text/plain; charset=utf-8' });
362
+ }
363
+ return c.text('VITE_NOT_READY', 503, { 'Content-Type': 'text/plain; charset=utf-8' });
364
+ } catch (err) {
365
+ otel.logger.debug('Vite readiness check failed: %s', err instanceof Error ? err.message : String(err));
366
+ return c.text('VITE_NOT_READY', 503, { 'Content-Type': 'text/plain; charset=utf-8' });
367
+ }
368
+ });
291
369
  }
292
370
  `;
293
- const code = `// Auto-generated by Agentuity for ${mode} mode
371
+ const code = `// @generated
372
+ // Auto-generated by Agentuity
294
373
  // DO NOT EDIT - This file is regenerated on every build
374
+ // Supports both development and production modes via runtime detection
295
375
  ${imports.join('\n')}
296
376
 
377
+ ${modeDetection}
378
+
297
379
  // Step 0: Bootstrap runtime environment (load profile-specific .env files)
298
380
  // Only in development - production env vars are injected by platform
299
381
  // This must happen BEFORE any imports that depend on environment variables
300
- if (process.env.NODE_ENV !== 'production') {
301
- // Pass project directory (parent of .agentuity/) so .env files are loaded correctly
302
- await bootstrapRuntimeEnv({ projectDir: import.meta.dir + '/..' });
382
+ if (isDevelopment()) {
383
+ // Pass project directory (two levels up from src/generated/) so .env files are loaded correctly
384
+ await bootstrapRuntimeEnv({ projectDir: import.meta.dir + '/../..' });
303
385
  }
304
386
 
305
387
  // Step 1: Initialize telemetry and services
@@ -321,6 +403,9 @@ const app = createRouter();
321
403
  setGlobalRouter(app);
322
404
 
323
405
  // Step 3: Apply middleware in correct order (BEFORE mounting routes)
406
+ // Compression runs first (outermost) so it can compress the final response
407
+ app.use('*', createCompressionMiddleware());
408
+
324
409
  app.use('*', createBaseMiddleware({
325
410
  logger: otel.logger,
326
411
  tracer: otel.tracer,
@@ -338,7 +423,7 @@ app.use('/api/*', createOtelMiddleware());
338
423
  app.use('/api/*', createAgentMiddleware(''));
339
424
 
340
425
  // Step 4: Import user's app.ts (runs createApp, gets state/config)
341
- await import('../app.ts');
426
+ await import('../../app.js');
342
427
 
343
428
  // Step 5: Initialize providers
344
429
  const threadProvider = getThreadProvider();
@@ -349,27 +434,7 @@ await sessionProvider.initialize(appState);
349
434
 
350
435
  // Step 6: Mount routes (AFTER middleware is applied)
351
436
 
352
- // System health/idle endpoints
353
- const healthHandler = (c: Context) => c.text('OK');
354
- const idleHandler = (c: Context) => {
355
- // Check if server is idle (no pending requests/connections)
356
- const server = (globalThis as any).__AGENTUITY_SERVER__;
357
- if (!server) return c.text('NO', { status: 200 });
358
-
359
- // Check for pending background tasks
360
- if (hasWaitUntilPending()) return c.text('NO', { status: 200 });
361
-
362
- if (server.pendingRequests > 1) return c.text('NO', { status: 200 });
363
- if (server.pendingWebSockets > 0) return c.text('NO', { status: 200 });
364
-
365
- return c.text('OK', { status: 200 });
366
- };
367
-
368
- app.get('/_agentuity/health', healthHandler);
369
- app.get('/_health', healthHandler);
370
- app.get('/_agentuity/idle', idleHandler);
371
- app.get('/_idle', idleHandler);
372
-
437
+ ${healthRoutes}
373
438
  ${assetProxyRoutes}
374
439
  ${apiMount}
375
440
  ${workbenchApiMount}
@@ -381,7 +446,9 @@ await runAgentSetups(appState);
381
446
 
382
447
  ${serverStartup}
383
448
  `;
384
- await Bun.write(entryPath, code);
385
- logger.trace(`Generated ${mode} mode entry file at %s`, entryPath);
449
+ // Collapse 2+ consecutive empty lines into 1 empty line (3+ \n becomes 2 \n)
450
+ const cleanedCode = code.replace(/\n{3,}/g, '\n\n');
451
+ await Bun.write(entryPath, cleanedCode);
452
+ logger.trace(`Generated unified entry file at %s (mode: ${mode})`, entryPath);
386
453
  }
387
454
  //# sourceMappingURL=entry-generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entry-generator.js","sourceRoot":"","sources":["../../../src/cmd/build/entry-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entry-generator.js","sourceRoot":"","sources":["../../../src/cmd/build/entry-generator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-discovery.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/agent-discovery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AA0C7C,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CAClB;AAgUD;;GAEG;AACH,wBAAsB,cAAc,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,EAAE,CAAC,CAgE1B"}
1
+ {"version":3,"file":"agent-discovery.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/agent-discovery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AA0C7C,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CAClB;AAgYD;;GAEG;AACH,wBAAsB,cAAc,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,EAAE,CAAC,CA6F1B"}